From 6bea4a03b32c48d72cee59e46c90accdf07b8b35 Mon Sep 17 00:00:00 2001
From: gaoluyang <2820782392@qq.com>
Date: 星期四, 23 四月 2026 17:59:22 +0800
Subject: [PATCH] 阳光彩印 1.协同审批管理不再需要选择审批人 2.审批管理添加审批流联调 3.销售发货、采购台账、销售报价不再需要选择审批人

---
 src/views/procurementManagement/procurementLedger/index.vue |  363 ++++++++++++++++++++++++---------------------------
 1 files changed, 172 insertions(+), 191 deletions(-)

diff --git a/src/views/procurementManagement/procurementLedger/index.vue b/src/views/procurementManagement/procurementLedger/index.vue
index e40a68a..ed91559 100644
--- a/src/views/procurementManagement/procurementLedger/index.vue
+++ b/src/views/procurementManagement/procurementLedger/index.vue
@@ -19,7 +19,7 @@
                       clearable
                       :prefix-icon="Search" />
           </el-form-item>
-          <el-form-item label="閿�鍞悎鍚屽彿锛�">
+          <el-form-item label="璁㈠崟缂栧彿锛�">
             <el-input v-model="searchForm.salesContractNo"
                       placeholder="璇疯緭鍏�"
                       clearable
@@ -53,6 +53,7 @@
       <div style="display: flex;justify-content: flex-end;margin-bottom: 20px;">
         <el-button type="primary"
                    @click="openForm('add')">鏂板鍙拌处</el-button>
+        <el-button type="primary" plain @click="handleImport">瀵煎叆</el-button>
         <el-button @click="handleOut">瀵煎嚭</el-button>
         <el-button type="danger"
                    plain
@@ -111,7 +112,7 @@
                          prop="purchaseContractNumber"
                          width="160"
                          show-overflow-tooltip />
-        <el-table-column label="閿�鍞悎鍚屽彿"
+        <el-table-column label="璁㈠崟缂栧彿"
                          prop="salesContractNo"
                           width="160"
                          show-overflow-tooltip />
@@ -155,6 +156,10 @@
         <el-table-column label="褰曞叆鏃ユ湡"
                          prop="entryDate"
                          width="100"
+                         show-overflow-tooltip />
+        <el-table-column label="澶囨敞"
+                         prop="remarks"
+                         width="200"
                          show-overflow-tooltip />
         <el-table-column fixed="right"
                          label="鎿嶄綔"
@@ -202,7 +207,7 @@
             </el-form-item>
           </el-col>
           <el-col :span="12">
-            <el-form-item label="閿�鍞悎鍚屽彿锛�"
+            <el-form-item label="璁㈠崟缂栧彿锛�"
                           prop="salesLedgerId">
               <el-select v-model="form.salesLedgerId"
                          placeholder="璇烽�夋嫨"
@@ -228,7 +233,7 @@
                 <el-option v-for="item in supplierList"
                            :key="item.id"
                            :label="item.supplierName"
-                           :value="item.id" />
+													 :value="item.id" >{{item.supplierName + '---' + item.supplierType}}</el-option>
               </el-select>
             </el-form-item>
           </el-col>
@@ -287,50 +292,6 @@
                               type="date"
                               placeholder="璇烽�夋嫨"
                               clearable />
-            </el-form-item>
-          </el-col>
-        </el-row>
-        <el-row :gutter="30">
-          <el-col :span="24">
-            <el-form-item>
-              <template #label>
-                <div style="display: flex; align-items: center; justify-content: space-between; width: 100%;">
-                  <span>瀹℃壒浜洪�夋嫨锛�</span>
-                  <el-button type="primary" size="small" @click="addApproverNode" icon="Plus">鏂板鑺傜偣</el-button>
-                </div>
-              </template>
-              <div class="approver-nodes-container">
-                <div
-                  v-for="(node, index) in approverNodes"
-                  :key="node.id"
-                  class="approver-node-item"
-                >
-                  <div class="approver-node-header">
-                    <span class="approver-node-label">瀹℃壒鑺傜偣 {{ index + 1 }}</span>
-                    <el-button
-                      v-if="approverNodes.length > 1"
-                      type="danger"
-                      size="small"
-                      text
-                      @click="removeApproverNode(index)"
-                      icon="Delete"
-                    >鍒犻櫎</el-button>
-                  </div>
-                  <el-select
-                    v-model="node.userId"
-                    placeholder="璇烽�夋嫨瀹℃壒浜�"
-                    filterable
-                    style="width: 100%;"
-                  >
-                    <el-option
-                      v-for="user in userList"
-                      :key="user.userId"
-                      :label="user.nickName"
-                      :value="user.userId"
-                    />
-                  </el-select>
-                </div>
-              </div>
             </el-form-item>
           </el-col>
         </el-row>
