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