Tiroble 3 gadi atpakaļ
vecāks
revīzija
5ebab2e0dd
24 mainītis faili ar 1237 papildinājumiem un 497 dzēšanām
  1. 4 4
      build/utils.js
  2. 2 2
      config/index.js
  3. 6 2
      src/components/DilCommonUI/packages/mergeRowTable/src/mergeRowTable.js
  4. 4 5
      src/components/DilCommonUI/packages/mergeRowTable/src/mergeRowTable.vue
  5. 0 1
      src/views/TMS/components/domesticMine/wagonUnLoadEdit.vue
  6. 13 7
      src/views/appoint/components/saleContract/editSaleOrder.vue
  7. 5 3
      src/views/appoint/components/saleContract/saleOrderCoproduct.vue
  8. 42 41
      src/views/appoint/components/saleContract/saleOrderCoproductCarrier.vue
  9. 78 122
      src/views/appoint/components/saleContract/saleOrderSteel.vue
  10. 31 105
      src/views/appoint/components/saleContract/saleOrderSteelCar.vue
  11. 15 61
      src/views/appoint/components/saleContract/saleOrderSteelCarrier.vue
  12. 148 25
      src/views/queue/components/qmsEnFacotory/queueFListMonitor.vue
  13. 61 18
      src/views/queue/components/qmsEnFacotory/queueFStart.vue
  14. 4 2
      src/views/sale/components/offSiteTransportation/checkGPS.vue
  15. 246 0
      src/views/sale/components/offSiteTransportation/currentLocation.vue
  16. 4 5
      src/views/sale/components/offSiteTransportation/inTransit.vue
  17. 7 4
      src/views/sale/components/offSiteTransportation/mapTest.vue
  18. 326 0
      src/views/sale/components/offSiteTransportation/transportationPerformance.vue
  19. 57 9
      src/views/sale/components/transport_excute/tms-offsite/arrivalResult.vue
  20. 62 26
      src/views/sale/components/transport_excute/tms-offsite/receiptResult.vue
  21. 6 2
      src/views/sale/router/index.js
  22. 12 2
      src/views/statisticalReport/components/defendCapacity/getCapacityByDefend.vue
  23. 103 50
      src/views/statisticalReport/components/salesLogisticsStatistics/saleSteelForm.vue
  24. 1 1
      src/views/statisticalReport/components/sporadicReport/inwardSporadicReport.vue

+ 4 - 4
build/utils.js

@@ -15,12 +15,12 @@ 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 = ['all']
+// let devModules = ['index','statisticalReport','appoint']
 // let devModules = ['index','appoint','sale','RMS','statisticalReport'];
-// let devModules = ['index','appoint','WMS'];
+//let devModules = ['index','appoint','WMS'];
 // let devModules = ['index','inward']
-// let devModules = ['all']
-let devModules = ['index','sale']
+let devModules = ['all']
+// let devModules = ['index','sale']
 // let devModules = ['index','SporadicManage','RMS','statisticalReport']
 // let devModules = ['index','inward','statisticalReport']
 //  let devModules = ['index','WMS','appoint','TMS','inward','statisticalReport','sale']

+ 2 - 2
config/index.js

