From 3007539f0e29f28903b825398e04dbe7f578ef72 Mon Sep 17 00:00:00 2001 From: YunaiV Date: Sat, 30 May 2026 20:38:05 +0800 Subject: [PATCH] refactor(mes): update comments and improve code readability in condition matchers --- .../src/views/mes/dv/checkrecord/data.ts | 2 -- .../src/views/mes/dv/maintenrecord/data.ts | 2 -- .../mes/dv/subject/components/select.vue | 25 +++++++++++++++--- .../views/mes/md/client/components/select.vue | 6 +---- apps/web-antd/src/views/mes/md/client/data.ts | 6 ----- .../md/item/components/product-bom-select.vue | 8 ++---- .../views/mes/md/item/components/select.vue | 6 +---- .../views/mes/md/vendor/components/select.vue | 6 +---- apps/web-antd/src/views/mes/md/vendor/data.ts | 6 ----- .../mes/md/workstation/components/select.vue | 6 +---- .../src/views/mes/md/workstation/data.ts | 6 ----- .../mes/qc/indicator/components/select.vue | 6 +---- .../mes/qc/indicatorresult/components/data.ts | 18 ++++++++++--- apps/web-antd/src/views/mes/qc/ipqc/data.ts | 3 +++ .../src/views/mes/wm/outsourceissue/data.ts | 1 + .../src/views/mes/wm/returnissue/data.ts | 1 + .../src/views/mes/wm/returnsales/data.ts | 2 +- .../wm/stocktaking/plan/components/select.vue | 6 +---- .../src/views/mes/wm/stocktaking/task/data.ts | 1 + apps/web-ele/src/views/mes/cal/plan/data.ts | 1 - apps/web-ele/src/views/mes/cal/team/data.ts | 1 - .../src/views/mes/dv/checkplan/data.ts | 1 - .../src/views/mes/dv/checkrecord/data.ts | 2 -- .../src/views/mes/dv/machinery/data.ts | 1 - .../src/views/mes/dv/machinery/type/data.ts | 1 - .../src/views/mes/dv/maintenrecord/data.ts | 2 -- apps/web-ele/src/views/mes/dv/repair/data.ts | 1 - .../mes/dv/subject/components/select.vue | 26 ++++++++++++++++--- apps/web-ele/src/views/mes/dv/subject/data.ts | 1 - .../views/mes/md/client/components/select.vue | 6 +---- apps/web-ele/src/views/mes/md/client/data.ts | 6 ----- .../md/item/components/product-bom-select.vue | 8 ++---- .../views/mes/md/item/components/select.vue | 6 +---- apps/web-ele/src/views/mes/md/item/data.ts | 1 - .../src/views/mes/md/item/type/data.ts | 1 - .../views/mes/md/vendor/components/select.vue | 6 +---- apps/web-ele/src/views/mes/md/vendor/data.ts | 6 ----- .../mes/md/workstation/components/select.vue | 6 +---- .../src/views/mes/md/workstation/data.ts | 6 ----- .../src/views/mes/pro/feedback/data.ts | 1 - .../web-ele/src/views/mes/pro/process/data.ts | 1 - apps/web-ele/src/views/mes/pro/route/data.ts | 1 - .../mes/qc/indicator/components/select.vue | 6 +---- .../mes/qc/indicatorresult/components/data.ts | 18 ++++++++++--- apps/web-ele/src/views/mes/qc/ipqc/data.ts | 3 +++ apps/web-ele/src/views/mes/tm/tool/data.ts | 1 - .../src/views/mes/tm/tool/type/data.ts | 1 - .../src/views/mes/wm/outsourceissue/data.ts | 1 + .../src/views/mes/wm/returnissue/data.ts | 1 + .../src/views/mes/wm/returnsales/data.ts | 2 +- .../wm/stocktaking/plan/components/select.vue | 6 +---- .../src/views/mes/wm/stocktaking/task/data.ts | 1 + 52 files changed, 105 insertions(+), 144 deletions(-) diff --git a/apps/web-antd/src/views/mes/dv/checkrecord/data.ts b/apps/web-antd/src/views/mes/dv/checkrecord/data.ts index 665e3c988..abb9ac626 100644 --- a/apps/web-antd/src/views/mes/dv/checkrecord/data.ts +++ b/apps/web-antd/src/views/mes/dv/checkrecord/data.ts @@ -53,7 +53,6 @@ export function useFormSchema(): VbenFormSchema[] { type: MesDvSubjectTypeEnum.CHECK, placeholder: '请选择计划', }, - rules: 'selectRequired', }, { fieldName: 'userId', @@ -66,7 +65,6 @@ export function useFormSchema(): VbenFormSchema[] { placeholder: '请选择点检人', valueField: 'id', }, - rules: 'selectRequired', }, { fieldName: 'checkTime', diff --git a/apps/web-antd/src/views/mes/dv/maintenrecord/data.ts b/apps/web-antd/src/views/mes/dv/maintenrecord/data.ts index badcf2162..4a9fbeb42 100644 --- a/apps/web-antd/src/views/mes/dv/maintenrecord/data.ts +++ b/apps/web-antd/src/views/mes/dv/maintenrecord/data.ts @@ -53,7 +53,6 @@ export function useFormSchema(): VbenFormSchema[] { type: MesDvSubjectTypeEnum.MAINTENANCE, placeholder: '请选择计划', }, - rules: 'selectRequired', }, { fieldName: 'userId', @@ -66,7 +65,6 @@ export function useFormSchema(): VbenFormSchema[] { placeholder: '请选择保养人', valueField: 'id', }, - rules: 'selectRequired', }, { fieldName: 'maintenTime', diff --git a/apps/web-antd/src/views/mes/dv/subject/components/select.vue b/apps/web-antd/src/views/mes/dv/subject/components/select.vue index 8c54234d4..0458b55a7 100644 --- a/apps/web-antd/src/views/mes/dv/subject/components/select.vue +++ b/apps/web-antd/src/views/mes/dv/subject/components/select.vue @@ -5,6 +5,8 @@ import type { MesDvSubjectApi } from '#/api/mes/dv/subject'; import { computed, onMounted, ref } from 'vue'; +import { CommonStatusEnum } from '@vben/constants'; + import { Select } from 'ant-design-vue'; import { getSubjectSimpleList } from '#/api/mes/dv/subject'; @@ -32,9 +34,26 @@ const emit = defineEmits<{ 'update:modelValue': [value?: number]; }>(); const list = ref([]); // 项目列表 -const filteredList = computed( - () => list.value.filter((item) => !props.type || item.type === props.type), -); +const filteredList = computed(() => { + // 仅展示启用且类型匹配的项目,避免新建时带出禁用项目 + const result: Array = + list.value.filter( + (item) => + item.status === CommonStatusEnum.ENABLE && + (!props.type || item.type === props.type), + ); + // 历史数据可能绑定已禁用或其它类型的项目,补充当前选中项用于回显,并禁止重新选择 + if ( + props.modelValue != null && + !result.some((item) => item.id === props.modelValue) + ) { + const current = list.value.find((item) => item.id === props.modelValue); + if (current) { + result.push({ ...current, disabled: true }); + } + } + return result; +}); /** 加载项目列表 */ async function getList() { diff --git a/apps/web-antd/src/views/mes/md/client/components/select.vue b/apps/web-antd/src/views/mes/md/client/components/select.vue index bbe599651..8b526b5cc 100644 --- a/apps/web-antd/src/views/mes/md/client/components/select.vue +++ b/apps/web-antd/src/views/mes/md/client/components/select.vue @@ -54,11 +54,7 @@ async function resolveItemById(id: number | undefined) { if (selectedItem.value?.id === id) { return; } - try { - selectedItem.value = await getClient(id); - } catch (error) { - console.error('[MdClientSelect] resolveItemById failed:', error); - } + selectedItem.value = await getClient(id); } watch( diff --git a/apps/web-antd/src/views/mes/md/client/data.ts b/apps/web-antd/src/views/mes/md/client/data.ts index 3c14dc147..b2fb2fb1e 100644 --- a/apps/web-antd/src/views/mes/md/client/data.ts +++ b/apps/web-antd/src/views/mes/md/client/data.ts @@ -33,12 +33,6 @@ export function useFormSchema(formApi?: VbenFormApi): VbenFormSchema[] { componentProps: { placeholder: '请输入客户编码', }, - dependencies: { - triggerFields: ['id'], - componentProps: (values) => ({ - disabled: !!values.id, - }), - }, rules: 'required', suffix: () => h( diff --git a/apps/web-antd/src/views/mes/md/item/components/product-bom-select.vue b/apps/web-antd/src/views/mes/md/item/components/product-bom-select.vue index a5085f356..79375fb89 100644 --- a/apps/web-antd/src/views/mes/md/item/components/product-bom-select.vue +++ b/apps/web-antd/src/views/mes/md/item/components/product-bom-select.vue @@ -56,12 +56,8 @@ async function resolveBomById(bomItemId: number | undefined) { if (selectedBom.value?.bomItemId === bomItemId) { return; } - try { - const list = await getProductBomListByItemId(props.itemId); - selectedBom.value = list.find((item) => item.bomItemId === bomItemId); - } catch (error) { - console.error('[MdProductBomSelect] resolveBomById failed:', error); - } + const list = await getProductBomListByItemId(props.itemId); + selectedBom.value = list.find((item) => item.bomItemId === bomItemId); } watch( diff --git a/apps/web-antd/src/views/mes/md/item/components/select.vue b/apps/web-antd/src/views/mes/md/item/components/select.vue index bb62ec9a4..976f590cb 100644 --- a/apps/web-antd/src/views/mes/md/item/components/select.vue +++ b/apps/web-antd/src/views/mes/md/item/components/select.vue @@ -54,11 +54,7 @@ async function resolveItemById(id: number | undefined) { if (selectedItem.value?.id === id) { return; } - try { - selectedItem.value = await getItem(id); - } catch (error) { - console.error('[MdItemSelect] resolveItemById failed:', error); - } + selectedItem.value = await getItem(id); } watch( diff --git a/apps/web-antd/src/views/mes/md/vendor/components/select.vue b/apps/web-antd/src/views/mes/md/vendor/components/select.vue index cc6e756b9..91ca865d8 100644 --- a/apps/web-antd/src/views/mes/md/vendor/components/select.vue +++ b/apps/web-antd/src/views/mes/md/vendor/components/select.vue @@ -54,11 +54,7 @@ async function resolveItemById(id: number | undefined) { if (selectedItem.value?.id === id) { return; } - try { - selectedItem.value = await getVendor(id); - } catch (error) { - console.error('[MdVendorSelect] resolveItemById failed:', error); - } + selectedItem.value = await getVendor(id); } watch( diff --git a/apps/web-antd/src/views/mes/md/vendor/data.ts b/apps/web-antd/src/views/mes/md/vendor/data.ts index c9accb2c8..3237476fc 100644 --- a/apps/web-antd/src/views/mes/md/vendor/data.ts +++ b/apps/web-antd/src/views/mes/md/vendor/data.ts @@ -33,12 +33,6 @@ export function useFormSchema(formApi?: VbenFormApi): VbenFormSchema[] { componentProps: { placeholder: '请输入供应商编码', }, - dependencies: { - triggerFields: ['id'], - componentProps: (values) => ({ - disabled: !!values.id, - }), - }, rules: 'required', suffix: () => h( diff --git a/apps/web-antd/src/views/mes/md/workstation/components/select.vue b/apps/web-antd/src/views/mes/md/workstation/components/select.vue index fd4d6ecfd..85b771096 100644 --- a/apps/web-antd/src/views/mes/md/workstation/components/select.vue +++ b/apps/web-antd/src/views/mes/md/workstation/components/select.vue @@ -56,11 +56,7 @@ async function resolveItemById(id: number | undefined) { if (selectedItem.value?.id === id) { return; } - try { - selectedItem.value = await getWorkstation(id); - } catch (error) { - console.error('[MdWorkstationSelect] resolveItemById failed:', error); - } + selectedItem.value = await getWorkstation(id); } watch( diff --git a/apps/web-antd/src/views/mes/md/workstation/data.ts b/apps/web-antd/src/views/mes/md/workstation/data.ts index f5201219c..886dc369c 100644 --- a/apps/web-antd/src/views/mes/md/workstation/data.ts +++ b/apps/web-antd/src/views/mes/md/workstation/data.ts @@ -39,12 +39,6 @@ export function useFormSchema(formApi?: VbenFormApi): VbenFormSchema[] { componentProps: { placeholder: '请输入工作站编码', }, - dependencies: { - triggerFields: ['id'], - componentProps: (values) => ({ - disabled: !!values.id, - }), - }, rules: 'required', suffix: () => h( diff --git a/apps/web-antd/src/views/mes/qc/indicator/components/select.vue b/apps/web-antd/src/views/mes/qc/indicator/components/select.vue index 010323d45..d8b8e465c 100644 --- a/apps/web-antd/src/views/mes/qc/indicator/components/select.vue +++ b/apps/web-antd/src/views/mes/qc/indicator/components/select.vue @@ -55,11 +55,7 @@ async function resolveItemById(id: number | undefined) { if (selectedItem.value?.id === id) { return; } - try { - selectedItem.value = await getIndicator(id); - } catch (error) { - console.error('[QcIndicatorSelect] resolveItemById failed:', error); - } + selectedItem.value = await getIndicator(id); } watch(() => props.modelValue, resolveItemById, { immediate: true }); diff --git a/apps/web-antd/src/views/mes/qc/indicatorresult/components/data.ts b/apps/web-antd/src/views/mes/qc/indicatorresult/components/data.ts index d60f0a508..694a01cb0 100644 --- a/apps/web-antd/src/views/mes/qc/indicatorresult/components/data.ts +++ b/apps/web-antd/src/views/mes/qc/indicatorresult/components/data.ts @@ -73,9 +73,21 @@ export function useQcIndicatorResultFormSchema( /** 检测结果列表的字段 */ export function useQcIndicatorResultGridColumns(): VxeTableGridOptions['columns'] { return [ - { field: 'code', title: '样品编号', width: 200 }, - { field: 'sn', title: '物资SN', minWidth: 200 }, - { field: 'remark', title: '备注', minWidth: 200 }, + { + field: 'code', + title: '样品编号', + width: 200, + }, + { + field: 'sn', + title: '物资SN', + minWidth: 200, + }, + { + field: 'remark', + title: '备注', + minWidth: 200, + }, { title: '操作', width: 150, diff --git a/apps/web-antd/src/views/mes/qc/ipqc/data.ts b/apps/web-antd/src/views/mes/qc/ipqc/data.ts index 09f91e471..9a2fd4efd 100644 --- a/apps/web-antd/src/views/mes/qc/ipqc/data.ts +++ b/apps/web-antd/src/views/mes/qc/ipqc/data.ts @@ -257,6 +257,7 @@ export function useFormSchema( precision: 2, onChange: () => syncUnqualified(formApi), }, + defaultValue: 0, rules: 'required', dependencies: { triggerFields: ['unqualifiedQuantity'], @@ -275,6 +276,7 @@ export function useFormSchema( precision: 2, onChange: () => syncUnqualified(formApi), }, + defaultValue: 0, rules: 'required', dependencies: { triggerFields: ['unqualifiedQuantity'], @@ -293,6 +295,7 @@ export function useFormSchema( precision: 2, onChange: () => syncUnqualified(formApi), }, + defaultValue: 0, rules: 'required', dependencies: { triggerFields: ['unqualifiedQuantity'], diff --git a/apps/web-antd/src/views/mes/wm/outsourceissue/data.ts b/apps/web-antd/src/views/mes/wm/outsourceissue/data.ts index 707d50dc2..175a44c89 100644 --- a/apps/web-antd/src/views/mes/wm/outsourceissue/data.ts +++ b/apps/web-antd/src/views/mes/wm/outsourceissue/data.ts @@ -410,6 +410,7 @@ export function useDetailFormSchema(formApi?: VbenFormApi): VbenFormSchema[] { componentProps: { disabled: true, }, + rules: 'selectRequired', }, { fieldName: 'quantity', diff --git a/apps/web-antd/src/views/mes/wm/returnissue/data.ts b/apps/web-antd/src/views/mes/wm/returnissue/data.ts index 1ad1b1919..1acf4642b 100644 --- a/apps/web-antd/src/views/mes/wm/returnissue/data.ts +++ b/apps/web-antd/src/views/mes/wm/returnissue/data.ts @@ -463,6 +463,7 @@ export function useDetailFormSchema(formApi?: VbenFormApi): VbenFormSchema[] { componentProps: { disabled: true, }, + rules: 'selectRequired', }, { fieldName: 'materialStockId', diff --git a/apps/web-antd/src/views/mes/wm/returnsales/data.ts b/apps/web-antd/src/views/mes/wm/returnsales/data.ts index a5236e43d..eb92359a8 100644 --- a/apps/web-antd/src/views/mes/wm/returnsales/data.ts +++ b/apps/web-antd/src/views/mes/wm/returnsales/data.ts @@ -372,7 +372,7 @@ export function useLineFormSchema( fieldName: 'rqcCheckFlag', label: '需要质检', component: 'Switch', - rules: z.boolean().default(true), + rules: z.boolean().default(false), }, { fieldName: 'remark', diff --git a/apps/web-antd/src/views/mes/wm/stocktaking/plan/components/select.vue b/apps/web-antd/src/views/mes/wm/stocktaking/plan/components/select.vue index 2f287f63d..2285cb123 100644 --- a/apps/web-antd/src/views/mes/wm/stocktaking/plan/components/select.vue +++ b/apps/web-antd/src/views/mes/wm/stocktaking/plan/components/select.vue @@ -57,11 +57,7 @@ async function resolveItemById(id: number | undefined) { if (selectedItem.value?.id === id) { return; } - try { - selectedItem.value = await getStockTakingPlan(id); - } catch (error) { - console.error('[StockTakingPlanSelect] resolveItemById failed:', error); - } + selectedItem.value = await getStockTakingPlan(id); } watch(() => props.modelValue, resolveItemById, { immediate: true }); diff --git a/apps/web-antd/src/views/mes/wm/stocktaking/task/data.ts b/apps/web-antd/src/views/mes/wm/stocktaking/task/data.ts index 74da1d3b5..ef929cf01 100644 --- a/apps/web-antd/src/views/mes/wm/stocktaking/task/data.ts +++ b/apps/web-antd/src/views/mes/wm/stocktaking/task/data.ts @@ -476,6 +476,7 @@ export function useResultFormSchema( await formApi?.setValues({ areaId: line?.areaId, batchCode: line?.batchCode, + batchId: line?.batchId, itemId: line?.itemId, locationId: line?.locationId, materialStockId: line?.materialStockId, diff --git a/apps/web-ele/src/views/mes/cal/plan/data.ts b/apps/web-ele/src/views/mes/cal/plan/data.ts index 4e60b04c5..11adbee81 100644 --- a/apps/web-ele/src/views/mes/cal/plan/data.ts +++ b/apps/web-ele/src/views/mes/cal/plan/data.ts @@ -47,7 +47,6 @@ export function useFormSchema(formApi?: VbenFormApi): VbenFormSchema[] { h( ElButton, { - type: 'default', onClick: async () => { const code = await generateAutoCode(MesAutoCodeRuleCode.CAL_PLAN_CODE); await formApi?.setFieldValue('code', code); diff --git a/apps/web-ele/src/views/mes/cal/team/data.ts b/apps/web-ele/src/views/mes/cal/team/data.ts index a0b518750..e284eebd7 100644 --- a/apps/web-ele/src/views/mes/cal/team/data.ts +++ b/apps/web-ele/src/views/mes/cal/team/data.ts @@ -39,7 +39,6 @@ export function useFormSchema(formApi?: VbenFormApi): VbenFormSchema[] { h( ElButton, { - type: 'default', onClick: async () => { const code = await generateAutoCode(MesAutoCodeRuleCode.CAL_TEAM_CODE); await formApi?.setFieldValue('code', code); diff --git a/apps/web-ele/src/views/mes/dv/checkplan/data.ts b/apps/web-ele/src/views/mes/dv/checkplan/data.ts index 53dc8da6d..b17aa7569 100644 --- a/apps/web-ele/src/views/mes/dv/checkplan/data.ts +++ b/apps/web-ele/src/views/mes/dv/checkplan/data.ts @@ -48,7 +48,6 @@ export function useFormSchema(formApi?: VbenFormApi): VbenFormSchema[] { h( ElButton, { - type: 'default', onClick: async () => { const code = await generateAutoCode(MesAutoCodeRuleCode.DV_CHECK_PLAN_CODE); await formApi?.setFieldValue('code', code); diff --git a/apps/web-ele/src/views/mes/dv/checkrecord/data.ts b/apps/web-ele/src/views/mes/dv/checkrecord/data.ts index 04e3d443b..21fb56291 100644 --- a/apps/web-ele/src/views/mes/dv/checkrecord/data.ts +++ b/apps/web-ele/src/views/mes/dv/checkrecord/data.ts @@ -53,7 +53,6 @@ export function useFormSchema(): VbenFormSchema[] { type: MesDvSubjectTypeEnum.CHECK, placeholder: '请选择计划', }, - rules: 'selectRequired', }, { fieldName: 'userId', @@ -66,7 +65,6 @@ export function useFormSchema(): VbenFormSchema[] { placeholder: '请选择点检人', valueField: 'id', }, - rules: 'selectRequired', }, { fieldName: 'checkTime', diff --git a/apps/web-ele/src/views/mes/dv/machinery/data.ts b/apps/web-ele/src/views/mes/dv/machinery/data.ts index 1b6871ca2..78c9d47ad 100644 --- a/apps/web-ele/src/views/mes/dv/machinery/data.ts +++ b/apps/web-ele/src/views/mes/dv/machinery/data.ts @@ -45,7 +45,6 @@ export function useFormSchema(formType: FormType, formApi?: VbenFormApi): VbenFo h( ElButton, { - type: 'default', onClick: async () => { const code = await generateAutoCode(MesAutoCodeRuleCode.DV_MACHINERY_CODE); await formApi?.setFieldValue('code', code); diff --git a/apps/web-ele/src/views/mes/dv/machinery/type/data.ts b/apps/web-ele/src/views/mes/dv/machinery/type/data.ts index 8ec5ebb5d..b604d1725 100644 --- a/apps/web-ele/src/views/mes/dv/machinery/type/data.ts +++ b/apps/web-ele/src/views/mes/dv/machinery/type/data.ts @@ -55,7 +55,6 @@ export function useFormSchema(formApi?: VbenFormApi): VbenFormSchema[] { h( ElButton, { - type: 'default', onClick: async () => { const code = await generateAutoCode(MesAutoCodeRuleCode.DV_MACHINERY_TYPE_CODE); await formApi?.setFieldValue('code', code); diff --git a/apps/web-ele/src/views/mes/dv/maintenrecord/data.ts b/apps/web-ele/src/views/mes/dv/maintenrecord/data.ts index 4b6c3d4c3..16d30d7d5 100644 --- a/apps/web-ele/src/views/mes/dv/maintenrecord/data.ts +++ b/apps/web-ele/src/views/mes/dv/maintenrecord/data.ts @@ -53,7 +53,6 @@ export function useFormSchema(): VbenFormSchema[] { type: MesDvSubjectTypeEnum.MAINTENANCE, placeholder: '请选择计划', }, - rules: 'selectRequired', }, { fieldName: 'userId', @@ -66,7 +65,6 @@ export function useFormSchema(): VbenFormSchema[] { placeholder: '请选择保养人', valueField: 'id', }, - rules: 'selectRequired', }, { fieldName: 'maintenTime', diff --git a/apps/web-ele/src/views/mes/dv/repair/data.ts b/apps/web-ele/src/views/mes/dv/repair/data.ts index 98e1fbe45..7bc02aded 100644 --- a/apps/web-ele/src/views/mes/dv/repair/data.ts +++ b/apps/web-ele/src/views/mes/dv/repair/data.ts @@ -52,7 +52,6 @@ export function useFormSchema(formApi?: VbenFormApi): VbenFormSchema[] { h( ElButton, { - type: 'default', onClick: async () => { const code = await generateAutoCode(MesAutoCodeRuleCode.DV_REPAIR_CODE); await formApi?.setFieldValue('code', code); diff --git a/apps/web-ele/src/views/mes/dv/subject/components/select.vue b/apps/web-ele/src/views/mes/dv/subject/components/select.vue index 918efe5ee..c9f3be4d3 100644 --- a/apps/web-ele/src/views/mes/dv/subject/components/select.vue +++ b/apps/web-ele/src/views/mes/dv/subject/components/select.vue @@ -3,6 +3,8 @@ import type { MesDvSubjectApi } from '#/api/mes/dv/subject'; import { computed, onMounted, ref } from 'vue'; +import { CommonStatusEnum } from '@vben/constants'; + import { ElOption, ElSelect } from 'element-plus'; import { getSubjectSimpleList } from '#/api/mes/dv/subject'; @@ -30,9 +32,26 @@ const emit = defineEmits<{ 'update:modelValue': [value?: number]; }>(); const list = ref([]); // 项目列表 -const filteredList = computed( - () => list.value.filter((item) => !props.type || item.type === props.type), -); +const filteredList = computed(() => { + // 仅展示启用且类型匹配的项目,避免新建时带出禁用项目 + const result: Array = + list.value.filter( + (item) => + item.status === CommonStatusEnum.ENABLE && + (!props.type || item.type === props.type), + ); + // 历史数据可能绑定已禁用或其它类型的项目,补充当前选中项用于回显,并禁止重新选择 + if ( + props.modelValue != null && + !result.some((item) => item.id === props.modelValue) + ) { + const current = list.value.find((item) => item.id === props.modelValue); + if (current) { + result.push({ ...current, disabled: true }); + } + } + return result; +}); /** 加载项目列表 */ async function getList() { @@ -62,6 +81,7 @@ onMounted(getList); diff --git a/apps/web-ele/src/views/mes/dv/subject/data.ts b/apps/web-ele/src/views/mes/dv/subject/data.ts index f35bffd20..ca397466e 100644 --- a/apps/web-ele/src/views/mes/dv/subject/data.ts +++ b/apps/web-ele/src/views/mes/dv/subject/data.ts @@ -43,7 +43,6 @@ export function useFormSchema(formApi?: VbenFormApi): VbenFormSchema[] { h( ElButton, { - type: 'default', onClick: async () => { const code = await generateAutoCode(MesAutoCodeRuleCode.DV_SUBJECT_CODE); await formApi?.setFieldValue('code', code); diff --git a/apps/web-ele/src/views/mes/md/client/components/select.vue b/apps/web-ele/src/views/mes/md/client/components/select.vue index 6fe4417f0..3df31d326 100644 --- a/apps/web-ele/src/views/mes/md/client/components/select.vue +++ b/apps/web-ele/src/views/mes/md/client/components/select.vue @@ -54,11 +54,7 @@ async function resolveItemById(id: number | undefined) { if (selectedItem.value?.id === id) { return; } - try { - selectedItem.value = await getClient(id); - } catch (error) { - console.error('[MdClientSelect] resolveItemById failed:', error); - } + selectedItem.value = await getClient(id); } watch( diff --git a/apps/web-ele/src/views/mes/md/client/data.ts b/apps/web-ele/src/views/mes/md/client/data.ts index 97363e232..198496dc1 100644 --- a/apps/web-ele/src/views/mes/md/client/data.ts +++ b/apps/web-ele/src/views/mes/md/client/data.ts @@ -33,12 +33,6 @@ export function useFormSchema(formApi?: VbenFormApi): VbenFormSchema[] { componentProps: { placeholder: '请输入客户编码', }, - dependencies: { - triggerFields: ['id'], - componentProps: (values) => ({ - disabled: !!values.id, - }), - }, rules: 'required', suffix: () => h( diff --git a/apps/web-ele/src/views/mes/md/item/components/product-bom-select.vue b/apps/web-ele/src/views/mes/md/item/components/product-bom-select.vue index 9661df112..96d527759 100644 --- a/apps/web-ele/src/views/mes/md/item/components/product-bom-select.vue +++ b/apps/web-ele/src/views/mes/md/item/components/product-bom-select.vue @@ -56,12 +56,8 @@ async function resolveBomById(bomItemId: number | undefined) { if (selectedBom.value?.bomItemId === bomItemId) { return; } - try { - const list = await getProductBomListByItemId(props.itemId); - selectedBom.value = list.find((item) => item.bomItemId === bomItemId); - } catch (error) { - console.error('[MdProductBomSelect] resolveBomById failed:', error); - } + const list = await getProductBomListByItemId(props.itemId); + selectedBom.value = list.find((item) => item.bomItemId === bomItemId); } watch( diff --git a/apps/web-ele/src/views/mes/md/item/components/select.vue b/apps/web-ele/src/views/mes/md/item/components/select.vue index 71de21f95..938a408bf 100644 --- a/apps/web-ele/src/views/mes/md/item/components/select.vue +++ b/apps/web-ele/src/views/mes/md/item/components/select.vue @@ -54,11 +54,7 @@ async function resolveItemById(id: number | undefined) { if (selectedItem.value?.id === id) { return; } - try { - selectedItem.value = await getItem(id); - } catch (error) { - console.error('[MdItemSelect] resolveItemById failed:', error); - } + selectedItem.value = await getItem(id); } watch( diff --git a/apps/web-ele/src/views/mes/md/item/data.ts b/apps/web-ele/src/views/mes/md/item/data.ts index 970423c67..047d0aa0f 100644 --- a/apps/web-ele/src/views/mes/md/item/data.ts +++ b/apps/web-ele/src/views/mes/md/item/data.ts @@ -42,7 +42,6 @@ export function useFormSchema(formApi?: VbenFormApi): VbenFormSchema[] { h( ElButton, { - type: 'default', onClick: async () => { const code = await generateAutoCode( MesAutoCodeRuleCode.MD_ITEM_CODE, diff --git a/apps/web-ele/src/views/mes/md/item/type/data.ts b/apps/web-ele/src/views/mes/md/item/type/data.ts index fd3b623e9..0ccb8f423 100644 --- a/apps/web-ele/src/views/mes/md/item/type/data.ts +++ b/apps/web-ele/src/views/mes/md/item/type/data.ts @@ -68,7 +68,6 @@ export function useFormSchema(formApi?: VbenFormApi): VbenFormSchema[] { h( ElButton, { - type: 'default', onClick: async () => { const code = await generateAutoCode( MesAutoCodeRuleCode.MD_ITEM_TYPE_CODE, diff --git a/apps/web-ele/src/views/mes/md/vendor/components/select.vue b/apps/web-ele/src/views/mes/md/vendor/components/select.vue index 2d1973464..895f29739 100644 --- a/apps/web-ele/src/views/mes/md/vendor/components/select.vue +++ b/apps/web-ele/src/views/mes/md/vendor/components/select.vue @@ -54,11 +54,7 @@ async function resolveItemById(id: number | undefined) { if (selectedItem.value?.id === id) { return; } - try { - selectedItem.value = await getVendor(id); - } catch (error) { - console.error('[MdVendorSelect] resolveItemById failed:', error); - } + selectedItem.value = await getVendor(id); } watch( diff --git a/apps/web-ele/src/views/mes/md/vendor/data.ts b/apps/web-ele/src/views/mes/md/vendor/data.ts index 3aed1d87c..b30a4ead9 100644 --- a/apps/web-ele/src/views/mes/md/vendor/data.ts +++ b/apps/web-ele/src/views/mes/md/vendor/data.ts @@ -33,12 +33,6 @@ export function useFormSchema(formApi?: VbenFormApi): VbenFormSchema[] { componentProps: { placeholder: '请输入供应商编码', }, - dependencies: { - triggerFields: ['id'], - componentProps: (values) => ({ - disabled: !!values.id, - }), - }, rules: 'required', suffix: () => h( diff --git a/apps/web-ele/src/views/mes/md/workstation/components/select.vue b/apps/web-ele/src/views/mes/md/workstation/components/select.vue index c8b677e3e..1530c7f58 100644 --- a/apps/web-ele/src/views/mes/md/workstation/components/select.vue +++ b/apps/web-ele/src/views/mes/md/workstation/components/select.vue @@ -56,11 +56,7 @@ async function resolveItemById(id: number | undefined) { if (selectedItem.value?.id === id) { return; } - try { - selectedItem.value = await getWorkstation(id); - } catch (error) { - console.error('[MdWorkstationSelect] resolveItemById failed:', error); - } + selectedItem.value = await getWorkstation(id); } watch( diff --git a/apps/web-ele/src/views/mes/md/workstation/data.ts b/apps/web-ele/src/views/mes/md/workstation/data.ts index 6825b3868..3d08ae22e 100644 --- a/apps/web-ele/src/views/mes/md/workstation/data.ts +++ b/apps/web-ele/src/views/mes/md/workstation/data.ts @@ -39,12 +39,6 @@ export function useFormSchema(formApi?: VbenFormApi): VbenFormSchema[] { componentProps: { placeholder: '请输入工作站编码', }, - dependencies: { - triggerFields: ['id'], - componentProps: (values) => ({ - disabled: !!values.id, - }), - }, rules: 'required', suffix: () => h( diff --git a/apps/web-ele/src/views/mes/pro/feedback/data.ts b/apps/web-ele/src/views/mes/pro/feedback/data.ts index 72b6cbebf..c5db6c172 100644 --- a/apps/web-ele/src/views/mes/pro/feedback/data.ts +++ b/apps/web-ele/src/views/mes/pro/feedback/data.ts @@ -216,7 +216,6 @@ export function useFormSchema( ElButton, { disabled: isHeaderReadonly, - type: 'default', onClick: async () => { const code = await generateAutoCode( MesAutoCodeRuleCode.PRO_FEEDBACK_CODE, diff --git a/apps/web-ele/src/views/mes/pro/process/data.ts b/apps/web-ele/src/views/mes/pro/process/data.ts index 937a14cc6..12d397d00 100644 --- a/apps/web-ele/src/views/mes/pro/process/data.ts +++ b/apps/web-ele/src/views/mes/pro/process/data.ts @@ -40,7 +40,6 @@ export function useFormSchema(formApi?: VbenFormApi): VbenFormSchema[] { h( ElButton, { - type: 'default', onClick: async () => { const code = await generateAutoCode( MesAutoCodeRuleCode.PRO_PROCESS_CODE, diff --git a/apps/web-ele/src/views/mes/pro/route/data.ts b/apps/web-ele/src/views/mes/pro/route/data.ts index ae2d8febb..988df716e 100644 --- a/apps/web-ele/src/views/mes/pro/route/data.ts +++ b/apps/web-ele/src/views/mes/pro/route/data.ts @@ -45,7 +45,6 @@ export function useFormSchema(formApi?: VbenFormApi): VbenFormSchema[] { h( ElButton, { - type: 'default', onClick: async () => { const code = await generateAutoCode( MesAutoCodeRuleCode.PRO_ROUTE_CODE, diff --git a/apps/web-ele/src/views/mes/qc/indicator/components/select.vue b/apps/web-ele/src/views/mes/qc/indicator/components/select.vue index 76348179f..f8ee8ee0e 100644 --- a/apps/web-ele/src/views/mes/qc/indicator/components/select.vue +++ b/apps/web-ele/src/views/mes/qc/indicator/components/select.vue @@ -55,11 +55,7 @@ async function resolveItemById(id: number | undefined) { if (selectedItem.value?.id === id) { return; } - try { - selectedItem.value = await getIndicator(id); - } catch (error) { - console.error('[QcIndicatorSelect] resolveItemById failed:', error); - } + selectedItem.value = await getIndicator(id); } watch(() => props.modelValue, resolveItemById, { immediate: true }); diff --git a/apps/web-ele/src/views/mes/qc/indicatorresult/components/data.ts b/apps/web-ele/src/views/mes/qc/indicatorresult/components/data.ts index d325df7d5..867051753 100644 --- a/apps/web-ele/src/views/mes/qc/indicatorresult/components/data.ts +++ b/apps/web-ele/src/views/mes/qc/indicatorresult/components/data.ts @@ -72,9 +72,21 @@ export function useQcIndicatorResultFormSchema( /** 检测结果列表的字段 */ export function useQcIndicatorResultGridColumns(): VxeTableGridOptions['columns'] { return [ - { field: 'code', title: '样品编号', width: 200 }, - { field: 'sn', title: '物资SN', minWidth: 200 }, - { field: 'remark', title: '备注', minWidth: 200 }, + { + field: 'code', + title: '样品编号', + width: 200, + }, + { + field: 'sn', + title: '物资SN', + minWidth: 200, + }, + { + field: 'remark', + title: '备注', + minWidth: 200, + }, { title: '操作', width: 150, diff --git a/apps/web-ele/src/views/mes/qc/ipqc/data.ts b/apps/web-ele/src/views/mes/qc/ipqc/data.ts index b2f22b360..15d8dfed6 100644 --- a/apps/web-ele/src/views/mes/qc/ipqc/data.ts +++ b/apps/web-ele/src/views/mes/qc/ipqc/data.ts @@ -261,6 +261,7 @@ export function useFormSchema( precision: 2, onChange: () => syncUnqualified(formApi), }, + defaultValue: 0, rules: 'required', dependencies: { triggerFields: ['unqualifiedQuantity'], @@ -280,6 +281,7 @@ export function useFormSchema( precision: 2, onChange: () => syncUnqualified(formApi), }, + defaultValue: 0, rules: 'required', dependencies: { triggerFields: ['unqualifiedQuantity'], @@ -299,6 +301,7 @@ export function useFormSchema( precision: 2, onChange: () => syncUnqualified(formApi), }, + defaultValue: 0, rules: 'required', dependencies: { triggerFields: ['unqualifiedQuantity'], diff --git a/apps/web-ele/src/views/mes/tm/tool/data.ts b/apps/web-ele/src/views/mes/tm/tool/data.ts index 514205966..f83d4f762 100644 --- a/apps/web-ele/src/views/mes/tm/tool/data.ts +++ b/apps/web-ele/src/views/mes/tm/tool/data.ts @@ -45,7 +45,6 @@ export function useFormSchema(formApi?: VbenFormApi): VbenFormSchema[] { h( ElButton, { - type: 'default', onClick: async () => { const code = await generateAutoCode(MesAutoCodeRuleCode.TM_TOOL_CODE); await formApi?.setFieldValue('code', code); diff --git a/apps/web-ele/src/views/mes/tm/tool/type/data.ts b/apps/web-ele/src/views/mes/tm/tool/type/data.ts index f06a407de..bf434a857 100644 --- a/apps/web-ele/src/views/mes/tm/tool/type/data.ts +++ b/apps/web-ele/src/views/mes/tm/tool/type/data.ts @@ -38,7 +38,6 @@ export function useFormSchema(formApi?: VbenFormApi): VbenFormSchema[] { h( ElButton, { - type: 'default', onClick: async () => { const code = await generateAutoCode(MesAutoCodeRuleCode.TM_TOOL_TYPE_CODE); await formApi?.setFieldValue('code', code); diff --git a/apps/web-ele/src/views/mes/wm/outsourceissue/data.ts b/apps/web-ele/src/views/mes/wm/outsourceissue/data.ts index c17cfc080..d3e5d2368 100644 --- a/apps/web-ele/src/views/mes/wm/outsourceissue/data.ts +++ b/apps/web-ele/src/views/mes/wm/outsourceissue/data.ts @@ -411,6 +411,7 @@ export function useDetailFormSchema(formApi?: VbenFormApi): VbenFormSchema[] { componentProps: { disabled: true, }, + rules: 'selectRequired', }, { fieldName: 'quantity', diff --git a/apps/web-ele/src/views/mes/wm/returnissue/data.ts b/apps/web-ele/src/views/mes/wm/returnissue/data.ts index 59df1e444..82b1a7da9 100644 --- a/apps/web-ele/src/views/mes/wm/returnissue/data.ts +++ b/apps/web-ele/src/views/mes/wm/returnissue/data.ts @@ -464,6 +464,7 @@ export function useDetailFormSchema(formApi?: VbenFormApi): VbenFormSchema[] { componentProps: { disabled: true, }, + rules: 'selectRequired', }, { fieldName: 'materialStockId', diff --git a/apps/web-ele/src/views/mes/wm/returnsales/data.ts b/apps/web-ele/src/views/mes/wm/returnsales/data.ts index 580c4c9d5..03faab717 100644 --- a/apps/web-ele/src/views/mes/wm/returnsales/data.ts +++ b/apps/web-ele/src/views/mes/wm/returnsales/data.ts @@ -373,7 +373,7 @@ export function useLineFormSchema( fieldName: 'rqcCheckFlag', label: '需要质检', component: 'Switch', - rules: z.boolean().default(true), + rules: z.boolean().default(false), }, { fieldName: 'remark', diff --git a/apps/web-ele/src/views/mes/wm/stocktaking/plan/components/select.vue b/apps/web-ele/src/views/mes/wm/stocktaking/plan/components/select.vue index b1ba6d15d..8b3718dbb 100644 --- a/apps/web-ele/src/views/mes/wm/stocktaking/plan/components/select.vue +++ b/apps/web-ele/src/views/mes/wm/stocktaking/plan/components/select.vue @@ -57,11 +57,7 @@ async function resolveItemById(id: number | undefined) { if (selectedItem.value?.id === id) { return; } - try { - selectedItem.value = await getStockTakingPlan(id); - } catch (error) { - console.error('[StockTakingPlanSelect] resolveItemById failed:', error); - } + selectedItem.value = await getStockTakingPlan(id); } watch(() => props.modelValue, resolveItemById, { immediate: true }); diff --git a/apps/web-ele/src/views/mes/wm/stocktaking/task/data.ts b/apps/web-ele/src/views/mes/wm/stocktaking/task/data.ts index 61843466a..1d617f4dd 100644 --- a/apps/web-ele/src/views/mes/wm/stocktaking/task/data.ts +++ b/apps/web-ele/src/views/mes/wm/stocktaking/task/data.ts @@ -477,6 +477,7 @@ export function useResultFormSchema( await formApi?.setValues({ areaId: line?.areaId, batchCode: line?.batchCode, + batchId: line?.batchId, itemId: line?.itemId, locationId: line?.locationId, materialStockId: line?.materialStockId,