From 0a8a3f71f2e50f0603077197d9b1971431a64b36 Mon Sep 17 00:00:00 2001
From: Ben Lin <maobin001@msn.com>
Date: 星期三, 28 八月 2024 23:24:33 +0800
Subject: [PATCH] 条码规则更新

---
 src/settings/projectSetting.ts                                      |    2 
 src/views/tigerprojects/system/menu/MenuDrawer.vue                  |    3 
 src/views/tigerprojects/bas/checkrule/checkrule.data.ts             |   97 +++++++++++++++++++++--
 src/views/tigerprojects/system/lowcode/entityts/BIZ_MES_WO_BATCH.ts |   38 ++++++--
 src/api/tigerapi/model/mesModel.ts                                  |    3 
 src/utils/is.ts                                                     |    8 +
 src/views/tigerprojects/bas/checkrule/CheckruleDrawer.vue           |   10 ++
 src/views/tigerprojects/bas/checkrule/index.vue                     |    4 
 src/views/tigerprojects/system/lowcode/detail/detail.vue            |   17 ++-
 src/views/tigerprojects/system/menu/index.vue                       |   12 ++
 src/views/tigerprojects/system/menu/menu.data.ts                    |    7 +
 src/views/tigerprojects/bas/checkrule/ruleDetail.vue                |    3 
 src/store/modules/websocket.ts                                      |    4 
 src/views/components/CustModal.vue                                  |    4 
 14 files changed, 171 insertions(+), 41 deletions(-)

diff --git a/src/api/tigerapi/model/mesModel.ts b/src/api/tigerapi/model/mesModel.ts
index 697e949..fd02b12 100644
--- a/src/api/tigerapi/model/mesModel.ts
+++ b/src/api/tigerapi/model/mesModel.ts
@@ -70,6 +70,9 @@
   SERIAL_MIN: number;
   SERIAL_MAX: number;
   SERIAL_RESET: number;
+  SERIAL_INTERVAL: number;
+  SERIAL_IGNORE: string;
+  FIXED_NOTLIKE: string;
   CHECK_TABLE: string;
   CHECK_FIELD: string;
   CHECK_LENGTH: number;
diff --git a/src/settings/projectSetting.ts b/src/settings/projectSetting.ts
index cbd2f8d..1110ce0 100644
--- a/src/settings/projectSetting.ts
+++ b/src/settings/projectSetting.ts
@@ -124,7 +124,7 @@
 
   // Multi-label
   multiTabsSetting: {
-    cache: false,
+    cache: true,
     // Turn on
     show: true,
     // Is it possible to drag and drop sorting tabs
diff --git a/src/store/modules/websocket.ts b/src/store/modules/websocket.ts
index 36a18e7..9155521 100644
--- a/src/store/modules/websocket.ts
+++ b/src/store/modules/websocket.ts
@@ -4,7 +4,7 @@
  * @version:
  * @Date: 2024-07-24 20:42:38
  * @LastEditors: Ben Lin
- * @LastEditTime: 2024-07-25 09:43:58
+ * @LastEditTime: 2024-08-26 16:16:01
  */
 import { defineStore } from 'pinia';
 import { useGlobSetting } from '/@/hooks/setting';
@@ -120,7 +120,7 @@
             'wsApply ' +
               JSON.stringify({
                 Data: 'ping',
-                Message: '蹇冭烦鍙戦��'
+                Message: 'BS绔績璺冲彂閫�'
               }),
           );
           this.socketHeart = this.socketHeart + 1;
diff --git a/src/utils/is.ts b/src/utils/is.ts
index c2d74ac..e134a8a 100644
--- a/src/utils/is.ts
+++ b/src/utils/is.ts
@@ -5,7 +5,7 @@
  * @version: 
  * @Date: 2024-06-17 14:51:26
  * @LastEditors: Ben Lin
