From abbc201b41a1a25a19ccf7cff8df633dadcf5d88 Mon Sep 17 00:00:00 2001
From: Ben Lin <maobin001@msn.com>
Date: 星期三, 05 三月 2025 16:52:39 +0800
Subject: [PATCH] 优化

---
 src/views/tigerprojects/system/lowcode/entityts/BAS_PKG_DTL.ts |  433 ++++++++++++++++++++++++++++++++++++++++++++++-------
 1 files changed, 375 insertions(+), 58 deletions(-)

diff --git a/src/views/tigerprojects/system/lowcode/entityts/BAS_PKG_DTL.ts b/src/views/tigerprojects/system/lowcode/entityts/BAS_PKG_DTL.ts
index d26dd9d..a3ff82d 100644
--- a/src/views/tigerprojects/system/lowcode/entityts/BAS_PKG_DTL.ts
+++ b/src/views/tigerprojects/system/lowcode/entityts/BAS_PKG_DTL.ts
@@ -4,18 +4,17 @@
  * @version:
  * @Date: 2024-06-19 20:34:27
  * @LastEditors: Ben Lin
- * @LastEditTime: 2024-07-02 19:59:52
+ * @LastEditTime: 2024-09-11 20:51:11
  */
 
-import { Ref } from 'vue';
-import { DeleteEntity, getEntity } from '/@/api/tigerapi/system';
+import { Ref, ref, unref } from 'vue';
+import { DeleteEntity, getEntity, SaveEntity } from '/@/api/tigerapi/system';
 import { ActionItem, BasicColumn, FormSchema, useTable } from '/@/components/Table';
 import { isNullOrEmpty, isNullOrUnDef } from '/@/utils/is';
-import { buildUUID } from '/@/utils/uuid';
-import { useUserStore } from '/@/store/modules/user';
-import { formatToDateTime } from '/@/utils/dateUtil';
 import { useDrawer } from '/@/components/Drawer';
