Browse Source

提交代码

zyf 2 năm trước cách đây
mục cha
commit
ca9d0680a3
29 tập tin đã thay đổi với 2819 bổ sung705 xóa
  1. 2 2
      build/utils.js
  2. 9 2
      config/index.js
  3. 1 1
      package.json
  4. 3 0
      src/components/DilCommonUI/packages/mergeRowTable/src/mergeRowTable.vue
  5. 0 7
      src/components/DilCommonUI/packages/table/src/table.vue
  6. 10 2
      src/components/main.vue
  7. 132 91
      src/views/ADMINISTRATORS/components/ADMINISTRATORS1.vue
  8. 4 3
      src/views/RMS/components/addContractPrice.vue
  9. 22 5
      src/views/TMS/components/bmsship/detailsStatement.vue
  10. 120 2
      src/views/WMS/components/port_deposit/loadPortStock.vue
  11. 4 0
      src/views/appoint/components/saleContract/addSaleOrder.vue
  12. 159 22
      src/views/appoint/components/saleContract/addTransportPrice.vue
  13. 4 0
      src/views/appoint/components/saleContract/editSaleOrder.vue
  14. 2 1
      src/views/appoint/components/saleContract/saleOrderSteel.vue
  15. 270 261
      src/views/inward/components/inwardSettlement/detailOrder.vue
  16. 5 2
      src/views/sale/components/dilNotice/addNotice.vue
  17. 3 1
      src/views/sale/components/dilNotice/addNotice1.vue
  18. 3 1
      src/views/sale/components/dilNotice/addNotice2.vue
  19. 15 4
      src/views/sale/components/dilNotice/editNotice.vue
  20. 1 2
      src/views/sale/components/dilNotice/getNoticeById.vue
  21. 1 0
      src/views/statisticalReport/app.html
  22. 75 44
      src/views/statisticalReport/app.js
  23. 427 0
      src/views/statisticalReport/components/salesLogisticsStatistics/currentLocation.vue
  24. 847 0
      src/views/statisticalReport/components/salesLogisticsStatistics/mapTest.vue
  25. 12 6
      src/views/statisticalReport/components/salesLogisticsStatistics/saleSteelAllReport.vue
  26. 390 107
      src/views/statisticalReport/components/salesLogisticsStatistics/saleSteelReports.vue
  27. 151 0
      src/views/statisticalReport/components/salesLogisticsStatistics/slider.vue
  28. 147 139
      src/views/statisticalReport/router/index.js
  29. 0 0
      static/lib/element-ui/element-ui.css

+ 2 - 2
build/utils.js

@@ -15,8 +15,8 @@ const devPathSrc = path.resolve(__dirname, '../../../src') // node_modules应用
 // ['index','appoint','configManager','homepage',''inward,'queue','RMS','sale','serviceManager','SporadicManage'
 //       统计报表       组织机构/系统管理 采购  仓储
 //  'statisticalReport','systemConfig','TMS','WMS','workFlow']
-//let devModules = ["index", "statisticalReport", "appoint", "sale","AMS","TMS",'queue','WMS'];
-let devModules = ['all']
+let devModules = ["index", "statisticalReport", "appoint", "sale","AMS","TMS",'queue','WMS'];
+//let devModules = ['all']
 
 if (pathSrc.indexOf('node_modules') > -1) {
   devModules = require('../../../cors.js').devModules

+ 9 - 2
config/index.js

@@ -33,6 +33,13 @@ let proxyTable = {
       '^/icore.icp.web/pass/auth/login': ''
     }
   },
+  '/icore-api/v1': {
+    target: 'http://172.16.33.166:8088/api/v1/truckTms', // target: "http://localhost:8080", // target: "http://192.168.1.109:8080",
+    ws: true,
+    pathRewrite: {
+      '^/icore-api/v1': ''
+    }
+  },
   '/icore-api': {
     target: 'http://172.16.33.166:9001',
     changeOrigin: true,
@@ -65,8 +72,8 @@ let proxyTable = {
   },
   // 所有数据的请求域名地址
   '/api/v1': {
-    target: 'http://172.16.33.166:80',
-    //target: 'http://localhost:8080',
+    //target: 'http://172.16.33.166:80',
+    target: 'http://localhost:8080',
     // target: "http://192.168.1.101:8080",
     ws: true,
     pathRewrite: {

+ 1 - 1
package.json

@@ -34,7 +34,7 @@
     "file-saver": "^1.3.8",
     "graphql": "^14.1.1",
     "graphql-tag": "^2.10.1",
-    "icore-sdk": "1.0.1-alpha.65",
+    "icore-sdk": "1.0.1-alpha.66",
     "json-schema-editor-vue": "1.2.5",
     "json2xml": "^0.1.3",
     "jspdf": "^2.5.1",

+ 3 - 0
src/components/DilCommonUI/packages/mergeRowTable/src/mergeRowTable.vue

@@ -23,6 +23,7 @@
       element-loading-spinner="el-icon-loading"
       :isHeigth="isHeigth"
       :shiyHeigth="shiyHeigth"
+      :expand-row-keys="expandRowKeys"
     >
       <!-- 多选列 -->
       <el-table-column
@@ -188,6 +189,8 @@ export default {
     maxHeight: {
       default: '500px'
     },
+    //行展开的key数组,用于控制行是否展开
+    expandRowKeys:[],
     // 是否启用排序
     sortable: {
       default: 'custom'

+ 0 - 7
src/components/DilCommonUI/packages/table/src/table.vue

@@ -22,8 +22,6 @@
       element-loading-spinner="el-icon-loading"
       :isHeigth="isHeigth"
       :shiyHeigth="shiyHeigth"
-      :id="id"
-      :individual-panel="individualPanel"
       :summary-method="getSummaries"
       :show-summary="isshowSummary"
     >
@@ -286,12 +284,7 @@ export default {
     //合计
     //表尾合计行
     getSummaries(param) {
-      console.log(param);
       const { columns, data } = param;
-      console.log("columns");
-      console.log(columns);
-      console.log("data");
-      console.log(data);
       const sums = [];
       columns.forEach((column, index) => {
         //如果索引值为0,则展示‘合计’

+ 10 - 2
src/components/main.vue

@@ -659,20 +659,23 @@
       </div>
     </el-dialog>
 
-    //通知弹窗
+    <!--通知弹窗-->
     <el-dialog
       :visible.sync="centerDialogVisible"
     >
       <div style="margin-left: 300px;font-size: 20px">
         <h1>{{noticedata1.noticetitle}}</h1>
       </div>
+      <div style="height: 10px"></div>
       <div style="margin-left: 30px">
         <i class="el-icon-document"></i>{{noticedata1.noticecontent}}
       </div>
+      <el-divider></el-divider>
       <div style="margin-left: 30px">
         <i class="el-icon-user-solid"></i>
         {{noticedata1.insertusername}}
       </div>
+      <el-divider></el-divider>
       <div style="margin-left: 30px">
         <i></i>{{noticedata1.inserttime}}
       </div>
@@ -2812,7 +2815,12 @@ export default {
   }
   ::-webkit-scrollbar-thumb {
     //滚动条颜色和圆角
-    background-color: #dbd9d9;
+    background-color: #dfe0e0;
+    border-radius: 3px;
+  }
+  ::-webkit-scrollbar-track-piece {
+    // border: 2px solid #000;
+    background-color: #f2f6f8;
     border-radius: 3px;
   }
 }

+ 132 - 91
src/views/ADMINISTRATORS/components/ADMINISTRATORS1.vue

@@ -326,20 +326,58 @@
               </div>
             </div>
           </el-tab-pane>
+          <el-tab-pane label="副产品或焦炭超重允许出厂" name="seventh">
+            <div class="admin2">
+              <div class="carrier from">
+                <el-form
+                  :inline="true"
+                  class="demo-form-inline"
+                  label-width="80px"
+                >
+                  <el-form-item label="车牌号:">
+                    <el-autocomplete
+                      class="inline-input"
+                      v-model="capacityName"
+                      :fetch-suggestions="querySearchCapacity"
+                      placeholder="车牌号"
+                      :trigger-on-focus="false"
+                      @select="handleSelectCapacity"
+                    >
+                      <template slot-scope="{ item }">
+                        <div class="name">{{ item.capacityNumber }}</div>
+                      </template>
+                    </el-autocomplete>
+                  </el-form-item>
+                </el-form>
+              </div>
+              <div class="poundNo from">
+                <span class="text">运输订单号:</span>
+                <el-input v-model="orderNumber" disabled></el-input>
+              </div>
+              <div class="button_box">
+                <el-button
+                  type="primary"
+                  @click="updateCanwork"
+                  :disabled="disabled"
+                  >确认</el-button
+                >
+              </div>
+            </div>
+          </el-tab-pane>
         </el-tabs>
       </div>
     </template>
   </div>
 </template>
 <script>
-import { toDateString, toDateNo } from "../app.js";
+import { toDateString, toDateNo } from '../app.js'
 export default {
   data() {
     return {
       orderNumber: null,
       first: true,
       second: true,
-      activeName: "first",
+      activeName: 'first',
       capacityName: null,
       stateCapacity: null,
       materialList: [],
@@ -364,127 +402,130 @@ export default {
       gatePostList: [],
       enFactoryGatepost: null,
       gatePostId: null
-    };
+    }
   },
   created() {
-    this.value1 = new Date();
-    this.value2 = new Date();
+    this.value1 = new Date()
+    this.value2 = new Date()
   },
   mounted() {
-    this.information();
+    this.information()
   },
   methods: {
+    updateCanwork() {
+      console.log(this.capacityName)
+    },
     onchangeGatepost(value) {
-      console.log(value);
+      console.log(value)
       this.gatePostList.forEach(e => {
         if (e.gatepostName == value) {
-          this.gatePostId = e.gatePostId;
+          this.gatePostId = e.gatePostId
         }
-      });
+      })
     },
     enFactoryResultByPDA() {
       let map = {
-        orderNumber: this.orderNumber + " ",
+        orderNumber: this.orderNumber + ' ',
         gatepostId: this.gatePostId
-      };
-      this.axios.post("");
+      }
+      this.axios.post('')
     },
     allowEnfactoryClick() {},
     queueClick() {
       this.axios
-        .post("/api/v1/qms/addQueueResult?vno=" + this.capacityName + "_")
+        .post('/api/v1/qms/addQueueResult?vno=' + this.capacityName + '_')
         .then(res => {
           if (res.data.code == 200) {
-            this.$message.success("操作成功");
-            this.$router.go(0);
+            this.$message.success('操作成功')
+            this.$router.go(0)
           }
-        });
+        })
     },
     deleteMoreResult() {
-      console.log(this.orderNumber);
+      console.log(this.orderNumber)
       this.axios
-        .post("/api/v1/bp/deleteErrorResult?orderNumber=" + this.orderNumber)
+        .post('/api/v1/bp/deleteErrorResult?orderNumber=' + this.orderNumber)
         .then(res => {
-          if (res.data.code == "200") {
-            this.$message.success("删除成功");
+          if (res.data.code == '200') {
+            this.$message.success('删除成功')
           }
-        });
+        })
     },
     updateLineSqe() {
       let map = {
         orderId: this.orderId,
         orderLineSqe: this.lineQuence
-      };
-      this.axios.post("/api/v1/uc/updateLineSqe", map).then(res => {
-        console.log(res.data);
-        if (res.data.code == "200") {
-          this.$message.success("修改路段顺序号成功");
-          this.$router.go(0);
+      }
+      this.axios.post('/api/v1/uc/updateLineSqe', map).then(res => {
+        console.log(res.data)
+        if (res.data.code == '200') {
+          this.$message.success('修改路段顺序号成功')
+          this.$router.go(0)
         }
-      });
+      })
     },
     oninput() {},
     onchange() {
       if (this.switchValue) {
-        this.first = true;
-        this.second = true;
+        this.first = true
+        this.second = true
       } else {
-        this.second = false;
+        this.second = false
       }
     },
     onchange1() {
-      console.log(this.truckCalFirst);
+      console.log(this.truckCalFirst)
       this.truckCalFirstList.forEach(e => {
         if (this.truckCalFirst == e.value) {
-          this.truckCalFirstNum = e.label;
+          this.truckCalFirstNum = e.label
         }
-      });
+      })
     },
     onchange2() {
       this.truckCalSecondList.forEach(e => {
         if (this.truckCalSecond == e.value) {
-          this.truckCalSecondNum = e.label;
+          this.truckCalSecondNum = e.label
         }
-      });
+      })
     },
     //运力弹出层
     handleSelectCapacity(item) {
-      this.capacityId = item.capacityId;
-      this.capacityName = item.capacityNumber;
+      this.capacityId = item.capacityId
+      this.capacityName = item.capacityNumber
       this.axios
-        .get("/api/v1/uc/getOrderNumber?capacityId=" + this.capacityId)
+        .get('/api/v1/uc/getOrderNumber?capacityId=' + this.capacityId)
         .then(res => {
-          if (res.data.code == "200") {
-            this.orderId = res.data.data.orderId;
-            this.orderNumber = res.data.data.orderNumber;
+          if (res.data.code == '200') {
+            this.orderId = res.data.data.orderId
+            this.orderNumber = res.data.data.orderNumber
             this.axios
-              .get("/api/v1/uc/getMaterialIdByOrderId?orderId=" + this.orderId)
+              .get('/api/v1/uc/getMaterialIdByOrderId?orderId=' + this.orderId)
               .then(res => {
-                if (res.data.code == "200") {
-                  this.materialList = res.data.data;
+                if (res.data.code == '200') {
+                  this.materialList = res.data.data
                 }
-              });
+              })
           }
-        });
+        })
     },
     //以下是运力边输边查搜索
     querySearchCapacity(queryString, cb) {
       if (queryString.length < 3) {
-        return;
+        return
       }
       this.axios
-        .get("/api/v1/uc/getCapacityNumber?index=" + queryString)
+        .get('/api/v1/uc/getCapacityNumber?index=' + queryString)
         .then(res => {
-          if (res.data.code == "200") {
-            var restaurantsCarrier = res.data.data;
-            console.log(restaurantsCarrier, "restaurantsCarrier");
+          if (res.data.code == '200') {
+            var restaurantsCarrier = res.data.data
+            console.log(restaurantsCarrier, 'restaurantsCarrier')
             var results = queryString
               ? restaurantsCarrier.filter(this.createFilterCarrier(queryString))
-              : restaurantsCarrier;
+              : restaurantsCarrier
             // 调用 callback 返回建议列表的数据
-            cb(results);
+            cb(results)
           }
-        });
+        })
     },
     createFilterCarrier(queryString) {
       return restaurantsCarrier => {
@@ -492,22 +533,22 @@ export default {
           restaurantsCarrier.capacityNumber
             .toLowerCase()
             .indexOf(queryString.toLowerCase()) > -1
-        );
-      };
+        )
+      }
     },
     //以上是承运商边输边查搜索
     information() {
-      this.axios.get("/api/v1/uc/getAllCalculateMes").then(res => {
-        this.truckCalFirstList = res.data;
-        this.truckCalSecondList = res.data;
-      });
-      this.axios.get("/api/v1/uc/getAllGatepost").then(res => {
-        console.log(res);
-        this.gatePostList = res.data;
-      });
+      this.axios.get('/api/v1/uc/getAllCalculateMes').then(res => {
+        this.truckCalFirstList = res.data
+        this.truckCalSecondList = res.data
+      })
+      this.axios.get('/api/v1/uc/getAllGatepost').then(res => {
+        console.log(res)
+        this.gatePostList = res.data
+      })
     },
     onClickConfirm() {
-      this.poundNo = "jlbl" + toDateNo(new Date());
+      this.poundNo = 'jlbl' + toDateNo(new Date())
       if (this.switchValue) {
         if (
           this.orderNumber == null ||
@@ -519,8 +560,8 @@ export default {
           this.value2 == null ||
           this.materialId == null
         ) {
-          this.$message.warning("请填写所有值!!!");
-          return;
+          this.$message.warning('请填写所有值!!!')
+          return
         }
       } else {
         if (
@@ -530,63 +571,63 @@ export default {
           this.value1 == null ||
           this.materialId == null
         ) {
-          this.$message.warning("请填写所有值!!!");
-          return;
+          this.$message.warning('请填写所有值!!!')
+          return
         }
       }
       let mapFirst = {
         orderNumber: this.orderNumber,
         resultTareCalculateNumber: this.truckCalFirstNum,
-        resultTareWeight: this.firstWeight + "",
+        resultTareWeight: this.firstWeight + '',
         resultTareWeightTime: toDateString(this.value1),
         resultPoundNo: this.poundNo,
-        materialId: this.materialId + ""
-      };
+        materialId: this.materialId + ''
+      }
       //如果首次大于二次,那么是先毛后皮,首次放在毛重上面,二次放在皮重上面
       if (this.firstWeight >= this.secondWeight) {
         var mapSecond = {
           orderNumber: this.orderNumber,
           resultTareCalculateNumber: this.truckCalSecondNum,
           resultCrossCalculateNumber: this.truckCalFirstNum,
-          resultTareWeight: this.secondWeight + "",
-          resultCrossWeight: this.firstWeight + "",
+          resultTareWeight: this.secondWeight + '',
+          resultCrossWeight: this.firstWeight + '',
           resultNetWeight:
-            Math.abs(this.firstWeight - this.secondWeight).toFixed(2) + "",
+            Math.abs(this.firstWeight - this.secondWeight).toFixed(2) + '',
           resultTareWeightTime: toDateString(this.value2),
           resultCrossWeightTime: toDateString(this.value1),
           resultPoundNo: this.poundNo,
-          materialId: this.materialId + ""
-        };
+          materialId: this.materialId + ''
+        }
       } else {
         //如果首次小于二次,那么是先皮后毛,首次放在皮重上面,二次放在毛重上面
         var mapSecond = {
           orderNumber: this.orderNumber,
           resultTareCalculateNumber: this.truckCalFirstNum,
           resultCrossCalculateNumber: this.truckCalSecondNum,
-          resultTareWeight: this.firstWeight + "",
-          resultCrossWeight: this.secondWeight + "",
+          resultTareWeight: this.firstWeight + '',
+          resultCrossWeight: this.secondWeight + '',
           resultNetWeight:
-            Math.abs(this.secondWeight - this.firstWeight).toFixed(2) + "",
+            Math.abs(this.secondWeight - this.firstWeight).toFixed(2) + '',
           resultTareWeightTime: toDateString(this.value1),
           resultCrossWeightTime: toDateString(this.value2),
           resultPoundNo: this.poundNo,
-          materialId: this.materialId + ""
-        };
+          materialId: this.materialId + ''
+        }
       }
-      var arr = [];
+      var arr = []
       if (this.switchValue) {
-        arr.push(mapSecond);
+        arr.push(mapSecond)
       } else {
-        arr.push(mapFirst);
+        arr.push(mapFirst)
       }
-      this.axios.post("/api/v1/uc/recordingWeightResult", arr).then(res => {
-        this.$message.success("补录计量实绩成功");
-        this.$router.go(0);
-      });
+      this.axios.post('/api/v1/uc/recordingWeightResult', arr).then(res => {
+        this.$message.success('补录计量实绩成功')
+        this.$router.go(0)
+      })
     },
     onClickCancel() {}
   }
