Selaa lähdekoodia

change: indent计价.除切换城市动作外均使用已保存数据覆盖重计算结果.

peter 5 päivää sitten
vanhempi
commit
69bddce999
1 muutettua tiedostoa jossa 93 lisäystä ja 53 poistoa
  1. 93 53
      src/pages/indent-manage/indent/components/calcPrice/index.vue

+ 93 - 53
src/pages/indent-manage/indent/components/calcPrice/index.vue

@@ -103,27 +103,34 @@
                         ($e) => captureSwitchChange($e, formItem, v - 1)
                       "
                     >
-                      <el-tooltip
+                      <!-- <el-tooltip
                         placement="left"
                         content="注意, 切换开关会导致右侧的成本数据 以(点过'保存按钮'后的 / 默认的)初始值 计算重置"
-                      >
-                        <el-switch
-                          v-model="formItem[`${v - 1}_${formItem.number}`]"
-                          size="small"
-                          active-color="#409eff"
-                          inactive-color="#ccc"
-                          active-value="on"
-                          inactive-value="off"
-                          @change="() => generateStep3Form()"
-                        />
-                      </el-tooltip>
+                      > -->
+                      <el-switch
+                        v-model="formItem[`${v - 1}_${formItem.number}`]"
+                        size="small"
+                        active-color="#409eff"
+                        inactive-color="#ccc"
+                        active-value="on"
+                        inactive-value="off"
+                        @change="
+                          () => generateStep3Form({ y: v - 1, x: index })
+                        "
+                      />
+                      <!-- </el-tooltip> -->
                     </div>
                   </template>
                   <div v-if="v === 1">
                     <el-select
                       v-model="formItem[`method_0_${formItem.number}`]"
                       size="small"
-                      @change="reGenerateFormAfterMidwayTypeChange"
+                      @change="
+                        reGenerateFormAfterMidwayTypeChange({
+                          x: index,
+                          y: 0,
+                        })
+                      "
                     >
                       <el-option
                         v-for="option in airOption"
@@ -146,7 +153,12 @@
                     <el-select
                       v-model="formItem[`method_2_${formItem.number}`]"
                       size="small"
-                      @change="reGenerateFormAfterMidwayTypeChange"
+                      @change="
+                        reGenerateFormAfterMidwayTypeChange({
+                          x: index,
+                          y: 2,
+                        })
+                      "
                     >
                       <el-option
                         v-for="option in seaOption"
@@ -1058,7 +1070,7 @@ let initForm = (switchStatus = [] as any[], useOldFormData = true) => {
   setFreight()
   if (useOldFormData) {
     // 仅页面初始化时会执行到这里
-    generateStep3Form(true)
+    generateStep3Form({ withOldData: true })
   }
 }
 
@@ -1092,22 +1104,27 @@ let reGenerateFormAfterCityChange = () => {
   })
 
   initForm(temp)
-  generateStep3Form()
+  // 切换城市后, 理论上所有数据都应该重置
+  generateStep3Form({ withOldData: false })
 }
 /**
- * 切换运送方式之后, 重新计算中途运费和生成step3的表单内容. 开关属于开启状态才有必要重算
+ * 切换运送方式之后, 重新计算中途运费和生成step3的表单内容.
  */
