12 小时以前 fa42bcb7396e06e335bbbff67f5898b98f8d9aa0
src/views/mes/pro/workorder/modules/form.vue
@@ -2,7 +2,6 @@
  import type { FormType } from "../data";
  import type { MesProWorkOrderApi } from "#/api/mes/pro/workorder";
  import type { MesProWorkOrderBomApi } from "#/api/mes/pro/workorder/bom";
  import type { MesProWorkOrderProcessApi } from "#/api/mes/pro/workorder/process";
  import { computed, ref } from "vue";
@@ -28,7 +27,6 @@
  import { BarcodeDetail } from "#/views/wls/barcode/components";
  import { useFormSchema } from "../data";
  import BomList from "./bom-list.vue";
  import ItemList from "./item-list.vue";
  import ProcessList from "./process-list.vue";
@@ -36,7 +34,7 @@
  const formType = ref<FormType>("create");
  const formData = ref<MesProWorkOrderApi.WorkOrder>();
  const originalSnapshot = ref("");
  const subTabsName = ref("bom");
  const subTabsName = ref("process");
  const barcodeDetailRef = ref<InstanceType<typeof BarcodeDetail>>();
  const processListRef = ref<InstanceType<typeof ProcessList>>();
  const currentProductId = ref<number>(); // 当前选中的产品 ID(用于工序加载)
@@ -125,39 +123,6 @@
      formData.value.code,
      formData.value.name
    );
  }
  /** 从 BOM 物料行预填子订单 */
  async function handleGenerateWorkOrder(
    bomRow: MesProWorkOrderBomApi.WorkOrderBom
  ) {
    const current = formData.value;
    if (!current) {
      return;
    }
    formData.value = undefined;
    formType.value = "create";
    subTabsName.value = "bom";
    applySchema();
    await formApi.resetForm();
    await formApi.setValues({
      clientId: current.clientId,
      name: `${bomRow.itemName}【${bomRow.quantity}】${
        bomRow.unitMeasureName || ""
      }`,
      orderSourceCode: current.orderSourceCode,
      orderSourceType: current.orderSourceType,
      parentId: current.id,
      productId: bomRow.itemId,
      quantity: bomRow.quantity,
      requestDate: current.requestDate,
      type: current.type,
      vendorId: current.vendorId,
    });
    // 设置当前产品 ID,触发工序加载
    currentProductId.value = bomRow.itemId;
    originalSnapshot.value = JSON.stringify(await formApi.getValues());
    message.info("已从 BOM 物料预填子订单,请补充订单编码等信息后保存");
  }
  /** 工序列表变化回调 */
@@ -301,7 +266,7 @@
        parentRow?: MesProWorkOrderApi.WorkOrder;
      }>();
      formType.value = data.formType;
      subTabsName.value = "bom";
      subTabsName.value = "process";
      tempProcessList.value = [];
      applySchema();
      if (data?.id) {
@@ -335,21 +300,10 @@
         class="w-3/5"
         content-class="!max-h-[80vh] overflow-y-auto">
    <Form class="mx-4" />
    <!-- BOM / 工序 / 物料需求 Tab -->
    <!-- 工序 / 物料需求 Tab -->
    <template v-if="showTabs">
      <Tabs v-model:active-key="subTabsName"
            class="mx-4">
        <Tabs.TabPane key="bom"
                      tab="订单 BOM">
          <BomList v-if="formData?.id"
                   :form-type="formType"
                   :work-order="formData"
                   :work-order-id="formData.id"
                   @generate-work-order="handleGenerateWorkOrder" />
          <div v-else class="text-gray-400 text-center py-8">
            请先保存工单后再配置 BOM
          </div>
        </Tabs.TabPane>
        <Tabs.TabPane key="process"
                      tab="工序"
                      forceRender>