From ab003fccad96beb96d18f8018980e6c75ed03edc Mon Sep 17 00:00:00 2001
From: king <18310653075@163.com>
Date: 星期二, 08 八月 2023 16:28:43 +0800
Subject: [PATCH] 2023-08-08

---
 src/tabviews/custom/components/chart/antv-X6/nodeupdate/index.scss     |   10 +++
 src/tabviews/custom/components/chart/antv-X6/index.jsx                 |    6 ++
 src/tabviews/custom/components/chart/antv-X6/nodeupdate/nodeform.jsx   |   28 ++++-----
 src/tabviews/custom/components/chart/antv-X6/nodeupdate/memberform.jsx |  101 ++++++++++++++++++++++++++++++++-
 src/tabviews/custom/components/chart/antv-X6/nodeupdate/index.jsx      |    4 
 5 files changed, 126 insertions(+), 23 deletions(-)

diff --git a/src/tabviews/custom/components/chart/antv-X6/index.jsx b/src/tabviews/custom/components/chart/antv-X6/index.jsx
index 87c4c48..6e05732 100644
--- a/src/tabviews/custom/components/chart/antv-X6/index.jsx
+++ b/src/tabviews/custom/components/chart/antv-X6/index.jsx
@@ -490,6 +490,7 @@
           disabled: true,
           children: []
         }
+        let _works = []
 
         com.departments.forEach(dep => {
           let _dep = {
@@ -523,6 +524,8 @@
                     worker_id: work.worker_id || '',
                     workercode: work.workercode || '',
                     workername: work.workername || '',
+                    parentIds: [com.OrgCode, dep.co_pro_code, job.jobcode],
+                    parentNames: [com.OrgName, dep.co_pro_name, job.jobname]
                   }
   
                   _job.children.push(_work)
@@ -548,6 +551,8 @@
                     worker_id: work.worker_id || '',
                     workercode: work.workercode || '',
                     workername: work.workername || '',
+                    parentIds: [com.OrgCode, dep.co_pro_code, job.jobcode, group.work_group],
+                    parentNames: [com.OrgName, dep.co_pro_name, job.jobname, group.work_group]
                   }
   
                   _group.children.push(_work)
@@ -570,6 +575,7 @@
         })
 
         if (_com.children.length > 0) {
+          _com.works = _works
           orgs.push(_com)
         }
       })
diff --git a/src/tabviews/custom/components/chart/antv-X6/nodeupdate/index.jsx b/src/tabviews/custom/components/chart/antv-X6/nodeupdate/index.jsx
index 722012a..34ac0c0 100644
--- a/src/tabviews/custom/components/chart/antv-X6/nodeupdate/index.jsx
+++ b/src/tabviews/custom/components/chart/antv-X6/nodeupdate/index.jsx
@@ -474,8 +474,8 @@
             {mkdata ? <div className="mk-data">
               <div>鐘舵�侊細{mkdata.status}<span style={{float: 'right'}}>{mkdata.statusName}</span></div>
               {mknode.shape !== 'edge' && !mknode.mknode ? <div>鏍囪锛歿mkdata.sign || ''}</div> : null}
