mushencc 3 年 前
コミット
f43af9b18c
81 ファイル変更4706 行追加641 行削除
  1. BIN
      dist (2).zip
  2. BIN
      dist (3).zip
  3. BIN
      dist (4).zip
  4. BIN
      dist (5).zip
  5. BIN
      dist.zip
  6. 0 1
      src/App.vue
  7. 0 3
      src/assets/index.html
  8. 3 0
      src/components/Topsearch/index.vue
  9. 144 15
      src/routerMap/index.js
  10. 36 9
      src/untils/until.js
  11. 5 4
      src/views/BasicSettings/AdditionalProject/index.vue
  12. 1 1
      src/views/BasicSettings/EmployeeManage/EmployeeManage.vue
  13. 206 0
      src/views/BasicSettings/MaterialRequisition.vue
  14. 215 0
      src/views/BasicSettings/SearchWork.vue
  15. 5 4
      src/views/BasicSettings/SuppliersManage/SippliersList.vue
  16. 10 10
      src/views/BidSystem/DeepeningOrder/newDetail.vue
  17. 13 4
      src/views/BidSystem/DeepeningOrder/newEdit.vue
  18. 2 8
      src/views/BidSystem/IncompleteStatistics.vue
  19. 1 1
      src/views/BidSystem/OutputValue/otherList.vue
  20. 21 18
      src/views/BidSystem/ProductDeOrder/newEdit.vue
  21. 29 7
      src/views/BidSystem/ProductDeOrder/newSplitOrder.vue
  22. 2 2
      src/views/BidSystem/QuotaRequisitionDetail.vue
  23. 4 5
      src/views/BidSystem/WorkDistribution.vue
  24. 12 3
      src/views/BidSystem/WorkerValue/list.vue
  25. 14 4
      src/views/BidSystem/WorkerValue/total.vue
  26. 2 0
      src/views/ChipMannage/index.vue
  27. 19 2
      src/views/ChipPrintScreen/ChipPrintScreen.vue
  28. 1 1
      src/views/Dispatching/DispatchedList.vue
  29. 1 1
      src/views/Dispatching/Dispatching.vue
  30. 116 0
      src/views/ErrorList/detail.vue
  31. 208 0
      src/views/ErrorList/index.vue
  32. 15 5
      src/views/HumanResources/otherValue.vue
  33. 49 6
      src/views/HumanResources/shopAttence.vue
  34. 4 0
      src/views/HumanResources/shopAttenceDetail.vue
  35. 36 32
      src/views/MatchChange/BSTchange.vue
  36. 1076 0
      src/views/MatchChange/BSTcheck.vue
  37. 189 0
      src/views/MatchChange/BSTlist.vue
  38. 970 0
      src/views/MatchChange/HXYchange.vue
  39. 19 4
      src/views/MatchChange/HXYcheck.vue
  40. 189 0
      src/views/MatchChange/HXYlist.vue
  41. 49 190
      src/views/MatchChange/list.vue
  42. 9 1
      src/views/MaterialMannage/edit.vue
  43. 15 1
      src/views/MountOrder/details.vue
  44. 13 13
      src/views/ProcedureMannage/index.vue
  45. 1 0
      src/views/ProcessMannage/index.vue
  46. 8 0
      src/views/ProductionOrderList/Deliverylist/DeliveryDetail.vue
  47. 11 1
      src/views/ProductionOrderList/Deliverylist/Deliverylist.vue
  48. 4 0
      src/views/ProductionOrderList/Deliverylist/matchIronware.vue
  49. 15 1
      src/views/ProductionOrderList/Dispatchlist/confirm.vue
  50. 18 1
      src/views/ProductionOrderList/Dispatchlist/details.vue
  51. 22 8
      src/views/ProductionOrderList/Dispatchlist/list.vue
  52. 15 0
      src/views/ProductionOrderList/InboundForm/details.vue
  53. 4 0
      src/views/ProductionOrderList/ProductCheck/detail.vue
  54. 58 71
      src/views/ProductionOrderList/ProductionPlanlist/BST_two.vue
  55. 14 0
      src/views/ProductionOrderList/ProductionPlanlist/details.vue
  56. 0 18
      src/views/ProductionOrderList/ProductionPlanlist/list.vue
  57. 68 35
      src/views/ProductionOrderList/ProductionsOrder/BST_Decorationlist.vue
  58. 2 0
      src/views/PurchasingManage/PurchasingOrder/edit.vue
  59. 2 0
      src/views/PurchasingManage/RequisitionOrder/edit.vue
  60. 2 2
      src/views/SealApprove/edit.vue
  61. 52 19
      src/views/SealApprove/list.vue
  62. 8 0
      src/views/cms.vue
  63. 42 1
      src/views/leadMatch/Ironware/edit.vue
  64. 18 18
      src/views/leadMatch/Ironware/list.vue
  65. 345 7
      src/views/leadMatch/MatchList/BSTMatchCheck.vue
  66. 1 1
      src/views/leadMatch/MatchList/BSTMatchList.vue
  67. 42 3
      src/views/leadMatch/MatchList/HXYMatchCheck.vue
  68. 1 1
      src/views/leadMatch/MatchList/HXYMatchList.vue
  69. 74 2
      src/views/leadMatch/MatchList/NewHXYMatchPage.vue
  70. 38 28
      src/views/leadMatch/MatchList/matchList.vue
  71. 1 1
      src/views/leadMatch/roomList/BSTlist.vue
  72. 37 3
      src/views/leadMatch/roomList/HXYedit.vue
  73. 1 1
      src/views/leadMatch/roomList/HXYlist.vue
  74. 39 29
      src/views/leadMatch/roomList/list.vue
  75. 1 1
      src/views/leadMatch/weightMemo/BSTlist.vue
  76. 8 0
      src/views/leadMatch/weightMemo/HXYedit.vue
  77. 1 1
      src/views/leadMatch/weightMemo/HXYlist.vue
  78. 41 28
      src/views/leadMatch/weightMemo/list.vue
  79. 5 1
      src/views/stack/confirm.vue
  80. 3 3
      src/views/stack/list.vue
  81. 1 1
      vue.config.js

BIN
dist (2).zip


BIN
dist (3).zip


BIN
dist (4).zip


BIN
dist (5).zip


BIN
dist.zip


+ 0 - 1
src/App.vue

@@ -8,7 +8,6 @@
 export default {
   name: 'App',
   beforeCreate(){
-    console.log(this.$store.state.ip);
     document.title = this.$store.state.ip=='http://121.41.102.225:82'?'九方测试服':this.$store.state.ip=='http://121.37.173.82:82'?'倍思特':this.$store.state.ip=='http://124.71.176.88:882'?'金立方':this.$store.state.ip=='http://124.71.176.88:70'?'森兰九鼎':this.$store.state.ip=='http://121.41.102.225:999'?'上线服务器':this.$store.state.ip=='http://hxy_api.qingyaokeji.com'?'华信源':'九方软件';
   }
 }

+ 0 - 3
src/assets/index.html