@@ -449,8 +410,8 @@
         <el-row :gutter="30">
           <el-col :span="24">
             <el-form-item label="澶囨敞路锛�"
-                          prop="remark">
-              <el-input v-model="form.remark"
+                          prop="remarks">
+              <el-input v-model="form.remarks"
                         placeholder="璇疯緭鍏�"
                         clearable
                         type="textarea"
@@ -461,7 +422,7 @@
         <el-row :gutter="30">
           <el-col :span="24">
             <el-form-item label="闄勪欢鏉愭枡锛�"
-                          prop="remark">
+                          prop="purchaseLedgerFiles">
               <el-upload v-model:file-list="fileList"
                          :action="upload.url"
                          multiple
@@ -484,6 +445,41 @@
           </el-col>
         </el-row>
       </el-form>
+    </FormDialog>
+    <!-- 瀵煎叆寮圭獥 -->
+    <FormDialog
+      v-model="importUpload.open"
+      :title="importUpload.title"
+      :width="'600px'"
+      @close="importUpload.open = false"
+      @confirm="submitImportFile"
+      @cancel="importUpload.open = false"
+    >
+      <el-upload
+        ref="importUploadRef"
+        :limit="1"
+        accept=".xlsx,.xls"
+        :action="importUpload.url"
+        :headers="importUpload.headers"
+        :before-upload="importUpload.beforeUpload"
+        :on-success="importUpload.onSuccess"
+        :on-error="importUpload.onError"
+        :on-progress="importUpload.onProgress"
+        :on-change="importUpload.onChange"
+        :auto-upload="false"
+        drag
+      >
+        <i class="el-icon-upload"></i>
+        <div class="el-upload__text">
+          灏嗘枃浠舵嫋鍒版澶勶紝鎴�<em>鐐瑰嚮涓婁紶</em>
+        </div>
+        <template #tip>
+          <div class="el-upload__tip">
+            浠呮敮鎸� xls/xlsx锛屽ぇ灏忎笉瓒呰繃 10MB銆�
+            <el-button link type="primary" @click="downloadTemplate">涓嬭浇瀵煎叆妯℃澘</el-button>
+          </div>
+        </template>
+      </el-upload>
     </FormDialog>
     <FormDialog v-model="productFormVisible"
                :title="productOperationType === 'add' ? '鏂板浜у搧' : '缂栬緫浜у搧'"
@@ -544,12 +540,14 @@
                          placeholder="璇烽�夋嫨"
                          clearable
                          @change="mathNum">
+                <el-option label="0"
+                           :value="0" />
                 <el-option label="1"
-                           value="1" />
+                           :value="1" />
                 <el-option label="6"
-                           value="6" />
+                           :value="6" />
                 <el-option label="13"
-                           value="13" />
+                           :value="13" />
               </el-select>
             </el-form-item>
           </el-col>
@@ -559,7 +557,7 @@
             <el-form-item label="鍚◣鍗曚环(鍏�)锛�"
                           prop="taxInclusiveUnitPrice">
               <el-input-number v-model="productForm.taxInclusiveUnitPrice"
-                               :precision="2"
+                               :precision="3"
                                :step="0.1"
                                :min="0"
                                clearable
@@ -572,7 +570,7 @@
                           prop="quantity">
               <el-input-number :step="0.1"
                                clearable
-                               :precision="2"
+                               :precision="3"
                                :min="0"
                                style="width: 100%"
                                v-model="productForm.quantity"
