From 6e6fec028ffc9a27b3c8d30eb484cd361a119d76 Mon Sep 17 00:00:00 2001
From: Ben Lin <maobin001@msn.com>
Date: 星期一, 25 十一月 2024 23:53:12 +0800
Subject: [PATCH] 入库单更新

---
 src/views/tigerprojects/system/lowcode/entityts/ProdRouteBinding.ts | 1827 +++++++++++++++++++++++++++++++++++++++++++++++++---------
 1 files changed, 1,535 insertions(+), 292 deletions(-)

diff --git a/src/views/tigerprojects/system/lowcode/entityts/ProdRouteBinding.ts b/src/views/tigerprojects/system/lowcode/entityts/ProdRouteBinding.ts
index 69b5dd5..0a11ed7 100644
--- a/src/views/tigerprojects/system/lowcode/entityts/ProdRouteBinding.ts
+++ b/src/views/tigerprojects/system/lowcode/entityts/ProdRouteBinding.ts
@@ -1,14 +1,21 @@
+/* eslint-disable no-var */
+/* eslint-disable no-fallthrough */
 /*
  * @Description: 浜у搧宸ヨ壓璺嚎鐩稿叧
  * @Author: Ben Lin
  * @version:
  * @Date: 2024-06-19 20:34:27
  * @LastEditors: Ben Lin
- * @LastEditTime: 2024-06-27 19:19:49
+ * @LastEditTime: 2024-10-24 01:21:57
  */
 
-import { Ref, ref, unref } from 'vue';
-import { GetRoutePTree, RouteToCust, RouteToProd } from '/@/api/tigerapi/mes/router';
+import { Ref, unref } from 'vue';
+import {
+  DeleteProdRoute,
+  GetRoutePTree,
+  RouteToCust,
+  RouteToProd,
+} from '/@/api/tigerapi/mes/router';
 import { GetEnum, SaveEntity, convertToTree, getEntity } from '/@/api/tigerapi/system';
 import { useLocale } from '/@/locales/useLocale';
 import { isNullOrEmpty, isNullOrUnDef } from '/@/utils/is';
@@ -16,12 +23,25 @@
 import { NavItem } from '/@/api/tigerapi/model/basModel';
 import { useMessage } from '/@/hooks/web/useMessage';
 import { useModal } from '/@/components/Modal';
-import { V_MES_ROUTE_PTREE } from '/@/api/tigerapi/model/router';
+import { ActionItem, BasicColumn, FormSchema, useTable } from '/@/components/Table';
+import { CustModalParams } from '/@/api/tigerapi/model/systemModel';
+import { useUserStore } from '/@/store/modules/user';
+import { EventDataNode } from 'ant-design-vue/lib/tree';
+import { ContextMenuItem } from '/@/components/TigerTree';
+import { useForm } from '/@/components/Form';
+import { mesApi } from '/@/api/tigerapi/mes/mesApi';
+import { BAS_LABEL_VAR_WO, MesRotTree } from '/@/api/tigerapi/model/mesModel';
+import { buildUUID } from '/@/utils/uuid';
+import { AddOrEditLabelVarByWorkOrder } from '/@/api/tigerapi/mes/wo';
+import { useProdRouteStore } from '/@/store/modules/prodRoute';
+import { useWebSocketStore } from '/@/store/modules/websocket';
 
 const { t } = useI18n();
 const { createErrorModal } = useMessage();
 const { getLocale } = useLocale();
