From 4e65306c1ea5f9b19529625bb89330035cafdc4a Mon Sep 17 00:00:00 2001
From: liu <2021943741@qq.com>
Date: 星期四, 05 十一月 2026 20:20:59 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/dev_新疆_新高电力' into dev_新疆_新高电力

---
 src/views/mes/workbench/components/tabs/ProductIssueLineFormModal.vue |   40 +++++++++++++++++++++++++++++-----------
 1 files changed, 29 insertions(+), 11 deletions(-)

diff --git a/src/views/mes/workbench/components/tabs/ProductIssueLineFormModal.vue b/src/views/mes/workbench/components/tabs/ProductIssueLineFormModal.vue
index 78f182f..d67d83f 100644
--- a/src/views/mes/workbench/components/tabs/ProductIssueLineFormModal.vue
+++ b/src/views/mes/workbench/components/tabs/ProductIssueLineFormModal.vue
@@ -2,19 +2,20 @@
 import type { VbenFormSchema } from '#/adapter/form';
 import type { MesWmProductIssueLineApi } from '#/api/mes/wm/productissue/line';
 
-import { computed, markRaw, ref } from 'vue';
+import { computed, ref } from 'vue';
 
 import { useVbenModal } from '@vben/common-ui';
 
 import { message } from 'ant-design-vue';
 
 import { useVbenForm } from '#/adapter/form';
+import { getWorkOrderBomListByTaskId } from '#/api/mes/pro/workorder/bom';
+import { getProductIssue } from '#/api/mes/wm/productissue';
 import {
   createProductIssueLine,
   getProductIssueLine,
   updateProductIssueLine,
 } from '#/api/mes/wm/productissue/line';
-import { MdItemSelect } from '#/views/mes/md/item/components';
 
 const emit = defineEmits(['success']);
 const formData = ref<MesWmProductIssueLineApi.ProductIssueLine>();
@@ -25,13 +26,18 @@
 });
 
 /** 鐗╂枡琛岃〃鍗� schema */
-function buildLineFormSchema(): VbenFormSchema[] {
+function buildLineFormSchema(options: { label: string; value: number }[] = []): VbenFormSchema[] {
   return [
     {
       fieldName: 'itemId',
       label: '浜у搧鐗╂枡',
-      component: markRaw(MdItemSelect),
-      componentProps: { placeholder: '璇烽�夋嫨浜у搧鐗╂枡' },
+      component: 'Select',
+      componentProps: {
+        options,
+        showSearch: true,
+        optionFilterProp: 'label',
+        placeholder: options.length ? '璇烽�夋嫨褰撳墠宸ュ簭鐗╂枡' : '璇峰厛缁存姢褰撳墠宸ュ簭鎶曞叆鐗╂枡',
+      },
       rules: 'selectRequired',
     },
     {
@@ -91,14 +97,26 @@
     }
     const data = modalApi.getData<{ id?: number; issueId: number }>();
     issueId.value = data.issueId;
-    if (!data.id) {
-      await formApi.resetForm();
-      return;
-    }
     modalApi.lock();
     try {
-      formData.value = await getProductIssueLine(data.id);
-      await formApi.setValues(formData.value);
+      const issue = await getProductIssue(data.issueId);
+      const boms = issue.taskId ? await getWorkOrderBomListByTaskId(issue.taskId) : [];
+      const optionMap = new Map<number, { label: string; value: number }>();
+      for (const item of boms) {
+        if (item.itemId != null) {
+          optionMap.set(item.itemId, {
+            value: item.itemId,
+            label: `${item.itemCode ?? ''} ${item.itemName ?? ''}`.trim(),
+          });
+        }
+      }
+      const options = [...optionMap.values()];
+      await formApi.updateSchema(buildLineFormSchema(options));
+      await formApi.resetForm();
+      if (data.id) {
+        formData.value = await getProductIssueLine(data.id);
+        await formApi.setValues(formData.value);
+      }
     } finally {
       modalApi.unlock();
     }

--
Gitblit v1.9.3