king
2023-08-04 770a7035c21ff90898938f73a8501b7cb4b6bf37
2023-08-04
4个文件已修改
1个文件已添加
199 ■■■■ 已修改文件
public/options.json 12 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/tabviews/custom/components/chart/antv-X6/index.jsx 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/tabviews/custom/components/chart/antv-X6/nodeupdate/index.scss 36 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/tabviews/custom/components/chart/antv-X6/nodeupdate/memberform.jsx 121 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/tabviews/custom/components/chart/antv-X6/nodeupdate/nodeform.jsx 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
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/"
}
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,
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;
      }
    }
  }
}
src/tabviews/custom/components/chart/antv-X6/nodeupdate/memberform.jsx
New file
@@ -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
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>