浏览代码

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

002201 1 年之前
父节点
当前提交
3b90fa2576
共有 35 个文件被更改,包括 2174 次插入1459 次删除
  1. 10 0
      src/api/monitor/service.js
  2. 1 1
      src/api/purchase/basic.js
  3. 33 2
      src/api/requisition/basic.js
  4. 6 2
      src/assets/styles/sidebar.scss
  5. 9 2
      src/components/Refers/refers.vue
  6. 4 3
      src/components/popover-select-v2/index.vue
  7. 4 3
      src/components/popover-select-v2/multiple.vue
  8. 4 3
      src/components/popover-select/index.vue
  9. 4 3
      src/components/popover-tree-select/index.vue
  10. 4 3
      src/components/popover-tree-select/multiple.vue
  11. 1 1
      src/components/super-search/index.vue
  12. 1 0
      src/layout/components/Navbar.vue
  13. 1 0
      src/layout/components/TagsView/index.vue
  14. 173 162
      src/views/WMS/historical-route/index.vue
  15. 401 175
      src/views/material/basicFile/details.vue
  16. 41 35
      src/views/material/basicFile/index.vue
  17. 340 235
      src/views/material/requisition/index.vue
  18. 0 31
      src/views/monitor/job/index.vue
  19. 70 27
      src/views/monitor/job/log.vue
  20. 113 0
      src/views/monitor/service/index.vue
  21. 63 4
      src/views/purchase/DemandSummary/add.vue
  22. 27 21
      src/views/purchase/DemandSummary/index.vue
  23. 13 11
      src/views/purchase/MaterialClassDivision/index.vue
  24. 180 224
      src/views/purchase/PurchaseDemandList/add.vue
  25. 33 10
      src/views/purchase/PurchaseDemandList/index.vue
  26. 1 1
      src/views/purchase/PurchaseDemandList/reserved.vue
  27. 11 9
      src/views/purchase/deliveryAddress/index.vue
  28. 7 7
      src/views/purchase/purchase-order/add/column.js
  29. 20 10
      src/views/purchase/purchase-order/add/index.vue
  30. 482 395
      src/views/purchase/purchase-order/column.js
  31. 24 10
      src/views/purchase/purchase-order/edit/index.vue
  32. 9 0
      src/views/purchase/purchase-order/edit/initColumn.js
  33. 45 29
      src/views/purchase/purchase-order/index.vue
  34. 15 0
      src/views/purchase/transferOrder/add.vue
  35. 24 40
      src/views/purchase/transferOrder/index.vue

+ 10 - 0
src/api/monitor/service.js

@@ -0,0 +1,10 @@
+import request from '@/utils/request'
+
+//查询服务列表
+export function listService(query) {
+    return request({
+      url: 'serviceScan/list',
+      method: 'get',
+      params: query
+    })
+  }

+ 1 - 1
src/api/purchase/basic.js

@@ -41,7 +41,7 @@ export function delDivision(ids) {
 // 参照统一接口
 export function getRefer(data) {
   return request({
-    url: `/refer/query?pageSize=1000&pageNum=1`,
+    url: `/refer/query?pageSize=${data.pageSize}&pageNum=${data.pageNo}`,
     method: 'post',
     data: data
   })

+ 33 - 2
src/api/requisition/basic.js

@@ -8,14 +8,16 @@ export function getReqList(params) {
     params: params
   })
 }
+
 // 物料申请单-新增
 export function addReq(data) {
   return request({
     url: `/system/apply/material`,
     method: 'post',
-    data: data
+    data: data,
   })
 }
