فهرست منبع

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

002390 2 سال پیش
والد
کامیت
f1e45b8dba

+ 3 - 1
package.json

@@ -38,12 +38,13 @@
     "url": "https://gitee.com/y_project/RuoYi-Vue.git"
   },
   "dependencies": {
+    "@amap/amap-jsapi-loader": "^1.0.1",
     "@gby/deep-copy": "^4.0.0",
     "@riophae/vue-treeselect": "0.4.0",
     "axios": "0.24.0",
     "clipboard": "2.0.8",
     "core-js": "3.25.3",
-    "echarts": "5.4.0",
+    "echarts": "^5.4.0",
     "element-ui": "2.15.12",
     "file-saver": "2.0.5",
     "fuse.js": "6.4.3",
@@ -57,6 +58,7 @@
     "screenfull": "5.0.2",
     "sortablejs": "1.10.2",
     "vue": "2.6.12",
+    "vue-amap": "^0.5.10",
     "vue-count-to": "1.0.13",
     "vue-cropper": "0.5.5",
     "vue-meta": "2.4.0",

+ 264 - 195
src/views/WMS/historical-route/index.vue

@@ -1,217 +1,286 @@
 <template>
-    <!-- 页面 -->
-    <div class="block">
-        <br>
-        <el-timeline>
-            <h1>表单</h1>
-            <el-table
-            :data="tableData"
-            height="250"
-            border
-            style="width: 97%">
-            <el-table-column
-            prop="billCode"
-            label="单据号"
-            width="90">
-            </el-table-column>
-            <el-table-column
-            prop="measuringPointName"
-            label="车牌号"
-            width="110">
-            </el-table-column>
-            <el-table-column
-            prop="temperature"
-            label="温度"
-            width="90">
-            </el-table-column>
-            <el-table-column
-            prop="humidity"
-            label="湿度"
-            width="90">
-            </el-table-column>
-            <el-table-column
-            prop="hisDate"
-            label="时间点"
-            width="180">
-            </el-table-column>
-            <el-table-column
-            prop="address"
-            label="地址"
-            >
-             </el-table-column>
-            </el-table>
-        </el-timeline>
-        <!-- <el-timeline>
-            <input type="button" value="查询" @click="handleQuery" />
-        </el-timeline> -->
+  <!-- 页面 -->
+  <div class="block">
+    <br>
+    <el-timeline>
+      <h1>数据表单</h1>
+      <el-table
+      :data="tableData"
+      height="250"
+      border
+      style="width: 97%">
+      <el-table-column
+      prop="billCode"
+      label="单据号"
+      width="90">
+      </el-table-column>
+      <el-table-column
+      prop="measuringPointName"
+      label="车牌号"
+      width="110">
+      </el-table-column>
+      <el-table-column
+      prop="temperature"
+      label="温度"
+      width="90">
+      </el-table-column>
+      <el-table-column
+      prop="humidity"
+      label="湿度"
+      width="90">
+      </el-table-column>
+      <el-table-column
+      prop="hisDate"
+      label="时间点"
+      width="180">
+      </el-table-column>
+      <el-table-column
+      prop="gpsLongitude"
+      label="经度"
+      width="180">
+      </el-table-column>
+      <el-table-column
+      prop="gpsLatitude"
+      label="纬度"
+      width="180">
+      </el-table-column>
+      <el-table-column
+      prop="address"
+      label="地址">
+        </el-table-column>
+      </el-table>
+    </el-timeline>
 
-        <el-timeline>
-            <br><br><br>
-            <h1>温湿度曲线图</h1>
-            <div class="echart" id="mychart" :style="myChartStyle"></div>
-            <br><br><br>
-            <h1>路线</h1>
-        </el-timeline>
-        <iframe :src = url width="100%" height="1000"> </iframe>
-    </div>
+    <el-timeline>
+      <br><br><br>
+      <h1>温湿度折线图</h1>
+      <div class="echart" id="mychart" :style="myChartStyle"></div>
+      <br><br><br>
+      <h1>历史轨迹</h1>
+    </el-timeline>
+    <!-- <el-timeline>
+      <input type="button" value="查询" @click="aaa" />
+    </el-timeline> -->
+    <div id="container"></div>
+    <!-- <iframe :src = url width="100%" height="1000"> </iframe> -->
+  </div>
 </template>
 
 <script>
+import AMapLoader from '@amap/amap-jsapi-loader'
+  window._AMapSecurityConfig = {
+    securityJsCode: '8e23904a0cf421675353f31fd1fc213c'
+  }
 import historyApi from '@/api/WMS/historical-route'
 import * as echarts from "echarts";
 // import {queryAddress,} from '@/api/WMS/historical-route'
 export default {
-    data() {
-        return {
-            myChart: {},
-            xData: [], //横坐标
-            temperatureData: [], //温度数据
-            humidityData: [], //湿度数据
-            myChartStyle: { float: "left", width: "100%", height: "400px" }, //图表样式
-            position: [],
-            url: '',
-            tableData:[],
-            resData:[],
-            resX:[],
-            resYTemperature:[],
-            resYHumidity:[],
-            carMessage:{
-                billCode: "",
-                plateNumber: "",
-                startTime: "",
-                endTime: ""
-            }
-        };
-    },
-    mounted() {
-        //渲染
-        this.initEcharts();
+  data() {
+    return {
+      //地图对象
+      map: null,
+      myChart: {},
+      xData: [], //横坐标
+      temperatureData: [], //温度数据
+      humidityData: [], //湿度数据
+      myChartStyle: { float: "left", width: "100%", height: "400px" }, //图表样式
+      position: [],
+      // url: '',
+      tableData:[],
+      resData:[],
+      resX:[],
+      resYTemperature:[],
+      resYHumidity:[],
+      carMessage:{
+        billCode: "",
+        plateNumber: "",
+        startTime: "",
+        endTime: ""
+      }
+    };
+  },
+  mounted() {
+    //渲染图表
+    this.initEcharts();
+    //DOM初始化完成进行地图初始化
+    this.initMap()
+  },
+  methods: {
+    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)
+      })
     },
