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