@@ -151,10 +151,7 @@
                 success: res => {
                     let data = JSON.parse(res);
                     // table-box
-                    console.log(data)
-
                     let newArr=chunk(data.list,15);
-                    console.log(newArr)
                     let theadStr = `<thead>
                 <tr>
                     <td colspan="23" style="border: 0;">

+ 3 - 0
src/components/Topsearch/index.vue

@@ -130,6 +130,9 @@ export default {
   created() {
     window.addEventListener('keydown', this.handleKeyDown, true) //开启监听键盘按下事件
   },
+  destroyed(){
+    window.removeEventListener('keydown',this.handleKeyDown);
+  },
   mounted() {
     let obj = {}
     this.$emit('init', this.filterDats(obj))

+ 144 - 15
src/routerMap/index.js

@@ -428,10 +428,10 @@ const routerMap = [
     name: "ProductionPlanlistList", //生产订单列表-->生产计划列表
     meta: {
       index: 4,
-      keepAlive:true
+      // keepAlive:true
     },
     component: (resolve) =>
-      require(["@/views/ProductionOrderList/ProductionPlanlist/list"], resolve),
+      require(["@/views/ProductionOrderList/ProductionPlanlist/BST_two"], resolve),
   },
   {
     path: "/cms/productionorderlist/productionplanlist/details",
@@ -1785,12 +1785,32 @@ const routerMap = [
     name: "RoomList", //房间列表
     meta: {
       index: 3,
-      keepAlive:true
+      // keepAlive:true
     },
     component: (resolve) =>
       require(["@/views/leadMatch/roomList/list"], resolve),
   },
   {
+    path: "/cms/leadMatch/roomList/BSTlist",
+    name: "RoomListBST", //房间列表(倍思特)
+    meta: {
+      index: 3,
+      // keepAlive:true
+    },
+    component: (resolve) =>
+      require(["@/views/leadMatch/roomList/BSTlist"], resolve),
+  },
+  {
+    path: "/cms/leadMatch/roomList/HXYlist",
+    name: "RoomListHXY", //房间列表(华信源)
+    meta: {
+      index: 3,
+      // keepAlive:true
+    },
+    component: (resolve) =>
+      require(["@/views/leadMatch/roomList/HXYlist"], resolve),
+  },
+  {
     path: "/cms/leadMatch/roomList/BSTedit",
     name: "RoomListBSTEdit", //房间列表-->新增/编辑/查看(倍思特)
     meta: {
@@ -1813,7 +1833,7 @@ const routerMap = [
     name: "Ironware", //码单五金列表
     meta: {
       index: 3,
-      keepAlive:true
+      // keepAlive:true
     },
     component: (resolve) =>
       require(["@/views/leadMatch/Ironware/list"], resolve),
@@ -1833,12 +1853,21 @@ const routerMap = [
     name: "WeightMemo", //码单列表
     meta: {
       index: 3,
-      keepAlive:true
+      // keepAlive:true
     },
     component: (resolve) =>
       require(["@/views/leadMatch/weightMemo/list"], resolve),
   },
   {
+    path: "/cms/leadMatch/weightMemo/BSTlist",
+    name: "BSTWeightMemoList", //码单列表(倍思特)
+    meta: {
+      index: 3,
+    },
+    component: (resolve) =>
+      require(["@/views/leadMatch/weightMemo/BSTlist"], resolve),
+  },
+  {
     path: "/cms/leadMatch/weightMemo/BSTedit",
     name: "BSTWeightMemoEdit", //码单列表-->新增/编辑/查看(倍思特)
     meta: {
@@ -1848,6 +1877,15 @@ const routerMap = [
       require(["@/views/leadMatch/weightMemo/BSTedit"], resolve),
   },
   {
+    path: "/cms/leadMatch/weightMemo/HXYlist",
+    name: "HXYWeightMemoList", //码单列表(华信源)
+    meta: {
+      index: 3,
+    },
+    component: (resolve) =>
+      require(["@/views/leadMatch/weightMemo/HXYlist"], resolve),
+  },
+  {
     path: "/cms/leadMatch/weightMemo/HXYedit",
     name: "HXYWeightMemoEdit", //码单列表-->新增/编辑/查看(华信源)
     meta: {
@@ -1861,12 +1899,32 @@ const routerMap = [
     name: "matchList", //匹配列表-->列表
     meta: {
       index: 3,
-      keepAlive:true
+      // keepAlive:true
     },
     component: (resolve) =>
       require(["@/views/leadMatch/MatchList/matchList"], resolve),
   },
   {
+    path: "/cms/leadMatch/MatchList/BSTMatchList",
+    name: "BSTMatchList", //匹配列表(倍思特)
+    meta: {
+      index: 3,
+      // keepAlive:true
+    },
+    component: (resolve) =>
+      require(["@/views/leadMatch/MatchList/BSTMatchList"], resolve),
+  },
+  {
+    path: "/cms/leadMatch/MatchList/HXYMatchList",
+    name: "HXYMatchList", //匹配列表(华信源)
+    meta: {
+      index: 3,
+      // keepAlive:true
+    },
+    component: (resolve) =>
+      require(["@/views/leadMatch/MatchList/HXYMatchList"], resolve),
+  },
+  {
     path: "/cms/leadMatch/MatchList/BSTMatchCheck",
     name: "BSTmatchCheck", //匹配列表-->查看(倍思特)
     meta: {
@@ -2157,7 +2215,6 @@ const routerMap = [
     name: "shopAttence", //业务报表-->人力资源-->车间考勤表
     meta: {
       index: 3,
-      keepAlive: true,
     },
     component: (resolve) =>
       require(["@/views/HumanResources/shopAttence"], resolve),
@@ -2267,30 +2324,67 @@ const routerMap = [
     name: "MatchChangeList", //业务管理-->生产制造-->匹配变更
     meta: {
       index: 3,
-      keepAlive: true,
     },
     component: (resolve) =>
       require(["@/views/MatchChange/list"], resolve),
   },
   {
-    path: "/cms/MatchChange/change",
-    name: "MatchChangeChange", //业务管理-->生产制造-->匹配变更-->变更
+    path: "/cms/MatchChange/HXYlist",
+    name: "MatchChangeListHXY", //业务管理-->生产制造-->匹配变更
+    meta: {
+      index: 3,
+    },
+    component: (resolve) =>
+      require(["@/views/MatchChange/HXYlist"], resolve),
+  },
+  {
+    path: "/cms/MatchChange/HXYchange",
+    name: "MatchChangeChangeHXY", //业务管理-->生产制造-->匹配变更-->变更
+    meta: {
+      index: 3,
+      // keepAlive: true,
+    },
+    component: (resolve) =>
+      require(["@/views/MatchChange/HXYchange"], resolve),
+  },
+  {
+    path: "/cms/MatchChange/HXYcheck",
+    name: "MatchChangeCheckHXY", //业务管理-->生产制造-->匹配变更-->查看
+    meta: {
+      index: 3,
+      // keepAlive: true,
+    },
+    component: (resolve) =>
+      require(["@/views/MatchChange/HXYcheck"], resolve),
+  },
+  {
+    path: "/cms/MatchChange/BSTlist",
+    name: "MatchChangeListBST", //业务管理-->生产制造-->匹配变更
+    meta: {
+      index: 3,
+    },
+    component: (resolve) =>
+      require(["@/views/MatchChange/BSTlist"], resolve),
+  },
+  {
+    path: "/cms/MatchChange/BSTchange",
+    name: "MatchChangeChangeBST", //业务管理-->生产制造-->匹配变更-->变更
     meta: {
       index: 3,
       // keepAlive: true,
     },
     component: (resolve) =>
-      require(["@/views/MatchChange/change"], resolve),
+      require(["@/views/MatchChange/BSTchange"], resolve),
   },
   {
-    path: "/cms/MatchChange/check",
-    name: "MatchChangeCheck", //业务管理-->生产制造-->匹配变更-->查看
+    path: "/cms/MatchChange/BSTcheck",
+    name: "MatchChangeCheckBST", //业务管理-->生产制造-->匹配变更-->查看
     meta: {
       index: 3,
       // keepAlive: true,
     },
     component: (resolve) =>
-      require(["@/views/MatchChange/check"], resolve),
+      require(["@/views/MatchChange/BSTcheck"], resolve),
   },
   {
     path: "/cms/BasicSettings/printStyle",
@@ -2408,7 +2502,6 @@ const routerMap = [
     name: "SealApproveList", //印章审批列表
     meta: {
       index: 3,
-      keepAlive:true
     },
     component: (resolve) =>
       require(["@/views/SealApprove/list"], resolve),
@@ -2532,6 +2625,42 @@ const routerMap = [
     component: (resolve) =>
       require(["@/views/stack/confirm"], resolve),
   },
+  {
+         path:"/cms/ErrorList/index",
+         name:"ErrorListIndex",//异常预警表-->列表
+         meta:{
+          index:3,
+         },
+         component:(resolve)=>
+          require(["@/views/ErrorList/index"],resolve),
+      },
+      {
+        path:"/cms/ErrorList/detail",
+        name:"ErrorListDetail",//异常预警表-->列表-->详情
+        meta:{
+         index:3,
+        },
+        component:(resolve)=>
+         require(["@/views/ErrorList/detail"],resolve),
+     },
+     {
+      path:"/cms/BasicSettings/SearchWork",
+      name:"SearchWork",//查询派工单
+      meta:{
+       index:3,
+      },
+      component:(resolve)=>
+       require(["@/views/BasicSettings/SearchWork"],resolve),
+   },
+   {
+    path:"/cms/BasicSettings/MaterialRequisition",
+    name:"MaterialRequisition",//查询开料单
+    meta:{
+     index:3,
+    },
+    component:(resolve)=>
+     require(["@/views/BasicSettings/MaterialRequisition"],resolve),
+ },
   // 测试用
   {
     path: "/cms/ordermannage/businessorderlist/editcopy",

+ 36 - 9
src/untils/until.js

@@ -183,6 +183,33 @@ export default {
         }, []);
         return result;
     },
+    splitArr(data, senArrLen){ //处理数组变成二维数组
+      //处理成len个一组的数据
+      let data_len = data.length;
+      let arrOuter_len = data_len % senArrLen === 0 ? data_len / senArrLen : parseInt((data_len / senArrLen) + '') + 1;
+      let arrSec_len = data_len > senArrLen ? senArrLen : data_len;//内层数组的长度
+      let arrOuter = new Array(arrOuter_len);//最外层数组
+      let arrOuter_index = 0;//外层数组的子元素下标
+      // console.log(data_len % len);
+      for (let i = 0; i < data_len; i++) {
+        if (i % senArrLen === 0) {
+          arrOuter_index++;
+          let len = arrSec_len * arrOuter_index;
+          //将内层数组的长度最小取决于数据长度对len取余,平时最内层由下面赋值决定
+          arrOuter[arrOuter_index - 1] = new Array(data_len % senArrLen);
+          if (arrOuter_index === arrOuter_len)//最后一组
+            data_len % senArrLen === 0 ?
+              len = data_len % senArrLen + senArrLen * arrOuter_index :
+              len = data_len % senArrLen + senArrLen * (arrOuter_index - 1);
+          let arrSec_index = 0;//第二层数组的索引
+          for (let k = i; k < len; k++) {//第一层数组的开始取决于第二层数组长度*当前第一层的索引
+            arrOuter[arrOuter_index - 1][arrSec_index] = data[k];
+            arrSec_index++;
+          }
+        }
+      }
+      return arrOuter
+    },
     PrintChipsUsb(contents,type,printerUsbPort,sub_type) {
       //30*50
          if(sub_type==1){
@@ -1436,35 +1463,35 @@ export default {
   
         st.send("ZM_SetLabelWidth|664");
         st.send(
-          `ZM_DrawTextTrueTypeW|70|20|24|0|Arial|1|600|0|0|0|A1| 项目:${client_name ||
+          `ZM_DrawTextTrueTypeW|70|0|24|0|Arial|1|600|0|0|0|A1| 项目:${client_name ||
             ""}`
         );
           st.send(
-          `ZM_DrawTextTrueTypeW|280|20|24|0|Arial|1|600|0|0|0|A1|  区域: ${layer||''}`
+          `ZM_DrawTextTrueTypeW|280|0|24|0|Arial|1|600|0|0|0|A1|  区域: ${layer||''}`
         );
         st.send(
-          `ZM_DrawTextTrueTypeW|70|55|24|0|Arial|1|600|0|0|0|A2|  房号:${number_detail||''}`
+          `ZM_DrawTextTrueTypeW|70|35|24|0|Arial|1|600|0|0|0|A2|  房号:${number_detail||''}`
         );
          st.send(
-          `ZM_DrawTextTrueTypeW|280|55|24|0|Arial|1|600|0|0|0|A2| 产品:${product_title ||
+          `ZM_DrawTextTrueTypeW|280|35|24|0|Arial|1|600|0|0|0|A2| 产品:${product_title ||
             ""} `
         );
          st.send(
-          `ZM_DrawTextTrueTypeW|70|90|24|0|Arial|1|600|0|0|0|A3| 部件:${part_title || ""} `
+          `ZM_DrawTextTrueTypeW|70|70|24|0|Arial|1|600|0|0|0|A3| 部件:${part_title || ""} `
         );
         st.send(
-          `ZM_DrawTextTrueTypeW|280|90|24|0|Arial|1|600|0|0|0|A3| 图号: ${url_number ||
+          `ZM_DrawTextTrueTypeW|280|70|24|0|Arial|1|600|0|0|0|A3| 图号: ${url_number ||
             ""} `
         );
         st.send(
-          `ZM_DrawTextTrueTypeW|70|125|24|0|Arial|1|600|0|0|0|A4| 尺寸: ${measure ||
+          `ZM_DrawTextTrueTypeW|70|105|24|0|Arial|1|600|0|0|0|A4| 尺寸: ${measure ||
             ""} `
         );
     st.send(
-          `ZM_DrawTextTrueTypeW|280|125|24|0|Arial|1|600|0|0|0|A4| 木皮:${color_title || ""}`
+          `ZM_DrawTextTrueTypeW|280|105|24|0|Arial|1|600|0|0|0|A4| 木皮:${color_title || ""}`
         );
          st.send(
-          `ZM_DrawTextTrueTypeW|520|90|12|0|Arial|1|600|0|0|0|A4| ${chip_bin || ""}`
+          `ZM_DrawTextTrueTypeW|520|70|12|0|Arial|1|600|0|0|0|A4| ${chip_bin || ""}`
         );
         st.send(`ZM_RW_RfidFormat|1|0|0|${chip.length}|1|${chip}`);
         st.send("ZM_PrintLabel_R|1|1");

+ 5 - 4
src/views/BasicSettings/AdditionalProject/index.vue

@@ -111,10 +111,10 @@ export default {
       page_size: 10,
       proxyObj: {},
       tableColums: [
-        { title: '序号', type: 'index', key: '', align: 'center', resizable: true,width: 200 },
-        { title: '附加项目名称', key: 'title', align: 'center', tooltip: true, resizable: true,width: 400 },
-        { title: '数量', key: 'num', align: 'center', tooltip: true, resizable: true,width: 400 },
-        { title: '单价', key: 'price', align: 'center', tooltip: true, resizable: true,width: 400 },
+        { title: '序号', type: 'index', key: '', align: 'center', resizable: true,minWidth: 100 },
+        { title: '附加项目名称', key: 'title', align: 'center', tooltip: true, resizable: true,minWidth: 200 },
+        { title: '数量', key: 'num', align: 'center', tooltip: true, resizable: true,minWidth: 200 },
+        { title: '单价', key: 'price', align: 'center', tooltip: true, resizable: true,minWidth: 200 },
         { title: '操作', key: '', align: 'center', slot: 'set', minWidth: 200 },
       ],
       tableData: [],
@@ -204,6 +204,7 @@ export default {
     },
     changeSize (e) {
       this.page_size = e;
+      this.page_index = 1;
       this.init(this.proxyObj)
     },
     uploadSuccess (res) {

+ 1 - 1
src/views/BasicSettings/EmployeeManage/EmployeeManage.vue

@@ -39,7 +39,7 @@
                   clearable
                   v-model="searchData.title"
                   style="width: 150px"
-                  placeholder="请输入名"
+                  placeholder="请输入名"
                 />
               </FormItem>
               <FormItem label="部门类别:">

+ 206 - 0
src/views/BasicSettings/MaterialRequisition.vue

@@ -0,0 +1,206 @@
+<template>
+    <div>
+        <Toptitle title="开料单查询">
+            <Button type="success" ghost icon='ios-download-outline' @click='exportData'
+            >导出</Button
+          >
+        </Toptitle>
+        <Form :label-width='120' style="margin-top:10px;display:flex;flex-wrap:wrap">
+            <FormItem label='项目名称:'>
+                <Select filterable multiple class="form_item" :max-tag-count='2' v-model="searchData.order_no">
+                    <Option v-for="(item,index) in orderList" :key="index" :value="item" :label='item'/>
+                </Select>
+            </FormItem>
+             <FormItem label='楼栋:'>
+                <Select filterable multiple class="form_item" :max-tag-count='2' v-model="searchData.house">
+                    <Option v-for="(item,index) in houseList" :key="index" :value="item" :label='item'/>
+                </Select>
+            </FormItem>
+             <FormItem label='单元:'>
+                <Select filterable multiple class="form_item" :max-tag-count='2' v-model="searchData.unit">
+                    <Option v-for="(item,index) in unitList" :key="index" :value="item" :label='item'/>
+                </Select>
+            </FormItem>
+             <FormItem label='楼层:'>
+                <Select filterable multiple class="form_item" :max-tag-count='2' v-model="searchData.layer">
+                    <Option v-for="(item,index) in layerList" :key="index" :value="item" :label='item'/>
+                </Select>
+            </FormItem>
+             <FormItem label='房号:'>
+                <Select filterable multiple class="form_item" :max-tag-count='2' v-model="searchData.number">
+                    <Option v-for="(item,index) in numberList" :key="index" :value="item" :label='item'/>
+                </Select>
+            </FormItem>
+             <FormItem label='子名称:'>
+                <Select filterable multiple class="form_item" :max-tag-count='2' v-model="searchData.part_title">
+                    <Option v-for="(item,index) in productList" :key="index" :value="item" :label='item'/>
+                </Select>
+            </FormItem>
+             <FormItem label='图号:'>
+                <Select filterable multiple class="form_item" :max-tag-count='2' v-model="searchData.url_number">
+                    <Option v-for="(item,index) in urlNumberList" :key="index" :value="item" :label='item'/>
+                </Select>
+            </FormItem>
+             <FormItem label='子饰面:'>
+                <Select filterable multiple class="form_item" :max-tag-count='2' v-model="searchData.material_title">
+                    <Option v-for="(item,index) in materialList" :key="index" :value="item" :label='item'/>
+                </Select>
+            </FormItem>
+             <FormItem label='长:'>
+                <Select filterable multiple class="form_item" :max-tag-count='2' v-model="searchData.long">
+                    <Option v-for="(item,index) in longList" :key="index" :value="item" :label='item'/>
+                </Select>
+            </FormItem>
+             <FormItem label='宽:'>
+                <Select filterable multiple class="form_item" :max-tag-count='2' v-model="searchData.wide">
+                    <Option v-for="(item,index) in wideList" :key="index" :value="item" :label='item'/>
+                </Select>
+            </FormItem>
+             <FormItem label='厚:'>
+                <Select filterable multiple class="form_item" :max-tag-count='2' v-model="searchData.thick">
+                    <Option v-for="(item,index) in thickList" :key="index" :value="item" :label='item'/>
+                </Select>
+            </FormItem>
+            <FormItem :label-width='40'>
+                <Button type="primary" @click="handleSearch">搜索</Button>
+            </FormItem>
+        </Form>
+        <Table :data='tableData' :columns='tableColumns' border max-height='520' v-show="tableData.length!=0"></Table>
+        <div class="pageSlotStyle" v-show="tableData.length!=0">
+          <Page
+            :page-size-opts="[10, 20, 30, 40, 100, 1000]"
+            @on-page-size-change="changeSize"
+            @on-change="changePage"
+            :current="pageIndex"
+            show-total
+            :total="total"
+            show-sizer
+            :page-size="pageSize"
+          />
+        </div>
+    </div>
+</template>
+<script>
+export default {
+    data(){
+           return{
+            houseList:[],
+            unitList:[],
+            layerList:[],
+            numberList:[],
+            orderList:[],
+            materialList:[],
+            productList:[],
+            wideList:[],
+            longList:[],
+            thickList:[],
+            urlNumberList:[],
+               tableData:[],
+               searchData:{
+                order_no:[],
+                part_title:[],
+                url_number:[],
+                material_title:[],
+                wide:[],
+                long:[],
+                thick:[]
+               },
+               proxyData:{},
+               tableColumns:[
+                {title:"楼栋",align:'center',minWidth:120,key:'house'},
+               {title:"单元",align:'center',minWidth:120,key:'unit'},
+               {title:"楼层",align:'center',minWidth:120,key:'layer'},
+               {title:"房号",align:'center',minWidth:120,key:'number'},
+                {title:"子名称",align:'center',minWidth:120,key:'part_title'},
+                {title:"图号",align:'center',minWidth:120,key:'url_number'},
+                {title:"子饰面",align:'center',minWidth:120,key:'material_title'},
+                {title:"长",align:'center',minWidth:120,key:'long'},
+                {title:"宽",align:'center',minWidth:120,key:'wide'},
+                {title:"厚",align:'center',minWidth:120,key:'thick'},
+                {title:"子单位",align:'center',minWidth:120,key:'units'}
+               ],
+               pageSize:10,
+               pageIndex:1,
+               total:0,
+               proxyData:{},
+           }
+    },
+    mounted(){
+            this.axios.post('/api/split_orders_board_list',{page_size:1,page_index:1}).then(res=>{
+                         this.orderList = res.data.order_no;
+                          this.houseList = res.data.house;
+                         this.layerList = res.data.layer;
+                         this.unitList = res.data.unit;
+                         this.urlNumberList = res.data.url_number;
+                         this.longList = res.data.long;
+                         this.wideList = res.data.wide;
+                         this.thickList = res.data.thick;
+                         this.materialList =  res.data.material;
+                         this.productList = res.data.part_title;
+                           this.numberList = res.data.number;
+              })
+    },
+    methods:{
+       async exportData(){
+        await new Promise((resolve,reject)=>{
+            if(JSON.stringify(this.proxyData)==='{}'){
+            reject();
+        }else{
+            resolve();
+        }
+        }).then(()=>{
+          
+        }).catch(()=>{
+            this.$Message.warning('请先搜索数据!')
+           return new Promise(()=>{})
+        })
+            const res = await this.axios.post('/api/board_export',{...this.proxyData})
+           if(res.code == 200){
+                let url = `${this.$store.state.ip}/api/storage/${res.data.file}`
+                location.href = url
+            }
+        },
+         handleSearch(){
+          let obj = JSON.parse(JSON.stringify(this.searchData));
+          this.proxyData = obj;
+          this.pageIndex = 1;
+          this.initData(obj);
+        },
+        initData(row){
+              this.axios.post('/api/split_orders_board_list',{page_size:this.pageSize,page_index:this.pageIndex,...row}).then(res=>{
+                              this.tableData = res.data.data;
+                         this.total = res.data.total;
+                         this.houseList = res.data.house;
+                         this.orderList = res.data.order_no;
+                         this.layerList = res.data.layer;
+                         this.unitList = res.data.unit;
+                         this.urlNumberList = res.data.url_number;
+                         this.longList = res.data.long;
+                         this.wideList = res.data.wide;
+                         this.thickList = res.data.thick;
+                         this.materialList =  res.data.material;
+                         this.productList = res.data.product;
+                         this.numberList = res.data.number;
+              })
+        },
+     changePage(e){
+        this.pageIndex = e;
+        this.initData(this.proxyData);
+     },
+     changeSize(e){
+        this.pageSize = e;
+        this.pageIndex = 1;
+        this.initData(this.proxyData);
+     }
+    }
+}
+</script>
+<style lang="scss" scoped>
+.pageSlotStyle{
+    text-align: center;
+    margin-top: 10px;
+}
+.form_item{
+    width:200px
+}
+</style>

+ 215 - 0
src/views/BasicSettings/SearchWork.vue

@@ -0,0 +1,215 @@
+<template>
+    <div>
+        <Toptitle title="派工单查询">
+            <Button type="success" ghost icon='ios-download-outline' @click='exportData'
+            >导出</Button
+          >
+        </Toptitle>
+        <Form :label-width='120' style="margin-top:10px;display:flex;flex-wrap:wrap">
+            <FormItem label='项目名称:'>
+                <Select filterable multiple class="form_item" :max-tag-count='2' v-model="searchData.order_no">
+                    <Option v-for="(item,index) in orderList" :key="index" :value="item" :label='item'/>
+                </Select>
+            </FormItem>
+             <FormItem label='楼栋:'>
+                <Select filterable multiple class="form_item" :max-tag-count='2' v-model="searchData.house">
+                    <Option v-for="(item,index) in houseList" :key="index" :value="item" :label='item'/>
+                </Select>
+            </FormItem>
+             <FormItem label='单元:'>
+                <Select filterable multiple class="form_item" :max-tag-count='2' v-model="searchData.unit">
+                    <Option v-for="(item,index) in unitList" :key="index" :value="item" :label='item'/>
+                </Select>
+            </FormItem>
+             <FormItem label='楼层:'>
+                <Select filterable multiple class="form_item" :max-tag-count='2' v-model="searchData.layer">
+                    <Option v-for="(item,index) in layerList" :key="index" :value="item" :label='item'/>
+                </Select>
+            </FormItem>
+             <FormItem label='房号:'>
+                <Select filterable multiple class="form_item" :max-tag-count='2' v-model="searchData.number">
+                    <Option v-for="(item,index) in numberList" :key="index" :value="item" :label='item'/>
+                </Select>
+            </FormItem>
+             <FormItem label='产品名称:'>
+                <Select filterable multiple class="form_item" :max-tag-count='2' v-model="searchData.product_title">
+                    <Option v-for="(item,index) in productList" :key="index" :value="item" :label='item'/>
+                </Select>
+            </FormItem>
+             <FormItem label='图号:'>
+                <Select filterable multiple class="form_item" :max-tag-count='2' v-model="searchData.url_number">
+                    <Option v-for="(item,index) in urlNumberList" :key="index" :value="item" :label='item'/>
+                </Select>
+            </FormItem>
+             <FormItem label='饰面:'>
+                <Select filterable multiple class="form_item" :max-tag-count='2' v-model="searchData.material_title">
+                    <Option v-for="(item,index) in materialList" :key="index" :value="item" :label='item'/>
+                </Select>
+            </FormItem>
+             <FormItem label='宽:'>
+                <Select filterable multiple class="form_item" :max-tag-count='2' v-model="searchData.wide">
+                    <Option v-for="(item,index) in wideList" :key="index" :value="item" :label='item'/>
+                </Select>
+            </FormItem>
+             <FormItem label='高:'>
+                <Select filterable multiple class="form_item" :max-tag-count='2' v-model="searchData.long">
+                    <Option v-for="(item,index) in longList" :key="index" :value="item" :label='item'/>
+                </Select>
+            </FormItem>
+             <FormItem label='深:'>
+                <Select filterable multiple class="form_item" :max-tag-count='2' v-model="searchData.thick">
+                    <Option v-for="(item,index) in thickList" :key="index" :value="item" :label='item'/>
+                </Select>
+            </FormItem>
+            <FormItem :label-width='40'>
+                <Button type="primary" @click="handleSearch">搜索</Button>
+            </FormItem>
+        </Form>
+        <Table :data='tableData' :columns='tableColumns' border max-height='520' v-show="tableData.length!=0"></Table>
+        <div class="pageSlotStyle" v-show="tableData.length!=0">
+          <Page
+            :page-size-opts="[10, 20, 30, 40, 100, 1000]"
+            @on-page-size-change="changeSize"
+            @on-change="changePage"
+            :current="pageIndex"
+            show-total
+            :total="total"
+            show-sizer
+            :page-size="pageSize"
+          />
+        </div>
+    </div>
+</template>
+<script>
+export default {
+    data(){
+           return{
+            houseList:[],
+            orderList:[],
+            unitList:[],
+            layerList:[],
+            numberList:[],
+            materialList:[],
+            productList:[],
+            wideList:[],
+            longList:[],
+            thickList:[],
+            urlNumberList:[],
+               tableData:[],
+               searchData:{
+                house:[],
+                order_no:[],
+                unit:[],
+                layer:[],
+                number:[],
+                product_title:[],
+                url_number:[],
+                material_title:[],
+                wide:[],
+                long:[],
+                thick:[]
+               },
+               proxyData:{},
+               tableColumns:[
+               {title:"楼栋",align:'center',minWidth:120,key:'house'},
+               {title:"单元",align:'center',minWidth:120,key:'unit'},
+               {title:"楼层",align:'center',minWidth:120,key:'layer'},
+               {title:"房号",align:'center',minWidth:120,key:'number'},
+                {title:"产品名称",align:'center',minWidth:120,key:'product_title'},
+                {title:"图号",align:'center',minWidth:120,key:'url_number'},
+                {title:"饰面",align:'center',minWidth:120,key:'material_title'},
+                {title:'数量',align:'center',minWidth:120,key:'sh_number'},
+                {title:"宽",align:'center',minWidth:120,key:'wide'},
+                {title:"高",align:'center',minWidth:120,key:'long'},
+                {title:"深",align:'center',minWidth:120,key:'thick'},
+                {title:"左右式",align:'center',minWidth:120,key:'fashion',render:(h,params)=>{
+                    const {row} = params;
+                    return h('span',{},row.fashion==1?'左':row.fashion==2?'右':'')
+                }},
+                {title:"单位",align:'center',minWidth:120,key:'units'}
+               ],
+               pageSize:10,
+               pageIndex:1,
+               total:0,
+               proxyData:{},
+           }
+    },
+    mounted(){
+            this.axios.post('/api/split_orders_dispatch_list',{page_size:1,page_index:1}).then(res=>{
+                         this.houseList = res.data.house;
+                         this.orderList = res.data.order_no;
+                         this.layerList = res.data.layer;
+                         this.unitList = res.data.unit;
+                         this.urlNumberList = res.data.url_number;
+                         this.longList = res.data.long;
+                         this.wideList = res.data.wide;
+                         this.thickList = res.data.thick;
+                         this.materialList =  res.data.material;
+                         this.productList = res.data.product;
+                         this.numberList = res.data.number;
+              })
+    },
+    methods:{
+       async exportData(){
+        await new Promise((resolve,reject)=>{
+            if(JSON.stringify(this.proxyData)==='{}'){
+            reject();
+        }else{
+            resolve();
+        }
+        }).then(()=>{
+          
+        }).catch(()=>{
+            this.$Message.warning('请先搜索数据!')
+           return new Promise(()=>{})
+        })
+            const res = await this.axios.post('/api/dispatch_export',{...this.proxyData})
+           if(res.code == 200){
+                let url = `${this.$store.state.ip}/api/storage/${res.data.file}`
+                location.href = url
+            }
+        },
+         handleSearch(){
+          let obj = JSON.parse(JSON.stringify(this.searchData));
+          this.proxyData = obj;
+          this.pageIndex = 1;
+          this.initData(obj);
+        },
+        initData(row){
+              this.axios.post('/api/split_orders_dispatch_list',{page_size:this.pageSize,page_index:this.pageIndex,...row}).then(res=>{
+                         this.tableData = res.data.data;
+                         this.total = res.data.total;
+                         this.houseList = res.data.house;
+                         this.orderList = res.data.order_no;
+                         this.layerList = res.data.layer;
+                         this.unitList = res.data.unit;
+                         this.urlNumberList = res.data.url_number;
+                         this.longList = res.data.long;
+                         this.wideList = res.data.wide;
+                         this.thickList = res.data.thick;
+                         this.materialList =  res.data.material;
+                         this.productList = res.data.product;
+                         this.numberList = res.data.number;
+              })
+        },
+     changePage(e){
+        this.pageIndex = e;
+        this.initData(this.proxyData);
+     },
+     changeSize(e){
+        this.pageSize = e;
+        this.pageIndex = 1;
+        this.initData(this.proxyData);
+     }
+    }
+}
+</script>
+<style lang="scss" scoped>
+.pageSlotStyle{
+    text-align: center;
+    margin-top: 10px;
+}
+.form_item{
+    width:200px
+}
+</style>

+ 5 - 4
src/views/BasicSettings/SuppliersManage/SippliersList.vue

@@ -34,6 +34,7 @@
                 type="text"
                 size="small"
                 v-model="searchData.code"
+                clearable
                 style="width: 150px"
                 placeholder="供应商编码"
               />
@@ -42,6 +43,7 @@
               <Input
                 type="text"
                 size="small"
+                clearable
                 v-model="searchData.title"
                 style="width: 150px"
                 placeholder="供应商名称"
@@ -76,7 +78,7 @@
                 <Option label="否" value="2" />
               </Select>
             </FormItem>
-            <FormItem label="新增时间:">
+            <FormItem label="新增时间:" style="width:450px">
               <DatePicker
                 type="date"
                 size="small"
@@ -84,8 +86,7 @@
                 placeholder="年/月/日"
                 v-model="searchData.date[0]"
               ></DatePicker>
-            </FormItem>
-            <FormItem label="~">
+          ~
               <DatePicker
                 type="date"
                 size="small"
@@ -94,7 +95,7 @@
                 v-model="searchData.date[1]"
               ></DatePicker>
             </FormItem>
-            <FormItem>
+            <FormItem :label-width='30'>
               <Button
                 type="primary"
                 size="small"

+ 10 - 10
src/views/BidSystem/DeepeningOrder/newDetail.vue

@@ -118,7 +118,7 @@ export default {
             {type:'index',title:'序号',align:'center',minWidth:100},
             {title:'产品名称',align:'center',key:'product_title',minWidth:120},
             {title:'图号',align:'center',key:'url_number',minWidth:120},
-            {title:'规格',align:'center',key:'measure',minWidth:120},
+            // {title:'规格',align:'center',key:'measure',minWidth:120},
             {title:'饰面',align:'center',key:'process_property',minWidth:120},
             {title:'数量',align:'center',key:'num',minWidth:120},
             {title:'图纸',align:'center',key:'img_url',minWidth:120},
@@ -135,7 +135,7 @@ export default {
             {title:'产品名称',align:'center',key:'product_title',minWidth:120},
             {title:'左右',align:'center',key:'fashion',minWidth:120,render:(h,params)=>{
                 const {row} = params;
-                return h('span',{},row.fashion==1?'左':'右')
+                return h('span',{},row.fashion==1?'左':row.fashion==2?'右':'')
             }},
             {title:'图号',align:'center',key:'url_number',minWidth:120},
             {title:'图纸',align:'center',key:'img_url',minWidth:120},
@@ -224,12 +224,12 @@ export default {
             this.axios.post('/api/deep_details',{order_no:this.$route.query.order_no,order_number:this.$route.query.order_number,order_numbers:this.$route.query.order_numbers,...row,type:1,page_size:this.pageSize,page_index:this.pageIndex}).then(res=>{
               this.tableData = res.data.data;
               if(this.change_type){
-                let columns=[];
-                  columns = [...this.reTableColumns,{title:'下拆单状态',align:'center',minWidth:120,key:'state',render:(h,params)=>{
-                    const {row} = params;
-                    return h('span',{},row.state==0?'未下拆单':'已下拆单')
-                  }}] 
-                this.tableColumns = columns;
+                // let columns=[];
+                //   columns = [...this.reTableColumns,{title:'下拆单状态',align:'center',minWidth:120,key:'state',render:(h,params)=>{
+                //     const {row} = params;
+                //     return h('span',{},row.split_state==0?'未下拆单':'已下拆单')
+                //   }}] 
+                this.tableColumns = [...this.reTableColumns];
               }else{
                 this.tableColumns = this.reTableColumns;
               }
@@ -249,7 +249,7 @@ export default {
                   
                   columns = [...this.reTotalTableColumns,{title:'下拆单状态',align:'center',minWidth:120,key:'state',render:(h,params)=>{
                     const {row} = params;
-                    return h('span',{},row.state==0?'未下拆单':'已下拆单')
+                    return h('span',{},row.split_state==0?'未下拆单':'已下拆单')
                   }}
                   ] 
                 this.totalTableColumns = columns;
@@ -257,7 +257,7 @@ export default {
             columns = [
                 {type:'selection',align:'center',minWidth:100},...this.reTotalTableColumns,{title:'下拆单状态',align:'center',minWidth:120,key:'state',render:(h,params)=>{
                     const {row} = params;
-                    return h('span',{},row.state==0?'未下拆单':'已下拆单')
+                    return h('span',{},row.split_state==0?'未下拆单':'已下拆单')
                   }},{title:'操作',align:'center',minWidth:100,slot:'set'}
                   ] 
                 this.totalTableColumns = columns;

+ 13 - 4
src/views/BidSystem/DeepeningOrder/newEdit.vue

@@ -48,15 +48,15 @@
           :action="$store.state.ip + '/api/deep_import_news'"
           :data='{order_no:recordOrderNO?recordOrderNO:formData.order_no}'
         >
-          <Button type="primary">导入</Button
+          <Button type="primary" :disabled='!tableData.every(v=>(v.state==0))'>导入</Button
           >
         </Upload>
      </div>
      <Table :data='tableData' :columns='type==1?tableColumns:type==2?editTableColumns:detailTableColumns' border max-height='500' @on-selection-change='handleSelect'>
         <template slot="set" slot-scope="{row}">
             <a style="margin-right:10px" @click='handleGoPage(row,0)'>详情</a>
-             <a style="margin-right:10px" @click='handleGoPage(row,1)' v-show="type==2">编辑</a>
-            <a @click="handleDel(row)" v-show="type!=3">删除</a>
+             <!-- <a style="margin-right:10px" @click='handleGoPage(row,1)' v-show="type==2">编辑</a> -->
+            <a @click="handleDel(row)" v-show="type!=3&&tableData.every(v=>(v.state==0))">删除</a>
             <a v-show="type==3" @click="handleOrder(row,1)">下拆单</a>
         </template>
      </Table>
@@ -289,12 +289,21 @@ export default {
          
         },
         handleSave(){
-       this.axios.post('/api/deep_order_save',{...this.formData}).then(res=>{
+            if(this.type==1){
+                 this.axios.post('/api/deep_order_save',{...this.formData}).then(res=>{
         if(res.code==200){
             this.$Message.success(res.msg);
             this.recordOrderNO = this.formData.order_no;
         }
        })
+            }else if(this.type==2){
+                 this.axios.post('/api/deep_order_edit',{...this.formData}).then(res=>{
+        if(res.code==200){
+            this.$Message.success(res.msg);
+        }
+       })
+            }
+      
         },
           uploadSuccess(res) {
       if (res.code == 200) {

+ 2 - 8
src/views/BidSystem/IncompleteStatistics.vue

@@ -206,6 +206,7 @@ export default {
             let data = [];
             data = JSON.parse(JSON.stringify(this.searchData));
             data.start_time = data.start_time?Date.parse(data.start_time).toString().slice(0,10):'';
+            this.pageIndex =1;
             this.getData(data)
         },
         goPageDetail(row){
@@ -223,6 +224,7 @@ export default {
         },
         changeSize(e){
              this.pageSize = e;
+             this.pageIndex =1;
              this.getData();
         },
         changePage(e){
@@ -230,15 +232,7 @@ export default {
         this.getData();
         }
 
-    },
-    beforeRouteLeave(to, from, next) {
-    if (to.path == "/cms/BidSystem/IncompleteStatisticsDetail") {
-      next();
-    } else {
-      from.meta.keepAlive = false;
-      next();
     }
-  }
 }
 </script>
 <style lang="scss" scoped>

+ 1 - 1
src/views/BidSystem/OutputValue/otherList.vue

@@ -72,7 +72,7 @@ export default {
             name:"Date",
             type:'date',
             start_value:`${(new Date()).toLocaleDateString().split('/')[0]}-${(new Date()).toLocaleDateString().split('/')[1]}-1`,
-            end_value:[1,3,5,7,8,10,12].indexOf((new Date()).toLocaleDateString().split('/')[1])>=0?`${(new Date()).toLocaleDateString().split('/')[0]}-${(new Date()).toLocaleDateString().split('/')[1]}-31`:[4,6,9,11].indexOf((new Date()).toLocaleDateString().split('/')[1])>=0?`${(new Date()).toLocaleDateString().split('/')[0]}-${(new Date()).toLocaleDateString().split('/')[1]}-30`:`${(new Date()).toLocaleDateString().split('/')[0]}-${(new Date()).toLocaleDateString().split('/')[1]}-${((new Date()).toLocaleDateString().split('/')[0])%4==0?29:28}`,
+            end_value:['1','3','5','7','8','10','12'].indexOf((new Date()).toLocaleDateString().split('/')[1])>=0?`${(new Date()).toLocaleDateString().split('/')[0]}-${(new Date()).toLocaleDateString().split('/')[1]}-31`:['4','6','9','11'].indexOf((new Date()).toLocaleDateString().split('/')[1])>=0?`${(new Date()).toLocaleDateString().split('/')[0]}-${(new Date()).toLocaleDateString().split('/')[1]}-30`:`${(new Date()).toLocaleDateString().split('/')[0]}-${(new Date()).toLocaleDateString().split('/')[1]}-${((new Date()).toLocaleDateString().split('/')[0])%4==0?29:28}`,
             start_server: "start_time",
             end_server:'end_time',
             start_placeholder:'年/月',

+ 21 - 18
src/views/BidSystem/ProductDeOrder/newEdit.vue

@@ -144,32 +144,32 @@
                <vxe-input v-model="row.url_number" type="text"></vxe-input>
               </template>
             </vxe-column>
-            <vxe-column field="measure" title="型号" :edit-render="{enabled:type==3?false:true}" min-width="80">
+            <!-- <vxe-column field="measure" title="型号" :edit-render="{enabled:type==3?false:true}" min-width="80">
               <template #edit="{ row }">
                 <vxe-input v-model="row.measure" type="text" placeholder="请输入型号"></vxe-input>
               </template>
-            </vxe-column>
+            </vxe-column> -->
             <vxe-column field="num" title="数量" min-width="80">
               <template #default="{ row }">
              <a @click="clickNum(row)">{{row.num}}</a>
             </template>
             </vxe-column>
-              <vxe-column field="long" title="长" :edit-render="{enabled:type==3?false:true}" min-width="80">
+              <!-- <vxe-column field="long" title="长" :edit-render="{enabled:type==3?false:true}" min-width="80">
               <template #edit="{ row }">
               <vxe-input v-model="row.long" type="text" placeholder="请输入长" transfer></vxe-input>
             </template>
-            </vxe-column>
-              <vxe-column field="width" title="宽" :edit-render="{enabled:type==3?false:true}" min-width="80">
+            </vxe-column> -->
+              <!-- <vxe-column field="width" title="宽" :edit-render="{enabled:type==3?false:true}" min-width="80">
               <template #edit="{ row }">
               <vxe-input v-model="row.width" type="text" placeholder="请输入宽" transfer></vxe-input>
             </template>
-            </vxe-column>
-              <vxe-column field="high" title="高" :edit-render="{enabled:type==3?false:true}" min-width="80">
+            </vxe-column> -->
+              <!-- <vxe-column field="high" title="高" :edit-render="{enabled:type==3?false:true}" min-width="80">
               <template #edit="{ row }">
               <vxe-input v-model="row.high" type="text" placeholder="请输入高" transfer></vxe-input>
             </template>
-            </vxe-column>
-              <vxe-column field="url" title="图纸" min-width="80">
+            </vxe-column> -->
+              <!-- <vxe-column field="url" title="图纸" min-width="80">
               <template #default="{ row }">
                 <img
                   @click="looks(row.url)"
@@ -178,24 +178,24 @@
                   style="width:40px;height:auto"
                 />
             </template>
-            </vxe-column>
-              <vxe-column field="fashion" title="左右式" min-width="80">
+            </vxe-column> -->
+              <!-- <vxe-column field="fashion" title="左右式" min-width="80">
             <template #default='{row}'>
                 <span>{{row.fashion==1?'左':row.fashion==2?'右':''}}</span>
-            </template>
+            </template> -->
               <!-- <template #edit="{ row }">
              <vxe-select v-model="row.date12" type="text" :filterable='true' clearable>
 
              </vxe-select>
             </template> -->
-            </vxe-column>
-              <vxe-column field="remark" title="备注" :edit-render="{enabled:type==3?false:true}" min-width="80">
+            <!-- </vxe-column> -->
+              <!-- <vxe-column field="remark" title="备注" :edit-render="{enabled:type==3?false:true}" min-width="80">
               <template #edit="{ row }">
               <vxe-input v-model="row.remark" type="text" placeholder="请输入备注" transfer>
 
               </vxe-input>
             </template>
-            </vxe-column>
+            </vxe-column> -->
           <vxe-column field="explode_status" title="拆单状态" min-width="80">
            <template #default="{ row }">
                <span>{{row.explode_status==0?'未拆单':'已拆单'}}</span>
@@ -208,11 +208,11 @@
           </vxe-column>
            <vxe-column title="操作" min-width="150">
             <template #default="{ row }">
-                 <a style="margin-right:10px" @click="handleSet(row,1)" v-show="type==2&&row.status==0">拆单</a>
+                 <a style="margin-right:10px" @click="handleSet(row,1)" v-show="type==2&&row.status==0&&row.split_state==1">拆单</a>
                     <!-- <a style="margin-right:10px" @click="handleSet(row,2)" v-show="type!=3">复制</a> -->
                     <a style="margin-right:10px" @click="handleSet(row,3)">详情</a>
                     <!-- <a @click="handleSet(row,4,$rowIndex)" v-show="type!=3">删除</a> -->
-                    <a @click="handleSet(row,5)" v-show="type==3&&row.explode_status==1">下生产</a>
+                    <a @click="handleSet(row,5)" v-show="type==3&&row.explode_status==1&&row.status==0">下生产</a>
               </template>
           </vxe-column>
         </vxe-table>
@@ -225,6 +225,7 @@
           show-total
           :total="total"
           show-sizer
+          transfer
           :page-size="pageSize"
         />
             </div>
@@ -294,6 +295,7 @@
           :total="numTotal"
           show-sizer
           :page-size="numPageSize"
+          transfer
         />
             </div>
         </Modal>
@@ -563,7 +565,8 @@ export default {
                     this.show_product = true;
                     this.exportProduct={
                         url_number:[row.url_number],
-                          cut_order_product_ids:[row.cut_order_product_id]
+                          cut_order_product_ids:row.cut_order_product_id,
+                          measure:[row.measure]
                     }
                     break;
                 case 6:

+ 29 - 7
src/views/BidSystem/ProductDeOrder/newSplitOrder.vue

@@ -1,6 +1,6 @@
 <template>
     <div>
-<Toptitle title="拆单">
+<Toptitle :title="$route.query.type==1?'拆单':'详情'">
    <Upload
               style="display:inline-block;margin-right:10px"
           name="your_file"
@@ -9,7 +9,7 @@
           :on-error="uploadError"
           :on-success="uploadSuccess"
           :action="$store.state.ip + '/api/split_import_news'"
-          :data='{order_no:$route.query.order_no,url_number:$route.query.url_number,num:$route.query.num}'
+          :data='{order_no:$route.query.order_no,url_number:$route.query.url_number,num:$route.query.num,product_name:$route.query.title,measure:$route.query.measure}'
           v-if='$route.query.type==1'
         >
           <Button type="primary">导入</Button
@@ -27,16 +27,16 @@
       <FormItem label='产品名称:' class="form_item">
          <span>{{formData.title}}</span>
       </FormItem>
-       <FormItem label='型号:' class="form_item">
+       <!-- <FormItem label='型号:' class="form_item">
          <span>{{formData.measure}}</span>
-       </FormItem>
+       </FormItem> -->
         <FormItem label='数量:' class="form_item">
              <span>{{formData.num}}</span>
         </FormItem>
            <FormItem label='图号:' class="form_item">
              <span>{{formData.url_number}}</span>
            </FormItem>
-            <FormItem label='图纸:' class="form_item">
+            <!-- <FormItem label='图纸:' class="form_item">
                  <span></span>
             </FormItem>
              <FormItem label='左右式:' class="form_item">
@@ -44,7 +44,7 @@
              </FormItem>
               <FormItem label='备注:' class="form_item">
                  <span>{{formData.remark}}</span>
-              </FormItem>
+              </FormItem> -->
 </Form>
 <!-- <Form :label-width='100' class="form_content" style="border:none">
     <FormItem :label-width='20'>
@@ -67,7 +67,10 @@
           max-height="70%"
           :column-config="{resizable: true}"
           :edit-config="{trigger: 'click', mode: 'row'}"
+          :span-method="mergeRowMethod"
           >
+            <vxe-column field="measure" title="深化尺寸" min-width="180">
+            </vxe-column>
             <vxe-column field="compose_name" title="组件名称" min-width="150">
               <template #edit="{ row }">
                 <vxe-select v-model="row.compose_name" type="text" :filterable='true' clearable placeholder="请选择"></vxe-select>
@@ -221,6 +224,25 @@ KeyBoard
         }
     },
     methods:{
+      mergeRowMethod( {row, _rowIndex, column, visibleData }){
+ const cellValue = row[column.property];
+ const fields = ['measure'];
+              if (cellValue && fields.includes(column.property)) {
+                const prevRow = visibleData[_rowIndex - 1]
+                let nextRow = visibleData[_rowIndex + 1]
+                if (prevRow && prevRow[column.property] === cellValue) {
+                  return { rowspan: 0, colspan: 0 }
+                } else {
+                  let countRowspan = 1
+                  while (nextRow && nextRow[column.property] === cellValue) {
+                    nextRow = visibleData[++countRowspan + _rowIndex]
+                  }
+                  if (countRowspan > 1) {
+                    return { rowspan: countRowspan, colspan: 1 }
+                  }
+                }
+              }
+      },
         uploadSuccess(res) {
       if (res.code == 200) {
           this.$Message.success(res.msg);
@@ -234,7 +256,7 @@ KeyBoard
     },
 
       initData(){
-      this.axios.get('/api/split_details',{params:{order_no:this.$route.query.order_no,url_number:this.$route.query.url_number}}).then(res=>{
+      this.axios.get('/api/split_details',{params:{order_no:this.$route.query.order_no,url_number:this.$route.query.url_number,measure:this.$route.query.measure}}).then(res=>{
         this.tableData = res.data;
       })
       },

+ 2 - 2
src/views/BidSystem/QuotaRequisitionDetail.vue

@@ -145,7 +145,7 @@ export default {
                      {title:'计量单位',align:'center',minWidth:80,key:'unit'},
                      {title:'精裁面积',align:'center',minWidth:150,key:'cut_area'},
                        {title:'建议数量',align:'center',minWidth:80,key:'num'},
-                        {title:'排版数量',align:'center',minWidth:80,key:'num2'},
+                        // {title:'排版数量',align:'center',minWidth:80,key:'num2'},
             ],
             tableData:[],
             selectData:[],
@@ -321,7 +321,7 @@ export default {
             this.selectData.forEach(v=>{
                  url_number.push(v.url_number);
             })
-            const res = await this.axios.post('/api/finance_quota_export',{order_no:this.$route.query.order_no,url_number})
+            const res = await this.axios.post('/api/finance_quota_export',{order_no:this.$route.query.order_no,url_number,...this.woolModalData})
            if(res.code == 200){
                 let url = `${this.$store.state.ip}/api/storage/${res.data.file}`
                 location.href = url

+ 4 - 5
src/views/BidSystem/WorkDistribution.vue

@@ -48,11 +48,11 @@ export default {
       {title:'图号',align:'center',width:'80',key:'url_number',ellipsis:true,tooltip:true},
       {title:'完工平方',align:'center',width:'100',key:'complete_area',ellipsis:true,tooltip:true,render:(h,params)=>{
         const {row} = params;
-        return h('span',{},row.complete_area.toFixed(2))
+        return h('span',{},row.complete_area?(row.complete_area*1).toFixed(2):'')
       }},
         {title:'总平方',align:'center',width:'100',key:'area',ellipsis:true,tooltip:true,render:(h,params)=>{
         const {row} = params;
-        return h('span',{},row.area.toFixed(2))
+        return h('span',{},row.area?(row.area*1).toFixed(2):'')
       }},
       {title:'完工日期',align:'center',width:'120',key:'end_time'},
      ],
@@ -77,7 +77,7 @@ export default {
             name:"Date",
             type:'date',
             start_value:`${(new Date()).toLocaleDateString().split('/')[0]}-${(new Date()).toLocaleDateString().split('/')[1]}-1`,
-            end_value:[1,3,5,7,8,10,12].indexOf((new Date()).toLocaleDateString().split('/')[1])>=0?`${(new Date()).toLocaleDateString().split('/')[0]}-${(new Date()).toLocaleDateString().split('/')[1]}-31`:[4,6,9,11].indexOf((new Date()).toLocaleDateString().split('/')[1])>=0?`${(new Date()).toLocaleDateString().split('/')[0]}-${(new Date()).toLocaleDateString().split('/')[1]}-30`:`${(new Date()).toLocaleDateString().split('/')[0]}-${(new Date()).toLocaleDateString().split('/')[1]}-${((new Date()).toLocaleDateString().split('/')[0])%4==0?29:28}`,
+            end_value:['1','3','5','7','8','10','12'].indexOf((new Date()).toLocaleDateString().split('/')[1])>=0?`${(new Date()).toLocaleDateString().split('/')[0]}-${(new Date()).toLocaleDateString().split('/')[1]}-31`:['4','6','9','11'].indexOf((new Date()).toLocaleDateString().split('/')[1])>=0?`${(new Date()).toLocaleDateString().split('/')[0]}-${(new Date()).toLocaleDateString().split('/')[1]}-30`:`${(new Date()).toLocaleDateString().split('/')[0]}-${(new Date()).toLocaleDateString().split('/')[1]}-${((new Date()).toLocaleDateString().split('/')[0])%4==0?29:28}`,
             start_server: "start_time",
             end_server:'end_time',
             start_placeholder:'年/月',
@@ -117,7 +117,7 @@ export default {
             name:"Date",
             type:'date',
             start_value:`${(new Date()).toLocaleDateString().split('/')[0]}-${(new Date()).toLocaleDateString().split('/')[1]}-1`,
-            end_value:[1,3,5,7,8,10,12].indexOf((new Date()).toLocaleDateString().split('/')[1])>=0?`${(new Date()).toLocaleDateString().split('/')[0]}-${(new Date()).toLocaleDateString().split('/')[1]}-31`:[4,6,9,11].indexOf((new Date()).toLocaleDateString().split('/')[1])>=0?`${(new Date()).toLocaleDateString().split('/')[0]}-${(new Date()).toLocaleDateString().split('/')[1]}-30`:`${(new Date()).toLocaleDateString().split('/')[0]}-${(new Date()).toLocaleDateString().split('/')[1]}-${((new Date()).toLocaleDateString().split('/')[0])%4==0?29:28}`,
+            end_value:['1','3','5','7','8','10','12'].indexOf((new Date()).toLocaleDateString().split('/')[1])>=0?`${(new Date()).toLocaleDateString().split('/')[0]}-${(new Date()).toLocaleDateString().split('/')[1]}-31`:['4','6','9','11'].indexOf((new Date()).toLocaleDateString().split('/')[1])>=0?`${(new Date()).toLocaleDateString().split('/')[0]}-${(new Date()).toLocaleDateString().split('/')[1]}-30`:`${(new Date()).toLocaleDateString().split('/')[0]}-${(new Date()).toLocaleDateString().split('/')[1]}-${((new Date()).toLocaleDateString().split('/')[0])%4==0?29:28}`,
            start_server: "finish_start_time",
            end_server:'finish_end_time', 
             start_placeholder:'年/月',
@@ -127,7 +127,6 @@ export default {
     };
   },
   mounted() {
-    
       this.axios.post('/api/team_list').then(res=>{
         this.proxyData.employee = res.data.data;
       let employee = [];

+ 12 - 3
src/views/BidSystem/WorkerValue/list.vue

@@ -4,8 +4,8 @@
          <div style="height:85%;overflow:auto">
          <Form :label-width='80' style="display:flex;margin-top:15px;flex-wrap:wrap">
              <FormItem label='日期:' style="width:500px">
-                 <DatePicker type='date' v-model="searchData.start_time" style="width:200px"></DatePicker>~
-                 <DatePicker type='date' v-model="searchData.end_time" style="width:200px"></DatePicker>
+                 <DatePicker type='date' v-model="searchData.start_time" style="width:200px" format='yyyy-MM-dd' @on-change='(e)=>start_time=e'></DatePicker>~
+                 <DatePicker type='date' v-model="searchData.end_time" style="width:200px" @on-change='(e)=>end_time=e'></DatePicker>
              </FormItem>
              <FormItem label='工序:'>
                  <Select v-model="searchData.procedure_id" filterable multiple style="width:200px">
@@ -40,6 +40,8 @@
 export default {
     data(){
         return{
+            end_time:'',
+            start_time:'',
             search_state:false,
             procedureList:[],
             employeeList:[],
@@ -74,7 +76,10 @@ export default {
     created(){
          let month = new Date().getMonth()+1;
          let year = new Date().getFullYear();
+         let date = new Date().getDate();
        this.searchData.start_time = `${year}-${month}-1`;
+       this.start_time = `${year}-${month}-1`;
+       this.end_time = `${year}-${month}-${date}`;
         //获取工序
         this.axios.get('/api/procedure_index').then(res=>{
               this.procedureList = res.data.data;  
@@ -89,13 +94,17 @@ export default {
     methods:{
         handleSearch(){
             if(!this.searchData.start_time||!this.searchData.end_time){
-                return this.$Message.console.warning('请选择开始和结束时间!');
+                return this.$Message.warning('请选择开始和结束时间!');
             }
 
             let obj = JSON.parse(JSON.stringify(this.searchData));
             obj.start_time = obj.start_time.split('T')[0];
             obj.end_time = obj.end_time.split('T')[0];
+            console.log(this.end_time);
+            this.end_time = this.end_time.split('T')[0];
 this.proxyData = obj;
+this.proxyData.start_time = this.start_time;
+this.proxyData.end_time = this.end_time;
 this.search_state = true;
 this.initData(obj);
         },

+ 14 - 4
src/views/BidSystem/WorkerValue/total.vue

@@ -4,12 +4,12 @@
          <div style="height:85%;overflow:auto">
          <Form :label-width='80' style="display:flex;margin-top:15px;flex-wrap:wrap">
              <FormItem label='日期:' style="width:500px">
-                 <DatePicker type='date' v-model="searchData.start_time" style="width:200px"></DatePicker>~
-                 <DatePicker type='date' v-model="searchData.end_time" style="width:200px"></DatePicker>
+                 <DatePicker type='date' v-model="searchData.start_time" style="width:200px" @on-change='(e)=>start_time=e'></DatePicker>~
+                 <DatePicker type='date' v-model="searchData.end_time" style="width:200px" @on-change='(e)=>end_time=e'></DatePicker>
              </FormItem>
              <FormItem label='工序:'>
                  <Select v-model="searchData.procedure_id" filterable multiple style="width:200px">
-               <Option v-for="(item,index) in procedureList" :key="index" :value="item.title" :label="item.title"/>
+               <Option v-for="(item,index) in procedureList" :key="index" :value="item.id" :label="item.title"/>
                  </Select>
              </FormItem>
              <FormItem label='工人:'>
@@ -40,6 +40,8 @@
 export default {
     data(){
         return{
+            start_time:'',
+            end_time:'',
             search_state:false,
             procedureList:[],
             employeeList:[],
@@ -58,7 +60,10 @@ export default {
                 {title:'工序产值',align:'center',key:'procedure_output_value',minWidth:120},
                 {title:'其他产值',align:'center',key:'ext_output_value',minWidth:120},
                 {title:'保底产值',align:'center',key:'min_output_value',minWidth:120},
-                {title:'内容',align:'center',key:'content',minWidth:120}
+                {title:'内容',align:'center',key:'content',minWidth:120,render:(h,params)=>{
+                    const {row} = params;
+                    return h('span',{},row.content.toString())
+                }}
             ],
             searchData:{
              start_time:'',
@@ -71,7 +76,10 @@ export default {
     created(){
          let month = new Date().getMonth()+1;
          let year = new Date().getFullYear();
+         let date = new Date().getDate();
        this.searchData.start_time = `${year}-${month}-1`;
+        this.start_time = `${year}-${month}-1`;
+       this.end_time = `${year}-${month}-${date}`;
        //获取工序
          this.axios.get('/api/procedure_index').then(res=>{
               this.procedureList = res.data.data;  
@@ -93,6 +101,8 @@ export default {
             obj.start_time = obj.start_time.split('T')[0];
             obj.end_time = obj.end_time.split('T')[0];
 this.proxyData = obj;
+this.proxyData.start_time = this.start_time;
+this.proxyData.end_time = this.end_time;
 this.search_state = true;
 this.initData(obj);
         },

+ 2 - 0
src/views/ChipMannage/index.vue

@@ -71,10 +71,12 @@ export default {
           ]
         },
         { title: '芯片编号', name: 'Input', value: '', serverName: 'tag', placeholder: '请输入芯片编号' },
+        {title:'项目名称',name:'Input',value:'',serverName:'project_title',placeholder:'请输入项目名称'}
       ],
       tableColums: [
         { type: 'selection', align: 'center', width: 100 },
        {title:'订单号',align:'center',key:'order_no'},
+       {title:'项目名称',align:'center',key:'project_title'},
         {title:'图号',align:'center',key:'url_number'},
         {title:'部件名称',align:'center',key:'part_title'},
         // {title:'ID',align:'center',key:'id',width:'100'},

+ 19 - 2
src/views/ChipPrintScreen/ChipPrintScreen.vue

@@ -143,6 +143,17 @@
           </div>
            <div class="fullscreen-content-select-block">
             <Button
+              size="large"
+              type="primary"
+            >
+              展示类型
+            </Button>
+           <Select v-model='selectedInfo.type_value' filterable clearable transfer size="large" filter-by-label @on-change='getChipDetail'>
+             <Option v-for="(item,index) in typeList" :key="index" :value="index+1" :label="item"/>
+           </Select>
+          </div>
+           <div class="fullscreen-content-select-block">
+            <Button
               @click="handleSelectionCancel"
               size="large"
               type="primary"
@@ -750,6 +761,7 @@ export default {
   data() {
     // 这里存放数据
     return {
+      typeList:[],
       totalData:[],
       showTotalPrint:false,
       wxsoect:null,
@@ -806,6 +818,7 @@ export default {
         url_number: "",
         product_id: "",
         rows: [],
+        type_value:'',
       },
       page_index: 1,
       // page_size: 6,
@@ -845,7 +858,6 @@ export default {
        }
   },
   created() {
-    
   },
   beforeRouteEnter(to, from, next) {
     next((vm) => {
@@ -1432,6 +1444,7 @@ handleSelectionAll(){
                   //         item.isChoosed = false;
                   // })
                   this.rule_data = res.data.rule_data;
+                  this.typeList = res.data.station_type[1].list;
                   this.produceList = res.data.produce_list;
                   this.produceList.map(item=>{
                       item.isChoosed = false;
@@ -1481,6 +1494,7 @@ handleSelectionAll(){
           order_no: this.selectedInfo.order_no,
           product_id: this.selectedInfo.product_id,
           rows: this.selectedInfo.rows,
+          type_value:this.selectedInfo.type_value,
           page_index: this.page_index,
           page_size: this.page_size,
         },
@@ -2366,7 +2380,10 @@ handleSelectionAll(){
       width: 30%;
     }
     .fullscreen-content-select-block:nth-child(3) {
-      width: 30%;
+      width: 20%;
+    }
+    .fullscreen-content-select-block:nth-child(4) {
+      width: 20%;
     }
   }
   .fullscreen-content-choose {

+ 1 - 1
src/views/Dispatching/DispatchedList.vue

@@ -48,7 +48,7 @@
             <Option :value="item" :label="item" v-for="(item,index) in numberList" :key="index"></Option>
           </Select>
         </FormItem>
-          <FormItem label='图号特殊字段查询:' :label-width='140' style="margin-left:40px">
+          <FormItem label='图号批量查询:' :label-width='140' style="margin-left:40px">
          
            <Input clearable v-model="searchData.url_numbers" placeholder="请输入图号" style="width:200px" :disabled='show'/>
         </FormItem>

+ 1 - 1
src/views/Dispatching/Dispatching.vue

@@ -62,7 +62,7 @@
             <Option :value="item" :label="item" v-for="(item,index) in numberList" :key="index"></Option>
           </Select>
         </FormItem>
-          <FormItem label='图号特殊字段查询:' :label-width='140' style="margin-left:40px">
+          <FormItem label='图号批量查询:' :label-width='140' style="margin-left:40px">
          
            <Input clearable v-model="searchData.url_numbers" placeholder="请输入图号" style="width:200px" :disabled='show'/>
         </FormItem>

+ 116 - 0
src/views/ErrorList/detail.vue

@@ -0,0 +1,116 @@
+<template>
+    <div>
+        <Toptitle title="详情">
+            <Button type="primary" ghost @click="$router.go(-1)">返回</Button>
+        </Toptitle>
+        <div style="height:85%;overflow:auto">
+        <Form :label-width="120" style="display:flex;flex-wrap:wrap;margin-top:10px">
+             <FormItem label='产品名称:'>
+                <Select style="width:200px" filterable multiple v-model="searchData.product_title" :max-tag-count='2'>
+                    <Option v-for="(item,index) in productList" :key="index" :value="item" :label="item"/>
+                </Select>
+             </FormItem>
+             <FormItem label='图号:'>
+                <Select style="width:200px" filterable multiple v-model="searchData.url_number" :max-tag-count='2'>
+                    <Option v-for="(item,index) in urlNumberList" :key="index" :value="item" :label="item"/>
+                </Select>
+             </FormItem>
+             <FormItem label='部件名称:'>
+                <Select style="width:200px" filterable multiple v-model="searchData.part_title" :max-tag-count='2'>
+                <Option v-for="(item,index) in partList" :key="index" :value="item" :label="item"/>
+                </Select>
+             </FormItem>
+             <FormItem :label-width='40'>
+                <Button type="primary" @click="handleSearch">搜索</Button>
+            </FormItem> 
+        </Form>
+        <Table border :data='tableData' :columns='tableColumns' max-height='550'>
+            <template slot="project_time" slot-scope="{row}">
+                <div><span>{{func.replaceDateNoHMS(row.project_time.start_time)}}</span>~<span>{{func.replaceDateNoHMS(row.project_time.start_time)}}</span></div>
+                <div :style="row.project_time.over_time>0?{color:'red'}:''">{{row.project_time.over_time}}</div>
+            </template>
+            <template slot="produce_time" slot-scope="{row}">
+                <div><span>{{func.replaceDateNoHMS(row.produce_time.start_time)}}</span>~<span>{{func.replaceDateNoHMS(row.produce_time.start_time)}}</span></div>
+                <div :style="row.produce_time.over_time>0?{color:'red'}:''">{{row.produce_time.over_time}}</div>
+            </template>
+            <template slot="dispatch_time" slot-scope="{row}">
+                <div><span>{{func.replaceDateNoHMS(row.dispatch_time.start_time)}}</span>~<span>{{func.replaceDateNoHMS(row.dispatch_time.start_time)}}</span></div>
+                <div :style="row.dispatch_time.over_time>0?{color:'red'}:''">{{row.dispatch_time.over_time}}</div>
+            </template>
+        </Table>
+        </div>
+         <div style="text-align:center;margin-top:10px">
+          <Page :page-size-opts="[10, 20, 30, 40,100]"
+                @on-page-size-change='changeSize'
+                @on-change='changePage'
+                :current='pageIndex'
+                show-total
+                :total="total"
+                show-sizer
+                :page-size='pageSize' />
+        </div>
+    </div>
+</template>
+<script>
+export default {
+    data(){
+        return{
+            partList: [],
+            productList: [],
+            urlNumberList:[], 
+            total:0,
+            pageSize:10,
+            pageIndex:1,
+              tableData:[],
+              proxyData:{},
+              searchData:{
+                url_number:[],
+                product_title:[],
+                part_title:[]
+              },
+              tableColumns:[
+        //    {title:'芯片编码',align:'center',minWidth:120,key:'tag'},
+          {title:'图号',align:'center',minWidth:120,key:'url_number'},
+          {title:'产品名称',align:'center',minWidth:120,key:'product_title'},
+            {title:'部件名称',align:'center',minWidth:120,key:'part_title'},
+            {title:'对比项目计划时间',align:'center',minWidth:250,slot:'project_time'}, 
+            {title:'对比生产计划时间',align:'center',minWidth:250,slot:'produce_time'}, 
+             {title:'对比派工计划时间',align:'center',minWidth:250,slot:'dispatch_time'}, 
+            // {title:'逾期时间',align:'center',minWidth:120,key:''},          
+              ],
+    }
+},
+mounted(){
+this.initData();
+},
+methods:{
+    initData(row){
+      this.axios.post('/api/notice_warning_detail',{...this.$route.query,page_index:this.pageIndex,page_size:this.pageSize,...row}).then(res=>{
+                this.tableData = res.data.data;
+                this.total = res.data.total;
+                this.productList = res.data.product_title_list;
+                this.urlNumberList = res.data.url_number_list;
+                this.partList = res.data.part_title_list;
+      })
+    },
+    handleSearch(){
+      let obj = JSON.parse(JSON.stringify(this.searchData));
+      this.proxyData = obj;
+      this.pageIndex = 1;
+      this.initData(obj);
+    },
+    changePage(e){
+        this.pageIndex =e;
+        this.initData(this.proxyData);
+    },
+    changeSize(e){
+        this.pageSize = e;
+        this.pageIndex = 1;
+        this.initData(this.proxyData);
+    }
+}
+}
+</script>
+<style lang="scss" scoped>
+
+</style>

+ 208 - 0
src/views/ErrorList/index.vue

@@ -0,0 +1,208 @@
+<template>
+    <div>
+        <Toptitle title="异常预警表">
+      <slot name="titleButton">
+        <!-- <Button
+                @click="showTableSet=true"
+                type='primary'
+                ghost
+                style="margin-right:10px;">栏目设置</Button> -->
+        <Button type="primary"
+                style="margin-right:10px;"
+           
+                ghost>导出</Button>
+      </slot>
+    </Toptitle>
+    <div style="height:80%;overflow:auto">
+     <Form :label-width='100' :model="searchData" style="display:flex;flex-wrap:wrap;margin:15px 0">
+        <FormItem label='项目编码:'>
+           <Select v-model="searchData.order_no" style="width:150px" size='small' filterable multiple>
+        <Option v-for="(item,index) in order_list" :value="item" :key="index">{{ item }}</Option>
+    </Select>
+        </FormItem>
+        <FormItem label='项目名称:'>
+         <Select v-model="searchData.project_title" style="width:150px" size='small' filterable multiple>
+        <Option v-for="(item,index) in projectList" :value="item" :key="index">{{ item }}</Option>
+        </Select>
+        </FormItem>
+        <FormItem>
+                <Button type="primary"
+                  size="small"
+                  @click="init">搜索</Button>
+        </FormItem>
+    </Form>
+    <Table 
+    :data='tableData'
+    :columns='tableColumns'
+    :max-height='550'
+    border>
+    <template slot="setSlot" slot-scope="{row}">
+         <a @click="goPageDetail(row)">详情</a>
+    </template>
+    </Table>
+    </div>
+     <div style="text-align:center">
+          <Page :page-size-opts="[10, 20, 30, 40,100]"
+                @on-page-size-change='changeSize'
+                @on-change='changePage'
+                :current='pageIndex'
+                show-total
+                :total="total"
+                show-sizer
+                :page-size='pageSize' />
+        </div>
+    <!-- <Modal title="表头设置" v-model="showTableSet" :width='700' @on-ok='tableSetSure'>
+        <div style="display:flex;margin:10px 0">
+             <Checkbox style="margin-right:50px"/>
+             <span style="margin-right:90px;width:60px">产品名称</span>
+             <Input style="width:120px;margin-right:40px" size="small"/>
+             <Select style="width:120px;margin-right:40px" size="small" v-model="tableSet[0].sort">
+                 <Option :value="1">升序</Option>
+                 <Option :value="2">降序</Option>
+             </Select>
+              <Select style="width:120px" size="small" v-model="tableSet[0].important">
+                 <Option :value="1">1</Option>
+                 <Option :value='2'>2</Option>
+                 <Option :value='3'>3</Option>
+             </Select>
+        </div>
+         <div style="display:flex;margin:10px 0">
+             <Checkbox style="margin-right:50px"/>
+             <span style="margin-right:90px;width:60px">计量单位</span>
+             <Input style="width:120px;margin-right:40px" size="small"/>
+           <Select style="width:120px;margin-right:40px" size="small" v-model="tableSet[1].sort">
+                 <Option :value="1">升序</Option>
+                 <Option :value="2">降序</Option>
+             </Select>
+              <Select style="width:120px" size="small" v-model="tableSet[1].important">
+                 <Option :value="1">1</Option>
+                 <Option :value='2'>2</Option>
+                 <Option :value='3'>3</Option>
+             </Select>
+        </div>
+         <div style="display:flex;margin:10px 0">
+             <Checkbox style="margin-right:50px"/>
+             <span style="margin-right:90px;width:60px">型号</span>
+             <Input style="width:120px;margin-right:40px" size="small"/>
+            <Select style="width:120px;margin-right:40px" size="small" v-model="tableSet[2].sort">
+                 <Option :value="1">升序</Option>
+                 <Option :value="2">降序</Option>
+             </Select>
+              <Select style="width:120px" size="small" v-model="tableSet[2].important">
+                 <Option :value="1">1</Option>
+                 <Option :value='2'>2</Option>
+                 <Option :value='3'>3</Option>
+             </Select>
+        </div>
+         <div style="display:flex;margin:10px 0">
+             <Checkbox style="margin-right:50px"/>
+             <span style="margin-right:90px;width:60px">图号</span>
+             <Input style="width:120px;margin-right:40px" size="small"/>
+             <Select style="width:120px;margin-right:40px" size="small" v-model="tableSet[3].sort">
+                 <Option :value="1">升序</Option>
+                 <Option :value="2">降序</Option>
+             </Select>
+              <Select style="width:120px" size="small" v-model="tableSet[3].important">
+                 <Option :value="1">1</Option>
+                 <Option :value='2'>2</Option>
+                 <Option :value='3'>3</Option>
+             </Select>
+        </div>
+         <div style="display:flex;margin:10px 0">
+             <Checkbox style="margin-right:50px"/>
+             <span style="margin-right:90px;width:60px">产品图片</span>
+             <Input style="width:120px;margin-right:40px" size="small"/>
+            <Select style="width:120px;margin-right:40px" size="small" v-model="tableSet[4].sort">
+                 <Option :value="1">升序</Option>
+                 <Option :value="2">降序</Option>
+             </Select>
+              <Select style="width:120px" size="small" v-model="tableSet[4].important">
+                 <Option :value="1">1</Option>
+                 <Option :value='2'>2</Option>
+                 <Option :value='3'>3</Option>
+             </Select>
+        </div>
+         <div style="display:flex;margin:10px 0">
+             <Checkbox style="margin-right:50px"/>
+             <span style="margin-right:90px;width:60px">图纸</span>
+             <Input style="width:120px;margin-right:40px" size="small"/>
+            <Select style="width:120px;margin-right:40px" size="small" v-model="tableSet[5].sort">
+                 <Option :value="1">升序</Option>
+                 <Option :value="2">降序</Option>
+             </Select>
+              <Select style="width:120px" size="small" v-model="tableSet[5].important">
+                 <Option :value="1">1</Option>
+                 <Option :value='2'>2</Option>
+                 <Option :value='3'>3</Option>
+             </Select>
+        </div>
+    </Modal> -->
+    </div>
+</template>
+<script>
+export default {
+    data(){
+        return{
+            // tableSet:[{sort:'',important:''},{sort:'',important:''},{sort:'',important:''},{sort:'',important:''},{sort:'',important:''},{sort:'',important:''}],
+            // showTableSet:false,
+            proxyData:{},
+            pageIndex:1,
+            pageSize:10,
+            total:0,
+            searchData:{
+               order_no:[],
+                project_title:[],
+            },
+            projectList:[],
+      order_list:[],
+       tableData:[],
+       tableColumns:[
+           {title:'项目编码',align:'center',minWidth:120,key:'order_no'},
+           {title:'项目名称',align:'center',minWidth:120,key:'project_title'},
+           {title:'图号',align:'center',minWidth:120,key:'url_number',ellipsis:true,tooltip:true},
+           {title:'未完工平方',align:'center',minWidth:120,key:'area'},
+           {title:'操作',align:'center',slot:'setSlot',minWidth:120},
+       ]
+        }
+    },
+    mounted(){
+        this.getData();
+    },
+    methods:{
+        getData(row){
+       this.axios.post('/api/notice_warning_list',{...row,page_size:this.pageSize,page_index:this.pageIndex}).then(res=>{
+          this.tableData = res.data.data;
+          this.total = res.data.total;
+          this.order_list = res.data.order_no_list;
+          this.projectList = res.data.project_title_list;
+       })
+        },
+        tableSetSure(){
+           console.log(this.tableSet)
+        },
+        init(){
+            let data = [];
+            data = JSON.parse(JSON.stringify(this.searchData));
+            this.pageIndex =1;
+            this.proxyData = data;
+            this.getData(data)
+        },
+        goPageDetail(row){
+             this.$router.push({path:'/cms/ErrorList/detail',query:{order_no:row.order_no}})
+        },
+        changeSize(e){
+             this.pageSize = e;
+             this.pageIndex =1;
+             this.getData(this.proxyData);
+        },
+        changePage(e){
+        this.pageIndex = e;
+        this.getData(this.proxyData);
+        }
+
+    }
+}
+</script>
+<style lang="scss" scoped>
+
+</style>

+ 15 - 5
src/views/HumanResources/otherValue.vue

@@ -1,12 +1,12 @@
 <template>
     <div>
-        <Toptitle title="其他产值表">
+        <Toptitle title="报工单">
             <Button type="primary" @click="handleSet(null,1)">新增</Button>
         </Toptitle>
         <div style="height:85%;overflow:auto">
             <Form :label-width='100' style="display:flex;flex-wrap:wrap;margin-top:10px">
                 <FormItem label='日期:'>
-                    <DatePicker type='date' v-model="searchData.datetime" style="width:200px" placeholder="年/月/日"></DatePicker>
+                    <DatePicker type='date' v-model="searchData.datetime" style="width:200px" placeholder="年/月/日"  @on-change='(e)=>(datetime=e)'></DatePicker>
                 </FormItem>
                 <FormItem label='审核状态:'>
                     <Select clearable v-model="searchData.state" style="width:200px">
@@ -20,8 +20,8 @@
             </Form>
             <Table :data='tableData' :columns='tableColumns' border max-height='550'>
                 <template slot="set" slot-scope="{row}">
-                    <a style="margin-right:20px" @click="handleSet(row,2)">编辑</a>
-                    <a @click="handleSet(row,3)" style="margin-right:10px">删除</a>
+                    <a style="margin-right:20px" @click="handleSet(row,2)" v-show="row.state==0||row.state==-1">编辑</a>
+                    <a @click="handleSet(row,3)" style="margin-right:10px" v-show="row.state!=1">删除</a>
                      <a v-show="row.state==0&&status" @click="handleAuditing(row)">审核</a>
                 <a v-show="row.state==1&&status" @click="handleAuditing(row)">弃审</a>
                 </template>
@@ -88,6 +88,7 @@
 export default {
     data(){
         return{
+          datetime:'',
             procedureList:[],
             status:false,
             searchData:{
@@ -127,7 +128,15 @@ export default {
         }
     },
     mounted(){
+         if(this.keep){
+        this.start_time = this.proxyData.start_time;
+        this.end_time = this.proxyData.end_time;
+        this.initData(this.proxyData);
+
+       }else{
         this.initData();
+       }
+        
         //获取modal展示信息
         this.axios.post('/api/finance_sub_employee_by_procedure').then(res=>{
               this.modalList = res.data;
@@ -139,7 +148,7 @@ export default {
     },
     methods:{
           handleAuditing(row){
-       this.axios.post('/api/auditing',{type:1,datetime:row.datetime,state:row.state==0?1:0}).then(res=>{
+       this.axios.post('/api/auditing',{type:1,datetime:row.datetime,state:row.state==0?1:0,id:row.id}).then(res=>{
         if(res.code==200){
             this.$Message.success(res.msg);
             this.initData(this.proxyData);
@@ -149,6 +158,7 @@ export default {
         handleSearch(){
              let obj  = JSON.parse(JSON.stringify(this.searchData));
              this.proxyData = obj;
+             this.proxyData.datetime = this.datetime;
              this.initData(this.proxyData);
         },
         handleSure(){

+ 49 - 6
src/views/HumanResources/shopAttence.vue

@@ -4,8 +4,8 @@
         <div style="height:85%;overflow:auto">
         <Form class="form_content">
             <FormItem label='日期:' style="display:flex;flex-wrap:wrap">
-                <DatePicker type='date' v-model="searchData.start_time" placeholder='年/月/日' class="form_item"></DatePicker>~
-                <DatePicker type='date' v-model="searchData.end_time" placeholder='年/月/日' class='from_item'></DatePicker>
+                <DatePicker type='date' v-model="searchData.start_time" placeholder='年/月/日' class="form_item" @on-change='(e)=>(start_time=e)' from></DatePicker>~
+                <DatePicker type='date' v-model="searchData.end_time" placeholder='年/月/日' class='from_item' @on-change='(e)=>(end_time=e)'></DatePicker>
              </FormItem>
              <FormItem :label-width='40'>
                 <Button type="primary" @click="handleSearch">搜索</Button>
@@ -13,7 +13,7 @@
         </Form>
         <Table :data='tableData' :columns='tableColumns' border max-height='550' v-show="search_state">
             <template slot="set" slot-scope="{row}">
-                <a style="margin-right:10px" @click="handleSet(row,1)">编辑</a>
+                <a style="margin-right:10px" @click="handleSet(row,1)" v-show="row.state==0||row.state==-1">编辑</a>
                 <a style="margin-right:10px" @click="handleSet(row,2)">详情</a>
                 <a v-show="row.state==0&&status" @click="handleAuditing(row)">审核</a>
                 <a v-show="row.state==1&&status" @click="handleAuditing(row)">弃审</a>
@@ -36,6 +36,9 @@
 export default {
     data(){
         return{
+            start_time:'',
+            end_time:'',
+            keep:false,
             status:false,
             search_state:false,
             proxyData:{},
@@ -61,18 +64,56 @@ export default {
         }
     },
     mounted(){
-       
+       if(this.keep){
+        this.start_time = this.proxyData.start_time;
+        this.end_time = this.proxyData.end_time;
+        this.searchData.start_time = this.proxyData.start_time;
+        this.searchData.end_time = this.proxyData.end_time;
+        this.initData(this.proxyData);
+
+       }else{
+         let month = new Date().getMonth()+1;
+         let year = new Date().getFullYear();
+         let date = new Date().getDate();
+        this.start_time = `${year}-${month}-${date}`;
+       this.end_time = `${year}-${month}-${date}`;
+       }
     },
       beforeRouteLeave(to, from, next) {
     if (
       to.path == "/cms/HumanResources/shopAttenceDetail"
     ) {
+        localStorage.setItem('proxyData',JSON.stringify(this.proxyData));
+        localStorage.setItem('pageIndex',this.pageIndex);
+        localStorage.setItem('pageSize',this.pageSize);
+        localStorage.setItem('searchData',JSON.stringify(this.searchData));
       next();
     } else {
-      from.meta.keepAlive = false;
+        if(this.keep){
+             localStorage.removeItem('proxyData');
+        localStorage.removeItem('pageIndex');
+        localStorage.removeItem('pageSize');
+        localStorage.removeItem('searchData');
+        }
       next();
     }
       },
+      beforeRouteEnter(to,from,next){
+           if(from.path==='/cms/HumanResources/shopAttenceDetail'){
+               next(vm=>{
+                vm.keep = true;
+                vm.pageSize = localStorage.getItem('pageSize')*1;
+                vm.pageIndex = localStorage.getItem('pageIndex')*1;
+                vm.searchData = JSON.parse(localStorage.getItem('searchData'));
+                vm.proxyData = JSON.parse(localStorage.getItem('proxyData'));
+                if(Object.keys(JSON.parse(localStorage.getItem('proxyData'))).length!=0){
+                    vm.search_state = true;
+                }
+               })
+           }else{
+            next()
+           }
+      },
     methods:{
         handleAuditing(row){
        this.axios.post('/api/auditing',{type:2,datetime:row.datetime,state:row.state==0?1:0,procedure_id:row.procedure_id}).then(res=>{
@@ -97,7 +138,9 @@ export default {
             }
               let obj = JSON.parse(JSON.stringify(this.searchData));
               this.proxyData = obj;
-              this.initData(obj);
+              this.proxyData.start_time = this.start_time;
+              this.proxyData.end_time = this.end_time;
+              this.initData(this.proxyData);
               this.search_state = true;
         },
         initData(row){

+ 4 - 0
src/views/HumanResources/shopAttenceDetail.vue

@@ -185,6 +185,10 @@ export default {
     this.axios.post('/api/finance_procedure_employee_details_detail',{...row,datetime:this.$route.query.datetime,procedure_id:this.$route.query.procedure_id}).then(res=>{
         this.tableData = res.data.data;
         this.tableData.forEach(v=>{
+            v.detail.forEach(val=>{
+                val.id = val.sub_employee_id;
+            })
+            
             if(v.detail.length==0){
                 v._disableExpand = true;
                  v._expanded = false;

+ 36 - 32
src/views/MatchChange/change.vue → src/views/MatchChange/BSTchange.vue

@@ -33,16 +33,14 @@
         >返回</Button
       >
     </Toptitle>
-    <Row style="padding: 10px; font-size: 18px">
-      <Col span="4">
-        <span>项目编号:</span><span>{{ project_number }}</span>
-      </Col>
-      <Col span="4">
-        <span>项目名称:</span><span>{{ project_name }}</span>
-      </Col>
-      <Col span="4">
-        <span>图号:</span>
-        <span>
+    <Form :label-width='120' style="display:flex;flex-wrap:wrap;margin-top:10px">
+      <FormItem label='项目编号:'>
+        <span>{{ project_number }}</span>
+      </FormItem>
+      <FormItem  label='项目名称:'>
+        <span>{{ project_name }}</span>
+      </FormItem>
+      <FormItem label='图号:'>
           <Select
             filterable
             multiple
@@ -61,11 +59,12 @@
               :value="item"
             ></Option>
           </Select>
-        </span>
-      </Col>
-      <Col span="4">
-        <span>产品名称:</span>
-        <span>
+      </FormItem>
+       <FormItem label='图号批量查询:'>
+                  <Input clearable v-model="matchedInfo.url_numbers" placeholder="请输入" size="small"
+            style="width: 150px"/>
+      </FormItem>
+      <FormItem label='产品名称:'>
           <Select
             filterable
             multiple
@@ -84,11 +83,8 @@
               :value="item.id"
             ></Option>
           </Select>
-        </span>
-      </Col>
-      <Col span="4">
-        <span>区域名称:</span>
-        <span>
+      </FormItem>
+      <FormItem label='区域名称:'>
           <Select
             filterable
             multiple
@@ -107,14 +103,13 @@
               :value="item"
             ></Option>
           </Select>
-        </span>
-      </Col>
-      <Col span="2">
+      </FormItem>
+      <FormItem :label-width='40'>
         <Button @click="initData(matchedInfo)" size="small" type="primary">
           搜索
         </Button>
-      </Col>
-    </Row>
+      </FormItem>
+    </Form>
     <div class="context-tabs">
       <div
         v-for="(matched_info, index) in matchedList"
@@ -459,6 +454,7 @@ export default {
         url_number: [],
         product_id: [],
         layer: [],
+        url_numbers:''
       },
       searchData: {
         number: [],
@@ -479,6 +475,13 @@ export default {
           resizable: true,
           minWidth: 80,
         },
+         {
+          title: "行号",
+          align: "center",
+          key: "sort",
+          resizable: true,
+          minWidth: 120,
+        },
         {
           title: "区域名称",
           align: "center",
@@ -528,19 +531,19 @@ export default {
           slot: "skin_area",
         },
         {
-          title: "行号",
-          align: "center",
-          key: "sort",
-          resizable: true,
-          minWidth: 170,
-        },
-        {
           title: "精裁尺寸",
           align: "center",
           resizable: true,
           width: 150,
           slot: "measure",
         },
+        {
+          title:"毛料尺寸",
+          align:'center',
+          resizable:true,
+          width:150,
+          key:"wool_size"
+        }
       ], //匹配表头
       process_man: "",
       processManList: [],
@@ -703,6 +706,7 @@ export default {
         obj.compose_name = v.compose_name;
         obj.ext_1 = v.ext_1;
         obj.skin_area = v.skin_area;
+        obj.wool_size = v.wool_size;
         json.push(obj);
       });
       this.axios

+ 1076 - 0
src/views/MatchChange/BSTcheck.vue

@@ -0,0 +1,1076 @@
+<template>
+  <div>
+    <Toptitle title="查看">
+      <Button
+        @click="handleMatchedSelectAll()"
+        type="primary"
+        :ghost="!isMatchedSelectAll"
+        style="margin-right: 10px"
+        >{{ isMatchedSelectAll ? "取消选中" : "全部选中" }}</Button
+      >
+       <Button type="primary" style="margin-right: 10px" @click="print_chip"
+        >打印芯片</Button
+      >
+       <!-- <Button type="primary" style="margin-right: 10px" @click="test"
+        >测试查看</Button
+      > -->
+      <Button @click="back" type="primary" ghost style="margin-right: 10px"
+        >返回</Button
+      >
+    </Toptitle>
+    <Row style="padding: 10px;font-size: 18px;">
+      <Col span="6">
+        <span>项目编号:</span><span>{{ project_number }}</span>
+      </Col>
+      <Col span="6">
+        <span>项目名称:</span><span>{{ project_name }}</span>
+      </Col>
+    </Row>
+    <div class="context-tabs">
+      <Row type="flex" align="middle" style="padding:10px 0">
+        <Col span="4">
+          <span>图号:</span>
+          <span>
+            <Select
+              filterable
+              multiple
+              filter-by-label
+              clearable
+              transfer
+              v-model="matchedInfo.url_number"
+              :max-tag-count="2"
+              size="small"
+              style="width: 150px"
+            >
+              <Option
+                v-for="(item, index) in urlMatchedList"
+                :key="index"
+                :label="item"
+                :value="item"
+              ></Option>
+            </Select>
+          </span>
+        </Col>
+        <Col span="5">
+        <span>图号批量查询:</span>
+        <span>
+          <Input clearable v-model="matchedInfo.url_numbers" placeholder="请输入" size="small"
+            style="width: 150px"/>
+        </span>
+      </Col>
+        <Col span="5">
+          <span>产品名称:</span>
+          <span>
+            <Select
+              filterable
+              multiple
+              filter-by-label
+              clearable
+              transfer
+              v-model="matchedInfo.product_id"
+              :max-tag-count="2"
+              size="small"
+              style="width: 150px"
+            >
+              <Option
+                v-for="(item,index) in productMatchedList"
+                :key="index"
+                :label="item.title"
+                :value="item.id"
+              ></Option>
+            </Select>
+          </span>
+        </Col>
+          <Col span="5">
+          <span>区域名称:</span>
+          <span>
+            <Select
+              filterable
+              multiple
+              filter-by-label
+              clearable
+              transfer
+              v-model="matchedInfo.layer"
+              :max-tag-count="2"
+              size="small"
+              style="width: 150px"
+            >
+              <Option
+                v-for="(item, index) in layerList"
+                :key="index"
+                :label="item"
+                :value="item"
+              ></Option>
+            </Select>
+          </span>
+        </Col>
+        <Col span="2">
+          <Button @click="initData(matchedInfo)" size="small" type="primary">
+            搜索
+          </Button>
+        </Col>
+      </Row>
+      <div
+        v-for="(matched_info,index) in matchedList"
+        :key="index"
+        class="matched-block"
+      >
+        <Row type="flex" justify="space-between" align="top">
+          <Col style="display:flex;justify-content: space-around;">
+              <Checkbox
+                v-model="matched_info.isSelect"
+                @on-change="(e) => handleMatchedSelect(matched_info, e)"
+                >选择</Checkbox
+              >
+            <span>图号:{{ matched_info.url_number }}</span>
+          </Col>
+          <Col span="3">
+            <span>产品名称:{{ matched_info.product_title }}</span>
+          </Col>
+          <Col span="3">
+            <span>区域:{{ matched_info.layer }}</span>
+          </Col>
+          <Col style="display:flex;justify-content: space-between;" span="8">
+            <div>
+              总计
+              <span style="color:red">{{ matched_info.total }}</span>
+              条数据
+            </div>
+            <div>
+              <Button
+                @click="handleShowCurrencyMatched(matched_info,index)"
+                size="small"
+                type="text"
+                >{{ matched_info.isCurrenct ? "收缩" : "展开" }}</Button
+              >
+              <Icon
+                size="20"
+                :type="
+                  matched_info.isCurrenct
+                    ? 'md-arrow-dropdown'
+                    : 'md-arrow-dropright'
+                "
+                style="vertical-align: middle;"
+              />
+            </div>
+          </Col>
+        </Row>
+        <Row style="margin-top:20px" v-if="matched_info.isCurrenct">
+          <Col span="4">
+            <span>房号:</span>
+            <span>
+              <Select
+                filterable
+                multiple
+                transfer
+                clearable
+                filter-by-label
+                v-model="matchedInfoDetail.number"
+                :max-tag-count="2"
+                size="small"
+                style="width: 150px"
+              >
+                <Option
+                  v-for="(item, index) in numberMatchedList"
+                  :key="index"
+                  :label="item.number"
+                  :value="item.number"
+                ></Option>
+              </Select>
+            </span>
+          </Col>
+           <Col span="4">
+            <span>行号:</span>
+            <span>
+              <Select
+                filterable
+                multiple
+                transfer
+                clearable
+                filter-by-label
+                v-model="matchedInfoDetail.sort"
+                :max-tag-count="2"
+                size="small"
+                style="width: 150px"
+              >
+                <Option
+                  v-for="(item, index) in sortList"
+                  :key="index"
+                  :label="item"
+                  :value="item"
+                ></Option>
+              </Select>
+            </span>
+          </Col>
+           <Col span="4">
+            <span>组合名称:</span>
+            <span>
+              <Select
+                filterable
+                multiple
+                transfer
+                clearable
+                filter-by-label
+                v-model="matchedInfoDetail.compose_name"
+                :max-tag-count="2"
+                size="small"
+                style="width: 150px"
+              >
+                <Option
+                  v-for="(item, index) in compose_name_list"
+                  :key="index"
+                  :label="item"
+                  :value="item"
+                ></Option>
+              </Select>
+            </span>
+          </Col>
+          <Col span="4">
+            <span>部件名称:</span>
+            <span>
+              <Select
+                filterable
+                multiple
+                transfer
+                clearable
+                filter-by-label
+                v-model="matchedInfoDetail.parts_id"
+                :max-tag-count="2"
+                size="small"
+                style="width: 150px"
+              >
+                <Option
+                  v-for="(item, index) in partNameMatchedList"
+                  :key="index"
+                  :label="item.title"
+                  :value="item.id"
+                ></Option>
+              </Select>
+            </span>
+          </Col>
+          <Col span="2">
+            <Button
+              @click="getMatchedDetailList(matched_info,matchedInfoDetail)"
+              size="small"
+              type="primary"
+            >
+              搜索
+            </Button>
+          </Col>
+        </Row>
+        <div v-if="matched_info.isCurrenct">
+            <Table
+              :columns="matchedSheetTableColumns"
+              border
+              :max-height="500"
+              :data="matchedDetailList"
+              @on-select='select'
+              @on-select-cancel='selectCancel'
+              ref='table'
+              @on-select-all='selectAll($event,null,1)'
+              @on-select-all-cancel='selectAllCancel($event,null,1)'
+            >
+            </Table>
+            <span>总计{{matchedDetailList.length?matchedDetailList.length:0}}条记录</span>
+        </div>
+      </div>
+    </div>
+    <Modal v-model="processModal" title="下生产">
+      <div>
+        <div class="process_modal">
+          <span>生产人员:</span>
+          <Select
+            v-model="process_man"
+            filterable
+            filter-by-label
+            clearable
+            style="width: 150px"
+          >
+            <Option
+              v-for="(item,index) in processManList"
+              :key="index"
+              :label="item.nickname"
+              :value="item.id"
+            ></Option>
+          </Select>
+        </div>
+        <div class="process_modal">
+          <span>选择时间:</span>
+          <DatePicker
+            type="date"
+            v-model="process_start_time"
+            placeholder="年/月/日"
+            style="width: 150px"
+          ></DatePicker>
+          至
+          <DatePicker
+            type="date"
+            v-model="process_end_time"
+            placeholder="年/月/日"
+            style="width: 150px"
+          ></DatePicker>
+        </div>
+      </div>
+      <div slot="footer">
+        <Button
+          @click="processModal = false"
+          type="primary"
+          ghost
+          style="margin-right: 10px"
+          >取消</Button
+        >
+        <Button
+          @click="handleProcess"
+          type="primary"
+          style="margin-right: 10px"
+          :disabled="process_control"
+          >确定</Button
+        >
+      </div>
+    </Modal>
+    <Modal v-model="showDel" title="" @on-ok='important_del' :closable='false' style="text-align:center" :width='20'>
+      <div style="margin-top:30px"><span style="margin-right:10px">用户:</span><Input v-model="delData.user_name" style="width:70%"></Input></div>
+      <div style="margin-top:30px"><span style="margin-right:10px">密码:</span><Input v-model="delData.password" style="width:70%"></Input></div>
+    </Modal>
+  </div>
+</template>
+
+<script>
+// 这里可以导入其他文件(比如:组件,工具js,第三方插件js,json文件,图片文件等等)
+// 例如:import 《组件名称》 from '《组件路径》';
+import $ from "jquery";
+import { ContainerMixin } from 'vue-slicksort';
+export default {
+  name: "",
+  components: {},
+  props: {},
+  // import引入的组件需要注入到对象中才能使用
+  data() {
+    // 这里存放数据
+    return {
+      compose_name_list:[],
+      sortList:[],
+      delData:{
+        user_name:'',
+        password:'',
+      },
+      layerList:[],
+      project_number: this.$route.query.project_number,
+      project_name: this.$route.query.project_name,
+      isMatchedSelectAll: false,
+      matchedInfoDetail:{
+        compose_name:[],
+         sort:[],
+         parts_id:[],
+         number:[]
+      },
+      matchedInfo: {
+        url_number: [],
+        product_id: [],
+        layer:[],
+        url_numbers:'',
+      },
+      urlMatchedList: [],
+      productMatchedList: [],
+      regionMatchedList: [],
+      numberMatchedList: [],
+      partNameMatchedList: [],
+      matchedDetailList: [],
+      matchedList: [],
+      matchedSheetTableColumns: [
+        {type:'selection',align:'center',width:60},
+        { title: "序号", align: "center", type: "index", resizable: true,
+                        minWidth: 80 },
+                          { title: "行号", align: "center", key: "sort",  resizable: true,
+                        minWidth: 120 },
+        { title: "区域名称", align: "center", key: "area",  resizable: true,
+                        minWidth: 160 },
+        { title: "房号", align: "center", key: "number",  resizable: true,
+                        minWidth: 160 },
+        { title: "组合名称", align: "center", key:'compose_name', resizable: true,
+                        minWidth: 100 },
+        { title: "部件名称", align: "center", key: "part_title",  resizable: true,
+                        minWidth: 180 },
+                { title: "精裁面积", align: "center", key: "ext_1",  resizable: true,
+                        minWidth: 150 },
+                         { title: "贴皮面积", align: "center", key: "skin_area",  resizable: true,
+                        minWidth: 150 },         
+        {
+          title: "精裁尺寸",
+          align: "center",
+          resizable: true,
+                        minWidth: 150,
+          render: (h, params) => {
+            return h("span", {}, params.row.measure);
+          },
+         }, 
+         {
+          title:"毛料尺寸",
+          align:'center',
+          resizable:true,
+          width:150,
+          key:"wool_size"
+        },
+         { title: "打印芯片", align: "center", key: "chip_state",  resizable: true,
+                        minWidth: 100 ,  render: (h, params) => {
+            return h("span", {}, params.row.chip_state==0?'否':'是');
+          }},
+           { title: "工艺要求", align: "center", key: "remark",  resizable: true,
+                        minWidth: 180 },
+          { title: "操作", align: "center", key: "set",  resizable: true,
+                        minWidth: 180 ,render:(h,params)=>{
+                          const {row} = params;
+                          return h('a',{on:{'click':()=>{
+                                this.print_chip(row,1)
+                          }}},'打印芯片')
+                        }},
+      ], //匹配表头
+      processModal: false,
+      process_man: "",
+      processManList: [],
+      process_start_time: "",
+      process_end_time: "",
+      process_control: false,
+      cut_order_product_ids: [],
+      matchedSelectedList: [],
+      delList:[],
+      showDel:false,
+      selectIndex:'',
+      selectArr:[],
+    };
+  },
+  // 生命周期 - 创建完成(可以访问当前this实例)
+  created() {
+    this.axios("/api/user").then(
+      (res) => (this.processManList = res.data.data)
+    );
+  },
+  // 生命周期 - 挂载完成(可以访问DOM元素)
+  mounted() {
+    this.initData();
+  },
+  methods: {
+    test(){
+  console.log(this.selectArr)
+    },
+    selectAll(selection,arr,type){
+     let ids =[];
+     if(arr){
+   arr.forEach(m=>{
+     ids.push(m.id)
+   })
+     }else{
+        this.matchedDetailList.forEach(m=>{
+          ids.push(m.id)
+      })}
+      for(let i =0;i<this.matchedSelectedList.length;i++){
+       if(ids.indexOf(this.matchedSelectedList[i].id)>=0){
+         this.matchedSelectedList.splice(i,1);
+         i--;
+       }
+     }
+     if(arr){
+        this.matchedSelectedList.push(...arr);
+     }else{
+     this.matchedSelectedList.push(...this.matchedDetailList);}
+     
+     if(typeof this.selectIndex === 'number'){
+      let ids = [];
+      if(type){
+     this.matchedList[this.selectIndex].isSelect = true;
+     this.selectArr.forEach(v=>{
+        ids.push(v.id)
+     })
+     if(ids.indexOf(this.matchedList[this.selectIndex].id)<0){
+     this.selectArr.push(this.matchedList[this.selectIndex]);}
+     }}
+     this.$forceUpdate();
+    },
+    selectAllCancel(selection,arr,type){
+      let ids =[];
+      if(arr){
+        arr.forEach(v=>{
+           ids.push(v.id)
+        })
+      }else{
+        this.matchedDetailList.forEach(m=>{
+          ids.push(m.id)
+      })}
+       console.log(ids);
+     for(let i =0;i<this.matchedSelectedList.length;i++){
+       if(ids.indexOf(this.matchedSelectedList[i].id)>=0){
+         this.matchedSelectedList.splice(i,1);
+         i--;
+       }
+     }
+
+      // this.matchedSelectedList.forEach((v,index)=>{
+      //   if(ids.indexOf(v.id)>=0){
+      //     this.matchedSelectedList.splice(index,1);
+      //     index--;
+      //     console.log(this.matchedSelectedList)
+      //   }
+      // })
+    
+     if(typeof this.selectIndex === 'number'){
+      if(type){
+       this.matchedList[this.selectIndex].isSelect = false;
+       this.selectArr.forEach((m,index)=>{
+         if(m.id == this.matchedList[this.selectIndex].id){
+           this.selectArr.splice(index,1);
+         }
+       })}
+       this.$forceUpdate();
+     }
+    },
+    select(selection,row){
+      let ids = [];
+      this.matchedSelectedList.forEach(v=>{
+       ids.push(v.id)
+      })
+      if(ids.indexOf(row.id)<0){
+        this.matchedSelectedList.push(row);
+      }
+       console.log(selection)
+       if(selection.length == this.matchedDetailList.length){
+         this.matchedList[this.selectIndex].isSelect = true;
+         this.selectArr.push(this.matchedList[this.selectIndex]);
+         this.$forceUpdate();
+       }else{
+         this.matchedList[this.selectIndex].isSelect = false;
+          this.selectArr.forEach((m,index)=>{
+         if(m.id == this.matchedList[this.selectIndex].id){
+           this.selectArr.splice(index,1);
+         }
+       })
+         this.$forceUpdate();
+       }
+       console.log(this.matchedSelectedList);
+    },
+    selectCancel(selection,cancelRow){
+    //  this.matchedList[this.selectIndex].isSelect = false;
+      this.matchedSelectedList.forEach((v,index)=>{
+        if(v.id == cancelRow.id){
+          this.matchedSelectedList.splice(index,1)
+        }
+      })
+        if(selection.length == this.matchedDetailList.length){
+         this.matchedList[this.selectIndex].isSelect = true;
+         this.$forceUpdate();
+       }else{
+         this.matchedList[this.selectIndex].isSelect = false;
+           this.selectArr.forEach((m,index)=>{
+         if(m.id == this.matchedList[this.selectIndex].id){
+           this.selectArr.splice(index,1);
+         }
+       })
+         this.$forceUpdate();
+       }
+      console.log(this.matchedSelectedList)
+    },
+     hexCharCodeToStr(hexCharCodeStr) {
+     let trimedStr = hexCharCodeStr.trim();
+     let rawStr = trimedStr.substr(0,2).toLowerCase() === "0x"?trimedStr.substr(2):trimedStr;
+     let len = rawStr.length;
+      if(len % 2 !== 0) {
+        alert("Illegal Format ASCII Code!");
+        return "";}
+       let curCharCode;
+       let resultStr = [];
+       for(var i = 0; i < len;i = i + 2) {
+        curCharCode = parseInt(rawStr.substr(i, 2), 16); // ASCII Code Value
+          resultStr.push(String.fromCharCode(curCharCode));
+       }
+       return resultStr.join("");
+},
+      handlePrintChipsUsb(contents, type) {
+        console.log(contents)
+      this.axios.get("/api/get_print_url").then((res) => {
+        let data = {};
+        // let url = "http://192.168.0.145:888/postek/print"; //request_url
+        let url = `http://${res.data.request_url}:888/postek/print`; //request_url
+        data.reqParam = "1"; //这个一般不用改,如需改,查api
+        let printparamsJsonArray = [];
+        // let IP = "192.168.1.58";//print_url
+        // let IP = "192.168.0.199"; //print_url
+        printparamsJsonArray.push({ PTK_OpenUSBPort: 255 });
+        printparamsJsonArray.push({ PTK_ClearBuffer: "" });
+        printparamsJsonArray.push({ PTK_SetDirection: "B" });
+        printparamsJsonArray.push({ PTK_SetPrintSpeed: "4" });
+        printparamsJsonArray.push({ PTK_SetDarkness: "10" });
+        printparamsJsonArray.push({
+          PTK_SetLabelHeight: 624 + "," + 24 + ",0,false",
+        });
+        printparamsJsonArray.push({ PTK_SetLabelWidth: 1080 });
+        // 打印类型 1江山 2贝斯特
+        if (type == 1) {
+          contents.map((content) => {
+            //江山打印格式
+            //上
+            const printContent_l1 = `单号:${content.order_no}`;
+            printparamsJsonArray.push({
+              PTK_DrawText_TrueType:
+                "100,40,60,0,微软雅黑,1,700,0,0,0," + printContent_l1,
+            });
+            const printContent_l1_2 = `型号:${content.product_title}`;
+            printparamsJsonArray.push({
+              PTK_DrawText_TrueType:
+                "600,40,60,0,微软雅黑,1,700,0,0,0," + printContent_l1_2,
+            });
+            const printContent_l2 = `尺寸:${content.measure}`;
+            printparamsJsonArray.push({
+              PTK_DrawText_TrueType:
+                "100,110,60,0,微软雅黑,1,700,0,0,0," + printContent_l2,
+            });
+            const printContent_l2_2 = `工艺:${content.process_title}`;
+            printparamsJsonArray.push({
+              PTK_DrawText_TrueType:
+                "600,110,60,0,微软雅黑,1,700,0,0,0," + printContent_l2_2,
+            });
+            const printContent_l3 = `颜色:${content.color_title}`;
+            printparamsJsonArray.push({
+              PTK_DrawText_TrueType:
+                "100,250,60,0,微软雅黑,1,700,0,0,0," + printContent_l3,
+            });
+            const printContent_l3_2 = `部件:${content.part_title}`;
+            printparamsJsonArray.push({
+              PTK_DrawText_TrueType:
+                "100,180,60,0,微软雅黑,1,700,0,0,0," + printContent_l3_2,
+            });
+            //下
+            printparamsJsonArray.push({
+              PTK_DrawText_TrueType:
+                "100,435,45,0,微软雅黑,1,700,0,0,0," + printContent_l1,
+            });
+            printparamsJsonArray.push({
+              PTK_DrawText_TrueType:
+                "600,435,45,0,微软雅黑,1,700,0,0,0," + printContent_l1_2,
+            });
+            printparamsJsonArray.push({
+              PTK_DrawText_TrueType:
+                "100,480,45,0,微软雅黑,1,700,0,0,0," + printContent_l2,
+            });
+            printparamsJsonArray.push({
+              PTK_DrawText_TrueType:
+                "600,480,45,0,微软雅黑,1,700,0,0,0," + printContent_l2_2,
+            });
+            printparamsJsonArray.push({
+              PTK_DrawText_TrueType:
+                "100,525,45,0,微软雅黑,1,700,0,0,0," + printContent_l3,
+            });
+            printparamsJsonArray.push({
+              PTK_DrawText_TrueType:
+                "600,525,45,0,微软雅黑,1,700,0,0,0," + printContent_l3_2,
+            });
+            printparamsJsonArray.push({
+              PTK_RWRFIDLabel:
+                "1,0,0," + content.chip.length / 2 + ",1," + content.chip,
+            });
+            printparamsJsonArray.push({ PTK_PrintLabel: "1,1" });
+          });
+        } else {
+          contents.map((content) => {
+            //贝斯特打印格式
+            //上
+            const printContent_l1 = `项目:${content.client_name}`;
+            printparamsJsonArray.push({
+              PTK_DrawText_TrueType:
+                "150,40,60,0,微软雅黑,1,700,0,0,0," + printContent_l1,
+            });
+            const printContent_l1_2 = `区域:${
+              content.house ? content.house + "-" : ""
+            }${content.layer ? content.layer : ""}${
+              content.position ? content.position : ""
+            }`;
+            printparamsJsonArray.push({
+              PTK_DrawText_TrueType:
+                "650,40,60,0,微软雅黑,1,700,0,0,0," + printContent_l1_2,
+            });
+            const printContent_l2 = `房号:${content.number_detail}`;
+            printparamsJsonArray.push({
+              PTK_DrawText_TrueType:
+                "150,110,60,0,微软雅黑,1,700,0,0,0," + printContent_l2,
+            });
+            const printContent_l2_2 = `产品:${content.product_title}`;
+            printparamsJsonArray.push({
+              PTK_DrawText_TrueType:
+                "650,110,60,0,微软雅黑,1,700,0,0,0," + printContent_l2_2,
+            });
+            const printContent_l3 = `图号:${content.url_number}`;
+            printparamsJsonArray.push({
+              PTK_DrawText_TrueType:
+                "150,180,60,0,微软雅黑,1,700,0,0,0," + printContent_l3,
+            });
+            const printContent_l3_2 = `部件:${content.part_title}`;
+            printparamsJsonArray.push({
+              PTK_DrawText_TrueType:
+                "650,180,60,0,微软雅黑,1,700,0,0,0," + printContent_l3_2,
+            });
+            const printContent_l4 = `木皮:${content.color_title}`;
+            printparamsJsonArray.push({
+              PTK_DrawText_TrueType:
+                "150,320,60,0,微软雅黑,1,700,0,0,0," + printContent_l4,
+            });
+            const printContent_l4_2 = `尺寸:${content.measure}`;
+            printparamsJsonArray.push({
+              PTK_DrawText_TrueType:
+                "150,250,60,0,微软雅黑,1,700,0,0,0," + printContent_l4_2,
+            });
+            let space_str = '\u0000'
+             let printContent_l5_data=this.hexCharCodeToStr(content.chip);
+             printContent_l5_data = printContent_l5_data.replace(space_str,'')
+             const printContent_l5 = `芯片编码:${printContent_l5_data}`;
+            //  console.log(printContent_l5_data)
+            printparamsJsonArray.push({
+              PTK_DrawText_TrueTypeEx:
+                "970,330,25,0,微软雅黑,1,700,0,0,0,10,0,0,0," + printContent_l5,
+            });
+            //下
+            printparamsJsonArray.push({
+              PTK_DrawText_TrueType:
+                "150,435,45,0,微软雅黑,1,700,0,0,0," + printContent_l1,
+            });
+            printparamsJsonArray.push({
+              PTK_DrawText_TrueType:
+                "650,435,45,0,微软雅黑,1,700,0,0,0," + printContent_l1_2,
+            });
+            printparamsJsonArray.push({
+              PTK_DrawText_TrueType:
+                "150,480,45,0,微软雅黑,1,700,0,0,0," + printContent_l2,
+            });
+            printparamsJsonArray.push({
+              PTK_DrawText_TrueType:
+                "650,480,45,0,微软雅黑,1,700,0,0,0," + printContent_l2_2,
+            });
+            printparamsJsonArray.push({
+              PTK_DrawText_TrueType:
+                "150,525,45,0,微软雅黑,1,700,0,0,0," + printContent_l3,
+            });
+            printparamsJsonArray.push({
+              PTK_DrawText_TrueType:
+                "650,525,45,0,微软雅黑,1,700,0,0,0," + printContent_l3_2,
+            });
+            printparamsJsonArray.push({
+              PTK_DrawText_TrueType:
+                "150,570,45,0,微软雅黑,1,700,0,0,0," + printContent_l4,
+            });
+            printparamsJsonArray.push({
+              PTK_DrawText_TrueType:
+                "650,570,45,0,微软雅黑,1,700,0,0,0," + printContent_l4_2,
+            });
+              printparamsJsonArray.push({
+              PTK_DrawText_TrueTypeEx:
+                "970,530,25,0,微软雅黑,1,700,0,0,0,10,0,0,0," + printContent_l5,
+            });
+            // 17,35 420
+            printparamsJsonArray.push({
+              PTK_RWRFIDLabel:
+                "1,0,0," + content.chip.length / 2 + ",1," + content.chip,
+            });
+            printparamsJsonArray.push({ PTK_PrintLabel: "1,1" });
+          });
+        }
+        printparamsJsonArray.push({ PTK_CloseUSBPort: "" });
+        data.printparams = printparamsJsonArray;
+        let sub_data = JSON.parse(JSON.stringify(data));
+        sub_data.printparams = JSON.stringify(sub_data.printparams);
+        let _this = this;
+        $.ajax({
+          type: "post",
+          url,
+          data: sub_data,
+          dataType: "json",
+          timeout: 5000,
+          success: function(result) {
+            // _this.getChipDetail();
+            if (result.retval == "0") {
+              _this.$Message.success("发送成功");
+            } else {
+              _this.$Message.error("发送失败,返回结果:" + result.msg);
+            }
+          },
+          error: function() {
+            // _this.getChipDetail();
+          },
+        });
+      });
+    },
+    print_chip(row,type){
+
+        if(type){
+               this.axios.post('/api/station_print',{matching_type:1,id:row.id,num:1,order_no:this.$route.query.project_number,product_id:row.product_id,rows:[],type:1}).then(resp=>{
+             if(resp.code == 200){
+                 this.axios.get("/api/get_print_local_url").then((res) => {
+            if (res.code == 200) {
+              if (res.data.state) {
+                this.handlePrintChipsUsb(resp.data, res.data.type);
+              } 
+            }
+          });
+          } })
+        }else{
+         this.matchedSelectedList.forEach(v=>{
+           this.axios.post('/api/station_print',{matching_type:1,id:v.id,num:1,order_no:this.$route.query.project_number,product_id:v.product_id,rows:[],type:1}).then(resp=>{
+             if(resp.code == 200){
+                 this.axios.get("/api/get_print_local_url").then((res) => {
+            if (res.code == 200) {
+              if (res.data.state) {
+                this.handlePrintChipsUsb(resp.data, res.data.type);
+              } 
+            }
+          });
+          } })
+         })
+        }
+    },
+    important_del(){
+       this.axios.post('/api/delete_cut_order_product',{id:[...this.delList],...this.delData}).then(res=>{
+         if(res.code == 200){
+           this.$Message.success(res.msg);
+           this.delList = [];
+           this.isMatchedSelectAll=false;
+           this.initData();
+         }
+       })
+    },
+    handleMatchedSelectAll(){
+ this.isMatchedSelectAll = !this.isMatchedSelectAll;
+ this.matchedSelectedList = [];
+      this.matchedList.map((v) => {
+          v.isSelect = JSON.parse(JSON.stringify(this.isMatchedSelectAll));
+         this.handleMatchedSelect(v,this.isMatchedSelectAll);
+
+      });
+      //  this.$nextTick(()=>{this.matchedDetailList.forEach(v=>{
+      //           v._checked = true;
+      //         })})
+      if(!this.isMatchedSelectAll){
+          let ids = [];
+        this.matchedList.forEach(element => {
+          ids.push(element.id);
+        });
+         for(let i =0;i<this.selectArr.length;i++){
+       if(ids.indexOf(this.selectArr[i].id)>=0){
+         this.selectArr.splice(i,1);
+         i--;
+       }
+     }
+      }else{
+        let ids = [];
+        this.selectArr.forEach(element => {
+          ids.push(element.id);
+        });
+       this.matchedList.forEach(v=>{
+         if(ids.indexOf(v.id)<0){
+            this.selectArr.push(v)
+         }
+       })
+      }
+    },
+    handleMatchedSelect(row, e) {
+      row.isSelect = e;
+       let flag = true;
+      if(e){
+       this.selectArr.push(row);
+       this.axios.post('/api/change_match_detail',{layer:row.layer,order_no:this.$route.query.project_number,url_number:row.url_number}).then(res=>{
+              
+             if(row.isCurrenct){
+                this.matchedDetailList = res.data.list.data;
+                this.matchedDetailList.forEach(v=>{
+                  v._checked = true;
+                  
+                })}
+              this.selectAll(null,res.data.list.data);
+            }) 
+      
+      }else{
+          flag = false;
+            this.selectArr.forEach((m,index)=>{
+         if(m.id == row.id){
+           this.selectArr.splice(index,1);
+         }
+       })
+          this.axios.post('/api/change_match_detail',{layer:row.layer,order_no:this.$route.query.project_number,url_number:row.url_number}).then((res)=>{
+        
+           if(row.isCurrenct){
+            this.matchedDetailList = res.data.list.data;
+           } 
+           this.selectAllCancel(null,res.data.list.data);
+            })
+      }
+      this.isMatchedSelectAll = flag;
+      this.cut_order_product_ids = JSON.parse(JSON.stringify(this.matchedSelectedList));
+    },
+MatchedSelect(row,e){
+  row.del_isSelect = e;
+      console.log(row);
+      console.log(this.matchedList)
+      this.delList = [];
+  this.matchedList.forEach(v=>{
+    if(v.del_isSelect){
+          this.delList.push(v.id);
+    }
+  })
+
+},
+    back() {
+      this.$router.go(-1);
+    },
+    handleProcess() {
+      this.process_control = true;
+      console.log(this.cut_order_product_ids);
+      this.axios({
+        method: "post",
+        url: "/api/bst_pull",
+        data: {
+          cut_order_product_ids: this.cut_order_product_ids,
+          process_man: this.process_man,
+          process_start_time: this.func.replaceDateNoHMS(
+            this.process_start_time
+          ),
+          process_end_time: this.func.replaceDateNoHMS(this.process_end_time),
+        },
+      }).then((res) => {
+        if (res.code == 200) {
+          this.$Message.success(res.msg);
+          this.processModal = false;
+          this.matchedSelectedList = [];
+          this.initData();
+        }
+        setTimeout(() => {
+          this.process_control = false;
+        }, 500);
+      });
+    },
+    initData(row) {
+      console.log(this.matchedList)
+      this.axios
+        .post("/api/change_match_list", {
+            order_no:this.$route.query.project_number,
+           ...row
+        })
+        .then((res) => {
+          // this.matchedList = [];
+          res.data.list.map((v) => {
+            v.isCurrenct = false;
+
+          });
+      
+          this.urlMatchedList = res.data.url_number;
+          this.productMatchedList = res.data.product_list;
+          this.layerList = res.data.layer;
+          this.matchedList = res.data.list;
+
+         this.matchedList.forEach((v,index)=>{
+            this.selectArr.forEach(m=>{
+              if(v.url_number===m.url_number){
+                 if(v.layer===m.layer){
+                   this.matchedList[index].isSelect = true;
+                   console.log(5555555)
+                 }
+              }
+            })
+         })
+             });
+    },
+    handleHiddenMatchedDetail(row) {
+      if (row.isHidden) {
+        row.isHidden = !row.isHidden;
+      } else {
+        row.isHidden = true;
+      }
+      this.$forceUpdate();
+    },
+    handleShowCurrencyMatched(row,index) {
+      
+      if (row.isCurrenct) {
+        this.selectIndex = '';
+        row.isCurrenct = !row.isCurrenct;
+      } else {
+          this.matchedInfoDetail={
+        compose_name:[],
+         sort:[],
+         parts_id:[],
+         number:[]
+      };
+        this.selectIndex = index;
+        this.matchedList.map((v) => (v.isCurrenct = false));
+        row.isCurrenct = true;
+      }
+      this.getMatchedDetailList(row);
+    },
+    getMatchedDetailList(row,arr) {
+      row.isCurrenct &&
+        this.axios
+          .post("/api/change_match_detail", {
+           layer: row.layer,
+           url_number:row.url_number,
+            order_no:this.$route.query.project_number,
+            ...arr
+          })
+          .then((res) => {
+            this.regionMatchedList = res.data.region;
+           this.sortList = res.data.sort_list;
+          this.compose_name_list = res.data.compose_name_list;
+            this.numberMatchedList = res.data.house_list;
+            this.partNameMatchedList = res.data.part_list;
+            this.matchedDetailList = res.data.list.data;
+            if(row.isSelect){
+              this.matchedDetailList.forEach(v=>{
+                v._checked = true;
+              })
+            }else{
+              this.matchedDetailList.forEach(v=>{
+                this.matchedSelectedList.forEach(m=>{
+                  if(v.id==m.id){
+                    v._checked=true;
+                  }
+                })
+              })
+            }
+
+          });
+    },
+  },
+  // 监听属性 类似于data概念
+  computed: {},
+  // 监控data中的数据变化
+  watch: {},
+  beforeCreate() {}, // 生命周期 - 创建之前
+  beforeMount() {}, // 生命周期 - 挂载之前
+  beforeUpdate() {}, // 生命周期 - 更新之前
+  updated() {}, // 生命周期 - 更新之后
+  beforeDestroy() {}, // 生命周期 - 销毁之前
+  destroyed() {}, // 生命周期 - 销毁完成
+  activated() {}, // 如果页面有keep-alive缓存功能,这个函数会触发
+};
+</script>
+
+<style lang="scss" scoped>
+.context-tabs {
+  position: relative;
+  max-height: 650px;
+  overflow: hidden;
+  overflow-y: auto;
+  padding: 15px;
+  margin: 10px;
+  margin-bottom: 30px;
+  border-radius: 5px;
+  box-shadow: 1px 1px 5px 1px #999;
+}
+.matched-block {
+  padding: 15px;
+  margin-bottom: 30px;
+  background-color: #e9ecef;
+  border-radius: 5px;
+}
+.process_modal {
+  display: flex;
+  justify-content: center;
+  align-items: center;
+  padding: 10px;
+}
+/deep/.del_check .ivu-checkbox .ivu-checkbox-inner{
+  border-radius: 50%;
+}
+</style>

