src/views/wls/itemreceipt/modules/line-form.vue
@@ -15,7 +15,11 @@
} from '#/api/mes/wm/itemreceipt/line';
import { $t } from '#/locales';
import { useLineFormSchema } from '../data';
import {
  getEnterUnitRate,
  omitLineTempFields,
  useLineFormSchema,
} from '../data';
const emit = defineEmits(['success']);
const formData = ref<MesWmItemReceiptLineApi.ItemReceiptLine>();
@@ -49,9 +53,8 @@
      return;
    }
    modalApi.lock();
    // 提交表单
    const data =
      (await formApi.getValues()) as MesWmItemReceiptLineApi.ItemReceiptLine;
    // 提交表单(剔除仅用于前端换算/展示的临时字段)
    const data = omitLineTempFields(await formApi.getValues());
    data.receiptId = receiptId.value;
    try {
      await (formData.value?.id
@@ -87,9 +90,26 @@
    }
    modalApi.lock();
    try {
      formData.value = await getItemReceiptLine(data.id);
      // 设置到 values
      await formApi.setValues({ ...formData.value, noticeId: noticeId.value });
      const line = await getItemReceiptLine(data.id);
      formData.value = line;
      // 设置到 values;详情里的 unitMeasureId/unitMeasureName 即物料主单位,补到前端换算用的隐藏字段上
      await formApi.setValues({
        ...line,
        noticeId: noticeId.value,
        itemPrimaryUnitId: line.unitMeasureId,
        itemPrimaryUnitName: line.unitMeasureName,
      });
      // 回显录入单位时补齐换算比率(前端预览换算需要)
      if (line.enterUnitMeasureId) {
        await formApi.setFieldValue(
          'enterUnitRate',
          await getEnterUnitRate(
            line.itemId,
            line.itemModelId,
            line.enterUnitMeasureId,
          ),
        );
      }
    } finally {
      modalApi.unlock();
    }