From 2aa5ab63b4bbce5c36dbb3511b205b3b5f6af9bd Mon Sep 17 00:00:00 2001
From: king <18310653075@163.com>
Date: 星期二, 07 五月 2024 11:34:20 +0800
Subject: [PATCH] 2024-05-07

---
 src/tabviews/custom/components/chart/antv-X6/nodeupdate/index.jsx |  133 ++++++++++++++++++++++++++++++++++++--------
 1 files changed, 109 insertions(+), 24 deletions(-)

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 e423161..80c4e33 100644
--- a/src/tabviews/custom/components/chart/antv-X6/nodeupdate/index.jsx
+++ b/src/tabviews/custom/components/chart/antv-X6/nodeupdate/index.jsx
@@ -1,26 +1,38 @@
 import React, {Component} from 'react'
 import PropTypes from 'prop-types'
 import { is, fromJS } from 'immutable'
-import { Form, Row, Col, Input, Select, Radio, InputNumber } from 'antd'
+import { Form, Row, Col, Input, Select, Radio, InputNumber, Modal } from 'antd'
+import { FormOutlined } from '@ant-design/icons'
 
-import ColorSketch from '@/mob/colorsketch'
-
+import ColorSketch from '@/tabviews/zshare/mutilform/mkColor'
+import NodeForm from './nodeform'
+import MKEmitter from '@/utils/events.js'
 import './index.scss'
+
+const { TextArea } = Input
 
 class NodeUpdate extends Component {
   static propTpyes = {
     node: PropTypes.object,
-    rolelist: PropTypes.array
+    orgs: PropTypes.array
   }
 
   state = {
-    formlist: null
+    formlist: null,
+    mknode: null,
+    mkdata: null
   }
 
   UNSAFE_componentWillMount () {
     this.setState({
+      mknode: this.props.node,
+      mkdata: this.props.node.mkdata || '',
       formlist: this.getFormList(this.props.node)
     })
+  }
+
+  componentDidMount () {
+    MKEmitter.addListener('mk-x6-dbclick', this.trigger)
   }
 
   UNSAFE_componentWillReceiveProps(nextProps) {
@@ -29,10 +41,31 @@
         formlist: null
       }, () => {
         this.setState({
+          mknode: nextProps.node,
+          mkdata: nextProps.node.mkdata || '',
           formlist: this.getFormList(nextProps.node)
         })
       })
     }
+  }
+
+  /**
+   * @description 缁勪欢閿�姣侊紝娓呴櫎state鏇存柊锛屾竻闄ゅ揩鎹烽敭璁剧疆
+   */
+  componentWillUnmount () {
+    this.setState = () => {
+      return
+    }
+
+    MKEmitter.removeListener('mk-x6-dbclick', this.trigger)
+  }
+
+  trigger = () => {
+    const { formlist } = this.state
+
+    if (!formlist || formlist.findIndex(item => item.type === 'other') === -1) return
+
+    this.setState({visible: true})
   }
 
   getFormList = (node) => {
@@ -71,6 +104,8 @@
         lineType = 'dash'
       }
 
