txf %!s(int64=3) %!d(string=hai) anos
pai
achega
1bd9332136
Modificáronse 31 ficheiros con 3354 adicións e 26 borrados
  1. 3 4
      build/utils.js
  2. 3 4
      config/index.js
  3. 6 0
      package.json
  4. BIN=BIN
      src/assets/img/smallcar.png
  5. 20 0
      src/components/OffFactoryMapShow/index.js
  6. 279 0
      src/components/OffFactoryMapShow/packages/src/GAODEMap.js
  7. 144 0
      src/components/OffFactoryMapShow/packages/src/GAODEMap.vue
  8. 214 0
      src/components/OffFactoryMapShow/packages/src/README.md
  9. 91 0
      src/views/RMS/components/addCapacity.vue
  10. 6 4
      src/views/RMS/components/addCarrier.vue
  11. 10 0
      src/views/RMS/components/capacity.vue
  12. 249 0
      src/views/RMS/components/showCapacity.vue
  13. 4 2
      src/views/RMS/router/index.js
  14. 402 0
      src/views/appoint/components/inward/addTransPrice.vue
  15. 83 0
      src/views/appoint/components/inward/transPrice.vue
  16. 4 1
      src/views/appoint/router/index.js
  17. 133 0
      src/views/inward/components/inwardSettlement/countDetailOrder.vue
  18. 198 0
      src/views/inward/components/inwardSettlement/detailOrder.vue
  19. 192 0
      src/views/inward/components/inwardSettlement/purInwardDetailsOrder.vue
  20. 193 0
      src/views/inward/components/inwardSettlement/timeDetailsWeight.vue
  21. 4 2
      src/views/inward/components/truckAppoint/addRequirement.vue
  22. 11 2
      src/views/inward/components/truckAppoint/addRequirement2.vue
  23. 0 1
      src/views/inward/components/truckAppoint/plan.vue
  24. 7 1
      src/views/inward/components/truckAppoint/requirementOther.vue
  25. 12 1
      src/views/inward/router/index.js
  26. 58 0
      src/views/sale/app.js
  27. 434 0
      src/views/sale/components/offSiteTransportation/inTransit.vue
  28. 495 0
      src/views/sale/components/offSiteTransportation/mapTest.vue
  29. 90 0
      src/views/sale/components/offSiteTransportation/slider.vue
  30. 6 2
      src/views/sale/router/index.js
  31. 3 2
      src/views/statisticalReport/router/index.js

+ 3 - 4
build/utils.js

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

+ 3 - 4
config/index.js

