src/views/mes/pro/task/modules/task-form.vue
@@ -3,18 +3,20 @@
import { computed, ref } from 'vue';
import { useVbenModal } from '../../../../../packages/effects/common-ui/src';
import { useVbenModal } from '@vben/common-ui';
import { message } from 'ant-design-vue';
import { useVbenForm } from '#/adapter/form';
import { createTask, getTask, updateTask } from '#/api/mes/pro/task';
import { getWorkOrder } from '#/api/mes/pro/workorder';
import { $t } from '#/locales';
import { useTaskFormSchema } from '../data';
const emit = defineEmits(['success']);
const formData = ref<MesProTaskApi.Task>();
const workOrderQuantity = ref<number>(); // 订单数量(用于提示)
const context = ref<{
  colorCode?: string;
  itemId?: number;
@@ -22,6 +24,7 @@
  routeId?: number;
  workOrderId?: number;
}>({}); // 新增任务时的订单 / 工序上下文
const feedbackRole = ref<string>();
const getTitle = computed(() => {
  return formData.value?.id
@@ -67,41 +70,59 @@
  async onOpenChange(isOpen: boolean) {
    if (!isOpen) {
      formData.value = undefined;
      workOrderQuantity.value = undefined;
      context.value = {};
      return;
    }
    formApi.setState({ schema: useTaskFormSchema(formApi) });
    // 加载数据
    const data = modalApi.getData<{
      colorCode?: string;
      id?: number;
      itemId?: number;
      processId?: number;
      quantity?: number;
      routeId?: number;
      workOrderId?: number;
    }>();
    let wid: number | undefined;
    if (data?.id) {
      modalApi.lock();
      try {
        formData.value = await getTask(data.id);
        wid = formData.value.workOrderId;
        // 设置到 values
        await formApi.setValues(formData.value);
      } finally {
        modalApi.unlock();
      }
      return;
    } else {
      context.value = {
        colorCode: data.colorCode,
        itemId: data.itemId,
        processId: data.processId,
        routeId: data.routeId,
        workOrderId: data.workOrderId,
      };
      wid = data.workOrderId;
      workOrderQuantity.value = data.quantity;
      await formApi.setValues({
        colorCode: data.colorCode || '#00AEF3',
        duration: 1,
        quantity: data.quantity,
      });
    }
    context.value = {
      colorCode: data.colorCode,
      itemId: data.itemId,
      processId: data.processId,
      routeId: data.routeId,
      workOrderId: data.workOrderId,
    };
    await formApi.setValues({
      colorCode: data.colorCode || '#00AEF3',
      duration: 1,
    });
    if (wid) {
      try {
        const wo = await getWorkOrder(wid);
        feedbackRole.value = wo.feedbackRole;
      } catch {
        // ignore
      }
    }
    formApi.setState({ schema: useTaskFormSchema(formApi, workOrderQuantity, feedbackRole) });
  },
});
</script>