+
 // 获取物料申请单详情
 export function getReqDetail(id) {
   return request({
@@ -23,6 +25,7 @@ export function getReqDetail(id) {
     method: 'get',
   })
 }
+
 // 物料申请单-修改提交
 export function editReq(data) {
   return request({
@@ -31,6 +34,7 @@ export function editReq(data) {
     data: data
   })
 }
+
 // 物料申请单-删除
 export function delReq(id) {
   return request({
@@ -47,6 +51,7 @@ export function getUnit(data) {
     data: data
   })
 }
+
 // 参照-产地
 export function getPlace(data) {
   return request({
@@ -55,6 +60,7 @@ export function getPlace(data) {
     data: data
   })
 }
+
 // 参照-税类
 export function getTax(data) {
   return request({
@@ -63,6 +69,7 @@ export function getTax(data) {
     data: data
   })
 }
+
 // 参照-采购员
 export function getStaff(data) {
   return request({
@@ -71,6 +78,7 @@ export function getStaff(data) {
     data: data
   })
 }
+
 // 参照-业务线
 export function getLine(data) {
   return request({
@@ -79,6 +87,7 @@ export function getLine(data) {
     data: data
   })
 }
+
 // 参照-剂型-树形
 export function getDose(data) {
   return request({
@@ -87,6 +96,7 @@ export function getDose(data) {
     data: data
   })
 }
+
 // 参照-采购组织-树形
 // 查询部门下拉树结构
 export function getOrgs(data) {
@@ -96,6 +106,7 @@ export function getOrgs(data) {
     params: data
   })
 }
+
 // 参照-药品类别(子表)-树形
 export function getDrug(data) {
   return request({
@@ -104,6 +115,7 @@ export function getDrug(data) {
     data: data
   })
 }
+
 // 参照-中包装单位
 export function getMidPack(data) {
   return request({
@@ -111,4 +123,23 @@ export function getMidPack(data) {
     method: 'post',
     data: data
   })
-}
+}
+
+// 导入
+export function importData(data) {
+  return request({
+    url: `/system/apply/material/import`,
+    method: 'post',
+    data: data
+  })
+}
+
+// 下载失败导入文件数据
+export function fileImport(data) {
+  return request({
+    url: `/system/apply/material/downloadFailData`,
+    method: 'post',
+    data: data,
+    responseType: 'blob',
+  })
+}

+ 6 - 2
src/assets/styles/sidebar.scss

@@ -3,7 +3,8 @@
   .main-container {
     min-height: 100%;
     transition: margin-left .28s;
-    margin-left: $base-sidebar-width;
+    // margin-left: $base-sidebar-width;
+    margin-left: 0;
     position: relative;
   }
 
@@ -45,6 +46,7 @@
     }
 
     &.has-logo {
+      display: none;
       .el-scrollbar {
         height: calc(100% - 50px);
       }
@@ -109,11 +111,13 @@
 
   .hideSidebar {
     .sidebar-container {
+      display: none;
       width: 54px !important;
     }
 
     .main-container {
-      margin-left: 54px;
+      // margin-left: 54px;
+      margin-left: 0;
     }
 
     .submenu-title-noDropdown {

+ 9 - 2
src/components/Refers/refers.vue

@@ -18,7 +18,7 @@
           </el-header>
           <el-main>
             <el-table :data="dataList" v-loading="loading" size="small" border ref="contractTable"
-              @select="handleSelectionChange" @row-click="rowSelect" height="calc(100% - 40px)">
+              @select="handleSelectionChange" @row-dblclick="choose"  @row-click="rowSelect" height="calc(100% - 40px)">
               <el-table-column show-overflow-tooltip type="selection" header-align="center" align="center" width="50"/>
               <!-- <el-table-column show-overflow-tooltip prop="id" header-align="center" align="center" min-width="90" :label="reciveForm.title + 'id'"/> -->
               <el-table-column show-overflow-tooltip prop="code" header-align="center" align="center" min-width="90" label="编码"/>
@@ -134,9 +134,13 @@ export default {
         // 仓库里面加组织
         if(res.rows.length !== 0 && res.rows[0].orgName) {
           this.orgName = true
-          this.warehouseAttributes = true
         } else {
           this.orgName = false
+        }
+        // 仓库里面加仓库属性
+        if(res.rows.length !== 0 && res.rows[0].warehouseAttributes) {
+          this.warehouseAttributes = true
+        } else {
           this.warehouseAttributes = false
         }
         // 人员内加部门
@@ -231,6 +235,9 @@ export default {
       console.log('选择的数据?', this.dataListAllSelections)
       this.$emit("doSubmit", this.dataListAllSelections);
     },
+    choose() {
+      this.doSubmit()
+    }
   },
 };
 </script>

+ 4 - 3
src/components/popover-select-v2/index.vue

@@ -213,9 +213,6 @@ export default {
       append-to-body
     >
       <div slot="footer">
-        <el-button :size="$attrs.size" :loading="loading" @click="hide"
-          >取 消</el-button
-        >
         <el-button
           type="primary"
           :size="$attrs.size"
@@ -223,6 +220,10 @@ export default {
           @click="useConfirm(selectData)"
           >确 认</el-button
         >
+        <el-button :size="$attrs.size" :loading="loading" @click="hide"
+          >取 消</el-button
+        >
+        
       </div>
       <el-form
         v-loading="loading"

+ 4 - 3
src/components/popover-select-v2/multiple.vue

@@ -179,9 +179,6 @@ export default {
       append-to-body
     >
       <div slot="footer">
-        <el-button :size="$attrs.size" :loading="loading" @click="hide"
-          >取 消</el-button
-        >
         <el-button
           type="primary"
           :size="$attrs.size"
@@ -189,6 +186,10 @@ export default {
           @click="useConfirm(selectData)"
           >确 认</el-button
         >
+        <el-button :size="$attrs.size" :loading="loading" @click="hide"
+          >取 消</el-button
+        >
+        
       </div>
       <el-form
         v-loading="loading"

+ 4 - 3
src/components/popover-select/index.vue

@@ -331,12 +331,13 @@ export default {
         />
       </el-form>
       <div style="margin-top: 20px; text-align: right">
-        <el-button :size="size" @click="useCancel(lastSelectData)">
-          取 消
-        </el-button>
         <el-button :size="size" @click="useConfirm(selectData)">
           确 定
         </el-button>
+        <el-button :size="size" @click="useCancel(lastSelectData)">
+          取 消
+        </el-button>
+        
       </div>
     </el-dialog>
     <div

+ 4 - 3
src/components/popover-tree-select/index.vue

@@ -210,9 +210,6 @@ export default {
       append-to-body
     >
       <div slot="footer">
-        <el-button :size="$attrs.size" :loading="loading" @click="hide"
-          >取 消</el-button
-        >
         <el-button
           type="primary"
           :size="$attrs.size"
@@ -220,6 +217,10 @@ export default {
           @click="useConfirm(selectData)"
           >确 认</el-button
         >
+        <el-button :size="$attrs.size" :loading="loading" @click="hide"
+          >取 消</el-button
+        >
+        
       </div>
       <el-form
         v-loading="loading"

+ 4 - 3
src/components/popover-tree-select/multiple.vue

@@ -196,9 +196,6 @@ export default {
       append-to-body
     >
       <div slot="footer">
-        <el-button :size="$attrs.size" :loading="loading" @click="hide"
-          >取 消</el-button
-        >
         <el-button
           type="primary"
           :size="$attrs.size"
@@ -206,6 +203,10 @@ export default {
           @click="useConfirm(selectData)"
           >确 认</el-button
         >
+        <el-button :size="$attrs.size" :loading="loading" @click="hide"
+          >取 消</el-button
+        >
+        
       </div>
       <el-form
         v-loading="loading"

+ 1 - 1
src/components/super-search/index.vue

@@ -169,7 +169,7 @@ export default {
           icon="el-icon-search"
           @click="$emit('submit')"
         >
-          查 询
+          搜 索
         </el-button>
         <el-button
           :size="$attrs.size"

+ 1 - 0
src/layout/components/Navbar.vue

@@ -117,6 +117,7 @@
     position: relative;
     background: #fff;
     box-shadow: 0 1px 4px rgba(0,21,41,.08);
+    display: none;
 
     .hamburger-container {
       line-height: 46px;

+ 1 - 0
src/layout/components/TagsView/index.vue

@@ -244,6 +244,7 @@ export default {
   background: #fff;
   border-bottom: 1px solid #d8dce5;
   box-shadow: 0 1px 3px 0 rgba(0, 0, 0, .12), 0 0 3px 0 rgba(0, 0, 0, .04);
+  display: none;
   .tags-view-wrapper {
     .tags-view-item {
       display: inline-block;

+ 173 - 162
src/views/WMS/historical-route/index.vue

@@ -1,140 +1,141 @@
 <template>
-  <el-tabs v-model="activeName" type="border-card" @tab-click="handleClick" stretch="true">
-    <el-tab-pane label="温湿度信息" name="first">
-      <div id="body" :style="{width: width - 300 + 'px'}">
-        <!-- 单据信息 -->
-        <el-timeline>
+  <div id="print">
+    <el-tabs v-model="activeName" type="border-card" @tab-click="handleClick" stretch="true">
+      <el-tab-pane label="温湿度信息" name="first">
+        <div id="body" :style="{width: width - 300 + 'px'}">
+          <!-- 单据信息 -->
           <el-timeline>
-            <el-descriptions>
-              <el-descriptions-item label="订单编号">{{this.basicData.billCode}}</el-descriptions-item>
-              <el-descriptions-item label="车牌号">{{this.basicData.plateNumber}}</el-descriptions-item>
-            </el-descriptions>
-            <el-descriptions>
-              <el-descriptions-item label="开始时间">{{this.basicData.startTime}}</el-descriptions-item>
-              <el-descriptions-item label="结束时间">{{this.basicData.endTime}}</el-descriptions-item>
-            </el-descriptions>
+            <el-timeline>
+              <el-descriptions>
+                <el-descriptions-item label="订单编号">{{this.basicData.billCode}}</el-descriptions-item>
+                <el-descriptions-item label="车牌号">{{this.basicData.plateNumber}}</el-descriptions-item>
+              </el-descriptions>
+              <el-descriptions>
+                <el-descriptions-item label="开始时间">{{this.basicData.startTime}}</el-descriptions-item>
+                <el-descriptions-item label="结束时间">{{this.basicData.endTime}}</el-descriptions-item>
+              </el-descriptions>
+              <!--导出按钮-->
+              <el-button class="OutCss" v-print="'#print'" type="primary">导出</el-button>  
+            </el-timeline>
           </el-timeline>
-        </el-timeline>
-        <el-timeline>
-         	<!--导出按钮-->
-           <el-button class="OutCss" v-print="'#body'" type="primary">导出</el-button>  
-          <!-- 数据表 -->
-          <h2>订单温湿度列表</h2>
-          <el-table
-            :data="tableData2"
-            stripe
-            border
+          <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>
+          </el-timeline>
+        </div>
+        <br>
+        <div id="body" :style="{width: width - 300 + 'px'}">
+          <el-timeline>
+            <h2>订单温度折线图</h2>
+            <div class="echart" id="mychart" :style="myChartStyle"></div>
+          </el-timeline>
+        </div>
+      </el-tab-pane>
+      <el-tab-pane label="运输信息" name="second">
+        <div id="body" :style="{width: width - 300 + 'px'}">
+          <!-- 单据信息 -->
+          <el-timeline>
+            <el-timeline>
+              <el-descriptions>
+                <el-descriptions-item label="订单编号">{{this.basicData.billCode}}</el-descriptions-item>
+                <el-descriptions-item label="车牌号">{{this.basicData.plateNumber}}</el-descriptions-item>
+              </el-descriptions>
+              <el-descriptions>
+                <el-descriptions-item label="开始时间">{{this.basicData.startTime}}</el-descriptions-item>
+                <el-descriptions-item label="结束时间">{{this.basicData.endTime}}</el-descriptions-item>
+              </el-descriptions>
+            </el-timeline>
+          </el-timeline>
+        
+          <!-- 地图 -->
+          <div id="container"></div>
+
+          <!-- 订单温湿度列表 -->
+          <el-timeline>
+            <br>
+            <h2>订单温湿度列表</h2>
+            <el-table
+            :data="tableData1"
+            height="200"
             style="width: 97%">
             <el-table-column
-            prop="temperature"
-            label="温度"
+            prop="maxTemperature"
+            label="温度最大值"
             align="center"
-            min-width="300">
+            min-width="100">
             </el-table-column>
             <el-table-column
-            prop="hisDate"
-            label="时间点"
+            prop="avgTemperature"
+            label="温度平均值"
             align="center"
-            min-width="400">
+            min-width="100">
             </el-table-column>
             <el-table-column
-            prop="address"
-            label="地址"
-            min-width="500">
+            prop="minTemperature"
+            label="温度最小值"
+            align="center"
+            min-width="100">
             </el-table-column>
-          </el-table>
-        </el-timeline>
-      </div>
-      <br>
-      <div id="body" :style="{width: width - 300 + 'px'}">
-        <el-timeline>
-          <h2>订单温度折线图</h2>
-          <div class="echart" id="mychart" :style="myChartStyle"></div>
-        </el-timeline>
-      </div>
-    </el-tab-pane>
-    <el-tab-pane label="运输信息" name="second">
-      <div id="body" :style="{width: width - 300 + 'px'}">
-        <!-- 单据信息 -->
-        <el-timeline>
-          <el-timeline>
-            <el-descriptions>
-              <el-descriptions-item label="订单编号">{{this.basicData.billCode}}</el-descriptions-item>
-              <el-descriptions-item label="车牌号">{{this.basicData.plateNumber}}</el-descriptions-item>
-            </el-descriptions>
-            <el-descriptions>
-              <el-descriptions-item label="开始时间">{{this.basicData.startTime}}</el-descriptions-item>
-              <el-descriptions-item label="结束时间">{{this.basicData.endTime}}</el-descriptions-item>
-            </el-descriptions>
+            <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>
           </el-timeline>
-        </el-timeline>
-      
-        <!-- 地图 -->
-        <div id="container"></div>
-
-        <!-- 订单温湿度列表 -->
-        <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>
-        </el-timeline>
-     </div>
-    </el-tab-pane>
-
-  </el-tabs>
+      </div>
+      </el-tab-pane>
 
+    </el-tabs>
+  </div>
 </template>
 
 <script>
@@ -146,6 +147,11 @@ 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,
@@ -194,11 +200,6 @@ export default {
       option:{}
     };
   },
-  mounted() {
-    //DOM初始化完成进行地图初始化
-    this.initMap();
-    // this.initEcharts();
-  },
   methods: {
     handleClick(tab, event) {
       console.log(tab, event);
@@ -235,11 +236,7 @@ export default {
           bottom: '5%',
           containLabel: true
         },
-        toolbox: {
-          feature: {
-            saveAsImage: {}
-          }
-        },
+        toolbox: {},
         xAxis: {
           data: this.xData
         },
@@ -285,7 +282,14 @@ export default {
         this.myChart.resize();
       });
     },
-
+    //
+    // maploading() {
+    //   var map;
+    //   //基本地图加载
+    //   map = new AMap.Map("container", {
+    //     resizeEnable: true
+    //   });
+    // },
     handleGeocodeRepo(data) {
       // let data = {
       //     billCode: "CS01",
@@ -313,11 +317,6 @@ export default {
               //定义经纬度不为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]);
@@ -326,18 +325,32 @@ export default {
                   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) / 14);
-                  //途径点数据
-                  for (let z = i + increment; z < j; z = z + increment) {
-                  // for (let z = i; 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++;
+                  //判断差值
+                  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]);
@@ -346,10 +359,6 @@ export default {
                   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.xData = res.data.temperature;
                   this.tableData2 = this.resData;
                   this.xData = this.resX;
@@ -411,6 +420,15 @@ export default {
                   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;
                 }
               }
@@ -436,12 +454,6 @@ export default {
   width: 1000;
   height: 800px;
 }
-.Button {
-padding-top:3px; 
-padding-left:1000px;
-padding-right:3px;
-padding-bottom:100px;
-}
 .OutCss {
 float: right; 
 }
@@ -466,4 +478,3 @@ float: right;
   }
 }
 </style>
-

+ 401 - 175
src/views/material/basicFile/details.vue

@@ -3,84 +3,102 @@
   <div class="material-details" v-loading="loading">
     <!-- 操作栏 -->
     <!-- 基本信息栏 -->
-    <div v-if="activeMainTab == 'material'">
-
-      <!-- 基本信息修改状态下—— 保存、保存新增、更新导入、取消 -->
-      <el-row :gutter="10" class="mb10" v-if="updateButtonGroup || maintainNewVersion">
-        <el-col :span="1.5">
-          <el-button-group>
-            <el-button size="small" @click="handleSave"
-                       v-hasPermi="['system:material:add', `${maintainNewVersion ? '' : 'system:material:versions'}`]">
-              保存
-            </el-button>
-          </el-button-group>
-        </el-col>
-
-        <el-col :span="1.5">
-          <el-button-group>
-            <el-button size="small" @click="handleCancel">取消</el-button>
-          </el-button-group>
-        </el-col>
-      </el-row>
-
-      <el-row :gutter="10" class="mb10" v-else>
-        <!-- 新增、修改、删除、复制 -->
-        <el-col :span="1.5">
-          <el-button-group>
-            <!-- <el-button size="small" @click="handleInster">新增</el-button> -->
-            <el-button size="small" @click="handleBasicEdit">修改</el-button>
-            <!-- <el-button size="small" @click="handleDel">删除</el-button> -->
-            <!-- <el-button size="small" @click="handleCopy">复制</el-button> -->
-          </el-button-group>
-        </el-col>
-
-        <!-- 查询、刷新、过滤 -->
-        <el-col :span="1.5">
-          <el-button-group>
-
-            <el-button size="small" @click="handleRefresh">刷新</el-button>
-
-          </el-button-group>
-        </el-col>
-
-        <!-- 启用 -->
+    <div style="display: flex;justify-content: end;">
+      <div v-if="activeMainTab == 'material'">
+  
+        <!-- 基本信息修改状态下—— 保存、保存新增、更新导入、取消 -->
+        <el-row 
+          v-if="updateButtonGroup || maintainNewVersion"
+          :gutter="10" 
+          class="mb10" 
+          type="flex"
+          justify="end"
+        >
+          <el-col :span="1.5">
+            <el-button-group>
+              <el-button size="small" @click="handleSave"
+                         v-hasPermi="['system:material:add', `${maintainNewVersion ? '' : 'system:material:versions'}`]">
+                保存
+              </el-button>
+            </el-button-group>
+          </el-col>
+  
+          <el-col :span="1.5">
+            <el-button-group>
+              <el-button size="small" @click="handleCancel">取消</el-button>
+            </el-button-group>
+          </el-col>
+        </el-row>
+  
+        <el-row 
+          v-else
+          :gutter="10" 
+          class="mb10" 
+          type="flex"
+          justify="end" 
+        >
+          <!-- 新增、修改、删除、复制 -->
+          <el-col :span="1.5">
+            <el-button-group>
+              <!-- <el-button size="small" @click="handleInster">新增</el-button> -->
+              <el-button size="small" @click="handleBasicEdit">修改</el-button>
+              <!-- <el-button size="small" @click="handleDel">删除</el-button> -->
+              <!-- <el-button size="small" @click="handleCopy">复制</el-button> -->
+            </el-button-group>
+          </el-col>
+  
+          <!-- 查询、刷新、过滤 -->
+          <el-col :span="1.5">
+            <el-button-group>
+  
+              <el-button size="small" @click="handleRefresh">刷新</el-button>
+  
+            </el-button-group>
+          </el-col>
+  
+          <!-- 启用 -->
+          <el-col :span="1.5">
+            <el-button-group>
+              <el-button size="small" @click="handleMaterialType">维护物料类别</el-button>
+              <el-button size="small" @click="handleIsInvoke" :key="count" v-hasPermi="['system:material:add']">
+                <!-- 0:启用  2:停用 -->
+                {{ basicData.value.isEnable == '已启用' ? '停用' : '启用' }}
+              </el-button>
+            </el-button-group>
+          </el-col>
+  
+          <!-- 维护新版本 -->
+          <el-col :span="1.5">
+            <el-button-group>
+              <el-button size="small" @click="handleNewVersion" v-hasPermi="['system:material:versions']">维护新版本
+              </el-button>
+            </el-button-group>
+          </el-col>
+  
+        </el-row>
+  
+  
+      </div>
+  
+      <!-- 其他标签页操作  修改、删除 -->
+      <el-row 
+        :gutter="10" 
+        class="mb10" 
+        v-show="activeMainTab != 'material'"
+        type="flex"
+        justify="end"
+      >
         <el-col :span="1.5">
           <el-button-group>
-            <el-button size="small" @click="handleMaterialType">维护物料类别</el-button>
-            <el-button size="small" @click="handleIsInvoke" :key="count" v-hasPermi="['system:material:add']">
-              <!-- 0:启用  2:停用 -->
-              {{ basicData.value.isEnable == '已启用' ? '停用' : '启用' }}
-            </el-button>
+            <el-button size="small" @click="handleOtherEdit('table')">修改</el-button>
+            <el-button size="small" v-show="activeMainTab != 'material_finance'" @click="handleOtherDel">删除</el-button>
           </el-button-group>
-        </el-col>
-
-        <!-- 维护新版本 -->
-        <el-col :span="1.5">
           <el-button-group>
-            <el-button size="small" @click="handleNewVersion" v-hasPermi="['system:material:versions']">维护新版本
-            </el-button>
+            <el-button size="small" @click="handleOtherListRefresh">刷新</el-button>
           </el-button-group>
         </el-col>
-
       </el-row>
 
-
-    </div>
-
-    <!-- 其他标签页操作  修改、删除 -->
-    <el-row :gutter="10" class="mb10" v-show="activeMainTab != 'material'">
-      <el-col :span="1.5">
-        <el-button-group>
-          <el-button size="small" @click="handleOtherEdit('table')">修改</el-button>
-          <el-button size="small" v-show="activeMainTab != 'material_finance'" @click="handleOtherDel">删除</el-button>
-        </el-button-group>
-        <el-button-group>
-          <el-button size="small" @click="handleOtherListRefresh">刷新</el-button>
-        </el-button-group>
-      </el-col>
-    </el-row>
-
-    <el-card>
       <!-- 返回   切换   附件管理 -->
       <el-row type="flex" justify="space-between">
         <el-col :span="6">
@@ -88,22 +106,14 @@
           <el-button size="small" @click="handleBack" :disabled="updateButtonGroup">返回</el-button>
         </el-col>
         <el-col :span="6" style="text-align: right;">
-          <!-- 附件管理 -->
-          <!-- <el-button-group> <el-button size="small" icon="el-icon-paperclip" @click="handleFile"></el-button></el-button-group> -->
-
-          <!-- 切换 -->
-          <!-- <el-button-group>
-            <el-button size="small" icon="el-icon-d-arrow-left" :disabled="!handleBasicEdit"
-              @click="handleChangePage('first')" />
-            <el-button size="small" icon="el-icon-arrow-left" :disabled="!handleBasicEdit"
-              @click="handleChangePage('pre')" />
-            <el-button size="small" icon="el-icon-arrow-right" :disabled="!handleBasicEdit"
-              @click="handleChangePage('next')" />
-            <el-button size="small" icon="el-icon-d-arrow-right" :disabled="!handleBasicEdit"
-            @click="handleChangePage('end')" /></el-button-group> -->
+          
         </el-col>
       </el-row>
 
+    </div>
+
+    <el-card>
+    
       <div class="md-content">
         <el-form :inline="true" label-position="right" :model="basicData.value">
           <!-- <el-form-item label="所属组织"></el-form-item> -->
@@ -247,8 +257,14 @@
                   >
                   <el-table-column type="selection" width="55"/>
                   <el-table-column type="index" v-if="mainMsg.form.length" label="序号" width="55" align="center"/>
-                  <el-table-column v-for="m in  mainMsg.form" v-if="m.show" :label="m.name" align="center"
-                                   :prop="m.attribute == 'select' ? `${m.prop}Name` : m.prop" show-overflow-tooltip>
+                  <el-table-column 
+                    v-for="m in  mainMsg.form" 
+                    v-if="m.show" 
+                    :label="m.name" 
+                    align="center"
+                    :prop="m.attribute == 'select' ? `${m.prop}Name` : m.prop" 
+                    show-overflow-tooltip
+                  >
                     <template slot-scope="scope">
                       {{ m.attribute == 'select' ? scope.row[`${m.prop}Name`] :
                       (m.attribute == 'checkbox' ?
@@ -418,11 +434,24 @@
     </el-card>
 
     <!-- 维护物料类别弹窗 -->
-    <el-dialog title="物料类别维护" :visible.sync="materialType.show" :before-close="handleCloseTypeDetails"
-               :close-on-press-escape="false" :close-on-click-modal="false" width="80%" center class="materialType">
+    <el-dialog 
+      title="物料类别维护" 
+      :visible.sync="materialType.show" 
+      :before-close="handleCloseTypeDetails"
+      :close-on-press-escape="false" 
+      :close-on-click-modal="false" 
+      width="80%" 
+      center 
+      class="materialType"
+    >
 
       <!-- 操作按钮 -->
-      <el-row :gutter="10" class="mb10">
+      <el-row 
+        :gutter="10" 
+        class="mb10" 
+        type="flex"
+        justify="end"
+      >
         <el-col :span="1.5">
           <el-button-group>
             <el-button size="small" :disabled="!materialType.isEdit" @click="handleMaterialTypeRow('add')">增行
@@ -441,8 +470,15 @@
         </el-col>
       </el-row>
       <!-- 表格数据 -->
-      <el-table :data="materialType.value" stripe style="width: 100%" max-height="350" v-loading="materialType.loading"
-                :key="refer" @selection-change="handleSelectionType">
+      <el-table 
+        :data="materialType.value" 
+        stripe 
+        style="width: 100%" 
+        max-height="350" 
+        v-loading="materialType.loading"
+        :key="refer" 
+        @selection-change="handleSelectionType"
+      >
         <el-table-column type="selection" width="30"/>
         <el-table-column type="index" width="50" label="序号"/>
         <el-table-column v-for="mt in materialType.form" v-if="mt.show" :label="mt.name" width="180">
@@ -494,10 +530,16 @@
       :close-on-press-escape="false"
       :close-on-click-modal="false"
       class="otherDialog"
+     
     >
-      <div v-loading="otherDeatils.loading">
+      <div  v-loading="otherDeatils.loading">
         <!-- 其他标签页操作  修改、删除 -->
-        <el-row :gutter="10" class="mb10">
+        <el-row 
+          :gutter="10" 
+          class="mb10" 
+          type="flex"
+          justify="end"
+        >
           <el-col :span="1.5" v-if="!otherDeatils.isEdit">
             <el-button-group>
               <el-button size="small" @click="handleOtherEdit('form')">修改</el-button>
@@ -1190,7 +1232,6 @@
         console.log(type, id, '查询其他标签页列表详情');
         this.otherDeatils.form = this.mainMsg.form;
         console.log(this.otherDeatils.form, 'this.otherDeatils.form');
-        this.otherDeatils.loading = true;
         switch (type) {
           // 财物信息
           case 'material_finance':
@@ -1221,82 +1262,146 @@
         }
       },
       // 查询财务信息详情
-      getFinanceDetails(id) {
-        materialApi.financeDetails(id).then(res => {
-          this.otherDeatils.loading = false;
-          let _this = this;
-          console.log('查询财务信息详情', res);
-          if (res.code == 200) {
-            this.otherDeatils.value = res.data.data;
-            // _this.handleAddReferLabel('otherDeatils');
+      async getFinanceDetails(id) {
+        
+        try {
+
+          this.otherDeatils.loading = true;
+
+          let {code,data} = await materialApi.financeDetails(id);
+
+            if (code == 200) {
+
+            this.otherDeatils.value = data.data;
+
           }
-        })
+
+        } catch (error) {}
+        finally{
+          setTimeout(()=>{
+
+            this.otherDeatils.loading = false;
+          },200)
+        }
       },
       // 获取利润中心详情
-      getCenterDetails(id) {
-        let _this = this;
-        materialApi.centerDetails(id).then(res => {
-          this.otherDeatils.loading = false;
-          console.log(res, '获取利润中心详情');
-          if (res.code == 200) {
-            this.otherDeatils.value = res.data.data;
-            // _this.handleAddReferLabel('otherDeatils');
+      async getCenterDetails(id) {
+        try {
+
+          this.otherDeatils.loading = true;
+
+          let {code,data} = await materialApi.centerDetails(id);
+
+            if (code == 200) {
+
+            this.otherDeatils.value = data.data;
+
           }
-        })
+
+        } catch (error) {}
+        finally{
+          setTimeout(()=>{
+
+            this.otherDeatils.loading = false;
+          },200)
+        }
       },
       // 获取采购详细信息详情
-      getPurchaseDetails(id) {
-        let _this = this;
-        materialApi.purchaseDetails(id).then(res => {
-          this.otherDeatils.loading = false;
-          console.log(res, '获取采购详细信息详情');
-          if (res.code == 200) {
-            this.otherDeatils.value = res.data.data;
-            // _this.handleAddReferLabel('otherDeatils');
+      async getPurchaseDetails(id) {
+       
+        try {
+
+          this.otherDeatils.loading = true;
+
+          let {code,data} = await materialApi.purchaseDetails(id);
+
+            if (code == 200) {
+
+            this.otherDeatils.value = data.data;
+
           }
-        })
+
+        } catch (error) {}
+        finally{
+          setTimeout(()=>{
+
+            this.otherDeatils.loading = false;
+          },200)
+        }
       },
       // 获取成本信息详情
-      getCostDetails(id) {
-        let _this = this;
-        materialApi.costDetails(id).then(res => {
-          this.otherDeatils.loading = false;
-          console.log(res, '获取成本信息详情');
-          if (res.code == 200) {
-            this.otherDeatils.value = res.data.data;
-            // _this.handleAddReferLabel('otherDeatils');
+      async getCostDetails(id) {
+        try {
+
+          this.otherDeatils.loading = true;
+
+          let {code,data} = await materialApi.costDetails(id);
+
+            if (code == 200) {
+
+            this.otherDeatils.value = data.data;
+
           }
-        })
+
+        } catch (error) {}
+        finally{
+        setTimeout(()=>{
+
+          this.otherDeatils.loading = false;
+        },200)
+        }
       },
       // 获取计划信息详情
-      getPlanDetails(id) {
-        let _this = this;
-        materialApi.planDetails(id).then(res => {
-          this.otherDeatils.loading = false;
-          console.log(res, '获取计划信息详情');
-          if (res.code == 200) {
-            this.otherDeatils.value = res.data.data;
-            // _this.handleAddReferLabel('otherDeatils');
+      async getPlanDetails(id) {
+
+        try {
+
+          this.otherDeatils.loading = true;
+
+          let {code,data} = await materialApi.planDetails(id);
+
+            if (code == 200) {
+
+            this.otherDeatils.value = data.data;
+
           }
-        })
-      },
-      // 获取库存详细信息详情
-      getInventoryDetails(id) {
-        let _this = this;
-        materialApi.inventoryDetails(id).then(res => {
+
+        } catch (error) {}
+        finally{
+          setTimeout(()=>{
+
           this.otherDeatils.loading = false;
-          console.log(res, '获取库存详细信息详情');
-          if (res.code == 200) {
-            this.otherDeatils.value = res.data.data;
-            // _this.handleAddReferLabel('otherDeatils');
+        },200)
+        }
+
+      },
+      //  
+      async getInventoryDetails(id) {
+        try {
+
+          this.otherDeatils.loading = true;
+
+          let {code,data} = await materialApi.inventoryDetails(id);
+
+            if (code == 200) {
+
+            this.otherDeatils.value = data.data;
+
           }
-        })
+
+        } catch (error) {}
+        finally{
+          setTimeout(()=>{
+
+          this.otherDeatils.loading = false;
+          },200)
+        }
       },
 
 
       /* 二级标签页 */
       // 根据物料id获取医药行业信息详细信息
-      getMedcineDetails(id) {
+      async getMedcineDetails(id) {
         let _this = this;
         console.log(id);
         materialApi.medcineDetailsInfo(id).then((res) => {
@@ -1409,7 +1514,7 @@
       },
       // 除基本信息之后的修改
       handleOtherEdit(type) {
-        debugger
+        // debugger
         console.log('除基本信息之后的修改', type);
         if ('table' === type) {
           if (this.mainMsg.checkedList.length == 1) {
@@ -1849,6 +1954,7 @@
             type: 'warning'
           });
         } else {
+          this.handleOtherListRefresh();
           done();
         }
       },
@@ -2088,64 +2194,183 @@
         })
       },
       // 保存财务信息——单个数据
-      handleSaveFinance(data) {
+      async handleSaveFinance(data) {
+
         console.log(data, '保存财务信息——单个数据');
-        materialApi.financeEdit(data).then(res => {
-          if (res.code == 200) {
+        try {
+
+          this.otherDeatils.loading = true;
+
+          let {code,msg} = await materialApi.financeEdit(data);
+
+          if (code == 200) {
             this.otherDeatils.isEdit = false;
             this.handleOtherRefresh();
+            this.$message({
+              message: msg,
+              type: 'success'
+            });
           }
-        })
+        } catch (error) {
+        }finally{
+          this.otherDeatils.loading = false;
+        }
+
+
+        // this.otherDeatils.loading = true;
+        // materialApi.financeEdit(data).then(res => {
+        //   if (res.code == 200) {
+        //     this.otherDeatils.isEdit = false;
+        //     this.handleOtherRefresh();
+        //   }
+        //   this.otherDeatils.loading = false;
+        // })
       },
       // 保存利润中心信息
-      handleSaveCenter(data) {
+      async handleSaveCenter(data) {
         console.log(data, '保存利润中心信息');
-        materialApi.centerEdit(data).then(res => {
-          if (res.code == 200) {
+        try {
+          
+          this.otherDeatils.loading = true;
+          
+          let {code,msg} = await materialApi.centerEdit(data);
+
+          if (code == 200) {
             this.otherDeatils.isEdit = false;
             this.handleOtherRefresh();
+            this.$message({
+              message: msg,
+              type: 'success'
+            });
           }
-        })
+
+        } catch (error) {}
+        finally{
+          this.otherDeatils.loading = false;
+        }
+        // materialApi.centerEdit(data).then(res => {
+        //   if (res.code == 200) {
+        //     this.otherDeatils.isEdit = false;
+        //     this.handleOtherRefresh();
+        //   }
+        // })
       },
       // 保存采购信息
-      handleSavePurchase(data) {
+      async handleSavePurchase(data) {
         console.log(data, '保存采购信息');
-        materialApi.purchaseEdit(data).then(res => {
-          if (res.code == 200) {
+        try {
+          
+          this.otherDeatils.loading = true;
+          
+          let {code,msg} = await materialApi.purchaseEdit(data);
+
+          if (code == 200) {
             this.otherDeatils.isEdit = false;
             this.handleOtherRefresh();
+            this.$message({
+              message: msg,
+              type: 'success'
+            });
           }
-        })
+
+        } catch (error) {}
+        finally{
+          this.otherDeatils.loading = false;
+        }
+        // materialApi.purchaseEdit(data).then(res => {
+        //   if (res.code == 200) {
+        //     this.otherDeatils.isEdit = false;
+        //     this.handleOtherRefresh();
+        //   }
+        // })
       },
       // 保存库存信息
-      handleSaveInventoryEdit(data) {
+      async handleSaveInventoryEdit(data) {
         console.log(data, '保存库存信息');
-        materialApi.inventoryEdit(data).then(res => {
-          if (res.code == 200) {
+        try {
+          
+          this.otherDeatils.loading = true;
+          
+          let {code,msg} = await materialApi.inventoryEdit(data);
+
+          if (code == 200) {
             this.otherDeatils.isEdit = false;
             this.handleOtherRefresh();
+            this.$message({
+              message: msg,
+              type: 'success'
+            });
           }
-        })
+
+        } catch (error) {}
+        finally{
+          this.otherDeatils.loading = false;
+        }
+       
+        // materialApi.inventoryEdit(data).then(res => {
+        //   if (res.code == 200) {
+        //     this.otherDeatils.isEdit = false;
+        //     this.handleOtherRefresh();
+        //   }
+        // })
       },
       // 保存计划信息
-      handleSavePlan(data) {
+      async handleSavePlan(data) {
         console.log(data, '保存计划信息');
-        materialApi.planEdit(data).then(res => {
-          if (res.code == 200) {
+        try {
+          
+          this.otherDeatils.loading = true;
+          
+          let {code,msg} = await materialApi.planEdit(data);
+
+          if (code == 200) {
             this.otherDeatils.isEdit = false;
             this.handleOtherRefresh();
+            this.$message({
+              message: msg,
+              type: 'success'
+            });
           }
-        })
+
+        } catch (error) {}
+        finally{
+          this.otherDeatils.loading = false;
+        }
+        // materialApi.planEdit(data).then(res => {
+        //   if (res.code == 200) {
+        //     this.otherDeatils.isEdit = false;
+        //     this.handleOtherRefresh();
+        //   }
+        // })
       },
       // 保存成本信息
-      handleSaveCost(data) {
+      async handleSaveCost(data) {
         console.log(data, '保存成本信息');
-        materialApi.costEdit(data).then(res => {
-          if (res.code == 200) {
+        try {
+          
+          this.otherDeatils.loading = true;
+          
+          let {code,msg} = await materialApi.costEdit(data);
+
+          if (code == 200) {
             this.otherDeatils.isEdit = false;
             this.handleOtherRefresh();
+            this.$message({
+              message: msg,
+              type: 'success'
+            });
           }
-        })
+
+        } catch (error) {}
+        finally{
+          this.otherDeatils.loading = false;
+        }
+        // materialApi.costEdit(data).then(res => {
+        //   if (res.code == 200) {
+        //     this.otherDeatils.isEdit = false;
+        //     this.handleOtherRefresh();
+        //   }
+        // })
       },
 
       judgeIsRequriedByProps(message){
@@ -2345,7 +2570,7 @@
           }
 
           .el-form {
-            max-height: 200px;
+            max-height: 350px;
             overflow-y: auto;
             overflow-x: hidden;
 
@@ -2517,6 +2742,7 @@
   .od-msg >>> .el-checkbox__label {
     width: 85%;
     box-sizing: border-box;
+    
   }
 
 

+ 41 - 35
src/views/material/basicFile/index.vue

@@ -5,7 +5,47 @@
 
     <!-- 操作栏 -->
     <div>
-      <el-row :gutter="10" class="mb10">
+    
+      <!-- 查询条件 -->
+      <el-row :gutter="10">
+        <el-col :span="1.5">
+          <el-form :inline="true" :model="queryForm" class="mb-query" @submit.native.prevent>
+            <el-form-item label="物料编码">
+              <el-input size="small" v-model="queryForm.code" placeholder="物料编码" clearable></el-input>
+            </el-form-item>
+            <el-form-item label="物料名称">
+              <el-input size="small" v-model="queryForm.name" placeholder="物料名称" clearable></el-input>
+            </el-form-item>
+            <el-form-item label="启用状态">
+              <!-- 0=已启用,2=已停用 -->
+              <el-select size="small" v-model="queryForm.isEnable" placeholder="请选择" clearable>
+                <el-option key="0" label="已启用" value="0"></el-option>
+                <el-option key="2" label="已停用" value="2"></el-option>
+              </el-select>
+            </el-form-item>
+            <el-form-item label="是否同步NC">
+              <!-- 是否同步;2=否,0=是 -->
+              <el-select size="small" v-model="queryForm.isSync" placeholder="请选择" clearable>
+                <el-option key="0" label="是" value="0"></el-option>
+                <el-option key="2" label="否" value="2"></el-option>
+              </el-select>
+            </el-form-item>
+
+            <el-form-item>
+              <el-button size="small" type="primary" @click="handleQuery">搜索</el-button>
+              <el-button size="small" @click="handleResetQuery">重置</el-button>
+            </el-form-item>
+          </el-form>
+        </el-col>
+
+      </el-row>
+
+      <el-row 
+        :gutter="10" 
+        class="mb10"
+        type="flex"
+        justify="end"
+      >
         <!-- 新增、修改、删除、复制 -->
         <el-col :span="1.5">
           <el-button-group>
@@ -57,40 +97,6 @@
 
 
       </el-row>
-
-      <!-- 查询条件 -->
-      <el-row :gutter="10">
-        <el-col :span="1.5">
-          <el-form :inline="true" :model="queryForm" class="mb-query" @submit.native.prevent>
-            <el-form-item label="物料编码">
-              <el-input size="small" v-model="queryForm.code" placeholder="物料编码" clearable></el-input>
-            </el-form-item>
-            <el-form-item label="物料名称">
-              <el-input size="small" v-model="queryForm.name" placeholder="物料名称" clearable></el-input>
-            </el-form-item>
-            <el-form-item label="启用状态">
-              <!-- 0=已启用,2=已停用 -->
-              <el-select size="small" v-model="queryForm.isEnable" placeholder="请选择" clearable>
-                <el-option key="0" label="已启用" value="0"></el-option>
-                <el-option key="2" label="已停用" value="2"></el-option>
-              </el-select>
-            </el-form-item>
-            <el-form-item label="是否同步NC">
-              <!-- 是否同步;2=否,0=是 -->
-              <el-select size="small" v-model="queryForm.isSync" placeholder="请选择" clearable>
-                <el-option key="0" label="是" value="0"></el-option>
-                <el-option key="2" label="否" value="2"></el-option>
-              </el-select>
-            </el-form-item>
-
-            <el-form-item>
-              <el-button size="small" type="primary" @click="handleQuery">查询</el-button>
-              <el-button size="small" @click="handleResetQuery">重置</el-button>
-            </el-form-item>
-          </el-form>
-        </el-col>
-
-      </el-row>
     </div>
 
     <!-- 主体列表 -->

+ 340 - 235
src/views/material/requisition/index.vue

@@ -1,32 +1,32 @@
 <template>
-  <div class="requisition">
+  <div class="requisition" v-loading="failLoad">
     <div class="applyList" v-if="isList">
-    <el-row :gutter="10" class="mb10">
-      <el-col :span="1.5">
-        <span style="font-size: 14px;margin-right: 5px;">单据编码</span>
-        <el-input
-          v-model="queryParams.billCode"
-          size="small"
-          placeholder="请输入单据编码查询"
-          clearable
-          style="width: 240px"
-        />
-      </el-col>
+      <el-row :gutter="10" class="mb10">
+        <el-col :span="1.5">
+          <span style="font-size: 14px;margin-right: 5px;">单据编码</span>
+          <el-input
+            v-model="queryParams.billCode"
+            size="small"
+            placeholder="请输入单据编码查询"
+            clearable
+            style="width: 240px"
+          />
+        </el-col>
 
-      <el-col :span="1.5">
-        <span style="font-size: 14px;margin-right: 5px;">物料名称</span>
-        <el-input
-          v-model="queryParams.name"
-          size="small"
-          placeholder="请输入物料名称查询"
-          clearable
-          style="width: 240px"
-        />
-      </el-col>
+        <el-col :span="1.5">
+          <span style="font-size: 14px;margin-right: 5px;">物料名称</span>
+          <el-input
+            v-model="queryParams.name"
+            size="small"
+            placeholder="请输入物料名称查询"
+            clearable
+            style="width: 240px"
+          />
+        </el-col>
 
-      <el-col :span="1.5">
+        <el-col :span="1.5">
           <span style="font-size: 14px;margin-right: 5px;">单据状态</span>
-          <el-select 
+          <el-select
             v-model="queryParams.status"
             size="small"
             placeholder="请选择单据状态"
@@ -41,223 +41,327 @@
           </el-select>
         </el-col>
 
-      <el-col :span="1.5">
-        <el-button type="primary" size="small" plain @click="getList(queryParams)">查询</el-button>
-      </el-col>
-      <!-- <el-col :span="1.5">
-        <el-button type="primary" size="small" plain>高级查询</el-button>
-      </el-col> -->
-      <el-col :span="1.5">
-        <el-button type="primary" size="small" plain @click="reset">重置</el-button>
-      </el-col>
+        <el-col :span="1.5">
+          <el-button type="primary" size="small" plain @click="getList(queryParams)">查询</el-button>
+        </el-col>
+        <!-- <el-col :span="1.5">
+          <el-button type="primary" size="small" plain>高级查询</el-button>
+        </el-col> -->
+        <el-col :span="1.5">
+          <el-button type="primary" size="small" plain @click="reset">重置</el-button>
+        </el-col>
 
-    </el-row>
+      </el-row>
 
-    <el-row :gutter="10" class="mb10">
-      <el-col :span="1.5">
-        <el-button type="primary" size="small" plain @click="newAdd">新增</el-button>
-      </el-col>
-      <el-col :span="1.5">
-        <el-button size="small" :disabled="checkedList.length != 1" @click="handleCopy">复制</el-button>
-      </el-col>
-      <el-col :span="1.5">
-        <el-button type="primary" size="small" plain @click="download('/system/apply/material/download',{},'申请单模板.xlsx')">模板下载</el-button>
-      </el-col>
-      <!-- <el-col :span="1.5">
-        <el-button type="primary" size="small" plain>导入</el-button>
-      </el-col>
-      <el-col :span="1.5">
-        <el-button type="primary" size="small" plain>导出</el-button>
-      </el-col> -->
-      <!-- <el-col :span="1.5">
-        <el-button type="primary" size="small" plain>批量提交</el-button>
-      </el-col>
-      <el-col :span="1.5">
-        <el-button type="primary" size="small" plain>批量删除</el-button>
-      </el-col> -->
-    </el-row>
+      <el-row :gutter="10" class="mb10">
+        <el-col :span="1.5">
+          <el-button type="primary" size="small" plain @click="newAdd">新增</el-button>
+        </el-col>
+        <el-col :span="1.5">
+          <el-button size="small" :disabled="checkedList.length != 1" @click="handleCopy">复制</el-button>
+        </el-col>
+        <el-col :span="1.5">
+          <el-button type="primary" size="small" plain
+                     @click="download('/system/apply/material/download',{},'申请单模板.xlsx')">模板下载
+          </el-button>
+        </el-col>
+        <el-col :span="1.5">
+          <el-button size="small" @click="handleImport">批量导入</el-button>
+        </el-col>
+        <!-- 导入弹窗 -->
+        <el-dialog title="批量导入" :visible.sync="importData.show" width="35%" center
+                   :before-close="handlefileDialogColse">
+          <div class="mb-import">
+            <el-upload class="upload-demo" accept=".xls, .xlsx" ref="upload" action="#" :on-remove="handleFileRemove"
+                       :file-list="importData.list" :auto-upload="false" :on-change="handleChangeFile" :limit="1">
+              <el-button slot="trigger" size="small" type="primary">选取文件</el-button>
+              <el-button style="margin-left: 10px;" size="small" type="success" @click="handleDownTemplate">下载模板
+              </el-button>
+              <div slot="tip" class="el-upload__tip">只能上传Excel文件</div>
+            </el-upload>
+
+          </div>
+          <span slot="footer">
+        <el-button @click="handleImportData('cancal')">取 消</el-button>
+        <el-button type="primary" @click="handleImportData('confirm')">确 定</el-button>
+      </span>
+        </el-dialog>
+        <!-- <el-col :span="1.5">
+          <el-button type="primary" size="small" plain>导入</el-button>
+        </el-col>
+        <el-col :span="1.5">
+          <el-button type="primary" size="small" plain>导出</el-button>
+        </el-col> -->
+        <!-- <el-col :span="1.5">
+          <el-button type="primary" size="small" plain>批量提交</el-button>
+        </el-col>
+        <el-col :span="1.5">
+          <el-button type="primary" size="small" plain>批量删除</el-button>
+        </el-col> -->
+      </el-row>
 
-    <el-card>
-      <el-table 
-        :data="tableList" 
-        class="request-table"
-        fit
-        max-height="680"
-        @selection-change="handleSelectionChange"
-        @select="handleSelect"
-      >
-      <el-table-column type="selection" width="45" ></el-table-column>
-        <el-table-column label="序号" align="center" type="index" width="50"/>
-        <el-table-column label="所属组织" align="center" width="200" prop="orgName" />
-        <el-table-column label="单据编码" align="center" width="200" prop="billCode" />
-        <el-table-column label="申请人" align="center" prop="createName" />
-        <el-table-column label="申请时间" align="center" width="150" prop="createTime" />
-        <el-table-column label="单据状态" align="center" prop="status" :formatter="statusJug" />
-        <!-- <el-table-column label="物料编码" align="center" width="150" prop="materialCode" /> -->
-        <el-table-column label="物料名称" align="center" width="150" prop="name" />
-        <el-table-column label="创建人" align="center" prop="createName"/>
-        <el-table-column label="创建时间" align="center" width="150" prop="createTime" />
-        <el-table-column label="最后修改人" align="center" width="120" prop="updateName" />
-        <el-table-column label="最后修改时间" align="center" width="150" prop="updateTime" />
-        <el-table-column
-          fixed="right"
-          label="操作"
-          align="center"
-          width="180"
+      <el-card>
+        <el-table
+          :data="tableList"
+          class="request-table"
+          fit
+          max-height="680"
+          @selection-change="handleSelectionChange"
+          @select="handleSelect"
+        >
+          <el-table-column type="selection" width="45"></el-table-column>
+          <el-table-column label="序号" align="center" type="index" width="50"/>
+          <el-table-column label="所属组织" align="center" width="200" prop="orgName"/>
+          <el-table-column label="单据编码" align="center" width="200" prop="billCode"/>
+          <el-table-column label="申请人" align="center" prop="createName"/>
+          <el-table-column label="申请时间" align="center" width="150" prop="createTime"/>
+          <el-table-column label="单据状态" align="center" prop="status" :formatter="statusJug"/>
+          <!-- <el-table-column label="物料编码" align="center" width="150" prop="materialCode" /> -->
+          <el-table-column label="物料名称" align="center" width="150" prop="name"/>
+          <el-table-column label="创建人" align="center" prop="createName"/>
+          <el-table-column label="创建时间" align="center" width="150" prop="createTime"/>
+          <el-table-column label="最后修改人" align="center" width="120" prop="updateName"/>
+          <el-table-column label="最后修改时间" align="center" width="150" prop="updateTime"/>
+          <el-table-column
+            fixed="right"
+            label="操作"
+            align="center"
+            width="180"
           >
-          <template slot-scope="scope">
-            <el-button type="text" size="small" @click="check(scope.row)">查看</el-button>
-            <el-button @click="edit(scope.row)" v-if="scope.row.status == 0 || scope.row.status == 3" type="text" size="small">编辑</el-button>
-            <!-- <el-button @click="commit(scope.row)" v-if="scope.row.status == 0 || scope.row.status == 3" type="text" size="small">提交</el-button> -->
-            <el-button type="text" size="small" @click="deleteRow(scope.row)" v-if="scope.row.status == 0 || scope.row.status == 3">删除</el-button>
-          </template>
-        </el-table-column>
-      </el-table>
+            <template slot-scope="scope">
+              <el-button type="text" size="small" @click="check(scope.row)">查看</el-button>
+              <el-button @click="edit(scope.row)" v-if="scope.row.status == 0 || scope.row.status == 3" type="text"
+                         size="small">编辑
+              </el-button>
+              <!-- <el-button @click="commit(scope.row)" v-if="scope.row.status == 0 || scope.row.status == 3" type="text" size="small">提交</el-button> -->
+              <el-button type="text" size="small" @click="deleteRow(scope.row)"
+                         v-if="scope.row.status == 0 || scope.row.status == 3">删除
+              </el-button>
+            </template>
+          </el-table-column>
+        </el-table>
 
-      <el-pagination
-        @size-change="handleSizeChange"
-        @current-change="handleCurrentChange"
-        :page-sizes="[5, 10, 15, 20]"
-        :page-size=queryParams.pageSize
-        layout="total, sizes, prev, pager, next, jumper"
-        :total="total"
-        style="text-align: center;">
-      </el-pagination>
-    </el-card>
+        <el-pagination
+          @size-change="handleSizeChange"
+          @current-change="handleCurrentChange"
+          :page-sizes="[5, 10, 15, 20]"
+          :page-size=queryParams.pageSize
+          layout="total, sizes, prev, pager, next, jumper"
+          :total="total"
+          style="text-align: center;">
+        </el-pagination>
+      </el-card>
     </div>
 
-    <component :is="isComponent" v-model="isList" :pageStu="page" :disable="disable" :row="rowDetail" @refresh="getList" v-if="!isList"/>
+    <component :is="isComponent" v-model="isList" :pageStu="page" :disable="disable" :row="rowDetail" @refresh="getList"
+               v-if="!isList"/>
   </div>
 </template>
 
 <script>
-import addReq from './add.vue';
-import { getReqList, delReq } from '@/api/requisition/basic'
-export default {
-  name: 'requisition',
-  components: {
-    addReq
-  },
-  data() {
-    return{
-      // 
-      tableList: [],
-      queryParams: {
-        billCode: '',
-        name: '',
-        status: '',
-        pageNum: 1,
-        pageSize: 10
-      },
-      options: [{
-        value: 0, label: '未提交'
-      },{
-        value: 1, label: '审批中'
-      },{
-        value: 2, label: '已完成'
-      },{
-        value: 3, label: '已驳回'
-      },],
-      total:0,
-      // isComponent
-      isComponent:'addReq',
-      isList: true,
-      // 页面状态
-      page: '',
-      rowDetail: {},
-      disable: false,
-      checkedList:[],
-    }
-  },
-  created() {
-    
-  },
-  mounted() {
-    this.getList(this.queryParams)
-  },
-  methods: {
-    reset() {
-      this.queryParams.billCode = ''
-      this.queryParams.name = ''
-      this.queryParams.status = ''
-      this.queryParams.pageNum = 1
-      this.getList(this.queryParams)
+  import addReq from './add.vue';
+  import {getReqList, delReq, importData, fileImport} from '@/api/requisition/basic';
+  import {saveAs} from "file-saver";
+  import { blobValidate } from "@/utils/ruoyi";
+
+  export default {
+    name: 'requisition',
+    components: {
+      addReq
     },
-    newAdd() {
-      this.isList = false
-      this.isComponent = 'addReq'
-      this.page = 'add'
-      this.disable = false
+    data() {
+      return {
+        failLoad: false,
+        tableList: [],
+        queryParams: {
+          billCode: '',
+          name: '',
+          status: '',
+          pageNum: 1,
+          pageSize: 10
+        },
+        options: [{
+          value: 0, label: '未提交'
+        }, {
+          value: 1, label: '审批中'
+        }, {
+          value: 2, label: '已完成'
+        }, {
+          value: 3, label: '已驳回'
+        },],
+        total: 0,
+        // isComponent
+        isComponent: 'addReq',
+        isList: true,
+        // 页面状态
+        page: '',
+        rowDetail: {},
+        disable: false,
+        checkedList: [],
+        importData: {
+          show: false,
+          list: []
+        },
+      }
+    },
+    created() {
+
     },
-    // 复制
-    handleCopy(){
-      this.isList = false;
-      this.isComponent = 'addReq';
-      this.page = 'copy';
-      this.rowDetail =  this.checkedList[0];
-      this.disable = false;
+    mounted() {
+      this.getList(this.queryParams)
     },
-    // Select框
-    handleSelect(selection, row) {
+    methods: {
+      reset() {
+        this.queryParams.billCode = ''
+        this.queryParams.name = ''
+        this.queryParams.status = ''
+        this.queryParams.pageNum = 1
+        this.getList(this.queryParams)
+      },
+      newAdd() {
+        this.isList = false
+        this.isComponent = 'addReq'
+        this.page = 'add'
+        this.disable = false
+      },
+      // 复制
+      handleCopy() {
+        this.isList = false;
+        this.isComponent = 'addReq';
+        this.page = 'copy';
+        this.rowDetail = this.checkedList[0];
+        this.disable = false;
+      },
+      // 导入
+      handleImport() {
+        this.importData.show = true
+      },
+      // 删除文件
+      handleFileRemove(file, fileList) {
+        console.log('删除文件', file, 'file', fileList, 'fileList');
+        this.importData.list = fileList;
+      },
+      // 文件发生改变
+      handleChangeFile(file, fileList) {
+        this.importData.list = fileList;
+      },
+      // 导入弹窗操作
+      handleImportData(type) {
+        switch (type) {
+          // 取消
+          case 'cancal':
+            this.importData.list = [];
+            this.importData.show = false;
+            break;
+          // 确认
+          case 'confirm':
+            if (this.importData.list.length) {
 
-      this.checkedList = selection;
+              let formData = new FormData();
 
-      console.log(this.checkedList, 'this.checkedList');
+              formData.append('file', this.importData.list[0].raw);
+              importData(formData).then(res => {
+                if (res.code == 200) {
+                  this.importData.show = false;
+                  this.importData.list = [];
+                  if (res.data.flag) {
+                    this.failLoad = true;
+                    console.log(res.data.datas)
+                    let param = {failDatas: res.data.datas}
+                    if (null != param) {
 
-    },
-    getList(val) {
-      console.log('val',val)
-      getReqList(val).then(res => {
-        if (res.code === 200) {
-          this.tableList = res.rows
-          this.total = res.total
+                      fileImport(param).then(res => {
+                        console.log('res',res)
+                        const isBlob = blobValidate(res);
+                        if (isBlob) {
+                          const blob = new Blob([res]);
+                          saveAs(blob, '导入失败的物料申请单数据.xlsx');
+                        }
+                        this.failLoad = false;
+                      })
+                    }
+                  }
+                  this.$message({
+                    message: res.data.msg,
+                    type: res.data.flag ? 'warning' : 'success'
+                  });
+                } else {
+                  this.$message({
+                    message: res.msg,
+                    type: res.code == 200 ? 'success' : 'warning'
+                  });
+                }
+              })
+            } else {
+              this.$message({
+                message: '请上传文件之后在确认!',
+                type: 'warning'
+              });
+            }
+            break;
         }
-      })
-      this.checkedList = [];
-    },
-    // 表格内状态栏判断值
-    statusJug(row) {
-      if (row.status == 0) {
-        return '未提交'
-      } else if (row.status == 1) {
-        return '审批中'
-      } else if (row.status == 2) {
-        return '已完成'
-      } else if (row.status == 3) {
-        return '已驳回'
-      }
-    },
-    // 
-    handleSelectionChange () {
+      },
+      // Select框
+      handleSelect(selection, row) {
 
-    },
-    check(row) {
-      console.log('查看详情', row)
-      this.isList = false
-      this.isComponent = 'addReq'
-      this.page = 'check'
-      this.rowDetail = row
-      this.disable = true
-    },
-    edit(row) {
-      console.log('修改先加载详情', row)
-      this.isList = false
-      this.isComponent = 'addReq'
-      this.page = 'edit'
-      this.rowDetail = row
-      this.disable = false
-    },
-    commit(row) {
-      console.log('row', row)
-    },
-    deleteRow(row) {
-      this.$confirm('是否删除此条数据?', '提示', {
+        this.checkedList = selection;
+
+        console.log(this.checkedList, 'this.checkedList');
+
+      },
+      getList(val) {
+        console.log('val', val)
+        getReqList(val).then(res => {
+          if (res.code === 200) {
+            this.tableList = res.rows
+            this.total = res.total
+          }
+        })
+        this.checkedList = [];
+      },
+      // 表格内状态栏判断值
+      statusJug(row) {
+        if (row.status == 0) {
+          return '未提交'
+        } else if (row.status == 1) {
+          return '审批中'
+        } else if (row.status == 2) {
+          return '已完成'
+        } else if (row.status == 3) {
+          return '已驳回'
+        }
+      },
+      //
+      handleSelectionChange() {
+
+      },
+      check(row) {
+        console.log('查看详情', row)
+        this.isList = false
+        this.isComponent = 'addReq'
+        this.page = 'check'
+        this.rowDetail = row
+        this.disable = true
+      },
+      edit(row) {
+        console.log('修改先加载详情', row)
+        this.isList = false
+        this.isComponent = 'addReq'
+        this.page = 'edit'
+        this.rowDetail = row
+        this.disable = false
+      },
+      commit(row) {
+        console.log('row', row)
+      },
+      deleteRow(row) {
+        this.$confirm('是否删除此条数据?', '提示', {
           confirmButtonText: '确定',
           cancelButtonText: '取消',
           type: 'warning'
         }).then(() => {
           delReq(row.id).then(res => {
-            if(res.code === 200) {
+            if (res.code === 200) {
               this.$message({
                 message: res.msg,
                 type: 'success'
@@ -265,26 +369,27 @@ export default {
               this.getList(this.queryParams)
             }
           })
-        }).catch(() => {})
-    },
-    handleSizeChange(val) {
-      console.log(`每页 ${val} 条`);
-      this.queryParams.pageSize = val
-      this.getList(this.queryParams)
-    },
-    handleCurrentChange(val) {
-      console.log(`当前页: ${val}`);
-      this.queryParams.pageNum = val
-      this.getList(this.queryParams)
+        }).catch(() => {
+        })
+      },
+      handleSizeChange(val) {
+        console.log(`每页 ${val} 条`);
+        this.queryParams.pageSize = val
+        this.getList(this.queryParams)
+      },
+      handleCurrentChange(val) {
+        console.log(`当前页: ${val}`);
+        this.queryParams.pageNum = val
+        this.getList(this.queryParams)
+      }
     }
   }
-}
 </script>
 
 <style scoped lang="scss">
-.requisition {
-  height: calc(100vh - 84px);
-  padding: 12px;
-  box-sizing: border-box;
-}
-</style>
+  .requisition {
+    height: calc(100vh - 84px);
+    padding: 12px;
+    box-sizing: border-box;
+  }
+</style>

+ 0 - 31
src/views/monitor/job/index.vue

@@ -29,34 +29,6 @@
           />
         </el-select>
       </el-form-item>
-      <el-form-item label="任务员工" prop="empno">
-        <el-input
-          v-model="queryParams.empno"
-          placeholder="请输入员工工号"
-          clearable
-          @keyup.enter.native="handleQuery"
-        />
-      </el-form-item>
-      <el-form-item label="任务大类" prop="jobType">
-        <el-select v-model="queryParams.status" placeholder="请选择任务大类" clearable>
-          <el-option
-            v-for="dict in dict.type.sys_job_type"
-            :key="dict.value"
-            :label="dict.label"
-            :value="dict.value"
-          />
-        </el-select>
-      </el-form-item>
-      <el-form-item label="任务小类" prop="jobTypeS">
-        <el-select v-model="queryParams.status" placeholder="请选择任务小类" clearable>
-          <el-option
-            v-for="dict in dict.type.sys_job_types"
-            :key="dict.value"
-            :label="dict.label"
-            :value="dict.value"
-          />
-        </el-select>
-      </el-form-item>
       <el-form-item>
         <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
         <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
@@ -134,7 +106,6 @@
       <el-table-column type="selection" width="55" align="center" />
       <el-table-column label="任务编号" width="100" align="center" prop="jobId" />
       <el-table-column label="任务名称" align="center" prop="jobName" :show-overflow-tooltip="true" />
-      <el-table-column label="员工工号" align="center" prop="empno" :show-overflow-tooltip="true" />
       <el-table-column label="任务组名" align="center" prop="jobGroup">
         <template slot-scope="scope">
           <dict-tag :options="dict.type.sys_job_group" :value="scope.row.jobGroup"/>
@@ -536,7 +507,6 @@ export default {
         this.total = response.total;
         this.loading = false;
       });
-      console.log(this.queryParams,'this.queryParams')
     },
     // 任务组名字典翻译
     jobGroupFormat(row, column) {
@@ -552,7 +522,6 @@ export default {
       this.form = {
         jobId: undefined,
         jobName: undefined,
-        empno:undefined,
         jobGroup: undefined,
         invokeTarget: undefined,
         cronExpression: undefined,

+ 70 - 27
src/views/monitor/job/log.vue

@@ -58,6 +58,43 @@
           end-placeholder="结束日期"
         ></el-date-picker>
       </el-form-item>
+      <el-form-item label="是否完成" prop="whetherComplete">
+        <el-select v-model="queryParams.whetherComplete" placeholder="请选择任务是否完成" clearable>
+          <el-option
+            v-for="dict in dict.type.sys_job_complete"
+            :key="dict.value"
+            :label="dict.label"
+            :value="dict.value"
+          />
+        </el-select>
+      </el-form-item>
+      <el-form-item label="任务员工" prop="empno">
+        <el-input
+          v-model="queryParams.empno"
+          placeholder="请输入员工工号"
+          clearable
+        />
+      </el-form-item>
+      <el-form-item label="任务大类" prop="jobType">
+        <el-select v-model="queryParams.jobType" placeholder="请选择任务大类" clearable>
+          <el-option
+            v-for="dict in dict.type.sys_oa"
+            :key="dict.value"
+            :label="dict.label"
+            :value="dict.value"
+          />
+        </el-select>
+      </el-form-item>
+      <el-form-item label="任务小类" prop="jobTypeS">
+        <el-select v-model="queryParams.jobTypeS" placeholder="请选择任务小类" clearable>
+          <el-option
+            v-for="dict in dict.type.sys_oa_s"
+            :key="dict.value"
+            :label="dict.label"
+            :value="dict.value"
+          />
+        </el-select>
+      </el-form-item>
       <el-form-item>
         <el-button
           type="primary"
@@ -131,6 +168,31 @@
     >
       <el-table-column type="selection" width="55" align="center" />
       <el-table-column label="编号" width="80" align="center" prop="jobLogId" />
+      <el-table-column label="任务执行状态" align="center" prop="status">
+        <template slot-scope="scope">
+          <dict-tag
+            :options="dict.type.sys_common_status"
+            :value="scope.row.status"
+          />
+        </template>
+      </el-table-column>
+      <!--      <el-table-column label="执行时间" align="center" prop="createTime" width="180">
+        <template slot-scope="scope">
+          <span>{{ parseTime(scope.row.createTime) }}</span>
+        </template>
+      </el-table-column>-->
+      <el-table-column
+        label="完成时长"
+        width="180"
+        align="center"
+        prop="tqaaaa"
+      />
+      <el-table-column
+        label="超时时长"
+        width="180"
+        align="center"
+        prop="tqbbbb"
+      />
       <el-table-column
         label="任务名称"
         width="180"
@@ -180,28 +242,17 @@
         align="center"
         prop="executionTime"
       />
-      <el-table-column
-        label="完成时长"
-        width="180"
-        align="center"
-        prop="tqaaaa"
-      />
+
       <el-table-column
         label="预计时长"
         width="80"
         align="center"
         prop="durations"
       />
-      <el-table-column
-        label="超时时长"
-        width="180"
-        align="center"
-        prop="tqbbbb"
-      />
 
       <el-table-column
         label="oa执行状态"
-        width="80"
+        width="90"
         align="center"
         prop="completionStatus"
       >
@@ -233,19 +284,6 @@
         prop="jobMessage"
         :show-overflow-tooltip="true"
       />
-      <el-table-column label="任务执行状态" align="center" prop="status">
-        <template slot-scope="scope">
-          <dict-tag
-            :options="dict.type.sys_common_status"
-            :value="scope.row.status"
-          />
-        </template>
-      </el-table-column>
-      <!--      <el-table-column label="执行时间" align="center" prop="createTime" width="180">
-        <template slot-scope="scope">
-          <span>{{ parseTime(scope.row.createTime) }}</span>
-        </template>
-      </el-table-column>-->
 
       <el-table-column
         label="操作"
@@ -329,7 +367,7 @@ import { listJobLog, delJobLog, cleanJobLog } from "@/api/monitor/jobLog";
 
 export default {
   name: "JobLog",
-  dicts: ["sys_common_status", "sys_job_group","sys_oa_back_state"],
+  dicts: ["sys_job_complete", "sys_oa", "sys_oa_s", "sys_common_status", "sys_job_group","sys_oa_back_state"],
   data() {
     return {
       // 遮罩层
@@ -357,6 +395,10 @@ export default {
         jobName: undefined,
         jobGroup: undefined,
         status: undefined,
+        jobType: undefined,
+        jobTypeS: undefined,
+        empno:undefined,
+        whetherComplete:undefined
       },
     };
   },
@@ -385,6 +427,7 @@ export default {
       this.loading = true;
       listJobLog(this.addDateRange(this.queryParams, this.dateRange)).then(
         (response) => {
+          // console.log(response, 'response')
           this.jobLogList = response.rows.map((item) => {
             const { executionTime, createTime, duration } = item;
 

+ 113 - 0
src/views/monitor/service/index.vue

@@ -0,0 +1,113 @@
+<template>
+    <div class="app-container">
+        <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
+            <el-form-item label="任务名称" prop="taskName">
+                <el-input 
+                    v-model="queryParams.taskName"
+                    placeholder="请输入任务名称"
+                    clearable
+                    @keyup.enter.native="handleQuery"
+                />
+            </el-form-item>
+
+            <el-form-item label="来源系统" prop="baseId">
+                <el-input 
+                    v-model="queryParams.baseId"
+                    placeholder="请输入来源系统名称"
+                    clearable
+                    @keyup.enter.native="handleQuery"
+                />
+            </el-form-item>
+
+            <el-form-item>
+                <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
+                <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
+            </el-form-item>
+            
+        </el-form>
+
+        <el-table v-loading="loading" :data="serviceList">
+            <el-table-column label="任务名称" min-width="120" align="center" prop="taskName" />
+            <el-table-column label="任务路径" min-width="120" align="center" prop="taskUrl" :show-overflow-tooltip="true"/>
+            <el-table-column label="来源系统" min-width="80" align="center" prop="baseId" />
+            <el-table-column label="任务信息" min-width="120" align="center" prop="taskMessage" :show-overflow-tooltip="true"/>
+            <el-table-column label="任务时间" min-width="60" align="center" prop="taskTime" :show-overflow-tooltip="true" :formatter="rounding"/>
+            <el-table-column label="任务返回信息" min-width="150" align="center" prop="taskResult" :show-overflow-tooltip="true"/>
+            <el-table-column label="异常信息" min-width="120" align="center" prop="taskAlarmSend" :show-overflow-tooltip="true"/>
+            <el-table-column label="请求超时时间" align="center" prop="timeOutSecs" :show-overflow-tooltip="true"/>
+            <el-table-column label="创建时间" min-width="120" align="center" prop="insertDate" :show-overflow-tooltip="true"/>
+            <el-table-column label="修改时间" min-width="120" align="center" prop="modifyDate" :show-overflow-tooltip="true"/>
+        </el-table>
+
+        <pagination
+        v-show="total>0"
+        :total="total"
+        :page.sync="queryParams.pageNum"
+        :limit.sync="queryParams.pageSize"
+        @pagination="getList"
+        />
+    </div>
+</template>
+
+<script>
+import { listService } from "@/api/monitor/service";
+
+export default {
+    data() {
+        return {
+            //遮罩层
+            loading: true,
+            //服务数据表
+            serviceList: [],
+            //显示搜索条件
+            showSearch: true,
+            //总条数
+            total: 0,
+            //查询参数
+            queryParams: {
+                pageNum: 1,
+                pageSize: 10,
+                taskName: undefined,
+                baseId: undefined
+            }
+        }
+    },
+    updated() {},
+    mounted() {
+
+    },
+    created() {
+        this.getList()
+    },
+    methods: {
+        //保留两位小数点
+        rounding(row,column) {
+            return parseFloat(row[column.property]).toFixed(2);
+        },
+        //获取数据列表
+        getList(){
+            this.loading = true;
+            listService(this.queryParams).then(response => {
+                // console.log(response,'response')
+                this.serviceList = response.rows;
+                this.total = response.total;
+                this.loading = false;
+            });
+        },
+        //查询
+        handleQuery(){
+            this.queryParams.pageNum = 1;
+            this.getList();
+        },
+        //重置
+        resetQuery(){
+            this.resetForm("queryForm");
+            this.handleQuery();
+        }
+    }
+}
+</script>
+
+<style>
+
+</style>

+ 63 - 4
src/views/purchase/DemandSummary/add.vue

@@ -13,6 +13,7 @@
       <el-table 
           :data="tableList" 
           fit
+          border
           max-height="680"
           style="font-size: 12px;"
           @selection-change="handleSelectionChange"
@@ -79,8 +80,21 @@
         <el-table-column show-overflow-tooltip label="需求单单号" align="center" prop="code" width="150"/>
         <el-table-column show-overflow-tooltip label="供应仓库" align="center" prop="lastWarehouseName" width="150"/>
         <el-table-column show-overflow-tooltip label="供应货位" align="center" prop="lastAllocationName" width="150"/>
+        <el-table-column show-overflow-tooltip label="默认采购组织" align="center" prop="orgName" width="280px">
+          <template slot-scope="scope">
+              <el-input :disabled="scope.row.status !== '1' || lineDisable" size="mini" v-model="scope.row.orgName" @clear="clean(scope.row, '默认采购组织')" @focus="chooseMxHW(scope.$index, 'ORG_PARAM', true, '默认采购组织')">
+                <el-button size="mini" :disabled="scope.row.status !== '1' || lineDisable" slot="append" icon="el-icon-more" @click="chooseMxHW(scope.$index, 'ORG_PARAM', true, '默认采购组织')"></el-button>
+              </el-input>
+          </template>
+        </el-table-column>
         <el-table-column show-overflow-tooltip label="业务类型" align="center" prop="billType" width="150" :formatter="formatterBillType"/>
-        <el-table-column show-overflow-tooltip label="收货仓库" align="center" prop="deliveryWarehouseName" width="150"/>
+        <el-table-column show-overflow-tooltip label="收货仓库" align="center" prop="deliveryWarehouseName" width="200">
+            <template slot-scope="scope">
+              <el-input clearable :disabled="scope.row.status !== '1' || lineDisable" size="mini" v-model="scope.row.deliveryWarehouseName" @clear="clean(scope.row, '收货仓库')" @focus="chooseMxCK(scope.$index, 'WAREHOUSE_PARAM', true, '收货仓库', scope.row.org)">
+                <el-button size="mini" :disabled="scope.row.status !== '1' || lineDisable" slot="append" icon="el-icon-more" @click="chooseMxCK(scope.$index, 'WAREHOUSE_PARAM', true, '收货仓库', scope.row.org)"></el-button>
+              </el-input>
+            </template>
+        </el-table-column>
         <el-table-column show-overflow-tooltip label="收货货位" align="center" prop="deliveryAllocationName" width="200">
           <template slot-scope="scope">
             <el-input clearable :disabled="scope.row.status !== '1' || lineDisable" size="mini" v-model="scope.row.deliveryAllocationName" @clear="clean(scope.row, '收货货位')" @focus="chooseMxHW(scope.$index, 'ALLOCATION_PARAM', true, '收货货位', scope.row.deliveryWarehouse)">
@@ -97,7 +111,7 @@
         <el-table-column show-overflow-tooltip label="集团预测分类" align="center" prop="forecastClassify" width="150"/>
         <el-table-column show-overflow-tooltip label="修改时间" align="center" prop="updateTime" width="150"/>
         <el-table-column show-overflow-tooltip label="采购员编码" align="center" prop="buyer" width="150"/>
-        <el-table-column show-overflow-tooltip label="采购组织" align="center" prop="orgName" width="150"/>
+        <!-- <el-table-column show-overflow-tooltip label="采购组织" align="center" prop="orgName" width="150"/> -->
         <el-table-column show-overflow-tooltip label="有效期单位" align="center" prop="expiryUnit" width="150"/>
         <!-- <el-table-column show-overflow-tooltip label="业务部门" align="center" prop="businessDeptName"/> -->
         <el-table-column show-overflow-tooltip label="需求部门" align="center" prop="demandDeptName" width="150"/>
@@ -119,7 +133,7 @@
         <el-table-column show-overflow-tooltip label="需求单提交人" align="center" prop="createByName" width="150"/>
         <!-- <el-table-column show-overflow-tooltip label="处理需求时间" align="center" prop="processTime"/> -->
         <!-- <el-table-column show-overflow-tooltip label="处理需求人员" align="center" prop="processPersonal"/> -->
-        <el-table-column show-overflow-tooltip label="处理确认人" align="center" prop="affirmer" width="150"/>
+        <el-table-column show-overflow-tooltip label="处理确认人" align="center" prop="affirmerName" width="150"/>
         <el-table-column show-overflow-tooltip label="处理确认时间" align="center" prop="affirmerTime" width="150"/>
         <!-- <el-table-column show-overflow-tooltip label="转请购时间" align="center" prop="code"/>
         <el-table-column show-overflow-tooltip label="转请购人员" align="center" prop="code"/> -->
@@ -129,7 +143,7 @@
 
     <div class="btn_group">
       <el-col :span="1.5">
-        <el-button size="mini" plain @click="back">返回</el-button>
+        <el-button size="mini" plain @click="back" v-if="lineDisable">返回</el-button>
       </el-col>
     </div>
 
@@ -194,6 +208,10 @@ export default {
             return '新品需求'
           case 'HZBM':
             return '合作部门需求'
+          case 'DZBH':
+            return '大宗备货'
+          case 'XZCG':
+            return '行政类采购'
         }
       },
       // 不能直接改变props传来的值
@@ -215,6 +233,7 @@ export default {
       console.log('数据', this.row)
       let param = JSON.parse(JSON.stringify(this.query))
       param.sumFlag = this.row.sumFlag
+      param.demandItemId = this.row.demandItemId
       this.getDetails(param)
     }
   },
@@ -301,18 +320,47 @@ export default {
       this.referCondition.stordocId = stordocId
       this.$refs.refer.init(this.referCondition)
     },
+    // 明细行选择仓库
+    chooseMxCK(index, type, isPage, title, orgId) {
+      this.tableIndex = index
+      this.referCondition.type = type
+      this.referCondition.isPage = isPage
+      this.referCondition.title = title
+      this.referCondition.pkOrg = orgId
+      this.$refs.refer.init(this.referCondition)
+    },
     selectionsToInput(selection) {
       if (this.referCondition.title == '收货货位') {
         this.tableList[this.tableIndex].deliveryAllocationName = selection[0].name
         this.tableList[this.tableIndex].deliveryAllocation = selection[0].id
       }
+      if (this.referCondition.title == '收货仓库') {
+        this.tableList[this.tableIndex].deliveryWarehouseName = selection[0].name
+        this.tableList[this.tableIndex].deliveryWarehouse = selection[0].id
+        this.tableList[this.tableIndex].deliveryAllocation = ''
+        this.tableList[this.tableIndex].deliveryAllocationName = ''
+      }
       if (this.referCondition.title == '选择补单供应商') {
         this.tableList[this.tableIndex].additionalSupplierName = selection[0].name
         this.tableList[this.tableIndex].additionalSupplier = selection[0].id
       }
+      if (this.referCondition.title == '默认采购组织') {
+        this.tableList[this.tableIndex].org = selection[0].id
+        this.tableList[this.tableIndex].orgName = selection[0].name
+        this.tableList[this.tableIndex].deliveryWarehouse = ''
+        this.tableList[this.tableIndex].deliveryWarehouseName = ''
+        this.tableList[this.tableIndex].deliveryAllocation = ''
+        this.tableList[this.tableIndex].deliveryAllocationName = ''
+      }
     },
     // 清空选中的货位
     clean(row, title) {
+      if (title == '收货仓库') {
+        row.deliveryWarehouse = ''
+        row.deliveryWarehouseName = ''
+        row.deliveryAllocation = ''
+        row.deliveryAllocationName = ''
+      }
       if (title == '收货货位') {
         row.deliveryAllocation = ''
         row.deliveryAllocationName = ''
@@ -321,6 +369,14 @@ export default {
         row.additionalSupplier = ''
         row.additionalSupplierName = ''
       }
+      if (title == '默认采购组织') {
+        row.org = ''
+        row.orgName = ''
+        row.deliveryWarehouse = ''
+        row.deliveryWarehouseName = ''
+        row.deliveryAllocation = ''
+        row.deliveryAllocationName = ''
+      }
     }
   }
 }
@@ -338,4 +394,7 @@ export default {
   display: flex;
   justify-content: flex-end;
 } 
+::v-deep .el-table__row > td {
+  border: none;
+}
 </style>

+ 27 - 21
src/views/purchase/DemandSummary/index.vue

@@ -1,7 +1,7 @@
 <template>
   <div id="demandSummary">
     <div v-if="isList">
-      <el-card>
+      <el-card style="position: relative;">
         <el-form class="search_area" label-width="100px">
           <el-row :gutter="10">
             <el-col :span="1.5">
@@ -42,12 +42,14 @@
                 />
               </el-form-item>
             </el-col>
-            <el-col :span="1.5">
-              <el-form-item label="" label-width="20px">
-                <el-button type="primary" size="mini" icon="el-icon-search" plain @click="search">搜索</el-button>
-                <el-button size="mini" icon="el-icon-refresh" plain @click="reset">重置</el-button>
-              </el-form-item>
-            </el-col>
+            <!-- <el-col :span="1.5"> -->
+              <!-- <el-form-item label="" label-width="20px"> -->
+                <div style="position: absolute;top: 3px;right: 10px;">
+                  <el-button type="primary" size="mini" icon="el-icon-search" @click="search">搜索</el-button>
+                  <el-button size="mini" icon="el-icon-refresh" plain @click="reset">重置</el-button>
+                </div>
+              <!-- </el-form-item> -->
+            <!-- </el-col> -->
           </el-row>
 
           <CollapseTransition>
@@ -109,14 +111,14 @@
               </el-col>
               <el-col :span="1.5">
                 <el-form-item label="供应仓库">
-                  <el-select clearable size="mini" v-model="queryParams.lastWarehouse" @focus="chooseRefer('WAREHOUSE_PARAM', true, '末级供应仓库')" style="width: 200px">
+                  <el-select clearable size="mini" v-model="queryParams.lastWarehouse" @focus="chooseRefer('WAREHOUSE_PARAM', true, '供应仓库')" style="width: 200px">
                     <el-option v-for="item in lastWarehouseOptions" :key="item.id" :label="item.name" :value="item.id" />
                   </el-select>
                 </el-form-item>
               </el-col>
               <el-col :span="1.5">
                 <el-form-item label="供应库位">
-                  <el-select clearable size="mini" v-model="queryParams.lastAllocation" @focus="chooseRefer('ALLOCATION_PARAM', true, '末级供应库位', queryParams.lastWarehouse)" style="width: 200px">
+                  <el-select clearable size="mini" v-model="queryParams.lastAllocation" @focus="chooseRefer('ALLOCATION_PARAM', true, '供应库位', queryParams.lastWarehouse)" style="width: 200px">
                     <el-option v-for="item in lastAllocationOptions" :key="item.id" :label="item.name" :value="item.id" />
                   </el-select>
                 </el-form-item>
@@ -220,6 +222,7 @@
         <el-table 
           :data="tableList" 
           fit
+          border
           show-summary
           :summary-method="getSummaries"
           max-height="550"
@@ -280,11 +283,11 @@
             </template>
           </el-table-column>
           <el-table-column show-overflow-tooltip label="默认采购组织" align="center" prop="purchaseOrgName" width="280px">
-            <template slot-scope="scope">
+            <!-- <template slot-scope="scope">
                 <el-input readonly :disabled="scope.row.status !== '1' || lineDisable" size="mini" v-model="scope.row.purchaseOrgName">
                   <el-button size="mini" :disabled="scope.row.status !== '1' || lineDisable" slot="append" icon="el-icon-more" @click="chooseSon(scope.$index, 'ORG_PARAM', true, '明细默认采购组织')"></el-button>
                 </el-input>
-            </template>
+            </template> -->
           </el-table-column>
           <el-table-column show-overflow-tooltip label="有效期" align="center" prop="validityPeriod"/>
           <el-table-column show-overflow-tooltip label="有效期单位" align="center" prop="validityPeriodUnit" width="100px"/>
@@ -318,7 +321,7 @@
           @size-change="handleSizeChange"
           @current-change="handleCurrentChange"
           :current-page="queryParams.pageNum"
-          :page-sizes="[10, 15, 20]"
+          :page-sizes="[10, 20, 50, 100, 500, 1000]"
           :page-size="100"
           layout="total, sizes, prev, pager, next, jumper"
           :total=total>
@@ -408,7 +411,7 @@ export default {
       // 页面状态
       page: '',
       queryParams: {
-        rowStatus: [],
+        rowStatus: ['1'],
         buyer: '',
         buyerName: '',
         materialClassifyFourName: '',
@@ -502,7 +505,7 @@ export default {
     },
     reset() {
       this.queryParams = {
-        rowStatus: [],
+        rowStatus: ['1'],
         buyer: '',
         buyerName: '',
         materialClassifyFourName: '',
@@ -720,11 +723,11 @@ export default {
         this.customerOptions = selection
         this.queryParams.customer = selection[0].id
       }
-      if (this.referCondition.title == '末级供应仓库') {
+      if (this.referCondition.title == '供应仓库') {
         this.lastWarehouseOptions = selection
         this.queryParams.lastWarehouse = selection[0].id
       }
-      if (this.referCondition.title == '末级供应库位') {
+      if (this.referCondition.title == '供应库位') {
         this.lastAllocationOptions = selection
         this.queryParams.lastAllocation = selection[0].id
       }
@@ -737,11 +740,11 @@ export default {
         this.tableList[this.tableIndex].buyer = selection[0].code
         this.tableList[this.tableIndex].buyerName = selection[0].name
       }
-      if (this.referCondition.title == '明细默认采购组织') {
-        console.log('选择进了吗',this.tableList)
-        this.tableList[this.tableIndex].purchaseOrg = selection[0].id
-        this.tableList[this.tableIndex].purchaseOrgName = selection[0].name
-      }
+      // if (this.referCondition.title == '明细默认采购组织') {
+      //   console.log('选择进了吗',this.tableList)
+      //   this.tableList[this.tableIndex].purchaseOrg = selection[0].id
+      //   this.tableList[this.tableIndex].purchaseOrgName = selection[0].name
+      // }
     },
     // 搜索区树形选择
     chooseTreeRefer(type, isPage, title) {
@@ -799,4 +802,7 @@ export default {
   margin-top: 10px;
   text-align: right;
 }
+::v-deep .el-table__row > td {
+  border: none;
+}
 </style>

+ 13 - 11
src/views/purchase/MaterialClassDivision/index.vue

@@ -1,6 +1,7 @@
 <template>
   <div id="MaterialClassDivision">
     <div v-if="isList">
+      <el-card style="position: relative;">
       <el-form class="search_area" label-width="130px">
         <el-row :gutter="10">
           <el-col :span="1.5">
@@ -43,12 +44,14 @@
               />
             </el-form-item>
           </el-col>
-          <el-col :span="1.5">
-            <el-form-item label="" label-width="20px">
-              <el-button type="primary" size="mini" icon="el-icon-search" plain @click="searchList">搜索</el-button>
+          <!-- <el-col :span="1.5"> -->
+            <!-- <el-form-item label="" label-width="20px"> -->
+            <div style="position: absolute;top: 3px;right: 10px;">
+              <el-button type="primary" size="mini" icon="el-icon-search" @click="searchList">搜索</el-button>
               <el-button size="mini" icon="el-icon-refresh" plain @click="resetList">重置</el-button>
-            </el-form-item>
-          </el-col>
+            </div>
+            <!-- </el-form-item> -->
+          <!-- </el-col> -->
         </el-row>
 
         <CollapseTransition>
@@ -76,7 +79,7 @@
           </el-col>
           <el-col :span="1.5">
             <el-form-item label="物料四级大类编码">
-              <el-input size="mini" style="width: 200px" readonly v-model="queryParams.materialClassifyFour">
+              <el-input size="mini" style="width: 200px" readonly v-model="queryParams.materialClassify">
                 <el-button slot="append" icon="el-icon-more" @click="chooseFourClass"></el-button>
               </el-input>
             </el-form-item>
@@ -180,7 +183,6 @@
       </el-form>
       <el-divider class="lines"><i style="cursor: pointer;" :class="expanded?'el-icon-arrow-up':'el-icon-arrow-down'" @click="drop"></i></el-divider>
 
-      <el-card>
         <div class="btn_grooup">
           <el-button type="primary" size="mini" @click="addDivision">新增</el-button>
 
@@ -251,7 +253,7 @@
           @size-change="handleSizeChange"
           @current-change="handleCurrentChange"
           :current-page="queryParams.pageNum"
-          :page-sizes="[10, 15, 20]"
+          :page-sizes="[10, 20, 50, 100, 500, 1000]"
           :page-size="100"
           layout="total, sizes, prev, pager, next, jumper"
           :total=total>
@@ -309,7 +311,7 @@ export default {
         materialClassifyTwoName: '',
         materialClassifyThree: '',
         materialClassifyThreeName: '',
-        materialClassifyFour: '',
+        materialClassify: '',
         materialClassifyFourName: '',
         materialCode: '',
         materialName: '',
@@ -362,7 +364,7 @@ export default {
         materialClassifyTwoName: '',
         materialClassifyThree: '',
         materialClassifyThreeName: '',
-        materialClassifyFour: '',
+        materialClassify: '',
         materialClassifyFourName: '',
         materialCode: '',
         materialName: '',
@@ -446,7 +448,7 @@ export default {
     // 选择物料分类
     acceptFourClass(selections) {
       console.log('收到的四级分类', selections)
-      this.queryParams.materialClassifyFour = selections.code
+      this.queryParams.materialClassify = selections.code
     },
     // 显示物料编码列表
     test01() {

+ 180 - 224
src/views/purchase/PurchaseDemandList/add.vue

@@ -1,6 +1,6 @@
 <template>
   <div id="addDemandList">
-    <el-card>
+  <el-card style="height: calc(100vh - 15vh);position: relative;overflow: scroll;">
     <span>基本信息</span>
     <el-form :model="basicForm" :rules="basicRules" ref="basic" label-width="auto">
       <el-row :gutter="10">
@@ -24,15 +24,6 @@
          </el-col>
 
          <el-col :span="1.5">
-            <el-form-item label="需求处理方式">
-              <el-select disabled v-model="basicForm.demandBusinessType" size="mini" style="width: 200px">
-                <el-option v-for="dict in dict.type.sys_processing_mode" :key="dict.value" :label="dict.label" :value="dict.value">
-                </el-option>
-              </el-select>
-            </el-form-item>
-          </el-col>
-
-         <el-col :span="1.5">
             <el-form-item label="单据状态">
               <el-select disabled v-model="basicForm.status" size="mini" style="width: 200px">
                 <el-option v-for="dict in dict.type.sys_status" :key="dict.value" :label="dict.label" :value="dict.value">
@@ -127,17 +118,20 @@
             </el-form-item>
          </el-col>
 
-          <!-- <el-col :span="1.5">
-            <el-form-item label="是否处理需求">
-              <el-input
-                v-model="basicForm.isProcess"
-                size="mini"
-                placeholder=""
+          <el-col :span="1.5">
+            <el-form-item label="制单日期" prop="createTime">
+              <el-date-picker
+                v-model="basicForm.createTime"
+                :disabled="sonDisable"
                 clearable
+                type="date"
+                value-format="yyyy-MM-dd"
+                size="mini"
                 style="width: 200px"
-              />
+              >
+              </el-date-picker>
             </el-form-item>
-         </el-col> -->
+         </el-col>
 
           <el-col :span="1.5">
             <el-form-item label="备注">
@@ -151,7 +145,7 @@
             </el-form-item>
          </el-col>
       </el-row>
-    
+
 
     <span>明细信息</span>
       <div class="btn_grooup">
@@ -160,133 +154,113 @@
         <el-button type="primary" size="mini" v-if="sonPageStu == 'check' || sonPageStu == 'edit'" @click="showReserved">货权预留单</el-button>
       </div>
 
-      <el-table 
-          :data="basicForm.puDemandItemList" 
+      <el-table
+          :data="basicForm.puDemandItemList"
           fit
-          max-height="300"
+          border
+          :cell-style="{ borderColor: '#c0c0c0' }"
+          :header-cell-style="{ borderColor: '#c0c0c0' }"
+          class="exporttable"
+          height="290"
+          max-height="290"
           style="font-size: 12px;"
           @selection-change="handleSelectionChange"
           :cell-class-name="cellClassName"
         >
           <el-table-column show-overflow-tooltip type="selection"/>
           <el-table-column show-overflow-tooltip label="序号" type="index" align="center"/>
-          <el-table-column show-overflow-tooltip label="行状态" align="center" prop="status" :formatter="hangStatus" width="150px"/>
           <el-table-column show-overflow-tooltip label="行号" align="center" prop="rowNo">
             <template slot-scope="scope">
-              {{scope.$index + 1 + '0'}}
+              {{ scope.$index + 1 + '0' }}
             </template>
           </el-table-column>
-          <!-- <el-table-column show-overflow-tooltip label="业务部门名称" align="center" width="180px"/> -->
-          <!-- <el-table-column show-overflow-tooltip label="业务部门" align="center" width="180px"/> -->
+          <el-table-column show-overflow-tooltip label="默认采购组织" align="center"  prop="purOrgName" width="200px"/>
           <el-table-column show-overflow-tooltip label="需求客户" align="center"  prop="demandCustomerName" width="200px"/>
-          <el-table-column show-overflow-tooltip label="一级品类" align="center" prop="materialClassifyOneName" width="180px">
+          <el-table-column show-overflow-tooltip label="行状态" align="center" prop="status" :formatter="hangStatus" width="150px"/>
+          <el-table-column show-overflow-tooltip label="物料编码" align="center" prop="materialCode" width="230px">
             <template slot-scope="scope">
-              <el-form-item class="hang">
-                <el-input readonly size="mini" v-model="scope.row.materialClassifyOneName"/>
+              <el-form-item class="hang" :prop="'puDemandItemList.' + scope.$index + '.' + 'materialCode'" :rules="{ required: true, message: '请选择物料编码', trigger: 'blur' }">
+                <el-input clearable :disabled="sonDisable" size="mini" v-model="scope.row.materialCode" @paste.native="pasteMe($event, scope, scope.$index)">
+                  <el-button size="mini" :disabled="sonDisable" slot="append" icon="el-icon-more" @click="chooseMaterial(scope.$index)"></el-button>
+                </el-input>
               </el-form-item>
             </template>
           </el-table-column>
-          <el-table-column show-overflow-tooltip label="二级品类" align="center" prop="materialClassifyTwoName" width="180px">
+          <el-table-column show-overflow-tooltip label="物料名称" align="center"  prop="materialName" width="230px" />
+          <el-table-column show-overflow-tooltip label="规格" align="center"  prop="specification" />
+          <el-table-column show-overflow-tooltip label="型号" align="center"  prop="model"/>
+          <el-table-column show-overflow-tooltip label="单位" align="center"  prop="unitName"/>
+          <el-table-column show-overflow-tooltip label="生产厂家/代理人" align="center"  prop="manufacturerName" width="230px"/>
+          <el-table-column show-overflow-tooltip label="最小包装" align="center"  prop="minPackage" width="120px"/>
+          <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 size="mini" v-model="scope.row.materialClassifyTwoName"/>
+              <el-form-item class="hang" :prop="'puDemandItemList.' + scope.$index + '.' + 'qty'" :rules="{ required: true, message: '请填写实际(业务)需求量', trigger: 'blur' }">
+                <el-input type="number" min="0" clearable :disabled="sonDisable" size="mini" v-model="scope.row.qty" @input="getYLSL(scope)"/>
               </el-form-item>
             </template>
           </el-table-column>
-          <el-table-column show-overflow-tooltip label="三级品类" align="center" prop="materialClassifyThreeName" width="180px">
+          <el-table-column show-overflow-tooltip label="紧急标识" align="center" prop="isUrgency" width="100px">
             <template slot-scope="scope">
               <el-form-item class="hang">
-                <el-input readonly size="mini" v-model="scope.row.materialClassifyThreeName"/>
+                <el-switch
+                  v-model="scope.row.isUrgency"
+                  :disabled="sonDisable"
+                  active-value="Y"
+                  inactive-value="N"
+                  active-color="#13ce66"
+                  inactive-color="#a1a3a9">
+                </el-switch>
               </el-form-item>
             </template>
           </el-table-column>
-          <el-table-column show-overflow-tooltip label="四级品类" align="center" prop="materialClassifyFourName" width="180px">
+          <el-table-column show-overflow-tooltip label="收货仓库" align="center"  prop="deliveryWarehouseName" width="200px">
             <template slot-scope="scope">
               <el-form-item class="hang">
-                <el-input readonly size="mini" v-model="scope.row.materialClassifyFourName"/>
+                <el-input clearable :disabled="sonDisable" size="mini" v-model="scope.row.deliveryWarehouseName" @clear="clearHang(scope.$index, '选择收货仓库')" @focus="chooseDept(scope.$index, 'WAREHOUSE_PARAM', true, '选择收货仓库')">
+                  <el-button size="mini" :disabled="sonDisable" slot="append" icon="el-icon-more" @click="chooseDept(scope.$index, 'WAREHOUSE_PARAM', true, '选择收货仓库')"></el-button>
+                </el-input>
               </el-form-item>
             </template>
           </el-table-column>
-          <el-table-column show-overflow-tooltip label="采购员名称" align="center" prop="buyerName" width="120px"/>
-          <el-table-column show-overflow-tooltip label="采购员" align="center"  prop="buyer"/>
-          <el-table-column show-overflow-tooltip label="物料编码" align="center" prop="materialCode" width="230px">
+          <el-table-column show-overflow-tooltip label="收货货位" align="center"  prop="deliveryAllocationName" width="200px">
             <template slot-scope="scope">
-              <el-form-item class="hang" :prop="'puDemandItemList.' + scope.$index + '.' + 'materialCode'" :rules="{ required: true, message: '请选择物料编码', trigger: 'blur' }">
-                <el-input clearable :disabled="sonDisable" size="mini" v-model="scope.row.materialCode" @paste.native="pasteMe($event, scope, scope.$index)">
-                  <el-button size="mini" :disabled="sonDisable" slot="append" icon="el-icon-more" @click="chooseMaterial(scope.$index)"></el-button>
+              <el-form-item class="hang">
+                <el-input clearable :disabled="sonDisable" size="mini" v-model="scope.row.deliveryAllocationName" @clear="clearHang(scope.$index, '选择收货货位')" @focus="choosehuoWei(scope.$index, 'ALLOCATION_PARAM', true, '选择收货货位', scope.row.deliveryWarehouse)">
+                  <el-button size="mini" :disabled="sonDisable" slot="append" icon="el-icon-more" @click="choosehuoWei(scope.$index, 'ALLOCATION_PARAM', true, '选择收货货位', scope.row.deliveryWarehouse)"></el-button>
                 </el-input>
               </el-form-item>
             </template>
           </el-table-column>
-          <el-table-column show-overflow-tooltip label="物料名称" align="center"  prop="materialName" width="230px" />
-          <el-table-column show-overflow-tooltip label="规格" align="center"  prop="specification" />
-          <el-table-column show-overflow-tooltip label="型号" align="center"  prop="model"/>
-          <el-table-column show-overflow-tooltip label="单位" align="center"  prop="unitName"/>
-          <el-table-column show-overflow-tooltip label="生产厂家/代理人" align="center"  prop="manufacturerName" width="230px"/>
-          <el-table-column show-overflow-tooltip label="注册人" align="center"  prop="registrant" width="150px"/>
-          <el-table-column show-overflow-tooltip label="采购周期" align="center"  prop="puPeriod" width="150px">
+          <el-table-column show-overflow-tooltip label="月均销量" align="center"  prop="averageQtyMonth" width="120px"/>
+          <el-table-column show-overflow-tooltip label="需求可用周期" align="center"  prop="demandPeriod" width="120px"/>
+          <el-table-column show-overflow-tooltip label="业务备注" align="center"  prop="remark" width="150px">
             <template slot-scope="scope">
               <el-form-item class="hang">
-                <el-input type="number" min="0" clearable :readonly="sonDisable" size="mini" v-model="scope.row.puPeriod"></el-input>
+                <el-input clearable :disabled="sonDisable" size="mini" v-model="scope.row.remark"/>
               </el-form-item>
             </template>
           </el-table-column>
-          <el-table-column show-overflow-tooltip label="有效期" align="center"  prop="expiry" width="120px"/>
-          <el-table-column show-overflow-tooltip label="有效期单位" align="center"  prop="expiryUnit" width="120px"/>
-          <el-table-column show-overflow-tooltip label="最小包装" align="center"  prop="minPackage" width="120px"/>
-          <el-table-column show-overflow-tooltip label="最小订货量" align="center"  prop="minOrderQty" width="120px"/>
+          <el-table-column show-overflow-tooltip label="物料一级分类" align="center" prop="materialClassifyOneName" width="180px"/>
+          <el-table-column show-overflow-tooltip label="物料二级分类" align="center" prop="materialClassifyTwoName" width="180px"/>
+          <el-table-column show-overflow-tooltip label="物料三级分类" align="center" prop="materialClassifyThreeName" width="180px"/>
+          <el-table-column show-overflow-tooltip label="物料四级分类" align="center" prop="materialClassifyFourName" width="180px"/>
           <el-table-column show-overflow-tooltip label="最小批量" align="center"  prop="minBatch" width="120px"/>
-          <el-table-column show-overflow-tooltip label="安全库存" align="center"  prop="safeStock" width="120px">
+          <el-table-column show-overflow-tooltip label="最小订货量" align="center"  prop="minOrderQty" width="120px"/>
+          <el-table-column show-overflow-tooltip label="采购员" align="center" prop="buyerName" width="120px"/>
+          <!-- <el-table-column show-overflow-tooltip label="采购员" align="center"  prop="buyer"/> -->
+          <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.safeStock"/>
+                <el-input type="number" min="0" clearable :disabled="sonDisable" size="mini" v-model="scope.row.puPeriod"></el-input>
               </el-form-item>
             </template>
           </el-table-column>
-            <el-table-column show-overflow-tooltip label="预留比例" align="center" prop="reservedProportion" width="150px">
-              <template slot-scope="scope">
-                <el-form-item class="hang">
-                  <el-select clearable :disabled="sonDisable" size="mini" v-model="scope.row.reservedProportion" @change="getYLSL(scope)" @clear="cleanYLSL(scope)">
-                    <el-option v-for=" dict in dict.type.sys_reserve_ratio" :key="dict.value" :label="dict.label" :value="dict.value">
-                    </el-option>
-                  </el-select>
-                  <!-- <el-input v-model="scope.row.reservedProportion"/> -->
-                </el-form-item>
-              </template>
-            </el-table-column>
-            <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: scope.row.reservedProportion && scope.row.reservedProportion !== '' , message: '请填写预留周期', trigger: 'blur' }">
-                  <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 type="number" min="0" readonly size="mini" v-model="scope.row.reservedQty"></el-input>
-                </el-form-item>
-              </template>
-            </el-table-column>
-          <el-table-column show-overflow-tooltip label="月均销量" align="center"  prop="averageQtyMonth" width="120px"/>
-          <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 type="number" min="0" clearable :readonly="sonDisable" size="mini" v-model="scope.row.qty" @input="getYLSL(scope)"/>
-              </el-form-item>
-            </template>
-          </el-table-column>
-          <el-table-column show-overflow-tooltip label="需求可用周期" align="center"  prop="demandPeriod" width="120px"/>
-          <el-table-column show-overflow-tooltip label="集团预测分类" align="center"  prop="forecastClassify" width="120px"/>
-          <el-table-column show-overflow-tooltip label="近一月需求" align="center"  prop="onemonthAvgVolume" width="120px"/>
-          <el-table-column show-overflow-tooltip label="近三月需求" align="center"  prop="threemonthAvgVolume" width="120px"/>
-          <el-table-column show-overflow-tooltip label="采购在途" align="center"  prop="puFreight" width="120px"/>
           <el-table-column show-overflow-tooltip label="交货日期" align="center"  prop="deliveryDate" width="230px">
             <template slot-scope="scope">
-              <el-form-item class="hang" :prop="'puDemandItemList.' + scope.$index + '.' + 'deliveryDate'" :rules="{ required: true, message: '请填写交货日期', trigger: 'blur' }">
+              <el-form-item class="hang">
                 <el-date-picker
                   v-model="scope.row.deliveryDate"
-                  :readonly="sonDisable"
+                  :disabled="sonDisable"
                   clearable
                   type="date"
                   size="mini"
@@ -297,82 +271,43 @@
               </el-form-item>
             </template>
           </el-table-column>
-          <el-table-column show-overflow-tooltip label="补单标识" align="center"  prop="isReplenishment" width="100px">
-            <template slot-scope="scope">
-              <el-form-item class="hang">
-                <el-switch
-                  v-model="scope.row.isReplenishment"
-                  disabled
-                  active-value="Y"
-                  inactive-value="N"
-                  active-color="#13ce66"
-                  inactive-color="#a1a3a9">
-                </el-switch>
-              </el-form-item>
-            </template>
-          </el-table-column>
-          <el-table-column show-overflow-tooltip label="批号锁定标识" align="center" prop="isBatchLock" width="100px">
-            <template slot-scope="scope">
-              <el-form-item class="hang">
-                  <el-switch
-                    v-model="scope.row.isBatchLock"
-                    :disabled="sonDisable"
-                    active-value="Y"
-                    inactive-value="N"
-                    active-color="#13ce66"
-                    inactive-color="#a1a3a9">
-                  </el-switch>
-              </el-form-item>
-            </template>
-          </el-table-column>
-          <el-table-column show-overflow-tooltip label="业务备注" align="center"  prop="remark" width="150px">
-            <template slot-scope="scope">
-              <el-form-item class="hang">
-                <el-input clearable :readonly="sonDisable" size="mini" v-model="scope.row.remark"/>
-              </el-form-item>
-            </template>
-          </el-table-column> 
-          <el-table-column show-overflow-tooltip label="采购备注" align="center"  prop="puRemark" width="150px"/>
-          <!-- <el-table-column show-overflow-tooltip label="末级供应仓库存量" align="center"  prop="lastWarehouseQty" /> -->
-          <el-table-column show-overflow-tooltip label="调拨占有量" align="center"  prop="allotQty" width="150px"/>
-          <el-table-column show-overflow-tooltip label="最终净需求量" align="center"  prop="resDemandQty" width="150px">
+          <el-table-column show-overflow-tooltip label="有效期" align="center"  prop="expiry" width="120px"/>
+          <el-table-column show-overflow-tooltip label="有效期单位" align="center"  prop="expiryUnit" width="120px"/>
+          <el-table-column show-overflow-tooltip label="安全库存" align="center"  prop="safeStock" width="120px">
             <template slot-scope="scope">
               <el-form-item class="hang">
-                <el-input type="number" min="0" clearable :readonly="sonDisable" size="mini" v-model="scope.row.resDemandQty"/>
+                <el-input clearable :disabled="sonDisable" size="mini" v-model="scope.row.safeStock"/>
               </el-form-item>
             </template>
           </el-table-column>
-          <el-table-column show-overflow-tooltip label="最终采购执行数量" align="center"  prop="executeQty" width="150px">
-            <template slot-scope="scope">
-              {{scope.row.executeQty ? scope.row.executeQty : 0 }}
-            </template>
-          </el-table-column>
-          <el-table-column show-overflow-tooltip label="收货仓库" align="center"  prop="deliveryWarehouseName" width="200px">
+          <el-table-column show-overflow-tooltip label="注册人" align="center"  prop="registrant" width="150px"/>
+          <el-table-column show-overflow-tooltip label="预留比例" align="center" prop="reservedProportion" width="150px">
             <template slot-scope="scope">
               <el-form-item class="hang">
-                <el-input clearable :disabled="sonDisable" size="mini" v-model="scope.row.deliveryWarehouseName" @clear="clearHang(scope.$index, '选择收货仓库')" @focus="chooseDept(scope.$index, 'WAREHOUSE_PARAM', true, '选择收货仓库')">
-                  <el-button size="mini" :disabled="sonDisable" slot="append" icon="el-icon-more" @click="chooseDept(scope.$index, 'WAREHOUSE_PARAM', true, '选择收货仓库')"></el-button>
-                </el-input>
+                <el-select clearable :disabled="sonDisable" size="mini" v-model="scope.row.reservedProportion" @change="getYLSL(scope)" @clear="cleanYLSL(scope)">
+                  <el-option v-for=" dict in dict.type.sys_reserve_ratio" :key="dict.value" :label="dict.label" :value="dict.value">
+                  </el-option>
+                </el-select>
               </el-form-item>
             </template>
           </el-table-column>
-          <el-table-column show-overflow-tooltip label="收货货位" align="center"  prop="deliveryAllocationName" width="200px">
+          <el-table-column show-overflow-tooltip label="预留周期" align="center" prop="reservedPeriod" width="150px">
             <template slot-scope="scope">
-              <el-form-item class="hang">
-                <el-input clearable :disabled="sonDisable" size="mini" v-model="scope.row.deliveryAllocationName" @clear="clearHang(scope.$index, '选择收货货位')" @focus="choosehuoWei(scope.$index, 'ALLOCATION_PARAM', true, '选择收货货位', scope.row.deliveryWarehouse)">
-                  <el-button size="mini" :disabled="sonDisable" slot="append" icon="el-icon-more" @click="choosehuoWei(scope.$index, 'ALLOCATION_PARAM', true, '选择收货货位', scope.row.deliveryWarehouse)"></el-button>
-                </el-input>
+              <el-form-item class="hang" :prop="'puDemandItemList.' + scope.$index + '.' + 'reservedPeriod'" :rules="{ required: scope.row.reservedProportion && scope.row.reservedProportion !== '' , message: '请填写预留周期', trigger: 'blur' }">
+                <el-input type="number" min="0" clearable :disabled="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="deliveryAllocation" width="200px"/> -->
-          <el-table-column show-overflow-tooltip label="末级供应仓库" align="center"  prop="lastWarehouseName" width="200px"/>
-          <el-table-column show-overflow-tooltip label="末级供应货位" align="center"  prop="lastAllocationName" width="200px"/>
-          <el-table-column show-overflow-tooltip label="紧急标识" align="center" prop="isUrgency" width="100px">
+          <el-table-column show-overflow-tooltip label="预留数量" align="center"  prop="reservedQty" width="150px"/>
+          <el-table-column show-overflow-tooltip label="集团预测分类" align="center"  prop="forecastClassify" width="120px"/>
+          <el-table-column show-overflow-tooltip label="近一月需求" align="center"  prop="onemonthAvgVolume" width="120px"/>
+          <el-table-column show-overflow-tooltip label="近三月需求" align="center"  prop="threemonthAvgVolume" width="120px"/>
+          <el-table-column show-overflow-tooltip label="采购在途" align="center"  prop="puFreight" width="120px"/>
+          <el-table-column show-overflow-tooltip label="补单标识" align="center"  prop="isReplenishment" width="100px">
             <template slot-scope="scope">
               <el-form-item class="hang">
                 <el-switch
-                  v-model="scope.row.isUrgency"
+                  v-model="scope.row.isReplenishment"
                   disabled
                   active-value="Y"
                   inactive-value="N"
@@ -382,12 +317,19 @@
               </el-form-item>
             </template>
           </el-table-column>
-          <el-table-column show-overflow-tooltip label="默认采购组织" align="center"  prop="purOrgName" width="200px"/>yu
-          <el-table-column show-overflow-tooltip label="默认采购组织编码" align="center"  prop="puOrg" width="200px"/>
-          <!-- <el-table-column show-overflow-tooltip label="末级供应调拨待入量" align="center"  prop="lastStockQty" width="150px"/> -->
-          <!-- <el-table-column show-overflow-tooltip label="上级供应中心现存量" align="center"  prop="superiorCenterQty" width="200px"/> -->
-          <!-- <el-table-column show-overflow-tooltip label="上级库存被调拨占用量" align="center"  prop="superiorAllotQty" width="200px"/> -->
-          <el-table-column show-overflow-tooltip label="可用量" align="center"  prop="availableQty"/>
+          <el-table-column show-overflow-tooltip label="补单供应商" align="center"  prop="additionalSupplierName" width="200px">
+            <template slot-scope="scope">
+              <el-form-item class="hang" :prop="'puDemandItemList.' + scope.$index + '.' + 'additionalSupplierName'" :rules="{ required: isBDXQ, message: '请选择补单供应商', trigger: 'blur' }">
+                <el-input clearable :disabled="sonDisable || BDZT" size="mini" v-model="scope.row.additionalSupplierName" @clear="clearHang(scope.$index, '选择补单供应商')" @focus="chooseDept(scope.$index, 'SUPPLIER_PARAM', true, '选择补单供应商')">
+                  <el-button size="mini" :disabled="sonDisable || BDZT" slot="append" icon="el-icon-more" @click="chooseDept(scope.$index, 'SUPPLIER_PARAM', true, '选择补单供应商')"></el-button>
+                </el-input>
+              </el-form-item>
+            </template>
+          </el-table-column>
+          <el-table-column show-overflow-tooltip label="末级供应库存组织" align="center" prop="lastStockOrgName" width="200px"></el-table-column>
+          <el-table-column show-overflow-tooltip label="末级供应仓库" align="center"  prop="lastWarehouseName" width="200px"/>
+          <el-table-column show-overflow-tooltip label="末级供应货位" align="center"  prop="lastAllocationName" width="200px"/>
+          <el-table-column show-overflow-tooltip label="中心仓可用量" align="center"  prop="centralWarehouseQty" width="200px"/>
           <el-table-column show-overflow-tooltip label="调拨状态" align="center"  prop="statusAllot" width="100px">
             <template slot-scope="scope">
               <el-form-item class="hang">
@@ -402,35 +344,20 @@
               </el-form-item>
             </template>
           </el-table-column>
-          <el-table-column show-overflow-tooltip label="补单供应商" align="center"  prop="additionalSupplierName" width="200px">
-            <template slot-scope="scope">
-              <el-form-item class="hang" :prop="'puDemandItemList.' + scope.$index + '.' + 'additionalSupplierName'" :rules="{ required: isBDXQ, message: '请选择补单供应商', trigger: 'blur' }">
-                <el-input clearable :disabled="sonDisable || BDZT" size="mini" v-model="scope.row.additionalSupplierName" @clear="clearHang(scope.$index, '选择补单供应商')" @focus="chooseDept(scope.$index, 'SUPPLIER_PARAM', true, '选择补单供应商')">
-                  <el-button size="mini" :disabled="sonDisable || BDZT" slot="append" icon="el-icon-more" @click="chooseDept(scope.$index, 'SUPPLIER_PARAM', true, '选择补单供应商')"></el-button>
-                </el-input>
-              </el-form-item>
-            </template>
-          </el-table-column>
-          <!-- <el-table-column show-overflow-tooltip label="补单供应商名称" align="center"  prop="additionalSupplierName" width="200px">
+          <el-table-column show-overflow-tooltip label="调拨单号" align="center"  prop="allotCode"></el-table-column>
+          <el-table-column show-overflow-tooltip label="调拨占有量" align="center"  prop="allotQty" width="150px"/>
+          <el-table-column show-overflow-tooltip label="最终净需求量" align="center"  prop="resDemandQty" width="150px">
             <template slot-scope="scope">
               <el-form-item class="hang">
-                <el-input readonly size="mini" v-model="scope.row.additionalSupplierName"/>
+                <el-input type="number" min="0" clearable :disabled="sonDisable" size="mini" v-model="scope.row.resDemandQty"/>
               </el-form-item>
             </template>
-          </el-table-column> -->
-          <!-- <el-table-column show-overflow-tooltip label="周期单位" align="center"  prop="periodUnit" width="150px">
+          </el-table-column>
+          <el-table-column show-overflow-tooltip label="最终采购执行数量" align="center"  prop="executeQty" width="150px">
             <template slot-scope="scope">
-              <el-form-item class="hang">
-                <el-select clearable :disabled="sonDisable" size="mini" v-model="scope.row.periodUnit">
-                  <el-option v-for=" dict in dict.type.sys_period_unit" :key="dict.value" :label="dict.label" :value="dict.value">
-                  </el-option>
-                </el-select>
-              </el-form-item>
+              {{ scope.row.executeQty ? scope.row.executeQty : 0 }}
             </template>
-          </el-table-column> -->
-          <el-table-column show-overflow-tooltip label="末级供应库存组织" align="center" prop="lastStockOrgName" width="200px"></el-table-column>
-          <el-table-column show-overflow-tooltip label="中心仓可用量" align="center"  prop="centralWarehouseQty" width="200px"/>
-          <el-table-column show-overflow-tooltip label="调拨单号" align="center"  prop="allotCode"></el-table-column>
+          </el-table-column>
           <el-table-column show-overflow-tooltip label="收货地址" align="center"  prop="deliveryAddressName" width="200px">
             <template slot-scope="scope">
               <el-form-item class="hang">
@@ -440,7 +367,6 @@
               </el-form-item>
             </template>
           </el-table-column>
-          <!-- <el-table-column show-overflow-tooltip label="收货地址编码" align="center" prop="deliveryAddress" width="200px"></el-table-column> -->
           <el-table-column show-overflow-tooltip label="联系人" align="center"  prop="contacts"/>
           <el-table-column show-overflow-tooltip label="联系人电话" align="center"  prop="contactsPhone" width="200px"/>
           <el-table-column show-overflow-tooltip label="详细地址" align="center"  prop="address" width="200px"/>
@@ -451,10 +377,40 @@
                   <el-option v-for=" dict in dict.type.sys_price_type" :key="dict.value" :label="dict.label" :value="dict.value">
                   </el-option>
                 </el-select>
-                <!-- <el-input v-model="scope.row.periodUnit"/> -->
               </el-form-item>
             </template>
           </el-table-column>
+          <el-table-column show-overflow-tooltip label="是否客户指定" align="center"  prop="isSpeical" width="100px">
+            <template slot-scope="scope">
+              <el-form-item class="hang">
+                <el-switch
+                  v-model="scope.row.isSpeical"
+                  disabled
+                  active-value="Y"
+                  inactive-value="N"
+                  active-color="#13ce66"
+                  inactive-color="#a1a3a9">
+                </el-switch>
+              </el-form-item>
+            </template>
+          </el-table-column>
+          <!-- <el-table-column show-overflow-tooltip label="批号锁定标识" align="center" prop="isBatchLock" width="100px">
+            <template slot-scope="scope">
+              <el-form-item class="hang">
+                  <el-switch
+                    v-model="scope.row.isBatchLock"
+                    :disabled="sonDisable"
+                    active-value="Y"
+                    inactive-value="N"
+                    active-color="#13ce66"
+                    inactive-color="#a1a3a9">
+                  </el-switch>
+              </el-form-item>
+            </template>
+          </el-table-column> -->
+          <el-table-column show-overflow-tooltip label="采购备注" align="center"  prop="updateCause" width="150px"/>
+          <el-table-column show-overflow-tooltip label="可用量" align="center"  prop="availableQty"/>
+
           <el-table-column
             fixed="right"
             label="操作"
@@ -465,30 +421,29 @@
           </template>
         </el-table-column>
       </el-table>
-  </el-form>
+    </el-form>
+      <div class="btn_group">
+        <el-col :span="1.5">
+          <el-button type="primary" size="mini"  @click="copy" v-if="sonPageStu == 'check'">复制</el-button>
+        </el-col>
+        <el-col :span="1.5">
+          <el-button type="primary" size="mini"  @click="save" v-if="sonPageStu == 'add' || sonPageStu == 'edit'">保存</el-button>
+        </el-col>
+        <el-col :span="1.5" style="margin: 0 10px;">
+          <el-button type="primary" size="mini"  @click="submit" v-if="sonPageStu == 'check' && (row.status == '0' || row.status == '3')">提交</el-button>
+        </el-col>
+        <el-col :span="1.5">
+          <el-button size="mini" plain @click="back">返回</el-button>
+        </el-col>
+      </div>
   </el-card>
 
-    <div class="btn_group">
-      <el-col :span="1.5">
-        <el-button type="primary" size="mini" plain @click="copy" v-if="sonPageStu == 'check'">复制</el-button>
-      </el-col>
-      <el-col :span="1.5">
-        <el-button type="primary" size="mini" plain @click="save" v-if="sonPageStu == 'add' || sonPageStu == 'edit'">保存</el-button>
-      </el-col>
-      <el-col :span="1.5" style="margin: 0 10px;">
-        <el-button type="primary" size="mini" plain @click="submit" v-if="sonPageStu == 'check' && (row.status == '0' || row.status == '3')">提交</el-button>
-      </el-col>
-      <el-col :span="1.5">
-        <el-button size="mini" plain @click="back">返回</el-button>
-      </el-col>
-
       <Reserved v-if="dialog.config" :isVisible="dialog.config" :info="row" @updateReserved="updateReserved"/>
 
       <Refers ref="refer" @doSubmit="selectionsToInput" :single="true"/>
 
       <popDialog ref="materialRefer" @doSubmit="selectMaterial" :single="true" />
 
-    </div>
 
     <!-- 批量调整参数 -->
     <el-dialog title="批量调整" :visible.sync="adjust.open" @close="closeEvent" width="400px">
@@ -615,11 +570,13 @@ export default {
         demandPersonal: '',
         demandDept: '',
         demandDate: '',
+        createTime: '',
         source: '4',
         billType: 'ZQBH',
-        isSpeical: '',
+        isSpeical: 'N',
         isProcess: '',
         isMonthleyCalculate: '',
+        createTime: this.parseTime(new Date().getTime()),
         remark: '',
         puDemandItemList: []
       },
@@ -699,8 +656,8 @@ export default {
       } else {
         this.isBDXQ = false
         this.BDZT = true
-        this.basicForm.puDemandItemList.forEach(item => { 
-          item.isReplenishment = 'N' 
+        this.basicForm.puDemandItemList.forEach(item => {
+          item.isReplenishment = 'N'
           item.additionalSupplier = null
           item.additionalSupplierName = null
         })
@@ -785,6 +742,7 @@ export default {
         item.contacts = ''
         item.contactsPhone = ''
         item.address = ''
+        item.statusAllot = 'N'
       })
     },
     handleData() {
@@ -915,6 +873,7 @@ export default {
         isUrgency: this.basicForm.billType == 'JJXQ' ? 'Y' : 'N',
         isReplenishment: this.basicForm.billType == 'BDXQ'? 'Y': 'N',
         isBatchLock: 'N',
+        isCustomerSpecified: '',
         remark: null,
         puRemark: null,
         lastWarehouseQty: null,
@@ -983,11 +942,7 @@ export default {
     delLine(index, row) {
       console.log('删除行:', index)
       console.log('改变行:', row)
-      // this.basicForm.puDemandItemList = this.basicForm.puDemandItemList.filter(item => {
-      //   return item.id !== row.id
-      // })
       row.delFlag = '2'
-      // this.basicForm.puDemandItemList.splice(index,1)
       let delList = []
       delList = this.basicForm.puDemandItemList.filter(item => {
         return item.delFlag == '2'
@@ -1000,10 +955,6 @@ export default {
     },
     back() {
       this.$emit('jugislist', true)
-      // let queryParams = {
-      //   pageNum: 1,
-      //   pageSize: 10
-      // }
       this.$emit('refresh')
     },
     // 如果需要回显则调用详情接口
@@ -1026,7 +977,7 @@ export default {
               // 详情时将收货仓库id赋值给stordocId
               // 如果业务类型为补单需求,则明细内补单供应商编码可以编辑
               if(this.basicForm.billType == 'BDXQ') {
-                 this.BDZT = false 
+                 this.BDZT = false
                  this.isBDXQ = true
               } else {
                  this.BDZT = true
@@ -1161,10 +1112,6 @@ export default {
         this.deptOptions = selection
         this.basicForm.demandDept = selection[0].id
       }
-      // if(this.referCondition.type == 'DEPT_PARAM') {
-      //   this.basicForm.puDemandItemList[this.tableIndex].businessDept = selection[0].code
-      //   this.basicForm.puDemandItemList[this.tableIndex].businessDeptName = selection[0].name
-      // }
       if(this.referCondition.title == '选择收货仓库') {
         this.basicForm.puDemandItemList[this.tableIndex].deliveryWarehouse = selection[0].id
         this.basicForm.puDemandItemList[this.tableIndex].deliveryWarehouseName = selection[0].name
@@ -1259,6 +1206,7 @@ export default {
               isUrgency: this.basicForm.billType == 'JJXQ' ? 'Y' : 'N',
               isReplenishment: this.basicForm.billType == 'BDXQ' ? 'Y' : 'N',
               isBatchLock: 'N',
+              isCustomerSpecified: '',
               remark: null,
               puRemark: null,
               lastWarehouseQty: null,
@@ -1399,6 +1347,8 @@ export default {
       this.basicForm.puDemandItemList[this.tableIndex].materialClassifyFour = null
       this.basicForm.puDemandItemList[this.tableIndex].lastStockOrg = null
       this.basicForm.puDemandItemList[this.tableIndex].lastStockOrgName = null
+      this.basicForm.puDemandItemList[this.tableIndex].buyer = null
+      this.basicForm.puDemandItemList[this.tableIndex].buyerName = null
       // 通过选择物料查询采购员
       queryMan(selection[0].id).then(res => {
         if(res.code === 200 && res.rows.length !== 0) {
@@ -1436,7 +1386,7 @@ export default {
       this.basicForm.puDemandItemList[this.tableIndex].transportationCondition = selection[0].transportationCondition
       this.basicForm.puDemandItemList[this.tableIndex].storageCondition = selection[0].storageCondition
       // 选中骨科耗材时候的物料,需求客户不必填
-      
+
     },
     // 明细行选择业务部门参照带出业务部门数据
     chooseDept(index, type, isPage, title) {
@@ -1610,11 +1560,14 @@ export default {
 
 <style lang="scss" scoped>
 .btn_group {
-  width: 100%;
-  margin: 20px 0;
+  // width: 100%;
+  // margin: 20px 0;
   display: flex;
-  justify-content: center;
-} 
+  // justify-content: center;
+  position: absolute;
+  top: 10px;right: 20px;
+
+}
 .btn_grooup {
   margin-bottom: 10px;
   display: flex;
@@ -1633,4 +1586,7 @@ export default {
 .el-table ::v-deep .success-row {
   background: #f11616;
 }
-</style>
+::v-deep .el-table__row > td {
+  border: none;
+}
+</style>

+ 33 - 10
src/views/purchase/PurchaseDemandList/index.vue

@@ -1,7 +1,7 @@
 <template>
   <div id="PurchaseDemandList">
     <div v-if="isList">
-      <el-card>
+      <el-card style="height: calc(100vh - 15vh);position: relative;overflow: scroll;">
         <el-form class="search_area" label-width="100px">
           <el-row :gutter="10">
             <el-col :span="1.5">
@@ -40,12 +40,14 @@
                 </el-select>
               </el-form-item>
             </el-col>
-            <el-col :span="1.5">
-              <el-form-item label="" label-width="20px">
-                <el-button type="primary" size="mini" icon="el-icon-search" plain @click="searchList">搜索</el-button>
-                <el-button size="mini" icon="el-icon-refresh" plain @click="resetList">重置</el-button>
-              </el-form-item>
-            </el-col>
+            <!-- <el-col :span="1.5"> -->
+              <!-- <el-form-item label="" label-width="20px"> -->
+                <div style="position: absolute;top: 3px;right: 10px;">
+                  <el-button type="primary" size="mini" icon="el-icon-search" @click="searchList">搜索</el-button>
+                  <el-button size="mini" icon="el-icon-refresh" plain @click="resetList">重置</el-button>
+                </div>
+              <!-- </el-form-item> -->
+            <!-- </el-col> -->
           </el-row>
         <CollapseTransition>
           <div v-show="expanded">
@@ -156,10 +158,16 @@
           <el-button type="primary" size="mini" @click="delItems">删除</el-button>
           <!-- <el-button type="primary" size="mini">打印</el-button> -->
         </div>
+        
         <el-table 
           :data="tableList" 
           fit
-          max-height="550"
+          :cell-style="{ borderColor: '#c0c0c0' }"
+          :header-cell-style="{ borderColor: '#c0c0c0' }"
+          class="exporttable"
+          border
+          height="430"
+          max-height="430"
           style="font-size: 12px;"
           @selection-change="handleSelectionChange"
         >
@@ -199,8 +207,8 @@
           @size-change="handleSizeChange"
           @current-change="handleCurrentChange"
           :current-page="queryParams.pageNum"
-          :page-sizes="[10, 15, 20]"
-          :page-size="100"
+          :page-sizes="[10, 20 ,50 ,100 ,500, 1000]"
+          :page-size="10"
           layout="total, sizes, prev, pager, next, jumper"
           :total=total>
         </el-pagination>
@@ -404,6 +412,10 @@ export default {
           return '新品需求'
         case 'HZBM':
           return '合作部门需求'
+        case 'DZBH':
+          return '大宗备货'
+        case 'XZCG':
+          return '行政类采购'
       }
     },
     formatterSource(row) {
@@ -715,4 +727,15 @@ export default {
   margin-top: 10px;
   text-align: right;
 }
+::v-deep .el-table__row > td {
+  border: none;
+}
+ ::v-deep .el-card .el-form-item {
+  margin-bottom: 10px;
+}
+</style>
+<style>
+.exporttable {
+    border: solid 1px #c0c0c0;
+ }
 </style>

+ 1 - 1
src/views/purchase/PurchaseDemandList/reserved.vue

@@ -151,4 +151,4 @@ export default {
     }
   }
 }
-</script>
+</script>

+ 11 - 9
src/views/purchase/deliveryAddress/index.vue

@@ -1,7 +1,8 @@
 <template>
   <div id="deliveryAddressList">
     <div v-if="isList">
-      <el-form class="search_area" label-width="120px">
+      <el-card style="position: relative;">
+      <el-form class="search_area" label-width="100px">
         <el-row :gutter="10">
           <el-col :span="1.5">
             <el-form-item label="仓库属性">
@@ -38,12 +39,14 @@
             />
             </el-form-item>
           </el-col>
-          <el-col :span="1.5">
-            <el-form-item label="" label-width="20px">
-              <el-button type="primary" size="mini" icon="el-icon-search" plain @click="searchList">搜索</el-button>
+          <!-- <el-col :span="1.5"> -->
+            <!-- <el-form-item label="" label-width="20px"> -->
+            <div style="position: absolute;top: 3px;right: 10px;">
+              <el-button type="primary" size="mini" icon="el-icon-search" @click="searchList">搜索</el-button>
               <el-button size="mini" icon="el-icon-refresh" plain @click="resetList">重置</el-button>
-            </el-form-item>
-          </el-col>
+            </div>
+            <!-- </el-form-item> -->
+          <!-- </el-col> -->
         </el-row>
 
         <CollapseTransition>
@@ -77,7 +80,7 @@
 
           <el-col :span="1.5">
             <el-form-item label="联系人">
-            <el-select clearable size="mini" v-model="queryParams.contactsName" clearable @focus="chooseRefer('CONTACTS_PARAM', true, '联系人')" style="width: 200px">
+            <el-select clearable size="mini" v-model="queryParams.contactsName" @focus="chooseRefer('CONTACTS_PARAM', true, '联系人')" style="width: 200px">
               <el-option v-for="item in contactsOptions" :key="item.id" :label="item.name" :value="item.name" />
             </el-select>
             </el-form-item>
@@ -138,7 +141,6 @@
       </el-form>
       <el-divider class="lines"><i style="cursor: pointer;" :class="expanded?'el-icon-arrow-up':'el-icon-arrow-down'" @click="drop"></i></el-divider>
 
-      <el-card>
         <div class="btn_grooup">
           <el-button type="primary" size="mini" @click="addAddress">新增</el-button>
 
@@ -218,7 +220,7 @@
           @size-change="handleSizeChange"
           @current-change="handleCurrentChange"
           :current-page="queryParams.pageNum"
-          :page-sizes="[10, 15, 20]"
+          :page-sizes="[10, 20, 50, 100, 500, 1000]"
           :page-size="100"
           layout="total, sizes, prev, pager, next, jumper"
           :total=total>

+ 7 - 7
src/views/purchase/purchase-order/add/column.js

@@ -21,12 +21,12 @@ export const Columns = [
     isShow:true,
     require: true,
   },
-  { 
-    key: "oaDemandNo", 
-    title: "OA需求单号", 
-    inputType: "Input",  
-    isShow:true,
-  },
+  // { 
+  //   key: "oaDemandNo", 
+  //   title: "OA需求单号", 
+  //   inputType: "Input",  
+  //   isShow:true,
+  // },
   { 
     key: "erpOrderCode", 
     title: "erp订单编号", 
@@ -465,7 +465,7 @@ export const Columns = [
 
   },
   { key: "isArrivalReson", title: "到货超期原因", inputType: "Input", isShow:true, },
-  { key: "midOrderNo", title: "中台采购订单号", inputType: "Input", isShow:true, },
+  // { key: "midOrderNo", title: "中台采购订单号", inputType: "Input", isShow:true, },
   { key: "marketingCode", title: "销售订单号", inputType: "Input", isShow:true, },
   { key: "isArrival", title: "到货超期", inputType: "Checkbox",  isShow:true,},
   { key: "createByName", title: "创建人", inputType: "Input", isShow:false, },

+ 20 - 10
src/views/purchase/purchase-order/add/index.vue

@@ -127,6 +127,10 @@ export default {
               this.params[key].forEach((v) => {
                 v.id = "";
                 v.demandCode = "";
+                v['isInvoice'] && (v['isInvoice'] = 'N');
+                v['isStorage'] && (v['isStorage'] = 'N');
+                v['isArrival'] && (v['isArrival'] = 'N');
+                v['isPayment'] && (v['isPayment'] = 'N');
               });
 
             }
@@ -244,8 +248,10 @@ export default {
         if (valid) {
 
           if(!this.params['puOrderItemList'].length || !this.params['puOrderExecuteList'].length){
-
-            this.$message.error('请填写订单行!');
+            this.$notify.error({
+              title: '错误',
+              message: '请填写订单行!'
+            });
             return false;
           }
 
@@ -254,14 +260,20 @@ export default {
 
          if(isPrice.length){
 
-            this.$message.error('询价失败!');
+            this.$notify.error({
+              title: '错误',
+              message: '询价失败!'
+            });
             return false
 
          }
          console.log(isPrice,'isPrice');
           cb();
         } else {
-          this.$message.error('存在必填项未填写');
+          this.$notify.error({
+              title: '错误',
+              message: '存在必填项未填写'
+            });
           console.log('error submit!!');
           return false;
         }
@@ -530,15 +542,12 @@ export default {
         >
           <h3>新增</h3>
           <div style="text-align: right">
-            <el-button size="mini" @click="handleCancel">取消</el-button>
             <el-button 
               size="mini" 
-              type="danger"
+              type="primary"
               @click="handleSava"
             >保存</el-button>
-            <!-- <el-button size="mini" type="info" @click="handleSubmit">
-              保存并新增
-            </el-button> -->
+            <el-button size="mini" @click="handleCancel">取消</el-button>
           </div>
         </div>
         <el-row style="display: flex; flex-wrap: wrap">
@@ -588,6 +597,7 @@ export default {
 
               <el-input-number
                 v-if="column.inputType === 'InputNumber'"
+                :min="column.min || 0"
                 v-model="params[column.key]"
                 :precision="column.precision"
                 :controls-position="column.controlsPosition"
@@ -690,7 +700,6 @@ export default {
               <el-table-column
                 v-for="(cColumn, cIndex) in column.tableColumns"
                 :key="cIndex"
-                
                 :label="cColumn.title"
                 :width="cColumn.width || 80"
               >
@@ -735,6 +744,7 @@ export default {
                       v-if="cColumn.inputType === 'InputNumber'"
                       v-model="scope.row[cColumn.key]"
                       :precision="cColumn.precision"
+                      :min="column.min || 0"
                       :controls-position="cColumn.controlsPosition"
                       :placeholder="cColumn.placeholder"
                       @change="handleInputChange(scope.row, cColumn.key)"

文件差异内容过多而无法显示
+ 482 - 395
src/views/purchase/purchase-order/column.js


+ 24 - 10
src/views/purchase/purchase-order/edit/index.vue

@@ -69,13 +69,15 @@ export default {
     handleSynchronousMaterial(tableOne, tableTwo) {
       let _this = this;
       // this.params[tableOne]-- -> this.params[tableTwo]
-      this.params[tableOne] &&
+      this.params[tableOne] && this.params[tableOne].length &&
 
         this.params[tableOne].forEach((item, index) => {
 
           for (const key in item) {
 
-            if (key in _this.params[tableTwo][index]) {
+            if ( _this.params[tableTwo][index] &&
+              ( key in _this.params[tableTwo][index])
+            ) {
 
                 _this.params[tableTwo][index].material = item.material;
 
@@ -178,21 +180,29 @@ export default {
     },
     // 判断保存条件
     judgeSaveCondition(cb){
+      const _this = this;
       this.$refs['orderEditForm'].validate(async (valid) => {
         if (valid) {
 
-          // 执行结果在审批之后出现 !this.params['puOrderExecuteList'].length
-          if(!this.params['puOrderItemList'].length ){
-
-            this.$message.error('请填写订单行!');
+          // 执行结果在审批之后出现 
+          let validList = _this.params['puOrderItemList'].filter(item => item.delFlag === '0');
+          if(!validList.length ){
+            _this.$notify.error({
+              title: '错误',
+              message: '请填写订单行!'
+            });
+            
             return false;
           }
 
-          let isPrice =  this.params.puOrderItemList.filter(item => !item.whetherCompleteInquiry);
+          let isPrice =  _this.params.puOrderItemList.filter(item => !item.whetherCompleteInquiry);
 
          if(isPrice.length){
 
-            this.$message.error('询价失败!');
+          _this.$notify.error({
+              title: '错误',
+              message: '询价失败!'
+            });
             return false
 
          }
@@ -200,7 +210,10 @@ export default {
           cb();
 
         } else {
-          this.$message.error('存在必填项未填写');
+          _this.$notify.error({
+              title: '错误',
+              message: '存在必填项未填写'
+            });
           console.log('error submit!!');
           return false;
         }
@@ -487,8 +500,8 @@ export default {
           ">
           <h3>{{ handleIsRevise() ? '修订' : '编辑' }}</h3>
           <div style="text-align: right">
+            <el-button :size="size" type="primary" @click="handleSava">更 新</el-button>
             <el-button :size="size" @click="handleCancel">取 消</el-button>
-            <el-button :size="size" type="danger" @click="handleSava">更 新</el-button>
           </div>
         </div>
         <el-row style="display:flex; flex-wrap: wrap;">
@@ -531,6 +544,7 @@ export default {
               <el-input-number v-if="column.inputType === 'InputNumber'" 
                 v-model="params[column.key]"
                 :precision="column.precision"
+                :min="column.min || 0"
                 :max="handleIsRevise() ? params[column.key] : Infinity"
                 :controls-position="column.controlsPosition" 
                 :placeholder="column.placeholder"

+ 9 - 0
src/views/purchase/purchase-order/edit/initColumn.js

@@ -49,6 +49,15 @@ export const forbidden = (isEdit,source) => {
 
       })
     }
+
+    updateColumns.forEach(item => {
+
+      if (item.key == 'paymentMoney' || item.key == 'invoiceMoney') {
+        item.disabled = true;
+      }
+    })
+
+
   }
   else{  
 

+ 45 - 29
src/views/purchase/purchase-order/index.vue

@@ -57,16 +57,6 @@ export default {
     };
   },
   computed: {
-    // showSearchColumns() {
-    //   return this.isSimpleSearch
-    //     ? this.searchColumns.slice(0, 4)
-    //     : this.searchColumns;
-    // },
-    // tableShowColumns:{
-    //   get() {
-    //     return this.tableColumns.filter(({ attr }) => attr.isHidden);
-    //   },
-    // },
     $dicts: {
       get: function () {
         return this.dict.type;
@@ -234,12 +224,7 @@ export default {
 
           success();
 
-        }).catch(() => {
-
-          this.$message({
-            type: 'info',
-            message: '已取消操作!'
-          });          
+        }).catch(() => {        
         });
     },
 
@@ -270,7 +255,7 @@ export default {
     // 批量提交
     handleBatchSubmit(){
 
-      let inconformity = this.checkedList.filter(row => !(row.status == '0' || row.status == '3'));
+      let inconformity = this.checkedList.filter(row => !((row.status == '0' || row.status == '3') && row.isEnd === 'N'));
 
       if(!inconformity.length && this.checkedList.length){
 
@@ -279,7 +264,8 @@ export default {
         this.fetchSubmit(puOrderIds);
       
       }else{
-        this.$message({
+        this.$notify({
+          title: '警告',
           message: '当前选中存在不满足提交条件的数据!',
           type: 'warning'
         });
@@ -318,7 +304,10 @@ export default {
       if (this.checkedList.length == 1) {
 
         // 非手工、状态:自由/驳回
-        if (this.checkedList[0].source != 3 && (this.checkedList[0].status == 0 || this.checkedList[0].status == 3)) {
+        if (this.judgeIsOption('return',this.checkedList[0])) {
+        // if (this.checkedList[0].source != 3 &&
+        //     (this.checkedList[0].status == 0 || this.checkedList[0].status == 3)
+        //  ) {
 
           return false
         }
@@ -337,8 +326,9 @@ export default {
       if (this.checkedTabList.length == 1) {
 
         // 主信息:非手工、状态:自由/驳回
-        if(this.primaryResource.source != 3 && 
-          (this.primaryResource.status == 0 || this.primaryResource.status == 3) ){
+        if(this.judgeIsOption('return',this.primaryResource)){
+        // if(this.primaryResource.source != 3 && 
+        //   (this.primaryResource.status == 0 || this.primaryResource.status == 3) ){
 
           return false
         }
@@ -397,7 +387,8 @@ export default {
 
       if (this.checkedList.length == 1) {
 
-        if (this.checkedList[0].status == 0) {
+        // if (this.checkedList[0].status == 0) {
+        if (this.judgeIsOption('allClose',this.checkedList[0])) {
           // 未审批状态下整单关闭
           return false
         }
@@ -502,6 +493,28 @@ export default {
         return '';
 
       }
+    },
+    judgeIsOption(type,source){
+      // status: 0=自由态,1=审批中,2=已审核,3=已驳回 4=提交中
+      // source: 1=自动协议直采,2=协议直采,3=手工
+      // isEnd:整单关闭标识
+      switch(type){
+        case 'edit':
+          return (source.status == '0' || source.status == '3') && source.isEnd === 'N';
+        case 'revise':
+            return source.status == '2' && source.isEnd === 'N';
+        case 'del':
+          return (source.status == '0' || source.status == '3') && source.source == '3' && source.isEnd === 'N';
+        case 'submit':
+          return (source.status == '0' || source.status == '3') && source.isEnd === 'N';
+        case 'allClose':
+          return source.status == 0 && source.isEnd === 'N';
+        case 'return':
+          return source.source != 3 && source.isEnd === 'N' &&
+                (source.status == 0 || source.status == 3);
+        default:
+         return false;
+      }
     }
   }
 };
@@ -510,7 +523,7 @@ export default {
 <template>
   <el-card 
     v-loading="loading" 
-    style="width: calc(100% - 24px); height: 100%; margin: 10px" 
+    style="width: calc(100% - 24px); height: 100%; margin: 10px;padding: 10px;" 
     :body-style="{ padding: 0 }"
   >
     <SeeDrawer ref="seeDrawerRef"></SeeDrawer>
@@ -528,8 +541,8 @@ export default {
     ></el-super-search>
   
     <!-- 操作 -->
-    <el-row :gutter="24" style="padding: 0 20px">
-      <el-col :span="24" style="text-align: right;margin: 0 10px 0 0">
+    <el-row :gutter="24" type="flex" justify="end">
+      <el-col :span="24" style="text-align: right;">
         <el-button size="mini" type="primary" @click="handleOpenAddDrawer"
           v-hasPermi="['material:order:add']">新增</el-button>
        
@@ -560,6 +573,7 @@ export default {
     <el-super-table
       v-model="tableData"
       size="mini"
+      max-height="480"
       :dict="dict"
       :columns="tableColumns"
       hideOperationColumns
@@ -575,7 +589,7 @@ export default {
           <template slot-scope="scope">
           <!-- <template #operation="{scope}"> -->
             <el-button 
-              v-if="scope.row.status == '2'"
+              v-if="judgeIsOption('revise',scope.row)"
               type="text" 
               size="small" 
               @click.stop="handleOpenEditDrawer(scope.row)"
@@ -583,7 +597,7 @@ export default {
             修订
             </el-button>
             <el-button 
-              v-if="scope.row.status == '0' || scope.row.status == '3'"
+              v-if="judgeIsOption('edit',scope.row)"
               type="text" 
               size="small" 
               @click.stop="handleOpenEditDrawer(scope.row)"
@@ -592,14 +606,14 @@ export default {
             </el-button>
             <!-- 0=自由态,1=审批中,2=已审核,3=已驳回 4=提交中-->
             <el-button 
-              v-if="(scope.row.status == '0' || scope.row.status == '3') && scope.row.source == '3'" 
+              v-if="judgeIsOption('del',scope.row)" 
               type="text" 
               size="small" 
               @click.stop="handleDeleteList(scope.row)"
               v-hasPermi="['material:order:remove']"
             >删除</el-button>
             <el-button 
-              v-if="scope.row.status == '0' || scope.row.status == '3'" 
+              v-if="judgeIsOption('submit',scope.row)" 
               type="text" 
               size="mini"
               v-hasPermi="['material:order:toOa']" 
@@ -615,6 +629,7 @@ export default {
       :total="page.total"
       :page.sync="page.pageNum"
       :limit.sync="page.pageSize"
+      :page-sizes="[10,20,50,100,500,1000]"
       @pagination="fetchList(params, page)"
     />
    
@@ -637,6 +652,7 @@ export default {
           <el-super-table
             v-model="tabTableDatas[column.key]"
             size="mini"
+            max-height="200"
             :dict="dict"
             hideOperationColumns
             stroage

+ 15 - 0
src/views/purchase/transferOrder/add.vue

@@ -253,6 +253,7 @@
             <el-select
               clearable
               size="mini"
+              :disabled="sonDisable"
               v-model="basicForm.customer"
               @clear="clean('客户')"
               @focus="chooseRefer('CUSTOMER_PARAM', true, '客户')"
@@ -448,6 +449,7 @@
           <el-table
             :data="materialInfo"
             fit
+            border
             max-height="480"
             style="font-size: 12px"
             :row-class-name="rowClassName"
@@ -935,6 +937,7 @@
           <el-table
             :data="receiveInfo"
             fit
+            border
             max-height="480"
             style="font-size: 12px"
           >
@@ -1135,6 +1138,7 @@
           <el-table
             :data="priceList"
             fit
+            border
             max-height="480"
             style="font-size: 12px"
           >
@@ -1265,6 +1269,7 @@
           <el-table
             :data="resultList"
             fit
+            border
             max-height="480"
             style="font-size: 12px"
           >
@@ -1897,9 +1902,15 @@ export default {
           if (this.basicForm.deliveryDept) {
             this.reBackRefer("DEPT_PARAM", this.basicForm.deliveryDept);
           }
+          
           if (this.basicForm.currency) {
             this.reBackRefer("CURRENCY_PARAM", this.basicForm.currency);
           }
+          // 客户
+          if (this.basicForm.customer) {
+            this.reBackRefer("CUSTOMER_PARAM", this.basicForm.customer);
+          }
+
           if (this.basicForm.storageWarehouse) {
             this.reBackRefer(
               "WAREHOUSE_PARAM",
@@ -1924,6 +1935,7 @@ export default {
     },
     // 回显参照框
     reBackRefer(type, id, title) {
+      console.log(type, id, title,'回显参照框');
       getRefer({ type: type, id: id, title: title }).then((res) => {
         if (type == "ORG_PARAM" && title == "调出库存组织") {
           this.chuOrgOptions = res.rows;
@@ -2309,4 +2321,7 @@ export default {
 .hang ::v-deep .el-form-item__content {
   margin-left: 0px !important;
 }
+::v-deep .el-table__row > td {
+  border: none;
+}
 </style>

+ 24 - 40
src/views/purchase/transferOrder/index.vue

@@ -1,8 +1,8 @@
 <template>
   <div id="transferOrder">
     <div v-if="isList">
-      <el-card>
-        <el-form class="search_area" label-width="120px">
+      <el-card style="position: relative;">
+        <el-form class="search_area" label-width="100px">
           <el-row :gutter="10">
             <el-col :span="1.5">
               <el-form-item label="调出库存组织">
@@ -38,54 +38,30 @@
                 </el-select>
               </el-form-item>
             </el-col>
-            <el-col :span="1.5">
-              <el-form-item label="单据号">
-                <el-input
-                  v-model.trim="queryParams.code"
-                  size="mini"
-                  clearable
-                  style="width: 200px"
-                />
-              </el-form-item>
-            </el-col>
-            <el-col :span="1.5">
-              <el-form-item label="" label-width="20px">
-                <el-button type="primary" size="mini" icon="el-icon-search" plain @click="searchList">搜索</el-button>
-                <el-button size="mini" icon="el-icon-refresh" plain @click="resetList">重置</el-button>
-              </el-form-item>
-            </el-col>
+            <div style="position: absolute;top: 3px;right: 10px;">
+              <el-button type="primary" size="mini" icon="el-icon-search" @click="searchList">搜索</el-button>
+              <el-button size="mini" icon="el-icon-refresh" plain @click="resetList">重置</el-button>
+            </div>
           </el-row>
 
-          <!-- <CollapseTransition>
+          <CollapseTransition>
           <div v-show="expanded">
             <el-row :gutter="10">
               <el-col :span="1.5">
-                <el-form-item label="物料编码">
+                <el-form-item label="单据号">
                   <el-input
-                  v-model="queryParams.code"
-                  size="mini"
-                  placeholder=""
-                  clearable
-                  style="width: 200px"
-                  />
-                </el-form-item>
-              </el-col>
-              <el-col :span="1.5">
-                <el-form-item label="调入库存组织">
-                  <el-input
-                  v-model="queryParams.storageInventoryOrg"
-                  size="mini"
-                  placeholder=""
-                  clearable
-                  style="width: 200px"
+                    v-model.trim="queryParams.code"
+                    size="mini"
+                    clearable
+                    style="width: 200px"
                   />
                 </el-form-item>
               </el-col>
             </el-row>
           </div>
-          </CollapseTransition> -->
+          </CollapseTransition>
         </el-form>
-      <!-- <el-divider class="lines"><i style="cursor: pointer;" :class="expanded?'el-icon-arrow-up':'el-icon-arrow-down'" @click="drop"></i></el-divider> -->
+      <el-divider class="lines"><i style="cursor: pointer;" :class="expanded?'el-icon-arrow-up':'el-icon-arrow-down'" @click="drop"></i></el-divider>
 
       
         <div class="btn_grooup">
@@ -95,6 +71,7 @@
         <el-table 
           :data="tableList" 
           fit
+          border
           show-summary
           highlight-current-row
           max-height="680"
@@ -154,7 +131,7 @@
           @size-change="handleSizeChange"
           @current-change="handleCurrentChange"
           :current-page="queryParams.pageNum"
-          :page-sizes="[5, 10, 15, 20]"
+          :page-sizes="[10, 20, 50, 100, 500, 1000]"
           :page-size="100"
           layout="total, sizes, prev, pager, next, jumper"
           :total=total>
@@ -165,6 +142,7 @@
             <el-table
             :data="materialInfo" 
             fit
+            border
             max-height="380"
             style="font-size: 12px;"
             >
@@ -194,7 +172,7 @@
             <el-table-column show-overflow-tooltip label="商品名" align="center" prop="productCode" width="150px"/>
             <el-table-column show-overflow-tooltip label="通用名" align="center" prop="commonCode" width="150px"/>
             <el-table-column show-overflow-tooltip label="剂型" align="center" prop="drug" width="150px"/>
-            <el-table-column show-overflow-tooltip label="调入调出结算规则明细" align="center" prop="ruleDetail" width="150px"/>
+            <el-table-column show-overflow-tooltip label="调入调出结算规则明细" align="center" prop="ruleDetail" width="180px"/>
             <el-table-column show-overflow-tooltip label="上市许可持有人" align="center" prop="marketingApprovalPersonal" width="150px"/>
             <el-table-column show-overflow-tooltip label="生产许可证号/经营许可证号/备案凭证号" align="center" prop="production" width="260px"/>
             <el-table-column show-overflow-tooltip label="pi码" align="center" prop="pi" width="150px"/>
@@ -210,6 +188,7 @@
             <el-table
             :data="receiveInfo" 
             fit
+            border
             max-height="380"
             style="font-size: 12px;"
             >
@@ -249,6 +228,7 @@
             <el-table
             :data="priceList" 
             fit
+            border
             max-height="380"
             style="font-size: 12px;"
             >
@@ -284,6 +264,7 @@
             <el-table
             :data="resultList" 
             fit
+            border
             max-height="380"
             style="font-size: 12px;"
             >
@@ -501,4 +482,7 @@ export default {
   margin-top: 10px;
   text-align: right;
 }
+::v-deep .el-table__row > td {
+  border: none;
+}
 </style>

部分文件因为文件数量过多而无法显示