- * @LastEditTime: 2024-07-15 20:37:07
+ * @LastEditTime: 2024-08-28 21:38:19
  */
 export {
   isArguments,
@@ -28,7 +28,6 @@
   isMatchWith,
   isNative,
   isNil,
-  isNumber,
   isNull,
   isObjectLike,
   isPlainObject,
@@ -80,6 +79,11 @@
   return regex.test(str);
 }
 
+export function isNumber(str: string): boolean{
+  const regex = /^[0-9]*$/;
+  return regex.test(str);
+}
+
 
 export function isTimeViaRegExp8601(value: any): boolean {
   return /^\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}$/.test(value.toString());
diff --git a/src/views/components/CustModal.vue b/src/views/components/CustModal.vue
index 06817d7..9f1cc14 100644
--- a/src/views/components/CustModal.vue
+++ b/src/views/components/CustModal.vue
@@ -4,7 +4,7 @@
  * @version: 
  * @Date: 2024-06-05 15:46:07
  * @LastEditors: Ben Lin
- * @LastEditTime: 2024-07-22 00:51:10
+ * @LastEditTime: 2024-08-22 12:00:25
 -->
 <template>
   <BasicModal
@@ -183,7 +183,7 @@
   /**
    * @description: 鍙栨秷鎸夐挳瑙﹀彂鍙栨秷浜嬩欢
    * @return {*}
-   */  
+   */
   function handleCancel() {
     emit('cancel');
   }
diff --git a/src/views/tigerprojects/bas/checkrule/CheckruleDrawer.vue b/src/views/tigerprojects/bas/checkrule/CheckruleDrawer.vue
index 2fd10ef..e3af031 100644
--- a/src/views/tigerprojects/bas/checkrule/CheckruleDrawer.vue
+++ b/src/views/tigerprojects/bas/checkrule/CheckruleDrawer.vue
@@ -1,3 +1,11 @@
+<!--
+ * @Description: file content
+ * @Author: Ben Lin
+ * @version: 
+ * @Date: 2024-06-18 15:09:48
+ * @LastEditors: Ben Lin
+ * @LastEditTime: 2024-08-28 20:57:43
+-->
 <template>
   <BasicDrawer
     v-bind="$attrs"
@@ -24,7 +32,7 @@
       const isUpdate = ref(true);
 
       const [MaterialForm, { resetFields, setFieldsValue, validate }] = useForm({
-        labelWidth: 120,
+        labelWidth: 140,
         schemas: formSchema,
         actionColOptions: {
           span: 24,
diff --git a/src/views/tigerprojects/bas/checkrule/checkrule.data.ts b/src/views/tigerprojects/bas/checkrule/checkrule.data.ts
index 0dd63c3..071f55e 100644
--- a/src/views/tigerprojects/bas/checkrule/checkrule.data.ts
+++ b/src/views/tigerprojects/bas/checkrule/checkrule.data.ts
@@ -1,7 +1,7 @@
 import { BasicColumn } from '/@/components/Table';
 import { FormSchema } from '/@/components/Table';
 import { useI18n } from '/@/hooks/web/useI18n';
-import { isEmpty, isNullOrEmpty, isNullOrUnDef, isObject, isString } from '/@/utils/is';
+import { isEmpty, isNullOrEmpty, isNullOrUnDef, isNumber, isObject, isString } from '/@/utils/is';
 import { h } from 'vue';
 import { Tag } from 'ant-design-vue';
 import { useMessage } from '/@/hooks/web/useMessage';
@@ -90,7 +90,7 @@
           text = record.DATA_VALUE;
           break;
         case Data_Types.SerialCode:
-          text = `${PrefixInteger(record.SERIAL_MIN,record.CHECK_LENGTH)}-${PrefixInteger(record.SERIAL_MAX,record.CHECK_LENGTH)}`;
+          text = `${PrefixInteger(record.SERIAL_MIN, record.CHECK_LENGTH)}-${PrefixInteger(record.SERIAL_MAX, record.CHECK_LENGTH)}`;
           break;
       }
       return h(Tag, { color: color }, () => text);
@@ -235,7 +235,10 @@
             formModel.CHECK_LENGTH = '';
           }
           if (e == Data_Types.DbCheck || e == Data_Types.NoCheck) {
-            formModel.DATA_REGEX = formModel.CHECK_LENGTH>0? `(.{${formModel.CHECK_LENGTH}}){${formModel.REPEAT_TIMES}}`: `(.*){${formModel.REPEAT_TIMES}}`;
+            formModel.DATA_REGEX =
+              formModel.CHECK_LENGTH > 0
+                ? `(.{${formModel.CHECK_LENGTH}}){${formModel.REPEAT_TIMES}}`
+                : `(.*){${formModel.REPEAT_TIMES}}`;
           }
           if (e == Data_Types.SerialCode) {
             formModel.DATA_REGEX = `([0-9]{${formModel.CHECK_LENGTH}}){${formModel.REPEAT_TIMES}}`;
@@ -540,6 +543,10 @@
               // return Math.max(maxLength, str.length);
             }, 0);
             formModel.CHECK_LENGTH = _length;