-              {mkdata.roleId ? <div>瑙掕壊锛歿mkdata.roleName || ''}</div> : null}
-              {mkdata.depId ? <div>閮ㄩ棬锛歿mkdata.depName || ''}</div> : null}
+              {mkdata.members && mkdata.members.length ? <div>瀹℃壒浜猴細{mkdata.members.map(item => item.workername).join('銆�')}</div> : null}
+              {mkdata.copys && mkdata.copys.length ? <div>鎶勯�佷汉锛歿mkdata.copys.map(item => item.workername).join('銆�')}</div> : null}
               <div>澶囨敞锛歿mkdata.remark || ''}</div>
             </div> : null}
           </Col>
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 b9da954..57d1d35 100644
--- a/src/tabviews/custom/components/chart/antv-X6/nodeupdate/index.scss
+++ b/src/tabviews/custom/components/chart/antv-X6/nodeupdate/index.scss
@@ -161,9 +161,17 @@
     top: 50px;
   }
   .ant-modal-body {
-    min-height: 150px;
     max-height: calc(100vh - 200px);
     overflow-y: auto;
+    padding-top: 15px;
+
+    .ant-input-search {
+      width: 300px;
+      margin-bottom: 10px;
+    }
+    .ant-transfer-customize-list .ant-transfer-list {
+      min-height: 300px;
+    }
   }
   .ant-modal-body::-webkit-scrollbar {
     width: 7px;
diff --git a/src/tabviews/custom/components/chart/antv-X6/nodeupdate/memberform.jsx b/src/tabviews/custom/components/chart/antv-X6/nodeupdate/memberform.jsx
index 4602e47..37827b0 100644
--- a/src/tabviews/custom/components/chart/antv-X6/nodeupdate/memberform.jsx
+++ b/src/tabviews/custom/components/chart/antv-X6/nodeupdate/memberform.jsx
@@ -1,9 +1,11 @@
 import React, {Component} from 'react'
 import PropTypes from 'prop-types'
-import { Modal, Transfer, Tree } from 'antd'
+import { fromJS } from 'immutable'
+import { Modal, Transfer, Tree, Input, notification } from 'antd'
 import { FormOutlined } from '@ant-design/icons'
 
 const { TreeNode } = Tree
+const { Search } = Input
 
 const isChecked = (selectedKeys, eventKey) => {
   return selectedKeys.indexOf(eventKey) !== -1
@@ -72,20 +74,108 @@
 
   state = {
     visible: false,
-    targetKeys: ['sifuweoifuweifuo']
+    targetKeys: [],
+    users: []
   }
 
   onChange = targetKeys => {
     this.setState({ targetKeys })
   }
 
-  render() {
+  search = (val) => {
     const { orgs } = this.props
-    const { visible, targetKeys } = this.state
+    
+    let _orgs = fromJS(orgs).toJS()
+    let _orgs_ = []
+    if (val) {
+      let getOrg = (ors) => {
+        return ors.filter(or => {
+          if (or.key.indexOf(val) > -1 || or.title.indexOf(val) > -1) {
+            return true
+          } else if (!or.children) {
+            return false
+          }
+
+          or.children = getOrg(or.children)
+
+          return or.children.length > 0
+        })
+      }
+
+      _orgs_ = getOrg(_orgs)
+    } else {
+      _orgs_ = _orgs
+    }
+
+    this.setState({orgs: _orgs_})
+  }
+
+  trigger = () => {
+    const { orgs, value, title } = this.props
+
+    let userIds = []
+    let users = {}
+
+    let getUsers = (ors) => {
+      ors.forEach(or => {
+        if (or.children) {
+          getUsers(or.children)
+        } else {
+          users[or.worker_id] = or
+          userIds.push(or.worker_id)
+        }
+      })
+    }
+
+    getUsers(orgs)
+
+    let targetKeys = []
+    let lost_works = []
+    value.forEach(user => {
+      if (userIds.includes(user.worker_id)) {
+        targetKeys.push(user.worker_id)
+      } else {
+        lost_works.push(user)
+      }
+    })
+
+    if (lost_works.length) {
+      notification.warning({
+        top: 92,
+        message: `鍘�${title} ${lost_works.map(item => item.workername).join('銆�')} 涓嶅瓨鍦紝璇烽噸鏂版坊鍔犮�俙,
+        duration: 10
+      })
+    }
+
+    this.setState({visible: true, orgs: fromJS(orgs).toJS(), targetKeys, users})
+  }
+
+  confirm = () => {
+    const { targetKeys, users } = this.state
+
+    let value = []
+    targetKeys.forEach(key => {
+      if (!users[key]) return
+
+      let user = fromJS(users[key]).toJS()
+
+      delete user.key
+      delete user.title
+
+      value.push(user)
+    })
+
+    this.setState({visible: false})
+    this.props.onChange(value)
+  }
+
+  render() {
+    const { value } = this.props
+    const { orgs, visible, targetKeys } = this.state
 
     return (
       <>
-        <div className="member-input">0浜�<FormOutlined onClick={() => this.setState({visible: true})} /></div>
+        <div className="member-input">{value.length}浜�<FormOutlined onClick={this.trigger} /></div>
         <Modal
           wrapClassName="member-modal"
           title="閫夋嫨浜哄憳"
@@ -97,6 +187,7 @@
           onCancel={() => this.setState({visible: false})}
           destroyOnClose
         >
+          <Search onSearch={this.search}/>
           <TreeTransfer dataSource={orgs} targetKeys={targetKeys} onChange={this.onChange} />
         </Modal>
       </>
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 a47936b..de23978 100644
--- a/src/tabviews/custom/components/chart/antv-X6/nodeupdate/nodeform.jsx
+++ b/src/tabviews/custom/components/chart/antv-X6/nodeupdate/nodeform.jsx
@@ -90,7 +90,7 @@
             </Form.Item>
           </Col> : null}
           {nodetype === 'node' ? <Col span={12}>
-            <Form.Item label="瀹℃壒浜�">
+            <Form.Item label="璁剧疆瀹℃壒浜�">
               {getFieldDecorator('approver', {
                 initialValue: data.approver || 'member'
               })(
@@ -115,26 +115,24 @@
             </Form.Item>
           </Col> : null}
           <Col span={12}>
-            <Form.Item label="浜哄憳">
-              {getFieldDecorator('roleId', {
-                initialValue: data.roleId || '',
-                rules: [
-                  {
-                    required: true,
-                    message: '璇烽�夋嫨浜哄憳!'
-                  }
-                ]
+            <Form.Item label="瀹℃壒浜�">
+              {getFieldDecorator('members', {
+                initialValue: data.members || [],
+                rules: [{
+                  required: true,
+                  message: '璇锋坊鍔犲鎵逛汉!'
+                }]
               })(
-                <MemberForm orgs={orgs}/>
+                <MemberForm orgs={orgs} title="瀹℃壒浜�"/>
               )}
             </Form.Item>
           </Col>
           <Col span={12}>
-            <Form.Item label="鎶勯��">
-              {getFieldDecorator('depId', {
-                initialValue: data.depId || ''
+            <Form.Item label="鎶勯�佷汉">
+              {getFieldDecorator('copys', {
+                initialValue: data.copys || []
               })(
-                <MemberForm orgs={orgs}/>
+                <MemberForm orgs={orgs} title="鎶勯�佷汉"/>
               )}
             </Form.Item>
           </Col>

--
Gitblit v1.8.0