From 3f3817a39238b262155cd5ec76fa351bb344602d Mon Sep 17 00:00:00 2001 From: Ben Lin <maobin001@msn.com> Date: 星期三, 01 一月 2025 21:33:57 +0800 Subject: [PATCH] 打印工单流程卡 --- src/views/tigerprojects/mes/eng/route/index.vue | 455 ++++++++++++++++++++++++++++++++++---------------------- 1 files changed, 277 insertions(+), 178 deletions(-) diff --git a/src/views/tigerprojects/mes/eng/route/index.vue b/src/views/tigerprojects/mes/eng/route/index.vue index 36db057..3d8a93c 100644 --- a/src/views/tigerprojects/mes/eng/route/index.vue +++ b/src/views/tigerprojects/mes/eng/route/index.vue @@ -8,6 +8,8 @@ @add-lf="handleAddlf" @select-node="handleSelect" @click-blank="clickBlank" + @anchor-drop="AnchorDrop" + @anchor-dragend="AnchorDragend" @init="init" /> </LayoutContent> @@ -127,7 +129,7 @@ let _num = 1; let _numEdge = 1; watch( - [() => props.rotId,()=> props.prodCode, () => props.custCode], + [() => props.rotId, () => props.prodCode, () => props.custCode], (v) => { if (!isNullOrEmpty(v[0]) && v[0] !== currRotId.value) { currRotId.value = v[0]; @@ -176,11 +178,15 @@ if (!isNullOrEmpty(currRotId.value) && isNullOrEmpty(props.rotId)) { setTitle('璁捐锛氬伐鑹鸿矾绾�-' + currRoute.value.ROT_CODE); } - if(!isNullOrEmpty(prodCode.value)){ - currRoute.value.PROD_CODE = !isNullOrEmpty(currRoute.value.PROD_CODE)?currRoute.value.PROD_CODE: prodCode.value; + if (!isNullOrEmpty(prodCode.value)) { + currRoute.value.PROD_CODE = !isNullOrEmpty(currRoute.value.PROD_CODE) + ? currRoute.value.PROD_CODE + : prodCode.value; } - if(!isNullOrEmpty(custCode.value)){ - currRoute.value.CUST_CODE = !isNullOrEmpty(currRoute.value.CUST_CODE)?currRoute.value.CUST_CODE: custCode.value; + if (!isNullOrEmpty(custCode.value)) { + currRoute.value.CUST_CODE = !isNullOrEmpty(currRoute.value.CUST_CODE) + ? currRoute.value.CUST_CODE + : custCode.value; } _data.Data.nodes.forEach((n) => { n.node.properties = JSON.parse(n.node.properties); @@ -226,7 +232,7 @@ AUTH_WH: '', WORK_ORDER: currRoute.value.WORK_ORDER, PROD_CODE: currRoute.value.PROD_CODE, - CUST_CODE: currRoute.value.CUST_CODE, + CUST_CODE: '', }, nodes: [], edges: [], @@ -296,6 +302,15 @@ }); routeConfig.routeData.acts = _diffacts; } else { + let _nodeName = ''; + switch (n.properties.operType) { + case 'End': + _nodeName = `${n.text.value}`; + break; + default: + _nodeName = `${n.text.value}_${_num}`; + break; + } var _diffnodes = diffnodes.length > 0 ? diffnodes : routeConfig.routeData.nodes; _diffnodes.forEach((nd) => { if (nd.ID == n.id) { @@ -306,10 +321,10 @@ UPDATE_TIME: currRotData.route.UPDATE_TIME, UPDATE_USER: useUserStore().getUserInfo.userId as string, GHOST_ROW: false, - NODE_NAME: isNullOrEmpty(nd.NODE_NAME) ? `${n.text.value}_${_num}` : nd.NODE_NAME, + NODE_NAME: isNullOrEmpty(nd.NODE_NAME) ? _nodeName : nd.NODE_NAME, ROT_ID: currRotData.route.ID, SEGMENT: nd.SEGMENT, - OPER_CODE: isNullOrEmpty(nd.OPER_CODE) ? n.type : nd.OPER_CODE, + OPER_CODE: isNullOrEmpty(nd.OPER_CODE) ? n.properties.operCode : nd.OPER_CODE, GPH_TYPE: n.type, GPH_X: n.x, GPH_Y: n.y, @@ -344,6 +359,8 @@ if (unref(lf).getNodeIncomingNode(n.id).length == 0) { node.IS_FIRST_NODE = 'Y'; nd.IS_FIRST_NODE = 'Y'; + node.IS_INPUT = 'Y'; + nd.IS_INPUT = 'Y'; } currRotData.nodes.push(node); } @@ -410,20 +427,34 @@ }); } else { var hasError = false; + let msg = ''; unref(lf) .getGraphData() .nodes.forEach((n) => { + /* 鍒ゆ柇鏄惁鏈塏ode鏈繛鎺� */ if ( unref(lf).getNodeIncomingEdge(n.id).length == 0 && unref(lf).getNodeOutgoingEdge(n.id).length == 0 ) { hasError = true; + msg = '鏈夎妭鐐规湭杩炵嚎锛岃閲嶆柊璁捐宸ヨ壓璺嚎鍐嶄繚瀛樻暟鎹紒'; + } + if ( + unref(lf) + .getNodeOutgoingNode(n.id) + .some((q) => q.properties.operType == 'End') && + unref(lf) + .getNodeOutgoingNode(n.id) + .some((q) => q.properties.operType != 'End' && q.properties.operType != 'Action') + ) { + hasError = true; + msg = '瀹屽伐鑺傜偣涓嶆槸鍞竴鐨勬渶鍚庤妭鐐癸紝璇烽噸鏂拌璁″伐鑹鸿矾绾垮啀淇濆瓨鏁版嵁锛�'; } }); if (hasError) { createErrorModal({ title: t('璀﹀憡'), - content: t('鏈夎妭鐐规湭杩炵嚎锛岃閲嶆柊璁捐宸ヨ壓璺嚎鍐嶄繚瀛樻暟鎹紒'), + content: t(msg), getContainer: () => document.body, }); } else { @@ -458,98 +489,162 @@ function handleSelect(data, lf) { lf.graphModel.clearSelectElements(); lf.graphModel.getNodeModelById(data.data.id).setSelected(true); + let nnn = lf.graphModel.getNodeIncomingNode(data.data.id); selectnode.value = data.data; - if (isNullOrUnDef(routeConfig.routeData)) { - //鍏堝垵濮嬪寲routeData - routeConfig.routeData = {}; - routeConfig.routeData.route = currRoute.value; - routeConfig.routeData.nodes = []; - routeConfig.routeData.edges = []; - routeConfig.routeData.acts = []; - //鍐嶈繑鍥炲叿浣撴暟鎹� - routeConfig.routeData = GetRotData(lf); - } - - var _node = routeConfig.routeData.nodes.filter((x) => x.ID == selectnode.value.id)[0]; - if (isNullOrUnDef(_node)) { - _node = { - ID: selectnode.value.id, - CREATE_TIME: currRoute.value.CREATE_TIME, - CREATE_USER: useUserStore().getUserInfo.userId as string, - UPDATE_TIME: currRoute.value.UPDATE_TIME, - UPDATE_USER: useUserStore().getUserInfo.userId as string, - GHOST_ROW: false, - NODE_NAME: `${selectnode.value.text.value}_${_num}`, - ROT_ID: currRoute.value.ID, - SEGMENT: '', - OPER_CODE: selectnode.value.type, - GPH_TYPE: selectnode.value.type, - GPH_X: selectnode.value.x, - GPH_Y: selectnode.value.y, - GPH_PROP: '', - GPH_TEXT: selectnode.value.text.value, - IS_ACTIVE: 'Y', - IS_CALC_FPY: 'N', - CAN_SKIP: 'N', - REMARK: '', - AUTH_ORG: useUserStore().getUserInfo.orgCode, - AUTH_PROD: '', - AUTH_WH: '', - IS_FIRST_NODE: '', - ALLOW_DFT_IN: '', - IS_INPUT: '', - IS_OUTPUT: '', - OPTION_1: '', - OPTION_2: '', - OPTION_3: '', - OPTION_4: '', - OPTION_5: '', - node: {} as node, - WORK_ORDER: currRoute.value.WORK_ORDER, - PROD_CODE: currRoute.value.PROD_CODE, - CUST_CODE: currRoute.value.CUST_CODE, - }; - routeConfig.routeData.nodes.push(_node); - _num++; - } - //鏄涓� if ( - selectnode.value.properties['operType'] && - selectnode.value.properties['operType'] == 'Action' + unref(lf) + .getGraphData() + .nodes.some((q) => q.properties.operCode == 'EndNode' && q.id != selectnode.value.id) && + selectnode.value.properties.operType == 'End' ) { - var _act = routeConfig.routeData.acts.filter((x) => x.ID == selectnode.value.id)[0]; - routeConfig.activeKey = 2; - IsOperation.value = false; - title.value = '琛屼负'; - posttitle.value = ''; - if (isNullOrUnDef(_act)) { - _act = { + lf.graphModel.deleteNode(selectnode.value.id); + createErrorModal({ + title: t('璀﹀憡'), + content: t('宸茬粡瀛樺湪瀹屽伐鑺傜偣锛屼笉鑳藉啀鎷栧叆瀹屽伐鑺傜偣锛�'), + getContainer: () => document.body, + }); + } else { + if (isNullOrUnDef(routeConfig.routeData)) { + //鍏堝垵濮嬪寲routeData + routeConfig.routeData = {}; + routeConfig.routeData.route = currRoute.value; + routeConfig.routeData.nodes = []; + routeConfig.routeData.edges = []; + routeConfig.routeData.acts = []; + //鍐嶈繑鍥炲叿浣撴暟鎹� + routeConfig.routeData = GetRotData(lf); + } + + var _node = routeConfig.routeData.nodes.filter((x) => x.ID == selectnode.value.id)[0]; + if (isNullOrUnDef(_node)) { + let _nodeName = ''; + switch (selectnode.value.properties.operType) { + case 'End': + _nodeName = `${selectnode.value.text.value}`; + break; + default: + _nodeName = `${selectnode.value.text.value}_${_num}`; + break; + } + _node = { ID: selectnode.value.id, CREATE_TIME: currRoute.value.CREATE_TIME, CREATE_USER: useUserStore().getUserInfo.userId as string, UPDATE_TIME: currRoute.value.UPDATE_TIME, UPDATE_USER: useUserStore().getUserInfo.userId as string, GHOST_ROW: false, - AUTH_ORG: useUserStore().getUserInfo.orgCode, - AUTH_PROD: '', - AUTH_WH: '', - ACT_NAME: `${selectnode.value.text.value}_${_numEdge}`, - ACT_CODE: '', + NODE_NAME: _nodeName, ROT_ID: currRoute.value.ID, - NODE_ID: '', - ACT_TYPE: 0, + SEGMENT: '', + OPER_CODE: selectnode.value.properties.operCode, GPH_TYPE: selectnode.value.type, GPH_X: selectnode.value.x, GPH_Y: selectnode.value.y, GPH_PROP: JSON.stringify(selectnode.value.properties), GPH_TEXT: selectnode.value.text.value, - NEED_SETUP: 'Y', - NEED_RESET: 'N', - // DO_TYPE: 0, - // DO_METHOD: '', - // DO_IF_PASS: '', - // DO_IF_FAIL: '', - IS_ACTIVE: '', + IS_ACTIVE: 'Y', + IS_CALC_FPY: 'N', + CAN_SKIP: 'N', + REMARK: '', + AUTH_ORG: useUserStore().getUserInfo.orgCode, + AUTH_PROD: '', + AUTH_WH: '', + IS_FIRST_NODE: '', + ALLOW_DFT_IN: '', + IS_INPUT: '', + IS_OUTPUT: '', + OPTION_1: '', + OPTION_2: '', + OPTION_3: '', + OPTION_4: '', + OPTION_5: '', + node: {} as node, + WORK_ORDER: currRoute.value.WORK_ORDER, + PROD_CODE: currRoute.value.PROD_CODE, + CUST_CODE: '', + }; + routeConfig.routeData.nodes.push(_node); + _num++; + } + //鏄涓� + if ( + selectnode.value.properties['operType'] && + selectnode.value.properties['operType'] == 'Action' + ) { + var _act = routeConfig.routeData.acts.filter((x) => x.ID == selectnode.value.id)[0]; + routeConfig.activeKey = 2; + IsOperation.value = false; + title.value = '琛屼负'; + posttitle.value = ''; + if (isNullOrUnDef(_act)) { + _act = { + ID: selectnode.value.id, + CREATE_TIME: currRoute.value.CREATE_TIME, + CREATE_USER: useUserStore().getUserInfo.userId as string, + UPDATE_TIME: currRoute.value.UPDATE_TIME, + UPDATE_USER: useUserStore().getUserInfo.userId as string, + GHOST_ROW: false, + AUTH_ORG: useUserStore().getUserInfo.orgCode, + AUTH_PROD: '', + AUTH_WH: '', + ACT_NAME: `${selectnode.value.text.value}_${_numEdge}`, + ACT_CODE: '', + ROT_ID: currRoute.value.ID, + NODE_ID: '', + ACT_TYPE: 0, + GPH_TYPE: selectnode.value.type, + GPH_X: selectnode.value.x, + GPH_Y: selectnode.value.y, + GPH_PROP: JSON.stringify(selectnode.value.properties), + GPH_TEXT: selectnode.value.text.value, + NEED_SETUP: 'Y', + NEED_RESET: 'N', + // DO_TYPE: 0, + // DO_METHOD: '', + // DO_IF_PASS: '', + // DO_IF_FAIL: '', + IS_ACTIVE: '', + OPTION_1: '', + OPTION_2: '', + OPTION_3: '', + OPTION_4: '', + OPTION_5: '', + REMARK: '', + node: {} as node, + WORK_ORDER: currRoute.value.WORK_ORDER, + PROD_CODE: currRoute.value.PROD_CODE, + CUST_CODE: '', + }; + routeConfig.routeData.acts.push(_act); + _numEdge++; + } + routeConfig.currentAct = { + ID: selectnode.value.id, + CREATE_TIME: currRoute.value.CREATE_TIME, + CREATE_USER: useUserStore().getUserInfo.userId as string, + UPDATE_TIME: currRoute.value.UPDATE_TIME, + UPDATE_USER: useUserStore().getUserInfo.userId as string, + GHOST_ROW: false, + AUTH_ORG: _act.AUTH_ORG, + AUTH_PROD: _act.AUTH_PROD, + AUTH_WH: _act.AUTH_WH, + ACT_NAME: _act.ACT_NAME, + ACT_CODE: _act.ACT_CODE, + ROT_ID: currRoute.value.ID, + NODE_ID: _act.NODE_ID, + ACT_TYPE: _act.ACT_TYPE, + GPH_TYPE: selectnode.value.type, + GPH_X: selectnode.value.x, + GPH_Y: selectnode.value.y, + GPH_PROP: JSON.stringify(selectnode.value.properties), + GPH_TEXT: selectnode.value.text.value, + NEED_SETUP: _act.NEED_SETUP, + NEED_RESET: _act.NEED_RESET, + // DO_TYPE: _act.DO_TYPE, + // DO_METHOD: _act.DO_METHOD, + // DO_IF_PASS: _act.DO_IF_PASS, + // DO_IF_FAIL: _act.DO_IF_FAIL, + IS_ACTIVE: _act.IS_ACTIVE, OPTION_1: '', OPTION_2: '', OPTION_3: '', @@ -559,100 +654,60 @@ node: {} as node, WORK_ORDER: currRoute.value.WORK_ORDER, PROD_CODE: currRoute.value.PROD_CODE, - CUST_CODE: currRoute.value.CUST_CODE, + CUST_CODE: '', }; - routeConfig.routeData.acts.push(_act); - _numEdge++; + const actModel = lf.getNodeModelById(selectnode.value.id); + actModel.updateText(routeConfig.currentAct?.ACT_NAME); + } else { + //鏄伐搴� + IsOperation.value = false; + routeConfig.currentItem = { + ID: selectnode.value.id, + CREATE_TIME: currRoute.value.CREATE_TIME, + CREATE_USER: useUserStore().getUserInfo.userId as string, + UPDATE_TIME: currRoute.value.UPDATE_TIME, + UPDATE_USER: useUserStore().getUserInfo.userId as string, + GHOST_ROW: false, + AUTH_ORG: _node.AUTH_ORG, + AUTH_PROD: _node.AUTH_PROD, + AUTH_WH: _node.AUTH_WH, + NODE_NAME: _node.NODE_NAME ?? '', + ROT_ID: currRoute.value.ID, + SEGMENT: _node.SEGMENT, + OPER_CODE: selectnode.value.properties.operCode, + GPH_TYPE: selectnode.value.type, + GPH_X: selectnode.value.x, + GPH_Y: selectnode.value.y, + GPH_PROP: JSON.stringify(selectnode.value.properties), + GPH_TEXT: selectnode.value.text.value, + IS_ACTIVE: _node.IS_ACTIVE, + IS_CALC_FPY: _node.IS_CALC_FPY, + CAN_SKIP: _node.CAN_SKIP, + IS_INPUT: _node.IS_INPUT, + ALLOW_DFT_IN: _node.ALLOW_DFT_IN, + IS_OUTPUT: _node.IS_OUTPUT, + REMARK: _node.REMARK, + WORK_ORDER: currRoute.value.WORK_ORDER, + PROD_CODE: currRoute.value.PROD_CODE, + CUST_CODE: '', + node: {} as node, + }; + const nodeModel = lf.getNodeModelById(selectnode.value.id); + nodeModel.updateText(_node.NODE_NAME); + routeConfig.isCalcFpy = _node.IS_CALC_FPY == 'Y'; + routeConfig.canSkip = _node.CAN_SKIP == 'Y'; + routeConfig.isActive = _node.IS_ACTIVE == 'Y'; + routeConfig.allowDftIn = _node.ALLOW_DFT_IN == 'Y'; + routeConfig.isInput = _node.IS_INPUT == 'Y'; + routeConfig.isOutput = _node.IS_OUTPUT == 'Y'; + setTimeout(() => { + console.log(routeConfig.currentItem); + routeConfig.activeKey = 2; + IsOperation.value = true; + title.value = '宸ュ簭'; + posttitle.value = '宀椾綅'; + }, 100); } - routeConfig.currentAct = { - ID: selectnode.value.id, - CREATE_TIME: currRoute.value.CREATE_TIME, - CREATE_USER: useUserStore().getUserInfo.userId as string, - UPDATE_TIME: currRoute.value.UPDATE_TIME, - UPDATE_USER: useUserStore().getUserInfo.userId as string, - GHOST_ROW: false, - AUTH_ORG: _act.AUTH_ORG, - AUTH_PROD: _act.AUTH_PROD, - AUTH_WH: _act.AUTH_WH, - ACT_NAME: _act.ACT_NAME, - ACT_CODE: _act.ACT_CODE, - ROT_ID: currRoute.value.ID, - NODE_ID: _act.NODE_ID, - ACT_TYPE: _act.ACT_TYPE, - GPH_TYPE: selectnode.value.type, - GPH_X: selectnode.value.x, - GPH_Y: selectnode.value.y, - GPH_PROP: JSON.stringify(selectnode.value.properties), - GPH_TEXT: selectnode.value.text.value, - NEED_SETUP: _act.NEED_SETUP, - NEED_RESET: _act.NEED_RESET, - // DO_TYPE: _act.DO_TYPE, - // DO_METHOD: _act.DO_METHOD, - // DO_IF_PASS: _act.DO_IF_PASS, - // DO_IF_FAIL: _act.DO_IF_FAIL, - IS_ACTIVE: _act.IS_ACTIVE, - OPTION_1: '', - OPTION_2: '', - OPTION_3: '', - OPTION_4: '', - OPTION_5: '', - REMARK: '', - node: {} as node, - WORK_ORDER: currRoute.value.WORK_ORDER, - PROD_CODE: currRoute.value.PROD_CODE, - CUST_CODE: currRoute.value.CUST_CODE, - }; - const actModel = lf.getNodeModelById(selectnode.value.id); - actModel.updateText(routeConfig.currentAct?.ACT_NAME); - } else { - //鏄伐搴� - IsOperation.value = false; - routeConfig.currentItem = { - ID: selectnode.value.id, - CREATE_TIME: currRoute.value.CREATE_TIME, - CREATE_USER: useUserStore().getUserInfo.userId as string, - UPDATE_TIME: currRoute.value.UPDATE_TIME, - UPDATE_USER: useUserStore().getUserInfo.userId as string, - GHOST_ROW: false, - AUTH_ORG: _node.AUTH_ORG, - AUTH_PROD: _node.AUTH_PROD, - AUTH_WH: _node.AUTH_WH, - NODE_NAME: _node.NODE_NAME ?? '', - ROT_ID: currRoute.value.ID, - SEGMENT: _node.SEGMENT, - OPER_CODE: _node.OPER_CODE, - GPH_TYPE: selectnode.value.type, - GPH_X: selectnode.value.x, - GPH_Y: selectnode.value.y, - GPH_PROP: '', - GPH_TEXT: selectnode.value.text.value, - IS_ACTIVE: _node.IS_ACTIVE, - IS_CALC_FPY: _node.IS_CALC_FPY, - CAN_SKIP: _node.CAN_SKIP, - IS_INPUT: _node.IS_INPUT, - ALLOW_DFT_IN: _node.ALLOW_DFT_IN, - IS_OUTPUT: _node.IS_OUTPUT, - REMARK: _node.REMARK, - WORK_ORDER: currRoute.value.WORK_ORDER, - PROD_CODE: currRoute.value.PROD_CODE, - CUST_CODE: currRoute.value.CUST_CODE, - node: {} as node, - }; - const nodeModel = lf.getNodeModelById(selectnode.value.id); - nodeModel.updateText(_node.NODE_NAME); - routeConfig.isCalcFpy = _node.IS_CALC_FPY == 'Y'; - routeConfig.canSkip = _node.CAN_SKIP == 'Y'; - routeConfig.isActive = _node.IS_ACTIVE == 'Y'; - routeConfig.allowDftIn = _node.ALLOW_DFT_IN == 'Y'; - routeConfig.isInput = _node.IS_INPUT == 'Y'; - routeConfig.isOutput = _node.IS_OUTPUT == 'Y'; - setTimeout(() => { - console.log(routeConfig.currentItem); - routeConfig.activeKey = 2; - IsOperation.value = true; - title.value = '宸ュ簭'; - posttitle.value = '宀椾綅'; - }, 100); } } @@ -660,6 +715,50 @@ unref(lfInstance).render({}); } + /** + * @description: 鎷栧姩杈规斁寮�鏃朵簨浠� + * @param {*} data + * @param {*} lf + * @return {*} + */ + function AnchorDrop(data, lf) { + let targetNode = lf.graphModel.getNodeModelById(data.edgeModel.targetNodeId); + if (targetNode.properties['operType'] == 'End') { + if (data.nodeModel.properties['operType'] == 'Action') { + lf.graphModel.deleteEdgeById(data.edgeModel.id); + createErrorModal({ + title: t('璀﹀憡'), + content: t('琛屼负鑺傜偣涓嶈兘杩炴帴瀹屽伐鑺傜偣锛�'), + getContainer: () => document.body, + }); + } else { + if ( + unref(lf).getNodeIncomingNode(data.nodeModel.id).length == 0 && + unref(lf) + .getNodeOutgoingNode(data.nodeModel.id) + .some((q) => q.properties.operType == 'Node') + ) { + lf.graphModel.deleteEdgeById(data.edgeModel.id); + createErrorModal({ + title: t('璀﹀憡'), + content: t('寮�濮嬭妭鐐逛笉鑳界洿鎺ヨ繛鎺ュ畬宸ヨ妭鐐癸紒'), + getContainer: () => document.body, + }); + } + } + } + } + + /** + * @description: 閿氱偣杩炵嚎缁撴潫锛屼笉绠℃槸鍚﹀垱寤鸿繛绾块兘浼氳Е鍙戙�� + * @param {*} data + * @param {*} e + * @param {*} nodeModel + * @param {*} lf + * @return {*} + */ + function AnchorDragend(data, e, nodeModel, lf) {} + /* *鐐瑰嚮鐢诲竷浜嬩欢 */ -- Gitblit v1.9.3