+            if (formModel.FIXED_NOTLIKE == 'Y') {
+              formModel.DATA_RANGE = `${val}`;
+              formModel.DATA_REGEX = `([^${e.target.value.replace(new RegExp(',', 'g'), '|')}]{${formModel.CHECK_LENGTH}}){${formModel.REPEAT_TIMES}}`;
+            }
           }
         },
       };
@@ -660,14 +667,13 @@
             }
           }
           //formModel.CHECK_LENGTH>0? `(.{${formModel.CHECK_LENGTH}}){${formModel.REPEAT_TIMES}}`: `(.*){${formModel.REPEAT_TIMES}}`;
-          if (
-            formModel.DATA_TYPE == Data_Types.DbCheck
-          ) {
-            formModel.DATA_REGEX = val>0? `(.{${val}}){${formModel.REPEAT_TIMES}}`: `(.*){${formModel.REPEAT_TIMES}}`;
+          if (formModel.DATA_TYPE == Data_Types.DbCheck) {
+            formModel.DATA_REGEX =
+              val > 0
+                ? `(.{${val}}){${formModel.REPEAT_TIMES}}`
+                : `(.*){${formModel.REPEAT_TIMES}}`;
           }
-          if (
-            formModel.DATA_TYPE == Data_Types.NoCheck
-          ) {
+          if (formModel.DATA_TYPE == Data_Types.NoCheck) {
             formModel.DATA_REGEX = `(.{${val}}){${formModel.REPEAT_TIMES}}`;
           }
           if (formModel.DATA_TYPE == Data_Types.SerialCode) {
@@ -883,6 +889,77 @@
     ifShow: ({ values }) => isSerial(values.DATA_TYPE),
   },
   {
+    field: 'FIXED_NOTLIKE',
+    label: '鏄惁涓嶅寘鍚浐瀹氬��',
+    required: true,
+    component: 'Select',
+    colProps: { span: 12 },
+    componentProps: ({ schema, tableAction, formActionType, formModel }) => {
+      return {
+        options: [
+          {
+            label: '鏄�',
+            value: 'Y',
+          },
+          {
+            label: '鍚�',
+            value: 'N',
+          },
+        ],
+        onChange: (e) => {
+          if (isFixed(formModel.DATA_TYPE)) {
+            var val = typeof e == 'object' && e != null ? e.target.value : e;
+            formModel.DATA_RANGE =val == 'N'? formModel.DATA_VALUE: `${formModel.DATA_VALUE}`;
+            formModel.DATA_REGEX =
+              val == 'N'
+                ? `(${formModel.DATA_VALUE.replace(new RegExp(',', 'g'), '|')}){${formModel.REPEAT_TIMES}}`
+                : `([^${formModel.DATA_VALUE.replace(new RegExp(',', 'g'), '|')}]{${formModel.CHECK_LENGTH}}){${formModel.REPEAT_TIMES}}`;
+          }
+        },
+      };
+    },
+    ifShow: ({ values }) => isFixed(values.DATA_TYPE),
+  },
+  {
+    field: 'SERIAL_INTERVAL',
+    label: '娴佹按鍙峰彇鍙烽棿闅�',
+    component: 'Input',
+    dynamicRules: ({ values }) => {
+      return [
+        {
+          required: true,
+          validator: (_, value) => {
+            if (!value) {
+              return Promise.reject('娴佹按鍙峰彇鍙烽棿闅斾笉鑳戒负绌�!');
+            }
+            if (!isNumber(value)) {
+              return Promise.reject('璇疯緭鍏ユ暟瀛�!');
+            }
+            if (Number(value) < 0) {
+              return Promise.reject('蹇呴渶杈撳叆澶т簬0鐨勬暟瀛�!');
+            }
+            return Promise.resolve();
+          },
+        },
+      ];
+    },
+    show: true,
+    colProps: { span: 12 },
+    dynamicDisabled: ({ values }) => {
+      return false;
+    },
+    ifShow: ({ values }) => isSerial(values.DATA_TYPE),
+  },
+  {
+    field: 'SERIAL_IGNORE',
+    label: '娴佹按鍙疯烦鍙�',
+    component: 'Input',
+    // required: true,
+    show: true,
+    colProps: { span: 24 },
+    ifShow: ({ values }) => isSerial(values.DATA_TYPE),
+  },
+  {
     field: 'DATA_RANGE',
     label: '鏍¢獙鑼冨洿',
     component: 'Input',
diff --git a/src/views/tigerprojects/bas/checkrule/index.vue b/src/views/tigerprojects/bas/checkrule/index.vue
index 7ef9f9a..1c429a0 100644
--- a/src/views/tigerprojects/bas/checkrule/index.vue
+++ b/src/views/tigerprojects/bas/checkrule/index.vue
@@ -9,6 +9,7 @@
           {
             icon: 'clarity:note-edit-line',
             onClick: handleEdit.bind(null, record),
+            name:'',
           },
           {
             icon: 'ant-design:delete-outlined',
@@ -18,6 +19,7 @@
               placement: 'left',
               confirm: handleDelete.bind(null, record),
             },
+            name:'',
           },
         ]"
       />
@@ -37,7 +39,7 @@
   import { buildUUID } from '/@/utils/uuid';
 
   export default defineComponent({
-    name: 'CheckRuleManagement',
+    name: 'checkrule',
     components: { BasicTable, CheckruleDrawer, TableAction, PageWrapper, [Card.name]: Card },
     setup() {
       const go = useGo();
diff --git a/src/views/tigerprojects/bas/checkrule/ruleDetail.vue b/src/views/tigerprojects/bas/checkrule/ruleDetail.vue
index ce09c07..0e9e774 100644
--- a/src/views/tigerprojects/bas/checkrule/ruleDetail.vue
+++ b/src/views/tigerprojects/bas/checkrule/ruleDetail.vue
@@ -241,6 +241,9 @@
               DESCRIPTION: d.DESCRIPTION,
               CHECK_TABLE: d.CHECK_TABLE,
               CHECK_FIELD: d.CHECK_FIELD,
+              FIXED_NOTLIKE: d.FIXED_NOTLIKE,
+              SERIAL_INTERVAL: d.SERIAL_INTERVAL,
+              SERIAL_IGNORE: d.SERIAL_IGNORE,
             };
           return item;
         });
diff --git a/src/views/tigerprojects/system/lowcode/detail/detail.vue b/src/views/tigerprojects/system/lowcode/detail/detail.vue
index f5fe4d8..16b0ff6 100644
--- a/src/views/tigerprojects/system/lowcode/detail/detail.vue
+++ b/src/views/tigerprojects/system/lowcode/detail/detail.vue
@@ -128,6 +128,7 @@
       GetUseForm,
       GetUseModals,
     },
