From 770a7035c21ff90898938f73a8501b7cb4b6bf37 Mon Sep 17 00:00:00 2001
From: king <18310653075@163.com>
Date: 星期五, 04 八月 2023 22:43:10 +0800
Subject: [PATCH] 2023-08-04

---
 public/options.json                                                    |   12 +-
 src/tabviews/custom/components/chart/antv-X6/nodeupdate/index.scss     |   36 +++++++++
 src/tabviews/custom/components/chart/antv-X6/index.jsx                 |    3 
 src/tabviews/custom/components/chart/antv-X6/nodeupdate/nodeform.jsx   |   27 ++----
 src/tabviews/custom/components/chart/antv-X6/nodeupdate/memberform.jsx |  121 ++++++++++++++++++++++++++++++
 5 files changed, 174 insertions(+), 25 deletions(-)

diff --git a/public/options.json b/public/options.json
index df576bd..f031142 100644
--- a/public/options.json
+++ b/public/options.json
@@ -1,16 +1,16 @@
 {
-  "appId": "201912040924165801464FF1788654BC5AC73",
-  "appkey": "20191106103859640976D6E924E464D029CF0",
+  "appId": "202108312122504607B107A83F55B40C98CCF",
+  "appkey": "20210831212235413F287EC3BF489424496C8",
   "mainSystemApi": "http://sso.mk9h.cn/cloud/webapi/dostars",
   "systemType": "",
   "externalDatabase": "",
   "lineColor": "",
   "filter": "false",
-  "defaultApp": "mk",
+  "defaultApp": "mkindustry",
   "defaultLang": "zh-CN",
   "WXAppID": "",
   "WXminiAppID": "",
-  "WXNotice": "true",
+  "WXNotice": "false",
   "nginx": "true",
   "debugger": false,
   "licenseKey": "",
@@ -18,6 +18,6 @@
   "transfer": "false",
   "keepPassword": "true",
   "platforms": ["H5", "wechat", "android", "ios", "wxMiniProgram"],
-  "host": "http://qingqiumarket.cn",
-  "service": "MKWMS/"
+  "host": "http://demo.mk9h.cn",
+  "service": "erp_new/"
 }
