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