luobang 2 years ago
parent
commit
20945072bb

+ 2 - 2
build/utils.js

@@ -16,8 +16,8 @@ const devPathSrc = path.resolve(__dirname, '../../../src') // node_modules应用
 //       统计报表       组织机构/系统管理 采购  仓储
 //  'statisticalReport','systemConfig','TMS','WMS','workFlow','ADMINISTRATORS']
 
-let devModules = ['all']
-// let devModules = ['index', 'statisticalReport']
+// let devModules = ['all']
+let devModules = ['index', 'statisticalReport', 'RMS']
 // let devModules = ['all']
 
 // let devModules = ['index', 'ADMINISTRATORS']

+ 8 - 3
src/views/RMS/components/editCapacity.vue

@@ -18,8 +18,12 @@
                   <el-radio v-model="form1.capacityGps" label="否">否</el-radio>
                 </el-form-item>
                 <el-form-item label="是否是黑名单车辆:">
-                  <el-radio v-model="form1.capacityBlackList" label="是">是</el-radio>
-                  <el-radio v-model="form1.capacityBlackList" label="否">否</el-radio>
+                  <el-radio v-model="form1.capacityBlackList" label="是"
+                    >是</el-radio
+                  >
+                  <el-radio v-model="form1.capacityBlackList" label="否"
+                    >否</el-radio
+                  >
                 </el-form-item>
               </div>
             </el-form>
