fenghaifu 4 дней назад
Родитель
Сommit
ae55eb7f14

+ 1 - 1
src/utils/request.js

@@ -17,7 +17,7 @@ let apiBaseUrl = window._CONFIG['domianURL'] || "/jeecg-boot";
 const service = axios.create({
   //baseURL: '/jeecg-boot',
   baseURL: apiBaseUrl, // api base_url
-  timeout: 180000 // 请求超时时间 3分钟
+  timeout: 600000 // 请求超时时间 10分钟
 })
 
 const err = (error) => {

+ 9 - 12
src/views/cost-allocation-total/tabs.vue

@@ -405,19 +405,16 @@ export default {
   methods: {
     tabsCallback(key) {
       this.activeKey = key
-      // console.log('点击的是', this.activeKey)
-      if (key == 0) {
-        var oneData = this.tabsAllData[0]
-        this.fabData = oneData.syCostAllocationFabricList
-        this.ingData = oneData.syCostAllocationIngredientList
-        this.shipData = oneData.syCostAllocationShipdetailList
-      }
-      if (key == 1) {
-        var twoData = this.tabsAllData[1]
-        this.fabData = twoData.syCostAllocationFabricList
-        this.ingData = twoData.syCostAllocationIngredientList
-        this.shipData = twoData.syCostAllocationShipdetailList
+      var tabData = this.tabsAllData[key]
+      if (!tabData) {
+        this.fabData = []
+        this.ingData = []
+        this.shipData = []
+        return
       }
+      this.fabData = tabData.syCostAllocationFabricList || []
+      this.ingData = tabData.syCostAllocationIngredientList || []
+      this.shipData = tabData.syCostAllocationShipdetail || tabData.syCostAllocationShipdetailList || []
     },
 
     // 面料 -转入数量 弹框

+ 67 - 54
src/views/reportForms/cost-allocation-table.vue

@@ -445,6 +445,7 @@ export default {
       fabricCost:'',//保存表头面料成本(¥)
       color2:0,
       fileList:[],
+      fileName: '',
       url: {
         list: '/sys/user/list',
         importExcelUrl: 'cost/syCostAllocation/addFile' ,// 导入
@@ -466,6 +467,8 @@ export default {
                 }
             },
   methods: {
+    // 备注 blur 事件
+    changeContainerNumber() {},
     // 【计划单号】 搜索
     onSearch(data) {
       this.$nextTick(() => {
@@ -490,14 +493,13 @@ export default {
         seachPlanNum({ plannum: this.detailsPlanNum.planNum, type: data }).then(res => {
           if (res.success) {
             this.PrintButton = false
-             this.loading = false
-            this.detailsPlanNum = res.result //所有详情
-            if(Number(this.detailsPlanNum.shortseveral)<0){
-              this.detailsPlanNum.shortseveral = 0
-              this.detailsPlanNum.shortvalue = 0
+            var result = res.result
+            if(Number(result.shortseveral)<0){
+              result.shortseveral = 0
+              result.shortvalue = 0
             }
             //表头-附件列表
-            var fileList =  (this.detailsPlanNum.attachs!==''&&this.detailsPlanNum.attachs)?this.detailsPlanNum.attachs.split(","):[]
+            var fileList =  (result.attachs!==''&&result.attachs)?result.attachs.split(","):[]
               this.fileList = []
               if(fileList.length!==0){
                 fileList.map(item=>{
@@ -509,22 +511,36 @@ export default {
                   })
               })
               }
-            this.accidentListData = res.result.syCostAllocationAccidentList //事故单
+            // 事故单数据去重,避免 rowKey 重复导致 Vue 报错
+            var accidentList = result.syCostAllocationAccidentList || []
+            var seen = {}
+            this.accidentListData = accidentList.filter(item => {
+              if (seen[item.id]) return false
+              seen[item.id] = true
+              return true
+            })
             this.accidentCalculation(this.accidentListData)   //计算事故单美元金额和事故单人民币金额
-            this.costPayData = res.result.syCostAllocationCostpayList //支出费用
+            this.costPayData = result.syCostAllocationCostpayList || [] //支出费用
             var num = 0
             this.costPayData.map(item =>{
               item.id = num + 1
               num += 1
             })
+            // ===== 先设置 tabs 子组件数据,确保 detailsPlanNum 赋值触发渲染时数据已就位 =====
             // tabs 名称集合
-            this.$refs.unitTabs.tabNameList = res.result.processUnit.split(',')
+            this.$refs.unitTabs.tabNameList = result.processUnit.split(',')
             //所有tabs数据
-            this.$refs.unitTabs.tabsAllData = res.result.processUnitList
-
+            this.$refs.unitTabs.tabsAllData = result.processUnitList
             // 页面打开加载的数据
-            var oneData = this.$refs.unitTabs.tabsAllData[0]
-            this.$refs.unitTabs.fabData = oneData.syCostAllocationFabricList
+            var oneData = this.$refs.unitTabs.tabsAllData[0] || {}
+            this.$refs.unitTabs.fabData = oneData.syCostAllocationFabricList || []
+            this.$refs.unitTabs.ingData = oneData.syCostAllocationIngredientList || []
+            this.$refs.unitTabs.shipData = oneData.syCostAllocationShipdetail || []
+            var shipDetail = oneData.syCostAllocationShipdetail || []
+
+            // ===== 用局部变量完成所有计算,最后一次性赋值 detailsPlanNum,避免中途触发渲染 =====
+            var dpn = result
+
             var all = 0,//面料sheet-转入成本总计
                 allYu = 0//面料sheet-余下数量成本总计
             this.$refs.unitTabs.fabData.map(item=>{
@@ -536,53 +552,47 @@ export default {
                 all+=Number(item.transferCost)
               }
             })
-            this.fabricCost =res.result.fabriccostIncludestax
-            this.detailsPlanNum.fabriccostIncludestax = (all+Number(this.detailsPlanNum.fabriccostIncludestax)-allYu).toFixed(2) // 表头面料成本(¥)
-            // this.detailsPlanNum.fabriccostIncludestax = (Number(this.detailsPlanNum.fabriccostIncludestax)-allYu).toFixed(2) // 表头面料成本(¥)
-            // this.detailsPlanNum.fabriccostIncludestaxUsd = (Number(this.detailsPlanNum.fabriccostIncludestax)/(1+(Number(this.detailsPlanNum.taxrate)/100))/this.detailsPlanNum.exchangeRate).toFixed(2)//表头面料成本($)
-            // this.detailsPlanNum.fabriccostIncludestaxUsd = (Number(this.detailsPlanNum.fabriccostIncludestaxUsd)).toFixed(2)//表头面料成本($)
-            var fabriccostIncludestaxUsd1=this.detailsPlanNum.fabriccostIncludestaxUsd 
-            var fabriccostNotincludestax1=this.detailsPlanNum.fabriccostNotincludestax 
-            this.detailsPlanNum.fabriccostIncludestaxUsd = (Number(this.detailsPlanNum.fabriccostIncludestax)/(1+(Number(this.detailsPlanNum.taxrate)/100)) /this.detailsPlanNum.exchangeRate).toFixed(2)//表头面料成本($)
-            this.detailsPlanNum.fabriccostNotincludestax = (Number(this.detailsPlanNum.fabriccostIncludestax)/(1+(Number(this.detailsPlanNum.taxrate)/100) )).toFixed(2)//表头-面料不含税成本(¥)
-            console.log('ustype    '+this.detailsPlanNum.usType)
-            console.log('fabriccostIncludestaxUsd    '+fabriccostIncludestaxUsd1)
-            console.log('fabriccostNotincludestax    '+fabriccostNotincludestax1)
-            if(this.detailsPlanNum.usType=="1"){
-              this.detailsPlanNum.fabriccostIncludestaxUsd = fabriccostIncludestaxUsd1//表头面料成本($)
-              this.detailsPlanNum.fabriccostNotincludestax = fabriccostNotincludestax1//表头面料成本($)
+            this.fabricCost =dpn.fabriccostIncludestax
+            dpn.fabriccostIncludestax = (all+Number(dpn.fabriccostIncludestax)-allYu).toFixed(2) // 表头面料成本(¥)
+            var fabriccostIncludestaxUsd1=dpn.fabriccostIncludestaxUsd 
+            var fabriccostNotincludestax1=dpn.fabriccostNotincludestax 
+            dpn.fabriccostIncludestaxUsd = (Number(dpn.fabriccostIncludestax)/(1+(Number(dpn.taxrate)/100)) /dpn.exchangeRate).toFixed(2)//表头面料成本($)
+            dpn.fabriccostNotincludestax = (Number(dpn.fabriccostIncludestax)/(1+(Number(dpn.taxrate)/100) )).toFixed(2)//表头-面料不含税成本(¥)
+            if(dpn.usType=="1"){
+              dpn.fabriccostIncludestaxUsd = fabriccostIncludestaxUsd1//表头面料成本($)
+              dpn.fabriccostNotincludestax = fabriccostNotincludestax1//表头面料成本($)
             }
-            this.detailsPlanNum.usType="1"
-            this.$refs.unitTabs.ingData = oneData.syCostAllocationIngredientList //辅料sheet数据源
-            this.$refs.unitTabs.shipData = oneData.syCostAllocationShipdetail //发运明细sheet数据源
-            this.detailsPlanNum.outdata = oneData.syCostAllocationShipdetail.length!==0?oneData.syCostAllocationShipdetail[0].outdata:'' //表头-出运日期
-            this.addAmountIng(oneData.syCostAllocationIngredientList) //辅料sheet合计行
+            dpn.usType="1"
+            dpn.outdata = shipDetail.length > 0 ? shipDetail[0].outdata : '' //表头-出运日期
+            this.addAmountIng(oneData.syCostAllocationIngredientList || []) //辅料sheet合计行
             this.addAmountCostPay(this.costPayData) //费用支出合计行
             this.addAccident(this.accidentListData)//事故单合计行
-            this.calculation(oneData.syCostAllocationShipdetail) //出运明细合计行
+            this.calculation(shipDetail) //出运明细合计行
             //合计中面料相关金额
             var s=0
-            oneData.syCostAllocationFabricList.map(item=>{
+            var fabricList = oneData.syCostAllocationFabricList || []
+            fabricList.map(item=>{
               s+=Number(item.transferCost)
             })
-             this.$refs.unitTabs.sumInfo.fabricAmount = (this.detailsPlanNum.fabriccostIncludestax!==''&&this.detailsPlanNum.fabriccostIncludestax)?(Number(this.detailsPlanNum.fabriccostIncludestax)).toFixed(2):'' //合计中的面料总额
-             this.$refs.unitTabs.sumInfo.fabricExcludTax =(this.detailsPlanNum.fabriccostNotincludestax!==''&&this.detailsPlanNum.fabriccostNotincludestax)?(Number(this.detailsPlanNum.fabriccostNotincludestax)).toFixed(2):''//合计中的不含税面料总额
+             this.$refs.unitTabs.sumInfo.fabricAmount = (dpn.fabriccostIncludestax!==''&&dpn.fabriccostIncludestax)?(Number(dpn.fabriccostIncludestax)).toFixed(2):'' //合计中的面料总额
+             this.$refs.unitTabs.sumInfo.fabricExcludTax =(dpn.fabriccostNotincludestax!==''&&dpn.fabriccostNotincludestax)?(Number(dpn.fabriccostNotincludestax)).toFixed(2):''//合计中的不含税面料总额
             //合计中辅料相关金额
             var s = 0,
             v =0,
             t=0,
             u=0
-            oneData.syCostAllocationIngredientList.map(item=>{
+            var ingList = oneData.syCostAllocationIngredientList || []
+            ingList.map(item=>{
               s+=item.priceExcludingtax?Number(item.priceExcludingtax):0,
               v+=item.rmbAmount?Number(item.rmbAmount):0
               t+=item.transferCost?Number(item.transferCost):0
               u+=item.usdAmount?Number(item.usdAmount):0
             })
             this.$refs.unitTabs.sumInfo.ingAmount =((v/2)+(t/2)).toFixed(2)//辅料金额合计
-            this.$refs.unitTabs.sumInfo.ingExcludAmount = (((s/2)+(t/2)/(1+(Number(this.detailsPlanNum.taxrate)/100)))).toFixed(2)//合计sheet辅料不含税金额合计
-            this.detailsPlanNum.excipiencostNotincludestax =  ( this.$refs.unitTabs.sumInfo.ingExcludAmount==''|| !this.$refs.unitTabs.sumInfo.ingExcludAmount)?0:Number(this.$refs.unitTabs.sumInfo.ingExcludAmount).toFixed(2)//表头辅料料不含税成本   
-            this.detailsPlanNum.excipiencostIncludestaxUsd = ((u/2)+(t/2)/1.13/(Number(this.detailsPlanNum.exchangeRate))).toFixed(2)
-            this.detailsPlanNum.excipiencostIncludestax =   (  this.$refs.unitTabs.sumInfo.ingAmount ==''|| ! this.$refs.unitTabs.sumInfo.ingAmount )?0:Number( this.$refs.unitTabs.sumInfo.ingAmount ).toFixed(2)//表头辅料成本(¥)
+            this.$refs.unitTabs.sumInfo.ingExcludAmount = (((s/2)+(t/2)/(1+(Number(dpn.taxrate)/100)))).toFixed(2)//合计sheet辅料不含税金额合计
+            dpn.excipiencostNotincludestax =  ( this.$refs.unitTabs.sumInfo.ingExcludAmount==''|| !this.$refs.unitTabs.sumInfo.ingExcludAmount)?0:Number(this.$refs.unitTabs.sumInfo.ingExcludAmount).toFixed(2)//表头辅料料不含税成本   
+            dpn.excipiencostIncludestaxUsd = ((u/2)+(t/2)/1.13/(Number(dpn.exchangeRate))).toFixed(2)
+            dpn.excipiencostIncludestax =   (  this.$refs.unitTabs.sumInfo.ingAmount ==''|| ! this.$refs.unitTabs.sumInfo.ingAmount )?0:Number( this.$refs.unitTabs.sumInfo.ingAmount ).toFixed(2)//表头辅料成本(¥)
             //合计中出运明细相关金额
             var s =0,
             v = 0,
@@ -590,7 +600,7 @@ export default {
             b = 0,
             f=0,
             e=0
-            oneData.syCostAllocationShipdetail.map(item=>{
+            shipDetail.map(item=>{
               s+=Number(item.exportPrice)
               v+=Number(item.shipQuantity)
               d+=Number(item.processCost)
@@ -601,24 +611,26 @@ export default {
               
             })
             this.$refs.unitTabs.sumInfo.exportPriceUSD = (s/2).toFixed(2)//出运美元外销总价
-            this.detailsPlanNum.usdTotalexportprice = this.$refs.unitTabs.sumInfo.exportPriceUSD //表头-外销总价($)
+            dpn.usdTotalexportprice = this.$refs.unitTabs.sumInfo.exportPriceUSD //表头-外销总价($)
             this.$refs.unitTabs.sumInfo.shipQua =(v/2).toFixed(4)//出货数量合计
             this.$refs.unitTabs.sumInfo.shipProcesFees =(d/2).toFixed(2)//出运加工费
             this.$refs.unitTabs.sumInfo.exportedAmountRMB =(b/2).toFixed(2)//出运人民币外销金额 f
-            this.detailsPlanNum.rmbExportamount = this.$refs.unitTabs.sumInfo.exportedAmountRMB //表头-外销总价(¥)
+            dpn.rmbExportamount = this.$refs.unitTabs.sumInfo.exportedAmountRMB //表头-外销总价(¥)
              //调整表头格式
              this.adjustingHeader()
-           if(oneData.syCostAllocationShipdetail.length!==0&&Number(oneData.syCostAllocationShipdetail[0].procesUnitPriceusd)>0){
+           if(shipDetail.length>0&&Number(shipDetail[0].procesUnitPriceusd)>0){
             this.$refs.unitTabs.sumInfo.excludingTaxProcessing =this.$refs.unitTabs.sumInfo.shipProcesFees//出运不含税加工费-合计信息
              }else{
-              this.$refs.unitTabs.sumInfo.excludingTaxProcessing =( this.$refs.unitTabs.sumInfo.shipProcesFees/(1+(Number(this.detailsPlanNum.taxrate)/100))).toFixed(2)//出运不含税加工费
+              this.$refs.unitTabs.sumInfo.excludingTaxProcessing =( this.$refs.unitTabs.sumInfo.shipProcesFees/(1+(Number(dpn.taxrate)/100))).toFixed(2)//出运不含税加工费
              }    
-             this.detailsPlanNum.rmbProcesscost = this.$refs.unitTabs.sumInfo.excludingTaxProcessing //表头-加工费人民币
-             f= Number(this.$refs.unitTabs.sumInfo.excludingTaxProcessing)/Number(this.detailsPlanNum.exchangeRate)
-             this.detailsPlanNum.usdProcesscost =e==0?(Number(this.detailsPlanNum.rmbProcesscost)/Number(this.detailsPlanNum.exchangeRate)).toFixed(2):e.toFixed(2)//表头-加工费美元
+             dpn.rmbProcesscost = this.$refs.unitTabs.sumInfo.excludingTaxProcessing //表头-加工费人民币
+             f= Number(this.$refs.unitTabs.sumInfo.excludingTaxProcessing)/Number(dpn.exchangeRate)
+             dpn.usdProcesscost =e==0?(Number(dpn.rmbProcesscost)/Number(dpn.exchangeRate)).toFixed(2):e.toFixed(2)//表头-加工费美元
             f=Number(this.$refs.unitTabs.sumInfo.ingAmount)+Number(this.$refs.unitTabs.sumInfo.shipProcesFees)
             this.$refs.unitTabs.sumInfo.amountTotal = (Number(this.$refs.unitTabs.sumInfo.fabricAmount)+Number(this.$refs.unitTabs.sumInfo.ingAmount)+Number( this.$refs.unitTabs.sumInfo.shipProcesFees)).toFixed(2)//合计金额
-            // this.$set( this.$refs.unitTabs.sumInfo,'amountTotal',(Number(this.$refs.unitTabs.sumInfo.fabricAmount)+Number(this.$refs.unitTabs.sumInfo.ingAmount)+Number( this.$refs.unitTabs.sumInfo.shipProcesFees)).toFixed(2))
+
+            // ===== 所有计算完成,一次性赋值 detailsPlanNum,触发渲染 =====
+            this.detailsPlanNum = dpn
             this.pagination = {
               total: res.result.total,
               current: res.result.current,
@@ -631,7 +643,7 @@ export default {
               this.fileList = file
               var all = 0,
               allYu = 0
-              oneData.syCostAllocationFabricList.map(item=>{
+              fabricList.map(item=>{
                 this.$refs.unitTabs.mList.map(event=>{
                   if(item.goodsName==event.goodsName){
                     item.transferCost = event.transferCost
@@ -655,7 +667,7 @@ export default {
               this.$refs.unitTabs.sumInfo.fabricAmount=this.detailsPlanNum.fabriccostIncludestax
                this.$refs.unitTabs.sumInfo.fabricExcludTax =(this.detailsPlanNum.fabriccostNotincludestax!==''&&this.detailsPlanNum.fabriccostNotincludestax)?(Number(this.detailsPlanNum.fabriccostNotincludestax)).toFixed(2):''//合计中的不含税面料总额
                 this.$refs.unitTabs.sumInfo.amountTotal = (Number(this.$refs.unitTabs.sumInfo.fabricAmount)+Number(this.$refs.unitTabs.sumInfo.ingAmount)+Number( this.$refs.unitTabs.sumInfo.shipProcesFees)).toFixed(2)//合计金额
-              oneData.syCostAllocationIngredientList.map(item=>{
+              ingList.map(item=>{
                 this.$refs.unitTabs.fList.map(event=>{
                   if(item.goodsName==event.goodsName){
                     item.transferCost = event.transferCost
@@ -668,7 +680,7 @@ export default {
               v=0,
               t=0,
               u=0
-            oneData.syCostAllocationIngredientList.map(item=>{
+            ingList.map(item=>{
               s+=Number(item.priceExcludingtax),
               v+=item.rmbAmount?Number(item.rmbAmount):0
               t+=item.transferCost?Number(item.transferCost):0
@@ -680,6 +692,7 @@ export default {
             this.$refs.unitTabs.sumInfo.ingAmount =((v/2)+(t/2)).toFixed(2)//辅料金额合计  
             this.detailsPlanNum.excipiencostIncludestax =   (  this.$refs.unitTabs.sumInfo.ingAmount ==''|| ! this.$refs.unitTabs.sumInfo.ingAmount )?0:Number( this.$refs.unitTabs.sumInfo.ingAmount ).toFixed(2)//表头辅料成本(¥)
           }
+            this.loading = false
           }else {
             this.loading = false
             this.$message.error(res.message);

+ 10 - 13
src/views/reportForms/cost-allocation-table/tabs.vue

@@ -634,7 +634,7 @@ export default {
   },
    props: {
     showSelect: {
-      type: String,
+      type: [String, Number],
       default: null
     },
     showAll: {
@@ -672,19 +672,16 @@ export default {
     },
     tabsCallback(key) {
       this.activeKey = key
-      // console.log('点击的是', this.activeKey)
-      if (key == 0) {
-        var oneData = this.tabsAllData[0]
-        this.fabData = oneData.syCostAllocationFabricList
-        this.ingData = oneData.syCostAllocationIngredientList
-        this.shipData = oneData.syCostAllocationShipdetailList
-      }
-      if (key == 1) {
-        var twoData = this.tabsAllData[1]
-        this.fabData = twoData.syCostAllocationFabricList
-        this.ingData = twoData.syCostAllocationIngredientList
-        this.shipData = twoData.syCostAllocationShipdetailList
+      var tabData = this.tabsAllData[key]
+      if (!tabData) {
+        this.fabData = []
+        this.ingData = []
+        this.shipData = []
+        return
       }
+      this.fabData = tabData.syCostAllocationFabricList || []
+      this.ingData = tabData.syCostAllocationIngredientList || []
+      this.shipData = tabData.syCostAllocationShipdetail || tabData.syCostAllocationShipdetailList || []
     },
 
     // 面料 -转入数量 弹框