Browse Source

JLHWEB: 1、修复床垫报价tab成本金额计算错误

JohnnyChan 2 weeks ago
parent
commit
8a21aa480b

+ 35 - 19
JLHWEB/src/views/quote/bednetQuote/components/FormulaItem.vue

@@ -77,17 +77,19 @@ const RenderVariable = (data: any, rprops: any) => {
         return (
           <>
             <div class="flx-col flx-end formula-wrapper__item formula-wrapper__item-children">
-              <el-tooltip effect="dark" content={"= " + _trgItem.value} placement="top">
-                <div class="label text-secondary-text text-body-c flx-center w-full">
-                  {fieldName}
-                  <el-icon>
-                    <InfoFilled />
-                  </el-icon>
-                </div>
-              </el-tooltip>
-              <span class="value text-primary-text text-h5-b flx-end-end">
-                (<RenderFormulaItem data={_trgItem} fields={props.fields} />)
-              </span>
+              <div class="formula-wrapper__item-children-inner">
+                <el-tooltip effect="dark" content={"= " + _trgItem.value} placement="top">
+                  <div class="formula-wrapper__item-children-label text-secondary-text text-body-c flx-center w-full">
+                    {fieldName}
+                    <el-icon>
+                      <InfoFilled />
+                    </el-icon>
+                  </div>
+                </el-tooltip>
+                <span class="value text-primary-text text-h5-b flx-end-end">
+                  (<RenderFormulaItem data={_trgItem} fields={props.fields} />)
+                </span>
+              </div>
             </div>
           </>
         );
@@ -181,10 +183,13 @@ const RenderFormulaItem = (rprops: any) => {
     }
 
     &-children {
-      background-color: $color-primary-000;
-      border-radius: $br-sm;
       margin-bottom: 0;
-      > .label {
+      &-inner {
+        background-color: $color-primary-000;
+        border-radius: $br-sm;
+        padding: 4px 4px 0;
+      }
+      .formula-wrapper__item-children-label {
         margin: 2px 0 0;
         color: $color-text-disable;
         border-radius: $br-sm;
@@ -192,7 +197,7 @@ const RenderFormulaItem = (rprops: any) => {
       }
     }
 
-    &:hover {
+    &:hover:not(.formula-wrapper__item-children) {
       background-color: $color-primary-400;
       border-radius: $br-sm;
       .label {
@@ -201,15 +206,26 @@ const RenderFormulaItem = (rprops: any) => {
       .value {
         color: $color-gray-1;
       }
+    }
+    &:hover {
+      .formula-wrapper__item-children-label,
+      .label {
+        color: $color-primary-000;
+      }
+      .value {
+        color: $color-gray-1;
+      }
 
       .formula-wrapper__item-children {
-        background-color: $color-primary-400;
-        > .label {
-          color: $color-primary-000;
+        &-inner {
+          background-color: $color-primary-400;
+          > .label {
+            color: $color-primary-000;
+          }
         }
       }
       &.formula-wrapper__item-children {
-        > .label {
+        .formula-wrapper__item-children-label {
           background-color: var(--lj-color-primary-700);
         }
       }

+ 41 - 13
JLHWEB/src/views/quote/mattressQuote/detail.vue

@@ -87,7 +87,7 @@
             collapseButtons
             :request-auto="false"
             :extra-loading="mxLoading"
-            :footer-sum-attrs="['costamt']"
+            :footer-method="footerMethod"
           >
             <template #tableHeader v-if="orderStatus">
               <el-space wrap>
@@ -131,7 +131,7 @@
             :auto-load-layout="false"
             collapseButtons
             :extra-loading="mxLoading"
-            :footer-sum-attrs="['costamt']"
+            :footer-method="footerMethod"
           >
             <template #tableHeader v-if="orderStatus">
               <el-space wrap>
@@ -175,7 +175,7 @@
             :auto-load-layout="false"
             collapseButtons
             :extra-loading="mxLoading"
-            :footer-sum-attrs="['costamt']"
+            :footer-method="footerMethod"
           >
             <template #tableHeader v-if="orderStatus">
               <el-space wrap>
@@ -237,7 +237,7 @@
             :auto-load-layout="false"
             collapseButtons
             :extra-loading="mxLoading"
-            :footer-sum-attrs="['costamt']"
+            :footer-method="footerMethod"
           >
             <template #tableHeader v-if="orderStatus">
               <el-space wrap>
@@ -299,7 +299,7 @@
             :auto-load-layout="false"
             collapseButtons
             :extra-loading="mxLoading"
-            :footer-sum-attrs="['costamt']"
+            :footer-method="footerMethod"
           >
             <template #tableHeader v-if="orderStatus">
               <el-space wrap>
@@ -338,7 +338,7 @@
             :auto-load-layout="false"
             collapseButtons
             :extra-loading="mxLoading"
-            :footer-sum-attrs="['costamt']"
+            :footer-method="footerMethod"
           >
             <template #tableHeader v-if="orderStatus">
               <el-space wrap>
@@ -377,7 +377,7 @@
         :auto-load-layout="false"
         collapseButtons
         :extra-loading="mxLoading"
-        :footer-sum-attrs="['costamt']"
+        :footer-method="footerMethod"
         @cell-dblclick="handleCellDblClick_bednet"
       >
         <template #tableHeader v-if="orderStatus">
@@ -420,7 +420,7 @@
         :auto-load-layout="false"
         collapseButtons
         :extra-loading="mxLoading"
-        :footer-sum-attrs="['costamt']"
+        :footer-method="footerMethod"
       >
         <template #tableHeader v-if="orderStatus">
           <el-space wrap>
@@ -463,7 +463,7 @@
         :auto-load-layout="false"
         collapseButtons
         :extra-loading="mxLoading"
-        :footer-sum-attrs="['costamt']"
+        :footer-method="footerMethod"
       >
         <!-- <template #tableHeader>
           <el-space wrap>
@@ -500,7 +500,7 @@
         :auto-load-layout="false"
         collapseButtons
         :extra-loading="mxLoading"
-        :footer-sum-attrs="['costamt']"
+        :footer-method="footerMethod"
       >
         <template #tableHeader>
           <el-space wrap>
@@ -566,7 +566,7 @@
         :tool-button="[]"
         :auto-load-layout="false"
         collapseButtons
-        :footer-sum-attrs="['costamt']"
+        :footer-method="footerMethod"
         @after-mounted="resetMergeCellsInner"
       >
         <template #tableHeader v-if="orderStatus">
@@ -605,7 +605,7 @@
         :tool-button="[]"
         :auto-load-layout="false"
         collapseButtons
-        :footer-sum-attrs="['costamt']"
+        :footer-method="footerMethod"
         @after-mounted="resetMergeCellsTopCotton"
       >
         <template #tableHeader v-if="orderStatus">
@@ -802,7 +802,7 @@ import BednetDialog from "@/views/system/selector/bednet/index.vue";
 import LjDrawerQuoteList from "./components/QuoteList.vue";
 import mittBus from "@/utils/mittBus";
 import { MittEnum } from "@/enums/mittEnum";
-import { getCurrentRecords } from "@/utils/index";
+import { getCurrentRecords, floatAdd, floatMul } from "@/utils/index";
 import { useUserStore } from "@/stores/modules/user";
 import AllFormula from "./components/AllFormula.vue";
 import LjDrawer from "@/components/LjDrawer/index.vue";
@@ -953,6 +953,34 @@ const bednetDrawerProps = reactive({
   onlyView: false
 });
 
+const footerMethod = ({ columns, data }: any) => {
+  // 返回一个二维数组的表尾合计
+  return [
+    columns.map((column: any, columnIndex: number) => {
+      if (columnIndex === 0) {
+        return "合计";
+      }
+      if (columnIndex === 1) {
+        return data.length;
+      }
+      // if ((column.field && column.field.indexOf("qty") > -1) || props.footerSumAttrs?.includes(column.field)) {
+      if ((column.field && column.field.indexOf("qty") > -1) || (column.field && column.field.indexOf("amt") > -1)) {
+        let count = 0;
+        data.forEach((item: any) => {
+          count = floatAdd(count, isNaN(Number(item[column.field])) ? 0 : Number(item[column.field]));
+        });
+        return count;
+      } else if (column.field && column.field.indexOf("dannum") > -1) {
+        let count = 0;
+        data.forEach((item: any) => {
+          count = floatAdd(count, floatMul(Number(item.costamt), 1 + mattresstypeEnum.value[column.field]));
+        });
+        return count;
+      }
+    })
+  ];
+};
+
 /**
  * @description 明细表格组件基础配置
  */

+ 8 - 8
JLHWEB/src/views/quote/mattressQuote/hooks/index.tsx

@@ -3578,25 +3578,25 @@ export const useHooks = (t?: any) => {
       }
     },
     {
-      title: "散单\r\n成本金额",
-      field: "dannum1_rate",
+      title: "标准\r\n成本金额",
+      field: "dannum2_rate",
       datatype: "number",
       limited: () => {
         return userInfo.usermode != 0;
       },
       render: (scope: any) => {
-        return formatCutNumber({ val: floatMul(scope.row.costamt, 1 + scope.row.dannum1_rate) });
+        return formatCutNumber({ val: floatMul(scope.row.costamt, 1 + state.mattresstypeEnum.dannum2_rate) });
       }
     },
     {
-      title: "标准\r\n成本金额",
-      field: "dannum2_rate",
+      title: "散单\r\n成本金额",
+      field: "dannum1_rate",
       datatype: "number",
       limited: () => {
         return userInfo.usermode != 0;
       },
       render: (scope: any) => {
-        return formatCutNumber({ val: floatMul(scope.row.costamt, 1 + scope.row.dannum2_rate) });
+        return formatCutNumber({ val: floatMul(scope.row.costamt, 1 + state.mattresstypeEnum.dannum1_rate) });
       }
     },
     {
@@ -3607,7 +3607,7 @@ export const useHooks = (t?: any) => {
         return userInfo.usermode != 0;
       },
       render: (scope: any) => {
-        return formatCutNumber({ val: floatMul(scope.row.costamt, 1 + scope.row.dannum3_rate) });
+        return formatCutNumber({ val: floatMul(scope.row.costamt, 1 + state.mattresstypeEnum.dannum3_rate) });
       }
     },
     {
@@ -3618,7 +3618,7 @@ export const useHooks = (t?: any) => {
         return userInfo.usermode != 0;
       },
       render: (scope: any) => {
-        return formatCutNumber({ val: floatMul(scope.row.costamt, 1 + scope.row.dannum4_rate) });
+        return formatCutNumber({ val: floatMul(scope.row.costamt, 1 + state.mattresstypeEnum.dannum4_rate) });
       }
     },
     {