From 99c00652cf3895009eacdb05025e02967a670367 Mon Sep 17 00:00:00 2001
From: 云 <2163098428@qq.com>
Date: 星期三, 05 八月 2026 11:36:00 +0800
Subject: [PATCH] feat(mes): 实现生产报工批次属性管理和SRM投标优化功能

---
 src/views/crm/product/components/edit-table.vue |   29 ++++++++++++++++++++++-------
 1 files changed, 22 insertions(+), 7 deletions(-)

diff --git a/src/views/crm/product/components/edit-table.vue b/src/views/crm/product/components/edit-table.vue
index 113080c..f7cb97a 100644
--- a/src/views/crm/product/components/edit-table.vue
+++ b/src/views/crm/product/components/edit-table.vue
@@ -3,7 +3,7 @@
 import type { CrmContractApi } from '#/api/crm/contract';
 import type { MdmItemApi } from '#/api/mdm/item';
 
-import { nextTick, ref, watch } from 'vue';
+import { computed, nextTick, ref, watch } from 'vue';
 
 import { erpPriceMultiply } from '@vben/utils';
 
@@ -24,6 +24,12 @@
 }>();
 
 const emit = defineEmits(['update:products']);
+
+/** 鏄惁涓哄晢鏈虹被鍨� */
+const isBusiness = computed(() => props.bizType === BizTypeEnum.CRM_BUSINESS);
+
+/** 褰撳墠涓氬姟绫诲瀷瀵瑰簲鐨勪环鏍煎瓧娈靛悕 */
+const priceField = computed(() => isBusiness.value ? 'businessPrice' : 'contractPrice');
 
 /** 琛ㄦ牸鍐呴儴鏁版嵁 */
 const tableData = ref<any[]>([]);
@@ -46,28 +52,29 @@
   row.itemId = product.id;
   row.itemName = product.name;
   row.itemCode = product.code;
-  row.itemBarCode = product.barCode;
+  row.barCode = product.barCode;
+  row.itemUnitId = product.unitMeasureId;
   row.itemUnitName = product.unitMeasureName;
   row.itemUnitName2 = product.unitMeasureName2;
   row.itemUnitName3 = product.unitMeasureName3;
   row.itemSpecification = product.specification;
   row.itemPrice = product.salesPrice;
-  row.contractPrice = product.salesPrice;
+  row[priceField.value] = product.salesPrice;
   row.count = row.count || 1;
-  row.totalPrice = erpPriceMultiply(row.contractPrice, row.count) ?? 0;
+  row.totalPrice = erpPriceMultiply(row[priceField.value], row.count) ?? 0;
   handleUpdateValue(row);
 }
 
 /** 閲戦鍙樺姩鏃堕噸鏂拌绠楀悎璁� */
 function handlePriceChange(row: any) {
-  row.totalPrice = erpPriceMultiply(row.contractPrice, row.count) ?? 0;
+  row.totalPrice = erpPriceMultiply(row[priceField.value], row.count) ?? 0;
   handleUpdateValue(row);
 }
 
 /** 灏嗘渶鏂版暟鎹啓鍥炲苟閫氱煡鐖剁粍浠� */
 function handleUpdateValue(row: any) {
   const index = tableData.value.findIndex((item) => item.id === row.id);
-  row.totalPrice = erpPriceMultiply(row.contractPrice, row.count) ?? 0;
+  row.totalPrice = erpPriceMultiply(row[priceField.value], row.count) ?? 0;
   if (index === -1) {
     row.id = tableData.value.length + 1;
     tableData.value.push(row);
@@ -83,7 +90,7 @@
       trigger: 'click',
       mode: 'cell',
     },
-    columns: useProductEditTableColumns(),
+    columns: useProductEditTableColumns(isBusiness.value),
     data: tableData.value,
     border: true,
     showOverflow: true,
@@ -137,6 +144,14 @@
         @change="handlePriceChange(row)"
       />
     </template>
+    <template #businessPrice="{ row }">
+      <InputNumber
+        v-model:value="row.businessPrice"
+        :min="0.001"
+        :precision="2"
+        @change="handlePriceChange(row)"
+      />
+    </template>
     <template #count="{ row }">
       <InputNumber
         v-model:value="row.count"

--
Gitblit v1.9.3