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/salesAccount/detail.vue | 211 ++++++++++++++++++++++++---------------------------- 1 files changed, 99 insertions(+), 112 deletions(-) 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