From 70b7935fc261cd5e8eaaf1cfbc8078b04db576d2 Mon Sep 17 00:00:00 2001
From: liu <2021943741@qq.com>
Date: 星期六, 07 十一月 2026 14:51:06 +0800
Subject: [PATCH] fix(mes): 自动回填销售订单生产信息

---
 src/views/mes/pro/workorder/data.ts |   39 ++++++++++++++++++++++++++++++++++-----
 1 files changed, 34 insertions(+), 5 deletions(-)

diff --git a/src/views/mes/pro/workorder/data.ts b/src/views/mes/pro/workorder/data.ts
index 1006dd8..73721e3 100644
--- a/src/views/mes/pro/workorder/data.ts
+++ b/src/views/mes/pro/workorder/data.ts
@@ -15,9 +15,11 @@
 } from '@vben/constants';
 import { getDictOptions } from '@vben/hooks';
 
-import { Button } from 'ant-design-vue';
+import { Button, message } from 'ant-design-vue';
 
 import { generateAutoCode } from '#/api/mes/md/autocode/record';
+import { getItemByMdmItemId } from '#/api/mes/md/item';
+import { getSaleOrderItemListByOrderId } from '#/api/erp/sale/order';
 import CrmCustomerSelect from '#/components/crm-customer-select.vue';
 import { getRangePickerDefaultProps } from '#/utils';
 import {
@@ -25,6 +27,8 @@
 } from '#/views/mes/md/item/components';
 import { SrmSupplierSelect } from '#/views/srm/supplier/components';
 import { ErpSaleOrderSelect } from '#/views/erp/sale/order/components';
+
+import { summarizeProductionProduct } from './sale-order-fill';
 
 /** 琛ㄥ崟绫诲瀷 */
 export type FormType = 'confirm' | 'create' | 'detail' | 'finish' | 'update';
@@ -208,15 +212,40 @@
       componentProps: {
         disabled: headerReadonly,
         placeholder: '璇烽�夋嫨钀ラ攢璁㈠崟锛圗RP閿�鍞鍗曪級',
-        // 閫変腑钀ラ攢璁㈠崟鍚庤嚜鍔ㄥ甫鍏ュ鎴�
+        // 閫変腑钀ラ攢璁㈠崟鍚庤嚜鍔ㄥ甫鍏ュ鎴枫�佹潵婧愬崟鍙枫�佷骇鍝佸拰鏁伴噺
         onChange: async (item?: ErpSaleOrderApi.SaleOrder) => {
           if (!item) {
             return;
           }
-          const values = (await formApi?.getValues()) ?? {};
-          if (values.clientId == null && item.customerId) {
-            await formApi?.setFieldValue('clientId', item.customerId);
+          await formApi?.setValues({
+            clientId: item.customerId,
+            orderSourceCode: item.no,
+            productId: undefined,
+            quantity: undefined,
+          });
+          if (!item.id) {
+            return;
           }
+          const orderItems = await getSaleOrderItemListByOrderId(item.id);
+          const products = summarizeProductionProduct(orderItems ?? []);
+          if (products.length === 0) {
+            message.warning('璇ラ攢鍞鍗曟病鏈夐渶瑕佺敓浜х殑浜у搧鏄庣粏');
+            return;
+          }
+          if (products.length > 1) {
+            message.warning('璇ラ攢鍞鍗曞寘鍚涓敓浜т骇鍝侊紝璇烽�夋嫨鍏蜂綋浜у搧骞跺~鍐欐暟閲�');
+            return;
+          }
+          const [product] = products;
+          const mesItem = await getItemByMdmItemId(product!.mdmProductId);
+          if (!mesItem?.id) {
+            message.warning('閿�鍞鍗曚骇鍝佸皻鏈悓姝ュ埌鐢熶骇鐗╂枡锛岃鍏堝悓姝ヤ骇鍝佷富鏁版嵁');
+            return;
+          }
+          await formApi?.setValues({
+            productId: mesItem.id,
+            quantity: product!.quantity,
+          });
         },
       },
       dependencies: {

--
Gitblit v1.9.3