From f79dffcf2ea0f7f7277fc1b18e3e4e2c114ea8b1 Mon Sep 17 00:00:00 2001 From: YunaiV Date: Fri, 29 May 2026 21:10:18 +0800 Subject: [PATCH] =?UTF-8?q?feat(mes):=20=E8=BF=81=E7=A7=BB=20ipqc=E3=80=81?= =?UTF-8?q?oqc=E3=80=81rqc=20=E5=8A=9F=E8=83=BD=EF=BC=88=E4=BC=98=E5=8C=96?= =?UTF-8?q?=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../components/defect-record-inline-list.vue | 5 +- .../src/views/mes/qc/ipqc/modules/form.vue | 239 ++++++++++++++++++ .../views/mes/qc/ipqc/modules/line-list.vue | 4 +- .../views/mes/qc/iqc/modules/line-list.vue | 4 +- .../src/views/mes/qc/oqc/modules/form.vue | 2 +- .../views/mes/qc/oqc/modules/line-list.vue | 4 +- .../src/views/mes/qc/rqc/modules/form.vue | 2 +- .../views/mes/qc/rqc/modules/line-list.vue | 4 +- .../components/defect-record-inline-list.vue | 5 +- .../src/views/mes/qc/ipqc/modules/form.vue | 2 +- .../views/mes/qc/ipqc/modules/line-list.vue | 4 +- .../views/mes/qc/iqc/modules/line-list.vue | 4 +- .../src/views/mes/qc/oqc/modules/form.vue | 2 +- .../views/mes/qc/oqc/modules/line-list.vue | 4 +- .../src/views/mes/qc/rqc/modules/form.vue | 2 +- .../views/mes/qc/rqc/modules/line-list.vue | 4 +- 16 files changed, 268 insertions(+), 23 deletions(-) create mode 100644 apps/web-antd/src/views/mes/qc/ipqc/modules/form.vue diff --git a/apps/web-antd/src/views/mes/qc/defectrecord/components/defect-record-inline-list.vue b/apps/web-antd/src/views/mes/qc/defectrecord/components/defect-record-inline-list.vue index 95f338f09..834880e03 100644 --- a/apps/web-antd/src/views/mes/qc/defectrecord/components/defect-record-inline-list.vue +++ b/apps/web-antd/src/views/mes/qc/defectrecord/components/defect-record-inline-list.vue @@ -22,8 +22,11 @@ defineOptions({ name: 'DefectRecordInlineList' }); const emit = defineEmits(['success']); +/** 表单类型:父级检验单的模式(detail 时弹窗只读) */ +type FormType = 'create' | 'detail' | 'update'; + interface CtxData { - formType?: string; + formType?: FormType; lineId: number; qcId: number; qcType: number; diff --git a/apps/web-antd/src/views/mes/qc/ipqc/modules/form.vue b/apps/web-antd/src/views/mes/qc/ipqc/modules/form.vue new file mode 100644 index 000000000..64b1d698a --- /dev/null +++ b/apps/web-antd/src/views/mes/qc/ipqc/modules/form.vue @@ -0,0 +1,239 @@ + + + diff --git a/apps/web-antd/src/views/mes/qc/ipqc/modules/line-list.vue b/apps/web-antd/src/views/mes/qc/ipqc/modules/line-list.vue index e6aaea4bb..87aebb48a 100644 --- a/apps/web-antd/src/views/mes/qc/ipqc/modules/line-list.vue +++ b/apps/web-antd/src/views/mes/qc/ipqc/modules/line-list.vue @@ -9,10 +9,10 @@ import { getIpqcLinePage } from '#/api/mes/qc/ipqc/line'; import { MesQcTypeEnum } from '#/views/mes/utils/constants'; import { DefectRecordInlineList } from '../../defectrecord/components'; -import { useLineGridColumns } from '../data'; +import { type FormType, useLineGridColumns } from '../data'; const props = defineProps<{ - formType?: string; + formType?: FormType; ipqcId: number; }>(); diff --git a/apps/web-antd/src/views/mes/qc/iqc/modules/line-list.vue b/apps/web-antd/src/views/mes/qc/iqc/modules/line-list.vue index 13accbf88..825b07059 100644 --- a/apps/web-antd/src/views/mes/qc/iqc/modules/line-list.vue +++ b/apps/web-antd/src/views/mes/qc/iqc/modules/line-list.vue @@ -9,10 +9,10 @@ import { getIqcLinePage } from '#/api/mes/qc/iqc/line'; import { MesQcTypeEnum } from '#/views/mes/utils/constants'; import { DefectRecordInlineList } from '../../defectrecord/components'; -import { useLineGridColumns } from '../data'; +import { type FormType, useLineGridColumns } from '../data'; const props = defineProps<{ - formType?: string; + formType?: FormType; iqcId: number; }>(); diff --git a/apps/web-antd/src/views/mes/qc/oqc/modules/form.vue b/apps/web-antd/src/views/mes/qc/oqc/modules/form.vue index f9f4efc58..0d9d98e7f 100644 --- a/apps/web-antd/src/views/mes/qc/oqc/modules/form.vue +++ b/apps/web-antd/src/views/mes/qc/oqc/modules/form.vue @@ -27,7 +27,7 @@ const emit = defineEmits(['success']); const formType = ref('create'); const formData = ref(); const subTabsName = ref('line'); -const originalSnapshot = ref(''); +const originalSnapshot = ref(''); // 表单原始数据快照,用于 finish 时跳过未变更的保存请求 const isDetail = computed(() => formType.value === 'detail'); const canFinish = computed( () => diff --git a/apps/web-antd/src/views/mes/qc/oqc/modules/line-list.vue b/apps/web-antd/src/views/mes/qc/oqc/modules/line-list.vue index b0f15b132..5bcde58cf 100644 --- a/apps/web-antd/src/views/mes/qc/oqc/modules/line-list.vue +++ b/apps/web-antd/src/views/mes/qc/oqc/modules/line-list.vue @@ -9,10 +9,10 @@ import { getOqcLinePage } from '#/api/mes/qc/oqc/line'; import { MesQcTypeEnum } from '#/views/mes/utils/constants'; import { DefectRecordInlineList } from '../../defectrecord/components'; -import { useLineGridColumns } from '../data'; +import { type FormType, useLineGridColumns } from '../data'; const props = defineProps<{ - formType?: string; + formType?: FormType; oqcId: number; }>(); diff --git a/apps/web-antd/src/views/mes/qc/rqc/modules/form.vue b/apps/web-antd/src/views/mes/qc/rqc/modules/form.vue index 40e27ce12..3876ceda2 100644 --- a/apps/web-antd/src/views/mes/qc/rqc/modules/form.vue +++ b/apps/web-antd/src/views/mes/qc/rqc/modules/form.vue @@ -27,7 +27,7 @@ const emit = defineEmits(['success']); const formType = ref('create'); const formData = ref(); const subTabsName = ref('line'); -const originalSnapshot = ref(''); +const originalSnapshot = ref(''); // 表单原始数据快照,用于 finish 时跳过未变更的保存请求 const isDetail = computed(() => formType.value === 'detail'); const canFinish = computed( () => diff --git a/apps/web-antd/src/views/mes/qc/rqc/modules/line-list.vue b/apps/web-antd/src/views/mes/qc/rqc/modules/line-list.vue index 8c50238fa..f542d2fa2 100644 --- a/apps/web-antd/src/views/mes/qc/rqc/modules/line-list.vue +++ b/apps/web-antd/src/views/mes/qc/rqc/modules/line-list.vue @@ -9,10 +9,10 @@ import { getRqcLinePage } from '#/api/mes/qc/rqc/line'; import { MesQcTypeEnum } from '#/views/mes/utils/constants'; import { DefectRecordInlineList } from '../../defectrecord/components'; -import { useLineGridColumns } from '../data'; +import { type FormType, useLineGridColumns } from '../data'; const props = defineProps<{ - formType?: string; + formType?: FormType; rqcId: number; }>(); diff --git a/apps/web-ele/src/views/mes/qc/defectrecord/components/defect-record-inline-list.vue b/apps/web-ele/src/views/mes/qc/defectrecord/components/defect-record-inline-list.vue index 80b049926..77cc64d73 100644 --- a/apps/web-ele/src/views/mes/qc/defectrecord/components/defect-record-inline-list.vue +++ b/apps/web-ele/src/views/mes/qc/defectrecord/components/defect-record-inline-list.vue @@ -22,8 +22,11 @@ defineOptions({ name: 'DefectRecordInlineList' }); const emit = defineEmits(['success']); +/** 表单类型:父级检验单的模式(detail 时弹窗只读) */ +type FormType = 'create' | 'detail' | 'update'; + interface CtxData { - formType?: string; + formType?: FormType; lineId: number; qcId: number; qcType: number; diff --git a/apps/web-ele/src/views/mes/qc/ipqc/modules/form.vue b/apps/web-ele/src/views/mes/qc/ipqc/modules/form.vue index 7cfcafc38..aff33a0ab 100644 --- a/apps/web-ele/src/views/mes/qc/ipqc/modules/form.vue +++ b/apps/web-ele/src/views/mes/qc/ipqc/modules/form.vue @@ -34,7 +34,7 @@ const emit = defineEmits(['success']); const formType = ref('create'); const formData = ref(); const subTabsName = ref('line'); -const originalSnapshot = ref(''); +const originalSnapshot = ref(''); // 表单原始数据快照,用于 finish 时跳过未变更的保存请求 const isDetail = computed(() => formType.value === 'detail'); const canFinish = computed( () => diff --git a/apps/web-ele/src/views/mes/qc/ipqc/modules/line-list.vue b/apps/web-ele/src/views/mes/qc/ipqc/modules/line-list.vue index cfb8dc99d..1008e517b 100644 --- a/apps/web-ele/src/views/mes/qc/ipqc/modules/line-list.vue +++ b/apps/web-ele/src/views/mes/qc/ipqc/modules/line-list.vue @@ -9,10 +9,10 @@ import { getIpqcLinePage } from '#/api/mes/qc/ipqc/line'; import { MesQcTypeEnum } from '#/views/mes/utils/constants'; import { DefectRecordInlineList } from '../../defectrecord/components'; -import { useLineGridColumns } from '../data'; +import { type FormType, useLineGridColumns } from '../data'; const props = defineProps<{ - formType?: string; + formType?: FormType; ipqcId: number; }>(); diff --git a/apps/web-ele/src/views/mes/qc/iqc/modules/line-list.vue b/apps/web-ele/src/views/mes/qc/iqc/modules/line-list.vue index eadf2d1cc..fb1d7bcbc 100644 --- a/apps/web-ele/src/views/mes/qc/iqc/modules/line-list.vue +++ b/apps/web-ele/src/views/mes/qc/iqc/modules/line-list.vue @@ -9,10 +9,10 @@ import { getIqcLinePage } from '#/api/mes/qc/iqc/line'; import { MesQcTypeEnum } from '#/views/mes/utils/constants'; import { DefectRecordInlineList } from '../../defectrecord/components'; -import { useLineGridColumns } from '../data'; +import { type FormType, useLineGridColumns } from '../data'; const props = defineProps<{ - formType?: string; + formType?: FormType; iqcId: number; }>(); diff --git a/apps/web-ele/src/views/mes/qc/oqc/modules/form.vue b/apps/web-ele/src/views/mes/qc/oqc/modules/form.vue index c7067df71..831308c22 100644 --- a/apps/web-ele/src/views/mes/qc/oqc/modules/form.vue +++ b/apps/web-ele/src/views/mes/qc/oqc/modules/form.vue @@ -34,7 +34,7 @@ const emit = defineEmits(['success']); const formType = ref('create'); const formData = ref(); const subTabsName = ref('line'); -const originalSnapshot = ref(''); +const originalSnapshot = ref(''); // 表单原始数据快照,用于 finish 时跳过未变更的保存请求 const isDetail = computed(() => formType.value === 'detail'); const canFinish = computed( () => diff --git a/apps/web-ele/src/views/mes/qc/oqc/modules/line-list.vue b/apps/web-ele/src/views/mes/qc/oqc/modules/line-list.vue index 18af3731c..602ba913d 100644 --- a/apps/web-ele/src/views/mes/qc/oqc/modules/line-list.vue +++ b/apps/web-ele/src/views/mes/qc/oqc/modules/line-list.vue @@ -9,10 +9,10 @@ import { getOqcLinePage } from '#/api/mes/qc/oqc/line'; import { MesQcTypeEnum } from '#/views/mes/utils/constants'; import { DefectRecordInlineList } from '../../defectrecord/components'; -import { useLineGridColumns } from '../data'; +import { type FormType, useLineGridColumns } from '../data'; const props = defineProps<{ - formType?: string; + formType?: FormType; oqcId: number; }>(); diff --git a/apps/web-ele/src/views/mes/qc/rqc/modules/form.vue b/apps/web-ele/src/views/mes/qc/rqc/modules/form.vue index 6ff22a90d..90bb852ec 100644 --- a/apps/web-ele/src/views/mes/qc/rqc/modules/form.vue +++ b/apps/web-ele/src/views/mes/qc/rqc/modules/form.vue @@ -34,7 +34,7 @@ const emit = defineEmits(['success']); const formType = ref('create'); const formData = ref(); const subTabsName = ref('line'); -const originalSnapshot = ref(''); +const originalSnapshot = ref(''); // 表单原始数据快照,用于 finish 时跳过未变更的保存请求 const isDetail = computed(() => formType.value === 'detail'); const canFinish = computed( () => diff --git a/apps/web-ele/src/views/mes/qc/rqc/modules/line-list.vue b/apps/web-ele/src/views/mes/qc/rqc/modules/line-list.vue index 751137b85..3ca1ab744 100644 --- a/apps/web-ele/src/views/mes/qc/rqc/modules/line-list.vue +++ b/apps/web-ele/src/views/mes/qc/rqc/modules/line-list.vue @@ -9,10 +9,10 @@ import { getRqcLinePage } from '#/api/mes/qc/rqc/line'; import { MesQcTypeEnum } from '#/views/mes/utils/constants'; import { DefectRecordInlineList } from '../../defectrecord/components'; -import { useLineGridColumns } from '../data'; +import { type FormType, useLineGridColumns } from '../data'; const props = defineProps<{ - formType?: string; + formType?: FormType; rqcId: number; }>();