-    methods: {
-        //渲染图标
-        initEcharts() {
-            const option = {
-                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
-                    }
-                    }
-                }
-                ]
-            };
-            this.myChart = echarts.init(document.getElementById("mychart"));
-            this.myChart.setOption(option);
-            //随着屏幕大小调节图表
-            window.addEventListener("resize", () => {
-                this.myChart.resize();
-            });
+    //渲染图表
+    initEcharts() {
+      const option = {
+        xAxis: {
+        data: this.xData
+        },
+        legend: { // 图例
+        data: ["温度", "湿度/100"],
+        bottom: "0%"
         },
-        //查询按钮
-        handleQuery() {
-            // window.location.href = ''
-            this.handleGeocodeRepo(this.carMessage);
-           
+        yAxis: {},
+        series: [
+        {
+          name: "温度",
+          data: this.temperatureData,
+          type: "line", // 类型设置为折线图
+          label: {
+            show: true,
+            position: "top",
+            textStyle: {
+              fontSize: 16
+            }
+          }
         },
-        handleGeocodeRepo(data) {
+        {
+          name: "湿度/100",
+          data: this.humidityData,
+          type: "line", // 类型设置为折线图
+          label: {
+            show: true,
+            position: "bottom",
+            textStyle: {
+              fontSize: 16
+            }
+          }
+        }
+        ]
+      };
+      this.myChart = echarts.init(document.getElementById("mychart"));
+      this.myChart.setOption(option);
+      //随着屏幕大小调节图表
+      window.addEventListener("resize", () => {
+        this.myChart.resize();
+      });
+    },
+    //查询按钮
+    handleQuery() {
+      // window.location.href = ''
+      this.handleGeocodeRepo(this.carMessage);
+    },
+    handleGeocodeRepo(data) {
 
-            // let data = {
-            //     billCode: "CS01",
-            //     plateNumber: "湘A79D2R",
-            //     startTime: "2023-02-01",
-            //     endTime: "2023-02-02"
-            // }
+      // 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) {
-                                    for (let z = i; z < j; z = z + Math.trunc((j - i) / 9)) {
-                                        // console.log("i",i)
-                                        text += `&via[${count}][id][${z}]&via[${count}][lnglat]=${data[z].gpsLongitude},${data[z].gpsLatitude}` ;
-                                        this.resData[count] = res.data[z];
-                                        this.resX[count] = res.data[z].hisDate;
-                                        this.resYTemperature[count] = res.data[z].temperature;
-                                        this.resYHumidity[count] = res.data[z].humidity / 100;
-                                        count++;
-                                    }
-                                    // this.position = data;
-                                    // let url = `//uri.amap.com/navigation?from=${data[0].gpsLongitude},${data[0].gpsLatitude},startpoint&to=${data[data.length-1].gpsLongitude},${data[data.length-1].gpsLatitude},endpoint&via=${data[260].gpsLongitude},${data[260].gpsLatitude},midwaypoint&mode=car&policy=0&src=mypage&coordinate=gaode&callnative=0`
-                                    let url = `https://ditu.amap.com/dir?type=car&policy=1&from[lnglat]=${data[i].gpsLongitude},${data[i].gpsLatitude}&from[name]=startpoint&from[id]=${i}-from&to[lnglat]=${data[j].gpsLongitude},${data[j].gpsLatitude}&to[name]=endpoint&to[id]=${i}-to${text}&src=mypage&callnative=0&platform=pc&innersrc=uriapi`
-                                    console.log(url, 'url---------------------');
-                                    this.url = url;
-                                    this.xData = res.data.temperature;
-                                    this.tableData = this.resData;
-                                    // window.location.href = url;
-                                    // window.open(url, "newWindow", "width=1000,height=1000");
-                                    // window.location.reload();
-                                    this.xData = this.resX;
-                                    this.temperatureData = this.resYTemperature;
-                                    this.humidityData = this.resYHumidity;
-                                    // console.log('this.xData',this.xData);
-                                    // console.log('this.temperatureData',this.temperatureData);
-                                    // console.log('this.humidityData',this.humidityData);
-                                    this.initEcharts();
-                                    console.log(text,'text')
-                                    return;
-                                }
-                            }
-                        }
+      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 map, route;
+                  //基本地图加载
+                  map = new AMap.Map("container", {
+                    resizeEnable: true
+                  });
+                  //绘制初始路径
+                  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;
+                  //定义递增值
+                  let increment = Math.trunc((j - i) / 15);
+                  for (let z = i + increment; z < j; z = z + increment) {
+                  // for (let z = i; z < j; z++) {
+                    // console.log("i",i)
+                    // text += `&via[${count}][id][${z}]&via[${count}][lnglat]=${data[z].gpsLongitude},${data[z].gpsLatitude}` ;
+                    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;
+                  map.plugin("AMap.DragRoute", function() {
+                    route = new AMap.DragRoute(map, path, AMap.DrivingPolicy.LEAST_FEE); //构造拖拽导航类
+                    route.search(); //查询导航路径并开启拖拽导航
+                  });
+                  // this.position = data;
+                  // let url = `//uri.amap.com/navigation?from=${data[0].gpsLongitude},${data[0].gpsLatitude},startpoint&to=${data[data.length-1].gpsLongitude},${data[data.length-1].gpsLatitude},endpoint&via=${data[260].gpsLongitude},${data[260].gpsLatitude},midwaypoint&mode=car&policy=0&src=mypage&coordinate=gaode&callnative=0`
+                  // let url = `https://ditu.amap.com/dir?type=car&policy=1&from[lnglat]=${data[i].gpsLongitude},${data[i].gpsLatitude}&from[name]=startpoint&from[id]=${i}-from&to[lnglat]=${data[j].gpsLongitude},${data[j].gpsLatitude}&to[name]=endpoint&to[id]=${i}-to${text}&src=mypage&callnative=0&platform=pc&innersrc=uriapi`
+                  // console.log(url, 'url---------------------');
+                  // this.url = url;
+                  this.xData = res.data.temperature;
+                  this.tableData = this.resData;
+                  // window.location.href = url;
+                  // window.open(url, "newWindow", "width=1000,height=1000");
+                  // window.location.reload();
+                  this.xData = this.resX;
+                  this.temperatureData = this.resYTemperature;
+                  this.humidityData = this.resYHumidity;
+                  // console.log('this.xData',this.xData);
+                  // console.log('this.temperatureData',this.temperatureData);
+                  // console.log('this.humidityData',this.humidityData);
+                  this.initEcharts();
+                  // console.log(text,'text')
+                  return;
                 }