-};
+}
 </script>
 <style lang="scss">
 .admin {

+ 4 - 3
src/views/RMS/components/addContractPrice.vue

@@ -13,7 +13,7 @@
                 <el-input v-model="form.unitPrice" type="number"></el-input>
             </el-form-item>
             <el-form-item label="港口">
-              <el-select v-model="form.portId" filterable>
+              <el-select v-model="form.portId" filterable multiple>
                 <el-option
                   v-for="port in ports"
                   :key="port.portId"
@@ -56,7 +56,7 @@ export default {
   data() {
     return {
       form: {
-        portId:null,
+        portId:[],
         contractNo:null,
         unitPrice:null,
         startTime:null,
@@ -123,9 +123,10 @@ export default {
         }).then(()=>{
           let copy=this.$route.query;
           console.log("copy:",copy);
+          //如果有值,则复制新增
           if(copy){
             if(copy.portId){
-              copy.portId=copy.portId * 1;
+              copy.portId=[copy.portId * 1];
             }
             this.$set(this,"form",copy);
           }

+ 22 - 5
src/views/TMS/components/bmsship/detailsStatement.vue

@@ -25,7 +25,7 @@
           </el-date-picker>
         </el-form-item>
         <el-form-item>
-          <el-button @click="onClick">查询</el-button>
+          <el-button @click="getNoDetailsStament">查询</el-button>
         </el-form-item>
         <el-form-item>
           <el-button type="primary" @click="exportAllReportToExcel"
@@ -73,8 +73,8 @@
             :data="tableData"
             ref="tableRef"
             border
-            stripe
-            style="width: 100%; margin-top: 20px"
+            style="width: 100%; margin-top: 0px"
+            fit
             max-height="500px"
             :row-style="{ height: '30px' }"
             :cell-style="{ fontWeight: '700' }"
@@ -138,6 +138,9 @@
               width="100px"
               align="center"
             >
+             <template slot-scope="scope">
+                {{(scope.row.loadingProportion*100).toFixed(2)}}%
+              </template>
             </el-table-column>
             <el-table-column
               prop="realTonnage"
@@ -204,7 +207,7 @@
             <el-table-column
               prop="feeMake"
               label="本月实际开票金额"
-              width="100px"
+              
               align="center"
             >
             </el-table-column>
@@ -373,6 +376,7 @@
 </template>
 <script>
 import { getCookie } from "@/utils/util.js";
+import { sjTime } from "@/utils/sharedJsFile";
 export default {
   data() {
     return {
@@ -494,7 +498,20 @@ export default {
     onClick() {},
     //获取未结算账单数据
     getNoDetailsStament() {
-      this.axios.post("/api/v1/bms/getShipFeeStatement").then(res => {
+      let startTime = null;
+      let endTime = null;
+      let map={con:this.shipName};
+      if (this.startTime) {
+        startTime = sjTime(this.startTime);
+      }
+      if (this.endTime) {
+        endTime = sjTime(this.endTime);
+      }
+      if(startTime && endTime && startTime < endTime){
+          map.startTime=startTime;
+          map.endTime=endTime;
+      }
+      this.axios.post("/api/v1/bms/getShipFeeStatement",map).then(res => {
         console.log(res.data.data);
         this.tableData = res.data.data;
         this.computedTableData(this.tableData);

+ 120 - 2
src/views/WMS/components/port_deposit/loadPortStock.vue

@@ -19,7 +19,7 @@
           font-size: 15px;
           font-weight: bold;
         "
-        >万州港合计吨位</span
+        >万州港合计吨位(截止至:{{now}})</span
       >
       <el-input
         v-model="totalNumber"
@@ -53,7 +53,45 @@
       :shiyHeigth="shiyHeigth"
       @func="func"
       :pageSize="pageSize"
+      :expandRowKeys="expandRowKeys"
     >
+    <el-table-column fixed="right" label="点后出入库详情" width="120">
+          <template slot-scope="scope">
+              <el-button @click="detailclick1(scope.row)" type="text" size="small">
+                入库详情
+              </el-button>
+              <el-button @click="detailclick2(scope.row)" type="text" size="small">
+                出库详情
+              </el-button>
+          </template>
+    </el-table-column>
+    <el-table-column type="expand" width="1">
+          <template slot-scope="props">
+            <el-form label-position="center" inline class="demo-table-expand" style="margin-left:30%">
+              <div v-if="false">{{ props }}</div>
+              <div>
+                <el-table :data="inbounds" border v-show="tableStatus==1">
+                  <el-table-column
+                    v-for="(item, i) in tableHead1"
+                    :key="i"
+                    :prop="item.prop"
+                    :label="item.label"
+                    :width="item.width"
+                  ></el-table-column>
+                </el-table>
+                 <el-table :data="outbounds" border v-show="tableStatus==2">
+                 <el-table-column
+                    v-for="(item, i) in tableHead2"
+                    :key="i"
+                    :prop="item.prop"
+                    :label="item.label"
+                    :width="item.width"
+                  ></el-table-column>
+                </el-table>
+              </div>
+            </el-form>
+          </template>
+    </el-table-column>
     </mergeRowTable>
   </div>
 </template>
@@ -76,18 +114,98 @@ export default {
         // 表格请求数据的地址
         requestUrl: "/api/v1/wmsh/getLoadPortStockList?apiId=158",
         comparison:"materialName",
-        columnIndexs:[0,1,2,3]
+        columnIndexs:[0,1,2]
       },
       option2: {
         requestUrl: "/api/v1/wmsh/getLoadPortStockByMaterialName?apiId=493",
       },
+      tableStatus:0,
+      focusRow:null,
+      inbounds:[],
+      outbounds:[],
+      expandRowKeys:[],
+      now:null,
+      tableHead1:[
+        {
+          prop: "resultMaterialNumber",
+          label: "入库吨位",
+          width: 150
+        },
+        {
+          prop: "insertTime",
+          label: "入库时间",
+          width: 150
+        }
+      ],
+      tableHead2:[
+         {
+          prop: "resultMaterialNumber",
+          label: "出库吨位",
+          width: 150
+        },
+        {
+          prop: "wagonNumber",
+          label: "出库车皮数",
+          width: 150
+        },
+        {
+          prop: "insertTime",
+          label: "出库时间",
+          width: 150
+        }
+      ]
     };
   },
   created() {
     this.option.requestUrl =
       "/api/v1/wmsh/getLoadPortStockList?apiId=158&i=" + new Date();
+    let now=new Date();
+    let hour=now.getHours()
+    if(hour>=8 && hour < 18){
+      now.setHours(8);
+    }else{
+      now.setHours(18);
+    }
+    now.setMinutes(0);
+    now.setSeconds(0);
+    this.now=now.toLocaleString();
   },
   methods: {
+    detailclick1(row){
+      console.log("row",row);
+      let flag=this.focusRow==row && this.tableStatus==1;//是否关闭
+       this.axios.post("/api/v1/wmsh/findInboundDetail", row).then(res => {
+        console.log("res", res);
+        this.inbounds = res.data.data;
+        this.expandRowKeys=[];//清空
+      }).then(()=>{
+        this.tableStatus=1;
+        if(!flag){
+          this.$refs.excelDom.toggleRowExpansion(row);
+          this.focusRow=row;
+        }else{
+          this.focusRow=null;
+        }
+      });
+    },
+    detailclick2(row){
+      console.log("row",row);
+      let flag=this.focusRow==row && this.tableStatus==2;
+      console.log(flag);
+      this.axios.post("/api/v1/wmsh/findOutboundDetail", row).then(res => {
+        console.log("res", res);
+        this.outbounds = res.data.data;
+        this.expandRowKeys=[]
+      }).then(()=>{
+        this.tableStatus=2;
+        if(!flag){
+          this.$refs.excelDom.toggleRowExpansion(row);
+          this.focusRow=row;
+        }else{
+          this.focusRow=null;
+        }
+      });
+    },
     func(res) {
       console.log("aaa" + res);
       var resultActualInstallations = 0;

+ 4 - 0
src/views/appoint/components/saleContract/addSaleOrder.vue

@@ -889,6 +889,10 @@ export default {
         {
           values1: 'hnht',
           label1: '海南瀚途贸易有限公司'
+        },
+        {
+          values1: 'cdxc',
+          label1: '成都兴城道成物流有限公司'
         }
       ],
       values1: 'dzgt',

+ 159 - 22
src/views/appoint/components/saleContract/addTransportPrice.vue

@@ -8,34 +8,16 @@
       </div>
       <div id="liulan">
           <el-button type="primary" class="btn" @click="oilPriceFormulaClick">浏览</el-button>
-          <el-button type="primary" class="btn1" @click="ondrawerOut">选择</el-button>
+          <el-button type="primary" class="btn1" @click="ondrawerOut">浏览</el-button>
           <!-- <el-button type="primary" class="btn1" @click="addressClick">浏览</el-button> -->
       </div>
     </div>
     <div class="elForm">
       <el-form :inline="true" class="demo-form-inline" label-width="80px">
-        <el-form-item label="所属承运商">
-          <el-autocomplete
-            class="inline-input"
-            v-model="state"
-            :fetch-suggestions="querySearch"
-            placeholder="请输入承运商名称"
-            :trigger-on-focus="false"
-            @select="handleSelect"
-          >
-            <template slot-scope="{ item }">
-              <div class="name" v-if="item.carrierName">
-                {{ item.carrierName }}
-              </div>
-            </template>
-          </el-autocomplete>
-        </el-form-item>
+        <el-button type="primary" id="cysbutton" @click="ondrawerOutcys">浏览所属承运商</el-button>
       </el-form>
     </div>
-    <div class="button_box">
-      <el-button @click="cancel">取消</el-button>
-      <el-button type="primary" @click="makeSure">确定</el-button>
-    </div>
+
     <!-- 油价联动公式模态框 -->
     <el-drawer
       title="请选择油价联动公式"
@@ -107,6 +89,80 @@
       </div>
     </el-dialog>
 
+    <!-- 承运商模态框 -->
+    <el-drawer
+      title="选择承运商"
+      :visible.sync="drawer"
+      direction="rtl"
+      size="40%"
+      :show-close="false"
+    >
+      <el-input
+        placeholder="请输入内容"
+        v-model="index"
+        style="margin-top: 10px; margin-left: 20px;width:250px"
+        clearable
+      >
+      </el-input
+      ><el-button
+      type="primary"
+      class="btn"
+      @click="onclickCarrier"
+      style="margin-left: 4px;"
+    >
+      <i class="el-icon-search"></i>查询
+    </el-button>
+      <!-- <el-button @click="open">取消</el-button> -->
+      <el-button type="primary" @click="selectMakeSure">确定</el-button>
+      <div class="tablecls">
+        <!-- 查询所有的承运商 -->
+        <dilTable
+          v-bind.sync="carrier"
+          @selection-change="currentRadioChangecys"
+          :drawer="drawer"
+        >
+        </dilTable>
+      </div>
+    </el-drawer>
+
+    <!--  所属承运商表格  -->
+    <div class="selectionTable from">
+      <el-table
+        :data="selectionList"
+        border
+        style="width: 100%"
+        highlight-current-row
+      >
+        <el-table-column type="index" label="序号" width="50">
+        </el-table-column>
+        <el-table-column
+          v-for="(item, i) in tableTop"
+          :key="i"
+          :prop="item.prop"
+          :label="item.label"
+          :width="item.width"
+          align="center"
+          show-overflow-tooltip
+        >
+        </el-table-column>
+        <!-- 操作列 -->
+        <el-table-column fixed="right" label="操作" width="100">
+          <template slot-scope="scope">
+            <el-button
+              @click="deleteRow(scope.$index)"
+              type="text"
+              icon="el-icon-close"
+              size="big"
+            ></el-button>
+          </template>
+        </el-table-column>
+      </el-table>
+    </div>
+
+    <div class="button_box">
+      <el-button @click="cancel">取消</el-button>
+      <el-button type="primary" @click="makeSure">确定</el-button>
+    </div>
   </div>
 </template>
 
@@ -117,6 +173,22 @@ export default {
   components: { PageTitle },
   data() {
     return {
+      carrierIdArray:[],
+      tableTop: [
+        {
+          prop: "carrierName",
+          label: "承运商"
+        }
+      ],
+      selectionList: [],
+      carrierTypes:[],
+      carrier: {
+        requestUrl: "",
+        selectionType: "select"
+      },
+      //是否显示承运商模态框
+      drawer: false,
+      index: "",
       //具体收货地址
       place:null,
       //承运商名称
@@ -211,6 +283,68 @@ export default {
     this.getAllProvince();
   },
   methods: {
+    //点击删除按钮删除当前点击的对象
+    deleteRow(index) {
+      this.selectionList.splice(index, 1);
+    },
+    ondrawerOutcys(){
+      this.carrier.requestUrl =
+        "/api/v1/uc/getCarrierListByLike?apiId=412&i=" + new Date();
+      this.drawer = true;
+    },
+    currentRadioChangecys(selection) {
+      this.carrierTypes=[];
+      for (let i = 0; i < selection.length; i++) {
+        if (this.carrierTypes.indexOf(selection[i]) === -1) {
+          this.carrierTypes.push(selection[i]);
+        }
+      }
+      console.log("this.carrierTypes "+JSON.stringify(this.carrierTypes));
+    },
+    //承运商确定按钮
+    selectMakeSure() {
+      var fatherNum;
+      var sonNum;
+      if (this.selectionList.length > this.carrierTypes.length) {
+        fatherNum=this.selectionList
+        sonNum=this.carrierTypes
+      }else{
+        fatherNum=this.carrierTypes
+        sonNum=this.selectionList
+      }
+      var breaked = false;
+      for (let i = 0; i < fatherNum.length; i++) {
+        for (let j = 0; j <sonNum.length; j++) {
+          if (fatherNum[i].carrierName==sonNum[j].carrierName){
+            this.$message({
+              type: "info",
+              message: "已有【"+sonNum[j].carrierName+"】承运商,无法重复添加~",
+            })
+            breaked = true;
+            break;
+          }
+        }
+        if (breaked) {
+          break;
+        }
+      }
+      if (breaked) {
+        return
+      }
+      for (let i = 0; i < this.carrierTypes.length; i++) {
+          this.selectionList.push(this.carrierTypes[i])
+      }
+      this.index = null;
+      this.drawer = false;
+    },
+    //模糊查询承运商
+    onclickCarrier() {
+      this.carrier.requestUrl =
+        "/api/v1/uc/getCarrierListByLike?apiId=412&index=" +
+        this.index +
+        "&i=" +
+        new Date();
+    },
     func(res){
         this.selectLineLoading = false;
         this.isKuang = false;
@@ -373,9 +507,12 @@ export default {
       }
     },
     makeSure() {
+      for (let i = 0; i < this.selectionList.length; i++) {
+        this.carrierIdArray.push(this.selectionList[i].carrierId)
+      }
       let mapValue={
         shipperId : this.form1.shipperId,
-        carrierId : this.carrierIds,
+        carrierId : this.carrierIdArray,
         cargonameId : this.oilPriceFormulaId,
         capacityTypeId : this.form1.capacityTypeId,
         priceValue : this.form1.priceValue,

+ 4 - 0
src/views/appoint/components/saleContract/editSaleOrder.vue

@@ -841,6 +841,10 @@ export default {
         {
           values1: "hnht",
           label1: "海南瀚途贸易有限公司"
+        },
+        {
+          values1: 'cdxc',
+          label1: '成都兴城道成物流有限公司'
         }
       ],
       values1: "dzgt",

+ 2 - 1
src/views/appoint/components/saleContract/saleOrderSteel.vue

@@ -273,7 +273,8 @@ export default {
         '四川省达州钢铁集团有限责任公司',
         '四川达钢商贸有限公司',
         '江西久隆贸易有限公司',
-        '海南瀚途贸易有限公司'
+        '海南瀚途贸易有限公司',
+        '成都兴城道成物流有限公司'
       ],
       option: {
         // 表格请求数据的地址

+ 270 - 261
src/views/inward/components/inwardSettlement/detailOrder.vue

@@ -86,54 +86,58 @@
         <el-tab-pane label="已结算" name="second">
           <dilTable v-bind.sync="options2" @func="func2"> </dilTable>
         </el-tab-pane>
-        <!-- <el-tab-pane label="未生成详单" name="third">
+        <el-tab-pane
+          label="未生成详单"
+          name="third"
+          v-if="loginName == 'admin02'"
+        >
           <dilTable v-bind.sync="options3" @func="func3"> </dilTable>
-        </el-tab-pane> -->
+        </el-tab-pane>
       </el-tabs>
     </div>
   </div>
 </template>
 
 <script>
-import { getCookie } from "@/utils/util.js";
-import { sjTime } from "@/utils/sharedJsFile";
+import { getCookie } from '@/utils/util.js'
+import { sjTime } from '@/utils/sharedJsFile'
 export default {
   data() {
     return {
       options: [
         {
-          value: "用车单位",
-          label: "用车单位"
+          value: '用车单位',
+          label: '用车单位'
         },
         {
-          value: "货物名称",
-          label: "货物名称"
+          value: '货物名称',
+          label: '货物名称'
         },
         {
-          value: "车牌号",
-          label: "车牌号"
+          value: '车牌号',
+          label: '车牌号'
         },
         {
-          value: "承运起止范围",
-          label: "承运起止范围"
+          value: '承运起止范围',
+          label: '承运起止范围'
         }
       ],
       optionsF: [
         {
-          value: "用车单位",
-          label: "用车单位"
+          value: '用车单位',
+          label: '用车单位'
         },
         {
-          value: "货物名称",
-          label: "货物名称"
+          value: '货物名称',
+          label: '货物名称'
         },
         {
-          value: "车牌号",
-          label: "车牌号"
+          value: '车牌号',
+          label: '车牌号'
         },
         {
-          value: "承运起止范围",
-          label: "承运起止范围"
+          value: '承运起止范围',
+          label: '承运起止范围'
         }
       ],
       screen: null,
@@ -150,20 +154,20 @@ export default {
       selectLineLoading: false,
       input: null,
       input1: null,
-      activeName: "first",
+      activeName: 'first',
       ssoId: null,
       //详单Id
       detailsId: null,
       options1: {
         // first请求数据的地址
-        requestUrl: ""
+        requestUrl: ''
       },
       options2: {
         // second请求数据的地址
-        requestUrl: ""
+        requestUrl: ''
       },
       options3: {
-        requestUrl: ""
+        requestUrl: ''
       },
       //是否打开修改详单地址弹出框
       dialogFormVisible: false,
@@ -179,437 +183,442 @@ export default {
       priceId: null,
       //运输单价的表格
       Address: {
-        requestUrl: "/api/v1/ams/getAddressDeliveryAddress?apiId=255",
-        selectionType: "radio"
+        requestUrl: '/api/v1/ams/getAddressDeliveryAddress?apiId=255',
+        selectionType: 'radio'
       },
       // addressText:null,
       //缓存当前选中的运输单价
       priceMap: {},
-      formLabelWidth: "125px",
-      tableTitle: "内转计重详单",
+      formLabelWidth: '125px',
+      tableTitle: '内转计重详单',
       exportAllList: [],
       noSettleDetailsColumn: [],
       settleDetailsColumn: [],
       noDetailsColumn: [],
       orderList1: [],
       orderList2: [],
-      orderList3: []
-    };
+      orderList3: [],
+      loginName: ''
+    }
   },
   created() {
-    this.options1GetRequestUrl();
-    this.options2GetRequestUrl();
-    this.options3GetRequestUrl();
+    this.loginName = this.loginNames()
+    this.options1GetRequestUrl()
+    this.options2GetRequestUrl()
+    this.options3GetRequestUrl()
   },
   methods: {
+    loginNames() {
+      return getCookie('loginName')
+    },
     handClick() {
-      if (this.activeName == "first") {
-        this.options1GetRequestUrl();
-      } else if (this.activeName == "second") {
-        this.options2GetRequestUrl();
+      if (this.activeName == 'first') {
+        this.options1GetRequestUrl()
+      } else if (this.activeName == 'second') {
+        this.options2GetRequestUrl()
       } else {
-        this.options3GetRequestUrl();
+        this.options3GetRequestUrl()
       }
     },
     func(res) {
-      console.log(res);
-      this.noSettleDetailsColumn = res.columnData;
-      var totalWeight = 0;
-      var totalAllMoney = 0;
+      console.log(res)
+      this.noSettleDetailsColumn = res.columnData
+      var totalWeight = 0
+      var totalAllMoney = 0
       res.list.forEach(e => {
-        totalWeight = totalWeight + e.resultNetWeight;
-        totalAllMoney = totalAllMoney + e.detailsAmount;
-      });
-      this.totalNetWeight = totalWeight.toFixed(2) + "t";
-      this.totalMoney = totalAllMoney.toFixed(2) + "元";
-      this.orderList1 = [];
+        totalWeight = totalWeight + e.resultNetWeight
+        totalAllMoney = totalAllMoney + e.detailsAmount
+      })
+      this.totalNetWeight = totalWeight.toFixed(2) + 't'
+      this.totalMoney = totalAllMoney.toFixed(2) + '元'
+      this.orderList1 = []
       res.list.forEach(e => {
         let map = {
           orderLineSeq: e.orderLineSeq,
           orderId: e.orderId
-        };
-        this.orderList1.push(map);
-      });
+        }
+        this.orderList1.push(map)
+      })
     },
     func2(res) {
-      this.settleDetailsColumn = res.columnData;
+      this.settleDetailsColumn = res.columnData
     },
     func3(res) {
-      console.log(res.list);
-      console.log("res");
-      this.orderList3 = [];
+      console.log(res.list)
+      console.log('res')
+      this.orderList3 = []
       res.list.forEach(e => {
         let map = {
           orderLineSeq: e.orderLineSeq,
           orderId: e.orderId
-        };
-        this.orderList3.push(map);
-      });
-      this.noDetailsColumn = res.columnData;
+        }
+        this.orderList3.push(map)
+      })
+      this.noDetailsColumn = res.columnData
     },
     newSettle() {
-      console.log(this.orderList);
-      let orderList = [];
-      if (this.activeName == "third") {
-        orderList = this.orderList3;
+      console.log(this.orderList)
+      let orderList = []
+      if (this.activeName == 'third') {
+        orderList = this.orderList3
       } else {
-        orderList = this.orderList1;
+        orderList = this.orderList1
       }
       this.axios
-        .post("/api/v1/bms/newInwardSettle", { orderIds: orderList })
+        .post('/api/v1/bms/newInwardSettle', { orderIds: orderList })
         .then(res => {
-          console.log(res);
-          this.$message.success("生成成功");
-          this.options3GetRequestUrl();
-        });
+          console.log(res)
+          this.$message.success('生成成功')
+          this.options3GetRequestUrl()
+        })
     },
     exportAllExcel() {
-      let startTime = null;
-      let endTime = null;
-      let orgCode = null;
-      let materialTypeNames = null;
-      let transRangeValues = null;
-      let shipperNames = null;
-      let capacityNo = null;
-      let carrierSsoId = null;
+      let startTime = null
+      let endTime = null
+      let orgCode = null
+      let materialTypeNames = null
+      let transRangeValues = null
+      let shipperNames = null
+      let capacityNo = null
+      let carrierSsoId = null
       if (this.startTime && this.endTime) {
-        startTime = sjTime(this.startTime);
-        endTime = sjTime(this.endTime);
+        startTime = sjTime(this.startTime)
+        endTime = sjTime(this.endTime)
       }
-      if (getCookie("orgCode") == "chengyunshang") {
-        carrierSsoId = getCookie("userId");
+      if (getCookie('orgCode') == 'chengyunshang') {
+        carrierSsoId = getCookie('userId')
       }
       if (
-        getCookie("orgCode") == "dagangadmin" ||
-        getCookie("orgCode") == "zidonghuabu" ||
-        getCookie("orgCode") == "wuliuchuyunzhongxin"
+        getCookie('orgCode') == 'dagangadmin' ||
+        getCookie('orgCode') == 'zidonghuabu' ||
+        getCookie('orgCode') == 'wuliuchuyunzhongxin'
       ) {
-        orgCode = null;
+        orgCode = null
       } else {
-        orgCode = getCookie("orgCode");
+        orgCode = getCookie('orgCode')
       }
-      if (this.screen == "车牌号") {
-        capacityNo = this.input;
+      if (this.screen == '车牌号') {
+        capacityNo = this.input
       }
-      if (this.screen == "承运起止范围") {
-        transRangeValues = this.input;
+      if (this.screen == '承运起止范围') {
+        transRangeValues = this.input
       }
-      if (this.screen == "货物名称") {
-        materialTypeNames = this.input;
+      if (this.screen == '货物名称') {
+        materialTypeNames = this.input
       }
-      if (this.screen == "用车单位") {
-        shipperNames = this.input;
+      if (this.screen == '用车单位') {
+        shipperNames = this.input
       }
-      if (this.screen1 == "车牌号") {
-        capacityNo = this.input1;
+      if (this.screen1 == '车牌号') {
+        capacityNo = this.input1
       }
-      if (this.screen1 == "承运起止范围") {
-        transRangeValues = this.input1;
+      if (this.screen1 == '承运起止范围') {
+        transRangeValues = this.input1
       }
-      if (this.screen1 == "货物名称") {
-        materialTypeNames = this.input1;
+      if (this.screen1 == '货物名称') {
+        materialTypeNames = this.input1
       }
-      if (this.screen1 == "用车单位") {
-        shipperNames = this.input1;
+      if (this.screen1 == '用车单位') {
+        shipperNames = this.input1
       }
-      if (this.activeName == "first") {
-        this.tableTitle = "未结算计费详单";
+      if (this.activeName == 'first') {
+        this.tableTitle = '未结算计费详单'
         this.axios
           .post(
-            "/api/v1/bms/getInwardWeightDetailsOrder?apiId=461&orderType=11&detailStatus=0" +
-              "&startTime=" +
+            '/api/v1/bms/getInwardWeightDetailsOrder?apiId=461&orderType=11&detailStatus=0' +
+              '&startTime=' +
               startTime +
-              "&endTime=" +
+              '&endTime=' +
               endTime +
-              "&shipperNames=" +
+              '&shipperNames=' +
               shipperNames +
-              "&materialTypeNames=" +
+              '&materialTypeNames=' +
               materialTypeNames +
-              "&transRangeValues=" +
+              '&transRangeValues=' +
               transRangeValues +
-              "&capacityNo=" +
+              '&capacityNo=' +
               capacityNo +
-              "&i" +
+              '&i' +
               new Date() +
-              "&isPage=yes"
+              '&isPage=yes'
           )
           .then(res => {
-            console.log(res.data.data);
-            this.exportAllList = res.data.data;
+            console.log(res.data.data)
+            this.exportAllList = res.data.data
             this.exportAllReportToExcel(
               this.tableTitle,
               this.exportAllList,
               this.noSettleDetailsColumn
-            );
-          });
-      } else if (this.activeName == "second") {
-        this.tableTitle = "已结算计费详单";
+            )
+          })
+      } else if (this.activeName == 'second') {
+        this.tableTitle = '已结算计费详单'
         this.axios
           .post(
-            "/api/v1/bms/getInwardWeightDetailsOrder?apiId=461&orderType=11&detailStatus=1" +
-              "&startTime=" +
+            '/api/v1/bms/getInwardWeightDetailsOrder?apiId=461&orderType=11&detailStatus=1' +
+              '&startTime=' +
               startTime +
-              "&endTime=" +
+              '&endTime=' +
               endTime +
-              "&shipperNames=" +
+              '&shipperNames=' +
               shipperNames +
-              "&materialTypeNames=" +
+              '&materialTypeNames=' +
               materialTypeNames +
-              "&transRangeValues=" +
+              '&transRangeValues=' +
               transRangeValues +
-              "&capacityNo=" +
+              '&capacityNo=' +
               capacityNo +
-              "&i" +
+              '&i' +
               new Date() +
-              "&isPage=yes" +
-              "&userId=" +
+              '&isPage=yes' +
+              '&userId=' +
               orgCode
           )
           .then(res => {
-            this.exportAllList = res.data.data;
+            this.exportAllList = res.data.data
             this.exportAllReportToExcel(
               this.tableTitle,
               this.exportAllList,
               this.settleDetailsColumn
-            );
-          });
-      } else if (this.activeName == "third") {
-        this.tableTitle = "未生成计费详单数据";
+            )
+          })
+      } else if (this.activeName == 'third') {
+        this.tableTitle = '未生成计费详单数据'
         this.axios
           .post(
-            "/api/v1/bms/getNoInwardDetails?apiId=490" +
-              "&startTime=" +
+            '/api/v1/bms/getNoInwardDetails?apiId=490' +
+              '&startTime=' +
               startTime +
-              "&endTime=" +
+              '&endTime=' +
               endTime +
-              "&shipperNames=" +
+              '&shipperNames=' +
               shipperNames +
-              "&materialTypeNames=" +
+              '&materialTypeNames=' +
               materialTypeNames +
-              "&transRangeValues=" +
+              '&transRangeValues=' +
               transRangeValues +
-              "&capacityNo=" +
+              '&capacityNo=' +
               capacityNo +
-              "&i" +
+              '&i' +
               new Date() +
-              "&userId=" +
+              '&userId=' +
               orgCode +
-              "&isPage=yes"
+              '&isPage=yes'
           )
           .then(res => {
-            this.exportAllList = res.data.data;
+            this.exportAllList = res.data.data
             this.exportAllReportToExcel(
               this.tableTitle,
               this.exportAllList,
               this.noDetailsColumn
-            );
-          });
+            )
+          })
       }
     },
     //导出excel
     exportAllReportToExcel(tableTitle, dataArr, columnData) {
-      var title = tableTitle;
-      let tHeader = [];
-      let filterVal = [];
+      var title = tableTitle
+      let tHeader = []
+      let filterVal = []
       columnData.forEach(e1 => {
         if (tHeader.indexOf(e1.label) === -1) {
-          tHeader.push(e1.label);
+          tHeader.push(e1.label)
         }
         if (filterVal.indexOf(e1.prop) === -1) {
-          filterVal.push(e1.prop);
+          filterVal.push(e1.prop)
         }
-      });
+      })
       //导出为excel
-      this.downloadLoading = true;
+      this.downloadLoading = true
       require.ensure([], () => {
         const {
           export_json_to_excel
-        } = require("@/assets/excel/Export2Excel.js"); //这里必须使用绝对路径,使用@/+存放export2Excel的路径
+        } = require('@/assets/excel/Export2Excel.js') //这里必须使用绝对路径,使用@/+存放export2Excel的路径
         // let list = this.$refs.excelDom.dataTabel;
-        let data = dataArr.map(v => filterVal.map(j => v[j])); //3.formatJson格式转换
-        export_json_to_excel(tHeader, data, title); // (title)导出的表格名称
-      });
+        let data = dataArr.map(v => filterVal.map(j => v[j])) //3.formatJson格式转换
+        export_json_to_excel(tHeader, data, title) // (title)导出的表格名称
+      })
     },
     //未结算数据
     options1GetRequestUrl() {
-      if (getCookie("orgCode") == "chengyunshang") {
-        this.ssoId = getCookie("userId");
+      if (getCookie('orgCode') == 'chengyunshang') {
+        this.ssoId = getCookie('userId')
         this.options1.requestUrl =
-          "/api/v1/bms/getInwardWeightDetailsOrder?apiId=461&orderType=11&detailStatus=0&carrierSsoId=" +
-          getCookie("userId") +
-          "&startTime=null&endTime=null&i=" +
-          new Date();
+          '/api/v1/bms/getInwardWeightDetailsOrder?apiId=461&orderType=11&detailStatus=0&carrierSsoId=' +
+          getCookie('userId') +
+          '&startTime=null&endTime=null&i=' +
+          new Date()
       } else if (
-        getCookie("orgCode") == "dagangadmin" ||
-        getCookie("orgCode") == "zidonghuabu" ||
-        getCookie("orgCode") == "wuliuchuyunzhongxin"
+        getCookie('orgCode') == 'dagangadmin' ||
+        getCookie('orgCode') == 'zidonghuabu' ||
+        getCookie('orgCode') == 'wuliuchuyunzhongxin'
       ) {
         this.options1.requestUrl =
-          "/api/v1/bms/getInwardWeightDetailsOrder?apiId=461&orderType=11&detailStatus=0&startTime=null&endTime=null&i=" +
-          new Date();
+          '/api/v1/bms/getInwardWeightDetailsOrder?apiId=461&orderType=11&detailStatus=0&startTime=null&endTime=null&i=' +
+          new Date()
       } else {
         this.options1.requestUrl =
-          "/api/v1/bms/getInwardWeightDetailsOrder?apiId=461&orderType=11&detailStatus=0&userId=" +
-          getCookie("orgCode") +
-          "&startTime=null&endTime=null&i=" +
-          new Date();
+          '/api/v1/bms/getInwardWeightDetailsOrder?apiId=461&orderType=11&detailStatus=0&userId=' +
+          getCookie('orgCode') +
+          '&startTime=null&endTime=null&i=' +
+          new Date()
       }
     },
     //已结算数据
     options2GetRequestUrl() {
-      if (getCookie("orgCode") == "chengyunshang") {
-        this.ssoId = getCookie("userId");
+      if (getCookie('orgCode') == 'chengyunshang') {
+        this.ssoId = getCookie('userId')
         this.options2.requestUrl =
-          "/api/v1/bms/getInwardWeightDetailsOrder?apiId=461&orderType=11&detailStatus=1&carrierSsoId=" +
-          getCookie("userId") +
-          "&startTime=null&endTime=null&i=" +
-          new Date();
+          '/api/v1/bms/getInwardWeightDetailsOrder?apiId=461&orderType=11&detailStatus=1&carrierSsoId=' +
+          getCookie('userId') +
+          '&startTime=null&endTime=null&i=' +
+          new Date()
       } else if (
-        getCookie("orgCode") == "dagangadmin" ||
-        getCookie("orgCode") == "zidonghuabu" ||
-        getCookie("orgCode") == "wuliuchuyunzhongxin"
+        getCookie('orgCode') == 'dagangadmin' ||
+        getCookie('orgCode') == 'zidonghuabu' ||
+        getCookie('orgCode') == 'wuliuchuyunzhongxin'
       ) {
         this.options2.requestUrl =
-          "/api/v1/bms/getInwardWeightDetailsOrder?apiId=461&orderType=11&detailStatus=1" +
-          "&startTime=null&endTime=null&i=" +
-          new Date();
+          '/api/v1/bms/getInwardWeightDetailsOrder?apiId=461&orderType=11&detailStatus=1' +
+          '&startTime=null&endTime=null&i=' +
+          new Date()
       } else {
         this.options2.requestUrl =
-          "/api/v1/bms/getInwardWeightDetailsOrder?apiId=461&orderType=11&detailStatus=1&userId=" +
-          getCookie("orgCode") +
-          "&startTime=null&endTime=null&i=" +
-          new Date();
+          '/api/v1/bms/getInwardWeightDetailsOrder?apiId=461&orderType=11&detailStatus=1&userId=' +
+          getCookie('orgCode') +
+          '&startTime=null&endTime=null&i=' +
+          new Date()
       }
     },
     options3GetRequestUrl() {
       this.options3.requestUrl =
-        "/api/v1/bms/getNoInwardDetails?apiId=490&i=" + new Date();
+        '/api/v1/bms/getNoInwardDetails?apiId=490&i=' + new Date()
     },
     toInsert() {
-      this.$router.push("/insertCheckInventory");
+      this.$router.push('/insertCheckInventory')
     },
     onclick() {
-      let startTime = null;
-      let endTime = null;
-      let orgCode = null;
-      let materialTypeNames = null;
-      let transRangeValues = null;
-      let shipperNames = null;
-      let capacityNo = null;
-      let carrierSsoId = null;
+      let startTime = null
+      let endTime = null
+      let orgCode = null
+      let materialTypeNames = null
+      let transRangeValues = null
+      let shipperNames = null
+      let capacityNo = null
+      let carrierSsoId = null
       if (this.startTime && this.endTime) {
-        startTime = sjTime(this.startTime);
-        endTime = sjTime(this.endTime);
+        startTime = sjTime(this.startTime)
+        endTime = sjTime(this.endTime)
       }
-      if (getCookie("orgCode") == "chengyunshang") {
-        carrierSsoId = getCookie("userId");
+      if (getCookie('orgCode') == 'chengyunshang') {
+        carrierSsoId = getCookie('userId')
       }
       if (
-        getCookie("orgCode") == "dagangadmin" ||
-        getCookie("orgCode") == "zidonghuabu" ||
-        getCookie("orgCode") == "wuliuchuyunzhongxin"
+        getCookie('orgCode') == 'dagangadmin' ||
+        getCookie('orgCode') == 'zidonghuabu' ||
+        getCookie('orgCode') == 'wuliuchuyunzhongxin'
       ) {
-        orgCode = null;
+        orgCode = null
       } else {
-        orgCode = getCookie("orgCode");
+        orgCode = getCookie('orgCode')
       }
-      if (this.screen == "车牌号") {
-        capacityNo = this.input;
+      if (this.screen == '车牌号') {
+        capacityNo = this.input
       }
-      if (this.screen == "承运起止范围") {
-        transRangeValues = this.input;
+      if (this.screen == '承运起止范围') {
+        transRangeValues = this.input
       }
-      if (this.screen == "货物名称") {
-        materialTypeNames = this.input;
+      if (this.screen == '货物名称') {
+        materialTypeNames = this.input
       }
-      if (this.screen == "用车单位") {
-        shipperNames = this.input;
+      if (this.screen == '用车单位') {
+        shipperNames = this.input
       }
-      if (this.screen1 == "车牌号") {
-        capacityNo = this.input1;
+      if (this.screen1 == '车牌号') {
+        capacityNo = this.input1
       }
-      if (this.screen1 == "承运起止范围") {
-        transRangeValues = this.input1;
+      if (this.screen1 == '承运起止范围') {
+        transRangeValues = this.input1
       }
-      if (this.screen1 == "货物名称") {
-        materialTypeNames = this.input1;
+      if (this.screen1 == '货物名称') {
+        materialTypeNames = this.input1
       }
-      if (this.screen1 == "用车单位") {
-        shipperNames = this.input1;
+      if (this.screen1 == '用车单位') {
+        shipperNames = this.input1
       }
-      if (this.activeName == "first") {
+      if (this.activeName == 'first') {
         this.options1.requestUrl =
-          "/api/v1/bms/getInwardWeightDetailsOrder?apiId=461&orderType=11&detailStatus=0" +
-          "&startTime=" +
+          '/api/v1/bms/getInwardWeightDetailsOrder?apiId=461&orderType=11&detailStatus=0' +
+          '&startTime=' +
           startTime +
-          "&endTime=" +
+          '&endTime=' +
           endTime +
-          "&shipperNames=" +
+          '&shipperNames=' +
           shipperNames +
-          "&materialTypeNames=" +
+          '&materialTypeNames=' +
           materialTypeNames +
-          "&transRangeValues=" +
+          '&transRangeValues=' +
           transRangeValues +
-          "&capacityNo=" +
+          '&capacityNo=' +
           capacityNo +
-          "&i" +
+          '&i' +
           new Date() +
-          "&userId=" +
-          orgCode;
+          '&userId=' +
+          orgCode
       }
-      if (this.activeName == "second") {
+      if (this.activeName == 'second') {
         this.options2.requestUrl =
-          "/api/v1/bms/getInwardWeightDetailsOrder?apiId=461&orderType=11&detailStatus=1" +
-          "&startTime=" +
+          '/api/v1/bms/getInwardWeightDetailsOrder?apiId=461&orderType=11&detailStatus=1' +
+          '&startTime=' +
           startTime +
-          "&endTime=" +
+          '&endTime=' +
           endTime +
-          "&shipperNames=" +
+          '&shipperNames=' +
           shipperNames +
-          "&materialTypeNames=" +
+          '&materialTypeNames=' +
           materialTypeNames +
-          "&transRangeValues=" +
+          '&transRangeValues=' +
           transRangeValues +
-          "&capacityNo=" +
+          '&capacityNo=' +
           capacityNo +
-          "&i" +
+          '&i' +
           new Date() +
-          "&userId=" +
-          orgCode;
+          '&userId=' +
+          orgCode
       }
-      if (this.activeName == "third") {
+      if (this.activeName == 'third') {
         this.options3.requestUrl =
-          "/api/v1/bms/getNoInwardDetails?apiId=490" +
-          "&startTime=" +
+          '/api/v1/bms/getNoInwardDetails?apiId=490' +
+          '&startTime=' +
           startTime +
-          "&endTime=" +
+          '&endTime=' +
           endTime +
-          "&shipperNames=" +
+          '&shipperNames=' +
           shipperNames +
-          "&materialTypeNames=" +
+          '&materialTypeNames=' +
           materialTypeNames +
-          "&transRangeValues=" +
+          '&transRangeValues=' +
           transRangeValues +
-          "&capacityNo=" +
+          '&capacityNo=' +
           capacityNo +
-          "&i" +
+          '&i' +
           new Date() +
-          "&userId=" +
-          orgCode;
+          '&userId=' +
+          orgCode
       }
     },
     //运输订单点击浏览的事件
     select() {
-      this.addressDrawer = true;
+      this.addressDrawer = true
     },
     //运输单价模态窗口的框计算
     selectAddressClick() {
       this.Price.requestUrl =
-        "/api/v1/ams/getAddressDeliveryAddress?apiId=255&con=" +
-        this.addressText;
+        '/api/v1/ams/getAddressDeliveryAddress?apiId=255&con=' +
+        this.addressText
     }
   }
-};
+}
 </script>
 
 <style lang="scss" scoped>

+ 5 - 2
src/views/sale/components/dilNotice/addNotice.vue

@@ -5,7 +5,8 @@
     <PageTitle>返回</PageTitle>
 
     <div class="form-box" style="margin-right: 10rem;width: 1200px">
-      <dil-form :formId="391" v-model="form1" ref="from1"></dil-form>
+      <dil-form :formId="391" v-model="form1" ref="from1">
+      </dil-form>
     </div>
 
     <div class="button-box">
@@ -21,7 +22,9 @@ export default {
   components: { PageTitle },
   data() {
     return {
-      form1: {},
+      form1: {
+        permission:"承运商"
+      },
       value: undefined,
     };
   },

+ 3 - 1
src/views/sale/components/dilNotice/addNotice1.vue

@@ -20,7 +20,9 @@ export default {
   components: { PageTitle },
   data() {
     return {
-      form1: {},
+      form1: {
+        permission:"销售商"
+      },
       value: undefined,
     };
   },

+ 3 - 1
src/views/sale/components/dilNotice/addNotice2.vue

@@ -20,7 +20,9 @@ export default {
   components: { PageTitle },
   data() {
     return {
-      form1: {},
+      form1: {
+        permission:"收货客户"
+      },
       value: undefined,
     };
   },

+ 15 - 4
src/views/sale/components/dilNotice/editNotice.vue

@@ -2,10 +2,11 @@
   <!-- 修改通知信息 -->
   <div id="contractDetails">
     <page-title>编辑</page-title>
-    <div class="main">
+<!--    <div class="main">
       <span class="text">通知信息</span>
-    </div>
-    <div class="contractTitle">
+    </div>-->
+    <!--class="contractTitle"-->
+    <div>
       <div class="form-box">
         <div class="form-one">
           <dil-form :formId="369" v-model="form1"></dil-form>
@@ -92,7 +93,17 @@ export default {
 };
 </script>
 <style lang="scss" scoped>
-.form-box,
+.form-box{
+    .el-form{
+      margin-top: 100px;
+      .preview-group{
+        width: 500px;
+        .el-form-item{
+          height: 60px;
+        }
+      }
+    }
+}
 .from {
   display: flex;
   align-items: center;

+ 1 - 2
src/views/sale/components/dilNotice/getNoticeById.vue

@@ -5,7 +5,7 @@
       <PageTitle>返回</PageTitle>
     </div>
 <!--//详细内容展示部分-->
-    <div class="form-box" style="margin-right: 10rem;text-fill-color: #111111;-webkit-input-placeholder:111111FF"  >
+    <div class="form-box" style="margin-right: 10rem;margin-top: 30px;text-fill-color: #111111;-webkit-input-placeholder:111111FF"  >
       <dil-form :formId="369" v-model="form1" ref="from1" autosize></dil-form>
     </div>
   </div>
@@ -72,7 +72,6 @@ export default {
   height:200px !important;
 
 }
-.form-box,
 .from {
   display: flex;
   align-items: center;

+ 1 - 0
src/views/statisticalReport/app.html

@@ -6,6 +6,7 @@
     <meta name="renderer" content="webkit">
     <meta content="智慧物流平台" name="keywords">
     <meta content="智慧物流平台" name="description">
+    <meta content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0" name="viewport" />
     <title>统计报表 - 智慧物流平台</title>
     <link href="../static/css/common.css" rel="stylesheet"/>
     <link href="../static/img/favicon.ico" rel="shortcut icon"/>

+ 75 - 44
src/views/statisticalReport/app.js

@@ -1,102 +1,133 @@
 // The Vue build version to load with the `import` command
 // (runtime-only or standalone) has been set in webpack.base.conf with an alias.
-import Vue from "vue";
-import App from "@/components/App.vue";
+import Vue from 'vue'
+import App from '@/components/App.vue'
 // include
-import "@/config/include.js";
+import '@/config/include.js'
 
 // 通用store
-import store from "@/store/index.js";
+import store from '@/store/index.js'
 
 // router
-import router from "./router/index.js";
+import router from './router/index.js'
 
-import VueApollo from "vue-apollo";
+import VueApollo from 'vue-apollo'
 
-import apollo from "@/config/apolloConfig.js";
+import apollo from '@/config/apolloConfig.js'
 
 // 注册表格的全局组件
-import DilCommonUI from "@/components/DilCommonUI";
-Vue.use(DilCommonUI);
+import DilCommonUI from '@/components/DilCommonUI'
+Vue.use(DilCommonUI)
 
 // 导出Excel全局组件
-import tableToExcel from "@/components/exportExcel/exportExcel";
-Vue.use(tableToExcel);
+import tableToExcel from '@/components/exportExcel/exportExcel'
+Vue.use(tableToExcel)
 
-import htmlToPdf from "@/components/exportPdfs/exportPdfs";
-Vue.use(htmlToPdf);
+import htmlToPdf from '@/components/exportPdfs/exportPdfs'
+Vue.use(htmlToPdf)
 //导出PDF组件
-import "xe-utils";
-import VXETable from "vxe-table";
-import "vxe-table/lib/style.css";
-Vue.use(VXETable);
-Vue.prototype.$XModal = VXETable.modal;
+import 'xe-utils'
+import VXETable from 'vxe-table'
+import 'vxe-table/lib/style.css'
+Vue.use(VXETable)
+Vue.prototype.$XModal = VXETable.modal
 
+import AMap from 'vue-amap'
+window._AMapSecurityConfig = {
+  securityJsCode: '6a75ec7300ae4ba9f385d1bb452ffd21'
+}
+Vue.use(AMap)
+AMap.initAMapApiLoader({
+  key: '168d3d854afba86848eac1b055d53ca3',
+  plugin: [
+    'AMap.Autocomplete', // 输入提示插件
+    'AMap.PlaceSearch', // POI搜索插件
+    'AMap.Scale', // 右下角缩略图插件 比例尺
+    'AMap.OverView', // 地图鹰眼插件
+    'AMap.ToolBar', // 地图工具条
+    'AMap.MapType', // 类别切换控件,实现默认图层与卫星图、实施交通图层之间切换的控制
+    'AMap.PolyEditor', // 编辑 折线多,边形
+    'AMap.CircleEditor', // 圆形编辑器插件
+    'AMap.Geolocation', // 定位控件,用来获取和展示用户主机所在的经纬度位置
+    'AMap.ControlBar', // 缩放、尺寸控制器
+    'AMap.Geocoder'
+  ],
+  // 默认高德 sdk 版本为 1.4.4
+  v: '1.4.15',
+  uiVersion: '1.1.1'
+})
+
+import Share from 'vue-social-share'
+Vue.use(Share)
+
+import 'view-design/dist/styles/iview.css'
+import ViewUI from 'view-design'
+Vue.use(ViewUI)
 // 关闭生产模式下给出的提示
-Vue.config.productionTip = false;
+Vue.config.productionTip = false
 
-Vue.use(VueApollo);
+Vue.use(VueApollo)
 
 const apolloProvider = new VueApollo({
   defaultClient: apollo
-});
+})
 
 //把时间戳改为正常可读的时间
 export function renderTime(date) {
   if (date !== null) {
-    let dateee = new Date(date).toJSON();
+    let dateee = new Date(date).toJSON()
     return new Date(+new Date(dateee) + 8 * 3600 * 1000)
       .toISOString()
-      .replace(/T/g, " ")
-      .replace(/\.[\d]{3}Z/, "");
+      .replace(/T/g, ' ')
+      .replace(/\.[\d]{3}Z/, '')
   }
-  return null;
+  return null
 }
 //把毫秒数转换分
 export function getDuration(my_time) {
   if (my_time !== null) {
-    return Math.floor(my_time / 1000 / 60);
+    return Math.floor(my_time / 1000 / 60)
   }
-  return null;
+  return null
 }
 export function sjTime(orderPlanInTime) {
-  var stringTime = renderTime(orderPlanInTime);
-  var timestamp1 = stringTime.replace(/-/g, "/");
-  return new Date(timestamp1).getTime();
+  var stringTime = renderTime(orderPlanInTime)
+  var timestamp1 = stringTime.replace(/-/g, '/')
+  return new Date(timestamp1).getTime()
 }
 //验证电话号码
 export function VerifyPhoneNumber(Phone) {
-  var myreg = /^(13[0-9]|14[5|7]|15[0|1|2|3|4|5|6|7|8|9]|18[0|1|2|3|5|6|7|8|9])\d{8}$/;
+  var myreg = /^(13[0-9]|14[5|7]|15[0|1|2|3|4|5|6|7|8|9]|18[0|1|2|3|5|6|7|8|9])\d{8}$/
   if (!myreg.test(Phone)) {
-    return false;
+    return false
   } else {
-    return true;
+    return true
   }
 }
 export function isNumber(value) {
   //验证是否为数字
-  var patrn = /^(-)?\d+(\.\d+)?$/;
-  if (patrn.exec(value) == null || value == "") {
-    return false;
+  var patrn = /^(-)?\d+(\.\d+)?$/
+  if (patrn.exec(value) == null || value == '') {
+    return false
   } else {
-    return true;
+    return true
   }
 }
 export function isIntegerNumber(value) {
   //验证是否为整数
-  var patrn = /^\+?[1-9][0-9]*$/g;
-  if (patrn.exec(value) == null || value == "") {
-    return false;
+  var patrn = /^\+?[1-9][0-9]*$/g
+  if (patrn.exec(value) == null || value == '') {
+    return false
   } else {
-    return true;
+    return true
   }
 }
 /* eslint-disable no-new */
 new Vue({
-  el: "#app",
+  el: '#app',
   router,
   store,
   components: { App },
   provide: apolloProvider.provide(),
-  template: "<App/>"
-});
+  template: '<App/>'
+})

+ 427 - 0
src/views/statisticalReport/components/salesLogisticsStatistics/currentLocation.vue

@@ -0,0 +1,427 @@
+<template>
+  <div class="container">
+    <!-- 实时路径 -->
+    <div class="btnx">
+      <el-button type="primary" class="" @click="openInfo"
+        >打开信息窗体</el-button
+      >
+      <el-button type="primary" class="" @click="closeinfo"
+        >关闭信息窗口</el-button
+      >
+    </div>
+    <div id="amap-container"></div>
+  </div>
+</template>
+<script>
+import { shallowRef } from '@vue/reactivity'
+import { lazyAMapApiLoaderInstance } from 'vue-amap'
+import Slider from './slider.vue'
+Vue.use(Slider)
+import Vue from 'vue'
+var infoWindow
+export default {
+  name: 'currentLocation',
+  props: {
+    carNumber: ''
+  },
+  setup() {
+    const map = shallowRef(null)
+    return {
+      map
+    }
+  },
+  watch: {
+    speedVal: {
+      deep: true,
+      handler(val, oldVal) {
+        let that = this
+        if (that.pathNavigator != null) {
+          that.pathNavigator.setSpeed(100 * val)
+        }
+      }
+    }
+  },
+  data() {
+    return {
+      //查询车牌号
+      //开始时间和结束时间
+      startTime: '',
+      endTime: '',
+      //地图组件
+      map: null,
+      path: [],
+      pointmarker: null,
+      //定时器
+      timer: null,
+      //是否关闭信息窗体
+      infoClose: false
+    }
+  },
+  created() {
+    let that = this
+    that.initMap(105.602725, 37.076636)
+  },
+  mounted() {
+    this.initData()
+    this.initTimer()
+  },
+  methods: {
+    //初始化数据
+    initData() {
+      let that = this
+      let regExp = /(^[京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领A-Z]{1}[A-Z]{1}[A-Z0-9]{4}[A-Z0-9挂学警港澳]{1}$)/
+      if (that.carNumber == '') {
+        this.$message.error('车牌号不能为空!')
+        //清除旧的定时器
+        clearTimeout(this.timer)
+        return
+      } else if (!regExp.test(that.carNumber)) {
+        this.$message.error('请输入正确的车牌号!')
+        //清除旧的定时器
+        clearTimeout(this.timer)
+        return
+      }
+      that.axios
+        .get('/api/v1/otms/getCurrentLocation?capcityNumber=' + that.carNumber)
+        .then(res => {
+          console.log(res.data.data)
+          if (res.data.data == '-1') {
+            this.$message.error('运输订单未关闭,自提车辆无权查看!')
+          } else if (res.data.data.status != '1006') {
+            that.map.setCenter([
+              res.data.data.result.lon,
+              res.data.data.result.lat
+            ])
+            //画车
+            that.initMarkes(
+              45,
+              60,
+              require('@/assets/img/car1.png'),
+              res.data.data.result.lon,
+              res.data.data.result.lat,
+              '现在所在位置'
+            )
+            //给路径加点
+            let point = new AMap.LngLat(
+              res.data.data.result.lon,
+              res.data.data.result.lat
+            )
+            if (
+              that.path.length <= 0 ||
+              !that.path[that.path.length - 1].equals(point)
+            ) {
+              that.path.push(point)
+            }
+            console.log(that.path)
+            //初始化轨迹
+            that.initPolyline()
+            //显示窗体
+            if (this.infoClose == false) {
+              that.initCustomMarkes(
+                that.carNumber,
+                res.data.data.result.adr,
+                res.data.data.result.lon,
+                res.data.data.result.lat
+              )
+            }
+            this.lon = res.data.data.result.lon
+            this.lat = res.data.data.result.lat
+          } else {
+            this.$message.error('车辆暂时无GPS')
+            //清除定时器
+            clearTimeout(this.timer)
+          }
+        })
+    },
+
+    //初始化地图
+    initMap(lon, lat) {
+      lazyAMapApiLoaderInstance.load().then(() => {
+        let that = this
+        that.map = new AMap.Map('amap-container', {
+          //设置地图容器id
+          viewMode: '2D', //是否为2D地图模式
+          zoom: 18, //初始化地图级别
+          center: [lon, lat] //初始化地图中心点位置105.602725,37.076636
+        })
+      })
+    },
+
+    //创建简单的标记
+    initMarkes(weight, height, image, lon, lat, title) {
+      let that = this
+      //图标标记点
+      let pointicon = new AMap.Icon({
+        size: new AMap.Size(weight, height), // 图标尺寸
+        image: image, // Icon的图像
+        imageOffset: new AMap.Pixel(2, 10), // 图像相对展示区域的偏移量,适于雪碧图等
+        imageSize: new AMap.Size(weight, height) // 根据所设置的大小拉伸或压缩图片
+      })
+      // 创建一个 Marker 实例:
+      var pointmarker = new AMap.Marker({
+        position: new AMap.LngLat(lon, lat), // 经纬度对象,也可以是经纬度构成的一维数组[116.39, 39.9]
+        icon: pointicon,
+        title: title
+      })
+      // 将创建的点标记添加到已有的地图实例:
+      that.pointmarker = pointmarker
+      that.map.add(pointmarker)
+    },
+    initPoint(weight, height, image, lon, lat, title) {
+      let that = this
+      //图标标记点
+      let pointicon = new AMap.Icon({
+        //size: new AMap.Size(weight, height), // 图标尺寸
+        image: image, // Icon的图像
+        imageOffset: new AMap.Pixel(0, 10), // 图像相对展示区域的偏移量,适于雪碧图等
+        imageSize: new AMap.Size(weight, height) // 根据所设置的大小拉伸或压缩图片
+      })
+      // 创建一个 Marker 实例:
+      var pointmarker = new AMap.Marker({
+        position: new AMap.LngLat(lon, lat), // 经纬度对象,也可以是经纬度构成的一维数组[116.39, 39.9]
+        icon: pointicon,
+        title: title,
+        label: {
+          direction: 'top',
+          content: title,
+          offset: new AMap.Pixel(-2, 10)
+        }
+      })
+      // 将创建的点标记添加到已有的地图实例:
+      that.pointmarker = pointmarker
+      that.map.add(pointmarker)
+    },
+    //初始化轨迹
+    initPolyline() {
+      let that = this
+      // 创建一个 Polyline 实例:
+      var polyline = new AMap.BezierCurve({
+        path: that.path,
+        borderWeight: 2, // 线条宽度,默认为 1
+        strokeColor: '#18BFA6', // 线条颜色
+        lineJoin: 'round' // 折线拐点连接处样式
+      })
+      // 将创建的线路添加到已有的线路中去:
+      that.map.add(polyline)
+    },
+    //时间格式转换
+    formatDate(date, fmt) {
+      if (/(y+)/.test(fmt)) {
+        fmt = fmt.replace(
+          RegExp.$1,
+          (date.getFullYear() + '').substr(4 - RegExp.$1.length)
+        )
+      }
+      let o = {
+        'M+': date.getMonth() + 1,
+        'd+': date.getDate(),
+        'h+': date.getHours(),
+        'm+': date.getMinutes(),
+        's+': date.getSeconds()
+      }
+      for (let k in o) {
+        if (new RegExp(`(${k})`).test(fmt)) {
+          let str = o[k] + ''
+          fmt = fmt.replace(
+            RegExp.$1,
+            RegExp.$1.length === 1 ? str : ('00' + str).substr(str.length)
+          )
+        }
+      }
+      return fmt
+    },
+    //定时取得当前位置并加入轨迹中去,点击查询时触发,同时清除path和旧的定时器
+    initTimer() {
+      let that = this
+      //清除旧的定时器
+      clearTimeout(this.timer)
+      that.startTime = that.formatDate(new Date(), 'yyyy年MM月dd日 hh:mm:ss')
+      that.endTime = that.formatDate(new Date(), 'yyyy年MM月dd日 hh:mm:ss')
+      console.log(that.startTime + '至' + that.endTime)
+      //清除path
+      that.path = []
+      //清除所有覆盖物
+      // that.map.clearMap()
+      //设置所有的门岗和汽车衡
+      that.setPoints()
+      //设置定时器
+      that.timer = setInterval(() => {
+        //清除之前车的图标
+        that.map.remove(that.pointmarker)
+        that.initData()
+        that.endTime = that.formatDate(new Date(), 'yyyy年MM月dd日 hh:mm:ss')
+      }, 5000)
+    },
+    //初始化厂内标记点
+    setPoints() {
+      //请求所有汽车衡和门岗
+      let that = this
+      that.axios.get('/api/v1/otms/mapvertexs/findSelections').then(res => {
+        console.log(res.data.data)
+        if (res.data.data) {
+          res.data.data.forEach(vertex => {
+            that.initPoint(
+              20,
+              25,
+              require('@/assets/img/map_site.png'),
+              vertex.longitude,
+              vertex.latitude,
+              vertex.addressName
+            )
+          })
+        }
+      })
+    },
+    //初始化窗体
+    initCustomMarkes(title, details, lon, lat) {
+      let that = this
+      //自定义窗体内容
+      var content = [
+        "<div  style='top:1px;width: 180px; background-color:rgba(22, 160, 133, 1);' ><font color='white'>" +
+          title +
+          '</font>',
+        "<div style='background-color:rgba(22, 160, 133, 1);'><font color='white'>" +
+          details +
+          '<br>' +
+          '时间范围:' +
+          that.startTime +
+          '至' +
+          that.endTime +
+          '<br>' +
+          '</font></div></div>'
+      ]
+      // 创建 infoWindow 实例
+      infoWindow = new AMap.InfoWindow({
+        content: content.join('<br>'), //传入 dom 对象,或者 html 字符串
+        offset: new AMap.Pixel(0, -20) //修改信息差窗体偏移
+      })
+      // 打开信息窗体
+      infoWindow.open(that.map, [lon, lat])
+    },
+    // 关闭信息窗口
+    closeinfo() {
+      this.infoClose = true
+      infoWindow.close()
+    },
+    openInfo() {
+      console.log(this.lon)
+      console.log(this.lat)
+      this.infoClose = false
+      infoWindow.open(this.map, [this.lon, this.lat])
+    }
+  }
+}
+</script>
+<style>
+.inputStyle {
+  position: absolute;
+  width: 200px;
+  left: 50px;
+}
+
+.controller {
+  width: 100%;
+  height: 70px;
+  background: white;
+  position: absolute;
+  z-index: 99;
+  top: 0;
+  left: 0;
+}
+.in_transit_information {
+  width: 320px;
+  float: left;
+  height: 40px;
+}
+
+.container {
+  width: 100%;
+  height: 100%;
+}
+span.item_details2 {
+  position: relative;
+  top: 20px;
+}
+.date_picker_style {
+  position: relative;
+  left: 50px;
+}
+.item_details {
+  position: relative;
+  top: 5px;
+  height: 0px;
+  left: 0px;
+}
+#amap-container {
+  position: relative;
+  width: 100%;
+  height: 100%;
+  overflow: hidden;
+  margin: 0;
+  font-family: '微软雅黑';
+}
+
+/* 进度条 */
+.mySlider {
+  width: 150px;
+  height: 20px;
+  display: inline-block;
+  position: relative;
+  left: 32px;
+}
+/* 进度条 */
+.mySlider2 {
+  width: 400px;
+  height: 20px;
+  display: inline-block;
+  position: relative;
+  left: 32px;
+}
+.play {
+  position: relative;
+  left: 28px;
+}
+.quickly {
+  float: right;
+  position: relative;
+  left: -20px;
+  top: 10px;
+}
+.pause {
+  position: relative;
+  left: 28px;
+}
+.passed-time {
+  position: relative;
+  left: 5px;
+}
+.end-time {
+  position: relative;
+  left: 5px;
+}
+.map-times {
+  position: relative;
+  width: 40px;
+}
+.searchstyle {
+  position: relative;
+  left: 45px;
+}
+.map-control {
+  float: left;
+  width: 270px;
+}
+.driving_information {
+  height: 40px;
+  width: 240px;
+  float: left;
+}
+</style>
+<style lang="scss" scoped>
+.btnx {
+  z-index: 1000;
+  position: fixed;
+  bottom: 10px;
+  right: 10px;
+}
+</style>

+ 847 - 0
src/views/statisticalReport/components/salesLogisticsStatistics/mapTest.vue

@@ -0,0 +1,847 @@
+<template>
+  <div class="container">
+    <div id="amap-container"></div>
+    <div class="mapcontroller">
+      <div class="in_transit_information">
+        <label class="item_details">起点:{{ startPointName }}</label>
+        <br />
+        <label class="item_details">收货地址:{{ endPointName }}</label>
+        <br />
+      </div>
+      <div class="driving_information2">
+        <label class="item_details">时间:{{ runRoute.gtm }}</label>
+        <br />
+        <label class="item_details">车速:{{ runRoute.spd }}千米/小时</label>
+        <br />
+        <br />
+        <!--控制条-->
+        <div class="map-control" v-show="isActual">
+          <!--播放暂停按钮-->
+          <Icon
+            v-if="!isPlay"
+            class="play-icon play"
+            type="ios-play"
+            @click="
+              isPlay = true
+              play()
+              navgControl(playIcon)
+            "
+          />
+          <Icon
+            v-else
+            class="play-icon pause"
+            type="ios-pause"
+            @click="
+              isPlay = false
+              stop()
+              navgControl('pause')
+            "
+          />
+          <Icon class="play-icon quickly" type="ios-play" @click="addIndex()" />
+          <!--已播放时间-->
+          <!--进度条-->
+          <div class="mySlider">
+            <Slider
+              class="map-slider"
+              v-model="sliderVal"
+              :tip-format="hideFormat"
+              :step="0.0001"
+            ></Slider>
+          </div>
+        </div>
+      </div>
+    </div>
+    <el-row>
+      <el-button type="primary" @click="slow">慢速</el-button>
+      <el-button type="success" @click="middle">中速</el-button>
+      <el-button type="danger" @click="fast">快速</el-button>
+      <el-button type="success" @click="addIndex" plain>快进</el-button>
+      <el-button type="danger" @click="stop" plain>暂停</el-button>
+      <el-button type="success" @click="play" plain>开始</el-button>
+      <el-select
+        style="width:100px"
+        @change="changeParkingTime"
+        v-model="parkingTime"
+        placeholder="停车"
+      >
+        <el-option
+          v-for="item in parkingOptions"
+          :key="item.value"
+          :label="item.label"
+          :value="item.value"
+        >
+        </el-option>
+      </el-select>
+      <el-select
+        style="width:100px"
+        @change="changeLeaveTime"
+        v-model="leaveTime"
+        placeholder="离线"
+      >
+        <el-option
+          v-for="item in parkingOptions"
+          :key="item.value"
+          :label="item.label"
+          :value="item.value"
+        >
+        </el-option>
+      </el-select>
+    </el-row>
+    <div class="btnx">
+      <el-button type="primary" class="" @click="openInfo"
+        >打开信息窗体</el-button
+      >
+      <el-button type="primary" class="" @click="closeinfo"
+        >关闭信息窗口</el-button
+      >
+    </div>
+  </div>
+</template>
+
+<script>
+import { shallowRef } from '@vue/reactivity'
+import { lazyAMapApiLoaderInstance } from 'vue-amap'
+import Slider from './slider.vue'
+Vue.use(Slider)
+import Vue from 'vue'
+var infoWindow
+export default {
+  name: 'PathView',
+  props: {
+    orderNumber: '',
+    capacityNumber: '',
+    startPointName: '',
+    endPointName: ''
+  },
+  setup() {
+    const map = shallowRef(null)
+    return {
+      map
+    }
+  },
+  watch: {
+    //监听车牌号变化
+    orderNumber: {
+      deep: true,
+      handler(val, oldVal) {
+        console.log(val)
+        this.initData(val)
+      }
+    }
+  },
+  data() {
+    return {
+      ///che
+      isTimesChoose: false,
+      isActual: true,
+      isPlay: false,
+      passedTime: '12:02:10',
+      sliderVal: 0,
+      times: 1,
+      totalTime: '11',
+      speed: 10000,
+      startTime: '',
+      endTime: '',
+      //选择停车时长
+      parkingTime: null,
+      //停车时长选择区间
+      parkingOptions: [
+        {
+          value: 600000,
+          label: '10分钟'
+        },
+        {
+          value: 1200000,
+          label: '20分钟'
+        },
+        {
+          value: 1800000,
+          label: '30分钟'
+        },
+        {
+          value: 2400000,
+          label: '40分钟'
+        },
+        {
+          value: 3000000,
+          label: '50分钟'
+        },
+        {
+          value: 3600000,
+          label: '60分钟'
+        },
+        {
+          value: 36000000,
+          label: '关闭'
+        }
+      ],
+      //离线图标
+      leaveMark: [],
+      //停车图标
+      parkMark: [],
+      //选择离线时长
+      leaveTime: null,
+      //离线时长选择区间
+      leaveOptions: [
+        {
+          value: 600000,
+          label: '10分钟'
+        },
+        {
+          value: 1200000,
+          label: '20分钟'
+        },
+        {
+          value: 1800000,
+          label: '30分钟'
+        },
+        {
+          value: 2400000,
+          label: '40分钟'
+        },
+        {
+          value: 3000000,
+          label: '50分钟'
+        },
+        {
+          value: 3600000,
+          label: '60分钟'
+        },
+        {
+          value: 36000000,
+          label: '关闭'
+        }
+      ],
+      //已行驶轨迹
+      runRoute: {
+        agl: '',
+        gtm: '',
+        hgt: '',
+        lat: '',
+        lon: '',
+        mil: '',
+        spd: ''
+      },
+      point: '',
+      pointNext: '',
+      loading: null,
+      navgtrSpeed: 1,
+      //地图中心位置
+      centerPoint: {
+        pointLat: '',
+        pointLon: ''
+      },
+      //自定义窗体信息
+      ctmarkes: {
+        lat: '33.015888071433764',
+        lon: '115.96995235868168',
+        title: '豫SE8888',
+        details: '安徽省阜阳市颍东区阜阳舜岳水泥公司,西北方向,155.1米'
+      },
+      //运输详情
+      transportDetail: {
+        //车牌号
+        capacityNumber: '',
+        //规划路线
+        estimateRoute: [
+          {
+            lat: '33.015888071433764',
+            lon: '115.96995235868168'
+          }
+        ],
+        //规划线路
+        estimatePath: [[114.03046212985384, 32.49786984660489]],
+        //已行驶轨迹
+        runRoute: [
+          {
+            agl: '44',
+            gtm: '2022年03月09日 16:47:24',
+            hgt: '13',
+            lat: '32.906411535084985',
+            lon: '115.76177868692135',
+            mil: '429409.2',
+            spd: '17.0'
+          }
+        ],
+        runPath: [[114.03922119568348, 32.49746162481379]],
+        //当前位置
+        currentPointName: '中国达州市通川区',
+        //当前位置经纬度
+        currentPoint: {
+          lat: '',
+          lon: ''
+        },
+        //起点位置
+        startPointName: '中国达州市通川区',
+        //起点位置经纬度
+        startPoint: {
+          lon: '114.03922119568348',
+          lat: '32.49746162481379'
+        },
+        //终点位置
+        endPointName: '中国成都萧山',
+        //终点位置经纬度
+        endPoint: {
+          lon: '115.96995737755431',
+          lat: '33.01595479752097'
+        },
+        //自定义标记
+        content: [],
+        //异常位置
+        abnormalLocation: []
+      },
+      listPath: [],
+      //组件
+      pathSimplifierIns: {},
+      pathNavigator: {},
+      //地图解析
+      geocoder: null,
+      currentPointName: ''
+    }
+  },
+  created() {
+    let that = this
+    that.initData(that.orderNumber)
+  },
+  mounted() {},
+  methods: {
+    //停车时间改变
+    changeParkingTime() {
+      let that = this
+      //清除之前的停车点
+      that.hideParkingMark()
+      //计算时间的点
+      let calculationPoint = null
+      that.listPath[0].runRoute.forEach(function(item, indexOf) {
+        if (indexOf + 1 < that.listPath[0].runRoute.length) {
+          //判断calculationPoint是否为空,如果是空的说明当前没有在计算停车时间
+          if (calculationPoint == null && item.spd == '0.0') {
+            calculationPoint = item
+          } else if (calculationPoint != null && item.spd != '0.0') {
+            let beforeTime = that.stringToDate(calculationPoint.gtm)
+            let item2 = that.listPath[0].runRoute[indexOf]
+            let afterTime = that.stringToDate(item2.gtm)
+            let second = afterTime - beforeTime
+            if (second > that.parkingTime) {
+              let message = '停车:' + second / 60000
+              that.initParkingMarkes(
+                20,
+                35,
+                require('@/assets/img/park.png'),
+                calculationPoint.lon,
+                calculationPoint.lat,
+                message.split('.')[0] + '分钟'
+              )
+            }
+            calculationPoint = null
+          }
+        }
+      })
+    },
+    //字符串转为Date
+    stringToDate(dateString) {
+      console.log(dateString)
+      let dateStr = dateString
+        .replace('年', '-')
+        .replace('月', '-')
+        .replace('日', '')
+      return Date.parse(dateStr)
+    },
+    //停车所有离线图标
+    hideParkingMark() {
+      let that = this
+
+      that.parkMark.forEach(function(item, indexOf) {
+        item.hide()
+      })
+    },
+    //离线时间改变时获得超过时间的点信息
+    changeLeaveTime() {
+      let that = this
+      //关闭所有图标
+      that.hideLeaveMark()
+      that.listPath[0].runRoute.forEach(function(item, indexOf) {
+        if (indexOf + 1 < that.listPath[0].runRoute.length) {
+          let beforeTime = that.stringToDate(item.gtm)
+          let item2 = that.listPath[0].runRoute[indexOf + 1]
+          let afterTime = that.stringToDate(item2.gtm)
+          let second = afterTime - beforeTime
+          if (second > that.leaveTime) {
+            let message = '离线:' + second / 60000
+            that.initLeaveMarkes(
+              20,
+              35,
+              require('@/assets/img/leave.png'),
+              item2.lon,
+              item2.lat,
+              message.split('.')[0] + '分钟'
+            )
+          }
+        }
+      })
+    },
+    //关闭所有离线图标
+    hideLeaveMark() {
+      let that = this
+      that.leaveMark.forEach(function(item, indexOf) {
+        item.hide()
+      })
+    },
+    slow() {
+      console.log('slow')
+      let that = this
+      that.pathNavigator.setSpeed(1000)
+    },
+    middle() {
+      console.log('middle')
+      let that = this
+      that.pathNavigator.setSpeed(10000)
+    },
+    fast() {
+      console.log('fast')
+      let that = this
+      that.pathNavigator.setSpeed(100000)
+    },
+    play() {
+      let that = this
+      that.pathNavigator.resume()
+    },
+    stop() {
+      let that = this
+      that.pathNavigator.pause()
+    },
+    addIndex() {
+      let that = this
+      let increment = that.listPath[0].runPath.length * 0.1
+      that.pathNavigator.start(
+        (that.point + increment) % that.listPath[0].runPath.length
+      )
+    },
+    ///che
+    navgControl() {},
+    hideFormat(value) {
+      let that = this
+      that.sliderVal = value
+    },
+    initParkingMarkes(weight, height, image, lon, lat, title) {
+      let that = this
+      //图标标记点
+      let pointicon = new AMap.Icon({
+        size: new AMap.Size(weight, height), // 图标尺寸
+        image: image, // Icon的图像
+        imageOffset: new AMap.Pixel(0, 0), // 图像相对展示区域的偏移量,适于雪碧图等
+        imageSize: new AMap.Size(weight, height) // 根据所设置的大小拉伸或压缩图片
+      })
+      // 创建一个 Marker 实例:
+      var pointmarker = new AMap.Marker({
+        position: new AMap.LngLat(lon, lat), // 经纬度对象,也可以是经纬度构成的一维数组[116.39, 39.9]
+        icon: pointicon,
+        title: title
+      })
+      that.parkMark.push(pointmarker)
+      // 将创建的点标记添加到已有的地图实例:
+      that.map.add(pointmarker)
+    },
+    //创建离线和停车的标记
+    initLeaveMarkes(weight, height, image, lon, lat, title) {
+      let that = this
+      //图标标记点
+      let pointicon = new AMap.Icon({
+        size: new AMap.Size(weight, height), // 图标尺寸
+        image: image, // Icon的图像
+        imageOffset: new AMap.Pixel(0, 0), // 图像相对展示区域的偏移量,适于雪碧图等
+        imageSize: new AMap.Size(weight, height) // 根据所设置的大小拉伸或压缩图片
+      })
+      // 创建一个 Marker 实例:
+      var pointmarker = new AMap.Marker({
+        position: new AMap.LngLat(lon, lat), // 经纬度对象,也可以是经纬度构成的一维数组[116.39, 39.9]
+        icon: pointicon,
+        title: title
+      })
+      that.leaveMark.push(pointmarker)
+      // 将创建的点标记添加到已有的地图实例:
+      that.map.add(pointmarker)
+    },
+    initData(orderNumber) {
+      let that = this
+      that.axios
+        .post('/api/v1/otms/fullPath?orderNumber=' + orderNumber)
+        .then(res => {
+          console.log(res.data)
+          if (res.data.data == '-1') {
+            this.$message.error('运输订单未关闭的自提车辆无权查看!')
+          } else if (res.data.data.startAndEndRoutes != null) {
+            that.listPath = res.data.data.startAndEndRoutes
+            that.startTime = res.data.data.startAndEndRoutes[0].runRoute[0].gtm
+            that.endTime =
+              res.data.data.startAndEndRoutes[0].runRoute[
+                res.data.data.startAndEndRoutes[0].runRoute.length - 1
+              ].gtm
+            that.initMap()
+          } else {
+            that.listPath = []
+            this.$message.error('车辆没有开启GPS')
+          }
+        })
+    },
+    endline() {
+      let that = this
+      that.initPolyline(that.listPath[0].estimatePath, '#FF0000')
+    },
+    //创建起点终点当前点
+    threeMarker() {
+      let that = this
+      that.listPath.forEach((element, index) => {
+        //开始标记点
+        if (element.startPoint.lon != '' && element.startPoint.lat != '') {
+          that.initMarkes(
+            20,
+            35,
+            require('@/assets/img/start.png'),
+            element.startPoint.lon,
+            element.startPoint.lat,
+            '起点'
+          )
+        }
+        //当前点
+        that.getCurrentPointName([
+          element.runRoute[element.runRoute.length - 1].lon,
+          element.runRoute[element.runRoute.length - 1].lat
+        ])
+        //结束标记点
+        if (element.endPoint.lon != '' && element.endPoint.lat != '') {
+          that.initMarkes(
+            20,
+            35,
+            require('@/assets/img/end.png'),
+            element.endPoint.lon,
+            element.endPoint.lat,
+            '终点'
+          )
+        }
+      })
+    },
+    //获得结束地址
+    getCurrentPointName(lnglatXY) {
+      let that = this
+      that.geocoder.getAddress(lnglatXY, function(status, result) {
+        if (status === 'complete' && result.info === 'OK') {
+          that.currentPointName = result.regeocode.formattedAddress
+          that.initCustomMarkes(
+            that.capacityNumber,
+            '位置:' +
+              that.currentPointName +
+              '<br/>' +
+              '距离:' +
+              that.listPath[0].miled +
+              '<br/>' +
+              '时间范围:' +
+              that.startTime +
+              ' 至 ' +
+              that.endTime,
+
+            lnglatXY[0],
+            lnglatXY[1]
+          )
+        }
+      })
+    },
+    //defualt数据
+    defaultDate() {
+      // let that=this;
+      // that.pathNavigator.start(that.listPath[0].runPath.length)
+      // that.pathNavigator.pause();
+    },
+    //初始化地图
+    initMap() {
+      lazyAMapApiLoaderInstance.load().then(() => {
+        let that = this
+        that.map = new AMap.Map('amap-container', {
+          //设置地图容器id
+          viewMode: '2D', //是否为2D地图模式
+          zoom: 10, //初始化地图级别
+          center: [105.602725, 37.076636] //初始化地图中心点位置
+        })
+        that.initGeocoder()
+        that.initPathSimplifier()
+        that.threeMarker()
+        //that.initCustomMarkes(that.capacityNumber+"("+that.listPath[0].miled+")",that.listPath[0].currentPointName,that.listPath[0].currentPoint.lon,that.listPath[0].currentPoint.lat)
+        that.endline()
+      })
+    },
+    initCustomMarkes(title, details, lon, lat) {
+      let that = this
+      //自定义窗体内容
+      var content = [
+        "<div  style='top:1px;width: 200px; background-color: rgba(22, 160, 133, 1);' ><font color='white'>" +
+          title +
+          '</font>',
+        "<div style='background-color:(22, 160, 133, 1); ;'><font color='white'>" +
+          details +
+          '</font></div></div>'
+      ]
+      // 创建 infoWindow 实例
+      infoWindow = new AMap.InfoWindow({
+        content: content.join('<br>') //传入 dom 对象,或者 html 字符串
+      })
+      // 打开信息窗体
+      infoWindow.open(that.map, [lon, lat])
+    },
+    // 关闭信息窗口
+    closeinfo() {
+      infoWindow.close()
+    },
+    openInfo() {
+      let lon = null
+      let lat = null
+      console.log(this.listPath)
+      this.listPath.forEach(e => {
+        if (e.endPoint != {} && e.endPoint != '' && e.endPoint != null) {
+          lon = e.endPoint.lon
+          lat = e.endPoint.lat
+        } else {
+          lon = e.runRoute[e.runRoute.length - 1].lon
+          lat = e.runRoute[e.runRoute.length - 1].lat
+        }
+      })
+      infoWindow.open(this.map, [lon, lat])
+    },
+    initPolyline(path, color) {
+      let that = this
+      //预计轨迹
+      var endLine = new AMap.Polyline({
+        map: that.map,
+        path: path,
+        isOutline: true,
+        outlineColor: color,
+        borderWeight: 0,
+        strokeColor: '#FF0000',
+        strokeOpacity: 1,
+        strokeWeight: 5,
+        // 折线样式还支持 'dashed'
+        strokeStyle: 'solid',
+        // strokeStyle是dashed时有效
+        strokeDasharray: [10, 5],
+        lineJoin: 'round',
+        lineCap: 'round',
+        zIndex: 50
+      })
+      that.map.setFitView([[endLine]])
+    },
+    //创建简单的标记
+    initMarkes(weight, height, image, lon, lat, title) {
+      let that = this
+      //图标标记点
+      let pointicon = new AMap.Icon({
+        size: new AMap.Size(weight, height), // 图标尺寸
+        image: image, // Icon的图像
+        imageOffset: new AMap.Pixel(0, 0), // 图像相对展示区域的偏移量,适于雪碧图等
+        imageSize: new AMap.Size(weight, height) // 根据所设置的大小拉伸或压缩图片
+      })
+      // 创建一个 Marker 实例:
+      var pointmarker = new AMap.Marker({
+        position: new AMap.LngLat(lon, lat), // 经纬度对象,也可以是经纬度构成的一维数组[116.39, 39.9]
+        icon: pointicon,
+        title: title
+      })
+      // 将创建的点标记添加到已有的地图实例:
+      that.map.add(pointmarker)
+    },
+    //创建轨迹和巡航器
+    initPathSimplifier() {
+      let that = this
+      // ...你的操作
+      new AMapUI.load(['ui/misc/PathSimplifier'], PathSimplifier => {
+        if (!PathSimplifier.supportCanvas) {
+          alert('当前环境不支持 Canvas!')
+          return
+        }
+        //创建轨迹和巡航器
+        // 创建组件实例
+        that.pathSimplifierIns = new PathSimplifier({
+          map: that.map,
+          zIndex: 100, // 图层叠加顺序
+          data: that.listPath, // 巡航路径
+          // 获取巡航路径中的路径坐标数组
+          getPath: (pathData, pathIndex) => {
+            return pathData.runPath
+          },
+          //鼠标悬浮停时显示消息
+          getHoverTitle: function(pathData, pathIndex, pointIndex) {
+            //返回鼠标悬停时显示的信息
+            if (pointIndex >= 0) {
+              if (pathData.runRoute[pointIndex].gtm !== 'undefined') {
+                //鼠标悬停在某个轨迹节点上
+                return (
+                  pathData.runRoute[pointIndex].gtm +
+                  ',速度' +
+                  pathData.runRoute[pointIndex].spd +
+                  '千米/小时'
+                )
+              }
+            }
+          },
+          //设置轨迹样式
+          renderOptions: {
+            //轨迹线的样式
+            pathLineStyle: {
+              strokeStyle: 'black',
+              lineWidth: 6,
+              dirArrowStyle: true
+            }
+          }
+        })
+        // 创建巡航器
+        that.pathNavigator = that.pathSimplifierIns.createPathNavigator(0, {
+          loop: true, // 是否循环
+          speed: that.speed, // 速度(km/h)
+          pathNavigatorStyle: {
+            width: 20,
+            height: 40,
+            content: PathSimplifier.Render.Canvas.getImageContent(
+              require('@/assets/img/smallcar.png'),
+              onload,
+              onerror
+            ),
+            strokeStyle: null,
+            fillStyle: null
+          }
+        })
+        //开启巡航
+        that.pathNavigator.start()
+        that.defaultDate()
+
+        //开始事件
+        that.pathNavigator.on('start resume', function() {
+          // that.navgtr._startTime = Date.now();
+          // that.navgtr._startDist = this.getMovedDistance();
+        })
+        //暂停
+        that.pathNavigator.on('stop pause', function() {
+          // that.navgtr._movedTime = Date.now() - that.navgtr._startTime;
+          // that.navgtr._movedDist = this.getMovedDistance() - that.navgtr._startDist;
+        })
+        that.pathNavigator.on('move', function(data, value) {
+          that.updateLable(value)
+        })
+      })
+    },
+    updateLable(value) {
+      let that = this
+      that.point = value.dataItem.pointIndex
+      that.runRoute = value.dataItem.pathData.runRoute[that.point]
+      that.sliderVal =
+        (value.dataItem.pointIndex / value.dataItem.pathData.runRoute.length) *
+        100
+    },
+    changeSpeed(value) {
+      // console.log(value)
+      // let that=this;
+      // that.times=value;
+    },
+    playIcon() {
+      console.log('nihoa')
+    },
+    //逆解码函数
+    initGeocoder() {
+      let that = this
+      console.log('initGeocoder')
+      AMap.plugin('AMap.Geocoder', function() {
+        that.geocoder = new AMap.Geocoder({
+          radius: 1000,
+          extensions: 'all'
+        })
+
+        console.log(that.geocoder)
+      })
+    }
+  }
+}
+</script>
+<style>
+.mapcontroller {
+  width: 250px;
+  height: 260px;
+  background: white;
+  position: absolute;
+  z-index: 99;
+  top: 0;
+  left: 0;
+}
+.container {
+  width: 100%;
+  height: 100%;
+}
+.item_details {
+  display: block;
+  margin-top: 20px;
+  position: relative;
+  left: 30px;
+  width: 200px;
+  height: 0px;
+}
+#amap-container {
+  position: relative;
+  width: 100%;
+  height: 100%;
+  overflow: hidden;
+  margin: 0;
+  font-family: '微软雅黑';
+}
+.driving_information2 {
+  position: relative;
+  top: 70px;
+}
+.driving_information3 {
+  position: absolute;
+  z-index: 99;
+  top: 0;
+  left: 0;
+  position: relative;
+  top: 50px;
+}
+
+/* 进度条 */
+.mySlider {
+  width: 150px;
+  height: 20px;
+  display: inline-block;
+  position: relative;
+  left: 32px;
+}
+.play {
+  position: relative;
+  left: 28px;
+}
+.quickly {
+  float: right;
+  position: relative;
+  left: -20px;
+  top: 10px;
+}
+.pause {
+  position: relative;
+  left: 28px;
+}
+.passed-time {
+  position: relative;
+  left: 5px;
+}
+.end-time {
+  position: relative;
+  left: 5px;
+}
+.map-times {
+  position: relative;
+  background-color: red;
+  width: 40px;
+}
+</style>
+<style lang="scss" scoped>
+.btnx {
+  z-index: 1000;
+  position: fixed;
+  bottom: 10px;
+  right: 10px;
+}
+</style>

+ 12 - 6
src/views/statisticalReport/components/salesLogisticsStatistics/saleSteelAllReport.vue

@@ -301,6 +301,12 @@
           label="送货单打印状态"
           align="center"
         >
+<<<<<<< HEAD
+=======
+          <template slot-scope="scope">
+            <span v-show="scope.row.isPrintDelivery == 1">已打印</span>
+          </template>
+>>>>>>> aa6d2fe5d2233a2fe3f17744cc9c6bdd3b78599c
         </el-table-column>
         <el-table-column prop="saler" label="业务员" align="center">
         </el-table-column>
@@ -676,6 +682,12 @@ export default {
           console.log(res.data)
           this.isShow2 = true
           this.srcList2 = []
+          if (res.data.resultReceiveNotePhoto != null) {
+            this.srcList2.push({
+              title: '签收单',
+              src: res.data.resultReceiveNotePhoto
+            })
+          }
           if (res.data.resultSignedNotePhoto != null) {
             this.srcList2.push({
               title: '质保书',
@@ -688,12 +700,6 @@ export default {
               src: res.data.resultEmptyContainerPhoto
             })
           }
-          if (res.data.resultReceiveNotePhoto != null) {
-            this.srcList2.push({
-              title: '签收单',
-              src: res.data.resultReceiveNotePhoto
-            })
-          }
         })
     },
     rowClick() {

+ 390 - 107
src/views/statisticalReport/components/salesLogisticsStatistics/saleSteelReports.vue

@@ -9,7 +9,7 @@
             placeholder="请选择需筛选的内容"
             clearable
             @change="changeScreen"
-            style="width:120px"
+            style="width:100px"
           >
             <el-option
               v-for="item in options"
@@ -20,7 +20,7 @@
             </el-option>
           </el-select>
           <el-input
-            style="width:180px"
+            style="width:170px"
             v-model="input"
             placeholder="请输入查询条件"
             clearable
@@ -31,7 +31,7 @@
             v-model="screen1"
             placeholder="请选择需筛选的内容"
             clearable
-            style="width:120px"
+            style="width:100px"
           >
             <el-option
               v-for="item in options1"
@@ -42,7 +42,7 @@
             </el-option>
           </el-select>
           <el-input
-            style="width:180px"
+            style="width:170px"
             v-model="input1"
             placeholder="请输入查询条件"
             clearable
@@ -56,7 +56,7 @@
             v-model="startTime"
             type="date"
             placeholder="选择日期"
-            style="width:180px"
+            style="width:150px"
           >
           </el-date-picker>
           <span>至</span>
@@ -64,7 +64,7 @@
             v-model="endTime"
             type="date"
             placeholder="选择日期"
-            style="width:180px"
+            style="width:150px"
           >
           </el-date-picker>
           <el-button type="primary" class="btn" @click="onclick">
@@ -73,7 +73,7 @@
         </el-form-item>
         <el-form-item>
           <el-button type="primary" @click="exportAllReportToExcel"
-            ><i class="el-icon-download"></i>Excel</el-button
+            >下载Excel</el-button
           >
         </el-form-item>
         <el-form-item>
@@ -81,6 +81,17 @@
             <i class="el-icon-refresh"></i>
           </el-button>
         </el-form-item>
+        <el-form-item v-if="isShowOperate">
+          <el-button type="primary" @click="checkTrans()"
+            ><i class="el-icon-truck"></i>轨迹</el-button
+          >
+          <el-button type="primary" @click="operation()"
+            ><i class="el-icon-edit"></i>更改</el-button
+          >
+          <el-button type="primary" @click="checkPoint()"
+            ><i class="el-icon-map-location"></i>实时路径</el-button
+          >
+        </el-form-item>
         <el-form-item>
           <span style="margin-left: 1rem;font-size:16px">车数/件数:</span>
           <span style="font-size:16px"
@@ -98,8 +109,12 @@
         style="width: 100%; margin-top: 20px"
         :max-height="maxHeight"
         :height="maxHeight"
-        :row-style="{ height: '30px' }"
-        :cell-style="{ fontWeight: '500' }"
+        :row-class-name="tableRowClassName"
+        @cell-click="cellClik"
+        @cell-mouse-enter="cellMouse"
+        @cell-mouse-leave="cellLeave"
+        @row-click="rowClick"
+        :cell-style="cellStyle"
       >
         <el-table-column
           width="50"
@@ -112,8 +127,9 @@
         <el-table-column
           prop="orderTime"
           label="订单日期"
-          width="160px"
+          width="110px"
           align="center"
+          show-overflow-tooltip
         >
         </el-table-column>
         <el-table-column
@@ -128,7 +144,8 @@
           prop="carrierName"
           label="承运商"
           align="center"
-          width="120px"
+          width="60px"
+          show-overflow-tooltip
         >
         </el-table-column>
         <el-table-column
@@ -136,7 +153,8 @@
           column-key="capacityNo"
           label="车牌号"
           align="center"
-          width="150px"
+          width="90px"
+          show-overflow-tooltip
         >
         </el-table-column>
         <el-table-column
@@ -144,6 +162,7 @@
           label="物资名称"
           align="center"
           width="150px"
+          show-overflow-tooltip
         >
         </el-table-column>
         <el-table-column
@@ -151,31 +170,79 @@
           label="物资规格"
           align="center"
           sortable
+          show-overflow-tooltip
+          width="120px"
         >
         </el-table-column>
         <el-table-column
           prop="materialNum"
           label="物资件数"
           align="center"
-          width="150px"
+          width="50px"
+        >
+        </el-table-column>
+        <el-table-column
+          prop="addressPlace"
+          label="收货地址"
+          width="250px"
+          show-overflow-tooltip
+        >
+        </el-table-column>
+        <el-table-column
+          prop="orderStatus"
+          label="运单状态"
+          align="center"
+          show-overflow-tooltip
+        >
+        </el-table-column>
+        <el-table-column
+          prop="entryGateTime"
+          label="进厂时间"
+          width="130px"
+          show-overflow-tooltip
+        >
+        </el-table-column>
+        <el-table-column
+          prop="tareWeightTime"
+          label="皮重时间"
+          width="130px"
+          show-overflow-tooltip
         >
         </el-table-column>
-        <el-table-column prop="addressPlace" label="收货地址" width="200px">
+        <el-table-column prop="tareWeight" label="皮重" show-overflow-tooltip>
         </el-table-column>
-        <el-table-column prop="orderStatus" label="运单状态" align="center">
+        <el-table-column
+          prop="loadTime"
+          label="装货时间"
+          width="130px"
+          show-overflow-tooltip
+        >
         </el-table-column>
-        <el-table-column prop="grossWeight" label="毛重"> </el-table-column>
-        <el-table-column prop="grossWeightTime" label="毛重时间" width="130px">
+        <el-table-column
+          prop="grossWeightTime"
+          label="毛重时间"
+          width="130px"
+          show-overflow-tooltip
+        >
         </el-table-column>
-        <el-table-column prop="tareWeight" label="皮重"> </el-table-column>
-        <el-table-column prop="tareWeightTime" label="皮重时间" width="130px">
+        <el-table-column prop="grossWeight" label="毛重" show-overflow-tooltip>
         </el-table-column>
-        <el-table-column prop="netWeight" label="净重"> </el-table-column>
-        <el-table-column prop="entryGateTime" label="进厂时间" width="130px">
+        <el-table-column prop="netWeight" label="净重" show-overflow-tooltip>
         </el-table-column>
-        <el-table-column prop="loadTime" label="装货时间" width="130px">
+        <el-table-column
+          prop="isPrintDelivery"
+          label="送货单打印"
+          align="center"
+          width="100px"
+          show-overflow-tooltip
+        >
         </el-table-column>
-        <el-table-column prop="outGateTime" label="出厂时间" width="130px">
+        <el-table-column
+          prop="outGateTime"
+          label="出厂时间"
+          width="130px"
+          show-overflow-tooltip
+        >
         </el-table-column>
         <el-table-column
           prop="arrivalAddress"
@@ -196,32 +263,44 @@
           label="运输订单号"
           width="180px"
           align="center"
+          show-overflow-tooltip
         >
         </el-table-column>
         <el-table-column
           prop="capacityTel"
           label="司机电话"
-          width="250px"
+          width="120px"
           align="center"
+          show-overflow-tooltip
         >
         </el-table-column>
         <el-table-column
-          prop="isPrintDelivery"
-          label="送货单打印状态"
+          prop="saler"
+          label="业务员"
           align="center"
-          width="150px"
+          show-overflow-tooltip
         >
+<<<<<<< HEAD
         </el-table-column>
         <el-table-column prop="saler" label="业务员" align="center">
+=======
+>>>>>>> aa6d2fe5d2233a2fe3f17744cc9c6bdd3b78599c
         </el-table-column>
         <el-table-column
           prop="shipperName"
           label="发货单位"
           width="170px"
           align="center"
+          show-overflow-tooltip
         >
         </el-table-column>
-        <el-table-column prop="consigneeTel" label="收货客户电话" width="120px">
+        <el-table-column
+          prop="consigneeTel"
+          label="收货客户电话"
+          width="120px"
+          align="center"
+          show-overflow-tooltip
+        >
         </el-table-column>
         <el-table-column prop="isSelfMention" label="是否自提" align="center">
         </el-table-column>
@@ -230,31 +309,56 @@
           label="销售订单号"
           width="200px"
           align="center"
+          show-overflow-tooltip
         >
         </el-table-column>
         <el-table-column
           prop="saleOrderStatus"
           label="销售订单状态"
           width="100px"
+          show-overflow-tooltip
         >
         </el-table-column>
-        <el-table-column prop="closeEntryId" label="金蝶分录ID" width="100px">
-        </el-table-column>
         <el-table-column
-          prop="operation"
-          label="操作"
+          prop="closeEntryId"
+          label="金蝶分录ID"
           width="100px"
-          fixed="right"
-          align="center"
+          show-overflow-tooltip
         >
-          <template slot-scope="scope">
-            <el-button type="text" @click="operation(scope.row)"
-              >编辑</el-button
-            >
-          </template>
         </el-table-column>
       </el-table>
     </div>
+    <div>
+      <vxe-modal
+        width="549px"
+        height="731px"
+        v-model="isShow3"
+        show-footer
+        class="vxeModal"
+      >
+        <div class="demo-image__preview">
+          <el-image style=" height:731px;text-align:center;" :src="src">
+            <div slot="error" class="image-slot">
+              <span>司机未上传图片</span>
+            </div>
+          </el-image>
+        </div>
+      </vxe-modal>
+      <vxe-modal width="549px" height="731px" v-model="isShow4" show-footer>
+        <div
+          class="demo-image__preview"
+          v-for="item in srcList2"
+          :key="item.src"
+        >
+          <span>{{ item.title }}</span>
+          <el-image style="height:731px;text-align:center" :src="item.src">
+            <div slot="error" class="image-slot">
+              <span>司机未上传图片</span>
+            </div>
+          </el-image>
+        </div>
+      </vxe-modal>
+    </div>
     <div class="dialog">
       <el-dialog
         title="运单详情"
@@ -434,7 +538,7 @@
                   type="success"
                   icon="el-icon-money"
                   circle
-                  @click="toPhotoClick"
+                  @click="toPhotoClick(steelMap.orderNo, 0)"
                 ></el-button
               ></span>
             </div>
@@ -448,13 +552,12 @@
                   type="success"
                   icon="el-icon-money"
                   circle
-                  @click="receipctPhotoClick"
+                  @click="receipctPhotoClick(steelMap.orderNo, 0)"
                 ></el-button
               ></span>
             </div>
           </div>
         </div>
-
         <div class="table">
           <el-table
             :data="steelMap.mapList"
@@ -554,46 +657,89 @@
           </el-table>
         </div>
         <span slot="footer" class="dialog-footer">
-          <el-button @click="centerDialogVisible = false">取 消</el-button>
-          <el-button type="primary" @click="centerDialogVisible = false"
-            >确 定</el-button
-          >
+          <el-button @click="centerDialogVisible = false">返 回</el-button>
         </span>
-      </el-dialog>
-    </div>
-    <div>
-      <vxe-modal width="549px" height="731px" v-model="isShow" show-footer>
-        <div class="demo-image__preview">
-          <el-image
-            style=" height:731px;text-align:center;"
-            :src="src"
-            :preview-src-list="srcList"
+        <div>
+          <vxe-modal
+            width="549px"
+            height="731px"
+            v-model="isShow"
+            show-footer
+            class="vxeModal"
+            title="抵达上传照片"
           >
-          </el-image>
-        </div>
-      </vxe-modal>
-      <vxe-modal width="549px" height="731px" v-model="isShow2" show-footer>
-        <div class="demo-image__preview">
-          <el-image
-            style=" height:731px;text-align:center"
-            :src="src2"
-            :preview-src-list="srcList2"
+            <div class="demo-image__preview">
+              <el-image style=" height:731px;text-align:center;" :src="src">
+                <div slot="error" class="image-slot">
+                  <span>司机未上传图片</span>
+                </div>
+              </el-image>
+            </div>
+          </vxe-modal>
+          <vxe-modal
+            width="549px"
+            height="731px"
+            v-model="isShow2"
+            show-footer
+            title="签收上传照片"
           >
-          </el-image>
+            <div
+              class="demo-image__preview"
+              v-for="(item, index) in srcList2"
+              :key="index"
+            >
+              <span>{{ item.title }}</span>
+              <el-image style="height:731px;text-align:center" :src="item.src">
+                <div slot="error" class="image-slot">
+                  <span>司机未上传图片</span>
+                </div>
+              </el-image>
+            </div>
+          </vxe-modal>
         </div>
+      </el-dialog>
+    </div>
+    <div style="height: 100%">
+      <vxe-modal
+        width="1237"
+        height="731"
+        v-model="value7"
+        show-zoom
+        resize
+        title="轨迹查询"
+      >
+        <template #default>
+          <PathView v-bind.sync="pathOption"></PathView>
+        </template>
       </vxe-modal>
     </div>
+    <div style="height:100%">
+      <vxe-modal
+        width="1237"
+        height="731"
+        v-model="value8"
+        show-zoom
+        resize
+        title="实时路径"
+        ><currentLocation :carNumber="carNumber"></currentLocation
+      ></vxe-modal>
+    </div>
   </div>
 </template>
 
 <script>
 import { sjTime, isVehicleNumber } from '@/utils/sharedJsFile'
 import { getCookie } from '@/utils/util.js'
-
+import PathView from './mapTest.vue'
+import currentLocation from './currentLocation.vue'
 export default {
+  components: {
+    PathView,
+    currentLocation
+  },
   data() {
     return {
-      consigneeFiltList: [],
+      carNumber: '',
       //弹出框
       centerDialogVisible: false,
       //根据车序号查询的值
@@ -601,6 +747,8 @@ export default {
       //钢材子表数据
       steelList: [],
       drawer: false,
+      isShow3: false,
+      isShow4: false,
       input: null,
       screen: '',
       screen1: '',
@@ -644,6 +792,7 @@ export default {
       tableData: [],
       spanArr: [],
       pos: 0,
+      //需要合并列的名称
       mergeList: [
         '序号',
         '整车操作',
@@ -662,11 +811,10 @@ export default {
         '下单客户',
         '收货地址',
         '业务员',
-        '送货单打印状态',
+        '送货单打印',
         '收货客户电话',
         '金蝶分录ID',
         '是否自提',
-        '操作',
         '订单日期'
       ],
       //钢材多拼车辆线路ID
@@ -715,24 +863,129 @@ export default {
       src2: '',
       isShow2: false,
       input1: '',
-      maxHeight: window.innerHeight - 140
+      maxHeight: window.innerHeight - 140,
+      //轨迹窗口
+      value7: false,
+      //实时路径窗口
+      value8: false,
+      pathOption: {
+        orderNumber: '',
+        capacityNumber: '',
+        startPointName: '',
+        endPointName: ''
+      },
+      saleSteelKey: false,
+      tableRowIndex: '',
+      isRowClick: 0,
+      orgCodeList: [
+        'wuliuyunshubu',
+        'dagangadmin',
+        'shichangxinxibu',
+        'xiaoshouyewuyuan',
+        'zidonghuabu'
+      ],
+      isShowOperate: false
     }
   },
   created() {
+    if (this.orgCodeList.includes(getCookie('orgCode'))) {
+      this.isShowOperate = true
+    }
     this.getSteelReport()
   },
   mounted() {
-    window.onresize = () => {
-      return (() => {
-        this.maxHeight = window.innerHeight - 140
-      })()
-    }
+    this.$nextTick(() => {
+      window.onresize = () => {
+        return (() => {
+          this.maxHeight = window.innerHeight - 150
+        })()
+      }
+    })
   },
   activated() {
-    this.maxHeight = window.innerHeight - 140
+    this.maxHeight = window.innerHeight - 150
   },
   computed: {},
   methods: {
+    cellStyle({ row, column, rowIndex, columnIndex }) {
+      if (
+        column.property == 'arrivalAddress' ||
+        column.property == 'receiptAddress'
+      ) {
+        return 'color : blue'
+      }
+    },
+    rowClick(row, column, event) {
+      this.steelMap = {}
+      this.tableRowIndex = row.group
+      this.isRowClick = 1
+      this.steelMap = row
+    },
+    tableRowClassName({ row, rowIndex }) {
+      if (row.group == this.tableRowIndex && this.tableRowIndex !== '') {
+        return 'warning-row'
+      }
+    },
+    cellMouse(row, column, cell, event) {
+      if (this.isRowClick == 0) {
+        this.tableRowIndex = row.group
+      }
+    },
+    cellLeave(row, column, cell, event) {
+      if (this.isRowClick == 0) {
+        this.tableRowIndex = ''
+      }
+    },
+    // reset() {
+    //   var that = this
+    //   that.$nextTick(() => {
+    //     that.saleSteelKey = !that.saleSteelKey
+    //   })
+    // },
+    checkTrans(row) {
+      this.isRowClick = 0
+      if (Object.values(this.steelMap).length == 0) {
+        this.$message.error('请点击需要执行更改操作的行!')
+        return
+      }
+      if (typeof row === 'undefined') {
+        row = this.steelMap
+      }
+      if (row.outGateTime == null) {
+        this.$message.error('该车还未出厂,暂无轨迹')
+        return
+      }
+      let that = this
+      that.axios
+        .post('/api/v1/otms/fullPath?orderNumber=' + row.orderNo)
+        .then(res => {
+          console.log(res.data)
+          if (res.data.data == '-1') {
+            this.$message.error('运输订单未关闭的自提车辆无权查看!')
+          } else if (res.data.data.startAndEndRoutes != null) {
+            that.pathOption.orderNumber = row.orderNo
+            that.pathOption.capacityNumber = row.capacityNo
+            that.pathOption.startPointName = '达钢集团小东门'
+            that.pathOption.endPointName = row.arrivalAddress
+            that.value7 = true
+          } else {
+            this.$message.error('车辆没有开启GPS')
+          }
+        })
+    },
+    cellClik(row, column, cell, event) {
+      console.log(row)
+      if (column.property == 'arrivalAddress') {
+        if (row.orderNo && row.arrivalAddress) {
+          this.toPhotoClick(row.orderNo, 1)
+        }
+      }
+      if (column.property == 'receiptAddress') {
+        if (row.orderNo && row.receiptAddress) {
+          this.receipctPhotoClick(row.orderNo, 1)
+        }
+      }
+    },
     //反关闭运单
     reverseCloseOrder() {
       this.axios
@@ -744,12 +997,16 @@ export default {
     },
     //筛选
     //筛选客户
-    filterConsignee(value, row, column) {
-      return row.consigneeName === value
-    },
     //点击操作弹出框
     operation(row) {
-      // debugger
+      this.isRowClick = 0
+      if (Object.values(this.steelMap).length == 0) {
+        this.$message.error('请点击需要执行更改操作的行!')
+        return
+      }
+      if (typeof row === 'undefined') {
+        row = this.steelMap
+      }
       this.axios
         .post(
           '/api/v1/tms/getSteelReportDetailsBySmId?saleOrderMaterialId=' +
@@ -765,34 +1022,59 @@ export default {
         })
     },
     //查看抵达图
-    toPhotoClick() {
+    toPhotoClick(orderNo, num) {
       this.axios
-        .post(
-          '/api/v1/otms/getArrivalPhoto?orderNumber=' + this.steelMap.orderNo
-        )
+        .post('/api/v1/otms/getArrivalPhoto?orderNumber=' + orderNo)
         .then(res => {
           this.srcList = []
           this.src = res.data.data
-          this.isShow = true
+          if (num == 1) {
+            this.isShow3 = true
+          } else {
+            this.isShow = true
+          }
           this.srcList.push(res.data.data)
         })
     },
+    //查看实时路径
+    checkPoint() {
+      if (this.input || this.input1 || this.steelMap.capacityNo) {
+        this.carNumber = this.input || this.input1 || this.steelMap.capacityNo
+        console.log(this.carNumber)
+        this.value8 = true
+      } else {
+        this.$message.error('请输入或者点击有车牌号的行查询车牌号的实时路径')
+      }
+    },
     //查看签收图
-    receipctPhotoClick() {
+    receipctPhotoClick(orderNo, num) {
       this.axios
-        .post(
-          '/api/v1/otms/getReceivingPhotoByUrl?orderNumber=' +
-            this.steelMap.orderNo
-        )
+        .post('/api/v1/otms/getReceivingPhotoByUrl?orderNumber=' + orderNo)
         .then(res => {
           console.log(res.data)
-          this.isShow2 = true
+          if (num == 1) {
+            this.isShow4 = true
+          } else {
+            this.isShow2 = true
+          }
           this.srcList2 = []
-          this.src2 = res.data.resultSignedNotePhoto
-          this.srcList2.push(res.data.resultSignedNotePhoto)
-          this.srcList2.push(res.data.resultEmptyContainerPhoto)
           if (res.data.resultReceiveNotePhoto != null) {
-            this.srcList2.push(res.data.resultReceiveNotePhoto)
+            this.srcList2.push({
+              title: '签收单',
+              src: res.data.resultReceiveNotePhoto
+            })
+          }
+          if (res.data.resultSignedNotePhoto != null) {
+            this.srcList2.push({
+              title: '质保书',
+              src: res.data.resultSignedNotePhoto
+            })
+          }
+          if (res.data.resultEmptyContainerPhoto != null) {
+            this.srcList2.push({
+              title: '空货箱照片',
+              src: res.data.resultEmptyContainerPhoto
+            })
           }
         })
     },
@@ -1030,7 +1312,7 @@ export default {
             }
           })
           .catch(() => {
-            this.$message.error('派车失败,请联系管理员')
+            this.$message.error(res.data.data)
             this.operation(this.steelMap)
             this.getSteelReport()
             loading.close()
@@ -1486,6 +1768,13 @@ export default {
     },
     //查询,输入查询条件
     onclick() {
+      this.isRowClick = 0
+      const loading = this.$loading({
+        lock: true,
+        text: '正在获取数据',
+        spinner: 'el-icon-loading',
+        background: 'rgba(0, 0, 0, 0.7)'
+      })
       let startTime = null
       let endTime = null
       let carrierSsoId = null
@@ -1515,9 +1804,9 @@ export default {
       }
       if (this.screen1 == '下单客户') {
         consigneeName = this.input1
-      } else if (this.screen == '承运商') {
+      } else if (this.screen1 == '承运商') {
         carrierName = this.input1
-      } else if (this.screen == '车牌号') {
+      } else if (this.screen1 == '车牌号') {
         capacityNo = this.input1
       } else {
         remark = this.input1
@@ -1546,6 +1835,7 @@ export default {
         .then(res => {
           this.tableData = res.data.data
           this.getSpanArr(res.data.data)
+          loading.close()
         })
     },
     //重新获取表格数据
@@ -1554,6 +1844,7 @@ export default {
     },
     //获取钢材统计报表
     getSteelReport() {
+      this.isRowClick = 0
       let startTime = null
       let endTime = null
       let carrierSsoId = null
@@ -1619,14 +1910,6 @@ export default {
         )
         .then(res => {
           this.tableData = res.data.data
-          // { text: '专用线', value: '专用线' }
-          // { text: '达州站', value: '达州站' }
-          // this.consigneeFiltList = this.tableData.forEach(e => {
-          //   let map = {};
-          //   map.text = e.consigneeName;
-          //   map.value = e.consigneeName;
-          //   return map;
-          // });
           this.getSpanArr(res.data.data)
         })
     }
@@ -1645,7 +1928,7 @@ export default {
     margin-top: 20px;
     ::-webkit-scrollbar {
       // width: 20px;
-      height: 30px;
+      height: 20px;
       background-color: transparent;
     }
   }

+ 151 - 0
src/views/statisticalReport/components/salesLogisticsStatistics/slider.vue

@@ -0,0 +1,151 @@
+<template>
+  <div class="slider" ref="slider">
+    <div class="process" :style="{ width }"></div>
+    <div class="thunk" ref="trunk" :style="{ left }">
+      <div class="block"></div>
+      <div class="tips">
+        <span>{{ scale * 100 }}</span>
+        <i class="fas fa-caret-down"></i>
+      </div>
+    </div>
+  </div>
+</template>
+<script>
+/*
+ * min 进度条最小值
+ * max 进度条最大值
+ * v-model 对当前值进行双向绑定实时显示拖拽进度
+ * */
+export default {
+  name: 'slider',
+  props: ['min', 'max', 'value'],
+  data() {
+    return {
+      slider: null, //滚动条DOM元素
+      thunk: null, //拖拽DOM元素
+      per: this.value //当前值
+    }
+  },
+  //渲染到页面的时候
+  mounted() {
+    this.slider = this.$refs.slider
+    this.thunk = this.$refs.trunk
+    var _this = this
+    this.thunk.onmousedown = function(e) {
+      var width = parseInt(_this.width)
+      var disX = e.clientX
+      document.onmousemove = function(e) {
+        // value, left, width
+        // 当value变化的时候,会通过计算属性修改left,width
+
+        // 拖拽的时候获取的新width
+        var newWidth = e.clientX - disX + width
+        // 拖拽的时候得到新的百分比
+        var scale = newWidth / _this.slider.offsetWidth
+        _this.per = Math.ceil((_this.max - _this.min) * scale + _this.min)
+        _this.per = Math.max(_this.per, _this.min)
+        _this.per = Math.min(_this.per, _this.max)
+        _this.$emit('input', _this.per)
+      }
+      document.onmouseup = function() {
+        document.onmousemove = document.onmouseup = null
+      }
+      return false
+    }
+  },
+  computed: {
+    // 设置一个百分比,提供计算slider进度宽度和trunk的left值
+    // 对应公式为  当前值-最小值/最大值-最小值 = slider进度width / slider总width
+    // trunk left =  slider进度width + trunk宽度/2
+    scale() {
+      return (this.per - this.min) / (this.max - this.min)
+    },
+    width() {
+      if (this.slider) {
+        return this.slider.offsetWidth * this.scale + 'px'
+      } else {
+        return 0 + 'px'
+      }
+    },
+    left() {
+      if (this.slider) {
+        return (
+          this.slider.offsetWidth * this.scale -
+          this.thunk.offsetWidth / 2 +
+          'px'
+        )
+      } else {
+        return 0 + 'px'
+      }
+    }
+  }
+}
+</script>
+<style>
+.box {
+  margin: 100px auto 0;
+  width: 80%;
+}
+.clear:after {
+  content: '';
+  display: block;
+  clear: both;
+}
+.slider {
+  position: relative;
+  margin: 20px 0;
+  width: 400px;
+  height: 10px;
+  background: #e4e7ed;
+  border-radius: 5px;
+  cursor: pointer;
+}
+.slider .process {
+  position: absolute;
+  left: 0;
+  top: 0;
+  width: 112px;
+  height: 10px;
+  border-radius: 5px;
+  background: #409eff;
+}
+.slider .thunk {
+  position: absolute;
+  left: 100px;
+  top: -7px;
+  width: 20px;
+  height: 20px;
+}
+.slider .block {
+  width: 20px;
+  height: 20px;
+  border-radius: 50%;
+  border: 2px solid #409eff;
+  background: rgba(255, 255, 255, 1);
+  transition: 0.2s all;
+}
+.slider .tips {
+  position: absolute;
+  left: -7px;
+  bottom: 30px;
+  min-width: 15px;
+  text-align: center;
+  padding: 4px 8px;
+  background: #000;
+  border-radius: 5px;
+  height: 24px;
+  color: #fff;
+}
+.slider .tips i {
+  position: absolute;
+  margin-left: -5px;
+  left: 50%;
+  bottom: -9px;
+  font-size: 16px;
+  color: #000;
+}
+.slider .block:hover {
+  transform: scale(1.1);
+  opacity: 0.6;
+}
+</style>

+ 147 - 139
src/views/statisticalReport/router/index.js

@@ -1,260 +1,268 @@
-import Vue from "vue";
-import Router from "vue-router";
+import Vue from 'vue'
+import Router from 'vue-router'
 
-import routerBefore from "@/config/routerBefore.js";
+import routerBefore from '@/config/routerBefore.js'
 
 // 主要
-import main from "@/components/main.vue";
+import main from '@/components/main.vue'
 // 系统配置管理
-import ShipDynamicTable from "../components/Ship_dynamic_table.vue";
-import ShipWorkReport from "../components/ShipWorkReport.vue";
-import dowmShipDynamicTable from "../components/dowmShipDynamicTable.vue";
-import purchaseAccessoriesMonitor from "../components/purchaseAccessoriesMonitor.vue";
-import purchasFuelOldMonitor from "../components/purchasFuelMonitor/purchasFuelOldMonitor.vue";
-import purchasFuelNewMonitor from "../components/purchasFuelMonitor/purchasFuelNewMonitor.vue";
-import sporadicReportEnterFactory from "../components/sporadicReport/sporadicReportEnterFactory.vue";
-import sporadicReportExFactory from "../components/sporadicReport/sporadicReportExFactory.vue";
-import saleChemicalCokeForm from "../components/salesLogisticsStatistics/saleChemicalCokeForm.vue";
-import saleCoproductForm from "../components/salesLogisticsStatistics/saleCoproductForm.vue";
-import saleSteelForm from "../components/salesLogisticsStatistics/saleSteelForm.vue";
-import transportationPerformance from "../components/salesLogisticsStatistics/transportationPerformance.vue";
-import purchaseChemicalMaterialsNew from "../components/purchaseChemicalMaterials/purchaseChemicalMaterialsNew.vue";
-import purchaseChemicalMaterialsOld from "../components/purchaseChemicalMaterials/purchaseChemicalMaterialsOld.vue";
-import purInwardReport from "../components/inwardReport/putInwardReport.vue";
-import inwardFactory from "../components/inwardReport/inwardFactory.vue";
-import getLoading from "../components/inwardReport/getLoading.vue";
-import getUnLoading from "../components/inwardReport/getUnLoading.vue";
-import purchaseMineral from "../components/purachaseMineral.vue";
-import inwardSporadicReport from "../components/sporadicReport/inwardSporadicReport.vue";
-import getInstall from "../components/inwardReport/getInstall.vue";
-import getCapacityByDefend from "../components/defendCapacity/getCapacityByDefend.vue";
-import inwardAssemble from "../components/inwardAssemble/inwardAssemble.vue";
-import loadCapacityDetail from "../components/loadCapacityDetail/loadCapacityDetail.vue";
-import allInwardReport from "../components/inwardReport/allInwardReport.vue";
-import saleSteelAllReport from "../components/salesLogisticsStatistics/saleSteelAllReport.vue";
-import loadWagonWorkReport from "../components/wanzhouReport/loadWagonWorkReport.vue";
-import unloadShipWorkReport from "../components/wanzhouReport/unloadShipWorkReport.vue";
-import wagonWorkReport from "../components/wanzhouReport/wagonWorkReport.vue";
-import saleSteelCarrierReport from "@/views/statisticalReport/components/salesLogisticsStatistics/saleSteelCarrierReport";
-import saleSteelReports from "@/views/statisticalReport/components/salesLogisticsStatistics/saleSteelReports";
-
-Vue.use(Router);
+import ShipDynamicTable from '../components/Ship_dynamic_table.vue'
+import ShipWorkReport from '../components/ShipWorkReport.vue'
+import dowmShipDynamicTable from '../components/dowmShipDynamicTable.vue'
+import purchaseAccessoriesMonitor from '../components/purchaseAccessoriesMonitor.vue'
+import purchasFuelOldMonitor from '../components/purchasFuelMonitor/purchasFuelOldMonitor.vue'
+import purchasFuelNewMonitor from '../components/purchasFuelMonitor/purchasFuelNewMonitor.vue'
+import sporadicReportEnterFactory from '../components/sporadicReport/sporadicReportEnterFactory.vue'
+import sporadicReportExFactory from '../components/sporadicReport/sporadicReportExFactory.vue'
+import saleChemicalCokeForm from '../components/salesLogisticsStatistics/saleChemicalCokeForm.vue'
+import saleCoproductForm from '../components/salesLogisticsStatistics/saleCoproductForm.vue'
+import saleSteelForm from '../components/salesLogisticsStatistics/saleSteelForm.vue'
+import transportationPerformance from '../components/salesLogisticsStatistics/transportationPerformance.vue'
+import purchaseChemicalMaterialsNew from '../components/purchaseChemicalMaterials/purchaseChemicalMaterialsNew.vue'
+import purchaseChemicalMaterialsOld from '../components/purchaseChemicalMaterials/purchaseChemicalMaterialsOld.vue'
+import purInwardReport from '../components/inwardReport/putInwardReport.vue'
+import inwardFactory from '../components/inwardReport/inwardFactory.vue'
+import getLoading from '../components/inwardReport/getLoading.vue'
+import getUnLoading from '../components/inwardReport/getUnLoading.vue'
+import purchaseMineral from '../components/purachaseMineral.vue'
+import inwardSporadicReport from '../components/sporadicReport/inwardSporadicReport.vue'
+import getInstall from '../components/inwardReport/getInstall.vue'
+import getCapacityByDefend from '../components/defendCapacity/getCapacityByDefend.vue'
+import inwardAssemble from '../components/inwardAssemble/inwardAssemble.vue'
+import loadCapacityDetail from '../components/loadCapacityDetail/loadCapacityDetail.vue'
+import allInwardReport from '../components/inwardReport/allInwardReport.vue'
+import saleSteelAllReport from '../components/salesLogisticsStatistics/saleSteelAllReport.vue'
+import loadWagonWorkReport from '../components/wanzhouReport/loadWagonWorkReport.vue'
+import unloadShipWorkReport from '../components/wanzhouReport/unloadShipWorkReport.vue'
+import wagonWorkReport from '../components/wanzhouReport/wagonWorkReport.vue'
+import saleSteelCarrierReport from '@/views/statisticalReport/components/salesLogisticsStatistics/saleSteelCarrierReport'
+import saleSteelReports from '@/views/statisticalReport/components/salesLogisticsStatistics/saleSteelReports'
+import mapTest from '../components/salesLogisticsStatistics/mapTest.vue'
+Vue.use(Router)
 
 const constantRouterMap = [
   {
-    path: "/",
-    name: "main",
-    meta: { title: "首页", code: "xtpzgl" },
+    path: '/',
+    name: 'main',
+    meta: { title: '首页', code: 'xtpzgl' },
     component: main,
-    redirect: { name: "cargoResult" },
+    redirect: { name: 'cargoResult' },
     children: [
       {
-        path: "purchaseChemicalMaterialsNew",
-        name: "purchaseChemicalMaterialsNew",
-        meta: { code: "xtpzgl-yhgl" },
+        path: 'purchaseChemicalMaterialsNew',
+        name: 'purchaseChemicalMaterialsNew',
+        meta: { code: 'xtpzgl-yhgl' },
         component: purchaseChemicalMaterialsNew
       },
       {
-        path: "purchaseChemicalMaterialsOld",
-        name: "purchaseChemicalMaterialsOld",
-        meta: { code: "xtpzgl-yhgl" },
+        path: 'purchaseChemicalMaterialsOld',
+        name: 'purchaseChemicalMaterialsOld',
+        meta: { code: 'xtpzgl-yhgl' },
         component: purchaseChemicalMaterialsOld
       },
       {
-        path: "ShipDynamicTable",
-        name: "ShipDynamicTable",
-        meta: { code: "xtpzgl-yhgl" },
+        path: 'ShipDynamicTable',
+        name: 'ShipDynamicTable',
+        meta: { code: 'xtpzgl-yhgl' },
         component: ShipDynamicTable
       },
       {
-        path: "ShipWorkReport",
-        name: "ShipWorkReport",
-        meta: { code: "xtpzgl-yhgl" },
+        path: 'ShipWorkReport',
+        name: 'ShipWorkReport',
+        meta: { code: 'xtpzgl-yhgl' },
         component: ShipWorkReport
       },
       {
-        path: "dowmShipDynamicTable",
-        name: "dowmShipDynamicTable",
-        meta: { code: "xtpzgl-yhgl" },
+        path: 'dowmShipDynamicTable',
+        name: 'dowmShipDynamicTable',
+        meta: { code: 'xtpzgl-yhgl' },
         component: dowmShipDynamicTable
       },
       {
-        path: "purchaseAccessoriesMonitor",
-        name: "purchaseAccessoriesMonitor",
-        meta: { code: "xtpzgl-yhgl" },
+        path: 'purchaseAccessoriesMonitor',
+        name: 'purchaseAccessoriesMonitor',
+        meta: { code: 'xtpzgl-yhgl' },
         component: purchaseAccessoriesMonitor
       },
       {
-        path: "purchasFuelOldMonitor",
-        name: "purchasFuelOldMonitor",
-        meta: { code: "xtpzgl-yhgl" },
+        path: 'purchasFuelOldMonitor',
+        name: 'purchasFuelOldMonitor',
+        meta: { code: 'xtpzgl-yhgl' },
         component: purchasFuelOldMonitor
       },
       {
-        path: "purchasFuelNewMonitor",
-        name: "purchasFuelNewMonitor",
-        meta: { code: "xtpzgl-yhgl" },
+        path: 'purchasFuelNewMonitor',
+        name: 'purchasFuelNewMonitor',
+        meta: { code: 'xtpzgl-yhgl' },
         component: purchasFuelNewMonitor
       },
       {
-        path: "sporadicReportEnterFactory",
-        name: "sporadicReportEnterFactory",
-        meta: { code: "xtpzgl-yhgl" },
+        path: 'sporadicReportEnterFactory',
+        name: 'sporadicReportEnterFactory',
+        meta: { code: 'xtpzgl-yhgl' },
         component: sporadicReportEnterFactory
       },
       {
-        path: "sporadicReportExFactory",
-        name: "sporadicReportExFactory",
-        meta: { code: "xtpzgl-yhgl" },
+        path: 'sporadicReportExFactory',
+        name: 'sporadicReportExFactory',
+        meta: { code: 'xtpzgl-yhgl' },
         component: sporadicReportExFactory
       },
       {
-        path: "saleChemicalCokeForm",
-        name: "saleChemicalCokeForm",
-        meta: { code: "xtpzgl-yhgl" },
+        path: 'saleChemicalCokeForm',
+        name: 'saleChemicalCokeForm',
+        meta: { code: 'xtpzgl-yhgl' },
         component: saleChemicalCokeForm
       },
       {
-        path: "saleCoproductForm",
-        name: "saleCoproductForm",
-        meta: { code: "xtpzgl-yhgl" },
+        path: 'saleCoproductForm',
+        name: 'saleCoproductForm',
+        meta: { code: 'xtpzgl-yhgl' },
         component: saleCoproductForm
       },
       {
-        path: "saleSteelForm",
-        name: "saleSteelForm",
-        meta: { code: "xtpzgl-yhgl" },
+        path: 'saleSteelForm',
+        name: 'saleSteelForm',
+        meta: { code: 'xtpzgl-yhgl' },
         component: saleSteelForm
       },
       {
-        path: "transportationPerformance",
-        name: "transportationPerformance",
-        meta: { code: "xtpzgl-yhgl" },
+        path: 'transportationPerformance',
+        name: 'transportationPerformance',
+        meta: { code: 'xtpzgl-yhgl' },
         component: transportationPerformance
       },
       {
-        path: "purInwardReport",
-        name: "purInwardReport",
-        meta: { code: "xtpzgl-yhgl" },
+        path: 'purInwardReport',
+        name: 'purInwardReport',
+        meta: { code: 'xtpzgl-yhgl' },
         component: purInwardReport
       },
       {
-        path: "inwardFactory",
-        name: "inwardFactory",
-        meta: { code: "xtpzgl-yhgl" },
+        path: 'inwardFactory',
+        name: 'inwardFactory',
+        meta: { code: 'xtpzgl-yhgl' },
         component: inwardFactory
       },
       {
-        path: "getLoading",
-        name: "getLoading",
-        meta: { code: "xtpzgl-yhgl" },
+        path: 'getLoading',
+        name: 'getLoading',
+        meta: { code: 'xtpzgl-yhgl' },
         component: getLoading
       },
       {
-        path: "getUnLoading",
-        name: "getUnLoading",
-        meta: { code: "xtpzgl-yhgl" },
+        path: 'getUnLoading',
+        name: 'getUnLoading',
+        meta: { code: 'xtpzgl-yhgl' },
         component: getUnLoading
       },
       {
-        path: "purchaseMineral",
-        name: "purchaseMineral",
-        meta: { code: "xtpzgl-yhgl" },
+        path: 'purchaseMineral',
+        name: 'purchaseMineral',
+        meta: { code: 'xtpzgl-yhgl' },
         component: purchaseMineral
       },
       {
-        path: "inwardSporadicReport",
-        name: "inwardSporadicReport",
-        meta: { code: "xtpzgl-yhgl" },
+        path: 'inwardSporadicReport',
+        name: 'inwardSporadicReport',
+        meta: { code: 'xtpzgl-yhgl' },
         component: inwardSporadicReport
       },
       {
-        path: "getInstall",
-        name: "getInstall",
-        meta: { code: "xtpzgl-yhgl" },
+        path: 'getInstall',
+        name: 'getInstall',
+        meta: { code: 'xtpzgl-yhgl' },
         component: getInstall
       },
       {
-        path: "getCapacityByDefend",
-        name: "getCapacityByDefend",
-        meta: { code: "xtpzgl-yhgl" },
+        path: 'getCapacityByDefend',
+        name: 'getCapacityByDefend',
+        meta: { code: 'xtpzgl-yhgl' },
         component: getCapacityByDefend
       },
       {
-        path: "inwardAssemble",
-        name: "inwardAssemble",
-        meta: { code: "xtpzgl-yhgl" },
+        path: 'inwardAssemble',
+        name: 'inwardAssemble',
+        meta: { code: 'xtpzgl-yhgl' },
         component: inwardAssemble
       },
       {
-        path: "loadCapacityDetail",
-        name: "loadCapacityDetail",
-        meta: { code: "xtpzgl-yhgl" },
+        path: 'loadCapacityDetail',
+        name: 'loadCapacityDetail',
+        meta: { code: 'xtpzgl-yhgl' },
         component: loadCapacityDetail
       },
       {
-        path: "allInwardReport",
-        name: "allInwardReport",
-        meta: { code: "xtpzgl-yhgl" },
+        path: 'allInwardReport',
+        name: 'allInwardReport',
+        meta: { code: 'xtpzgl-yhgl' },
         component: allInwardReport
       },
       {
-        path: "saleSteelAllReport",
-        name: "saleSteelAllReport",
+        path: 'saleSteelAllReport',
+        name: 'saleSteelAllReport',
         meta: {
-          code: "xtpzgl-yhgl"
+          code: 'xtpzgl-yhgl'
         },
         component: saleSteelAllReport
       },
       {
-        path: "loadWagonWorkReport",
-        name: "loadWagonWorkReport",
+        path: 'loadWagonWorkReport',
+        name: 'loadWagonWorkReport',
         meta: {
-          code: "xtpzgl-yhgl"
+          code: 'xtpzgl-yhgl'
         },
         component: loadWagonWorkReport
       },
       {
-        path: "unloadShipWorkReport",
-        name: "unloadShipWorkReport",
+        path: 'unloadShipWorkReport',
+        name: 'unloadShipWorkReport',
         meta: {
-          code: "xtpzgl-yhgl"
+          code: 'xtpzgl-yhgl'
         },
         component: unloadShipWorkReport
       },
       {
-        path: "wagonWorkReport",
-        name: "wagonWorkReport",
+        path: 'wagonWorkReport',
+        name: 'wagonWorkReport',
         meta: {
-          code: "xtpzgl-yhgl"
+          code: 'xtpzgl-yhgl'
         },
         component: wagonWorkReport
       },
       {
-        path: "saleSteelCarrierReport",
-        name: "saleSteelCarrierReport",
+        path: 'saleSteelCarrierReport',
+        name: 'saleSteelCarrierReport',
         meta: {
-          code: "xtpzgl-yhgl"
+          code: 'xtpzgl-yhgl'
         },
         component: saleSteelCarrierReport
       },
       {
-        path: "saleSteelReports",
-        name: "saleSteelReports",
+        path: 'saleSteelReports',
+        name: 'saleSteelReports',
         meta: {
-          code: "xtpzgl-yhgl"
+          code: 'xtpzgl-yhgl'
         },
         component: saleSteelReports
+      },
+      {
+        path: 'mapTest',
+        name: 'mapTest',
+        meta: {
+          code: 'xtpzgl-yhgl'
+        },
+        component: mapTest
       }
     ]
   }
-];
+]
 const router = new Router({
   routes: constantRouterMap
-});
+})
 //  before
-routerBefore(router, constantRouterMap);
+routerBefore(router, constantRouterMap)
 
-export default router;
+export default router
 //  constantRouterMap
-export const routes = constantRouterMap;
+export const routes = constantRouterMap

Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 0 - 0
static/lib/element-ui/element-ui.css


Một số tệp đã không được hiển thị bởi vì quá nhiều tập tin thay đổi trong này khác