Forráskód Böngészése

Merge branch 'master' of https://git.steerinfo.com/DAL-DAZHOU/icore-pass

Redeem 1 éve
szülő
commit
cf622375e6

+ 860 - 0
src/views/statisticalReport/components/salesLogisticsStatistics/mapTestFD.vue

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

+ 5302 - 0
src/views/statisticalReport/components/salesLogisticsStatistics/saleSteelReportsFD.vue

@@ -0,0 +1,5302 @@
+//钢材统计报表
+<template>
+  <div class="saleSteelReports">
+    <div class="tableTop">
+      <el-form :inline="true">
+        <el-form-item>
+          <el-select
+            v-model="screen"
+            placeholder="请选择需筛选的内容"
+            clearable
+            @change="changeScreen"
+            style="width:90px"
+          >
+            <el-option
+              v-for="item in options"
+              :key="item.value"
+              :label="item.label"
+              :value="item.value"
+            >
+            </el-option>
+          </el-select>
+          <el-input
+            style="width:150px"
+            v-model="input"
+            placeholder="请输入查询条件"
+            clearable
+          ></el-input>
+        </el-form-item>
+        <el-form-item>
+          <el-select
+            v-model="screen1"
+            placeholder="请选择需筛选的内容"
+            clearable
+            @change="changeScreen"
+            style="width:90px"
+          >
+            <el-option
+              v-for="item in options1"
+              :key="item.value"
+              :label="item.label"
+              :value="item.value"
+            >
+            </el-option>
+          </el-select>
+          <el-input
+            style="width:150px"
+            v-model="input1"
+            placeholder="请输入查询条件"
+            clearable
+          ></el-input>
+        </el-form-item>
+        <el-form-item>
+          <label class="el-form-item__label" style="width: auto;"
+            >订单日期:</label
+          >
+          <el-date-picker
+            v-model="startTime"
+            type="date"
+            placeholder="选择日期"
+            style="width:140px"
+            :picker-options="pickerOptions"
+          >
+          </el-date-picker>
+          <span>至</span>
+          <el-date-picker
+            v-model="endTime"
+            type="date"
+            placeholder="选择日期"
+            style="width:140px"
+            :picker-options="pickerOptions1"
+          >
+          </el-date-picker>
+          <el-button type="primary" class="btn" @click="onclick(filterMap)">
+            <i class="el-icon-search"></i>
+          </el-button>
+        </el-form-item>
+        <el-form-item>
+          <el-button type="primary" @click="clearFilter"
+            >清除所有筛选</el-button
+          >
+        </el-form-item>
+        <el-form-item>
+          <el-button type="primary" @click="refresh">
+            <i class="el-icon-refresh"></i>
+          </el-button>
+        </el-form-item>
+        <el-form-item>
+          <el-button type="primary" @click="checkTrans()"
+            ><i class="el-icon-truck"></i>轨迹</el-button
+          >
+        </el-form-item>
+      </el-form>
+    </div>
+    <div class="table">
+      <el-table
+        :data="visibleList"
+        :span-method="objectSpanMethod"
+        ref="tableRef"
+        border
+        style="width: 100%; margin-top: 20px"
+        id="salesLogisticsStat_saleSteelReports_table"
+        :height="maxHeight"
+        :max-height="maxHeight"
+        :row-class-name="tableRowClassName"
+        @cell-click="cellClik"
+        @cell-mouse-enter="cellMouse1"
+        @cell-mouse-leave="cellLeave1"
+        @row-click="rowClick"
+        :cell-style="cellStyle"
+        @filter-change="filterChange"
+        :key="saleSteelKey"
+        @select="selectOne"
+        @selection-change="handleSelectionChange()"
+        :header-cell-style="headCellStyle"
+      >
+        <el-table-column
+          type="selection"
+          width="50"
+          label="选择"
+          align="center"
+          column-key="select"
+          key="select"
+          v-if="
+            !notRoutList.includes('select') ||
+              !columnNoRoutList.includes('选择')
+          "
+        ></el-table-column>
+
+        <el-table-column
+          width="50"
+          label="序号"
+          align="center"
+          column-key="group"
+          key="group"
+          :resizable="false"
+          v-if="!columnNoRoutList.includes('序号')"
+        >
+          <template slot-scope="scope">{{ scope.row.group + 1 }}</template>
+        </el-table-column>
+        <el-table-column
+          prop="orderTime"
+          label="订单日期"
+          width="110px"
+          align="center"
+          column-key="orderTime"
+          key="orderTime"
+          show-overflow-tooltip
+          v-if="!columnNoRoutList.includes('订单日期')"
+        >
+        </el-table-column>
+        <el-table-column
+          prop="insertUploadTime"
+          column-key="insertUploadTime"
+          key="insertUploadTime"
+          label="订单上传时间"
+          width="120px"
+          show-overflow-tooltip
+          v-if="!columnNoRoutList.includes('订单上传时间')"
+        >
+        </el-table-column>
+
+        <el-table-column
+          prop="consigneeName"
+          label="客户"
+          width="250px"
+          align="center"
+          column-key="consigneeName"
+          key="consigneeName"
+          show-overflow-tooltip
+          v-if="!columnNoRoutList.includes('客户')"
+          :render-header="renderHeader"
+        >
+        </el-table-column>
+        <!-- <el-table-column
+          prop="areaName"
+          label="销售片区"
+          width="150px"
+          align="center"
+          column-key="saleAreaList"
+          :filters="filterSaleAreaList"
+        > -->
+        <!-- </el-table-column> -->
+        <el-table-column
+          prop="capacityNo"
+          column-key="capacityNo"
+          key="capacityNo"
+          label="车牌号"
+          align="center"
+          width="90px"
+          show-overflow-tooltip
+          v-if="!columnNoRoutList.includes('车牌号')"
+          :render-header="renderHeader"
+        >
+        </el-table-column>
+        <el-table-column
+          prop="materialName"
+          column-key="materialNameList"
+          key="materialNameList"
+          label="物资名称"
+          align="center"
+          width="150px"
+          v-if="!columnNoRoutList.includes('物资名称')"
+          :render-header="renderHeader"
+        >
+        </el-table-column>
+        <el-table-column
+          prop="materialSpe"
+          label="物资规格"
+          column-key="materialSpe"
+          key="materialSpe"
+          align="center"
+          width="120px"
+          v-if="!columnNoRoutList.includes('物资规格')"
+          :render-header="renderHeader"
+        >
+        </el-table-column>
+
+        <el-table-column
+          prop="addressPlace"
+          label="收货地址"
+          width="250px"
+          column-key="addressPlace"
+          key="addressPlace"
+          show-overflow-tooltip
+          v-if="!columnNoRoutList.includes('收货地址')"
+          :render-header="renderHeader"
+        >
+          <template slot-scope="scope">
+            <span
+              v-if="scope.row.addressPlace.indexOf('新地址') >= 0"
+              style="color:red"
+              >{{ scope.row.addressPlace }}</span
+            >
+            <span v-show="scope.row.addressPlace.indexOf('新地址') < 0">{{
+              scope.row.addressPlace
+            }}</span>
+          </template>
+        </el-table-column>
+        <el-table-column
+          prop="consigneeTel"
+          column-key="consigneeTel"
+          key="consigneeTel"
+          label="收货客户电话"
+          width="120px"
+          align="center"
+          v-if="!columnNoRoutList.includes('收货客户电话')"
+        >
+        </el-table-column>
+        <el-table-column
+          prop="saleRemark"
+          column-key="saleRemark"
+          key="saleRemark"
+          label="摘要"
+          width="180px"
+          show-overflow-tooltip
+          align="center"
+          v-if="!columnNoRoutList.includes('摘要')"
+          :render-header="renderHeader"
+        >
+        </el-table-column>
+        <el-table-column
+          prop="truckRemark"
+          column-key="truckRemark"
+          key="truckRemark"
+          label="备注"
+          width="150"
+          align="center"
+          :render-header="renderHeader"
+          show-overflow-tooltip
+          v-if="!columnNoRoutList.includes('备注')"
+        >
+        </el-table-column>
+        <el-table-column
+          prop="capacityTel"
+          column-key="capacityTel"
+          key="capacityTel"
+          label="司机电话"
+          width="120px"
+          align="center"
+          v-if="!columnNoRoutList.includes('司机电话')"
+        >
+        </el-table-column>
+        <el-table-column
+          prop="spellNum"
+          column-key="spellNum"
+          key="spellNum"
+          label="拼数"
+          width="120px"
+          align="center"
+          :filters="filterSpellNum"
+          v-if="!columnNoRoutList.includes('拼数')"
+        >
+        </el-table-column>
+
+        <el-table-column
+          prop="orderNo"
+          column-key="orderNo"
+          key="orderNo"
+          label="运输订单号"
+          width="180px"
+          align="center"
+          v-if="!columnNoRoutList.includes('运输订单号')"
+        >
+        </el-table-column>
+
+        <el-table-column
+          prop="shipperName"
+          column-key="shipperName"
+          key="shipperName"
+          label="发货单位"
+          width="170px"
+          align="center"
+          show-overflow-tooltip
+          v-if="!columnNoRoutList.includes('发货单位')"
+        >
+        </el-table-column>
+        <el-table-column
+          prop="saleOrderReceiveCustomer"
+          column-key="saleOrderReceiveCustomer"
+          key="saleOrderReceiveCustomer"
+          label="收款公司"
+          align="center"
+          width="200px"
+          v-if="!columnNoRoutList.includes('收款公司')"
+        >
+        </el-table-column>
+      </el-table>
+    </div>
+    <div>
+      <vxe-modal
+        width="80%"
+        height="80%"
+        v-model="isShow3"
+        show-footer
+        show-zoom
+        class="vxeModal"
+      >
+        <div class="demo-image__preview" v-for="(item, i) in srcList" :key="i">
+          <span>{{ item.title }}</span>
+          <el-image
+            :src="item.src"
+            fit="fill"
+            :previewSrcList="previewSrcList"
+            @click.prevent.right="receiveClick(item.src, '抵达')"
+          >
+            <div slot="error" class="image-slot">
+              <span>司机未上传图片</span>
+            </div>
+          </el-image>
+        </div>
+      </vxe-modal>
+      <vxe-modal width="80%" height="80%" v-model="isShow4" show-zoom>
+        <div class="demo-image__preview" v-for="(item, i) in srcList2" :key="i">
+          <el-image
+            :src="item.src"
+            fit="fill"
+            :previewSrcList="previewSrcList2"
+            @click.prevent.right="receiveClick(item.src, '签收')"
+          >
+            <div slot="error" class="image-slot">
+              <span>司机未上传图片</span>
+            </div>
+          </el-image>
+        </div>
+      </vxe-modal>
+    </div>
+    <div class="dialog">
+      <el-dialog
+        title="运单详情"
+        :visible.sync="centerDialogVisible"
+        width="90%"
+        center
+      >
+        <div class="steelMapClass">
+          <div class="steelMapClass1">
+            <div class="steelMapClass12">
+              <span>销售订单号:</span>
+              <span>{{ steelMap.saleOrderNo }}</span>
+            </div>
+            <div class="steelMapClass12">
+              <span>订单状态:</span>
+              <span>{{ steelMap.saleOrderStatus }}</span>
+            </div>
+            <div class="steelMapClass12">
+              <span>业务员:</span>
+              <span>{{ steelMap.saler }}</span>
+            </div>
+            <div class="steelMapClass12">
+              <span>客户:</span>
+              <span>{{ steelMap.consigneeName }}</span>
+            </div>
+            <div
+              class="steelMapClass13"
+              v-if="!notRoutList.includes('closeOrder')"
+            >
+              <span>车辆备注:</span>
+              <span
+                ><el-input
+                  v-model="steelMap.truckRemark"
+                  width="250px"
+                ></el-input
+              ></span>
+              <!-- <span>{{ steelMap.truckRemark }}</span> -->
+            </div>
+          </div>
+          <div class="steelMapClass2">
+            <div class="steelMapClass22">
+              <span>收货地址:</span>
+              <el-select
+                v-model="steelMap.addressProvince"
+                filterable
+                placeholder="请选择"
+                @change="onchangeProvince"
+                style="width:120px"
+                :disabled="notRoutList.includes('province')"
+              >
+                <el-option
+                  v-for="item in provinceList"
+                  :key="item.id"
+                  :label="item.addressProvince"
+                  :value="item.id"
+                ></el-option>
+              </el-select>
+              <el-select
+                v-model="steelMap.addressDistrict"
+                filterable
+                placeholder="请选择"
+                @change="onchangeCity"
+                style="width:120px"
+                :disabled="notRoutList.includes('city')"
+              >
+                <el-option
+                  v-for="item in cityList"
+                  :key="item.id"
+                  :label="item.addressDistrict"
+                  :value="item.id"
+                ></el-option>
+              </el-select>
+              <el-select
+                v-model="steelMap.addressTown"
+                filterable
+                placeholder="请选择"
+                @change="onchangeCounty"
+                style="width:120px"
+                :disabled="notRoutList.includes('country')"
+              >
+                <el-option
+                  v-for="item in countyList"
+                  :key="item.id"
+                  :label="item.addressTown"
+                  :value="item.id"
+                ></el-option>
+              </el-select>
+              <el-autocomplete
+                class="inline-input"
+                v-model="steelMap.place"
+                :fetch-suggestions="querySearch1"
+                placeholder="请输入具体收货地址"
+                :trigger-on-focus="false"
+                @select="handleSelect1"
+                style="width:250px"
+                :disabled="notRoutList.includes('place')"
+              >
+              </el-autocomplete>
+              <el-button
+                type="success"
+                circle
+                @click="addAddressClick"
+                v-if="!notRoutList.includes('addressClick')"
+                >提交</el-button
+              >
+            </div>
+            <div
+              class="steelMapClass23"
+              v-if="
+                (steelMap.carStatus == 4 ||
+                  steelMap.carStatus == 5 ||
+                  steelMap.carStatus == null) &&
+                  !notRoutList.includes('closeOrder')
+              "
+            >
+              <el-button type="danger" round @click="deleteEasEntryId"
+                >关闭运单</el-button
+              >
+            </div>
+            <div
+              class="steelMapClass23"
+              v-if="
+                steelMap.carStatus == 7 && !notRoutList.includes('closeOrder')
+              "
+            >
+              <el-button type="danger" round @click="reverseCloseOrder"
+                >反关闭运单</el-button
+              >
+            </div>
+            <div v-if="!notRoutList.includes('closeOrder')">
+              <el-button round @click="resetPrintNumber"
+                >重置打印次数</el-button
+              >
+              <div ref="qrCodeUrl" class="qrcode"></div>
+            </div>
+          </div>
+          <div class="steelMapClass3">
+            <div class="steelMapClass32">
+              <span>收货客户电话:</span>
+              <el-input
+                v-model="steelMap.consigneeTel"
+                style="width:150px"
+                :disabled="notRoutList.includes('consigeeTel')"
+              ></el-input>
+              <el-button
+                type="success"
+                circle
+                @click="updateconsigneeTel"
+                v-if="!notRoutList.includes('consigeeTel')"
+                >提交</el-button
+              >
+            </div>
+            <div class="steelMapClass33">
+              <span>承运商:</span>
+              <el-autocomplete
+                style="width:120px"
+                v-model="steelMap.carrierName"
+                :fetch-suggestions="querySearchCarrier"
+                placeholder="请输入承运商"
+                @select="handleSelectCarrier"
+                :disabled="notRoutList.includes('carrierName')"
+              >
+              </el-autocomplete>
+              <el-button
+                type="success"
+                circle
+                @click="updateTruckCarrierDebounce"
+                v-if="!notRoutList.includes('carrierName')"
+                >提交</el-button
+              >
+            </div>
+            <div class="steelMapClass33">
+              <span>车牌号:</span>
+              <el-autocomplete
+                style="width:120px"
+                v-model="steelMap.capacityNo"
+                :fetch-suggestions="querySearch"
+                placeholder="请输入车牌号"
+                @select="handleSelect()"
+                :disabled="
+                  notRoutList.includes('capacityNo') &&
+                    steelMap.capacityId != null &&
+                    steelMap.capacityNoFlag != null
+                "
+              ></el-autocomplete>
+              <el-button
+                type="success"
+                circle
+                @click="updateCapacityDebounce"
+                v-if="
+                  !(
+                    notRoutList.includes('capacityNo') &&
+                    steelMap.capacityId != null &&
+                    steelMap.capacityNoFlag != null
+                  )
+                "
+                >提交</el-button
+              >
+              <span v-show="orgCode != 'chengyunshang'">是否校验GPS:</span>
+              <el-switch
+                v-model="isCheckGPS"
+                v-show="orgCode != 'chengyunshang'"
+                :disabled="orgCode == 'chengyunshang'"
+              >
+              </el-switch>
+            </div>
+            <div class="steelMapClass33">
+              <span>司机电话:</span>
+              <el-input
+                style="width:120px"
+                v-model="steelMap.capacityTel"
+                placeholder="请输入电话号码"
+              ></el-input>
+              <el-button type="success" circle @click="updateDriverTel"
+                >提交</el-button
+              >
+            </div>
+          </div>
+          <div class="steelMapClass4">
+            <div class="steelMapClass42" v-if="steelMap.orderNo != null">
+              <span>运输订单号:</span>
+              <span>{{ steelMap.orderNo }}</span>
+            </div>
+            <div class="steelMapClass43">
+              <span>运单状态:</span>
+              <span>{{ steelMap.orderStatus }}</span>
+            </div>
+            <div
+              class="steelMapClass43"
+              v-if="steelMap.orderStatusTime != null"
+            >
+              <span>状态更新时间:</span>
+              <span>{{ steelMap.orderStatusTime }}</span>
+            </div>
+          </div>
+          <div class="steelMapClass9">
+            <div
+              class="steelMapClass92"
+              v-if="
+                steelMap.orderNo != null && !notRoutList.includes('closeOrder')
+              "
+            >
+              <el-form :inline="true">
+                <el-form-item>
+                  <el-input
+                    v-model="steelMap.remark"
+                    placeholder="填写备注"
+                    class="steelMapClass921"
+                    type="textarea"
+                    autosize
+                  >
+                    <!-- <template slot="prepend">备注</template>
+                <template slot="prefix">
+                  {{ steelMap.remark }}
+                </template> -->
+                  </el-input></el-form-item
+                >
+                <el-form-item>
+                  <el-button @click="openRemarkPic" type="primary"
+                    >备注图片</el-button
+                  >
+                </el-form-item>
+              </el-form>
+            </div>
+          </div>
+          <div class="steelMapClass5">
+            <div class="steelMapClass52" v-if="steelMap.arrivalAddress != null">
+              <span>抵达地址:</span>
+              <span>{{ steelMap.arrivalAddress }}</span>
+            </div>
+          </div>
+          <div class="steelMapClass6">
+            <div class="steelMapClass62" v-if="steelMap.receiptAddress != null">
+              <span>签收地址:</span>
+              <span>{{ steelMap.receiptAddress }}</span>
+            </div>
+          </div>
+        </div>
+        <div class="table1">
+          <el-table
+            :data="steelMap.mapList"
+            border
+            style="width: 100%; margin-top: 20px"
+            :span-method="objectSpanMethod1"
+          >
+            <el-table-column
+              prop="materialName"
+              label="物资名称"
+              align="center"
+              width="150px"
+            >
+            </el-table-column>
+            <el-table-column
+              prop="materialSpe"
+              label="物资规格"
+              align="center"
+              sortable
+            >
+            </el-table-column>
+            <el-table-column
+              prop="materialNum"
+              label="物资件数"
+              align="center"
+              width="200px"
+            >
+              <template slot-scope="scope">
+                <button
+                  type="primary"
+                  @click="scope.row.materialNumber--"
+                  style="height:40px"
+                  v-if="!notRoutList.includes('materialNum')"
+                >
+                  -
+                </button>
+                <input
+                  v-model="scope.row.materialNumber"
+                  style="width:40px;height: 40px;font-size:16px;line-height: 40px;text-align: center;"
+                  :disabled="notRoutList.includes('materialNum')"
+                />
+                <button
+                  type="primary"
+                  @click="scope.row.materialNumber++"
+                  style="height:40px"
+                  :disabled="scope.row.saleOrderStatus == 4"
+                  v-if="!notRoutList.includes('materialNum')"
+                >
+                  +
+                </button>
+                <el-button
+                  type="primary"
+                  @click="updateBillOrder(scope.row)"
+                  v-if="!notRoutList.includes('materialNum')"
+                  >提交</el-button
+                >
+              </template>
+            </el-table-column>
+            <el-table-column prop="grossWeight" label="毛重"> </el-table-column>
+            <el-table-column
+              prop="grossWeightTime"
+              label="毛重时间"
+              width="130px"
+            >
+            </el-table-column>
+            <el-table-column prop="tareWeight" label="皮重"> </el-table-column>
+            <el-table-column
+              prop="tareWeightTime"
+              label="皮重时间"
+              width="130px"
+            >
+            </el-table-column>
+            <el-table-column prop="netWeight" label="净重"> </el-table-column>
+            <el-table-column prop="loadTime" label="装货时间" width="130px">
+            </el-table-column>
+
+            <el-table-column prop="saleRemarkByasm" label="摘要" width="100px">
+            </el-table-column>
+            <el-table-column
+              prop="closeEntryId"
+              label="金蝶分录ID"
+              width="100px"
+            >
+            </el-table-column>
+            <el-table-column
+              label="分录操作"
+              fixed="right"
+              width="120px"
+              align="center"
+            >
+              <template slot-scope="scope">
+                <el-button
+                  type="text"
+                  size="small"
+                  @click="closeEasEntryId(scope.row)"
+                  v-if="
+                    scope.row.deletedStatus == null &&
+                      !notRoutList.includes('closeEntry')
+                  "
+                  >关闭分录</el-button
+                >
+                <el-button
+                  type="text"
+                  size="small"
+                  @click="adverseCloseSaleMaterial(scope.row)"
+                  v-if="
+                    scope.row.deletedStatus != null &&
+                      !notRoutList.includes('closeEntry')
+                  "
+                  >反关闭分录</el-button
+                >
+              </template>
+            </el-table-column>
+          </el-table>
+        </div>
+        <span slot="footer" class="dialog-footer">
+          <el-button @click="centerDialogVisible = false">返 回</el-button>
+          <el-button @click="submitSteelDebounce(steelMap)">确定</el-button>
+        </span>
+        <div>
+          <vxe-modal
+            width="549px"
+            height="731px"
+            v-model="isShow"
+            show-zoom
+            show-footer
+            class="vxeModal"
+            title="抵达上传照片"
+          >
+            <div class="demo-image__preview">
+              <div
+                class="demo-image__preview"
+                v-for="(item, index) in srcList"
+                :key="index"
+              >
+                <span>{{ item.title }}</span>
+                <el-image
+                  style="height:731px;text-align:center"
+                  :src="item.src"
+                >
+                  <div slot="error" class="image-slot">
+                    <span>司机未上传抵达图片</span>
+                  </div>
+                </el-image>
+              </div>
+            </div>
+          </vxe-modal>
+          <vxe-modal
+            width="549px"
+            height="731px"
+            v-model="isShow2"
+            show-zoom
+            show-footer
+            title="签收上传照片"
+          >
+            <div
+              class="demo-image__preview"
+              v-for="(item, index) in srcList2"
+              :key="index"
+            >
+              <span>{{ item.title }}</span>
+              <el-image style="height:731px;text-align:center" :src="item.src">
+                <div slot="error" class="image-slot">
+                  <span>司机未上传签收图片</span>
+                </div>
+              </el-image>
+            </div>
+          </vxe-modal>
+        </div>
+      </el-dialog>
+    </div>
+    <div style="height: 100%">
+      <vxe-modal
+        width="1237"
+        height="731"
+        v-model="value7"
+        show-zoom
+        resize
+        title="轨迹查询"
+      >
+        <template #default>
+          <PathView v-bind.sync="pathOption"></PathView>
+        </template>
+      </vxe-modal>
+    </div>
+    <div style="height:100%">
+      <vxe-modal
+        width="1237"
+        height="731"
+        v-model="value8"
+        show-zoom
+        resize
+        title="实时路径"
+        ><currentLocation :carNumber="carNumber"></currentLocation
+      ></vxe-modal>
+    </div>
+    <el-dialog
+      title="抵达签收"
+      :visible.sync="arrivalReceiving"
+      :before-close="closeUpload"
+    >
+      <el-form style="margin-left:20%">
+        <el-form-item label="车牌号码">
+          <el-input
+            v-model="capacityNumber"
+            disabled
+            style="width:300px"
+          ></el-input>
+        </el-form-item>
+        <el-form-item label="签收地址">
+          <el-input
+            v-model="location"
+            style="width:400px"
+            :disabled="orgCode != 'wuliuyunshubu'"
+          ></el-input>
+        </el-form-item>
+        <el-form-item label="抵达时间">
+          <el-date-picker
+            v-model="arrivalTime"
+            type="datetime"
+            :disabled="orgCode != 'wuliuyunshubu'"
+            placeholder="选择日期时间"
+          >
+          </el-date-picker>
+        </el-form-item>
+        <el-form-item label="签收时间">
+          <el-date-picker
+            v-model="receiptTime"
+            type="datetime"
+            :disabled="orgCode != 'wuliuyunshubu'"
+            placeholder="选择日期时间"
+          >
+          </el-date-picker>
+        </el-form-item>
+        <el-form-item label="抵达图片(车头、满货箱)" style="">
+          <el-upload
+            ref="arrival"
+            list-type="picture-card"
+            :file-list="arriavlList"
+            action="/api/v1/otms/addtmstruckArrivalResult"
+            :limit="12"
+            :on-change="fileChange1"
+            :on-remove="fileChange1"
+            :on-preview="handlePictureCardPreview"
+            :on-exceed="exceed"
+            accept=".jpg,.jpeg,.png,.gif,.bmp,.JPG,.JPEG,.PBG,.GIF,.BMP,.PDF"
+            :auto-upload="false"
+          >
+            <i class="el-icon-plus"></i>
+          </el-upload>
+        </el-form-item>
+        <el-form-item label="签收图片(空货箱、质保书、签收单)">
+          <el-upload
+            ref="receive"
+            list-type="picture-card"
+            :file-list="receiveList"
+            action="null"
+            :limit="11"
+            :on-change="fileChange2"
+            :on-remove="fileChange2"
+            :on-preview="handlePictureCardPreview"
+            :on-exceed="exceed"
+            accept=".jpg,.jpeg,.png,.gif,.bmp,.JPG,.JPEG,.PBG,.GIF,.BMP,.PDF"
+            :auto-upload="false"
+          >
+            <i class="el-icon-plus"></i>
+          </el-upload>
+        </el-form-item>
+      </el-form>
+      <el-button
+        type="primary"
+        @click="arrivalAndReceive"
+        :loading="isLoading"
+        style="margin-left:40%"
+        >确定</el-button
+      >
+    </el-dialog>
+    <el-dialog
+      title="备注图片(图片暂存后需要点击全局确定才会保存)"
+      :visible.sync="remarkPic"
+      :before-close="closeUpload2"
+    >
+      <el-form style="margin-left:20%">
+        <el-form-item>
+          <el-upload
+            ref="remarkPic"
+            list-type="picture-card"
+            :file-list="remarkPicList"
+            action="null"
+            :limit="11"
+            :on-change="fileChange3"
+            :on-remove="fileChange3"
+            :on-preview="handlePictureCardPreview"
+            :on-exceed="exceed"
+            accept=".jpg,.jpeg,.png,.gif,.bmp,.JPG,.JPEG,.PBG,.GIF,.BMP,.PDF"
+            :auto-upload="false"
+          >
+            <i class="el-icon-plus"></i>
+          </el-upload>
+        </el-form-item>
+      </el-form>
+      <el-button
+        type="primary"
+        @click="uploadRemarkPic"
+        :loading="isLoading"
+        style="margin-left:40%"
+        >暂存</el-button
+      >
+    </el-dialog>
+    <el-dialog :visible.sync="dialogVisible" width="80%">
+      <img width="100%" :src="dialogImageUrl" alt="" />
+    </el-dialog>
+    <el-dialog :visible.sync="batchCarrierVisible" width="55%" center>
+      <div class="batchCarrierClass">
+        <el-form :inline="true">
+          <span>批量授权承运商</span>
+          <el-form-item>
+            <el-autocomplete
+              style="width:250px"
+              v-model="batchCarrierName"
+              :fetch-suggestions="querySearchCarrier"
+              placeholder="请输入承运商"
+              @select="handleSelectCarrier"
+            >
+            </el-autocomplete>
+          </el-form-item>
+          <el-form-item>
+            <el-button @click="batchCarrierVisible = false">取 消</el-button>
+            <el-button type="primary" @click="batchCarrierMakeSure"
+              >确 定</el-button
+            >
+          </el-form-item>
+        </el-form>
+      </div>
+      <div class="batchCapacityClass">
+        <el-form :inline="true">
+          <span>批量修改车牌号</span>
+          <el-form-item>
+            <el-autocomplete
+              style="width:250px"
+              v-model="capacityNo"
+              :fetch-suggestions="querySearch"
+              placeholder="请输入车牌号"
+              @select="batchCapacitySelect"
+            >
+            </el-autocomplete>
+          </el-form-item>
+          <el-form-item>
+            <el-button @click="batchCarrierVisible = false">取 消</el-button>
+            <el-button type="primary" @click="batchEditCapacity"
+              >确 定</el-button
+            >
+          </el-form-item>
+        </el-form>
+      </div>
+      <div class="steelMapClass22">
+        <span>收货地址:</span>
+        <el-select
+          v-model="steelMap.addressProvince"
+          filterable
+          placeholder="请选择"
+          @change="onchangeProvince"
+          style="width:120px"
+          :disabled="notRoutList.includes('province')"
+        >
+          <el-option
+            v-for="item in provinceList"
+            :key="item.id"
+            :label="item.addressProvince"
+            :value="item.id"
+          ></el-option>
+        </el-select>
+        <el-select
+          v-model="steelMap.addressDistrict"
+          filterable
+          placeholder="请选择"
+          @change="onchangeCity"
+          style="width:120px"
+          :disabled="notRoutList.includes('city')"
+        >
+          <el-option
+            v-for="item in cityList"
+            :key="item.id"
+            :label="item.addressDistrict"
+            :value="item.id"
+          ></el-option>
+        </el-select>
+        <el-select
+          v-model="steelMap.addressTown"
+          filterable
+          placeholder="请选择"
+          @change="onchangeCounty"
+          style="width:120px"
+          :disabled="notRoutList.includes('country')"
+        >
+          <el-option
+            v-for="item in countyList"
+            :key="item.id"
+            :label="item.addressTown"
+            :value="item.id"
+          ></el-option>
+        </el-select>
+        <el-autocomplete
+          class="inline-input"
+          v-model="steelMap.place"
+          :fetch-suggestions="querySearch1"
+          placeholder="请输入具体收货地址"
+          :trigger-on-focus="false"
+          @select="handleSelect1"
+          style="width:250px"
+          :disabled="notRoutList.includes('place')"
+        >
+        </el-autocomplete>
+        <el-button
+          type="success"
+          circle
+          @click="batchUpdateCarAddress"
+          v-if="!notRoutList.includes('addressClick')"
+          >提交</el-button
+        >
+      </div>
+      <div class="batchCapacityClass" style="margin:30px">
+        <el-form :inline="true">
+          <el-form-item>
+            <span>批量修改收货客户电话:</span>
+            <el-input
+              v-model="consigneeTel"
+              style="width:150px"
+              :disabled="notRoutList.includes('consigeeTel')"
+            ></el-input>
+            <el-button
+              type="success"
+              circle
+              @click="batchUpdateconsigneeTel"
+              v-if="!notRoutList.includes('consigeeTel')"
+              >提交</el-button
+            >
+          </el-form-item>
+        </el-form>
+      </div>
+    </el-dialog>
+    <el-dialog
+      title="切换列的显示与隐藏"
+      :visible.sync="columnShowDialog"
+      width="50%"
+      center
+      class="columnShowDialogClass"
+    >
+      <el-tabs
+        v-model="schemeMap.activeName"
+        type="card"
+        editable
+        @edit="handleTabsEdit"
+        @tab-click="columnShowTabClick"
+        tab-position="left"
+      >
+        <el-tab-pane
+          :key="index"
+          v-for="(item, index) in schemeMap.schemeList"
+          :label="item.title"
+          :name="item.name"
+        >
+          <el-form :inline="true">
+            <el-form-item>
+              <div style="border:2px,solid,green">
+                <div
+                  style="margin-left: 50%;margin-bottom: 15px;font-size: 16px;"
+                >
+                  {{ schemeMap.activeName }}
+                </div>
+                <el-transfer
+                  style="text-align: left; display: inline-block"
+                  v-model="item.columnHiddenData"
+                  :data="item.columnAllData"
+                  :titles="['显示的列', '隐藏的列']"
+                  :button-texts="['至显示列', '至隐藏列']"
+                ></el-transfer>
+              </div>
+            </el-form-item>
+          </el-form>
+          <el-form :inline="true">
+            <el-form-item>
+              <el-button @click="columnShowDialog = false">取 消</el-button>
+              <el-button type="primary" @click="columnShowOperation(item)"
+                >启用</el-button
+              >
+            </el-form-item>
+          </el-form>
+        </el-tab-pane>
+      </el-tabs>
+    </el-dialog>
+    <div class="dialog">
+      <el-dialog
+        :visible.sync="exceptionHandleVisible"
+        width="90%"
+        center
+        title="异常处理"
+      >
+        <div class="exceptionHandleClass">
+          <span>新增件数,修改规格,加拼数</span>
+        </div>
+        <div class="steelMapClass">
+          <div class="steelMapClass1">
+            <div class="steelMapClass12">
+              <span>销售订单号:</span>
+              <span>{{ steelMap.saleOrderNo }}</span>
+            </div>
+            <div class="steelMapClass12">
+              <span>订单状态:</span>
+              <span>{{ steelMap.saleOrderStatus }}</span>
+            </div>
+            <div class="steelMapClass12">
+              <span>业务员:</span>
+              <span>{{ steelMap.saler }}</span>
+            </div>
+            <div class="steelMapClass12">
+              <span>客户:</span>
+              <span>{{ steelMap.consigneeName }}</span>
+            </div>
+          </div>
+          <div class="steelMapClass2">
+            <div class="steelMapClass22">
+              <span>收货地址:</span>
+              <span>{{ steelMap.addressPlace }}</span>
+            </div>
+          </div>
+          <div class="steelMapClass3">
+            <div class="steelMapClass32">
+              <span>收货客户电话:</span>
+              <span>{{ steelMap.consigneeTel }}</span>
+            </div>
+            <div class="steelMapClass33" v-if="steelMap.carrierName">
+              <span>承运商:</span>
+              <span>{{ steelMap.carrierName }}</span>
+            </div>
+            <div class="steelMapClass33" v-if="steelMap.capacityNo">
+              <span>车牌号:</span>
+              <span>{{ steelMap.capacityNo }}</span>
+            </div>
+            <div class="steelMapClass33" v-if="steelMap.capacityTel != null">
+              <span>司机电话:</span>
+              <span>{{ steelMap.capacityTel }}</span>
+            </div>
+          </div>
+          <div class="steelMapClass4">
+            <div class="steelMapClass42" v-if="steelMap.orderNo != null">
+              <span>运输订单号:</span>
+              <span>{{ steelMap.orderNo }}</span>
+            </div>
+            <div class="steelMapClass43">
+              <span>运单状态:</span>
+              <span>{{ steelMap.orderStatus }}</span>
+            </div>
+            <div
+              class="steelMapClass43"
+              v-if="steelMap.orderStatusTime != null"
+            >
+              <span>状态更新时间:</span>
+              <span>{{ steelMap.orderStatusTime }}</span>
+            </div>
+            <div class="steelMapClass43" v-if="steelMap.orderNo != null">
+              <span>备注:</span>
+              <span>{{ steelMap.remark }}</span>
+            </div>
+          </div>
+        </div>
+        <div class="table1">
+          <el-table
+            :data="steelMap.mapList"
+            border
+            style="width: 100%; margin-top: 20px"
+            :span-method="objectSpanMethod2"
+          >
+            <el-table-column
+              prop="materialName"
+              label="物资名称"
+              align="center"
+              width="180px"
+            >
+              <template slot-scope="scope">
+                <el-input
+                  v-model="scope.row.materialName"
+                  :disabled="scope.row.netWeight != null"
+                >
+                </el-input>
+              </template>
+            </el-table-column>
+            <el-table-column
+              prop="materialSpecification"
+              label="物资规格"
+              align="center"
+              sortable
+            >
+              <template slot-scope="scope">
+                <el-input
+                  v-model="scope.row.materialSpecification"
+                  :disabled="scope.row.netWeight != null"
+                ></el-input>
+              </template>
+            </el-table-column>
+            <el-table-column
+              prop="materialModel"
+              label="物资型号"
+              align="center"
+              width="150"
+              sortable
+            >
+              <template slot-scope="scope">
+                <el-input
+                  v-model="scope.row.materialModel"
+                  :disabled="scope.row.netWeight != null"
+                ></el-input>
+              </template>
+            </el-table-column>
+            <el-table-column
+              prop="materialNumber"
+              label="物资件数"
+              align="center"
+              width="200px"
+            >
+              <template slot-scope="scope">
+                <button
+                  type="primary"
+                  @click="scope.row.materialNumber--"
+                  style="height:40px"
+                  :disabled="scope.row.netWeight != null"
+                >
+                  -
+                </button>
+                <input
+                  v-model="scope.row.materialNumber"
+                  style="width:40px;height: 40px;font-size:16px;line-height: 40px;text-align: center;"
+                  :disabled="scope.row.netWeight != null"
+                />
+                <button
+                  type="primary"
+                  @click="scope.row.materialNumber++"
+                  style="height:40px"
+                  :disabled="scope.row.netWeight != null"
+                >
+                  +
+                </button>
+              </template>
+            </el-table-column>
+            <el-table-column prop="steelMeters" label="米数" align="center">
+              <template slot-scope="scope">
+                <el-input
+                  v-model="scope.row.steelMeters"
+                  :disabled="scope.row.netWeight != null"
+                ></el-input>
+              </template>
+            </el-table-column>
+            <el-table-column prop="grossWeight" label="毛重"> </el-table-column>
+            <el-table-column
+              prop="grossWeightTime"
+              label="毛重时间"
+              width="130px"
+            >
+            </el-table-column>
+            <el-table-column prop="tareWeight" label="皮重"> </el-table-column>
+            <el-table-column
+              prop="tareWeightTime"
+              label="皮重时间"
+              width="130px"
+            >
+            </el-table-column>
+            <el-table-column prop="netWeight" label="净重"> </el-table-column>
+            <el-table-column prop="loadTime" label="装货时间" width="130px">
+            </el-table-column>
+            <el-table-column
+              prop="closeEntryId"
+              label="金蝶分录ID"
+              width="100px"
+            >
+            </el-table-column>
+            <el-table-column fixed="right" label="异常操作" width="200">
+              <template slot-scope="scope">
+                <el-button
+                  @click.native.prevent="
+                    deleteRow(scope.$index, steelMap.mapList)
+                  "
+                  type="text"
+                  icon="el-icon-close"
+                  size="big"
+                  v-if="scope.row.netWeight == null"
+                ></el-button>
+                <el-button
+                  @click.native.prevent="copyRowflu(scope.$index, scope.row)"
+                  type="text"
+                  size="big"
+                  >新增一拼</el-button
+                >
+                <el-button
+                  @click.native.prevent="
+                    linkageDeleteTransportOrder(scope.row, steelMap)
+                  "
+                  type="text"
+                  size="big"
+                  v-if="
+                    isShowOperate &&
+                      scope.row.netWeight != null &&
+                      scope.row.netWeight != ''
+                  "
+                  >删除计量实绩</el-button
+                >
+              </template>
+            </el-table-column>
+          </el-table>
+        </div>
+        <div class="exceptionHandleClass">
+          <el-button @click="exceptionHandleVisible = false">取 消</el-button>
+          <el-button type="primary" @click="exceptionHandleMakeSure"
+            >确 定</el-button
+          >
+        </div>
+      </el-dialog>
+      <el-dialog
+        :visible.sync="isShowSaleLog"
+        width="90%"
+        center
+        title="操作日志"
+      >
+        <el-form>
+          <el-form-item label="请输入查询:">
+            <el-input
+              v-model="optionSaleLog.requestQuery.con"
+              style="width:300px"
+            ></el-input>
+          </el-form-item>
+        </el-form>
+        <dil-table v-bind.sync="optionSaleLog"></dil-table>
+      </el-dialog>
+    </div>
+  </div>
+</template>
+
+<script>
+import { sjTime, isVehicleNumber } from '@/utils/sharedJsFile'
+import { getCookie } from '@/utils/util.js'
+import PathView from './mapTestFD.vue'
+import currentLocation from './currentLocation.vue'
+import { downloadFile, creatImageFile } from '@/utils/base64ToBlob.js'
+import Qrcode from 'qrcodejs2'
+export default {
+  components: {
+    PathView,
+    currentLocation,
+    Qrcode
+  },
+  data() {
+    const generateStartDate = _ => {
+      let startDate = new Date()
+      console.log(startDate, 'generateStartDate')
+      if (
+        new Date(startDate.getTime() - 86400000).getMonth() ===
+          new Date(startDate.getTime() - 8 * 60 * 60 * 1000).getMonth() &&
+        new Date(startDate.getTime() - 86400000).getDate() ===
+          new Date(startDate.getTime() - 8 * 60 * 60 * 1000).getDate()
+      ) {
+        startDate = new Date(startDate.getTime() - 86400000)
+      }
+      return startDate
+    }
+    return {
+      columnShowDialog: false,
+      toggleRowIds: [],
+      capacityNo: null,
+      capacityId: null,
+      consigneeTel: null,
+      batchCapacityList: [],
+      batchCapacityVisible: false,
+      isShowSaleLog: false,
+      optionSaleLog: {
+        maxHeight: 400,
+        requestUrl: '/api/v1/ams/selectAllLog?apiId=522',
+        requestQuery: {
+          con: null
+        }
+      },
+      isCheckGPS: true,
+      userId: null,
+      orgCode: null,
+      taskAllNum: 0,
+      noticeInterval: null,
+      exceptionHandleVisible: false,
+      batchCarrierName: null,
+      batchCarrierVisible: false,
+      visibleList: [],
+      itemHeight: 30,
+      scrollTop: 0,
+      debounceS: false,
+      carNumber: '',
+      //弹出框
+      centerDialogVisible: false,
+      //根据车序号查询的值
+      steelMap: {},
+      //钢材子表数据
+      drawer: false,
+      isShow3: false,
+      isShow4: false,
+      input: null,
+      screen: '',
+      options: [
+        {
+          value: '客户',
+          lable: '客户'
+        },
+        {
+          value: '承运商',
+          lable: '承运商'
+        },
+        {
+          value: '车牌号',
+          lable: '车牌号'
+        },
+        {
+          value: '分录ID',
+          lable: '分录ID'
+        },
+        {
+          value: '收货地址',
+          lable: '收货地址'
+        },
+        {
+          value: '销售订单号',
+          lable: '销售订单号'
+        },
+        {
+          value: '收款公司',
+          lable: '收款公司'
+        }
+      ],
+      input1: null,
+      screen1: '',
+      options1: [
+        {
+          value: '客户',
+          lable: '客户'
+        },
+        {
+          value: '承运商',
+          lable: '承运商'
+        },
+        {
+          value: '车牌号',
+          lable: '车牌号'
+        },
+        {
+          value: '分录ID',
+          lable: '分录ID'
+        },
+        {
+          value: '收货地址',
+          lable: '收货地址'
+        },
+        {
+          value: '销售订单号',
+          lable: '销售订单号'
+        },
+        {
+          value: '收款公司',
+          lable: '收款公司'
+        }
+      ],
+      pickerOptions: {
+        disabledDate(time) {
+          return time.getTime() > Date.now()
+        },
+        shortcuts: [
+          {
+            text: '今天',
+            onClick(picker) {
+              picker.$emit('pick', new Date())
+            }
+          },
+          {
+            text: '昨天',
+            onClick(picker) {
+              const date = new Date()
+              date.setTime(date.getTime() - 3600 * 1000 * 24)
+              picker.$emit('pick', date)
+            }
+          },
+          {
+            text: '一周前',
+            onClick(picker) {
+              const date = new Date()
+              date.setTime(date.getTime() - 3600 * 1000 * 24 * 7)
+              picker.$emit('pick', date)
+            }
+          },
+          {
+            text: '元年',
+            onClick(picker) {
+              const date = new Date()
+              date.setTime(0)
+              picker.$emit('pick', date)
+            }
+          }
+        ]
+      },
+      pickerOptions1: {
+        disabledDate(time) {
+          return time.getTime() > Date.now()
+        },
+        shortcuts: [
+          {
+            text: '今天',
+            onClick(picker) {
+              picker.$emit('pick', new Date())
+            }
+          },
+          {
+            text: '昨天',
+            onClick(picker) {
+              const date = new Date()
+              date.setTime(date.getTime() - 3600 * 1000 * 24)
+              picker.$emit('pick', date)
+            }
+          },
+          {
+            text: '一周前',
+            onClick(picker) {
+              const date = new Date()
+              date.setTime(date.getTime() - 3600 * 1000 * 24 * 7)
+              picker.$emit('pick', date)
+            }
+          },
+          {
+            text: '元年',
+            onClick(picker) {
+              const date = new Date()
+              date.setTime(0)
+              picker.$emit('pick', date)
+            }
+          }
+        ]
+      },
+      startTime: generateStartDate(),
+      endTime: generateStartDate(),
+      //合计净重
+      totalNumber: 0,
+      //合计车数
+      totalCapacity: 0,
+      //取消车数
+      quxiaoCapacityNum: 0,
+      //合计吨位
+      totalNetWeight: 0,
+      tableTitle: '销售统计报表',
+      capacityList: [],
+      carrierList: [],
+      tableData: [],
+      spanArr: [],
+      pos: 0,
+      spanArr1: [],
+      spanArr2: [],
+      spanArr3: [],
+      mergeListBatch: [
+        '净重',
+        '皮重时间',
+        '皮重',
+        '毛重时间',
+        '毛重',
+        '异常操作'
+      ],
+      pos2: 0,
+      pos3: 0,
+      pos1: 0,
+      //需要合并列的名称
+      mergeList: [
+        '选择',
+        '序号',
+        '整车操作',
+        '销售订单状态',
+        '销售订单号',
+        '发货单位',
+        '司机电话',
+        '运输订单号',
+        '签收地址',
+        '签收时间',
+        '抵达地址',
+        '抵达时间',
+        '出厂时间',
+        '进厂时间',
+        '运单状态',
+        '订单实际状态',
+        '车牌号',
+        '承运商',
+        '客户',
+        '收货地址',
+        '业务员',
+        '送货单打印',
+        '收货客户电话',
+        '是否自提',
+        '订单日期',
+        '短信发送',
+        '销售片区',
+        '抵达时间',
+        '签收时间',
+        // '摘要',
+        '排队开始时间',
+        '钢材科放行时间',
+        '备注',
+        '订单变更时间',
+        '异地库接收标志',
+        '销售订单变更记录',
+        '运输订单变更记录',
+        '拼数',
+        '是否继续装',
+        '订单上传时间',
+        '收款公司'
+      ],
+      //钢材多拼车辆线路ID
+      //索引从1-10为1-10拼路线ID
+      lineSpelling: [
+        0,
+        110001,
+        110002,
+        110003,
+        110004,
+        110005,
+        110006,
+        110007,
+        110008,
+        110009,
+        110010
+      ],
+      tableTitle: '销售钢材统计报表',
+      //所有省
+      provinceList: [],
+      //选中的省
+      province: '',
+      //所有市
+      cityList: [],
+      //选中的市
+      city: '',
+      //所有的县(区)
+      countyList: [],
+      //选中的县
+      county: '',
+      //地址输入框的值
+      addresText: '',
+      //已选中省市县
+      //具体地址
+      //省市县Id
+      addressId: null,
+      addressRow: {},
+      srcList: [],
+      previewSrcList2: [],
+      src: '',
+      isShow: false,
+      srcList2: [],
+      previewSrcList2: [],
+      isShow2: false,
+      maxHeight: 700,
+      //轨迹窗口
+      value7: false,
+      //实时路径窗口
+      value8: false,
+      pathOption: {
+        orderNumber: '',
+        capacityNumber: '',
+        startPointName: '',
+        endPointName: '',
+        statusCode: '位置'
+      },
+      saleSteelKey: false,
+      tableRowIndex: '',
+      isRowClick: 0,
+      orgCodeList: [
+        'wuliuyunshubu',
+        'dagangadmin',
+        'zidonghuabu',
+        'chengyunshang'
+      ],
+      isShowOperate: false,
+      filterConsigneeList: [],
+      filterCarrierList: [],
+      filterCapacityList: [],
+      filtermaterialNameList: [],
+      filterorderStatusActually: [],
+      filterorderStatus: [
+        { text: '未派发', value: '未派发' },
+        { text: '已派单', value: '已派单' },
+        { text: '已接单', value: '已接单' },
+        { text: '排队中', value: '排队中' },
+        { text: '已进厂', value: '已进厂' },
+        { text: '已出厂', value: '已出厂' },
+        { text: '已完成', value: '已完成' },
+        { text: '已关闭', value: '已关闭' }
+      ],
+      filterIsContinue: [
+        { text: '是', value: '是' },
+        { text: '否', value: '否' }
+      ],
+      filterUploadTime: [],
+      filterSpellNum: [
+        { text: '0', value: '0' },
+        { text: '1', value: '1' },
+        { text: '2', value: '2' },
+        { text: '3', value: '3' },
+        { text: '4', value: '4' },
+        { text: '5', value: '5' },
+        { text: '6', value: '6' },
+        { text: '7', value: '7' },
+        { text: '8', value: '8' },
+        { text: '9', value: '9' }
+      ],
+      filteraddressPlace: [],
+      filtermaterialSpe: [],
+      filterSaleRemark: [],
+      filterTruckRemark: [],
+      filterSaleOrderStatus: [
+        { text: '关闭', value: '关闭' },
+        { text: '保存', value: '保存' },
+        { text: '提交', value: '提交' },
+        { text: '审核', value: '审核' },
+        { text: '未上报', value: '未上报' },
+        { text: '反审批', value: '反审批' }
+      ],
+      filterFlStatus: [
+        {
+          text: '关闭',
+          value: '关闭'
+        },
+        {
+          text: '正常',
+          value: '正常'
+        }
+      ],
+      filterMap: {
+        consigneeNameList: [],
+        truckRemarkList: [],
+        saleRemarkList: [],
+        saleOrderStatusList: [],
+        materialSpeList: [],
+        addressPlaceList: [],
+        orderStatusList: [],
+        saleAreaList: [],
+        materialNameList: [],
+        carrierList: [],
+        capacityList: [],
+        orderStatusActuallyList: []
+      },
+      //权限控制
+      notRoutList: [],
+      remarkPic: false,
+      remarkPicList: [],
+      location: null,
+      orderNumber: null,
+      capacityNumber: null,
+      arrivalReceiving: false,
+      arriavlList: [],
+      receiveList: [],
+      fileListArrival: [],
+      fileListReceive: [],
+      dialogImageUrl: '',
+      dialogVisible: false,
+      isLoading: false,
+      arrivalTime: null,
+      receiptTime: null,
+      dialogFormVisible: false,
+      addresText: null,
+      originalPriceValue: null,
+      originalAddress: null,
+      aaadrawer: false,
+      downloadCapacityNo: null,
+      batchCarrierList: [],
+      columnNoRoutList: [],
+      salerExportExcelList: [
+        '订单日期',
+        '客户',
+        '物资名称',
+        '物资规格',
+        '物资件数',
+        '理重',
+        '净重',
+        '收货地址',
+        '收货客户电话',
+        '摘要',
+        '备注',
+        '车牌号',
+        '司机电话',
+        '制单日期',
+        '销售订单状态',
+        '运单状态',
+        '承运商',
+        '排队开始时间',
+        '钢材科放行时间',
+        '进厂时间',
+        '皮重时间',
+        '皮重',
+        '装货时间',
+        '毛重时间',
+        '毛重',
+        '送货单打印',
+        '出厂时间',
+        '短信发送',
+        '抵达地址',
+        '抵达时间',
+        '签收地址',
+        '签收时间',
+        '实际运价',
+        '实际运费',
+        '异地库接收标志',
+        '运输订单号',
+        '业务员',
+        '发货单位',
+        '是否自提',
+        '销售订单号',
+        '金蝶分录ID',
+        '订单变更时间',
+        '销售订单变更记录',
+        '运输订单变更记录',
+        '收款公司',
+        '理论件数'
+      ],
+      scrollUpdateSelectFlag: 0,
+      scrollLeft: 0,
+      scrollLeftFlag: 0,
+      isShowOperateYeWuYuan: false,
+      headColumnList: [],
+      columnAllData: [],
+      columnHiddenData: [],
+      consigneeCheckList: [],
+      showPopover: false,
+      schemeMap: {},
+      statusNumData: []
+    }
+  },
+  created() {
+    if (this.$route.query.str) {
+      let filterMap = JSON.parse(this.$route.query.str)
+      if (filterMap) {
+        this.filterMap = filterMap
+        this.startTime = filterMap.startTime
+        this.endTime = filterMap.endTime
+      }
+    }
+    this.getSteelReport = this.debounce(() => {
+      this.getSteelReportDebounce()
+    }, 100)
+    this.orgCode = getCookie('orgCode')
+    this.userId = getCookie('userId')
+    if (this.orgCodeList.includes(getCookie('orgCode'))) {
+      this.isShowOperate = true
+    }
+    if (getCookie('orgCode') == 'chengyunshang') {
+      this.notRoutList = [
+        'checkPoint',
+        'checkTrans',
+        'carrierName',
+        'consigeeTel',
+        'province',
+        'city',
+        'country',
+        'place',
+        'addressClick',
+        'closeOrder',
+        'materialNum',
+        'closeEntry',
+        'capacityNo',
+        'batchCarrier',
+        'select',
+        'exceptionHandle',
+        'mergeSplit',
+        'saleLog',
+        'batchCapacity'
+      ]
+      this.noticeInterval = setInterval(() => {
+        this.getinformation()
+      }, 1000 * 180)
+    }
+    this.getSteelReport()
+    if (getCookie('orgCode') == 'shouhuokehu') {
+      //如果是收货客户,则查询
+      this.axios
+        .post('/api/v1/uc/getColumnNoRoutList', {
+          orgCode: getCookie('orgCode'),
+          userName: getCookie('loginName'),
+          tableName: '销售钢材报表'
+        })
+        .then(res => {
+          this.columnNoRoutList = res.data
+        })
+      this.notRoutList = ['select']
+    } else {
+      this.getColumShowHideScheme()
+    }
+    if (getCookie('orgCode') == 'xiaoshouyewuyuan') {
+      this.isShowOperateYeWuYuan = true
+    }
+    //只要涉及提交即必须设计防抖,在初始化时绑定防抖函数
+    this.updateCapacityDebounce = this.debounce(() => {
+      this.updateCapacity()
+    }, 1500)
+    this.updateTruckCarrierDebounce = this.debounce(() => {
+      this.updateTruckCarrier()
+    }, 1500)
+    this.cellMouse1 = this.debounce((row, column, cell) => {
+      this.cellMouse(row, column, cell)
+    }, 200)
+    this.cellLeave1 = this.debounce((row, column, cell) => {
+      this.cellLeave(row, column, cell)
+    }, 200)
+    this.exceptionHandleMakeSure = this.debounce(() => {
+      this.exceptionHandleMakeSure1()
+    }, 500)
+    this.submitSteelDebounce = this.debounce(obj => {
+      this.submitSteel(obj)
+    })
+  },
+  watch: {
+    visibleList: {
+      deep: true,
+      immediate: true,
+      handler(val) {
+        let standList = this.$store.state.saleSteelToggleIds
+        this.$nextTick(() => {
+          this.visibleList.forEach(e => {
+            if (standList.includes(e.saleOrderMaterialId))
+              this.$refs.tableRef.toggleRowSelection(e, true)
+          })
+        })
+      }
+    },
+    maxHeight() {
+      this.visibleList = this.tableData.slice(
+        0,
+        Math.floor(this.maxHeight / 30)
+      )
+      this.getSpanArr(this.visibleList)
+      document.querySelector(
+        '.el-table__body-wrapper .el-table__body'
+      ).style.transform = `translateY(${0}px)`
+    },
+    scrollTop: {
+      immediate: true,
+      deep: true,
+      handler(val) {
+        this.$nextTick(() => {
+          if (
+            val >=
+            this.tableData.length * 30 -
+              document.querySelector('.el-table__body-wrapper').offsetHeight -
+              20
+          ) {
+            val =
+              this.tableData.length * 30 -
+              document.querySelector('.el-table__body-wrapper').offsetHeight
+          }
+          if (val <= 0) {
+            val = 0
+          }
+          const start = Math.floor(val / 30)
+          this.visibleList = this.tableData.slice(
+            start,
+            start + Math.floor(this.maxHeight / 30)
+          )
+          this.getSpanArr(this.visibleList)
+          document.querySelector(
+            '.el-table__body-wrapper .el-table__body'
+          ).style.transform = `translateY(${val}px)`
+          this.debounceS = false
+        })
+      }
+    },
+    scrollLeft: {
+      immediate: true,
+      deep: true,
+      handler(val) {
+        this.scrollLeftFlag = 1
+      }
+    }
+  },
+  destroyed() {
+    clearInterval(this.noticeInterval)
+  },
+  computed: {},
+  mounted() {
+    this.$nextTick(() => {
+      const that = this
+      window.onresize = () => {
+        return (() => {
+          console.log('我触发了表格分辨率变化的时间')
+          that.$nextTick(() => {
+            that.maxHeight =
+              window.innerHeight -
+              document.querySelector('.tableTop').offsetHeight -
+              40
+          })
+        })()
+      }
+    })
+    this.$refs.tableRef.bodyWrapper.addEventListener('scroll', e => {
+      if (this.scrollLeftFlag == 1 && this.debounceS == true) {
+        this.debounceS = false
+      }
+      if (this.debounceS) return
+      this.debounceS = true
+      this.scrollTop = e.target.scrollTop
+      this.scrollLeft = e.target.scrollLeft
+      this.scrollUpdateSelectFlag = 1
+    })
+    //基础数据查询
+    this.getAllProvince()
+  },
+  activated() {
+    this.maxHeight =
+      window.innerHeight - document.querySelector('.tableTop').offsetHeight - 40
+  },
+  computed: {},
+  methods: {
+    openBlank() {
+      let page = this.$router.resolve({
+        name: 'saleSteelReportsFD',
+        query: { id: 0, e: 0 },
+        meta: {
+          title: '销售钢材报表'
+        }
+      })
+      window.open(page.href, '_blank')
+    },
+    getColumShowHideScheme() {
+      this.axios
+        .post('/api/v1/uc/getColumShowHideScheme', {
+          userName: getCookie('loginName'),
+          orgCode: getCookie('orgCode'),
+          tableName: '销售钢材报表'
+        })
+        .then(res => {
+          this.schemeMap = res.data.data
+          this.columnNoRoutList = this.schemeMap.columnHiddenData
+        })
+        .catch(() => {
+          this.columnNoRoutList = []
+        })
+    },
+    columnShowTabClick(e) {
+      this.schemeMap.activeName = e.paneName
+    },
+    //动态渲染列的显示方案
+    handleTabsEdit(targetName, action) {
+      if (action === 'add') {
+        this.$confirm('请输入方案名称', '提示', {
+          confirmButtonText: '确定',
+          cancelButtonText: '取消',
+          type: 'info',
+          showInput: true,
+          center: true
+        })
+          .then(mes => {
+            let newTabName = mes.value
+            this.schemeMap.schemeList.push({
+              title: newTabName,
+              name: newTabName,
+              columnAllData: this.schemeMap.columnAllData,
+              columnHiddenData: []
+            })
+            this.schemeMap.activeName = newTabName
+          })
+          .catch(() => {
+            this.$message({
+              type: 'info',
+              message: '用户取消操作'
+            })
+          })
+      }
+      if (action === 'remove') {
+        let map = {}
+        map.columnHiddenData = []
+        map.name = targetName || this.schemeMap.activeName
+        this.columnShowOperation(map)
+      }
+    },
+    //动态渲染表头
+    renderHeader(h, { column }) {
+      let renderColumnFilterList = []
+      let filterVal = ''
+      let optionList = []
+      if (column.label === '客户') {
+        filterVal = 'consigneeNameList'
+        renderColumnFilterList = this.filterConsigneeList
+      } else if (column.label === '车牌号') {
+        filterVal = 'capacityList'
+        renderColumnFilterList = this.filterCapacityList
+      } else if (column.label === '收货地址') {
+        filterVal = 'addressPlaceList'
+        renderColumnFilterList = this.filteraddressPlace
+      } else if (column.label === '摘要') {
+        filterVal = 'saleRemarkList'
+        renderColumnFilterList = this.filterSaleRemark
+      } else if (column.label === '备注') {
+        filterVal = 'truckRemarkList'
+        renderColumnFilterList = this.filterTruckRemark
+      } else if (column.label === '物资名称') {
+        filterVal = 'materialNameList'
+        renderColumnFilterList = this.filtermaterialNameList
+      } else if (column.label === '物资规格') {
+        filterVal = 'materialSpeList'
+        renderColumnFilterList = this.filtermaterialSpe
+      }
+      if (filterVal == '') {
+        return h('div', column.label, {})
+      }
+      return h(
+        'div',
+        {
+          style: {
+            height: 'auto',
+            color: this.filterMap[filterVal].length > 0 ? '#409EFF' : '#ffff',
+            fontWeight: this.filterMap[filterVal].length > 0 ? '700' : '400',
+            fontSize: '12px'
+          }
+        },
+        [
+          h(
+            'el-popover',
+            {
+              props: {
+                placement: 'bottom',
+                trigger: 'click',
+                value: this.showPopover
+              },
+              style: {
+                width: 'auto'
+              },
+              on: {
+                show: _ => {
+                  this.$nextTick(() => {
+                    this.$refs.filterSelectRef.focus()
+                  })
+                }
+              }
+            },
+            [
+              h('span', {
+                slot: 'reference',
+                style: 'margin-top:20px',
+                domProps: {
+                  innerHTML:
+                    column.label + '  ' + '<i class="el-icon-search""/>'
+                }
+              }),
+              this.$createElement(
+                'el-select',
+                {
+                  ref: `filterSelectRef`,
+                  style: {
+                    'margin-bottom': '10px',
+                    'border-bottom': '1px solid #efefef',
+                    'padding-bottom': '10px',
+                    width: '250px'
+                  },
+                  props: {
+                    placeholder: '请输入查询',
+                    reserveKeyword: true,
+                    filterable: true,
+                    filterMethod: e => {
+                      this.filterMethodChange(
+                        e,
+                        filterVal,
+                        renderColumnFilterList
+                      )
+                    },
+                    multiple: true,
+                    collapseTags: true,
+                    value: this.filterMap[filterVal]
+                  },
+                  on: {
+                    change: val => {
+                      if (val) {
+                        this.filterMap[filterVal] = [...new Set(val)]
+                      } else {
+                        let i = this.filterMap[filterVal].findIndex(
+                          row => row == val
+                        )
+                        this.filterMap[filterVal].splice(i, 1)
+                      }
+                    }
+                  }
+                },
+                [
+                  renderColumnFilterList.map((item, index) => {
+                    return h('el-option', {
+                      props: {
+                        label: item.text,
+                        value: item.text,
+                        key: item.text
+                      }
+                    })
+                  })
+                ]
+              ),
+              h('el-button', {
+                props: {
+                  size: 'mini'
+                },
+                on: {
+                  click: e => {
+                    this.filterMap[filterVal] = []
+                    this.onclick(this.filterMap)
+                  }
+                },
+                domProps: {
+                  innerHTML: '重置'
+                }
+              }),
+              h('el-button', {
+                props: {
+                  size: 'mini',
+                  type: 'primary'
+                },
+                on: {
+                  click: _ => {
+                    this.onclick(this.filterMap)
+                  }
+                },
+                domProps: {
+                  innerHTML: '筛选'
+                }
+              })
+            ]
+          )
+        ]
+      )
+    },
+    filterMethodChange(e, filterVal, renderColumnFilterList) {
+      this.filterMap[filterVal] = [e]
+    },
+    ctrlColumnShow() {
+      this.columnShowDialog = true
+    },
+    columnShowOperation(item) {
+      this.axios
+        .post('/api/v1/uc/updateColumnShowHidden', {
+          userName: getCookie('loginName'),
+          orgCode: getCookie('orgCode'),
+          tableName: '销售钢材报表',
+          columnHiddenData: item.columnHiddenData,
+          schemeName: item.name
+        })
+        .then(res => {
+          this.$message({
+            type: 'success',
+            message: '切换成功',
+            offset: '250'
+          })
+          this.$router.go(0)
+        })
+      this.columnShowDialog = false
+    },
+    headCellStyle({ row, column, rowIndex, columnIndex }) {
+      // console.log(row, 'row')
+      // console.log('headCellStyle column.property: ', column.property)
+      if (column.property && this.headColumnList.includes(column.property)) {
+        return { fontWeight: 700, fontSize: '15px' }
+        //return {}
+      }
+      return {}
+    },
+    clearFilter() {
+      this.$refs.tableRef.clearFilter()
+      this.headColumnList = []
+      this.filterMap = {
+        consigneeNameList: [],
+        truckRemarkList: [],
+        saleRemarkList: [],
+        saleOrderStatusList: [],
+        materialSpeList: [],
+        addressPlaceList: [],
+        orderStatusList: [],
+        saleAreaList: [],
+        materialNameList: [],
+        carrierList: [],
+        capacityList: [],
+        isContinueList: [],
+        spellNumList: []
+      }
+      this.onclick(this.filterMap)
+    },
+    creatQrCode(text) {
+      let qrcode = new QRCode(this.$refs.qrCodeUrl, {
+        text: text, // 需要转换为二维码的内容
+        width: 150,
+        height: 150,
+        colorDark: '#000000',
+        colorLight: '#ffffff',
+        correctLevel: QRCode.CorrectLevel.H
+      })
+    },
+    submitSteel(obj) {
+      this.$confirm('该操作会修改全部改动的内容,请确认核实后点击!', '提醒', {
+        cancelButtonText: '取消',
+        confirmButtonText: '确认',
+        center: true
+      }).then(() => {
+        let map = obj
+        map.userName = getCookie('loginName')
+        map.shipperAddressId = this.addressId
+        this.axios.post('/api/v1/uc/submitSteel', this.steelMap).then(res => {
+          let _this = this
+          if (res.data.responseMapFailed.length > 0) {
+            let responseFailTitle = res.data.responseMapFailed.join(';')
+            this.$message({
+              type: 'error',
+              duration: 2500,
+              offset: '250',
+              message: responseFailTitle
+            })
+          }
+          if (res.data.response.length == 0) {
+            setTimeout(() => {
+              _this.$message({
+                type: 'success',
+                duration: 1500,
+                offset: '250',
+                message: '未发现任何修改成功的记录!'
+              })
+            }, 2500)
+          } else {
+            let responseTitle = res.data.response.join(';')
+            setTimeout(() => {
+              _this.$message({
+                type: 'success',
+                duration: 2500,
+                offset: '250',
+                message: responseTitle
+              })
+            }, 2500)
+          }
+          this.operation(this.steelMap)
+          this.onclick(this.filterMap)
+        })
+      })
+    },
+    resetPrintNumber() {
+      this.axios
+        .post('/api/v1/bp/resetPrintNumber', this.steelMap)
+        .then(res => {
+          if (res.data.status == 'succeed') {
+            this.$message.success('重置成功!')
+          } else {
+            this.$message.error('重置失败!')
+          }
+        })
+    },
+    showBatchCapacity() {
+      this.capacityNo = null
+      this.capacityId = null
+      this.batchCapacityList = []
+      console.log(this.$refs.tableRef.selection)
+      //按照saleOrderMaterialId查询物资数量size,用于确定派车的线路ID
+      this.$refs.tableRef.selection.forEach(item1 => {
+        item1.size = this.visibleList.filter(item2 => {
+          return item1.saleOrderMaterialId == item2.saleOrderMaterialId
+        }).length
+      })
+      this.batchCapacityList = this.$refs.tableRef.selection
+      console.log(this.batchCapacityList)
+      // if (this.batchCapacityList.length > 0) {
+      //   this.batchCapacityVisible = true
+      // } else {
+      //   this.$message({
+      //     type: 'warning',
+      //     message: '请选择要批量更改车牌号的订单',
+      //     offset: '250',
+      //     duration: '2500'
+      //   })
+      // }
+    },
+    batchCapacitySelect(selection) {
+      this.capacityNo = selection.capacityNumber
+      this.capacityId = selection.capacityId
+    },
+    //批量修改车牌号
+    batchEditCapacity() {
+      if (this.capacityId && this.capacityNo) {
+        if (
+          !(
+            isVehicleNumber(this.capacityNo) ||
+            this.capacityNo == '取消' ||
+            this.capacityNo == '待定' ||
+            this.capacityNo == '空白'
+          )
+        ) {
+          this.$message.error('请输入正确格式的车牌号!')
+          return
+        }
+        console.log('this.batchCapacityList', this.batchCapacityList)
+        this.batchCapacityList.forEach(row => {
+          row.capacityId = this.capacityId
+          row.capacityNumber = this.capacityNo
+          row.capacityNo = this.capacityNo
+          //是否校验GPS
+          row.isCheckGPS = this.isCheckGPS
+          row.userId = getCookie('userId')
+          if (row.carrierIds == 0) {
+            this.$message.error('请先授权承运商!')
+            return
+          }
+          if (row.capacityIds == 0) {
+            row.lineId = this.lineSpelling[row.size]
+          }
+        })
+        let map = {
+          list: this.batchCapacityList
+        }
+        this.axios.post('/api/v1/ams/batchUpdateCapacity', map).then(res => {
+          if (res.data.code == '200') {
+            this.$message.success('派车成功!')
+          } else {
+            this.$message.error(res.data.data)
+          }
+        })
+        this.batchCarrierVisible = false
+        this.onclick(this.filterMap)
+      } else {
+        this.$message.warning('请先注册车牌号或者选中弹出后再提交!')
+      }
+    },
+    showSaleLog() {
+      this.isShowSaleLog = true
+      if (this.steelMap) {
+        this.optionSaleLog.requestQuery.con = this.steelMap.orderNo
+      }
+    },
+    //删除计量实绩
+    linkageDeleteTransportOrder(row, steelMap) {
+      console.log(row, 'row')
+      debugger
+      if (row.netWeight != null && row.netWeight != '') {
+        //如果净重不为空
+        let arr = []
+        let map = {
+          orderNumber: row.orderNo,
+          good: row.materialName,
+          goodspa: `${row.materialSpecification}(${row.materialModel})`,
+          resultCrossWeightTime: row.grossWeightTime,
+          saleMaterialId: row.saleMaterialId,
+          weightBatchId: row.weightBatchId,
+          userName: getCookie('loginName')
+        }
+        arr.push(map)
+        this.axios
+          .post('/api/v1/uc/linkageDeleteTransportOrder', arr)
+          .then(res => {
+            this.$message({
+              message: '删除计量实绩成功',
+              type: 'success',
+              offset: '250',
+              duration: '2500'
+            })
+            this.exceptionHandleVisible = false
+            this.onclick(this.filterMap)
+          })
+      }
+    },
+    mergeSplit() {
+      if (this.$refs.tableRef.selection.length == 1) {
+        this.$confirm(
+          `尊敬的用户${getCookie(
+            'loginName'
+          )},系统温馨提示您进行拆分操作前,请确认所拆分的订单将不会在金蝶进行提交,审核等操作!`,
+          '提醒',
+          {
+            confirmButtonText: '我已确认',
+            cancelButtonText: '我再想想',
+            center: true,
+            type: 'warning'
+          }
+        )
+          .then(() => {
+            this.splitOrder()
+          })
+          .catch(() => {
+            this.$message({
+              type: 'info',
+              duration: '2500',
+              message: '操作取消',
+              offset: '250'
+            })
+          })
+      } else if (this.$refs.tableRef.selection.length > 1) {
+        this.$confirm(
+          `尊敬的用户${getCookie(
+            'loginName'
+          )},系统温馨提示您进行合并操作前,请确认所合并的订单将不会在金蝶进行提交,审核等操作!`,
+          '提醒',
+          {
+            confirmButtonText: '我已确认',
+            cancelButtonText: '我再想想',
+            center: true,
+            type: 'warning'
+          }
+        )
+          .then(() => {
+            this.mergeOrder()
+          })
+          .catch(() => {
+            this.$message({
+              type: 'info',
+              duration: '2500',
+              message: '操作取消',
+              offset: '250'
+            })
+          })
+      } else {
+        this.$message({
+          type: 'warning',
+          message: '请勾选/点击需要操作的行',
+          offset: '250',
+          duration: '2300'
+        })
+      }
+    },
+    splitOrder() {
+      this.$confirm(
+        `勾选了${this.$refs.tableRef.selection.length}条运单将执行拆分操作`,
+        '提醒',
+        {
+          confirmButtonText: '确定',
+          cancelButtonText: '取消',
+          center: true
+        }
+      )
+        .then(() => {
+          let mapList = this.$refs.tableRef.selection.map(e => {
+            let map = {}
+            map.saleOrderMaterialId = e.saleOrderMaterialId
+            return map
+          })
+          let map = {
+            mapList: mapList,
+            userName: getCookie('loginName')
+          }
+          this.axios
+            .post('/api/v1/ams/splitOrder', map)
+            .then(res => {
+              if (res.data.code == '200') {
+                this.onclick(this.filterMap)
+                this.$message({
+                  type: 'success',
+                  message: '拆分成功',
+                  offset: '250',
+                  duration: '2500'
+                })
+              } else {
+                this.$message({
+                  type: 'error',
+                  message: res.data.data,
+                  offset: '250',
+                  duration: '2500'
+                })
+              }
+            })
+            .catch(() => {
+              this.$message({
+                type: 'error',
+                message: '拆分失败',
+                offset: '250',
+                duration: '2500'
+              })
+            })
+        })
+        .catch(() => {
+          this.$message({
+            type: 'info',
+            duration: '2500',
+            message: '操作取消',
+            offset: '250'
+          })
+        })
+    },
+    mergeOrder() {
+      this.$confirm(
+        `勾选了${this.$refs.tableRef.selection.length}条运单将执行合并操作,此操作不可逆!`,
+        '提醒',
+        {
+          confirmButtonText: '确定',
+          cancelButtonText: '取消',
+          center: true
+        }
+      )
+        .then(() => {
+          let mapList = this.$refs.tableRef.selection.map(e => {
+            let map = {}
+            map.saleOrderMaterialId = e.saleOrderMaterialId
+            map.orderId = e.orderId
+            map.saleOrderId = e.saleOrderId
+            map.orderNo = e.orderNo
+            map.capacityNo = e.capacityNo
+            map.userName = getCookie('loginName')
+            return map
+          })
+          let map = {
+            mapList: mapList,
+            userName: getCookie('loginName')
+          }
+          this.axios
+            .post('/api/v1/ams/mergeOrder', map)
+            .then(res => {
+              if (res.data.code == '200') {
+                this.onclick(this.filterMap)
+                this.$message({
+                  type: 'success',
+                  message: '合并成功,请提醒驾驶员!',
+                  offset: '250',
+                  duration: '3000'
+                })
+              } else {
+                this.$message({
+                  type: 'error',
+                  message: res.data.data,
+                  offset: '250',
+                  duration: '2500'
+                })
+              }
+            })
+            .catch(() => {
+              this.$message({
+                type: 'error',
+                message: '合并失败',
+                offset: '250',
+                duration: '2500'
+              })
+            })
+        })
+        .catch(() => {
+          this.$message({
+            type: 'info',
+            duration: '2500',
+            message: '操作取消',
+            offset: '250'
+          })
+        })
+    },
+    //获取通知数量
+    getinformation() {
+      this.axios
+        .post('/api/v1/ams/getNoticeAll', { userId: this.userId })
+        .then(res => {
+          let taskAllNum = 0
+          res.data.data.forEach(e => {
+            if (e.insertusername == '销售审核' && e.status == 0) {
+              taskAllNum++
+            }
+          })
+          this.taskAllNum = taskAllNum
+          console.log('未接收数目:', this.taskAllNum)
+        })
+    },
+    readAll() {
+      this.axios
+        .post('/api/v1/ams/readAll', {
+          userId: this.userId,
+          insertUserName: '销售审核'
+        })
+        .then(res => {
+          this.taskAllNum = 0
+        })
+    },
+    deleteRow(index, rows) {
+      if (rows.length > 1) {
+        rows.splice(index, 1)
+      }
+    },
+    copyRowflu(index, row) {
+      console.log(index)
+      let copyRowflu = new Object()
+      Object.keys(row).forEach(key => {
+        copyRowflu[key] = row[key]
+      })
+      delete copyRowflu.materialId
+      delete copyRowflu.netWeight
+      delete copyRowflu.grossWeight
+      delete copyRowflu.grossWeightTime
+      delete copyRowflu.tareWeight
+      delete copyRowflu.tareWeightTime
+      delete copyRowflu.loadTime
+      delete copyRowflu.closeEntryId
+      this.steelMap.mapList.splice(index + 1, 0, copyRowflu)
+    },
+    exceptionHandleMakeSure1() {
+      console.log(this.steelMap)
+      this.$confirm(
+        `该操作会将${this.steelMap.capacityNo}下未出净重的分录关闭,并重新上传金蝶,确认操作?`,
+        '提示',
+        {
+          cancelButtonText: '取消',
+          confirmButtonText: '确定',
+          center: true
+        }
+      )
+        .then(() => {
+          let saleDateOfReceipt = null
+          let loadTime1 = new Date(
+            new Date(new Date().toLocaleDateString()).getTime() +
+              (3600 * 1000 * 8 - 1)
+          ) // 当天8点前
+          let loadTime2 = new Date(
+            new Date(new Date().toLocaleDateString()).getTime() +
+              (3600 * 1000 * 32 - 1)
+          ) // 次天8点前
+          if (new Date().getTime() - loadTime1 > 0) {
+            saleDateOfReceipt = loadTime2
+          } else {
+            saleDateOfReceipt = loadTime1
+          }
+          let closeEntryList = []
+          let map = this.steelMap
+          map.mapList.forEach(e => {
+            let map = {}
+            e.saleDateOfReceipt = sjTime(saleDateOfReceipt)
+            map.saleMaterialId = e.saleMaterialId
+            map.closeEntryId = e.closeEntryId
+            map.number = e.saleOrderNo
+            closeEntryList.push(map)
+          })
+          let mapList = map.mapList.filter(e => {
+            if (typeof e.netWeight == 'undefined' || e.netWeight == null) {
+              return e
+            }
+          })
+          if (mapList.length == 0) {
+            this.$message({
+              type: 'info',
+              message: '所有分录包含净重,退出!',
+              offset: '250',
+              duration: '2500'
+            })
+            return
+          }
+          map.mapList = mapList
+          map.isUploadEas = 1
+          this.axios
+            .post('/api/v1/ams/addSteelSaleOrder', map, {
+              timeout: 3 * 60 * 1000
+            })
+            .then(res => {
+              if (res.data.code == '200') {
+                this.axios
+                  .post('/api/v1/ams/closingEntries', closeEntryList, {
+                    timeout: 3 * 60 * 1000
+                  })
+                  .then(res => {
+                    if (res.data.code == '200') {
+                      this.onclick(this.filterMap)
+                      this.$message({
+                        type: 'success',
+                        offset: '250',
+                        message: '生成订单成功,关闭分录成功',
+                        duration: 2000
+                      })
+                      this.exceptionHandleVisible = false
+                    }
+                  })
+                  .catch(e => {})
+              } else {
+                this.$message({
+                  type: 'error',
+                  offset: '250',
+                  duration: '2500',
+                  message: '新增失败'
+                })
+              }
+            })
+        })
+        .catch(e => {
+          this.$message({
+            type: 'info',
+            message: '取消操作',
+            offset: '200',
+            duration: 2500
+          })
+        })
+    },
+    exceptionHandle() {
+      if (this.$refs.tableRef.selection.length == 1) {
+        console.log(this.$refs.tableRef.selection[0])
+        this.axios
+          .post(
+            '/api/v1/tms/getSteelReportDetailsBySmId?saleOrderMaterialId=' +
+              this.$refs.tableRef.selection[0].saleOrderMaterialId
+          )
+          .then(res => {
+            this.steelMap = res.data.data
+            this.exceptionHandleVisible = true
+            this.getSpanArr1(this.steelMap.mapList)
+          })
+      } else {
+        this.$message({
+          message: '异常处理单次仅能勾选一辆车',
+          offset: '250',
+          duration: '2500',
+          type: 'warning'
+        })
+      }
+    },
+    batchCarrierMakeSure() {
+      let batchCarrierId = null
+      this.carrierList.forEach(item => {
+        if (item.carrierName == this.batchCarrierName) {
+          batchCarrierId = item.carrierId
+        }
+      })
+      this.batchCarrierList.forEach(e => {
+        e.carrierId = batchCarrierId
+      })
+      const loading = this.$loading({
+        lock: true,
+        text: '正在批量授权承运商',
+        spinner: 'el-icon-loading',
+        background: 'rgba(0, 0, 0, 0.7)'
+      })
+      this.axios
+        .post('/api/v1/ams/dispatchToCarrier', this.batchCarrierList)
+        .then(res => {
+          if (res.data.code == '0') {
+            this.$message.success('授权承运商成功')
+            this.batchCarrierList = []
+            this.batchCarrierVisible = false
+            this.batchCarrierName = null
+            this.onclick(this.filterMap)
+            loading.close()
+          } else {
+            this.$message.error('授权失败,请联系管理员')
+            this.batchCarrierList = []
+            this.batchCarrierVisible = false
+            this.batchCarrierName = null
+            this.onclick(this.filterMap)
+            loading.close()
+          }
+        })
+        .catch(() => {
+          this.$message.error('授权失败,请联系管理员')
+          this.batchCarrierList = []
+          this.batchCarrierVisible = false
+          this.onclick(this.filterMap)
+          loading.close()
+        })
+    },
+    batchCarrier() {
+      if (this.batchCarrierList.length > 0) {
+        this.batchCarrierVisible = true
+        this.showBatchCapacity()
+        this.onchangeProvince()
+        this.onchangeCity()
+        this.addressId = this.steelMap.shipperAddressId
+        this.consigneeTel = this.steelMap.consigneeTel
+      } else {
+        this.$message({
+          type: 'warning',
+          message: '请选择要批量授权的订单',
+          offset: '250',
+          duration: '2500'
+        })
+      }
+    },
+    selectOne(selection, row) {
+      console.log('selection:', row)
+      this.rowClick(row)
+    },
+    handleSelectionChange() {
+      console.log(this.$refs.tableRef.selection, 'selection')
+      this.batchCarrierList = []
+      this.batchCarrierList = this.$refs.tableRef.selection.map(e => {
+        let map = {}
+        map.saleOrderMaterialId = e.saleOrderMaterialId
+        return map
+      })
+      console.log(this.scrollUpdateSelectFlag)
+      if (this.scrollUpdateSelectFlag == 0) {
+        let arr = []
+        arr = Array.from(
+          this.$refs.tableRef.selection.map(e => {
+            return e.saleOrderMaterialId
+          })
+        )
+        let [...arr2] = arr
+        this.toggleRowIds = arr2
+        this.$store.commit('updateSaleSteelToggleIds', {
+          saleSteelToggleIds: arr
+        })
+      }
+    },
+    receiveClick(src, title) {
+      // this.dialogImageUrl = src
+      downloadFile(src, `${this.downloadCapacityNo}${title}照片`, 'jpg')
+      // this.dialogVisible = true
+    },
+    openRemarkPic() {
+      //获取图片到本地
+      this.axios.post('/api/v1/uc/getPicture', this.steelMap).then(res => {
+        console.log(res)
+        if (res.data) {
+          let remarkPicList = []
+          res.data.forEach((e, index) => {
+            creatImageFile(e, 'file2-' + index).then(res => {
+              remarkPicList.push({
+                name: 'file' + index,
+                raw: res,
+                url: e
+              })
+            })
+          })
+          this.remarkPicList = remarkPicList
+        } else {
+          this.remarkPicList = []
+        }
+        this.remarkPic = true
+      })
+    },
+    uploadRemarkPic() {
+      if (this.remarkPicList.length <= 0) {
+        this.$message.error('请上传图片!')
+        return
+      }
+      //上传备注图片
+      let formData = new window.FormData()
+      this.remarkPicList.forEach((item, index) => {
+        formData.append('file' + index, item.raw)
+      })
+      let options = {
+        url: '/api/v1/uc/uploadPic',
+        data: formData,
+        method: 'post',
+        headers: {
+          'Content-Type': 'multipart/form-data'
+        }
+      }
+      this.axios(options).then(res => {
+        console.log(res)
+        this.$message.success('暂存成功!')
+        this.remarkPic = false
+        this.steelMap.urls = res.data
+        this.closeUpload2()
+      })
+    },
+    closeUpload2() {
+      this.remarkPic = false
+      this.isLoading = false
+      this.$refs.remarkPic.clearFiles()
+    },
+    openReceive() {
+      this.fileListArrival = []
+      this.fileListReceive = []
+      if (Object.values(this.steelMap).length == 0) {
+        this.$message.warning('请选择需要补录的实绩')
+        return
+      }
+      let row = this.steelMap
+      if (!row.outGateTime) {
+        this.$message.warning('该车未出厂,不允许签收')
+        return
+      }
+      if (row.arrivalAddress) {
+        //优先获取抵达地址
+        this.location = row.arrivalAddress
+      } else {
+        //其次获取车辆定位
+        this.axios
+          .get(
+            '/api/v1/otms/getCurrentLocation?capcityNumber=' + row.newCapacityNo
+          )
+          .then(res => {
+            if (
+              res.data.status == 'succeed' &&
+              res.data.data.result.status != 1001
+            ) {
+              this.location = res.data.data.result.adr
+            } else {
+              this.location = null
+              this.$message.warning('获取不到车辆定位!请联系销售公司上传!')
+            }
+          })
+      }
+      this.orderNumber = row.orderNo
+      this.capacityNumber = row.capacityNo
+      this.arrivalTime = row.arrivalTime
+      this.receiptTime = row.receiptTime
+      this.arrivalReceiving = true
+      //抵达图片
+      this.axios
+        .post('/api/v1/otms/getArrivalPhoto?orderNumber=' + row.orderNo)
+        .then(res => {
+          console.log('arrivalPhoto:', res)
+          if (res.data) {
+            this.arriavlList = []
+            res.data.forEach((e, index) => {
+              creatImageFile(e, 'file1-' + index).then(res => {
+                this.arriavlList.push({
+                  name: 'file' + index,
+                  raw: res,
+                  url: e
+                })
+              })
+            })
+            this.fileListArrival = this.arriavlList
+          }
+        })
+      //签收图片
+      this.axios
+        .post('/api/v1/otms/getReceivingPhotoByUrl?orderNumber=' + row.orderNo)
+        .then(res => {
+          if (res.data) {
+            this.receiveList = []
+            res.data.forEach((e, index) => {
+              creatImageFile(e, 'file2-' + index).then(res => {
+                this.receiveList.push({
+                  name: 'file' + index,
+                  raw: res,
+                  url: e
+                })
+              })
+            })
+            this.fileListReceive = this.receiveList
+          }
+        })
+    },
+    arrivalAndReceive() {
+      console.log(this.fileListReceive, 'fileListReceive')
+      if (!this.location) {
+        this.$message.warning(
+          '签收地址必须取车辆定位!若取不到请联系销售公司上传!'
+        )
+        return
+      }
+      if (this.fileListArrival.length < 3) {
+        this.$message.warning('抵达图至少三张')
+        return
+      }
+      if (this.fileListReceive.length < 2) {
+        this.$message.warning('签收图最少两张')
+        return
+      }
+      this.isLoading = true
+      //上传抵达
+      let formData = new window.FormData()
+      this.fileListArrival.forEach((item, index) => {
+        formData.append('file' + index, item.raw)
+      })
+      formData.append('orderNumber', this.orderNumber)
+      formData.append('resultArrivalAddress', this.location)
+      if (this.arrivalTime) {
+        formData.append('arrivalTime', sjTime(this.arrivalTime))
+      }
+      formData.append('userName', getCookie('loginName'))
+      let options = {
+        // 设置axios的参数
+        url: '/api/v1/otms/addtmstruckArrivalResult',
+        data: formData,
+        method: 'post',
+        headers: {
+          'Content-Type': 'multipart/form-data'
+        }
+      }
+      this.axios(options).then(res => {
+        this.fileListArrival = []
+        console.log('arrivalRes:', res)
+        //上传签收
+        let formData = new window.FormData()
+        let request = ''
+        this.fileListReceive.forEach((item, index) => {
+          formData.append('file' + index, item.raw)
+        })
+        formData.append('orderNumber', this.orderNumber)
+        formData.append('resultArrivalAddress', this.location)
+        if (this.receiptTime) {
+          formData.append('receiptTime', sjTime(this.receiptTime))
+        }
+        formData.append('num', request.length)
+        let options = {
+          url: '/api/v1/otms/addTmstruckReceiptResultForWeb',
+          data: formData,
+          method: 'post',
+          headers: {
+            'Content-Type': 'multipart/form-data'
+          }
+        }
+        this.axios(options).then(res => {
+          console.log('receiveRes:', res)
+          this.$message.success('上传成功!')
+          this.steelMap.arrivalAddress = this.location
+          this.closeUpload()
+          this.refresh()
+          this.tableRowIndex = ''
+          this.fileListReceive = []
+        })
+      })
+    },
+    fileChange1(file, fileList) {
+      this.fileListArrival = fileList
+    },
+    fileChange2(file, fileList) {
+      this.fileListReceive = fileList
+    },
+    fileChange3(file, fileList) {
+      this.remarkPicList = fileList
+    },
+    exceed() {
+      this.$message.warning('超出上传数量!')
+    },
+    handlePictureCardPreview(file) {
+      this.dialogImageUrl = file.url
+      this.dialogVisible = true
+    },
+    closeUpload() {
+      this.location = null
+      this.arrivalTime = null
+      this.receiptTime = null
+      this.arrivalReceiving = false
+      this.isLoading = false
+      this.$refs.arrival.clearFiles()
+      this.$refs.receive.clearFiles()
+    },
+    //防抖函数--防止用户重复点击
+    debounce(func, delay) {
+      let timer = null
+      return function(...args) {
+        if (timer !== null) {
+          clearTimeout(timer)
+        }
+        timer = setTimeout(function() {
+          func.apply(this, args)
+        }, delay)
+      }
+    },
+    //筛选
+    filterChange(obj) {
+      //承运商筛选,后续有待优化
+      console.log(obj, 'filterChange obj', arguments)
+      if (typeof obj.carrierList != 'undefined' && obj.carrierList.length > 0) {
+        this.headColumnList.push('carrierName')
+        this.filterMap.carrierList = obj.carrierList
+      }
+      if (
+        typeof obj.carrierList != 'undefined' &&
+        obj.carrierList.length == 0
+      ) {
+        this.headColumnList.splice(
+          this.headColumnList.indexOf('carrierName'),
+          1
+        )
+        delete this.filterMap.carrierList
+      }
+      //物资名称筛选,后续有待优化
+      if (
+        typeof obj.materialNameList != 'undefined' &&
+        obj.materialNameList.length > 0
+      ) {
+        this.headColumnList.push('materialName')
+        this.filterMap.materialNameList = obj.materialNameList
+      }
+      if (
+        typeof obj.materialNameList != 'undefined' &&
+        obj.materialNameList.length == 0
+      ) {
+        this.headColumnList.splice(
+          this.headColumnList.indexOf('materialName'),
+          1
+        )
+        delete this.filterMap.materialNameList
+      }
+      //车牌号筛选,后续有待优化
+      if (typeof obj.capacityNo != 'undefined' && obj.capacityNo.length > 0) {
+        this.filterMap.capacityList = obj.capacityNo
+        this.headColumnList.push('capacityNo')
+      }
+      if (typeof obj.capacityNo != 'undefined' && obj.capacityNo.length == 0) {
+        this.headColumnList.splice(this.headColumnList.indexOf('capacityNo'), 1)
+        delete this.filterMap.capacityList
+      }
+      //客户筛选,后续有待优化
+      if (
+        typeof obj.consigneeName != 'undefined' &&
+        obj.consigneeName.length > 0
+      ) {
+        this.headColumnList.push('consigneeName')
+        this.filterMap.consigneeNameList = obj.consigneeName
+      }
+      if (
+        typeof obj.consigneeName != 'undefined' &&
+        obj.consigneeName.length == 0
+      ) {
+        this.headColumnList.splice(
+          this.headColumnList.indexOf('consigneeName'),
+          1
+        )
+        delete this.filterMap.consigneeNameList
+      }
+      //销售片区筛选,后续有待优化
+      if (
+        typeof obj.saleAreaList != 'undefined' &&
+        obj.saleAreaList.length > 0
+      ) {
+        this.filterMap.saleAreaList = obj.saleAreaList
+      }
+      if (
+        typeof obj.saleAreaList != 'undefined' &&
+        obj.saleAreaList.length == 0
+      ) {
+        delete this.filterMap.saleAreaList
+      }
+      //物资规格筛选
+      if (typeof obj.materialSpe != 'undefined' && obj.materialSpe.length > 0) {
+        this.headColumnList.push('materialSpe')
+        this.filterMap.materialSpeList = obj.materialSpe
+      }
+      if (
+        typeof obj.materialSpe != 'undefined' &&
+        obj.materialSpe.length == 0
+      ) {
+        this.headColumnList.splice(
+          this.headColumnList.indexOf('materialSpe'),
+          1
+        )
+        delete this.filterMap.materialSpeList
+      }
+      //收货地址筛选
+      if (
+        typeof obj.addressPlace != 'undefined' &&
+        obj.addressPlace.length > 0
+      ) {
+        this.headColumnList.push('addressPlace')
+        this.filterMap.addressPlaceList = obj.addressPlace
+      }
+      if (
+        typeof obj.addressPlace != 'undefined' &&
+        obj.addressPlace.length == 0
+      ) {
+        this.headColumnList.splice(
+          this.headColumnList.indexOf('addressPlace'),
+          1
+        )
+        delete this.filterMap.addressPlaceList
+      }
+      if (typeof obj.orderStatus != 'undefined' && obj.orderStatus.length > 0) {
+        this.headColumnList.push('orderStatus')
+        // this.reset()
+        this.filterMap.orderStatusList = obj.orderStatus
+      }
+      if (
+        typeof obj.orderStatus != 'undefined' &&
+        obj.orderStatus.length == 0
+      ) {
+        this.headColumnList.splice(
+          this.headColumnList.indexOf('orderStatus'),
+          1
+        )
+        delete this.filterMap.orderStatusList
+      }
+      if (
+        typeof obj.saleOrderStatus != 'undefined' &&
+        obj.saleOrderStatus.length > 0
+      ) {
+        this.headColumnList.push('saleOrderStatus')
+        this.filterMap.saleOrderStatusList = obj.saleOrderStatus
+      }
+      if (
+        typeof obj.saleOrderStatus != 'undefined' &&
+        obj.saleOrderStatus.length == 0
+      ) {
+        this.headColumnList.splice(
+          this.headColumnList.indexOf('saleOrderStatus'),
+          1
+        )
+        delete this.filterMap.saleOrderStatusList
+      }
+      if (typeof obj.saleRemark != 'undefined' && obj.saleRemark.length > 0) {
+        this.headColumnList.push('saleRemark')
+        this.filterMap.saleRemarkList = obj.saleRemark
+      }
+      if (typeof obj.saleRemark != 'undefined' && obj.saleRemark.length == 0) {
+        this.headColumnList.splice(this.headColumnList.indexOf('saleRemark'), 1)
+        delete this.filterMap.saleRemarkList
+      }
+      if (typeof obj.truckRemark != 'undefined' && obj.truckRemark.length > 0) {
+        this.headColumnList.push('truckRemark')
+        this.filterMap.truckRemarkList = obj.truckRemark
+      }
+      if (
+        typeof obj.truckRemark != 'undefined' &&
+        obj.truckRemark.length == 0
+      ) {
+        this.headColumnList.splice(
+          this.headColumnList.indexOf('truckRemark'),
+          1
+        )
+        delete this.filterMap.truckRemarkList
+      }
+      if (typeof obj.isContinue != 'undefined' && obj.isContinue.length > 0) {
+        this.headColumnList.push('isContinue')
+        this.filterMap.isContinueList = obj.isContinue
+      }
+      if (typeof obj.isContinue != 'undefined' && obj.isContinue.length == 0) {
+        this.headColumnList.splice(this.headColumnList.indexOf('isContinue'), 1)
+        delete this.filterMap.isContinueList
+      }
+      if (typeof obj.spellNum != 'undefined' && obj.spellNum.length > 0) {
+        this.headColumnList.push('spellNum')
+        this.filterMap.spellNumList = obj.spellNum
+      }
+      if (typeof obj.spellNum != 'undefined' && obj.spellNum.length == 0) {
+        this.headColumnList.splice(this.headColumnList.indexOf('spellNum'), 1)
+        delete this.filterMap.spellNumList
+      }
+      if (typeof obj.flStatus != 'undefined' && obj.flStatus.length > 0) {
+        this.headColumnList.push('flStatus')
+        this.filterMap.flStatusList = obj.flStatus
+      }
+      if (typeof obj.flStatus != 'undefined' && obj.flStatus.length == 0) {
+        this.headColumnList.splice(this.headColumnList.indexOf('flStatus'), 1)
+        delete this.filterMap.flStatusList
+      }
+      if (
+        typeof obj.orderStatusActually != 'undefined' &&
+        obj.orderStatusActually.length > 0
+      ) {
+        this.headColumnList.push('orderStatusActually')
+        this.filterMap.orderStatusActuallyList = obj.orderStatusActually
+      }
+      if (
+        typeof obj.orderStatusActually != 'undefined' &&
+        obj.orderStatusActually.length == 0
+      ) {
+        this.headColumnList.splice(
+          this.headColumnList.indexOf('orderStatusActually'),
+          1
+        )
+        delete this.filterMap.orderStatusActuallyList
+      }
+      // if (obj)
+      this.onclick(this.filterMap)
+    },
+    //控制筛选数组变化
+    // filterListChange() {
+    //   //客户筛选数组
+    //   // let consigneeNameList = this.tableData
+    //   //   .map(e => {
+    //   //     return e.consigneeName
+    //   //   })
+    //   //   .sort()
+    //   //承运商筛选数组
+    //   // let carrierNameList = this.tableData
+    //   //   .map(e => {
+    //   //     return e.carrierName
+    //   //   })
+    //   //   .sort()
+    //   //车牌号筛选数组
+    //   // let capacityList = this.tableData
+    //   //   .map(e => {
+    //   //     return e.newCapacityNo
+    //   //   })
+    //   //   .sort()
+    //   //物资筛选数组
+    //   // let materialNameList = this.tableData
+    //   //   .map(e => {
+    //   //     return e.materialName
+    //   //   })
+    //   //   .filter(e => {
+    //   //     return e != null
+    //   //   })
+    //   //   .sort()
+    //   //销售片区筛选数组
+    //   let saleAreaList = this.tableData
+    //     .map(e => {
+    //       return e.areaName
+    //     })
+    //     .filter(e => {
+    //       return e != null
+    //     })
+    //   let addressPlaceList = this.tableData
+    //     .map(e => {
+    //       return e.addressPlace
+    //     })
+    //     .filter(e => {
+    //       return e != null
+    //     })
+    //     .sort()
+    //   let orderStatusList = this.tableData
+    //     .map(e => {
+    //       return e.orderStatus
+    //     })
+    //     .filter(e => {
+    //       return e != null
+    //     })
+    //   let materialSpeList = this.tableData
+    //     .map(e => {
+    //       return e.materialSpe
+    //     })
+    //     .filter(e => {
+    //       return e != null
+    //     })
+    //     .sort()
+    //   let saleOrderStatusList = this.tableData.map(e => {
+    //     return e.saleOrderStatus
+    //   })
+    //   let saleRemarkList = this.tableData
+    //     .map(e => {
+    //       return e.saleRemark
+    //     })
+    //     .sort()
+    //   // this.filterConsigneeList = []
+    //   // this.filterCarrierList = []
+    //   // this.filterCapacityList = []
+    //   // this.filtermaterialNameList = []
+    //   this.filterSaleAreaList = []
+    //   this.filterorderStatus = []
+    //   this.filteraddressPlace = []
+    //   this.filtermaterialSpe = []
+    //   this.filterSaleOrderStatus = []
+    //   this.filterSaleRemark = []
+    //   // Array.from(new Set(consigneeNameList)).forEach(e => {
+    //   //   let map = {}
+    //   //   map.text = e
+    //   //   map.value = e
+    //   //   this.filterConsigneeList.push(map)
+    //   // })
+    //   Array.from(new Set(carrierNameList)).forEach(e => {
+    //     let map = {}
+    //     map.text = e
+    //     map.value = e
+    //     this.filterCarrierList.push(map)
+    //   })
+    //   Array.from(new Set(capacityList)).forEach(e => {
+    //     let map = {}
+    //     map.text = e
+    //     map.value = e
+    //     this.filterCapacityList.push(map)
+    //   })
+    //   Array.from(new Set(materialNameList)).forEach(e => {
+    //     let map = {}
+    //     map.text = e
+    //     map.value = e
+    //     this.filtermaterialNameList.push(map)
+    //   })
+    //   Array.from(new Set(saleAreaList)).forEach(e => {
+    //     let map = {}
+    //     map.text = e
+    //     map.value = e
+    //     this.filterSaleAreaList.push(map)
+    //   })
+    //   Array.from(new Set(addressPlaceList)).forEach(e => {
+    //     let map = {}
+    //     map.text = e
+    //     map.value = e
+    //     this.filteraddressPlace.push(map)
+    //   })
+    //   Array.from(new Set(orderStatusList)).forEach(e => {
+    //     let map = {}
+    //     map.text = e
+    //     map.value = e
+    //     this.filterorderStatus.push(map)
+    //   })
+    //   Array.from(new Set(materialSpeList)).forEach(e => {
+    //     let map = {}
+    //     map.text = e
+    //     map.value = e
+    //     this.filtermaterialSpe.push(map)
+    //   })
+    //   Array.from(new Set(saleOrderStatusList)).forEach(e => {
+    //     let map = {}
+    //     map.text = e
+    //     map.value = e
+    //     this.filterSaleOrderStatus.push(map)
+    //   })
+    //   Array.from(new Set(saleRemarkList)).forEach(e => {
+    //     let map = {}
+    //     map.text = e
+    //     map.value = e
+    //     this.filterSaleRemark.push(map)
+    //   })
+    // },
+    cellStyle({ row, column, rowIndex, columnIndex }) {
+      if (
+        column.property == 'arrivalAddress' ||
+        column.property == 'receiptAddress'
+      ) {
+        return { color: 'blue', height: '30px' }
+      } else {
+        return { height: '30px' }
+      }
+    },
+    rowClick(row, column, event) {
+      this.steelMap = {}
+      this.tableRowIndex = row.group
+      this.isRowClick = 1
+      this.steelMap = row
+    },
+    tableRowClassName({ row, rowIndex }) {
+      if (row.group == this.tableRowIndex && this.tableRowIndex !== '') {
+        return 'warning-row'
+      }
+    },
+    cellMouse(row, column, cell, event) {
+      if (this.isRowClick == 0) {
+        this.tableRowIndex = row.group
+      }
+    },
+    cellLeave(row, column, cell, event) {
+      if (this.isRowClick == 0) {
+        this.tableRowIndex = ''
+      }
+    },
+    reset() {
+      var that = this
+      that.$nextTick(() => {
+        that.saleSteelKey = !that.saleSteelKey
+      })
+    },
+    checkTrans(row) {
+      this.isRowClick = 0
+      if (Object.values(this.steelMap).length == 0) {
+        this.$message.error('请点击需要查看轨迹的行!')
+        return
+      }
+      if (typeof row === 'undefined') {
+        row = this.steelMap
+      }
+      if (row.outGateTime == null) {
+        this.$message.error('该车还未出厂,暂无轨迹')
+        return
+      }
+      let that = this
+      that.axios
+        .post('/api/v1/otms/fullPath?orderNumber=' + row.orderNo)
+        .then(res => {
+          console.log(res.data)
+          if (res.data.data == '-1') {
+            this.$message.error('运输订单未关闭的自提车辆无权查看!')
+          } else if (res.data.data.startAndEndRoutes != null) {
+            that.pathOption.orderNumber = row.orderNo
+            that.pathOption.capacityNumber = row.capacityNo
+            that.pathOption.startPointName = '达钢集团小东门'
+            that.pathOption.endPointName = row.receiptAddress
+            that.value7 = true
+            if (row.orderStatus == '已完成') {
+              that.pathOption.statusCode = '位置'
+            } else {
+              that.pathOption.statusCode = '当前位置'
+            }
+          } else {
+            this.$message.error('车辆没有开启GPS')
+          }
+        })
+    },
+    cellClik(row, column, cell, event) {
+      if (column.property == 'arrivalAddress') {
+        if (row.orderNo && row.arrivalAddress) {
+          this.downloadCapacityNo = `${row.orderTime}-${row.capacityNo}`
+          this.toPhotoClick(row.orderNo, 1)
+        }
+      }
+      if (column.property == 'receiptAddress') {
+        if (row.orderNo && row.receiptAddress) {
+          this.downloadCapacityNo = `${row.orderTime}-${row.capacityNo}`
+          this.receipctPhotoClick(row.orderNo, 1)
+        }
+      }
+    },
+    //反关闭运单
+    reverseCloseOrder() {
+      this.axios
+        .post('/api/v1/ams/reverseCloseOrder', this.steelMap)
+        .then(res => {
+          this.operation(this.steelMap)
+          this.onclick(this.filterMap)
+        })
+    },
+    //筛选
+    //筛选客户
+    //点击操作弹出框
+    operation(row) {
+      // this.isRowClick = 0
+      this.isCheckGPS = true
+      if (Object.values(this.steelMap).length == 0) {
+        this.$message.error('请点击需要执行更改操作的行!')
+        return
+      }
+      if (typeof row === 'undefined') {
+        row = this.steelMap
+      }
+      //所有销售审核通知标记为已读
+      if (this.taskAllNum > 0) {
+        this.readAll()
+      }
+      this.axios
+        .post(
+          '/api/v1/tms/getSteelReportDetailsBySmId?saleOrderMaterialId=' +
+            row.saleOrderMaterialId
+        )
+        .then(res => {
+          this.steelMap = res.data.data
+          this.steelMap.userName = getCookie('loginName')
+          this.addressId = row.shipperAddressId
+          this.$nextTick(() => {
+            this.$refs.qrCodeUrl.innerHTML = ''
+            if (this.steelMap.orderNo != null) {
+              this.creatQrCode(this.steelMap.orderNo)
+            }
+          })
+          this.getAllProvince()
+          this.onchangeProvince()
+          this.onchangeCity()
+          this.centerDialogVisible = true
+          this.getSpanArr1(res.data.data.mapList)
+        })
+    },
+    //查看抵达图
+    toPhotoClick(orderNo, num) {
+      this.axios
+        .post('/api/v1/otms/getArrivalPhoto?orderNumber=' + orderNo)
+        .then(res => {
+          this.srcList = []
+          this.previewSrcList = res.data
+          console.log(res.data, 'sd')
+          res.data.forEach(e => {
+            this.srcList.push({
+              title: '',
+              src: e
+            })
+          })
+          // this.srcList.push({
+          //   title: '车头照片',
+          //   src: res.data[0]
+          // })
+          // this.srcList.push({
+          //   title: '满货箱照片',
+          //   src: res.data[1]
+          // })
+          if (num == 1) {
+            this.isShow3 = true
+          } else {
+            this.isShow = true
+          }
+        })
+    },
+    //查看实时路径
+    checkPoint() {
+      if (this.input || this.input1 || this.steelMap.capacityNo) {
+        this.carNumber = this.input || this.input1 || this.steelMap.capacityNo
+        this.value8 = true
+      } else {
+        this.$message.error('请输入或者点击有车牌号的行查询车牌号的实时路径')
+      }
+    },
+    //查看签收图
+    receipctPhotoClick(orderNo, num) {
+      this.axios
+        .post('/api/v1/otms/getReceivingPhotoByUrl?orderNumber=' + orderNo)
+        .then(res => {
+          console.log(res.data)
+          if (num == 1) {
+            this.isShow4 = true
+          } else {
+            this.isShow2 = true
+          }
+          this.srcList2 = []
+          this.previewSrcList2 = res.data
+          if (res.data && res.data.length > 0) {
+            res.data.forEach(item => {
+              this.srcList2.push({
+                title: '',
+                src: item
+              })
+            })
+          }
+        })
+    },
+    //反关闭整条分录
+    adverseCloseSaleMaterial(row) {
+      console.log(row.saleMaterialId)
+      this.$confirm('确定反关闭该条分录?', '提示', {
+        cancelButtonText: '取消',
+        confirmButtonText: '确定',
+        center: true
+      }).then(() => {
+        this.axios
+          .post(
+            '/api/v1/ams/adverseCloseSaleMaterial?saleMaterialId=' +
+              row.saleMaterialId
+          )
+          .then(res => {
+            if (res.data.code == '200') {
+              this.$message.success('反关闭成功')
+              this.operation(this.steelMap)
+              this.onclick(this.filterMap)
+            } else {
+              this.$message.error('反关闭失败')
+              this.operation(this.steelMap)
+              this.onclick(this.filterMap)
+            }
+          })
+          .catch(() => {
+            this.$message.error('反关闭失败')
+            this.onclick(this.filterMap)
+          })
+      })
+    },
+    //销售钢材报表导出excel
+    exportAllReportToExcel() {
+      const loading = this.$loading({
+        lock: true,
+        text: '正在导出Excel',
+        spinner: 'el-icon-loading',
+        background: 'rgba(0, 0, 0, 0.7)'
+      })
+      var title = this.tableTitle
+      let tHeader = []
+      let filterVal = []
+      if (
+        getCookie('orgCode') == 'shouhuokehu' ||
+        getCookie('orgCode') == 'xiaoshouyewuyuan'
+      ) {
+        tHeader = []
+        filterVal = []
+        let tHeader1 = this.salerExportExcelList.filter(e => {
+          if (this.columnNoRoutList.indexOf(e) == -1) {
+            return e
+          }
+        })
+        console.log(tHeader1)
+        let arr = this.$refs.tableRef.$children
+        for (var i = 0; i < tHeader1.length; i++) {
+          for (var j = 0; j < arr.length; j++) {
+            if (arr[j].label === tHeader1[i]) {
+              if (tHeader.indexOf(arr[j].label) === -1) {
+                tHeader.push(arr[j].label)
+              }
+              if (filterVal.indexOf(arr[j].prop) === -1) {
+                filterVal.push(arr[j].prop)
+              }
+            }
+          }
+        }
+      } else {
+        this.$refs.tableRef.$children.forEach(item => {
+          if (item.label != undefined && item.prop != undefined) {
+            if (tHeader.indexOf(item.label) === -1) {
+              tHeader.push(item.label)
+            }
+            if (filterVal.indexOf(item.prop) === -1) {
+              filterVal.push(item.prop)
+            }
+          }
+        })
+      }
+      this.downloadLoading = true
+      tHeader.unshift('车序号')
+      filterVal.unshift('saleOrderMaterialId')
+
+      require.ensure([], () => {
+        const {
+          export_json_to_excel
+        } = require('@/assets/excel/Export2Excel.js') //这里必须使用绝对路径,使用@/+存放export2Excel的路径
+        let data = this.disposeDataToExcel(this.tableData).map(v =>
+          filterVal.map(j => v[j])
+        ) //3.formatJson格式转换
+        export_json_to_excel(tHeader, data, title) // (title)导出的表格名称
+      })
+      loading.close()
+    },
+    disposeDataToExcel(data) {
+      //如果批次相同,只允许一条磅重和运费置为0
+      //首先找出批次相同的数组元素
+      data.reduce((prev, item) => {
+        if (item.weightBatchId) {
+          //如果有批次则走这个方法
+          if (prev.length > 0) {
+            let hash = prev[prev.length - 1]
+            //如果处理后的数组长度大于0,那么判断处理后的数组的最后一个元素里面的批次是否与当前批次相等,如果相等
+            if (
+              item.weightBatchId &&
+              hash.weightBatchId &&
+              item.weightBatchId == hash.weightBatchId
+            ) {
+              prev[prev.length - 1].netWeight = 0
+              prev[prev.length - 1].detailsAmount = 0
+            }
+          }
+          prev.push(item)
+          return prev
+        } else {
+          prev.push(item)
+          return prev
+        }
+      }, [])
+      return data
+    },
+    changeScreen() {},
+    //承运商弹出层
+    handleSelectCarrier() {
+      this.carrierList.forEach(item => {
+        if (item.carrierName == this.steelMap.carrierName) {
+          this.steelMap.newCarrierId = item.carrierId
+          this.steelMap.carrierId = item.carrierId
+        }
+      })
+    },
+    //承运商边输边查
+    querySearchCarrier(queryString, cb) {
+      if (queryString != null && queryString != '' && queryString.length > 1) {
+        this.axios
+          .post('/api/v1/uc/getCarrierMesByLike?index=' + queryString)
+          .then(res => {
+            if (res.data.code == '200') {
+              this.carrierList = []
+              if (res.data.data.length == 0) {
+                this.$message.info('承运商不存在,请前往注册')
+                return
+              }
+              var restaurants = res.data.data
+              this.carrierList = res.data.data
+              var results = queryString
+                ? restaurants.filter(this.createFilterCarrier(queryString))
+                : restaurants
+              cb(results)
+            }
+          })
+      }
+    },
+    createFilterCarrier(queryString) {
+      return restaurants => {
+        return (
+          restaurants.value1.toLowerCase().indexOf(queryString.toLowerCase()) >
+          -1
+        )
+      }
+    },
+    //以下是车牌号边输边查搜索
+    querySearch(queryString, cb) {
+      console.log(queryString)
+      if (
+        (queryString != null && queryString != '' && queryString.length > 3) ||
+        queryString == '取消' ||
+        queryString == '待定' ||
+        queryString == '空白'
+      ) {
+        this.axios
+          .post('/api/v1/uc/getCapacityByLike?index=' + queryString)
+          .then(res => {
+            this.capacityList = []
+            if (res.data.code == '200') {
+              if (res.data.data.length == 0) {
+                this.$message.info('车牌号不存在,请前往注册')
+                return
+              }
+              var restaurants = res.data.data
+              this.capacityList = res.data.data
+              var results = queryString
+                ? restaurants.filter(this.createFilter(queryString))
+                : restaurants
+              // 调用 callback 返回建议列表的数据
+              cb(results)
+            }
+          })
+      }
+    },
+    createFilter(queryString) {
+      return restaurants => {
+        return (
+          restaurants.value.toLowerCase().indexOf(queryString.toLowerCase()) >
+          -1
+        )
+      }
+    },
+    //车牌号弹出层
+    handleSelect() {
+      this.capacityList.forEach(item => {
+        if (item.capacityNumber === this.steelMap.capacityNo) {
+          this.steelMap.newsCapacityId = item.capacityId
+        }
+      })
+    },
+    updateCapacity() {
+      console.log('我只想测')
+      this.steelMap.capacityId = this.steelMap.newsCapacityId
+      this.steelMap.driverTel = this.steelMap.capacityTel
+      this.steelMap.userId = getCookie('userId')
+      if (this.steelMap.newsCapacityId == null) {
+        this.$message.warning('请先注册车牌号或者选中弹出后再提交!')
+        return
+      }
+      if (
+        !(
+          isVehicleNumber(this.steelMap.capacityNo) ||
+          this.steelMap.capacityNo == '取消' ||
+          this.steelMap.capacityNo == '待定' ||
+          this.steelMap.capacityNo == '空白'
+        )
+      ) {
+        this.$message.error('请输入正确格式的车牌号!')
+        return
+      }
+      //是否校验GPS
+      this.steelMap.isCheckGPS = this.isCheckGPS
+      if (this.steelMap.capacityIds != 0) {
+        const loading = this.$loading({
+          lock: true,
+          text: '正在变更车牌号',
+          spinner: 'el-icon-loading',
+          background: 'rgba(0, 0, 0, 0.7)'
+        })
+        this.axios
+          .post('/api/v1/ams/updateCapacityNumberInFactory', this.steelMap)
+          .then(res => {
+            if (res.data.code == 200) {
+              this.$message({
+                type: 'success',
+                message: '变更车号成功,请通知驾驶员',
+                duration: 2500,
+                offset: '250'
+              })
+              this.operation(this.steelMap)
+              this.onclick(this.filterMap)
+              loading.close()
+            } else {
+              this.$alert(res.data.data, '提示', {
+                confirmButtonText: '确定',
+                center: true,
+                type: 'warning',
+                callback: action => {
+                  this.onclick(this.filterMap)
+                  this.operation(this.steelMap)
+                }
+              })
+              loading.close()
+            }
+          })
+          .catch(() => {
+            this.$message.success('变更失败,请联系管理员')
+            loading.close()
+          })
+      } else {
+        if (this.steelMap.carrierIds == 0) {
+          this.$message.error('请先选择承运商!')
+          return
+        }
+        this.steelMap.lineId = this.lineSpelling[this.steelMap.mapList.length]
+        this.steelMap.driverTel = this.steelMap.capacityTel
+        this.steelMap.capacityNumber = this.steelMap.capacityNo
+        let arr = []
+        arr.push(this.steelMap)
+        const loading = this.$loading({
+          lock: true,
+          text: '正在派车,请稍候',
+          spinner: 'el-icon-loading',
+          background: 'rgba(0, 0, 0, 0.7)'
+        })
+        this.axios
+          .post('/api/v1/ams/dispatchSteelOrder', arr)
+          .then(res => {
+            if (res.data.code == '200') {
+              this.$message.success('派车成功!')
+              this.operation(this.steelMap)
+              this.axios
+                .post(
+                  '/api/v1/ams/matchingDriverTelRecently?capacityNumber=' +
+                    this.steelMap.capacityNo
+                )
+                .then(res => {
+                  // if (res.data.data != null) {
+                  //   this.steelMap.capacityTel = res.data.data
+                  //   this.updateDriverTel()
+                  // }
+                })
+              this.onclick(this.filterMap)
+              loading.close()
+            } else {
+              loading.close()
+              this.$alert(res.data.data, '提示', {
+                confirmButtonText: '确定',
+                center: true,
+                callback: action => {
+                  this.onclick(this.filterMap)
+                  this.operation(this.steelMap)
+                }
+              })
+            }
+          })
+          .catch(() => {
+            this.$message.error(res.data.data)
+            this.operation(this.steelMap)
+            this.onclick(this.filterMap)
+            loading.close()
+          })
+      }
+    },
+    //修改司机电话号码
+    updateDriverTel() {
+      const loading = this.$loading({
+        lock: true,
+        text: '修改电话号码中',
+        spinner: 'el-icon-loading',
+        background: 'rgba(0, 0, 0, 0.7)'
+      })
+      if (
+        this.steelMap.capacityTel == null ||
+        this.steelMap.capacityTel == ''
+      ) {
+        this.$message.error('电话号码不能为空')
+        loading.close()
+        return
+      }
+      var regex = /^[1][2,3,4,5,6,7,8,9][0-9]{9}$/
+      if (!regex.test(this.steelMap.capacityTel)) {
+        this.$message.error('电话号码不符合规则')
+        loading.close()
+        return
+      }
+      this.axios
+        .post('/api/v1/uc/updateDriverTel', {
+          orderId: parseInt(this.steelMap.orderId),
+          saleOrderMaterialId: parseInt(this.steelMap.saleOrderMaterialId),
+          driverTel: this.steelMap.capacityTel
+        })
+        .then(res => {
+          if (res.data.code == '200') {
+            this.$message({
+              type: 'success',
+              duration: 2000,
+              message: '修改电话号码成功',
+              offset: 250
+            })
+            this.operation(this.steelMap)
+            this.onclick(this.filterMap)
+            loading.close()
+          } else {
+            this.$message.error('修改失败')
+            this.operation(this.steelMap)
+            this.onclick(this.filterMap)
+            loading.close()
+          }
+        })
+        .catch(() => {
+          this.$message.error('修改失败')
+          this.operation(this.steelMap)
+          this.onclick(this.filterMap)
+          loading.close()
+        })
+    },
+    //修改收货客户电话
+    updateconsigneeTel() {
+      const loading = this.$loading({
+        lock: true,
+        text: '修改电话号码中',
+        spinner: 'el-icon-loading',
+        background: 'rgba(0, 0, 0, 0.7)'
+      })
+      if (
+        this.steelMap.consigneeTel == null ||
+        this.steelMap.consigneeTel == ''
+      ) {
+        this.$message.error('电话号码不能为空')
+        return
+      }
+      this.axios
+        .post('/api/v1/ams/updateConsigneeTel', {
+          saleOrderNo: this.steelMap.saleOrderNo,
+          saleOrderMaterialId: this.steelMap.saleOrderMaterialId,
+          consigneeTel: this.steelMap.consigneeTel
+        })
+        .then(res => {
+          if (res.data.code == '200') {
+            this.$message.success('修改成功')
+            this.operation(this.steelMap)
+            this.onclick(this.filterMap)
+            loading.close()
+          } else {
+            this.$message.error('修改失败')
+            this.operation(this.steelMap)
+            this.onclick(this.filterMap)
+            loading.close()
+          }
+        })
+        .catch(() => {
+          this.$message.error('修改失败')
+          this.operation(this.steelMap)
+          this.onclick(this.filterMap)
+          loading.close()
+        })
+    },
+    //批量修改收货客户电话
+    batchUpdateconsigneeTel() {
+      const loading = this.$loading({
+        lock: true,
+        text: '修改电话号码中',
+        spinner: 'el-icon-loading',
+        background: 'rgba(0, 0, 0, 0.7)'
+      })
+      if (!this.consigneeTel) {
+        this.$message.error('电话号码不能为空')
+        loading.close()
+        return
+      }
+      this.batchCapacityList.forEach(row => {
+        this.axios
+          .post('/api/v1/ams/updateConsigneeTel', {
+            saleOrderNo: row.saleOrderNo,
+            saleOrderMaterialId: row.saleOrderMaterialId,
+            consigneeTel: this.consigneeTel
+          })
+          .then(res => {
+            if (res.data.code == '200') {
+              this.$message.success('修改成功')
+            } else {
+              this.$message.error('修改失败')
+            }
+          })
+          .catch(() => {
+            this.$message.error('修改失败')
+          })
+      })
+      this.onclick(this.filterMap)
+      loading.close()
+      this.batchCarrierVisible = false
+    },
+    //关闭车辆金蝶分录
+    deleteEasEntryId() {
+      this.$confirm('确定关闭该车金蝶分录吗?', '提示', {
+        confirmButtonText: '是',
+        cancelButtonText: '否',
+        center: true,
+        type: 'warning'
+      })
+        .then(() => {
+          let map = this.steelMap
+          map.operateName = getCookie('loginName')
+          map.isCloseEas = Number(0)
+          map.userName = getCookie('loginName')
+          const loading = this.$loading({
+            lock: true,
+            text: '正在关闭车辆',
+            spinner: 'el-icon-loading',
+            background: 'rgba(0, 0, 0, 0.7)'
+          })
+          this.axios
+            .post('/api/v1/ams/updateCarAddress', map)
+            .then(res => {
+              if (res.data.code == '200') {
+                this.$message.success('关闭车辆成功')
+                this.onclick(this.filterMap)
+                this.operation(this.steelMap)
+                loading.close()
+              } else {
+                this.$message.error('关闭车辆失败')
+                this.operation(this.steelMap)
+                this.onclick(this.filterMap)
+                loading.close()
+              }
+            })
+            .catch(() => {
+              this.$message.error('关闭车辆失败')
+              this.operation(this.steelMap)
+              this.onclick(this.filterMap)
+              loading.close()
+            })
+        })
+        .catch(() => {
+          this.$message.info('取消关闭')
+        })
+    },
+    //修改承运商授权
+    updateTruckCarrier() {
+      if (this.steelMap.newCarrierId == null) {
+        this.$message.warning('请注册承运商或者选中弹出层之后再提交!')
+        this.onclick(this.filterMap)
+        return
+      }
+      if (this.steelMap.carrierIds != 0) {
+        const loading = this.$loading({
+          lock: true,
+          text: '正在修改承运商授权',
+          spinner: 'el-icon-loading',
+          background: 'rgba(0, 0, 0, 0.7)'
+        })
+        this.axios
+          .post('/api/v1/ams/updateTruckNoCarrier', this.steelMap)
+          .then(res => {
+            if (res.data.code == '200') {
+              this.$message.success('修改承运商授权成功')
+              this.operation(this.steelMap)
+              this.onclick(this.filterMap)
+              loading.close()
+            } else {
+              this.$message.error('修改失败,请联系管理员!')
+              this.operation(this.steelMap)
+              this.onclick(this.filterMap)
+              loading.close()
+            }
+          })
+          .catch(() => {
+            this.$message.error('修改失败,请联系管理员!')
+            this.operation(this.steelMap)
+            this.onclick(this.filterMap)
+            loading.close()
+          })
+      } else {
+        //授权承运商
+        let arr = []
+        arr.push(this.steelMap)
+        const loading = this.$loading({
+          lock: true,
+          text: '正在授权承运商',
+          spinner: 'el-icon-loading',
+          background: 'rgba(0, 0, 0, 0.7)'
+        })
+        this.axios
+          .post('/api/v1/ams/dispatchToCarrier', arr)
+          .then(res => {
+            if (res.data.code == '0') {
+              this.$message.success('授权承运商成功')
+              this.operation(this.steelMap)
+              this.onclick(this.filterMap)
+              loading.close()
+            } else {
+              this.$message.error('授权失败,请联系管理员')
+              this.operation(this.steelMap)
+              this.onclick(this.filterMap)
+              loading.close()
+            }
+          })
+          .catch(() => {
+            this.$message.error('授权失败,请联系管理员')
+            this.operation(this.steelMap)
+            this.onclick(this.filterMap)
+            loading.close()
+          })
+      }
+    },
+    updateAddress(row) {
+      this.drawer = true
+      this.addressRow = row
+      this.province = row.addressProvince
+      this.city = row.addressDistrict
+      this.county = row.addressTown
+      this.addressId = row.shipperAddressId
+      this.getAllProvince()
+      this.onchangeProvince()
+      this.onchangeCity()
+    },
+    //获取所有省数据
+    getAllProvince() {
+      // this.provinceList = []
+      // return
+      this.axios
+        .post('/api/v1/uc/getAllProvince')
+        .then(res => {
+          // console.log(res.data.data)
+          this.provinceList = res.data.data
+        })
+        .catch(e => {
+          console.log(e)
+        })
+    },
+    //省改变
+    onchangeProvince() {
+      this.axios
+        .post(
+          '/api/v1/uc/getDistrictByProvince?addressProvince=' +
+            this.steelMap.addressProvince +
+            '&i=' +
+            new Date()
+        )
+        .then(res => {
+          this.cityList = res.data.data
+          // this.city = "";
+          // this.county = "";
+        })
+    },
+    //市改变
+    onchangeCity() {
+      this.axios
+        .post(
+          '/api/v1/uc/getTownByDistrict?addressDistrict=' +
+            this.steelMap.addressDistrict +
+            '&i=' +
+            new Date()
+        )
+        .then(res => {
+          this.countyList = res.data.data
+        })
+    },
+    //县(区)改变
+    onchangeCounty() {
+      let mapValue = {
+        addressProvince: this.steelMap.addressProvince,
+        addressDistrict: this.steelMap.addressDistrict,
+        addressTown: this.steelMap.addressTown
+      }
+      this.axios.post('/api/v1/uc/getPlaceByAllAddress', mapValue).then(res => {
+        this.addressId = res.data.data[0].addressId
+      })
+    },
+    //收货地址弹出层
+    handleSelect1(item) {
+      console.log('获取所有下拉值!')
+    },
+    //以下是收货地址边输边查搜索
+    querySearch1(queryString, cb) {
+      this.axios
+        .post(
+          '/api/v1/ams/getRealAddressByLike?addressId=' +
+            this.addressId +
+            '&index=' +
+            queryString
+        )
+        .then(res => {
+          if (res.data.code == '200') {
+            var restaurants = res.data.data
+            var results = queryString
+              ? restaurants.filter(this.createFilter1(queryString))
+              : restaurants
+            // 调用 callback 返回建议列表的数据
+            cb(results)
+          }
+        })
+    },
+    createFilter1(queryString) {
+      return restaurants => {
+        return (
+          restaurants.value.toLowerCase().indexOf(queryString.toLowerCase()) >
+          -1
+        )
+      }
+    },
+    //修改收货地址
+    addAddressClick() {
+      const loading = this.$loading({
+        lock: true,
+        text: '正在修改收货地址',
+        spinner: 'el-icon-loading',
+        background: 'rgba(0, 0, 0, 0.7)'
+      })
+      let map = this.steelMap
+      map.isCloseEas = Number(1)
+      map.isNewCar = Number(1)
+      map.userName = getCookie('loginName')
+      map.shipperAddressId = this.addressId
+      this.axios
+        .post('/api/v1/ams/updateCarAddress', map)
+        .then(res => {
+          if (res.data.code == '200') {
+            // this.$message.success('修改收货地址成功!')
+            this.$message({
+              type: 'success',
+              message:
+                '修改收货地址成功,请提醒相关人员核对单价及详单数据是否生成正确',
+              offset: '250',
+              duration: 2500
+            })
+            this.operation(this.steelMap)
+            this.onclick(this.filterMap)
+            loading.close()
+          } else {
+            this.$message.error('修改失败,请联系管理员!')
+            this.operation(this.steelMap)
+            this.onclick(this.filterMap)
+            loading.close()
+          }
+        })
+        .catch(() => {
+          this.$message.error('修改失败,请联系管理员!')
+          this.operation(this.steelMap)
+          this.onclick(this.filterMap)
+          loading.close()
+        })
+    },
+    //批量修改收货地址
+    batchUpdateCarAddress() {
+      const loading = this.$loading({
+        lock: true,
+        text: '正在修改收货地址',
+        spinner: 'el-icon-loading',
+        background: 'rgba(0, 0, 0, 0.7)'
+      })
+      this.batchCapacityList.forEach(row => {
+        let map = row
+        map.place = this.steelMap.place
+        map.isCloseEas = Number(1)
+        map.isNewCar = Number(1)
+        map.shipperAddressId = this.addressId
+        map.userName = getCookie('loginName')
+        this.axios
+          .post('/api/v1/ams/updateCarAddress', map)
+          .then(res => {
+            if (res.data.code == '200') {
+              this.$message({
+                type: 'success',
+                message:
+                  '修改收货地址成功,请提醒相关人员核对单价及详单数据是否生成正确',
+                offset: '250',
+                duration: 2500
+              })
+            } else {
+              this.$message.error('修改失败,请联系管理员!')
+            }
+          })
+          .catch(() => {
+            this.$message.error('修改失败,请联系管理员!')
+          })
+      })
+      this.onclick(this.filterMap)
+      loading.close()
+      this.batchCarrierVisible = false
+    },
+    //将序号确定下来
+    // getNodeNum(data) {
+    //   for (var i = 0; i < data.length; i++) {
+    //     if (i === 0) {
+    //       data[i].group = i
+    //       data[i].rowKey = i
+    //     } else {
+    //       // 判断当前元素与上一个元素是否相同
+    //       if (data[i].saleOrderMaterialId === data[i - 1].saleOrderMaterialId) {
+    //         data[i].group = data[i - 1].group
+    //         data[i].rowKey = i
+    //       } else {
+    //         data[i].group = data[i - 1].group + 1
+    //         data[i].rowKey = i
+    //       }
+    //     }
+    //   }
+    // },
+    //记录每一行的合并数
+    getSpanArr(data) {
+      //每次调用方法初始化
+      this.spanArr = []
+      this.spanArr2 = []
+      for (var i = 0; i < data.length; i++) {
+        if (i === 0) {
+          this.spanArr.push(1)
+          this.spanArr2.push(1)
+          // data[i].group = i
+          this.pos = 0
+          this.pos2 = 0
+        } else {
+          // 判断当前元素与上一个元素是否相同
+          if (data[i].saleOrderMaterialId === data[i - 1].saleOrderMaterialId) {
+            this.spanArr[this.pos] += 1
+            // data[i].group = data[i - 1].group
+            this.spanArr.push(0)
+
+            if (
+              data[i].weightBatchId &&
+              data[i].weightBatchId === data[i - 1].weightBatchId
+            ) {
+              //批次合并
+              this.spanArr2[this.pos2] += 1
+              this.spanArr2.push(0)
+            } else {
+              this.spanArr2.push(1)
+              this.pos2 = i
+            }
+          } else {
+            this.spanArr.push(1)
+            this.pos = i
+            // data[i].group = data[i - 1].group + 1
+            this.spanArr2.push(1)
+            this.pos2 = i
+          }
+        }
+      }
+    },
+    getSpanArr1(data) {
+      //每次调用方法初始化
+      this.spanArr1 = []
+      this.spanArr3 = []
+      for (var i = 0; i < data.length; i++) {
+        if (i === 0) {
+          this.spanArr1.push(1)
+          this.spanArr3.push(1)
+          // data[i].group = i
+          this.pos1 = 0
+          this.pos3 = 0
+        } else {
+          // 判断当前元素与上一个元素是否相同
+          if (data[i].saleOrderMaterialId === data[i - 1].saleOrderMaterialId) {
+            this.spanArr1[this.pos] += 1
+            // data[i].group = data[i - 1].group
+            this.spanArr1.push(0)
+            if (
+              data[i].weightBatchId &&
+              data[i].weightBatchId === data[i - 1].weightBatchId
+            ) {
+              //批次合并
+              this.spanArr3[this.pos3] += 1
+              this.spanArr3.push(0)
+            } else {
+              this.spanArr3.push(1)
+              this.pos3 = i
+            }
+          } else {
+            this.spanArr1.push(1)
+            this.pos1 = i
+            this.spanArr3.push(1)
+            this.pos3 = i
+            // data[i].group = data[i - 1].group + 1
+          }
+        }
+      }
+    },
+    objectSpanMethod({ row, column, rowIndex, columnIndex }) {
+      if (this.mergeList.indexOf(column.label) != -1) {
+        const _row = this.spanArr[rowIndex]
+        const _col = _row > 0 ? 1 : 0
+        return {
+          rowspan: _row,
+          colspan: _col
+        }
+      } else if (this.mergeListBatch.indexOf(column.label) != -1) {
+        const _row = this.spanArr2[rowIndex]
+        const _col = _row > 0 ? 1 : 0
+        return {
+          rowspan: _row,
+          colspan: _col
+        }
+      }
+    },
+    objectSpanMethod1({ row, column, rowIndex, columnIndex }) {
+      if (this.mergeList.indexOf(column.label) != -1) {
+        const _row = this.spanArr1[rowIndex]
+        const _col = _row > 0 ? 1 : 0
+        return {
+          rowspan: _row,
+          colspan: _col
+        }
+      } else if (this.mergeListBatch.indexOf(column.label) != -1) {
+        const _row = this.spanArr3[rowIndex]
+        const _col = _row > 0 ? 1 : 0
+        return {
+          rowspan: _row,
+          colspan: _col
+        }
+      }
+    },
+    objectSpanMethod2({ row, column, rowIndex, columnIndex }) {
+      if (this.mergeList.indexOf(column.label) != -1) {
+        const _row = this.spanArr1[rowIndex]
+        const _col = _row > 0 ? 1 : 0
+        return {
+          rowspan: _row,
+          colspan: _col
+        }
+      } else if (this.mergeListBatch.indexOf(column.label) != -1) {
+        const _row = this.spanArr3[rowIndex]
+        const _col = _row > 0 ? 1 : 0
+        return {
+          rowspan: _row,
+          colspan: _col
+        }
+      }
+    },
+    //计算总件数和总车数
+    // getTotalNum(data) {
+    //   //通过车序号的个数来计算车数
+    //   let arr = []
+    //   arr = data.map(e => {
+    //     if (
+    //       e.capacityNo != '取消' &&
+    //       e.saleOrderStatus != '反审批' &&
+    //       e.orderStatus != '已关闭'
+    //     ) {
+    //       return e.saleOrderMaterialId
+    //     }
+    //   })
+    //   this.totalCapacity = Array.from(new Set(arr)).length
+    //   this.totalNumber = data.reduce(function(prev, item) {
+    //     return prev + item.materialNum
+    //   }, 0)
+    // },
+    //减少物资件数
+    updateBillOrder(row) {
+      const loading = this.$loading({
+        lock: true,
+        text: '修改物资件数中',
+        spinner: 'el-icon-loading',
+        background: 'rgba(0, 0, 0, 0.7)'
+      })
+      let map = {
+        materialId: row.materialId,
+        materialNum: row.materialNumber
+      }
+      let arr = []
+      arr.push(map)
+      let updateMap = {
+        orderId: this.steelMap.orderId,
+        saleOrderId: this.steelMap.saleOrderId,
+        saleOrderMaterialId: this.steelMap.saleOrderMaterialId,
+        mapList: arr
+      }
+      this.axios
+        .post('/api/v1/oms/updateMaterialMes', updateMap)
+        .then(res => {
+          if (res.data.code == '200') {
+            this.$message.success('修改物资数量成功')
+            this.onclick(this.filterMap)
+            loading.close()
+          } else {
+            this.$message.error('修改物资数量失败,请联系管理员')
+            this.onclick(this.filterMap)
+            loading.close()
+          }
+        })
+        .catch(() => {
+          this.$message.error('修改物资数量失败,请联系管理员')
+          this.onclick(this.filterMap)
+          loading.close()
+        })
+    },
+    //关闭单条分录
+    closeEasEntryId(row) {
+      if (this.steelMap.mapList.length == 1) {
+        this.deleteEasEntryId()
+        return
+      }
+      this.$prompt('确定关闭该条分录吗?', '警告', {
+        confirmButtonText: '确定',
+        cancelButtonText: '取消',
+        center: true,
+        inputPlaceholder: '请输入关闭理由'
+      })
+        .then(({ value }) => {
+          if (value != null || value != '') {
+            const loading = this.$loading({
+              lock: true,
+              text: '正在关闭该条分录',
+              spinner: 'el-icon-loading',
+              background: 'rgba(0, 0, 0, 0.7)'
+            })
+            let map = {
+              orderId: this.steelMap.orderId,
+              saleOrderMaterialId: this.steelMap.saleOrderMaterialId,
+              saleMaterialId: row.saleMaterialId,
+              reason: value,
+              number: this.steelMap.saleOrderNo,
+              closeEntryId: row.closeEntryId
+            }
+            this.axios
+              .post('/api/v1/ams/closeSteelMaterialId', map)
+              .then(res => {
+                if (res.data.code == '200') {
+                  this.$message.success('关闭成功')
+                  this.operation(this.steelMap)
+                  this.onclick(this.filterMap)
+                  loading.close()
+                } else {
+                  this.$message.error('关闭失败,请联系管理员')
+                  this.operation(this.steelMap)
+                  this.onclick(this.filterMap)
+                  loading.close()
+                }
+              })
+              .catch(() => {
+                this.$message.error('关闭失败,请联系管理员')
+                this.operation(this.steelMap)
+                this.onclick(this.filterMap)
+                loading.close()
+              })
+          }
+        })
+        .catch(() => {
+          this.$message.info('取消输入')
+        })
+    },
+    getStatusNum(data) {
+      //未派发、取消
+    },
+    //查询,输入查询条件
+    onclick(obj) {
+      this.$store.commit('updateSaleSteelToggleIds', { isClear: 1 })
+      this.isRowClick = 0
+      this.showPopover = false
+      const loading = this.$loading({
+        lock: true,
+        text: '正在获取数据',
+        spinner: 'el-icon-loading',
+        background: 'rgba(0, 0, 0, 0.7)'
+      })
+      let startTime = null
+      let endTime = null
+      let carrierSsoId = null
+      let carrierName = null
+      let consigneeName = null
+      let capacityNo = null
+      let remark = null
+      let saler = null
+      let easPrimaryId = null
+      let consigneeLoginName = null
+      let receiveAddress = null
+      obj.receiveAddress = null
+      obj.saleNo = null
+      obj.receiveCustomer = null
+      if (this.startTime && this.endTime) {
+        startTime = sjTime(this.startTime)
+        endTime = sjTime(this.endTime)
+      }
+      if (getCookie('orgCode') == 'chengyunshang') {
+        carrierSsoId = getCookie('userId')
+      }
+      if (getCookie('orgCode') == 'xiaoshouyewuyuan') {
+        saler = getCookie('loginName')
+      }
+      if (getCookie('orgCode') == 'shouhuokehu') {
+        consigneeLoginName =
+          JSON.parse(getCookie('userInfo')).userCode || getCookie('loginName')
+        obj.consigneeLoginName = consigneeLoginName
+      }
+      if (this.screen == '客户') {
+        consigneeName = this.input
+      } else if (this.screen == '承运商') {
+        carrierName = this.input
+      } else if (this.screen == '车牌号') {
+        capacityNo = this.input
+      } else if (this.screen == '分录ID') {
+        easPrimaryId = this.input
+      } else if (this.screen == '收货地址') {
+        receiveAddress = this.input
+        obj.receiveAddress = receiveAddress
+      } else if (this.screen == '销售订单号') {
+        obj.saleNo = this.input
+      } else if (this.screen == '收款公司') {
+        obj.receiveCustomer = this.input
+      } else {
+        remark = this.input
+      }
+      if (this.screen1 == '客户' && this.input1 != null && this.input1 != '') {
+        consigneeName = this.input1
+      } else if (
+        this.screen1 == '承运商' &&
+        this.input1 != null &&
+        this.input1 != ''
+      ) {
+        carrierName = this.input1
+      } else if (
+        this.screen1 == '车牌号' &&
+        this.input1 != null &&
+        this.input1 != ''
+      ) {
+        capacityNo = this.input1
+      } else if (
+        this.screen1 == '分录ID' &&
+        this.input1 != null &&
+        this.input1 != ''
+      ) {
+        easPrimaryId = this.input1
+      } else if (
+        this.screen1 == '收货地址' &&
+        this.input1 != null &&
+        this.input1 != ''
+      ) {
+        receiveAddress = this.input1
+        obj.receiveAddress = receiveAddress
+      } else if (
+        this.screen1 == '销售订单号' &&
+        this.input1 != null &&
+        this.input1 != ''
+      ) {
+        obj.saleNo = this.input1
+      } else if (this.screen1 == '收款公司') {
+        obj.receiveCustomer = this.input1
+      } else if (this.input1 != null && this.input1 != '') {
+        remark = this.input1
+      }
+      this.axios
+        .post(
+          '/api/v1/tms/getSaleSteelReportFD?startTime=' +
+            startTime +
+            '&endTime=' +
+            endTime +
+            '&carrierSsoId=' +
+            carrierSsoId +
+            '&i=' +
+            new Date() +
+            '&remark=' +
+            remark +
+            '&consigneeName=' +
+            consigneeName +
+            '&carrierName=' +
+            carrierName +
+            '&capacityNo=' +
+            capacityNo +
+            '&saler=' +
+            saler +
+            '&easPrimaryId=' +
+            encodeURIComponent(easPrimaryId),
+          obj,
+          {
+            timeout: 10 * 60 * 1000
+          }
+        )
+        .then(res => {
+          this.tableData = res.data.data
+          if (res.data.data.length > 0) {
+            this.totalNumber = `${res.data.data[0].totalNumber}件`
+            this.totalCapacity = `${res.data.data[0].totalCapacity}车`
+            this.quxiaoCapacityNum = `${res.data.data[0].quxiaoCapacityNum}车`
+            this.totalNetWeight = `${res.data.data[0].totalNetWeight}吨`
+            console.log(obj, 'obj')
+            if (this.filterMap) {
+              this.filterRefreshCtrl(res.data.data, this.filterMap)
+            }
+          }
+          this.maxHeight =
+            window.innerHeight -
+            document.querySelector('.tableTop').offsetHeight -
+            40
+          let a = 1
+          if (
+            this.visibleList.length > 0 &&
+            this.visibleList.length < this.tableData.length
+          ) {
+            a = this.visibleList[0].rowKey
+          }
+          this.visibleList = []
+          this.visibleList = this.tableData.slice(
+            0,
+            Math.floor(this.maxHeight / this.itemHeight) + 1
+          )
+          this.getSpanArr(this.visibleList)
+          this.$refs.tableRef.bodyWrapper.scrollTop = 30 * (a - 1)
+          // this.getTotalNum(this.tableData)
+          loading.close()
+        })
+        .catch(() => {
+          loading.close()
+          this.maxHeight =
+            window.innerHeight -
+            document.querySelector('.tableTop').offsetHeight -
+            40
+          this.$message.error('查询失败')
+        })
+    },
+    filterRefreshCtrl(data, obj) {
+      if (!obj.truckRemarkList || obj.truckRemarkList.length === 0) {
+        this.filterTruckRemark = data[0].filterTruckRemark
+      }
+      if (!obj.saleRemarkList || obj.saleRemarkList.length === 0) {
+        this.filterSaleRemark = data[0].filterSaleRemark
+      }
+      if (!obj.consigneeNameList || obj.consigneeNameList.length === 0) {
+        this.filterConsigneeList = data[0].filterConsigneeList
+      }
+      if (!obj.addressPlaceList || obj.addressPlaceList.length === 0) {
+        this.filteraddressPlace = data[0].filteraddressPlace
+      }
+      if (!obj.materialSpeList || obj.materialSpeList.length === 0) {
+        this.filtermaterialSpe = data[0].filtermaterialSpe
+      }
+      if (!obj.capacityList || obj.capacityList.length === 0) {
+        this.filterCapacityList = data[0].filterCapacityList
+      }
+      if (!obj.materialNameList || obj.materialNameList.length === 0) {
+        this.filtermaterialNameList = data[0].filtermaterialNameList
+      }
+      if (!obj.carrierList || obj.carrierList.length === 0) {
+        this.filterCarrierList = data[0].filterCarrierList
+      }
+      if (!obj.orderStatusList || obj.orderStatusList.length === 0) {
+        this.filterorderStatus = data[0].filterorderStatus
+      }
+      if (!obj.areaNameList || obj.areaNameList.length === 0) {
+        this.filterAreaName = data[0].filterAreaName
+      }
+      if (
+        !obj.orderStatusActuallyList ||
+        obj.orderStatusActuallyList.length === 0
+      ) {
+        this.filterorderStatusActually = data[0].filterorderStatusActually
+      }
+    },
+    //重新获取表格数据
+    refresh() {
+      this.filterMap = {
+        consigneeNameList: [],
+        truckRemarkList: [],
+        saleRemarkList: [],
+        saleOrderStatusList: [],
+        materialSpeList: [],
+        addressPlaceList: [],
+        orderStatusList: [],
+        saleAreaList: [],
+        materialNameList: [],
+        carrierList: [],
+        capacityList: []
+      }
+      this.visibleList = []
+      this.getSteelReport()
+    },
+    //获取钢材统计报表
+    getSteelReportDebounce() {
+      this.$store.commit('updateSaleSteelToggleIds', { isClear: 1 })
+      console.log('---------------------------1111')
+      const loading = this.$loading({
+        lock: true,
+        text: '正在获取数据,请稍候',
+        spinner: 'el-icon-loading',
+        background: 'rgba(0, 0, 0, 0.7)'
+      })
+      // this.isRowClick = 0
+      let startTime = null
+      let endTime = null
+      let carrierSsoId = null
+      let carrierName = null
+      let consigneeName = null
+      let consigneeLoginName = null
+      let capacityNo = null
+      let remark = null
+      let saler = null
+      if (this.startTime && this.endTime) {
+        startTime = sjTime(this.startTime)
+        endTime = sjTime(this.endTime)
+      }
+      if (getCookie('orgCode') == 'chengyunshang') {
+        carrierSsoId = getCookie('userId')
+      }
+      if (getCookie('orgCode') == 'xiaoshouyewuyuan') {
+        saler = getCookie('loginName')
+      }
+      if (getCookie('orgCode') == 'shouhuokehu') {
+        consigneeLoginName =
+          JSON.parse(getCookie('userInfo')).userCode || getCookie('loginName')
+        // console.log('userinfo')
+        // JSON.parse(getCookie('userInfo')).userCode
+        this.filterMap.consigneeLoginName = consigneeLoginName
+      }
+      if (this.screen == '客户') {
+        consigneeName = this.input
+      } else if (this.screen == '承运商') {
+        carrierName = this.input
+      } else if (this.screen == '车牌号') {
+        capacityNo = this.input
+      } else {
+        remark = this.input
+      }
+      if (this.screen1 == '客户') {
+        consigneeName = this.input1
+      } else if (this.screen1 == '承运商') {
+        carrierName = this.input1
+      } else if (this.screen1 == '车牌号') {
+        capacityNo = this.input1
+      } else {
+        remark = this.input1
+      }
+      if (getCookie('orgCode') == 'chengyunshang') {
+        carrierSsoId = getCookie('userId')
+      }
+      if (getCookie('orgCode') == 'xiaoshouyewuyuan') {
+        saler = getCookie('loginName')
+      }
+      this.axios
+        .post(
+          '/api/v1/tms/getSaleSteelReportFD?startTime=' +
+            startTime +
+            '&endTime=' +
+            endTime +
+            '&carrierSsoId=' +
+            carrierSsoId +
+            '&saler=' +
+            saler +
+            '&i=' +
+            new Date() +
+            '&remark=' +
+            remark +
+            '&consigneeName=' +
+            consigneeName +
+            '&carrierName=' +
+            carrierName +
+            '&capacityNo=' +
+            capacityNo,
+          this.filterMap,
+          { timeout: 6000000 }
+        )
+        .then(res => {
+          this.tableData = res.data.data
+          if (res.data.data.length > 0) {
+            this.totalNumber = `${res.data.data[0].totalNumber}件`
+            this.totalCapacity = `${res.data.data[0].totalCapacity}车`
+            this.quxiaoCapacityNum = `${res.data.data[0].quxiaoCapacityNum}车`
+            this.totalNetWeight = `${res.data.data[0].totalNetWeight}吨`
+            this.filterConsigneeList = res.data.data[0].filterConsigneeList
+            this.filterCarrierList = res.data.data[0].filterCarrierList
+            this.filterCapacityList = res.data.data[0].filterCapacityList
+            this.filtermaterialNameList =
+              res.data.data[0].filtermaterialNameList
+            // this.filterorderStatus = res.data.data[0].filterorderStatus
+            this.filteraddressPlace = res.data.data[0].filteraddressPlace
+            this.filtermaterialSpe = res.data.data[0].filtermaterialSpe
+            this.filterSaleRemark = res.data.data[0].filterSaleRemark
+            this.filterTruckRemark = res.data.data[0].filterTruckRemark
+            this.filterorderStatusActually =
+              res.data.data[0].filterorderStatusActually
+          }
+          this.maxHeight =
+            window.innerHeight -
+            document.querySelector('.tableTop').offsetHeight -
+            40
+          let a = 1
+          if (
+            this.visibleList.length > 0 &&
+            this.visibleList.length < this.tableData.length
+          ) {
+            a = this.visibleList[0].rowKey
+          }
+          this.visibleList = []
+          // this.getNodeLNum(this.tableData)
+          this.visibleList = this.tableData.slice(
+            0,
+            Math.floor(this.maxHeight / this.itemHeight) + 1
+          )
+
+          this.getSpanArr(this.visibleList)
+          this.$refs.tableRef.bodyWrapper.scrollTop = 30 * (a - 1)
+          loading.close()
+        })
+        .catch(() => {
+          this.maxHeight =
+            window.innerHeight -
+            document.querySelector('.tableTop').offsetHeight -
+            40
+          loading.close()
+        })
+    }
+  }
+}
+</script>
+
+<style lang="scss" scoped>
+.saleSteelReports {
+  .tableTop {
+    margin-left: 20px;
+    margin-top: 20px;
+    // height: ;
+  }
+  .table {
+    margin-left: 20px;
+    margin-top: 20px;
+    /deep/ .el-tooltip {
+      width: auto !important;
+    }
+    /deep/ .el-table__body {
+      overflow-y: auto;
+      position: absolute !important;
+      tr:hover > td {
+        background-color: #fff;
+      }
+    }
+
+    ::-webkit-scrollbar {
+      height: 20px;
+      width: 10px;
+      background-color: transparent;
+    }
+
+    /deep/ .scrollBarClass {
+      max-height: 200px;
+      width: 220px;
+    }
+  }
+  /deep/ .el-tabs__new-tab {
+    font-size: 20px;
+    line-height: 20px;
+    font-weight: 700 !important;
+    color: #000;
+  }
+
+  .batchCarrierClass {
+    display: flex;
+    justify-content: center;
+    align-items: center;
+  }
+  .batchCapacityClass {
+    display: flex;
+    justify-content: center;
+    align-items: center;
+  }
+  .dialog {
+    .exceptionHandleClass {
+      display: flex;
+      justify-content: center;
+      align-items: center;
+      font-size: 20px;
+      margin-top: 20px;
+      margin-bottom: 20px;
+    }
+    .steelMapClass {
+      .steelMapClass1 {
+        display: flex;
+        flex-direction: row;
+        justify-content: flex-start;
+        align-items: flex-start;
+        font-size: 16px;
+        .steelMapClass12 {
+          margin-left: 50px;
+          margin-right: 10px;
+        }
+        .steelMapClass13 {
+          display: flex;
+          margin-left: 50px;
+          margin-right: 10px;
+        }
+      }
+      .steelMapClass2 {
+        margin-top: 20px;
+        display: flex;
+        flex-direction: row;
+        justify-content: flex-start;
+        align-items: flex-start;
+        font-size: 16px;
+        .steelMapClass22 {
+          margin-left: 50px;
+          margin-right: 10px;
+          .el-select {
+            .el-input .el-input--suffix {
+              .el-input__inner {
+                border: 0px solid !important;
+              }
+            }
+          }
+        }
+        .qrcode {
+          position: absolute;
+          right: 25px;
+          top: 45px;
+        }
+      }
+      .steelMapClass3 {
+        margin-top: 20px;
+        display: flex;
+        flex-direction: row;
+        justify-content: flex-start;
+        align-items: flex-start;
+        font-size: 16px;
+        .steelMapClass32 {
+          margin-left: 50px;
+          // margin-right: 10px;
+        }
+        .steelMapClass33 {
+          margin-left: 20px;
+          // margin-right: 10px;
+        }
+      }
+      .steelMapClass4 {
+        margin-top: 20px;
+        display: flex;
+        flex-direction: row;
+        justify-content: flex-start;
+        align-items: flex-start;
+        font-size: 16px;
+
+        .steelMapClass42 {
+          margin-left: 50px;
+          margin-right: 10px;
+        }
+        .steelMapClass43 {
+          margin-left: 50px;
+          margin-right: 10px;
+        }
+        .steelMapClass44 {
+          margin-left: 50px;
+          margin-right: 10px;
+        }
+      }
+      .steelMapClass5 {
+        margin-top: 20px;
+        display: flex;
+        flex-direction: row;
+        justify-content: flex-start;
+        align-items: flex-start;
+        font-size: 16px;
+
+        .steelMapClass52 {
+          margin-left: 50px;
+          margin-right: 10px;
+          .steelMapClass521 {
+            margin-left: 20px;
+          }
+        }
+      }
+      .steelMapClass9 {
+        margin-top: 20px;
+        display: flex;
+        flex-direction: row;
+        justify-content: flex-start;
+        align-items: flex-start;
+        font-size: 16px;
+        .steelMapClass92 {
+          margin-left: 50px;
+          margin-right: 10px;
+          .steelMapClass921 {
+            text-align: start;
+            min-width: 350px;
+            .el-textarea {
+              width: auto;
+            }
+            // /deep/ .el-input__prefix {
+            //   display: inline-block;
+            //   position: relative;
+            //   border: 1px solid #dcdfe6;
+            //   box-sizing: border-box;
+            //   color: #606266;
+            //   font-size: inherit;
+            //   height: 40px;
+            //   line-height: 40px;
+            //   padding: 0 30px;
+            //   transition: border-color 0.2s cubic-bezier(0.645, 0.045, 0.355, 1);
+            //   padding-left: 30px;
+            //   left: 0;
+            //   visibility: hidden;
+            // }
+            // /deep/ .el-textarea__inner {
+            //   position: absolute;
+            // }
+          }
+        }
+      }
+      .steelMapClass6 {
+        margin-top: 20px;
+        display: flex;
+        flex-direction: row;
+        justify-content: flex-start;
+        align-items: flex-start;
+        font-size: 16px;
+        .steelMapClass62 {
+          margin-left: 50px;
+          margin-right: 10px;
+        }
+      }
+
+      .steelMapClass7 {
+        margin-top: 20px;
+        display: flex;
+        flex-direction: row;
+        justify-content: flex-start;
+        align-items: flex-start;
+        font-size: 16px;
+        .steelMapClass72 {
+          margin-left: 50px;
+          margin-right: 10px;
+        }
+      }
+    }
+    .table1 {
+      margin-left: 20px;
+      margin-top: 20px;
+      .el-tooltip {
+        width: auto !important;
+      }
+    }
+    .columnShowDialogClass {
+      display: flex;
+      justify-content: center;
+      align-items: center;
+    }
+  }
+}
+</style>

+ 14 - 0
src/views/statisticalReport/router/index.js

@@ -72,6 +72,10 @@ const saleSteelReports = () =>
   import(
     '@/views/statisticalReport/components/salesLogisticsStatistics/saleSteelReports.vue'
   )
+const saleSteelReportsFD = () =>
+  import(
+    '@/views/statisticalReport/components/salesLogisticsStatistics/saleSteelReportsFD.vue'
+  )
 const saleSpelling = () =>
   import(
     '@/views/statisticalReport/components/salesLogisticsStatistics/saleSpelling.vue'
@@ -314,6 +318,16 @@ const constantRouterMap = [
         },
         component: saleSteelReports
       },
+      {
+        path: 'saleSteelReportsFD',
+        name: 'saleSteelReportsFD',
+        meta: {
+          code: 'xtpzgl-yhgl',
+          keepAlive: true,
+          title: '销售钢材报表'
+        },
+        component: saleSteelReportsFD
+      },
       {
         path: 'saleSpelling',
         name: 'saleSpelling',