Răsfoiți Sursa

feat(库存表格): 添加数量合计功能并优化价格格式化

liujt 1 lună în urmă
părinte
comite
90957867ff

+ 12 - 3
src/BIZComponents/inventoryTableDetails.vue

@@ -9,9 +9,9 @@
       tool-class="ele-toolbar-form"
       class="time-form"
       @columns-change="handleColumnChange"
-      show-summary
-      :summary-method="getSummaries"
-    >
+    > 
+      <!-- show-summary
+      :summary-method="getSummaries" -->
       <template v-slot:technicalDrawings="scope">
         <el-form-item
           :prop="'datasource.' + scope.$index + '.technicalDrawings'"
@@ -74,6 +74,7 @@
       <template v-slot:toolbar>
         <div class="headbox">
           <div class="pricebox">
+            <span class="amount" v-if="showSummary">数量合计:{{ allQuantity }}</span>
             <span class="amount" v-if="isAllPrice">总计:{{ allPrice }}元</span>
             <span class="amount" v-if="isDiscountTotalPrice"
               >优惠后总金额:{{ form.discountTotalPrice }}元</span
@@ -95,6 +96,7 @@
   import timeDialog from '@/components/timeDialog/index.vue';
   import tableColumnsMixin from '@/mixins/tableColumnsMixin.js';
   import { getSummaries } from '@/utils/util.js';
+  import { getAllQuantity } from '@/BIZComponents/setProduct.js';
 
   export default {
     mixins: [dictMixins, tableColumnsMixin],
@@ -136,6 +138,11 @@
         type: Boolean,
         default: true
       },
+      // 是否显示数量合计
+      showSummary: {
+        type: Boolean,
+        default: true
+      },
       //是否显示订单编码
       isOrderNo: {
         type: Boolean,
@@ -174,6 +181,7 @@
       return {
         cacheKeyUrl: 'sales-order-bizcomponent-InventoryTableDetails',
         allPrice: 0,
+        allQuantity: 0,
         supplierObj: [],
         form: {
           discountTotalPrice: 0,
@@ -887,6 +895,7 @@
           this.form.datasource = productList;
           this.allPrice =
             data.totalAmount || data.totalPrice || data?.contractVO?.totalPrice;
+          this.allQuantity = getAllQuantity(this.form.datasource, this.countObj)  
           if (this.isDiscountTotalPrice) {
             this.form.discountTotalPrice =
               data.payAmount ||

+ 16 - 0
src/BIZComponents/setProduct.js

@@ -1,5 +1,10 @@
 import Vue from 'vue';
 
+// 保留指定位数小数并去掉多余的0
+export function formatPrice(price, decimals = 4) {
+  return price.toFixed(decimals).replace(/\.?0+$/, '');
+}
+
 //改变数量
 export function changeCount(row, countObj,noDiscountSingle) {
   let total = row[countObj.countKey] || 0;
@@ -50,6 +55,17 @@ export function getAllPrice(arr){
   })
   return sum
 }
+
+export function getAllQuantity(arr, countObj) {
+  let sum = 0;
+  arr.forEach((item) => {
+    console.log('item', item, countObj.countKey);
+    if (item[countObj.countKey]) {
+      sum += Number(item[countObj.countKey]);
+    }
+  });
+  return isNaN(sum) ? 0 : formatPrice(sum);
+}
 // //计算不含税单价
 // function getNotaxSinglePrice(row) {
 //   if (row.singlePrice && row.taxRate) {