+    ActionColumn
   ] = isNullOrUnDef(custImport.value['default'])
     ? EntityCustFunction.value
     : custImport.value['default']();
@@ -155,13 +156,15 @@
     bordered: true,
     canResize: true,
     showIndexColumn: false,
-    actionColumn: {
-      width: 130,
-      title: '鎿嶄綔',
-      dataIndex: 'action',
-      slots: { customRender: 'action' },
-      fixed: undefined,
-    }, //鑷畾涔夋搷浣滃垪
+    actionColumn:  ActionColumn
+      ? ActionColumn
+      : {
+          width: 120,
+          title: '鎿嶄綔',
+          dataIndex: 'action',
+          slots: { customRender: 'action' },
+          fixed: 'right',
+        }, //鑷畾涔夋搷浣滃垪
   });
 
   onMounted(() => {});
diff --git a/src/views/tigerprojects/system/lowcode/entityts/BIZ_MES_WO_BATCH.ts b/src/views/tigerprojects/system/lowcode/entityts/BIZ_MES_WO_BATCH.ts
index 8fcc98b..fb85766 100644
--- a/src/views/tigerprojects/system/lowcode/entityts/BIZ_MES_WO_BATCH.ts
+++ b/src/views/tigerprojects/system/lowcode/entityts/BIZ_MES_WO_BATCH.ts
@@ -4,7 +4,7 @@
  * @version:
  * @Date: 2024-06-19 20:34:27
  * @LastEditors: Ben Lin
