From 21a4e09672b1177d40c2bb5b937a8780c5eaa7fb Mon Sep 17 00:00:00 2001
From: Ben Lin <maobin001@msn.com>
Date: 星期六, 08 三月 2025 15:03:34 +0800
Subject: [PATCH] 一些更新

---
 src/views/tigerprojects/system/lowcode/entityts/WoRouteBinding.ts |  254 ++++++++++++++++++++++++++++++++++++--------------
 1 files changed, 180 insertions(+), 74 deletions(-)

diff --git a/src/views/tigerprojects/system/lowcode/entityts/WoRouteBinding.ts b/src/views/tigerprojects/system/lowcode/entityts/WoRouteBinding.ts
index fdfb039..f41d4e9 100644
--- a/src/views/tigerprojects/system/lowcode/entityts/WoRouteBinding.ts
+++ b/src/views/tigerprojects/system/lowcode/entityts/WoRouteBinding.ts
@@ -1,17 +1,17 @@
 /*
- * @Description: 浜у搧宸ヨ壓璺嚎鐩稿叧
+ * @Description: 宸ュ崟宸ヨ壓璺嚎鐩稿叧
  * @Author: Ben Lin
  * @version:
  * @Date: 2024-06-19 20:34:27
  * @LastEditors: Ben Lin
- * @LastEditTime: 2024-09-24 09:28:56
+ * @LastEditTime: 2024-10-23 23:55:56
  */
 
-import { Ref, h, ref, render, unref } from 'vue';
+import { Ref, unref } from 'vue';
 import {
   DeleteWoRoute,
   GetWoPTree,
-  SP_MES_PROD2WO,
+  ProdRouteToWo,
   SP_MES_WO2CUST,
 } from '/@/api/tigerapi/mes/router';
 import { GetEnum, SaveEntity, convertToTree, getEntity } from '/@/api/tigerapi/system';
@@ -28,13 +28,19 @@
 import { ContextMenuItem } from '/@/components/TigerTree';
 import { AddOrEditLabelVarByWorkOrder, UpdateWoStatus } from '/@/api/tigerapi/mes/wo';
 import { useForm } from '/@/components/Form';
-import { BAS_LABEL_VAR_WO } from '/@/api/tigerapi/model/mesModel';
+import { BAS_LABEL_VAR_WO, MesRotTree } from '/@/api/tigerapi/model/mesModel';
 import { buildUUID } from '/@/utils/uuid';
 import { mesApi } from '/@/api/tigerapi/mes/mesApi';
+import { useProdRouteStore } from '/@/store/modules/prodRoute';
+import { useWebSocketStore } from '/@/store/modules/websocket';
+import { useGlobSetting } from '/@/hooks/setting';
+import { cloneDeep } from 'vue-json-pretty/types/utils';
 
 const { t } = useI18n();
 const { createErrorModal } = useMessage();
+const useProdRoute = useProdRouteStore();
 const { getLocale } = useLocale();