+      let font = node.labels && node.labels[0] ? node.labels[0].attrs.label : {}
+
       return [
         {
           type: 'title',
@@ -80,7 +115,7 @@
           type: 'text',
           field: 'title',
           label: '鏍囩',
-          initval: title
+          initval: font.text || ''
         },
         {
           type: 'title',
@@ -107,6 +142,26 @@
             {value: 'solid', text: '瀹炵嚎'},
             {value: 'dash', text: '铏氱嚎'}
           ]
+        },
+        {
+          type: 'title',
+          label: '鏍囩鏍峰紡'
+        },
+        {
+          type: 'number',
+          field: 'fontSize',
+          label: '瀛楀彿',
+          initval: font.fontSize || 14
+        },
+        {
+          type: 'color',
+          field: 'fontFill',
+          label: '棰滆壊',
+          initval: font.fill || '#000000'
+        },
+        {
+          type: 'other',
+          label: '鑷畾涔変俊鎭�'
         }
       ]
     } else if (node.shape === 'lane') {
@@ -228,7 +283,7 @@
           label: '鍐呭'
         },
         {
-          type: 'text',
+          type: 'textarea',
           field: 'title',
           label: '鏍囩',
           initval: title
@@ -330,22 +385,9 @@
           initval: fontFill
         },
         {
-          type: 'title',
+          type: 'other',
           label: '鑷畾涔変俊鎭�'
-        },
-        {
-          type: 'text',
-          field: 'mksign',
-          label: '鏍囪',
-          initval: node.mksign || ''
-        },
-        {
-          type: 'select',
-          field: 'mkroleid',
-          label: '瑙掕壊',
-          initval: node.mkroleid || '',
-          options: this.props.rolelist.map(item => ({value: item.RoleID, text: item.RoleName}))
-        },
+        }
       ]
     }
   }
@@ -366,8 +408,15 @@
     this.props.onChange(value, key)
   }
 
+  confirm = () => {
+    this.nodeRef.handleConfirm().then(res => {
+      this.setState({visible: false, mkdata: res})
+      this.props.onChange(res, 'mkdata')
+    })
+  }
+
   getFields() {
-    const { formlist } = this.state
+    const { formlist, mkdata, mknode } = this.state
     const fields = []
 
     if (!formlist) return
@@ -385,6 +434,12 @@
             <Form.Item label={item.label}>
               <Input defaultValue={item.initval} placeholder="" autoComplete="off" onChange={(e) => this.change(e.target.value, item.field)} />
             </Form.Item>
+          </Col>
+        )
+      } else if (item.type === 'textarea') {
+        fields.push(
+          <Col span={24} key={index} style={{padding: '0 12px'}}>
+            <TextArea defaultValue={item.initval} rows={3} onChange={(e) => this.change(e.target.value, item.field)} />
           </Col>
         )
       } else if (item.type === 'number') {
@@ -432,8 +487,22 @@
         fields.push(
           <Col span={24} key={index}>
             <Form.Item label={item.label}>
-              <ColorSketch defaultValue={item.initval} onChange={(value) => this.change(value, item.field)}/>
+              <ColorSketch config={{initval: item.initval}} onChange={(value) => this.change(value, item.field)}/>
             </Form.Item>
+          </Col>
+        )
+      } else if (item.type === 'other') {
+        fields.push(
+          <Col span={24} key={index}>
+            <span className="split-line">{item.label}锛�<FormOutlined onClick={() => {this.setState({visible: true})}}/></span>
+            {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}
+              {mknode.shape === 'edge' && mkdata.flowType ? <div>鎿嶄綔锛歿mkdata.flowType === 'reject' ? '椹冲洖' : '瀹℃壒'}</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>
         )
       }
@@ -442,11 +511,27 @@
   }
 
   render() {
+    const { visible, mkdata, mknode } = this.state
+
     return (
       <div className="node-edit-form-wrap">
         <Form className="node-edit-form">
           <Row>{this.getFields()}</Row>
         </Form>
+        <Modal
+          title={mknode && mknode.shape === 'edge' ? '杩炵嚎缂栬緫' : '鑺傜偣缂栬緫'}
+          wrapClassName="mk-x6-modal"
+          visible={visible}
+          closable={false}
+          maskClosable={false}
+          width={1070}
+          centered={true}
+          onOk={this.confirm}
+          onCancel={() => this.setState({visible: false})}
+          destroyOnClose
+        >
+          <NodeForm node={mknode} data={mkdata} orgs={this.props.orgs} handleSubmit={() => this.confirm()} wrappedComponentRef={(inst) => this.nodeRef = inst}/>
+        </Modal>
       </div>
     )
   }

--
Gitblit v1.8.0