- * @LastEditTime: 2024-08-22 11:14:02
+ * @LastEditTime: 2024-08-28 08:53:22
  */
 
 import { Tag, Tooltip } from 'ant-design-vue';
@@ -17,6 +17,8 @@
 import { CustModalParams, FunctionType } from '/@/api/tigerapi/model/systemModel';
 import { useForm } from '/@/components/Form';
 import { useMessage } from '/@/hooks/web/useMessage';
+import { UpdateWoStatus } from '/@/api/tigerapi/mes/wo';
+import { useUserStore } from '/@/store/modules/user';
 
 const { getLocale } = useLocale();
 const { createMessage, createErrorModal } = useMessage();
@@ -24,11 +26,11 @@
 
 function _default() {
   const ActionColumn: BasicColumn = {
-    width: 80,
+    width: 160,
     title: '鎿嶄綔',
     dataIndex: 'action',
     slots: { customRender: 'action' },
-    fixed: undefined,
+    fixed: 'right',
   };
 
   /**
@@ -376,14 +378,20 @@
       });
       return;
     }
-    params['record'].STATUS = 4;
-    SaveEntity(params['record'], true, 'BIZ_MES_WO_BATCH').then((action) => {
-      if (action.IsSuccessed) {
-        createMessage.success(t('宸叉殏鍋�'));
-        reload();
-      } else {
-        createMessage.success(t('鏆傚仠鎿嶄綔澶辫触'));
-      }
+    // params['record'].STATUS = 4;
+    // SaveEntity(params['record'], true, 'BIZ_MES_WO_BATCH').then((action) => {
+    //   if (action.IsSuccessed) {
+    //     createMessage.success(t('宸叉殏鍋�'));
+    //     reload();
+    //   } else {
+    //     createMessage.success(t('鏆傚仠鎿嶄綔澶辫触'));
+    //   }
+    // });
+    UpdateWoStatus({
+      UserId: useUserStore().getUserInfo.userId as string,
+      WorkOrder: params['record'].ORDER_NO,
+      Status: -1,
+      RouteStatus: 0,
     });
   }
 
@@ -422,6 +430,14 @@
    */
   function handleRelease(args, params: Recordable) {
     const openCustModal = args[7];
+    if (params['record'].STATUS != 0) {
+      createErrorModal({
+        title: t('璀﹀憡'),
+        content: t('宸ュ崟涓嶆槸鍒濆鐘舵�侊紝涓嶈兘涓嬪彂锛�'),
+        getContainer: () => document.body,
+      });
+      return;
+    }
     openCustModal(true, {
       isUpdate: true, //鏄惁鏇存柊鎿嶄綔
       ctype: 'BIZ_MES_WO_BATCH', //鏄摢涓〉闈�
diff --git a/src/views/tigerprojects/system/menu/MenuDrawer.vue b/src/views/tigerprojects/system/menu/MenuDrawer.vue
index 3707584..c5cb001 100644
--- a/src/views/tigerprojects/system/menu/MenuDrawer.vue
+++ b/src/views/tigerprojects/system/menu/MenuDrawer.vue
@@ -4,7 +4,7 @@
  * @version: 
  * @Date: 2024-06-18 15:09:48
  * @LastEditors: Ben Lin
- * @LastEditTime: 2024-06-25 18:55:09
+ * @LastEditTime: 2024-08-25 16:11:05
 -->
 <template>
   <BasicDrawer
@@ -61,6 +61,7 @@
       setDrawerProps({ confirmLoading: true });
       // TODO custom api
       //淇濆瓨鑿滃崟
+      values['func_class'] = menuName.value;
       SaveMenu(values, unref(isUpdate)).then((action) => {
         if (action.IsSuccessed) {
           closeDrawer();
diff --git a/src/views/tigerprojects/system/menu/index.vue b/src/views/tigerprojects/system/menu/index.vue
index 2b178b9..9eea644 100644
--- a/src/views/tigerprojects/system/menu/index.vue
+++ b/src/views/tigerprojects/system/menu/index.vue
@@ -23,6 +23,7 @@
                   {
                     icon: 'clarity:note-edit-line',
                     onClick: handleEdit.bind(null, record, 'BS 鑿滃崟'),
+                    name: '',
                   },
                   {
                     icon: 'ant-design:delete-outlined',
@@ -32,6 +33,7 @@
                       placement: 'left',
                       confirm: handleDelete.bind(null, record),
                     },
+                    name: '',
                   },
                 ]"
               />
@@ -55,6 +57,7 @@
                   {
                     icon: 'clarity:note-edit-line',
                     onClick: handleEdit.bind(null, record, 'PDA'),
+                    name: '',
                   },
                   {
                     icon: 'ant-design:delete-outlined',
@@ -64,6 +67,7 @@
                       placement: 'left',
                       confirm: handleDelete.bind(null, record),
                     },
+                    name: '',
                   },
                 ]"
               />
@@ -118,7 +122,10 @@
     rowKey: 'id',
   });
 
-  const [registerTableSecond, { reload:reloadSecond, expandAll:expandAllSecond, expandRows:expandRowsSecond }] = useTable({
+  const [
+    registerTableSecond,
+    { reload: reloadSecond, expandAll: expandAllSecond, expandRows: expandRowsSecond },
+  ] = useTable({
     // const [registerTable, { reload, expandRows }] = useTable({
     title: '鑿滃崟鍒楄〃',
     api: getMenuList,
@@ -167,7 +174,8 @@
     const apiAction = DeleteMenu(record);
     apiAction.then((onfulfilled) => {
       if (onfulfilled.IsSuccessed) {
-        reload();
+          reloadSecond();
+          reload();
       }
     });
   }
diff --git a/src/views/tigerprojects/system/menu/menu.data.ts b/src/views/tigerprojects/system/menu/menu.data.ts
index effe051..9ed4ba2 100644
--- a/src/views/tigerprojects/system/menu/menu.data.ts
+++ b/src/views/tigerprojects/system/menu/menu.data.ts
@@ -184,6 +184,12 @@
     ifShow: ({ values }) => !isDir(values.func_type),
   },
   {
+    field: 'func_group',
+    label: '鍔熻兘缁�',
+    component: 'Input',
+    defaultValue: '',
+  },
+  {
     field: 'status',
     label: '鐘舵��',
     component: 'RadioButtonGroup',
@@ -222,7 +228,6 @@
     },
     ifShow: ({ values }) => isMenu(values.func_type),
   },
-
   {
     field: 'show',
     label: '鏄惁鏄剧ず',

--
Gitblit v1.9.3