-import { EditOperation, Search } from '../data';
+import { EditOperation, Search, custDel } from '../data';
+import { SaveBasPkgRule } from '/@/api/tigerapi/mes/baserule';
+import { BAS_PKG_RULE } from '/@/api/tigerapi/model/mesModel';
 
 function _default(): any[] {
   const ActionColumn: BasicColumn = {
@@ -26,6 +25,8 @@
     fixed: undefined,
   };
 
+  let _data = ref<any>({});
+  let record = {};
   /**
    * @description: 涓�浜涜嚜瀹氫箟鏂规硶
    * @return {*}
@@ -35,7 +36,7 @@
      * @description: 鑾峰彇鏂板鎸夐挳鐨勮涓�
      * @return {*}
      */
-    CreateAction: (fnName: string) => {
+    CreateAction: (type: string) => {
       return {
         action: 'drawer', //drawer(鎵撳紑宸︿晶鎶藉眽妗�) | go(璺宠浆鍒版柊鐨勯〉闈�)
       };
@@ -47,7 +48,7 @@
     ActionItem: (params: Recordable<any>, data, ...args): ActionItem[] => {
       /* 閲嶅啓鍒犻櫎鏂规硶 */
       if (!isNullOrUnDef(data[1])) {
-        data[1].popConfirm.confirm = custDel.bind(null, args, params);
+        data[1].popConfirm.confirm = Del.bind(null, args, params);
       }
       return data;
     },
@@ -58,21 +59,36 @@
      * @param {*} u
      * @return {*}
      */
-    EditOperation: (data: Ref<any[]>, d, u, item) => {
+    EditOperation: (data: Ref<any[]>, d, u, name) => {
       //鏇存柊
-      var _data = data.value[item].map((item) => {
-        if (item['ID'] == d.ID)
-          return {
-            ...item,
-            PKG_CODE: d.PKG_CODE,
-            PKG_LEVEL: d.PKG_LEVEL,
-            PKG_QTY: d.PKG_QTY,
-            LABEL_CODE: d.LABEL_CODE,
-            REMARK: d.REMARK,
-          };
+      var _data = data.value[name].map((item) => {
+        if (item['ID'] == d.ID) {
+          if (name == 'BAS_PKG_DTL') {
+            return {
+              ...item,
+              PKG_CODE: d.PKG_CODE,
+              PKG_NAME: d.PKG_NAME,
+              PKG_LEVEL: d.PKG_LEVEL,
+              PKG_QTY: d.PKG_QTY,
+              LABEL_CODE: d.LABEL_CODE,
+              REMARK: d.REMARK,
+            };
+          }
+          if (name == 'BAS_PKG_PROD') {
+            return {
+              ...item,
+              ITEM_CODE: d.ITEM_CODE,
+              MIN_WEIGHT: d.MIN_WEIGHT,
+              MIN_UNIT: d.MIN_UNIT,
+              MAX_WEIGHT: d.MAX_WEIGHT,
+              MAX_UNIT: d.MAX_UNIT,
+              REMARK: d.REMARK,
+            };
+          }
+        }
         return item;
       });
-      EditOperation(data,d, u, item, _data);
+      EditOperation(data, d, u, name, _data);
     },
     /**
      * @description: 楂樼骇琛ㄥ崟鍜岃鎯呴〉闈㈣繑鍥炰富椤甸潰鐨剈rl
@@ -99,10 +115,12 @@
      * @description: 楂樼骇琛ㄥ崟澧炲垹鏀硅〃鍗曞瓧娈�
      * @return {*}
      */
-    GetCrudForm: (type: string) => {
+    GetCrudForm: (type: string, ...args) => {
+      _data = args[0];
+      record = args[1];
       return crudForms[type];
     },
-    OthersValues: (val: string, id: string) => {
+    KeyFieldValues: (val: string, id: string) => {
       return { PKG_RULE_ID: id };
     },
     /**
@@ -195,6 +213,9 @@
         {
           BAS_PKG_DTL: useDrawer(),
         },
+        {
+          BAS_PKG_PROD: useDrawer(),
+        },
       ];
     },
     /**
@@ -215,7 +236,29 @@
             submitFunc: () => Search('BAS_PKG_DTL', data, args[0]), //鑷畾涔夋煡璇㈡彁浜ゆ寜閽殑鏂规硶锛岃Е鍙戞煡璇㈡彁浜や簨浠�
           },
           useSearchForm: true,
-          showTableSetting: true,
+          showTableSetting: false,
+          bordered: true,
+          canResize: true,
+          showIndexColumn: false,
+          actionColumn: {
+            width: 130,
+            title: '鎿嶄綔',
+            dataIndex: 'action',
+            slots: { customRender: 'action' },
+            fixed: 'right',
+          }, //鑷畾涔夋搷浣滃垪
+        }),
+        BAS_PKG_PROD: useTable({
+          title: '鍒楄〃淇℃伅',
+          dataSource: data.value['BAS_PKG_PROD'],
+          columns: baseColumns['BAS_PKG_PROD'],
+          formConfig: {
+            labelWidth: 140,
+            schemas: searchForms['BAS_PKG_PROD'],
+            submitFunc: () => Search('BAS_PKG_PROD', data, args[0]), //鑷畾涔夋煡璇㈡彁浜ゆ寜閽殑鏂规硶锛岃Е鍙戞煡璇㈡彁浜や簨浠�
+          },
+          useSearchForm: true,
+          showTableSetting: false,
           bordered: true,
           canResize: true,
           showIndexColumn: false,
@@ -243,6 +286,12 @@
             data = d.data.value[d.type];
           }
           break;
+        case 'BAS_PKG_PROD':
+          data = d.data.value[d.type].filter((item) => item.ITEM_CODE.includes(d.values.ITEM_CODE));
+          if (isNullOrEmpty(d.values.ITEM_CODE)) {
+            data = d.data.value[d.type];
+          }
+          break;
       }
       return data;
     },
@@ -257,8 +306,48 @@
         pageContent: '杩欓噷鍙互娣诲姞鍜屼慨鏀瑰寘瑁呰鍒欏拰鍖呰淇℃伅銆�',
         tableTitle: {
           BAS_PKG_DTL: '鍖呰淇℃伅绠$悊',
+          BAS_PKG_PROD: '绉伴噸鑼冨洿绠$悊',
         },
       };
+    },
+    GetUseForm: () => {
+      return {};
+    },
+    /**
+     * @description: 鎻愪氦鎵�鏈�
+     * @return {*}
+     */
+    SubmitAll: (data: Ref<any[]>, keyFieldValues: Ref<{}>, ...args) => {
+      const validates = args[1].validates;
+      const Keys = args[1].Keys;
+      const isAllUpdate = args[1].isAllUpdate;
+      const baseCards = args[1].baseCards;
+      const IsExist = args[1].IsExist;
+      /* 寰幆淇濆瓨楂樼骇琛ㄥ崟涓富琛ㄥ崟淇℃伅锛屽鏋滄湁澶氫釜鐨勮瘽锛屾墍浠ヨ寰幆 */
+      let i;
+      let p = [] as Promise<any>[];
+      for (i = 0; i < Keys.length; i++) {
+        p.push(
+          SaveEntity(
+            validates[Keys[i]],
+            unref(isAllUpdate),
+            baseCards.value[i]['entityName'],
+            `${IsExist}='${validates[Keys[i]][IsExist]}'`,
+            true,
+          ),
+        );
+      }
+      Promise.all(p).then(() => {
+        SaveBasPkgRule({
+          PkgDtl: data.value['BAS_PKG_DTL'],
+          PkgProd: data.value['BAS_PKG_PROD'],
+          PkgRule: {} as unknown as BAS_PKG_RULE,
+        }).then((action) => {
+          if (action.IsSuccessed) {
+            args[0]();
+          }
+        });
+      });
     },
   };
 
@@ -270,21 +359,32 @@
    * @param {*} params
    * @return {*}
    */
-  function custDel(args: Fn[], params: {}) {
+  function Del(args: Fn[], params: {}) {
+    const name = params['name'];
+    const useTables = args[1];
     if (!isNullOrEmpty(params['data'])) {
-      var _data = params['data'].value.filter((item) => item['ID'] != params['record']['ID']);
-      params['data'].value = _data;
-      args[6]({
+      var _data = params['data'].value[name]
+        .filter((x) => x['ID'] != params['record']['ID']) //杩囨护鎺夊垹闄ゆ帀鐨勮褰�
+        .map((item) => {
+          //濡傛灉搴忓彿澶т簬鍒犻櫎鎺夌殑璁板綍鐨勫簭鍙风殑锛屽垯搴忓彿鍑�1
+          item['PKG_LEVEL'] =
+            item['PKG_LEVEL'] > params['record']['PKG_LEVEL']
+              ? item['PKG_LEVEL'] - 1
+              : item['PKG_LEVEL'];
+          return item;
+        });
+      params['data'].value[name] = _data;
+      useTables[name][1].setProps({
         dataSource: [],
       });
-      args[6]({
-        dataSource: params['data'],
+      useTables[name][1].setProps({
+        dataSource: params['data'].value[name],
       });
-      args[1]();
+      useTables[name][1].reload();
     } else {
       DeleteEntity(params['record'], params['entityName']).then((action) => {
         if (action.IsSuccessed) {
-          args[1]();
+          useTables[name][1].reload();
         }
       });
     }
@@ -301,6 +401,16 @@
         },
       },
     ] as FormSchema[],
+    BAS_PKG_PROD: [
+      {
+        field: 'ITEM_CODE',
+        label: '鐗╂枡缂栫爜',
+        component: 'Input',
+        colProps: {
+          span: 8,
+        },
+      },
+    ] as FormSchema[],
   };
 
   const baseColumns = {
@@ -308,8 +418,22 @@
       {
         title: '鍖呰/杞藉叿缂栫爜',
         dataIndex: 'PKG_CODE',
-        // ifShow: false,
+        ifShow: false,
         width: 180,
+      },
+      {
+        title: '鍖呰/杞藉叿鍚嶇О',
+        dataIndex: 'PKG_NAME',
+        ifShow: false,
+        width: 180,
+      },
+      {
+        title: '鍖呰/杞藉叿',
+        dataIndex: 'PKG_FULL',
+        width: 180,
+        customRender: ({ record }) => {
+          return `${record.PKG_CODE} - ${record.PKG_NAME}`;
+        },
       },
       {
         title: '鍖呰灞傜骇',
@@ -318,6 +442,49 @@
       {
         title: '鍖呰鏁伴噺',
         dataIndex: 'PKG_QTY',
+      },
+      {
+        title: '鏍囩妯℃澘',
+        dataIndex: 'LABEL_CODE',
+      },
+      {
+        title: '鍖呰瑙勫垯ID',
+        dataIndex: 'PKG_RULE_ID',
+        ifShow: false,
+      },
+      {
+        title: '澶囨敞',
+        dataIndex: 'REMARK',
+      },
+      {
+        title: '鏇存柊鏃堕棿',
+        dataIndex: 'UPDATE_TIME',
+      },
+      {
+        title: '鏇存柊浜�',
+        dataIndex: 'UPDATE_USER',
+      },
+    ] as BasicColumn[],
+    BAS_PKG_PROD: [
+      {
+        title: '鐗╂枡缂栫爜',
+        dataIndex: 'ITEM_CODE',
+      },
+      {
+        title: '绉伴噸涓嬮檺',
+        dataIndex: 'MIN_WEIGHT',
+      },
+      {
+        title: '绉伴噸涓嬮檺鍗曚綅',
+        dataIndex: 'MIN_UNIT',
+      },
+      {
+        title: '绉伴噸涓婇檺',
+        dataIndex: 'MAX_WEIGHT',
+      },
+      {
+        title: '绉伴噸涓婇檺鍗曚綅',
+        dataIndex: 'MAX_UNIT',
       },
       {
         title: '鍖呰瑙勫垯ID',
@@ -339,33 +506,9 @@
     ] as BasicColumn[],
   };
 
+  let disableQty = false;
   const crudForms = {
     BAS_PKG_DTL: [
-      {
-        field: 'PKG_CODE',
-        label: '鍖呰/杞藉叿缂栫爜',
-        component: 'ApiSelect',
-        required: true,
-        colProps: {
-          span: 24,
-        },
-        componentProps: {
-          api: getEntity,
-          params: { entityName: 'BAS_PKG_TYPE', sqlcmd: ' 1=1 ' },
-          resultField: 'Data.Items',
-          labelField: 'PKG_NAME',
-          valueField: 'PKG_CODE',
-        },
-      },
-      {
-        label: '鍖呰灞傜骇',
-        field: 'PKG_LEVEL',
-        component: 'Input',
-        required: true,
-        colProps: {
-          span: 24,
-        },
-      },
       {
         label: '鍖呰瑙勫垯ID',
         field: 'PKG_RULE_ID',
@@ -378,12 +521,186 @@
         },
       },
       {
+        label: '鍖呰灞傜骇',
+        field: 'PKG_LEVEL',
+        component: 'Input',
+        required: true,
+        colProps: {
+          span: 24,
+        },
+        componentProps: ({ formModel }) => {
+          if (isNullOrEmpty(formModel.PKG_LEVEL) || Number(formModel.PKG_LEVEL) == 0) {
+            formModel.PKG_LEVEL =
+              _data['BAS_PKG_DTL'].reduce((max, item) => {
+                return max < Number(item.PKG_LEVEL) ? Number(item.PKG_LEVEL) : max;
+              }, 0) + 1;
+          }
+          // if (formModel.PKG_LEVEL == 1) {
+          //   disableQty = true;
+          //   formModel.PKG_QTY = 1;
+          // } else {
+          //   disableQty = false;
+          // }
+          return {
+            onChange: (e) => {},
+          };
+        },
+        dynamicDisabled: ({ values }) => {
+          return true;
+        },
+      },
+      {
+        field: 'PKG_CODE',
+        label: '鍖呰/杞藉叿缂栫爜',
+        component: 'ApiSelect',
+        required: true,
+        colProps: {
+          span: 24,
+        },
+        componentProps: ({ formModel }) => {
+          let sqlcmd = ' 1=1 ';
+          if (!isNullOrEmpty(record) && record['PKG_LEVEL'] == 1) {
+            sqlcmd += ` And IS_MIN_PKG = 'Y'`;
+          } else {
+            if (formModel.PKG_LEVEL == 1) {
+              sqlcmd += ` And IS_MIN_PKG = 'Y'`;
+            } else {
+              sqlcmd += ` And IS_MIN_PKG != 'Y'`;
+            }
+          }
+          return {
+            api: getEntity,
+            params: { entityName: 'BAS_PKG_TYPE', sqlcmd: sqlcmd },
+            resultField: 'Data.Items',
+            labelField: 'PKG_NAME',
+            valueField: 'PKG_CODE',
+            onChange: (e, v) => {
+              console.log('ApiSelect====>:', e, v);
+              formModel.PKG_NAME = isNullOrUnDef(v) ? formModel.PKG_NAME : v.label;
+            },
+          };
+        },
+      },
+      {
         label: '鍖呰鏁伴噺',
         field: 'PKG_QTY',
         component: 'Input',
         colProps: {
           span: 24,
         },
+        dynamicDisabled: ({ values }) => {
+          return disableQty;
+        },
+      },
+      {
+        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,
+        },
+      },
+      {
+        label: 'ID',
+        field: 'ID',
+        component: 'Input',
+        colProps: {
+          span: 24,
+        },
+        show: false,
+      },
+    ] as FormSchema[],
+    BAS_PKG_PROD: [
+      {
+        label: '鍖呰瑙勫垯ID',
+        field: 'PKG_RULE_ID',
+        component: 'Input',
+        colProps: {
+          span: 24,
+        },
+        dynamicDisabled: ({ values }) => {
+          return true;
+        },
+      },
+      {
+        label: '鐗╂枡缂栫爜',
+        field: 'ITEM_CODE',
+        component: 'Input',
+        required: true,
+        colProps: {
+          span: 22,
+        },
+      },
+      {
+        field: 'BAS_ITEM1PSelect_0', //鎸変綆浠g爜閰嶇疆鐨勮鍒欙紝瀹炰綋鍚�+搴忓彿+PSelect_0锛屽簭鍙风敤鏉ュ尯鍒嗗涓殑鏃跺�欙紝PSelect_0杩欐槸涓浐瀹氬悗缂�
+        label: '1',
+        defaultValue: 'BAS_ITEM',
+        component: 'Input',
+        colProps: { span: 2 },
+        colSlot: 'BAS_ITEM1add', //鎸変綆浠g爜閰嶇疆鐨勮鍒欙紝瀹炰綋鍚�+搴忓彿+add锛屽簭鍙风敤鏉ュ尯鍒嗗涓殑鏃跺�欙紝add杩欐槸涓浐瀹氬悗缂�
+      },
+      {
+        label: '绉伴噸涓嬮檺',
+        field: 'MIN_WEIGHT',
+        component: 'Input',
+        required: true,
+        colProps: {
+          span: 24,
+        },
+      },
+      {
+        label: '绉伴噸涓嬮檺鍗曚綅',
+        field: 'MIN_UNIT',
+        required: true,
+        component: 'Input',
+        colProps: {
+          span: 24,
+        },
+      },
+      {
+        label: '绉伴噸涓婇檺',
+        field: 'MAX_WEIGHT',
+        required: true,
+        component: 'Input',
+        colProps: {
+          span: 24,
+        },
+      },
+      {
+        label: '绉伴噸涓婇檺鍗曚綅',
+        field: 'MAX_UNIT',
+        required: true,
+        component: 'Input',
+        colProps: {
+          span: 24,
+        },
       },
       {
         label: '澶囨敞',

--
Gitblit v1.9.3