Преглед на файлове

Merge branch 'purchaseDev' of http://172.16.100.139/new-business/drp-web into purchaseDev

002390 преди 1 година
родител
ревизия
180f014d3d

+ 10 - 10
src/api/WMS/historical-route.js

@@ -3,14 +3,14 @@ import request from "@/utils/request";
 
 // 查询地址
 const queryAddress = (data) => {
-    return request({
-      url: `/geocode/repo`,
-      method: "post",
-      data,
-    });
-  }
+  return request({
+    url: `/geocode/repo`,
+    method: "post",
+    data,
+  });
+}
 
-  export default {
-    queryAddress,
-    
-  }
+export default {
+  queryAddress,
+
+}

+ 361 - 427
src/views/WMS/historical-route/index.vue

@@ -1,6 +1,6 @@
 <template>
   <div id="print">
-    <el-tabs v-model="activeName" type="border-card" @tab-click="handleClick" stretch="true">
+    <el-tabs v-model="activeName" type="border-card" stretch @tab-click="handleClick">
       <el-tab-pane label="温湿度信息" name="first">
         <div id="body" :style="{width: width - 300 + 'px'}">
           <!-- 单据信息 -->
@@ -15,34 +15,18 @@
                 <el-descriptions-item label="结束时间">{{this.basicData.endTime}}</el-descriptions-item>
               </el-descriptions>
               <!--导出按钮-->
-              <el-button class="OutCss" v-print="'#print'" type="primary">导出</el-button>  
+              <el-button class="OutCss" v-print="'#print'" type="primary">导出</el-button>
             </el-timeline>
           </el-timeline>
           <el-timeline>
             <!-- 数据表 -->
             <h2>订单温湿度列表</h2>
-            <el-table
-              :data="tableData2"
-              stripe
-              border
-              style="width: 97%">
-              <el-table-column
-              prop="temperature"
-              label="温度"
-              align="center"
-              min-width="300">
-              </el-table-column>
-              <el-table-column
-              prop="hisDate"
-              label="时间点"
-              align="center"
-              min-width="400">
-              </el-table-column>
-              <el-table-column
-              prop="address"
-              label="地址"
-              min-width="500">
-              </el-table-column>
+            <el-table :data="tableData2" stripe border style="width: 97%">
+              <el-table-column prop="measuringPointName" label="车牌号或保温箱" align="center" min-width="200" />
+              <el-table-column prop="measuringPointAddr" label="探头" align="center" min-width="100" />
+              <el-table-column prop="temperature" label="温度" align="center" min-width="100" />
+              <el-table-column prop="hisDate" label="时间点" align="center" min-width="300" />
+              <el-table-column prop="address" label="地址" min-width="400" />
             </el-table>
           </el-timeline>
         </div>
@@ -69,7 +53,7 @@
               </el-descriptions>
             </el-timeline>
           </el-timeline>
-        
+
           <!-- 地图 -->
           <div id="container"></div>
 
@@ -77,61 +61,18 @@
           <el-timeline>
             <br>
             <h2>订单温湿度列表</h2>
-            <el-table
-            :data="tableData1"
-            height="200"
-            style="width: 97%">
-            <el-table-column
-            prop="maxTemperature"
-            label="温度最大值"
-            align="center"
-            min-width="100">
-            </el-table-column>
-            <el-table-column
-            prop="avgTemperature"
-            label="温度平均值"
-            align="center"
-            min-width="100">
-            </el-table-column>
-            <el-table-column
-            prop="minTemperature"
-            label="温度最小值"
-            align="center"
-            min-width="100">
-            </el-table-column>
-            <el-table-column
-            prop="maxHumidity"
-            label="湿度最大值"
-            align="center"
-            min-width="100">
-            </el-table-column>
-            <el-table-column
-            prop="avgHumidity"
-            label="湿度平均值"
-            align="center"
-            min-width="100">
-            </el-table-column>
-            <el-table-column
-            prop="minHumidity"
-            label="湿度最小值"
-            align="center"
-            min-width="100">
-            </el-table-column>
-            <el-table-column
-            prop="startTime"
-            label="开始时间"
-            align="center"
-            min-width="250">
-            </el-table-column>
-            <el-table-column
-            prop="endTime"
-            align="center"
-            label="结束时间"
-            min-width="250">
-            </el-table-column>
+            <el-table :data="tableData1" height="200" style="width: 97%">
+              <el-table-column prop="maxTemperature" label="温度最大值" align="center" min-width="100" />
+              <el-table-column prop="avgTemperature" label="温度平均值" align="center" min-width="100" />
+              <el-table-column prop="minTemperature" label="温度最小值" align="center" min-width="100" />
+              <el-table-column prop="maxHumidity" label="湿度最大值" align="center" min-width="100" />
+              <el-table-column prop="avgHumidity" label="湿度平均值" align="center" min-width="100" />
+              <el-table-column prop="minHumidity" label="湿度最小值" align="center" min-width="100" />
+              <el-table-column prop="startTime" label="开始时间" align="center" min-width="250" />
+              <el-table-column prop="endTime" label="结束时间" align="center" min-width="250" />
             </el-table>
           </el-timeline>
-      </div>
+        </div>
       </el-tab-pane>
 
     </el-tabs>
@@ -139,379 +80,372 @@
 </template>
 
 <script>
-import AMapLoader from '@amap/amap-jsapi-loader'
+  import AMapLoader from '@amap/amap-jsapi-loader'
   window._AMapSecurityConfig = {
     securityJsCode: '8e23904a0cf421675353f31fd1fc213c'
   }
-import historyApi from '@/api/WMS/historical-route'
-import * as echarts from "echarts";
+  import historyApi from '@/api/WMS/historical-route'
+  import * as echarts from "echarts";
 