+const useProdRoute = useProdRouteStore();
 function _default() {
+  /* 瀹氫箟鍙橀噺 */
   const isNormal = (type: number) => type === 0;
   const isScan = (type: number) => type === 1;
   const isAssy = (type: number) => type === 2;
@@ -29,6 +49,10 @@
   const isAudit = (type: number) => type === 4;
   const isPrint = (type: number) => type === 5;
   const isPackage = (type: number) => type === 6;
+  /**
+   * @description: 浜у搧缁戝畾宸ヨ壓璺嚎鐨勪竴浜涜嚜瀹氫箟鏂规硶
+   * @return {*}
+   */
   const methods = {
     /**
      * @description: 鑾峰彇鏍戝舰鍥炬爣
@@ -60,8 +84,8 @@
      * @description: 楂樼骇琛ㄥ崟鍜岃鎯呴〉闈㈣繑鍥炰富椤甸潰鐨剈rl
      * @return {*}
      */
-    GetHomeUrl: () => {
-      return `/V_BAS_PROD/LC/${encodeURI(JSON.stringify({ ID: 'V_BAS_PROD', colSlots: [], crudColSlots: [] }))}`;
+    GetHomeUrl: (params) => {
+      return `/V_BAS_PROD_R/LC/${encodeURI(JSON.stringify({ ID: 'V_BAS_PROD_R', colSlots: [], crudColSlots: [], sName: params['sName'] }))}`;
     },
     /**
      * @description: 鑾峰彇鏍戝舰鏁版嵁
@@ -69,273 +93,250 @@
      * @return {*}
      */
     fetchTreeData: async (type: string, itemCode: string) => {
-      let data = { title: '', treeData: [] as any[], fieldNames: {} };
-      let prodTreeData = await GetRoutePTree(itemCode);
-      // let uniqueArr = prodTreeData.reduce((acc, current) => {
-      //   if (!acc.some((x) => x.pid == current.pid && x.id == current.id && x.seq == current.seq && x.type == current.type)) {
-      //     acc.push(current);
-      //   }
-      //   return acc;
-      // }, [] as V_MES_ROUTE_PTREE[]);
-      data.treeData = convertToTree(prodTreeData, 'pid', 'tid', 'root');
+      const data = { title: '', treeData: [] as any[], fieldNames: {} };
+      const prodTreeData = (await GetRoutePTree({
+        prodCode: itemCode,
+        orgCode: useUserStore().getUserInfo.orgCode,
+      })) as unknown as MesRotTree[];
+      const _treeData = convertToTree(prodTreeData, 'pid', 'tid', 'root');
       data.title = '宸ヨ壓璺嚎';
       data.fieldNames = { key: 'tid', title: 'name' };
+      if (
+        !useProdRoute.changeToCPPage ||
+        !useProdRoute.curProdRotTree.some((q) => q.name == itemCode)
+      ) {
+        /* 淇濆瓨宸ヨ壓鏍戝舰鏁版嵁鍒扮姸鎬佺鐞� */
+        useProdRoute.setCurProdRotTree({
+          name: itemCode,
+          treeInfo: _treeData as unknown as MesRotTree[],
+        });
+      }
+      useProdRoute.setItemCode(itemCode);
+      useProdRoute.setname(itemCode);
+      if (useProdRoute.curProdRotTree.some((q) => q.name == itemCode)) {
+        data.treeData = useProdRoute.curProdRotTree.filter((q) => q.name == itemCode)[0].treeInfo;
+      }
       return data;
     },
-    GetCrudForm: () => {
-      return [
-        {
-          field: 'PROD_CODE',
-          label: '浜у搧缂栫爜',
-          component: 'Input',
-          dynamicDisabled: ({ values }) => {
-            return true;
-          },
-          colProps: { span: 12 },
-        },
-        {
-          field: 'ID',
-          label: 'ID',
-          component: 'Input',
-          show: false,
-        },
-        {
-          field: 'ACT_ID',
-          label: 'ACT_ID',
-          component: 'Input',
-          show: false,
-        },
-        {
-          field: 'ROT_ID',
-          label: 'ROT_ID',
-          component: 'Input',
-          show: false,
-        },
-        {
-          field: 'ACT_CODE',
-          label: 'ACT_CODE',
-          component: 'Input',
-          show: false,
-        },
-        {
-          field: 'NODE_ID',
-          label: 'NODE_ID',
-          component: 'Input',
-          show: false,
-        },
-        {
-          field: 'CUST_CODE',
-          label: '瀹㈡埛缂栫爜',
-          component: 'Input',
-          dynamicDisabled: ({ values }) => {
-            return true;
-          },
-          colProps: { span: 12 },
-        },
-        {
-          field: 'ACT_TYPE',
-          label: '琛屼负绫诲瀷',
-          component: 'ApiSelect',
-          colProps: { span: 12 },
-          defaultValue: 0,
-          componentProps: {
-            api: GetEnum,
-            params: { name: 'MES_PROD_ACTION+ACT_TYPEs' },
-            resultField: 'Data',
-            labelField: unref(getLocale) == 'zh_CN' ? 'Desc' : 'Name',
-            valueField: 'Value',
-            // onChange: (e, v) => {
-            //   alert(e)
-            //   console.log('ApiSelect====>:', e, v);
-            // },
-          },
-        },
-        {
-          field: 'IS_ACTIVE',
-          label: '鏄惁鍚敤',
-          required: true,
-          component: 'Select',
-          colProps: { span: 12 },
-          componentProps: {
-            options: [
-              {
-                label: '鏄�',
-                value: 'Y',
-                key: 'Y',
-              },
-              {
-                label: '鍚�',
-                value: 'N',
-                key: 'N',
-              },
-            ],
-          },
-        },
-        {
-          field: 'RULE_CODE',
-          label: '鎵爜楠岃瘉',
-          component: 'Input',
-          colProps: { span: 10 },
-          ifShow: ({ values }) => isScan(values.ACT_TYPE),
-        },
-        {
-          field: '0',
-          label: '1',
-          defaultValue: '',
-          component: 'Input',
-          colProps: { span: 2, pull: 1 },
-          ifShow: ({ values }) => isScan(values.ACT_TYPE),
-          colSlot: 'scanadd',
-        },
-        {
-          field: 'ITEM_CODE',
-          label: '缁勮涓婃枡',
-          colProps: { span: 10 },
-          component: 'Input',
-          ifShow: ({ values }) => isAssy(values.ACT_TYPE),
-        },
-        {
-          field: '00',
-          label: '1',
-          defaultValue: '',
-          component: 'Input',
-          colProps: { span: 2, pull: 1 },
-          ifShow: ({ values }) => isAssy(values.ACT_TYPE),
-          colSlot: 'assyadd',
-        },
-        {
-          field: 'TEST_CODE',
-          label: '浜у搧娴嬭瘯',
-          colProps: { span: 10 },
-          component: 'Input',
-          ifShow: ({ values }) => isTest(values.ACT_TYPE),
-        },
-        {
-          field: 'test0',
-          label: '1',
-          defaultValue: '',
-          component: 'Input',
-          colProps: { span: 2, pull: 1 },
-          ifShow: ({ values }) => isTest(values.ACT_TYPE),
-          colSlot: 'testadd',
-        },
-        {
-          field: 'SAPL_CODE',
-          label: '浜у搧鎶芥',
-          colProps: { span: 10 },
-          component: 'Input',
-          ifShow: ({ values }) => isAudit(values.ACT_TYPE),
-        },
-        {
-          field: 'audit0',
-          label: '1',
-          defaultValue: '',
-          component: 'Input',
-          colProps: { span: 2, pull: 1 },
-          ifShow: ({ values }) => isAudit(values.ACT_TYPE),
-          colSlot: 'auditadd',
-        },
-        {
-          field: 'LABEL_CODE',
-          label: '鏍囩鎵撳嵃',
-          colProps: { span: 10 },
-          component: 'Input',
-          ifShow: ({ values }) => isPrint(values.ACT_TYPE),
-        },
-        {
-          field: 'print0',
-          label: '1',
-          defaultValue: '',
-          component: 'Input',
-          colProps: { span: 2, pull: 1 },
-          ifShow: ({ values }) => isPrint(values.ACT_TYPE),
-          colSlot: 'printadd',
-        },
-        {
-          field: 'pkgRULE_CODE',
-          label: '鍖呰瑙勫垯',
-          colProps: { span: 10 },
-          component: 'Input',
-          ifShow: ({ values }) => isPackage(values.ACT_TYPE),
-        },
-        {
-          field: 'pkg0',
-          label: '1',
-          defaultValue: '',
-          component: 'Input',
-          colProps: { span: 2, pull: 1 },
-          ifShow: ({ values }) => isPackage(values.ACT_TYPE),
-          colSlot: 'pkgadd',
-        },
-        {
-          field: 'REMARK',
-          label: '澶囨敞',
-          component: 'Input',
-          colProps: { span: 12 },
-        },
-      ];
+    /**
+     * @description: 鎿嶄綔瀛楁鑷畾涔夋寜閽紝蹇呴渶瑕佹湁鐨勬柟娉�
+     * @return {*}
+     */
+    ActionItem: (params: Recordable<any>, data, ...args): ActionItem[] => {
+      data.push({
+        icon: 'template|svg',
+        tooltip: '妯℃澘缁存姢',
+        onClick: handleTemplate.bind(null, args, params),
+        name: '妯℃澘缁存姢',
+      });
+      return data;
+    },
+    /**
+     * @description: 鑾峰彇閰嶇疆椤硅〃鍗曞瓧娈碉紝鏍规嵁鏍戝舰鑺傜偣type涓嶅悓鑰屼笉鍚�
+     * @param {string} type
+     * @return {*}
+     */
+    GetCrudForm: (type: string) => {
+      let form: FormSchema[] = [];
+      switch (type) {
+        case 'Action':
+          form = actionFormShema;
+          break;
+        case 'Node':
+          form = nodeFormShema;
+          break;
+        default:
+          form = crudForms[type];
+          break;
+      }
+      return form;
     },
     /**
      * @description: 鑾峰彇琛ㄥ崟涓殑瀛楁鎻掓Ы鍒楄〃
      * @return {*}
      */
     GetCrudColSlots: () => {
-      return ['scanadd', 'assyadd', 'testadd', 'auditadd', 'printadd', 'pkgadd'];
+      return [
+        { name: 'scanadd', icon: 'search|svg' },
+        { name: 'assyadd', icon: 'search|svg' },
+        { name: 'testadd', icon: 'search|svg' },
+        { name: 'auditadd', icon: 'search|svg' },
+        { name: 'printadd', icon: 'search|svg' },
+        { name: 'pkgadd', icon: 'search|svg' },
+        { name: 'labeladd', icon: 'template|svg' },
+      ];
     },
-    nodeChange: (params: {
-      resetFields: any;
-      setFieldsValue: any;
-      objParams: Ref<any>;
-      selectedNodes: Ref<any[]>;
-    }) => {
-      let sqlcmd = ' 1=1 ';
-      if (!isNullOrEmpty(params['objParams'].value['CODE'])) {
-        sqlcmd += `And PROD_CODE = '${params['objParams'].value['CODE']}'`;
-      }
-      // if (!isNullOrEmpty(Cust_Code.value)) {
-      //   sqlcmd += `And CUST_CODE = '${Cust_Code.value}'`;
-      // }
-      if (!isNullOrEmpty(params['selectedNodes'].value[0].code)) {
-        sqlcmd += `And ACT_ID = '${params['selectedNodes'].value[0].code}'`;
-      }
-      getEntity({
-        sqlcmd: sqlcmd,
-        entityName: 'MES_PROD_ACTION',
-      }).then((res) => {
-        params['resetFields']();
-        params['setFieldsValue']({
-          ID: res.Data.Items[0].ID,
-          ACT_ID: res.Data.Items[0].ACT_ID,
-          ROT_ID: res.Data.Items[0].ROT_ID,
-          NODE_ID: res.Data.Items[0].NODE_ID,
-          IS_ACTIVE: res.Data.Items[0].IS_ACTIVE,
-          ITEM_CODE: res.Data.Items[0].ITEM_CODE,
-          ACT_CODE: res.Data.Items[0].ACT_CODE,
-          REMARK: res.Data.Items[0].REMARK,
-          PROD_CODE: params['objParams'].value['CODE'],
-          ACT_TYPE: res.Data.Items[0].ACT_TYPE,
-          CUST_CODE: params['selectedNodes'].value[0].cust,
-        });
-      });
-    },
+    /**
+     * @description: 鍒囨崲鑺傜偣鏃朵簨浠舵柟娉�
+     * @return {*}
+     */
+    nodeChange: (params: { useForms: Ref<any>; objParams: Ref<any>; selectedNodes: any[] }) =>
+      new Promise<any>(async (resolve, reject) => {
+        // params['useForms'].value = methods.GetUseForm();
+        const result = { isShow: {} };
+        let sqlcmd = ' 1=1 ';
+        if (!isNullOrEmpty(params['objParams'].value['CODE'])) {
+          sqlcmd += `And PROD_CODE = '${params['objParams'].value['CODE']}'`;
+        }
+        if (!isNullOrEmpty(params['selectedNodes'][0].cust)) {
+          sqlcmd += `And CUST_CODE = '${params['selectedNodes'][0].cust}'`;
+        }
+        if (!isNullOrEmpty(params['selectedNodes'][0].id)) {
+          sqlcmd +=
+            params['selectedNodes'][0].type == 'Action'
+              ? `And ACT_ID = '${params['selectedNodes'][0].id}'`
+              : `And NODE_ID = '${params['selectedNodes'][0].id}'`;
+        }
+        try {
+          const res = await getEntity({
+            sqlcmd: sqlcmd,
+            entityName:
+              params['selectedNodes'][0].type == 'Action' ? 'MES_PROD_ACTION' : 'MES_PROD_OPER',
+            order: '',
+          });
+          const setFieldsValue = params['useForms'].value['Action'][1]['setFieldsValue'];
+          const setFieldsValueNode = params['useForms'].value['Node'][1]['setFieldsValue'];
+          const resetFields = params['useForms'].value['Action'][1]['resetFields'];
+          const resetFieldsNode = params['useForms'].value['Node'][1]['resetFields'];
+          if (params['selectedNodes'][0].type == 'Action') {
+            resetFields();
+            setFieldsValue({
+              ID: res.Data.Items[0].ID,
+              ACT_ID: res.Data.Items[0].ACT_ID,
+              ROT_ID: res.Data.Items[0].ROT_ID,
+              NODE_ID: res.Data.Items[0].NODE_ID,
+              IS_ACTIVE: res.Data.Items[0].IS_ACTIVE,
+              ITEM_CODE: res.Data.Items[0].ITEM_CODE,
+              RULE_CODE: res.Data.Items[0].RULE_CODE,
+              TEST_CODE: res.Data.Items[0].TEST_CODE,
+              SAPL_CODE: res.Data.Items[0].SAPL_CODE,
+              LABEL_CODE: res.Data.Items[0].LABEL_CODE,
+              PKG_CODE: res.Data.Items[0].PKG_CODE,
+              ACT_CODE: res.Data.Items[0].ACT_CODE,
+              REMARK: res.Data.Items[0].REMARK,
+              PROD_CODE: params['objParams'].value['CODE'],
+              ACT_TYPE: res.Data.Items[0].ACT_TYPE,
+              CUST_CODE: params['selectedNodes'][0].cust,
+              OPTION_1: res.Data.Items[0].OPTION_1,
+              OPTION_2: res.Data.Items[0].OPTION_2,
+            });
+            /* 濡傛灉鏄寘瑁呰鍒� */
+            if (res.Data.Items[0].ACT_TYPE == 6) {
+              result['name'] = 'BAS_PKG_DTL';
+              result['isShow'] = {
+                BAS_PKG_DTL: isNullOrEmpty(res.Data.Items[0].PKG_CODE) ? false : true,
+                ItemCode: false,
+              };
+              const ents = await getEntity({
+                sqlcmd: `RULE_CODE ='${res.Data.Items[0].PKG_CODE}'`,
+                entityName: 'V_BAS_PKG_DTL',
+                order: '',
+              });
+              result['BAS_PKG_DTL'] = isNullOrEmpty(res.Data.Items[0].OPTION_1)
+                ? ents.Data.Items
+                : JSON.parse(res.Data.Items[0].OPTION_1);
+              /* 濡傛灉OPTION_1瀛楁涓虹┖灏辨妸鍖呰淇℃伅杞琂SON瀛樺埌OPTION_1瀛楁 */
+              res.Data.Items[0].OPTION_1 = JSON.stringify(result['BAS_PKG_DTL']);
+            } /* 濡傛灉鏄粍瑁呬笂鏂� */
+            if (res.Data.Items[0].ACT_TYPE == 2) {
+              result['name'] = 'ItemCode';
+              result['ItemCode'] = JSON.parse(res.Data.Items[0].OPTION_1);
+              result['isShow'] = {
+                BAS_PKG_DTL: false,
+                ItemCode: true,
+              };
+            }
+            result['Action'] = res.Data.Items;
+          }
+          if (params['selectedNodes'][0].type == 'Node') {
+            resetFieldsNode();
+            const values = {
+              ID: res.Data.Items[0].ID,
+              OPER_CODE: res.Data.Items[0].OPER_CODE,
+              ROT_ID: res.Data.Items[0].ROT_ID,
+              NODE_ID: res.Data.Items[0].NODE_ID,
+              NODE_NAME: res.Data.Items[0].NODE_NAME,
+              IS_ACTIVE: isNullOrEmpty(res.Data.Items[0].IS_ACTIVE)
+                ? 'N'
+                : res.Data.Items[0].IS_ACTIVE,
+              IS_CALC_FPY: isNullOrEmpty(res.Data.Items[0].IS_CALC_FPY)
+                ? 'N'
+                : res.Data.Items[0].IS_CALC_FPY,
+              CAN_SKIP: isNullOrEmpty(res.Data.Items[0].CAN_SKIP)
+                ? 'N'
+                : res.Data.Items[0].CAN_SKIP,
+              IS_INPUT: isNullOrEmpty(res.Data.Items[0].IS_INPUT)
+                ? 'N'
+                : res.Data.Items[0].IS_INPUT,
+              IS_OUTPUT: isNullOrEmpty(res.Data.Items[0].IS_OUTPUT)
+                ? 'N'
+                : res.Data.Items[0].IS_OUTPUT,
+              ALLOW_DFT_IN: isNullOrEmpty(res.Data.Items[0].ALLOW_DFT_IN)
+                ? 'N'
+                : res.Data.Items[0].ALLOW_DFT_IN,
+              IF_DFT_OFFLINE: isNullOrEmpty(res.Data.Items[0].IF_DFT_OFFLINE)
+                ? 'N'
+                : res.Data.Items[0].IF_DFT_OFFLINE,
+              REMARK: res.Data.Items[0].REMARK,
+              PROD_CODE: params['objParams'].value['CODE'],
+              CUST_CODE: params['selectedNodes'][0].cust,
+            };
+            setFieldsValueNode(values);
+
+            /* 榛樿淇濆瓨 */
+            SaveEntity(values, true, 'MES_PROD_OPER');
+
+            // result['Node'] = res.Data.Items;
+            result['name'] = 'Node';
+            result['isShow'] = {
+              BAS_PKG_DTL: false,
+              ItemCode: false,
+            };
+          }
+          useProdRoute.setcurDtl(result);
+          resolve(result);
+        } catch (e) {
+          reject(e);
+        }
+      }),
     /**
      * @description: 鑷畾涔夋彁浜ゆ柟娉�
      * @return {*}
      */
-    SubmitFunc: (values: Recordable<any>, emit) => {
-      SaveEntity(values, true, 'MES_PROD_ACTION').then((action) => {
-        if (action.IsSuccessed) {
-          emit('success');
+    SubmitFunc: (values: Recordable<any>, type: string, emit) =>
+      new Promise<any>((resolve, reject) => {
+        let entityName = '';
+        switch (type) {
+          case 'Action':
+            entityName = 'MES_PROD_ACTION';
+            break;
+          case 'Node':
+            entityName = 'MES_PROD_OPER';
+            break;
         }
-      });
-    },
+        values.AUTH_ORG = useUserStore().getUserInfo.orgCode;
+        values.AUTH_PROD = useUserStore().getUserInfo.prodCode;
+        if (type == 'Action') {
+          values.OPTION_1 = JSON.stringify(useProdRoute.getcurDtl['BAS_PKG_DTL']);
+        }
+        SaveEntity(values, true, entityName).then((action) => {
+          if (action.IsSuccessed) {
+            emit('success');
+          }
+        });
+        resolve(true);
+      }),
     /**
      * @description: 寮瑰嚭閫夋嫨妗嗘墦寮�鏂规硶
      * @param {Fn} openItemModal
+     * @param {array} args
      * @return {*}
      */
     OpenSelectItem: (openItemModal: Fn, ...args) => {
       let config = {};
+      const openCrudModal = args[1];
+      const record = args[2];
+      const OrderNo = args[3];
       switch (args[0]) {
         case 'scanadd':
           config = ruleModalCfg;
@@ -353,36 +354,99 @@
           config = pkgModalCfg;
           break;
       }
-      openItemModal(true, config);
+      if (args[0] == 'labeladd') {
+        openCrudModal(true, {
+          isUpdate: true, //鏄惁鏇存柊鎿嶄綔
+          entityName: 'ProdRouteBinding', //鏄摢涓〉闈�
+          ctype: 'BAS_LABEL_VAR_WO', //瀹炰綋鍚嶇О
+          title: '妯℃澘缁存姢', //鏍囬
+          width: '1024px', //寮瑰嚭妗嗗搴�
+          ItemColumns: TemplateBasColumn, //寮瑰嚭妗嗕腑琛ㄦ牸瀛楁缁撴瀯
+          schemas: [], //鏌ヨ鏉′欢瀛楁缁撴瀯
+          others: { WORK_ORDER: OrderNo }, //闇�瑕佸甫鍒板脊鍑虹獥鍙d腑鐨勬暟鎹�
+          searchInfo: {
+            TABLE_NAME: 'BAS_LABEL_VAR_WO', //瀹炰綋鍚嶇О
+            LabelId: record.LABEL_CODE, //妯℃澘ID
+            WorkOrder: OrderNo, //宸ュ崟鍙�
+            apiUrl: mesApi.GetLabelVarByWorkOrder, //鑷畾涔夎幏鍙栨暟鎹垎椤电殑api锛屼笉鐢ㄩ粯璁ょ殑鍩虹鏂规硶
+            // sqlcmd: ` (WORK_ORDER = '${OrderNo}' OR WORK_ORDER = '' OR WORK_ORDER IS NULL)`,
+            // option:
+            // {
+            //   //鏍规嵁鎹偣鏌ヨ锛屽繀闇�甯﹁繖涓弬鏁�
+            //   UserId: useUserStore().getUserInfo.userId,
+            //   ByOrg: true,
+            //   CurOrg: useUserStore().getUserInfo.orgCode,
+            // },
+          },
+          values: record, //琛ㄥ崟璁板綍
+        });
+      } else {
+        openItemModal(true, config);
+      }
     },
     /**
      * @description: 寮瑰嚭閫夋嫨妗嗛�夋嫨鎴愬姛杩斿洖
      * @param {*} d
      * @param {*} u
+     * @param {array} args
      * @return {*}
      */
-    GetSelectSuccess: (d, u, ...args) => {
+    GetSelectSuccess: async (d, u, ...args) => {
       let value = {};
       switch (args[0]) {
         case 'scanadd':
           value = {
-            RULE_CODE: d.values['val'],
+            value: {
+              RULE_CODE: d.values['val'],
+            },
+            isShow: { BAS_PKG_DTL: false, ItemCode: false },
           };
           break;
         case 'assyadd':
+          const items = d.values['val'].split(',');
+          const data: any[] = [];
+          if (!isNullOrEmpty(items) && items.length > 0) {
+            items.map((x) => {
+              data.push({
+                ITEM_CODE: x,
+                RULE_CODE: '',
+                IsBatchItem: 'N',
+                QTY: 1,
+              });
+            });
+          }
           value = {
-            ITEM_CODE: d.values['val'],
+            value: {
+              ITEM_CODE: d.values['val'],
+            },
+            isShow: { BAS_PKG_DTL: false, ItemCode: true },
+            data: data,
+            name: 'ItemCode',
           };
           break;
         case 'printadd':
           value = {
-            LABEL_CODE: d.values['val'],
+            value: {
+              LABEL_CODE: d.values['val'],
+            },
+            isShow: { BAS_PKG_DTL: false, ItemCode: false },
           };
           break;
         case 'pkgadd':
+          const ents = await getEntity({
+            sqlcmd: `RULE_CODE ='${d.values['val']}'`,
+            entityName: 'V_BAS_PKG_DTL',
+            order: '',
+          });
           value = {
-            pkgRULE_CODE: d.values['val'],
+            value: {
+              PKG_CODE: d.values['val'],
+            },
+            isShow: { BAS_PKG_DTL: true, ItemCode: false },
+            data: ents.Data.Items,
+            name: 'BAS_PKG_DTL',
           };
+          break;
         case 'addRoute':
           if (isNullOrEmpty(args[1]['CODE'])) {
             createErrorModal({
@@ -391,13 +455,11 @@
             });
             return;
           }
-          let codes = d.values.id.split(',');
+          const codes = d.values.id.split(',');
           var i;
           for (i = 0; i < codes.length; i++) {
             if (d.which == 'addRoute') {
               RouteToProd({ rotId: codes[i], prodCode: args[1]['CODE'] });
-            } else {
-              RouteToCust({ rotId: codes[i], prodCode: args[1]['CODE'], custCode: '' });
             }
           }
 
@@ -411,7 +473,7 @@
             });
             return;
           }
-          let rotIds = d.ROT_ID.split(',');
+          const rotIds = d.ROT_ID.split(',');
           var i;
           for (i = 0; i < rotIds.length; i++) {
             RouteToCust({ rotId: rotIds[i], prodCode: args[1]['CODE'], custCode: d.CUST_CODE });
@@ -423,79 +485,248 @@
       return value;
     },
     /**
-     * @description: 鑾峰彇妯℃�佹搴旂敤鍒楄〃
+     * @description: 鑾峰彇妯℃�佹搴旂敤鍒楄〃 ['scanadd', 'assyadd', 'testadd', 'auditadd', 'printadd', 'pkgadd']
      * @return {*}
      */
     GetUseModals: () => {
       return {
         addRoute: useModal(),
         addCustomer: useModal(),
+        editRoute: useModal(),
+        scanadd: useModal(),
+        assyadd: useModal(),
+        testadd: useModal(),
+        auditadd: useModal(),
+        printadd: useModal(),
+        labeladd: useModal(),
+        pkgadd: useModal(),
+      };
+    },
+    /**
+     * @description: 鑾峰彇鍦ㄥ鍒犳敼琛ㄥ崟涓殑妯℃�佹搴旂敤鍒楄〃
+     * @return {*}
+     */
+    GetUseCrudModals: () => {
+      return {
+        addRoute: useModal(),
+        addCustomer: useModal(),
+        editRoute: useModal(),
+        scanadd: useModal(),
+        assyadd: useModal(),
+        testadd: useModal(),
+        auditadd: useModal(),
+        printadd: useModal(),
+        labeladd: useModal(),
+        pkgadd: useModal(),
+      };
+    },
+    /**
+     * @description: 鑾峰彇琛ㄦ牸use鍒楄〃锛岃繖閲岃窡涓婚〉闈紶杩囨潵鐨凮therTableName: ['BAS_PKG_DTL', 'ItemCode']鍐呯殑鍚嶇О鏄竴鑷寸殑銆�
+     * @param {string} type
+     * @param {array} args
+     * @return {*}
+     */
+    GetUseTables: (data: Ref<{}>, ...args) => {
+      // data.value['Table'] = [];
+      return {
+        BAS_PKG_DTL: useTable({
+          title: '鍒楄〃淇℃伅',
+          // api: getListByPage,
+          // searchInfo: { TABLE_NAME: 'V_BAS_PKG_DTL' },
+          dataSource: data.value['BAS_PKG_DTL'],
+          columns: GetBaseColumns('BAS_PKG_DTL', args[0], data),
+          // maxHeight: 520,
+          // scroll: { y: window.screen.width == 1366? 400: 450 },
+          isCanResizeParent: true,
+          useSearchForm: false,
+          showTableSetting: false,
+          bordered: true,
+          // canResize: false,
+          showIndexColumn: false,
+          // rowSelection: {
+          //   type: 'radio', //'checkbox'
+          // },
+          actionColumn: {
+            width: 100,
+            title: '鎿嶄綔',
+            dataIndex: 'action',
+            slots: { customRender: 'action' },
+            fixed: 'right',
+          }, //鑷畾涔夋搷浣滃垪
+        }),
+        ItemCode: useTable({
+          title: '鍒楄〃淇℃伅',
+          // api: getListByPage,
+          // searchInfo: { TABLE_NAME: 'V_BAS_PKG_DTL' },
+          dataSource: data.value['ItemCode'],
+          columns: GetBaseColumns('ItemCode', args[0], data),
+          maxHeight: 520,
+          useSearchForm: false,
+          showTableSetting: false,
+          bordered: true,
+          canResize: true,
+          showIndexColumn: false,
+          // rowSelection: {
+          //   type: 'radio', //'checkbox'
+          // },
+          actionColumn: {
+            width: 100,
+            title: '鎿嶄綔',
+            dataIndex: 'action',
+            slots: { customRender: 'action' },
+            fixed: 'right',
+          }, //鑷畾涔夋搷浣滃垪
+        }),
+      };
+    },
+    /**
+     * @description: 鑾峰彇琛屼负鎴栬�呰妭鐐圭殑閰嶇疆琛ㄥ崟缁撴瀯锛屼娇鐢╱seForm()
+     * @return {*}
+     */
+    GetUseForm: () => {
+      return {
+        Action: useForm({
+          labelWidth: 145,
+          schemas: methods.GetCrudForm('Action'),
+          actionColOptions: {
+            offset: 8,
+            span: 24,
+          },
+          wrapperCol: {
+            span: 15,
+          },
+          showActionButtonGroup: true,
+          submitButtonOptions: {
+            text: '淇濆瓨',
+          },
+        }),
+        Node: useForm({
+          labelWidth: 145,
+          schemas: methods.GetCrudForm('Node'),
+          actionColOptions: {
+            offset: 8,
+            span: 24,
+          },
+          wrapperCol: {
+            span: 15,
+          },
+          showActionButtonGroup: true,
+          submitButtonOptions: {
+            text: '淇濆瓨',
+          },
+        }),
       };
     },
     /**
      * @description: 鑾峰彇鏍囬淇℃伅
      * @param {string} type
+     * @param {*} item
      * @return {*}
      */
-    GetTitle: () => {
+    GetTitle: (type: string, item) => {
       return {
-        configTitle: '琛屼负閰嶇疆',
-        navTitle: '娣诲姞宸ヨ壓璺嚎',
+        configTitle: type == 'Action' ? '琛屼负閰嶇疆' : '宸ュ簭閰嶇疆',
+        navTitle: type == 'Product' ? '娣诲姞宸ヨ壓璺嚎' : '宸ヨ壓璺嚎缁存姢',
+        tableTitle: type == 'Action' ? (item == 'ItemCode' ? '涓婃枡鍒楄〃' : '鍖呰灞傜骇鍒楄〃') : '',
       };
     },
     /**
-     * @description: 鏍规嵁閫変腑鐨勬爲鑺傜偣鍒ゆ柇瑕佸垏鎹㈠摢涓粍浠�
+     * @description: 鏍规嵁閫変腑鐨勬爲鑺傜偣杩斿洖涓婚〉闈紝鑷畾涔夋柟娉曪紝杩欓噷鏄垽鏂鍒囨崲鍝釜缁勪欢
      * @param {Ref} selectedNodes
      * @return {*}
      */
-    SelectNode: (selectedNodes: Ref<any[]>) => {
-      let result = { showConfig: false, showNav: false };
-      if (isNullOrUnDef(selectedNodes)) {
+    SelectNode: (selectedNodes: Ref<any[]>, code: string) => {
+      const result = {
+        showConfig: false,
+        showNav: false,
+        type: selectedNodes.value[0].type,
+        nodes: selectedNodes.value,
+        showOtherTable: { BAS_PKG_DTL: false, ItemCode: false },
+      };
+      if (isNullOrUnDef(selectedNodes.value)) {
         return result;
       }
-      if (selectedNodes.value[0].type == 'Product') {
+      if (selectedNodes.value[0].type == 'Product' || selectedNodes.value[0].type == 'Route') {
         result.showNav = true;
         result.showConfig = false;
+        result.showOtherTable = { BAS_PKG_DTL: false, ItemCode: false };
       }
-      if (selectedNodes.value[0].type == 'Action') {
+      if (selectedNodes.value[0].type == 'Action' || selectedNodes.value[0].type == 'Node') {
         result.showNav = false;
         result.showConfig = true;
+        result.showOtherTable = { BAS_PKG_DTL: false, ItemCode: false };
       }
+      /* 淇濆瓨褰撳墠閫夋嫨鐨勮妭鐐规暟鎹埌鐘舵�佺鐞� */
+      useProdRoute.setCurSelectedNodes({ name: code, SelectedNodes: selectedNodes.value });
       return result;
     },
     /**
      * @description: 鑾峰彇瀵艰埅椤�
+     * @param {string} type
      * @return {*}
      */
-    GetNavItems: () => {
-      return [
-        {
-          title: '娣诲姞浜у搧宸ヨ壓璺嚎',
-          icon: 'add_green|svg',
-          color: '#1fdaca',
-          url: '/addRoute',
-          action: 'addRoute',
-          isStep: false,
-        },
-        {
-          title: '娣诲姞瀹㈡埛宸ヨ壓璺嚎',
-          icon: 'add_customer|svg',
-          color: '#bf0c2c',
-          url: '/addCustomer',
-          action: 'addCustomer',
-          isStep: true,
-        },
-      ] as NavItem[];
+    GetNavItems: (type: string) => {
+      let item: NavItem[] = [];
+      switch (type) {
+        case 'Product':
+          item = [
+            {
+              title: '娣诲姞浜у搧宸ヨ壓璺嚎',
+              icon: 'add_green|svg',
+              color: '#1fdaca',
+              url: '/addRoute',
+              action: 'addRoute',
+              isStep: false,
+              isCustEl: false,
+            },
+            {
+              title: '娣诲姞瀹㈡埛宸ヨ壓璺嚎',
+              icon: 'add_customer|svg',
+              color: '#bf0c2c',
+              url: '/addCustomer',
+              action: 'addCustomer',
+              isStep: true,
+              isCustEl: false,
+            },
+          ];
+          break;
+        case 'Route':
+          item = [
+            {
+              title: '缂栬緫宸ヨ壓璺嚎', //鏍囬
+              icon: 'clarity:note-edit-line', //鍥炬爣
+              color: '#1fdaca', //瀛椾綋棰滆壊
+              url: '/editRoute', //瀵艰埅鍦板潃
+              action: 'editRoute', //瀵艰埅鎵ц鐨勬柟娉曪紝濡傛灉鎸夎繖涓猘ction鏉ユ墽琛岋紝涓婇潰鐨剈rl灏辨棤鏁�
+              isStep: false, //鏄惁鏄楠�
+              isCustEl: false, //鏄惁鏄嚜瀹氫箟html鍐呭
+            },
+            {
+              title: '璁剧疆榛樿宸ヨ壓璺嚎',
+              icon: '',
+              color: '#1fdaca',
+              url: '',
+              action: '',
+              isStep: false,
+              isCustEl: true,
+            },
+          ];
+          break;
+      }
+      return item;
     },
     /**
      * @description: 瀵艰埅椤甸潰鍒囨崲鎸夐挳鏃惰皟鐢ㄦ柟娉�
      * @param {any} action
+     * @param {array} args
      * @return {*}
      */
     navChangeItem: (action: any, ...args) => {
+      const openRvModal = args[1];
+      const openModal = args[0];
       switch (action) {
         case 'addRoute':
-          args[0](true, {
+          openModal(true, {
             title: '宸ヨ壓璺嚎鍒楄〃',
             schemas: [
               {
@@ -525,20 +756,337 @@
             ],
             tableName: 'MES_ROUTE',
             rowKey: 'ROT_CODE',
-            returnFieldName: 'ROUTE_CODE', //杩斿洖鍊艰璧嬪�肩殑瀛楁鍚嶇О
+            returnFieldName: ['ROUTE_CODE'], //杩斿洖鍊艰璧嬪�肩殑瀛楁鍚嶇О
             searchInfo: { TABLE_NAME: 'MES_ROUTE' },
             which: action,
           });
           break;
         case 'addCustomer':
-          args[0](true, {
+          openModal(true, {
             title: '璇峰畬鎴愪互涓嬫楠�',
+          });
+          break;
+        case 'editRoute':
+          openRvModal(true, {
+            rotId: args[2][0].id,
+            slotName: '',
+            prodCode: args[3],
+            custCode: args[2][0].cust,
           });
           break;
       }
     },
+    /**
+     * @description: 鑾峰彇鍗$墖鍐呴厤缃垪琛紝浠ュ惊鐜樉绀哄涓崱鐗囧苟閰嶇疆澶氫釜鎻掓Ы
+     * @return {*}
+     */
+    GetBaseCards: (type: string) => {
+      let reusts: any[] = [];
+      switch (type) {
+        case 'Product':
+          reusts = [];
+          break;
+        case 'Route':
+          reusts = [
+            {
+              name: 'RotInfo',
+              slots: [],
+              preIcons: {},
+              title: '宸ヨ壓璺嚎鍥�',
+              entityName: '',
+            },
+          ];
+          break;
+      }
+      return reusts;
+    },
+    /**
+     * @description: 鑾峰彇鎻掓Ы鍒楄〃
+     * @return {*}
+     */
+    GetSlots: () => {
+      return ['RotInfo'];
+    },
+    /**
+     * @description: 鐢熸垚html
+     * @return {*}
+     */
+    GenerateHtml: (type: string | null) => {
+      const newElement = document.createElement('div');
+      // newElement.textContent = 'New Element =>'+type;
+      // newElement.style.height = '250px';
+      newElement.id = 'lfContainer';
+      newElement.className = 'h-full';
+      // newElement.style.color = 'blue';
+      // newElement.style.fontSize = '16px';
+      return newElement;
+    },
+    /**
+     * @description: 鑷畾涔夋柟娉�
+     * @param {string} type
+     * @param {array} args
+     * @return {*}
+     */
+    CustFunc: async (param: CustModalParams) => {
+      return new Promise<any>(async (resolve, reject) => {
+        try {
+          switch (param['ctype']) {
+            case 'BAS_PKG_DTL':
+              // const ents = await getEntity({
+              //   sqlcmd: `PKG_RULE_ID ='${param.values['PKG_RULE_ID']}'`,
+              //   entityName: 'V_BAS_PKG_DTL',
+              //   order: '',
+              // });
+              // param.data.value['Table'] = ents.Data.Items;
+              param.data.value['BAS_PKG_DTL'].map((x) => {
+                if (x.PKG_CODE == param.values['PKG_CODE']) {
+                  x.LABEL_CODE = param.values['LABEL_CODE'];
+                  x.LABEL_ID = param.values['LABEL_CODE'];
+                }
+              });
+              param.data.value['Action'][0]['OPTION_1'] = JSON.stringify(
+                param.data.value['BAS_PKG_DTL'],
+              );
+              resolve('OK');
+              break;
+            case 'ItemCode':
+              param.data.value['ItemCode'].map((x) => {
+                if (x.ITEM_CODE == param.values['ITEM_CODE']) {
+                  x.IsBatchItem = param.values['IsBatchItem'];
+                  x.RULE_CODE = param.values['RULE_CODE'];
+                }
+              });
+              param.data.value['Action'][0]['OPTION_1'] = JSON.stringify(
+                param.data.value['ItemCode'],
+              );
+              resolve('OK');
+              break;
+            case 'BAS_LABEL_VAR_WO':
+              param.values['PROD_CODE'] = param.others['PROD_CODE'];
+              param.values['ID'] = buildUUID();
+              var action = await AddOrEditLabelVarByWorkOrder(
+                param.values as unknown as BAS_LABEL_VAR_WO,
+              );
+              resolve(action);
+            case 'isDefault':
+              /* 璁剧疆榛樿宸ヨ壓璺嚎 */
+              var action = await useProdRoute.setDefaulRoute(param);
+              resolve(action);
+            case 'delete':
+              const webSocketStore = useWebSocketStore();
+              if (webSocketStore.GetSocketState == 1) {
+                webSocketStore.sendMessage(
+                  `wsGetNew ${param.values['LABEL_ID']}_#_${param.values['PROD_CODE']}`,
+                );
+              }
+              break;
+          }
+        } catch (e) {
+          reject(e);
+        }
+      });
+    },
+    /**
+     * @description: 鑾峰彇鍙抽敭鑿滃崟鍒楄〃
+     * @param {EventDataNode} node
+     * @return {*}
+     */
+    GetRightMenuList: (node: EventDataNode, ...args): ContextMenuItem[] => {
+      const emit = args[0];
+      const menu = [
+        // {
+        //   label: '鏂板',
+        //   handler: () => {
+        //     console.log('鐐瑰嚮浜嗘柊澧�', node);
+        //   },
+        //   icon: 'bi:plus',
+        // },
+        {
+          label: '鍒犻櫎',
+          handler: () => {
+            console.log('鐐瑰嚮浜嗗垹闄�', node);
+            DeleteProdRoute({ rotId: node.id, rotCode: node.code, prodCode: args[1], custCode: node.cust }).then(
+              (action) => {
+                if (action.IsSuccessed) {
+                  emit('deletenode', node);
+                } else {
+                  createErrorModal({
+                    title: t('sys.api.errorTip'),
+                    content: t(action.LocaleMsg),
+                  });
+                }
+              },
+            );
+          },
+          icon: 'bx:bxs-folder-open',
+        },
+      ];
+      return node.type == 'Route' ? menu : [];
+    },
   };
 
+  /* 浠ヤ笅鏄唴閮ㄦ柟娉曪紝涓峞xport锛屼緵涓婇潰鐨勬柟娉曡皟鐢� */
+
+  let columns: BasicColumn[] = [];
+  /**
+   * @description: 鑾峰彇琛ㄦ牸瀛楁Json
+   * @param {string} type
+   * @return {*}
+   */
+  function GetBaseColumns(type: string, emit, data: Ref<{}>) {
+    switch (type) {
+      case 'BAS_PKG_DTL':
+        columns = [
+          {
+            dataIndex: 'PKG_RULE_ID',
+            title: '鍖呰瑙勫垯ID',
+            ifShow: false,
+            sorter: true,
+            resizable: true,
+          },
+          {
+            dataIndex: 'PKG_CODE',
+            title: '鍖呰缂栫爜',
+            ifShow: false,
+            sorter: true,
+            resizable: true,
+            customRender: () => {},
+          },
+          {
+            dataIndex: 'PKG_NAME',
+            title: '鍖呰鍚嶇О',
+            ifShow: true,
+            sorter: true,
+            resizable: true,
+            customRender: () => {},
+          },
+          {
+            dataIndex: 'PKG_QTY',
+            title: '鍖呰鏁伴噺',
+            ifShow: true,
+            sorter: true,
+            resizable: true,
+            customRender: () => {},
+          },
+          {
+            dataIndex: 'PKG_LEVEL',
+            title: '鍖呰灞傜骇',
+            ifShow: true,
+            sorter: true,
+            resizable: true,
+            customRender: () => {},
+          },
+          {
+            dataIndex: 'LABEL_CODE',
+            title: '鏍囩妯℃澘缂栫爜',
+            // edit: true,
+            // editRule: true,
+            ifShow: true,
+            sorter: true,
+            resizable: true,
+            // editComponent: 'Input',
+            // editComponentProps: (column) => {
+            //   return {
+            //         onClick: (event) => {
+            //         console.log(column);
+            //       },
+            //   };
+            // },
+            // customCell: (record, rowIndex) => {
+            //   return {
+            //     onClick: (event) => {
+            //         console.log(record);
+            //       },
+            //   };
+            // },
+          },
+          {
+            dataIndex: 'LABEL_ID',
+            title: '鏍囩妯℃澘ID',
+            ifShow: false,
+            customRender: () => {},
+          },
+        ] as BasicColumn[];
+        break;
+      case 'ItemCode':
+        /*  
+        public string ITEM_CODE { get; set; }
+        public string RULE_CODE { get; set; }
+        /// <summary>
+        /// 鏄惁鎵规鐗╂枡
+        /// </summary>
+        public bool IsBatchItem { get; set; }
+        /// <summary>
+        /// 涓婃枡鏁伴噺
+        /// </summary>
+        public int QTY { get; set; }
+         */
+        columns = [
+          {
+            dataIndex: 'ITEM_CODE',
+            title: '鐗╂枡缂栫爜',
+            ifShow: true,
+            sorter: true,
+            resizable: true,
+          },
+          {
+            dataIndex: 'RULE_CODE',
+            title: '瑙勫垯缂栫爜',
+            ifShow: true,
+            sorter: true,
+            resizable: true,
+            customRender: () => {},
+          },
+          {
+            dataIndex: 'IsBatchItem',
+            title: '鏄惁鎵规鐗╂枡',
+            ifShow: true,
+            sorter: true,
+            resizable: true,
+            customRender: () => {},
+          },
+          {
+            dataIndex: 'QTY',
+            title: '涓婃枡鏁伴噺',
+            ifShow: true,
+            sorter: true,
+            resizable: true,
+            customRender: () => {},
+          },
+          // {
+          //   dataIndex: 'LABEL_CODE',
+          //   title: '鏍囩妯℃澘缂栫爜',
+          //   // edit: true,
+          //   // editRule: true,
+          //   ifShow: true,
+          //   sorter: true,
+          //   resizable: true,
+          //   // editComponent: 'Input',
+          //   // editComponentProps: (column) => {
+          //   //   return {
+          //   //         onClick: (event) => {
+          //   //         console.log(column);
+          //   //       },
+          //   //   };
+          //   // },
+          //   // customCell: (record, rowIndex) => {
+          //   //   return {
+          //   //     onClick: (event) => {
+          //   //         console.log(record);
+          //   //       },
+          //   //   };
+          //   // },
+          // },
+        ] as BasicColumn[];
+        break;
+    }
+    return columns;
+  }
+
+  /**
+   * @description: 寮瑰嚭閫夋嫨妗�-鐗╂枡閫夋嫨妗嗛厤缃�
+   * @return {*}
+   */
   const itemCodeModalCfg = {
     title: '鐗╂枡鍒楄〃',
     schemas: [
@@ -572,6 +1120,10 @@
     searchInfo: { TABLE_NAME: 'BAS_ITEM' },
   };
 
+  /**
+   * @description: 寮瑰嚭閫夋嫨妗�-瑙勫垯閫夋嫨妗嗛厤缃�
+   * @return {*}
+   */
   const ruleModalCfg = {
     title: '瑙勫垯鍒楄〃',
     schemas: [
@@ -605,6 +1157,10 @@
     searchInfo: { TABLE_NAME: 'BAS_CODE_RULE' },
   };
 
+  /**
+   * @description: 寮瑰嚭閫夋嫨妗�-鎵撳嵃妯℃澘閫夋嫨妗嗛厤缃�
+   * @return {*}
+   */
   const printModalCfg = {
     title: '鎵撳嵃妯℃澘鍒楄〃',
     schemas: [
@@ -671,6 +1227,693 @@
     searchInfo: { TABLE_NAME: 'BAS_PKG_RULE' },
   };
 
+  /**
+   * @description: 琛屼负閰嶇疆琛ㄥ崟瀛楁
+   * @return {*}
+   */
+  const actionFormShema: FormSchema[] = [
+    {
+      field: 'PROD_CODE',
+      label: '浜у搧缂栫爜',
+      component: 'Input',
+      dynamicDisabled: ({ values }) => {
+        return true;
+      },
+      colProps: { span: 12 },
+    },
+    {
+      field: 'ID',
+      label: 'ID',
+      component: 'Input',
+      show: false,
+    },
+    {
+      field: 'ACT_ID',
+      label: 'ACT_ID',
+      component: 'Input',
+      show: false,
+    },
+    {
+      field: 'ROT_ID',
+      label: 'ROT_ID',
+      component: 'Input',
+      show: false,
+    },
+    {
+      field: 'ACT_CODE',
+      label: 'ACT_CODE',
+      component: 'Input',
+      show: false,
+    },
+    {
+      field: 'NODE_ID',
+      label: 'NODE_ID',
+      component: 'Input',
+      show: false,
+    },
+    {
+      field: 'CUST_CODE',
+      label: '瀹㈡埛缂栫爜',
+      component: 'Input',
+      dynamicDisabled: ({ values }) => {
+        return true;
+      },
+      colProps: { span: 12 },
+    },
+    {
+      field: 'ACT_TYPE',
+      label: '琛屼负绫诲瀷',
+      component: 'ApiSelect',
+      colProps: { span: 12 },
+      defaultValue: 0,
+      componentProps: {
+        api: GetEnum,
+        params: { name: 'MES_PROD_ACTION+ACT_TYPEs' },
+        resultField: 'Data',
+        labelField: unref(getLocale) == 'zh_CN' ? 'Desc' : 'Name',
+        valueField: 'Value',
+        // onChange: (e, v) => {
+        //   alert(e)
+        //   console.log('ApiSelect====>:', e, v);
+        // },
+      },
+    },
+    {
+      field: 'IS_ACTIVE',
+      label: '鏄惁鍚敤',
+      required: true,
+      component: 'Select',
+      colProps: { span: 12 },
+      componentProps: {
+        options: [
+          {
+            label: '鏄�',
+            value: 'Y',
+            key: 'Y',
+          },
+          {
+            label: '鍚�',
+            value: 'N',
+            key: 'N',
+          },
+        ],
+      },
+    },
+    {
+      field: 'RULE_CODE',
+      label: '鎵爜楠岃瘉',
+      component: 'Input',
+      colProps: { span: 11 },
+      ifShow: ({ values }) => isScan(values.ACT_TYPE),
+    },
+    {
+      field: '0',
+      label: '1',
+      defaultValue: '',
+      component: 'Input',
+      colProps: { span: 1, pull: 1 },
+      ifShow: ({ values }) => isScan(values.ACT_TYPE),
+      colSlot: 'scanadd',
+    },
+    {
+      field: 'ITEM_CODE',
+      label: '缁勮涓婃枡',
+      colProps: { span: 11 },
+      component: 'Input',
+      ifShow: ({ values }) => isAssy(values.ACT_TYPE),
+    },
+    {
+      field: '00',
+      label: '1',
+      defaultValue: '',
+      component: 'Input',
+      colProps: { span: 1, pull: 1 },
+      ifShow: ({ values }) => isAssy(values.ACT_TYPE),
+      colSlot: 'assyadd',
+    },
+    {
+      field: 'TEST_CODE',
+      label: '浜у搧娴嬭瘯',
+      colProps: { span: 11 },
+      component: 'Input',
+      ifShow: ({ values }) => isTest(values.ACT_TYPE),
+    },
+    {
+      field: 'test0',
+      label: '1',
+      defaultValue: '',
+      component: 'Input',
+      colProps: { span: 1, pull: 1 },
+      ifShow: ({ values }) => isTest(values.ACT_TYPE),
+      colSlot: 'testadd',
+    },
+    {
+      field: 'SAPL_CODE',
+      label: '浜у搧鎶芥',
+      colProps: { span: 11 },
+      component: 'Input',
+      ifShow: ({ values }) => isAudit(values.ACT_TYPE),
+    },
+    {
+      field: 'audit0',
+      label: '1',
+      defaultValue: '',
+      component: 'Input',
+      colProps: { span: 1, pull: 1 },
+      ifShow: ({ values }) => isAudit(values.ACT_TYPE),
+      colSlot: 'auditadd',
+    },
+    {
+      field: 'LABEL_CODE',
+      label: '鏍囩鎵撳嵃',
+      colProps: { span: 9 },
+      component: 'Input',
+      ifShow: ({ values }) => isPrint(values.ACT_TYPE),
+    },
+    {
+      field: 'print0',
+      label: '1',
+      defaultValue: '',
+      component: 'Input',
+      colProps: { span: 2 },
+      ifShow: ({ values }) => isPrint(values.ACT_TYPE),
+      colSlot: 'printadd',
+    },
+    {
+      field: 'print1',
+      label: '1',
+      defaultValue: '',
+      component: 'Input',
+      colProps: { span: 1, pull: window.screen.width == 1366 ? -1 : 1 },
+      ifShow: ({ values }) => isPrint(values.ACT_TYPE),
+      colSlot: 'labeladd',
+    },
+    {
+      field: 'PKG_CODE',
+      label: '鍖呰瑙勫垯',
+      colProps: { span: 11 },
+      component: 'Input',
+      ifShow: ({ values }) => isPackage(values.ACT_TYPE),
+    },
+    {
+      field: 'pkg0',
+      label: '1',
+      defaultValue: '',
+      component: 'Input',
+      colProps: { span: 1, pull: 1 },
+      ifShow: ({ values }) => isPackage(values.ACT_TYPE),
+      colSlot: 'pkgadd',
+    },
+    {
+      field: 'OPTION_2',
+      label: '鏄惁绉伴噸',
+      required: true,
+      component: 'Select',
+      colProps: { span: 12 },
+      ifShow: ({ values }) => isPackage(values.ACT_TYPE),
+      componentProps: {
+        options: [
+          {
+            label: '鏄�',
+            value: 'Y',
+            key: 'Y',
+          },
+          {
+            label: '鍚�',
+            value: 'N',
+            key: 'N',
+          },
+        ],
+      },
+    },
+    {
+      field: 'REMARK',
+      label: '澶囨敞',
+      component: 'Input',
+      colProps: { span: 12 },
+    },
+    {
+      field: 'OPTION_1',
+      label: '琛屼负閫夐」1',
+      component: 'Input',
+      colProps: { span: 12 },
+      show: false,
+    },
+  ];
+
+  /**
+   * @description: 宸ュ簭閰嶇疆琛ㄥ崟瀛楁
+   * @return {*}
+   */
+  const nodeFormShema: FormSchema[] = [
+    {
+      field: 'PROD_CODE',
+      label: '浜у搧缂栫爜',
+      component: 'Input',
+      dynamicDisabled: ({ values }) => {
+        return true;
+      },
+      colProps: { span: 12 },
+    },
+    {
+      field: 'ID',
+      label: 'ID',
+      component: 'Input',
+      show: false,
+    },
+    {
+      field: 'ACT_ID',
+      label: 'ACT_ID',
+      component: 'Input',
+      show: false,
+    },
+    {
+      field: 'ROT_ID',
+      label: 'ROT_ID',
+      component: 'Input',
+      show: false,
+    },
+    {
+      field: 'NODE_ID',
+      label: 'NODE_ID',
+      component: 'Input',
+      show: false,
+    },
+    {
+      field: 'NODE_NAME',
+      label: '宸ュ簭鑺傜偣鍚嶇О',
+      component: 'Input',
+    },
+    {
+      field: 'CUST_CODE',
+      label: '瀹㈡埛缂栫爜',
+      component: 'Input',
+      dynamicDisabled: ({ values }) => {
+        return true;
+      },
+      colProps: { span: 12 },
+    },
+    {
+      field: 'OPER_CODE',
+      label: '宸ュ簭缂栫爜',
+      component: 'Input',
+    },
+    {
+      field: 'IS_ACTIVE',
+      label: '鏄惁鍚敤',
+      required: true,
+      defaultValue: 'N',
+      component: 'Select',
+      colProps: { span: 12 },
+      componentProps: {
+        options: [
+          {
+            label: '鏄�',
+            value: 'Y',
+            key: 'Y',
+          },
+          {
+            label: '鍚�',
+            value: 'N',
+            key: 'N',
+          },
+        ],
+      },
+    },
+    {
+      field: 'IS_CALC_FPY',
+      label: '鏄惁璁$畻鐩撮�氱巼',
+      required: true,
+      component: 'Select',
+      defaultValue: 'N',
+      colProps: { span: 12 },
+      componentProps: {
+        options: [
+          {
+            label: '鏄�',
+            value: 'Y',
+            key: 'Y',
+          },
+          {
+            label: '鍚�',
+            value: 'N',
+            key: 'N',
+          },
+        ],
+      },
+    },
+    {
+      field: 'CAN_SKIP',
+      label: '鏄惁鍏佽璺崇珯',
+      required: true,
+      defaultValue: 'N',
+      component: 'Select',
+      colProps: { span: 12 },
+      componentProps: {
+        options: [
+          {
+            label: '鏄�',
+            value: 'Y',
+            key: 'Y',
+          },
+          {
+            label: '鍚�',
+            value: 'N',
+            key: 'N',
+          },
+        ],
+      },
+    },
+    {
+      field: 'IS_INPUT',
+      label: '鏄惁鎶曞叆绔�',
+      required: true,
+      defaultValue: 'N',
+      component: 'Select',
+      colProps: { span: 12 },
+      componentProps: {
+        options: [
+          {
+            label: '鏄�',
+            value: 'Y',
+            key: 'Y',
+          },
+          {
+            label: '鍚�',
+            value: 'N',
+            key: 'N',
+          },
+        ],
+      },
+    },
+    {
+      field: 'IS_OUTPUT',
+      label: '鏄惁浜у嚭绔�',
+      required: true,
+      defaultValue: 'N',
+      component: 'Select',
+      colProps: { span: 12 },
+      componentProps: {
+        options: [
+          {
+            label: '鏄�',
+            value: 'Y',
+            key: 'Y',
+          },
+          {
+            label: '鍚�',
+            value: 'N',
+            key: 'N',
+          },
+        ],
+      },
+    },
+    {
+      field: 'ALLOW_DFT_IN',
+      label: '鏄惁鍏佽涓嶈壇鍝佽繘绔�',
+      required: true,
+      defaultValue: 'N',
+      component: 'Select',
+      colProps: { span: 12 },
+      componentProps: {
+        options: [
+          {
+            label: '鏄�',
+            value: 'Y',
+            key: 'Y',
+          },
+          {
+            label: '鍚�',
+            value: 'N',
+            key: 'N',
+          },
+        ],
+      },
+    },
+    {
+      field: 'IF_DFT_OFFLINE',
+      label: '鍒ゆ柇涓嶈壇鍚庢槸鍚︿笅绾�',
+      required: true,
+      defaultValue: 'N',
+      component: 'Select',
+      colProps: { span: 12 },
+      componentProps: {
+        options: [
+          {
+            label: '鏄�',
+            value: 'Y',
+            key: 'Y',
+          },
+          {
+            label: '鍚�',
+            value: 'N',
+            key: 'N',
+          },
+        ],
+      },
+      ifShow: ({ values }) => values.OPER_CODE == 'TestNode',
+    },
+    {
+      field: 'REMARK',
+      label: '澶囨敞',
+      component: 'Input',
+      colProps: { span: 12 },
+    },
+  ];
+
+  const crudForms = {
+    BAS_PKG_DTL: [
+      {
+        label: '鍖呰瑙勫垯ID',
+        field: 'PKG_RULE_ID',
+        component: 'Input',
+        colProps: {
+          span: 24,
+        },
+        dynamicDisabled: ({ values }) => {
+          return true;
+        },
+      },
+      {
+        label: '鍖呰灞傜骇',
+        field: 'PKG_LEVEL',
+        component: 'Input',
+        colProps: {
+          span: 24,
+        },
+        dynamicDisabled: ({ values }) => {
+          return true;
+        },
+      },
+      {
+        field: 'PKG_CODE',
+        label: '鍖呰/杞藉叿缂栫爜',
+        component: 'Input',
+        colProps: {
+          span: 24,
+        },
+        dynamicDisabled: ({ values }) => {
+          return true;
+        },
+      },
+      {
+        label: '鍖呰鏁伴噺',
+        field: 'PKG_QTY',
+        component: 'Input',
+        colProps: {
+          span: 24,
+        },
+        dynamicDisabled: ({ values }) => {
+          return true;
+        },
+      },
+      {
+        field: 'LABEL_CODE',
+        label: '妯℃澘缂栫爜',
+        component: 'Input',
+        show: true,
+        // required: true,
+        colProps: {
+          span: 22,
+        },
+      },
+      {
+        field: 'BAS_LABEL_TEMP1PSelect_0', //鎸変綆浠g爜閰嶇疆鐨勮鍒欙紝瀹炰綋鍚�+搴忓彿+PSelect_0锛屽簭鍙风敤鏉ュ尯鍒嗗涓殑鏃跺�欙紝PSelect_0杩欐槸涓浐瀹氬悗缂�
+        label: '1',
+        defaultValue: 'BAS_LABEL_TEMP',
+        component: 'Input',
+        colProps: { span: 2 },
+        colSlot: 'BAS_LABEL_TEMP1add', //鎸変綆浠g爜閰嶇疆鐨勮鍒欙紝瀹炰綋鍚�+搴忓彿+add锛屽簭鍙风敤鏉ュ尯鍒嗗涓殑鏃跺�欙紝add杩欐槸涓浐瀹氬悗缂�
+      },
+      {
+        label: '鍖呰鍚嶇О',
+        field: 'PKG_NAME',
+        component: 'Input',
+        colProps: {
+          span: 24,
+        },
+        show: false,
+      },
+      {
+        label: '澶囨敞',
+        field: 'REMARK',
+        component: 'Input',
+        colProps: {
+          span: 24,
+        },
+        dynamicDisabled: ({ values }) => {
+          return true;
+        },
+      },
+      {
+        label: 'ID',
+        field: 'ID',
+        component: 'Input',
+        colProps: {
+          span: 24,
+        },
+        show: false,
+      },
+    ] as FormSchema[],
+    ItemCode: [
+      {
+        label: '鐗╂枡缂栫爜',
+        field: 'ITEM_CODE',
+        component: 'Input',
+        colProps: {
+          span: 24,
+        },
+        dynamicDisabled: ({ values }) => {
+          return false;
+        },
+      },
+      {
+        field: 'RULE_CODE',
+        label: '瑙勫垯缂栫爜',
+        component: 'Input',
+        colProps: {
+          span: 22,
+        },
+        dynamicDisabled: ({ values }) => {
+          return false;
+        },
+      },
+      {
+        field: 'BAS_CODE_RULE1PSelect_0', //鎸変綆浠g爜閰嶇疆鐨勮鍒欙紝瀹炰綋鍚�+搴忓彿+PSelect_0锛屽簭鍙风敤鏉ュ尯鍒嗗涓殑鏃跺�欙紝PSelect_0杩欐槸涓浐瀹氬悗缂�
+        label: '1',
+        defaultValue: 'BAS_CODE_RULE',
+        component: 'Input',
+        colProps: { span: 2 },
+        colSlot: 'BAS_CODE_RULE1add', //鎸変綆浠g爜閰嶇疆鐨勮鍒欙紝瀹炰綋鍚�+搴忓彿+add锛屽簭鍙风敤鏉ュ尯鍒嗗涓殑鏃跺�欙紝add杩欐槸涓浐瀹氬悗缂�
+      },
+      {
+        label: '鏄惁鎵规鐗╂枡',
+        field: 'IsBatchItem',
+        colProps: {
+          span: 24,
+        },
+        component: 'Select',
+        componentProps: {
+          options: [
+            {
+              label: '鏄�',
+              value: 'Y',
+              key: 'Y',
+            },
+            {
+              label: '鍚�',
+              value: 'N',
+              key: 'N',
+            },
+          ],
+        },
+      },
+      {
+        label: '涓婃枡鏁伴噺',
+        field: 'QTY',
+        component: 'Input',
+        colProps: {
+          span: 24,
+        },
+        dynamicDisabled: ({ values }) => {
+          return false;
+        },
+      },
+    ] as FormSchema[],
+  };
+
+  /**
+   * @description: 妯℃澘缁存姢
+   * @param {*} args
+   * @param {Recordable} params
+   * @return {*}
+   */
+  function handleTemplate(args, params: Recordable) {
+    const openCrudModal = args[0];
+    // const OrderNo = args[2];
+    const ProdCode = args[2];
+    openCrudModal(true, {
+      isUpdate: true, //鏄惁鏇存柊鎿嶄綔
+      entityName: 'ProdRouteBinding', //鏄摢涓〉闈�
+      ctype: 'BAS_LABEL_VAR_WO', //瀹炰綋鍚嶇О
+      title: '妯℃澘缁存姢', //鏍囬
+      width: '1024px', //寮瑰嚭妗嗗搴�
+      ItemColumns: TemplateBasColumn, //寮瑰嚭妗嗕腑琛ㄦ牸瀛楁缁撴瀯
+      schemas: [], //鏌ヨ鏉′欢瀛楁缁撴瀯
+      others: { WORK_ORDER: '', PROD_CODE: ProdCode }, //闇�瑕佸甫鍒板脊鍑虹獥鍙d腑鐨勬暟鎹�
+      searchInfo: {
+        TABLE_NAME: 'BAS_LABEL_VAR_WO', //瀹炰綋鍚嶇О
+        LabelId: params['record'].LABEL_ID, //妯℃澘ID
+        WorkOrder: '', //宸ュ崟鍙�
+        ProdCode: ProdCode,
+        CustCode: '',
+        apiUrl: mesApi.GetLabelVarByWorkOrder, //鑷畾涔夎幏鍙栨暟鎹垎椤电殑api锛屼笉鐢ㄩ粯璁ょ殑鍩虹鏂规硶
+      },
+      values: params['record'], //琛ㄥ崟璁板綍
+    });
+  }
+
+  /* 涓嬪彂鐣岄潰涓殑琛ㄥ崟鍒楄〃 */
+  const TemplateBasColumn = [
+    {
+      dataIndex: 'LABEL_ID',
+      title: '鏍囩妯℃澘ID',
+      ifShow: false,
+      sorter: true,
+      resizable: true,
+    },
+    {
+      title: '宸ュ崟鍙�',
+      dataIndex: 'WORK_ORDER',
+      width: 280,
+      // editRow: true,
+      // editable: true,
+      ifShow: false,
+    },
+    {
+      title: '宸ュ崟鍙�',
+      dataIndex: 'PROD_CODE',
+      width: 280,
+      ifShow: false,
+    },
+    {
+      title: '鍙橀噺鍚�',
+      dataIndex: 'VAR_NAME',
+    },
+    {
+      title: '鍙橀噺鍊�',
+      dataIndex: 'VAR_VALUE',
+      editRow: true,
+      editRule: true,
+    },
+    {
+      title: '榛樿鍊�',
+      dataIndex: 'DEFAULT_VALUE',
+      // editRow: true,
+      // editRule: true,
+    },
+  ] as BasicColumn[];
+
   return [methods];
 }
 

--
Gitblit v1.9.3