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