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 | 223 ++++++++++++++++++++++++++----------------------------- 1 files changed, 105 insertions(+), 118 deletions(-) diff --git a/src/pages/sales/salesAccount/detail.vue b/src/pages/sales/salesAccount/detail.vue index 60efb0e..62bff3d 100644 --- a/src/pages/sales/salesAccount/detail.vue +++ b/src/pages/sales/salesAccount/detail.vue @@ -17,7 +17,7 @@ > <up-input v-model="form.salesman" - readonly="" + readonly @click="showPicker = true" placeholder="鐐瑰嚮閫夋嫨涓氬姟鍛�" /> @@ -189,7 +189,6 @@ label="浜у搧澶х被" prop="productCategory" required - :rules="productRules" > <up-input v-model="product.productCategory" @@ -210,7 +209,6 @@ label="瑙勬牸鍨嬪彿" prop="specificationModel" required - :rules="productRules" > <up-input v-model="product.specificationModel" @@ -231,7 +229,6 @@ label="鍗曚綅" prop="unit" required - :rules="productRules" > <up-input v-model="product.unit" @@ -244,7 +241,6 @@ label="绋庣巼(%)" prop="taxRate" required - :rules="productRules" > <up-input v-model="product.taxRate" @@ -265,7 +261,6 @@ label="鍚◣鍗曚环(鍏�)" prop="taxInclusiveUnitPrice" required - :rules="productRules" > <up-input v-model="product.taxInclusiveUnitPrice" @@ -280,7 +275,6 @@ label="鏁伴噺" prop="quantity" required - :rules="productRules" > <up-input v-model="product.quantity" @@ -295,7 +289,6 @@ label="鍚◣鎬讳环(鍏�)" prop="taxInclusiveTotalPrice" required - :rules="productRules" > <up-input v-model="product.taxInclusiveTotalPrice" @@ -310,7 +303,6 @@ label="涓嶅惈绋庢�讳环(鍏�)" prop="taxExclusiveTotalPrice" required - :rules="productRules" > <up-input v-model="product.taxExclusiveTotalPrice" @@ -325,7 +317,6 @@ label="鍙戠エ绫诲瀷" prop="invoiceType" required - :rules="productRules" > <up-input v-model="product.invoiceType" @@ -362,7 +353,6 @@ import { formatDateToYMD } from '@/utils/ruoyi' import { addOrUpdateSalesLedger, - addOrUpdateSalesLedgerProduct, customerList, getSalesLedgerWithProducts, modelList, @@ -504,56 +494,23 @@ // 琛ㄥ崟鏍¢獙瑙勫垯 const rules = { salesman: [ - { required: true, message: '璇烽�夋嫨涓氬姟鍛�', trigger: 'blur' } + { required: true, message: '璇烽�夋嫨涓氬姟鍛�', trigger: 'change' } ], customerContractNo: [ { required: true, message: '璇疯緭鍏ュ鎴峰悎鍚屽彿', trigger: 'blur' } ], customerName: [ - { required: true, message: '璇烽�夋嫨瀹㈡埛鍚嶇О', trigger: 'blur' } + { required: true, message: '璇烽�夋嫨瀹㈡埛鍚嶇О', trigger: 'change' } ], projectName: [ { required: true, message: '璇疯緭鍏ラ」鐩悕绉�', trigger: 'blur' } ], executionDate: [ - { required: true, message: '璇烽�夋嫨绛捐鏃ユ湡', trigger: 'blur' } + { required: true, message: '璇烽�夋嫨绛捐鏃ユ湡', trigger: 'change' } ] }; -// 浜у搧淇℃伅鏍¢獙瑙勫垯 -const productRules = { - productCategory: [ - { required: true, message: '璇烽�夋嫨浜у搧澶х被', trigger: 'blur' } - ], - specificationModel: [ - { required: true, message: '璇烽�夋嫨瑙勬牸鍨嬪彿', trigger: 'blur' } - ], - unit: [ - { required: true, message: '璇疯緭鍏ュ崟浣�', trigger: 'blur' } - ], - taxRate: [ - { required: true, message: '璇烽�夋嫨绋庣巼', trigger: 'blur' } - ], - 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: 'blur' } - ] -}; + const addProduct = () => { if (productData.value === null) { @@ -580,7 +537,8 @@ // 鏃ユ湡纭浜嬩欢 const onDateConfirm = (e) => { form.value.executionDate = formatDateToYMD(e.value) - pickerDateValue.value = formatDateToYMD(e.value) + // 淇濇寔pickerDateValue涓烘椂闂存埑鏍煎紡锛岃�屼笉鏄牸寮忓寲鐨勫瓧绗︿覆 + pickerDateValue.value = e.value showDatePicker.value = false; } @@ -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