-            })
-            // queryAddress({})
+              }
+            }
+          }
         }
-    },
-    created() {
-        console.log(this.$route.query,'this.$route')
-        this.carMessage = this.$route.query;
-        this.handleQuery();
+      })
+      // queryAddress({})
     }
+  },
+  created() {
+    console.log(this.$route.query,'this.$route')
+    this.carMessage = this.$route.query;
+    this.handleQuery();
+  }
 };
 </script>
 
-<style>
-
+<style scoped>
+#container {
+  padding: 100px;
+  margin: 10px;
+  width: 1000;
+  height: 800px;
+}
 </style>

+ 8 - 8
src/views/material/requisition/add.vue

@@ -257,12 +257,12 @@
               </el-col>
               <el-col :span="8">
                 <el-form-item label="最小起定量" prop="minOrderQty">
-                  <el-input :disabled="disable" v-model="basicForm.minOrderQty"></el-input>
+                  <el-input type="number" min="0" :disabled="disable" v-model="basicForm.minOrderQty"></el-input>
                 </el-form-item>
               </el-col>
               <el-col :span="8">
                 <el-form-item label="最小包装量" prop="minPackQty">
-                  <el-input :disabled="disable" v-model="basicForm.minPackQty"></el-input>
+                  <el-input type="number" min="0" :disabled="disable" v-model="basicForm.minPackQty"></el-input>
                 </el-form-item>
               </el-col>
             </el-row>