+const globSetting = useGlobSetting();
 function _default() {
   /* 瀹氫箟鍙橀噺 */
   const isNormal = (type: number) => type === 0;
@@ -80,7 +86,7 @@
      * @return {*}
      */
     GetHomeUrl: (params: {}) => {
-      return `/BIZ_MES_WO/LC/${encodeURI(JSON.stringify({ ID: 'BIZ_MES_WO', colSlots: params['colSlots'], crudColSlots: [] }))}`;
+      return `/BIZ_MES_WO/LC/${encodeURI(JSON.stringify({ ID: 'BIZ_MES_WO', "EntityName":"BIZ_MES_WO",colSlots: params['colSlots'], crudColSlots: [] }))}`;
     },
     /**
      * @description: 鑾峰彇鏍戝舰鏁版嵁
@@ -90,15 +96,9 @@
     fetchTreeData: async (type: string, wo: string) => {
       let data = { title: '', treeData: [] as any[], fieldNames: {} };
       let prodTreeData = await GetWoPTree({ wo: wo });
-      // 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');
-      if (data.treeData.length == 0) {
-        data.treeData.push({
+      let _treeData = convertToTree(prodTreeData, 'pid', 'tid', 'root');
+      if (_treeData.length == 0) {
+        _treeData.push({
           pid: 'root',
           tid: '',
           id: '',
@@ -106,10 +106,25 @@
           prod: '',
           name: wo,
           type: 'WorkOrder',
+          cust: '',
+          code: '',
+          seq: 0,
         });
       }
       data.title = '宸ュ崟宸ヨ壓璺嚎';
       data.fieldNames = { key: 'tid', title: 'name' };
+      if (!useProdRoute.changeToCPPage || !useProdRoute.curProdRotTree.some((q) => q.name == wo)) {
+        /* 淇濆瓨宸ヨ壓鏍戝舰鏁版嵁鍒扮姸鎬佺鐞� */
+        useProdRoute.setCurProdRotTree({
+          name: wo,
+          treeInfo: _treeData as unknown as MesRotTree[],
+        });
+      }
+      useProdRoute.setWo(wo);
+      useProdRoute.setname(wo);
+      if (useProdRoute.curProdRotTree.some((q) => q.name == wo)) {
+        data.treeData = useProdRoute.curProdRotTree.filter((q) => q.name == wo)[0].treeInfo;
+      }
       return data;
     },
     /**
@@ -167,18 +182,24 @@
      * @return {*}
      */
     GetUseTables: (data: Ref<{}>, ...args) => {
+      let sortData = isNullOrUnDef(data.value['BAS_PKG_DTL']) 
+        ? data.value['BAS_PKG_DTL']
+        : data.value['BAS_PKG_DTL'].sort((a, b) => {
+            return a.PKG_LEVEL - b.PKG_LEVEL;
+          });
       return {
         BAS_PKG_DTL: useTable({
           title: '鍒楄〃淇℃伅',
           // api: getListByPage,
           // searchInfo: { TABLE_NAME: 'V_BAS_PKG_DTL' },
-          dataSource: data.value['BAS_PKG_DTL'],
+          dataSource: sortData,
           columns: GetBaseColumns('BAS_PKG_DTL', args[0], data),
-          maxHeight: 520,
+          // maxHeight: 520,
           useSearchForm: false,
           showTableSetting: false,
           bordered: true,
-          canResize: true,
+          isCanResizeParent: true,
+          // canResize: true,
           showIndexColumn: false,
           // rowSelection: {
           //   type: 'radio', //'checkbox'
@@ -197,11 +218,12 @@
           // searchInfo: { TABLE_NAME: 'V_BAS_PKG_DTL' },
           dataSource: data.value['ItemCode'],
           columns: GetBaseColumns('ItemCode', args[0], data),
-          maxHeight: 520,
+          // maxHeight: 520,
           useSearchForm: false,
           showTableSetting: false,
           bordered: true,
-          canResize: true,
+          isCanResizeParent: true,
+          // canResize: true,
           showIndexColumn: false,
           // rowSelection: {
           //   type: 'radio', //'checkbox'
@@ -317,10 +339,9 @@
                 ? ents.Data.Items
                 : JSON.parse(res.Data.Items[0].OPTION_1);
               /* 濡傛灉OPTION_1瀛楁涓虹┖灏辨妸鍖呰淇℃伅杞琂SON瀛樺埌OPTION_1瀛楁 */
-              res.Data.Items[0].OPTION_1 = isNullOrEmpty(res.Data.Items[0].OPTION_1)
-                ? JSON.stringify(ents.Data.Items)
-                : res.Data.Items[0].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);
@@ -333,29 +354,53 @@
           }
           if (params['selectedNodes'][0].type == 'Node') {
             resetFieldsNode();
-            setFieldsValueNode({
-              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: res.Data.Items[0].IS_ACTIVE,
-              IS_CALC_FPY: res.Data.Items[0].IS_CALC_FPY,
-              CAN_SKIP: res.Data.Items[0].CAN_SKIP,
-              IS_INPUT: res.Data.Items[0].IS_INPUT,
-              IS_OUTPUT: res.Data.Items[0].IS_OUTPUT,
-              ALLOW_DFT_IN: res.Data.Items[0].ALLOW_DFT_IN,
-              REMARK: res.Data.Items[0].REMARK,
-              WORK_ORDER: params['objParams'].value['CODE'],
-              CUST_CODE: params['selectedNodes'][0].cust,
-              PROD_CODE: params['selectedNodes'][0].prod,
-            });
+            // const wonode = await getEntity({
+            //   sqlcmd: `WORK_ORDER ='${params['objParams'].value['CODE']}' AND ID = '${res.Data.Items[0].NODE_ID}'`,
+            //   entityName: 'MES_WO_NODE',
+            //   order: '',
+            // });
+            
+            if(isNullOrEmpty(res.Data.Items[0].IS_ACTIVE)){
+              res.Data.Items[0].IS_ACTIVE = 'N'
+            }
+            if(isNullOrEmpty(res.Data.Items[0].IS_CALC_FPY)){
+              res.Data.Items[0].IS_CALC_FPY = 'N'
+            }
+            if(isNullOrEmpty(res.Data.Items[0].CAN_SKIP)){
+              res.Data.Items[0].CAN_SKIP = 'N'
+            }
+            if(isNullOrEmpty(res.Data.Items[0].IS_INPUT)){
+              res.Data.Items[0].IS_INPUT = 'N'
+            }
+            if(isNullOrEmpty(res.Data.Items[0].IS_OUTPUT)){
+              res.Data.Items[0].IS_OUTPUT = 'N'
+            }
+            if(isNullOrEmpty(res.Data.Items[0].ALLOW_DFT_IN)){
+              res.Data.Items[0].ALLOW_DFT_IN = 'N'
+            }
+            if(isNullOrEmpty(res.Data.Items[0].IF_DFT_OFFLINE)){
+              res.Data.Items[0].IF_DFT_OFFLINE = 'N'
+            }
+            if(!isNullOrEmpty(params['objParams'].value['CODE'])){
+              res.Data.Items[0].WORK_ORDER = params['objParams'].value['CODE']
+            }
+            if(!isNullOrEmpty(params['selectedNodes'][0].prod)){
+              res.Data.Items[0].PROD_CODE = params['selectedNodes'][0].prod
+            }
+            if(!isNullOrEmpty(params['selectedNodes'][0].cust)){
+              res.Data.Items[0].CUST_CODE = params['selectedNodes'][0].cust
+            }
+            setFieldsValueNode(res.Data.Items[0]);
+            /* 榛樿淇濆瓨 */
+            SaveEntity(res.Data.Items[0], true, 'MES_WO_OPER');
+
             result['name'] = 'Node';
             result['isShow'] = {
               BAS_PKG_DTL: false,
               ItemCode: false,
             };
           }
+          useProdRoute.setcurDtl(result);
           resolve(result);
         } catch (e) {
           reject(e);
@@ -377,6 +422,9 @@
       }
       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');
@@ -391,9 +439,11 @@
     OpenSelectItem: (openItemModal: Fn, ...args) => {
       let config = {};
       const openCrudModal = args[1];
-      const record = args[2];
+      const record = args[2]; //甯﹁繃鏉ョ殑璁板綍
       const OrderNo = args[3];
-      switch (args[0]) {
+      const WoRecord = args[4];
+      /* args[0]鏄晫闈笂鐨剆lot鍚嶅瓧锛屾牴鎹畇lot鍚嶅瓧鏉ュ啓涓嶅悓鐨勯�昏緫瀹炵幇 */
+      switch (args[0]) { 
         case 'scanadd':
           config = ruleModalCfg;
           break;
@@ -410,6 +460,7 @@
           config = pkgModalCfg;
           break;
       }
+      /* 濡傛灉slot鏄�'labeladd'锛屾墦寮�澧炲垹鏀规ā鎬佺獥鍙o紝鍙紪杈戣 */
       if (args[0] == 'labeladd') {
         openCrudModal(true, {
           isUpdate: true, //鏄惁鏇存柊鎿嶄綔
@@ -419,7 +470,12 @@
           width: '1024px', //寮瑰嚭妗嗗搴�
           ItemColumns: TemplateBasColumn, //寮瑰嚭妗嗕腑琛ㄦ牸瀛楁缁撴瀯
           schemas: [], //鏌ヨ鏉′欢瀛楁缁撴瀯
-          others: { WORK_ORDER: OrderNo }, //闇�瑕佸甫鍒板脊鍑虹獥鍙d腑鐨勬暟鎹�
+          others: { WORK_ORDER: OrderNo}, //闇�瑕佸甫鍒板脊鍑虹獥鍙d腑鐨勬暟鎹�
+          alertConfig: {
+            showAlert: true,
+            message: '閿�鍞鍗曞娉�',
+            description: WoRecord.SALES_REMARK,
+          },  /* 鍦ㄥ脊鍑虹獥鍙f渶涓婁綅缃樉绀烘彁閱掍俊鎭紝鏄剧ず閿�鍞鍗曞娉� */
           searchInfo: {
             TABLE_NAME: 'BAS_LABEL_VAR_WO', //瀹炰綋鍚嶇О
             LabelId: record.LABEL_CODE, //妯℃澘ID
@@ -513,31 +569,19 @@
             return;
           }
           /* 鏇存柊宸ュ崟鐘舵�佸苟鐢熸垚宸ュ崟鐨勫伐鑹鸿矾绾� */
-          UpdateWoStatus({
-            UserId: useUserStore().getUserInfo.userId as string,
-            WorkOrder: args[1]['CODE'],
-            Status: -1,
-            RouteStatus: 1,
-            WoBatch: '',
+          ProdRouteToWo({
+            rotId: d.values.id,
+            wo: args[1]['CODE'],
+            rotCode: '',
+            options: {
+              //鏍规嵁鎹偣鏌ヨ锛屽繀闇�甯﹁繖涓弬鏁�
+              UserId: useUserStore().getUserInfo.userId,
+              ByOrg: true,
+              CurOrg: useUserStore().getUserInfo.orgCode,
+            },
           }).then((action) => {
             if (action.IsSuccessed) {
-              SP_MES_PROD2WO({ rotId: d.values.id, wo: args[1]['CODE'] }).then((action) => {
-                if (action.IsSuccessed) {
-                  args[2]();
-                } else {
-                  UpdateWoStatus({
-                    UserId: useUserStore().getUserInfo.userId as string,
-                    WorkOrder: args[1]['CODE'],
-                    Status: -1,
-                    RouteStatus: 0,
-                    WoBatch: '',
-                  });
-                  createErrorModal({
-                    title: t('sys.api.errorTip'),
-                    content: t(action.LocaleMsg),
-                  });
-                }
-              });
+              args[2]();
             } else {
               createErrorModal({
                 title: t('sys.api.errorTip'),
@@ -614,7 +658,7 @@
      * @param {Ref} selectedNodes
      * @return {*}
      */
-    SelectNode: (selectedNodes: Ref<any[]>) => {
+    SelectNode: (selectedNodes: Ref<any[]>, code: string) => {
       let result = {
         showConfig: false,
         showNav: false,
@@ -639,6 +683,7 @@
           result.showOtherTable = { BAS_PKG_DTL: false, ItemCode: false };
         }
       }
+      useProdRoute.setCurSelectedNodes({ name: code, SelectedNodes: selectedNodes.value });
       return result;
     },
     /**
@@ -657,6 +702,7 @@
               url: '/addRoute',
               action: 'addRoute',
               isStep: false,
+              isCustEl: false,
             },
             // {
             //   title: '娣诲姞瀹㈡埛宸ヨ壓璺嚎',
@@ -677,6 +723,7 @@
               url: '/editRoute',
               action: 'editRoute',
               isStep: false,
+              isCustEl: false,
             },
           ];
           break;
@@ -812,7 +859,7 @@
               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'];
+                  x.LABEL_ID = param.values['LABEL_CODE'];
                 }
               });
               param.data.value['Action'][0]['OPTION_1'] = JSON.stringify(
@@ -833,7 +880,26 @@
             case 'BAS_LABEL_VAR_WO':
               param.values['WORK_ORDER'] = param.others['WORK_ORDER'];
               param.values['ID'] = buildUUID();
-              await AddOrEditLabelVarByWorkOrder(param.values as unknown as BAS_LABEL_VAR_WO);
+
+              const apiaction = await AddOrEditLabelVarByWorkOrder(
+                param.values as unknown as BAS_LABEL_VAR_WO,
+              );
+              if (apiaction.IsSuccessed) {
+                const webSocketStore = useWebSocketStore();
+                if (webSocketStore.GetSocketState == 1) {
+                  webSocketStore.sendMessage(
+                    `wsGetNew ${param.values['LABEL_ID']}_#_${param.values['WORK_ORDER']}`,
+                  );
+                }
+              }
+            case 'delete':
+              const webSocketStore = useWebSocketStore();
+              if (webSocketStore.GetSocketState == 1) {
+                webSocketStore.sendMessage(
+                  `wsGetNew ${param.values['LABEL_ID']}_#_${param.values['WORK_ORDER']}`,
+                );
+              }
+              break;
           }
           resolve('OK');
         } catch (e) {
@@ -1125,6 +1191,14 @@
           span: 12,
         },
       },
+      {
+        field: 'LABEL_NAME',
+        component: 'Input',
+        label: '妯℃澘鍚嶇О',
+        colProps: {
+          span: 12,
+        },
+      },
     ],
     ItemColumns: [
       {
@@ -1370,7 +1444,7 @@
     {
       field: 'PKG_CODE',
       label: '鍖呰瑙勫垯',
-      colProps: { span: 11 },
+      colProps: window.screen.width == 2560 ? { span: 10 } : { span: 11 },
       component: 'Input',
       ifShow: ({ values }) => isPackage(values.ACT_TYPE),
     },
@@ -1379,7 +1453,10 @@
       label: '1',
       defaultValue: '',
       component: 'Input',
-      colProps: { span: 1, pull: window.screen.width == 1366 ? -1 : 1 },
+      colProps:
+        window.screen.width == 2560
+          ? { span: 2, pull: 1 }
+          : { span: 1, pull: window.screen.width == 1366 ? -1 : 1 },
       ifShow: ({ values }) => isPackage(values.ACT_TYPE),
       colSlot: 'pkgadd',
     },
@@ -1610,6 +1687,29 @@
       },
     },
     {
+      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',
@@ -1787,6 +1887,7 @@
   function handleTemplate(args, params: Recordable) {
     const openCrudModal = args[0];
     const OrderNo = args[2];
+    const WoRecord = params['mainRecord'];
     openCrudModal(true, {
       isUpdate: true, //鏄惁鏇存柊鎿嶄綔
       entityName: 'WoRouteBinding', //鏄摢涓〉闈�
@@ -1796,6 +1897,11 @@
       ItemColumns: TemplateBasColumn, //寮瑰嚭妗嗕腑琛ㄦ牸瀛楁缁撴瀯
       schemas: [], //鏌ヨ鏉′欢瀛楁缁撴瀯
       others: { WORK_ORDER: OrderNo }, //闇�瑕佸甫鍒板脊鍑虹獥鍙d腑鐨勬暟鎹�
+      alertConfig: {
+        showAlert: true,
+        message: '閿�鍞鍗曞娉�',
+        description: WoRecord.SALES_REMARK,
+      }, /* 鍦ㄥ脊鍑虹獥鍙f渶涓婁綅缃樉绀烘彁閱掍俊鎭紝鏄剧ず閿�鍞鍗曞娉� */
       searchInfo: {
         TABLE_NAME: 'BAS_LABEL_VAR_WO', //瀹炰綋鍚嶇О
         LabelId: params['record'].LABEL_ID, //妯℃澘ID
@@ -1844,8 +1950,8 @@
     {
       title: '榛樿鍊�',
       dataIndex: 'DEFAULT_VALUE',
-      editRow: true,
-      editRule: true,
+      // editRow: true,
+      // editRule: true,
     },
   ] as BasicColumn[];
 

--
Gitblit v1.9.3