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