@@ -171,7 +175,8 @@ export default {
         capacityNumber: this.form1.capacityNumber,
         capacityVip: this.form1.capacityVip,
         capacityGps: this.form1.capacityGps,
-        capacityBlackList: this.form1.capacityBlackList
+        capacityBlackList: this.form1.capacityBlackList,
+        capacityId: this.form1.capacityId
       }
       this.axios.post('/api/v1/rms/updateCapacity', map).then(res => {
         if (res.data.code == '200') {

+ 5 - 22
src/views/sale/components/transportFreight/saleTruckSettlement/bmsTruckDetailsOrderNew.vue

@@ -3043,13 +3043,10 @@ export default {
         saler = getCookie('loginName')
       }
       if (getCookie('orgCode') == 'shouhuokehu') {
-        // consigneeSsoId = getCookie('userId')
-        // obj.consigneeSsoId = consigneeSsoId
-        consigneeLoginName = getCookie('loginName')
+        consigneeLoginName =
+          JSON.parse(getCookie('userInfo')).userCode || getCookie('loginName')
         obj.consigneeLoginName = consigneeLoginName
       }
-      console.log('数据展示')
-      console.log(this.screen)
       if (this.screen == '客户') {
         consigneeName = this.input
       } else if (this.screen == '承运商') {
@@ -3079,6 +3076,7 @@ export default {
       } else if (this.input1 != null && this.input1 != '') {
         remark = this.input1
       }
+      debugger
       this.axios
         .post(
           '/api/v1/tms/getSaleSteelReportNew?startTime=' +
@@ -3165,19 +3163,6 @@ export default {
         .then(res => {
           this.tableData1 = res.data.data
           this.getNodeNum(this.tableData1)
-          //遍历保留两位小数
-          // this.tableData1.forEach(e=>{
-          //     try {
-          //         if(e.priceValue){
-          //           e.priceValue=e.priceValue.toFixed(2);
-          //         }
-          //         if(e.detailsAmount){
-          //           e.detailsAmount=e.detailsAmount.toFixed(2);
-          //         }
-          //     } catch (error) {
-
-          //     }
-          // })
           this.maxHeight =
             window.innerHeight -
             document.querySelector('.tableTop').offsetHeight -
@@ -3292,10 +3277,9 @@ export default {
         saler = getCookie('loginName')
       }
       if (getCookie('orgCode') == 'shouhuokehu') {
-        consigneeLoginName = getCookie('loginName')
+        consigneeLoginName =
+          JSON.parse(getCookie('userInfo')).userCode || getCookie('loginName')
         this.filterMap.consigneeLoginName = consigneeLoginName
-        // consigneeSsoId = getCookie('userId')
-        // this.filterMap.consigneeSsoId = consigneeSsoId
       }
       if (this.screen == '客户') {
         consigneeName = this.input
@@ -3405,7 +3389,6 @@ export default {
           console.log(this.visibleList1)
           this.getSpanArr1(this.visibleList1)
           this.getTotalNum(this.tableData1)
-          loading.close()
         })
         .catch(() => {
           loading.close()

+ 111 - 26
src/views/statisticalReport/components/salesLogisticsStatistics/saleSteelReports.vue

@@ -203,6 +203,8 @@
           width="50"
           label="选择"
           align="center"
+          column-key="select"
+          key="select"
           v-if="
             !notRoutList.includes('select') ||
               !columnNoRoutList.includes('选择')
@@ -212,6 +214,8 @@
           width="50"
           label="序号"
           align="center"
+          column-key="group"
+          key="group"
           :resizable="false"
           v-if="!columnNoRoutList.includes('序号')"
         >
@@ -222,6 +226,8 @@
           label="订单日期"
           width="110px"
           align="center"
+          column-key="orderTime"
+          key="orderTime"
           show-overflow-tooltip
           v-if="!columnNoRoutList.includes('订单日期')"
         >
@@ -230,6 +236,8 @@
           prop="saleMakeDate"
           label="制单日期"
           width="130px"
+          column-key="saleMakeDate"
+          key="saleMakeDate"
           align="center"
           v-if="!columnNoRoutList.includes('制单日期')"
         >
@@ -237,6 +245,7 @@
         <el-table-column
           prop="saleOrderStatus"
           column-key="saleOrderStatus"
+          key="saleOrderStatus"
           label="销售订单状态"
           width="110px"
           align="center"
@@ -251,6 +260,7 @@
           width="200px"
           align="center"
           column-key="consigneeName"
+          key="consigneeName"
           :filters="filterConsigneeList"
           sortable
           show-overflow-tooltip
@@ -260,6 +270,7 @@
         <el-table-column
           prop="orderStatus"
           column-key="orderStatus"
+          key="orderStatus"
           label="运单状态"
           align="center"
           :filters="filterorderStatus"
@@ -281,6 +292,7 @@
           align="center"
           width="80px"
           column-key="carrierList"
+          key="carrierList"
           sortable
           show-overflow-tooltip
           :filters="filterCarrierList"
@@ -290,6 +302,7 @@
         <el-table-column
           prop="capacityNo"
           column-key="capacityNo"
+          key="capacityNo"
           label="车牌号"
           align="center"
           width="90px"
@@ -302,6 +315,7 @@
         <el-table-column
           prop="materialName"
           column-key="materialNameList"
+          key="materialNameList"
           label="物资名称"
           align="center"
           width="150px"
@@ -314,6 +328,7 @@
           prop="materialSpe"
           label="物资规格"
           column-key="materialSpe"
+          key="materialSpe"
           align="center"
           sortable
           :filters="filtermaterialSpe"
@@ -323,6 +338,8 @@
         </el-table-column>
         <el-table-column
           prop="materialNum"
+          column-key="materialNum"
+          key="materialNum"
           label="物资件数"
           align="center"
           width="50px"
@@ -331,6 +348,8 @@
         </el-table-column>
         <el-table-column
           prop="materialThoWeight"
+          column-key="materialThoWeight"
+          key="materialThoWeight"
           label="理重"
           align="center"
           width="50px"
@@ -343,15 +362,25 @@
           width="250px"
           sortable
           column-key="addressPlace"
+          key="addressPlace"
           :filters="filteraddressPlace"
           show-overflow-tooltip
           v-if="!columnNoRoutList.includes('收货地址')"
         >
+          <!-- <template slot="header" slot-scope="scope">
+            <span>收货地址</span>
+            <el-input
+              v-model="search"
+              size="mini"
+              placeholder="输入关键字搜索"
+            />
+          </template> -->
         </el-table-column>
 
         <el-table-column
           prop="saleRemark"
           column-key="saleRemark"
+          key="saleRemark"
           label="摘要"
           width="150px"
           align="center"
@@ -362,6 +391,8 @@
         </el-table-column>
         <el-table-column
           prop="truckRemark"
+          column-key="truckRemark"
+          key="truckRemark"
           label="备注"
           width="150"
           align="center"
@@ -371,6 +402,8 @@
         </el-table-column>
         <el-table-column
           prop="capacityTel"
+          column-key="capacityTel"
+          key="capacityTel"
           label="司机电话"
           width="120px"
           align="center"
@@ -379,6 +412,8 @@
         </el-table-column>
         <el-table-column
           prop="queueStartTime"
+          column-key="queueStartTime"
+          key="queueStartTime"
           label="排队开始时间"
           width="130px"
           show-overflow-tooltip
@@ -387,6 +422,8 @@
         </el-table-column>
         <el-table-column
           prop="allowEnfactoryTime"
+          column-key="allowEnfactoryTime"
+          key="allowEnfactoryTime"
           label="钢材科放行时间"
           width="130px"
           show-overflow-tooltip
@@ -395,6 +432,8 @@
         </el-table-column>
         <el-table-column
           prop="entryGateTime"
+          column-key="entryGateTime"
+          key="entryGateTime"
           label="进厂时间"
           width="130px"
           show-overflow-tooltip
@@ -403,6 +442,8 @@
         </el-table-column>
         <el-table-column
           prop="tareWeightTime"
+          column-key="tareWeightTime"
+          key="tareWeightTime"
           label="皮重时间"
           width="130px"
           show-overflow-tooltip
@@ -411,6 +452,8 @@
         </el-table-column>
         <el-table-column
           prop="tareWeight"
+          column-key="tareWeight"
+          key="tareWeight"
           label="皮重"
           show-overflow-tooltip
           v-if="!columnNoRoutList.includes('皮重')"
@@ -418,6 +461,8 @@
         </el-table-column>
         <el-table-column
           prop="loadTime"
+          column-key="loadTime"
+          key="loadTime"
           label="装货时间"
           width="130px"
           show-overflow-tooltip
@@ -426,6 +471,8 @@
         </el-table-column>
         <el-table-column
           prop="grossWeightTime"
+          column-key="grossWeightTime"
+          key="grossWeightTime"
           label="毛重时间"
           width="130px"
           show-overflow-tooltip
@@ -434,6 +481,8 @@
         </el-table-column>
         <el-table-column
           prop="grossWeight"
+          column-key="grossWeight"
+          key="grossWeight"
           label="毛重"
           show-overflow-tooltip
           v-if="!columnNoRoutList.includes('毛重')"
@@ -441,6 +490,8 @@
         </el-table-column>
         <el-table-column
           prop="netWeight"
+          column-key="netWeight"
+          key="netWeight"
           label="净重"
           show-overflow-tooltip
           v-if="!columnNoRoutList.includes('净重')"
@@ -448,6 +499,8 @@
         </el-table-column>
         <el-table-column
           prop="isPrintDelivery"
+          column-key="isPrintDelivery"
+          key="isPrintDelivery"
           label="送货单打印"
           align="center"
           width="100px"
@@ -458,6 +511,7 @@
         <el-table-column
           prop="outGateTime"
           column-key="outGateTimeList"
+          key="outGateTimeList"
           label="出厂时间"
           width="130px"
           show-overflow-tooltip
@@ -466,6 +520,8 @@
         </el-table-column>
         <el-table-column
           prop="smsResultId"
+          column-key="smsResultId"
+          key="smsResultId"
           label="短信发送"
           width="100px"
           align="center"
@@ -475,6 +531,8 @@
         </el-table-column>
         <el-table-column
           prop="arrivalAddress"
+          column-key="arrivalAddress"
+          key="arrivalAddress"
           label="抵达地址"
           width="280px"
           show-overflow-tooltip
@@ -483,6 +541,8 @@
         </el-table-column>
         <el-table-column
           prop="arrivalTime"
+          column-key="arrivalTime"
+          key="arrivalTime"
           label="抵达时间"
           width="150px"
           v-if="!columnNoRoutList.includes('抵达时间')"
@@ -490,6 +550,8 @@
         </el-table-column>
         <el-table-column
           prop="receiptAddress"
+          column-key="receiptAddress"
+          key="receiptAddress"
           label="签收地址"
           width="280px"
           show-overflow-tooltip
@@ -498,6 +560,8 @@
         </el-table-column>
         <el-table-column
           prop="receiptTime"
+          column-key="receiptTime"
+          key="receiptTime"
           label="签收时间"
           width="150px"
           v-if="!columnNoRoutList.includes('签收时间')"
@@ -505,6 +569,8 @@
         </el-table-column>
         <el-table-column
           prop="isAccept"
+          column-key="isAccept"
+          key="isAccept"
           label="异地库接收标志"
           width="100px"
           align="center"
@@ -513,6 +579,8 @@
         </el-table-column>
         <el-table-column
           prop="orderNo"
+          column-key="orderNo"
+          key="orderNo"
           label="运输订单号"
           width="180px"
           align="center"
@@ -522,6 +590,8 @@
 
         <el-table-column
           prop="saler"
+          column-key="saler"
+          key="saler"
           label="业务员"
           align="center"
           v-if="!columnNoRoutList.includes('业务员')"
@@ -529,6 +599,8 @@
         </el-table-column>
         <el-table-column
           prop="shipperName"
+          column-key="shipperName"
+          key="shipperName"
           label="发货单位"
           width="170px"
           align="center"
@@ -538,6 +610,8 @@
         </el-table-column>
         <el-table-column
           prop="consigneeTel"
+          column-key="consigneeTel"
+          key="consigneeTel"
           label="收货客户电话"
           width="120px"
           align="center"
@@ -546,6 +620,8 @@
         </el-table-column>
         <el-table-column
           prop="isSelfMention"
+          column-key="isSelfMention"
+          key="isSelfMention"
           label="是否自提"
           align="center"
           v-if="!columnNoRoutList.includes('是否自提')"
@@ -554,6 +630,8 @@
 
         <el-table-column
           prop="saleOrderNo"
+          column-key="saleOrderNo"
+          key="saleOrderNo"
           label="销售订单号"
           width="200px"
           align="center"
@@ -562,6 +640,8 @@
         </el-table-column>
         <el-table-column
           prop="closeEntryId"
+          column-key="closeEntryId"
+          key="closeEntryId"
           label="金蝶分录ID"
           width="120px"
           show-overflow-tooltip
@@ -570,6 +650,8 @@
         </el-table-column>
         <el-table-column
           prop="updateTime"
+          column-key="updateTime"
+          key="updateTime"
           label="订单变更时间"
           width="120px"
           show-overflow-tooltip
@@ -578,6 +660,8 @@
         </el-table-column>
         <el-table-column
           prop="saleOrderInertUpdateRemark"
+          column-key="saleOrderInertUpdateRemark"
+          key="saleOrderInertUpdateRemark"
           label="销售订单变更记录"
           width="120px"
           show-overflow-tooltip
@@ -586,6 +670,8 @@
         </el-table-column>
         <el-table-column
           prop="orderInsertUpdateRemark"
+          column-key="orderInsertUpdateRemark"
+          key="orderInsertUpdateRemark"
           label="运输订单变更记录"
           width="120px"
           show-overflow-tooltip
@@ -1684,7 +1770,10 @@ export default {
         '排队开始时间',
         '钢材科放行时间',
         '备注',
-        '订单变更时间'
+        '订单变更时间',
+        '异地库接收标志',
+        '销售订单变更记录',
+        '运输订单变更记录'
       ],
       //钢材多拼车辆线路ID
       //索引从1-10为1-10拼路线ID
@@ -2679,6 +2768,7 @@ export default {
     },
     //筛选
     filterChange(obj) {
+      debugger
       //承运商筛选,后续有待优化
       if (typeof obj.carrierList != 'undefined' && obj.carrierList.length > 0) {
         this.filterMap.carrierList = obj.carrierList
@@ -3322,23 +3412,22 @@ export default {
               this.$message.success('变更车牌号成功!')
               this.operation(this.steelMap)
               console.log('更改车牌号之后的变化')
-              console.log(res.data)
-              if (res.data.data.capacityTel != 0) {
-                console.log('进入了这个界面')
-                this.steelMap.capacityTel = res.data.data.capacityTel
-              } else {
-                this.axios
-                  .post(
-                    '/api/v1/ams/matchingDriverTelRecently?capacityNumber=' +
-                      this.steelMap.capacityNo
-                  )
-                  .then(res => {
-                    if (res.data.data != null) {
-                      this.steelMap.capacityTel = res.data.data
-                    }
-                  })
-              }
-              this.updateDriverTel()
+              // console.log(res.data)
+              // if (res.data.data.capacityTel != 0) {
+              //   console.log('进入了这个界面')
+              //   this.steelMap.capacityTel = res.data.data.capacityTel
+              // } else {
+              //   this.axios
+              //     .post(
+              //       '/api/v1/ams/matchingDriverTelRecently?capacityNumber=' +
+              //         this.steelMap.capacityNo
+              //     )
+              //     .then(res => {
+              //       if (res.data.data != null) {
+              //         this.steelMap.capacityTel = res.data.data
+              //       }
+              //     })
+              // }
               this.getSteelReport()
               loading.close()
             } else {
@@ -3386,10 +3475,10 @@ export default {
                     this.steelMap.capacityNo
                 )
                 .then(res => {
-                  if (res.data.data != null) {
-                    this.steelMap.capacityTel = res.data.data
-                    this.updateDriverTel()
-                  }
+                  // if (res.data.data != null) {
+                  //   this.steelMap.capacityTel = res.data.data
+                  //   this.updateDriverTel()
+                  // }
                 })
               this.getSteelReport()
               loading.close()
@@ -4001,14 +4090,10 @@ export default {
         saler = getCookie('loginName')
       }
       if (getCookie('orgCode') == 'shouhuokehu') {
-        console.log('userinfo')
-        console.log(getCookie('userInfo'))
         consigneeLoginName =
           JSON.parse(getCookie('userInfo')).userCode || getCookie('loginName')
         obj.consigneeLoginName = consigneeLoginName
       }
-      console.log('this.input', this.input)
-      console.log('this.input1', this.input1)
       if (this.screen == '客户') {
         consigneeName = this.input
       } else if (this.screen == '承运商') {

+ 458 - 22
src/views/statisticalReport/components/salesLogisticsStatistics/steelTransportReport.vue

@@ -14,7 +14,7 @@
             :picker-options="pickerOptions"
           >
           </el-date-picker>
-          <span>至</span>
+          <!-- <span>至</span>
           <el-date-picker
             v-model="endTime"
             type="date"
@@ -22,7 +22,7 @@
             style="width:140px"
             :picker-options="pickerOptions1"
           >
-          </el-date-picker>
+          </el-date-picker> -->
           <el-button type="primary" class="btn" @click="onclick">
             <i class="el-icon-search"></i>
           </el-button>
@@ -34,68 +34,117 @@
         </el-form-item>
       </el-form>
     </div>
-    <div class="main">
+    <div class="main" id="excelDom">
       <table class="title">
         <th>{{ titleTXT }}钢材运输情况统计表</th>
       </table>
       <div class="null"></div>
-      <el-table>
+      <el-table
+        :data="tableData"
+        ref="tableRef"
+        border
+        :cell-style="cellStyle"
+        :summary-method="getSummaries"
+        show-summary
+      >
         <el-table-column
           prop="carrierDirection"
           label="承运方向"
           align="center"
+          width="100"
+          column-key="carrierDirection"
+          key="carrierDirection"
         >
         </el-table-column>
-        <el-table-column prop="carrierLine" label="承运线路" align="center">
+        <el-table-column
+          prop="carrierLine"
+          label="承运线路"
+          align="center"
+          column-key="carrierLine"
+          key="carrierLine"
+        >
         </el-table-column>
         <el-table-column
           prop="carrier"
           label="承运商"
           align="center"
           width="100"
+          column-key="carrier"
+          key="carrier"
         >
         </el-table-column>
         <el-table-column
           prop="planTruckNumber"
           label="销售下达计划(车)"
           align="center"
+          column-key="planTruckNumber"
+          key="planTruckNumber"
         >
         </el-table-column>
         <el-table-column label="安排运力(车)" align="center">
-          <el-table-column prop="arrageTruckNumber" label="安排" align="center">
+          <el-table-column
+            prop="arrageTruckNumber"
+            label="安排"
+            align="center"
+            column-key="arrageTruckNumber"
+            key="arrageTruckNumber"
+          >
           </el-table-column>
           <el-table-column
             prop="actuallyFinish"
             label="实际完成"
             align="center"
+            column-key="actuallyFinish"
+            key="actuallyFinish"
           >
           </el-table-column>
           <el-table-column
             prop="enFactoryLoading"
             label="进厂待装"
             align="center"
+            column-key="enFactoryLoading"
+            key="enFactoryLoading"
           >
           </el-table-column>
-          <el-table-column prop="unEnfactory" label="未进厂" align="center">
+          <el-table-column
+            prop="unEnfactory"
+            label="未进厂"
+            align="center"
+            column-key="unEnfactory"
+            key="unEnfactory"
+          >
           </el-table-column>
         </el-table-column>
         <el-table-column
           prop="unArragePlanTruckNumber"
           label="欠运力"
           align="center"
+          column-key="unArragePlanTruckNumber"
+          key="unArragePlanTruckNumber"
         >
         </el-table-column>
-        <el-table-column prop="remark" label="备注" align="center">
+        <el-table-column
+          prop="remark"
+          label="备注"
+          align="center"
+          column-key="remark"
+          key="remark"
+        >
         </el-table-column>
       </el-table>
+      <div class="remarkTitle"></div>
+      <table class="title">
+        <th>
+          备注:以上计划不包含自提一车;不包含取消计划;与销售钢材报表过滤条件一致
+        </th>
+      </table>
     </div>
   </div>
 </template>
 <script>
 import { sjTime } from '@/utils/sharedJsFile'
-import table from '../../../../components/DilCommonUI/packages/table/src/table.vue'
+import FileSaver from 'file-saver'
 export default {
-  components: { table },
   data() {
     return {
       pickerOptions: {
@@ -156,24 +205,411 @@ export default {
           }
         ]
       },
-      startTime: new Date(),
-      endTime: new Date(),
-      titleTXT: null
+      startTime: new Date(new Date().getTime() - 86400000),
+      // endTime: new Date(),
+      titleTXT: null,
+      tableData: [],
+      sumList: [
+        'planTruckNumber',
+        'arrageTruckNumber',
+        'actuallyFinish',
+        'enFactoryLoading',
+        'unEnfactory',
+        'unArragePlanTruckNumber'
+      ],
+      spanArr: [],
+      mergeList: ['carrierDirection', 'carrier']
     }
   },
   created() {
-    this.titleTXT = `${new Date(
-      new Date().getTime() - 86400000
-    ).getFullYear()}年${new Date(new Date().getTime() - 86400000).getMonth() +
-      1}月${new Date(
-      new Date().getTime() - 86400000
-    ).getDate()}日08:00 - ${new Date().getFullYear()}年${new Date().getMonth() +
-      1}月${new Date().getDate()}日08:00`
+    this.titleTXT = `${this.startTime.getFullYear()}年${this.startTime.getMonth() +
+      1}月${this.startTime.getDate()}日08:00 - ${new Date(
+      sjTime(this.startTime) + 86400000
+    ).getFullYear()}年${new Date(sjTime(this.startTime) + 86400000).getMonth() +
+      1}月${new Date(sjTime(this.startTime) + 86400000).getDate()}日08:00`
+    this.steelTransportReport()
+  },
+  watch: {
+    startTime() {
+      this.titleTXT = `${this.startTime.getFullYear()}年${this.startTime.getMonth() +
+        1}月${this.startTime.getDate()}日08:00 - ${new Date(
+        sjTime(this.startTime) + 86400000
+      ).getFullYear()}年${new Date(
+        sjTime(this.startTime) + 86400000
+      ).getMonth() + 1}月${new Date(
+        sjTime(this.startTime) + 86400000
+      ).getDate()}日08:00`
+    }
+    // tableData: {
+    //   immediate: true,
+    //   handler() {
+    //     this.$nextTick(() => {
+    //       const tds = this.$refs.tableRef.$el
+    //         .querySelector('.el-table__footer-wrapper')
+    //         .querySelector('.el-table__footer')
+    //       console.log(tds)
+    //       let cell = tds.rows[0].cells
+    //       cell[1].style.display = 'none'
+    //       cell[2].style.display = 'none'
+    //       console.log(cell, 'cell')
+    //       cell[0].colSpan = '3'
+    //     })
+    //   }
+    // }
   },
   mounted() {},
   methods: {
-    exportAllReportToExcel() {},
-    onclick() {}
+    // exportAllReportToExcel() {},
+    exportAllReportToExcel() {
+      let tableTitle = this.titleTXT
+      //let tables = this.$refs.ship;//此处是拿表格document元素,也可以取父div的ref
+      let tables = document.getElementById('excelDom')
+      let table_book = XLSX.utils.table_to_book(tables)
+      console.log('table_book:', table_book)
+      console.log('sheet:', table_book.Sheets.Sheet1)
+      //限制单元格样式范围
+      let rangeList = [
+        'A',
+        'B',
+        'C',
+        'D',
+        'E',
+        'F',
+        'G',
+        'H',
+        'I',
+        'J',
+        'K',
+        'L',
+        'M',
+        'N',
+        'O',
+        'P',
+        'Q',
+        ,
+        'R',
+        'S',
+        'T',
+        'U'
+      ]
+      //得到自定义过滤数组
+      // let filterList = this.exportFilter(table_book.Sheets.Sheet1)
+      // console.log('filterList:', filterList)
+      let flag = true
+      //这里遍历单元格给单元格对象设置属性,s为控制样式的属性
+      Object.keys(table_book.Sheets.Sheet1).forEach(key => {
+        if (key.indexOf('!') < 0 && rangeList.indexOf(this.getCol(key)) >= 0) {
+          table_book.Sheets.Sheet1[key].s = {
+            font: {
+              name: '宋体',
+              sz: 10
+            },
+            alignment: {
+              //对齐方式
+              horizontal: 'center', //水平居中
+              vertical: 'center', //竖直居中
+              wrapText: true //自动换行
+            },
+            border: {
+              // 设置边框
+              top: { style: 'thin' },
+              bottom: { style: 'thin' },
+              left: { style: 'thin' },
+              right: { style: 'thin' }
+            }
+          }
+          //更改数字格式
+          if (flag && table_book.Sheets.Sheet1[key].t == 'n') {
+            table_book.Sheets.Sheet1[key].s.numFmt = '0.00'
+          }
+          //库存三列特殊对待
+          if (
+            table_book.Sheets.Sheet1[key].t == 's' &&
+            table_book.Sheets.Sheet1[key].v &&
+            (table_book.Sheets.Sheet1[key].v.includes('下游港口库存') ||
+              table_book.Sheets.Sheet1[key].v.includes('万港库存') ||
+              table_book.Sheets.Sheet1[key].v.includes('在途货物'))
+          ) {
+            flag = false //标识为不允许更改数字格式
+            table_book.Sheets.Sheet1[key].s = {
+              font: {
+                name: '宋体',
+                sz: 10
+              },
+              alignment: {
+                vertical: 'center',
+                wrapText: true
+              },
+              border: {
+                top: { style: 'thin' },
+                bottom: { style: 'thin' },
+                left: { style: 'thin' },
+                right: { style: 'thin' }
+              }
+            }
+          }
+        }
+      })
+      //表头字体重新设置
+      table_book.Sheets.Sheet1['A1'].s.font = {
+        name: '宋体',
+        sz: 16,
+        bold: true
+      }
+      //画一个简报
+      this.drawExcel(table_book.Sheets.Sheet1)
+      //处理合并行样式
+      this.addRangeBorder(
+        table_book.Sheets.Sheet1['!merges'],
+        table_book.Sheets.Sheet1
+      )
+      console.log('sheet:', table_book.Sheets.Sheet1)
+      //导出
+      let table_write = XLSXStyle.write(table_book, {
+        type: 'binary',
+        bookType: 'xlsx'
+      })
+      try {
+        FileSaver.saveAs(
+          new Blob([this.bta(table_write)], {
+            type: 'application/octet-stream'
+          }),
+          tableTitle + '.xlsx'
+        )
+      } catch (e) {
+        if (typeof console !== 'undefined') console.log(e, table_write)
+      }
+      return table_write
+    },
+
+    onclick() {
+      this.axios
+        .post(
+          '/api/v1/tms/steelTransportReport?startTime=' +
+            sjTime(this.startTime) +
+            '&endTime=' +
+            sjTime(this.startTime)
+        )
+        .then(res => {
+          this.tableData = res.data.data
+        })
+    },
+    drawExcel(sheet) {
+      //画一个进口矿水联运情况简报
+      let style = {
+        font: {
+          name: '宋体',
+          sz: 10
+        },
+        alignment: {
+          //对齐方式
+          horizontal: 'center', //水平居中
+          vertical: 'center', //竖直居中
+          wrapText: true //自动换行
+        },
+        border: {
+          // 设置边框
+          top: { style: 'thin' },
+          bottom: { style: 'thin' },
+          left: { style: 'thin' },
+          right: { style: 'thin' }
+        }
+      }
+      Object.keys(sheet).forEach(key => {
+        if (key.indexOf('!') < 0 && sheet[key].v == '万州港发货信息') {
+          let row = this.getRow(key)
+          console.log('万州港发货信息:', row)
+          //第一行表头
+          sheet['I' + row] = {
+            t: 's',
+            v: '进口矿水联运情况简报',
+            s: style
+          }
+          for (let i = row + 1; i < this.loadTable.length + row + 3; i++) {
+            sheet['I' + i] = {
+              t: 's',
+              v: '',
+              s: style
+            }
+          }
+          //表格合并
+          for (let i = row - 1; i < this.loadTable.length + row + 2; i++) {
+            sheet['!merges'].push({
+              s: {
+                r: i,
+                c: 8
+              },
+              e: {
+                r: i,
+                c: 15
+              }
+            })
+          }
+          return
+        }
+      })
+    },
+    exportFilter(sheet) {
+      //导出过滤方法
+      let keys = []
+      Object.keys(sheet).forEach(key => {
+        if (key.indexOf('!') < 0 && sheet[key].v == '万州港发货信息') {
+          let row = this.getRow(key)
+          console.log('万州港发货信息:', row)
+          for (let i = row; i < this.loadTable.length + row + 3; i++) {
+            keys.push('F' + i)
+          }
+        } else if (
+          key.indexOf('!') < 0 &&
+          sheet[key].v == '控制线等闸船舶动态'
+        ) {
+          let row = this.getRow(key)
+          console.log('控制线等闸船舶动态:', row)
+          for (let i = row; i < row + 2; i++) {
+            keys.push('Q' + i)
+          }
+        }
+      })
+      return keys
+    },
+    addRangeBorder(range, ws) {
+      let cols = [
+        'A',
+        'B',
+        'C',
+        'D',
+        'E',
+        'F',
+        'G',
+        'H',
+        'I',
+        'J',
+        'K',
+        'L',
+        'M',
+        'N',
+        'O',
+        'P',
+        'Q',
+        'R',
+        'S',
+        'T',
+        'U',
+        'V'
+      ]
+      range.forEach(item => {
+        let style = {
+          s: {
+            border: {
+              top: { style: 'thin' },
+              left: { style: 'thin' },
+              bottom: { style: 'thin' },
+              right: { style: 'thin' }
+            }
+          }
+        }
+        // 处理合并行
+        for (let i = item.s.c; i <= item.e.c; i++) {
+          ws[`${cols[i]}${Number(item.e.r) + 1}`] =
+            ws[`${cols[i]}${Number(item.e.r) + 1}`] || style
+          // 处理合并列
+          for (let k = item.s.r + 2; k <= item.e.r + 1; k++) {
+            ws[cols[i] + k] = ws[cols[k] + item.e.r] || style
+          }
+        }
+      })
+      return ws
+    },
+    getRow(key) {
+      return parseInt(key.replace(/[^0-9]/gi, ''))
+    },
+    getCol(key) {
+      let row = key.replace(/[^0-9]/gi, '')
+      return key.replace(row, '')
+    },
+    appendOne(Sheet, row) {
+      //从后面新增1行,并行合并
+      let seArr = Sheet['!fullref'].split(':')
+      let length = parseInt(seArr[1].replace(/[^0-9]/gi, ''))
+      let endCol = seArr[1].replace(length, '')
+      //新增行
+      length++
+      Sheet['A' + length] = {
+        t: 's',
+        v: row
+      }
+      Sheet['!fullref'] = seArr[0] + ':' + endCol + length
+      Sheet['!ref'] = seArr[0] + ':' + endCol + length
+      //行合并
+      Sheet['!merges'].push({
+        s: {
+          c: 0,
+          r: length - 1
+        },
+        e: {
+          c: 21,
+          r: length - 1
+        }
+      })
+      return Sheet
+    },
+    steelTransportReport() {
+      this.axios
+        .post(
+          '/api/v1/tms/steelTransportReport?startTime=' +
+            sjTime(this.startTime) +
+            '&endTime=' +
+            sjTime(this.startTime)
+        )
+        .then(res => {
+          this.tableData = res.data.data
+        })
+    },
+    cellStyle({ row, column, rowIndex, columnIndex }) {
+      if (
+        column.property == 'arrivalAddress' ||
+        column.property == 'receiptAddress'
+      ) {
+        return { height: '40px' }
+      } else {
+        return { height: '40px' }
+      }
+    },
+    getSummaries(param) {
+      const { columns, data } = param
+      const sums = []
+      columns.forEach((column, index) => {
+        console.log(column, index)
+        //如果索引值为0,则展示‘合计’
+        if (index === 0) {
+          sums[index] = '合计'
+          return
+        }
+        if (index === 1) {
+          return
+        }
+        if (this.sumList.includes(column.property)) {
+          const values = data.map(item => Number(item[column.property]))
+          if (!values.every(value => isNaN(value))) {
+            sums[index] = values.reduce((prev, curr) => {
+              const value = Number(curr)
+              if (!isNaN(value)) {
+                return prev + curr
+              } else {
+                return prev
+              }
+            }, 0)
+            sums[index] = sums[index]
+            // console.log("sums");
+            // console.log(sums[index]);
+          } else {
+            sums[index] = 'N/A'
+          }
+        }
+        //遍历数组,找到符合条件的列
+      })
+      return sums
+    }
   }
 }
 </script>