@@ -586,7 +584,7 @@
             <el-form-item label="鍚◣鎬讳环(鍏�)锛�"
                           prop="taxInclusiveTotalPrice">
               <el-input-number v-model="productForm.taxInclusiveTotalPrice"
-                               :precision="2"
+                               :precision="3"
                                :step="0.1"
                                :min="0"
                                clearable
@@ -598,7 +596,7 @@
             <el-form-item label="涓嶅惈绋庢�讳环(鍏�)锛�"
                           prop="taxExclusiveTotalPrice">
               <el-input-number v-model="productForm.taxExclusiveTotalPrice"
-                               :precision="2"
+                               :precision="3"
                                :step="0.1"
                                :min="0"
                                clearable
@@ -625,7 +623,7 @@
             <el-form-item label="搴撳瓨棰勮鏁伴噺锛�"
                           prop="warnNum">
               <el-input-number v-model="productForm.warnNum"
-                               :precision="2"
+                               :precision="3"
                                :step="0.1"
                                :min="0"
                                clearable
@@ -717,16 +715,6 @@
   import dayjs from "dayjs";
 
   const userStore = useUserStore();
-
-  // 瀹℃壒浜鸿妭鐐癸紙浠块攢鍞彴璐﹀彂璐у鎵逛汉锛�
-  const approverNodes = ref([{ id: 1, userId: null }]);
-  let nextApproverId = 2;
-  const addApproverNode = () => {
-    approverNodes.value.push({ id: nextApproverId++, userId: null });
-  };
-  const removeApproverNode = (index) => {
-    approverNodes.value.splice(index, 1);
-  };
 
   // 璁㈠崟瀹℃壒鐘舵�佹樉绀烘枃鏈�
   const approvalStatusText = {
@@ -878,12 +866,9 @@
       purchaseContractNumber: [
         { required: true, message: "璇疯緭鍏�", trigger: "blur" },
       ],
-      approverId: [
-        { required: true, message: "璇烽�夋嫨瀹℃壒浜�", trigger: "change" },
-      ],
-      projectName: [
-        { required: true, message: "璇疯緭鍏ラ」鐩悕绉�", trigger: "blur" },
-      ],
+      // projectName: [
+      //   { required: true, message: "璇疯緭鍏ラ」鐩悕绉�", trigger: "blur" },
+      // ],
       supplierId: [{ required: true, message: "璇疯緭鍏�", trigger: "blur" }],
       entryDate: [{ required: true, message: "璇烽�夋嫨", trigger: "change" }],
       executionDate: [{ required: true, message: "璇烽�夋嫨", trigger: "change" }],
@@ -915,7 +900,7 @@
       unit: "",
       quantity: "",
       taxInclusiveUnitPrice: "",
-      taxRate: "",
+      taxRate: 0,
       taxInclusiveTotalPrice: "",
       taxExclusiveTotalPrice: "",
       invoiceType: "",
@@ -930,7 +915,7 @@
       taxInclusiveUnitPrice: [
         { required: true, message: "璇疯緭鍏�", trigger: "blur" },
       ],
-      taxRate: [{ required: true, message: "璇烽�夋嫨", trigger: "change" }],
+      // taxRate: [{ required: true, message: "璇烽�夋嫨", trigger: "change" }],
       warnNum: [{ required: true, message: "璇烽�夋嫨", trigger: "change" }],
       taxInclusiveTotalPrice: [
         { required: true, message: "璇疯緭鍏�", trigger: "blur" },
@@ -938,7 +923,7 @@
       taxExclusiveTotalPrice: [
         { required: true, message: "璇疯緭鍏�", trigger: "blur" },
       ],
-      invoiceType: [{ required: true, message: "璇烽�夋嫨", trigger: "change" }],
+      // invoiceType: [{ required: true, message: "璇烽�夋嫨", trigger: "change" }],
       isChecked: [{ required: true, message: "璇烽�夋嫨", trigger: "change" }],
     },
   });
@@ -949,6 +934,71 @@
     // 璁剧疆涓婁紶鐨勮姹傚ご閮�
     headers: { Authorization: "Bearer " + getToken() },
   });