@@ -64,8 +64,8 @@ let proxyTable = {
   },
   // 所有数据的请求域名地址
   "/api/v1": {
-    target: "http://locahost:8080",
-    // target: "http://192.168.1.101:8019",
+      target: "http://172.16.33.166:8080",
+     //target: "http://localhost:8080",
     ws: true,
     pathRewrite: {
       "^/api/v1": "/api/v1"

+ 6 - 2
src/components/DilCommonUI/packages/mergeRowTable/src/mergeRowTable.js

@@ -52,16 +52,19 @@ export default {
       for (var i = 0; i < data.length; i++) {
         if (i === 0) {
           this.spanArr.push(1);
+          data[i].group = i;
           this.pos = 0;
         } else {
           // 判断当前元素与上一个元素是否相同
-        
           if (data[i][this.comparison] === data[i - 1][this.comparison]) {
             this.spanArr[this.pos] += 1;
             this.spanArr.push(0);
+            data[i].group = data[i-1].group;
+
           } else {
             this.spanArr.push(1);
             this.pos = i;
+            data[i].group = data[i-1].group + 1
           }
         }
       }
@@ -148,8 +151,9 @@ export default {
           .then(response => {
             let d = response.data.data;
             this.dataTabel = d.list;
-            this.dataTotal = d.total;
             this.getSpanArr(this.dataTabel);
+            this.dataTotal = d.total;
+            
             //执行成功的回调
             this.$emit('func',response.data.data);
             this.refreshColumnData(d.columnData);

+ 4 - 5
src/components/DilCommonUI/packages/mergeRowTable/src/mergeRowTable.vue

@@ -57,14 +57,13 @@
 
       <!-- 序号 -->
       <el-table-column
-        v-if="showIndex"
-        type="index"
         width="50"
         label="序号"
         align="center"
         fixed="left"
         :resizable="false"
       >
+        <template slot-scope="scope">{{ scope.row.group + 1 }}</template>
       </el-table-column>
 
       <!-- 表格列 -->
@@ -123,11 +122,11 @@ export default {
   extends: table,
   props: {
     // 合并行下标
-    columnIndexs:{
-     default: []
+    columnIndexs: {
+      default: []
     },
     //比对字段
-    comparison:{
+    comparison: {
       default: ""
     },
     shiyHeigth: {

+ 0 - 1
src/views/TMS/components/domesticMine/wagonUnLoadEdit.vue

@@ -83,7 +83,6 @@ export default {
                 type: "success",
                 message: "修改成功!",
               });
-
               this.$router.go(-1);
             } else {
               this.$message({

+ 13 - 7
src/views/appoint/components/saleContract/editSaleOrder.vue

@@ -1277,6 +1277,7 @@ export default {
     },
     // 添加物资到某个车序号
     addToCxh() {
+      console.log("wkk");
       if (!this.toCxh) {
         this.$message.warning("请先在左侧输入要添加物资的车序号!");
       } else {
@@ -1335,22 +1336,27 @@ export default {
           }
         });
         //若添加的车序号为最后一个车序号
-        if (this.selectionList.length - 1 == toCxh) {
+        if (alreadyAdd == 0) {
           //插入新增物资
+          console.log("1345wjj");
           this.materialList.forEach(e => {
             var addmap = {
-              cxh: arr[toCxh].cxh,
+              cxh: arr[this.selectionList.length - 1].cxh,
               materialName: e.materialName,
               Specification: e.Specification,
               materialCode: e.materialCode,
               orderPlanWeight: e.orderPlanWeight,
               meterNumber: e.meterNumber,
               isPound: e.isPound,
-              saleShipperAddressId: arr[toCxh].saleShipperAddressId,
-              place: arr[toCxh].place,
-              saleShipperAddressName: arr[toCxh].saleShipperAddressName,
-              saleDateOfReceipt: arr[toCxh].saleDateOfReceipt,
-              saleOrderConsigneeTel: arr[toCxh].saleOrderConsigneeTel,
+              saleShipperAddressId:
+                arr[this.selectionList.length - 1].saleShipperAddressId,
+              place: arr[this.selectionList.length - 1].place,
+              saleShipperAddressName:
+                arr[this.selectionList.length - 1].saleShipperAddressName,
+              saleDateOfReceipt:
+                arr[this.selectionList.length - 1].saleDateOfReceipt,
+              saleOrderConsigneeTel:
+                arr[this.selectionList.length - 1].saleOrderConsigneeTel,
               materialId: e.materialId,
               haveMeter: e.haveMeter
             };

+ 5 - 3
src/views/appoint/components/saleContract/saleOrderCoproduct.vue

@@ -16,7 +16,7 @@
     <el-tabs v-model="activeName" @tab-click="handleClick">
       <!-- 已审批 -->
       <el-tab-pane label="已审批" name="four">
-        <dilTable
+        <mergeRowTable
           v-bind.sync="option4"
           @selection-change="selectionChange"
           ref="table"
@@ -56,7 +56,7 @@
               </el-form>
             </template>
           </el-table-column>
-        </dilTable>
+        </mergeRowTable>
       </el-tab-pane>
     </el-tabs>
     <!-- 承运商模态框 -->
@@ -123,7 +123,9 @@ export default {
         // 表格请求数据的地址
         requestUrl:
           "/api/v1/ams/getSaleOrderListBySaleCompanyes?apiId=409&shipperId=1",
-        selectionType: "select"
+        selectionType: "select",
+        comparison: "saleNumber",
+        columnIndexs: [0, 1, 2, 3, 4, 8, 9, 10, 11, 12, 13, 14, 15]
       },
       carrier: {
         requestUrl: "",

+ 42 - 41
src/views/appoint/components/saleContract/saleOrderCoproductCarrier.vue

@@ -12,7 +12,7 @@
     </div>
     <el-tabs v-model="activeName" @tab-click="handleClick">
       <!-- 已审批 -->
-       <el-tab-pane label="已审批" name="four">
+      <el-tab-pane label="已审批" name="four">
         <dilTable v-bind.sync="option4" ref="table">
           <el-table-column fixed="right" label="操作" width="200">
             <template slot-scope="scope">
@@ -31,24 +31,24 @@
             </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">
-              <div v-if="false">{{ props }}</div>
-              <div>
-                <el-table :data="tableData" border >
-                  <el-table-column
-                    v-for="(item, i) in tableHead"
-                    :key="i"
-                    :prop="item.prop"
-                    :label="item.label"
-                    :width="item.width"
-                  ></el-table-column>
-                </el-table>
-              </div>
-            </el-form>
-          </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">
+                <div v-if="false">{{ props }}</div>
+                <div>
+                  <el-table :data="tableData" border>
+                    <el-table-column
+                      v-for="(item, i) in tableHead"
+                      :key="i"
+                      :prop="item.prop"
+                      :label="item.label"
+                      :width="item.width"
+                    ></el-table-column>
+                  </el-table>
+                </div>
+              </el-form>
+            </template>
+          </el-table-column>
         </dilTable>
       </el-tab-pane>
     </el-tabs>
@@ -66,8 +66,7 @@ export default {
       carrierName: null,
       option4: {
         // 表格请求数据的地址
-        requestUrl:
-          "",
+        requestUrl: ""
       },
       //记录旧的row对象 (销售公司已审批)
       oldRow: "",
@@ -77,34 +76,34 @@ export default {
         {
           prop: "materialName",
           label: "物资名称",
-          width: 150,
+          width: 150
         },
         {
           prop: "specificationModel",
           label: "规格型号",
-          width: 150,
+          width: 150
         },
         {
           prop: "materialNumber",
           label: "物资件数",
-          width: 100,
+          width: 100
         },
         {
           prop: "materialWeight",
           label: "物资重量",
-          width: 100,
-        },
+          width: 100
+        }
       ],
       //(销售公司已审批)
-      tableData: [],
+      tableData: []
     };
   },
-  created(){
-      this.initUrl();
+  created() {
+    this.initUrl();
   },
   methods: {
-    initUrl(){
-        if (getCookie("orgCode") == "chengyunshang") {
+    initUrl() {
+      if (getCookie("orgCode") == "chengyunshang") {
         this.option4.requestUrl =
           "/api/v1/ams/getSaleOrderListByCarrierSsoId?apiId=409&carrierSsoId=" +
           getCookie("userId");
@@ -113,18 +112,20 @@ export default {
           "/api/v1/ams/getSaleOrderListByCarrierSsoId?apiId=409";
       }
     },
-    refresh(){
+    refresh() {
       this.$router.go(0);
     },
     handleClick(tab, event) {
       console.log(tab, event);
     },
     onclick() {
-      if(this.activeName == "four"){
-        this.option4.requestUrl = "/api/v1/ams/getSaleOrderListBySaleCompanyes?apiId=409&shipperId=1&con="+this.input;      
+      if (this.activeName == "four") {
+        this.option4.requestUrl =
+          "/api/v1/ams/getSaleOrderListBySaleCompanyes?apiId=409&shipperId=1&con=" +
+          this.input;
       }
     },
-    coproductSendClick(saleOrderId){
+    coproductSendClick(saleOrderId) {
       this.$router.push("/addSaleOrderCoproductSendCarrier/" + saleOrderId);
     },
     // -------查看物资详情 (已审批)
@@ -152,15 +153,15 @@ export default {
       this.oldRow = row;
       // 根据销售订单id查询物资信息
       this.axios
-        .post("/api/v1/ams/getSaleMaterialList?saleOrderId=" +row.saleOrderId)
-        .then((res) => {
+        .post("/api/v1/ams/getSaleMaterialList?saleOrderId=" + row.saleOrderId)
+        .then(res => {
           this.tableData = res.data.data;
         });
-    },
-  },
+    }
+  }
 };
 </script>
-<style lang='scss' scoped>
+<style lang="scss" scoped>
 .salePlan {
   .top {
     padding: 1.25rem 0.375rem;
@@ -170,4 +171,4 @@ export default {
     }
   }
 }
-</style>
+</style>

+ 78 - 122
src/views/appoint/components/saleContract/saleOrderSteel.vue

@@ -15,13 +15,16 @@
       <el-button type="primary" @click="batchReport">
         <i class="upload2"></i>批量上传
       </el-button>
+      <el-button type="primary" @click="exportData()"
+        ><i class="el-icon-download"></i>导出(Excel)</el-button
+      >
     </div>
     <el-tabs v-model="activeName" @tab-click="handleClick">
       <!-- 未上报 -->
       <el-tab-pane label="未上报" name="first">
-        <dilTable
+        <mergeRowTable
           v-bind.sync="option"
-          ref="table3"
+          ref="excelDom"
           @selection-change="selectionChange"
         >
           <el-table-column
@@ -49,102 +52,18 @@
                 @click="deleteclick(scope.row.saleOrderId)"
                 >删除</el-button
               >
-              <el-button
-                @click="detailclick3(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">
-                <div v-if="false">{{ props }}</div>
-                <div>
-                  <el-table :data="tableData3" border>
-                    <el-table-column
-                      v-for="(item, i) in tableHead"
-                      :key="i"
-                      :prop="item.prop"
-                      :label="item.label"
-                      :width="item.width"
-                    ></el-table-column>
-                  </el-table>
-                </div>
-              </el-form>
-            </template>
-          </el-table-column>
-        </dilTable>
+        </mergeRowTable>
       </el-tab-pane>
       <!-- 已审批 -->
       <el-tab-pane label="已审批" name="four">
-        <dilTable v-bind.sync="option4" ref="table">
-          <el-table-column fixed="right" label="操作" width="80">
-            <template slot-scope="scope">
-              <el-button
-                @click="detailclick(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">
-                <div v-if="false">{{ props }}</div>
-                <div>
-                  <el-table :data="tableData" border>
-                    <el-table-column
-                      v-for="(item, i) in tableHead"
-                      :key="i"
-                      :prop="item.prop"
-                      :label="item.label"
-                      :width="item.width"
-                    ></el-table-column>
-                  </el-table>
-                </div>
-              </el-form>
-            </template>
-          </el-table-column>
-        </dilTable>
+        <mergeRowTable v-bind.sync="option4" ref="table"> </mergeRowTable>
       </el-tab-pane>
       <!-- 已上报 -->
       <el-tab-pane label="已上报" name="second">
-        <dilTable v-bind.sync="option2" ref="table2">
-          <el-table-column fixed="right" label="操作" width="70">
-            <template slot-scope="scope">
-              <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">
-                <div v-if="false">{{ props }}</div>
-                <div>
-                  <el-table :data="tableData2" border>
-                    <el-table-column
-                      v-for="(item, i) in tableHead"
-                      :key="i"
-                      :prop="item.prop"
-                      :label="item.label"
-                      :width="item.width"
-                    ></el-table-column>
-                  </el-table>
-                </div>
-              </el-form>
-            </template>
-          </el-table-column>
-        </dilTable>
+        <mergeRowTable v-bind.sync="option2" ref="table2"> </mergeRowTable>
       </el-tab-pane>
     </el-tabs>
   </div>
@@ -157,6 +76,7 @@ export default {
     return {
       batchReportList: [],
       activeName: "first",
+      tableTitle: "未上传销售订单报表",
       drawer: false,
       input: "",
       index: "",
@@ -165,16 +85,40 @@ export default {
       option: {
         // 表格请求数据的地址
         requestUrl: "/api/v1/ams/getSaleOrderInfoes?apiId=408",
-        selectionType: "select"
+        selectionType: "select",
+        comparison: "saleNumber",
+        columnIndexs: [0, 1, 2, 3, 4, 8, 9, 10, 11, 12, 13, 14, 15]
       },
       option2: {
         // 表格请求数据的地址
-        requestUrl: "/api/v1/ams/getSaleOrderReportedes?apiId=408"
+        requestUrl: "/api/v1/ams/getSaleOrderReportedes?apiId=408",
+        comparison: "saleNumber",
+        columnIndexs: [0, 1, 2, 3, 7, 8, 9, 10, 11, 12, 13, 14, 15]
       },
       option4: {
         // 表格请求数据的地址
         requestUrl:
-          "/api/v1/ams/getSaleOrderListBySaleCompanyes?apiId=409&shipperId=1&saleType=1"
+          "/api/v1/ams/getSaleOrderListBySaleCompanyes?apiId=409&shipperId=1&saleType=1",
+        comparison: "saleNumber",
+        columnIndexs: [
+          0,
+          1,
+          2,
+          3,
+          7,
+          8,
+          9,
+          10,
+          11,
+          12,
+          13,
+          14,
+          15,
+          16,
+          17,
+          18,
+          20
+        ]
       },
       mapList: [],
       mapItemList: [],
@@ -198,23 +142,23 @@ export default {
         {
           prop: "materialName",
           label: "物资名称",
-          width: 150
+          width: 150,
         },
         {
           prop: "specificationModel",
           label: "规格型号",
-          width: 150
+          width: 150,
         },
         {
           prop: "materialNumber",
           label: "物资件数",
-          width: 100
+          width: 100,
         },
         {
           prop: "materialWeight",
           label: "物资重量",
-          width: 100
-        }
+          width: 100,
+        },
       ],
       //(销售公司已审批)
       tableData: [],
@@ -223,7 +167,7 @@ export default {
       //(已上报)
       tableData2: [],
       //(未上报)
-      tableData3: []
+      tableData3: [],
     };
   },
   created() {
@@ -290,7 +234,7 @@ export default {
       }
       this.axios
         .post("/api/v1/ams/uploadSaleOrderList", this.batchReportList)
-        .then(res => {
+        .then((res) => {
           if (res.data.code == "200") {
             this.$message.success("上传成功");
             this.getRequestUrl();
@@ -317,37 +261,49 @@ export default {
             "/api/v1/ams/getSaleOrderInfoes?apiId=408&saleType=1&con=" +
             this.input +
             "&consigneeSsoId=" +
-            getCookie("userId");
+            getCookie("userId") +
+            "&i=" +
+            new Date();
         } else if (this.activeName == "second") {
           this.option2.requestUrl =
             "/api/v1/ams/getSaleOrderReportedes?apiId=408&saleType=1&con=" +
             this.input +
             "&consigneeSsoId=" +
-            getCookie("userId");
+            getCookie("userId") +
+            "&i=" +
+            new Date();
         } else if (this.activeName == "four") {
           this.option4.requestUrl =
             "/api/v1/ams/getSaleOrderListBySaleCompanyes?apiId=409&saleType=1&shipperId=1&con=" +
             this.input +
             "&consigneeSsoId=" +
-            getCookie("userId");
+            getCookie("userId") +
+            "&i=" +
+            new Date();
         }
       } else {
         if (this.activeName == "first") {
           this.option.requestUrl =
-            "/api/v1/ams/getSaleOrderInfoes?apiId=408&saleType=1&con=" + this.input;
+            "/api/v1/ams/getSaleOrderInfoes?apiId=408&saleType=1&con=" +
+            this.input +
+            "&i=" +
+            new Date();
         } else if (this.activeName == "second") {
           this.option2.requestUrl =
-            "/api/v1/ams/getSaleOrderReportedes?apiId=408&saleType=1&con=" + this.input;
+            "/api/v1/ams/getSaleOrderReportedes?apiId=408&saleType=1&con=" +
+            this.input +
+            "&i=" +
+            new Date();
         } else if (this.activeName == "four") {
           this.option4.requestUrl =
             "/api/v1/ams/getSaleOrderListBySaleCompanyes?apiId=409&saleType=1&shipperId=1&con=" +
-            this.input;
+            this.input +
+            "&i=" +
+            new Date();
         }
       }
     },
-    handleClose(){
-
-    },
+    handleClose() {},
     seeclick(saleOrderId) {
       this.$router.push("/saleOrderDetail/" + saleOrderId);
     },
@@ -383,7 +339,7 @@ export default {
       // 根据销售订单id查询物资信息
       this.axios
         .post("/api/v1/ams/getSaleMaterialList?saleOrderId=" + row.saleOrderId)
-        .then(res => {
+        .then((res) => {
           this.tableData = res.data.data;
         });
     },
@@ -414,7 +370,7 @@ export default {
       // 根据销售订单id查询物资信息
       this.axios
         .post("/api/v1/ams/getSaleMaterialList?saleOrderId=" + row.saleOrderId)
-        .then(res => {
+        .then((res) => {
           this.tableData1 = res.data.data;
         });
     },
@@ -445,7 +401,7 @@ export default {
       // 根据销售订单id查询物资信息
       this.axios
         .post("/api/v1/ams/getSaleMaterialList?saleOrderId=" + row.saleOrderId)
-        .then(res => {
+        .then((res) => {
           this.tableData2 = res.data.data;
         });
     },
@@ -457,12 +413,12 @@ export default {
         this.oldRowCount3 += 1;
       }
       // 切换当前详情表
-      this.$refs.table3.toggleRowExpansion(row);
+      this.$refs.excelDom.toggleRowExpansion(row);
       // 打开前关闭上一个详情表
       if (this.oldRow3 != "") {
         if (this.oldRow3 != row) {
           if (this.oldRowCount3 % 2 === 1) {
-            this.$refs.table3.toggleRowExpansion(this.oldRow3);
+            this.$refs.excelDom.toggleRowExpansion(this.oldRow3);
           } else {
             this.oldRowCount3 = 1;
           }
@@ -476,7 +432,7 @@ export default {
       // 根据销售订单id查询物资信息
       this.axios
         .post("/api/v1/ams/getSaleMaterialList?saleOrderId=" + row.saleOrderId)
-        .then(res => {
+        .then((res) => {
           this.tableData3 = res.data.data;
         });
     },
@@ -487,12 +443,12 @@ export default {
         confirmButtonText: "确定",
         cancelButtonText: "取消",
         type: "warning",
-        center: true
+        center: true,
       })
         .then(() => {
           this.axios
             .post("/api/v1/ams/uploadSaleOrder?saleOrderId=" + saleOrderId)
-            .then(res => {
+            .then((res) => {
               if (res.data.code == "200") {
                 this.$message.success("上传成功!");
                 this.getRequestUrl();
@@ -505,7 +461,7 @@ export default {
         .catch(() => {
           this.$message({
             type: "info",
-            message: "取消上传!"
+            message: "取消上传!",
           });
         });
     },
@@ -516,7 +472,7 @@ export default {
         confirmButtonText: "确定",
         cancelButtonText: "取消",
         type: "warning",
-        center: true
+        center: true,
       })
         .then(() => {
           this.axios
@@ -524,7 +480,7 @@ export default {
               "/api/v1/ams/deleteAmsSaleOrderBySaleOrderId?saleOrderId=" +
                 saleOrderId
             )
-            .then(res => {
+            .then((res) => {
               if (res.data.code == "200") {
                 this.$message.success("删除成功");
                 this.getRequestUrl();
@@ -537,11 +493,11 @@ export default {
         .catch(() => {
           this.$message({
             type: "info",
-            message: "取消删除!"
+            message: "取消删除!",
           });
         });
-    }
-  }
+    },
+  },
 };
 </script>
 <style lang="scss" scoped>

+ 31 - 105
src/views/appoint/components/saleContract/saleOrderSteelCar.vue

@@ -31,7 +31,7 @@
     <el-tabs v-model="activeName" @tab-click="handleClick">
       <!-- 未授权 -->
       <el-tab-pane label="未授权" name="four">
-        <dilTable v-bind.sync="option4" ref="table">
+        <mergeRowTable v-bind.sync="option4" ref="table">
           <el-table-column fixed="right" label="操作" width="200">
             <template slot-scope="scope">
               <el-button
@@ -46,106 +46,26 @@
                 size="small"
                 >钢材派车</el-button
               >
-              <el-button
-                @click="detailclick(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">
-                <div v-if="false">{{ props }}</div>
-                <div>
-                  <el-table :data="tableData" border>
-                    <el-table-column
-                      v-for="(item, i) in tableHead"
-                      :key="i"
-                      :prop="item.prop"
-                      :label="item.label"
-                      :width="item.width"
-                    ></el-table-column>
-                  </el-table>
-                </div>
-              </el-form>
-            </template>
-          </el-table-column>
-        </dilTable>
+        </mergeRowTable>
       </el-tab-pane>
 
       <!-- 未派车 -->
       <el-tab-pane label="未派车" name="five">
-        <dilTable v-bind.sync="option0" ref="table0">
+        <mergeRowTable v-bind.sync="option0" ref="table0">
           <el-table-column fixed="right" label="操作" width="160">
             <template slot-scope="scope">
               <el-button @click="updateCarrier(scope)" type="text" size="small"
                 >修改承运商授权</el-button
               >
-              <el-button
-                @click="detailclick0(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">
-                <div v-if="false">{{ props }}</div>
-                <div>
-                  <el-table :data="tableData0" border>
-                    <el-table-column
-                      v-for="(item, i) in tableHead"
-                      :key="i"
-                      :prop="item.prop"
-                      :label="item.label"
-                      :width="item.width"
-                    ></el-table-column>
-                  </el-table>
-                </div>
-              </el-form>
-            </template>
-          </el-table-column>
-        </dilTable>
+        </mergeRowTable>
       </el-tab-pane>
       <!-- 已派车 -->
       <el-tab-pane label="已派车" name="first">
-        <dilTable v-bind.sync="option" ref="table3">
-          <el-table-column fixed="right" label="操作" align="center" width="80">
-            <template slot-scope="scope">
-              <el-button
-                @click="detailclick3(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">
-                <div v-if="false">{{ props }}</div>
-                <div>
-                  <el-table :data="tableData3" border>
-                    <el-table-column
-                      v-for="(item, i) in tableHead"
-                      :key="i"
-                      :prop="item.prop"
-                      :label="item.label"
-                      :width="item.width"
-                    ></el-table-column>
-                  </el-table>
-                </div>
-              </el-form>
-            </template>
-          </el-table-column>
-        </dilTable>
+        <mergeRowTable v-bind.sync="option" ref="table3"> </mergeRowTable>
       </el-tab-pane>
     </el-tabs>
   </div>
@@ -166,26 +86,32 @@ export default {
       option: {
         // 表格请求数据的地址
         requestUrl: "/api/v1/ams/getHaveCarTruckNoList?apiId=466",
+        comparison: "saleOrderMaterialId",
+        columnIndexs: [0, 1, 2, 3, 7, 8, 9, 10, 11, 12, 13, 14, 15]
       },
       option2: {
         // 表格请求数据的地址
-        requestUrl: "/api/v1/ams/getSaleOrderReportedes?apiId=408",
+        requestUrl: "/api/v1/ams/getSaleOrderReportedes?apiId=408"
       },
       option3: {
         // 表格请求数据的地址
-        requestUrl: "/api/v1/ams/getAmsSaleOrderApprovedes?apiId=409",
+        requestUrl: "/api/v1/ams/getAmsSaleOrderApprovedes?apiId=409"
       },
       option4: {
         // 表格请求数据的地址
         requestUrl: "/api/v1/ams/getSteelTruckNoList?apiId=411",
+        comparison: "saleOrderMaterialId",
+        columnIndexs: [0, 1, 2, 3, 4, 8, 9, 10, 11, 12, 13, 14, 15]
       },
       option0: {
         // 表格请求数据的地址
         requestUrl: "/api/v1/ams/getNoCarTruckNoList?apiId=466",
+        comparison: "saleOrderMaterialId",
+        columnIndexs: [0, 1, 2, 3, 7, 8, 9, 10, 11, 12, 13, 14, 15]
       },
       carrierOption: {
         requestUrl: "/api/v1/uc/getCarrierListByLike?apiId=412",
-        selectionType: "radio",
+        selectionType: "radio"
       },
       mapList: [],
       mapItemList: [],
@@ -213,23 +139,23 @@ export default {
         {
           prop: "materialName",
           label: "物资名称",
-          width: 150,
+          width: 150
         },
         {
           prop: "specificationModel",
           label: "规格型号",
-          width: 150,
+          width: 150
         },
         {
           prop: "materialNumber",
           label: "物资件数",
-          width: 100,
+          width: 100
         },
         {
           prop: "materialWeight",
           label: "物资重量",
-          width: 100,
-        },
+          width: 100
+        }
       ],
       //(销售公司已审批)
       tableData: [],
@@ -240,7 +166,7 @@ export default {
       //(未上报)
       tableData3: [],
       //(未派车)
-      tableData0: [],
+      tableData0: []
     };
   },
   methods: {
@@ -270,9 +196,9 @@ export default {
     updateTruckCapacity() {
       let map = {
         carrierId: this.carrierId,
-        saleOrderMaterialId: this.saleOrderMaterialId,
+        saleOrderMaterialId: this.saleOrderMaterialId
       };
-      this.axios.post("/api/v1/ams/updateTruckNoCarrier", map).then((res) => {
+      this.axios.post("/api/v1/ams/updateTruckNoCarrier", map).then(res => {
         if (res.data.code == "200") {
           this.$message.success("修改授权成功");
           this.getRequestUrl();
@@ -293,11 +219,11 @@ export default {
           "/api/v1/ams/getSteelTruckNoList?apiId=411&con=" + this.input;
         // console.log("aaaa" + this.input);
       } else if (this.activeName == "five") {
-        this.option0.requestUrl = 
-        "/api/v1/ams/getNoCarTruckNoList?apiId=466&con=" + this.input;
+        this.option0.requestUrl =
+          "/api/v1/ams/getNoCarTruckNoList?apiId=466&con=" + this.input;
       } else if (this.activeName == "first") {
-        this.option.requestUrl = 
-        "/api/v1/ams/getHaveCarTruckNoList?apiId=466&con=" + this.input;
+        this.option.requestUrl =
+          "/api/v1/ams/getHaveCarTruckNoList?apiId=466&con=" + this.input;
       }
     },
     seeclick(saleOrderId) {
@@ -338,7 +264,7 @@ export default {
           "/api/v1/ams/getTruckNoMaterialList?saleOrderMaterialId=" +
             row.saleOrderMaterialId
         )
-        .then((res) => {
+        .then(res => {
           this.tableData = res.data.data;
         });
     },
@@ -372,7 +298,7 @@ export default {
           "/api/v1/ams/getTruckNoMaterialList?saleOrderMaterialId=" +
             row.saleOrderMaterialId
         )
-        .then((res) => {
+        .then(res => {
           this.tableData3 = res.data.data;
         });
     },
@@ -406,11 +332,11 @@ export default {
           "/api/v1/ams/getTruckNoMaterialList?saleOrderMaterialId=" +
             row.saleOrderMaterialId
         )
-        .then((res) => {
+        .then(res => {
           this.tableData0 = res.data.data;
         });
-    },
-  },
+    }
+  }
 };
 </script>
 <style lang="scss" scoped>

+ 15 - 61
src/views/appoint/components/saleContract/saleOrderSteelCarrier.vue

@@ -13,8 +13,8 @@
     <el-tabs v-model="activeName" @tab-click="handleClick">
       <!-- 已审批 -->
       <el-tab-pane label="已审批" name="four">
-        <dilTable v-bind.sync="option4" ref="table">
-          <el-table-column fixed="right" label="操作" width="200">
+        <mergeRowTable v-bind.sync="option4" ref="table">
+          <el-table-column fixed="right" label="操作" width="120">
             <template slot-scope="scope">
               <el-button
                 @click="steelSendClick(scope.row.saleOrderId)"
@@ -22,34 +22,9 @@
                 size="small"
                 >钢材派车</el-button
               >
-              <el-button
-                @click="detailclick(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">
-                <div v-if="false">{{ props }}</div>
-                <div>
-                  <el-table :data="tableData" border>
-                    <el-table-column
-                      v-for="(item, i) in tableHead"
-                      :key="i"
-                      :prop="item.prop"
-                      :label="item.label"
-                      :width="item.width"
-                    ></el-table-column>
-                  </el-table>
-                </div>
-              </el-form>
             </template>
           </el-table-column>
-        </dilTable>
+        </mergeRowTable>
       </el-tab-pane>
     </el-tabs>
   </div>
@@ -69,37 +44,13 @@ export default {
       option4: {
         // 表格请求数据的地址
         requestUrl: "",
+        comparison: "saleNumber",
+        columnIndexs: [0, 1, 2, 3, 7, 8, 9, 10, 11, 12, 13, 14, 15]
       },
       mapList: [],
       mapItemList: [],
-      //记录旧的row对象 (销售公司已审批)
-      oldRow: "",
-      //记录上一个展开的点击次数,单数为展开状态,复数为闭合状态 (销售公司已审批)
-      oldRowCount: 1,
-      tableHead: [
-        {
-          prop: "materialName",
-          label: "物资名称",
-          width: 150,
-        },
-        {
-          prop: "specificationModel",
-          label: "规格型号",
-          width: 150,
-        },
-        {
-          prop: "materialNumber",
-          label: "物资件数",
-          width: 100,
-        },
-        {
-          prop: "materialWeight",
-          label: "物资重量",
-          width: 100,
-        },
-      ],
       //(销售公司已审批)
-      tableData: [],
+      tableData: []
     };
   },
   created() {
@@ -135,7 +86,10 @@ export default {
       } else {
         if (this.activeName == "four") {
           this.option4.requestUrl =
-            "/api/v1/ams/getSaleOrderListToCarrier?apiId=467&con=" + this.input+"&carrierSsoId="+"";
+            "/api/v1/ams/getSaleOrderListToCarrier?apiId=467&con=" +
+            this.input +
+            "&carrierSsoId=" +
+            "";
         }
       }
     },
@@ -171,14 +125,14 @@ export default {
       // 根据销售订单id查询物资信息
       this.axios
         .post("/api/v1/ams/getSaleMaterialList?saleOrderId=" + row.saleOrderId)
-        .then((res) => {
+        .then(res => {
           this.tableData = res.data.data;
         });
-    },
-  },
+    }
+  }
 };
 </script>
-<style lang='scss' scoped>
+<style lang="scss" scoped>
 .salePlan {
   .top {
     padding: 1.25rem 0.375rem;
@@ -188,4 +142,4 @@ export default {
     }
   }
 }
-</style>
+</style>

+ 148 - 25
src/views/queue/components/qmsEnFacotory/queueFListMonitor.vue

@@ -1,26 +1,68 @@
 // 链表监控 // 排队开始
 <template>
   <div class="sale">
-    <div class="top">
-      <el-form :inline="true" style="margin-top: 1rem;">
-        <el-form-item>
-          <label class="el-form-item__label" style="width: auto;">车牌号</label>
-        </el-form-item>
-        <el-form-item>
-          <el-input v-model="capacityNo"></el-input>
-        </el-form-item>
-        <el-form-item>
-          <el-button
-            type="primary"
-            class="btn"
-            @click="onclick"
-            style="margin-left: 4px;"
-            clearable
-            ><i class="el-icon-search"></i>查询</el-button
-          >
-        </el-form-item>
-      </el-form>
-    </div>
+    <div class="top"></div>
+    <el-dialog title="链表详情" :visible.sync="dialogTableVisible">
+      <el-table
+        :data="tableDataDetails"
+        border
+        style="width: 100%; margin-top: 20px"
+        max-height="500px"
+      >
+        <el-table-column type="index" width="50"> </el-table-column>
+        <el-table-column prop="capacityNumber" label="车牌号" fit>
+        </el-table-column>
+        <el-table-column prop="resultStartTime" label="排队开始时间">
+        </el-table-column>
+        <el-table-column prop="listNodeOrder" label="序号"></el-table-column>
+        <el-table-column prop="materialName" label="物资名称">
+        </el-table-column>
+        <el-table-column prop="materialSpecification" label="物资规格">
+        </el-table-column>
+        <el-table-column prop="materialModel" label="物资型号">
+        </el-table-column>
+        <el-table-column prop="materialNumber" label="物资件数">
+        </el-table-column>
+        <el-table-column prop="driverTel" label="司机电话号码">
+        </el-table-column>
+        <el-table-column prop="sureTime" label="可进厂确认时间">
+        </el-table-column>
+        <el-table-column prop="gatepostName" label="进厂门岗">
+        </el-table-column>
+      </el-table>
+    </el-dialog>
+    <el-dialog title="链表详情" :visible.sync="spelldialogTableVisible">
+      <el-table
+        :data="tableDataSpellDetails"
+        :span-method="objectSpanMethod"
+        border
+        style="width: 100%; margin-top: 20px"
+        @selection-change="handleSelectionChange"
+        max-height="500px"
+      >
+        <el-table-column type="selection" width="55"></el-table-column>
+        <el-table-column prop="capacityNumber" label="车牌号" fit>
+        </el-table-column>
+        <el-table-column prop="grid" label="拼数" fit> </el-table-column>
+        <el-table-column prop="resultStartTime" label="排队开始时间">
+        </el-table-column>
+        <el-table-column prop="listNodeOrder" label="序号"></el-table-column>
+        <el-table-column prop="materialName" label="物资名称">
+        </el-table-column>
+        <el-table-column prop="materialSpecification" label="物资规格">
+        </el-table-column>
+        <el-table-column prop="materialModel" label="物资型号">
+        </el-table-column>
+        <el-table-column prop="materialNumber" label="物资件数">
+        </el-table-column>
+        <el-table-column prop="driverTel" label="司机电话号码">
+        </el-table-column>
+        <el-table-column prop="gatepostName" label="进厂门岗">
+        </el-table-column>
+        <el-table-column prop="sureTime" label="可进厂确认时间">
+        </el-table-column>
+      </el-table>
+    </el-dialog>
     <div class="tabs">
       <el-tabs v-model="activeName" type="card" @tab-click="handleClick">
         <el-tab-pane label="单拼车辆排队链表" name="first">
@@ -28,7 +70,6 @@
             :data="tableData1"
             border
             style="width: 100%; margin-top: 20px"
-            @selection-change="handleSelectionChange"
             max-height="500px"
           >
             <el-table-column type="index" width="50"> </el-table-column>
@@ -39,19 +80,34 @@
             </el-table-column>
             <el-table-column prop="materialModel" label="物资型号">
             </el-table-column>
+            <el-table-column fixed="right" label="操作" width="100">
+              <template slot-scope="scope">
+                <el-button type="text" size="mini" @click="getDetails(scope)">
+                  链表详情
+                </el-button>
+              </template>
+            </el-table-column>
           </el-table>
         </el-tab-pane>
         <el-tab-pane label="多拼车辆排队链表" name="second">
           <el-table
             :data="tableData"
-            :span-method="objectSpanMethod"
             border
             style="width: 100%; margin-top: 20px"
-            @selection-change="handleSelectionChange"
             max-height="500px"
           >
-            <el-table-column type="selection" width="55"></el-table-column>
             <el-table-column prop="count" label="排队数"> </el-table-column>
+            <el-table-column fixed="right" label="操作" width="100">
+              <template slot-scope="scope">
+                <el-button
+                  type="text"
+                  size="mini"
+                  @click="getSpellDetails(scope)"
+                >
+                  链表详情
+                </el-button>
+              </template>
+            </el-table-column>
           </el-table>
         </el-tab-pane>
       </el-tabs>
@@ -59,10 +115,15 @@
   </div>
 </template>
 <script>
-import { getCookie } from "@/utils/util.js";
 export default {
   data() {
     return {
+      //存放每一行记录的合并数
+      spanArr: [],
+      tableDataSpellDetails: [],
+      spelldialogTableVisible: false,
+      dialogTableVisible: false,
+      tableDataDetails: [],
       capacityNo: "",
       inputText: "",
       activeName: "first",
@@ -89,6 +150,68 @@ export default {
     this.getNoSpellingArray();
   },
   methods: {
+    //记录每一行的合并数
+    getSpanArr(data) {
+      //每次调用方法初始化
+      this.spanArr = [];
+      for (var i = 0; i < data.length; i++) {
+        if (i === 0) {
+          this.spanArr.push(1);
+          this.pos = 0;
+        } else {
+          // 判断当前元素与上一个元素是否相同
+          if (data[i].resultTotalId === data[i - 1].resultTotalId) {
+            this.spanArr[this.pos] += 1;
+            this.spanArr.push(0);
+          } else {
+            this.spanArr.push(1);
+            this.pos = i;
+          }
+        }
+      }
+    },
+    objectSpanMethod({ row, column, rowIndex, columnIndex }) {
+      if (
+        columnIndex === 0 ||
+        columnIndex === 1 ||
+        columnIndex === 2 ||
+        columnIndex === 3 ||
+        columnIndex === 4 ||
+        columnIndex === 9 ||
+        columnIndex === 10 ||
+        columnIndex === 12
+      ) {
+        const _row = this.spanArr[rowIndex];
+        const _col = _row > 0 ? 1 : 0;
+        return {
+          rowspan: _row,
+          colspan: _col
+        };
+      }
+    },
+    getDetails(scope) {
+      console.log(scope.row.gridId);
+      let map = {
+        locationId: scope.row.gridId
+      };
+      this.axios.post("/api/v1/qms/getListMonitorMes", map).then(res => {
+        console.log(res);
+        this.tableDataDetails = res.data.data;
+        this.dialogTableVisible = true;
+      });
+    },
+    getSpellDetails(scope) {
+      let map = {
+        locationId: scope.row.gridId
+      };
+      this.axios
+        .post("/api/v1/qms/getSpellingListMonitorMes", map)
+        .then(res => {
+          this.tableDataSpellDetails = res.data.data;
+          this.getSpanArr(res.data.data);
+          this.spelldialogTableVisible = true;
+        });
+    },
     handleClick() {
       if (this.activeName == "first") {
         this.getNoSpellingArray();

+ 61 - 18
src/views/queue/components/qmsEnFacotory/queueFStart.vue

@@ -3,22 +3,6 @@
   <div class="sale">
     <div class="top">
       <el-form :inline="true" style="margin-top: 1rem;">
-        <el-form-item>
-          <label class="el-form-item__label" style="width: auto;">车牌号</label>
-        </el-form-item>
-        <el-form-item>
-          <el-input v-model="capacityNo"></el-input>
-        </el-form-item>
-        <el-form-item>
-          <el-button
-            type="primary"
-            class="btn"
-            @click="onclick"
-            style="margin-left: 4px;"
-            clearable
-            ><i class="el-icon-search"></i>查询</el-button
-          >
-        </el-form-item>
         <el-form-item>
           <el-button
             type="primary"
@@ -29,6 +13,11 @@
             ><i class="el-icon-search"></i>查询物资</el-button
           >
         </el-form-item>
+        <el-form-item
+          ><el-button type="primary" class="btn" @click="refresh">
+            <i class="el-icon-d-arrow-right"></i>刷新
+          </el-button></el-form-item
+        >
         <el-form-item
           ><el-button type="primary" class="btn" @click="allow">
             <i class="el-icon-d-arrow-right"></i>放行
@@ -93,13 +82,20 @@
       <el-tabs v-model="activeName" type="card" @tab-click="handleClick">
         <el-tab-pane label="单拼车辆排队链表" name="first">
           <el-table
+            ref="mutiData"
             :data="tableData1"
             border
+            :row-key="getRowKey"
             style="width: 100%; margin-top: 20px"
             @selection-change="handleSelectionChange"
             max-height="500px"
           >
-            <el-table-column type="selection" width="55"></el-table-column>
+            <el-table-column
+              type="selection"
+              width="55"
+              :selectable="selectInit"
+              reserve-selection
+            ></el-table-column>
             <el-table-column type="index" width="50"> </el-table-column>
             <el-table-column prop="capacityNumber" label="车牌号" fit>
             </el-table-column>
@@ -251,6 +247,32 @@ export default {
     this.getNoSpellingArray();
   },
   methods: {
+    refresh() {
+      this.getSpellingArray();
+      this.getNoSpellingArray();
+    },
+    getRowKey(row) {
+      return row.ROW_ID;
+    },
+    selectInit(row) {
+      if (this.maplist.length == 0) {
+        if (row.ROW_ID == 1) {
+          return true;
+        } else {
+          return false;
+        }
+      } else {
+        if (
+          this.maplist.some(e => {
+            return e.ROW_ID == row.ROW_ID || e.ROW_ID + 1 == row.ROW_ID;
+          })
+        ) {
+          return true;
+        } else {
+          return false;
+        }
+      }
+    },
     rowDbClick(row) {
       this.materialList = [];
       this.materialList.push(row);
@@ -268,7 +290,6 @@ export default {
       this.table1 = true;
       this.optionMa.requestUrl =
         "/api/v1/uc/getSteelMaterial?apiId=244&i=" + new Date();
-      console.log("dasd");
     },
     //返回选中的物资信息
     selectionChange2(selection) {
@@ -400,6 +421,20 @@ export default {
     handleSelectionChange(selection) {
       this.maplist = [];
       this.maplist = selection;
+      for (let i = 0; i < this.maplist.length; i++) {
+        if (i + 1 < this.maplist.length) {
+          if (this.maplist[i].ROW_ID + 1 != this.maplist[i + 1].ROW_ID) {
+            this.$refs.mutiData.clearSelection();
+          }
+        }
+      }
+      if (
+        !this.maplist.some(e => {
+          return e.ROW_ID == 1;
+        })
+      ) {
+        this.$refs.mutiData.clearSelection();
+      }
     },
     updateBill(scope) {
       console.log(scope.row.capacityId);
@@ -441,6 +476,14 @@ export default {
       this.axios.post("/api/v1/qms/allowEnFactory", map).then(res => {
         if (res.data.code == "200") {
           this.$message.success("放行成功,等待进厂");
+          this.maplist = [];
+          this.$refs.mutiData.clearSelection();
+          this.getNoSpellingArray();
+          this.getSpellingArray();
+        } else {
+          this.$message.error("请按顺序勾选");
+          this.maplist = [];
+          this.$refs.mutiData.clearSelection();
           this.getNoSpellingArray();
           this.getSpellingArray();
         }

+ 4 - 2
src/views/sale/components/offSiteTransportation/checkGPS.vue

@@ -488,8 +488,10 @@ export default {
           endTime: that.formatDate(that.time[1], "yyyy-MM-dd hh:mm:ss")
         })
         .then(res => {
-          if (res.data.startAndEndRoutes != "") {
-            that.listPath = res.data.startAndEndRoutes;
+          if(res.data.data=="-1"){
+             this.$message.error('自提车辆无权查看!');
+          }else if (res.data.data.startAndEndRoutes != "") {
+            that.listPath = res.data.data.startAndEndRoutes;
             that.initMap([105.602725, 37.076636]);
           } else {
             this.$message.error("车辆没有开启GPS");

+ 246 - 0
src/views/sale/components/offSiteTransportation/currentLocation.vue

@@ -0,0 +1,246 @@
+<template>
+  <div class="container">
+    <div id="amap-container"></div>
+    <div class="controller">
+      <div class="in_transit_information">
+        <span class="item_details">车牌号:</span>
+        <el-input style="width: 120px;" class="inputStyle" v-model.trim="carNumber"> </el-input>
+        <el-button type="primary" class="searchstyle" @click="initData">查询</el-button>
+      </div>
+    </div>
+  </div>
+</template>
+<script>
+import { shallowRef } from "@vue/reactivity";
+import { lazyAMapApiLoaderInstance } from "vue-amap";
+import { sjTime, stringToDate } from "@/utils/sharedJsFile";
+import Slider from "./slider.vue";
+Vue.use(Slider);
+import Vue from "vue";
+export default {
+  name: "PathView",
+  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 {
+     
+      //查询车牌号
+      carNumber: "",
+      //地图组件
+      map:null,
+
+    };
+  },
+  created() {
+    let that =this;
+    that.initMap(105.602725,37.076636)
+  },
+  mounted() {},
+  methods: {
+    
+
+    //初始化数据
+    initData() {
+      let that = this;
+      if (that.carNumber == "") {
+        this.$message.error("车牌号不能为空!");
+        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'){
+                console.log("res.data.data.status")
+                  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,"现在所在位置");
+                  //显示窗体
+                  that.initCustomMarkes(that.carNumber,res.data.data.result.adr,res.data.data.result.lon,res.data.data.result.lat);
+              }else{
+                  this.$message.error("车辆暂时无GPS");
+              }
+          });
+          
+    },
+   
+   
+    //初始化地图
+    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.map.add(pointmarker);
+    },
+   
+    //初始化窗体
+    initCustomMarkes(title, details, lon, lat) {
+      let that = this;
+      //自定义窗体内容
+      var content = [
+        "<div  style='top:1px;width: 180px; background-color: rgba(0, 0, 0, 1);' ><font color='white'>" +
+          title +
+          "</font>",
+        "<div style='background-color:rgba(255, 255, 255, 0.5);'><font color='white'>" +
+          details +
+          "</font></div></div>"
+      ];
+      // 创建 infoWindow 实例
+      var infoWindow = new AMap.InfoWindow({
+        content: content.join("<br>"),//传入 dom 对象,或者 html 字符串
+        offset:new AMap.Pixel(0,-20)//修改信息差窗体偏移
+      });
+      // 打开信息窗体
+      infoWindow.open(that.map, [lon, 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>

+ 4 - 5
src/views/sale/components/offSiteTransportation/inTransit.vue

@@ -167,7 +167,7 @@ export default {
           label: '中联厂出口'
         }],
       dateValue:[new Date(), new Date()],
-      inputValue:"螺纹钢",
+      inputValue:"",
       exceptionType:"全部类型",
       selectOrderNumber:"",
       capacityNumber1:"",
@@ -371,7 +371,7 @@ export default {
                       "capacityNumbers": this.capacityNumber1,
                       "carrierNames":this.carrierName,
                       "outGatepostNames":this.gatepostName,
-                      "consigneeCompanyNames": this.consigneeCompanyName1});
+                      "receiveNames": this.consigneeCompanyName1});
       }
       if(this.activeName=="second"){
       //改变已完成条件              
@@ -381,7 +381,7 @@ export default {
                       "capacityNumbers": this.capacityNumber1,
                       "carrierNames":this.carrierName,
                       "outGatepostNames":this.gatepostName,
-                      "consigneeCompanyNames": this.consigneeCompanyName1});
+                      "receiveNames": this.consigneeCompanyName1});
       }
       if(this.activeName=="third"){
       //改变有异常条件              
@@ -392,7 +392,7 @@ export default {
                       "carrierName1":this.carrierName,
                       "abnormalType":this.exceptionType=="全部类型"?"":this.exceptionType,
                       "outGatepostNames":this.gatepostName,
-                      "consigneeCompanyName1": this.consigneeCompanyName1});
+                      "receiveNames": this.consigneeCompanyName1});
       }                              
     },
 
@@ -413,7 +413,6 @@ export default {
         this.pathOption.capacityNumber=row.capacityNumber;
         this.pathOption.startPointName="达钢集团"+row.outGatepostName,
         this.pathOption.endPointName=row.deliveryAddress,
-         console.log(this.pathOption,"this.pathOption")
         this.value7=true;
     },
     allDistanceclick(orderNumber){

+ 7 - 4
src/views/sale/components/offSiteTransportation/mapTest.vue

@@ -294,7 +294,7 @@ export default {
                         that.initParkingMarkes(
                             20,
                             35,
-                            require("@/assets/img/start.png"),
+                            require("@/assets/img/park.png"),
                             calculationPoint.lon,
                             calculationPoint.lat,
                             message.split(".")[0] + "分钟"
@@ -337,7 +337,7 @@ export default {
                         that.initLeaveMarkes(
                         20,
                         35,
-                        require("@/assets/img/start.png"),
+                        require("@/assets/img/leave.png"),
                         item2.lon,
                         item2.lat,
                         message.split(".")[0] + "分钟"
@@ -432,8 +432,11 @@ export default {
         initData(orderNumber){
             let that=this;
              that.axios.post("/api/v1/otms/fullPath?orderNumber="+orderNumber).then((res) => {
-                 if(res.data.startAndEndRoutes!=null){
-                     that.listPath=res.data.startAndEndRoutes
+                 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.initMap();
                  }else{
                      that.listPath=[];

+ 326 - 0
src/views/sale/components/offSiteTransportation/transportationPerformance.vue

@@ -0,0 +1,326 @@
+<template>
+  <!-- 在途运输信息选择页面 -->
+  <div class="inTransit">
+    <el-form :inline="true">
+      <el-form-item>
+        <label class="el-form-item__label" style="width: auto;">时间段</label>
+            <el-date-picker
+          v-model="dateValue"
+          type="daterange"
+          range-separator="至"
+          start-placeholder="开始日期"
+          end-placeholder="结束日期">
+        </el-date-picker>
+      </el-form-item>
+      <el-form-item>
+        <span class="el-form-item__span" style="width: auto;">产品分类</span>
+          <el-input v-model="inputValue" placeholder="请输入内容"></el-input>
+      </el-form-item>
+      <el-form-item>
+          <span class="el-form-item__span" style="width: auto;">车牌号</span>
+          <el-input v-model="capacityNumber1" placeholder="请输入内容"></el-input>
+      </el-form-item>
+      <el-form-item>
+          <span class="el-form-item__span" style="width: auto;">收货单位</span>
+          <el-input v-model="consigneeCompanyName1" placeholder="请输入内容"></el-input>
+      </el-form-item> 
+      <el-form-item>
+          <span class="el-form-item__span" style="width: auto;">承运单位</span>
+          <el-input v-model="carrierName" placeholder="请输入内容"></el-input>
+      </el-form-item> 
+      <el-form-item>
+        <span class="el-form-item__span" style="width: auto;">门岗名称</span>
+        <el-input v-model="gatepostName" placeholder="请输入内容"></el-input>
+      </el-form-item> 
+      <el-form-item>
+        <el-button type="primary" @click="onSearch"><i class="el-icon-search"></i>查询</el-button>
+        <el-button type="primary" @click="exportData">导出</el-button>
+      </el-form-item>
+    </el-form>
+    <!-- 执行中 -->
+
+    <mergeRowTable ref="tab" v-bind.sync="option">
+      <el-table-column fixed="right" label="操作" width="180">
+        <template slot-scope="scope">
+          <el-button @click="click(scope.row)" type="text" size="small" style="font-size: 17px">轨迹</el-button>
+          <el-button @click="toPhotoClick(scope.row.orderNumber)" type="text" size="small" style="font-size: 17px">抵达图</el-button>
+          <el-button @click="receipctPhotoClick(scope.row.orderNumber)" type="text" size="small" style="font-size: 17px">签收图</el-button>
+        </template>
+      </el-table-column>
+    </mergeRowTable>
+
+    <div style="height: 100%">
+      <vxe-modal width="1237" height="731" v-model="value7" show-zoom resize>
+            <template #default>
+              <PathView v-bind.sync="pathOption"></PathView>
+            </template>
+      </vxe-modal>
+    </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"
+        >
+        </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"
+        >
+        </el-image>
+      </div>
+    </vxe-modal>
+    <div style="height: 100%">
+      <vxe-modal width="1237" height="731" v-model="value5" show-zoom resize>
+        <template #default>
+          <dilTable ref="tableAlarm" v-bind.sync="optionAlarm"></dilTable>
+        </template>
+      </vxe-modal>
+    </div> 
+  </div>
+</template>
+
+
+<script>
+import { sjTime } from "@/utils/sharedJsFile";
+import PathView from "./mapTest.vue"
+export default {
+  name: "inTransit",
+  components: { 
+    PathView,
+  },
+  data() {
+    return {
+      dateValue:[new Date(), new Date()],
+      inputValue:"",
+      exceptionType:"全部类型",
+      selectOrderNumber:"",
+      capacityNumber1:"",
+      carrierName:"",
+       gatepostName:"",
+       value7:false,
+       value6:false,
+       value5:false,
+       dialogVisible:false,
+      consigneeCompanyName1:"",
+      status: "",
+      state: "",
+      activeName: "first",
+      option: {       
+        // 表格请求数据的地址
+        requestUrl: "/api/v1/otms/transportationPerformance?apiId=479",
+        comparison:"orderNumber",
+        columnIndexs:[1,2,8,9,10,11,12,13,14,15,16,17,18,19],  
+      },
+      
+      optionAlarm:{
+        requestUrl: "",
+      },
+      pathOption:{
+           orderNumber:'',
+        capacityNumber:'',
+         startPointName:'',
+        endPointName:'',
+      },
+      mileOption:{
+        orderNumber:''
+      },
+      alarmOption:{
+        orderNumber:''
+      },
+      srcList: [],
+      src: "",
+      isShow:false,
+      srcList2: [],
+      src2: "",
+      isShow2:false,
+    };
+  },
+  mounted() {
+    console.log("nijfdsojfosafj")
+    this.restaurants = this.loadAll();
+    // this.onSearch();
+    
+  },
+  methods: {
+    receipctPhotoClick(orderNumber){
+      this.axios
+       .post("/api/v1/otms/getReceivingPhotoByUrl?orderNumber="+orderNumber)
+       .then((res)=>{
+         console.log(res.data)
+          this.isShow2=true;
+          this.srcList2=[];
+          this.srcList2=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);
+          }
+       });
+    },
+    toPhotoClick(orderNumber) {
+      this.axios
+        .post("/api/v1/otms/getArrivalPhoto?orderNumber=" + orderNumber)
+        .then(res => {
+          this.srcList = [];
+          this.src = res.data.data;
+          this.isShow = true;
+          this.srcList.push(res.data.data);
+        });
+    },
+   
+    showPathView(data){
+      this.dialogVisible=!this.dialogVisible;
+      this.selectOrderNumber=data.orderNumber;
+    },
+ 
+    createFilter(queryString) {
+      return (restaurant) => {
+        return (
+          restaurant.value.toLowerCase().indexOf(queryString.toLowerCase()) ===
+          0
+        );
+      };
+    },
+    loadAll() {
+      return [
+        { value: "螺纹钢"},
+         { value: "微粉"},
+        { value: "带钢"},
+        { value: "钢坯"},
+        { value: "其他"},
+      ];
+    },
+    exportData(){
+        
+
+        let tHeader = [];
+        let filterVal = [];
+        if(this.activeName=="first"){
+          this.$refs.tab.dataColumnData.filter( (item,i) =>{
+                    tHeader.push(item.label);
+                        filterVal.push(item.prop);
+                    } )
+            this.export2Excel(tHeader,filterVal,this.$refs.tab.dataTabel,'执行中表格');
+        }else if(this.activeName=="second"){
+            this.$refs.tab2.dataColumnData.filter( (item,i) =>{
+              tHeader.push(item.label);
+                  filterVal.push(item.prop);
+              } )
+          this.export2Excel(tHeader,filterVal,this.$refs.tab2.dataTabel,'已完成表格');
+        } else if(this.activeName=="third"){
+            this.$refs.tab3.dataColumnData.filter( (item,i) =>{
+                      tHeader.push(item.label);
+                          filterVal.push(item.prop);
+                      } )
+            this.export2Excel(tHeader,filterVal,this.$refs.tab3.dataTabel,'有异常表格');
+        }
+        
+        
+    },
+    export2Excel(tHeader,filterVal,dataTabel,exeName) {
+      var that = this;
+       this.downloadLoading = true
+      require.ensure([], () => {
+        const { export_json_to_excel } = require("@/assets/excel/Export2Excel.js"); //这里必须使用绝对路径,使用@/+存放export2Excel的路径
+        console.log("export_json_to_excel",export_json_to_excel)
+        let list = dataTabel;
+        let data = that.formatJson(filterVal, list);
+        export_json_to_excel(tHeader, data, exeName); // 导出的表格名称
+      });
+    },
+    //3.格式转换
+    formatJson(filterVal, jsonData) {
+      return jsonData.map((v) => filterVal.map((j) => v[j]));
+    },
+    onSearch(){
+  
+      if(this.activeName=="first"){
+      //改变执行中条件
+      console.log(this.$refs.tab)
+      console.log("this.$refs.tab")
+      this.$refs.tab.setDataRequestQuery({"startTime":sjTime(this.dateValue[0]),
+                      "endTime": sjTime(this.dateValue[1]),
+                      "materialNames": this.inputValue,
+                      "capacityNumbers": this.capacityNumber1,
+                      "carrierNames":this.carrierName,
+                      "outGatepostNames":this.gatepostName,
+                      "receiveNames": this.consigneeCompanyName1});
+      }
+      if(this.activeName=="second"){
+      //改变已完成条件              
+      this.$refs.tab2.setDataRequestQuery({"startTime":sjTime(this.dateValue[0]),
+                      "endTime": sjTime(this.dateValue[1]),
+                      "materialNames": this.inputValue,
+                      "capacityNumbers": this.capacityNumber1,
+                      "carrierNames":this.carrierName,
+                      "outGatepostNames":this.gatepostName,
+                      "receiveNames": this.consigneeCompanyName1});
+      }
+      if(this.activeName=="third"){
+      //改变有异常条件              
+      this.$refs.tab3.setDataRequestQuery({"startTime":sjTime(this.dateValue[0]),
+                      "endTime": sjTime(this.dateValue[1]),
+                      "materialNames": this.inputValue,
+                      "capacityNumber1": this.capacityNumber1,
+                      "carrierName1":this.carrierName,
+                      "abnormalType":this.exceptionType=="全部类型"?"":this.exceptionType,
+                      "outGatepostNames":this.gatepostName,
+                      "receiveNames": this.consigneeCompanyName1});
+      }                              
+    },
+
+
+    //other
+    click(row) {
+     
+        this.pathOption.orderNumber=row.orderNumber;
+        this.pathOption.capacityNumber=row.capacityNumber;
+        this.pathOption.startPointName="达钢集团"+row.outGatepostName,
+        this.pathOption.endPointName=row.deliveryAddress,
+        this.value7=true;
+
+    },
+    historyclick(row){
+      
+      this.pathOption.orderNumber=row.orderNumber;
+        this.pathOption.capacityNumber=row.capacityNumber;
+        this.pathOption.startPointName="达钢集团"+row.outGatepostName,
+        this.pathOption.endPointName=row.deliveryAddress,
+         console.log(this.pathOption,"this.pathOption")
+        this.value7=true;
+    },
+    allDistanceclick(orderNumber){
+      //this.$router.push("/offsite/inTransitOrderMileage?orderNumber="+orderNumber);
+    
+      this.mileOption.orderNumber=orderNumber;
+      this.value6=true;
+    },
+    inTransitAlarmclick(orderNumber){
+      this.optionAlarm.requestUrl="/api/v1/otms/getTransportAbnormalInfo?apiId=472&orderNumbers="+orderNumber;
+      this.value5=true;
+    },
+    },
+};
+</script>
+<style lang='scss' scoped>
+.el-input {
+    width: 150px;
+    margin-left: 5px;
+}
+span.el-form-item__span {
+    float: left;
+    margin-top: 7px;
+}
+.homeworkPath {
+  .top {
+    padding: 20px 30px;
+  }
+}
+</style>

+ 57 - 9
src/views/sale/components/transport_excute/tms-offsite/arrivalResult.vue

@@ -1,8 +1,9 @@
 <template>
   <!-- 抵达页面 -->
   <div class="purchasFuelNewMonitor">
-    <div class="frameCalculation">
-      <span>抵达时间:</span>
+    <el-form :inline="true">
+      <el-form-item>
+        <span>抵达时间:</span>
       <el-date-picker
         v-model="startTime"
         type="datetime"
@@ -12,11 +13,31 @@
       <span>至</span>
       <el-date-picker v-model="endTime" type="datetime" placeholder="选择日期">
       </el-date-picker>
-      <el-input placeholder="请输入内容" v-model="input" clearable> </el-input>
-      <el-button type="primary" class="btn" @click="onclick">
-        <i class="el-icon-search"></i>查询
-      </el-button>
-    </div>
+      </el-form-item>
+      <el-form-item>
+        <span class="el-form-item__span" style="width: auto;">产品分类</span>
+          <el-input v-model="inputValue" placeholder="请输入内容"></el-input>
+      </el-form-item>
+      <el-form-item>
+          <span class="el-form-item__span" style="width: auto;">车牌号</span>
+          <el-input v-model="capacityNumber1" placeholder="请输入内容"></el-input>
+      </el-form-item>
+      <el-form-item>
+          <span class="el-form-item__span" style="width: auto;">收货单位</span>
+          <el-input v-model="consigneeCompanyName1" placeholder="请输入内容"></el-input>
+      </el-form-item> 
+      <el-form-item>
+          <span class="el-form-item__span" style="width: auto;">承运单位</span>
+          <el-input v-model="carrierName" placeholder="请输入内容"></el-input>
+      </el-form-item> 
+      <el-form-item>
+        <span class="el-form-item__span" style="width: auto;">门岗名称</span>
+        <el-input v-model="gatepostName" placeholder="请输入内容"></el-input>
+      </el-form-item> 
+      <el-form-item>
+        <el-button type="primary" @click="onclick"><i class="el-icon-search"></i>查询</el-button>
+      </el-form-item>
+    </el-form>
     <div class="table">
       <el-table
         @filter-change="filterChange"
@@ -95,6 +116,13 @@ export default {
   name: "homeworkPath",
   data() {
     return {
+      inputValue:"",
+      consigneeCompanyName1:"",
+      exceptionType:"全部类型",
+      selectOrderNumber:"",
+      capacityNumber1:"",
+      carrierName:"",
+       gatepostName:"",
       spanArr: [],
       dataTabel: [],
       // 自己的数据总条数
@@ -234,7 +262,13 @@ export default {
         if (this.isKuang) {
           // 发送请求
           this.axios
-            .post(url, data, {
+            .post(url, {"startTime":sjTime(this.startTime),
+                      "endTime": sjTime(this.endTime),
+                      "materialNames": this.inputValue,
+                      "capacityNumbers": this.capacityNumber1,
+                      "carrierNames":this.carrierName,
+                      "outGatepostNames":this.gatepostName,
+                      "receiveNames": this.consigneeCompanyName1}, {
               // 请求地址 中
               params: {
                 pageNum: 1,
@@ -253,7 +287,13 @@ export default {
         } else {
           // 发送请求
           this.axios
-            .post(url, data, {
+            .post(url, {"startTime":sjTime(this.startTime),
+                      "endTime": sjTime(this.endTime),
+                      "materialNames": this.inputValue,
+                      "capacityNumbers": this.capacityNumber1,
+                      "carrierNames":this.carrierName,
+                      "outGatepostNames":this.gatepostName,
+                      "receiveNames": this.consigneeCompanyName1}, {
               // 请求地址 中
               params: {
                 pageNum: pageNum || this.dataCurrentPage,
@@ -327,6 +367,14 @@ export default {
 };
 </script>
 <style lang="scss" scoped>
+.el-input {
+    width: 150px;
+    margin-left: 5px;
+}
+span.el-form-item__span {
+    float: left;
+    margin-top: 7px;
+}
 .purchasFuelNewMonitor {
   .frameCalculation {
     width: 100%;

+ 62 - 26
src/views/sale/components/transport_excute/tms-offsite/receiptResult.vue

@@ -1,8 +1,9 @@
 <template>
   <!-- 收货页面 -->
    <div class="purchasFuelNewMonitor">
-    <div class="frameCalculation">
-      <span>收货时间:</span>
+    <el-form :inline="true">
+      <el-form-item>
+        <span>抵达时间:</span>
       <el-date-picker
         v-model="startTime"
         type="datetime"
@@ -10,25 +11,33 @@
       >
       </el-date-picker>
       <span>至</span>
-      <el-date-picker
-        v-model="endTime"
-        type="datetime"
-        placeholder="选择日期"
-      >
+      <el-date-picker v-model="endTime" type="datetime" placeholder="选择日期">
       </el-date-picker>
-        <el-input
-        placeholder="请输入内容"
-        v-model="input"
-        clearable>
-      </el-input>
-      <el-button type="primary" class="btn" @click="onclick">
-        <i class="el-icon-search"></i>查询
-      </el-button>
-      <!-- <el-button type="primary" @click="exportData()"><i class="el-icon-download"></i>导出(Excel)</el-button>
-      <el-button type="primary" @click="refresh">
-        <i class="el-icon-refresh"></i>刷新
-      </el-button> -->
-    </div>
+      </el-form-item>
+      <el-form-item>
+        <span class="el-form-item__span" style="width: auto;">产品分类</span>
+          <el-input v-model="inputValue" placeholder="请输入内容"></el-input>
+      </el-form-item>
+      <el-form-item>
+          <span class="el-form-item__span" style="width: auto;">车牌号</span>
+          <el-input v-model="capacityNumber1" placeholder="请输入内容"></el-input>
+      </el-form-item>
+      <el-form-item>
+          <span class="el-form-item__span" style="width: auto;">收货单位</span>
+          <el-input v-model="consigneeCompanyName1" placeholder="请输入内容"></el-input>
+      </el-form-item> 
+      <el-form-item>
+          <span class="el-form-item__span" style="width: auto;">承运单位</span>
+          <el-input v-model="carrierName" placeholder="请输入内容"></el-input>
+      </el-form-item> 
+      <el-form-item>
+        <span class="el-form-item__span" style="width: auto;">门岗名称</span>
+        <el-input v-model="gatepostName" placeholder="请输入内容"></el-input>
+      </el-form-item> 
+      <el-form-item>
+        <el-button type="primary" @click="onclick"><i class="el-icon-search"></i>查询</el-button>
+      </el-form-item>
+    </el-form>
     <div class="table">
       <el-table
         @filter-change="filterChange"
@@ -106,6 +115,13 @@ export default {
   name: "homeworkPath",
   data() {
     return {
+      inputValue:"",
+      consigneeCompanyName1:"",
+      exceptionType:"全部类型",
+      selectOrderNumber:"",
+      capacityNumber1:"",
+      carrierName:"",
+       gatepostName:"",
        spanArr: [],
       dataTabel: [],
       // 自己的数据总条数
@@ -245,7 +261,13 @@ export default {
         if (this.isKuang) {
           // 发送请求
           this.axios
-            .post(url, data, {
+            .post(url,  {"startTime":sjTime(this.startTime),
+                      "endTime": sjTime(this.endTime),
+                      "materialNames": this.inputValue,
+                      "capacityNumbers": this.capacityNumber1,
+                      "carrierNames":this.carrierName,
+                      "outGatepostNames":this.gatepostName,
+                      "receiveNames": this.consigneeCompanyName1}, {
               // 请求地址 中
               params: {
                 pageNum: 1,
@@ -264,7 +286,13 @@ export default {
         } else {
           // 发送请求
           this.axios
-            .post(url, data, {
+            .post(url,  {"startTime":sjTime(this.startTime),
+                      "endTime": sjTime(this.endTime),
+                      "materialNames": this.inputValue,
+                      "capacityNumbers": this.capacityNumber1,
+                      "carrierNames":this.carrierName,
+                      "outGatepostNames":this.gatepostName,
+                      "receiveNames": this.consigneeCompanyName1}, {
               // 请求地址 中
               params: {
                 pageNum: pageNum || this.dataCurrentPage,
@@ -324,7 +352,7 @@ export default {
       }
       if(startTime && endTime){
         if(startTime < endTime){
-          this.requestUrl = '/api/v1/tms/getReceiptResult?apiId=471' + "&startTime=" + startTime + "&endTime=" + endTime + "&i=" +new Date()+"&con="+this.input; 
+          this.requestUrl = '/api/v1/otms/getReceiptResult?apiId=471' + "&startTime=" + startTime + "&endTime=" + endTime + "&i=" +new Date()+"&con="+this.input; 
            this.requestData(this.option);
        }else{
           this.startTime = null;
@@ -332,15 +360,23 @@ export default {
           this.$message.warning('开始时间要比结束时间早')
         }
       }else{
-        console.log(startTime && endTime)
-         this.requestUrl = '/api/v1/tms/getReceivingResult?apiId=471' + "&startTime=" + startTime + "&endTime=" + endTime + "&i=" +new Date()+"&con="+this.input; 
-        this.requestData(this.option);
+        // console.log(startTime && endTime)
+        //  this.requestUrl = '/api/v1/otms/getReceiptResult?apiId=471' + "&startTime=" + startTime + "&endTime=" + endTime + "&i=" +new Date()+"&con="+this.input; 
+        // this.requestData(this.option);
       }
     },
    }
 };
 </script>
 <style lang='scss' scoped>
+.el-input {
+    width: 150px;
+    margin-left: 5px;
+}
+span.el-form-item__span {
+    float: left;
+    margin-top: 7px;
+}
 .purchasFuelNewMonitor {
   .frameCalculation {
     width: 100%;

+ 6 - 2
src/views/sale/router/index.js

@@ -58,7 +58,8 @@ import newNotice from '../components/dilNotice/newNotice.vue'
 import outFactoryResult from '../components/transport_excute/outFactory/outFactoryResult.vue'
 import smsResult from '../components/transport_excute/outFactory/smsResult.vue'
 import arrivalPhoto from '../components/transport_excute/tms-offsite/arrivalPhoto.vue'
-import arrivalResult from '../components/transport_excute/tms-offsite/arrivalResult.vue'
+import arrivalResult from '../components/transport_excute/tms-offsite/arrivalResult.vue' 
+import transportationPerformance from '../components/offSiteTransportation/transportationPerformance.vue' 
 import distance from '../components/transport_excute/tms-offsite/distance.vue'
 // import inTransit from '../components/transport_excute/offSiteTransportation/inTransit.vue'
 import inTransitAbnormal from '../components/transport_excute/tms-offsite/inTransitAbnormal.vue'
@@ -103,6 +104,7 @@ import getBmsTruckStatementOrder from '../components/transportFreight/saleTruckS
 import getTransportResult from '../components/transportFreight/saleTruckSettlement/getTransportResult.vue'
 import mapTest from '../components/offSiteTransportation/mapTest.vue'
 import checkGPS from '../components/offSiteTransportation/checkGPS.vue'
+import currentLocation from '../components/offSiteTransportation/currentLocation.vue'
 import inTransit from '../components/offSiteTransportation/inTransit.vue'  
 import inTransitWarn from '../components/offSiteTransportation/inTransitWarn.vue'
 //测试数据
@@ -214,8 +216,10 @@ const constantRouterMap = [
 		{path: 'getTransportResult/:orderId', name: 'getTransportResult', meta: {code: 'xtpzgl-yhgl'}, component: getTransportResult},
 		{path: 'mapTest', name: 'mapTest', meta: {code: 'xtpzgl-yhgl'}, component: mapTest},  
 		{path: 'checkGPS', name: 'checkGPS', meta: {code: 'xtpzgl-yhgl'}, component: checkGPS},
+		{path: 'currentLocation', name: 'currentLocation', meta: {code: 'xtpzgl-yhgl'}, component: currentLocation},
 		{path: 'inTransitWarn', name: 'inTransitWarn', meta: {code: 'xtpzgl-yhgl'}, component: inTransitWarn},
-	  ]
+		{path: 'transportationPerformance', name: 'transportationPerformance', meta: {code: 'xtpzgl-yhgl'}, component: transportationPerformance},
+	  ] 
 	}
   ];
   const router = new Router({

+ 12 - 2
src/views/statisticalReport/components/defendCapacity/getCapacityByDefend.vue

@@ -29,7 +29,10 @@
         style="width: 100px"
       ></el-input>
     </div>
-    <div class="input_box" style="width:225px;margin-left:30px;margin-top:20px">
+    <div
+      class="input_box"
+      style="width: 225px; margin-left: 30px; margin-top: 20px"
+    >
       <el-input placeholder="请输入车牌号/出厂门岗" v-model="input" clearable>
       </el-input>
       <el-button type="primary" class="btn" @click="onclick">
@@ -37,7 +40,11 @@
       </el-button>
     </div>
     <div class="table">
-      <dilTable ref="excelDom" v-bind.sync="option" @func="func"></dilTable>
+      <mergeRowTable
+        ref="excelDom"
+        v-bind.sync="option"
+        @func="func"
+      ></mergeRowTable>
     </div>
   </div>
 </template>
@@ -52,11 +59,14 @@ export default {
       totalCapacity: null,
       startTime: null,
       endTime: null,
+
       input: "",
       tableTitle: "汽车抽查报表",
       option: {
         // 表格请求数据的地址
         requestUrl: "api/v1/tms/getCapacityByDefend?apiId=474",
+        comparison: "orderNumber",
+        columnIndexs: [0, 1, 2,7],
       },
     };
   },

+ 103 - 50
src/views/statisticalReport/components/salesLogisticsStatistics/saleSteelForm.vue

@@ -6,80 +6,101 @@
       <el-date-picker
         v-model="startTime"
         type="datetime"
-        placeholder="选择日期时间">
+        placeholder="选择日期时间"
+      >
       </el-date-picker>
       <span>至</span>
       <el-date-picker
         v-model="endTime"
         type="datetime"
-        placeholder="选择日期时间">
+        placeholder="选择日期时间"
+      >
       </el-date-picker>
       <el-button type="primary" class="btn" @click="onclick">
         <i class="el-icon-search"></i>查询
       </el-button>
-      <el-button type="primary" @click="exportData()"><i class="el-icon-download"></i>导出(Excel)</el-button>
+      <el-button type="primary" @click="exportData()"
+        ><i class="el-icon-download"></i>导出(Excel)</el-button
+      >
       <el-button type="primary" @click="refresh">
         <i class="el-icon-refresh"></i>刷新
       </el-button>
       <span style="margin-left: 1rem;width:68px">合计净重:</span>
-      <el-input v-model="totalNumber" :disabled="true" style="width: 150px;"></el-input>
+      <el-input
+        v-model="totalNumber"
+        :disabled="true"
+        style="width: 150px;"
+      ></el-input>
       <span style="margin-left: 1rem;width:68px">合计车数:</span>
-      <el-input v-model="totalCapacity" :disabled="true" style="width: 150px;"></el-input>
+      <el-input
+        v-model="totalCapacity"
+        :disabled="true"
+        style="width: 150px;"
+      ></el-input>
     </div>
     <div class="table">
-      <dilTable ref="excelDom" v-bind.sync="option" :isHeigth="isHeigth" :shiyHeigth="shiyHeigth" :isKuang="isKuang" @func="func" @requestQuery="requestQuery" :pageSize = "pageSize"></dilTable>
+      <!-- <dilTable ref="excelDom" v-bind.sync="option" :isHeigth="isHeigth" :shiyHeigth="shiyHeigth" :isKuang="isKuang" @func="func" @requestQuery="requestQuery" :pageSize = "pageSize"></dilTable> -->
+      <mergeRowTable ref="excelDom" v-bind.sync="option"> </mergeRowTable>
     </div>
   </div>
 </template>
 
 <script>
-import { sjTime } from '@/utils/sharedJsFile'
+import { sjTime } from "@/utils/sharedJsFile";
 import { getCookie } from "@/utils/util.js";
 export default {
   data() {
     return {
-      shiyHeigth:140,
-      isHeigth:true,
-      pageSize:100,
-      isKuang:false,
+      shiyHeigth: 140,
+      isHeigth: true,
+      pageSize: 100,
+      isKuang: false,
       option: {
         requestUrl: "",
+        comparison: "orderNumber",
+        columnIndexs: [0, 1, 2, 3, 11, 12, 13, 16, 21, 22, 23, 24]
       },
-      startTime:null,
-      endTime:null,
+      startTime: null,
+      endTime: null,
       //合计净重
       totalNumber: 0,
       //合计车数
       totalCapacity: 0,
-      tableTitle:'销售统计报表'
+      tableTitle: "销售统计报表"
     };
   },
-  created(){
+  created() {
     //初始化表头
     if (getCookie("orgCode") == "chengyunshang") {
       this.option.requestUrl =
-        "/api/v1/tms/getAllSaleReport?apiId=423&startTime=null&endTime=null&orderType=1&shipperId=1&carrierSsoId=" + getCookie("userId") +"&i=" +new Date();
+        "/api/v1/tms/getAllSaleReport?apiId=423&startTime=null&endTime=null&orderType=1&shipperId=1&carrierSsoId=" +
+        getCookie("userId") +
+        "&i=" +
+        new Date();
     } else {
       this.option.requestUrl =
-        "/api/v1/tms/getAllSaleReport?apiId=423&startTime=null&endTime=null&orderType=1&shipperId=1&carrierSsoId=" + null +"&i=" +new Date();
+        "/api/v1/tms/getAllSaleReport?apiId=423&startTime=null&endTime=null&orderType=1&shipperId=1&carrierSsoId=" +
+        null +
+        "&i=" +
+        new Date();
     }
     //时间段初始化
     const start = new Date(new Date(new Date().toLocaleDateString()).getTime());
     var startTime = this.dataFormat(sjTime(start));
     var endTime = this.dataFormat(sjTime(new Date()));
-    this.tableTitle = startTime + ' 至 ' + endTime;
+    this.tableTitle = startTime + " 至 " + endTime;
   },
   methods: {
-    refresh(){
+    refresh() {
       this.$router.go(0);
     },
-    func(res){
-      console.log(res)
-      var resultNetWeightTotal = 0
+    func(res) {
+      console.log(res);
+      var resultNetWeightTotal = 0;
       res.list.forEach(e => {
-        resultNetWeightTotal = resultNetWeightTotal+e.resultNetWeight
+        resultNetWeightTotal = resultNetWeightTotal + e.resultNetWeight;
       });
-      this.totalNumber = resultNetWeightTotal.toFixed(2) + " t"
+      this.totalNumber = resultNetWeightTotal.toFixed(2) + " t";
       this.totalCapacity = res.total;
       //获取总记录条数作为合计车数
       // this.totalCapacity = res.total;
@@ -88,53 +109,85 @@ export default {
     onclick() {
       let startTime = null;
       let endTime = null;
-      if(this.startTime && this.endTime){
+      if (this.startTime && this.endTime) {
         startTime = sjTime(this.startTime);
         endTime = sjTime(this.endTime);
         //修改报表名称
-        this.tableTitle = this.dataFormat(startTime) + ' 至 ' + this.dataFormat(endTime);
+        this.tableTitle =
+          this.dataFormat(startTime) + " 至 " + this.dataFormat(endTime);
         //加上时间重置表头
         if (getCookie("orgCode") == "chengyunshang") {
           this.option.requestUrl =
-            "/api/v1/tms/getAllSaleReport?apiId=423&startTime=" + startTime + "&endTime=" + endTime + "&orderType=1&shipperId=1"+ "&carrierSsoId=" + getCookie("userId") +"&i=" +new Date();
+            "/api/v1/tms/getAllSaleReport?apiId=423&startTime=" +
+            startTime +
+            "&endTime=" +
+            endTime +
+            "&orderType=1&shipperId=1" +
+            "&carrierSsoId=" +
+            getCookie("userId") +
+            "&i=" +
+            new Date();
         } else {
           this.option.requestUrl =
-            "/api/v1/tms/getAllSaleReport?apiId=423&startTime=" + startTime + "&endTime=" + endTime + "&orderType=1&shipperId=1"+ "&carrierSsoId=" + null +"&i=" +new Date();
+            "/api/v1/tms/getAllSaleReport?apiId=423&startTime=" +
+            startTime +
+            "&endTime=" +
+            endTime +
+            "&orderType=1&shipperId=1" +
+            "&carrierSsoId=" +
+            null +
+            "&i=" +
+            new Date();
         }
-      }else{
-        if(this.startTime){
+      } else {
+        if (this.startTime) {
           startTime = sjTime(this.startTime);
-        }else if(this.endTime){
+        } else if (this.endTime) {
           endTime = sjTime(this.endTime);
         }
         //加上时间重置表头
         if (getCookie("orgCode") == "chengyunshang") {
           this.option.requestUrl =
-            "/api/v1/tms/getAllSaleReport?apiId=423&startTime=" + startTime + "&endTime=" + endTime +"&orderType=1&shipperId=1"+ "&carrierSsoId=" + getCookie("userId") +"&i=" +new Date();
+            "/api/v1/tms/getAllSaleReport?apiId=423&startTime=" +
+            startTime +
+            "&endTime=" +
+            endTime +
+            "&orderType=1&shipperId=1" +
+            "&carrierSsoId=" +
+            getCookie("userId") +
+            "&i=" +
+            new Date();
         } else {
           this.option.requestUrl =
-            "/api/v1/tms/getAllSaleReport?apiId=423&startTime=" + startTime + "&endTime=" + endTime +"&orderType=1&shipperId=1"+ "&carrierSsoId=" + null +"&i=" +new Date();
+            "/api/v1/tms/getAllSaleReport?apiId=423&startTime=" +
+            startTime +
+            "&endTime=" +
+            endTime +
+            "&orderType=1&shipperId=1" +
+            "&carrierSsoId=" +
+            null +
+            "&i=" +
+            new Date();
         }
       }
     },
     //格式化日期
-    dataFormat(value){
+    dataFormat(value) {
       let date = new Date(value);
-        let y = date.getFullYear();
-        let MM = date.getMonth() + 1;
-        MM = MM < 10 ? ('0' + MM) : MM;
-        let d = date.getDate();
-        d = d < 10 ? ('0' + d) : d;
-        let h = date.getHours();
-        h = h < 10 ? ('0' + h) : h;
-        let m = date.getMinutes();
-        m = m < 10 ? ('0' + m) : m;
-        let s = date.getSeconds();
-        s = s < 10 ? ('0' + s) : s;
-        return y + '-' + MM + '-' + d + ' ' + h + ':' + m + ':' + s;
+      let y = date.getFullYear();
+      let MM = date.getMonth() + 1;
+      MM = MM < 10 ? "0" + MM : MM;
+      let d = date.getDate();
+      d = d < 10 ? "0" + d : d;
+      let h = date.getHours();
+      h = h < 10 ? "0" + h : h;
+      let m = date.getMinutes();
+      m = m < 10 ? "0" + m : m;
+      let s = date.getSeconds();
+      s = s < 10 ? "0" + s : s;
+      return y + "-" + MM + "-" + d + " " + h + ":" + m + ":" + s;
     }
-
-  },
+  }
 };
 </script>
 
@@ -146,9 +199,9 @@ export default {
     display: flex;
     align-items: center;
     padding-left: 50px;
-    .el-date-editor{
+    .el-date-editor {
       margin: 20px;
     }
   }
 }
-</style>
+</style>

+ 1 - 1
src/views/statisticalReport/components/sporadicReport/inwardSporadicReport.vue

@@ -52,7 +52,7 @@ export default {
   },
   methods: {
     func(res){
-        console.log(res)
+        // console.log(res)
         var resultNetWeightTotalFirst = 0
         var resultNetWeightTotalSecond = 0
         var currentCapacityTotal = 0