gaoluyang
2026-11-05 f3cac4aa2db56d6017c1d1dc035bcfeaec76c3e2
src/views/mes/pro/feedback/modules/form.vue
@@ -24,7 +24,6 @@
  submitFeedback,
  updateFeedback,
} from '#/api/mes/pro/feedback';
import { getRouteProcessByRouteAndProcess } from '#/api/mes/pro/route/process';
import { getWorkOrder } from '#/api/mes/pro/workorder';
import { $t } from '#/locales';
@@ -87,20 +86,14 @@
  wrapperClass: 'grid-cols-3',
});
/** 提交前对齐数量:根据 checkFlag 决定 uncheck/合格/不良归零策略 */
/** 提交前对齐数量:报工只填写报工数量,合格/不良/废品数量由质检确定,报工环节不采集 */
function alignQuantity(data: MesProFeedbackApi.Feedback) {
  if (data.checkFlag) {
    data.uncheckQuantity = data.feedbackQuantity;
    data.qualifiedQuantity = 0;
    data.unqualifiedQuantity = 0;
    data.laborScrapQuantity = 0;
    data.materialScrapQuantity = 0;
    data.otherScrapQuantity = 0;
  } else {
    data.feedbackQuantity =
      (data.qualifiedQuantity || 0) + (data.unqualifiedQuantity || 0);
    data.uncheckQuantity = 0;
  }
  data.uncheckQuantity = data.feedbackQuantity;
  delete data.qualifiedQuantity;
  delete data.unqualifiedQuantity;
  delete data.laborScrapQuantity;
  delete data.materialScrapQuantity;
  delete data.otherScrapQuantity;
}
/** 读取并按提交规则对齐后的表单数据,用于快照和保存 */
@@ -149,7 +142,7 @@
}
const batchDialogRef = ref<InstanceType<typeof BatchInputDialog>>();
const batchActionType = ref<'submit' | 'approve'>('');
const batchActionType = ref<'' | 'submit' | 'approve'>('');
function syncParamValues(data: MesProFeedbackApi.Feedback) {
  data.paramValues = paramDetails.value.map((detail) => ({
@@ -298,22 +291,6 @@
  }
}
/** 加载工序的 checkFlag 用于回显数量区域 */
async function resolveCheckFlag(routeId?: number, processId?: number) {
  if (!routeId || !processId) {
    return true;
  }
  try {
    const routeProcess = await getRouteProcessByRouteAndProcess(
      routeId,
      processId,
    );
    return routeProcess?.checkFlag ?? false;
  } catch {
    return true;
  }
}
const [Modal, modalApi] = useVbenModal({
  async onConfirm() {
    if (formType.value === 'detail' || formType.value === 'approve') {
@@ -363,12 +340,8 @@
    try {
      formData.value = await getFeedback(data.id);
      await loadParamDetails(formData.value.taskId);
      const checkFlag = await resolveCheckFlag(
        formData.value.routeId,
        formData.value.processId,
      );
      // 设置到 values
      await formApi.setValues({ ...formData.value, checkFlag });
      await formApi.setValues({ ...formData.value });
      // 记录初始快照(含数量对齐结果),submit 时用于跳过无变更的保存请求
      originalSnapshot.value = JSON.stringify(await getAlignedData());
    } finally {