+
+  // 瀵煎叆鐩稿叧
+  const importUploadRef = ref(null);
+  const importUpload = reactive({
+    title: "瀵煎叆閲囪喘鍙拌处",
+    open: false,
+    url: import.meta.env.VITE_APP_BASE_API + "/purchase/ledger/import",
+    headers: { Authorization: "Bearer " + getToken() },
+    isUploading: false,
+    beforeUpload: (file) => {
+      const isExcel = file.name.endsWith(".xlsx") || file.name.endsWith(".xls");
+      const isLt10M = file.size / 1024 / 1024 < 10;
+      if (!isExcel) {
+        proxy.$modal.msgError("涓婁紶鏂囦欢鍙兘鏄� xlsx/xls 鏍煎紡!");
+        return false;
+      }
+      if (!isLt10M) {
+        proxy.$modal.msgError("涓婁紶鏂囦欢澶у皬涓嶈兘瓒呰繃 10MB!");
+        return false;
+      }
+      return true;
+    },
+    onChange: (file, fileList) => {
+      // noop
+    },
+    onProgress: (event, file, fileList) => {
+      // noop
+    },
+    onSuccess: (response, file, fileList) => {
+      importUpload.isUploading = false;
+      if (response?.code === 200) {
+        proxy.$modal.msgSuccess("瀵煎叆鎴愬姛");
+        importUpload.open = false;
+        if (importUploadRef.value) {
+          importUploadRef.value.clearFiles?.();
+        }
+        getList();
+      } else {
+        proxy.$modal.msgError(response?.msg || "瀵煎叆澶辫触");
+      }
+    },
+    onError: () => {
+      importUpload.isUploading = false;
+      proxy.$modal.msgError("瀵煎叆澶辫触锛岃閲嶈瘯");
+    },
+  });
+
+  const handleImport = () => {
+    importUpload.title = "瀵煎叆閲囪喘鍙拌处";
+    importUpload.open = true;
+    importUpload.isUploading = false;
+    if (importUploadRef.value) {
+      importUploadRef.value.clearFiles?.();
+    }
+  };
+
+  // 涓嬭浇瀵煎叆妯℃澘锛堝鍚庣璺緞涓嶅悓锛屽彲鍦ㄦ澶勮皟鏁达級
+  const downloadTemplate = () => {
+    proxy.download("/purchase/ledger/exportTemplate", {}, "閲囪喘鍙拌处瀵煎叆妯℃澘.xlsx");
+  };
+
+  const submitImportFile = () => {
+    importUpload.isUploading = true;
+    proxy.$refs["importUploadRef"]?.submit?.();
+  };
 
   const changeDaterange = value => {
     if (value) {
@@ -962,7 +1012,7 @@
   };
 
   const formattedNumber = (row, column, cellValue) => {
-    return parseFloat(cellValue).toFixed(2);
+    return parseFloat(cellValue).toFixed(3);
   };
   // 鏌ヨ鍒楄〃
   /** 鎼滅储鎸夐挳鎿嶄綔 */
@@ -1014,19 +1064,12 @@
     }
 
     try {
-      // 鑾峰彇瀹℃壒浜篒D瀛楃涓�
-      const approveUserIds = approverNodes.value
-        .filter(node => node.userId)
-        .map(node => node.userId)
-        .join(",");
-      
       let params = {
         productData: proxy.HaveJson(productData.value),
         supplierId: form.value.supplierId,
         paymentMethod: form.value.paymentMethod,
         recorderId: form.value.recorderId,
         projectName: form.value.projectName,
-        approveUserIds: approveUserIds,
         templateName: templateName.value.trim(),
       };
       console.log("template params ===>", params, "currentTemplateId:", currentTemplateId.value);
@@ -1086,6 +1129,9 @@
       {
         ticketsNum: { noDecimal: true }, // 涓嶄繚鐣欏皬鏁�
         futureTickets: { noDecimal: true }, // 涓嶄繚鐣欏皬鏁�
+        taxInclusiveUnitPrice: { decimalPlaces: 3 },
+        taxInclusiveTotalPrice: { decimalPlaces: 3 },
+        taxExclusiveTotalPrice: { decimalPlaces: 3 },
       }
     );
   };