+ 189 - 0
src/views/MatchChange/BSTlist.vue

@@ -0,0 +1,189 @@
+<template>
+  <div style="margin-top: 10px">
+    <Toptitle title="匹配变更列表"> </Toptitle>
+    <div style="height: 80%; overflow: auto">
+      <Form
+        :label-width="100"
+        style="display: flex; flex-wrap: wrap; margin: 10px 0"
+      >
+        <FormItem label="项目编码:" style="width: 250px">
+          <Select
+            size="small"
+            v-model="searchData.order_no"
+            clearable
+            filterable
+            multiple
+          >
+            <Option
+              v-for="(item, index) in order_no_list"
+              :key="index"
+              :value="item"
+              :label="item"
+            />
+          </Select>
+        </FormItem>
+        <FormItem label="项目名称:" style="width: 250px">
+          <Select
+            size="small"
+            v-model="searchData.residential_name"
+            clearable
+            filterable
+            multiple
+          >
+            <Option
+              v-for="(item, index) in residential_name_list"
+              :key="index"
+              :value="item"
+              :label="item"
+            >
+            </Option>
+          </Select>
+        </FormItem>
+        <FormItem label="项目简称:" style="width: 250px">
+          <Select
+            size="small"
+            v-model="searchData.abbreviation"
+            clearable
+            filterable
+            multiple
+          >
+            <Option
+              v-for="(item, index) in abbreviation_list"
+              :key="index"
+              :value="item"
+              :label="item"
+            >
+            </Option>
+          </Select>
+        </FormItem>
+        <FormItem>
+          <Button type="primary" @click="getData(searchData)" size="small"
+            >搜索</Button
+          >
+        </FormItem>
+      </Form>
+      <Table :columns="tableColumns" max-height="550" :data="tableData" border>
+        <template slot="set" slot-scope="{ row }">
+          <a style="margin-right: 10px" @click="goPage(row, 1)">变更</a>
+          <a @click="goPage(row, 2)">查看</a>
+        </template>
+      </Table>
+    </div>
+    <Page
+      :page-size-opts="[10, 20, 30, 40, 100, 1000]"
+      @on-page-size-change="changeSize"
+      @on-change="changePage"
+      :current="pageIndex"
+      show-total
+      :total="total"
+      show-sizer
+      :page-size="pageSize"
+      style="text-align: center; margin-top: 10px"
+    />
+  </div>
+</template>
+<script>
+export default {
+  data() {
+    return {
+      abbreviation_list: [],
+      residential_name_list: [],
+      order_no_list: [],
+      searchData: {
+        order_no: [],
+        residential_name: [],
+        abbreviation: [],
+      },
+      total: 0,
+      pageSize: 10,
+      pageIndex: 1,
+      tableData: [],
+      tableColumns: [
+        { title: "项目编码", align: "center", key: "order_no", minWidth: 90 },
+        {
+          title: "项目名称",
+          align: "center",
+          key: "residential_name",
+          minWidth: 90,
+        },
+        {
+          title: "项目简称",
+          align: "center",
+          key: "abbreviation",
+          minWidth: 90,
+        },
+        {
+          title: "制单日期",
+          align: "center",
+          key: "crt_time",
+          minWidth: 90,
+          render: (h, params) => {
+            const { row } = params;
+            return h("span", {}, this.func.replaceDate(row.crt_time));
+          },
+        },
+        { title: "操作", align: "center", slot: "set", minWidth: 60 },
+      ],
+    };
+  },
+  created() {},
+  mounted() {
+    this.getData();
+  },
+  methods: {
+    goPage(row, type) {
+      //1变更   2查看
+      switch (type) {
+        case 1:
+          this.$router.push({
+            path: "/cms/MatchChange/BSTchange",
+            query: {
+              project_number: row.order_no,
+              project_name: row.residential_name,
+            },
+          });
+          break;
+        case 2:
+          this.$router.push({
+            path: "/cms/MatchChange/BSTcheck",
+            query: {
+              project_number: row.order_no,
+              project_name: row.residential_name,
+            },
+          });
+          break;
+      }
+    },
+    getData(row) {
+      this.axios
+        .post("/api/orders_produce_order_list", {
+          ...row,
+          page_size: this.pageSize,
+          page_index: this.pageIndex,
+        })
+        .then((res) => {
+          this.tableData = res.data.data;
+          this.total = res.data.total;
+          this.abbreviation_list = res.data.abbreviation;
+          this.order_no_list = res.data.order_no;
+          this.residential_name_list = res.data.residential_name;
+          console.log(this.abbreviation_list);
+        });
+    },
+    changeSize(e) {
+      this.pageSize = e;
+      this.pageIndex = 1;
+      this.init();
+    },
+    changePage(e) {
+      this.pageIndex = e;
+      this.init();
+    },
+    init() {
+      this.getData(this.searchData);
+    },
+  },
+};
+</script>
+<style lang="scss" scoped>
+</style>

