From b285a5f5a84067121e8f17803021a3b67d2c9235 Mon Sep 17 00:00:00 2001
From: gaoluyang <2820782392@qq.com>
Date: 星期六, 23 五月 2026 10:47:41 +0800
Subject: [PATCH] 天津宝东 1.销售台账、销售报价添加每件数量字段
---
src/views/salesManagement/salesLedger/index.vue | 73 ++++++++++++++++++++++++++++++++----
src/views/salesManagement/salesQuotation/index.vue | 12 ++++++
2 files changed, 77 insertions(+), 8 deletions(-)
diff --git a/src/views/salesManagement/salesLedger/index.vue b/src/views/salesManagement/salesLedger/index.vue
index c98c18e..1c41617 100644
--- a/src/views/salesManagement/salesLedger/index.vue
+++ b/src/views/salesManagement/salesLedger/index.vue
@@ -158,6 +158,8 @@
</el-table-column>
<el-table-column label="鏁伴噺"
prop="quantity" />
+ <el-table-column label="姣忎欢鏁伴噺"
+ prop="singleQuantity" />
<el-table-column label="寰呭彂璐ф暟閲�"
prop="noQuantity" />
<el-table-column label="绋庣巼(%)"
@@ -448,6 +450,8 @@
prop="unit" />
<el-table-column label="鏁伴噺"
prop="quantity" />
+ <el-table-column label="姣忎欢鏁伴噺"
+ prop="singleQuantity" />
<el-table-column label="绋庣巼(%)"
prop="taxRate" />
<el-table-column label="鍚◣鍗曚环(鍏�)"
@@ -678,6 +682,21 @@
clearable
:precision="2"
@change="calculateFromQuantity"
+ style="width: 100%" />
+ </el-form-item>
+ </el-col>
+ </el-row>
+ <el-row :gutter="30">
+ <el-col :span="12">
+ <el-form-item label="姣忎欢鏁伴噺锛�"
+ prop="singleQuantity">
+ <el-input-number :step="1"
+ :min="1"
+ v-model="productForm.singleQuantity"
+ placeholder="璇疯緭鍏�"
+ clearable
+ :precision="0"
+ @change="calculateFromSingleQuantity"
style="width: 100%" />
</el-form-item>
</el-col>
@@ -1118,6 +1137,7 @@
specificationModel: "",
unit: "",
quantity: "",
+ singleQuantity: 1,
taxInclusiveUnitPrice: "",
taxRate: "",
taxInclusiveTotalPrice: "",
@@ -2450,6 +2470,7 @@
const totalPrice = parseFloat(productForm.value.taxInclusiveTotalPrice);
const quantity = parseFloat(productForm.value.quantity);
+ const singleQuantity = parseInt(productForm.value.singleQuantity) || 1;
if (!totalPrice || !quantity || quantity <= 0) {
return;
@@ -2457,8 +2478,8 @@
isCalculating.value = true;
- // 璁$畻鍚◣鍗曚环 = 鍚◣鎬讳环 / 鏁伴噺
- productForm.value.taxInclusiveUnitPrice = (totalPrice / quantity).toFixed(2);
+ // 璁$畻鍚◣鍗曚环 = 鍚◣鎬讳环 / (鏁伴噺 * 姣忎欢鏁伴噺)
+ productForm.value.taxInclusiveUnitPrice = (totalPrice / (quantity * singleQuantity)).toFixed(2);
// 濡傛灉鏈夌◣鐜囷紝璁$畻涓嶅惈绋庢�讳环
if (productForm.value.taxRate) {
@@ -2485,6 +2506,7 @@
);
const quantity = parseFloat(productForm.value.quantity);
const taxRate = parseFloat(productForm.value.taxRate);
+ const singleQuantity = parseInt(productForm.value.singleQuantity) || 1;
if (!exclusiveTotalPrice || !quantity || quantity <= 0 || !taxRate) {
return;
@@ -2497,9 +2519,9 @@
const inclusiveTotalPrice = exclusiveTotalPrice / (1 - taxRateDecimal);
productForm.value.taxInclusiveTotalPrice = inclusiveTotalPrice.toFixed(2);
- // 璁$畻鍚◣鍗曚环 = 鍚◣鎬讳环 / 鏁伴噺
+ // 璁$畻鍚◣鍗曚环 = 鍚◣鎬讳环 / (鏁伴噺 * 姣忎欢鏁伴噺)
productForm.value.taxInclusiveUnitPrice = (
- inclusiveTotalPrice / quantity
+ inclusiveTotalPrice / (quantity * singleQuantity)
).toFixed(2);
isCalculating.value = false;
@@ -2515,6 +2537,7 @@
const quantity = parseFloat(productForm.value.quantity);
const unitPrice = parseFloat(productForm.value.taxInclusiveUnitPrice);
+ const singleQuantity = parseInt(productForm.value.singleQuantity) || 1;
if (!quantity || quantity <= 0 || !unitPrice) {
return;
@@ -2522,8 +2545,8 @@
isCalculating.value = true;
- // 璁$畻鍚◣鎬讳环
- productForm.value.taxInclusiveTotalPrice = (unitPrice * quantity).toFixed(2);
+ // 璁$畻鍚◣鎬讳环 = 鍗曚环 * 鏁伴噺 * 姣忎欢鏁伴噺
+ productForm.value.taxInclusiveTotalPrice = (unitPrice * quantity * singleQuantity).toFixed(2);
// 濡傛灉鏈夌◣鐜囷紝璁$畻涓嶅惈绋庢�讳环
if (productForm.value.taxRate) {
@@ -2547,6 +2570,7 @@
const quantity = parseFloat(productForm.value.quantity);
const unitPrice = parseFloat(productForm.value.taxInclusiveUnitPrice);
+ const singleQuantity = parseInt(productForm.value.singleQuantity) || 1;
if (!quantity || quantity <= 0 || !unitPrice) {
return;
@@ -2554,8 +2578,41 @@
isCalculating.value = true;
- // 璁$畻鍚◣鎬讳环
- productForm.value.taxInclusiveTotalPrice = (unitPrice * quantity).toFixed(2);
+ // 璁$畻鍚◣鎬讳环 = 鍗曚环 * 鏁伴噺 * 姣忎欢鏁伴噺
+ productForm.value.taxInclusiveTotalPrice = (unitPrice * quantity * singleQuantity).toFixed(2);
+
+ // 濡傛灉鏈夌◣鐜囷紝璁$畻涓嶅惈绋庢�讳环
+ if (productForm.value.taxRate) {
+ productForm.value.taxExclusiveTotalPrice =
+ proxy.calculateTaxExclusiveTotalPrice(
+ productForm.value.taxInclusiveTotalPrice,
+ productForm.value.taxRate
+ );
+ }
+
+ isCalculating.value = false;
+ };
+
+ // 鏍规嵁姣忎欢鏁伴噺鍙樺寲璁$畻鎬讳环
+ const calculateFromSingleQuantity = () => {
+ if (!productForm.value.taxRate) {
+ proxy.$modal.msgWarning("璇峰厛閫夋嫨绋庣巼");
+ return;
+ }
+ if (isCalculating.value) return;
+
+ const quantity = parseFloat(productForm.value.quantity);
+ const unitPrice = parseFloat(productForm.value.taxInclusiveUnitPrice);
+ const singleQuantity = parseInt(productForm.value.singleQuantity) || 1;
+
+ if (!quantity || quantity <= 0 || !unitPrice) {
+ return;
+ }
+
+ isCalculating.value = true;
+
+ // 璁$畻鍚◣鎬讳环 = 鍗曚环 * 鏁伴噺 * 姣忎欢鏁伴噺
+ productForm.value.taxInclusiveTotalPrice = (unitPrice * quantity * singleQuantity).toFixed(2);
// 濡傛灉鏈夌◣鐜囷紝璁$畻涓嶅惈绋庢�讳环
if (productForm.value.taxRate) {
diff --git a/src/views/salesManagement/salesQuotation/index.vue b/src/views/salesManagement/salesQuotation/index.vue
index fce764f..700a29a 100644
--- a/src/views/salesManagement/salesQuotation/index.vue
+++ b/src/views/salesManagement/salesQuotation/index.vue
@@ -212,6 +212,13 @@
</el-form-item>
</template>
</el-table-column>
+ <el-table-column prop="singleQuantity" label="姣忎欢鏁伴噺" width="120">
+ <template #default="scope">
+ <el-form-item :prop="`products.${scope.$index}.singleQuantity`" class="product-table-form-item">
+ <el-input-number v-model="scope.row.singleQuantity" :min="1" :precision="0" style="width: 100%" />
+ </el-form-item>
+ </template>
+ </el-table-column>
<el-table-column prop="unitPrice" label="鍗曚环">
<template #default="scope">
<el-form-item :prop="`products.${scope.$index}.unitPrice`" class="product-table-form-item">
@@ -277,6 +284,7 @@
<el-table-column prop="product" label="浜у搧鍚嶇О" />
<el-table-column prop="specification" label="瑙勬牸鍨嬪彿" />
<el-table-column prop="unit" label="鍗曚綅" />
+ <el-table-column prop="singleQuantity" label="姣忎欢鏁伴噺" />
<el-table-column prop="unitPrice" label="鍗曚环">
<template #default="scope">
楼{{ scope.row.unitPrice.toFixed(2) }}
@@ -526,6 +534,7 @@
productModelId: product.productModelId || '',
specification: product.specification || '',
quantity: product.quantity || 0,
+ singleQuantity: product.singleQuantity || 1,
unit: product.unit || '',
unitPrice: product.unitPrice || 0,
amount: product.amount || 0
@@ -588,6 +597,7 @@
productModelId: resolvedProductModelId,
specification: product.specification || '',
quantity: product.quantity || 0,
+ singleQuantity: product.singleQuantity || 1,
unit: product.unit || '',
unitPrice: product.unitPrice || 0,
amount: product.amount || 0,
@@ -651,6 +661,7 @@
productName: '',
productModelId: '',
quantity: 1,
+ singleQuantity: 1,
unit: '',
unitPrice: 0,
amount: 0,
@@ -757,6 +768,7 @@
productModelId: product.productModelId || '',
specification: product.specification || '',
quantity: product.quantity || 0,
+ singleQuantity: product.singleQuantity || 1,
unit: product.unit || '',
unitPrice: product.unitPrice || 0,
amount: product.amount || 0
--
Gitblit v1.9.3