-export default {
-  mounted() {
-    //DOM初始化完成进行地图初始化
-    this.initMap();
-    // this.initEcharts();
-  },
-  data() {
-    return {
-      width: document.documentElement.clientWidth - 10,
-      param: this.$route.query,
-      basicData:{
-        billCode: "",
-        plateNumber: "",
-        startTime: "",
-        endTime: ""
-      },
-      //标签页
-      activeName: 'first',
-      //地图对象
-      map: null,
-      //图表
-      myChart: {},
-      xData: [], //横坐标
-      temperatureData: [], //温度数据
-      humidityData: [], //湿度数据
-      myChartStyle: { float: "left", width: "100%", height: "400px" }, //图表样式
-      position: [],
-      //运输信息表单数据
-      tableData1:[],
-      //运输信息表单数据准备
-      modelData1:[{
-        maxTemperature:"",
-        avgTemperature:"",
-        minTemperature:"",
-        maxHumidity:"",
-        avgHumidity:"",
-        minHumidity:"",
-        startTime:"",
-        endTime:""
-      }],
-      tableData2:[],
-      resData:[],
-      resX:[],
-      resYTemperature:[],
-      resYHumidity:[],
-      carMessage:{
-        billCode: "",
-        plateNumber: "",
-        startTime: "",
-        endTime: ""
-      },
-      option:{}
-    };
-  },
-  methods: {
-    handleClick(tab, event) {
-      console.log(tab, event);
-      this.handleGeocodeRepo(this.carMessage);
-    },
-    //地图初始化
-    initMap() {
-      AMapLoader.load({
-        key: 'f953210b2d5276ffbf5a2bc01ef80f55', // 申请好的Web端开发者Key,首次调用 load 时必填
-        version: '2.0', // 指定要加载的 JSAPI 的版本,缺省时默认为 1.4.15
-        plugins: [''] // 需要使用的的插件列表,如比例尺'AMap.Scale'等
-      })
-      .then(AMap => {
-        this.map = new AMap.Map('container', {
-          //设置地图容器id
-          viewMode: '3D', //是否为3D地图模式
-          zoom: 13, //初始化地图级别
-          center: [112.976376,28.195318] //初始化地图中心点位置
-        })
-      })
-      .catch(e => {
-        console.log(e)
-      })
-    },
-    //渲染图表
-    initEcharts() {
-      this.option = {
-        tooltip: {
-          trigger: 'axis'
+  export default {
+    data() {
+      return {
+        width: document.documentElement.clientWidth - 10,
+        param: this.$route.query,
+        basicData: {
+          billCode: "",
+          plateNumber: "",
+          startTime: "",
+          endTime: ""
         },
-        grid: {
-          left: '3%',
-          right: '4%',
-          bottom: '5%',
-          containLabel: true
+        //标签页
+        activeName: 'first',
+        //地图对象
+        map: null,
+        //图表
+        myChart: {},
+        xData: [], //横坐标
+        temperatureData: [], //温度数据
+        humidityData: [], //湿度数据
+        myChartStyle: {
+          float: "left",
+          width: "100%",
+          height: "400px"
+        }, //图表样式
+        position: [],
+        //运输信息表单数据
+        tableData1: [],
+        //运输信息表单数据准备
+        modelData1: [{
+          maxTemperature: "",
+          avgTemperature: "",
+          minTemperature: "",
+          maxHumidity: "",
+          avgHumidity: "",
+          minHumidity: "",
+          startTime: "",
+          endTime: ""
+        }],
+        //温湿度信息表单数据
+        tableData2: [],
+        resData: [],
+        carMessage: {
+          billCode: "",
+          plateNumber: "",
+          boxCode: [],
+          startTime: "",
+          endTime: ""
         },
-        toolbox: {},
-        xAxis: {
-          data: this.xData
-        },
-        legend: { // 图例
-          data: ["温度", "湿度/100"],
-          // bottom: "0%"
-        },
-        yAxis: {},
-        series: [
-        {
-          name: "温度",
-          data: this.temperatureData,
-          type: "line", // 类型设置为折线图
-          label: {
-            show: true,
-            position: "top",
-            textStyle: {
-              fontSize: 16
-            }
-          },
-        }
-        // {
-        //   name: "湿度/100",
-        //   data: this.humidityData,
-        //   type: "line", // 类型设置为折线图
-        //   label: {
-        //     show: true,
-        //     position: "bottom",
-        //     textStyle: {
-        //       fontSize: 16
-        //     }
-        //   }
-        // }
-        ]
+        //线
+        option: {},
+        //表单各值
+        maxT: 0,
+        maxH: 0,
+        minT: 0,
+        minH: 0,
+        aggT: 0,
+        aggH: 0,
+        avgT: 0,
+        avgH: 0
       };
-      this.windowSize();
     },
-     //随着屏幕大小调节图表
-    windowSize() {
-      this.myChart = echarts.init(document.getElementById("mychart"));
-      this.myChart.setOption(this.option);
-      window.addEventListener("resize", () => {
-        this.myChart.resize();
-      });
+    mounted() {
+      //DOM初始化完成进行地图初始化
+      this.initMap();
+      // this.initEcharts();
+      // this.windowSize();
     },
-    //
-    // maploading() {
-    //   var map;
-    //   //基本地图加载
-    //   map = new AMap.Map("container", {
-    //     resizeEnable: true
-    //   });
-    // },
-    handleGeocodeRepo(data) {
-      // let data = {
-      //     billCode: "CS01",
-      //     plateNumber: "湘A79D2R",
-      //     startTime: "2023-02-01",
-      //     endTime: "2023-02-02"
-      // }
-
-      console.log(data, 'data');
-      historyApi.queryAddress(data).then(res => {
-        console.log(res, 'res-----------------');
-        // //X轴时间数据
-        // this.xData = res.data.map(item => {return item.hisDate});
-        // //温度数据转换
-        // this.temperatureData = res.data.map(item => {return item.temperature});
-        // //湿度数据转换
-        // this.humidityData = res.data.map(item => {return item.humidity});
-        let { code, data } = res;
-        // let text;
-        let count = 0;
-        if (code == 200) {
-          //定义经纬度不为0的数组[i]为起点
-          for (let i = 0; i < data.length; i++) {
-            if (data[i].gpsLatitude != 0 && data[i].gpsLongitude != 0) {
-              //定义经纬度不为0的数组[j]为终点
-              for	(let j = data.length - 1; j > i; j--) {
-                if (data[j].gpsLatitude != 0 && data[j].gpsLongitude != 0) {
-                  //绘制初始路径
-                  var path = [];
-                  path.push([data[i].gpsLongitude, data[i].gpsLatitude]);
-                  //起点数据
-                  this.resData[0] = res.data[i];
-                  this.resX[0] = res.data[i].hisDate;
-                  this.resYTemperature[0] = res.data[i].temperature;
-                  this.resYHumidity[0] = res.data[i].humidity / 100;
-                  //判断差值
-                  if ((j - i) < 14) {
-                    //途径点数据
-                    for (let z = i + 1; z < j; z++) {
-                      if(data[z].gpsLongitude != 0 && data[z].gpsLatitude != 0) {
-                        path.push([data[z].gpsLongitude, data[z].gpsLatitude]);
-                        this.resData[count + 1] = res.data[z];
-                        this.resX[count + 1] = res.data[z].hisDate;
-                        this.resYTemperature[count + 1] = res.data[z].temperature;
-                        this.resYHumidity[count + 1] = res.data[z].humidity / 100;
-                        count++;
-                      }
-                    }
-                  } else {
-                    //定义递增值
-                    let increment = Math.trunc((j - i) / 14);
-                    //途径点数据
-                    for (let z = i + increment; z < j; z = z + increment) {
-                      if(data[z].gpsLongitude != 0 && data[z].gpsLatitude != 0) {
-                        path.push([data[z].gpsLongitude, data[z].gpsLatitude]);
-                        this.resData[count + 1] = res.data[z];
-                        this.resX[count + 1] = res.data[z].hisDate;
-                        this.resYTemperature[count + 1] = res.data[z].temperature;
-                        this.resYHumidity[count + 1] = res.data[z].humidity / 100;
-                        count++;
-                      }
-                    }
-                  }
-                  path.push([data[j].gpsLongitude, data[j].gpsLatitude]);
-                  //终点数据
-                  this.resData[count] = res.data[j];
-                  this.resX[count] = res.data[j].hisDate;
-                  this.resYTemperature[count] = res.data[j].temperature;
-                  this.resYHumidity[count] = res.data[j].humidity / 100;
-                  this.xData = res.data.temperature;
-                  this.tableData2 = this.resData;
-                  this.xData = this.resX;
-                  this.temperatureData = this.resYTemperature;
-                  this.humidityData = this.resYHumidity;
-                  //计算订单温湿度列表值
-                  let maxT = data[i].temperature;
-                  let maxH = data[i].humidity;
-                  let minT = data[i].temperature;
-                  let minH = data[i].humidity;
-                  let aggT = 0;
-                  let aggH = 0;
-                  // let test1 = 0;
-                  // let test2 = 0;
-                  for (let x = i; x < j; x++) {
-                    //温度最大值
-                    if (res.data[x].temperature > maxT) {
-                      maxT = res.data[x].temperature;
-                    }
-                    //湿度最大值
-                    if (res.data[x].humidity > maxH) {
-                      maxH = res.data[x].humidity;
-                    }
-                    //温度最小值
-                    if (res.data[x].temperature < minT) {
-                      minT = res.data[x].temperature
-                    }
-                    //湿度最小值
-                    if (res.data[x].humidity < minH) {
-                      minH = res.data[x].humidity
-                    }
-                    // test1 += res.data[x].temperature + ", "
-                    // test2 += res.data[x].humidity + ", "
-                    aggT += parseFloat(res.data[x].temperature);
-                    aggH += parseFloat(res.data[x].humidity);
+    created() {
+      //把传参中的保温箱转换成数组
+      this.carMessage = this.$route.query;
+      this.carMessage.boxCode = this.$route.query.boxCode.split(',');
+      //当结束时间为空时,默认为当前时间
+      if (this.carMessage.endTime == '' || this.carMessage.endTime == null) {
+        this.carMessage.endTime = this.formatDateTime(this.getCurrentTime(), 'yyyy-MM-dd HH:mm:ss');
+      }
+      console.log(this.carMessage, 'this.carMessage')
+      this.handleGeocodeRepo(this.carMessage);
+    },
+    methods: {
+      handleClick(tab, event) {
+        console.log(tab, event);
+        this.handleGeocodeRepo(this.carMessage);
+      },
+      //通过传参查询数据
+      handleGeocodeRepo(data) {
+        historyApi.queryAddress(data).then(res => {
+          console.log(res, 'res-----------------');
+          if (res.code == 200) {
+            //定义路线数组
+            let path = [];
+            //筛选含经纬度的数组
+            let latitudeLongitude = [];
+            let count = 0;
+            for (let i = 0; i < res.data.length; i++) {
+              if (res.data[i].gpsLatitude != 0 && res.data[i].gpsLongitude != 0) {
+                latitudeLongitude[count++] = res.data[i];
+              }
+            }
+            //定义整数递增值,并且绘制初始路径
+            if (latitudeLongitude.length >= 14) {
+              this.increment = Math.trunc(latitudeLongitude.length / 14);
+              for (let i = 0; i < latitudeLongitude.length; i = i + this.increment) {
+                path.push([latitudeLongitude[i].gpsLongitude, latitudeLongitude[i].gpsLatitude]);
+              }
+            } else {
+              for (let i = 0; i < latitudeLongitude.length; i++) {
+                path.push([latitudeLongitude[i].gpsLongitude, latitudeLongitude[i].gpsLatitude]);
+              }
+            }
+            console.log(latitudeLongitude, 'latitudeLongitude')
+            //车辆温度数组
+            for (let i = 0; i < latitudeLongitude.length; i++) {
+              this.temperatureData.push(latitudeLongitude[i].temperature);
+            }
+            // console.log(path, 'path')
+            // console.log(this.temperatureData, 'temperatureData')
+            this.initEcharts();
+            //筛选保温箱的数组
+            console.log(this.carMessage.boxCode, 'this.carMessage.boxCode')
+            for (let i = 0; i < this.carMessage.boxCode.length; i++) {
+              let boxForm = {
+                name: this.carMessage.boxCode[i],
+                data: [],
+                type: "line",
+                smooth: true,
+                label: {
+                  show: true,
+                  position: "top",
+                  textStyle: {
+                    fontSize: 12
                   }
-                  // console.log(aggT, 'aggt');
-                  // console.log(aggH, 'aggh');
-                  // console.log(test1, 'test');
-                  // console.log(test2, 'test2');
-                  // console.log(i, 'i')
-                  // console.log(j, 'j')
-                  let avgT = aggT / (j - i);
-                  let avgH = aggH / (j - i);
-                  //对订单温湿度列表进行赋值
-                  this.modelData1[0].maxTemperature = maxT;
-                  this.modelData1[0].maxHumidity = maxH;
-                  this.modelData1[0].minTemperature = minT;
-                  this.modelData1[0].minHumidity = minH;
-                  this.modelData1[0].avgTemperature = avgT.toFixed(2);
-                  this.modelData1[0].avgHumidity = avgH.toFixed(1);
-                  this.modelData1[0].startTime = res.data[i].hisDate;
-                  this.modelData1[0].endTime = res.data[j].hisDate;
-                  this.tableData1 = this.modelData1;
-                  //对基础数据进行赋值
-                  this.basicData.billCode = this.resData[i].billCode;
-                  this.basicData.plateNumber = this.resData[i].measuringPointName;
-                  this.basicData.startTime = this.modelData1[0].startTime
-                  this.basicData.endTime = this.modelData1[0].endTime
-                  //渲染图表
-                  this.initEcharts();
-                  //基本地图加载
-                  var map, route;
-                  map = new AMap.Map("container", {
-                    resizeEnable: true
-                  });
-                  map.plugin("AMap.DragRoute", function() {
-                    route = new AMap.DragRoute(map, path, AMap.DrivingPolicy.LEAST_FEE); //构造拖拽导航类
-                    route.search(); //查询导航路径并开启拖拽导航
-                  });
-                  return;
+                },
+              }
+              // count = 0;
+              for (let j = 0; j < res.data.length; j++) {
+                if (boxForm.name == res.data[j].measuringPointName) {
+                  boxForm.data[j] = res.data[j].temperature;
                 }
               }
+              this.option.series.push(boxForm);
+              this.option.legend.data.push(boxForm.name);
             }
+            //计算各值
+            this.calculate(res.data);
+            //对订单温湿度列表进行赋值
+            this.assignmentTable1(res.data);
+            //对基础数据进行赋值
+            this.basicData.billCode = this.carMessage.billCode;
+            this.basicData.plateNumber = this.carMessage.plateNumber;
+            this.basicData.startTime = res.data[0].hisDate;
+            this.basicData.endTime = res.data[res.data.length - 1].hisDate;
+            //基本地图加载
+            var map, route;
+            map = new AMap.Map("container", {
+              resizeEnable: true
+            });
+            map.plugin("AMap.DragRoute", function () {
+              route = new AMap.DragRoute(map, path, AMap.DrivingPolicy.LEAST_FEE); //构造拖拽导航类
+              route.search(); //查询导航路径并开启拖拽导航
+            });
+            this.windowSize();
+          }
+        })
+      },
+      //地图初始化
+      initMap() {
+        AMapLoader.load({
+            key: 'f953210b2d5276ffbf5a2bc01ef80f55', // 申请好的Web端开发者Key,首次调用 load 时必填
+            version: '2.0', // 指定要加载的 JSAPI 的版本,缺省时默认为 1.4.15
+            plugins: [''] // 需要使用的的插件列表,如比例尺'AMap.Scale'等
+          })
+          .then(AMap => {
+            this.map = new AMap.Map('container', {
+              //设置地图容器id
+              viewMode: '3D', //是否为3D地图模式
+              zoom: 13, //初始化地图级别
+              center: [112.976376, 28.195318] //初始化地图中心点位置
+            })
+          })
+          .catch(e => {
+            console.log(e)
+          })
+      },
+      //图表属性赋值
+      initEcharts() {
+        this.option = {
+          tooltip: {
+            trigger: 'axis'
+          },
+          grid: {
+            left: '3%',
+            right: '4%',
+            bottom: '5%',
+            containLabel: true
+          },
+          toolbox: {},
+          xAxis: {
+            data: this.xData
+          },
+          legend: { // 图例
+            data: ["车辆温度"],
+            // bottom: "0%"
+          },
+          yAxis: {},
+          dataZoom: [ //加上dataZoom可实现缩放
+            {
+              type: 'slider', //x轴
+              xAxisIndex: 0,
+
+            },
+            {
+              type: 'inside', //x轴
+              xAxisIndex: 0,
+              zoomOnMouseWheel: 'true', //如何触发缩放。可选值为:true:表示不按任何功能键,鼠标滚轮能触发缩放。false:表示鼠标滚轮不能触发缩放。'shift':表示按住 shift 和鼠标滚轮能触发缩放。'ctrl':表示按住 ctrl 和鼠标滚轮能触发缩放。'alt':表示按住 alt 和鼠标滚轮能触发缩放。
+            },
+          ],
+          series: [{
+            name: "车辆温度",
+            data: this.temperatureData,
+            type: "line",
+            smooth: true,
+            label: {
+              show: true,
+              position: "top",
+              textStyle: {
+                fontSize: 12
+              }
+            },
+          }],
+        };
+      },
+      //渲染图表
+      windowSize() {
+        this.myChart = echarts.init(document.getElementById("mychart"));
+        this.myChart.setOption(this.option);
+        window.addEventListener("resize", () => {
+          this.myChart.resize();
+        });
+      },
+      //计算各值
+      calculate(array) {
+        //定义初始值
+        this.maxT = array[0].temperature;
+        this.maxH = array[0].humidity;
+        this.minT = array[0].temperature;
+        this.minH = array[0].humidity;
+        this.aggT = 0;
+        this.aggH = 0;
+        for (let i = 0; i < array.length; i++) {
+          //对X轴的时间进行赋值
+          this.xData[i] = array[i].hisDate;
+          //对Y轴的温度进行赋值
+          // this.temperatureData[i] = array[i].temperature;
+          //温度最大值
+          if (array[i].temperature > this.maxT) {
+            this.maxT = array[i].temperature;
+          }
+          //湿度最大值
+          if (array[i].humidity > this.maxH) {
+            this.maxH = array[i].humidity;
+          }
+          //温度最小值
+          if (array[i].temperature < this.minT) {
+            this.minT = array[i].temperature
           }
+          //湿度最小值
+          if (array[i].humidity < this.minH) {
+            this.minH = array[i].humidity
+          }
+          //温湿度合计值
+          this.aggT += parseFloat(array[i].temperature);
+          this.aggH += parseFloat(array[i].humidity);
         }
-      })
-      // queryAddress({})
-    },
-    //获取当前时间
-    getCurrentTime() {
-      let date = new Date();
-      return date;
-    },
-    //日期名称格式化
-    formatDateTime(date, format) {
-      const o = {
-        'M+': date.getMonth() + 1, // 月份
-        'd+': date.getDate(), // 日
-        'h+': date.getHours() % 12 === 0 ? 12 : date.getHours() % 12, // 小时
-        'H+': date.getHours(), // 小时
-        'm+': date.getMinutes(), // 分
-        's+': date.getSeconds(), // 秒
-        'q+': Math.floor((date.getMonth() + 3) / 3), // 季度
-        S: date.getMilliseconds(), // 毫秒
-        a: date.getHours() < 12 ? '上午' : '下午', // 上午/下午
-        A: date.getHours() < 12 ? 'AM' : 'PM', // AM/PM
-      };
-      if (/(y+)/.test(format)) {
-        format = format.replace(RegExp.$1, (date.getFullYear() + '').substr(4 - RegExp.$1.length));
-      }
-      for (let k in o) {
-        if (new RegExp('(' + k + ')').test(format)) {
-          format = format.replace(
-            RegExp.$1,
-            RegExp.$1.length === 1 ? o[k] : ('00' + o[k]).substr(('' + o[k]).length)
-          );
+        //温湿度平均值
+        this.avgT = this.aggT / array.length;
+        this.avgH = this.aggH / array.length;
+      },
+      //对订单温湿度列表进行赋值
+      assignmentTable1(array) {
+        this.modelData1[0].maxTemperature = this.maxT;
+        this.modelData1[0].maxHumidity = this.maxH;
+        this.modelData1[0].minTemperature = this.minT;
+        this.modelData1[0].minHumidity = this.minH;
+        this.modelData1[0].avgTemperature = this.avgT.toFixed(2);
+        this.modelData1[0].avgHumidity = this.avgH.toFixed(1);
+        this.modelData1[0].startTime = array[0].hisDate;
+        this.modelData1[0].endTime = array[array.length - 1].hisDate;
+        this.tableData1 = this.modelData1;
+        this.tableData2 = array;
+      },
+      //获取当前时间
+      getCurrentTime() {
+        let date = new Date();
+        return date;
+      },
+      //日期名称格式化
+      formatDateTime(date, format) {
+        const o = {
+          'M+': date.getMonth() + 1, // 月份
+          'd+': date.getDate(), // 日
+          'h+': date.getHours() % 12 === 0 ? 12 : date.getHours() % 12, // 小时
+          'H+': date.getHours(), // 小时
+          'm+': date.getMinutes(), // 分
+          's+': date.getSeconds(), // 秒
+          'q+': Math.floor((date.getMonth() + 3) / 3), // 季度
+          S: date.getMilliseconds(), // 毫秒
+          a: date.getHours() < 12 ? '上午' : '下午', // 上午/下午
+          A: date.getHours() < 12 ? 'AM' : 'PM', // AM/PM
+        };
+        if (/(y+)/.test(format)) {
+          format = format.replace(RegExp.$1, (date.getFullYear() + '').substr(4 - RegExp.$1.length));
         }
-      }
-      return format;
-    },
-  },
-  created() {
-    console.log(this.$route.query,'this.$route')
-    this.carMessage = this.$route.query;
-    //当结束时间为空时,默认为当前时间
-    if (this.carMessage.endTime == '' || this.carMessage.endTime == null) {
-      this.carMessage.endTime = this.formatDateTime(this.getCurrentTime(), 'yyyy-MM-dd HH:mm:ss');
+        for (let k in o) {
+          if (new RegExp('(' + k + ')').test(format)) {
+            format = format.replace(
+              RegExp.$1,
+              RegExp.$1.length === 1 ? o[k] : ('00' + o[k]).substr(('' + o[k]).length)
+            );
+          }
+        }
+        return format;
+      },
     }
-    this.handleGeocodeRepo(this.carMessage);
-    console.log(this.carMessage,'this.carMessage')
-  }
-};
+  };
+
 </script>
 
 <style scoped>
-#container {
-  padding: 100px;
-  margin: 10px;
-  width: 1000;
-  height: 800px;
-}
-.OutCss {
-float: right; 
-}
-
-#body {
-  /* padding: 0px 200px 0px 200px; */
-  margin: 0 auto;
+  #container {
+    padding: 100px;
+    margin: 10px;
+    width: 1000;
+    height: 800px;
+  }
 
-}
-@media print {
-  @page {
-    margin: 0;
-    size: portrait;
-    /* size: A4 landscape; size: landscape横向,size: portrait;纵向,如果不设置,则页面有横向和纵向的选择框 */
+  .OutCss {
+    float: right;
   }
 
   #body {
-    /* margin: 20cm; */
+    /* padding: 0px 200px 0px 200px; */
     margin: 0 auto;
-    /* 打印时缩放,防止页面溢出 */
-    zoom: 0.6;
+
+  }
+
+  @media print {
+    @page {
+      margin: 0;
+      size: portrait;
+      /* size: A4 landscape; size: landscape横向,size: portrait;纵向,如果不设置,则页面有横向和纵向的选择框 */
+    }
+
+    #body {
+      /* margin: 20cm; */
+      margin: 0 auto;
+      /* 打印时缩放,防止页面溢出 */
+      zoom: 0.6;
+    }
   }
-}
+
 </style>

+ 2 - 2
src/views/business/spd/bo/behavior/behaviorList.vue

@@ -91,7 +91,7 @@
                 v-model="form.time"
                 type="date"
                 value-format="yyyy-MM-dd"
-                placeholder="请选择行动日期">
+                placeholder="">
               </el-date-picker>
             </el-form-item>
           </el-col>
@@ -158,7 +158,7 @@
           </el-col>
         </el-row>
         <el-row>
-          <el-col :span="6">
+          <el-col :span="8">
             <el-form-item label="销售区域" prop="marketingAreaName">
               <dr-popover-select v-model="form.marketingAreaName" title="销售区域" type="MK_SALESAREA_PARAM" :dataMapping="{
                   marketingArea: 'id',

+ 87 - 26
src/views/business/spd/bo/behavior/index.vue

@@ -1,6 +1,6 @@
 <template>
   <div class="app-container">
-    <el-form :model="queryParams" ref="queryForm" size="mini" :inline="true" v-show="showSearch" label-width="68px">
+    <el-form :model="queryParams" ref="queryForm" size="mini" :inline="true" label-width="68px">
       <el-form-item label="任务编码" prop="taskCode">
         <el-input
           v-model="queryParams.taskCode"
@@ -126,13 +126,13 @@
         </el-divider>
         <el-row>
           <el-col :span="8">
-            <el-form-item label="任务" prop="taskId" v-if="!(this.source == 'BoDetails')">
-              <el-input v-model="form.taskCode" placeholder="请输入任务" :disabled="this.source == 'TaskList'"/>
+            <el-form-item label="任务" prop="taskId">
+              <el-input v-model="form.taskCode"/>
             </el-form-item>
           </el-col>
           <el-col :span="8">
             <el-form-item label="行动类型" prop="type">
-              <el-select v-model="form.type" placeholder="请输入行动类型">
+              <el-select v-model="form.type" placeholder="">
                 <el-option
                   v-for="dict in dict.type.mk_bo_behavior_type"
                   :key="dict.value"
@@ -148,7 +148,7 @@
                 v-model="form.time"
                 type="date"
                 value-format="yyyy-MM-dd"
-                placeholder="请选择行动日期">
+                placeholder="">
               </el-date-picker>
             </el-form-item>
           </el-col>
@@ -156,19 +156,23 @@
         <el-row>
           <el-col :span="8">
             <el-form-item label="客户" prop="customerName">
-              <el-input v-model="form.customerName" placeholder="请输入客户" disabled="this.source == 'BoDetails' || this.source == 'TaskList'"/>
+              <el-input v-model="form.customerName"/>
             </el-form-item>
           </el-col>
           <el-col :span="8">
             <el-form-item label="联系人" prop="linkmanName">
-              <el-input v-model="form.linkmanName" placeholder="请输入联系人" >
-                <el-button slot="append" icon="el-icon-more" @click="refereContact"></el-button>
-              </el-input>
+              <dr-popover-select v-model="form.linkmanName" title="联系人" type="LINKMAN_PARAM" :dataMapping="{
+                  linkman: 'id',
+                  linkmanName: 'name',
+                }" :source.sync="form"
+                :queryParams="additionalCondition"
+              >
+              </dr-popover-select>
             </el-form-item>
           </el-col>
           <el-col :span="8">
             <el-form-item label="拜访目的" prop="purpose">
-              <el-select v-model="form.purpose" placeholder="请输入拜访目的">
+              <el-select v-model="form.purpose" placeholder="">
                 <el-option
                   v-for="dict in dict.type.mk_bo_behavior_goal"
                   :key="dict.value"
@@ -182,7 +186,7 @@
         <el-row>
           <el-col  :span="8">
             <el-form-item label="拜访效果" prop="result">
-              <el-select v-model="form.result" placeholder="请输入拜访效果">
+              <el-select v-model="form.result">
                 <el-option
                   v-for="dict in dict.type.mk_bo_behavior_res"
                   :key="dict.value"
@@ -194,7 +198,7 @@
           </el-col>
           <el-col  :span="8">
             <el-form-item label="是否上级协助" prop="assist">
-              <el-select v-model="form.assist" placeholder="请输入是否上级协助">
+              <el-select v-model="form.assist">
                 <el-option
                   v-for="dict in dict.type.sys_yes_no"
                   :key="dict.value"
@@ -206,33 +210,36 @@
           </el-col>
           <el-col  :span="8">
             <el-form-item label="协助内容" prop="assistContent" v-show="form.assist == 'Y'" :rules="form.assist == 'Y' ? rules.assistContent : [{require: false}]">
-              <el-input v-model="form.assistContent" placeholder="请输入协助内容" />
+              <el-input v-model="form.assistContent"/>
             </el-form-item>
           </el-col>
         </el-row>
         <el-row>
-          <el-col :span="6">
+          <el-col :span="8">
             <el-form-item label="销售区域" prop="marketingAreaName">
-              <el-input v-model="form.marketingAreaName" placeholder="请输入销售区域">
-                <el-button slot="append" icon="el-icon-more" @click="refereSaleaea"></el-button>
-              </el-input>
+              <dr-popover-select v-model="form.marketingAreaName" title="销售区域" type="MK_SALESAREA_PARAM" :dataMapping="{
+                  marketingArea: 'id',
+                  marketingAreaName: 'name',
+                }" :source.sync="form"
+              >
+              </dr-popover-select>
             </el-form-item>
           </el-col>
         </el-row>
         <el-row>
           <el-col  :span="8">
             <el-form-item label="销售组织" prop="salesOrgName">
-              <el-input v-model="form.salesOrgName" placeholder="请输入销售组织" :disabled="true"/>
+              <el-input v-model="form.salesOrgName" :disabled="true"/>
             </el-form-item>
           </el-col>
           <el-col  :span="8">
              <el-form-item label="部门" prop="deptName">
-              <el-input v-model="form.deptName" placeholder="请输入部门" :disabled="true"/>
+              <el-input v-model="form.deptName" :disabled="true"/>
             </el-form-item>
           </el-col>
           <el-col  :span="8">
             <el-form-item label="负责人" prop="staffName">
-              <el-input v-model="form.staffName" placeholder="请输入负责人" :disabled="true"/>
+              <el-input v-model="form.staffName" :disabled="true"/>
             </el-form-item>
           </el-col>
         </el-row>
@@ -252,6 +259,7 @@
         <el-divider content-position="left">
           <dev style="width: 50px; height: 40px; font-size: 18px">照片信息</dev>
         </el-divider>
+
         <el-upload
           action="actionUrl"
           list-type="picture-card"
@@ -272,12 +280,12 @@
             <dev style="width: 50px; height: 40px; font-size: 18px">签卡信息</dev>
           </el-divider>
           <el-table v-loading="loading" :data="form.behaviorXys" height="150px">
-            <el-table-column label="签卡类型" align="center" prop="type">
+            <el-table-column width="150" label="签卡类型" align="center" prop="type">
               <template slot-scope="scope">
                 <dict-tag :options="dict.type.mk_bo_signintype" :value="scope.row.type"/>
               </template>
             </el-table-column>
-            <el-table-column label="签卡时间" align="center" prop="createTime" />
+            <el-table-column width="150" label="签卡时间" align="center" prop="createTime" />
             <el-table-column label="签到地址" align="center" prop="address" />
           </el-table>
         </div>
@@ -310,10 +318,6 @@
           </el-row>
         </div>
       </el-form>
-      <div slot="footer" class="dialog-footer">
-        <el-button size="mini" type="primary" @click="submitForm" v-if="this.operatingState != 'Browse'" :disabled="submitButtonEditStatus">确 定</el-button>
-        <el-button size="mini" @click="cancel">取 消</el-button>
-      </div>
     </el-dialog>
   </div>
 </template>
@@ -326,6 +330,11 @@ export default {
   dicts: ['mk_bo_behavior_res','mk_bo_behavior_type','sys_yes_no','mk_bo_behavior_goal','mk_bo_signintype'],
   data() {
     return {
+      dialogImageUrl: '',
+      dialogVisible: false,
+      disabled: false,
+      actionUrl: process.env.VUE_APP_BASE_API + "/common/upload", // 上传的图片服务器地址,
+      fileList: [],
       // 遮罩层
       loading: true,
       // 选中数组
@@ -373,6 +382,41 @@ export default {
       dateRange: [],
       // 表单参数
       form: {},
+      // 表单校验
+      rules: {
+        type: [
+          { required: true, message: "行动类型不能为空", trigger: "blur" }
+        ],
+        time: [
+          { required: true, message: "行动日期不能为空", trigger: "blur" }
+        ],
+        customerName: [
+          { required: true, message: "客户不能为空", trigger: "blur" }
+        ],
+        linkmanName: [
+          { required: true, message: "联系人不能为空", trigger: "blur" }
+        ],
+        purpose: [
+          { required: true, message: "拜访目的不能为空", trigger: "blur" }
+        ],
+        assist: [
+          { required: true, message: "是否需要上级协助不能为空", trigger: "blur" }
+        ],
+        assistContent: [
+          { required: true, message: "协助内容不能为空", trigger: "blur" }
+        ],
+        staffName: [
+          { required: true, message: "负责人不能为空", trigger: "blur" }
+        ],
+        content: [
+          { required: true, message: "洽谈内容不能为空", trigger: "blur" }
+        ],
+        result: [
+          { required: true, message: "拜访效果不能为空", trigger: "blur" }
+        ],
+      },
+      //当前操作状态
+      operatingState: '',
     };
   },
   created() {
@@ -380,6 +424,16 @@ export default {
     this.getList();
   },
   methods: {
+    uploadPic(file, fileList) {
+      this.fileList = fileList
+    },
+    handleRemove(file) {
+      this.fileList = this.fileList.filter(item => item.uid !== file.uid)
+    },
+    handlePictureCardPreview(file) {
+      this.dialogImageUrl = file.url;
+      this.dialogVisible = true;
+    },
     /** 查询行动列表 */
     getList() {
       this.loading = true;
@@ -456,6 +510,13 @@ export default {
         ...this.queryParams
       }, `behavior_${new Date().getTime()}.xlsx`)
     },
+    additionalCondition(){
+      return {
+        parame:{
+          customer: this.form.customer ? this.form.customer : 'xxx'
+        }
+      }
+    },
   }
 };
 </script>

+ 5 - 0
src/views/purchase/PurchaseDemandList/add.vue

@@ -342,6 +342,7 @@
           <ux-table-column resizable title="调拨单号" align="center"  field="allotCode"></ux-table-column>
           <ux-table-column resizable title="调拨占有量" align="center"  field="allotQty" width="100px"/>
           <ux-table-column resizable title="最终净需求量" align="center"  field="resDemandQty" width="120px"/>
+          <ux-table-column resizable title="关闭数量" align="center"  field="closeQty" width="80px"/>
           <ux-table-column resizable title="最终采购执行数量" align="center"  field="executeQty" width="150px">
             <template v-slot:edit="scope">
               {{ scope.row.executeQty ? scope.row.executeQty : 0 }}
@@ -1349,6 +1350,8 @@ export default {
         this.adjust.contacts = ''
         this.adjust.contactsPhone = ''
         this.adjust.address = ''
+        // 选择完清空参数里面的组织id
+        this.referCondition.pkOrg = ''
       }
       if(this.referCondition.type == 'ALLOCATION_PARAM' && this.referCondition.title == '收货货位') {
         this.adjust.allocation = selection[0].id
@@ -1377,6 +1380,8 @@ export default {
         this.basicForm.puDemandItemList[this.tableIndex].contacts = null
         this.basicForm.puDemandItemList[this.tableIndex].contactsPhone = null
         this.basicForm.puDemandItemList[this.tableIndex].address = null
+        // 选择完清空参数里面的组织id
+        this.referCondition.pkOrg = ''
       }
       if(this.referCondition.title == '选择收货货位') {
         this.basicForm.puDemandItemList[this.tableIndex].deliveryAllocation = selection[0].id

Файловите разлики са ограничени, защото са твърде много
+ 269 - 269
src/views/purchase/purchase-order/add/column.js


+ 33 - 33
src/views/purchase/purchase-order/column.js

@@ -150,17 +150,17 @@ export const TableColumns = [
       isSummary:true,
     },
   },
-  {
-    item: { 
-      key: "isUrgency", 
-      title: "紧急程度",
-      width:100,
-    },
-    attr: { 
-      is: "el-dict-tag", 
-      dictName: "urgency_degree"
-    },
-  },
+  // {
+  //   item: { 
+  //     key: "isUrgency", 
+  //     title: "紧急程度",
+  //     width:100,
+  //   },
+  //   attr: { 
+  //     is: "el-dict-tag", 
+  //     dictName: "urgency_degree"
+  //   },
+  // },
   // {
   //   key: "isMarketing",
   //   title: "已协同生成销售订单",
@@ -1320,28 +1320,28 @@ export const SearchColumns = [
       dictName: "order_delivery_status",
     },
   },
-  {
-    item: { 
-      key: "isUrgency", 
-      title: "紧急标识",
-    },
-    attr: { 
-      clearable: true,
-      is: "el-select", 
-      dictName: "sys_yes_no" 
-    },
-  },
-  {
-    item: { 
-      key: "isReplenishment", 
-      title: "补单标识",
-    },
-    attr: { 
-      clearable: true,
-      is: "el-select", 
-      dictName: "sys_yes_no" 
-    },
-  },
+  // {
+  //   item: { 
+  //     key: "isUrgency", 
+  //     title: "紧急标识",
+  //   },
+  //   attr: { 
+  //     clearable: true,
+  //     is: "el-select", 
+  //     dictName: "sys_yes_no" 
+  //   },
+  // },
+  // {
+  //   item: { 
+  //     key: "isReplenishment", 
+  //     title: "补单标识",
+  //   },
+  //   attr: { 
+  //     clearable: true,
+  //     is: "el-select", 
+  //     dictName: "sys_yes_no" 
+  //   },
+  // },
   
   // {
   //   item:{

+ 2 - 2
src/views/purchase/purchase-order/index.vue

@@ -720,14 +720,14 @@ export default {
           >批量导出</el-button>
           
         </el-button-group>
-        <el-button-group>
+        <!-- <el-button-group>
           <zp-button
             :size="size"
             :select-data="checkedList"
             @success="handleQueryList"
           >
           </zp-button>
-        </el-button-group>
+        </el-button-group> -->
 
       </el-col>
     </el-row>

+ 22 - 22
src/views/purchase/task/columns.js

@@ -253,28 +253,28 @@ export default function useColumns() {
         valueKey: "name",
       },
     },
-    {
-      item: { 
-        key: "isUrgency", 
-        title: "紧急标识",
-      },
-      attr: { 
-        clearable: true,
-        is: "el-select", 
-        dictName: "sys_yes_no" 
-      },
-    },
-    {
-      item: { 
-        key: "isReplenishment", 
-        title: "补单标识",
-      },
-      attr: { 
-        clearable: true,
-        is: "el-select", 
-        dictName: "sys_yes_no" 
-      },
-    },
+    // {
+    //   item: { 
+    //     key: "isUrgency", 
+    //     title: "紧急标识",
+    //   },
+    //   attr: { 
+    //     clearable: true,
+    //     is: "el-select", 
+    //     dictName: "sys_yes_no" 
+    //   },
+    // },
+    // {
+    //   item: { 
+    //     key: "isReplenishment", 
+    //     title: "补单标识",
+    //   },
+    //   attr: { 
+    //     clearable: true,
+    //     is: "el-select", 
+    //     dictName: "sys_yes_no" 
+    //   },
+    // },
     {
       item: {
         key: "documentsCodes",

+ 2 - 2
src/views/purchase/task/index.vue

@@ -155,12 +155,12 @@ export default {
           @success="useQuery(params, page)"
         >
         </zp-button>
-        <lc-button
+        <!-- <lc-button
           :size="size"
           :select-data="selectData"
           @success="useQuery(params, page)"
         >
-        </lc-button>
+        </lc-button> -->
       </el-button-group>
       <!-- <el-button-group>
         <dc-button

Някои файлове не бяха показани, защото твърде много файлове са промени