@@ -277,36 +277,36 @@
               </el-col>
               <el-col :span="8">
                 <el-form-item label="最小批量" prop="minBatchQty">
-                  <el-input :disabled="disable" v-model="basicForm.minBatchQty"></el-input>
+                  <el-input type="number" min="0" :disabled="disable" v-model="basicForm.minBatchQty"></el-input>
                 </el-form-item>
               </el-col>
               <el-col :span="8">
                 <el-form-item label="长度(MM)" prop="length">
-                  <el-input :disabled="disable" v-model="basicForm.length"></el-input>
+                  <el-input type="number" min="0" :disabled="disable" v-model="basicForm.length"></el-input>
                 </el-form-item>
               </el-col>
             </el-row>
             <el-row :gutter="20">
               <el-col :span="8">
                 <el-form-item label="高度(MM)" prop="height">
-                  <el-input :disabled="disable" v-model="basicForm.height"></el-input>
+                  <el-input type="number" min="0" :disabled="disable" v-model="basicForm.height"></el-input>
                 </el-form-item>
               </el-col>
               <el-col :span="8">
                 <el-form-item label="宽度(MM)" prop="width">
-                  <el-input :disabled="disable" v-model="basicForm.width"></el-input>
+                  <el-input type="number" min="0" :disabled="disable" v-model="basicForm.width"></el-input>
                 </el-form-item>
               </el-col>
               <el-col :span="8">
                 <el-form-item label="箱包装数" prop="boxPackaingQty">
-                  <el-input :disabled="disable" v-model="basicForm.boxPackaingQty"></el-input>
+                  <el-input type="number" min="0" :disabled="disable" v-model="basicForm.boxPackaingQty"></el-input>
                 </el-form-item>
               </el-col>
             </el-row>
             <el-row :gutter="20">
               <el-col :span="8">
                 <el-form-item label="中包装数" prop="mediumPackageQty">
-                  <el-input type="number" min="0" :disabled="disable" v-model="basicForm.mediumPackageQty"></el-input>
+                  <el-input  type="number" min="0" :disabled="disable" v-model="basicForm.mediumPackageQty"></el-input>
                 </el-form-item>
               </el-col>
               <el-col :span="8">

+ 15 - 9
src/views/purchase/MaterialClassDivision/add.vue

@@ -202,12 +202,14 @@
 
           <el-col :span="1.5">
             <el-form-item label="同步状态">