-let reGenerateFormAfterMidwayTypeChange = () => {
+let reGenerateFormAfterMidwayTypeChange = (p: any) => {
   setFreight()
-  generateStep3Form()
+  generateStep3Form(p || {})
 }
-let generateStep3Form = (withOldData = false) => {
+let generateStep3Form = (p = {}) => {
+  const config = Object.assign({}, { withOldData: true, x: -1, y: -1 }, p || {})
+  const withOldData = config.withOldData
   const labelList = ['快递', '空+派', '海运', 'DTD', 'LCL散货']
   const result: any[] = []
   const oldData = productInfo.value.save_cal
-  formList.value.forEach((i: any) => {
+  formList.value.forEach((i: any, formRow) => {
+    // console.log(i, '表单行数据')
     for (let n = 0; n < 5; n++) {
       if (i[`${n}_${i.number}`] === 'on') {
+        // console.log(config, 'config')
         let temp = Object.assign({}, step3FormDemo.value, {
           tabLabel: `${i.number} ${labelList[n]}`,
           number: i.number,
@@ -1143,18 +1160,21 @@ let generateStep3Form = (withOldData = false) => {
             .add(i.extend_cost)
             .add(temp.freight_cost)
             .add(
-              withOldData
-                ? oldData[`cal_quote_${n}_${i.number}`].tax_fee
+              withOldData && oldData[`cal_quote_${n}_${i.number}`]
+                ? oldData[`cal_quote_${n}_${i.number}`].tax_fee ||
+                    step3FormDemo.value.tax_fee
                 : step3FormDemo.value.tax_fee,
             )
             .add(
-              withOldData
-                ? oldData[`cal_quote_${n}_${i.number}`].gatt_tax_fee
+              withOldData && oldData[`cal_quote_${n}_${i.number}`]
+                ? oldData[`cal_quote_${n}_${i.number}`].gatt_tax_fee ||
+                    step3FormDemo.value.gatt_tax_fee
                 : step3FormDemo.value.gatt_tax_fee,
             )
             .add(
-              withOldData
-                ? oldData[`cal_quote_${n}_${i.number}`].review_cost
+              withOldData && oldData[`cal_quote_${n}_${i.number}`]
+                ? oldData[`cal_quote_${n}_${i.number}`].review_cost ||
+                    step3FormDemo.value.review_cost
                 : step3FormDemo.value.review_cost,
             )
             .done()
@@ -1190,18 +1210,21 @@ let generateStep3Form = (withOldData = false) => {
             //     .done(),
             // )
             .add(
-              withOldData
-                ? oldData[`cal_quote_${n}_${i.number}`].tax_fee
+              withOldData && oldData[`cal_quote_${n}_${i.number}`]
+                ? oldData[`cal_quote_${n}_${i.number}`].tax_fee ||
+                    step3FormDemo.value.tax_fee
                 : step3FormDemo.value.tax_fee,
             )
             .add(
-              withOldData
-                ? oldData[`cal_quote_${n}_${i.number}`].gatt_tax_fee
+              withOldData && oldData[`cal_quote_${n}_${i.number}`]
+                ? oldData[`cal_quote_${n}_${i.number}`].gatt_tax_fee ||
+                    step3FormDemo.value.gatt_tax_fee
                 : step3FormDemo.value.gatt_tax_fee,
             )
             .add(
-              withOldData
-                ? oldData[`cal_quote_${n}_${i.number}`].review_cost
+              withOldData && oldData[`cal_quote_${n}_${i.number}`]
+                ? oldData[`cal_quote_${n}_${i.number}`].review_cost ||
+                    step3FormDemo.value.review_cost
                 : step3FormDemo.value.review_cost,
             )
             .done()
@@ -1242,18 +1265,21 @@ let generateStep3Form = (withOldData = false) => {
             //     .done(),
             // )
             .add(
-              withOldData
-                ? oldData[`cal_quote_${n}_${i.number}`].tax_fee
+              withOldData && oldData[`cal_quote_${n}_${i.number}`]
+                ? oldData[`cal_quote_${n}_${i.number}`].tax_fee ||
+                    step3FormDemo.value.tax_fee
                 : step3FormDemo.value.tax_fee,
             )
             .add(
-              withOldData
-                ? oldData[`cal_quote_${n}_${i.number}`].gatt_tax_fee
+              withOldData && oldData[`cal_quote_${n}_${i.number}`]
+                ? oldData[`cal_quote_${n}_${i.number}`].gatt_tax_fee ||
+                    step3FormDemo.value.gatt_tax_fee
                 : step3FormDemo.value.gatt_tax_fee,
             )
             .add(
-              withOldData
-                ? oldData[`cal_quote_${n}_${i.number}`].review_cost
+              withOldData && oldData[`cal_quote_${n}_${i.number}`]
+                ? oldData[`cal_quote_${n}_${i.number}`].review_cost ||
+                    step3FormDemo.value.review_cost
                 : step3FormDemo.value.review_cost,
             )
             .done()
@@ -1266,8 +1292,9 @@ let generateStep3Form = (withOldData = false) => {
           // 利润率是整数, 除100算出百分数.
           mathjs
             .chain(
-              withOldData
-                ? oldData[`cal_quote_${n}_${i.number}`].profit_margin
+              withOldData && oldData[`cal_quote_${n}_${i.number}`]
+                ? oldData[`cal_quote_${n}_${i.number}`].profit_margin ||
+                    step3FormDemo.value.profit_margin
                 : step3FormDemo.value.profit_margin,
             )
             .divide(100)
@@ -1280,8 +1307,9 @@ let generateStep3Form = (withOldData = false) => {
             .multiply(
               mathjs
                 .chain(
-                  withOldData
-                    ? oldData[`cal_quote_${n}_${i.number}`].profit_margin
+                  withOldData && oldData[`cal_quote_${n}_${i.number}`]
+                    ? oldData[`cal_quote_${n}_${i.number}`].profit_margin ||
+                        step3FormDemo.value.profit_margin
                     : step3FormDemo.value.profit_margin,
                 )
                 .add(100)
@@ -1298,7 +1326,7 @@ let generateStep3Form = (withOldData = false) => {
                   .chain(temp.sold_price)
                   .subtract(temp.add_freight_cost)
                   .subtract(
-                    withOldData
+                    withOldData && oldData[`cal_quote_${n}_${i.number}`]
                       ? oldData[`cal_quote_${n}_${i.number}`].setup_cost
                       : step3FormDemo.value.setup_cost,
                   )
@@ -1312,20 +1340,32 @@ let generateStep3Form = (withOldData = false) => {
           .done()
           .toFixed(2)
 
-        exportForm.value[`zdy_date_${n}_${i.number}`] = ''
-        exportForm.value[`cycle_name_${n}_${i.number}`] = 'weeks'
+        // exportForm.value[`zdy_date_${n}_${i.number}`] = ''
+        // exportForm.value[`cycle_name_${n}_${i.number}`] = 'weeks'
 
-        if (withOldData === true) {
+        // 行和列只要有一项不等, 就不是点开关的那个, 就应该用已保存数据覆盖
+        // if (withOldData && (config.y !== n || config.x !== formRow)) {
+        // 出了切换城市, 全部用已保存的数据覆盖
+        if (withOldData) {
           if (oldData[`cal_quote_${n}_${i.number}`]) {
             const cloneData = cloneDeep(oldData[`cal_quote_${n}_${i.number}`])
             cloneData.freight_cost = cloneData.freight
             delete cloneData.freight
             temp = Object.assign(temp, cloneData)
           }
-          exportForm.value[`zdy_date_${n}_${i.number}`] =
-            oldData[`zdy_date_${n}_${i.number}`] || ''
-          exportForm.value[`cycle_name_${n}_${i.number}`] =
-            oldData[`cycle_name_${n}_${i.number}`] || 'weeks'
+          exportForm.value[`zdy_date_${n}_${i.number}`] = oldData[
+            `zdy_date_${n}_${i.number}`
+          ]
+            ? oldData[`zdy_date_${n}_${i.number}`]
+            : ''
+          exportForm.value[`cycle_name_${n}_${i.number}`] = oldData[
+            `cycle_name_${n}_${i.number}`
+          ]
+            ? oldData[`cycle_name_${n}_${i.number}`]
+            : 'weeks'
+          console.log('覆盖: 行:', formRow + 1, '列:', n)
+        } else {
+          console.log('重算, 没有覆盖: 行:', config.x + 1, '列:', config.y)
         }
 
         // console.log(temp, 'temp')
@@ -1674,7 +1714,7 @@ let dtdChange = (data: any) => {
     data.method_fcl || ''
   formList.value[dtdData.value.rowNum].fclData.total_fcl =
     Number(data.freight_cost) || 0
-  generateStep3Form()
+  generateStep3Form({ x: dtdData.value.rowNum, y: dtdData.value.columnNum })
 }
 let openLCLDialog = (columnNum: number, rowNum: number) => {
   lclData.value = {
@@ -1703,7 +1743,7 @@ let lclChange = (data: any) => {
   formList.value[lclData.value.rowNum].lclData.total_lcl =
     Number(data.freight_cost) || 0
 
-  generateStep3Form()
+  generateStep3Form({ x: lclData.value.rowNum, y: lclData.value.columnNum })
 }
 let isExport = ref(0)
 let checkForm = (type = 1) => {