Преглед на файлове

fix: 入库单打印优化

liujt преди 1 седмица
родител
ревизия
00b87ac8a0

+ 23 - 14
src/views/warehouseManagement/stockManagement/components/printStockEnterHt.vue

@@ -99,7 +99,7 @@
             <strong>主管:</strong>{{ rowItem.verifyName || '' }}
           </div>
           <div style="width: 25%;">
-            <strong>仓库:</strong>{{ warehouseMap[rowItem.id] || '' }}
+            <strong>仓库:</strong>{{ getUniqueWarehouses(rowItem) }}
           </div>
           <div style="width: 25%;">
             <strong>记账:</strong>{{ rowItem.extInfo?.createUserName || '' }}
@@ -135,7 +135,7 @@
       return {
         QRvisible: false,
         formData: [],
-        warehouseMap: {}
+
       };
     },
 
@@ -145,10 +145,18 @@
         if (!rowItem?.outInDetailList || !Array.isArray(rowItem.outInDetailList)) {
           return 0;
         }
-        return rowItem.outInDetailList.reduce((sum, row) => {
-          const amount = parseFloat(row.measureQuantity || 0);
-          return sum + (isNaN(amount) ? 0 : amount);
+        const list = rowItem.outInDetailList;
+        // 找出最大小数位数,转为整数累加避免精度丢失
+        const maxDec = Math.max(...list.map((r) => {
+          const s = String(parseFloat(r.measureQuantity || 0));
+          const dot = s.indexOf('.');
+          return dot > -1 ? s.length - dot - 1 : 0;
+        }), 0);
+        const factor = Math.pow(10, maxDec);
+        const total = list.reduce((sum, row) => {
+          return sum + Math.round(parseFloat(row.measureQuantity || 0) * factor);
         }, 0);
+        return total / factor;
       },
 
       async init(ids, rows) {
@@ -161,21 +169,22 @@
         })
         this.formData = res;
 
-        // 构建仓库映射
-        this.warehouseMap = {};
-        rows.forEach((row) => {
-          this.warehouseMap[row.id] = row.warehouseName || '';
-        });
-
-        console.log('formData', this.formData, this.warehouseMap);
+        console.log('formData', this.formData);
         this.QRvisible = true;
       },
 
       close() {
         this.formData = [];
-        this.warehouseMap = {};
         this.QRvisible = false;
       },
+
+      getUniqueWarehouses(rowItem) {
+        return [...new Set(
+          (rowItem.outInDetailList || [])
+            .map((r) => r.warehouseName || '')
+            .filter(Boolean)
+        )].join('、');
+      },
       
       print() {
         const printSection = document.getElementById('printSectionHt');
@@ -215,7 +224,7 @@
         this.formData.forEach((rowItem) => {
           const list = rowItem.outInDetailList || [];
           const totalAmount = this.getTotalAmount(rowItem);
-          const warehouseName = this.warehouseMap[rowItem.id] || '';
+          const warehouseName = this.getUniqueWarehouses(rowItem);
           const isBizType6 = rowItem.bizType == 6;
           const supplierValue = rowItem.supplierNames || '';
 

+ 35 - 8
src/views/warehouseManagement/stockManagement/index.vue

@@ -209,21 +209,48 @@
             >出库</el-button
           >
 
-          <el-button icon="el-icon-printer" type="primary" @click="print"
+          <el-dropdown trigger="click" :disabled="selection?.length === 0">
+            <el-button type="primary" class="el-icon-printer" size="small">
+              打印<i class="el-icon-arrow-down el-icon--right"></i>
+            </el-button>
+            <el-dropdown-menu slot="dropdown">
+              <el-dropdown-item
+                @click.native="print"
+                >打印</el-dropdown-item
+              >
+              <el-dropdown-item
+                v-if="$hasPermission('wms:outin:printIn')"
+                @click.native="printkEnter"
+                >打印入库单</el-dropdown-item
+              >
+              <el-dropdown-item
+                v-if="$hasPermission('wms:outin:printInHt')"
+                @click.native="printkEnterHt"
+                >打印入库单</el-dropdown-item
+              >
+              <el-dropdown-item
+                v-if="$hasPermission('wms:outin:printIn1')"
+                @click.native="handlePrint('printTemplateTrRef')"
+                >打印采购入库单</el-dropdown-item
+              >
+            </el-dropdown-menu>
+          </el-dropdown>
+
+          <!-- <el-button icon="el-icon-printer" type="primary" @click="print"
             >打印</el-button
-          >
+          > -->
 
-          <el-button icon="el-icon-printer" type="primary" @click="printkEnter" v-if="$hasPermission('wms:outin:printIn')"
+          <!-- <el-button icon="el-icon-printer" type="primary" @click="printkEnter" v-if="$hasPermission('wms:outin:printIn')"
             >打印入库单</el-button
-          >
+          > -->
 
-          <el-button icon="el-icon-printer" type="primary" @click="printkEnterHt" v-if="$hasPermission('wms:outin:printInHt')"
+          <!-- <el-button icon="el-icon-printer" type="primary" @click="printkEnterHt" v-if="$hasPermission('wms:outin:printInHt')"
             >打印入库单</el-button
-          >
+          > -->
 
-          <el-button icon="el-icon-printer" type="primary" @click="handlePrint('printTemplateTrRef')" v-if="$hasPermission('wms:outin:printIn1')"
+          <!-- <el-button icon="el-icon-printer" type="primary" @click="handlePrint('printTemplateTrRef')" v-if="$hasPermission('wms:outin:printIn1')"
             >打印采购入库单</el-button
-          >
+          > -->
 
           <!-- <el-button
             icon="el-icon-plus"