\ No newline at end of file
diff --git a/src/tabviews/custom/components/chart/antv-X6/index.jsx b/src/tabviews/custom/components/chart/antv-X6/index.jsx
index a035fe9..9ea8fe7 100644
--- a/src/tabviews/custom/components/chart/antv-X6/index.jsx
+++ b/src/tabviews/custom/components/chart/antv-X6/index.jsx
@@ -470,7 +470,8 @@
   }
 
   getrolelist = () => {
-    Api.getSystemConfig({func: 's_get_rolelist', OrderCol: 'RoleID desc', PageIndex: 1, PageSize: 1000}).then(res => {
+    // Api.getSystemConfig({func: 's_get_rolelist', OrderCol: 'RoleID desc', PageIndex: 1, PageSize: 1000}).then(res => {
+    Api.genericInterface({func: 's_get_organizations_v1'}).then(res => {
       if (!res.status) {
         notification.error({
           top: 92,
diff --git a/src/tabviews/custom/components/chart/antv-X6/nodeupdate/index.scss b/src/tabviews/custom/components/chart/antv-X6/nodeupdate/index.scss
index a7317be..93d919a 100644
--- a/src/tabviews/custom/components/chart/antv-X6/nodeupdate/index.scss
+++ b/src/tabviews/custom/components/chart/antv-X6/nodeupdate/index.scss
@@ -118,4 +118,40 @@
       width: 84%;
     }
   }
+  .member-input {
+    display: inline-block;
+    width: 100%;
+    height: 32px;
+    padding: 4px 11px;
+    color: rgba(0, 0, 0, 0.65);
+    font-size: 14px;
+    line-height: 1.5;
+    background-color: #fff;
+    background-image: none;
+    border: 1px solid #d9d9d9;
+    border-radius: 4px;
+
+    .anticon-form {
+      float: right;
+      margin-top: 3px;
+    }
+  }
+}
+.member-transfer {
+  .ant-transfer-list:first-child {
+    width: 60%;
+  }
+  .ant-transfer-list:last-child {
+    width: 40%;
+  }
+  .ant-transfer-list-header {
+    .ant-transfer-list-header-selected {
+      span:not(.ant-transfer-list-header-title) {
+        display: none;
+      }
+      .ant-transfer-list-header-title {
+        position: unset;
+      }
+    }
+  }
 }
\ No newline at end of file
diff --git a/src/tabviews/custom/components/chart/antv-X6/nodeupdate/memberform.jsx b/src/tabviews/custom/components/chart/antv-X6/nodeupdate/memberform.jsx
new file mode 100644
index 0000000..8013724
--- /dev/null
+++ b/src/tabviews/custom/components/chart/antv-X6/nodeupdate/memberform.jsx
@@ -0,0 +1,121 @@
+import React, {Component} from 'react'
+import PropTypes from 'prop-types'
+import { Modal, Transfer, Tree } from 'antd'
+import { FormOutlined } from '@ant-design/icons'
+
+const { TreeNode } = Tree
+
+const isChecked = (selectedKeys, eventKey) => {
+  return selectedKeys.indexOf(eventKey) !== -1
+}
+
+const generateTree = (treeNodes = [], checkedKeys = []) => {
+  return treeNodes.map(({ children, ...props }) => (
+    <TreeNode {...props} disabled={checkedKeys.includes(props.key)} key={props.key}>
+      {generateTree(children, checkedKeys)}
+    </TreeNode>
+  ))
+}
+
+const TreeTransfer = ({ dataSource, targetKeys, ...restProps }) => {
+  const transferDataSource = []
+  function flatten(list = []) {
+    list.forEach(item => {
+      transferDataSource.push(item)
+      flatten(item.children)
+    })
+  }
+  flatten(dataSource)
+
+  return (
+    <Transfer
+      {...restProps}
+      targetKeys={targetKeys}
+      dataSource={transferDataSource}
+      className="member-transfer"
+      titles={['鍏ㄩ儴浜哄憳', '宸查��']}
+      render={item => item.title}
+      showSelectAll={false}
+    >
+      {({ direction, onItemSelect, selectedKeys }) => {
+        if (direction === 'left') {
+          const checkedKeys = [...selectedKeys, ...targetKeys]
+          return (
+            <Tree
+              blockNode
+              checkable
+              checkStrictly
+              defaultExpandAll
+              checkedKeys={checkedKeys}
+              onCheck={(_, { node: { props: { eventKey } } }) => {
+                onItemSelect(eventKey, !isChecked(checkedKeys, eventKey))
+              }}
+              onSelect={(_, { node: { props: { eventKey } } }) => {
+                onItemSelect(eventKey, !isChecked(checkedKeys, eventKey))
+              }}
+            >
+              {generateTree(dataSource, targetKeys)}
+            </Tree>
+          )
+        }
+      }}
+    </Transfer>
+  )
+}
+
+const treeData = [
+  {
+    key: '0-0',
+    title: '0-0',
+    checkable: false,
+    children: [{ key: '0-0-0', title: '0-0-0' }, { key: '0-0-1', title: '0-0-1' }]
+  },
+  {
+    key: '0-1',
+    title: '0-1',
+    checkable: false,
+    children: [{ key: '0-1-0', title: '0-1-0' }, { key: '0-1-1', title: '0-1-1' }],
+  },
+  { key: '0-2', title: '0-3' },
+]
+
+class MemberForm extends Component {
+  static propTpyes = {
+    node: PropTypes.any,
+    data: PropTypes.any,
+    rolelist: PropTypes.array
+  }
+
+  state = {
+    visible: false,
+    targetKeys: []
+  }
+
+  onChange = targetKeys => {
+    this.setState({ targetKeys })
+  }
+
+  render() {
+    const { visible, targetKeys } = this.state
+
+    return (
+      <>
+        <div className="member-input">0浜�<FormOutlined onClick={() => this.setState({visible: true})} /></div>
+        <Modal
+          title="閫夋嫨浜哄憳"
+          visible={visible}
+          closable={false}
+          maskClosable={false}
+          width={800}
+          onOk={this.confirm}
+          onCancel={() => this.setState({visible: false})}
+          destroyOnClose
+        >
+          <TreeTransfer dataSource={treeData} targetKeys={targetKeys} onChange={this.onChange} />
+        </Modal>
+      </>
+    )
+  }
+}
+
+export default MemberForm
\ No newline at end of file
diff --git a/src/tabviews/custom/components/chart/antv-X6/nodeupdate/nodeform.jsx b/src/tabviews/custom/components/chart/antv-X6/nodeupdate/nodeform.jsx
index 44e92d5..8572bfb 100644
--- a/src/tabviews/custom/components/chart/antv-X6/nodeupdate/nodeform.jsx
+++ b/src/tabviews/custom/components/chart/antv-X6/nodeupdate/nodeform.jsx
@@ -1,8 +1,9 @@
 import React, {Component} from 'react'
 import PropTypes from 'prop-types'
-import { Form, Row, Col, Select, Input, Radio, Tooltip, InputNumber } from 'antd'
+import { Form, Row, Col, Input, Radio, Tooltip, InputNumber } from 'antd'
 import { QuestionCircleOutlined } from '@ant-design/icons'
 
+import MemberForm from './memberform'
 const { TextArea } = Input
 
 class NodeForm extends Component {
@@ -45,7 +46,7 @@
   }
 
   render() {
-    const { node, rolelist } = this.props
+    const { node } = this.props
     const { getFieldDecorator } = this.props.form
     const formItemLayout = {
       labelCol: {
@@ -132,36 +133,26 @@
             </Form.Item>
           </Col> : null}
           <Col span={12}>
-            <Form.Item label="瑙掕壊">
+            <Form.Item label="浜哄憳">
               {getFieldDecorator('roleId', {
                 initialValue: data.roleId || '',
                 rules: [
                   {
                     required: true,
-                    message: '璇烽�夋嫨瑙掕壊!'
+                    message: '璇烽�夋嫨浜哄憳!'
                   }
                 ]
               })(
-                <Select showSearch filterOption={(input, option) => option.props.children.toLowerCase().indexOf(input.toLowerCase()) >= 0}>
-                  {rolelist.map(item => (<Select.Option key={item.RoleID} value={item.RoleID}>{item.RoleName}</Select.Option>))}
-                </Select>
+                <MemberForm />
               )}
             </Form.Item>
           </Col>
           <Col span={12}>
-            <Form.Item label="閮ㄩ棬">
+            <Form.Item label="鎶勯��">
               {getFieldDecorator('depId', {
-                initialValue: data.depId || '',
-                rules: [
-                  {
-                    required: true,
-                    message: '璇烽�夋嫨閮ㄩ棬!'
-                  }
-                ]
+                initialValue: data.depId || ''
               })(
-                <Select showSearch filterOption={(input, option) => option.props.children.toLowerCase().indexOf(input.toLowerCase()) >= 0}>
-                  {rolelist.map(item => (<Select.Option key={item.RoleID} value={item.RoleID}>{item.RoleName}</Select.Option>))}
-                </Select>
+                <MemberForm />
               )}
             </Form.Item>
           </Col>

--
Gitblit v1.8.0