+ 970 - 0
src/views/MatchChange/HXYchange.vue

@@ -0,0 +1,970 @@
+<template>
+  <div>
+    <Toptitle title="变更">
+      <Button
+        type="primary"
+        ghost
+        style="margin-right: 10px"
+        @click="changeParts"
+        >批量修改组合名称</Button
+      >
+      <Button type="primary" ghost style="margin-right: 10px" @click="match"
+        >批量修改房间</Button
+      >
+      <Button
+        type="primary"
+        ghost
+        style="margin-right: 10px"
+        @click="changeTable(1)"
+        >批量修改区域</Button
+      >
+      <Button
+        type="primary"
+        ghost
+        style="margin-right: 10px"
+        @click="changeTable(2)"
+        >批量修改部件</Button
+      >
+      <Button type="primary" style="margin-right: 10px" @click="postData"
+        >保存</Button
+      >
+
+      <Button @click="back" type="primary" ghost style="margin-right: 10px"
+        >返回</Button
+      >
+    </Toptitle>
+    <Row style="padding: 10px; font-size: 18px">
+      <Col span="4">
+        <span>项目编号:</span><span>{{ project_number }}</span>
+      </Col>
+      <Col span="4">
+        <span>项目名称:</span><span>{{ project_name }}</span>
+      </Col>
+      <Col span="4">
+        <span>图号:</span>
+        <span>
+          <Select
+            filterable
+            multiple
+            filter-by-label
+            clearable
+            transfer
+            v-model="matchedInfo.url_number"
+            :max-tag-count="2"
+            size="small"
+            style="width: 150px"
+          >
+            <Option
+              v-for="(item, index) in urlMatchedList"
+              :key="index"
+              :label="item"
+              :value="item"
+            ></Option>
+          </Select>
+        </span>
+      </Col>
+       <Col span="4">
+        <span>图号批量查询:</span>
+        <span>
+          <Input clearable v-model="matchedInfo.url_numbers" placeholder="请输入" size="small"
+            style="width: 150px"/>
+        </span>
+      </Col>
+      <Col span="4">
+        <span>产品名称:</span>
+        <span>
+          <Select
+            filterable
+            multiple
+            filter-by-label
+            clearable
+            transfer
+            v-model="matchedInfo.product_id"
+            :max-tag-count="2"
+            size="small"
+            style="width: 150px"
+          >
+            <Option
+              v-for="(item, index) in productMatchedList"
+              :key="index"
+              :label="item.title"
+              :value="item.id"
+            ></Option>
+          </Select>
+        </span>
+      </Col>
+      <Col span="4">
+        <span>区域名称:</span>
+        <span>
+          <Select
+            filterable
+            multiple
+            filter-by-label
+            clearable
+            transfer
+            v-model="matchedInfo.layer"
+            :max-tag-count="2"
+            size="small"
+            style="width: 150px"
+          >
+            <Option
+              v-for="(item, index) in layerList"
+              :key="index"
+              :label="item"
+              :value="item"
+            ></Option>
+          </Select>
+        </span>
+      </Col>
+      <Col span="2">
+        <Button @click="initData(matchedInfo)" size="small" type="primary">
+          搜索
+        </Button>
+      </Col>
+    </Row>
+    <div class="context-tabs">
+      <div
+        v-for="(matched_info, index) in matchedList"
+        :key="index"
+        class="matched-block"
+      >
+        <Row type="flex" justify="space-between" align="top">
+          <Col style="display: flex; justify-content: space-around">
+            <span>图号:{{ matched_info.url_number }}</span>
+          </Col>
+          <Col span="3">
+            <span>产品名称:{{ matched_info.product_title }}</span>
+          </Col>
+          <Col span="4">
+            <span>区域:{{ matched_info.layer }}</span>
+          </Col>
+          <Col style="display: flex; flex-direction: row-reverse" span="3">
+            <div>
+              <Button
+                @click="handleShowCurrencyMatched(matched_info)"
+                size="small"
+                type="text"
+                >{{ matched_info.isCurrenct ? "收缩" : "展开" }}</Button
+              >
+              <Icon
+                size="20"
+                :type="
+                  matched_info.isCurrenct
+                    ? 'md-arrow-dropdown'
+                    : 'md-arrow-dropright'
+                "
+                style="vertical-align: middle"
+              />
+            </div>
+            <!-- <div >
+              总计
+              <span style="color:red">{{ matched_info.total }}</span>
+              条数据
+            </div> -->
+          </Col>
+        </Row>
+        <Row style="margin-top: 20px" v-if="matched_info.isCurrenct">
+          <Col span="4">
+            <span>房号:</span>
+            <span>
+              <Select
+                filterable
+                multiple
+                transfer
+                clearable
+                filter-by-label
+                v-model="searchData.number"
+                :max-tag-count="2"
+                size="small"
+                style="width: 150px"
+              >
+                <Option
+                  v-for="(item, index) in house_list"
+                  :key="index"
+                  :label="item.number"
+                  :value="item.number"
+                ></Option>
+              </Select>
+            </span>
+          </Col>
+          <Col span="4">
+            <span>组合名称:</span>
+            <span>
+              <Select
+                filterable
+                multiple
+                transfer
+                clearable
+                filter-by-label
+                v-model="searchData.compose_name"
+                :max-tag-count="2"
+                size="small"
+                style="width: 150px"
+              >
+                <Option
+                  v-for="(item, index) in compose_name_list"
+                  :key="index"
+                  :label="item"
+                  :value="item"
+                ></Option>
+              </Select>
+            </span>
+          </Col>
+          <Col span="4">
+            <span>部件名称:</span>
+            <span>
+              <Select
+                filterable
+                multiple
+                transfer
+                clearable
+                filter-by-label
+                v-model="searchData.parts_id"
+                :max-tag-count="2"
+                size="small"
+                style="width: 150px"
+              >
+                <Option
+                  v-for="(item, index) in part_list"
+                  :key="index"
+                  :label="item.title"
+                  :value="item.id"
+                ></Option>
+              </Select>
+            </span>
+          </Col>
+          <Col span="4">
+            <span>行号:</span>
+            <span>
+              <Select
+                filterable
+                multiple
+                transfer
+                clearable
+                filter-by-label
+                v-model="searchData.sort"
+                :max-tag-count="2"
+                size="small"
+                style="width: 150px"
+              >
+                <Option
+                  v-for="(item, index) in sort_list"
+                  :key="index"
+                  :label="item"
+                  :value="item"
+                ></Option>
+              </Select>
+            </span>
+          </Col>
+          <Col span="2">
+            <Button
+              @click="getMatchedDetailList(matched_info, searchData)"
+              size="small"
+              type="primary"
+            >
+              搜索
+            </Button>
+          </Col>
+        </Row>
+        <div v-if="matched_info.isCurrenct" style="margin-top: 10px">
+          <Table
+            :columns="matchedSheetTableColumns"
+            border
+            :max-height="500"
+            :data="matchedDetailList"
+            @on-selection-change="selectItem"
+          >
+            <template slot="area" slot-scope="{ row }">
+              <Input
+                clearable
+                v-model="row.area"
+                @on-blur="selectHouse(null, row)"
+              ></Input>
+            </template>
+            <template slot="part_title" slot-scope="{ row }">
+              <Input
+                clearable
+                v-model="row.part_title"
+                @on-blur="selectHouse(null, row)"
+              ></Input>
+            </template>
+            <template slot="measure" slot-scope="{ row,index }">
+              <Input
+                clearable
+                v-model="row.measure"
+                @on-blur="handleChangeMeasure(row,index)"
+              ></Input>
+            </template>
+            <template slot="skin_area" slot-scope="{row}">
+              <Input clearable v-model="row.skin_area" @on-blur="selectHouse(null, row)"/>
+            </template>
+            <template slot="ext_1" slot-scope="{row}">
+              <Input clearable v-model="row.ext_1" @on-blur="selectHouse(null, row)"/>
+            </template>
+            <template slot="number" slot-scope="{ row }">
+              <Select
+                v-model="row.house_id"
+                filterable
+                clearable
+                @on-select="selectHouse($event, row)"
+                transfer
+              >
+                <Option
+                  v-for="(item, index) in house_list"
+                  :key="index"
+                  :label="item.number"
+                  :value="item.id"
+                ></Option>
+              </Select>
+            </template>
+
+            <template slot="compose_name" slot-scope="{ row }">
+              <Select
+                v-model="row.compose_name"
+                filterable
+                clearable
+                allow-create
+                @on-create="handleCreate"
+                @on-select="selectHouse($event, row)"
+                transfer
+              >
+                <Option
+                  v-for="(item, index) in compose_name_list"
+                  :key="index"
+                  :label="item"
+                  :value="item"
+                ></Option>
+              </Select>
+            </template>
+          </Table>
+          <span
+            >总计{{
+              matchedDetailList.length ? matchedDetailList.length : 0
+            }}条记录</span
+          >
+        </div>
+      </div>
+    </div>
+    <Modal v-model="showMatch" title="批量修改房间" width="540">
+      <div>
+        <div style="display: flex; flex-wrap: wrap; margin-bottom: 20px">
+          <div style="width: 50%; display: flex">
+            <span style="width: 30%">房号:</span>
+            <Select v-model="house_number" filterable clearable size="small">
+              <Option
+                v-for="(item, index) in house_list"
+                :key="index"
+                :label="item.number"
+                :value="item.number"
+              ></Option>
+            </Select>
+          </div>
+          <Button
+            size="small"
+            type="primary"
+            style="margin-left: 20px"
+            @click="getModalHouseList(proxObj, { numbers: house_number })"
+            >搜索</Button
+          >
+        </div>
+        <Table :data="modalData" :columns="modalColum" border max-height="500">
+          <template slot="select" slot-scope="{ index }">
+            <Checkbox
+              @on-change="radioChange($event, index)"
+              :ref="`${index}`"
+            ></Checkbox>
+          </template>
+        </Table>
+      </div>
+      <div slot="footer" style="text-align: center">
+        <Button type="primary" @click="cancel">取消</Button>
+        <Button type="primary" @click="saveData">保存</Button>
+      </div>
+    </Modal>
+    <Modal title="批量修改组件" width="35" v-model="modalChangeParts">
+      <Form :label-width="150">
+        <FormItem label="组合名称:" style="width: 350px">
+          <Select
+            v-model="totalComposeName"
+            filterable
+            clearable
+            allow-create
+            @on-create="handleCreate"
+          >
+            <Option
+              v-for="(item, index) in compose_name_list"
+              :key="index"
+              :label="item"
+              :value="item"
+            ></Option>
+          </Select>
+        </FormItem>
+      </Form>
+      <div slot="footer">
+        <Button type="primary" @click="modalChangeParts = false">取消</Button>
+        <Button type="primary" @click="handleChangeParts">保存</Button>
+      </div>
+    </Modal>
+    <Modal
+      :title="changeTableData.type == 1 ? '批量修改区域' : '批量修改部件'"
+      width="30"
+      v-model="show_changeTable"
+      :closable="false"
+      :mask-closable="false"
+    >
+      <div style="display: flex; align-items: center">
+        <label style="width: 100px">{{
+          changeTableData.type == 1 ? "区域名称:" : "部件名称:"
+        }}</label
+        ><Input v-model="changeTableData.val" clearable />
+      </div>
+      <div slot="footer">
+        <Button @click="show_changeTable = false">取消</Button>
+        <Button @click="handleChangeTable" type="primary">保存</Button>
+      </div>
+    </Modal>
+  </div>
+</template>
+
+<script>
+// 这里可以导入其他文件(比如:组件,工具js,第三方插件js,json文件,图片文件等等)
+// 例如:import 《组件名称》 from '《组件路径》';
+
+export default {
+  name: "",
+  components: {},
+  props: {},
+  // import引入的组件需要注入到对象中才能使用
+  data() {
+    // 这里存放数据
+    return {
+        errorArea:0,
+      show_changeTable: false,
+      changeTableData: {
+        val: "",
+        type: "",
+      }, //区域 和 部件
+      totalComposeName: "",
+      modalChangeParts: false,
+      house_number: "",
+      modalColum: [
+        { align: "center", slot: "select", maxWidth: 60 },
+        { title: "区域", align: "center", key: "layer", minWidth: 90 },
+        { title: "房号", align: "center", key: "number", maxWidth: 100 },
+      ],
+      modalData: [],
+      showMatch: false,
+      chooseData: [],
+      modalChooseData: {},
+      compose_name_list: [],
+      house_list: [],
+      sort_list: [],
+      part_list: [],
+      project_number: this.$route.query.project_number,
+      project_name: this.$route.query.project_name,
+      isMatchedSelectAll: false,
+      matchedInfo: {
+        url_number: [],
+        product_id: [],
+        layer: [],
+        url_numbers:''
+      },
+      searchData: {
+        number: [],
+        compose_name: [],
+        parts_id: [],
+        sort: [],
+      },
+      urlMatchedList: [],
+      productMatchedList: [],
+      matchedDetailList: [],
+      matchedList: [],
+      matchedSheetTableColumns: [
+        { type: "selection", align: "center", width: 60 },
+        {
+          title: "序号",
+          align: "center",
+          type: "index",
+          resizable: true,
+          minWidth: 80,
+        },
+         {
+          title: "行号",
+          align: "center",
+          key: "sort",
+          resizable: true,
+          minWidth: 120,
+        },
+        {
+          title: "区域名称",
+          align: "center",
+          key: "area",
+          resizable: true,
+          minWidth: 160,
+          slot: "area",
+        },
+        {
+          title: "房号",
+          align: "center",
+          key: "house_id",
+          resizable: true,
+          minWidth: 160,
+          slot: "number",
+        },
+        {
+          title: "组合名称",
+          align: "center",
+          key: "compose_name",
+          resizable: true,
+          minWidth: 160,
+          slot: "compose_name",
+        },
+        {
+          title: "部件名称",
+          align: "center",
+          key: "part_title",
+          resizable: true,
+          minWidth: 180,
+          slot: "part_title",
+        },
+        {
+          title: "精裁面积",
+          align: "center",
+          key: "ext_1",
+          resizable: true,
+          minWidth: 180,
+          slot: "ext_1",
+        },
+        {
+          title: "贴皮面积",
+          align: "center",
+          key: "skin_area",
+          resizable: true,
+          minWidth: 180,
+          slot: "skin_area",
+        },
+        {
+          title: "精裁尺寸",
+          align: "center",
+          resizable: true,
+          width: 150,
+          slot: "measure",
+        },
+         {
+          title: "毛料尺寸",
+          align: "center",
+          key: "wool_size",
+          resizable: true,
+          minWidth: 150,
+        },
+      ], //匹配表头
+      process_man: "",
+      processManList: [],
+      process_start_time: "",
+      process_end_time: "",
+      process_control: false,
+      cut_order_product_ids: [],
+      matchedSelectedList: [],
+      editData: [],
+      proxObj: {},
+      layerList: [],
+    };
+  },
+  // 生命周期 - 创建完成(可以访问当前this实例)
+  created() {
+    this.axios("/api/user").then(
+      (res) => (this.processManList = res.data.data)
+    );
+    //获取误差范围;
+    this.axios.post('/api/cut_order_alloy_wool_size').then(res=>{
+        this.errorArea = res.data*1;
+    })
+  },
+  // 生命周期 - 挂载完成(可以访问DOM元素)
+  mounted() {
+    this.initData();
+  },
+  methods: {
+    handleChangeMeasure(row,index){
+         if(row.measure.split('*').length!=3){
+            return this.$Message.warning('请输入正确的格式')
+         }
+        let data = row.measure.split('*');
+    for(let i=0;i<data.length;i++){
+        if(data[i]===''||isNaN(data[i]*1)){
+             data[i] = 0;
+        }
+    }
+    row.wool_size = `${data[0]*1+this.errorArea}*${data[1]*1+this.errorArea}*${data[2]*1+this.errorArea}`;
+    row.measure = data.toString().replace(new RegExp(',','g'),'*');
+        if(row.skin===''){
+            row.skin_area = 0
+            row.ext_1 = 0
+        }else{
+            row.ext_1 = (row.measure.split('*')[0]*row.measure.split('*')[1]*1)/1000000;
+          if(row.skin*1===0){
+            row.skin_area = 0;
+          }else if(row.skin*1===1){
+               row.skin_area = (row.measure.split('*')[0]*row.measure.split('*')[1]*1)/1000000;
+          }else if(row.skin*1===2){
+               row.skin_area = (row.measure.split('*')[0]*row.measure.split('*')[1]*2)/1000000;
+          }
+        }
+        
+         this.selectHouse(null,row);
+    },
+    handleChangeTable() {
+      if (!this.changeTableData.val) {
+        return this.$Message.warning("请确认数据!");
+      }
+      let arr = [];
+      this.chooseData.forEach((v) => {
+        this.matchedDetailList.forEach((m) => {
+          if (v.id == m.id) {
+            if (this.changeTableData.type == 1) {
+              m.area = this.changeTableData.val;
+              m._checked = true;
+            } else {
+              m.part_title = this.changeTableData.val;
+              m._checked = true;
+            }
+            arr.push(m);
+          }
+        });
+      });
+      let data = [];
+      data = JSON.parse(JSON.stringify(this.editData));
+      if (this.editData.length == 0) {
+        this.editData = arr;
+      } else {
+        let ids = [];
+        this.editData.forEach((v) => {
+          ids.push(v.id);
+        });
+        arr.forEach((v) => {
+          if (ids.indexOf(v.id) >= 0) {
+            this.editData.forEach((m, idx) => {
+              if (m.id == v.id) {
+                data.splice(idx, 1, v);
+              }
+            });
+          } else {
+            data.push(v);
+          }
+        });
+        this.editData = JSON.parse(JSON.stringify(data));
+      }
+      this.show_changeTable = false;
+    },
+    changeTable(type) {
+      //type 1区域 2部件
+      if (this.chooseData.length == 0) {
+        return this.$Message.warning("请先选择数据!");
+      }
+      this.changeTableData.val = "";
+      this.changeTableData.type = type;
+      this.show_changeTable = true;
+    },
+    handleChangeParts() {
+      if (!this.totalComposeName) {
+        return this.$Message.warning("请确认数据!");
+      }
+      let arr = [];
+      this.chooseData.forEach((v) => {
+        this.matchedDetailList.forEach((m) => {
+          if (v.id == m.id) {
+            m.compose_name = this.totalComposeName;
+            m._checked = true;
+            arr.push(m);
+          }
+        });
+      });
+
+      let data = [];
+      data = JSON.parse(JSON.stringify(this.editData));
+      if (this.editData.length == 0) {
+        this.editData = arr;
+      } else {
+        console.log(this.editData);
+        let ids = [];
+        this.editData.forEach((v) => {
+          ids.push(v.id);
+        });
+        arr.forEach((v) => {
+          if (ids.indexOf(v.id) >= 0) {
+            this.editData.forEach((m, idx) => {
+              if (m.id == v.id) {
+                data.splice(idx, 1, v);
+              }
+            });
+          } else {
+            data.push(v);
+          }
+        });
+        this.editData = JSON.parse(JSON.stringify(data));
+      }
+      this.modalChangeParts = false;
+      console.log(this.editData);
+    },
+    changeParts() {
+      if (this.chooseData.length == 0) {
+        return this.$Message.warning("请先选择数据");
+      }
+      this.modalChangeParts = true;
+    },
+    handleCreate(val) {
+      this.compose_name_list.push(val);
+    },
+    selectHouse(e, row) {
+      if (this.editData.length == 0) {
+        this.editData.push(row);
+      } else {
+        let ids = [];
+        this.editData.forEach((v) => {
+          ids.push(v.id);
+        });
+        if (ids.indexOf(row.id) < 0) {
+          this.editData.push(row);
+        } else {
+          let data = [];
+          data = JSON.parse(JSON.stringify(this.editData));
+          this.editData.forEach((v, index) => {
+            if (v.id == row.id) {
+              data.splice(index, 1, row);
+            }
+          });
+          this.editData = data;
+        }
+      }
+    },
+    postData() {
+      console.log(this.editData);
+      let json = [];
+      this.editData.forEach((v) => {
+        let obj = {};
+        obj.area = v.area;
+        obj.measure = v.measure;
+        obj.part_title = v.part_title;
+        obj.pr_id = v.id;
+        obj.house_id = v.house_id;
+        obj.url_number = v.url_number;
+        obj.compose_name = v.compose_name;
+        obj.ext_1 = v.ext_1;
+        obj.skin_area = v.skin_area;
+        obj.wool_size = v.wool_size;
+        json.push(obj);
+      });
+      this.axios
+        .post("/api/change_match_edit", {
+          json,
+          order_no: this.$route.query.project_number,
+        })
+        .then((res) => {
+          if (res.code == 200) {
+            this.$Message.success(res.msg);
+            this.initData(this.matchedInfo);
+            this.editData = [];
+          }
+        });
+    },
+    saveData() {
+      if (!this.modalChooseData) {
+        return this.$Message.warning("请确认数据!");
+      }
+      let arr = [];
+      this.chooseData.forEach((v) => {
+        this.matchedDetailList.forEach((m) => {
+          if (v.id == m.id) {
+            m.house_id = this.modalChooseData.id;
+            m._checked = true;
+            arr.push(m);
+          }
+        });
+      });
+
+      let data = [];
+      data = JSON.parse(JSON.stringify(this.editData));
+      if (this.editData.length == 0) {
+        this.editData = arr;
+      } else {
+        console.log(this.editData);
+        let ids = [];
+        this.editData.forEach((v) => {
+          ids.push(v.id);
+        });
+        arr.forEach((v) => {
+          if (ids.indexOf(v.id) >= 0) {
+            this.editData.forEach((m, idx) => {
+              if (m.id == v.id) {
+                data.splice(idx, 1, v);
+              }
+            });
+          } else {
+            data.push(v);
+          }
+        });
+        this.editData = JSON.parse(JSON.stringify(data));
+      }
+      this.showMatch = false;
+      console.log(this.editData);
+    },
+    match() {
+      if (this.chooseData.length == 0) {
+        return this.$Message.warning("请先选择数据");
+      }
+      this.showMatch = true;
+    },
+    cancel() {
+      this.showMatch = false;
+    },
+    radioChange(e, index) {
+      this.modalChooseData = null;
+      this.modalData.forEach((v, idx) => {
+        if (idx == index) {
+          this.$refs[idx].currentValue = true;
+          this.modalChooseData = v;
+          console.log(this.modalChooseData);
+        } else {
+          this.$refs[idx].currentValue = false;
+        }
+      });
+    },
+    selectItem(e) {
+      this.chooseData = e;
+      console.log(this.chooseData);
+    },
+    back() {
+      this.$router.go(-1);
+    },
+    initData(row) {
+      this.axios
+        .post("/api/change_match_list", {
+          order_no: this.$route.query.project_number,
+          ...row,
+        })
+        .then((res) => {
+          this.matchedList = [];
+          res.data.list.map((v) => {
+            v.isCurrenct = false;
+          });
+          this.urlMatchedList = res.data.url_number;
+          this.productMatchedList = res.data.product_list;
+          this.matchedList = res.data.list;
+          this.layerList = res.data.layer;
+        });
+    },
+    handleHiddenMatchedDetail(row) {
+      if (row.isHidden) {
+        row.isHidden = !row.isHidden;
+      } else {
+        row.isHidden = true;
+      }
+      this.$forceUpdate();
+    },
+    handleShowCurrencyMatched(row) {
+      if (row.isCurrenct) {
+        row.isCurrenct = !row.isCurrenct;
+      } else {
+        this.matchedList.map((v) => (v.isCurrenct = false));
+        row.isCurrenct = true;
+      }
+      this.searchData = {
+        house_id: [],
+        compose_name: [],
+        part_id: [],
+        sort: [],
+      };
+      this.getMatchedDetailList(row);
+    },
+    getMatchedDetailList(row, arr) {
+      if (!row.isCurrenct) {
+        this.modalData = [];
+      }
+      this.proxObj = row;
+      row.isCurrenct &&
+        this.axios
+          .post("/api/change_match_detail", {
+            layer: row.layer,
+            url_number: row.url_number,
+            order_no: this.$route.query.project_number,
+            ...arr,
+          })
+          .then((res) => {
+            this.matchedDetailList = res.data.list.data;
+            this.sort_list = res.data.sort_list;
+            this.house_list = res.data.house_list;
+            this.part_list = res.data.part_list;
+            this.compose_name_list = res.data.compose_name_list;
+            this.chooseData = [];
+            this.modalData = JSON.parse(JSON.stringify(res.data.houses_list));
+            this.modalChooseData = null;
+            this.matchedDetailList.forEach((v, index) => {
+              this.editData.forEach((m) => {
+                if (v.id == m.id) {
+                  this.matchedDetailList.splice(index, 1, m);
+                }
+              });
+            });
+
+          });
+    },
+    getModalHouseList(row, arr) {
+      if (!row.isCurrenct) {
+        this.modalData = [];
+      }
+      this.proxObj = row;
+      row.isCurrenct &&
+        this.axios
+          .post("/api/change_match_detail", {
+            layer: row.layer,
+            url_number: row.url_number,
+            order_no: this.$route.query.project_number,
+            ...arr,
+          })
+          .then((res) => {
+            this.modalData = JSON.parse(JSON.stringify(res.data.houses_list));
+          });
+    },
+  },
+  // 监听属性 类似于data概念
+  computed: {},
+  // 监控data中的数据变化
+  watch: {},
+  beforeCreate() {}, // 生命周期 - 创建之前
+  beforeMount() {}, // 生命周期 - 挂载之前
+  beforeUpdate() {}, // 生命周期 - 更新之前
+  updated() {}, // 生命周期 - 更新之后
+  beforeDestroy() {}, // 生命周期 - 销毁之前
+  destroyed() {}, // 生命周期 - 销毁完成
+  activated() {}, // 如果页面有keep-alive缓存功能,这个函数会触发
+};
+</script>
+
+<style lang="scss" scoped>
+.context-tabs {
+  position: relative;
+  max-height: 650px;
+  overflow: hidden;
+  overflow-y: auto;
+  padding: 15px;
+  margin: 10px;
+  margin-bottom: 30px;
+  border-radius: 5px;
+  box-shadow: 1px 1px 5px 1px #999;
+}
+.matched-block {
+  padding: 15px;
+  margin-bottom: 30px;
+  background-color: #e9ecef;
+  border-radius: 5px;
+}
+.process_modal {
+  display: flex;
+  justify-content: center;
+  align-items: center;
+  padding: 10px;
+}
+/deep/.del_check .ivu-checkbox .ivu-checkbox-inner {
+  border-radius: 50%;
+}
+</style>

