From 3f88a4f81bbfc424caa1391f4b3969c26fbf8485 Mon Sep 17 00:00:00 2001
From: gaoluyang <2820782392@qq.com>
Date: 星期五, 05 九月 2025 17:57:41 +0800
Subject: [PATCH] 销售管理真机测试,bug修改
---
src/pages/sales/invoicingRegistration/add.vue | 6 +
src/pages/sales/salesAccount/detail.vue | 211 ++++++++++++++++++++++++----------------------------
src/pages/sales/invoicingRegistration/view.vue | 6
3 files changed, 108 insertions(+), 115 deletions(-)
diff --git a/src/pages/sales/invoicingRegistration/add.vue b/src/pages/sales/invoicingRegistration/add.vue
index beee939..03be2cb 100644
--- a/src/pages/sales/invoicingRegistration/add.vue
+++ b/src/pages/sales/invoicingRegistration/add.vue
@@ -362,6 +362,12 @@
try {
submitting.value = true
+ // 鍏堣繘琛岃〃鍗曢獙璇�
+ const valid = await formRef.value.validate().catch(() => false)
+ if (!valid) {
+ return
+ }
+
// 楠岃瘉浜у搧鏁版嵁
if (productData.value.length === 0) {
showToast('璇峰厛娣诲姞浜у搧淇℃伅')
diff --git a/src/pages/sales/invoicingRegistration/view.vue b/src/pages/sales/invoicingRegistration/view.vue
index 0a3eabd..85f1001 100644
--- a/src/pages/sales/invoicingRegistration/view.vue
+++ b/src/pages/sales/invoicingRegistration/view.vue
@@ -117,7 +117,7 @@
<script setup>
import {onMounted, ref} from 'vue';
-import {getSalesLedgerWithProducts} from "@/api/salesManagement/salesLedger";
+import {productList} from "@/api/salesManagement/salesLedger";
// 琛ㄥ崟鏁版嵁
const form = ref({
@@ -152,8 +152,8 @@
if (!editData.value) return;
// 鑾峰彇瀹屾暣鐨勪骇鍝佷俊鎭�
- getSalesLedgerWithProducts({ id: editData.value.id, type: 1 }).then((res) => {
- productData.value = res.productData || [];
+ productList({ salesLedgerId: editData.value.id, type: 1 }).then((res) => {
+ productData.value = res.data || [];
form.value = {...editData.value}
});
};
diff --git a/src/pages/sales/salesAccount/detail.vue b/src/pages/sales/salesAccount/detail.vue
index 0938814..62bff3d 100644
--- a/src/pages/sales/salesAccount/detail.vue
+++ b/src/pages/sales/salesAccount/detail.vue
@@ -189,7 +189,6 @@
label="浜у搧澶х被"
prop="productCategory"
required
- :rules="productRules.productCategory"
>
<up-input
v-model="product.productCategory"
@@ -210,7 +209,6 @@
label="瑙勬牸鍨嬪彿"
prop="specificationModel"
required
- :rules="productRules.specificationModel"
>
<up-input
v-model="product.specificationModel"
@@ -231,7 +229,6 @@
label="鍗曚綅"
prop="unit"
required
- :rules="productRules.unit"
>
<up-input
v-model="product.unit"
@@ -244,7 +241,6 @@
label="绋庣巼(%)"
prop="taxRate"
required
- :rules="productRules.taxRate"
>
<up-input
v-model="product.taxRate"
@@ -265,7 +261,6 @@
label="鍚◣鍗曚环(鍏�)"
prop="taxInclusiveUnitPrice"
required
- :rules="productRules.taxInclusiveUnitPrice"
>
<up-input
v-model="product.taxInclusiveUnitPrice"
@@ -280,7 +275,6 @@
label="鏁伴噺"
prop="quantity"
required
- :rules="productRules.quantity"
>
<up-input
v-model="product.quantity"
@@ -295,7 +289,6 @@
label="鍚◣鎬讳环(鍏�)"
prop="taxInclusiveTotalPrice"
required
- :rules="productRules.taxInclusiveTotalPrice"
>
<up-input
v-model="product.taxInclusiveTotalPrice"
@@ -310,7 +303,6 @@
label="涓嶅惈绋庢�讳环(鍏�)"
prop="taxExclusiveTotalPrice"
required
- :rules="productRules.taxExclusiveTotalPrice"
>
<up-input
v-model="product.taxExclusiveTotalPrice"
@@ -325,7 +317,6 @@
label="鍙戠エ绫诲瀷"
prop="invoiceType"
required
- :rules="productRules.invoiceType"
>
<up-input
v-model="product.invoiceType"
@@ -519,40 +510,7 @@
]
};
-// 浜у搧淇℃伅鏍¢獙瑙勫垯
-const productRules = {
- productCategory: [
- { required: true, message: '璇烽�夋嫨浜у搧澶х被', trigger: 'change' }
- ],
- specificationModel: [
- { required: true, message: '璇烽�夋嫨瑙勬牸鍨嬪彿', trigger: 'change' }
- ],
- unit: [
- { required: true, message: '璇疯緭鍏ュ崟浣�', trigger: 'blur' }
- ],
- taxRate: [
- { required: true, message: '璇烽�夋嫨绋庣巼', trigger: 'change' }
- ],
- taxInclusiveUnitPrice: [
- { required: true, message: '璇疯緭鍏ュ惈绋庡崟浠�', trigger: 'blur' },
- { type: 'number', min: 0, message: '鍚◣鍗曚环蹇呴』澶т簬0', trigger: 'blur' }
- ],
- quantity: [
- { required: true, message: '璇疯緭鍏ユ暟閲�', trigger: 'blur' },
- { type: 'number', min: 0, message: '鏁伴噺蹇呴』澶т簬0', trigger: 'blur' }
- ],
- taxInclusiveTotalPrice: [
- { required: true, message: '璇疯緭鍏ュ惈绋庢�讳环', trigger: 'blur' },
- { type: 'number', min: 0, message: '鍚◣鎬讳环蹇呴』澶т簬0', trigger: 'blur' }
- ],
- taxExclusiveTotalPrice: [
- { required: true, message: '璇疯緭鍏ヤ笉鍚◣鎬讳环', trigger: 'blur' },
- { type: 'number', min: 0, message: '涓嶅惈绋庢�讳环蹇呴』澶т簬0', trigger: 'blur' }
- ],
- invoiceType: [
- { required: true, message: '璇烽�夋嫨鍙戠エ绫诲瀷', trigger: 'change' }
- ]
-};
+
const addProduct = () => {
if (productData.value === null) {
@@ -676,31 +634,31 @@
if (productData.value[idx].taxInclusiveUnitPrice) {
const value = parseFloat(productData.value[idx].taxInclusiveUnitPrice);
if (!isNaN(value)) {
- productData.value[idx].taxInclusiveUnitPrice = value.toFixed(2);
+ productData.value[idx].taxInclusiveUnitPrice = value.toFixed(2);
}
}
- if (!productData.value[currentProductIndex.value].taxRate) {
+ if (!productData.value[idx].taxRate) {
uni.showToast({
title: '璇峰厛閫夋嫨绋庣巼',
icon: 'none'
});
return;
}
- const quantity = parseFloat(productData.value[currentProductIndex.value].quantity);
- const unitPrice = parseFloat(productData.value[currentProductIndex.value].taxInclusiveUnitPrice);
+ const quantity = parseFloat(productData.value[idx].quantity);
+ const unitPrice = parseFloat(productData.value[idx].taxInclusiveUnitPrice);
if (!quantity || quantity <= 0 || !unitPrice) {
return;
}
// 璁$畻鍚◣鎬讳环
- productData.value[currentProductIndex.value].taxInclusiveTotalPrice = (unitPrice * quantity).toFixed(2);
+ productData.value[idx].taxInclusiveTotalPrice = (unitPrice * quantity).toFixed(2);
// 濡傛灉鏈夌◣鐜囷紝璁$畻涓嶅惈绋庢�讳环
- if (productData.value[currentProductIndex.value].taxRate) {
- productData.value[currentProductIndex.value].taxExclusiveTotalPrice =
+ if (productData.value[idx].taxRate) {
+ productData.value[idx].taxExclusiveTotalPrice =
calculateTaxExclusiveTotalPrice(
- productData.value[currentProductIndex.value].taxInclusiveTotalPrice,
- productData.value[currentProductIndex.value].taxRate
+ productData.value[idx].taxInclusiveTotalPrice,
+ productData.value[idx].taxRate
);
}
};
@@ -709,30 +667,30 @@
if (productData.value[idx].quantity) {
const value = parseFloat(productData.value[idx].quantity);
if (!isNaN(value)) {
- productData.value[idx].quantity = value.toFixed(2);
+ productData.value[idx].quantity = value.toFixed(2);
}
}
- if (!productData.value[currentProductIndex.value].taxRate) {
+ if (!productData.value[idx].taxRate) {
uni.showToast({
title: '璇峰厛閫夋嫨绋庣巼',
icon: 'none'
});
return;
}
- const quantity = parseFloat(productData.value[currentProductIndex.value].quantity);
- const unitPrice = parseFloat(productData.value[currentProductIndex.value].taxInclusiveUnitPrice);
+ const quantity = parseFloat(productData.value[idx].quantity);
+ const unitPrice = parseFloat(productData.value[idx].taxInclusiveUnitPrice);
if (!quantity || quantity <= 0 || !unitPrice) {
return;
}
// 璁$畻鍚◣鎬讳环
- productData.value[currentProductIndex.value].taxInclusiveTotalPrice = (unitPrice * quantity).toFixed(2);
+ productData.value[idx].taxInclusiveTotalPrice = (unitPrice * quantity).toFixed(2);
// 濡傛灉鏈夌◣鐜囷紝璁$畻涓嶅惈绋庢�讳环
- if (productData.value[currentProductIndex.value].taxRate) {
- productData.value[currentProductIndex.value].taxExclusiveTotalPrice =
+ if (productData.value[idx].taxRate) {
+ productData.value[idx].taxExclusiveTotalPrice =
calculateTaxExclusiveTotalPrice(
- productData.value[currentProductIndex.value].taxInclusiveTotalPrice,
- productData.value[currentProductIndex.value].taxRate
+ productData.value[idx].taxInclusiveTotalPrice,
+ productData.value[idx].taxRate
);
}
};
@@ -741,23 +699,23 @@
if (productData.value[idx].taxInclusiveTotalPrice) {
const value = parseFloat(productData.value[idx].taxInclusiveTotalPrice);
if (!isNaN(value)) {
- productData.value[idx].taxInclusiveTotalPrice = value.toFixed(2);
+ productData.value[idx].taxInclusiveTotalPrice = value.toFixed(2);
}
}
- const totalPrice = parseFloat(productData.value[currentProductIndex.value].taxInclusiveTotalPrice);
- const quantity = parseFloat(productData.value[currentProductIndex.value].quantity);
+ const totalPrice = parseFloat(productData.value[idx].taxInclusiveTotalPrice);
+ const quantity = parseFloat(productData.value[idx].quantity);
if (!totalPrice || !quantity || quantity <= 0) {
return;
}
// 璁$畻鍚◣鍗曚环 = 鍚◣鎬讳环 / 鏁伴噺
- productData.value[currentProductIndex.value].taxInclusiveUnitPrice = (totalPrice / quantity).toFixed(2);
+ productData.value[idx].taxInclusiveUnitPrice = (totalPrice / quantity).toFixed(2);
// 濡傛灉鏈夌◣鐜囷紝璁$畻涓嶅惈绋庢�讳环
- if (productData.value[currentProductIndex.value].taxRate) {
- productData.value[currentProductIndex.value].taxExclusiveTotalPrice =
+ if (productData.value[idx].taxRate) {
+ productData.value[idx].taxExclusiveTotalPrice =
calculateTaxExclusiveTotalPrice(
totalPrice,
- productData.value[currentProductIndex.value].taxRate
+ productData.value[idx].taxRate
);
}
};
@@ -766,28 +724,28 @@
if (productData.value[idx].taxExclusiveTotalPrice) {
const value = parseFloat(productData.value[idx].taxExclusiveTotalPrice);
if (!isNaN(value)) {
- productData.value[idx].taxExclusiveTotalPrice = value.toFixed(2);
+ productData.value[idx].taxExclusiveTotalPrice = value.toFixed(2);
}
}
- if (!productData.value[currentProductIndex.value].taxRate) {
+ if (!productData.value[idx].taxRate) {
uni.showToast({
title: '璇峰厛閫夋嫨绋庣巼',
icon: 'none'
});
return;
}
- const exclusiveTotalPrice = parseFloat(productData.value[currentProductIndex.value].taxExclusiveTotalPrice);
- const quantity = parseFloat(productData.value[currentProductIndex.value].quantity);
- const taxRate = parseFloat(productData.value[currentProductIndex.value].taxRate);
+ const exclusiveTotalPrice = parseFloat(productData.value[idx].taxExclusiveTotalPrice);
+ const quantity = parseFloat(productData.value[idx].quantity);
+ const taxRate = parseFloat(productData.value[idx].taxRate);
if (!exclusiveTotalPrice || !quantity || quantity <= 0 || !taxRate) {
return;
}
// 鍏堣绠楀惈绋庢�讳环 = 涓嶅惈绋庢�讳环 / (1 - 绋庣巼/100)
const taxRateDecimal = taxRate / 100;
const inclusiveTotalPrice = exclusiveTotalPrice / (1 - taxRateDecimal);
- productData.value[currentProductIndex.value].taxInclusiveTotalPrice = inclusiveTotalPrice.toFixed(2);
+ productData.value[idx].taxInclusiveTotalPrice = inclusiveTotalPrice.toFixed(2);
// 璁$畻鍚◣鍗曚环 = 鍚◣鎬讳环 / 鏁伴噺
- productData.value[currentProductIndex.value].taxInclusiveUnitPrice = (inclusiveTotalPrice / quantity).toFixed(2);
+ productData.value[idx].taxInclusiveUnitPrice = (inclusiveTotalPrice / quantity).toFixed(2);
};
const goBack = () => {
// 娓呯悊鏈湴瀛樺偍鐨勬暟鎹�
@@ -813,10 +771,72 @@
// 妫�鏌ユ瘡涓骇鍝佹槸鍚﹀~鍐欏畬鏁�
for (let i = 0; i < productData.value.length; i++) {
- const errors = validateProduct(productData.value[i], i);
- if (errors.length > 0) {
+ const product = productData.value[i];
+ // 浼樺寲鏁板瓧瀛楁楠岃瘉锛屽鐞嗗彲鑳界殑瀛楃涓叉牸寮忔暟鍊�
+ const taxInclusiveUnitPrice = parseFloat(product.taxInclusiveUnitPrice);
+ const quantity = parseFloat(product.quantity);
+ const taxInclusiveTotalPrice = parseFloat(product.taxInclusiveTotalPrice);
+ const taxExclusiveTotalPrice = parseFloat(product.taxExclusiveTotalPrice);
+
+ if (!product.productCategory) {
uni.showToast({
- title: errors[0],
+ title: `浜у搧${i + 1}锛氳閫夋嫨浜у搧澶х被`,
+ icon: 'none'
+ });
+ return;
+ }
+ if (!product.specificationModel) {
+ uni.showToast({
+ title: `浜у搧${i + 1}锛氳閫夋嫨瑙勬牸鍨嬪彿`,
+ icon: 'none'
+ });
+ return;
+ }
+ if (!product.unit) {
+ uni.showToast({
+ title: `浜у搧${i + 1}锛氳杈撳叆鍗曚綅`,
+ icon: 'none'
+ });
+ return;
+ }
+ if (!product.taxRate) {
+ uni.showToast({
+ title: `浜у搧${i + 1}锛氳閫夋嫨绋庣巼`,
+ icon: 'none'
+ });
+ return;
+ }
+ if (isNaN(taxInclusiveUnitPrice) || taxInclusiveUnitPrice <= 0) {
+ uni.showToast({
+ title: `浜у搧${i + 1}锛氳杈撳叆鏈夋晥鐨勫惈绋庡崟浠穈,
+ icon: 'none'
+ });
+ return;
+ }
+ if (isNaN(quantity) || quantity <= 0) {
+ uni.showToast({
+ title: `浜у搧${i + 1}锛氳杈撳叆鏈夋晥鐨勬暟閲廯,
+ icon: 'none'
+ });
+ return;
+ }
+ if (isNaN(taxInclusiveTotalPrice) || taxInclusiveTotalPrice <= 0) {
+ uni.showToast({
+ title: `浜у搧${i + 1}锛氳杈撳叆鏈夋晥鐨勫惈绋庢�讳环`,
+ icon: 'none'
+ });
+ return;
+ }
+ if (isNaN(taxExclusiveTotalPrice) || taxExclusiveTotalPrice <= 0) {
+ uni.showToast({
+ title: `浜у搧${i + 1}锛氳杈撳叆鏈夋晥鐨勪笉鍚◣鎬讳环`,
+ icon: 'none'
+ });
+ return;
+ }
+ if (!product.invoiceType) {
+ uni.showToast({
+ title: `浜у搧${i + 1}锛氳閫夋嫨鍙戠エ绫诲瀷`,
icon: 'none'
});
return;
@@ -915,40 +935,7 @@
productOptions.value = convertIdToValue(res);
});
};
-// 鍗曚釜浜у搧琛ㄥ崟楠岃瘉鍑芥暟
-const validateProduct = (product, index) => {
- const errors = [];
-
- if (!product.productCategory) {
- errors.push(`浜у搧${index + 1}锛氳閫夋嫨浜у搧澶х被`);
- }
- if (!product.specificationModel) {
- errors.push(`浜у搧${index + 1}锛氳閫夋嫨瑙勬牸鍨嬪彿`);
- }
- if (!product.unit) {
- errors.push(`浜у搧${index + 1}锛氳杈撳叆鍗曚綅`);
- }
- if (!product.taxRate) {
- errors.push(`浜у搧${index + 1}锛氳閫夋嫨绋庣巼`);
- }
- if (!product.taxInclusiveUnitPrice || parseFloat(product.taxInclusiveUnitPrice) <= 0) {
- errors.push(`浜у搧${index + 1}锛氳杈撳叆鏈夋晥鐨勫惈绋庡崟浠穈);
- }
- if (!product.quantity || parseFloat(product.quantity) <= 0) {
- errors.push(`浜у搧${index + 1}锛氳杈撳叆鏈夋晥鐨勬暟閲廯);
- }
- if (!product.taxInclusiveTotalPrice || parseFloat(product.taxInclusiveTotalPrice) <= 0) {
- errors.push(`浜у搧${index + 1}锛氳杈撳叆鏈夋晥鐨勫惈绋庢�讳环`);
- }
- if (!product.taxExclusiveTotalPrice || parseFloat(product.taxExclusiveTotalPrice) <= 0) {
- errors.push(`浜у搧${index + 1}锛氳杈撳叆鏈夋晥鐨勪笉鍚◣鎬讳环`);
- }
- if (!product.invoiceType) {
- errors.push(`浜у搧${index + 1}锛氳閫夋嫨鍙戠エ绫诲瀷`);
- }
-
- return errors;
-};
+
onMounted(() => {
// 鑾峰彇椤甸潰鍙傛暟
--
Gitblit v1.9.3