@@ -64,11 +64,9 @@ let proxyTable = {
   },
   // 所有数据的请求域名地址
   "/api/v1": {
-    target: "http://172.16.33.166:8080",
-    // target: "http://172.16.33.162:8019", 
-    // target: "http://192.168.1.100:8019",
+      target: "http://172.16.33.166:8080",
     // target: "http://localhost:8080",
-    // target: "http://localhost:8019",
+    //target: "http://localhost:8019",
     ws: true,
     pathRewrite: {
       "^/api/v1": "/api/v1"
@@ -145,6 +143,7 @@ module.exports = {
     }
   },
 
+  
   build: {
     // Template for index.html
     index: path.resolve(__dirname, dist + '/index.html'),

+ 6 - 0
package.json

@@ -15,7 +15,10 @@
     "testc": "cross-env NODE_ENV=test nyc mocha-webpack --webpack-config build/webpack.test.conf.js --require test/setup.js test/**/*.spec.js"
   },
   "dependencies": {
+    "@amap/amap-jsapi-loader": "^1.0.1",
     "@antv/g6": "1.2.8",
+    "@vue/reactivity": "^3.2.31",
+    "amap-js": "^2.4.0",
     "apollo-cache-inmemory": "^1.5.1",
     "apollo-client": "^2.5.1",
     "apollo-link": "^1.2.11",
@@ -44,7 +47,9 @@
     "socket.io-stream": "^0.9.1",
     "sockjs-client": "^1.3.0",
     "uuid": "^3.3.2",
+    "view-design": "^4.7.0",
     "vue": "^2.5.2",
+    "vue-amap": "^0.5.10",
     "vue-apollo": "^3.0.0-beta.28",
     "vue-baidu-map": "^0.21.19",
     "vue-clipboard2": "^0.2.1",
@@ -52,6 +57,7 @@
     "vue-property-decorator": "^8.2.1",
     "vue-quill-editor": "^3.0.5",
     "vue-router": "^3.0.1",
+    "vue-social-share": "0.0.3",
     "vue-splitpane": "^1.0.2",
     "vuescroll": "^4.17.3",
     "vuex": "^3.0.1",

BIN=BIN
src/assets/img/smallcar.png


+ 20 - 0
src/components/OffFactoryMapShow/index.js

@@ -0,0 +1,20 @@
+import GAODEMap from "./packages/src/GAODEMap.js";
+
+
+const components = [GAODEMap];
+
+const install = function(Vue) {
+  components.forEach(component => {
+    Vue.component(component.name, component);
+  });
+};
+
+if (typeof window !== "undefined" && window.Vue) {
+  install(window.Vue);
+}
+
+export default {
+  version: "0.1.0",
+  install,
+  GAODEMap
+};

+ 279 - 0
src/components/OffFactoryMapShow/packages/src/GAODEMap.js

@@ -0,0 +1,279 @@
+
+import { Loading } from 'element-ui';
+
+export default {
+props:{
+    orderNumber:'',
+    capacityNumber:'',
+},
+data() {
+    return {
+        loading : null,
+       
+    };
+},
+watch:{
+    orderNumber:{
+         deep: true,
+        handler(val, oldVal) {
+            console.log("111111111234646")
+            this.reloadData();
+        }
+    }
+},
+created(){
+  
+     this.reloadData();
+},
+mounted: function () {
+             
+        },
+methods: {
+    startLoading (){
+        this.loading = Loading.service({ lock: true, text: '加载中……', background: 'rgba(0, 0, 0, 0.7)' });
+    },
+    reloadData() {
+        let resultData = {
+            orderNumber: this.orderNumber,
+        };
+        this.startLoading(this.orderNumber);
+        console.log()
+        this.$axios.post(
+            "api/v1/getway/fullPathVisualization",resultData
+            ).then((res) => {
+            this.loading.close(); 
+            if(res.data.startAndEndRoutes!=null){
+                this.initMap(res.data);
+
+            
+            }else{
+                this.$message('车辆未入网或没有开启定位,不能访问');
+                this.newMap();
+            }
+            
+            
+        })
+        .catch(error => {
+                this.loading.close(); 
+               
+            if((error+"").indexOf("500") !== -1){
+                    this.$message('车辆未入网或没有开启定位,不能访问');
+                    this.newMap();
+            }
+                    
+                    
+            
+            });
+        
+        
+            
+        },
+        newMap(){
+                var currentPointLat='32.483276';
+                var currentPointLon='114.03629';
+                this.map = new AMap.Map('container', {
+                    zoom:11,//级别
+                    center: [currentPointLon,currentPointLat],//中心点坐标
+                    viewMode:'3D'//使用3D视图
+                });
+                var content = [
+                        "<div  style='top:1px;width: 180px; background-color: rgba(0, 0, 0, 1);' ><b>"+this.capacityNumber+")</b>",
+                        "<div style='background-color:rgba(255, 255, 255, 0.5);'>提示 :"+'GPS没有开启'+"</div></div>"
+                
+                ];
+
+                // 创建 infoWindow 实例	
+                var infoWindow = new AMap.InfoWindow({
+                content: content.join("<br>")  //传入 dom 对象,或者 html 字符串
+                });
+                
+                // 打开信息窗体
+                infoWindow.open(this.map,[currentPointLon,currentPointLat]);
+               
+               
+        },
+        //startLonlat=114.03629,32.483276
+        initMap(data) {
+            console.log(1)
+                var currentPointLat='32.483276';
+                var currentPointLon='114.03629';
+                var polyline=[];
+                //初始化地图
+                if (data.startAndEndRoutes[0].currentPoint!=null){
+                    currentPointLat=data.startAndEndRoutes[0].currentPoint.lat;
+                    currentPointLon=data.startAndEndRoutes[0].currentPoint.lon;
+                }
+                
+            
+            
+                this.map = new AMap.Map('container', {
+                    zoom:11,//级别
+                    center: [currentPointLon,currentPointLat],//中心点坐标
+                    viewMode:'3D'//使用3D视图
+                });
+                var limeList= [];
+            
+                data.startAndEndRoutes.forEach((element,index) => {
+                    
+                    var startPaths=[];
+                    element.runRoute.forEach((element,index) => {
+                        var path= [element.lon,element.lat];
+                        startPaths.push(path);
+                    });
+                
+                    var endPaths=[];
+                    if(element.estimateRoute!=null){
+                        element.estimateRoute.forEach((element,index) => {
+                        var path= [element.lon,element.lat]
+                        endPaths.push(path);
+                    });
+                    }
+                    if (element.startPoint!=null){
+                    
+                        //当前点图标标记点
+                        let startPointicon = new AMap.Icon({
+                            size: new AMap.Size(25, 35), // 图标尺寸
+                            image: require('@/assets/img/start.png'), // Icon的图像
+                            imageOffset: new AMap.Pixel(0,0), // 图像相对展示区域的偏移量,适于雪碧图等
+                            imageSize: new AMap.Size(25, 35) // 根据所设置的大小拉伸或压缩图片
+                        });
+                        // 创建一个 Marker 实例:
+                        var startPointmarker = new AMap.Marker({
+                            position: new AMap.LngLat(element.startPoint.lon, element.startPoint.lat),   // 经纬度对象,也可以是经纬度构成的一维数组[116.39, 39.9]
+                                icon: startPointicon, 
+                            title: '北京'
+                        });
+                        // 将创建的点标记添加到已有的地图实例:
+                        this.map.add(startPointmarker);
+                    }
+            
+
+
+
+                
+        
+
+                    
+            
+                    //终点
+                    if (element.endPoint!=null){
+
+                        //当前点图标标记点
+                        let endPointicon = new AMap.Icon({
+                            size: new AMap.Size(25, 35), // 图标尺寸
+                            image: require('@/assets/img/end.png'), // Icon的图像
+                            imageOffset: new AMap.Pixel(0,0), // 图像相对展示区域的偏移量,适于雪碧图等
+                            imageSize: new AMap.Size(25, 35) // 根据所设置的大小拉伸或压缩图片
+                        });
+                        // 创建一个 Marker 实例:
+                        var endPointmarker = new AMap.Marker({
+                            position: new AMap.LngLat(element.endPoint.lon, element.endPoint.lat),   // 经纬度对象,也可以是经纬度构成的一维数组[116.39, 39.9]
+                                icon: endPointicon, 
+                            title: '北京'
+                        });
+
+                        // 将创建的点标记添加到已有的地图实例:
+                        this.map.add(endPointmarker);
+                    }
+                    
+                
+                //已行驶轨迹
+                    if(startPaths.length>0){
+                    
+                        var startLine = new AMap.Polyline({
+                            map:this.map,
+                            path: startPaths,
+                            isOutline: true,
+                            outlineColor: '#00FF00',
+                            borderWeight: 0,
+                            strokeColor: "#00FF00", 
+                            strokeOpacity: 1,
+                            strokeWeight: 5,
+                            // 折线样式还支持 'dashed'
+                            strokeStyle: "solid",
+                            // strokeStyle是dashed时有效
+                            strokeDasharray: [10, 5],
+                            lineJoin: 'round',
+                            lineCap: 'round',
+                            zIndex: 50,
+                        })
+                        
+                        limeList.push(startLine);
+                        
+                    }
+
+                if(endPaths.length>0){
+                    
+                        //预计轨迹
+                    
+                        var endLine = new AMap.Polyline({
+                            map:this.map,
+                            path: endPaths,
+                            isOutline: true,
+                            outlineColor: '#FF0000',
+                            borderWeight: 0,
+                            strokeColor: "#FF0000", 
+                            strokeOpacity: 1,
+                            strokeWeight: 5,
+                            // 折线样式还支持 'dashed'
+                            strokeStyle: "solid",
+                            // strokeStyle是dashed时有效
+                            strokeDasharray: [10, 5],
+                            lineJoin: 'round',
+                            lineCap: 'round',
+                            zIndex: 50,
+                        })
+                        limeList.push(endLine);
+                    
+                }
+                    
+                });
+
+                
+                var content = [
+                        "<div  style='top:1px;width: 180px; background-color: rgba(0, 0, 0, 1);' ><font color='white'>"+this.capacityNumber+'('+data.startAndEndRoutes[0].miled+")</font>",
+                        "<div style='background-color:rgba(255, 255, 255, 0.5);'><font color='white'>地址 :"+data.startAndEndRoutes[0].currentPointName+"</font></div></div>"
+                
+                ];
+                data.startAndEndRoutes.forEach((element,index) => {
+                        // 创建 infoWindow 实例	
+                        var infoWindow = new AMap.InfoWindow({
+                        content: content.join("<br>")  //传入 dom 对象,或者 html 字符串
+                        });
+                      
+
+                       //当前点图标标记点
+                    let currentPointicon = new AMap.Icon({
+                        size: new AMap.Size(40, 40), // 图标尺寸
+                        image: require('@/assets/img/car1.png'), // Icon的图像
+                        imageOffset: new AMap.Pixel(0,0), // 图像相对展示区域的偏移量,适于雪碧图等
+                        imageSize: new AMap.Size(40, 40) // 根据所设置的大小拉伸或压缩图片
+                    });
+                    // 创建一个 Marker 实例:
+                    var currentPointmarker = new AMap.Marker({
+                        position: new AMap.LngLat(element.runRoute[element.runRoute.length-1].lon,element.runRoute[element.runRoute.length-1].lat),   // 经纬度对象,也可以是经纬度构成的一维数组[116.39, 39.9]
+                            icon: currentPointicon, 
+                        title: '北京'
+                    });
+
+                    // 将创建的点标记添加到已有的地图实例:
+                    this.map.add(currentPointmarker);
+                        // 打开信息窗体
+                        infoWindow.open(this.map,[element.runRoute[element.runRoute.length-1].lon,element.runRoute[element.runRoute.length-1].lat]);
+                });
+                
+            
+                this.map.setFitView([ limeList ])
+
+
+
+        
+
+            
+            
+                
+                // 缩放地图到合适的视野级别
+        
+            }
+    }
+};

+ 144 - 0
src/components/OffFactoryMapShow/packages/src/GAODEMap.vue

@@ -0,0 +1,144 @@
+<template>
+    <div id="demo">
+        <el-main id="container" style="position:relative;"></el-main>
+        <!--控制条-->
+        <div class="map-control" v-show="isActual">
+            <!--播放暂停按钮-->
+            <Icon
+                v-if="!isPlay"
+                class="play-icon"
+                type="ios-play"
+                @click="isPlay=true;navgControl('start')"
+            />
+            <Icon v-else class="play-icon" type="ios-pause" @click="isPlay=false;navgControl('pause')"/>
+            <!--已播放时间-->
+            <span class="passed-time">{{passedTime}}</span>
+            <!--进度条-->
+            <el-slider v-model="sliderVal" :format-tooltip="hideFormat" :step="0.0001"></el-slider>
+            <!--倍速-->
+            <div class="map-times" @mouseenter="isTimesChoose=true" @mouseleave="isTimesChoose=false">
+                <div class="times-show">倍速 {{times}}</div>
+                <div class="choose-box">
+                <ul v-show="isTimesChoose">
+                    <li v-for="item in speedList" :key="item.value" :class="{active:times==item.value}" @click="changeSpeed(item.value)">{{item.label}}</li>
+                </ul>
+            </div>
+        </div>
+        <!--结束时间-->
+        <span class="passed-time">{{totalTime}}</span>
+        </div>
+    </div>
+</template>
+
+<script type="text/javascript" src="https://webapi.amap.com/maps?v=1.4.15&key=eed46ea40bbcadbf8a9cdd5dc1a94642"></script>
+<script>
+import GAODEMap from "./GAODEMap.js";
+export default {
+  name: "GAODEMap",
+  extends: GAODEMap,
+  data() {
+        return {
+            //地图展示中心点
+            centerPoint:{
+                pointLat:"",
+                pointLon:""
+            },
+        };
+    },
+}
+</script>
+<style>
+
+#container {
+	width: 100%;
+	height: 100%;
+	overflow: hidden;
+	margin: 0;
+	font-family: "微软雅黑";
+}
+.info_card {
+    display: inline-block;margin: 50px auto;position: absolute;width: 200px;height:150px;background-color: #c7c9c8AA;border: 5px solid #ffffff;color: #000000;
+}
+.info_card .title{
+    width: 100%;
+    height:40px;
+    background-color: #000000AA;
+    color: #ffffff;
+}
+
+.title span.title_name{
+    position: relative;
+    top: 7px;
+    left: 10px;
+    font-size: 18px;
+}
+
+
+.info_card .title .close_img{
+    position: absolute;
+    top:10px;
+    right: 10px;
+    width: 20px;
+    height: 20px;
+    background-color: #ffffff;
+}
+.info_card .title .close_img .min {
+    width: 0;
+    height: 0;
+    font-size:0;
+    overflow:hidden;
+    position:absolute;
+    border-width:10px;
+}
+
+.info_card .title .close_img .top_img {
+    border-style:solid dashed dashed;
+    border-color:#000000 transparent transparent transparent;
+    top:-2px;
+}
+
+.info_card .title .close_img .right_img {
+    border-style:solid dashed dashed;
+    border-color:transparent #000000 transparent transparent;
+    left:2px;
+}
+
+.info_card .title .close_img .bottom_img{
+    border-style:solid dashed dashed;
+    border-color:transparent transparent #000000 transparent;
+    top:2px;
+}
+
+.info_card .title .close_img .left_img{
+    border-style:solid dashed dashed;
+    border-color:transparent transparent transparent #000000;
+    left:-2px;
+}
+
+.info_card span.cancle{
+    width:0;
+    height:0;
+    font-size:0;
+    overflow:hidden;
+    position:absolute;
+}
+
+.info_card span.bot{
+    border-width:20px;
+    border-style:solid dashed dashed;
+    border-color:#ffffff transparent transparent;
+    left:80px;
+    bottom:-40px;
+}
+.info_card span.top{
+    border-width:20px;
+    border-style:solid dashed dashed;
+    border-color:#c7c9c8AA transparent transparent;
+    left:80px;
+    bottom:-33px;
+}
+.info_card .content{
+    margin-top: 10px;
+    margin-left: 10px;
+}
+</style>

+ 214 - 0
src/components/OffFactoryMapShow/packages/src/README.md

@@ -0,0 +1,214 @@
+## 通用表格使用说明
+### 属性说明
+
+
+
+#### requestUrl : string
+
+表格请求的地址
+
+示例:
+
+``` js
+//全地址
+requestUrl:http://192.168.10.113:8081/api/v1/truck/type/status2;
+//后半截地址
+requestUrl:/api/v1/truck/type/status2;
+```
+
+
+
+#### requestQuery : object
+
+表格请求的参数:用于自己触发筛选和排序时使用
+
+可传入参数
+
+
+
+
+
+#### current-page : number
+
+当前页数,支持 .sync 修饰符
+
+默认是第一页
+
+
+
+#### page-size : number
+
+每页显示条目个数,支持 .sync 修饰符
+
+默认是 每页十条
+
+
+
+#### page-sizes : number[]
+
+每页显示个数选择器的选项设置
+
+默认是 [1,2,5,10]
+
+
+
+#### type : string
+
+表格类型:目前支持:base , common
+
+之后会根据需求增加更多的类型
+
+
+
+#### lastColumnData : array[object]
+
+表格最右边列的数据信息,数组中是放一个对象,对象中的属性如下,
+
+基本和Table-column Attributes的相同,
+
+``` js
+lastColumnData:[{
+    // 表头显示的文案
+    label: "操作",
+    // 设置列的宽度
+    width: 100,
+    // 固定操作列
+    fixed: 'right',
+    // 注意!!!
+    // 操作列按钮点击触发的操作改为 $emit 抛事件的形式
+    // 默认可以获取 scope 属性;里面的具体内容和el-table一样
+    template: `
+		<el-button type="text" size="mini" @click="$emit('transportProgress',scope.row)" > 
+			运输进度 
+		</el-button>
+	`,
+}]
+```
+
+
+
+
+
+### 事件说明
+
+#### radio-change(row)
+
+用于当选表格,当用户改变选中行数据时调用,返回选中行的数据对象 **row**
+
+用户再次点击取消选中时,会返回一个**空对象 {}**
+
+
+
+#### selection-change(rows)
+
+用于多选表格,当选择项发生变化时会触发该事件
+
+返回所有被选中的行的数据的数组 rows[]
+
+即使换页,依然保留被选中的数据
+
+
+
+### 方法说明
+
+#### refreshData()
+
+用户主动刷新表格数据
+
+
+
+## 接口相关说明
+
+### 请求参数说明
+
+链接后的参数
+
+``` json
+// 表格头接口的唯一标识
+apiId:13
+// 控制当前显示第几页
+pageNum:1
+// 控制当前每页显示几条
+pageSize:10
+```
+
+请求体的参数
+
+``` json
+// 排序的数据的参数字段
+orderField:""
+// 排序类型 asc : 升序;  desc : 降序;
+orderType:""
+
+// 需要筛选时,键值对的键,是需要筛选的参数的字段名,
+// 键值对的值,是个数组,存放符合条件的字段值,
+// 筛选的字段可以同时存在多条
+[筛选字段名]:[筛选字段值1,筛选字段值2]
+```
+
+
+
+### 回调参数要求
+
+``` json
+{
+    // 状态码 0:标识成功
+    "code": "0",
+    // 后端自定义给前端的数据对象
+    "data": {
+        // 表格的数据源
+        "list": [
+            // 每行表的数据内容
+            {
+                // 每行数据的唯一标识 必设项
+                "ROW_ID":"",
+            }
+        ],
+
+        // 表头的数据内容
+        // 表头按需要的显示顺序排序
+        "columnData": [
+            // 每个表头的相关信息
+            // 这个之后会根据需求不断添加
+            {
+                // 唯一标识 必设项
+                "data_id": "",
+                // 对应列内容的字段名 必设项
+                "prop": "",
+                // 显示的标题 必设项
+                "label": "",
+
+                // 一下为 非必填选项
+                // 自定义列模板
+                // html的字符串
+                // 当有这个属性时,会忽略label属性
+                "template": "",
+
+                // 列的宽度 非必填选项
+                "width": "",
+                // 当前列对应的 筛选功能数组 非必填选项
+                "filters":[
+                    {
+                        // 筛选选项 所对应的后端数值
+                        value:0,
+                        // 筛选选项 的中文名称
+                        text:"",
+                    },
+                ],
+            },
+        ],
+        
+        // 总条目数
+        "total": 0
+    }
+}
+```
+
+
+
+## 相关网站说明
+
+### 配置表头数据地址
+
+https://diluitable.steerinfo.com/#/
+

+ 91 - 0
src/views/RMS/components/addCapacity.vue

@@ -23,7 +23,35 @@
             </template>
           </el-autocomplete>
         </el-form-item>
+        
       </el-form>
+       <el-form :inline="true" class="demo-form-inline" label-width="80px">
+         <el-form-item label="上传行驶证">
+          <el-upload
+            class="upload-demo"
+            ref="upload1"
+            action="http://172.16.33.166:8080/api/v1/rms/uploadCarrier1"
+            :before-upload="beforeUpload"
+            :multiple="false"
+            list-type="picture"
+            :show-file-list="false"
+            :on-success="handleAvatarSuccess"
+            :on-error="onError(1)"
+          >
+            <span class="span"></span>
+            <el-input
+              class="shippingCertificate"
+              placeholder="请选择运输证(必填项)"
+              v-model="shippingCertificate"
+              disabled
+            >
+            </el-input>
+            <el-button size="small" type="primary" @click="upCLick(1)"
+              >点击上传运输证</el-button
+            >
+          </el-upload>
+        </el-form-item>
+       </el-form>
     </div>
 
     <div class="button_box">
@@ -42,8 +70,10 @@ export default {
   components: { PageTitle },
   data() {
     return {
+      driverLicence:"",
       addLoading: false,
       form1: {},
+      shippingCertificate:"",
       form1Initialization: {
         capacityTypeId: 1,
         capacityNumber: "",
@@ -84,6 +114,56 @@ export default {
       });
   },
   methods: {
+     upCLick(val) {
+      this.num = val;
+    },
+    beforeUpload(file) {
+      this.upBool = true;
+      const isLt2M = file.size < 1024 * 1024 * 0.5;
+      if (!isLt2M) {
+        this.$message.error("上传文件大小不能超过500kb!");
+      } else {
+        let size = file.size / 1024;
+        let _URL = window.URL || window.webkitURL;
+        let img = new Image();
+        img.src = _URL.createObjectURL(file);
+      }
+      return isLt2M;
+    },
+    onError(err) {
+      if (this.upBool) {
+        if (this.num == 1) {
+          this.shippingCertificate = null;
+          this.imageUrl1 = null;
+          // this.$message.error("上传失败");
+        } else if (this.num == 2) {
+          this.businessLicense = null;
+          this.imageUrl2 = null;
+          // this.$message.error("上传失败");
+        } else if (this.num == 3) {
+          this.businessLicense1 = null;
+          this.imageUrl3 = null;
+          // this.$message.error("上传失败");
+        }
+      }
+    },
+    handleAvatarSuccess(res, file) {
+      console.log(res,file)
+      if (res.code) {
+        this.upBool = false;
+        if (this.num == 1) {
+          this.driverLicence = res.data;
+          this.shippingCertificate = file.name;
+        } else if (this.num == 2) {
+          this.imageUrl2 = res.data;
+          this.businessLicense = file.name;
+        } else if (this.num == 3) {
+          this.imageUrl3 =res.data;
+          this.businessLicense1 = file.name;
+        }
+        this.$message.success("上传成功");
+      }
+    },
     //承运商弹出层
     handleSelect(item) {
       this.carrierIds = item.carrierId;
@@ -169,6 +249,7 @@ export default {
         capacityOwneris: this.form1.capacityOwneris,
         capacityVip: this.form1.capacityVip,
         capacityBlacklist: this.form1.capacityBlacklist,
+        driverLicence:this.driverLicence,
         remark: this.form1.remark,
         carrierId: this.carrierIds,
         state: this.state,
@@ -189,6 +270,7 @@ export default {
         formData.append("userCode", this.form1.capacityNumber.toUpperCase());
         formData.append("orgCode", "yunli");
         formData.append("orgName", "运力");
+        
         formData.append("groupId", "506514577756917769");
         formData.append("companyId", "713710108567277568");
         formData.append("orgId", "924126716337721344");
@@ -261,6 +343,15 @@ export default {
 };
 </script>
 <style lang='scss' >
+.shippingCertificate{
+  width: 200px;
+}
+.el-form--inline .el-form-item__content {
+    display: inline-block;
+    vertical-align: top;
+    position: relative;
+    left: 37px;
+}
 .addCapacity {
   .elForm {
     margin-left: 40%;

+ 6 - 4
src/views/RMS/components/addCarrier.vue

@@ -35,7 +35,7 @@
     <el-upload
       class="upload-demo"
       ref="upload1"
-      action="https://wl.dasteel.cn:32322/api/v1/rms/uploadCarrier1"
+      action="http://172.16.33.166:8080/api/v1/rms/uploadCarrier1"
       :before-upload="beforeUpload"
       :multiple="false"
       list-type="picture"
@@ -55,10 +55,11 @@
         >点击上传运输证</el-button
       >
     </el-upload>
+     <!-- action="https://wl.dasteel.cn:32322/api/v1/rms/uploadCarrier1" -->
     <el-upload
       class="upload-demo"
       ref="upload2"
-      action="https://wl.dasteel.cn:32322/api/v1/rms/uploadCarrier1"
+      action="http://172.16.33.166:8080/api/v1/rms/uploadCarrier1"
       :before-upload="beforeUpload"
       :multiple="false"
       list-type="picture"
@@ -81,7 +82,7 @@
     <el-upload
       class="upload-demo"
       ref="upload3"
-      action="https://wl.dasteel.cn:32322/api/v1/rms/uploadCarrier1"
+      action="http://172.16.33.166:8080/api/v1/rms/uploadCarrier1"
       :before-upload="beforeUpload"
       :multiple="false"
       list-type="picture"
@@ -360,7 +361,7 @@ export default {
       margin-right: 10px;
       width: 40px;
       position: relative;
-      left: 40px;
+       left: 40px;
     }
     .input {
       width: 250px;
@@ -414,6 +415,7 @@ export default {
   .site{
     position: relative;
     left: -50px;
+  
   }
   span.text {
     position: relative;

+ 10 - 0
src/views/RMS/components/capacity.vue

@@ -43,6 +43,13 @@
               v-if="show==true">
               删除
             </el-button>
+             <el-button
+              type="text"
+              size="small"
+              @click="showCapacity(scope.row.capacityId)"
+              v-if="show==false">
+              查看详情
+            </el-button>
           </template>
         </el-table-column>
       </dilTable>
@@ -123,6 +130,9 @@ export default {
     updateCapacity(capacityId){
       this.$router.push("/editCapacity/" + capacityId)
     },
+    showCapacity(capacityId){
+      this.$router.push("/showCapacity/" + capacityId)
+    },
     deleteUser(userId){
       this.axios.delete("pass/v1/sysusers/" + userId) .then((res) => {
       });

+ 249 - 0
src/views/RMS/components/showCapacity.vue

@@ -0,0 +1,249 @@
+<template>
+  <!-- 修改运力信息 -->
+<div class="editCapacity">
+  <div id="contractDetails">
+    <page-title>编辑</page-title>
+    <div class="contractimage">
+      <el-image 
+            style=" height:150px;text-align:center"
+            :src="src" 
+            :preview-src-list="srcList">
+          </el-image>
+    </div>
+    <div class="contractTitle">
+      <div class="form_box" style="margin-right: 10rem">
+          <dil-form :formId="310" v-model="form1"></dil-form>
+      </div>
+    </div>
+<div class="elForm">
+  <el-form
+        :inline="true"
+        class="demo-form-inline"
+        label-width="80px"
+      >
+        <el-form-item label="选择承运商">
+         <el-autocomplete
+          class="inline-input"
+          v-model="state"
+          :fetch-suggestions="querySearch"
+          placeholder="请输入承运商名称"
+          :trigger-on-focus="false"
+          @select="handleSelect"
+        >
+        <template slot-scope="{ item }">
+          <div class="name">{{ item.carrierName }}</div>
+        </template>
+        </el-autocomplete>
+        </el-form-item>
+    </el-form>
+</div>
+    
+</div>
+    <div class="button_box">
+      <el-button type="primary" @click="onClickConfirm">确认</el-button>
+    </div>
+  </div>
+
+</template>
+
+<script>
+import PageTitle from "@/components/Page/Title";
+import { getCookie } from "@/utils/util.js";
+export default {
+  components: { PageTitle },
+  data() {
+    return {
+      srcList:[],
+      src:"",
+      state: "",
+      userId:null,
+      restaurants: [],
+      accessToken:null,
+      userCode:null,
+      carrierUserId:null,
+      carrierId:null,
+      carrierIds:null,
+      direction: 'rtl',
+      inputText:"",
+      form1: {},
+      carrierUserId:null,
+      carrierName:"",
+      options:{
+        requestUrl:"/api/v1/rms/getCarrierList?apiId=417",
+        selectionType:"radio",
+        mapList:[]
+      }
+    };
+  },
+  created(){
+      this.carrierUserId = getCookie("userId");
+      console.log(this.carrierUserId ,'carrierUserId')     
+  },
+  mounted() {
+   this.information();
+   this.axios.post(
+       "/api/v1/rms/getCarrierNameBySSOId?carrierSSOId=" + this.carrierUserId
+      )
+      .then((res) => {
+        if(res.data.code == "200"){
+        console.log(res.data.data)
+        this.state = res.data.data.carrierName
+        this.carrierIds = res.data.data.carrierId
+        }      
+  })},
+  methods: {
+    //承运商弹出层
+    handleSelect(item){    
+      this.carrierIds = item.carrierId
+      item.carrierName = this.state
+    },
+    //以下是承运商边输边查搜索
+    querySearch(queryString, cb) {
+        this.axios.post('/api/v1/uc/getCarrierMesByLike?index='+queryString).then((res)=>{
+        if(res.data.code == "200"){
+          console.log(res.data.data)
+          var restaurants = res.data.data
+          console.log(restaurants,"restaurants");
+          var results = queryString ? restaurants.filter(this.createFilter(queryString)) :restaurants;
+           // 调用 callback 返回建议列表的数据
+          cb(results);
+        }
+        })     
+      },
+    createFilter(queryString) {
+        return (restaurants)  =>  {
+          return (restaurants.value.toLowerCase().indexOf(queryString.toLowerCase()) > -1);
+        };
+      },
+    //以上是承运商边输边查搜索
+    currentRadioChange(selection){
+      this.mapList=selection,
+      console.log(this.mapList)
+      this.carrierName=this.mapList.carrierName
+    },
+    onclick(){
+      this.options.requestUrl="/api/v1/rms/getCarrierList?apiId=417&con=" +this.inputText;
+    },
+    information() {
+      //编辑 
+    console.log(this.$route.params)            
+     
+      this.axios
+        .post(
+          "/api/v1/rms/getCapacityById/" +
+            this.$route.params.capacityId
+        )
+        .then((res) => {
+            console.log(res.data.data)
+          res.data.data.forEach((e) => {          
+            this.form1 = e;
+            console.log(e);
+            console.log(this.form1);
+            console.log( this.$route.params.capacityId);
+            this.srcList=[];
+            this.isShow=true;
+            this.src=e.driverLicenceUrl;
+            this.srcList.push(e.driverLicenceUrl)
+          }); 
+        this.axios
+        .post(
+          "/api/v1/rms/getCarrierNameById/" +
+          this.$route.params.capacityId
+        )
+        .then((res) => {
+          this.state=res.data.data.carrierName
+          console.log("carrierName",this.carrierName);
+        }); 
+        });
+    },
+    // 返回
+    onClickCancel() {
+      this.$router.go(-1);
+    },
+    // 确认
+    onClickConfirm() {
+      console.log(this.form1)
+       let RmsCapacity={
+         capacityId:this.form1.capacityId,
+         capacityTypeId:this.form1.capacityTypeId,
+         capacityNumber:this.form1.capacityNumber.toUpperCase(),
+         capacityCorlor:this.form1.capacityCorlor,
+         capacityOwneris:this.form1.capacityOwneris,
+         capacityVip:this.form1.capacityVip,
+         capacityBlacklist:this.form1.capacityBlacklist,
+         carrierId:this.carrierIds,
+       };if(
+         RmsCapacity.capacityNumber==null ||
+         RmsCapacity.capacityCorlor==null ||
+         RmsCapacity.capacityOwneris==null ||
+         RmsCapacity.capacityVip==null ||
+         RmsCapacity.capacityBlacklist==null 
+         //RmsCapacity.carrierId==null
+       )this.$message.error("存在空值!");  
+        console.log( this.$route.params.capacityId);
+        this.axios
+          .post(
+            "/api/v1/rms/updateCapacity",
+           RmsCapacity
+          )
+          .then((res) => {
+            if (res.data.code == "200") {
+              this.$message.success("修改成功")
+              this.$router.go(-1);           
+            }
+          });
+    },
+  },
+};
+</script>
+<style lang='scss' scoped>
+  .contractimage{
+    text-align: center;
+    position: relative;
+    left: 35px;
+  }
+.editCapacity{
+    .elForm{
+      margin-left: 40%;
+    }
+    .form_box {
+    width: 100%;
+    margin-top: 30px;
+    display: flex;
+    justify-content: center;
+    .el-form-item{
+      display: flex;
+      justify-content: center;
+      .el-form-item__label{
+        display: flex;
+        align-items: center;
+      }
+      .el-form-item__content{
+         .el-select{
+            width: 250px;
+          }
+          .el-input{
+            width: 250px;
+          }
+      }
+    }
+ }
+ .button_box{
+    display: flex;
+    justify-content: center;
+    .el-button{
+      width: 80px;
+      margin-right: 10px;
+    }
+ }
+ .disableBox{
+  display: flex;
+  text-align: center;
+  align-items: center;
+  justify-content: center;
+  margin-top: 1.5rem;
+  margin-bottom: 1.25rem;
+}
+}
+ 
+</style>

+ 4 - 2
src/views/RMS/router/index.js

@@ -52,8 +52,9 @@ import rawMaterialManufacturer from '../components/rawMaterialManufacturer.vue'
 import rawWarehouse from '../components/rawWarehouse.vue'
 import rmsShipper from '../components/rmsShipper.vue'
 import supplier from '../components/supplier.vue'
-import transitRoute from '../components/transitRoute.vue'
+import transitRoute from '../components/transitRoute.vue'  
 import showCarrier from '../components/showCarrier.vue'
+import showCapacity from '../components/showCapacity.vue'
 import transitRouteAdd from '../components/transitRouteAdd.vue'
 import truckCalculate from '../components/truckCalculate.vue'
 import consignee from '../components/consignee.vue'
@@ -85,11 +86,12 @@ const constantRouterMap = [
 		{path: 'addOtherCapacity', name: 'addOtherCapacity', meta: {code: 'xtpzgl-yhgl'}, component: addOtherCapacity},
 		{path: 'capacity', name: 'capacity', meta: {code: 'xtpzgl-yhgl'}, component: capacity},
 		{path: 'carDriver', name: 'carDriver', meta: {code: 'xtpzgl-yhgl'}, component: carDriver},
-		{path: 'carrier', name: 'carrier', meta: {code: 'xtpzgl-yhgl'}, component: carrier},
+		{path: 'carrier', name: 'carrier', meta: {code: 'xtpzgl-yhgl'}, component: carrier},  
 		{path: 'editCapacity/:capacityId', name: 'editCapacity', meta: {code: 'xtpzgl-yhgl'}, component: editCapacity},
 		{path: 'editCarDriver/:driverId', name: 'editCarDriver', meta: {code: 'xtpzgl-yhgl'}, component: editCarDriver},
 		{path: 'editCarrier/:carrierId', name: 'editCarrier', meta: {code: 'xtpzgl-yhgl'}, component: editCarrier},
 		{path: 'showCarrier/:carrierId', name: 'showCarrier', meta: {code: 'xtpzgl-yhgl'}, component: showCarrier},
+		{path: 'showCapacity/:capacityId', name: 'showCapacity', meta: {code: 'xtpzgl-yhgl'}, component: showCapacity},
 		{path: 'editConsignee/:consigneeId',name: 'editConsignee',meta:{code: 'xtpzgl-yhgl'},component: editConsignee},
 		{path: 'editGatepost/:gatepostId', name: 'editGatepost', meta: {code: 'xtpzgl-yhgl'}, component: editGatepost},
 		{path: 'editMaterial/:materialId', name: 'editMaterial', meta: {code: 'xtpzgl-yhgl'}, component: editMaterial},

+ 402 - 0
src/views/appoint/components/inward/addTransPrice.vue

@@ -0,0 +1,402 @@
+<template>
+  <!-- 添加汽运单价 111-->
+  <div class="addTransportPrice">
+    <page-title>新增</page-title>
+    <div class="form">
+      <div class="form_box">
+        <dil-form :formId="379" v-model="form1" ref="from1"></dil-form>
+        <el-form>
+          <el-form-item label="承运起止地点">
+            <el-select v-model="rangeId" placeholder="请选择承运起止地点">
+              <el-option
+                v-for="item in options"
+                :key="item.value"
+                :label="item.label"
+                :value="item.value"
+              ></el-option>
+            </el-select>
+         </el-form-item>
+         <el-button type="primary" class="btnml" @click="materialDrawer">浏览物资</el-button>
+         </el-form>
+      </div>
+      <div class="liulan">
+        <el-button type="primary" class="btn" @click="oilPriceFormulaClick"
+          >浏览</el-button
+        >
+      </div>
+      <div class="rangeStyle"></div>
+    </div>
+     <!-- 物资表格 -->
+    <div class="selectionTable from">
+      <el-table
+        :data="selectionList"
+        border
+        style="width: 100%"
+        highlight-current-row
+      >
+        <el-table-column type="index" label="序号" width="50">
+        </el-table-column>
+        <el-table-column
+          v-for="(item, i) in tableTop"
+          :key="i"
+          :prop="item.prop"
+          :label="item.label"
+          :width="item.width"
+          align="center"
+          show-overflow-tooltip
+        >
+        </el-table-column>
+        <!-- 操作列 -->
+        <el-table-column fixed="right" label="操作" width="100">
+          <template slot-scope="scope">
+            <el-button
+              @click="deleteRow(scope.$index)"
+              type="text"
+              icon="el-icon-close"
+              size="big"
+            ></el-button>
+          </template>
+        </el-table-column>
+      </el-table>
+    </div>
+    <div class="button_box">
+      <el-button @click="cancel">取消</el-button>
+      <el-button type="primary" @click="makeSure">确定</el-button>
+    </div>
+    <!-- 油价联动公式模态框 -->
+    <el-drawer
+      title="请选择油价联动公式"
+      :visible.sync="oilPriceFormulaDrawer"
+      :direction="direction"
+      :before-close="handleClose"
+      close-on-press-escape
+      modal
+      wrapperClosable
+      size="40%"
+    >
+      <div class="selectText">
+        <!-- <span></span> -->
+        <el-input v-model="LineText" placeholder="请输入内容"></el-input>
+        <el-button
+          type="primary"
+          @click="selectLineClick"
+          :loading="selectLineLoading"
+          ><i class="el-icon-search"></i>查询</el-button
+        >
+        <el-button type="primary" @click="addoilPriceFormula">确定</el-button>
+      </div>
+      <div class="LineTable">
+        <vue-scroll :ops="ops" style="width:100%;height:100%">
+          <dilTable
+            v-bind.sync="oilPriceFormula"
+            @radio-change="currentRadioChange"
+            :isKuang="isKuang"
+            :loading="tableLoading"
+            :drawer="oilPriceFormulaDrawer"
+            @func="func"
+          ></dilTable>
+        </vue-scroll>
+      </div>
+    </el-drawer>
+     <!-- 物资模态框 -->
+    <el-drawer
+      title="请选择物资"
+      :visible.sync="drawerMaterial"
+      :direction="direction"
+      close-on-press-escape
+      modal
+      wrapperClosable
+      size="40%"
+    >
+      <div class="selectText">
+        <el-input v-model="materialText" placeholder="请输入内容"></el-input>
+        <el-button
+          type="primary"
+          @click="selectMaterial"
+          :loading="selectLineLoading"
+          ><i class="el-icon-search"></i>查询</el-button
+        >
+        <el-button type="primary" @click="addMaterialList">确定</el-button>
+      </div>
+      <div class="LineTable">
+        <vue-scroll :ops="ops" style="width:100%;height:100%">
+          <dilTable
+            v-bind.sync="materialOptions"
+            @selection-change="selectionChange"
+            :isKuang="isKuang"
+            :loading="tableLoading"
+            :drawer="oilPriceFormulaDrawer"
+            @func="func"
+          ></dilTable>
+        </vue-scroll>
+      </div>
+    </el-drawer>
+  </div>
+</template>
+
+<script>
+import PageTitle from "@/components/Page/Title";
+import { sjTime, isNumber } from "@/utils/sharedJsFile";
+export default {
+  components: { PageTitle },
+  data() {
+    return {
+      //物资模态框默认隐藏
+      drawerMaterial:false,
+      //物资查询框
+      materialText:null,
+      selectionList:[],
+      rangeId: null,
+      //是否点击查询
+      isKuang: false,
+      //表格加载状态
+      tableLoading: false,
+      //公式内容
+      formulaString: null,
+      //油价联动公式Id
+      oilPriceFormulaId: null,
+      //是否打开油价联动公式的模态窗口
+      oilPriceFormulaDrawer: false,
+      //油价联动公式查询条件
+      LineText: null,
+      //油价联动公式模态框查询按钮状态
+      selectLineLoading: false,
+      //油价联动公式模态窗口的数据
+      oilPriceFormula: {
+        requestUrl: "",
+        selectionType: "radio"
+      },
+      options: [],
+      newsArr:[],
+      //模态窗口的打开的方向
+      direction: "rtl",
+      materialOptions:{
+          requestUrl:"",
+          selectionType: "select",
+      },
+      //表单数据
+      form1: {
+        priceDate: new Date(),
+        oilTypeId: 10,
+        capacityTypeId: 1
+      },
+      tableTop: [
+        {
+          prop: "materialName",
+          label: "物资名称",
+        }
+      ],
+      
+      //提交给后端的数据
+      // map:{},
+      ops: {
+        vuescroll: {},
+        scrollPanel: {},
+        rail: {
+          keepShow: true
+        },
+        bar: {
+          hoverStyle: true,
+          onlyShowBarOnScroll: false, //是否只有滚动的时候才显示滚动条
+          background: "#5f9ea0", //滚动条颜色
+          opacity: 0.8, //滚动条透明度
+          "overflow-x": "hidden"
+        }
+      }
+    };
+  },
+  mounted() {
+    this.axios.get("/api/v1/uc/getTransRange").then(res => {
+      console.log(res.data.data)
+      this.options = res.data.data;
+    });
+  },
+  methods: {
+    func(res) {
+      this.selectLineLoading = false;
+      this.isKuang = false;
+      this.tableLoading = false;
+    },
+    materialDrawer(){
+      this.drawerMaterial = true
+      this.materialOptions.requestUrl = "/api/v1/uc/queryMaterialByLike?apiId=244&i=" + new Date()
+    },
+    selectMaterial(){
+      if(this.materialText == null){
+          this.materialOptions.requestUrl = "/api/v1/uc/queryMaterialByLike?apiId=244&i=" + new Date()
+      }else{
+          this.materialOptions.requestUrl = "/api/v1/uc/queryMaterialByLike?apiId=244&index=" + this.materialText
+      }
+    },
+    addMaterialList(){
+      this.drawerMaterial = false
+      this.newsArr.forEach((e) => {
+          console.log((e.materialName))
+          var addmap = {
+              materialName:e.materialName,
+              materialId:e.materialId
+          }
+          this.selectionList.push(addmap)
+      })
+      console.log(this.selectionList)
+      this.newsArr = []
+    },
+     //点击删除按钮删除当前点击的对象
+    deleteRow(index){
+      this.selectionList.splice(index,1)
+    },
+    selectionChange(selection){
+        console.log(selection)
+        for (let i = 0; i < selection.length; i++) {
+        if(this.newsArr.indexOf(selection[i]) === -1){
+        this.newsArr.push(selection[i]);
+        }
+        }
+    },
+    selectLineClick() {
+      this.tableLoading = true;
+      this.selectLineLoading = true;
+      this.isKuang = true;
+      if (this.LineText) {
+        this.oilPriceFormula.requestUrl =
+          "api/v1/uc/getOilFormula?apiId=444&con=" + this.LineText;
+      } else {
+        this.oilPriceFormula.requestUrl =
+          "api/v1/uc/getOilFormula?apiId=444&i=" + new Date();
+      }
+    },
+    //选定联动公式确定
+    addoilPriceFormula() {
+      let mapvalue = {
+        shipperId: this.form1.shipperId,
+        oilPriceFormula: this.formulaString,
+        cargonameId: this.oilPriceFormulaId,
+        capacityTypeId: this.form1.capacityTypeId,
+        priceValue: this.form1.priceValue,
+        priceDate: this.form1.priceDate,
+        type: this.form1.type,
+        oilpriceBase: this.form1.oilpriceBase,
+        oilTypeId: this.form1.oilTypeId,
+        oilpriceChangeThreshold: this.form1.oilpriceChangeThreshold
+      };
+      this.form1 = mapvalue;
+      this.oilPriceFormulaDrawer = false;
+    },
+    currentRadioChange(val) {
+      this.formulaString = val.formulaString;
+      this.oilPriceFormulaId = val.formulaId;
+    },
+    //打开线路的模态窗口
+    oilPriceFormulaClick() {
+      this.oilPriceFormulaDrawer = true;
+      this.oilPriceFormula.requestUrl = "/api/v1/uc/getOilFormula?apiId=444";
+    },
+    //模态窗口关闭时调用
+    handleClose() {
+      if (this.oilPriceFormulaDrawer) {
+        this.oilPriceFormulaDrawer = false;
+        this.LineText = null;
+      }
+    },
+    makeSure() {
+      let mapValue = {
+        cargonameId: this.oilPriceFormulaId,
+        capacityTypeId: this.form1.capacityTypeId,
+        priceValue: this.form1.priceValue,
+        priceDate: sjTime(this.form1.priceDate),
+        type: this.form1.type,
+        oilpriceBase: this.form1.oilpriceBase,
+        oilTypeId: this.form1.oilTypeId,
+        oilpriceChangeThreshold: this.form1.oilpriceChangeThreshold,
+        rangeId:this.rangeId,
+        mapList:this.selectionList
+      };
+      this.axios
+        .post("/api/v1/ams/insertInwardPrice", mapValue)
+        .then(res => {
+          if (res.data.code == "200") {
+            this.$router.go(-1);
+          }
+          this.$message({
+            type: "success",
+            message: "新增运输单价成功!"
+          });
+        });
+    },
+    // 取消
+    cancel() {
+      this.$router.push("/inwardTransPrice");
+    }
+  }
+};
+</script>
+<style lang="scss">
+.elForm {
+  margin-left: 30%;
+}
+.addTransportPrice {
+  .form {
+    display: flex;
+    .form_box {
+      width: 320px;
+      margin-left: 30%;
+      margin-top: 30px;
+      margin-right: 20px;
+      .el-form {
+        .preview-group {
+          .el-form-item {
+            .el-form-item__label {
+              display: inline-block;
+              width: 70px !important;
+            }
+            .el-form-item__content {
+              .el-select {
+                width: 250px;
+              }
+              .el-input {
+                width: 250px;
+              }
+            }
+          }
+        }
+      }
+    }
+    .liulan {
+      width: 120px;
+      margin-top: 30px;
+      .el-button {
+        width: 100px !important;
+        margin: auto;
+      }
+      .btn {
+        margin-top: 54px;
+      }
+    }
+  }
+  .button_box {
+    margin-left: 45%;
+  }
+  .selectText {
+    .el-input {
+      width: 250px;
+    }
+  }
+  .LineTable {
+    width: 100%;
+    height: 480px;
+    overflow: hidden;
+    margin-top: 10px;
+  }
+  .btnml {
+      width: 250px;
+      margin-left: 50px;
+  }}
+</style>
+<style lang="scss">
+/deep/.__bar-is-vertical {
+  right: -1px !important;
+}
+/deep/.__bar-is-horizontal {
+  display: none !important;
+}
+</style>

+ 83 - 0
src/views/appoint/components/inward/transPrice.vue

@@ -0,0 +1,83 @@
+<template>
+  <!-- 内转汽运单价页面 -->
+  <div class="salePlan">
+    <div class="top">
+      <el-input placeholder="请输入内容" v-model="input" clearable> </el-input>
+      <el-button type="primary" class="btn" @click="onclick" :loading="loading">
+        <i class="el-icon-search"></i>查询
+      </el-button>
+      <el-button type="primary" @click="btnclick(0)">
+        <i class="el-icon-plus"></i>新增
+      </el-button>
+       <el-button type="primary" @click="exportData()"><i class="el-icon-download"></i>导出(Excel)</el-button>
+    </div>
+
+<el-tabs v-model="activeName">
+      <!-- 正在启用 -->
+       <el-tab-pane label="正在启用" name="first">
+          <dilTable ref="excelDom" v-bind.sync="option" :loading="loading" :isKuang="isKuang" @func="func">
+        </dilTable>
+      </el-tab-pane>
+      <!-- 历史启用 -->
+      <el-tab-pane label="历史启用" name="second">
+          <dilTable ref="excelDom" v-bind.sync="option2" :loading="loading" :isKuang="isKuang" @func="func">
+          </dilTable>
+      </el-tab-pane>
+      
+    </el-tabs>
+  </div>
+</template>
+<script>
+export default {
+  name: "TransportPrice",
+  data() {
+    return {
+      activeName: "first",
+      isKuang:false,
+      loading:false,
+      input: "",
+      option: {
+        // 表格请求数据的地址
+        requestUrl:
+          "/api/v1/ams/getInwardContractPrice?apiId=464&deleted=0",
+      },
+      option2: {
+        // 表格请求数据的地址
+        requestUrl:
+          "/api/v1/ams/getInwardContractPrice?apiId=464&deleted=1",
+      },
+      tableTitle:'汽运单价'
+    };
+  },
+  methods: {
+    func(){
+      this.loading = false;
+      this.isKuang = false;
+    },
+    onclick() {
+      this.loading = true;
+      this.isKuang = true;
+      if(this.input){
+        this.option.requestUrl ="/api/v1/ams/getInwardContractPrice?apiId=464&con=" +this.input;
+      }else{
+        this.option.requestUrl ="/api/v1/ams/getInwardContractPrice?apiId=464&i="+new Date();
+      }
+    },
+    btnclick() {
+      this.$router.push("/inwardAddTransPrice");
+    },
+  },
+  
+};
+</script>
+<style lang='scss' scoped>
+.salePlan {
+  .top{
+    padding: 1.25rem 0.375rem;
+    .el-input {
+      width: 20%;
+      margin-right: 1.25rem;
+    }
+  }
+}
+</style>

+ 4 - 1
src/views/appoint/router/index.js

@@ -57,6 +57,8 @@ import saleOrderMaterial from '../components/saleContract/saleOrderMaterial.vue'
 import saleOrderUpdateLog from '../components/saleContract/saleOrderUpdateLog.vue'
 import salePlan from '../components/saleContract/salePlan.vue'
 import transportPrice from '../components/saleContract/transportPrice.vue'
+import inwardTransPrice from '../components/inward/transPrice.vue'
+import inwardAddTransPrice from '../components/inward/addTransPrice.vue'
 Vue.use(Router)
 
 const constantRouterMap = [
@@ -120,10 +122,11 @@ const constantRouterMap = [
       {path: 'saleOrderUpdateLog/:saleOrderId', name: 'saleOrderUpdateLog', meta: {code: 'xtpzgl-yhgl'}, component: saleOrderUpdateLog},
       {path: 'salePlan', name: 'salePlan', meta: {code: 'xtpzgl-yhgl'}, component: salePlan},
       {path: 'transportPrice', name: 'transportPrice', meta: {code: 'xtpzgl-yhgl'}, component: transportPrice},
+      {path: 'inwardTransPrice', name: 'inwardTransPrice', meta: {code: 'xtpzgl-yhgl'}, component: inwardTransPrice},
+      {path: 'inwardAddTransPrice', name: 'inwardAddTransPrice', meta: {code: 'xtpzgl-yhgl'}, component: inwardAddTransPrice},
     ]
   }
 ];
-
 const router = new Router({
   routes: constantRouterMap
 })

+ 133 - 0
src/views/inward/components/inwardSettlement/countDetailOrder.vue

@@ -0,0 +1,133 @@
+// 计费详单
+<template>
+  <div class="steel_inbound">
+    <div class="sache">
+      <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>
+    <div class="table">
+      <el-tabs v-model="activeName">
+        <!-- 未结算 -->
+        <el-tab-pane label="未结算" name="first">
+        <dilTable v-bind.sync="options1">
+        </dilTable>
+        </el-tab-pane>
+        <!-- 已结算 -->
+        <el-tab-pane label="已结算" name="second">
+        <dilTable v-bind.sync="options2">
+        </dilTable>
+        </el-tab-pane>
+      </el-tabs>
+    </div>
+
+  </div>
+</template>
+
+<script>
+import { getCookie } from "@/utils/util.js";
+export default {
+  data(){
+    return{
+      //单价
+      Fee:null,
+      //加载
+      selectLineLoading:false,
+      input:"",
+      activeName:"first",
+      ssoId:null,
+      //详单Id
+      detailsId:null,
+      options1:{
+        // first请求数据的地址
+        requestUrl: "",
+      },
+      options2:{
+        // second请求数据的地址
+        requestUrl: "",
+      },
+      //是否打开修改详单地址弹出框
+      dialogFormVisible:false,
+      //原详单单价
+      originalPriceValue:null,
+      //新详单单价
+      newPriceValue:null,
+      //原详单地址
+      originalAddress:null,
+      //新详单地址
+      newAddress:null,
+      //新单价Id
+      priceId:null,
+      //是否打开运输单价的模态框
+      addressDrawer:false,
+      //运输单价的表格
+      Address: {
+        requestUrl: "/api/v1/ams/getAddressDeliveryAddress?apiId=255",
+        selectionType: "radio",
+      },
+      // addressText:null,
+      //缓存当前选中的运输单价
+      priceMap:{},
+      formLabelWidth: '125px'
+    }
+  },
+  created(){
+     this.options1GetRequestUrl();
+     this.options2GetRequestUrl();
+  },
+  methods:{
+    //未结算数据
+    options1GetRequestUrl(){
+    if(getCookie("orgCode") == "chengyunshang"){
+      this.ssoId=getCookie('userId');
+      this.options1.requestUrl = "/api/v1/bms/getInwardWeightDetailsOrder?apiId=461&orderType=11&detailStatus=0&carrierSsoId="+ getCookie('userId');
+    }else if(getCookie("orgCode") == "dagangadmin"||getCookie("orgCode")=="zidonghuabu"||getCookie("orgCode")=="wuliuchuyunzhongxin"){
+      this.options1.requestUrl = "/api/v1/bms/getInwardWeightDetailsOrder?apiId=461&orderType=11&detailStatus=0"
+    }else{
+      this.options1.requestUrl = "/api/v1/bms/getInwardWeightDetailsOrder?apiId=461&orderType=11&detailStatus=0&userId=" + getCookie("orgCode");  
+    }
+    },
+    //已结算数据
+    options2GetRequestUrl(){
+     if(getCookie("orgCode") == "chengyunshang"){
+      this.ssoId=getCookie('userId');
+      this.options2.requestUrl = "/api/v1/bms/getInwardWeightDetailsOrder?apiId=461&orderType=11&detailStatus=1&carrierSsoId="+ getCookie('userId');
+    }else if(getCookie("orgCode") == "dagangadmin"||getCookie("orgCode")=="zidonghuabu"||getCookie("orgCode")=="wuliuchuyunzhongxin"){
+      this.options2.requestUrl = "/api/v1/bms/getInwardWeightDetailsOrder?apiId=461&orderType=11&detailStatus=1"
+    }else{
+      this.options2.requestUrl = "/api/v1/bms/getInwardWeightDetailsOrder?apiId=461&orderType=11&detailStatus=1&userId=" + getCookie("orgCode");  
+    }
+    },
+     toInsert() {
+      this.$router.push("/insertCheckInventory");
+    },
+
+    onclick(){
+      console.log("查询待定值")
+      // this.options.requestUrl = "/api/v1/bms/getTruckDetailsOrderList?apiId=176&orderType=1&con="+this.input;
+    },
+    //运输订单点击浏览的事件
+    select(){
+      this.addressDrawer = true;
+    },
+    //运输单价模态窗口的框计算
+    selectAddressClick(){
+      this.Price.requestUrl = '/api/v1/ams/getAddressDeliveryAddress?apiId=255&con='+this.addressText;
+    },
+   
+  }
+}
+</script>
+
+<style lang="scss" scode>
+.steel_inbound{
+  .sache{
+    padding: 1.25rem 0.375rem;
+			.el-input {
+			width: 20%;
+			margin-right: 1.25rem;
+			}
+  }
+}
+</style>

+ 198 - 0
src/views/inward/components/inwardSettlement/detailOrder.vue

@@ -0,0 +1,198 @@
+// 计费详单
+<template>
+  <div class="steel_inbound">
+    <div class="sache">
+      <span>详单时间:</span>
+      <el-date-picker
+        v-model="startTime"
+        type="datetime"
+        placeholder="选择日期"
+      >
+      </el-date-picker>
+      <span>至</span>
+      <el-date-picker
+        v-model="endTime"
+        type="datetime"
+        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>
+      <span style="margin-left: 1rem;">合计净重:</span>
+      <el-input v-model="totalNetWeight" :disabled="true" style="width: 140px;"></el-input>
+      <span style="margin-left: 1rem;">合计金额:</span>
+      <el-input v-model="totalMoney" :disabled="true" style="width: 100px;"></el-input>
+    </div>
+    <div class="table">
+      <el-tabs v-model="activeName" tab-click="handClick">
+        <!-- 未结算 -->
+        <el-tab-pane label="未结算" name="first">
+        <div class="table">
+        <dilTable v-bind.sync="options1" ref="excelDom" @func="func"></dilTable>
+        </div>
+        </el-tab-pane>
+        <!-- 已结算 -->
+        <el-tab-pane label="已结算" name="second">
+        <dilTable v-bind.sync="options2">
+        </dilTable>
+        </el-tab-pane>
+      </el-tabs>
+    </div>
+
+  </div>
+</template>
+
+<script>
+import { getCookie } from "@/utils/util.js";
+import { sjTime } from '@/utils/sharedJsFile';
+export default {
+  data(){
+    return{
+      startTime: null,
+      endTime: null,
+      //合计净重
+      totalNetWeight:null,
+      //合计金额
+      totalMoney:null,
+      //单价
+      Fee:null,
+      //加载
+      selectLineLoading:false,
+      input:"",
+      activeName:"first",
+      ssoId:null,
+      //详单Id
+      detailsId:null,
+      options1:{
+        // first请求数据的地址
+        requestUrl: "",
+      },
+      options2:{
+        // second请求数据的地址
+        requestUrl: "",
+      },
+      //是否打开修改详单地址弹出框
+      dialogFormVisible:false,
+      //原详单单价
+      originalPriceValue:null,
+      //新详单单价
+      newPriceValue:null,
+      //原详单地址
+      originalAddress:null,
+      //新详单地址
+      newAddress:null,
+      //新单价Id
+      priceId:null,
+      //是否打开运输单价的模态框
+      addressDrawer:false,
+      //运输单价的表格
+      Address: {
+        requestUrl: "/api/v1/ams/getAddressDeliveryAddress?apiId=255",
+        selectionType: "radio",
+      },
+      // addressText:null,
+      //缓存当前选中的运输单价
+      priceMap:{},
+      formLabelWidth: '125px',
+      tableTitle:'内转计重详单'
+    }
+  },
+  created(){
+     this.options1GetRequestUrl();
+     this.options2GetRequestUrl();
+  },
+  methods:{
+    func(res){
+      console.log(res.list)
+      var totalWeight = 0;
+      var totalAllMoney = 0;
+      res.list.forEach(e => {
+        console.log(e.resultNetWeight)
+        totalWeight = totalWeight + e.resultNetWeight
+        totalAllMoney = totalAllMoney + e.detailsAmount
+        console.log(e.detailsAmount);
+      });
+      this.totalNetWeight = totalWeight.toFixed(2) + 't';
+      this.totalMoney = totalAllMoney.toFixed(2) + '元'
+    },
+    //未结算数据
+    options1GetRequestUrl(){
+    if(getCookie("orgCode") == "chengyunshang"){
+      this.ssoId=getCookie('userId');
+      this.options1.requestUrl = "/api/v1/bms/getInwardWeightDetailsOrder?apiId=461&orderType=11&detailStatus=0&carrierSsoId="+ getCookie('userId') + "&startTime=null&endTime=null&i=" +new Date();
+    }else if(getCookie("orgCode") == "dagangadmin"||getCookie("orgCode")=="zidonghuabu"||getCookie("orgCode")=="wuliuchuyunzhongxin"){
+      this.options1.requestUrl = "/api/v1/bms/getInwardWeightDetailsOrder?apiId=461&orderType=11&detailStatus=0&startTime=null&endTime=null&i=" +new Date();
+    }else{
+      this.options1.requestUrl = "/api/v1/bms/getInwardWeightDetailsOrder?apiId=461&orderType=11&detailStatus=0&userId=" + getCookie("orgCode") + "&startTime=null&endTime=null&i=" +new Date(); 
+    }
+    },
+    //已结算数据
+    options2GetRequestUrl(){
+     if(getCookie("orgCode") == "chengyunshang"){
+      this.ssoId=getCookie('userId');
+      this.options2.requestUrl = "/api/v1/bms/getInwardWeightDetailsOrder?apiId=461&orderType=11&detailStatus=1&carrierSsoId="+ getCookie('userId') + "&startTime=null&endTime=null&i=" +new Date();
+    }else if(getCookie("orgCode") == "dagangadmin"||getCookie("orgCode")=="zidonghuabu"||getCookie("orgCode")=="wuliuchuyunzhongxin"){
+      this.options2.requestUrl = "/api/v1/bms/getInwardWeightDetailsOrder?apiId=461&orderType=11&detailStatus=1" + "&startTime=null&endTime=null&i=" +new Date();
+    }else{
+      this.options2.requestUrl = "/api/v1/bms/getInwardWeightDetailsOrder?apiId=461&orderType=11&detailStatus=1&userId=" + getCookie("orgCode") + "&startTime=null&endTime=null&i=" +new Date();
+    }
+    },
+     toInsert() {
+      this.$router.push("/insertCheckInventory");
+    },
+    onclick(){
+      let startTime = null;
+      let endTime = null;
+      if(this.startTime){
+        startTime = sjTime(this.startTime);
+      }
+      if(this.endTime){
+        endTime = sjTime(this.endTime);
+      }
+      if(startTime && endTime){
+        if(startTime < endTime){
+          if(getCookie("orgCode") == "dagangadmin" || getCookie("orgCode") == "zidonghuabu"||getCookie("orgCode")=="wuliuchuyunzhongxin"){
+          this.options1.requestUrl = "/api/v1/bms/getInwardWeightDetailsOrder?apiId=461&orderType=11&detailStatus=0" + "&startTime=" + startTime + "&endTime=" + endTime + "&i" +new Date();
+          this.options2.requestUrl = "/api/v1/bms/getInwardWeightDetailsOrder?apiId=461&orderType=11&detailStatus=1" + "&startTime=" + startTime + "&endTime=" + endTime + "&i" +new Date();
+          }else if(getCookie("orgCode") == "chengyunshang"){
+          this.options1.requestUrl = "/api/v1/bms/getInwardWeightDetailsOrder?apiId=461&orderType=11&detailStatus=0&carrierSsoId="+ getCookie('userId') + "&startTime=" + startTime + "&endTime=" + endTime + "&i" +new Date();
+          this.options2.requestUrl = "/api/v1/bms/getInwardWeightDetailsOrder?apiId=461&orderType=11&detailStatus=1&carrierSsoId="+ getCookie('userId') + "&startTime=" + startTime + "&endTime=" + endTime + "&i" +new Date();
+          }else{
+            this.options1.requestUrl = "/api/v1/bms/getInwardWeightDetailsOrder?apiId=461&orderType=11&detailStatus=0&userId=" + getCookie("orgCode") + "&startTime=" + startTime + "&endTime=" + endTime + "&i" +new Date();
+            this.options2.requestUrl = "/api/v1/bms/getInwardWeightDetailsOrder?apiId=461&orderType=11&detailStatus=1&userId=" + getCookie("orgCode") + "&startTime=" + startTime + "&endTime=" + endTime + "&i" +new Date();
+          }
+        }else{
+          this.startTime = null;
+          this.endTime = null;
+          this.$message.warning('开始时间要比结束时间早')
+        }
+      }else{
+
+      }
+    },
+    //运输订单点击浏览的事件
+    select(){
+      this.addressDrawer = true;
+    },
+    //运输单价模态窗口的框计算
+    selectAddressClick(){
+      this.Price.requestUrl = '/api/v1/ams/getAddressDeliveryAddress?apiId=255&con='+this.addressText;
+    },
+   
+  }
+}
+</script>
+
+<style lang="scss" scode>
+.steel_inbound{
+  .sache{
+    padding: 1.25rem 0.375rem;
+			.el-input {
+			width: 20%;
+			margin-right: 1.25rem;
+			}
+  }
+}
+</style>

+ 192 - 0
src/views/inward/components/inwardSettlement/purInwardDetailsOrder.vue

@@ -0,0 +1,192 @@
+// 计费详单
+<template>
+  <div class="steel_inbound">
+    <div class="sache">
+      <span>详单时间:</span>
+      <el-date-picker
+        v-model="startTime"
+        type="datetime"
+        placeholder="选择日期"
+      >
+      </el-date-picker>
+      <span>至</span>
+      <el-date-picker
+        v-model="endTime"
+        type="datetime"
+        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>
+        <span style="margin-left: 1rem;">合计净重:</span>
+        <el-input v-model="totalNetWeight" :disabled="true" style="width: 140px;"></el-input>
+        <span style="margin-left: 1rem;">合计金额:</span>
+        <el-input v-model="totalMoney" :disabled="true" style="width: 100px;"></el-input>
+    </div>
+    <div class="table">
+      <el-tabs v-model="activeName">
+        <!-- 未结算 -->
+        <el-tab-pane label="未结算" name="first">
+        <dilTable v-bind.sync="options1" ref="excelDom" @func="func">
+        </dilTable>
+        </el-tab-pane>
+        <!-- 已结算 -->
+        <el-tab-pane label="已结算" name="second">
+        <dilTable v-bind.sync="options2">
+        </dilTable>
+        </el-tab-pane>
+      </el-tabs>
+    </div>
+  </div>
+</template>
+
+<script>
+import { getCookie } from "@/utils/util.js";
+import { sjTime } from '@/utils/sharedJsFile';
+export default {
+  data(){
+    return{
+      startTime: null,
+      endTime: null,
+      totalNetWeight:null,
+      totalMoney:null,
+      //单价
+      Fee:null,
+      //加载
+      selectLineLoading:false,
+      input:"",
+      activeName:"first",
+      ssoId:null,
+      //详单Id
+      detailsId:null,
+      options1:{
+        // first请求数据的地址
+        requestUrl: "",
+      },
+      options2:{
+        // second请求数据的地址
+        requestUrl: "",
+      },
+      //是否打开修改详单地址弹出框
+      dialogFormVisible:false,
+      //原详单单价
+      originalPriceValue:null,
+      //新详单单价
+      newPriceValue:null,
+      //原详单地址
+      originalAddress:null,
+      //新详单地址
+      newAddress:null,
+      //新单价Id
+      priceId:null,
+      //是否打开运输单价的模态框
+      addressDrawer:false,
+      //运输单价的表格
+      Address: {
+        requestUrl: "/api/v1/ams/getAddressDeliveryAddress?apiId=255",
+        selectionType: "radio",
+      },
+      // addressText:null,
+      //缓存当前选中的运输单价
+      priceMap:{},
+      formLabelWidth: '125px'
+    }
+  },
+  created(){
+     this.options1GetRequestUrl();
+     this.options2GetRequestUrl();
+  },
+  methods:{
+    func(res){
+      console.log(res.list);
+      var totalWeight = 0;
+      var totalAllMoney = 0;
+      res.list.forEach(e => {
+        totalWeight = totalWeight + e.netWeightSecond
+        totalAllMoney = totalAllMoney + e.secondAmount
+      });
+      this.totalNetWeight = totalWeight.toFixed(2) + 't';
+      this.totalMoney = totalAllMoney.toFixed(2) + '元'
+    },
+    //未结算数据
+    options1GetRequestUrl(){
+    if(getCookie("orgCode") == "chengyunshang"){
+      this.ssoId=getCookie('userId');
+      this.options1.requestUrl = "/api/v1/bms/getInwardWeightDetailsOrder?apiId=462&orderType=10&detailStatus=0&carrierSsoId="+ getCookie('userId');
+    }else if(getCookie("orgCode") == "dagangadmin"||getCookie("orgCode")=="zidonghuabu"||getCookie("orgCode")=="wuliuchuyunzhongxin"){
+      this.options1.requestUrl = "/api/v1/bms/getInwardWeightDetailsOrder?apiId=462&orderType=10&detailStatus=0"
+    }else{
+      this.options1.requestUrl = "/api/v1/bms/getInwardWeightDetailsOrder?apiId=462&orderType=10&detailStatus=0&userId=" + getCookie("orgCode");  
+    }
+    },
+    //已结算数据
+    options2GetRequestUrl(){
+     if(getCookie("orgCode") == "chengyunshang"){
+      this.ssoId=getCookie('userId');
+      this.options2.requestUrl = "/api/v1/bms/getInwardWeightDetailsOrder?apiId=462&orderType=10&detailStatus=1&carrierSsoId="+ getCookie('userId');
+    }else if(getCookie("orgCode") == "dagangadmin"||getCookie("orgCode")=="zidonghuabu"||getCookie("orgCode")=="wuliuchuyunzhongxin"){
+      this.options2.requestUrl = "/api/v1/bms/getInwardWeightDetailsOrder?apiId=462&orderType=10&detailStatus=1"
+    }else{
+      this.options2.requestUrl = "/api/v1/bms/getInwardWeightDetailsOrder?apiId=462&orderType=10&detailStatus=1&userId=" + getCookie("orgCode");  
+    }
+    },
+     toInsert() {
+      this.$router.push("/insertCheckInventory");
+    },
+
+    onclick(){
+      let startTime = null;
+      let endTime = null;
+      if(this.startTime){
+        startTime = sjTime(this.startTime);
+      }
+      if(this.endTime){
+        endTime = sjTime(this.endTime);
+      }
+      if(startTime && endTime){
+        if(startTime < endTime){
+          if(getCookie("orgCode") == "dagangadmin" || getCookie("orgCode") == "zidonghuabu"||getCookie("orgCode")=="wuliuchuyunzhongxin"){
+          this.options1.requestUrl = "/api/v1/bms/getInwardWeightDetailsOrder?apiId=462&orderType=10&detailStatus=0" + "&startTime=" + startTime + "&endTime=" + endTime + "&i" +new Date();
+          this.options2.requestUrl = "/api/v1/bms/getInwardWeightDetailsOrder?apiId=462&orderType=10&detailStatus=1" + "&startTime=" + startTime + "&endTime=" + endTime + "&i" +new Date();
+          }else if(getCookie("orgCode") == "chengyunshang"){
+          this.options1.requestUrl = "/api/v1/bms/getInwardWeightDetailsOrder?apiId=462&orderType=10&detailStatus=0&carrierSsoId="+ getCookie('userId') + "&startTime=" + startTime + "&endTime=" + endTime + "&i" +new Date();
+          this.options2.requestUrl = "/api/v1/bms/getInwardWeightDetailsOrder?apiId=462&orderType=10&detailStatus=1&carrierSsoId="+ getCookie('userId') + "&startTime=" + startTime + "&endTime=" + endTime + "&i" +new Date();
+          }else{
+            this.options1.requestUrl = "/api/v1/bms/getInwardWeightDetailsOrder?apiId=462&orderType=10&detailStatus=0&userId=" + getCookie("orgCode") + "&startTime=" + startTime + "&endTime=" + endTime + "&i" +new Date();
+            this.options2.requestUrl = "/api/v1/bms/getInwardWeightDetailsOrder?apiId=462&orderType=10&detailStatus=1&userId=" + getCookie("orgCode") + "&startTime=" + startTime + "&endTime=" + endTime + "&i" +new Date();
+          }
+        }else{
+          this.startTime = null;
+          this.endTime = null;
+          this.$message.warning('开始时间要比结束时间早')
+        }
+      }else{
+
+      }
+    },
+    //运输订单点击浏览的事件
+    select(){
+      this.addressDrawer = true;
+    },
+    //运输单价模态窗口的框计算
+    selectAddressClick(){
+      this.Price.requestUrl = '/api/v1/ams/getAddressDeliveryAddress?apiId=255&con='+this.addressText;
+    },
+   
+  }
+}
+</script>
+
+<style lang="scss" scode>
+.steel_inbound{
+  .sache{
+    padding: 1.25rem 0.375rem;
+			.el-input {
+			width: 20%;
+			margin-right: 1.25rem;
+			}
+  }
+}
+</style>

+ 193 - 0
src/views/inward/components/inwardSettlement/timeDetailsWeight.vue

@@ -0,0 +1,193 @@
+// 计费详单
+<template>
+  <div class="steel_inbound">
+    <div class="sache">
+      <span>详单时间:</span>
+      <el-date-picker
+        v-model="startTime"
+        type="datetime"
+        placeholder="选择日期"
+      >
+      </el-date-picker>
+      <span>至</span>
+      <el-date-picker
+        v-model="endTime"
+        type="datetime"
+        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>
+    <span style="margin-left: 1rem;">合计时间:</span>
+      <el-input v-model="totalTime" :disabled="true" style="width: 140px;"></el-input>
+      <span style="margin-left: 1rem;">合计金额:</span>
+      <el-input v-model="totalMoney" :disabled="true" style="width: 100px;"></el-input>
+    </div>
+    <div class="table">
+      <el-tabs v-model="activeName">
+        <!-- 未结算 -->
+        <el-tab-pane label="未结算" name="first">
+        <dilTable v-bind.sync="options1" ref="excelDom" @func="func">
+        </dilTable>
+        </el-tab-pane>
+        <!-- 已结算 -->
+        <el-tab-pane label="已结算" name="second">
+        <dilTable v-bind.sync="options2">
+        </dilTable>
+        </el-tab-pane>
+      </el-tabs>
+    </div>
+
+  </div>
+</template>
+
+<script>
+import { sjTime } from '@/utils/sharedJsFile';
+import { getCookie } from '@/utils/util.js';
+export default {
+  data(){
+    return{
+      startTime: null,
+      endTime: null,
+      totalMoney:null,
+      totalTime:null,
+      //单价
+      Fee:null,
+      //加载
+      selectLineLoading:false,
+      input:"",
+      activeName:"first",
+      ssoId:null,
+      //详单Id
+      detailsId:null,
+      options1:{
+        // first请求数据的地址
+        requestUrl: "",
+      },
+      options2:{
+        // second请求数据的地址
+        requestUrl: "",
+      },
+      //是否打开修改详单地址弹出框
+      dialogFormVisible:false,
+      //原详单单价
+      originalPriceValue:null,
+      //新详单单价
+      newPriceValue:null,
+      //原详单地址
+      originalAddress:null,
+      //新详单地址
+      newAddress:null,
+      //新单价Id
+      priceId:null,
+      //是否打开运输单价的模态框
+      addressDrawer:false,
+      //运输单价的表格
+      Address: {
+        requestUrl: "/api/v1/ams/getAddressDeliveryAddress?apiId=255",
+        selectionType: "radio",
+      },
+      // addressText:null,
+      //缓存当前选中的运输单价
+      priceMap:{},
+      formLabelWidth: '125px',
+      tableTitle:'内转计时计费详单'
+    }
+  },
+  created(){
+     this.options1GetRequestUrl();
+     this.options2GetRequestUrl();
+  },
+  methods:{
+    //未结算数据
+    options1GetRequestUrl(){
+    if(getCookie("orgCode") == "chengyunshang"){
+      this.ssoId=getCookie('userId');
+      this.options1.requestUrl = "/api/v1/bms/getInwardWeightDetailsOrder?apiId=465&orderType=21&detailStatus=0&carrierSsoId="+ getCookie('userId');
+    }else if(getCookie("orgCode") == "dagangadmin"||getCookie("orgCode")=="zidonghuabu"||getCookie("orgCode")=="wuliuchuyunzhongxin"){
+      this.options1.requestUrl = "/api/v1/bms/getInwardWeightDetailsOrder?apiId=465&orderType=21&detailStatus=0"
+    }else{
+      this.options1.requestUrl = "/api/v1/bms/getInwardWeightDetailsOrder?apiId=465&orderType=21&detailStatus=0&userId=" + getCookie("orgCode");  
+    }
+    },
+    //已结算数据
+    options2GetRequestUrl(){
+     if(getCookie("orgCode") == "chengyunshang"){
+      this.ssoId=getCookie('userId');
+      this.options2.requestUrl = "/api/v1/bms/getInwardWeightDetailsOrder?apiId=465&orderType=21&detailStatus=1&carrierSsoId="+ getCookie('userId');
+    }else if(getCookie("orgCode") == "dagangadmin"||getCookie("orgCode")=="zidonghuabu"||getCookie("orgCode")=="wuliuchuyunzhongxin"){
+      this.options2.requestUrl = "/api/v1/bms/getInwardWeightDetailsOrder?apiId=465&orderType=21&detailStatus=1"
+    }else{
+      this.options2.requestUrl = "/api/v1/bms/getInwardWeightDetailsOrder?apiId=465&orderType=21&detailStatus=1&userId=" + getCookie("orgCode");  
+    }
+    },
+     toInsert() {
+      this.$router.push("/insertCheckInventory");
+    },
+    func(res){
+      console.log(res);
+      var totalAllTime = 0;
+      var totalAllMoney = 0;
+      res.list.forEach(e => {
+        totalAllTime = totalAllTime + e.resultTime
+        totalAllMoney = totalAllMoney + e.detailsAmount
+      });
+      this.totalMoney = totalAllMoney;
+      this.totalTime = totalAllTime;      
+    },
+    onclick(){
+      let startTime = null;
+      let endTime = null;
+      if(this.startTime){
+        startTime = sjTime(this.startTime);
+      }
+      if(this.endTime){
+        endTime = sjTime(this.endTime);
+      }
+      if(startTime && endTime){
+        if(startTime < endTime){
+          if(getCookie("orgCode") == "dagangadmin" || getCookie("orgCode") == "zidonghuabu"||getCookie("orgCode")=="wuliuchuyunzhongxin"){
+          this.options1.requestUrl = "/api/v1/bms/getInwardWeightDetailsOrder?apiId=465&orderType=21&detailStatus=0" + "&startTime=" + startTime + "&endTime=" + endTime + "&i" +new Date();
+          this.options2.requestUrl = "/api/v1/bms/getInwardWeightDetailsOrder?apiId=465&orderType=21&detailStatus=1" + "&startTime=" + startTime + "&endTime=" + endTime + "&i" +new Date();
+          }else if(getCookie("orgCode") == "chengyunshang"){
+          this.options1.requestUrl = "/api/v1/bms/getInwardWeightDetailsOrder?apiId=465&orderType=21&detailStatus=0&carrierSsoId="+ getCookie('userId') + "&startTime=" + startTime + "&endTime=" + endTime + "&i" +new Date();
+          this.options2.requestUrl = "/api/v1/bms/getInwardWeightDetailsOrder?apiId=465&orderType=21&detailStatus=1&carrierSsoId="+ getCookie('userId') + "&startTime=" + startTime + "&endTime=" + endTime + "&i" +new Date();
+          }else{
+            this.options1.requestUrl = "/api/v1/bms/getInwardWeightDetailsOrder?apiId=465&orderType=21&detailStatus=0&userId=" + getCookie("orgCode") + "&startTime=" + startTime + "&endTime=" + endTime + "&i" +new Date();
+            this.options2.requestUrl = "/api/v1/bms/getInwardWeightDetailsOrder?apiId=465&orderType=21&detailStatus=1&userId=" + getCookie("orgCode") + "&startTime=" + startTime + "&endTime=" + endTime + "&i" +new Date();
+          }
+        }else{
+          this.startTime = null;
+          this.endTime = null;
+          this.$message.warning('开始时间要比结束时间早')
+        }
+      }else{
+
+      }
+    },
+    //运输订单点击浏览的事件
+    select(){
+      this.addressDrawer = true;
+    },
+    //运输单价模态窗口的框计算
+    selectAddressClick(){
+      this.Price.requestUrl = '/api/v1/ams/getAddressDeliveryAddress?apiId=255&con='+this.addressText;
+    },
+   
+  }
+}
+</script>
+
+<style lang="scss" scode>
+.steel_inbound{
+  .sache{
+    padding: 1.25rem 0.375rem;
+			.el-input {
+			width: 20%;
+			margin-right: 1.25rem;
+			}
+  }
+}
+</style>

+ 4 - 2
src/views/inward/components/truckAppoint/addRequirement.vue

@@ -110,6 +110,7 @@ export default {
       disabled:false,
       //船名
       remark: null,
+      rangeId:null,
       //车辆表格数据
       selectionList: [],
       stateCarrier:null,
@@ -192,10 +193,10 @@ export default {
       console.log(this.purchaseOrgId)
       if(this.purchaseOrgId == 1) {
         this.purchaseOrgLable = "一厂"
-        console.log(this.purchaseOrgLable)
+        this.rangeId = 2
       }else{
         this.purchaseOrgLable = "二厂"
-        console.log(this.purchaseOrgLable)
+        this.rangeId = 3
       }  
     },
     getPurchaseOrderNo() {
@@ -347,6 +348,7 @@ export default {
           purchaseOrderId: this.purchaseOrderId,
           unloadPointId: this.unloadPointId,
           carrierId:this.carrierId,
+          rangeId:this.rangeId,
           userId:getCookie("orgCode")
         };
         console.log(map, map);

+ 11 - 2
src/views/inward/components/truckAppoint/addRequirement2.vue

@@ -581,16 +581,24 @@ export default {
     },
     // 新增
     makeSure() {
+      console.log(this.form.isMineral)
       this.disabled = true
       if(this.shipperId == null){
         this.$message.error("请选择用车单位")
         this.disabled = false
         return
-      }if(typeof(this.form.requirementTruckTime) == 'undefined'){
+      }
+      if(typeof(this.form.requirementTruckTime) == 'undefined'){
         this.$message.error("请输入用车时间")
         this.disabled = false
         return
-      }if(typeof(this.form.requirementType) == 'undefined'){
+      }
+      if(typeof(this.form.transRange) == 'undefined'){
+        this.$message.error("请选择运输起止范围")
+        this.disabled = false
+        return
+      }
+      if(typeof(this.form.requirementType) == 'undefined'){
         this.$message.error("请选择需求类型")
         this.disabled = false
         return
@@ -656,6 +664,7 @@ export default {
         requirementWorkEnvironment: this.form.requirementWorkEnvironment,
         requirementWorkType: this.form.requirementWorkType,
         requirementShipperId: this.shipperId,
+        rangeId:this.form.transRange,
         // 用车截日期
         DueTime:DueTime,
         // 用车类型Id

+ 0 - 1
src/views/inward/components/truckAppoint/plan.vue

@@ -242,7 +242,6 @@ export default {
   methods: {
     getAddPlan(){
         this.axios.post("/api/v1/uc/getPlanCount").then((res) =>{
-          console.log(res.data)
           this.addPlanCount = res.data
         })
     },

+ 7 - 1
src/views/inward/components/truckAppoint/requirementOther.vue

@@ -198,7 +198,13 @@ export default {
         this.$message.warning("请选择需求")
         return
       }
-      // 权限控制,判断用户是否属于轧钢厂下面的车间
+  	// 权限控制,判断用户是否属于炼铁厂下面的车间
+      for(let i=0;i<this.first.mapList.length;i++){
+        if((this.first.mapList[i].requirementType=="计时")&&(getCookie("orgCode")=="liantiechang-yuanliaochejian"||getCookie("orgCode")=="liantiechang-shaojiechejian"||getCookie("orgCode")=="liantiechang-dagaoluchejian"||getCookie("orgCode")=="liantiechang-xiaogaoluchejian"||getCookie("orgCode")=="liantiechang-rongjichejian"||getCookie("orgCode")=="liantiechang-weijianchejian")){
+          this.$message.warning("请选择联系炼铁厂相关负责人完成计时作业下发")
+          return
+        }
+      }                              
       this.$confirm("是否下发", "提示", {
         confirmButtonText: "确定",
         cancelButtonText: "取消",

+ 12 - 1
src/views/inward/router/index.js

@@ -152,7 +152,14 @@ import oldAreaRailScaleAddTruckLoad from '@/views/inward/components/inwardImport
 //内转厂内物资--新增汽车装货
 import inwardFactoryAddTruckLoad from '@/views/inward/components/inwardFactory/addTruckLoad.vue'
 
-
+//内转结算--纯内转计费详单
+import inwardDetailOrders from '../components/inwardSettlement/detailOrder.vue'
+//内转结算--采购内转计费详单
+import inwardPurDetailsOrders from '../components/inwardSettlement/purInwardDetailsOrder.vue'
+//内转结算--计时计费详单
+import inwardTimeDetailsOrders from '../components/inwardSettlement/timeDetailsWeight.vue'
+//内转结算--计数计费详单
+import inwardCountDetailsOrders from '../components/inwardSettlement/countDetailOrder.vue'
 
 
 Vue.use(Router)
@@ -240,6 +247,10 @@ const constantRouterMap = [{
     {path: 'updateTruckLoad/:resultId',name: 'updateTruckLoad',meta: {code: 'xtpzgl-yhgl'},component: updateTruckLoad}, 
     {path: 'oldAreaRailScaleAddTruckLoad',name: 'oldAreaRailScaleAddTruckLoad',meta: {code: 'xtpzgl-yhgl'},component: oldAreaRailScaleAddTruckLoad}, 
     {path: 'inwardFactoryAddTruckLoad',name: 'inwardFactoryAddTruckLoad',meta: {code: 'xtpzgl-yhgl'},component: inwardFactoryAddTruckLoad},
+    {path: 'inwardDetailOrders',name: 'inwardDetailOrders',meta: {code: 'xtpzgl-yhgl'},component: inwardDetailOrders},
+    {path: 'inwardCountDetailsOrders',name: 'inwardCountDetailsOrders',meta: {code: 'xtpzgl-yhgl'},component: inwardCountDetailsOrders},
+    {path: 'inwardTimeDetailsOrders',name: 'inwardTimeDetailsOrders',meta: {code: 'xtpzgl-yhgl'},component: inwardTimeDetailsOrders},
+    {path: 'inwardPurDetailsOrders',name: 'inwardPurDetailsOrders',meta: {code: 'xtpzgl-yhgl'},component: inwardPurDetailsOrders},
   ]
 }];
 

+ 58 - 0
src/views/sale/app.js

@@ -15,6 +15,64 @@ import VueApollo from 'vue-apollo'
 
 import apollo from '@/config/apolloConfig.js'
 
+
+import 'xe-utils' 
+import VXETable from 'vxe-table'
+import 'vxe-table/lib/style.css'
+Vue.use(VXETable)
+Vue.prototype.$XModal = VXETable.modal
+
+
+import AMap from 'vue-amap';
+
+Vue.use(AMap);
+  AMap.initAMapApiLoader({
+    key: 'eed46ea40bbcadbf8a9cdd5dc1a94642',
+    plugin: [
+      "AMap.Autocomplete", // 输入提示插件
+      "AMap.PlaceSearch", // POI搜索插件
+      "AMap.Scale", // 右下角缩略图插件 比例尺
+      "AMap.OverView", // 地图鹰眼插件
+      "AMap.ToolBar", // 地图工具条
+      "AMap.MapType", // 类别切换控件,实现默认图层与卫星图、实施交通图层之间切换的控制
+      "AMap.PolyEditor", // 编辑 折线多,边形
+      "AMap.CircleEditor", // 圆形编辑器插件
+      "AMap.Geolocation", // 定位控件,用来获取和展示用户主机所在的经纬度位置
+      "AMap.ControlBar"   // 缩放、尺寸控制器
+    ],
+    // 默认高德 sdk 版本为 1.4.4
+    v: '1.4.15',
+    uiVersion: '1.1.1'
+});
+
+import Share from 'vue-social-share'
+Vue.use(Share);
+
+import 'view-design/dist/styles/iview.css';
+import ViewUI from 'view-design';
+Vue.use(ViewUI);
+// import VueAMap from 'vue-amap'
+ 
+// Vue.use(VueAMap)
+ 
+// VueAMap.initAMapApiLoader({
+//   key: 'eed46ea40bbcadbf8a9cdd5dc1a94642',
+//   plugin: [//高德地图扩展插件(按需添加)
+//     'AMap.Autocomplete', // 输入提示插件
+//     'AMap.PlaceSearch', // POI搜索插件
+//     'AMap.Scale', // 右下角缩略图插件 比例尺
+//     'AMap.OverView', // 地图鹰眼插件
+//     'AMap.ToolBar', // 地图工具条
+//     'AMap.MapType', // 类别切换控件,实现默认图层与卫星图、实施交通图层之间切换的控制
+//     'AMap.PolyEditor', // 编辑 折线多,边形
+//     'AMap.CircleEditor', // 圆形编辑器插件
+//     'AMap.Geolocation' // 定位控件,用来获取和展示用户主机所在的经纬度位置
+//   ],
+  // uiVersion: '1.1', // ui库版本,不配置不加载,
+  // v: '2.0'
+// })
+
+
 // 关闭生产模式下给出的提示
 Vue.config.productionTip = false;
 

+ 434 - 0
src/views/sale/components/offSiteTransportation/inTransit.vue

@@ -0,0 +1,434 @@
+<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>
+     <label class="el-form-item__label" style="width: auto;">产品分类</label>
+      <el-select v-model="inputValue" placeholder="产品分类">
+        <el-option
+          v-for="item in inputValues"
+          :key="item.value"
+          :label="item.label"
+          :value="item.value">
+        </el-option>
+      </el-select>
+      <!-- <label class="el-form-item__label" style="width: auto;">产品分类</label>
+      <el-autocomplete
+        popper-class="my-autocomplete"
+        v-model="inputValue"
+        :fetch-suggestions="querySearch"
+        placeholder="请输入内容" 
+      >
+        <i class="el-icon-edit el-input__icon" slot="suffix"> </i>
+      </el-autocomplete> -->
+  </el-form-item>
+  <el-form-item>
+      <label class="el-form-item__label" style="width: auto;">车牌号</label>
+      <el-input v-model="capacityNumber1" placeholder="请输入内容"></el-input>
+  </el-form-item>
+  <el-form-item>
+      <label class="el-form-item__label" style="width: auto;">收货单位</label>
+      <el-input v-model="consigneeCompanyName1" placeholder="请输入内容"></el-input>
+  </el-form-item> 
+  <el-form-item>
+      <label class="el-form-item__label" style="width: auto;">承运单位</label>
+      <el-input v-model="carrierName" placeholder="请输入内容"></el-input>
+  </el-form-item> 
+   <el-form-item>
+     <label class="el-form-item__label" style="width: auto;">门岗名称</label>
+      <el-select v-model="gatepostName" placeholder="门岗名称">
+        <el-option
+          v-for="item in gatepostNames1"
+          :key="item.value"
+          :label="item.label"
+          :value="item.value">
+        </el-option>
+      </el-select>
+      <!-- <label class="el-form-item__label" style="width: auto;">门岗名称</label>
+       <el-autocomplete
+            popper-class="my-autocomplete"
+            v-model="gatepostName"
+            :fetch-suggestions="querySearch2"
+            placeholder="请输入内容" 
+          >
+            <i class="el-icon-edit el-input__icon" slot="suffix"> </i>
+          </el-autocomplete> -->
+  </el-form-item> 
+  <el-form-item>
+    <label class="el-form-item__label" style="width: auto;">报警类型</label>
+      <el-select v-model="exceptionType" placeholder="报警类型">
+        <el-option
+          v-for="item in exceptionTypes"
+          :key="item.value"
+          :label="item.label"
+          :value="item.value">
+        </el-option>
+      </el-select>
+      <!-- <label class="el-form-item__label" style="width: auto;">报警类型</label>
+       <el-autocomplete
+            popper-class="my-autocomplete"
+            v-model="exceptionType"
+            :fetch-suggestions="querySearch3"
+            placeholder="请输入内容" 
+          >
+            <i class="el-icon-edit el-input__icon" slot="suffix"> </i>
+          </el-autocomplete> -->
+  </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>
+  
+    <!-- 执行中 -->
+<el-tabs v-model="activeName" >
+    <el-tab-pane label="执行中" name="first">
+    <dilTable ref="tab" v-bind.sync="option">
+      <el-table-column fixed="right" label="操作" width="110">
+        <template slot-scope="scope">
+          <el-button @click="click(scope.row)" type="text" size="small" style="font-size: 17px"
+            >实时轨迹</el-button
+          >
+        </template>
+      </el-table-column>
+    </dilTable>
+    </el-tab-pane>
+    <!-- 已结束 -->
+      <el-tab-pane label="已结束" name="second">
+        <dilTable ref="tab2" v-bind.sync="option2">
+         <el-table-column fixed="right" label="操作" width="220">
+        <template slot-scope="scope">
+          <el-button @click="historyclick(scope.row)" type="text" size="small" style="font-size: 17px">历史轨迹</el-button>
+          <el-button @click="allDistanceclick(scope.row.orderNumber)" type="text" size="small" style="font-size: 17px">总距离</el-button>
+        </template>
+      </el-table-column>
+        </dilTable>
+      </el-tab-pane>
+      <!-- 有异常 -->
+      <el-tab-pane label="有异常" name="third">
+        <dilTable ref="tab3" v-bind.sync="option3">
+         <el-table-column fixed="right" label="操作" width="220">
+        <template slot-scope="scope">
+           <el-button @click="click(scope.row)" type="text" size="small" style="font-size: 17px"
+            >实时轨迹</el-button
+          >
+          <el-button @click="inTransitAlarmclick(scope.row.orderNumber)" type="text" size="small" style="font-size: 17px">运输报警</el-button>
+        </template>
+      </el-table-column>
+        </dilTable>
+      </el-tab-pane>
+    </el-tabs>
+    <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>
+    <!-- <div style="height: 100%">
+      <vxe-modal width="1237" height="731" v-model="value6" show-zoom resize>
+            <template #default>
+              
+              <inTransitOrderMileage v-bind.sync="mileOption"></inTransitOrderMileage>
+            </template>
+          </vxe-modal>
+    </div>
+     <div style="height: 100%">
+      <vxe-modal width="1237" height="731" v-model="value5" show-zoom resize>
+            <template #default>
+              
+              <inTransitAlarm v-bind.sync="alarmOption"></inTransitAlarm>
+            </template>
+          </vxe-modal>
+    </div> -->
+         
+  </div>
+</template>
+
+
+<script>
+import { sjTime } from "@/utils/sharedJsFile";
+
+//PathView组件注册
+// import PageTitle from "@/offSiteTransportation/mapTest.vue";
+import PathView from "./mapTest.vue"
+// import InTransitOrderMileage from "@/views/TMS/tms-offsite/inTransitOrderMileage.vue"
+// import inTransitAlarm from "@/views/TMS/tms-offsite/inTransitAlarm.vue"
+export default {
+  name: "inTransit",
+    components: { 
+      PathView,
+      // InTransitOrderMileage,
+      // inTransitAlarm
+  },
+  data() {
+    return {
+      
+      exceptionTypes:[{
+          value: '全部类型',
+          label: '全部类型'
+        }, {
+          value: '离线',
+          label: '离线'
+        },{
+          value: '停车',
+          label: '停车'
+        },{
+          value: '偏离',
+          label: '偏离'
+        }],
+        inputValues:[{
+          value: '螺纹钢',
+          label: '螺纹钢'
+        }, {
+          value: '微粉',
+          label: '微粉'
+        },{
+          value: '带钢',
+          label: '带钢'
+        },{
+          value: '钢坯',
+          label: '钢坯'
+        },{
+          value: '其他',
+          label: '其他'
+        }],
+       gatepostNames1: [{
+          value: '信钢北门出口',
+          label: '信钢北门出口'
+        }, {
+          value: '科创微粉出口',
+          label: '科创微粉出口'
+        },{
+          value: '象屿库',
+          label: '象屿库'
+        },{
+          value: '智同库',
+          label: '智同库'
+        },{
+          value: '中联厂出口',      
+          label: '中联厂出口'
+        }],
+      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/getInTransitTransportation?apiId=468",
+      },
+       option2: {
+        // 表格请求数据的地址
+        // requestUrl: "/api/v1/tms/getFinishTruckOrderInfo?apiId=160",
+      },
+      pathOption:{
+           orderNumber:'',
+        capacityNumber:'',
+      },
+      mileOption:{
+        orderNumber:''
+      },
+      alarmOption:{
+        orderNumber:''
+      },
+       option3: {
+        // 表格请求数据的地址
+        // requestUrl: "/api/v1/tms/getHaveAbnormalTruckOrderInfo?apiId=160",
+      }
+    };
+  },
+  mounted() {
+    console.log("nijfdsojfosafj")
+    this.restaurants = this.loadAll();
+    // this.onSearch();
+    
+  },
+  methods: {
+    showPathView(data){
+      this.dialogVisible=!this.dialogVisible;
+      this.selectOrderNumber=data.orderNumber;
+    },
+    querySearch(queryString, cb) {
+      var restaurants = this.restaurants;
+      var results = queryString
+        ? restaurants.filter(this.createFilter(queryString))
+        : restaurants;
+      cb(results);
+    },
+     querySearch2(queryString, cb) {
+      var restaurants = [
+        { value: "信钢北门出口"},
+        { value: "科创微粉出口"},
+        { value: "象屿库"},
+        { value: "智同库"},
+      ];
+      var results = queryString
+        ? restaurants.filter(this.createFilter(queryString))
+        : restaurants;
+      cb(results);
+    },
+     querySearch3(queryString, cb) {
+      var restaurants = [
+        { value: "离线"},
+        { value: "停车"},
+        { value: "偏离"},
+        { value: "全部类型"},
+      ];
+      var results = queryString
+        ? restaurants.filter(this.createFilter(queryString))
+        : restaurants;
+      cb(results);
+    },
+    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"){
+      //改变执行中条件
+      this.$refs.tab.setDataRequestQuery({"startTime":sjTime(this.dateValue[0]),
+                      "endTime": sjTime(this.dateValue[1]),
+                      "productClassification": this.inputValue,
+                      "capacityNumber1": this.capacityNumber1,
+                      "carrierName1":this.carrierName,
+                      "gatepostName1":this.gatepostName,
+                      "consigneeCompanyName1": this.consigneeCompanyName1});
+      }
+      if(this.activeName=="second"){
+      //改变已完成条件              
+      this.$refs.tab2.setDataRequestQuery({"startTime":sjTime(this.dateValue[0]),
+                      "endTime": sjTime(this.dateValue[1]),
+                      "productClassification": this.inputValue,
+                      "capacityNumber1": this.capacityNumber1,
+                      "carrierName1":this.carrierName,
+                      "gatepostName1":this.gatepostName,
+                      "consigneeCompanyName1": this.consigneeCompanyName1});
+      }
+      if(this.activeName=="third"){
+      //改变有异常条件              
+      this.$refs.tab3.setDataRequestQuery({"startTime":sjTime(this.dateValue[0]),
+                      "endTime": sjTime(this.dateValue[1]),
+                      "productClassification": this.inputValue,
+                      "capacityNumber1": this.capacityNumber1,
+                      "carrierName1":this.carrierName,
+                      "abnormalType":this.exceptionType=="全部类型"?"":this.exceptionType,
+                      "gatepostName1":this.gatepostName,
+                      "consigneeCompanyName1": this.consigneeCompanyName1});
+      }                              
+    },
+
+
+    //other
+    click(row) {
+      console.log(row,"row")
+        this.pathOption.orderNumber=row.orderNumber;
+        this.pathOption.capacityNumber=row.capacityNumber;
+        this.value7=true;
+      // this.$router.push("/offsite/pathView?orderNumber="+row.orderNumber+"&capacityNumber="+row.capacityNumber);
+    },
+    historyclick(row){
+      this.pathOption.orderNumber=row.orderNumber;
+        this.pathOption.capacityNumber=row.capacityNumber;
+        this.value7=true;
+      //this.$router.push("/offsite/pathView?orderNumber="+row.orderNumber+"&capacityNumber="+row.capacityNumber);
+    },
+    allDistanceclick(orderNumber){
+      //this.$router.push("/offsite/inTransitOrderMileage?orderNumber="+orderNumber);
+    
+      this.mileOption.orderNumber=orderNumber;
+      this.value6=true;
+    },
+    inTransitAlarmclick(orderNumber){
+      // this.$router.push("/offsite/inTransitAlarm?orderNumber="+orderNumber);
+      this.alarmOption.orderNumber=orderNumber;
+      this.value5=true;
+    },
+    },
+};
+</script>
+<style lang='scss' scoped>
+.homeworkPath {
+  .top {
+    padding: 20px 30px;
+  }
+}
+</style>

+ 495 - 0
src/views/sale/components/offSiteTransportation/mapTest.vue

@@ -0,0 +1,495 @@
+<template>
+    <div class="container">
+        <div id="amap-container"></div>
+         <div class="controller">
+             <div class="in_transit_information">
+                 <label class="item_details">起点:{{transportDetail.startPointName}}</label>
+                 <br/>
+                 <label class="item_details">终点:{{transportDetail.endPointName}}</label>
+                 <br/>
+             </div>
+             <div class="driving_information">  
+                <label class="item_details">时间:{{runRoute.gtm}}</label>
+                <br/>
+                <label class="item_details">车速:{{runRoute.spd}}千米/小时</label>
+                <br/>
+                <!-- <label class="item_details">当前位置:{{transportDetail.currentPointName}}</label>
+                <br/> -->
+                <!--控制条-->
+                <div class="map-control" v-show="isActual">
+                    <!--播放暂停按钮-->
+                    <Icon v-if="!isPlay" class="play-icon play"  type="ios-play" @click="isPlay=true;play();navgControl(playIcon)"/>
+                    <Icon v-else class="play-icon pause" type="ios-pause" @click="isPlay=false;stop();navgControl('pause')"/>
+                    <Icon class="play-icon quickly"  type="ios-play" @click="addIndex()"/>
+                    <!--已播放时间-->
+                    <!-- <span class="passed-time">{{passedTime}}</span> -->
+                    <!--进度条-->
+                    <div class="mySlider"><Slider class="map-slider" v-model="sliderVal" :tip-format="hideFormat" :step="0.0001"></Slider></div>
+                    <!--倍速-->
+                    <!-- <div class="map-times" @mouseenter="isTimesChoose=true" @mouseleave="isTimesChoose=false">
+                        <div class="times-show">倍速 {{times}}</div>
+                        <div class="choose-box">
+                        <ul >
+                            <li v-for="item in speedList" :key="item.value" :class="{active:times==item.value}" @click="changeSpeed(item.value)">{{item.label}}</li>
+                        </ul>
+                        </div>
+                    </div> -->
+                    <!--结束时间-->
+                    <!-- <span class="end-time">{{totalTime}}</span> -->
+                </div>
+             </div>
+         </div>
+    
+    </div>
+</template>
+
+<script>
+import AMapLoader from '@amap/amap-jsapi-loader';
+import { shallowRef } from '@vue/reactivity'
+import { Loading } from 'element-ui';
+import { lazyAMapApiLoaderInstance } from 'vue-amap';
+import Slider from './slider.vue'
+Vue.use(Slider)
+import AMapJS from "amap-js";
+import Vue from 'vue';
+export default {
+    name: "PathView",
+    props:{
+        orderNumber:'',
+        capacityNumber:'',
+        startTime:'',
+        endTime:'',
+    },
+    setup(){
+        const map = shallowRef(null);
+        return{
+            map,
+        }
+    },
+     watch:{
+        //监听车牌号变化
+        orderNumber:{
+            deep: true,
+            handler(val, oldVal) {
+                console.log(val)
+                this.initData(val);
+            }
+        }
+    },
+    data() {
+        return {
+            ///che
+            isTimesChoose:false,
+            isActual:true,
+            isPlay:true,
+            passedTime:"12:02:10",
+            sliderVal:0,
+            times:1,
+            totalTime:"11",
+            speedList:["1倍数","2倍数","3倍数"],
+            //已行驶轨迹
+            runRoute:
+            {
+                agl: "44",
+                gtm: "2022年03月09日 16:47:24",
+                hgt: "13",
+                lat: "32.906411535084985",
+                lon: "115.76177868692135",
+                mil: "429409.2",
+                spd: "17.0"
+            },
+            point:"",
+            pointNext:"",
+            loading : null,
+            navgtrSpeed:1,
+            //地图中心位置
+            centerPoint:{
+                    pointLat:"",
+                    pointLon:""
+            },
+            //自定义窗体信息
+            ctmarkes:{
+                lat:"33.015888071433764",
+                lon : "115.96995235868168",
+                title:"豫SE8888",
+                details:"安徽省阜阳市颍东区阜阳舜岳水泥公司,西北方向,155.1米"
+            },
+            //运输详情
+            transportDetail:{
+                //车牌号
+                capacityNumber:'',
+                //规划路线
+                estimateRoute:[
+                    {
+                        lat:"33.015888071433764",
+                        lon : "115.96995235868168"
+                    }
+                ],
+                //规划线路
+                estimatePath:[
+                    [
+                        114.03046212985384,
+                        32.49786984660489
+                    ],
+                    
+                ],
+                //已行驶轨迹
+                runRoute:[
+                      {
+                        agl: "44",
+                        gtm: "2022年03月09日 16:47:24",
+                        hgt: "13",
+                        lat: "32.906411535084985",
+                        lon: "115.76177868692135",
+                        mil: "429409.2",
+                        spd: "17.0"
+                    },
+                ],
+                runPath: [
+                    [
+                        114.03922119568348,
+                        32.49746162481379
+                    ],
+                ],
+                //当前位置
+                currentPointName:"中国达州市通川区",
+                //当前位置经纬度
+                currentPoint:{
+                    lat:"",
+                    lon:""
+                },
+                //起点位置
+                startPointName:"中国达州市通川区",
+                //起点位置经纬度
+                startPoint:{
+                    lon:"114.03922119568348",
+                    lat:"32.49746162481379"
+                },
+                //终点位置
+                endPointName:"中国成都萧山",
+                //终点位置经纬度   
+                endPoint:{
+                    lon:"115.96995737755431",
+                    lat:"33.01595479752097"
+                },
+                //自定义标记
+                content:[],
+                //异常位置
+                abnormalLocation:[],
+            
+            },
+            listPath:[
+                
+            ],
+            //组件
+            pathSimplifierIns:{},
+            pathNavigator:{}
+        };
+    },
+    created(){
+        let that=this;
+         that.initData(that.orderNumber)
+    },
+    mounted() {
+        
+    },
+    methods: {
+        geocoder(){
+            AMap.plugin('AMap.Geocoder', function() {
+            var geocoder = new AMap.Geocoder({
+                // city 指定进行编码查询的城市,支持传入城市名、adcode 和 citycode
+                city: '全球'
+            })
+            
+            var lnglat = [116.396574, 39.992706]
+            console.log("fsdaf")
+            geocoder.getAddress(lnglat, function(status, result) {
+                console.log(result)
+                if (status === 'complete' && result.info === 'OK') {
+                    // result为对应的地理位置详细信息
+                    console.log(result)
+                }
+            })
+            })
+        },
+        play(){
+            let that =this;
+            that.pathNavigator.resume();
+        },
+        stop(){
+            let that =this;
+            that.pathNavigator.pause();
+            this.geocoder()
+        },
+        addIndex(){
+            console.log("1123")
+
+            let that =this;
+            let increment=(that.listPath[0].runPath.length*0.1)
+            that.pathNavigator.start(((that.point+increment)%that.listPath[0].runPath.length))
+        },
+        ///che
+        navgControl(){
+
+        },
+        hideFormat(value){
+            let that=this;
+            that.sliderVal=value;
+        },
+        initData(orderNumber){
+            let that=this;
+             that.axios.post("/api/v1/otms/fullPath?orderNumber="+orderNumber).then((res) => {
+                that.listPath=res.data.startAndEndRoutes
+                // res.startAndEndRoutes.forEach((item,index)=>{
+                //     that.transportDetail.estimateRoute=item.estimateRoute;
+                     that.initMap();
+                // });
+            });
+        },
+        endline(){
+            let that=this;
+            that.initPolyline(that.listPath[0].estimatePath,"#FF0000");
+        },
+        //创建起点终点当前点
+        threeMarker(){
+            let that=this;
+            that.listPath.forEach((element,index) => {
+                //开始标记点
+                if(element.startPoint.lon!=''&&element.startPoint.lat!=''){
+                    that.initMarkes(20,35,require('@/assets/img/start.png'),element.startPoint.lon,element.startPoint.lat,'起点');
+                }
+                //结束标记点
+                if(element.endPoint.lon!=''&&element.endPoint.lat!=''){
+                    that.initMarkes(20,35,require('@/assets/img/end.png'),element.endPoint.lon,element.endPoint.lat,'终点');
+                }
+            });
+           
+        },
+        //初始化地图
+        initMap(){
+            lazyAMapApiLoaderInstance.load().then(() => {
+                let that=this;
+                that.map = new AMap.Map("amap-container",{  //设置地图容器id
+                    viewMode:"2D",    //是否为2D地图模式
+                    zoom:10,           //初始化地图级别
+                    center:[105.602725,37.076636], //初始化地图中心点位置
+                });
+                that.initPathSimplifier();
+                that.threeMarker();
+                console.log("that.listPath[0]",that.listPath)
+                that.initCustomMarkes(that.ctmarkes.title+"("+that.listPath[0].miled+")",that.listPath[0].currentPointName,that.listPath[0].currentPoint.lon,that.listPath[0].currentPoint.lat)
+                that.endline();
+            });
+        },
+        initCustomMarkes(title,details,lon,lat){
+             let that=this;
+            //自定义窗体内容
+            var content = [
+                "<div  style='top:1px;width: 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 字符串
+            });
+            // 打开信息窗体
+            infoWindow.open(that.map,[lon,lat]);
+        },
+        initPolyline(path,color){
+            let that=this;
+             //预计轨迹
+            var endLine = new AMap.Polyline({
+                map:that.map,
+                path: path,
+                isOutline: true,
+                outlineColor: color,
+                borderWeight: 0,
+                strokeColor: "#FF0000", 
+                strokeOpacity: 1,
+                strokeWeight: 5,
+                // 折线样式还支持 'dashed'
+                strokeStyle: "solid",
+                // strokeStyle是dashed时有效
+                strokeDasharray: [10, 5],
+                lineJoin: 'round',
+                lineCap: 'round',
+                zIndex: 50,
+            })
+            that.map.setFitView([[ endLine ]])
+        },
+        //创建简单的标记
+        initMarkes(weight,height,image,lon,lat,title){
+            let that=this;
+            //图标标记点
+            let pointicon = new AMap.Icon({
+                size: new AMap.Size(weight, height), // 图标尺寸
+                image: image, // Icon的图像
+                imageOffset: new AMap.Pixel(0,0), // 图像相对展示区域的偏移量,适于雪碧图等
+                imageSize: new AMap.Size(weight, height) // 根据所设置的大小拉伸或压缩图片
+            });
+            // 创建一个 Marker 实例:
+            var pointmarker = new AMap.Marker({
+                position: new AMap.LngLat(lon, lat),   // 经纬度对象,也可以是经纬度构成的一维数组[116.39, 39.9]
+                icon: pointicon, 
+                title: title
+            });
+            // 将创建的点标记添加到已有的地图实例:
+            that.map.add(pointmarker);
+        },
+        //创建轨迹和巡航器
+        initPathSimplifier() {
+            let that=this;
+            // ...你的操作
+            new AMapUI.load(['ui/misc/PathSimplifier'], (PathSimplifier) => {
+                if (!PathSimplifier.supportCanvas) {
+                    alert('当前环境不支持 Canvas!')
+                    return
+                }
+                //创建轨迹和巡航器
+                // 创建组件实例
+                that.pathSimplifierIns = new PathSimplifier({
+                    map: that.map,
+                    zIndex: 100, // 图层叠加顺序
+                    data: that.listPath, // 巡航路径
+                    // 获取巡航路径中的路径坐标数组
+                    getPath: (pathData, pathIndex) => {
+                        return pathData.runPath;
+                    },
+                    //鼠标悬浮停时显示消息
+                    getHoverTitle: function(pathData, pathIndex, pointIndex) {
+                        //返回鼠标悬停时显示的信息
+                        if (pointIndex >= 0) {
+                            if(pathData.runRoute[pointIndex].gtm!=='undefined'){
+                                 //鼠标悬停在某个轨迹节点上
+                                return pathData.runRoute[pointIndex].gtm + ',速度'+ pathData.runRoute[pointIndex].spd+'千米/小时,点:' + pointIndex + '/' + pathData.runPath.length;
+                            }
+                        }
+                    },
+                    //设置轨迹样式
+                    renderOptions: {
+                        //轨迹线的样式
+                        pathLineStyle: {
+                            strokeStyle: 'black',
+                            lineWidth: 6,
+                            dirArrowStyle: true
+                        }
+                    }
+                })
+                // 创建巡航器
+                that.pathNavigator = that.pathSimplifierIns.createPathNavigator(0, {
+                    loop: true, // 是否循环
+                    speed: 1000 ,// 速度(km/h)
+                    pathNavigatorStyle: {
+                        width: 20,
+                        height: 40,
+                        content:PathSimplifier.Render.Canvas.getImageContent( require('@/assets/img/smallcar.png'), onload, onerror),
+                        strokeStyle: null,
+                        fillStyle: null
+                    }
+                })
+                //开启巡航
+                that.pathNavigator.start()
+                
+                //开始事件
+                that.pathNavigator.on("start resume", function() {
+                    // that.navgtr._startTime = Date.now();
+                    // that.navgtr._startDist = this.getMovedDistance();
+                });
+                //暂停
+                that.pathNavigator.on("stop pause", function() {
+                    // that.navgtr._movedTime = Date.now() - that.navgtr._startTime;
+                    // that.navgtr._movedDist = this.getMovedDistance() - that.navgtr._startDist;
+                });
+                that.pathNavigator.on('move', function (data,value) {
+                    that.updateLable(value)
+                });
+            })
+        },
+        updateLable(value){
+            let that=this;
+            that.point=value.dataItem.pointIndex;
+            that.runRoute=value.dataItem.pathData.runRoute[that.point];
+            that.sliderVal=(value.dataItem.pointIndex/value.dataItem.pathData.runRoute.length)*100;
+        },
+        changeSpeed(value){
+            // console.log(value)
+            // let that=this;
+            // that.times=value;
+            
+        },
+        playIcon(){
+            console.log("nihoa")
+        }
+                  
+    }
+};
+</script>
+<style>
+.controller{
+    width: 250px; height: 260px; 
+    background: white;
+   position: absolute;z-index:99;top:0;left:0
+}
+.container{
+    width: 100%;
+	height: 100%;
+    
+}
+.item_details {
+    display: block;
+    margin-top: 20px;
+    position: relative;
+    left: 30px;
+    height: 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;
+}
+.play {
+    position: relative;
+    left: 28px;
+}
+.quickly
+{
+    float: right;
+    position: relative;
+    left: -20px;
+    top: 10px;
+}
+.pause {
+    position: relative;
+    left: 28px;
+}
+.passed-time{
+    position: relative;
+    left: 5px;
+}
+.end-time{
+    position: relative;
+    left: 5px;
+}
+.map-times {
+    position: relative;
+    background-color: red;
+    width: 40px;
+}
+
+
+
+</style>

+ 90 - 0
src/views/sale/components/offSiteTransportation/slider.vue

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

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

@@ -60,7 +60,7 @@ 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 distance from '../components/transport_excute/tms-offsite/distance.vue'
-import inTransit from '../components/transport_excute/tms-offsite/inTransit.vue'
+// import inTransit from '../components/transport_excute/offSiteTransportation/inTransit.vue'
 import inTransitAbnormal from '../components/transport_excute/tms-offsite/inTransitAbnormal.vue'
 import inTransitAlarm from '../components/transport_excute/tms-offsite/inTransitAlarm.vue'
 import inTransitOrderMileage from '../components/transport_excute/tms-offsite/inTransitOrderMileage.vue'
@@ -98,6 +98,10 @@ import bmsTruckInvoice from '../components/transportFreight/saleTruckSettlement/
 import bmsTruckStatement from '../components/transportFreight/saleTruckSettlement/bmsTruckStatement.vue'
 import getBmsTruckStatementOrder from '../components/transportFreight/saleTruckSettlement/getBmsTruckStatementOrder.vue'
 import getTransportResult from '../components/transportFreight/saleTruckSettlement/getTransportResult.vue'
+import mapTest from '../components/offSiteTransportation/mapTest.vue'
+import inTransit from '../components/offSiteTransportation/inTransit.vue'
+//测试数据
+
 Vue.use(Router)
 const constantRouterMap = [
 	{
@@ -200,10 +204,10 @@ const constantRouterMap = [
 		{path: 'bmsTruckStatement', name: 'bmsTruckStatement', meta: {code: 'xtpzgl-yhgl'}, component: bmsTruckStatement},
 		{path: 'getBmsTruckStatementOrder/:statementId', name: 'getBmsTruckStatementOrder', meta: {code: 'xtpzgl-yhgl'}, component: getBmsTruckStatementOrder},
 		{path: 'getTransportResult/:orderId', name: 'getTransportResult', meta: {code: 'xtpzgl-yhgl'}, component: getTransportResult},
+		{path: 'mapTest', name: 'mapTest', meta: {code: 'xtpzgl-yhgl'}, component: mapTest},
 	  ]
 	}
   ];
-  
   const router = new Router({
 	routes: constantRouterMap
   })

+ 3 - 2
src/views/statisticalReport/router/index.js

@@ -22,7 +22,7 @@ import getInstall from '../components/inwardReport/getInstall.vue'
 import getUnLoading from '../components/inwardReport/getUnLoading.vue'
 import purchaseMineral from '../components/purachaseMineral.vue'
 import inwardSporadicReport from '../components/sporadicReport/inwardSporadicReport.vue'
-
+import getInstall from '../components/inwardReport/getInstall.vue'
 
 Vue.use(Router)
 
@@ -49,7 +49,8 @@ const constantRouterMap = [
       {path: 'getInstall', name: 'getInstall', meta: {code: 'xtpzgl-yhgl'}, component: getInstall},
       {path: 'getUnLoading', name: 'getUnLoading', meta: {code: 'xtpzgl-yhgl'}, component: getUnLoading},
       {path: 'purchaseMineral', name: 'purchaseMineral', meta: {code: 'xtpzgl-yhgl'}, component: purchaseMineral},
-      {path: 'inwardSporadicReport', name: 'inwardSporadicReport', meta: {code: 'xtpzgl-yhgl'}, component: inwardSporadicReport}
+      {path: 'inwardSporadicReport', name: 'inwardSporadicReport', meta: {code: 'xtpzgl-yhgl'}, component: inwardSporadicReport},
+      {path: 'getInstall', name: 'getInstall', meta: {code: 'xtpzgl-yhgl'}, component: getInstall},
     ]
   }
 ];