src/views/mes/pro/task/modules/task-form.vue
@@ -1,27 +1,30 @@
<script lang="ts" setup>
<script lang="ts" setup>
import type { MesProTaskApi } from '#/api/mes/pro/task';
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;
  processId?: number;
  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>