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