From 6cc2d85787171281c269f4a6c3290b4a0762bcb6 Mon Sep 17 00:00:00 2001
From: YangYuGang <1378265336@qq.com>
Date: 星期三, 05 三月 2025 16:21:43 +0800
Subject: [PATCH] 生产工具

---
 src/views/tigerprojects/system/lowcode/entityts/WoRouteBinding.ts |  193 +++++++++++++++++++++++++++++-------------------
 1 files changed, 117 insertions(+), 76 deletions(-)

diff --git a/src/views/tigerprojects/system/lowcode/entityts/WoRouteBinding.ts b/src/views/tigerprojects/system/lowcode/entityts/WoRouteBinding.ts
index 3bc1df4..5be5704 100644
--- a/src/views/tigerprojects/system/lowcode/entityts/WoRouteBinding.ts
+++ b/src/views/tigerprojects/system/lowcode/entityts/WoRouteBinding.ts
@@ -4,14 +4,14 @@
  * @version:
  * @Date: 2024-06-19 20:34:27
  * @LastEditors: Ben Lin
- * @LastEditTime: 2024-10-22 23:36:24
+ * @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';
@@ -34,6 +34,7 @@
 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();
@@ -119,6 +120,8 @@
           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;
       }
@@ -179,12 +182,17 @@
      * @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,
           useSearchForm: false,
@@ -331,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);
@@ -347,43 +354,46 @@
           }
           if (params['selectedNodes'][0].type == 'Node') {
             resetFieldsNode();
-            const wonode = await getEntity({
-              sqlcmd: `WORK_ORDER ='${params['objParams'].value['CODE']}' AND ID = '${res.Data.Items[0].NODE_ID}'`,
-              entityName: 'MES_WO_NODE',
-              order: '',
-            });
-            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: 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:
-                wonode.Data.Items[0].IS_FIRST_NODE == 'Y'
-                  ? 'Y'
-                  : 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,
-              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,
@@ -429,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;
@@ -448,6 +460,7 @@
           config = pkgModalCfg;
           break;
       }
+      /* 濡傛灉slot鏄�'labeladd'锛屾墦寮�澧炲垹鏀规ā鎬佺獥鍙o紝鍙紪杈戣 */
       if (args[0] == 'labeladd') {
         openCrudModal(true, {
           isUpdate: true, //鏄惁鏇存柊鎿嶄綔
@@ -457,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
@@ -551,33 +569,19 @@
             return;
           }
           /* 鏇存柊宸ュ崟鐘舵�佸苟鐢熸垚宸ュ崟鐨勫伐鑹鸿矾绾� */
-          UpdateWoStatus({
-            UserId: useUserStore().getUserInfo.userId as string,
-            WorkOrder: args[1]['CODE'],
-            Status: -1,
-            RouteStatus: 1,
-            WoBatch: '',
-            ActLine: '',
+          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: '',
-                    ActLine: '',
-                  });
-                  createErrorModal({
-                    title: t('sys.api.errorTip'),
-                    content: t(action.LocaleMsg),
-                  });
-                }
-              });
+              args[2]();
             } else {
               createErrorModal({
                 title: t('sys.api.errorTip'),
@@ -884,7 +888,7 @@
                 const webSocketStore = useWebSocketStore();
                 if (webSocketStore.GetSocketState == 1) {
                   webSocketStore.sendMessage(
-                    `wsGetNew ${param.values['LABEL_ID']}_#_${ param.values['WORK_ORDER']}`,
+                    `wsGetNew ${param.values['LABEL_ID']}_#_${param.values['WORK_ORDER']}`,
                   );
                 }
               }
@@ -892,10 +896,10 @@
               const webSocketStore = useWebSocketStore();
               if (webSocketStore.GetSocketState == 1) {
                 webSocketStore.sendMessage(
-                  `wsGetNew ${param.values['LABEL_ID']}_#_${ param.values['WORK_ORDER']}`,
+                  `wsGetNew ${param.values['LABEL_ID']}_#_${param.values['WORK_ORDER']}`,
                 );
               }
-            break;
+              break;
           }
           resolve('OK');
         } catch (e) {
@@ -1183,6 +1187,14 @@
         field: 'LABEL_CODE',
         component: 'Input',
         label: '妯℃澘缂栫爜',
+        colProps: {
+          span: 12,
+        },
+      },
+      {
+        field: 'LABEL_NAME',
+        component: 'Input',
+        label: '妯℃澘鍚嶇О',
         colProps: {
           span: 12,
         },
@@ -1675,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',
@@ -1852,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', //鏄摢涓〉闈�
@@ -1861,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

--
Gitblit v1.9.3