gaoluyang
15 小时以前 6c0b0dd81a98a3163e45f1b5b5417e02af165fd8
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
import { ref } from 'vue';
 
import { getWorkOrderParamRecordPage } from '#/api/mes/pro/workorderparamrecord';
 
/** 报工表单要填写的参数项(来自任务参数记录快照) */
export interface ParamDetailItem {
  id: number;
  paramCode?: string;
  paramName?: string;
  paramType?: number;
  unitMeasureName?: string;
  paramValue?: string;
  required?: boolean;
}
 
/** 当前报工表单的参数明细(共享给表单与任务选择联动) */
export const paramDetails = ref<ParamDetailItem[]>([]);
 
/** 按任务加载参数明细(任务无参数记录时为空数组) */
export async function loadParamDetails(taskId?: number) {
  paramDetails.value = [];
  if (!taskId) {
    return;
  }
  const page = await getWorkOrderParamRecordPage({
    taskId,
    pageNo: 1,
    pageSize: 1,
  });
  const record = page.list?.[0];
  paramDetails.value = (record?.details ?? []).map((detail) => ({
    id: detail.id!,
    paramCode: detail.paramCode,
    paramName: detail.paramName,
    paramType: detail.paramType,
    unitMeasureName: detail.unitMeasureName,
    paramValue: detail.paramValue,
    required: detail.required,
  }));
}
 
/** 校验必填参数是否都已填写;返回未填写的参数名 */
export function findMissingRequiredParams(): string[] {
  return paramDetails.value
    .filter((detail) => detail.required && !detail.paramValue?.trim())
    .map((detail) => detail.paramName || detail.paramCode || '');
}