Commit ef24a54b authored by 邓超's avatar 邓超

fix: 修改节点配置为常驻,并实时保存

parent 95691697
Pipeline #64146 passed with stages
/* eslint-disable global-require */ /* eslint-disable global-require */
import React, { useState, useEffect } from 'react'; import React, { useState, useEffect, useRef } from 'react';
import { Button, Modal, notification, Spin, Tooltip } from 'antd'; import { Button, Modal, notification, Spin, Tooltip } from 'antd';
import lodash from 'lodash'; import lodash from 'lodash';
import { SaveNodeChange, GetFlowNode } from '@/services/workflow/workflow'; import { SaveNodeChange, GetFlowNode } from '@/services/workflow/workflow';
...@@ -45,6 +45,7 @@ const FlowChart = props => { ...@@ -45,6 +45,7 @@ const FlowChart = props => {
}); // 组件内得流程图数据 }); // 组件内得流程图数据
const [showLeaveTip, setShowLeaveTip] = useState(false); // 离开路由是否又提醒 const [showLeaveTip, setShowLeaveTip] = useState(false); // 离开路由是否又提醒
const [buttonLoading, setButtonLoading] = useState(); // 发布按钮保存loading const [buttonLoading, setButtonLoading] = useState(); // 发布按钮保存loading
const currentNode = useRef();
const objGo = go.GraphObject.make; const objGo = go.GraphObject.make;
useEffect(() => { useEffect(() => {
if (treeVisible) { if (treeVisible) {
...@@ -129,8 +130,15 @@ const FlowChart = props => { ...@@ -129,8 +130,15 @@ const FlowChart = props => {
console.log(nodeData); console.log(nodeData);
diagram.model.updateTargetBindings(nodeData); diagram.model.updateTargetBindings(nodeData);
diagram.model.setDataProperty(nodeData, 'key', newKey); diagram.model.setDataProperty(nodeData, 'key', newKey);
currentNode.current = nodeData;
setNodeKey(nodeData.key);
setEditMsg(nodeData);
setModalType('edit');
setVisible(true);
}); });
setAddNodes([...AddNodes, newKey]); setAddNodes([...AddNodes, newKey]);
leaveTip(); leaveTip();
}); });
// diagram.addDiagramListener('SelectionDeleted', e => { // diagram.addDiagramListener('SelectionDeleted', e => {
...@@ -203,6 +211,15 @@ const FlowChart = props => { ...@@ -203,6 +211,15 @@ const FlowChart = props => {
nodeDataArray, nodeDataArray,
linkDataArray, linkDataArray,
}); });
// 初次选中
if (nodeDataArray?.length > 0) {
currentNode.current = diagram.model.findNodeDataForKey(nodeDataArray[0].NodeId);
setNodeKey(currentNode.current.key);
setEditMsg(currentNode.current);
setModalType('edit');
setVisible(true);
}
// 修改复制后节点内容 // 修改复制后节点内容
diagram.model.copyNodeDataFunction = (obj, model) => { diagram.model.copyNodeDataFunction = (obj, model) => {
let copyObj = lodash.cloneDeep(obj); let copyObj = lodash.cloneDeep(obj);
...@@ -531,7 +548,7 @@ const FlowChart = props => { ...@@ -531,7 +548,7 @@ const FlowChart = props => {
maxSize: new go.Size(120, NaN), maxSize: new go.Size(120, NaN),
maxLines: 1, maxLines: 1,
alignment: go.Spot.Center, alignment: go.Spot.Center,
margin: new go.Margin(0, 10, 0, 10), margin: new go.Margin(0, 15, 0, 15),
overflow: go.TextBlock.OverflowEllipsis, overflow: go.TextBlock.OverflowEllipsis,
font: 'normal 12pt Microsoft YaHei', font: 'normal 12pt Microsoft YaHei',
}, },
...@@ -604,10 +621,16 @@ const FlowChart = props => { ...@@ -604,10 +621,16 @@ const FlowChart = props => {
mouseLeave(e, node) { mouseLeave(e, node) {
showSmallPorts(node, false); showSmallPorts(node, false);
}, },
click(e, node) {
handlerDC(e, node);
},
// 处理双击 // 处理双击
doubleClick(e, node) { doubleClick(e, node) {
// 双击事件 // 双击事件
handlerDC(e, node); // 双击执行的方法 // handlerDC(e, node); // 双击执行的方法
},
selectionChanged: node => {
// console.log(node.data, 'nodenodenode');
}, },
toolTip: objGo( toolTip: objGo(
'ToolTip', 'ToolTip',
...@@ -726,10 +749,7 @@ const FlowChart = props => { ...@@ -726,10 +749,7 @@ const FlowChart = props => {
let obj = JSON.parse(v); let obj = JSON.parse(v);
let nodeData = diagram.model.findNodeDataForKey(obj.from); let nodeData = diagram.model.findNodeDataForKey(obj.from);
if (nodeData.NodeType === '20' || nodeData.NodeType === '21') { if (nodeData.NodeType === '20' || nodeData.NodeType === '21') {
if (nodeData.RuleList.some(ele => ele.NextNodeId === obj.to)) { return nodeData.RuleList.find(ele => ele.NextNodeId === obj.to).RuleName;
return nodeData.RuleList.find(ele => ele.NextNodeId === obj.to).RuleName;
}
return '';
} }
return ''; return '';
}; };
...@@ -832,8 +852,12 @@ const FlowChart = props => { ...@@ -832,8 +852,12 @@ const FlowChart = props => {
}; };
// 双击节点 // 双击节点
const handlerDC = (e, node) => { const handlerDC = (e, node) => {
console.log(node.data, 'nondojfadsoijgsd');
setNodeKey(node.part.data.key); setNodeKey(node.part.data.key);
setEditMsg(node.part.data); setEditMsg(node.part.data);
// diagram.model.setDataProperty(node.data, 'NodeName', 'fdasjkljfkldsajf');
currentNode.current = node.data;
setModalType('edit'); setModalType('edit');
setVisible(true); setVisible(true);
}; };
...@@ -899,7 +923,7 @@ const FlowChart = props => { ...@@ -899,7 +923,7 @@ const FlowChart = props => {
// 给线上添加文字 // 给线上添加文字
let diagramObj = JSON.parse(diagram.model.toJson()); let diagramObj = JSON.parse(diagram.model.toJson());
console.log(diagramObj.linkDataArray, 'diagramObj.linkDataArray');
diagramObj.linkDataArray.forEach(item => { diagramObj.linkDataArray.forEach(item => {
let node = diagram.model.findLinkDataForKey(item.LineKey); let node = diagram.model.findLinkDataForKey(item.LineKey);
node.text = item.RuleName; node.text = item.RuleName;
...@@ -962,7 +986,20 @@ const FlowChart = props => { ...@@ -962,7 +986,20 @@ const FlowChart = props => {
} }
return obj; return obj;
}; };
// 节点数据改边
const nodeChage = (key, value) => {
console.log(key, value);
let obj = JSON.parse(JSON.stringify(currentNode.current));
obj[key] = value;
const nodeDetail = JSON.stringify(obj);
diagram.model.setDataProperty(currentNode.current, key, value);
if (key === 'roleList') {
diagram.model.setDataProperty(currentNode.current, 'nodeDetail', nodeDetail);
}
diagram.rebuildParts();
};
// 保存流程 // 保存流程
const saveFlow = () => { const saveFlow = () => {
setButtonLoading(true); setButtonLoading(true);
...@@ -1051,18 +1088,19 @@ const FlowChart = props => { ...@@ -1051,18 +1088,19 @@ const FlowChart = props => {
<div className={styles.chartBox}> <div className={styles.chartBox}>
<div id="myOverviewDiv" className={styles.myOverviewDiv} /> <div id="myOverviewDiv" className={styles.myOverviewDiv} />
<div className={styles.flowName}>{flowData.flowName}</div> <div className={styles.flowName}>{flowData.flowName}</div>
{/* <Spin spinning={chartLoading}> */} <Spin spinning={chartLoading}>
<div <div
id="myDiagramDiv" id="myDiagramDiv"
className={styles.myDiagramDiv} className={styles.myDiagramDiv}
style={{ backgroundColor: '#EFF8FA' }} style={{ backgroundColor: '#EFF8FA' }}
/> />
{/* </Spin> */} </Spin>
<NodeModal <NodeModal
flowID={flowID} flowID={flowID}
visible={visible} visible={visible}
editMsg={editMsg} editMsg={editMsg}
modalType={modalType} modalType={modalType}
nodeChage={nodeChage}
handleCancel={() => setVisible(false)} handleCancel={() => setVisible(false)}
onSubumit={(obj, nextlinkNodes) => nodeCallBack(obj, nextlinkNodes)} onSubumit={(obj, nextlinkNodes) => nodeCallBack(obj, nextlinkNodes)}
flowData={diagram ? JSON.parse(diagram.model.toJson()) : {}} flowData={diagram ? JSON.parse(diagram.model.toJson()) : {}}
......
.nodeConfig { .nodeConfig {
position: absolute;
height: 100%; height: 100%;
min-width: 425px; // min-width: 425px;
right: 0;
top: 0;
background-color: #fff;
width: 25%; width: 25%;
padding: 20px; padding: 20px;
overflow-y: scroll; overflow-y: scroll;
margin-left: 15px; margin-left: 15px;
z-index: 10;
.titleBox { .titleBox {
color: #BCBCBC; color: #BCBCBC;
...@@ -31,7 +36,7 @@ ...@@ -31,7 +36,7 @@
} }
.buttonBox { .buttonBox {
padding-left: 15px; // padding-left: 15px;
width: 100%; width: 100%;
height: 34px; height: 34px;
display: flex; display: flex;
...@@ -160,7 +165,7 @@ ...@@ -160,7 +165,7 @@
} }
.buttonBox { .buttonBox {
padding-left: 15px; // padding-left: 15px;
width: 100%; width: 100%;
height: 34px; height: 34px;
display: flex; display: flex;
......
...@@ -74,25 +74,31 @@ const ConfigSubprocess = props => { ...@@ -74,25 +74,31 @@ const ConfigSubprocess = props => {
}, [nodeMsg]); }, [nodeMsg]);
const changeValue = (changedFields, allFields) => { const changeValue = (changedFields, allFields) => {
console.log(allFields); console.log(changedFields, 'changedFields');
const msg = { let MapFields = [];
SubFlowEventConfigID: Number(allFields[0]?.value?.split('-')[0]), if (changedFields[0].name[0] === 'MapFields') {
SubFlowID: Number(allFields[0]?.value?.split('-')[1]), MapFields = allFields[1]?.value?.map(item => ({
MapFields: allFields[1]?.value?.map(item => ({
ParentFlowMapTableName: item?.nodeField?.split('-')[0], ParentFlowMapTableName: item?.nodeField?.split('-')[0],
ParentFlowMapFieldName: item?.nodeField?.split('-')[1], ParentFlowMapFieldName: item?.nodeField?.split('-')[1],
ParentFlowMapTableType: item?.nodeField?.split('-')[2], ParentFlowMapTableType: item?.nodeField?.split('-')[2],
SubFlowMapTableName: item?.subNodeField?.split('-')[0], SubFlowMapTableName: item?.subNodeField?.split('-')[0],
SubFlowMapFieldName: item?.subNodeField?.split('-')[1], SubFlowMapFieldName: item?.subNodeField?.split('-')[1],
})), }));
}
const msg = {
SubFlowEventConfigID: Number(allFields[0]?.value?.split('-')[0]),
SubFlowID: Number(allFields[0]?.value?.split('-')[1]),
MapFields: MapFields,
}; };
getSubNodeMsg(msg); getSubNodeMsg(msg);
// if (changedFields[0].name[0] === 'password') { // if (changedFields[0].name[0] === 'password') {
// } // }
}; };
// 选择流程 // 选择流程
const flowChage = e => { const flowChage = e => {
console.log(e); console.log(e);
form.setFieldsValue({ MapFields: [] });
const subFlowID = e.split('-')[1]; const subFlowID = e.split('-')[1];
console.log(subFlowID, 'afsdfsda'); console.log(subFlowID, 'afsdfsda');
GetFlowMapFields({ flowID, subFlowID }).then(res => { GetFlowMapFields({ flowID, subFlowID }).then(res => {
...@@ -110,7 +116,7 @@ const ConfigSubprocess = props => { ...@@ -110,7 +116,7 @@ const ConfigSubprocess = props => {
}), }),
); );
console.log(res.data.ParentFlowMapList, 'res.data.ParentFlowMapList'); console.log(res.data.ParentFlowMapList, 'res.data.ParentFlowMapList');
form.setFieldsValue({ MapFields: [] });
setCurrentNodeField(res.data.ParentFlowMapList); setCurrentNodeField(res.data.ParentFlowMapList);
setChildNodeField(res.data.SubFlowMapInfo.TableFieldNames); setChildNodeField(res.data.SubFlowMapInfo.TableFieldNames);
} else { } else {
......
...@@ -104,7 +104,7 @@ ...@@ -104,7 +104,7 @@
.chartBox { .chartBox {
position: relative; position: relative;
display: flex; // display: flex;
height: calc(100% - 52px); height: calc(100% - 52px);
.flowName { .flowName {
...@@ -112,7 +112,7 @@ ...@@ -112,7 +112,7 @@
top: 10px; top: 10px;
left: 50%; left: 50%;
transform: translateX(-50%); transform: translateX(-200%);
font-size: 24px; font-size: 24px;
font-weight: 700; font-weight: 700;
color: #1585FF; color: #1585FF;
...@@ -214,8 +214,8 @@ ...@@ -214,8 +214,8 @@
} }
.myDiagramDiv { .myDiagramDiv {
// width: 100%; width: 75%;
flex: 1; // flex: 1;
height: 100%; height: 100%;
} }
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment