hookehuyr

fix 复制后的数据检查问题修复

Showing 1 changed file with 46 additions and 113 deletions
...@@ -1202,25 +1202,25 @@ export default { ...@@ -1202,25 +1202,25 @@ export default {
1202 state.dialogUserFormVisible = status 1202 state.dialogUserFormVisible = status
1203 } 1203 }
1204 1204
1205 - const onConfirmUserView = async (data: any) => { 1205 + const onConfirmUserView = async (data: any) => { // 负责人弹框确认回调
1206 state.userTags = data; 1206 state.userTags = data;
1207 - // 自动保存流程 1207 + // // 自动保存流程
1208 - let { nodes, edges } = editor.editorState.graph.save(); 1208 + // let { nodes, edges } = editor.editorState.graph.save();
1209 - // 检查路径有效性 1209 + // // 检查路径有效性
1210 - const paths = []; 1210 + // const paths = [];
1211 - findPathsToEndNode(edges, 'start-node', [], paths); 1211 + // findPathsToEndNode(edges, 'start-node', [], paths);
1212 - 1212 +
1213 - let flow_id = getFlowId(); // 流程id 1213 + // let flow_id = getFlowId(); // 流程id
1214 - 1214 +
1215 - if (paths.length) { 1215 + // if (paths.length) {
1216 - const { code, data } = await saveFlowAPI({ form_id: +form_id, flow_id: +flow_id, data: JSON.stringify({ nodes, edges }) }); 1216 + // const { code, data } = await saveFlowAPI({ form_id: +form_id, flow_id: +flow_id, data: JSON.stringify({ nodes, edges }) });
1217 - if (code) { 1217 + // if (code) {
1218 - updateFlowId(data); // 更新缓存flow_id 1218 + // updateFlowId(data); // 更新缓存flow_id
1219 - console.log('满足条件的路径', paths); // 输出满足条件的路径结果数组 1219 + // console.log('满足条件的路径', paths); // 输出满足条件的路径结果数组
1220 - } 1220 + // }
1221 - } else { 1221 + // } else {
1222 - ElNotification.error('缺少一条从开始节点到结束节点的完整流程!'); 1222 + // ElNotification.error('缺少一条从开始节点到结束节点的完整流程!');
1223 - } 1223 + // }
1224 } 1224 }
1225 /******************* END *******************/ 1225 /******************* END *******************/
1226 1226
...@@ -1234,6 +1234,7 @@ export default { ...@@ -1234,6 +1234,7 @@ export default {
1234 updateModel: (arg0: any) => void 1234 updateModel: (arg0: any) => void
1235 editorState: { 1235 editorState: {
1236 graph: { 1236 graph: {
1237 + addItem: any
1237 removeItem: any 1238 removeItem: any
1238 save: () => { nodes: any; edges: any } 1239 save: () => { nodes: any; edges: any }
1239 read: any 1240 read: any
...@@ -1276,6 +1277,7 @@ export default { ...@@ -1276,6 +1277,7 @@ export default {
1276 state.detailModel = model; 1277 state.detailModel = model;
1277 1278
1278 state.search_auth_value = ''; 1279 state.search_auth_value = '';
1280 + // 清空全选状态
1279 state.auth_all_checked = false; 1281 state.auth_all_checked = false;
1280 state.auth_all_edit = false; 1282 state.auth_all_edit = false;
1281 1283
...@@ -1401,26 +1403,17 @@ export default { ...@@ -1401,26 +1403,17 @@ export default {
1401 1403
1402 editor.openModel(); 1404 editor.openModel();
1403 1405
1404 - // // 储存原始节点属性
1405 - // state.node_attr = {
1406 - // name: _.cloneDeep(state.node_name),
1407 - // user: _.cloneDeep(state.userTags),
1408 - // field: _.cloneDeep(state.field_extend),
1409 - // property: _.cloneDeep(state.more_attr)
1410 - // }
1411 -
1412 // 临时保存树信息 1406 // 临时保存树信息
1413 setNodeTree(model.id, 1407 setNodeTree(model.id,
1414 { 1408 {
1415 name: _.cloneDeep(state.node_name), 1409 name: _.cloneDeep(state.node_name),
1416 user: model_id === 'start-node' ? '' : _.cloneDeep(state.userTags), // 开始节点没有负责人 1410 user: model_id === 'start-node' ? '' : _.cloneDeep(state.userTags), // 开始节点没有负责人
1417 - field_auths: _.cloneDeep(state.field_auths), 1411 + field_auths: _.cloneDeep(state.field_auths), // 页面显示结构
1418 - field_extend: _.cloneDeep(state.field_extend), 1412 + field_extend: _.cloneDeep(state.field_extend), // 后端使用结构
1419 property: _.cloneDeep(state.more_attr), 1413 property: _.cloneDeep(state.more_attr),
1420 model 1414 model
1421 } 1415 }
1422 ); 1416 );
1423 -
1424 } else { 1417 } else {
1425 state.statusLoading = false; 1418 state.statusLoading = false;
1426 } 1419 }
...@@ -1512,10 +1505,12 @@ export default { ...@@ -1512,10 +1505,12 @@ export default {
1512 state.main_attr_set = true; 1505 state.main_attr_set = true;
1513 } 1506 }
1514 1507
1515 - const checkSaveNodeTree = () => { // 检查点击过的节点是否有问题 1508 + const checkNodeTree = () => { // 检查点击过的节点是否有问题
1516 let { nodes } = editor.editorState.graph.save(); 1509 let { nodes } = editor.editorState.graph.save();
1517 1510
1518 let models = []; // 未通过的节点ID集合 1511 let models = []; // 未通过的节点ID集合
1512 + console.warn('state.node_tree', state.node_tree);
1513 +
1519 for (const key in state.node_tree) { 1514 for (const key in state.node_tree) {
1520 const element = state.node_tree[key]; 1515 const element = state.node_tree[key];
1521 let avail_visible_count = element.field_auths.filter((ele) => { 1516 let avail_visible_count = element.field_auths.filter((ele) => {
...@@ -1530,13 +1525,15 @@ export default { ...@@ -1530,13 +1525,15 @@ export default {
1530 }); 1525 });
1531 1526
1532 if ( 1527 if (
1533 - (element.name === '') || 1528 + (element.name === '') || // 节点名称为空
1534 (key !=='start-node' && !element.user.length) || // 开始节点不需要检查负责人 1529 (key !=='start-node' && !element.user.length) || // 开始节点不需要检查负责人
1535 - (avail_visible_count.length === 0 && avail_editable_count.length === 0) 1530 + (avail_visible_count.length === 0 && avail_editable_count.length === 0) // 可见和可编辑都为空
1536 - ) { // 节点名称为空, 节点负责人不能为空, 请至少选择一个字段权限 1531 + )
1532 + {
1537 models.push(element.model); 1533 models.push(element.model);
1538 } 1534 }
1539 } 1535 }
1536 + console.warn(models);
1540 1537
1541 if (models.length) { 1538 if (models.length) {
1542 ElMessage({ 1539 ElMessage({
...@@ -1642,68 +1639,6 @@ export default { ...@@ -1642,68 +1639,6 @@ export default {
1642 } 1639 }
1643 1640
1644 /** 1641 /**
1645 - * 保存表单信息
1646 - *
1647 - */
1648 - // async function saveForm() {
1649 - // if (state.node_name === '') {
1650 - // ElMessage({
1651 - // type: 'error',
1652 - // message: '节点名称不能为空',
1653 - // });
1654 - // return;
1655 - // }
1656 - // if (state.detailModel.id !== 'start-node' && state.userTags.length === 0) {
1657 - // ElMessage({
1658 - // type: 'error',
1659 - // message: '节点负责人不能为空',
1660 - // });
1661 - // return;
1662 - // }
1663 - // let avail_visible_count = state.field_auths.filter((ele) => {
1664 - // if (ele.visible.checked && !ele.visible.disabled) {
1665 - // return ele;
1666 - // }
1667 - // });
1668 - // let avail_editable_count = state.field_auths.filter((ele) => {
1669 - // if (ele.editable.checked && !ele.editable.disabled) {
1670 - // return ele;
1671 - // }
1672 - // });
1673 - // if (avail_visible_count.length === 0 && avail_editable_count.length === 0) {
1674 - // ElMessage({
1675 - // type: 'error',
1676 - // message: '请至少选择一个字段权限',
1677 - // });
1678 - // return;
1679 - // }
1680 - // // 调整数据结构
1681 - // state.field_extend.forEach(ele => {
1682 - // state.field_auths.forEach(auth => {
1683 - // if (ele.field_id === auth.field_id) {
1684 - // ele.field_extend.visibled = auth.visible.checked;
1685 - // ele.field_extend.editabled = auth.editable.checked;
1686 - // ele.field_extend.readonly = auth.editable.disabled;
1687 - // }
1688 - // })
1689 - // });
1690 -
1691 - // let flow_id = getFlowId(); // 流程id
1692 - // console.warn(state.node_tree);
1693 - // // TAG: 保存表单信息
1694 - // const { code, data } = await saveFlowNodePropertyAPI({ flow_id: +flow_id, node_code: state.detailModel.id, data: JSON.stringify({ name: state.node_name, user: state.userTags, field: state.field_extend, property: state.more_attr }) })
1695 - // if (code) {
1696 - // ElMessage({
1697 - // type:'success',
1698 - // message: '保存成功',
1699 - // });
1700 - // state.detailModel.text = state.node_name; // 更新节点名称显示
1701 - // editor.updateModel(state.detailModel); // 更新流程图信息
1702 - // editor.closeModel();
1703 - // }
1704 - // }
1705 -
1706 - /**
1707 * 删除前校验 1642 * 删除前校验
1708 * 1643 *
1709 * @param {Object} model - The model object. 1644 * @param {Object} model - The model object.
...@@ -1884,20 +1819,6 @@ export default { ...@@ -1884,20 +1819,6 @@ export default {
1884 editor.closeModel() 1819 editor.closeModel()
1885 } 1820 }
1886 1821
1887 - // const checkFormEdited = () => { // 检查表单是否修改过内容
1888 - // state.field_extend.forEach(ele => {
1889 - // state.field_auths.forEach(auth => {
1890 - // if (ele.field_id === auth.field_id) {
1891 - // ele.field_extend.visibled = auth.visible.checked;
1892 - // ele.field_extend.editabled = auth.editable.checked;
1893 - // ele.field_extend.readonly = auth.editable.disabled;
1894 - // }
1895 - // })
1896 - // });
1897 -
1898 - // return _.isEqual(state.node_attr, {name: state.node_name, user: state.userTags, field: state.field_extend, property: state.more_attr})
1899 - // }
1900 -
1901 /** 1822 /**
1902 * 拖动节点结束回调 1823 * 拖动节点结束回调
1903 * 1824 *
...@@ -1909,14 +1830,22 @@ export default { ...@@ -1909,14 +1830,22 @@ export default {
1909 1830
1910 const copyData = () => { // 复制节点回调 1831 const copyData = () => { // 复制节点回调
1911 if (state.detailModel.control !== 'start' && state.detailModel.control !== 'end') { 1832 if (state.detailModel.control !== 'start' && state.detailModel.control !== 'end') {
1833 + let copy_node = _.cloneDeep(state.node_tree[state.detailModel.id]); // 复制节点的属性
1834 + // delete copy_node.model;
1912 editor.clearStates(state.detailModel.id); // 清除选中节点的状态 1835 editor.clearStates(state.detailModel.id); // 清除选中节点的状态
1913 - state.detailModel.id = uuidv4(); // ID需要重新生成 1836 + let id = uuidv4(); // ID需要重新生成
1914 - state.detailModel.y = state.detailModel.y + 50 1837 + // state.detailModel.y = state.detailModel.y + 50
1915 - editor.addNode(state.detailModel); 1838 + // 新节点的属性
1839 + copy_node['model']['id'] = id;
1840 + copy_node['model']['y'] = state.detailModel.y + 50;
1841 + state.node_tree[id] = copy_node; // 新节点放到缓存中
1842 +
1843 + editor.addNode(copy_node['model']);
1916 editor.closeModel(); 1844 editor.closeModel();
1917 // 保存流程图数据 1845 // 保存流程图数据
1918 flowData.value.nodes = editor.editorState.graph.save().nodes 1846 flowData.value.nodes = editor.editorState.graph.save().nodes
1919 flowData.value.edges = editor.editorState.graph.save().edges 1847 flowData.value.edges = editor.editorState.graph.save().edges
1848 +
1920 } else { 1849 } else {
1921 ElNotification.error('开始或者结束节点不可以复制') 1850 ElNotification.error('开始或者结束节点不可以复制')
1922 } 1851 }
...@@ -1931,6 +1860,8 @@ export default { ...@@ -1931,6 +1860,8 @@ export default {
1931 // 清空错误提示 1860 // 清空错误提示
1932 let { nodes } = editor.editorState.graph.save(); 1861 let { nodes } = editor.editorState.graph.save();
1933 1862
1863 + console.warn(nodes);
1864 +
1934 nodes.forEach((ele: any, idx: number) => { 1865 nodes.forEach((ele: any, idx: number) => {
1935 ele.desc = ''; 1866 ele.desc = '';
1936 editor.updateModel(ele); // 更新流程图信息 1867 editor.updateModel(ele); // 更新流程图信息
...@@ -1966,10 +1897,12 @@ export default { ...@@ -1966,10 +1897,12 @@ export default {
1966 } 1897 }
1967 1898
1968 // 节点点击后,使用本地数据检查 1899 // 节点点击后,使用本地数据检查
1969 - if (checkSaveNodeTree().length) { 1900 + if (checkNodeTree().length) {
1970 return; 1901 return;
1971 } 1902 }
1972 1903
1904 +
1905 +
1973 // TAG: 检查节点是否完整 1906 // TAG: 检查节点是否完整
1974 const checkResult = await checkAllFlowNodePropertyAPI({ flow_id: +flow_id }) 1907 const checkResult = await checkAllFlowNodePropertyAPI({ flow_id: +flow_id })
1975 if (checkResult.code) { 1908 if (checkResult.code) {
......