@@ -1149,7 +1195,9 @@
   };
   // 涓昏〃鍚堣鏂规硶
   const summarizeMainTable = param => {
-    return proxy.summarizeTable(param, ["contractAmount"]);
+    return proxy.summarizeTable(param, ["contractAmount"], {
+      contractAmount: { decimalPlaces: 3 },
+    });
   };
   // 瀛愯〃鍚堣鏂规硶
   const summarizeProTable = param => {
@@ -1157,7 +1205,11 @@
       "taxInclusiveUnitPrice",
       "taxInclusiveTotalPrice",
       "taxExclusiveTotalPrice",
-    ]);
+    ], {
+      taxInclusiveUnitPrice: { decimalPlaces: 3 },
+      taxInclusiveTotalPrice: { decimalPlaces: 3 },
+      taxExclusiveTotalPrice: { decimalPlaces: 3 },
+    });
   };
   // 鎵撳紑寮规
   const openForm = async (type, row) => {
@@ -1177,9 +1229,6 @@
     templateName.value = "";
     filterInputValue.value = "";
     isTemplateNameDuplicate.value = false;
-    // 閲嶇疆瀹℃壒浜鸿妭鐐癸紙榛樿涓�涓┖鑺傜偣锛�
-    approverNodes.value = [{ id: 1, userId: null }];
-    nextApproverId = 2;
     try {
       // 骞惰鍔犺浇鍩虹鏁版嵁
       const [userRes, salesRes, supplierRes] = await Promise.all([
@@ -1218,15 +1267,6 @@
           form.value = { ...purchaseRes };
           productData.value = purchaseRes.productData || [];
           fileList.value = purchaseRes.salesLedgerFiles || [];
-          // 濡傛灉缂栬緫鏃舵湁瀹℃壒浜猴紝瑙f瀽瀹℃壒浜篒D瀛楃涓插苟璁剧疆鍒拌妭鐐逛腑
-          if (purchaseRes.approveUserIds) {
-            const approverIds = purchaseRes.approveUserIds.split(",");
-            approverNodes.value = approverIds.map((id, index) => ({
-              id: index + 1,
-              userId: Number(id)
-            }));
-            nextApproverId = approverIds.length + 1;
-          }
         } catch (error) {
           console.error("鍔犺浇閲囪喘鍙拌处鏁版嵁澶辫触:", error);
           proxy.$modal.msgError("鍔犺浇鏁版嵁澶辫触");
@@ -1295,14 +1335,6 @@
   const submitForm = () => {
     proxy.$refs["formRef"].validate(valid => {
       if (valid) {
-        // 瀹℃壒浜哄繀濉牎楠岋紙鎵�鏈夎妭鐐归兘瑕侀�変汉锛�
-        const hasEmptyApprover = approverNodes.value.some(node => !node.userId);
-        if (hasEmptyApprover) {
-          proxy.$modal.msgError("璇蜂负鎵�鏈夊鎵硅妭鐐归�夋嫨瀹℃壒浜猴紒");
-          return;
-        }
-        const approveUserIds = approverNodes.value.map(node => node.userId).join(",");
-        
         if (productData.value.length > 0) {
           // 鏂板鏃讹紝闇�瑕佷粠姣忎釜浜у搧瀵硅薄涓垹闄� id 瀛楁
           let processedProductData = productData.value;
@@ -1323,7 +1355,6 @@
         }
         form.value.tempFileIds = tempFileIds;
         form.value.type = 2;
-        form.value.approveUserIds = approveUserIds;
 
         // 濡傛灉salesLedgerId涓虹┖锛屽垯涓嶄紶閫抯alesContractNo
         if (!form.value.salesLedgerId) {
@@ -1347,16 +1378,16 @@
   // 鍏抽棴寮规
   const closeDia = () => {
     proxy.resetForm("formRef");
-    // 閲嶇疆瀹℃壒浜鸿妭鐐癸紙榛樿涓�涓┖鑺傜偣锛�
-    approverNodes.value = [{ id: 1, userId: null }];
-    nextApproverId = 2;
     dialogFormVisible.value = false;
   };
   // 鎵撳紑浜у搧寮规
   const openProductForm = async (type, row, index) => {
     productOperationType.value = type;
     productOperationIndex.value = index;
-    productForm.value = {};
+    productForm.value = {
+      taxRate: 0,
+      invoiceType: "澧炴櫘绁�"
+    };
     proxy.resetForm("productFormRef");
     productFormVisible.value = true;
     
@@ -1543,7 +1574,7 @@
           delProduct(ids).then(res => {
             proxy.$modal.msgSuccess("鍒犻櫎鎴愬姛");
             closeProductDia();
-            getSalesLedgerWithProducts({ id: currentId.value, type: 2 }).then(
+            getPurchaseById({ id: currentId.value, type: 2 }).then(
               res => {
                 productData.value = res.productData;
               }
@@ -1578,20 +1609,12 @@
   const handleDelete = () => {
     let ids = [];
     if (selectedRows.value.length > 0) {
-      // 妫�鏌ユ槸鍚︽湁浠栦汉缁存姢鐨勬暟鎹�
-      const unauthorizedData = selectedRows.value.filter(
-        item => item.recorderName !== userStore.nickName
-      );
-      if (unauthorizedData.length > 0) {
-        proxy.$modal.msgWarning("涓嶅彲鍒犻櫎浠栦汉缁存姢鐨勬暟鎹�");
-        return;
-      }
-      ids = selectedRows.value.map(item => item.id);
+      ids = selectedRows.value.filter(item => item.salesLedgerId === null).map(item => item.id);
     } else {
       proxy.$modal.msgWarning("璇烽�夋嫨鏁版嵁");
       return;
     }
-    ElMessageBox.confirm("閫変腑鐨勫唴瀹瑰皢琚垹闄わ紝鏄惁纭鍒犻櫎锛�", "瀵煎嚭", {
+    ElMessageBox.confirm("閫変腑鐨勫唴瀹瑰皢琚垹闄わ紝鏄惁纭鍒犻櫎锛�", "鍒犻櫎", {
       confirmButtonText: "纭",
       cancelButtonText: "鍙栨秷",
       type: "warning",
@@ -1615,10 +1638,10 @@
     return `${year}-${month}-${day}`;
   }
   const mathNum = () => {
-    if (!productForm.value.taxRate) {
-      proxy.$modal.msgWarning("璇峰厛閫夋嫨绋庣巼");
-      return;
-    }
+    // if (!productForm.value.taxRate) {
+    //   proxy.$modal.msgWarning("璇峰厛閫夋嫨绋庣巼");
+    //   return;
+    // }
     if (!productForm.value.taxInclusiveUnitPrice) {
       return;
     }
@@ -1629,22 +1652,31 @@
     productForm.value.taxInclusiveTotalPrice =
       proxy.calculateTaxIncludeTotalPrice(
         productForm.value.taxInclusiveUnitPrice,
-        productForm.value.quantity
+        productForm.value.quantity,
+        3
       );
     if (productForm.value.taxRate) {
       // 涓嶅惈绋庢�讳环璁$畻
       productForm.value.taxExclusiveTotalPrice =
         proxy.calculateTaxExclusiveTotalPrice(
           productForm.value.taxInclusiveTotalPrice,
-          productForm.value.taxRate
+          productForm.value.taxRate,
+          3
         );
+    }else{
+      productForm.value.taxExclusiveTotalPrice =
+      proxy.calculateTaxIncludeTotalPrice(
+          productForm.value.taxInclusiveUnitPrice,
+          productForm.value.quantity,
+          3
+      );
     }
   };
   const reverseMathNum = field => {
-    if (!productForm.value.taxRate) {
-      proxy.$modal.msgWarning("璇峰厛閫夋嫨绋庣巼");
-      return;
-    }
+    // if (!productForm.value.taxRate) {
+    //   proxy.$modal.msgWarning("璇峰厛閫夋嫨绋庣巼");
+    //   return;
+    // }
     const taxRate = Number(productForm.value.taxRate);
     if (!taxRate) return;
 
@@ -1667,7 +1699,7 @@
         productForm.value.taxInclusiveUnitPrice = (
           Number(productForm.value.taxInclusiveTotalPrice) /
           Number(productForm.value.quantity)
-        ).toFixed(2);
+        ).toFixed(3);
         // 纭繚缁撴灉涓嶄负璐熸暟
         if (Number(productForm.value.taxInclusiveUnitPrice) < 0) {
           productForm.value.taxInclusiveUnitPrice = "0";
@@ -1678,7 +1710,7 @@
         productForm.value.quantity = (
           Number(productForm.value.taxInclusiveTotalPrice) /
           Number(productForm.value.taxInclusiveUnitPrice)
-        ).toFixed(2);
+        ).toFixed(3);
         // 纭繚缁撴灉涓嶄负璐熸暟
         if (Number(productForm.value.quantity) < 0) {
           productForm.value.quantity = "0";
@@ -1688,7 +1720,7 @@
       productForm.value.taxExclusiveTotalPrice = (
         Number(productForm.value.taxInclusiveTotalPrice) /
         (1 + taxRate / 100)
-      ).toFixed(2);
+      ).toFixed(3);
       // 纭繚缁撴灉涓嶄负璐熸暟
       if (Number(productForm.value.taxExclusiveTotalPrice) < 0) {
         productForm.value.taxExclusiveTotalPrice = "0";
@@ -1698,7 +1730,7 @@
       productForm.value.taxInclusiveTotalPrice = (
         Number(productForm.value.taxExclusiveTotalPrice) *
         (1 + taxRate / 100)
-      ).toFixed(2);
+      ).toFixed(3);
       // 纭繚缁撴灉涓嶄负璐熸暟
       if (Number(productForm.value.taxInclusiveTotalPrice) < 0) {
         productForm.value.taxInclusiveTotalPrice = "0";
@@ -1708,7 +1740,7 @@
         productForm.value.taxInclusiveUnitPrice = (
           Number(productForm.value.taxInclusiveTotalPrice) /
           Number(productForm.value.quantity)
-        ).toFixed(2);
+        ).toFixed(3);
         // 纭繚缁撴灉涓嶄负璐熸暟
         if (Number(productForm.value.taxInclusiveUnitPrice) < 0) {
           productForm.value.taxInclusiveUnitPrice = "0";
@@ -1719,7 +1751,7 @@
         productForm.value.quantity = (
           Number(productForm.value.taxInclusiveTotalPrice) /
           Number(productForm.value.taxInclusiveUnitPrice)
-        ).toFixed(2);
+        ).toFixed(3);
         // 纭繚缁撴灉涓嶄负璐熸暟
         if (Number(productForm.value.quantity) < 0) {
           productForm.value.quantity = "0";
@@ -1831,57 +1863,6 @@
   .select-button-group {
     display: flex;
     align-items: center;
-  }
-  
-  // 瀹℃壒浜鸿妭鐐瑰鍣ㄦ牱寮�
-  .approver-nodes-container {
-    display: flex;
-    flex-wrap: wrap;
-    gap: 16px;
-    padding: 16px;
-    background-color: #f8f9fa;
-    border-radius: 4px;
-    border: 1px solid #e4e7ed;
-  }
-  
-  .approver-node-item {
-    flex: 0 0 calc(33.333% - 12px);
-    min-width: 200px;
-    padding: 12px;
-    background-color: #fff;
-    border-radius: 4px;
-    border: 1px solid #dcdfe6;
-    transition: all 0.3s;
-    
-    &:hover {
-      border-color: #409eff;
-      box-shadow: 0 2px 8px rgba(64, 158, 255, 0.1);
-    }
-  }
-  
-  .approver-node-header {
-    display: flex;
-    justify-content: space-between;
-    align-items: center;
-    margin-bottom: 8px;
-  }
-  
-  .approver-node-label {
-    font-size: 13px;
-    font-weight: 500;
-    color: #606266;
-  }
-  
-  @media (max-width: 1200px) {
-    .approver-node-item {
-      flex: 0 0 calc(50% - 8px);
-    }
-  }
-  
-  @media (max-width: 768px) {
-    .approver-node-item {
-      flex: 0 0 100%;
-    }
   }
   
   // 鍒犻櫎鍥炬爣鏍峰紡

--
Gitblit v1.9.3