+ 19 - 4
src/views/MatchChange/check.vue → src/views/MatchChange/HXYcheck.vue

@@ -28,7 +28,7 @@
     </Row>
     <div class="context-tabs">
       <Row type="flex" align="middle" style="padding:10px 0">
-        <Col span="5">
+        <Col span="4">
           <span>图号:</span>
           <span>
             <Select
@@ -52,6 +52,13 @@
           </span>
         </Col>
         <Col span="5">
+        <span>图号批量查询:</span>
+        <span>
+          <Input clearable v-model="matchedInfo.url_numbers" placeholder="请输入" size="small"
+            style="width: 150px"/>
+        </span>
+      </Col>
+        <Col span="5">
           <span>产品名称:</span>
           <span>
             <Select
@@ -361,6 +368,7 @@ export default {
         url_number: [],
         product_id: [],
         layer:[],
+        url_numbers:'',
       },
       urlMatchedList: [],
       productMatchedList: [],
@@ -372,7 +380,9 @@ export default {
       matchedSheetTableColumns: [
         {type:'selection',align:'center',width:60},
         { title: "序号", align: "center", type: "index", resizable: true,
-                        minWidth: 80 },
+                        minWidth: 80 }, 
+                        { title: "行号", align: "center", key: "sort",  resizable: true,
+                        minWidth: 120 },
         { title: "区域名称", align: "center", key: "area",  resizable: true,
                         minWidth: 160 },
         { title: "房号", align: "center", key: "number",  resizable: true,
@@ -385,8 +395,6 @@ export default {
                         minWidth: 150 },
                          { title: "贴皮面积", align: "center", key: "skin_area",  resizable: true,
                         minWidth: 150 },         
-        { title: "行号", align: "center", key: "sort",  resizable: true,
-                        minWidth: 170 },
         {
           title: "精裁尺寸",
           align: "center",
@@ -396,6 +404,13 @@ export default {
             return h("span", {}, params.row.measure);
           },
          }, 
+          {
+          title:"毛料尺寸",
+          align:'center',
+          resizable:true,
+          width:150,
+          key:"wool_size"
+        },
          { title: "打印芯片", align: "center", key: "chip_state",  resizable: true,
                         minWidth: 80 ,  render: (h, params) => {
             return h("span", {}, params.row.chip_state==0?'否':'是');

+ 189 - 0
src/views/MatchChange/HXYlist.vue

@@ -0,0 +1,189 @@
+<template>
+  <div style="margin-top: 10px">
+    <Toptitle title="匹配变更列表"> </Toptitle>
+    <div style="height: 80%; overflow: auto">
+      <Form
+        :label-width="100"
+        style="display: flex; flex-wrap: wrap; margin: 10px 0"
+      >
+        <FormItem label="项目编码:" style="width: 250px">
+          <Select
+            size="small"
+            v-model="searchData.order_no"
+            clearable
+            filterable
+            multiple
+          >
+            <Option
+              v-for="(item, index) in order_no_list"
+              :key="index"
+              :value="item"
+              :label="item"
+            />
+          </Select>
+        </FormItem>
+        <FormItem label="项目名称:" style="width: 250px">
+          <Select
+            size="small"
+            v-model="searchData.residential_name"
+            clearable
+            filterable
+            multiple
+          >
+            <Option
+              v-for="(item, index) in residential_name_list"
+              :key="index"
+              :value="item"
+              :label="item"
+            >
+            </Option>
+          </Select>
+        </FormItem>
+        <FormItem label="项目简称:" style="width: 250px">
+          <Select
+            size="small"
+            v-model="searchData.abbreviation"
+            clearable
+            filterable
+            multiple
+          >
+            <Option
+              v-for="(item, index) in abbreviation_list"
+              :key="index"
+              :value="item"
+              :label="item"
+            >
+            </Option>
+          </Select>
+        </FormItem>
+        <FormItem>
+          <Button type="primary" @click="getData(searchData)" size="small"
+            >搜索</Button
+          >
+        </FormItem>
+      </Form>
+      <Table :columns="tableColumns" max-height="550" :data="tableData" border>
+        <template slot="set" slot-scope="{ row }">
+          <a style="margin-right: 10px" @click="goPage(row, 1)">变更</a>
+          <a @click="goPage(row, 2)">查看</a>
+        </template>
+      </Table>
+    </div>
+    <Page
+      :page-size-opts="[10, 20, 30, 40, 100, 1000]"
+      @on-page-size-change="changeSize"
+      @on-change="changePage"
+      :current="pageIndex"
+      show-total
+      :total="total"
+      show-sizer
+      :page-size="pageSize"
+      style="text-align: center; margin-top: 10px"
+    />
+  </div>
+</template>
+<script>
+export default {
+  data() {
+    return {
+      abbreviation_list: [],
+      residential_name_list: [],
+      order_no_list: [],
+      searchData: {
+        order_no: [],
+        residential_name: [],
+        abbreviation: [],
+      },
+      total: 0,
+      pageSize: 10,
+      pageIndex: 1,
+      tableData: [],
+      tableColumns: [
+        { title: "项目编码", align: "center", key: "order_no", minWidth: 90 },
+        {
+          title: "项目名称",
+          align: "center",
+          key: "residential_name",
+          minWidth: 90,
+        },
+        {
+          title: "项目简称",
+          align: "center",
+          key: "abbreviation",
+          minWidth: 90,
+        },
+        {
+          title: "制单日期",
+          align: "center",
+          key: "crt_time",
+          minWidth: 90,
+          render: (h, params) => {
+            const { row } = params;
+            return h("span", {}, this.func.replaceDate(row.crt_time));
+          },
+        },
+        { title: "操作", align: "center", slot: "set", minWidth: 60 },
+      ],
+    };
+  },
+  created() {},
+  mounted() {
+    this.getData();
+  },
+  methods: {
+    goPage(row, type) {
+      //1变更   2查看
+      switch (type) {
+        case 1:
+          this.$router.push({
+            path: "/cms/MatchChange/HXYchange",
+            query: {
+              project_number: row.order_no,
+              project_name: row.residential_name,
+            },
+          });
+          break;
+        case 2:
+          this.$router.push({
+            path: "/cms/MatchChange/HXYcheck",
+            query: {
+              project_number: row.order_no,
+              project_name: row.residential_name,
+            },
+          });
+          break;
+      }
+    },
+    getData(row) {
+      this.axios
+        .post("/api/orders_produce_order_list", {
+          ...row,
+          page_size: this.pageSize,
+          page_index: this.pageIndex,
+        })
+        .then((res) => {
+          this.tableData = res.data.data;
+          this.total = res.data.total;
+          this.abbreviation_list = res.data.abbreviation;
+          this.order_no_list = res.data.order_no;
+          this.residential_name_list = res.data.residential_name;
+          console.log(this.abbreviation_list);
+        });
+    },
+    changeSize(e) {
+      this.pageSize = e;
+      this.pageIndex = 1;
+      this.init();
+    },
+    changePage(e) {
+      this.pageIndex = e;
+      this.init();
+    },
+    init() {
+      this.getData(this.searchData);
+    },
+  },
+};
+</script>
+<style lang="scss" scoped>
+</style>

+ 49 - 190
src/views/MatchChange/list.vue

@@ -1,199 +1,58 @@
 <template>
-  <div style="margin-top: 10px">
-    <Toptitle title="匹配变更列表"> </Toptitle>
-    <div style="height: 80%; overflow: auto">
-      <Form
-        :label-width="100"
-        style="display: flex; flex-wrap: wrap; margin: 10px 0"
-      >
-        <FormItem label="项目编码:" style="width: 250px">
-          <Select
-            size="small"
-            v-model="searchData.order_no"
-            clearable
-            filterable
-            multiple
-          >
-            <Option
-              v-for="(item, index) in order_no_list"
-              :key="index"
-              :value="item"
-              :label="item"
-            />
-          </Select>
-        </FormItem>
-        <FormItem label="项目名称:" style="width: 250px">
-          <Select
-            size="small"
-            v-model="searchData.residential_name"
-            clearable
-            filterable
-            multiple
-          >
-            <Option
-              v-for="(item, index) in residential_name_list"
-              :key="index"
-              :value="item"
-              :label="item"
-            >
-            </Option>
-          </Select>
-        </FormItem>
-        <FormItem label="项目简称:" style="width: 250px">
-          <Select
-            size="small"
-            v-model="searchData.abbreviation"
-            clearable
-            filterable
-            multiple
-          >
-            <Option
-              v-for="(item, index) in abbreviation_list"
-              :key="index"
-              :value="item"
-              :label="item"
-            >
-            </Option>
-          </Select>
-        </FormItem>
-        <FormItem>
-          <Button type="primary" @click="getData(searchData)" size="small"
-            >搜索</Button
-          >
-        </FormItem>
-      </Form>
-      <Table :columns="tableColumns" max-height="550" :data="tableData" border>
-        <template slot="set" slot-scope="{ row }">
-          <a style="margin-right: 10px" @click="goPage(row, 1)">变更</a>
-          <a @click="goPage(row, 2)">查看</a>
-        </template>
-      </Table>
+    <div>
+         <!-- <BSTList v-if="type==1"/>
+         <HXYList v-else-if="type==2"/> -->
     </div>
-    <Page
-      :page-size-opts="[10, 20, 30, 40, 100, 1000]"
-      @on-page-size-change="changeSize"
-      @on-change="changePage"
-      :current="pageIndex"
-      show-total
-      :total="total"
-      show-sizer
-      :page-size="pageSize"
-      style="text-align: center; margin-top: 10px"
-    />
-  </div>
 </template>
 <script>
+// import BSTList from '@/views/leadMatch/weightMemo/BSTlist';
+// import HXYList from '@/views/leadMatch/weightMemo/HXYlist';
 export default {
-  data() {
-    return {
-      abbreviation_list: [],
-      residential_name_list: [],
-      order_no_list: [],
-      searchData: {
-        order_no: [],
-        residential_name: [],
-        abbreviation: [],
-      },
-      total: 0,
-      pageSize: 10,
-      pageIndex: 1,
-      tableData: [],
-      tableColumns: [
-        { title: "项目编码", align: "center", key: "order_no", minWidth: 90 },
-        {
-          title: "项目名称",
-          align: "center",
-          key: "residential_name",
-          minWidth: 90,
-        },
-        {
-          title: "项目简称",
-          align: "center",
-          key: "abbreviation",
-          minWidth: 90,
-        },
-        {
-          title: "制单日期",
-          align: "center",
-          key: "crt_time",
-          minWidth: 90,
-          render: (h, params) => {
-            const { row } = params;
-            return h("span", {}, this.func.replaceDate(row.crt_time));
-          },
-        },
-        { title: "操作", align: "center", slot: "set", minWidth: 60 },
-      ],
-    };
-  },
-  created() {},
-  mounted() {
-    this.getData();
-  },
-  beforeRouteLeave(to, from, next) {
-    if (
-      to.path == "/cms/MatchChange/change" ||
-      to.path == "/cms/MatchChange/check"
-    ) {
-      next();
-    } else {
-      from.meta.keepAlive = false;
-      next();
-    }
-  },
-  methods: {
-    goPage(row, type) {
-      //1变更   2查看
-      switch (type) {
-        case 1:
-          this.$router.push({
-            path: "/cms/MatchChange/change",
-            query: {
-              project_number: row.order_no,
-              project_name: row.residential_name,
-            },
-          });
-          break;
-        case 2:
-          this.$router.push({
-            path: "/cms/MatchChange/check",
-            query: {
-              project_number: row.order_no,
-              project_name: row.residential_name,
-            },
-          });
-          break;
-      }
-    },
-    getData(row) {
-      this.axios
-        .post("/api/orders_produce_order_list", {
-          ...row,
-          page_size: this.pageSize,
-          page_index: this.pageIndex,
-        })
-        .then((res) => {
-          this.tableData = res.data.data;
-          this.total = res.data.total;
-          this.abbreviation_list = res.data.abbreviation;
-          this.order_no_list = res.data.order_no;
-          this.residential_name_list = res.data.residential_name;
-          console.log(this.abbreviation_list);
-        });
-    },
-    changeSize(e) {
-      this.pageSize = e;
-      this.init();
+    data(){
+        return{
+              type:null //1倍思特 2华信源
+        }
     },
-    changePage(e) {
-      this.pageIndex = e;
-      this.init();
-    },
-    init() {
-      this.getData(this.searchData);
-    },
-  },
-};
+    beforeRouteEnter(to,form,next){
+      console.log(to);
+      if(to.query.version==0||to.query.version==1){
+        next('/cms/MatchChange/BSTlist');
+      }else if(to.query.version == 2){
+  next('/cms/MatchChange/HXYlist')
+      }else{
+        next('/cms/MatchChange/BSTlist');
+      }
+    }    //   beforeCreate(){
+       
+    //    this.axios.post('/api/get_cut_order_type').then(res=>{
+    //            if(res.data==1){
+    //             this.$router.push('/cms/leadMatch/weightMemo/BSTlist')
+    //            }else if(res.data==2){
+    //              this.$router.push('/cms/leadMatch/weightMemo/HXYlist')
+    //            }
+    //    })
+    // },
+    // beforeRouteLeave(to, from, next) {
+    //   if (
+    //     to.path == "/cms/leadMatch/weightMemo/HXYedit" || to.path == "/cms/leadMatch/weightMemo/BSTedit"
+    //   ) {
+    //      from.meta.keepAlive = false;
+    //     next();
+    //   } else {
+    //     from.meta.keepAlive = false;
+    //     localStorage.removeItem("list");
+    //     localStorage.removeItem("pageSize");
+    //     localStorage.removeItem("pageIndex");
+    //     localStorage.removeItem("searchList");
+    //     next();
+    //   }
+    // },
+    // components:{
+    //     BSTList,
+    //     HXYList
+    // }
+}
 </script>
 <style lang="scss" scoped>
+
 </style>

+ 9 - 1
src/views/MaterialMannage/edit.vue

@@ -72,7 +72,7 @@
           placeholder="请输入宽度"
         />
       </FormItem>
-      <FormItem label="厚" v-show="isShowInfoHigh">
+      <FormItem label="厚" v-if="!isShowDetail">
         <Input
           :disabled="type == 3 ? true : false"
           v-model="info.high"
@@ -210,6 +210,14 @@
               placeholder="请输入宽度"
             />
           </FormItem>
+          <FormItem label="厚" v-show="isShowDetailWidth">
+            <Input
+              :disabled="type == 3 ? true : false"
+              v-model="rows.high"
+               @on-change='changeSate(rows,key)'
+              placeholder="请输入厚度"
+            />
+          </FormItem>
           <FormItem label="损耗(%)">
             <Input
               type="number"

+ 15 - 1
src/views/MountOrder/details.vue

@@ -61,7 +61,21 @@ export default {
                 },
                 {title:'部件',name:'Select',serverName:'part',placeholder:'部件',value:'',optionValue: 'title', optionName: 'title',
                 option:[]} ,
-                {title:'出库时间',name:'Input',start_server:'start_time',end_server:'end_time',start_value:'',end_value:'',isDate:true,serverName:'id2',start_placeholder:'开始日期',end_placeholder:'结束日期'}
+                {title:'出库时间',name:'Input',start_server:'start_time',end_server:'end_time',start_value:'',end_value:'',isDate:true,serverName:'id2',start_placeholder:'开始日期',end_placeholder:'结束日期'},
+                {
+                    title:'图号批量查询',
+                    value:'',
+                    serverName:'url_numbers',
+                    placeholder:"请输入",
+                    clearable:false,
+                    name:'Input'
+                    },
+                     {title:'批次',
+        name:'Input',
+        clearable:false,
+        serverName:'numbers',
+        placeholder:'请输入'
+        }
             ],
             logList:[],
             tableColums:[

+ 13 - 13
src/views/ProcedureMannage/index.vue

@@ -88,19 +88,19 @@
 <script>
 import { mapState } from "vuex";
 export default {
-  beforeRouteLeave(to, from, next) {
-    if (to.path == "/cms/proceduremannage/edit") {
-      this.$route.meta.keepAlive = true;
-    } else {
-      this.$route.meta.keepAlive = false;
-    }
-    next();
-  },
-  beforeRouteEnter(to, from, next) {
-    next((vm) => {
-      vm.getData(vm.proxyObj);
-    });
-  },
+  // beforeRouteLeave(to, from, next) {
+  //   if (to.path == "/cms/proceduremannage/edit") {
+  //     this.$route.meta.keepAlive = true;
+  //   } else {
+  //     this.$route.meta.keepAlive = false;
+  //   }
+  //   next();
+  // },
+  // beforeRouteEnter(to, from, next) {
+  //   next((vm) => {
+  //     vm.getData(vm.proxyObj);
+  //   });
+  // },
   data() {
     return {
       list: [

+ 1 - 0
src/views/ProcessMannage/index.vue

@@ -11,6 +11,7 @@
       :tableColums="tableColums"
       :tableData="tableData"
       :pageIndex="pageIndex"
+      :pageSize="pageSize"
       :total="total"
     >
       <div slot="titleButton" style="display:flex">

+ 8 - 0
src/views/ProductionOrderList/Deliverylist/DeliveryDetail.vue

@@ -233,6 +233,14 @@ export default {
               { label: "已收货", value: 1 },
               { label: "未收货", value: 0 },
             ],
+          },
+          {
+            title:'图号批量查询:',
+            value:"",
+            name:'Input',
+            serverName:'url_numbers',
+            placeholder:'请输入',
+            clearable:false,
           }
       ],
       logList: [],

+ 11 - 1
src/views/ProductionOrderList/Deliverylist/Deliverylist.vue

@@ -87,6 +87,13 @@
             <Option :value="1" label="已发货"/>
           </Select>
         </FormItem> -->
+         
+             <FormItem label='批次:'>
+                <Input v-model="searchForm.numbers" clearable placeholder="请输入"/>
+            </FormItem>
+             <FormItem label='图号批量查询:' :label-width='150'>
+                <Input v-model="searchForm.url_numbers" clearable placeholder="请输入"/>
+            </FormItem>
         <FormItem :label-width="40">
           <Button type="primary" @click="search">搜索</Button>
         </FormItem>
@@ -263,7 +270,9 @@ export default {
         url_number:[],
         time:[],
         start_time:'',
-        end_time:''
+        end_time:'',
+        url_numbers:'',
+        numbers:''
       },
       type: false, //不展示确认出库百分比与运输百分比不一定的数据
       chooseData: [],
@@ -282,6 +291,7 @@ export default {
           align: "center",
           key: "order_no",
           width: "200",
+          fixed:'left'
         },
         {
           title: "运输单号",

+ 4 - 0
src/views/ProductionOrderList/Deliverylist/matchIronware.vue

@@ -75,6 +75,9 @@
                   clearable
                 />
               </FormItem>
+                <FormItem label='图号批量查询:' :label-width='150'>
+                <Input v-model="modelData.url_numbers" clearable placeholder="请输入" size="small"/>
+            </FormItem>
               <FormItem :label-width="10"
                 ><Button type="primary" size="small" @click="modelSearch"
                   >搜索</Button
@@ -229,6 +232,7 @@ export default {
         url_number: "",
         code: "",
         title: "",
+        url_numbers:''
       },
       detailData: {
         url_number: "",

+ 15 - 1
src/views/ProductionOrderList/Dispatchlist/confirm.vue

@@ -25,7 +25,7 @@
       <template slot="set" slot-scope="{ row }">
         <div>
           <a class="map-margin" @click="editNickname(row)" v-show="row.complete_rate==0">修改班组</a>
-          <a class="map-margin" @click="goOriginalPage(row)">原材料预算</a>
+          <!-- <a class="map-margin" @click="goOriginalPage(row)">原材料预算</a> 先隐藏--> 
           <a
             v-if="row.state != 3"
             class="map-margin"
@@ -259,6 +259,20 @@ export default {
           start_placeholder: "开始日期",
           end_placeholder: "结束日期",
         },
+         {
+          title:'图号批量查询',
+          name:'Input',
+          serverName:'url_numbers',
+          value:'',
+          clearable:false,
+          placeholder:'请输入'
+        },
+          {title:'批次',
+        name:'Input',
+        clearable:false,
+        serverName:'numbers',
+        placeholder:'请输入'
+        }
       ];
     },
   },

+ 18 - 1
src/views/ProductionOrderList/Dispatchlist/details.vue

@@ -202,7 +202,8 @@ export default {
            label:'',
            basic_title:'',
            procedure_title:'',
-           state:''
+           state:'',
+           url_numbers:'',
       },
       form_modal: {
         return_list: [
@@ -452,6 +453,20 @@ export default {
           serverName: "state",
           option: this.room_list,
         },
+         {
+          title:'图号批量查询',
+          name:'Input',
+          serverName:'url_numbers',
+          value:'',
+          clearable:false,
+          placeholder:'请输入'
+        },
+          {title:'批次',
+        name:'Input',
+        clearable:false,
+        serverName:'numbers',
+        placeholder:'请输入'
+        }
       ];
       return array;
     },
@@ -538,6 +553,8 @@ export default {
       // row.page_size = this.pageSize;
       // row.page_index = this.pageIndex;
       // Object.assign(row, this.$route.query);
+      console.log(row);
+       this.formData.url_numbers = row.url_numbers;
       this.pageIndex =1;
       let obj = JSON.parse(JSON.stringify(this.formData));
       this.proxyObj = obj;

+ 22 - 8
src/views/ProductionOrderList/Dispatchlist/list.vue

@@ -132,14 +132,14 @@ export default {
             h("span", {}, this.func.replaceDate(params.row.end_time * 1, 1)),
         },
         // { title: '派工人员', align: 'center', key: 'nickname', minWidth: 200 },
-        {
-          title: "预估工期",
-          align: "center",
-          key: "predict_time",
-          minWidth: 200,
-          render: (h, params) =>
-            h("span", `${(params.row.predict_time / 8).toFixed(1)}天`),
-        },
+        // {
+        //   title: "预估工期",
+        //   align: "center",
+        //   key: "predict_time",
+        //   minWidth: 200,
+        //   render: (h, params) =>
+        //     h("span", `${(params.row.predict_time / 8).toFixed(1)}天`),
+        // },
         {
           title: "操作",
           align: "center",
@@ -235,6 +235,20 @@ export default {
           placeholder: "请输入项目名称",
           value: "",
         },
+         {
+          title:'图号批量查询',
+          name:'Input',
+          serverName:'url_numbers',
+          value:'',
+          clearable:false,
+          placeholder:'请输入'
+        },
+          {title:'批次',
+        name:'Input',
+        clearable:false,
+        serverName:'numbers',
+        placeholder:'请输入'
+        }
         // {
         //   title: '派工人员', name: 'Select', serverName: 'user_id', placeholder: '请选择派工人员', optionName: 'nickname', optionValue: 'id', value: '',
         //   option: this.userList

+ 15 - 0
src/views/ProductionOrderList/InboundForm/details.vue

@@ -416,6 +416,19 @@ export default {
           value: "",
           option: [{ label: 1, value: 1 }],
         },
+        {title:'图号批量查询',
+        name:'Input',
+        clearable:false,
+        value:'',
+        serverName:'url_numbers',
+        placeholder:'请输入'
+        },
+          {title:'批次',
+        name:'Input',
+        clearable:false,
+        serverName:'numbers',
+        placeholder:'请输入'
+        }
       ],
       logList: [],
       tableColums: [
@@ -1070,6 +1083,8 @@ export default {
         params: {
           order_no: this.$route.query.order_no,
           type: this.$route.query.type,
+          page_size:10,
+          page_index:1,
         },
       }).then((res) => {
         res.data.house.map((v) => {

+ 4 - 0
src/views/ProductionOrderList/ProductCheck/detail.vue

@@ -26,6 +26,9 @@
                <Option v-for="(item,index) in urlList" :key="index" :value="item" :label="item"/>
              </Select>
            </FormItem>
+           <FormItem label='图号批量查询:' :label-width='150'>
+            <Input clearable v-model="searchData.url_numbers" placeholder="请输入"/>
+           </FormItem>
           <FormItem label='产品名称:'>
              <Select filterable multiple v-model="searchData.product_title">
                <Option v-for="(item,index) in productList" :key="index" :value="item" :label="item"/>
@@ -204,6 +207,7 @@ export default {
         url_number:[],
         product_title:[],
         procedure_id:'',
+        url_numbers:''
       },
       leftTableColumns:[
          {type:'selection',minWidth:80,align:'center'},

+ 58 - 71
src/views/ProductionOrderList/ProductionPlanlist/BST_two.vue

@@ -62,7 +62,7 @@
           <a
             v-if="persimissionData['详情'] || persimissionData.all"
             style="margin:0 5px"
-            @click="goDetial(row)"
+            @click="goDetail(row)"
             >详情</a
           >
           <!-- <a
@@ -403,36 +403,47 @@ export default {
       selects: [],
       tableheaders: [],
       userList: [],
-      //详情页返回保留搜索数据
-      corssPageData: localStorage.getItem("corssPageData")
-        ? JSON.parse(localStorage.getItem("corssPageData"))
-        : {},
       warningList: [],
+      // keep:false,
     };
   },
-  beforeRouteEnter(to, from, next) {
-    next((vm) => {
-      if (from.path != "/cms/productionorderlist/productionplanlist/details") {
-        localStorage.removeItem("corssPageData");
-      } else {
-        vm.firstEnter = 1;
-      }
-    });
-  },
-  beforeRouteLeave(to, from, next) {
-    if (to.path == "/cms/productionorderlist/productionplanlist/details") {
-      (this.corssPageData.page_index = this.page_index),
-        (this.corssPageData.page_size = this.page_size),
-        localStorage.setItem(
-          "corssPageData",
-          JSON.stringify(this.corssPageData)
-        );
-    } else {
-      localStorage.removeItem("corssPageData");
-    }
-    next((vm) => {});
-  },
+  // beforeRouteEnter(to, from, next) {
+   
+  //     if (from.path == "/cms/productionorderlist/productionplanlist/details"||from.path=='/cms/Dispatching/Dispatching') {
+  //       next(vm=>{
+  //            vm.proxyObj = JSON.parse(localStorage.getItem('proxyObj'));
+  //       vm.set_list = JSON.parse(localStorage.getItem('set_list'));
+  //       vm.page_index = JSON.parse(localStorage.getItem('proxyObj')).page_index;
+  //       vm.page_size = JSON.parse(localStorage.getItem('proxyObj')).page_size;
+  //       vm.keep = true;
+  //       })
+  //     } else{
+  //       next();
+  //     }
+  // },
+  // beforeRouteLeave(to, from, next) {
+  //   if (to.path == "/cms/productionorderlist/productionplanlist/details"||to.path=='/cms/Dispatching/Dispatching') {
+  //              localStorage.setItem('proxyObj',JSON.stringify(this.proxyObj));
+  //              localStorage.setItem('set_list',JSON.stringify(this.set_list));
+  //   } else {
+  //           if(this.keep){
+  //             localStorage.removeItem('proxyObj');
+  //             localStorage.removeItem('set_list');
+  //           }
+  //   }
+  //   next((vm) => {});
+  // },
   created() {
+     this.axios.post("/api/orders_produce_plan_list", {page_size:this.page_size,page_index:this.page_index}).then(
+        (res) => {
+         let data =[];
+          res.data.url_number_list.map(v=>{
+           let obj={};
+           obj.title =v;
+           data.push(obj)
+          })
+          this.url_number_list = data;
+          })
     // 获取紧急程度
     this.axios.get("/api/warning_list").then((res) => {
       this.warningList = res.data.data;
@@ -609,6 +620,20 @@ export default {
             { label: "完成", value: 2 },
           ],
         },
+        {
+          title:'图号批量查询',
+          name:'Input',
+          serverName:'url_numbers',
+          value:'',
+          clearable:false,
+          placeholder:'请输入'
+        },
+         {title:'批次',
+        name:'Input',
+        clearable:false,
+        serverName:'numbers',
+        placeholder:'请输入'
+        }
       ];
     },
   },
@@ -658,53 +683,23 @@ export default {
         row.order_no = order_no;
         this.set_list[0].value = order_no;
       }
+      // if(this.keep){
+      //       this.getData(this.proxyObj);
+      // }else{
       row.sub_state = 5;
-      if (this.firstEnter == 1) {
-        this.corssPageData = JSON.parse(localStorage.getItem("corssPageData"));
-        row = this.corssPageData;
-        this.proxyObj = row;
-        this.searchData(row);
-      } else {
         this.page_index = 1;
         row.page_index = this.page_index;
         row.page_size = this.page_size;
         this.proxyObj = row;
         this.getData(row);
-      }
+      // }
     },
     searchData(row) {
-      if (this.firstEnter == 1) {
-        this.page_index = this.corssPageData.page_index;
-        this.page_size = this.corssPageData.page_size;
-        this.set_list[0].value = this.corssPageData.order_no;
-        this.set_list[1].value = this.corssPageData.residential_name;
-        this.set_list[3].value = this.corssPageData.warning_state;
-        this.set_list[4].value = this.corssPageData.state;
-        this.set_list[2].start_value = this.corssPageData.start_time
-          ? this.corssPageData.start_time
-          : "";
-        this.set_list[2].end_value = this.corssPageData.end_time
-          ? this.corssPageData.end_time
-          : "";
-        this.corssPageData.type = this.$route.query.type;
-        this.getData(this.corssPageData);
-      } else {
         this.page_index = 1;
         row.page_index = this.page_index;
         row.page_size = this.page_size;
-        this.corssPageData.order_no = this.set_list[0].value;
-        this.corssPageData.residential_name = this.set_list[1].value;
-        this.corssPageData.warning_state = this.set_list[3].value;
-        this.corssPageData.state = this.set_list[4].value;
-        this.corssPageData.start_time = this.func.setDate(
-          this.set_list[2].start_value
-        );
-        this.corssPageData.end_time = this.func.setDate(
-          this.set_list[2].end_value
-        );
         this.proxyObj = row;
         this.getData(row);
-      }
     },
     changePage(e) {
       this.page_index = e;
@@ -718,9 +713,8 @@ export default {
       this.getData(this.proxyObj);
     },
     getData(row) {
-      this.axios("/api/orders_produce_plan_list", { params: row }).then(
+      this.axios.post("/api/orders_produce_plan_list", { ...row }).then(
         (res) => {
-          this.firstEnter++;
           this.tableData = res.data.data;
           let header = [];
           if(res.data.header&&res.data.header.length!=0){
@@ -741,19 +735,12 @@ export default {
           this.setTableColumns = header;
           this.total = res.data.total;
           // this.tableheaders = res.data.tableSet || []
-          let data =[];
-          res.data.url_number_list.map(v=>{
-           let obj={};
-           obj.title =v;
-           data.push(obj)
-          })
-          this.url_number_list = data;
           // this.url_number_list.unshift({title:'全选'})
           this.loading = false;
         }
       );
     },
-    goDetial(row) {
+    goDetail(row) {
       this.$router.push({
         path: "/cms/productionorderlist/productionplanlist/details",
         query: {

+ 14 - 0
src/views/ProductionOrderList/ProductionPlanlist/details.vue

@@ -149,6 +149,20 @@ export default {
           value: "",
           option: [{ label: '未派工', value: 0 },{ label: '已派工', value: 1 }],
         },
+         {
+          title:'图号批量查询',
+          name:'Input',
+          serverName:'url_numbers',
+          value:'',
+          clearable:false,
+          placeholder:'请输入'
+        },
+           {title:'批次',
+        name:'Input',
+        clearable:false,
+        serverName:'numbers',
+        placeholder:'请输入'
+        }
       ],
       tableColums: [
         { type: "selection", align: "center", fixed: "left", width: "100" },

+ 0 - 18
src/views/ProductionOrderList/ProductionPlanlist/list.vue

@@ -12,24 +12,6 @@ export default {
     typeOne,
     BSTTwo,
   },
-  beforeRouteLeave(to, from, next) {
-    if (to.path == "/cms/productionorderlist/productionplanlist/details") {
-      next((vm) => {});
-    } else {
-      from.meta.keepAlive = false;
-      next((vm) => {});
-    }
-  },
-  beforeRouteLeave(to, from, next) {
-    if (
-      to.path == "/cms/productionorderlist/productionplanlist/details"
-    ) {
-      next();
-    } else {
-      from.meta.keepAlive = false;
-      next();
-    }
-  },
 };
 </script>
 <style scoped>

+ 68 - 35
src/views/ProductionOrderList/ProductionsOrder/BST_Decorationlist.vue

@@ -627,6 +627,18 @@ export default {
           placeholder: "请选择图号",
           option: [],
         },
+        {title:'图号批量查询',
+        name:'Input',
+        clearable:false,
+        serverName:'url_numbers',
+        placeholder:'请输入'
+        },
+         {title:'批次',
+        name:'Input',
+        clearable:false,
+        serverName:'numbers',
+        placeholder:'请输入'
+        }
       ],
       tableColums: [
         { type: "selection", width: 100, align: "center" },
@@ -1215,58 +1227,79 @@ switch(e){
     },
     openModal(row,type) {
       if (Array.isArray(row)) {
+        console.log(row);
+         if(!row.every(v=>(v.part_state==0))){
+          console.log(111);
+            return this.$Message.warning('选择的数据中存在已下排产的数据!')
+          }
         //批量下生产操作
         if (row.length < 1) {
-          if (
-            this.formData.house ||
-            this.formData.unit ||
-            this.formData.layer ||
-            this.formData.number_detail ||
-            this.formData.part ||
-            this.formData.product ||
-            this.formData.process_router ||
-            this.formData.part_state ||
-            this.formData.img_number
-          ) {
-            //  this.axios.post('/api/orders_plan',this.formData);
-            let data = { zero: {}, type: 1 };
-            data.zero.order_no = this.$route.query.order_no;
-            for (let i in this.formData) {
-              data.zero[i] = this.formData[i];
-            }
-            this.downProduction({
-              title: "下生产排产",
-              type: 1,
-              params: data,
-              then: (e) => {
-                this.getData(this.proxyObj);
-              },
-              cancel: (e) => {},
-            });
-            return;
-          } else {
             return this.$Message.warning("请至少选择一项");
-          }
-        }
-        let result = [];
+          
+        }else{
+//  if (
+//             this.formData.house ||
+//             this.formData.unit ||
+//             this.formData.layer ||
+//             this.formData.number_detail ||
+//             this.formData.part ||
+//             this.formData.product ||
+//             this.formData.process_router ||
+//             this.formData.part_state ||
+//             this.formData.img_number
+//           ) {
+            //  this.axios.post('/api/orders_plan',this.formData);
+            // let data = { zero: {}, type: 1 };
+            // data.zero.order_no = this.$route.query.order_no;
+            // for (let i in this.formData) {
+            //   data.zero[i] = this.formData[i];
+            // }
+            // pr_id:this.planInfo.pr_id,time_list:{...arr}
+            // this.downProduction({
+            //   title: "下生产排产",
+            //   type: 1,
+            //   params: data,
+            //   then: (e) => {
+            //     this.getData(this.proxyObj);
+            //   },
+            //   cancel: (e) => {},
+            // });
+          // } else{
+          //   return;
+          // }
+           let result = [];
         row.map((v) => result.push(v.pr_id));
         this.planInfo.pr_id = result;
+         this.axios.get('/api/basics_procedure_index').then(res=>{
+         this.basics_procedure_list = res.data.data.filter(v=>{
+           return v.type==1||v.type==4
+         })
+      })
+         this.show_plan = true;
+        }
+       
       } else {
-        
+         
         if(type){
 //一键下生产
   this.unPrId=true; 
         }else{
  //单个下生产
+ if(row.part_state==1){
+            return this.$Message.warning('选择的数据已下排产!')
+          }
  this.planInfo.pr_id = [row.pr_id];
+ 
+     
         }
-      }
-       this.axios.get('/api/basics_procedure_index').then(res=>{
+         this.axios.get('/api/basics_procedure_index').then(res=>{
          this.basics_procedure_list = res.data.data.filter(v=>{
            return v.type==1||v.type==4
          })
       })
-      this.show_plan = true;
+         this.show_plan = true;
+      }
+      
     },
     selectTable(e) {
       this.selects = e;

+ 2 - 0
src/views/PurchasingManage/PurchasingOrder/edit.vue

@@ -1094,6 +1094,8 @@ export default {
       modalTableColumns: [
         { title: '全选', type: 'selection', align: 'center', minWidth: 60 },
         { title: '物料名称', key: 'title', align: 'center', minWidth: 110 },
+         {title:"品牌",key:'brand_title',align:'center',minWidth:110,ellipsis:true,tooltip:true},
+        {title:'物料编码',key:'code',align:'center',minWidth:110,ellipsis:true,tooltip:true},
         { title: '物料规格', key: 'model', align: 'center', minWidth: 110 },
         { title: '计量单位', key: 'unit', align: 'center', minWidth: 110 },
       ],

+ 2 - 0
src/views/PurchasingManage/RequisitionOrder/edit.vue

@@ -693,6 +693,8 @@ export default {
       modalTableColumns: [
         { title: "全选", type: "selection", align: "center", minWidth: 60 },
         { title: "物料名称", key: "title", align: "center", minWidth: 110 },
+        {title:"品牌",key:'brand_title',align:'center',minWidth:110,ellipsis:true,tooltip:true},
+        {title:'物料编码',key:'code',align:'center',minWidth:110,ellipsis:true,tooltip:true},
         { title: "物料规格", key: "model", align: "center", minWidth: 110 },
         { title: "计量单位", key: "unit", align: "center", minWidth: 110 },
       ],

+ 2 - 2
src/views/SealApprove/edit.vue

@@ -150,8 +150,8 @@ formData:{
             this.users = res.data.data
         })
         //获取项目列表
-        this.axios.post('/api/cost_order_list').then(res=>{
-             this.orderNOList = res.data
+        this.axios.post('/api/contract_list').then(res=>{
+             this.orderNOList = res.data.data;
         })
     },
     mounted(){

+ 52 - 19
src/views/SealApprove/list.vue

@@ -135,7 +135,7 @@
           ></DatePicker>
         </FormItem>
         <FormItem :label-width="50">
-          <Button type="primary" @click="initData(searchData)">搜索</Button>
+          <Button type="primary" @click="handleSearch">搜索</Button>
         </FormItem>
       </Form>
       <div class="before_table">
@@ -276,6 +276,8 @@
 export default {
   data() {
     return {
+      proxyData:{},
+      keep:false,
       printData:[],
       loading: false,
       submit_state: false,
@@ -374,10 +376,49 @@ export default {
       this.users = res.data.data;
     });
   },
+  beforeRouteLeave(to,from,next){
+    if(to.path=='/cms/SealApprove/edit'){
+           localStorage.setItem('searchData',JSON.stringify(this.searchData));
+            localStorage.setItem('proxyData',JSON.stringify(this.proxyData));
+            localStorage.setItem('pageSize',this.page_size);
+            localStorage.setItem('pageIndex',this.page_index);
+    }else{
+      if(this.keep){
+            localStorage.removeItem('searchData');
+            localStorage.removeItem('proxyData');
+            localStorage.removeItem('pageSize');
+            localStorage.removeItem('pageIndex');
+      }
+    }
+    next();
+  },
+  beforeRouteEnter(to,from,next){
+       if(from.path=='/cms/SealApprove/edit'){
+          next(vm=>{
+            vm.page_index = localStorage.getItem('pageIndex')*1;
+            vm.page_size = localStorage.getItem('pageSize')*1;
+            vm.searchData = JSON.parse(localStorage.getItem('searchData'));
+            vm.proxyData = JSON.parse(localStorage.getItem('proxyData'));
+            vm.keep=true;
+          })
+       }else{
+        next()
+       }
+  },
   mounted() {
-    this.initData();
+    if(this.keep){
+this.initData(this.proxyData);
+    }else{
+       this.initData();
+    }
+   
   },
   methods: {
+    handleSearch(){
+       let obj = JSON.parse(JSON.stringify(this.searchData));
+       this.proxyData = obj;
+       this.initData(obj);
+    },
    async printRow(type,obj){
          if(type){
          await this.axios.post('/api/seal_detail',{seal_no:obj.seal_no}).then(res=>{
@@ -469,7 +510,7 @@ export default {
                 .then((res) => {
                   if (res.code == 200) {
                     this.$Message.success(res.msg);
-                    this.initData(this.searchData);
+                    this.initData(this.proxyData);
                   }
                 });
             },
@@ -502,7 +543,7 @@ export default {
                       this.page_index--;
                     }
                     this.$Message.success(res.msg);
-                    this.initData(this.searchData);
+                    this.initData(this.proxyData);
                   }
                 });
             },
@@ -528,7 +569,7 @@ export default {
                 if (this.page_index != 1 || this.tableData.length == 1) {
                   this.page_index--;
                 }
-                this.initData(this.searchData);
+                this.initData(this.proxyData);
               }
             });
         },
@@ -536,12 +577,12 @@ export default {
     },
     changePage(e) {
       this.page_index = e;
-      this.initData(this.searchData);
+      this.initData(this.proxyData);
     },
     changeSize(e) {
       this.page_size = e;
       this.page_index = 1;
-      this.initData(this.searchData);
+      this.initData(this.proxyData);
     },
     submit() {
       if (!this.check_id) {
@@ -561,7 +602,7 @@ export default {
           .then((res) => {
             if (res.code == 200) {
               this.$Message.success(res.msg);
-              this.initData(this.searchData);
+              this.initData(this.proxyData);
               this.check_id = "";
               this.show_submit = false;
               this.submit_state = false;
@@ -577,7 +618,7 @@ export default {
           .then((res) => {
             if (res.code == 200) {
               this.$Message.success(res.msg);
-              this.initData(this.searchData);
+              this.initData(this.proxyData);
               this.check_id = "";
               this.show_submit = false;
             }
@@ -604,7 +645,7 @@ export default {
                   .then((res) => {
                     if (res.code == 200) {
                       this.$Message.success(res.msg);
-                      this.initData(this.searchData);
+                      this.initData(this.proxyData);
                     }
                   });
               },
@@ -624,7 +665,7 @@ export default {
                 .then((res) => {
                   if (res.code == 200) {
                     this.$Message.success(res.msg);
-                    this.initData(this.searchData);
+                    this.initData(this.proxyData);
                     // this.undata_navData();
                   }
                 });
@@ -671,14 +712,6 @@ export default {
       }
     },
   },
-  beforeRouteLeave(to, from, next) {
-    if (to.path == "/cms/SealApprove/edit") {
-      next();
-    } else {
-      from.meta.keepAlive = false;
-      next();
-    }
-  },
 };
 </script>
 <style lang="scss" scoped>

+ 8 - 0
src/views/cms.vue

@@ -169,6 +169,13 @@ export default {
         : lastChild
         ? lastChild.title
         : childData.title;
+         let version = nextEndChild
+        ? nextEndChild.version
+        : endChild
+        ? endChild.version
+        : lastChild
+        ? lastChild.version
+        : childData.version;
       let id = nextEndChild
         ? nextEndChild.id
         : endChild
@@ -182,6 +189,7 @@ export default {
           title: title,
           id: id,
           permisssions_id: permisssions_id,
+          version:version,
         },
       });
     },

+ 42 - 1
src/views/leadMatch/Ironware/edit.vue

@@ -15,6 +15,7 @@
           <Button type="primary" style="margin-right:10px;"
             >导入</Button
           >
+          <Button type="primary" v-if="$route.query.type==3" @click="handleProduct(null,0)">下生产</Button>
         </Upload>
             <Button style="margin-right:10px;" @click="back">返回</Button>
             <Button @click="postData" v-show="$route.query.type!=3">保存</Button>
@@ -58,6 +59,7 @@
         <Table :data='tableData' :columns='$route.query.type==1?tableColumns_add:tableColumns_edit' border max-height='550' @on-selection-change='choose'>
    <template slot="set" slot-scope="{row,index}">
        <a @click="del(row,index)">删除</a>
+       <a v-show="$route.query.type==3&&row.state==0" @click="handleProduct(row,1)" style="margin-left:10px">下生产</a>
    </template>
         </Table>
         </div>
@@ -101,6 +103,7 @@ export default {
                    {title:"操作",align:'center',minWidth:80,key:'set',slot:'set'},
         ],
         tableColumns_edit:[
+            {align:'center',minWidth:60,type:'selection'},
              {title:"序号",align:'center',minWidth:80,type:'index'},
             {title:"图号",align:'center',minWidth:80,key:'url_number'},
               {title:"名称",align:'center',minWidth:80,key:'title'},
@@ -108,7 +111,11 @@ export default {
                 {title:"单位",align:'center',minWidth:80,key:'unit'},
                  {title:"数量",align:'center',minWidth:80,key:'num'},
                   {title:"备注",align:'center',minWidth:150,key:'remark'},
-                   {title:"操作",align:'center',minWidth:80,key:'set',slot:'set'},
+                  {title:"下生产状态",align:"center",minWidth:120,key:'state',render:(h,params)=>{
+                    const {row} = params;
+                    return h('span',{},row.state==0?'未下生产':'已下生产')
+                  }},
+                   {title:"操作",align:'center',minWidth:150,key:'set',slot:'set'},
         ],
         pageSize:10,
         pageIndex:1,
@@ -128,6 +135,40 @@ export default {
       
     },
     methods:{
+        handleProduct(row,type){
+            let data = {
+                order_no:this.$route.query.project_number,
+                id:[],
+            };
+               if(type){
+                data.id = [row.id];
+
+               }else{//批量;
+                if(this.selectData.length==0){
+                    return this.$Message.warning('请先选择数据!');
+                }
+                this.selectData.forEach(v=>{
+                    data.id.push(v.id)
+                })
+               }
+               this.$Modal.confirm({
+            title: '确认?',
+            content: '确认下生产吗?',
+            onOk: () => {
+              this.axios({
+                method: 'post',
+                url: '/api/cut_order_alloy_pull',
+                data: {
+                  ...data
+                }
+              }).then((res) => {
+                this.$Message.success(res.msg)
+                this.initData()
+              }).catch((err) => { });
+            },
+            onCancel: () => { }
+          })
+        },
         del_total(){
             let indexs = [];
             this.selectData.forEach(element => {

+ 18 - 18
src/views/leadMatch/Ironware/list.vue

@@ -122,24 +122,24 @@ export default {
             this.initData(this.proxyData);
         }
     },
-    beforeRouteLeave(to, from, next) {
-      if (
-        to.path == "/cms/leadMatch/Ironware/edit"
-      ) {
-        from.meta.keepAlive = false;
-        localStorage.setItem("list", JSON.stringify(this.searchData));
-        localStorage.setItem("pageSize", this.pageSize);
-        localStorage.setItem("pageIndex", this.pageIndex);
-        next();
-      } else {
-        from.meta.keepAlive = false;
-        localStorage.removeItem("list");
-        localStorage.removeItem("pageSize");
-        localStorage.removeItem("pageIndex");
-        localStorage.removeItem("searchList");
-        next();
-      }
-    }
+    // beforeRouteLeave(to, from, next) {
+    //   if (
+    //     to.path == "/cms/leadMatch/Ironware/edit"
+    //   ) {
+    //     from.meta.keepAlive = false;
+    //     localStorage.setItem("list", JSON.stringify(this.searchData));
+    //     localStorage.setItem("pageSize", this.pageSize);
+    //     localStorage.setItem("pageIndex", this.pageIndex);
+    //     next();
+    //   } else {
+    //     from.meta.keepAlive = false;
+    //     localStorage.removeItem("list");
+    //     localStorage.removeItem("pageSize");
+    //     localStorage.removeItem("pageIndex");
+    //     localStorage.removeItem("searchList");
+    //     next();
+    //   }
+    // }
 }
 </script>
 <style lang="scss" scoped>

+ 345 - 7
src/views/leadMatch/MatchList/BSTMatchCheck.vue

@@ -184,6 +184,29 @@
               </Select>
             </span>
           </Col>
+           <Col span="4">
+            <span>楼层:</span>
+            <span>
+              <Select
+                filterable
+                multiple
+                transfer
+                clearable
+                filter-by-label
+                v-model="matchedInfo.layer"
+                :max-tag-count="2"
+                size="small"
+                style="width: 150px"
+              >
+                <Option
+                  v-for="(item, index) in layerList"
+                  :key="index"
+                  :label="item"
+                  :value="item"
+                ></Option>
+              </Select>
+            </span>
+          </Col>
           <Col span="4">
             <span>房号:</span>
             <span>
@@ -261,9 +284,16 @@
                   @click="handleHiddenMatchedDetail(matched_detail)"
                   size="small"
                   type="text"
+                  style="margin-right:10px"
                 >
                   {{ matched_detail.isHidden ? "展开" : "收缩" }}
                 </Button>
+                 <Button
+                @click="handlePrint"
+                type="primary"
+                size="small"
+                >打印</Button
+              >
               </Col>
             </Row>
             <Table
@@ -337,6 +367,138 @@
       <div style="margin-top:30px"><span style="margin-right:10px">用户姓名:</span><Input v-model="delData.user_name" style="width:70%"></Input></div>
       <div style="margin-top:30px"><span style="margin:0 10px 0 23px">密码:</span><Input v-model="delData.password" style="width:70%"></Input></div>
     </Modal>
+    <div class="print-table" ref="print">
+      <div v-for="(item,index) in printData" :key="index" class="print-cell">
+      <div>
+     <div style="text-align:center">
+            <h1>苏州倍思特木制品有限公司</h1>
+     </div>
+        <div style="text-align:center">
+          <h2>产品开料明细表</h2>
+        </div>
+        <div class="header" style="margin-bottom:10px">
+          <div><span>项目名称:</span><span>{{$route.query.project_name}}</span></div>
+          <div><span>产品名称:</span><span>{{printTopData.product_name}}</span></div>
+          <div><span>批&nbsp;&nbsp;量&nbsp;&nbsp;数:</span><span></span></div>
+          <div><span>项目编号:</span><span>{{$route.query.project_number}}</span></div>
+        </div>
+        <div class="header" style="margin-bottom:5px">
+          <div><span>区&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;域:</span><span>{{printTopData.region}}</span></div>
+          <div><span>饰面名称:</span><span></span></div>
+          <div><span>下单日期:</span><span></span></div>
+          <div><span>图&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;号:</span><span>{{printTopData.image_number}}</span></div>
+        </div>
+        <div class="header" style="margin-bottom:5px">
+          <div style="width:100%"><span>房&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;号:</span><span style="width:90%">{{printTopData.house_number.toString()}}</span></div>
+        </div>
+        </div>
+       <table cellspacing="0" cellpadding="0">
+           <tr>
+            <td rowspan="2">序号</td>
+            <td rowspan="2">部件名称</td>
+            <td rowspan="2">行号</td>
+            <td colspan="3">材料</td>
+            <td rowspan="2">毛料尺寸</td>
+            <td rowspan="2" style="width:100px">毛料合并的行号</td>
+            <td rowspan="2">数量</td>
+            <td rowspan="2">精裁尺寸</td>
+            <td rowspan="2">数量</td>
+            <td rowspan="2">贴皮</td>
+            <td rowspan="2">精裁</td>
+            <td rowspan="2">工艺要求</td>
+           </tr>
+           <tr>
+
+                    <td>
+                        皮
+                    </td>
+                    <td>
+                       板材
+                    </td>
+                    <td>
+                       皮
+                    </td>
+                </tr>
+            <tr v-for="(_item,_index) in item" :key="_index">
+              <!-- <td>{{_item.house_number}}</td> -->
+              <td :rowspan="_item.count" v-if="_item.index">{{_item.index}}</td>
+              <td><span>{{_item.part_name}}</span></td>
+              <td><span>{{_item.line}}</span></td>
+              <td><span>{{_item.skin1}}</span></td>
+              <td><span>{{_item.board1 +';'+_item.board2}}</span></td>
+              <td><span>{{_item.skin2}}</span></td>
+              <td><span>{{_item.wool_size}}</span></td>
+              <td><span>{{_item.wool_line}}</span></td>
+              <td><span>{{_item.wool_number}}</span></td>
+              <td><span>{{_item.cut_size}}</span></td>
+              <td :rowspan="_item.numCount" v-if="_item.numCount"><span>{{_item.total_number}}</span></td>
+              <td><span>{{(_item.single_stick*1*_item.total_number).toFixed(2)}}</span></td>
+              <td><span>{{(_item.single_cut*1*_item.total_number).toFixed(2)}}</span></td>
+              <td><span>{{_item.remark}}</span></td>
+            </tr>
+            <tr v-if="index==printData.length-1">
+              <td colspan="11" style="text-align:right">小计</td>
+              <td>{{total1}}</td>
+              <td>{{total2}}</td>
+              <td></td>
+            </tr>
+            <!-- <tr v-if="index==printData.length-1">
+              <td rowspan="3" style="width:70px">用料合计</td>
+              <td rowspan="2" colspan="2" style="width:100px">木皮(M²)(40%损耗)</td>
+              <td rowspan="2" colspan="2" style="width:80px">油漆(M²)</td>
+              <td rowspan="2" colspan="2" style="width:120px">实木(50%损耗)</td>
+              <td rowspan="2" >框料</td>
+              <td colspan="4">中纤板(张)(20%损耗):</td>
+              <td colspan="4">多层板(张)(20%损耗):</td>
+            </tr>
+            <tr v-if="index==printData.length-1">
+              <td colspan="4">
+                <span class="center_process">3中</span>
+                <span class="center_process">3中</span>
+                <span class="center_process">3中</span>
+                <span class="center_process">3中</span>
+                <span class="center_process">3中</span>
+                <span class="center_process" style="border:none">3中</span>
+              </td>
+              <td colspan="4">
+                <span class="center_process">3多</span>
+                <span class="center_process">3多</span>
+                <span class="center_process">3多</span>
+                <span class="center_process">3多</span>
+                <span class="center_process">3多</span>
+                <span class="center_process" style="border:none">3多</span>
+              </td>
+            </tr>
+            <tr v-if="index==printData.length-1">
+              <td colspan="2">57.78</td>
+              <td colspan="2">41.27</td>
+              <td colspan="2">0</td>
+              <td></td>
+              <td colspan="4">
+                <span class="center_process">1</span>
+                <span class="center_process">1</span>
+                <span class="center_process">1</span>
+                <span class="center_process">1</span>
+                <span class="center_process">1</span>
+                <span class="center_process" style="border:none">1</span>
+              </td>
+               <td colspan="4">
+                <span class="center_process">1</span>
+                <span class="center_process">1</span>
+                <span class="center_process">1</span>
+                <span class="center_process">1</span>
+                <span class="center_process">1</span>
+                <span class="center_process" style="border:none">1</span>
+              </td>
+              
+            </tr> -->
+       </table>
+        <div style="display:flex;margin-top:10px">
+            <div style="width:50%"><span style="margin-left:40px">审核:</span></div>
+            <div style="width:50%">工艺:</div>
+        </div>
+    </div>
+    </div>
   </div>
 </template>
 
@@ -352,6 +514,8 @@ export default {
   data() {
     // 这里存放数据
     return {
+      printTopData:{},
+      printData:[],
       delData:{
         user_name:'',
         password:'',
@@ -367,10 +531,12 @@ export default {
         region: [],
         number: [],
         part_name: [],
+        layer:[],
       },
       urlMatchedList: [],
       productMatchedList: [],
       regionMatchedList: [],
+      layerList:[],
       numberMatchedList: [],
       partNameMatchedList: [],
       matchedDetailList: [],
@@ -382,6 +548,8 @@ export default {
                         width: 100 },
         { title: "区域名称", align: "center", key: "region",  resizable: true,
                         width: 160 },
+       { title: "楼层", align: "center", key: "layer",  resizable: true,
+                        width: 120 },
         { title: "房号", align: "center", key: "house_number",  resizable: true,
                         width: 160 },
         { title: "部件名称", align: "center", key: "part_name",  resizable: true,
@@ -439,7 +607,8 @@ export default {
       matchedSelectedList: [],
       delList:[],
       showDel:false,
-    
+      total1:0,
+      total2:0
     };
   },
   // 生命周期 - 创建完成(可以访问当前this实例)
@@ -453,6 +622,9 @@ export default {
     this.initData();
   },
   methods: {
+    handlePrint(){
+      this.$print(this.$refs.print) // 使用
+    },
     important_del(){
        this.axios.post('/api/delete_cut_order_product',{id:[...this.delList],...this.delData}).then(res=>{
          if(res.code == 200){
@@ -579,14 +751,11 @@ MatchedSelect(row,e){
       });
     },
     initData() {
-      this.axios
-        .get("/api/bst_matching_on_list", {
-          params: {
+      this.axios.post("/api/bst_matching_on_list", {
             id: this.matchedInfo.id,
             image_number: this.matchedInfo.image_number,
             product_name: this.matchedInfo.product_name,
-          },
-        })
+          },)
         .then((res) => {
           this.matchedList = [];
           res.data.list.map((v) => {
@@ -628,13 +797,119 @@ MatchedSelect(row,e){
             number: this.matchedInfo.number,
             part_name: this.matchedInfo.part_name,
             region: this.matchedInfo.region,
+            layer:this.matchedInfo.layer
           })
           .then((res) => {
             this.regionMatchedList = res.data.region;
+            this.layerList = res.data.layer;
             this.numberMatchedList = res.data.number;
             this.partNameMatchedList = res.data.part_name;
             this.matchedDetailList = res.data.list;
-          });
+            this.printTopData=row;
+            this.printData = [];
+            let data = [];
+              res.data.list.forEach(v=>{
+              data=data.concat(JSON.parse(JSON.stringify(v.detail)));
+            })
+
+            let total1 = [];
+            let total2 = [];
+          let copyData = [];
+          let totalIndex = 0;
+          let total_number = 0;
+          let houseNumber=[];
+        data.forEach((v,i)=>{
+           if(houseNumber.indexOf(v.house_number)==-1){
+                houseNumber.push(v.house_number);
+              }
+        
+              if(copyData.filter(val=>(val.compose_name==v.compose_name&&val.line==v.line)).length==0){
+                totalIndex++;
+                copyData.push(v);
+                total_number = 0;
+              }
+              total_number+=v.num;
+         copyData[totalIndex-1].total_number = total_number; 
+          })
+           copyData.forEach(b=>{
+            total1.push(b.single_stick*1*b.total_number);
+            total2.push(b.single_cut*1*b.total_number);
+          })
+          this.total1 = (total1.reduce((pre,cur)=>{
+           return cur+pre
+          })).toFixed(2);
+          this.total2 = (total2.reduce((pre,cur)=>{
+           return cur+pre
+          })).toFixed(2);
+          let totalData = this.func.splitArr(copyData,24);
+          console.log(totalData);
+          let realData = [];
+          let recordIndex=1;
+          
+        totalData.forEach((val,idx)=>{
+          let itemData = [];
+        let count=1;
+        let numCount=1;
+          let index = 0;
+          let numIndex =0;
+          val.forEach((item,idn)=>{
+              // if(itemData.filter(x=>(x.compose_name===item.compose_name)).length>0){
+              //   itemData.push(item);
+              // }else{
+              //   item.index = index;
+              //   index++;
+              //   itemData.push(item)
+              // }
+              // item.count = val.filter(c=>(c.compose_name===item.compose_name)).length;
+              if(idn==0){
+                item.count=count;
+                item.numCount = numCount;
+                 numIndex=0;
+                if(idx!=0){
+                      if(item.compose_name!==totalData[idx-1][23].compose_name){
+                        recordIndex++;
+                       
+                      }
+                       item.index = recordIndex;
+                }else{
+                    item.index=recordIndex;
+                }
+              
+                  itemData.push(JSON.parse(JSON.stringify(item)));
+                  
+              }
+              if(idn!=0&&item.compose_name==val[idn-1].compose_name){
+                   count++;
+                   if(item.line==val[idn-1].line){
+                    numCount++;
+                   }else{
+                    numCount=1;
+              
+                    numIndex = idn;
+                   }
+                  itemData[index].count=count;
+                  
+                  itemData.push(JSON.parse(JSON.stringify(item)));
+                  itemData[numIndex].numCount = numCount;
+                 
+              }
+              if(idn!=0&&item.compose_name!=val[idn-1].compose_name){
+                recordIndex++;
+            count=1;
+            numCount = 1;
+            index=idn;
+            item.count =count;
+            numIndex = idn;
+            item.numCount = numCount;
+            item.index = recordIndex;
+            itemData.push(JSON.parse(JSON.stringify(item)));
+              };
+          })
+          realData[idx]=itemData;
+        })
+        this.printTopData.house_number = houseNumber;
+        this.printData = realData;
+         });
     },
   },
   // 监听属性 类似于data概念
@@ -678,4 +953,67 @@ MatchedSelect(row,e){
 /deep/.del_check .ivu-checkbox .ivu-checkbox-inner{
   border-radius: 50%;
 }
+ table {
+        width: 100%;
+        border-collapse: collapse;
+          font-size:12px;
+        font-weight:100;
+         letter-spacing: 1px;
+    }
+
+    td {
+        border: 1px solid #000;
+        text-align: center;
+        color: #000;
+    }
+// /deep/.ivu-table-header thead tr th,td{
+//   padding:0
+// }
+.header{
+  display: flex;
+  div{
+    width: 25%;
+      span:nth-child(1){
+        border: 1;
+           display: inline-block;
+      
+      }
+      span:nth-child(2){
+display: inline-block;
+border-bottom: 1px solid black;
+width: 50%;
+      }
+    
+  }
+}
+.center_process{
+  width: 16%;
+  display: inline-block;
+  border-right: 1px solid black;
+}
+.print-table{
+  display: none;
+}
+ @media print {
+        button {
+            display: none;
+        }
+        .print-table{
+            display: block;
+            width: 100%;
+        }
+        .print-cell{
+            color: black;
+            margin:0 auto;
+            width: 262mm;
+            height: auto;
+             page-break-after: always;
+        }
+        #show-table{
+           display: none;
+           
+        }
+        @page {
+        }
+    }
 </style>

+ 1 - 1
src/views/leadMatch/MatchList/BSTMatchList.vue

@@ -151,7 +151,7 @@ export default {
           resizable: true,
                         width: 350,
           render: (h, params) => {
-            return h("span", {}, this.func.replaceDate(params.row.crt_time));
+            return h("span", {}, this.func.replaceDateNoHMS(params.row.crt_time));
           },
         },
         { title: "操作", align: "center", minWidth: 150, slot: "setSlot" },

+ 42 - 3
src/views/leadMatch/MatchList/HXYMatchCheck.vue

@@ -80,6 +80,35 @@
             </Select>
           </span>
         </Col>
+         <Col span="5">
+          <span>批次:</span>
+          <span>
+            <Select
+              filterable
+              multiple
+              filter-by-label
+              clearable
+              transfer
+              v-model="matchedInfo.numbers"
+              :max-tag-count="2"
+              size="small"
+              style="width: 150px"
+            >
+              <Option
+                v-for="(item, index) in numberList"
+                :key="index"
+                :label="item"
+                :value="item"
+              ></Option>
+            </Select>
+          </span>
+        </Col>
+         <Col span="5">
+          <span>生产通知单号:</span>
+          <span>
+            <Input v-model="matchedInfo.product_no" clearable placeholder="请输入生产通知单号" style="width: 150px" size="small"/>
+          </span>
+        </Col>
         <Col span="2">
           <Button @click="initData" size="small" type="primary">
             搜索
@@ -110,12 +139,18 @@
             </div>
             <span>图号:{{ matched_info.image_number }}</span>
           </Col>
+          <Col span="2">
+            <span>批次:{{ matched_info.numbers }}</span>
+          </Col>
           <Col span="3">
             <span>产品名称:{{ matched_info.product_name }}</span>
           </Col>
           <Col span="3">
             <span>区域:{{ matched_info.region }}</span>
           </Col>
+           <Col span="3">
+            <span>生产通知单号:{{ matched_info.product_no }}</span>
+          </Col>
           <Col span="2">
             <span>{{
               matched_info.matching_status == 0
@@ -352,6 +387,7 @@ export default {
   data() {
     // 这里存放数据
     return {
+      numberList:[],
       delData:{
         user_name:'',
         password:'',
@@ -367,6 +403,8 @@ export default {
         region: [],
         number: [],
         part_name: [],
+        numbers:[],
+        product_no:''
       },
       urlMatchedList: [],
       productMatchedList: [],
@@ -577,12 +615,12 @@ MatchedSelect(row,e){
     },
     initData() {
       this.axios
-        .get("/api/bst_matching_on_list", {
-          params: {
+        .post("/api/bst_matching_on_list", {
             id: this.matchedInfo.id,
             image_number: this.matchedInfo.image_number,
             product_name: this.matchedInfo.product_name,
-          },
+            numbers:this.matchedInfo.numbers,
+            product_no:this.matchedInfo.product_no
         })
         .then((res) => {
           this.matchedList = [];
@@ -591,6 +629,7 @@ MatchedSelect(row,e){
           });
           this.urlMatchedList = res.data.image_number;
           this.productMatchedList = res.data.product_name;
+          this.numberList =res.data.numbers;
           // this.matchedList = res.data.list;
           res.data.list.forEach((v, index) => {
             if (v.matching_status == 2) {

+ 1 - 1
src/views/leadMatch/MatchList/HXYMatchList.vue

@@ -151,7 +151,7 @@ export default {
           resizable: true,
                         width: 350,
           render: (h, params) => {
-            return h("span", {}, this.func.replaceDate(params.row.crt_time));
+            return h("span", {}, this.func.replaceDateNoHMS(params.row.crt_time));
           },
         },
         { title: "操作", align: "center", minWidth: 150, slot: "setSlot" },

+ 74 - 2
src/views/leadMatch/MatchList/NewHXYMatchPage.vue

@@ -79,6 +79,34 @@
             </Select>
           </span>
         </Col>
+         <Col style="margin-right:20px" v-if="currencyTag == 1">
+          <span>批次:</span>
+          <span>
+            <Select
+              filterable
+              multiple
+              clearable
+              transfer
+              filter-by-label
+              v-model="info.numbers"
+              :max-tag-count="2"
+              style="width: 200px"
+            >
+              <Option
+                v-for="(item, index) in numberList"
+                :key="index"
+                :label="item"
+                :value="item"
+              ></Option>
+            </Select>
+          </span>
+        </Col>
+         <Col style="margin-right:20px" v-if="currencyTag == 1">
+          <span>生产通知单号:</span>
+          <span>
+         <Input v-model="info.product_no" clearable style="width: 200px" placeholder="请输入生产通知单号"/>
+          </span>
+        </Col>
         <Col style="margin-right:20px" v-if="currencyTag == 1">
           <Button
             @click="
@@ -501,6 +529,35 @@
                 </Select>
               </span>
             </Col>
+             <Col span="4">
+              <span>批次:</span>
+              <span>
+                <Select
+                  filterable
+                  multiple
+                  filter-by-label
+                  clearable
+                  transfer
+                  v-model="matchedInfo.numbers"
+                  :max-tag-count="2"
+                  size="small"
+                  style="width: 150px"
+                >
+                  <Option
+                    v-for="(item, index) in unNumberList"
+                    :key="index"
+                    :label="item"
+                    :value="item"
+                  ></Option>
+                </Select>
+              </span>
+            </Col>
+             <Col span="5">
+              <span>生产通知单号:</span>
+              <span>
+               <Input v-model="matchedInfo.product_no" clearable placeholder="请输入生产通知单号" style="width: 150px" size="small"/>
+              </span>
+            </Col>
             <Col span="2">
               <Button
                 @click="handleMatchedListInit"
@@ -528,13 +585,16 @@
               <Col span="2">
                 <span>图号:{{ matched_info.image_number }}</span>
               </Col>
-              <Col span="4">
+              <Col span="3">
                 <span>产品名称:{{ matched_info.product_name }}</span>
               </Col>
+               <Col span="2">
+                <span>批次:{{ matched_info.number }}</span>
+              </Col>
               <Col span="2">
                 <span>区域:{{ matched_info.region }}</span>
               </Col>
-               <Col span="4">
+               <Col span="3">
                         <span>生产通知单号:</span>
                         <span>{{ matched_info.product_no }}</span>
                       </Col>
@@ -745,6 +805,7 @@ export default {
   data() {
     // 这里存放数据
     return {
+      unNumberList:[],
       currencyTag: "1", //当前分页
       info: {
         id: this.$route.query.id,
@@ -758,12 +819,17 @@ export default {
         wool_size2: "",
         image_number: [],
         product_name: [],
+        numbers:[],
+        product_no:'',
       },
       matchedInfo: {
         id: this.$route.query.id,
         image_number: [],
         product_name: [],
+        numbers:[],
+        product_no:''
       },
+      numberList:[],
       cut_size: [], //精裁尺寸 未匹配
       number: [], //房号 未匹配
       part_name: [], //部件名称 未匹配
@@ -978,6 +1044,8 @@ export default {
             id: this.info.id,
             image_number: this.matchedInfo.image_number,
             product_name: this.matchedInfo.product_name,
+            numbers:this.matchedInfo.numbers,
+            product_no:this.matchedInfo.product_no
           },
         )
         .then((res) => {
@@ -986,6 +1054,7 @@ export default {
           });
           this.matchedList = res.data.list;
           this.urlMatchedList = res.data.image_number;
+          this.unNumberList = res.data.numbers;
           this.productMatchedList = res.data.product_name;
         });
     },
@@ -1172,6 +1241,8 @@ export default {
           id: this.info.id,
           image_number: this.info.image_number,
           product_name: this.info.product_name,
+          numbers:this.info.numbers,
+          product_no:this.info.product_no
         },
       }).then((res) => {
         if (res.code == 200) {
@@ -1185,6 +1256,7 @@ export default {
           this.unmatchedObj.urlList = data;
           this.urlSelectList = res.data.image_number;
           this.productList = res.data.product_name;
+          this.numberList = res.data.numbers;
           this.unmatchedSelectedList = [];
           this.unmatchedObj.urlList.map((v) => {
             if (v.id == this.matchedReopenTag) {

+ 38 - 28
src/views/leadMatch/MatchList/matchList.vue

@@ -1,42 +1,52 @@
 <template>
     <div>
-         <BSTList v-if="type==1"/>
-         <HXYList v-else-if="type==2"/>
+         <!-- <BSTList v-if="type==1"/>
+         <HXYList v-else-if="type==2"/> -->
     </div>
 </template>
 <script>
-import BSTList from '@/views/leadMatch/MatchList/BSTMatchList';
-import HXYList from '@/views/leadMatch/MatchList/HXYMatchList';
+// import BSTList from '@/views/leadMatch/MatchList/BSTMatchList';
+// import HXYList from '@/views/leadMatch/MatchList/HXYMatchList';
 export default {
     data(){
         return{
-              type:null //1倍思特 2华信源
+              // type:null //1倍思特 2华信源
         }
     },
-    created(){
-       
-       this.axios.post('/api/get_cut_order_type').then(res=>{
-               this.type = res.data;
-       })
-    },
-    beforeRouteLeave(to, from, next) {
-      if (
-        to.path == "/cms/leadMatch/MatchList/BSTMatchPage" || 
-        to.path == "/cms/leadMatch/MatchList/BSTMatchCheck" ||
-        to.path == "/cms/leadMatch/MatchList/HXYMatchCheck" || 
-        to.path == "/cms/leadMatch/MatchList/HXYMatchPage" ||
-        to.path == "/cms/leadMatch/MatchList/NewHXYMatchPage"
-      ) {
-        next();
-      } else {
-        from.meta.keepAlive = false;
-        next();
+      beforeRouteEnter(to,form,next){
+      console.log(to);
+      if(to.query.version==0||to.query.version==1){
+        next('/cms/leadMatch/MatchList/BSTMatchList');
+      }else if(to.query.version == 2){
+  next('/cms/leadMatch/MatchList/HXYMatchList')
+      }else{
+         next('/cms/leadMatch/MatchList/BSTMatchList');
       }
-    },
-    components:{
-        BSTList,
-        HXYList
-    }
+    } 
+    // created(){
+       
+    //    this.axios.post('/api/get_cut_order_type').then(res=>{
+    //            this.type = res.data;
+    //    })
+    // },
+    // beforeRouteLeave(to, from, next) {
+    //   if (
+    //     to.path == "/cms/leadMatch/MatchList/BSTMatchPage" || 
+    //     to.path == "/cms/leadMatch/MatchList/BSTMatchCheck" ||
+    //     to.path == "/cms/leadMatch/MatchList/HXYMatchCheck" || 
+    //     to.path == "/cms/leadMatch/MatchList/HXYMatchPage" ||
+    //     to.path == "/cms/leadMatch/MatchList/NewHXYMatchPage"
+    //   ) {
+    //     next();
+    //   } else {
+    //     from.meta.keepAlive = false;
+    //     next();
+    //   }
+    // },
+    // components:{
+    //     BSTList,
+    //     HXYList
+    // }
 }
 </script>
 <style lang="scss" scoped>

+ 1 - 1
src/views/leadMatch/roomList/BSTlist.vue

@@ -21,7 +21,7 @@
       </div>
       <Table :columns="tableColumns" border :data="tableData">
         <template slot="make_data" slot-scope="{row}">
-          <span>{{func.replaceDate(row.crt_time)}}</span>
+          <span>{{func.replaceDateNoHMS(row.crt_time)}}</span>
         </template>
      </Table>
     </div>

+ 37 - 3
src/views/leadMatch/roomList/HXYedit.vue

@@ -35,6 +35,21 @@
       </slot>
     </Toptitle>
     <div class="weight_memo_info_content">
+      <div v-if="this.$route.query.type == 2">
+        <Form :label-width='130' style="display:flex;flex-wrap:wrap;margin-top:10px;border-bottom:1px solid #ececec">
+          <FormItem label='批次:'>
+            <Select filterable multiple v-model="topData.number" style="width:200px">
+              <Option v-for="(item,index) in numberList" :key="index" :value="item" :label="item"/>
+            </Select>
+          </FormItem>
+          <FormItem label='生产通知单号:'>
+            <Input v-model="topData.product_no" clearable style="width:200px" placeholder="请输入生产通知单号"/>
+          </FormItem>
+          <FormItem :label-width='30'>
+            <Button type="primary" @click="handleTopSearch">搜索</Button>
+          </FormItem>
+        </Form>
+      </div>
       <div class="form_content">
         <Form :label-width="85" :model="formData">
           <FormItem label="项目编码:">
@@ -66,7 +81,8 @@
             <div class="table_header_left">
               <span>图号:{{item.url_number}}</span>
               <span>产品名称:{{item.product_title}}</span>
-              <!-- <span>批量数:{{item.number}}</span> -->
+              <span>批次:{{item.number}}</span>
+              <span>生产通知单号:{{item.product_no}}</span>
               <span :style="item.state == 1?{}:item.state==2?{color:'#08a108'}:{color:'red'}" v-show='$route.query.type!=3'>{{item.state == 0?'未匹配':item.state == 2?'匹配完成':'匹配中'}}</span>
             </div>
             <div class="table_header_right">
@@ -98,6 +114,11 @@ import axios from "axios";
 export default {
   data() {
     return {
+      topData:{
+        number:[],
+        product_no:''
+        },
+      numberList:[],
       household:[],
       extOneList:[],
       extTwoList:[],
@@ -242,12 +263,13 @@ export default {
   },
   created(){
    if(this.$route.query.type == 1||this.$route.query.type == 2){
-          this.axios.get('/api/cut_order_detail',{params:{cut_order_id:this.$route.query.cut_order_id,order_type:2}}).then(res=>{
+          this.axios.post('/api/cut_order_details',{cut_order_id:this.$route.query.cut_order_id,order_type:2}).then(res=>{
              this.formData.project_number = res.data.project_number;
              this.formData.product_name = res.data.project_name;
              this.formData.project_abbreviation = res.data.abbreviation;
              this.formData.start_time = this.func.replaceDate(res.data.crt_time);
              this.infoNumber = [...res.data.children];
+             this.numberList = res.data.number_list;
              this.cut_order_id = res.data.cut_order_id
           })
       }
@@ -395,6 +417,18 @@ export default {
     }
   },
   methods: {
+    handleTopSearch(){
+      let obj = JSON.parse(JSON.stringify(this.topData));
+    this.axios.post('/api/cut_order_details',{cut_order_id:this.$route.query.cut_order_id,order_type:2,...obj}).then(res=>{
+            //  this.formData.project_number = res.data.project_number;
+            //  this.formData.product_name = res.data.project_name;
+            //  this.formData.project_abbreviation = res.data.abbreviation;
+            //  this.formData.start_time = this.func.replaceDate(res.data.crt_time);
+             this.infoNumber = [...res.data.children];
+            //  this.numberList = res.data.number_list;
+            //  this.cut_order_id = res.data.cut_order_id
+          })
+    },
         editContent(){
 this.is_edit = true;
       },
@@ -654,7 +688,7 @@ this.is_edit = true;
         }
       }
       if(this.$route.query.cut_order_id||this.cut_order_id){
-      await this.axios.get('/api/cut_order_detail',{params:{cut_order_id:this.$route.query.cut_order_id?this.$route.query.cut_order_id:this.cut_order_id,order_type:2}}).then(res=>{
+      await this.axios.post('/api/cut_order_details',{cut_order_id:this.$route.query.cut_order_id?this.$route.query.cut_order_id:this.cut_order_id,order_type:2,...this.topData}).then(res=>{
              this.formData.project_number = res.data.project_number;
              this.formData.product_name = res.data.project_name;
              this.formData.project_abbreviation = res.data.abbreviation;

+ 1 - 1
src/views/leadMatch/roomList/HXYlist.vue

@@ -21,7 +21,7 @@
       </div>
       <Table :columns="tableColumns" border :data="tableData">
         <template slot="make_data" slot-scope="{row}">
-          <span>{{func.replaceDate(row.crt_time)}}</span>
+          <span>{{func.replaceDateNoHMS(row.crt_time)}}</span>
         </template>
      </Table>
     </div>

+ 39 - 29
src/views/leadMatch/roomList/list.vue

@@ -1,44 +1,54 @@
 <template>
     <div>
-         <BSTList v-if="type==1"/>
-         <HXYList v-else-if="type==2"/>
+         <!-- <BSTList v-if="type==1"/>
+         <HXYList v-else-if="type==2"/> -->
     </div>
 </template>
 <script>
-import BSTList from '@/views/leadMatch/roomList/BSTlist';
-import HXYList from '@/views/leadMatch/roomList/HXYlist';
+// import BSTList from '@/views/leadMatch/roomList/BSTlist';
+// import HXYList from '@/views/leadMatch/roomList/HXYlist';
 export default {
     data(){
         return{
              type:null //1倍思特 2华信源
         }
     },
-     created(){
-       
-       this.axios.post('/api/get_cut_order_type').then(res=>{
-               this.type = res.data;
-       })
-    },
-     beforeRouteLeave(to, from, next) {
-      if (
-        to.path == "/cms/leadMatch/roomList/HXYedit" || 
-        to.path == "/cms/leadMatch/roomList/BSTedit"
-      ) {
-        from.meta.keepAlive = false;
-        next();
-      } else {
-        localStorage.removeItem("list");
-        localStorage.removeItem("pageSize");
-        localStorage.removeItem("pageIndex");
-        localStorage.removeItem("searchList");
-        from.meta.keepAlive = false;
-        next();
+          beforeRouteEnter(to,form,next){
+      console.log(to);
+      if(to.query.version==0||to.query.version==1){
+        next('/cms/leadMatch/roomList/BSTlist');
+      }else if(to.query.version == 2){
+  next('/cms/leadMatch/roomList/HXYlist')
+      }else{
+        next('/cms/leadMatch/roomList/BSTlist');
       }
-    },
-    components:{
-        BSTList,
-        HXYList
-    }
+    } 
+    //  created(){
+       
+    //    this.axios.post('/api/get_cut_order_type').then(res=>{
+    //            this.type = res.data;
+    //    })
+    // },
+    //  beforeRouteLeave(to, from, next) {
+    //   if (
+    //     to.path == "/cms/leadMatch/roomList/HXYedit" || 
+    //     to.path == "/cms/leadMatch/roomList/BSTedit"
+    //   ) {
+    //     from.meta.keepAlive = false;
+    //     next();
+    //   } else {
+    //     localStorage.removeItem("list");
+    //     localStorage.removeItem("pageSize");
+    //     localStorage.removeItem("pageIndex");
+    //     localStorage.removeItem("searchList");
+    //     from.meta.keepAlive = false;
+    //     next();
+    //   }
+    // },
+    // components:{
+    //     BSTList,
+    //     HXYList
+    // }
 }
 </script>
 <style lang="scss" scoped>

+ 1 - 1
src/views/leadMatch/weightMemo/BSTlist.vue

@@ -21,7 +21,7 @@
       </div>
       <Table :columns="tableColumns" border :data="tableData">
         <template slot="make_data" slot-scope="{row}">
-          <span>{{func.replaceDate(row.crt_time)}}</span>
+          <span>{{func.replaceDateNoHMS(row.crt_time)}}</span>
         </template>
      </Table>
     </div>

+ 8 - 0
src/views/leadMatch/weightMemo/HXYedit.vue

@@ -77,6 +77,11 @@
                <Option v-for="(item,index) in productList" :key="index" :value="item" :label="item"/>
              </Select>
           </FormItem>
+           <FormItem label='批次:'>
+             <Select filterable multiple v-model="searchData.number">
+               <Option v-for="(item,index) in numberList" :key="index" :value="item" :label="item"/>
+             </Select>
+          </FormItem>
           <FormItem label='生产通知单号:'>
             <Input clearable v-model="searchData.product_no" placeholder="请输入生产通知单号"/>
           </FormItem>
@@ -144,6 +149,7 @@ import axios from "axios";
 export default {
   data() {
     return {
+      numberList:[],
       urlList:[],
       regionList:[],
       productList:[],
@@ -164,6 +170,7 @@ export default {
         region:[],
         product_title:[],
         product_no:'',
+        number:[]
       },
       tableColumns:[
             { title: "序号", type:'index', align: "center",resizable: true,
@@ -653,6 +660,7 @@ this.is_edit = true;
              this.regionList = res.data.region_list;
              this.productList = res.data.product_title_list;
              this.urlList = res.data.url_number_list;
+             this.numberList = res.data.number_list;
              console.log(this.infoNumber)
              this.cut_order_id = res.data.cut_order_id
           })

+ 1 - 1
src/views/leadMatch/weightMemo/HXYlist.vue

@@ -25,7 +25,7 @@
       </div>
       <Table :columns="tableColumns" border :data="tableData">
         <template slot="make_data" slot-scope="{ row }">
-          <span>{{ func.replaceDate(row.crt_time) }}</span>
+          <span>{{ func.replaceDateNoHMS(row.crt_time) }}</span>
         </template>
       </Table>
     </div>

+ 41 - 28
src/views/leadMatch/weightMemo/list.vue

@@ -1,43 +1,56 @@
 <template>
     <div>
-         <BSTList v-if="type==1"/>
-         <HXYList v-else-if="type==2"/>
+         <!-- <BSTList v-if="type==1"/>
+         <HXYList v-else-if="type==2"/> -->
     </div>
 </template>
 <script>
-import BSTList from '@/views/leadMatch/weightMemo/BSTlist';
-import HXYList from '@/views/leadMatch/weightMemo/HXYlist';
+// import BSTList from '@/views/leadMatch/weightMemo/BSTlist';
+// import HXYList from '@/views/leadMatch/weightMemo/HXYlist';
 export default {
     data(){
         return{
               type:null //1倍思特 2华信源
         }
     },
-      created(){
-       
-       this.axios.post('/api/get_cut_order_type').then(res=>{
-               this.type = res.data;
-       })
-    },
-    beforeRouteLeave(to, from, next) {
-      if (
-        to.path == "/cms/leadMatch/weightMemo/HXYedit" || to.path == "/cms/leadMatch/weightMemo/BSTedit"
-      ) {
-         from.meta.keepAlive = false;
-        next();
-      } else {
-        from.meta.keepAlive = false;
-        localStorage.removeItem("list");
-        localStorage.removeItem("pageSize");
-        localStorage.removeItem("pageIndex");
-        localStorage.removeItem("searchList");
-        next();
+    beforeRouteEnter(to,form,next){
+      console.log(to);
+      if(to.query.version==0||to.query.version==1){
+        next('/cms/leadMatch/weightMemo/BSTlist');
+      }else if(to.query.version == 2){
+  next('/cms/leadMatch/weightMemo/HXYlist')
+      }else{
+        next('/cms/leadMatch/weightMemo/BSTlist');
       }
-    },
-    components:{
-        BSTList,
-        HXYList
-    }
+    }    //   beforeCreate(){
+       
+    //    this.axios.post('/api/get_cut_order_type').then(res=>{
+    //            if(res.data==1){
+    //             this.$router.push('/cms/leadMatch/weightMemo/BSTlist')
+    //            }else if(res.data==2){
+    //              this.$router.push('/cms/leadMatch/weightMemo/HXYlist')
+    //            }
+    //    })
+    // },
+    // beforeRouteLeave(to, from, next) {
+    //   if (
+    //     to.path == "/cms/leadMatch/weightMemo/HXYedit" || to.path == "/cms/leadMatch/weightMemo/BSTedit"
+    //   ) {
+    //      from.meta.keepAlive = false;
+    //     next();
+    //   } else {
+    //     from.meta.keepAlive = false;
+    //     localStorage.removeItem("list");
+    //     localStorage.removeItem("pageSize");
+    //     localStorage.removeItem("pageIndex");
+    //     localStorage.removeItem("searchList");
+    //     next();
+    //   }
+    // },
+    // components:{
+    //     BSTList,
+    //     HXYList
+    // }
 }
 </script>
 <style lang="scss" scoped>

+ 5 - 1
src/views/stack/confirm.vue

@@ -60,6 +60,9 @@
                        <Option :value="1">已下指令</Option>
                    </Select>
             </FormItem>
+              <FormItem label='图号批量查询:' :label-width='120'>
+                <Input v-model="searchData.url_numbers" clearable placeholder="请输入"/>
+            </FormItem>
             <FormItem>
                 <Button type="primary" @click="search">搜索</Button>
             </FormItem>
@@ -90,7 +93,8 @@ export default {
                     compose_name:'',
                     state:'',
                     start_time:'',
-                    end_time:''
+                    end_time:'',
+                    url_numbers:''
             },
             pageIndex:1,
             pageSize:10,

+ 3 - 3
src/views/stack/list.vue

@@ -25,7 +25,7 @@
        <div class="up_table">
            <Button type="primary">表头设置</Button>
        </div>
-       <Table :data='tableData' :columns='tableColumns' border max-height='500' :loading='loading'>
+       <Table :data='tableData' :columns='tableColumns' border max-height='550' :loading='loading'>
            <template slot="set" slot-scope="{row}">
                <a @click="goPage(row)">详情</a> 
            </template>
@@ -57,7 +57,7 @@ export default {
                     },
                 tableData:[],
                 tableColumns:[
-                    {title:'序号',type:'index',align:'center',minWidth:80},
+                    {title:'序号',type:'index',align:'center',maxWidth:80,fixed:'left'},
                     {title:'订单编号',align:'center',minWidth:120,key:"order_no"},
                     {title:'项目名称',align:'center',minWidth:120,key:"residential_name"},
                     {title:'包装日期',align:'center',minWidth:120,key:"crt_time",render:(h,params)=>{
@@ -102,7 +102,7 @@ export default {
         this.$router.push({path:'/cms/stack/detail',query:{order_no:row.order_no}})
         },
         change(e){
-            this.changeIndex =e;
+            this.pageIndex =e;
             this.initData(this.proxyData);
         },
         changeSize(e){

+ 1 - 1
vue.config.js

@@ -1,6 +1,6 @@
 const axios_default_ip =
   process.env.NODE_ENV == "dev"
-    ? "http://121.41.102.225:82"
+    ? "http://124.71.176.88:70"
     : process.env.NODE_ENV == "test-prd"
     ? "http://124.71.176.88:70" //
     : process.env.NODE_ENV == "prd_other"