-              <el-input
-                v-model="basicForm.sendStatus"
-                size="mini"
-                disabled
-                style="width: 200px"
-              />
+              <el-select disabled v-model="basicForm.sendStatus" size="mini" style="width: 200px">
+                <el-option
+                  v-for="item in options"
+                  :key="item.value"
+                  :label="item.label"
+                  :value="item.value">
+                </el-option>
+              </el-select>
             </el-form-item>
          </el-col>
 
@@ -303,13 +305,13 @@ export default {
         buyerName: '',
         puDept: '',
         puDeptName: '',
-        sendStatus: '',
+        sendStatus: 'N',
         remark: ''
       },
       options: [{
-        value: 'Y', label: '',
+        value: 'Y', label: '已同步',
       }, {
-        value: 'N', label: ''
+        value: 'N', label: '未同步'
       }],
       referCondition: {
         type: '',
@@ -416,11 +418,15 @@ export default {
         this.staffOptions = selection
         this.basicForm.orderPersonal = selection[0].code
         this.basicForm.orderPersonalName = selection[0].name
+        this.basicForm.orderDept = selection[0].deptId
+        this.basicForm.orderDeptName = selection[0].deptName
       }
       if (this.referCondition.title == '采购员') {
         this.staff2Options = selection
         this.basicForm.buyer = selection[0].code
         this.basicForm.buyerName = selection[0].name
+        this.basicForm.puDept = selection[0].deptId
+        this.basicForm.puDeptName = selection[0].deptName
       }
     },
     // 回显参照框 加title解决判断重复提交问题

+ 10 - 10
src/views/purchase/MaterialClassDivision/index.vue

@@ -96,7 +96,7 @@
         <el-row :gutter="10">
           <el-col :span="1.5">
             <el-form-item label="物料编码">
-              <el-input style="width: 200px" size="mini" readonly v-model="queryParams.material">
+              <el-input style="width: 200px" size="mini" readonly v-model="queryParams.materialCode">
                   <el-button slot="append" icon="el-icon-more" @click="test01"></el-button>
               </el-input>
             </el-form-item>
@@ -214,9 +214,9 @@
           @selection-change="handleSelectionChange"
         >
           <el-table-column show-overflow-tooltip type="selection" width="55" />
-          <el-table-column show-overflow-tooltip label="物料分类编码" align="center" prop="materialClassify"/>
+          <el-table-column show-overflow-tooltip label="物料分类编码" align="center" width="150" prop="materialClassify"/>
           <el-table-column show-overflow-tooltip label="物料分类名称" align="center" width="200" prop="materialClassifyName" />
-          <el-table-column show-overflow-tooltip label="一级分类名称" align="center" prop="materialClassifyOneName" />
+          <el-table-column show-overflow-tooltip label="一级分类名称" align="center" width="150" prop="materialClassifyOneName" />
           <el-table-column show-overflow-tooltip label="二级分类名称" align="center" width="150" prop="materialClassifyTwoName" />
           <el-table-column show-overflow-tooltip label="三级分类名称" align="center" width="150" prop="materialClassifyThreeName"/>
           <el-table-column show-overflow-tooltip label="四级分类名称" align="center" width="150" prop="materialClassifyFourName" />
@@ -228,10 +228,10 @@
           <el-table-column show-overflow-tooltip label="采购员" align="center" width="150" prop="buyerName" />
           <el-table-column show-overflow-tooltip label="订单部门" align="center" width="150" prop="orderDeptName" />
           <el-table-column show-overflow-tooltip label="部门" align="center" width="150" prop="puDeptName" />
-          <el-table-column show-overflow-tooltip label="创建人" align="center" width="150" prop="createdByName" />
-          <el-table-column show-overflow-tooltip label="创建时间" align="center" width="150" prop="createdTime" />
-          <el-table-column show-overflow-tooltip label="修改人" align="center" width="150" prop="updatedByName" />
-          <el-table-column show-overflow-tooltip label="修改时间" align="center" width="150" prop="updatedTime" />
+          <el-table-column show-overflow-tooltip label="创建人" align="center" width="150" prop="createByName" />
+          <el-table-column show-overflow-tooltip label="创建时间" align="center" width="150" prop="createTime" />
+          <el-table-column show-overflow-tooltip label="修改人" align="center" width="150" prop="updateByName" />
+          <el-table-column show-overflow-tooltip label="修改时间" align="center" width="150" prop="updateTime" />
           <el-table-column
           fixed="right"
           label="操作"
