refactor(mes): update comments and improve code readability in condition matchers

pull/351/MERGE
YunaiV 2026-05-30 20:38:05 +08:00
parent 3f7134d3fc
commit 3007539f0e
52 changed files with 105 additions and 144 deletions

View File

@ -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',

View File

@ -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',

View File

@ -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<MesDvSubjectApi.Subject[]>([]); //
const filteredList = computed(
() => list.value.filter((item) => !props.type || item.type === props.type),
);
const filteredList = computed(() => {
//
const result: Array<MesDvSubjectApi.Subject & { disabled?: boolean }> =
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() {

View File

@ -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(

View File

@ -33,12 +33,6 @@ export function useFormSchema(formApi?: VbenFormApi): VbenFormSchema[] {
componentProps: {
placeholder: '请输入客户编码',
},
dependencies: {
triggerFields: ['id'],
componentProps: (values) => ({
disabled: !!values.id,
}),
},
rules: 'required',
suffix: () =>
h(

View File

@ -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(

View File

@ -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(

View File

@ -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(

View File

@ -33,12 +33,6 @@ export function useFormSchema(formApi?: VbenFormApi): VbenFormSchema[] {
componentProps: {
placeholder: '请输入供应商编码',
},
dependencies: {
triggerFields: ['id'],
componentProps: (values) => ({
disabled: !!values.id,
}),
},
rules: 'required',
suffix: () =>
h(

View File

@ -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(

View File

@ -39,12 +39,6 @@ export function useFormSchema(formApi?: VbenFormApi): VbenFormSchema[] {
componentProps: {
placeholder: '请输入工作站编码',
},
dependencies: {
triggerFields: ['id'],
componentProps: (values) => ({
disabled: !!values.id,
}),
},
rules: 'required',
suffix: () =>
h(

View File

@ -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 });

View File

@ -73,9 +73,21 @@ export function useQcIndicatorResultFormSchema(
/** 检测结果列表的字段 */
export function useQcIndicatorResultGridColumns(): VxeTableGridOptions<MesQcIndicatorResultApi.IndicatorResult>['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,

View File

@ -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'],

View File

@ -410,6 +410,7 @@ export function useDetailFormSchema(formApi?: VbenFormApi): VbenFormSchema[] {
componentProps: {
disabled: true,
},
rules: 'selectRequired',
},
{
fieldName: 'quantity',

View File

@ -463,6 +463,7 @@ export function useDetailFormSchema(formApi?: VbenFormApi): VbenFormSchema[] {
componentProps: {
disabled: true,
},
rules: 'selectRequired',
},
{
fieldName: 'materialStockId',

View File

@ -372,7 +372,7 @@ export function useLineFormSchema(
fieldName: 'rqcCheckFlag',
label: '需要质检',
component: 'Switch',
rules: z.boolean().default(true),
rules: z.boolean().default(false),
},
{
fieldName: 'remark',

View File

@ -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 });

View File

@ -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,

View File

@ -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);

View File

@ -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);

View File

@ -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);

View File

@ -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',

View File

@ -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);

View File

@ -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);

View File

@ -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',

View File

@ -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);

View File

@ -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<MesDvSubjectApi.Subject[]>([]); //
const filteredList = computed(
() => list.value.filter((item) => !props.type || item.type === props.type),
);
const filteredList = computed(() => {
//
const result: Array<MesDvSubjectApi.Subject & { disabled?: boolean }> =
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);
<ElOption
v-for="item in filteredList"
:key="item.id"
:disabled="item.disabled"
:label="item.name"
:value="item.id!"
/>

View File

@ -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);

View File

@ -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(

View File

@ -33,12 +33,6 @@ export function useFormSchema(formApi?: VbenFormApi): VbenFormSchema[] {
componentProps: {
placeholder: '请输入客户编码',
},
dependencies: {
triggerFields: ['id'],
componentProps: (values) => ({
disabled: !!values.id,
}),
},
rules: 'required',
suffix: () =>
h(

View File

@ -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(

View File

@ -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(

View File

@ -42,7 +42,6 @@ export function useFormSchema(formApi?: VbenFormApi): VbenFormSchema[] {
h(
ElButton,
{
type: 'default',
onClick: async () => {
const code = await generateAutoCode(
MesAutoCodeRuleCode.MD_ITEM_CODE,

View File

@ -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,

View File

@ -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(

View File

@ -33,12 +33,6 @@ export function useFormSchema(formApi?: VbenFormApi): VbenFormSchema[] {
componentProps: {
placeholder: '请输入供应商编码',
},
dependencies: {
triggerFields: ['id'],
componentProps: (values) => ({
disabled: !!values.id,
}),
},
rules: 'required',
suffix: () =>
h(

View File

@ -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(

View File

@ -39,12 +39,6 @@ export function useFormSchema(formApi?: VbenFormApi): VbenFormSchema[] {
componentProps: {
placeholder: '请输入工作站编码',
},
dependencies: {
triggerFields: ['id'],
componentProps: (values) => ({
disabled: !!values.id,
}),
},
rules: 'required',
suffix: () =>
h(

View File

@ -216,7 +216,6 @@ export function useFormSchema(
ElButton,
{
disabled: isHeaderReadonly,
type: 'default',
onClick: async () => {
const code = await generateAutoCode(
MesAutoCodeRuleCode.PRO_FEEDBACK_CODE,

View File

@ -40,7 +40,6 @@ export function useFormSchema(formApi?: VbenFormApi): VbenFormSchema[] {
h(
ElButton,
{
type: 'default',
onClick: async () => {
const code = await generateAutoCode(
MesAutoCodeRuleCode.PRO_PROCESS_CODE,

View File

@ -45,7 +45,6 @@ export function useFormSchema(formApi?: VbenFormApi): VbenFormSchema[] {
h(
ElButton,
{
type: 'default',
onClick: async () => {
const code = await generateAutoCode(
MesAutoCodeRuleCode.PRO_ROUTE_CODE,

View File

@ -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 });

View File

@ -72,9 +72,21 @@ export function useQcIndicatorResultFormSchema(
/** 检测结果列表的字段 */
export function useQcIndicatorResultGridColumns(): VxeTableGridOptions<MesQcIndicatorResultApi.IndicatorResult>['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,

View File

@ -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'],

View File

@ -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);

View File

@ -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);

View File

@ -411,6 +411,7 @@ export function useDetailFormSchema(formApi?: VbenFormApi): VbenFormSchema[] {
componentProps: {
disabled: true,
},
rules: 'selectRequired',
},
{
fieldName: 'quantity',

View File

@ -464,6 +464,7 @@ export function useDetailFormSchema(formApi?: VbenFormApi): VbenFormSchema[] {
componentProps: {
disabled: true,
},
rules: 'selectRequired',
},
{
fieldName: 'materialStockId',

View File

@ -373,7 +373,7 @@ export function useLineFormSchema(
fieldName: 'rqcCheckFlag',
label: '需要质检',
component: 'Switch',
rules: z.boolean().default(true),
rules: z.boolean().default(false),
},
{
fieldName: 'remark',

View File

@ -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 });

View File

@ -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,