From 2c9fbc6f1a3ccd1418efa9c348ec12faf1ab3258 Mon Sep 17 00:00:00 2001 From: zhang_12370 <z2864490065@outlook.com> Date: 星期三, 23 七月 2025 16:33:06 +0800 Subject: [PATCH] 1、完善表格逻辑 2、完善配煤计算器 3、完善设备管理 4、完善采购管理 --- src/views/procureMent/components/ProductionDialog.vue | 229 +++++++++++++++++++++++++++++++++++++-------------------- 1 files changed, 149 insertions(+), 80 deletions(-) diff --git a/src/views/procureMent/components/ProductionDialog.vue b/src/views/procureMent/components/ProductionDialog.vue index 4378006..859cbea 100644 --- a/src/views/procureMent/components/ProductionDialog.vue +++ b/src/views/procureMent/components/ProductionDialog.vue @@ -1,37 +1,55 @@ <template> <div> <el-dialog - v-model="dialogFormVisible" - :title="title" - width="600" - :close-on-click-modal="false" - @close="handleClose" + v-model="dialogFormVisible" + :title="title" + width="600" + :close-on-click-modal="false" + @close="handleClose" > <el-form - ref="formRef" - :model="form" - :rules="rules" - label-width="auto" - class="production-form" - label-position="right" - style="max-width: 400px; margin: 0 auto" + ref="formRef" + :model="form" + :rules="rules" + label-width="auto" + class="production-form" + label-position="right" + style="max-width: 400px; margin: 0 auto" > <el-form-item label="渚涘簲鍟嗗悕绉�" prop="supplierId"> - <el-select v-model="form.supplierId" placeholder="璇烽�夋嫨渚涘簲鍟�" :disabled="isViewMode"> - <el-option :label="item.label" v-for="item in supplyList" :key="item.value" :value="item.value"/> + <el-select + v-model="form.supplierId" + placeholder="璇烽�夋嫨渚涘簲鍟�" + :disabled="isViewMode" + > + <el-option + :label="item.label" + v-for="item in supplyList" + :key="item.value" + :value="item.value" + /> </el-select> </el-form-item> <el-form-item label="鐓ょ" prop="coalId"> - <el-select v-model="form.coalId" placeholder="璇烽�夋嫨鐓ょ" :disabled="isViewMode"> - <el-option :label="item.label" v-for="item in coalList" :key="item.value" :value="item.value"/> + <el-select + v-model="form.coalId" + placeholder="璇烽�夋嫨鐓ょ" + :disabled="isViewMode" + > + <el-option + :label="item.label" + v-for="item in coalList" + :key="item.value" + :value="item.value" + /> </el-select> </el-form-item> <el-form-item label="閲囪喘鏁伴噺" prop="purchaseQuantity"> <el-input - v-model.number="form.purchaseQuantity" - placeholder="璇疯緭鍏�" - @blur="handleQuantityBlur" - :disabled="isViewMode" + v-model.number="form.purchaseQuantity" + placeholder="璇疯緭鍏�" + @blur="handleQuantityBlur" + :disabled="isViewMode" > <template v-slot:suffix> <i style="font-style: normal">鍚�</i> @@ -40,10 +58,10 @@ </el-form-item> <el-form-item label="绋庣巼" prop="taxRate"> <el-input - v-model.number="form.taxRate" - placeholder="璇疯緭鍏ョ◣鐜�" - @blur="handleTaxRateBlur" - :disabled="isViewMode" + v-model.number="form.taxRate" + placeholder="璇疯緭鍏ョ◣鐜�" + @blur="handleTaxRateBlur" + :disabled="isViewMode" > <template v-slot:suffix> <i style="font-style: normal">%</i> @@ -52,10 +70,10 @@ </el-form-item> <el-form-item label="鍗曚环(鍚◣)" prop="priceIncludingTax"> <el-input - v-model.number="form.priceIncludingTax" - placeholder="璇疯緭鍏ュ惈绋庡崟浠�" - @blur="handlePriceBlur" - :disabled="isViewMode" + v-model.number="form.priceIncludingTax" + placeholder="璇疯緭鍏ュ惈绋庡崟浠�" + @blur="handlePriceBlur" + :disabled="isViewMode" > <template v-slot:suffix> <i style="font-style: normal">鍏�</i> @@ -64,9 +82,9 @@ </el-form-item> <el-form-item label="鍗曚环(涓嶅惈绋�)" prop="priceExcludingTax"> <el-input - v-model.number="form.priceExcludingTax" - placeholder="鑷姩璁$畻" - disabled + v-model.number="form.priceExcludingTax" + placeholder="鑷姩璁$畻" + disabled > <template v-slot:suffix> <i style="font-style: normal">鍏�</i> @@ -75,9 +93,9 @@ </el-form-item> <el-form-item label="鎬讳环(涓嶅惈绋�)" prop="totalPriceExcludingTax"> <el-input - v-model.number="form.totalPriceExcludingTax" - placeholder="鑷姩璁$畻" - disabled + v-model.number="form.totalPriceExcludingTax" + placeholder="鑷姩璁$畻" + disabled > <template v-slot:suffix> <i style="font-style: normal">鍏�</i> @@ -86,9 +104,23 @@ </el-form-item> <el-form-item label="鎬讳环(鍚◣)" prop="totalPriceIncludingTax"> <el-input - v-model.number="form.totalPriceIncludingTax" - placeholder="鑷姩璁$畻" - disabled + v-model.number="form.totalPriceIncludingTax" + placeholder="鑷姩璁$畻" + disabled + > + <template v-slot:suffix> + <i style="font-style: normal">鍏�</i> + </template> + </el-input> + </el-form-item> + <el-form-item label="杩愯垂" prop="freight"> + <!-- 榛樿涓�0 --> + <el-input + type="number" + :precision="2" + v-model.number="form.freight" + placeholder="璇疯緭鍏ヨ繍璐�" + :disabled="isViewMode" > <template v-slot:suffix> <i style="font-style: normal">鍏�</i> @@ -96,31 +128,38 @@ </el-input> </el-form-item> <el-form-item label="鐧昏浜�" prop="registrantId"> - <el-input :value="match(form.registrantId)" v-model.number="form.registrantId" disabled placeholder="璇疯緭鍏�"/> + <el-input + :value="match(form.registrantId)" + v-model.number="form.registrantId" + disabled + placeholder="璇疯緭鍏�" + /> </el-form-item> <el-form-item label="鐧昏鏃ユ湡" prop="registrationDate"> <el-date-picker - disabled - v-model="form.registrationDate" - type="date" - placeholder="YYYY-MM-DD" - style="width: 100%" - value-format="YYYY-MM-DD" + disabled + v-model="form.registrationDate" + type="date" + placeholder="YYYY-MM-DD" + style="width: 100%" + value-format="YYYY-MM-DD" /> </el-form-item> </el-form> <template #footer> <div class="dialog-footer"> <!-- 閲嶇疆鍜屽彇娑� --> - <el-button @click="handleClose" v-if="title.includes('鏂板') || title.includes('鏌ョ湅')" - >鍙栨秷 - </el-button - > + <el-button + @click="handleClose" + v-if="title.includes('鏂板') || title.includes('鏌ョ湅')" + >鍙栨秷 + </el-button> <el-button @click="handleReset" v-if="title.includes('缂栬緫')" - >閲嶇疆 - </el-button + >閲嶇疆 + </el-button> + <el-button type="primary" v-if="!isViewMode" @click="handleSubmit" + >纭</el-button > - <el-button type="primary" v-if="!isViewMode" @click="handleSubmit">纭</el-button> </div> </template> </el-dialog> @@ -128,10 +167,10 @@ </template> <script setup name="ProductionDialog"> -import {ref, defineProps, watch, onMounted, nextTick, computed} from "vue"; -import {ElMessage} from "element-plus"; +import { ref, defineProps, watch, onMounted, nextTick, computed } from "vue"; +import { ElMessage } from "element-plus"; import useUserStore from "@/store/modules/user"; -import {addOrEditPR, getSupplyList, getCoalInfoList} from "@/api/procureMent"; +import { addOrEditPR, getSupplyList, getCoalInfoList } from "@/api/procureMent"; const props = defineProps({ title: { @@ -185,7 +224,12 @@ if (isNaN(num) || num === null || num === undefined || num === "") { return 0; } - return Number((Math.floor(parseFloat(num) * Math.pow(10, precision)) / Math.pow(10, precision)).toFixed(precision)); + return Number( + ( + Math.floor(parseFloat(num) * Math.pow(10, precision)) / + Math.pow(10, precision) + ).toFixed(precision) + ); }; // 瀹夊叏鑾峰彇鏁板�� @@ -202,19 +246,22 @@ // 1. 鏍规嵁鍚◣鍗曚环鍜岀◣鐜囪绠椾笉鍚◣鍗曚环 // 涓嶅惈绋庡崟浠� = 鍚◣鍗曚环 / (1 + 绋庣巼/100) - const priceExcludingTax = priceIncludingTax && taxRate - ? parseFloat((priceIncludingTax / (1 + taxRate / 100)).toFixed(2)) - : 0; + const priceExcludingTax = + priceIncludingTax && taxRate + ? parseFloat((priceIncludingTax / (1 + taxRate / 100)).toFixed(2)) + : 0; // 2. 璁$畻涓嶅惈绋庢�讳环 = 涓嶅惈绋庡崟浠� 脳 鏁伴噺 - const totalPriceExcludingTax = priceExcludingTax && quantity - ? toFixed(priceExcludingTax * quantity, 2) - : 0; + const totalPriceExcludingTax = + priceExcludingTax && quantity + ? toFixed(priceExcludingTax * quantity, 2) + : 0; // 3. 璁$畻鍚◣鎬讳环 = 鍚◣鍗曚环 脳 鏁伴噺 - const totalPriceIncludingTax = priceIncludingTax && quantity - ? toFixed(priceIncludingTax * quantity, 2) - : 0; + const totalPriceIncludingTax = + priceIncludingTax && quantity + ? toFixed(priceIncludingTax * quantity, 2) + : 0; // 淇濊瘉鏄剧ず涓轰袱浣嶅皬鏁帮紙濡�88.5鏄剧ず涓�88.50锛� form.value.priceExcludingTax = priceExcludingTax.toFixed(2); @@ -224,7 +271,11 @@ // 鐩戝惉琛ㄥ崟瀵硅薄鍙樺寲锛岀敤浜庡鐞嗙紪杈戞ā寮忎笅鐨勬暟鎹姞杞藉拰瀹炴椂璁$畻 watch( - () => [form.value.priceIncludingTax, form.value.taxRate, form.value.purchaseQuantity], + () => [ + form.value.priceIncludingTax, + form.value.taxRate, + form.value.purchaseQuantity, + ], () => { // 闃叉姈澶勭悊锛岄伩鍏嶉绻佽绠� nextTick(() => { @@ -241,7 +292,11 @@ }; // 澶勭悊绋庣巼杈撳叆妗嗗け鐒︿簨浠� const handleTaxRateBlur = () => { - if (form.value.taxRate !== null && form.value.taxRate !== undefined && form.value.taxRate !== "") { + if ( + form.value.taxRate !== null && + form.value.taxRate !== undefined && + form.value.taxRate !== "" + ) { form.value.taxRate = toFixed(parseFloat(form.value.taxRate), 2); // watch 浼氳嚜鍔ㄨЕ鍙� calculatePrices锛屼笉闇�瑕佹墜鍔ㄨ皟鐢� } @@ -249,16 +304,30 @@ // 澶勭悊鍚◣鍗曚环杈撳叆妗嗗け鐒︿簨浠� const handlePriceBlur = () => { - if (form.value.priceIncludingTax !== null && form.value.priceIncludingTax !== undefined && form.value.priceIncludingTax !== "") { - form.value.priceIncludingTax = toFixed(parseFloat(form.value.priceIncludingTax), 2); + if ( + form.value.priceIncludingTax !== null && + form.value.priceIncludingTax !== undefined && + form.value.priceIncludingTax !== "" + ) { + form.value.priceIncludingTax = toFixed( + parseFloat(form.value.priceIncludingTax), + 2 + ); // watch 浼氳嚜鍔ㄨЕ鍙� calculatePrices锛屼笉闇�瑕佹墜鍔ㄨ皟鐢� } }; // 澶勭悊閲囪喘鏁伴噺杈撳叆妗嗗け鐒︿簨浠� const handleQuantityBlur = () => { - if (form.value.purchaseQuantity !== null && form.value.purchaseQuantity !== undefined && form.value.purchaseQuantity !== "") { - form.value.purchaseQuantity = toFixed(parseFloat(form.value.purchaseQuantity), 3); // 鏁伴噺淇濈暀3浣嶅皬鏁� + if ( + form.value.purchaseQuantity !== null && + form.value.purchaseQuantity !== undefined && + form.value.purchaseQuantity !== "" + ) { + form.value.purchaseQuantity = toFixed( + parseFloat(form.value.purchaseQuantity), + 3 + ); // 鏁伴噺淇濈暀3浣嶅皬鏁� // watch 浼氳嚜鍔ㄨЕ鍙� calculatePrices锛屼笉闇�瑕佹墜鍔ㄨ皟鐢� } }; @@ -272,23 +341,23 @@ }); const rules = { supplierName: [ - {required: true, message: "璇疯緭鍏ヤ緵搴斿晢鍚嶇О", trigger: "blur"}, + { required: true, message: "璇疯緭鍏ヤ緵搴斿晢鍚嶇О", trigger: "blur" }, ], - coal: [{required: true, message: "璇疯緭鍏ョ叅绉�", trigger: "blur"}], + coal: [{ required: true, message: "璇疯緭鍏ョ叅绉�", trigger: "blur" }], purchaseQuantity: [ - {required: true, message: "璇疯緭鍏ラ噰璐暟閲�", trigger: "blur"}, - {type: "number", message: "閲囪喘鏁伴噺蹇呴』涓烘暟瀛�", trigger: "blur"}, + { required: true, message: "璇疯緭鍏ラ噰璐暟閲�", trigger: "blur" }, + { type: "number", message: "閲囪喘鏁伴噺蹇呴』涓烘暟瀛�", trigger: "blur" }, ], priceExcludingTax: [ - {required: true, message: "璇疯緭鍏ュ崟浠�", trigger: "blur"}, + { required: true, message: "璇疯緭鍏ュ崟浠�", trigger: "blur" }, ], priceIncludingTax: [ - {required: true, message: "璇疯緭鍏ュ惈绋庡崟浠�", trigger: "blur"}, + { required: true, message: "璇疯緭鍏ュ惈绋庡崟浠�", trigger: "blur" }, ], - taxRate:[ - {required: true, message: "璇疯緭鍏ョ◣鐜�", trigger: "blur"}, - {type: "number", message: "绋庣巼蹇呴』涓烘暟瀛�", trigger: "blur"}, - ] + taxRate: [ + { required: true, message: "璇疯緭鍏ョ◣鐜�", trigger: "blur" }, + { type: "number", message: "绋庣巼蹇呴』涓烘暟瀛�", trigger: "blur" }, + ], }; // 鍏抽棴寮圭獥 const handleClose = () => { -- Gitblit v1.9.3