From a66da67589e9ec2fbbd6a253e9a9447ba0b29fe2 Mon Sep 17 00:00:00 2001 From: gaoluyang <2820782392@qq.com> Date: 星期四, 24 七月 2025 15:15:06 +0800 Subject: [PATCH] 1.销售出库运费问题 --- src/views/salesOutbound/components/formDia.vue | 108 +++++++++++++++++++++++++++++++++++------------------- 1 files changed, 70 insertions(+), 38 deletions(-) diff --git a/src/views/salesOutbound/components/formDia.vue b/src/views/salesOutbound/components/formDia.vue index 8b24c5a..b210c91 100644 --- a/src/views/salesOutbound/components/formDia.vue +++ b/src/views/salesOutbound/components/formDia.vue @@ -7,6 +7,7 @@ <el-col :span="12"> <el-form-item label="閿�鍞棩鏈�" prop="saleDate"> <el-date-picker + :disabled="operationType === 'view'" v-model="form.saleDate" type="date" value-format="YYYY-MM-DD" @@ -19,7 +20,7 @@ </el-col> <el-col :span="12"> <el-form-item label="瀹㈡埛" prop="customerId"> - <el-select v-model="form.customerId" placeholder="璇烽�夋嫨瀹㈡埛"> + <el-select v-model="form.customerId" placeholder="璇烽�夋嫨瀹㈡埛" :disabled="operationType === 'view'"> <el-option v-for="item in customerOptions" :key="item.value" @@ -33,79 +34,94 @@ <el-row> <el-col :span="12"> <el-form-item label="鐓ょ" prop="coalId"> - <el-select v-model="form.coalId" placeholder="璇烽�夋嫨鐓ょ" @change="setInfo"> + <el-select v-model="form.coalId" placeholder="璇烽�夋嫨鐓ょ" @change="setInfo" :disabled="operationType === 'view'"> <el-option v-for="item in coalOptions" - :key="item.value" - :label="item.label" - :value="item.value" + :key="item.coalId" + :label="item.coal" + :value="item.coalId" /> </el-select> </el-form-item> </el-col> <el-col :span="12"> <el-form-item label="鍗曚綅" prop="unit"> - <el-input v-model="form.unit" placeholder="璇疯緭鍏ュ崟浣�" maxlength="30" /> + <el-input v-model="form.unit" placeholder="璇疯緭鍏ュ崟浣�" maxlength="30" :disabled="operationType === 'view'"/> </el-form-item> </el-col> </el-row> <el-row> <el-col :span="12"> <el-form-item label="搴撳瓨鏁伴噺" prop="inventoryQuantity"> - <el-input v-model="form.inventoryQuantity" placeholder="璇疯緭鍏ラ攢鍞暟閲�" maxlength="30" type="number" /> + <el-input v-model="form.inventoryQuantity" placeholder="璇疯緭鍏ラ攢鍞暟閲�" maxlength="30" type="number" :disabled="operationType === 'view'"/> </el-form-item> </el-col> <el-col :span="12"> - <el-form-item label="鍗曚环(鍚◣)" prop="priceIncludingTax"> - <el-input v-model="form.priceIncludingTax" placeholder="璇疯緭鍏ラ攢鍞崟浠�(鍚◣)" maxlength="30" type="number" /> + <el-form-item label="鍗曚环(鍚◣)" prop="priceIncludingTax" @change="mathProfit"> + <el-input v-model="form.priceIncludingTax" placeholder="璇疯緭鍏ラ攢鍞崟浠�(鍚◣)" maxlength="30" type="number" :disabled="operationType === 'view'"/> </el-form-item> </el-col> </el-row> <el-row> <el-col :span="12"> - <el-form-item label="閿�鍞暟閲�" prop="saleQuantity"> - <el-input v-model="form.saleQuantity" placeholder="璇疯緭鍏ラ攢鍞暟閲�" maxlength="30" type="number" /> + <el-form-item label="閿�鍞暟閲�" prop="saleQuantity" @change="mathProfit"> + <el-input v-model="form.saleQuantity" placeholder="璇疯緭鍏ラ攢鍞暟閲�" maxlength="30" type="number" :disabled="operationType === 'view'"/> </el-form-item> </el-col> <el-col :span="12"> <el-form-item label="閿�鍞崟浠�(鍚◣)" prop="salePrice" @change="mathProfit"> - <el-input v-model="form.salePrice" placeholder="璇疯緭鍏ラ攢鍞崟浠�(鍚◣)" maxlength="30" type="number" /> + <el-input v-model="form.salePrice" placeholder="璇疯緭鍏ラ攢鍞崟浠�(鍚◣)" maxlength="30" type="number" :disabled="operationType === 'view'"/> </el-form-item> </el-col> </el-row> <el-row> <el-col :span="12"> <el-form-item label="閿�鍞�讳环(鍚◣)" prop="totalAmount"> - <el-input v-model="form.totalAmount" placeholder="璇疯緭鍏ラ攢鍞�讳环(鍚◣)" maxlength="30" type="number" /> + <el-input v-model="form.totalAmount" placeholder="璇疯緭鍏ラ攢鍞�讳环(鍚◣)" maxlength="30" type="number" :disabled="operationType === 'view'"/> </el-form-item> </el-col> <el-col :span="12"> - <el-form-item label="杩愯垂" prop="freight"> - <el-input v-model="form.freight" placeholder="璇疯緭鍏ラ攢鍞�讳环(鍚◣)" maxlength="30" type="number" /> + <el-form-item label="閲囪喘杩愯垂" prop="purchasingFreight" @change="mathProfit"> + <el-input v-model="form.purchasingFreight" placeholder="璇疯緭鍏�" maxlength="30" type="number" :disabled="operationType === 'view'"/> </el-form-item> </el-col> </el-row> <el-row> + <el-col :span="12"> + <el-form-item label="閿�鍞繍璐�" prop="salesFreight" @change="mathProfit"> + <el-input v-model="form.salesFreight" placeholder="璇疯緭鍏�" maxlength="30" type="number" :disabled="operationType === 'view'"/> + </el-form-item> + </el-col> <el-col :span="12"> <el-form-item label="璐攢鐓ょ◣鐜�(%)" prop="taxCoal"> - <el-input v-model="form.taxCoal" placeholder="璇疯緭鍏ラ攢鍞�讳环(鍚◣)" maxlength="30" type="number" /> - </el-form-item> - </el-col> - <el-col :span="12"> - <el-form-item label="杩愯緭绋庣巼(%)" prop="taxTrans"> - <el-input v-model="form.taxTrans" placeholder="璇疯緭鍏ラ攢鍞�讳环(鍚◣)" maxlength="30" type="number" /> + <el-input v-model="form.taxCoal" placeholder="璇疯緭鍏�" maxlength="30" type="number" :disabled="operationType === 'view'"/> </el-form-item> </el-col> </el-row> <el-row> + <el-col :span="12"> + <el-form-item label="杩愯緭绋庣巼(%)" prop="taxTrans"> + <el-input v-model="form.taxTrans" placeholder="璇疯緭鍏�" maxlength="30" type="number" :disabled="operationType === 'view'"/> + </el-form-item> + </el-col> <el-col :span="12"> <el-form-item label="姣涘埄娑�" prop="grossProfit"> - <el-input v-model="form.grossProfit" placeholder="姣涘埄娑�" maxlength="30" type="number" /> + <el-input v-model="form.grossProfit" placeholder="姣涘埄娑�" maxlength="30" type="number" :disabled="operationType === 'view'"/> </el-form-item> </el-col> + </el-row> + <el-row> + <el-col :span="12"> + <el-form-item label="鍑�鍒╂鼎" prop="netProfit"> + <el-input v-model="form.netProfit" placeholder="鍑�鍒╂鼎" maxlength="30" type="number" :disabled="operationType === 'view'"/> + </el-form-item> + </el-col> <el-col :span="12"> - <el-form-item label="鍑�鍒╂鼎" prop="netProfit"> - <el-input v-model="form.netProfit" placeholder="鍑�鍒╂鼎" maxlength="30" type="number" /> + <el-form-item label="娣诲姞鑷冲緟琛ュ簱" prop="isPendingRestock"> + <el-select v-model="form.isPendingRestock" placeholder=""> + <el-option label="鏄�" :value="true" /> + <el-option label="鍚�" :value="false" /> + </el-select> </el-form-item> </el-col> </el-row> @@ -122,9 +138,8 @@ <script setup> import {reactive, ref} from "vue"; -import {addOrEditSalesRecord, customerList, officialList} from "../../../api/salesOutbound/index.js"; +import {addOrEditSalesRecord, customerList, officialList} from "@/api/salesOutbound/index.js"; import useUserStore from '@/store/modules/user' -import {getCoalInfoList, getSupplyList} from "@/api/procureMent/index.js"; const { proxy } = getCurrentInstance() const emit = defineEmits() @@ -142,16 +157,32 @@ saleQuantity: '', salePrice: '', totalAmount: '', - freight: '', + purchasingFreight: '', taxCoal: '', taxTrans: '', grossProfit: '', netProfit: '', inventoryQuantity: '', priceIncludingTax: '', + salesFreight: '', + isPendingRestock: false }, rules: { saleDate: [{ required: true, message: "璇烽�夋嫨鏃ユ湡", trigger: "change" },], + customerId: [{ required: true, message: "璇烽�夋嫨瀹㈡埛", trigger: "change" },], + coalId: [{ required: true, message: "璇烽�夋嫨鐓ょ", trigger: "change" },], + unit: [{ required: true, message: "璇疯緭鍏�", trigger: "blur" },], + saleQuantity: [{ required: true, message: "璇疯緭鍏�", trigger: "blur" },], + salePrice: [{ required: true, message: "璇疯緭鍏�", trigger: "blur" },], + totalAmount: [{ required: true, message: "璇疯緭鍏�", trigger: "blur" },], + purchasingFreight: [{ required: false, message: "璇疯緭鍏�", trigger: "blur" },], + taxCoal: [{ required: true, message: "璇疯緭鍏�", trigger: "blur" },], + taxTrans: [{ required: true, message: "璇疯緭鍏�", trigger: "blur" },], + grossProfit: [{ required: true, message: "璇疯緭鍏�", trigger: "blur" },], + netProfit: [{ required: true, message: "璇疯緭鍏�", trigger: "blur" },], + inventoryQuantity: [{ required: true, message: "璇疯緭鍏�", trigger: "blur" },], + priceIncludingTax: [{ required: true, message: "璇疯緭鍏�", trigger: "blur" },], + isPendingRestock: [{ required: true, message: "璇烽�夋嫨鏄惁娣诲姞鑷冲緟琛ュ簱", trigger: "change" },], } }) @@ -159,28 +190,26 @@ // 鎵撳紑寮规 const openDialog = async (type, row) => { + operationType.value = type dialogVisitable.value = true form.value.saleDate = proxy.getCurrentDate() const [supplyRes, coalRes] = await Promise.all([ customerList(), - getCoalInfoList(), + officialList(), ]); let supplyData = supplyRes.data; - let coalData = coalRes.data; + coalOptions.value = coalRes.data; customerOptions.value = supplyData.map((item) => ({ value: item.id, label: item.customerName, })); - coalOptions.value = coalData.map((item) => ({ - value: item.id, - label: item.coal, - })) let res = await userStore.getInfo() form.value.registrantId = res.user.userId form.value.taxCoal = 13 form.value.taxTrans = 9 - form.value.freight = 20 - if (type === 'edit') { + form.value.purchasingFreight = 20 + form.value.salesFreight = 0 + if (type !== 'add') { form.value = {...row} } } @@ -205,7 +234,8 @@ const purchaseTons = form.value.inventoryQuantity; // 搴撳瓨鏁伴噺 const saleTons = form.value.saleQuantity; // 閿�鍞暟閲� const purchasePricePerTon = form.value.priceIncludingTax; // 鍚◣鍗曚环 - const transportPricePerTon = form.value.freight; // 杩愯垂 + const transportPricePerTon = form.value.purchasingFreight; // 閲囪喘杩愯垂 + const salesFreight = form.value.salesFreight; // 閿�鍞繍璐� const salePricePerTon = form.value.salePrice; // 閿�鍞崟浠凤紙鍏�/鍚級 const coalTaxRate = form.value.taxCoal / 100; // 璐攢鐓ょ◣鐜囷紙13%锛� const transportTaxRate = form.value.taxTrans / 100; // 杩愯緭绋庣巼锛�9%锛� @@ -220,13 +250,15 @@ const D = C * transportTaxRate * purchaseTons; // 杩愯垂杩涢」绋庨 const E = salePricePerTon / (1 + coalTaxRate); // 閿�鍞笉鍚◣鍗曚环 const F = E * coalTaxRate * saleTons; // 閿�椤圭◣棰� + const R = salesFreight / (1 + transportTaxRate); // 閿�鍞叅杩愯垂涓嶅惈绋庡崟浠� + const S = R * transportTaxRate * saleTons; // 閿�鍞叅杩愯垂杩涢」绋庨 // 姣涘埄娑� = 閿�鍞敹鍏� - 鎴愭湰鎴愭湰锛堣喘鐓�+杩愯垂锛夌殑鎴愭湰閮ㄥ垎 - const G = E * saleTons - A * saleTons - C * saleTons; + const G = E * saleTons - A * saleTons - C * saleTons - R * saleTons; form.value.grossProfit = G.toFixed(2); // 搴旂即绾冲鍊肩◣ = 閿�椤圭◣ - 鍙姷鎵h繘椤圭◣锛堟寜閿�鍞噺姣斾緥璁$畻锛� - const H = F - (A * coalTaxRate * saleTons) - (C * transportTaxRate * saleTons); + const H = F - (A * coalTaxRate * saleTons) - (C * transportTaxRate * saleTons) - (R * transportTaxRate * saleTons); // 澧炲�肩◣闄勫姞绋� const K = H * surchargeRate; -- Gitblit v1.9.3