@@ -311,7 +311,7 @@ export default {
         materialClassifyThreeName: '',
         materialClassifyFour: '',
         materialClassifyFourName: '',
-        material: '',
+        materialCode: '',
         materialName: '',
         orderPersonal: '',
         buyer: '',
@@ -363,7 +363,7 @@ export default {
         materialClassifyThreeName: '',
         materialClassifyFour: '',
         materialClassifyFourName: '',
-        material: '',
+        materialCode: '',
         materialName: '',
         orderPersonal: '',
         buyer: '',
@@ -433,7 +433,7 @@ export default {
       this.$refs.contractSelect.init()
     },
     selectionsToInput(selections) {
-      this.queryParams.material = selections[0].code
+      this.queryParams.materialCode = selections[0].code
     },
     // 选择默认采购组织
     chooseRefer(type, isPage, title) {

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

@@ -226,7 +226,7 @@
           <el-table-column show-overflow-tooltip label="采购周期" align="center"  prop="puPeriod" width="150px">
             <template slot-scope="scope">
               <el-form-item class="hang">
-                <el-input clearable :readonly="sonDisable" size="mini" v-model="scope.row.puPeriod"/>
+                <el-input type="number" min="0" clearable :readonly="sonDisable" size="mini" v-model="scope.row.puPeriod"></el-input>
               </el-form-item>
             </template>
           </el-table-column>
@@ -256,14 +256,14 @@
             <el-table-column show-overflow-tooltip label="预留周期" align="center" prop="reservedPeriod" width="150px">
               <template slot-scope="scope">
                 <el-form-item class="hang" :prop="'puDemandItemList.' + scope.$index + '.' + 'reservedPeriod'" :rules="{ required: isYl, message: '请填写预留周期', trigger: 'blur' }">
-                  <el-input clearable :readonly="sonDisable" size="mini" v-model="scope.row.reservedPeriod"/>
+                  <el-input type="number" min="0" clearable :readonly="sonDisable" size="mini" v-model="scope.row.reservedPeriod"></el-input>
                 </el-form-item>
               </template>
             </el-table-column>
             <el-table-column show-overflow-tooltip label="预留数量" align="center"  prop="reservedQty" width="150px">
               <template slot-scope="scope">
                 <el-form-item class="hang">
-                  <el-input readonly size="mini" v-model="scope.row.reservedQty"/>
+                  <el-input type="number" min="0" readonly size="mini" v-model="scope.row.reservedQty"></el-input>
                 </el-form-item>
               </template>
             </el-table-column>
@@ -271,7 +271,7 @@
           <el-table-column show-overflow-tooltip label="实际(业务)需求量" align="center"  prop="qty" width="120px">
             <template slot-scope="scope">
               <el-form-item class="hang" :prop="'puDemandItemList.' + scope.$index + '.' + 'qty'" :rules="{ required: true, message: '请填写实际(业务)需求量', trigger: 'blur' }">
-                <el-input clearable :readonly="sonDisable" size="mini" v-model="scope.row.qty" @input="getYLSL(scope)"/>
+                <el-input type="number" min="0" clearable :readonly="sonDisable" size="mini" v-model="scope.row.qty" @input="getYLSL(scope)"/>
               </el-form-item>
             </template>
           </el-table-column>
@@ -336,7 +336,7 @@
           <el-table-column show-overflow-tooltip label="最终净需求量" align="center"  prop="resDemandQty" width="150px">
             <template slot-scope="scope">
               <el-form-item class="hang">
-                <el-input clearable :readonly="sonDisable" size="mini" v-model="scope.row.resDemandQty"/>
+                <el-input type="number" min="0" clearable :readonly="sonDisable" size="mini" v-model="scope.row.resDemandQty"/>
               </el-form-item>
             </template>
           </el-table-column>

+ 5 - 4
src/views/purchase/catalogue/column.js

@@ -32,10 +32,11 @@ export const FormColumns = [
     disabled: true,
     readonly: true,
   },
+  { key: "materialName", title: "物料名称" },
   { key: "material", title: "物料编码" },
   { key: "materialClassify", title: "物料一级分类" },
+  { key: "manufacturerName", title: "生产厂家名称" },
   { key: "manufacturer", title: "生产厂家" },
-  { key: "materialName", title: "物料名称" },
   { key: "model", title: "物料型号" },
   { key: "specification", title: "物料规格" },
   { key: "supplier", title: "供应商" },
@@ -86,7 +87,7 @@ export const SearchColumns = [
     inputType: "PopoverSelect",
     referName: "ORG_PARAM",
     dataMapping: {
-      puOrg: "code",
+      puOrg: "id",
       puOrgName: "name",
     },
   },
@@ -101,7 +102,7 @@ export const SearchColumns = [
     inputType: "PopoverSelect",
     referName: "SUPPLIER_PARAM",
     dataMapping: {
-      supplier: "code",
+      supplier: "id",
       supplierName: "name",
     },
   },
@@ -112,7 +113,7 @@ export const SearchColumns = [
     inputType: "PopoverSelect",
     width: 200,
     referName: "MATERIAL_PARAM",
-    valueKey: "code",
+    valueKey: "id",
   },
   {
     key: "status",

+ 2 - 2
src/views/purchase/contract/add/column.js

@@ -76,7 +76,7 @@ export const FormColumns = [
   {
     key: "grossRateAverage",
     title: "平均毛利率",
-    inputType: "Input",
+    inputType: "InputNumber",
     require: true,
   },
   {
@@ -103,7 +103,7 @@ export const FormColumns = [
   {
     key: "brandGrossRate",
     title: "同类品牌及毛利率",
-    inputType: "Input",
+    inputType: "InputNumber",
     require: true,
   },
   {

+ 3 - 3
src/views/purchase/contract/add/index.vue

@@ -2,11 +2,11 @@
 import Column from "./column";
 import useData from "../hooks/data";
 import useDicts from "../hooks/dicts";
-import useWatch from "../hooks/watch";
+
 import { initParams } from "@/utils/init";
 import { REFER } from "@/components/popover-select/api";
 import { ADD, CODE } from "@/api/business/purchase/contract";
-const { watchContractType } = useWatch();
+
 
 export default {
   name: "AddDrawer",
@@ -20,7 +20,7 @@ export default {
   },
   computed: {},
   watch: {
-    "params.contractType": watchContractType(),
+    
   },
   methods: {
     async fetchCode() {

+ 6 - 3
src/views/purchase/contract/edit/index.vue

@@ -2,11 +2,11 @@
 import Column from "../add/column";
 import useData from "../hooks/data";
 import useDicts from "../hooks/dicts";
-import useWatch from "../hooks/watch";
+
 import { initParams } from "@/utils/init";
 import { REFER } from "@/components/popover-select/api";
 import { EDIT, ITEM, TABLE } from "@/api/business/purchase/contract";
-const { watchContractType } = useWatch();
+
 
 export default {
   name: "EditDrawer",
@@ -26,7 +26,7 @@ export default {
     },
   },
   watch: {
-    "params.contractType": watchContractType(),
+    
   },
   methods: {
     async fetchRefer(prop, type, source) {
@@ -163,7 +163,10 @@ export default {
       await this.root
         .useAlteration(prop)
         .then(() => {
+          const [{ id }] = prop;
+          const { fetchItem } = this.root.$refs.SeeModel;
           this.hide();
+          fetchItem(id);
         })
         .catch(() => {});
     },

+ 0 - 1
src/views/purchase/contract/index.vue

@@ -101,7 +101,6 @@ export default {
       await open(id);
     },
     hasPowerEdit(prop) {
-      return true;
       if (prop.length === 1) {
         const [{ status }] = prop;
         if (status !== "2") return true;

+ 3 - 3
src/views/purchase/contract/record/index.vue

@@ -2,11 +2,11 @@
 import Column from "../add/column";
 import useData from "../hooks/data";
 import useDicts from "../hooks/dicts";
-import useWatch from "../hooks/watch";
+
 import { initParams } from "@/utils/init";
 import { REFER } from "@/components/popover-select/api";
 import { ADD, CODE } from "@/api/business/purchase/contract";
-const { watchContractType } = useWatch();
+
 
 export default {
   name: "RecordDrawer",
@@ -20,7 +20,7 @@ export default {
   },
   computed: {},
   watch: {
-    "params.contractType": watchContractType(),
+    
   },
   methods: {
     async fetchCode() {

+ 13 - 0
src/views/purchase/contract/see/index.vue

@@ -98,6 +98,19 @@ export default {
           ></el-button>
         </el-tooltip>
         <el-tooltip
+          v-if="root.hasPowerAlteration([params])"
+          effect="dark"
+          content="变 更"
+          placement="bottom-end"
+        >
+          <el-button
+            :size="size"
+            circle
+            icon="el-icon-edit"
+            @click="root.useEdit([params])"
+          ></el-button>
+        </el-tooltip>
+        <el-tooltip
           v-if="root.hasPowerEdit([params])"
           effect="dark"
           content="编 辑"

+ 1 - 1
src/views/purchase/task/column.js

@@ -40,6 +40,7 @@ export const TableColumns = [
   { key: "source", title: "需求来源" },
   // { key: "customer", title: "收货客户" },
   { key: "customerName", title: "收货客户" },
+  { key: "assignSupplierName", title: "指定供应商" },
   // { key: "puUnit", title: "采购单位" },
 
   { key: "demandDate", title: "需求时间" },
@@ -62,7 +63,6 @@ export const TableColumns = [
   { key: "baskCause", title: "退回原因" },
   { key: "backDate", title: "退回日期" },
   // { key: "assignSupplier", title: "指定供应商" },
-  { key: "assignSupplierName", title: "指定供应商" },
   // { key: "unit", title: "单位" },
   { key: "unitName", title: "单位" },
   // { key: "file", title: "附件" },

+ 1 - 1
src/views/purchase/task/first-direct/column.js

@@ -20,7 +20,7 @@ export const TableColumns = [
   { key: "effectiveDate", title: "价格生效日期" },
   { key: "endDate", title: "价格失效日期" },
   {
-    key: "tax",
+    key: "newTax",
     title: "税率",
     inputType: "ComputedInput",
     width: 200,

+ 7 - 1
src/views/purchase/task/index.vue

@@ -122,7 +122,13 @@ export default {
       await open(prop);
     },
     hasPowerDirect(prop) {
-      return !!prop.length;
+      if (prop.length === 1) {
+        const [{ status }] = prop;
+        if (status === "1") return false;
+        else return true;
+      } else {
+        return !!prop.length;
+      }
     },
     // 导 出
     async useExport(prop, page) {

+ 3 - 2
src/views/purchase/transferOrder/add.vue

@@ -128,6 +128,7 @@
             <el-form-item label="总数量">
               <el-input
                 v-model="basicForm.qty"
+                type="number" min="0"
                 size="mini"
                 :disabled="sonDisable"
                 clearable
@@ -273,7 +274,7 @@
           <el-table-column show-overflow-tooltip label="数量" align="center" prop="qty" width="150px">
             <template slot-scope="scope">
               <el-form-item class="hang">
-                <el-input :readonly="sonDisable" clearable size="mini" v-model="scope.row.qty" @input="getSL(scope)"/>
+                <el-input type="number" min="0" :readonly="sonDisable" clearable size="mini" v-model="scope.row.qty" @input="getSL(scope)"/>
               </el-form-item>
             </template>
           </el-table-column>
@@ -282,7 +283,7 @@
           <el-table-column show-overflow-tooltip label="主数量" align="center" prop="mainQty" width="150px">
             <template slot-scope="scope">
               <el-form-item class="hang">
-                <el-input :readonly="sonDisable" clearable size="mini" v-model="scope.row.mainQty" @input="getZSL(scope)"/>
+                <el-input type="number" min="0" :readonly="sonDisable" clearable size="mini" v-model="scope.row.mainQty" @input="getZSL(scope)"/>
               </el-form-item>
             </template>
           </el-table-column>