mushencc 4 лет назад
Родитель
Сommit
4b04bcfb8f
56 измененных файлов с 5322 добавлено и 266 удалено
  1. BIN
      dist.zip
  2. 7 7
      src/components/DispatchOrder/index.vue
  3. 6 6
      src/components/DownMeasurement/index.vue
  4. 6 6
      src/components/DownProduction/index.vue
  5. 1 1
      src/components/Topsearch/index.vue
  6. 77 0
      src/routerMap/index.js
  7. 1 1
      src/views/BasicSettings/CustomerFiles/detail.vue
  8. 1 1
      src/views/BasicSettings/finishWorkConfig.vue
  9. 307 0
      src/views/BasicSettings/printStyle.vue
  10. 2 0
      src/views/BasicSettings/procedureRatio.vue
  11. 1 1
      src/views/BasicSettings/rootManage.vue
  12. 12 2
      src/views/BidSystem/CompletionStatistics.vue
  13. 3 2
      src/views/BidSystem/CompletionStatisticsConfig.vue
  14. 2 1
      src/views/BidSystem/CompletionStatisticsDetail.vue
  15. 1 1
      src/views/BidSystem/DeepeningOrder/deepDetail.vue
  16. 1 1
      src/views/BidSystem/DeepeningOrder/infoDetail.vue
  17. 4 3
      src/views/BidSystem/IncompleteStatisticsDetail.vue
  18. 35 31
      src/views/BidSystem/OutputValue/config.vue
  19. 38 32
      src/views/BidSystem/OutputValue/detail.vue
  20. 38 31
      src/views/BidSystem/OutputValue/info.vue
  21. 25 19
      src/views/BidSystem/OutputValue/list.vue
  22. 199 0
      src/views/BidSystem/OutputValue/otherList.vue
  23. 5 3
      src/views/BidSystem/ProductDeOrder/detail.vue
  24. 1 1
      src/views/BidSystem/ProductDeOrder/infoDetail.vue
  25. 191 0
      src/views/BidSystem/WorkDistribution.vue
  26. 41 29
      src/views/ChipPrintScreen/ChipPrintScreen.vue
  27. 25 16
      src/views/ChipPrintScreen/ChipPrintScreenCheck.vue
  28. 2367 0
      src/views/ChipPrintScreen/finishWorkScreen.vue
  29. 45 0
      src/views/ChipPrintScreen/list.vue
  30. 6 6
      src/views/Dispatching/DispatchedListDetail.vue
  31. 40 4
      src/views/Dispatching/Dispatching.vue
  32. 6 1
      src/views/Dispatching/DispatchingDetail.vue
  33. 595 0
      src/views/MatchChange/change.vue
  34. 1035 0
      src/views/MatchChange/check.vue
  35. 125 0
      src/views/MatchChange/list.vue
  36. 6 6
      src/views/OrderMannage/BusinessOrderlist/agentOrder.vue
  37. 1 1
      src/views/OrderMannage/BusinessOrderlist/edit.vue
  38. 1 1
      src/views/OrderMannage/BusinessOrderlist/editcopy.vue
  39. 1 1
      src/views/ProcedureMannage/edit.vue
  40. 2 0
      src/views/ProductionOrderList/Deliverylist/DeliveryDetail.vue
  41. 3 1
      src/views/ProductionOrderList/Dispatchlist/confirm.vue
  42. 4 4
      src/views/ProductionOrderList/Dispatchlist/details.vue
  43. 1 1
      src/views/ProductionOrderList/Dispatchlist/list.vue
  44. 5 4
      src/views/ProductionOrderList/InboundForm/details.vue
  45. 1 1
      src/views/ProductionOrderList/InboundForm/index.vue
  46. 1 1
      src/views/ProductionOrderList/ProductionPlanlist/BST_two.vue
  47. 1 1
      src/views/ProductionOrderList/ProductionPlanlist/type_one.vue
  48. 9 9
      src/views/ProductionOrderList/ProductionsOrder/BST_Decorationlist.vue
  49. 15 15
      src/views/ProductionOrderList/ProductionsOrder/demo_Decorationlist.vue
  50. 1 1
      src/views/ProductionOrderList/workOver/confirm.vue
  51. 1 1
      src/views/ProductionOrderList/workOver/details.vue
  52. 1 1
      src/views/ProductionOrderList/workOver/list.vue
  53. 1 9
      src/views/PurchasingManage/PurchasingOrder/edit.vue
  54. 8 0
      src/views/leadMatch/roomList/edit.vue
  55. 8 0
      src/views/leadMatch/weightMemo/edit.vue
  56. 2 2
      vue.config.js

+ 7 - 7
src/components/DispatchOrder/index.vue

@@ -51,7 +51,7 @@
         </FormItem>
 
         <FormItem label="选择时间">
-          <DatePicker :options="options"
+          <DatePicker 
                       style="width:100%;"
                       v-model="time"
                       clearable
@@ -110,15 +110,15 @@ export default {
         product_id: [{ required: true, message: '请选择产品', }],
         procedure_id: [{ required: true, message: '请选择工序', }]
       },
-      options: {
-        disabledDate (date) {
-          return date && date.valueOf() < Date.now() - 86400000;
-        }
-      }
+      // options: {
+      //   disabledDate (date) {
+      //     return date && date.valueOf() < Date.now() - 86400000;
+      //   }
+      // }
     }
   },
   created () {
-    this.axios('/api/employee_list').then(res => this.users = res.data)
+    this.axios('/api/employee_list').then(res => this.users = res.data.data)
     this.axios('/api/orders_plan_get_list', { params: this.params }).then(res => {
       if (res.code == 200) {
         this.info = res.data;

+ 6 - 6
src/components/DownMeasurement/index.vue

@@ -23,7 +23,7 @@
         </FormItem>
 
         <FormItem label="选择时间">
-          <DatePicker :options="options"
+          <DatePicker 
                       v-model="time"
                       clearable
                       type="daterange"
@@ -54,11 +54,11 @@ export default {
       rules: {
         user_id: [{ required: true, message: '请选择人员', }]
       },
-      options: {
-        disabledDate (date) {
-          return date && date.valueOf() < Date.now() - 86400000;
-        }
-      }
+      // options: {
+      //   disabledDate (date) {
+      //     return date && date.valueOf() < Date.now() - 86400000;
+      //   }
+      // }
     }
   },
   created () {

+ 6 - 6
src/components/DownProduction/index.vue

@@ -11,7 +11,7 @@
             :rules='rules'>
         <FormItem label="选择时间"
                   prop='time'>
-          <DatePicker :options="options"
+          <DatePicker 
                       v-model="forms.time"
                       clearable
                       type="daterange"
@@ -47,11 +47,11 @@ export default {
       rules: {
         time: [{ required: true, message: '请选择时间', }]
       },
-      options: {
-        disabledDate (date) {
-          return date && date.valueOf() < Date.now() - 86400000;
-        }
-      }
+      // options: {
+      //   disabledDate (date) {
+      //     return date && date.valueOf() < Date.now() - 86400000;
+      //   }
+      // }
     }
   },
   methods: {

+ 1 - 1
src/components/Topsearch/index.vue

@@ -35,7 +35,7 @@
           :value="item.optionValue ? _item[item.optionValue] : _item.value"
         ></Option>
       </div>
-      <Tooltip v-if="item.isTooltip" transfer max-width='500' placement="top">
+      <Tooltip v-if="item.isTooltip" transfer max-width='500' placement="right">
          <div
         :class="[
           'margin',

+ 77 - 0
src/routerMap/index.js

@@ -1551,6 +1551,24 @@ const routerMap = [
       require(["@/views/ChipPrintScreen/ChipPrintScreen"], resolve),
   },
   {
+    path: "/cms/ChipPrintScreen/list",
+    name: "ChipPrintScreenList", //打印芯片-详情
+    meta: {
+      index: 3,
+    },
+    component: (resolve) =>
+      require(["@/views/ChipPrintScreen/list"], resolve),
+  },
+  {
+    path: "/cms/ChipPrintScreen/finishWorkScreen",
+    name: "finishWorkScreen", //打印芯片-详情
+    meta: {
+      index: 3,
+    },
+    component: (resolve) =>
+      require(["@/views/ChipPrintScreen/finishWorkScreen"], resolve),
+  },
+  {
     path: "/cms/ChipPrintScreen/copy_ChipPrintScreen",
     name: "CopyChipPrintScreen", //打印芯片-详情(修改)
     meta: {
@@ -1609,6 +1627,16 @@ const routerMap = [
       require(["@/views/BidSystem/IncompleteStatistics"], resolve),
   },
   {
+    path: "/cms/BidSystem/WorkDistribution",
+    name: "WorkDistribution", //业务报表-->派工完工表
+    meta: {
+      index: 3,
+      // keepAlive: true,
+    },
+    component: (resolve) =>
+      require(["@/views/BidSystem/WorkDistribution"], resolve),
+  },
+  {
     path: "/cms/BidSystem/IncompleteStatisticsDetail",
     name: "IncompleteStatisticsDetail", //业务报表-->未完工统计表
     meta: {
@@ -1649,6 +1677,16 @@ const routerMap = [
       require(["@/views/BidSystem/OutputValue/list"], resolve),
   },
   {
+    path: "/cms/BidSystem/OutputValue/otherList",
+    name: "outputValueOtherList", //报表中心-->产值表
+    meta: {
+      index: 3,
+      // keepAlive: true,
+    },
+    component: (resolve) =>
+      require(["@/views/BidSystem/OutputValue/otherList"], resolve),
+  },
+  {
     path: "/cms/BidSystem/OutputValue/detail",
     name: "outputValueDetail", //报表中心-->项目产值表-->详情
     meta: {
@@ -1678,6 +1716,45 @@ const routerMap = [
     component: (resolve) =>
       require(["@/views/BidSystem/OutputValue/info"], resolve),
   },
+  {
+    path: "/cms/MatchChange/list",
+    name: "MatchChangeList", //业务管理-->生产制造-->匹配变更
+    meta: {
+      index: 3,
+      // keepAlive: true,
+    },
+    component: (resolve) =>
+      require(["@/views/MatchChange/list"], resolve),
+  },
+  {
+    path: "/cms/MatchChange/change",
+    name: "MatchChangeChange", //业务管理-->生产制造-->匹配变更-->变更
+    meta: {
+      index: 3,
+      // keepAlive: true,
+    },
+    component: (resolve) =>
+      require(["@/views/MatchChange/change"], resolve),
+  },
+  {
+    path: "/cms/MatchChange/check",
+    name: "MatchChangeCheck", //业务管理-->生产制造-->匹配变更-->查看
+    meta: {
+      index: 3,
+      // keepAlive: true,
+    },
+    component: (resolve) =>
+      require(["@/views/MatchChange/check"], resolve),
+  },
+  {
+    path: "/cms/BasicSettings/printStyle",
+    name: "printStyle", //设置-->打印格式配置
+    meta: {
+      index: 3,
+    },
+    component: (resolve) =>
+      require(["@/views/BasicSettings/printStyle"], resolve),
+  },
   // 测试用
   {
     path: "/cms/ordermannage/businessorderlist/editcopy",

+ 1 - 1
src/views/BasicSettings/CustomerFiles/detail.vue

@@ -365,7 +365,7 @@ export default {
     // 获取用户列表
     this.axios({ method: "get", url: "/api/employee_list" })
       .then((res) => {
-        this.userList = res.data;
+        this.userList = res.data.data;
       })
       .catch((err) => {});
     // 获取超标方案

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

@@ -156,7 +156,7 @@ export default {
     //工序列表
     this.axios.post('/api/ext_produce_list').then(res=>{this.process_list = res.data});
     //班组列表
-    this.axios("/api/employee_list").then((res) => (this.band_list = res.data));
+    this.axios("/api/employee_list").then((res) => (this.band_list = res.data.data));
   },
   // 生命周期 - 挂载完成(可以访问DOM元素)
   mounted () {  

+ 307 - 0
src/views/BasicSettings/printStyle.vue

@@ -0,0 +1,307 @@
+<template>
+  <div>
+    <Toptitle title="打印格式配置">
+      <Button @click="back" type="primary" ghost style="margin-right: 10px"
+        >返回</Button
+      >
+    </Toptitle>
+    <div style="height: 84%; overflow: auto">
+      <Topsearch :list="list" @init="init" @searchData="init"></Topsearch>
+      <Table :columns="tableColumns" border :data="tableData">
+        <template slot-scope="{ row }" slot="picture">
+            <img
+                  @click="looks(row.img_url)"
+                  :src="$store.state.ip + row.img_url"
+                  alt=""
+                  style="width:40px;height:auto"
+                />
+        </template>
+        <template slot="set" slot-scope="{ row }">
+          <a style="margin-right: 10px" @click="forbidden(row)">{{
+            row.state == 1 ? "禁用" : "启用"
+          }}</a>
+          <a @click="edit(row)">编辑</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"
+    />
+    <Modal title="编辑" :width="450" v-model="showEdit" @on-ok="saveData">
+      <Form :label-width="100">
+        <FormItem label="分类:">
+          <Select v-model="modalData.type" filterable clearable>
+            <Option value="包装"> 包装 </Option>
+            <Option value="芯片"> 芯片 </Option>
+          </Select>
+        </FormItem>
+        <FormItem label="方案名称:">
+          <Input v-model="modalData.title" />
+        </FormItem>
+        <FormItem label="状态:">
+          <RadioGroup v-model="modalData.state">
+            <Radio label="启用" :value="1"></Radio>
+            <Radio label="禁用" :value="0"></Radio>
+          </RadioGroup>
+        </FormItem>
+        <FormItem label="效果预览:">
+          <div>
+            <div class="product-add">
+              <div class="items" v-show="modalData.img_url">
+                <img
+                  @click="looks(modalData.img_url)"
+                  :src="$store.state.ip + modalData.img_url"
+                  alt=""
+                />
+                <Icon
+                  size="20"
+                  @click="delItems()"
+                  class="delete-img"
+                  type="ios-close-circle"
+                />
+              </div>
+
+              <div class="add-items" v-show="!modalData.img_url">
+                <div class="item">
+                  <Icon size="50" type="ios-add" />
+                </div>
+
+                <span>支持jpg/png格式</span>
+                <input
+                  @change="changeIpt($event, modalData.img_url)"
+                  type="file"
+                  class="ipt"
+                />
+              </div>
+            </div>
+          </div>
+        </FormItem>
+      </Form>
+    </Modal>
+  </div>
+</template>
+<script>
+export default {
+  data() {
+    return {
+      modalData: {},
+      showEdit: false,
+      stateData: {},
+      pageIndex: 1,
+      pageSize: 10,
+      total: 0,
+      tableData: [],
+      tableColumns: [
+        { title: "ID", align: "center", type: "index", minWidth: 80 },
+        { title: "分类", align: "center", key: "type", minWidth: 100 },
+        { title: "方案名称", align: "center", key: "title", minWidth: 100 },
+        {
+          title: "效果预览",
+          align: "center",
+          key: "img_url",
+          minWidth: 100,
+          slot: "picture",
+        },
+        {
+          title: "启用状态",
+          align: "center",
+          key: "state",
+          minWidth: 100,
+          render: (h, params) => {
+            const { row } = params;
+            return h("span", {}, row.state == 1 ? "已启用" : "未启用");
+          },
+        },
+        {
+          title: "操作",
+          align: "center",
+          key: "set",
+          minWidth: 100,
+          slot: "set",
+        },
+      ],
+      list: [
+        {
+          title: "分类",
+          name: "Input",
+          value: "",
+          placeholder: "请输入分类选择",
+          serverName: "type",
+        },
+        {
+          title: "方案名称",
+          name: "Input",
+          value: "",
+          placeholder: "请输入方案名称",
+          serverName: "title",
+        },
+        {
+          title: "启用状态",
+          name: "Select",
+          value: "",
+          placeholder: "请选择",
+          serverName: "state",
+          //   optionName:'number',
+          //   optionValue:'number',
+          option: [
+            { label: "启用", value: 1 },
+            { label: "禁用", value: 0 },
+          ],
+        },
+      ],
+    };
+  },
+  methods: {
+       looks(img) {
+      const array = [{ img_url: img }];
+      this.$previewImg({
+        list: array,
+        baseUrl: this.$store.state.ip,
+        baseImgField: "img_url",
+        baseTitleField: "",
+      });
+    },
+     delItems() {
+     this.modalData.img_url = '';
+    },
+     changeIpt(e, row) {
+      let file = e.target.files[0];
+      this.postImg(file, row);
+      e.target.value = null;
+    },
+     postImg(file,row) {
+      let formData = new FormData();
+      formData.append("file", file);
+      this.axios.post("/api/upload_pic", formData).then((res) => {
+        this.modalData.img_url = res.data.url;
+      });
+    },
+    saveData() {
+      this.modalData.state = this.modalData.state == "启用" ? 1 : 0;
+      this.axios
+        .post("/api/ext_print_format_edit", { ...this.modalData })
+        .then((res) => {
+          if (res.code == 200) {
+            this.$Message.success(res.msg);
+            this.showEdit = false;
+            this.init(this.stateData);
+          }
+        });
+    },
+    edit(row) {
+      this.modalData = JSON.parse(JSON.stringify(row));
+      console.log(this.modalData);
+      this.modalData.state = this.modalData.state == 0 ? "禁用" : "启用";
+
+      this.showEdit = true;
+    },
+    forbidden(row) {
+      this.axios
+        .post("/api/ext_print_format_edit", {
+          id: row.id,
+          state: row.state == 1 ? 0 : 1,
+          type: row.type,
+          title: row.title,
+          img_url: row.img_url,
+        })
+        .then((res) => {
+          if (res.code == 200) {
+            this.$Message.success(res.msg);
+            this.init(this.stateData);
+          }
+        });
+    },
+    changeSize(e) {
+      this.pageSize = e;
+      this.init();
+    },
+    changePage(e) {
+      this.pageIndex = e;
+      this.init();
+    },
+    back() {
+      this.$router.go(-1);
+    },
+    init(row) {
+      this.stateData = JSON.parse(JSON.stringify(row));
+      this.axios
+        .get("/api/ext_print_format_list", { params: { ...row } })
+        .then((res) => {
+          this.tableData = res.data.data;
+          this.total = res.data.total;
+        });
+    },
+  },
+};
+</script>
+<style lang="scss" scoped>
+.product-add {
+  padding: 10px 0;
+  display: flex;
+  flex-wrap: wrap;
+  .ipt {
+    position: absolute;
+    width: 100%;
+    height: 100%;
+    opacity: 0;
+    cursor: pointer;
+    outline: none;
+    top: 0;
+    left: 0;
+  }
+  .add-items {
+    width: 120px;
+    height: 120px;
+    border: 1px dotted #e7e7e7;
+    border-radius: 5px;
+    display: flex;
+    justify-content: center;
+    align-items: center;
+    overflow: hidden;
+    position: relative;
+    flex-direction: column;
+    background: #f4f5f7;
+    .item {
+      width: 46px;
+      height: 46px;
+      background: #3764ff;
+      opacity: 0.6;
+      display: flex;
+      justify-content: center;
+      align-items: center;
+      border-radius: 50%;
+      color: #fff;
+    }
+  }
+  .items {
+    width: 120px;
+    height: 120px;
+    margin-bottom: 10px;
+    display: flex;
+    justify-content: center;
+    align-items: center;
+    background: #e7e7e7;
+    margin-right: 10px;
+    border-radius: 5px;
+    position: relative;
+    img {
+      max-width: 108px;
+      max-height: 108px;
+    }
+  }
+  .delete-img {
+  position: absolute;
+  right: 5px;
+  top: 5px;
+ 
+}
+}
+</style>

+ 2 - 0
src/views/BasicSettings/procedureRatio.vue

@@ -217,12 +217,14 @@ export default {
     this.id = row.id||'';
       switch (type) {
         case 1:
+          console.log(this.process_list);
             this.modal_title = '新增';
             this.scheme_title = '';
          this.modalData = [];
         this.total_scale = 0;
         this.process_list.forEach(v=>{
             let obj = {};
+            obj.id = v.id;
             obj.title = v.title;
             obj.scale = '';
             this.modalData.push(obj)

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

@@ -161,7 +161,7 @@ export default {
     //工序列表
     this.axios.post('/api/ext_produce_list').then(res=>{this.process_list = res.data});
     //班组列表
-    this.axios("/api/employee_list").then((res) => (this.band_list = res.data));
+    this.axios("/api/employee_list").then((res) => (this.band_list = res.data.data));
   },
   // 生命周期 - 挂载完成(可以访问DOM元素)
   mounted () {  

+ 12 - 2
src/views/BidSystem/CompletionStatistics.vue

@@ -13,7 +13,7 @@
                 ghost>导出</Button>
       </slot>
     </Toptitle>
-    <div style="height:80%">
+    <div style="height:80%;overflow:auto">
      <Form :label-width='100' :model="searchData" style="display:flex;flex-wrap:wrap;margin:15px 0">
         <FormItem label='派工时间:'>
             <DatePicker type="date" placeholder="年/月/日" style="width: 130px" size='small' v-model="searchData.start_time"></DatePicker>
@@ -176,8 +176,18 @@ export default {
       //工序列表
     this.axios.post('/api/ext_produce_list').then(res=>{this.process_list = res.data});
     //班组列表
-    this.axios("/api/employee_list").then((res) => (this.band_list = res.data));
+    this.axios("/api/employee_list").then((res) => (this.band_list = res.data.data));
     },
+     beforeRouteLeave(to, from, next) {
+    if (
+      to.path == "/cms/BidSystem/CompletionStatisticsDetail" 
+    ) {
+      this.$route.meta.keepAlive = true;
+    } else {
+      this.$route.meta.keepAlive = false;
+    }
+    next();
+  },
     mounted(){
           this.getData();
           let myDate = new Date();

+ 3 - 2
src/views/BidSystem/CompletionStatisticsConfig.vue

@@ -21,7 +21,8 @@
         <FormItem label='派工日期:' style="width:250px"><span>{{formData.push_time}}</span></FormItem>
         <FormItem label='项目编码:' style="width:250px"><span>{{formData.order_no}}</span></FormItem>
         <FormItem label='项目名称:' style="width:250px"><span>{{formData.project_name}}</span></FormItem>
-        <FormItem label='平方:' style="width:250px"><span>{{formData.area}}</span></FormItem>
+        <FormItem label='总平方:' style="width:250px"><span>{{formData.area}}</span></FormItem>
+        <FormItem label='完工平方:' style="width:250px"><span>{{formData.complete_area}}</span></FormItem>
         <FormItem label='图号:' style="width:250px">
             <Tooltip :content="formData.url_number" placement="bottom" transfer max-width='400'>
           <span>{{(formData.url_number+'').length>=16?(formData.url_number+'').slice(0,16)+"...":formData.url_number}}</span>
@@ -67,7 +68,7 @@ export default {
             {title:'房号',align:'center',minWidth:120,key:'house_number'},
              {title:'组合名称',align:'center',minWidth:120,key:'compose_name'},
                {title:'部件名称',align:'center',minWidth:120,key:'part_name'},
-            {title:'平方',align:'center',minWidth:120,key:'ext_1'},
+            {title:'图号平方',align:'center',minWidth:120,key:'ext_1'},
              ],
         }
     },

+ 2 - 1
src/views/BidSystem/CompletionStatisticsDetail.vue

@@ -59,7 +59,8 @@ export default {
             {title:'派工日期',align:'center',minWidth:120,key:'push_time'},
            {title:'项目编码',align:'center',minWidth:120,key:'order_no'},
            {title:'项目名称',align:'center',minWidth:120,key:'project_name'},
-           {title:'平方',align:'center',minWidth:120,key:'area'},
+           {title:'总平方',align:'center',minWidth:120,key:'area'},
+            {title:'完工平方',align:'center',minWidth:120,key:'complete_area'},
            {title:'图号',align:'center',minWidth:120,key:'url_number',ellipsis:true,tooltip:true},
             {title:'完工进度',align:'center',minWidth:120,key:'complete'},
              {title:'完工日期',align:'center',minWidth:120,key:'complete_time'},

+ 1 - 1
src/views/BidSystem/DeepeningOrder/deepDetail.vue

@@ -835,7 +835,7 @@ export default {
       this.axios
         .get("/api/employee_list", { params: { type: 2 } })
         .then((res) => {
-          this.nickname_list = res.data;
+          this.nickname_list = res.data.data;
         });
     
   },

+ 1 - 1
src/views/BidSystem/DeepeningOrder/infoDetail.vue

@@ -811,7 +811,7 @@ export default {
       this.axios
         .get("/api/employee_list", { params: { type: 2 } })
         .then((res) => {
-          this.nickname_list = res.data;
+          this.nickname_list = res.data.data;
         });
     }
   },

+ 4 - 3
src/views/BidSystem/IncompleteStatisticsDetail.vue

@@ -63,8 +63,8 @@
              </Select>
          </FormItem>
          <FormItem label='产品:' style="width:250px">
-             <Select v-model="searchData.product_id" filterable clearable multiple>
-                 <Option v-for="item in url_number_list" :key="item.product_id" :value="item.product_id" :label="item.title"/>
+             <Select v-model="searchData.product_title" filterable clearable multiple>
+                 <Option v-for="item in url_number_list" :key="item.product_id" :value="item.title" :label="item.title"/>
              </Select>
          </FormItem>
            <FormItem label='组合名称:' style="width:250px">
@@ -134,7 +134,7 @@ export default {
           unit:[],//单元
           layer:[],//楼层
           house_number:[],//房号
-          product_id:[],//产品id
+          product_title:[],//产品名称
           compose_name:[],//组合id
           part_id:[],//部件id
           push_start_time:'',//派工日期(起)
@@ -154,6 +154,7 @@ export default {
           {title:'图号',align:'center',minWidth:120,key:'url_number'},
           {title:'产品名称',align:'center',minWidth:120,key:'product_title'},
             {title:'组合名称',align:'center',minWidth:120,key:'compose_name'},
+            {title:'部件名称',align:'center',minWidth:120,key:'part_title'},
             {title:'未完工平方',align:'center',minWidth:120,key:'ext_1'},
                      {title:'派工日期',align:'center',minWidth:120,key:'push_time'},
                        {title:'预计完工日期',align:'center',minWidth:120,key:'plan_complete_time'},

+ 35 - 31
src/views/BidSystem/OutputValue/config.vue

@@ -5,28 +5,33 @@
           <Button type="success" ghost icon="md-exit" style="margin-right:10px;"
             >导出</Button
           >
+          <Button
+           @click="goback()"
+          type="primary"
+          ghost
+          style="margin-right: 10px">返回</Button>
             </slot>
         </Toptitle>
         <div style="height:80%;overflow:auto">
-        <Form style="display:flex;flex-wrap:wrap;margin:10px 0" label-width='100'>
+        <Form style="display:flex;flex-wrap:wrap;margin:10px 0" :label-width='100'>
             <FormItem label='项目编码:' style="width: 250px" >
-               <span>456434</span>
+               <span>{{formData.order_no}}</span>
             </FormItem>
              <FormItem label='项目名称:' style="width: 250px" >
-               <span>先锋创意园</span>
+               <span>{{formData.residential_name}}</span>
             </FormItem>
              <FormItem label='项目简称:' style="width: 250px">
-                    <span>先锋</span>
+                    <span>{{formData.abbreviation}}</span>
             </FormItem>
                <FormItem label='图号:' style="width: 250px">
-                    <span>003</span>
+                    <span>{{formData.url_number}}</span>
             </FormItem>
              <FormItem label='产品名称:' style="width: 250px">
-                    <span>单开门1</span>
+                    <span>{{formData.title}}</span>
             </FormItem>
-            <FormItem label='组合名称:'>
-                <Select>
-                    <Option></Option>
+            <FormItem label='组合名称:' style="width: 250px">
+                <Select v-model="compose_name" filterable multiple>
+                    <Option v-for="(item,index) in compose_name_list" :key="index" :value="item" :label="item"></Option>
                 </Select>
             </FormItem>
               <FormItem>
@@ -63,26 +68,23 @@ export default {
   components: { index },
     data(){
         return{
+          formData:{},
             headers: { Authorization: localStorage.getItem("token") },
             pageSize:10,
             pageIndex:1,
             total:0,
-            searchData:{
-               start_time:'',
-               end_time:'',
-               order_no:'',
-               residential_name:'',
-               abbreviation:'',
-            },
+            compose_name_list:[],
+           compose_name:[],
             tableData:[],
             tableColumns:[
-                {title:'组合名称',align:"center",key:'order_no',minWidth:80},
-                 {title:'组合合同金额',align:"center",key:'residential_name',minWidth:80},
-                  {title:'木工产值',align:"center",key:'abbreviation',minWidth:80},
-                   {title:'油漆产值',align:"center",key:'order_no',minWidth:80},
-                    {title:'发货产值',align:"center",key:'order_no',minWidth:80},
-                     {title:'安装产值',align:"center",key:'order_no',minWidth:80},
-                       {title:'合计工序产值',align:"center",key:'order_no',minWidth:80},
+                {title:'组合名称',align:"center",key:'compose_name',minWidth:80},
+                 {title:'组合合同金额',align:"center",key:'contract_price',minWidth:80},
+                  {title:'木工产值',align:"center",key:'wood_value',minWidth:80},
+                   {title:'油漆产值',align:"center",key:'paint_value',minWidth:80},
+                   {title:'包装产值',align:"center",key:'pack_value',minWidth:80},
+                    {title:'发货产值',align:"center",key:'send_value',minWidth:80},
+                     {title:'安装产值',align:"center",key:'install_value',minWidth:80},
+                       {title:'合计工序产值',align:"center",key:'total_value',minWidth:80},
                 {title:'操作',align:'center',slot:'set',minWidth:80}
             ],
         }
@@ -91,6 +93,9 @@ export default {
       this.getData();
     },
     methods:{
+      goback(){
+          this.$router.go(-1);
+      },
            uploadError(err) {
       this.$Message.error(err.msg || "上传失败");
     },
@@ -103,16 +108,15 @@ export default {
       }
     },
         init(){
-          let data ={};
-          data = JSON.parse(JSON.stringify(this.searchData));
-          data.start_time = data.start_time?Date.parse(data.start_time).toString().slice(0,10):'';
-           data.end_time = data.end_time?Date.parse(data.end_time).toString().slice(0,10):'';
-         this.getData(data);
+         this.getData({compose_name:this.compose_name});
         },
         getData(row){
-          this.axios.post('/api/output_value_list',{...row,page_size:this.pageSize,page_index:this.pageIndex}).then(res=>{
-              this.tableData = res.data.data;
-              this.total = res.data.total;
+          this.axios.post('/api/output_value_product_detail',{order_no:this.$route.query.order_no,id:this.$route.query.id,...row,page_size:this.pageSize,page_index:this.pageIndex}).then(res=>{
+              this.tableData = res.data.list.data;
+              this.total = res.data.list.total;
+              this.formData = JSON.parse(JSON.stringify(res.data));
+              delete this.formData.list;
+              this.compose_name_list = res.data.compose_name;
           })
         },
         goPageDetail(row){

+ 38 - 32
src/views/BidSystem/OutputValue/detail.vue

@@ -1,31 +1,37 @@
 <template>
     <div>
-        <Toptitle title="项目产值表">
+        <Toptitle title="详情">
             <slot name="titleButton"> 
           <Button type="success" ghost icon="md-exit" style="margin-right:10px;"
             >导出</Button
           >
+          <Button
+           @click="goback()"
+          type="primary"
+          ghost
+          style="margin-right: 10px"
+          >返回</Button>
             </slot>
         </Toptitle>
         <div style="height:80%;overflow:auto">
-        <Form style="display:flex;flex-wrap:wrap;margin:10px 0" label-width='100'>
+        <Form style="display:flex;flex-wrap:wrap;margin:10px 0" :label-width='100'>
             <FormItem label='项目编码:' style="width: 250px" >
-               <span>{{searchData.order_no}}</span>
+               <span>{{formData.order_no}}</span>
             </FormItem>
              <FormItem label='项目名称:' style="width: 250px" >
-                 <span>先锋创意园</span>
+                 <span>{{formData.residential_name}}</span>
             </FormItem>
              <FormItem label='项目简称:' style="width: 250px">
-                   <span>先锋</span>
+                   <span>{{formData.abbreviation}}</span>
             </FormItem>
              <FormItem label='图号:' style="width: 250px">
-                    <Select v-model="searchData.abbreviation" size="small">
-                     <Option></Option>
+                    <Select v-model="searchData.url_number" size="small" filterable multiple>
+                     <Option v-for="(item,index) in formData.url_number" :key="index" :value="item" :label="item"></Option>
                  </Select>
             </FormItem>
              <FormItem label='产品:' style="width: 250px">
-                    <Select v-model="searchData.abbreviation" size="small">
-                     <Option></Option>
+                    <Select v-model="searchData.product_title" size="small" filterable multiple>
+                     <Option v-for="(item,index) in formData.product_title" :key="index" :value="item" :label="item"></Option>
                  </Select>
             </FormItem>
               <FormItem>
@@ -65,23 +71,22 @@ export default {
             pageIndex:1,
             total:0,
             searchData:{
-               start_time:'',
-               end_time:'',
-               order_no:'',
-               residential_name:'',
-               abbreviation:'',
+              url_number:[],
+              product_title:[],
             },
+            formData:{},
             tableData:[],
             tableColumns:[
-                {title:'图号',align:"center",key:'order_no',minWidth:80},
-                 {title:'产品名称',align:"center",key:'residential_name',minWidth:80},
-                  {title:'图号合同金额',align:"center",key:'abbreviation',minWidth:80},
-                    {title:'核量金额',align:"center",key:'order_no',minWidth:80},
-                     {title:'木工产值',align:"center",key:'order_no',minWidth:80},
-                      {title:'油漆产值',align:"center",key:'order_no',minWidth:80},
-                       {title:'发货产值',align:"center",key:'order_no',minWidth:80},
-                        {title:'安装产值',align:"center",key:'order_no',minWidth:80},
-                        {title:'合计工序产值',align:"center",key:'order_no',minWidth:80},
+                {title:'图号',align:"center",key:'url_number',minWidth:80},
+                 {title:'产品名称',align:"center",key:'product_title',minWidth:80},
+                  {title:'图号合同金额',align:"center",key:'contract_price',minWidth:80},
+                    {title:'核量金额',align:"center",key:'quantity_price',minWidth:80},
+                     {title:'木工产值',align:"center",key:'wood_value',minWidth:80},
+                      {title:'油漆产值',align:"center",key:'paint_value',minWidth:80},
+                       {title:'包装产值',align:"center",key:'pack_value',minWidth:80},
+                       {title:'发货产值',align:"center",key:'send_value',minWidth:80},
+                        {title:'安装产值',align:"center",key:'install_value',minWidth:80},
+                        {title:'合计工序产值',align:"center",key:'total_value',minWidth:80},
                 {title:'操作',align:'center',slot:'set',minWidth:80}
             ],
         }
@@ -90,6 +95,9 @@ export default {
       this.getData();
     },
     methods:{
+      goback(){
+         this.$router.go(-1);
+      },
            uploadError(err) {
       this.$Message.error(err.msg || "上传失败");
     },
@@ -102,20 +110,18 @@ export default {
       }
     },
         init(){
-          let data ={};
-          data = JSON.parse(JSON.stringify(this.searchData));
-          data.start_time = data.start_time?Date.parse(data.start_time).toString().slice(0,10):'';
-           data.end_time = data.end_time?Date.parse(data.end_time).toString().slice(0,10):'';
-         this.getData(data);
+         this.getData(this.searchData);
         },
         getData(row){
-          this.axios.post('/api/output_value_list',{...row,page_size:this.pageSize,page_index:this.pageIndex}).then(res=>{
-              this.tableData = res.data.data;
-              this.total = res.data.total;
+          this.axios.post('/api/output_value_detail',{order_no:this.$route.query.order_no,...row,page_size:this.pageSize,page_index:this.pageIndex}).then(res=>{
+              this.tableData = res.data.list.data;
+              this.total = res.data.list.total;
+              this.formData = res.data;
+              delete this.formData.list;
           })
         },
         goPageDetail(row){
-      this.$router.push({path:'/cms/BidSystem/OutputValue/config',query:{...row}})
+      this.$router.push({path:'/cms/BidSystem/OutputValue/config',query:{id:row.product_id,order_no:row.order_no}})
         },
         changeSize(e){
            this.pageSize=e;

+ 38 - 31
src/views/BidSystem/OutputValue/info.vue

@@ -1,35 +1,42 @@
 <template>
     <div>
-        <Toptitle title="项目产值表">
+        <Toptitle title="详情">
             <slot name="titleButton"> 
           <Button type="success" ghost icon="md-exit" style="margin-right:10px;"
             >导出</Button
           >
+          <Button 
+           @click="goback()"
+          type="primary"
+          ghost
+          style="margin-right: 10px">
+            返回
+          </Button>
             </slot>
         </Toptitle>
         <div style="height:80%;overflow:auto">
-        <Form style="display:flex;flex-wrap:wrap;margin:10px 0" label-width='100'>
+        <Form style="display:flex;flex-wrap:wrap;margin:10px 0" :label-width='100'>
             <FormItem label='项目编码:' style="width: 250px" >
-               <span>23456</span>
+               <span>{{formData.order_no}}</span>
             </FormItem>
              <FormItem label='项目名称:' style="width: 250px" >
-                  <span>先锋创意园</span>
+                  <span>{{formData.residential_name}}</span>
             </FormItem>
              <FormItem label='项目简称:' style="width: 250px">
-                   <span>先锋</span>
+                   <span>{{formData.abbreviation}}</span>
             </FormItem>
              <FormItem label='图号:' style="width: 250px">
-                   <span>003</span>
+                   <span>{{formData.url_number}}</span>
             </FormItem>
              <FormItem label='产品名称:' style="width: 250px">
-                   <span>单开门</span>
+                   <span>{{formData.title}}</span>
             </FormItem>
              <FormItem label='组合名称:' style="width: 250px">
-                   <span>003</span>
+                   <span>{{formData.compose_name}}</span>
             </FormItem>
              <FormItem label='部件名称:' style="width: 250px">
-                   <Select>
-                       <Option></Option>
+                   <Select v-model="searchData.part_title" filterable multiple>
+                       <Option v-for="(item,index) in part_title_list" :key="index" :label="item" :value="item"></Option>
                    </Select>
             </FormItem>
               <FormItem>
@@ -61,27 +68,25 @@
 export default {
     data(){
         return{
+          part_title_list:[],
+           formData:{},
             headers: { Authorization: localStorage.getItem("token") },
             pageSize:10,
             pageIndex:1,
             total:0,
             searchData:{
-               start_time:'',
-               end_time:'',
-               order_no:'',
-               residential_name:'',
-               abbreviation:'',
+             part_title:'',
             },
             tableData:[],
             tableColumns:[
-                {title:'部件名称',align:"center",key:'order_no',minWidth:80},
-                 {title:'部件合同金额',align:"center",key:'residential_name',minWidth:80},
-                  {title:'木工产值',align:"center",key:'abbreviation',minWidth:80},
-                   {title:'油漆产值',align:"center",key:'order_no',minWidth:80},
-                    {title:'发货产值',align:"center",key:'order_no',minWidth:80},
-                     {title:'安装产值',align:"center",key:'order_no',minWidth:80},
-                       {title:'合计工序产值',align:"center",key:'order_no',minWidth:80},
-                {title:'操作',align:'center',slot:'set',minWidth:80}
+                {title:'部件名称',align:"center",key:'part_title',minWidth:80},
+                 {title:'部件合同金额',align:"center",key:'contract_price',minWidth:80},
+                  {title:'木工产值',align:"center",key:'wood_value',minWidth:80},
+                   {title:'油漆产值',align:"center",key:'paint_value',minWidth:80},
+                    {title:'包装产值',align:"center",key:'pack_value',minWidth:80},
+                    {title:'发货产值',align:"center",key:'send_value',minWidth:80},
+                     {title:'安装产值',align:"center",key:'install_value',minWidth:80},
+                       {title:'合计工序产值',align:"center",key:'total_value',minWidth:80}
             ],
         }
     },
@@ -89,6 +94,9 @@ export default {
       this.getData();
     },
     methods:{
+      goback(){
+        this.$router.go(-1);
+      },
            uploadError(err) {
       this.$Message.error(err.msg || "上传失败");
     },
@@ -101,16 +109,15 @@ export default {
       }
     },
         init(){
-          let data ={};
-          data = JSON.parse(JSON.stringify(this.searchData));
-          data.start_time = data.start_time?Date.parse(data.start_time).toString().slice(0,10):'';
-           data.end_time = data.end_time?Date.parse(data.end_time).toString().slice(0,10):'';
-         this.getData(data);
+         this.getData(this.searchData);
         },
         getData(row){
-          this.axios.post('/api/output_value_list',{...row,page_size:this.pageSize,page_index:this.pageIndex}).then(res=>{
-              this.tableData = res.data.data;
-              this.total = res.data.total;
+          this.axios.post('/api/output_value_part_detail',{order_no:this.$route.query.order_no,id:this.$route.query.product_id,compose_name:this.$route.query.compose_name,...row,page_size:this.pageSize,page_index:this.pageIndex}).then(res=>{
+              this.tableData = res.data.list.data;
+              this.total = res.data.list.total;
+              this.formData = res.data;
+              delete this.formData.list;
+              this.part_title_list = res.data.part_title;
           })
         },
         changeSize(e){

+ 25 - 19
src/views/BidSystem/OutputValue/list.vue

@@ -7,7 +7,7 @@
           >
             </slot>
         </Toptitle>
-        <div style="height:80%;overflow:auto">
+        <div style="height:85%;overflow:auto">
         <Form style="display:flex;flex-wrap:wrap;margin:10px 0" :label-width='100'>
             <FormItem label='查询区间:' style="width:400px">
                   <DatePicker type="date" placeholder="年/月/日" style="width: 130px" size='small' v-model="searchData.start_time"></DatePicker>
@@ -15,18 +15,18 @@
               <DatePicker type="date" placeholder="年/月/日" style="width: 130px" size='small' v-model="searchData.end_time"></DatePicker>
             </FormItem>
             <FormItem label='项目编码:' style="width: 250px" >
-                 <Select v-model="searchData.order_no" size="small">
-                     <Option></Option>
+                 <Select v-model="searchData.order_no" size="small" filterable multiple >
+                     <Option v-for="(item,index) in order_no_list" :key="index" :value="item" :label="item"></Option>
                  </Select>
             </FormItem>
              <FormItem label='项目名称:' style="width: 250px" >
-                  <Select v-model="searchData.residential_name" size="small">
-                     <Option></Option>
+                  <Select v-model="searchData.residential_name" size="small" 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 v-model="searchData.abbreviation" size="small">
-                     <Option></Option>
+                    <Select v-model="searchData.abbreviation" size="small" filterable multiple>
+                     <Option v-for="(item,index) in abbreviation_list" :key="index" :label="item" :value="item"></Option>
                  </Select>
             </FormItem>
               <FormItem>
@@ -64,6 +64,9 @@
 export default {
     data(){
         return{
+            order_no_list:[],
+            abbreviation_list:[],
+            residential_name_list:[],
             headers: { Authorization: localStorage.getItem("token") },
             pageSize:10,
             pageIndex:1,
@@ -77,15 +80,15 @@ export default {
             },
             tableData:[],
             tableColumns:[
-                {title:'项目编码',align:"center",key:'order_no',minWidth:80},
-                 {title:'项目名称',align:"center",key:'residential_name',minWidth:80},
-                  {title:'项目简称',align:"center",key:'abbreviation',minWidth:80},
-                   {title:'合同金额',align:"center",key:'',minWidth:80},
-                    {title:'核量金额',align:"center",key:'',minWidth:80},
-                     {title:'本厂产值',align:"center",key:'',minWidth:80},
-                      {title:'外协产值',align:"center",key:'',minWidth:80},
-                       {title:'合计产值',align:"center",key:'',minWidth:80},
-                        {title:'未完成产值',align:"center",key:'',minWidth:80},
+                {title:'项目编码',align:"center",key:'order_no',minWidth:120},
+                 {title:'项目名称',align:"center",key:'residential_name',minWidth:120},
+                  {title:'项目简称',align:"center",key:'abbreviation',minWidth:120},
+                   {title:'合同金额',align:"center",key:'contract_price',minWidth:120},
+                    {title:'核量金额',align:"center",key:'quantity_price',minWidth:120},
+                     {title:'本厂产值',align:"center",key:'local_value',minWidth:120},
+                      {title:'外协产值',align:"center",key:'out_value',minWidth:120},
+                       {title:'合计产值',align:"center",key:'total_value',minWidth:120},
+                        {title:'未完成产值',align:"center",key:'un_total_value',minWidth:120},
                 {title:'操作',align:'center',slot:'set',minWidth:80}
             ],
         }
@@ -107,7 +110,7 @@ export default {
                         return;
                     }
                     const values = data.map(item => Number(item[key]));
-                    if (key == 'residential_name') {
+                    if (key == 'contract_price'||key == 'quantity_price'||key == 'out_value'||key == 'un_total_value'||key == 'total_value'||key == 'local_value') {
                         const v = values.reduce((prev, curr) => {
                             const value = Number(curr);
                             if (!isNaN(value)) {
@@ -118,7 +121,7 @@ export default {
                         }, 0);
                         sums[key] = {
                             key,
-                            value:123
+                            value:v.toFixed(2)
                         };
                     } else {
                         sums[key] = {
@@ -152,10 +155,13 @@ export default {
           this.axios.post('/api/output_value_list',{...row,page_size:this.pageSize,page_index:this.pageIndex}).then(res=>{
               this.tableData = res.data.data;
               this.total = res.data.total;
+              this.order_no_list=res.data.order_no;
+              this.residential_name_list =res.data.residential_name;
+              this.abbreviation_list = res.data.abbreviation;
           })
         },
         goPageDetail(row){
-      this.$router.push({path:'/cms/BidSystem/OutputValue/detail',query:{...row}})
+      this.$router.push({path:'/cms/BidSystem/OutputValue/detail',query:{order_no:row.order_no}})
         },
         changeSize(e){
            this.pageSize=e;

+ 199 - 0
src/views/BidSystem/OutputValue/otherList.vue

@@ -0,0 +1,199 @@
+<template>
+  <div style="width:100%">
+    <Toptitle title="产值表">
+      <Button type="primary" ghost style="margin-right: 10px">导出</Button>
+    </Toptitle>
+    <div style="height:85%;overflow:auto">
+    <Topsearch :list="list" @init="init" @searchData="init"> </Topsearch>
+    <div class="table_content">
+        <div  v-for="(item, index) in tableData" :key="index" class="table_style">
+        <div class="table_title">{{item.title}}</div>
+      <Table
+        :data="item.data"
+        :columns="tableColumns"
+        border
+      >
+      </Table>
+      </div>
+    </div>
+    </div>
+     <div class="pageSlotStyle">
+          <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 {
+        proxyData:{},
+        employee_list:[{label:'南线一组',value:'南线一组'},
+        {label:'南线二组',value:'南线二组'},
+        {label:'北线一组',value:'北线一组'},
+        {label:'北线二组',value:'北线二组'},
+        {label:'南线白磨',value:'南线白磨'},
+        {label:'北线白磨',value:'北线白磨'},
+        {label:'南线修色',value:'南线修色'},
+        {label:'北线修色',value:'北线修色'},
+        {label:'南线油磨',value:'南线油磨'},
+        {label:'北线油磨',value:'北线油磨'},
+        {label:'包装',value:'包装'},
+        {label:'发货',value:'发货'},
+        {label:'安装',value:'安装'}],
+        total:0,
+        pageSize:10,
+        pageIndex:1,
+      tableData: [],
+      tableColumns:[   
+      {title:'日期',align:'center',width:'120',key:'end_time'},
+      {title:'项目名称',align:'center',width:'100',key:'residential_name'},
+      {title:'图号',align:'center',width:'80',key:'url_number',ellipsis:true,tooltip:true},
+      {title:'平方',align:'center',width:'100',key:'area',ellipsis:true,tooltip:true},
+      {title:'人数',align:'center',width:'80',key:'count'},
+     ],
+      list: [
+        {
+          title: "班组",
+          name: "Select",
+          value: "",
+          multiple: true,
+          filterable: true,
+          placeholder: "请选择",
+          serverName: "employee",
+          optionName: "label",
+          optionValue: "value",
+          option: [],
+        },
+        {
+            title:'日期',
+            isDate:true,
+            name:"Date",
+            type:'date',
+            start_value:'',
+            end_value:'',
+            start_server: "start_time",
+            end_server:'end_time',
+            start_placeholder:'年/月',
+            end_placeholder:'年/月'
+        },
+        {
+          title: "项目名称",
+          name: "Select",
+          value: "",
+          multiple: true,
+          filterable: true,
+          placeholder: "请选择",
+          serverName: "residential_name",
+          optionName: "label",
+          optionValue: "value",
+          option: [],
+        },
+         {
+          title: "图号",
+          name: "Select",
+          value: "",
+          multiple: true,
+          filterable: true,
+          placeholder: "请选择",
+          serverName: "url_number",
+          optionName: "label",
+          optionValue: "value",
+          option: [],
+        },
+      ],
+    };
+  },
+  mounted() {
+  },
+  methods: {
+      changeSize(e){
+           this.pageSize = e;
+           this.init(this.proxyData);
+      },
+      changePage(e){
+          this.pageIndex = e;
+          this.init(this.proxyData);
+      },
+    init(row) {
+          if(row){
+              this.proxyData = JSON.parse(JSON.stringify(row))
+              row.start_time=row.start_time?Date.parse(row.start_time).toString().slice(0,10):'';
+              row.end_time = row.end_time?Date.parse(row.end_time).toString().slice(0,10):'';
+          }
+        
+      this.axios.post("/api/outputs_value_list", { ...row,page_size:this.pageSize,page_index:this.pageIndex }).then((res) => {
+          this.list[0].option=this.employee_list;
+          let residential_name = [];
+          res.data.residential_name.forEach(v=>{
+               let obj = {};
+               obj.label = v;
+               obj.value = v;
+               residential_name.push(obj)
+          })
+          this.list[2].option = residential_name;
+          let url_number = [];
+          res.data.url_number.forEach(v=>{
+                let obj = {};
+               obj.label = v;
+               obj.value = v;
+               url_number.push(obj)
+          })
+          this.list[3].option = url_number;
+          res.data.data.forEach(element => {
+            if(element.data.length<10){
+                for(let i=0;i<10;i++){
+                    if(element.data.length<10){
+                        element.data.push({});
+                    }else{
+                        break;
+                    }
+                }
+            }
+          });
+        this.tableData = res.data.data;
+        this.tableData.forEach(v=>{
+            if(v.total>this.total){
+                this.total = v.total
+            }
+        })
+      });
+    },
+  },
+};
+</script>
+<style lang="scss" scoped>
+.table_content{
+    vertical-align: top;
+    overflow-y: hidden;
+    overflow-x: auto;
+    white-space: nowrap;
+    height: 590px;
+    width:100%;
+    .table_title{
+        text-align: center;
+        font-size: 18px;
+        font-weight: bold;
+        border-top:#dcdee2 solid 2px;
+        border-left:#dcdee2 solid 2px; 
+        border-right: #dcdee2 solid 2px;;
+    }
+    .table_style{
+        display: inline-block;
+        width:482px;
+    }
+  
+}  
+.pageSlotStyle {
+  text-align: center;
+  margin-top: 10px;
+}
+</style>

+ 5 - 3
src/views/BidSystem/ProductDeOrder/detail.vue

@@ -372,9 +372,9 @@ export default {
             return h(
               "span",
               {},
-              row.left_right_mode == 1
+              row.fashion == 1
                 ? "左式"
-                : row.left_right_mode == 2
+                : row.fashion == 2
                 ? "右式"
                 : "无"
             );
@@ -499,19 +499,21 @@ export default {
         this.$Message.warning("请选择数据");
       } else {
         this.$Modal.confirm({
-          title: "确认完成?",
+          title: "是否确认?",
           // content: "此操作确认后不可恢复,请确认!",
           onOk: () => {
             this.axios({
               method: "post",
               url: "/api/order_area_product_status",
               data: {
+                order_no:this.$route.query.order_no,
                 status,
                 orders_area_product_detail_id: this.detail_id,
               },
             }).then((res) => {
               if (res.code == 200) {
                 this.$Message.success(res.msg);
+                this.detail_id = [];
                 this.initData(
                   this.formData.order_no,
                   this.formData.orders_area_product_detail_id

+ 1 - 1
src/views/BidSystem/ProductDeOrder/infoDetail.vue

@@ -811,7 +811,7 @@ export default {
       this.axios
         .get("/api/employee_list", { params: { type: 2 } })
         .then((res) => {
-          this.nickname_list = res.data;
+          this.nickname_list = res.data.data;
         });
     }
   },

+ 191 - 0
src/views/BidSystem/WorkDistribution.vue

@@ -0,0 +1,191 @@
+<template>
+  <div style="width:100%">
+    <Toptitle title="派工完工表">
+      <Button type="primary" ghost style="margin-right: 10px">导出</Button>
+    </Toptitle>
+    <div style="height:85%;overflow:auto">
+    <Topsearch :list="list" @init="init" @searchData="init"> </Topsearch>
+    <div class="table_content">
+        <div  v-for="(item, index) in tableData" :key="index" class="table_style">
+        <div class="table_title">{{item.title}}</div>
+      <Table
+        :data="item.data"
+        :columns="tableColumns"
+        border
+      >
+      </Table>
+      </div>
+    </div>
+    </div>
+     <div class="pageSlotStyle">
+          <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 {
+        proxyData:[],
+         employee_list:[{label:'南线一组',value:'南线一组'},
+        {label:'南线二组',value:'南线二组'},
+        {label:'北线一组',value:'北线一组'},
+        {label:'北线二组',value:'北线二组'},
+        {label:'南线白磨',value:'南线白磨'},
+        {label:'北线白磨',value:'北线白磨'},
+        {label:'南线修色',value:'南线修色'},
+        {label:'北线修色',value:'北线修色'},
+        {label:'南线油磨',value:'南线油磨'},
+        {label:'北线油磨',value:'北线油磨'},
+        {label:'包装',value:'包装'},
+        {label:'发货',value:'发货'},
+        {label:'安装',value:'安装'}],
+        total:0,
+        pageSize:10,
+        pageIndex:1,
+      tableData: [],
+      tableColumns:[   
+      {title:'日期',align:'center',width:'120',key:'upd_time'},
+      {title:'项目名称',align:'center',width:'100',key:'residential_name'},
+      {title:'图号',align:'center',width:'80',key:'url_number',ellipsis:true,tooltip:true},
+      {title:'平方',align:'center',width:'100',key:'area',ellipsis:true,tooltip:true},
+      {title:'人数',align:'center',width:'80',key:'count'},
+     ],
+      list: [
+        {
+          title: "班组",
+          name: "Select",
+          value: "",
+          multiple: true,
+          filterable: true,
+          placeholder: "请选择",
+          serverName: "employee",
+          optionName: "label",
+          optionValue: "value",
+          option: [],
+        },
+          {
+            title:'日期',
+            isDate:true,
+            name:"Date",
+            type:'date',
+            start_value:'',
+            end_value:'',
+            start_server: "number",
+            end_server:'',
+            start_placeholder:'年/月',
+            end_placeholder:'年/月'
+        },
+        {
+          title: "项目名称",
+          name: "Select",
+          value: "",
+          placeholder: "请选择",
+          filterable: true,
+          serverName: "number",
+          optionName: "number",
+          optionValue: "number",
+          option: [],
+        },
+        {
+          title: "图号",
+          name: "Select",
+          value: "",
+          placeholder: "请选择",
+          filterable: true,
+          serverName: "number",
+          optionName: "number",
+          optionValue: "number",
+          option: [],
+        },
+          {
+            title:'完工日期',
+            isDate:true,
+            name:"Date",
+            type:'date',
+            start_value:'',
+            end_value:'',
+           start_server: "number",
+           end_server:'', 
+            start_placeholder:'年/月',
+            end_placeholder:'年/月'
+        }
+      ],
+    };
+  },
+  mounted() {
+  },
+  methods: {
+      changeSize(e){
+           this.pageSize = e;
+           this.init(this.proxyData);
+      },
+      changePage(e){
+           this.pageIndex = e;
+           this.init(this.proxyData);
+      },
+    init(row) {
+        if(row){
+             this.proxyData = JSON.parse(JSON.stringify(row));
+
+        }
+      this.axios.post("/api/outputs_value_list", { ...row,page_size:this.pageSize,page_index:this.pageIndex }).then((res) => {
+          this.list[0].option = this.employee_list;
+          res.data.data.forEach(element => {
+            if(element.data.length<10){
+                for(let i=0;i<10;i++){
+                    if(element.data.length<10){
+                        element.data.push({});
+                    }else{
+                        break;
+                    }
+                }
+            }
+          });
+        this.tableData = res.data.data;
+        this.tableData.forEach(v=>{
+            if(v.total>this.total){
+                this.total = v.total
+            }
+        })
+      });
+    },
+  },
+};
+</script>
+<style lang="scss" scoped>
+.table_content{
+    vertical-align: top;
+    overflow-y: hidden;
+    overflow-x: auto;
+    white-space: nowrap;
+    height: 590px;
+    width:100%;
+    .table_title{
+        text-align: center;
+        font-size: 18px;
+        font-weight: bold;
+         border-top:#dcdee2 solid 2px;
+        border-left:#dcdee2 solid 2px; 
+        border-right: #dcdee2 solid 2px;;
+    }
+    .table_style{
+        display: inline-block;
+        width:482px;
+    }
+  
+}  
+.pageSlotStyle {
+  text-align: center;
+  margin-top: 10px;
+}
+</style>

+ 41 - 29
src/views/ChipPrintScreen/ChipPrintScreen.vue

@@ -30,14 +30,14 @@
           >
             打 印
           </Button>
-          <Button
+          <!-- <Button
             @click="handleOk"
             size="large"
             type="primary"
             style="margin-right: 1rem"
           >
             完 工
-          </Button>
+          </Button> -->
           <Button
             style="margin-right: 1rem"
             @click="goCheckPage"
@@ -512,10 +512,10 @@
           >
             返回
           </Button>
-          <Button @click="handlePrintComfirm(selectedObj)" type="primary">
-            芯片打印
+          <Button @click="handlePrintComfirm(selectedObj,null,item.sub_type)" type="primary" v-for="item in printTip" :key="item.id">
+            {{item.title}}
           </Button>
-          <Button @click="Print(selectedObj)" type="primary">
+          <Button @click="Print(selectedObj)" type="primary" v-if="false">
             标签打印
           </Button>
           
@@ -619,17 +619,17 @@
           >
             返回
           </Button>
-           <Button @click="handlePrintComfirm(selectedObj, 1)" type="primary"
-           style="width:20%;height:60px;font-size:29px">
-            芯片打印
+           <Button @click="handlePrintComfirm(selectedObj, 1,item.sub_type)" type="primary"
+           style="width:20%;height:60px;font-size:29px" v-for="item in printTip" :key="item.id">
+           {{item.title}}
           </Button>
-          <Button @click="Print(selectedObj, 1)" type="primary" style="width:20%;height:60px;font-size:29px">
+          <Button @click="Print(selectedObj, 1)" type="primary" style="width:20%;height:60px;font-size:29px" v-if="false">
             标签打印
           </Button>
          
         </div>
       </Modal>
-       <Modal
+       <!-- <Modal
         class=""
         v-model="finishWork"
         @on-cancel ='handleCancel'
@@ -682,7 +682,7 @@
             确认
           </Button>
         </div>
-      </Modal>
+      </Modal> -->
       <Modal v-model="selectTrue" :closable='false'>
         <div style="text-align:center;margin:2em"><h1>是否全选所有页面的所有部件</h1></div>
         <div slot="footer" style="text-align:center;">
@@ -724,6 +724,7 @@ export default {
   data() {
     // 这里存放数据
     return {
+      printTip:[],
       rule_data:[],
       selectTrue:false,
       cancelData:[],
@@ -814,7 +815,9 @@ export default {
           }
        }
   },
-  created() {},
+  created() {
+    
+  },
   beforeRouteEnter(to, from, next) {
     next((vm) => {
       if (from.path == "/cms/ChipPrintScreen/ChipPrintScreenCheck") {
@@ -837,6 +840,14 @@ export default {
     //               })
     //           }
     // })
+    this.axios.get('/api/ext_print_format_list').then(res=>{
+        res.data.data.forEach(v=>{
+          if(v.type.indexOf('芯片')>=0&&v.state==1){
+            this.printTip.push(v);
+          }
+        })
+    })
+    console.log(this.printTip);
   },
   methods: {
     selectOk(){
@@ -911,7 +922,8 @@ handleSelectionAll(){
     },
     cancel(){
        this.fullscreenModal = false;
-       this.$forceUpdate();
+       this.$router.push({path:'/cms/ChipPrintScreen/list'});
+      //  this.$forceUpdate();
     },
     focusChange(index){
         this.focusIndex = index;
@@ -1272,7 +1284,7 @@ handleSelectionAll(){
                         res.data.data[res.data.data.length - 1].url_number
                       }`
                     : `${res.data.data[10 * index].url_number}~${
-                        res.data.data[10 * index + 10].url_number
+                        res.data.data[10 * index + 9].url_number
                       }`,
                 children: res.data.data.slice(10 * index, 10 * index + 10),
               });
@@ -1388,7 +1400,7 @@ handleSelectionAll(){
       }
       this.printModal = true;
     },
-    handlePrintComfirm(row, type) {
+    handlePrintComfirm(row, type,sub_type) {
       if (
         type &&
         this.modalRoomListSelected.length != this.selectedObj.print_num
@@ -1427,9 +1439,9 @@ handleSelectionAll(){
             console.log(res);
             if (res.code == 200) {
               if (res.data.state) {
-                this.handlePrintChipsUsb(resp.data, res.data.type);
+                this.handlePrintChipsUsb(resp.data, res.data.type,sub_type);
               } else {
-                this.handlePrintChipsIp(resp.data, res.data.type);
+                this.handlePrintChipsIp(resp.data, res.data.type,sub_type);
               }
             }
           });
@@ -1465,10 +1477,10 @@ handleSelectionAll(){
        })
         // this.finishWork = false;
     },
-    handleOk() {
-      if (this.saveData.length==0&&!this.selectedAll) {
-        return this.$Message.warning("请选择数据");
-      }
+    // handleOk() {
+    //   if (this.saveData.length==0&&!this.selectedAll) {
+    //     return this.$Message.warning("请选择数据");
+    //   }
     //   if (this.selectedObj.type == 1 && this.selectedObj.un_print == 0) {
     //     this.selectedObj.ok_num =
     //       this.selectedObj.on_print - this.selectedObj.on_complete;
@@ -1479,8 +1491,8 @@ handleSelectionAll(){
     //   } else {
     //     return this.$Message.warning("部件存在未打印芯片,请先打印");
     //   }
-     this.finishWork = true;
-    },
+    //  this.finishWork = true;
+    // },
      handleRoomCancel() {
       this.modalRoomList.map((v) => {
         v.isCurrent = false;
@@ -1658,7 +1670,7 @@ handleSelectionAll(){
         }
       });
     },
-    handlePrintChipsUsb(contents, type) {
+    handlePrintChipsUsb(contents, type,sub_type) {
       this.axios.get("/api/get_print_url").then((res) => {
         let data = {};
         // let url = "http://192.168.0.145:888/postek/print"; //request_url
@@ -1797,7 +1809,7 @@ handleSelectionAll(){
             //  console.log(printContent_l5_data)
             printparamsJsonArray.push({
               PTK_DrawText_TrueTypeEx:
-                "1000,330,25,0,微软雅黑,1,700,0,0,0,10,0,0,0," + printContent_l5,
+                "970,330,25,0,微软雅黑,1,700,0,0,0,10,0,0,0," + printContent_l5,
             });
             //下
             printparamsJsonArray.push({
@@ -1834,7 +1846,7 @@ handleSelectionAll(){
             });
               printparamsJsonArray.push({
               PTK_DrawText_TrueTypeEx:
-                "1000,530,25,0,微软雅黑,1,700,0,0,0,10,0,0,0," + printContent_l5,
+                "970,530,25,0,微软雅黑,1,700,0,0,0,10,0,0,0," + printContent_l5,
             });
             // 17,35 420
             printparamsJsonArray.push({
@@ -1845,7 +1857,7 @@ handleSelectionAll(){
           });
         }
         printparamsJsonArray.push({ PTK_CloseUSBPort: "" });
-        data.printparams = printparamsJsonArray;
+        data.printparams = sub_type==1?printparamsJsonArray:[];
         let sub_data = JSON.parse(JSON.stringify(data));
         sub_data.printparams = JSON.stringify(sub_data.printparams);
         let _this = this;
@@ -1884,7 +1896,7 @@ handleSelectionAll(){
        }
        return resultStr.join("");
 },
-    handlePrintChipsIp(contents, type) {
+    handlePrintChipsIp(contents, type,sub_type) {
       this.axios.get("/api/get_print_url").then((res) => {
         let data = {};
         // let url = "http://192.168.0.145:888/postek/print"; //request_url
@@ -2061,7 +2073,7 @@ handleSelectionAll(){
           });
         }
         printparamsJsonArray.push({ PTK_CloseConnect: "" });
-        data.printparams = printparamsJsonArray;
+        data.printparams = sub_type==1?printparamsJsonArray:[];
         let sub_data = JSON.parse(JSON.stringify(data));
         sub_data.printparams = JSON.stringify(sub_data.printparams);
         let _this = this;

+ 25 - 16
src/views/ChipPrintScreen/ChipPrintScreenCheck.vue

@@ -465,10 +465,10 @@
         >
           返回
         </Button>
-        <Button @click="handlePrintComfirm(selectedObj)" type="primary">
-            芯片打印
+        <Button @click="handlePrintComfirm(selectedObj,null,item.sub_type)" type="primary" v-for="item in printTip" :key="item.id">
+           {{item.title}}
           </Button>
-          <Button @click="Print(selectedObj)" type="primary">
+          <Button @click="Print(selectedObj)" type="primary" v-if="false">
             标签打印
           </Button>
       </div>
@@ -512,11 +512,11 @@
         >
           返回
         </Button>
-       <Button @click="handlePrintComfirm(selectedObj, 1)" type="primary"
-           style="width:20%;height:60px;font-size:29px">
-            芯片打印
+       <Button @click="handlePrintComfirm(selectedObj, 1,item.sub_type)" type="primary"
+           style="width:20%;height:60px;font-size:29px" v-for="item in printTip" :key="item.id">
+            {{item.title}}
           </Button>
-          <Button @click="Print(selectedObj, 1)" type="primary" style="width:20%;height:60px;font-size:29px">
+          <Button @click="Print(selectedObj, 1)" type="primary" style="width:20%;height:60px;font-size:29px" v-if="false">
             标签打印
           </Button>
       </div>
@@ -547,6 +547,7 @@ export default {
   data() {
     // 这里存放数据
     return {
+      printTip:[],
       tagPrintList:[],
       show: false,
       show2: false,
@@ -615,6 +616,14 @@ export default {
   mounted() {
     this.selectedInfo = JSON.parse(localStorage.getItem("printInfo"));
     this.getChipDetail();
+     this.axios.get('/api/ext_print_format_list').then(res=>{
+        res.data.data.forEach(v=>{
+          if(v.type.indexOf('芯片')>=0&&v.state==1){
+            this.printTip.push(v);
+          }
+        })
+    })
+    console.log(this.printTip);
   },
   methods: {
      Print(row,type){
@@ -977,7 +986,7 @@ export default {
       }
       this.printModal = true;
     },
-    handlePrintComfirm(row, type) {
+    handlePrintComfirm(row, type,sub_type) {
       if (
         type &&
         this.modalRoomListSelected.length != this.selectedObj.print_num
@@ -1015,9 +1024,9 @@ export default {
             if (res.code == 200) {
 
               if (res.data.state) {
-                this.handlePrintChipsUsb(resp.data, res.data.type);
+                this.handlePrintChipsUsb(resp.data, res.data.type,sub_type);
               } else {
-                this.handlePrintChipsIp(resp.data, res.data.type);
+                this.handlePrintChipsIp(resp.data, res.data.type,sub_type);
               }
             }
           });
@@ -1030,7 +1039,7 @@ export default {
         }
       });
     },
-    handlePrintChipsUsb(contents, type) {
+    handlePrintChipsUsb(contents, type,sub_type) {
       this.axios.get("/api/get_print_url").then((res) => {
         let data = {};
         // let url = "http://192.168.0.145:888/postek/print"; //request_url
@@ -1172,7 +1181,7 @@ export default {
             //  console.log(printContent_l5_data)
             printparamsJsonArray.push({
               PTK_DrawText_TrueTypeEx:
-                "1000,330,25,0,微软雅黑,1,700,0,0,0,10,0,0,0," + printContent_l5,
+                "970,330,25,0,微软雅黑,1,700,0,0,0,10,0,0,0," + printContent_l5,
             });
             //下
             printparamsJsonArray.push({
@@ -1209,7 +1218,7 @@ export default {
             });
              printparamsJsonArray.push({
               PTK_DrawText_TrueTypeEx:
-                "1000,530,25,0,微软雅黑,1,700,0,0,0,10,0,0,0," + printContent_l5,
+                "970,530,25,0,微软雅黑,1,700,0,0,0,10,0,0,0," + printContent_l5,
             });
             // 17,35 420
             printparamsJsonArray.push({
@@ -1220,7 +1229,7 @@ export default {
           });
         }
         printparamsJsonArray.push({ PTK_CloseUSBPort: "" });
-        data.printparams = printparamsJsonArray;
+        data.printparams = sub_type == 1?printparamsJsonArray:[];
         let sub_data = JSON.parse(JSON.stringify(data));
         sub_data.printparams = JSON.stringify(sub_data.printparams);
         let _this = this;
@@ -1385,7 +1394,7 @@ export default {
         this.currentSearchValue
       );
     },
-    handlePrintChipsIp(contents, type) {
+    handlePrintChipsIp(contents, type,sub_type) {
       this.axios.get("/api/get_print_url").then((res) => {
         let data = {};
         // let url = "http://192.168.0.145:888/postek/print"; //request_url
@@ -1562,7 +1571,7 @@ export default {
           });
         }
         printparamsJsonArray.push({ PTK_CloseConnect: "" });
-        data.printparams = printparamsJsonArray;
+        data.printparams = sub_type==1?printparamsJsonArray:[];
         let sub_data = JSON.parse(JSON.stringify(data));
         sub_data.printparams = JSON.stringify(sub_data.printparams);
         let _this = this;

+ 2367 - 0
src/views/ChipPrintScreen/finishWorkScreen.vue

@@ -0,0 +1,2367 @@
+<template>
+  <div>
+    <Modal v-model="fullscreenModal" fullscreen title="工位屏" @on-cancel='cancel'>
+      <div slot="header">
+        <span style="font-size: 0.5rem">工位屏</span>
+        <div class="fullscreen-title-btn">
+          <Button
+            @click="handleWideScreenClick"
+            size="large"
+            id="full_screen_btn"
+            type="primary"
+            style="margin-right: 1rem"
+          >
+            {{ isWideScreen ? "完整模式" : "简单模式" }}
+          </Button>
+          <Button
+            @click="handleFullScreenClick"
+            size="large"
+            id="full_screen_btn"
+            type="primary"
+            style="margin-right: 1rem"
+          >
+            {{ isFullScreen ? "收  缩" : "全  屏" }}
+          </Button>
+          <!-- <Button
+            @click="handlePrint"
+            size="large"
+            type="primary"
+            style="margin-right: 1rem"
+          >
+            打 印
+          </Button> -->
+          <Button
+            @click="handleOk"
+            size="large"
+            type="primary"
+            style="margin-right: 1rem"
+          >
+            完 工
+          </Button>
+          <!-- <Button
+            style="margin-right: 1rem"
+            @click="goCheckPage"
+            size="large"
+            type="primary"
+          >
+            补 打
+          </Button> -->
+        </div>
+      </div>
+      <div class="fullscreen-content">
+        <div class="fullscreen-content-select">
+          <div class="fullscreen-content-select-block">
+            <Button
+              @click="handleSelection(ordernoObj, 1)"
+              size="large"
+              type="primary"
+              style="margin-right: 10px"
+            >
+              项目选择
+            </Button>
+            <div class="icon-wrapper" v-show="selectedInfo.order_no">
+              <Icon
+                class="icon-close"
+                @click="handleCancelSelected('order_no')"
+                size="24"
+                type="md-close"
+              />
+              <div>
+                <span>订单编号:</span>
+                <span>{{ selectedInfo.order_no }}</span>
+              </div>
+              <div>
+                <span>项目名称:</span>
+                <span>{{ selectedInfo.residential_name }}</span>
+              </div>
+            </div>
+          </div>
+          <div class="fullscreen-content-select-block">
+            <Button
+              @click="handleSelection(urlObj, 2)"
+              size="large"
+              type="primary"
+              style="margin-right: 10px"
+            >
+              图号选择
+            </Button>
+            <div style="display: flex; align-items: center">
+              <div class="icon-wrapper">
+                <div v-show="selectedInfo.url_number">
+                  <Icon
+                    class="icon-close"
+                    @click="handleCancelSelected('product_id')"
+                    size="24"
+                    type="md-close"
+                  />
+                  <span>图号:</span>
+                  <span>{{ selectedInfo.url_number }}</span>
+                </div>
+              </div>
+            </div>
+          </div>
+          <div class="fullscreen-content-select-block">
+            <Button
+              @click="handleSelectionRowno(rownoObj)"
+              size="large"
+              type="primary"
+              style="margin-right: 10px"
+            >
+              行号选择
+            </Button>
+            <div
+              class="icon-wrapper"
+              v-show="selectedInfo.rows.length != 0"
+              style="display: flex; align-items: center"
+            >
+              <span>行号:</span>
+              <div style="display: flex; justify-content: flex-start">
+                <div v-for="(item, index) in selectedInfo.rows" :key="item.key">
+                  <div class="icon-wrapper" style="margin-right: 0.35rem">
+                    <Icon
+                      class="icon-close"
+                      @click="handleCancelSelected(index, 1)"
+                      size="24"
+                      type="md-close"
+                    />
+                    <span style="display: inline-block"
+                      >{{ item.start }}-{{ item.end }}</span
+                    >
+                  </div>
+                </div>
+              </div>
+            </div>
+          </div>
+           <div class="fullscreen-content-select-block">
+            <Button
+              @click="handleSelectionCancel"
+              size="large"
+              type="primary"
+              :ghost='selectedAll?true:false'
+              style="margin-right: 10px"
+              v-if="selectedAll"
+            >
+              取消全选
+            </Button>
+            <Button
+              @click="handleSelectionAll"
+              size="large"
+              type="primary"
+              :ghost='selectedAll?true:false'
+              style="margin-right: 10px"
+              v-else
+            >
+              全选
+            </Button>
+          </div>
+        </div>
+        <div class="fullscreen-content-choose">
+          <div
+            :class="[
+              choose.isChoosed
+                ? 'fullscreen-content-choose-block fullscreen-content-choose-block-choosen'
+                : 'fullscreen-content-choose-block fullscreen-content-choose-block-unchoosen',
+              isWideScreen ? 'fullscreen-content-choose-block-wide' : '',
+            ]"
+            v-for="choose in contentData"
+            :key="choose.row"
+            @click="handleChooseBlockClick(choose)"
+          >
+            <div
+              :class="[isWideScreen ? 'chip-tag-choosed' : 'chip-tag']"
+              v-show="choose.type == 1"
+            >
+              芯片
+              <Icon
+                size="20px"
+                :style="
+                  isWideScreen
+                    ? 'font-size: 1rem; transform: translate(0, -50%)'
+                    : 'font-size: 1rem; transform: translate(0, -40%)'
+                "
+                style="font-size: 1rem; transform: translate(0, -40%)"
+                :color="choose.isChoosed ? '#2d8cf0' : 'white'"
+                type="md-arrow-dropup"
+              />
+            </div>
+            <div v-show="!isWideScreen">
+              <span>行号</span>
+              <span>{{ choose.row_no }}</span>
+            </div>
+            <div v-show="!isWideScreen">
+              <span>部件</span>
+              <span>{{ choose.part_title }}</span>
+            </div>
+            <div v-show="!isWideScreen">
+              <span>材料</span>
+              <span>{{ choose.sub_part_title }}</span>
+            </div>
+            <div v-show="!isWideScreen">
+              <span>毛料尺寸</span>
+              <span>{{ choose.wool_size }}</span>
+            </div>
+            <div v-show="!isWideScreen">
+              <span>精裁尺寸</span>
+              <span>{{ choose.cut_size }}</span>
+            </div>
+            <div v-show="isWideScreen" class="wide-screen-rowno">
+              <span
+                :class="[
+                  choose.isChoosed
+                    ? 'wide-screen-rowno-span-choosed'
+                    : 'wide-screen-rowno-span',
+                ]"
+                >{{ choose.row_no }}</span
+              >
+            </div>
+            <div>
+              <span>生产数量</span>
+              <span>
+              {{
+                  choose.on_complete + choose.un_complete
+                }}
+              </span>
+            </div>
+            <div>
+              <span>未打印数量</span>
+              <span
+                >{{ choose.un_print }}</span
+              >
+            </div>
+          </div>
+        </div>
+        <div class="fullscreen-content-page">
+          <Page
+            @on-change="changePage"
+            :page-size="page_size"
+            :current="page_index"
+            :total="total"
+          />
+        </div>
+      </div>
+      <div slot="footer"></div>
+      <Modal
+        class="selection-modal"
+        v-model="selectionModal"
+        
+        width="80%"
+      >
+      <div slot="header">
+        <h1>{{currencySelectedObj.title}}</h1>
+      </div>
+        <van-number-keyboard
+          :show="show"
+          @blur="show = false"
+          @input="onInput"
+          @delete="onDelete"
+          z-index="99999"
+        />
+        <div class="selection-modal-top">
+          <Input
+            :placeholder="currencySelectedObj.title"
+            v-model="currentSearchValue"
+            @on-focus="show = true"
+            @on-change="
+              handleCurrentSearch(currencySelectedObj, currentSearchValue)
+            "
+            style="width: 80%"
+          >
+            <Icon
+              @click="
+                handleCurrentSearch(currencySelectedObj, currentSearchValue)
+              "
+              type="ios-search"
+              slot="suffix"
+            />
+          </Input>
+        </div>
+        <div class="selection-modal-body">
+          <div
+            :class="[
+              block.isCurrent
+                ? 'selection-modal-body-block selection-modal-body-block-choosen'
+                : 'selection-modal-body-block selection-modal-body-block-unchoosen',
+            ]"
+            v-for="(block, index) in currencySelectedObj.list"
+            :key="index"
+            @click="handleSelectionClick(currencySelectedObj, block)"
+            style="font-size:1.4em"
+          >
+            <div v-show="currencySelectedObj.type == 1">
+              <span>订单编号:</span>
+              <span>{{ block.order_no }}</span>
+            </div>
+            <div v-show="currencySelectedObj.type == 2">
+              <span>{{ block.title }}</span>
+            </div>
+            <div v-show="currencySelectedObj.type == 1">
+              <span>项目名称:</span>
+              <span>{{ block.residential_name }}</span>
+            </div>
+          </div>
+          <div
+            style="font-size: 1rem"
+            v-show="currencySelectedObj.list.length == 0"
+          >
+            暂无数据
+          </div>
+        </div>
+        <div class="fullscreen-content-page">
+          <Page
+            @on-change="changeModalPage"
+            :current="
+              currencySelectedObj.type == 1
+                ? modal_1_page_index
+                : modal_2_page_index
+            "
+            :page-size="
+              currencySelectedObj.type == 1
+                ? modal_1_page_size
+                : modal_2_page_size
+            "
+            :total="
+              currencySelectedObj.type == 1 ? modal_1_total : modal_2_total
+            "
+          />
+        </div>
+        <div slot="footer" style="text-align:center">
+          <Button
+            @click="selectionModal = false"
+            type="primary"
+            style="margin-right: 10px;width:30%;height:1rem;font-size:2em"
+          >
+            返回
+          </Button>
+          <!-- <Button
+          v-show="currencySelectedObj.type == 1"
+          @click="handleSelectionComfirm(currencySelectedObj)"
+          type="primary"
+        >
+          确认
+        </Button> -->
+        </div>
+      </Modal>
+      <Modal
+        class="selection-modal"
+        v-model="selectionDetailModal"
+       
+        width="80%"
+      >
+      <div slot="header"><h1>{{currencySelectedObj.title}}</h1></div>
+        <div class="selection-modal-body" v-if="currencySelectedObj.hasChild">
+          <div
+            :class="[
+              block.isCurrent
+                ? 'selection-modal-body-block-detail selection-modal-body-block-detail-choosen'
+                : 'selection-modal-body-block-detail selection-modal-body-block-detail-unchoosen',
+            ]"
+            v-for="(block, index) in chooseDetailUrlNo.children"
+            :key="index"
+            @click="handleSelectionDetailClick(chooseDetailUrlNo, block)"
+            style="font-size: 1.4em;"
+          >
+            <div>
+              <span>{{ block.url_number }}</span>
+            </div>
+          </div>
+        </div>
+        <div slot="footer" style='text-align:center'>
+          <Button
+            @click="
+              selectionDetailModal = false;
+              selectionModal = true;
+            "
+            type="primary"
+            style="margin-right: 10px;width:30%;height:1rem;font-size:2em"
+          >
+            返回
+          </Button>
+          <!-- <Button
+          @click="handleSelectionComfirm(currencySelectedObj)"
+          type="primary"
+        >
+          确认
+        </Button> -->
+        </div>
+      </Modal>
+      <Modal
+        class="selection-rowno-modal"
+        v-model="selectionRownolModal"
+        width="80%"
+      >
+      <div slot="header"><h1>行号选择</h1></div>
+        <div class="selection-rowno-modal-body">
+          <van-number-keyboard
+            :show="show2"
+            @blur="show2 = false"
+            @input="keyboardTap"
+            @delete="keyboardDele"
+            z-index="99999"
+          />
+          <div
+            class="selection-rowno-modal-body-block"
+            v-for="(block, index) in chooseLineNo"
+            :key="index"
+          >
+            <span style="font-size:2em;">行号区间:</span>
+            <Input
+              v-model="block.start"
+              @on-focus="handleRowNoInput(block, 1)"
+              clearable
+              style="width: 20%; margin: 0 10px"
+              size="large"
+            />
+            -
+            <Input
+              v-model="block.end"
+              @on-focus="handleRowNoInput(block, 2)"
+              clearable
+              style="width: 20%; margin: 0 10px"
+              size="large"
+            />
+            <Button
+              @click="handleAddRow(block, index)"
+              type="primary"
+              size="large"
+              v-show="index == 0"
+              style="margin-right: 10px"
+            >
+              添加
+            </Button>
+            <Button
+              @click="handleDeleRow(block, index)"
+              type="primary"
+              size="large"
+              v-show="index != 0"
+              style="margin-right: 10px"
+            >
+              删除
+            </Button>
+          </div>
+        </div>
+        <div slot="footer" style="text-align:center">
+          <Button
+            @click="selectionRownolModal = false"
+            type="primary"
+            style="margin-right: 10px;width:30%;height:1rem;font-size:2em"
+          >
+            返回
+          </Button>
+          <Button @click="handleRowNoComfirm" type="primary"
+          style="margin-right: 10px;width:30%;height:1rem;font-size:2em">
+            确认
+          </Button>
+        </div>
+      </Modal>
+      <Modal
+        class="selection-print-modal"
+        v-model="printModal"
+        width="60%"
+      >
+      <div slot="header" style="text-align:center;font-weight:bold"><h1>打  印</h1></div>
+        <div class="selection-print-modal-body">
+          <div class="selection-print-modal-body-top">
+            <div>
+              <span>行号:</span>
+              <span>{{ selectedObj.row_no }}</span>
+            </div>
+            <div>
+              <span>部件名称:</span>
+              <span>{{ selectedObj.part_title }}</span>
+            </div>
+            <div>
+              <span>数量:</span>
+              <InputNumber
+                :max="selectedObj.un_print==0?selectedObj.on_print:selectedObj.un_print"
+                :min="0"
+                style="height:1em;font-size:1.5em;line-height:0.9em;width:2rem"
+                @on-focus="handlePrintInput"
+                v-model="selectedObj.print_num"
+              ></InputNumber>
+              <van-number-keyboard
+                :show="show4"
+                @blur="show4 = false"
+                @input="keyboardPrintTap"
+                @delete="keyboardPrintDele"
+                z-index="99999"
+              />
+            </div>
+          </div>
+          <div class="selection-print-modal-body-info">
+            {{
+              selectedObj.isFinished
+                ? "该部件芯片数量已全部打印,是否再次打印?请选择要打印的房间号:"
+                : "请确认打印数量是否正确!"
+            }}
+            <div>
+              <Button
+                v-show="selectedObj.isFinished"
+                @click="handleSelectionRoom"
+                type="primary"
+              >
+                选择房间号
+              </Button>
+            </div>
+          </div>
+        </div>
+        <div slot="footer" class="selection-print-modal-body-footer">
+          <Button
+            @click="printModal = false"
+            type="primary"
+            style="margin-right: 10px"
+          >
+            返回
+          </Button>
+          <Button @click="handlePrintComfirm(selectedObj)" type="primary">
+            芯片打印
+          </Button>
+          <Button @click="Print(selectedObj)" type="primary">
+            标签打印
+          </Button>
+          
+        </div>
+      </Modal>
+      <!-- <Modal
+        class="selection-print-modal"
+        v-model="okModal"
+        title="完成"
+        width="60%"
+      >
+        <div class="selection-print-modal-body">
+          <div class="selection-print-modal-body-top">
+            <div>
+              <span>行号:</span>
+              <span>{{ selectedObj.row_no }}</span>
+            </div>
+            <div>
+              <span>部件名称:</span>
+              <span>{{ selectedObj.part_title }}</span>
+            </div>
+            <div>
+              <span>数量:</span>
+              <InputNumber
+                :max="
+                  selectedObj.type == 1
+                    ? selectedObj.on_print - selectedObj.on_complete
+                    : selectedObj.un_complete
+                "
+                :min="0"
+                size="large"
+                @on-focus="handleOkInput"
+                v-model="selectedObj.ok_num"
+              ></InputNumber>
+              <van-number-keyboard
+                :show="show3"
+                @blur="show3 = false"
+                @input="keyboardOkTap"
+                @delete="keyboardOkDele"
+                z-index="99999"
+              />
+            </div>
+          </div>
+          <div class="selection-print-modal-body-info">
+            请确认完成数量是否正确?
+          </div>
+        </div>
+        <div slot="footer">
+          <Button
+            @click="okModal = false"
+            type="primary"
+            style="margin-right: 10px"
+          >
+            返回
+          </Button>
+          <Button @click="handleOkComfirm(selectedObj)" type="primary">
+            确认
+          </Button>
+        </div>
+      </Modal> -->
+      <Modal
+        class="selection-modal"
+        v-model="roomModal"
+        @on-cancel ='handleRoomCancel'
+        
+        width="80%"
+      >
+      <div slot="header">
+        <h1>选择房间号</h1>
+      </div>
+        <div class="selection-modal-body">
+          <div
+            :class="[
+              block.isCurrent
+                ? 'selection-modal-body-block selection-modal-body-block-choosen'
+                : 'selection-modal-body-block selection-modal-body-block-unchoosen',
+            ]"
+            v-for="(block, index) in modalRoomList"
+            :key="index"
+            @click="handleSelectedRoomClick(modalRoomList, block)"
+          >
+            <div style="display:flex;flex-direction: column;text-align: center;">
+              <span style="font-size:25px">{{ block.house }}</span>
+              <span style="font-size:18px">{{`(${block.tag})`}}</span>
+            </div>
+          </div>
+        </div>
+        <div class="fullscreen-content-page">
+          <Page
+            @on-change="changeRoomPage"
+            :current="modal_room_page_index"
+            :page-size="modal_room_page_size"
+            :total="modal_room_total"
+          />
+        </div>
+        <div slot="footer" style="display:flex;justify-content: space-around;">
+          <Button
+            @click="handleRoomCancel"
+            type="primary"
+            style="margin-right: 10px;width:20%;height:60px;font-size:29px"
+          >
+            返回
+          </Button>
+           <Button @click="handlePrintComfirm(selectedObj, 1)" type="primary"
+           style="width:20%;height:60px;font-size:29px">
+            芯片打印
+          </Button>
+          <Button @click="Print(selectedObj, 1)" type="primary" style="width:20%;height:60px;font-size:29px">
+            标签打印
+          </Button>
+         
+        </div>
+      </Modal>
+       <Modal
+        class=""
+        v-model="finishWork"
+        @on-cancel ='handleCancel'
+        width="80%"
+      >
+       <div slot="header" style="text-align:center;font-weight:bold"><h1>完 工</h1></div>
+       <div style="display:flex;height: 7.5rem;">
+           <div style="width:60%;overflow:auto;border-right:2px solid #ede7e7">
+               <div style="display:flex">
+                   <span style="width:2rem;font-size: 0.4rem;margin: 0.6em;">工序</span>
+                   <div style="display:flex;flex-wrap: wrap;">
+                       <span v-for="item in produceList" :key="item.id" @click="changeChooseProduceList(item)" :style="item.isChoosed?{border: '2px solid #2D8CF0',fontSize: '0.4rem',padding: '0.1em 0.2rem',borderRadius: '5px',margin: '0.6em',color:'#ffffff',backgroundColor:'#2D8CF0',cursor: 'pointer',textAlign:'center'}:{border: '2px solid #2D8CF0',fontSize: '0.4rem',padding: '0.1em 0.2rem',borderRadius: '5px',margin: '0.6em',color:'#2D8CF0',cursor: 'pointer',textAlign:'center'}">
+                           {{item.title}}<br/>
+                           <span style="font-size: 0.1rem">{{item.key}}</span>
+                       </span>
+                   </div>
+                </div>
+                <div style="display:flex">
+                    <span  style="width:1.5rem;font-size: 0.4rem;margin: 0.6em;">班组</span>
+                    <div style="display:flex;flex-wrap:wrap">
+                        <span v-for="_item in employeeList" :key="_item.id" @click="changeChooseEmployeeList(_item)" :style="_item.isChoosed?{border: '2px solid #2D8CF0',fontSize: '0.4rem',padding: '0.1em 0.2rem',borderRadius: '5px',margin: '0.6em',color:'#ffffff',backgroundColor:'#2D8CF0',cursor: 'pointer'}:{border: '2px solid #2D8CF0',fontSize: '0.4rem',padding: '0.1em 0.2rem',borderRadius: '5px',margin: '0.6em',color:'#2D8CF0',cursor: 'pointer'}" >
+                            {{_item.nickname}}
+                        </span>
+                    </div>
+                </div>
+            </div>
+           <div style="width:40%;overflow:auto;">
+              <van-number-keyboard
+            :show="show5"
+            @blur="show5 = false"
+            @input="numChange"
+            @delete="delChange"
+            z-index="99999"
+          />
+               <div v-for="(item,index) in rownoList" :key="item.id" style="display:flex;justify-content: space-between;align-items: center;width: 100%;font-size:0.4rem;margin-bottom:0.5rem">
+                   
+                   <span style="margin-left:1rem">行号:{{item.sort}}</span><span style="width: 40%;">数量:<Input style='width:50%' size="large" v-model="item.num"  @on-focus="focusChange(index)" clearable /></span>
+                </div>
+           </div>
+       </div>
+        <div slot="footer" style="text-align:center;">
+             <div style="margin-bottom:0.3rem"><h1>是否确认完工?</h1></div>
+          <Button
+            @click="handleCancel"
+            type="primary"
+            style="margin-right: 0.5rem;width:15%;height:1rem;font-size:0.4rem"
+          >
+            返回
+          </Button>
+          <Button @click="handleThen" type="primary"  style="margin-right: 0.5rem;width:15%;height:1rem;font-size:0.4rem">
+            确认
+          </Button>
+        </div>
+      </Modal>
+      <Modal v-model="selectTrue" :closable='false'>
+        <div style="text-align:center;margin:2em"><h1>是否全选所有页面的所有部件</h1></div>
+        <div slot="footer" style="text-align:center;">
+          <Button
+            @click="selectTrue=false"
+            type="primary"
+            style="margin-right: 0.5rem;width:30%;height:1rem;font-size:0.4rem"
+          >
+            返回
+          </Button>
+          <Button @click="selectOk" type="primary"  style="margin-right: 0.5rem;width:30%;height:1rem;font-size:0.4rem">
+            确认
+          </Button>
+        </div>
+      </Modal>
+    </Modal>
+    <div ref='printRow' class="printRow">
+      <div v-for="(item,index) in tagPrintList" :key="index" class="printRow_content" style="width:400px">
+      <div style="display:flex"><span style="width:140px">项目:{{item.client_name}}</span><span>区域:{{item.house ? item.house + "-" : ""}}{{item.layer ? item.layer : ""}}{{item.position ? item.position : ""}}</span></div>
+      <div style="display:flex"><span style="width:140px">房号:{{item.number_detail}}</span><span>产品:{{item.product_title}}</span></div>
+      <div style="display:flex"><span style="width:140px">图号:{{item.url_number}}</span><span>部件:{{item.part_title}}</span></div>
+      <div><span>尺寸:{{item.measure}}</span></div>
+      <div><span>木皮:{{item.color_title}}</span></div>
+      </div>
+    </div>
+  </div>
+</template>
+
+<script>
+// 这里可以导入其他文件(比如:组件,工具js,第三方插件js,json文件,图片文件等等)
+// 例如:import 《组件名称》 from '《组件路径》';
+import $ from "jquery";
+import "@vant/touch-emulator";
+export default {
+  name: "",
+  components: {},
+  props: {},
+  // import引入的组件需要注入到对象中才能使用
+  data() {
+    // 这里存放数据
+    return {
+        produce_type:'',
+      rule_data:[],
+      selectTrue:false,
+      cancelData:[],
+      tagPrintList:[],
+    produceID:null,
+ employeeID:null,
+    rownoList:[],
+    employeeList:[],
+   produceList:[],
+      saveData:[],
+      finishWork:false,
+      show: false,
+      show2: false,
+      show3: false,
+      show4: false,
+      show5:false,
+      isFullScreen: false,
+      fullscreenModal: true,
+      selectionModal: false,
+      selectionRownolModal: false,
+      selectionDetailModal: false,
+      printModal: false,
+      okModal: false,
+      roomModal: false,
+      contentData: [],
+      selectedObj: {
+        state:0,
+      },
+      ordernoObj: {
+        title: "订单编号/项目名称选择",
+        currentSearchValue: "",
+        list: [],
+        hasChild: false,
+      },
+      urlObj: {
+        title: "图号选择",
+        currentSearchValue: "",
+        list: [],
+        hasChild: true,
+      },
+      rownoObj: {},
+      currencySelectedObj: {
+        title: "订单编号/项目名称选择",
+        type: 1,
+        list: [],
+      },
+      selectedInfo: {
+        order_no: "",
+        residential_name: "",
+        url_number: "",
+        product_id: "",
+        rows: [],
+      },
+      page_index: 1,
+      // page_size: 6,
+      total: 0,
+      currentSearchValue: "",
+      modal_1_page_index: 1,
+      modal_1_page_size: 6,
+      selectedAll:false,//true全选;false取消全选
+      modal_1_total: 0,
+      modal_room_page_index: 1,
+      modal_room_page_size: 9,
+      modal_room_total: 0,
+      modal_2_page_index: 1,
+      modal_2_page_size: 60,
+      modal_2_total: 0,
+      chooseOrderNo: {},
+      chooseUrlNo: {},
+      chooseDetailUrlNo: {},
+      chooseLineNo: [{ start: "", end: "" }],
+      keyboardObj: {},
+      keyboardVal: "",
+      modalRoomList: [],
+      modalRoomListSelected: [],
+      isWideScreen: localStorage.getItem("isWideScreen") || false,
+      focusIndex:'',
+      max:'',
+    };
+  },
+  // 生命周期 - 创建完成(可以访问当前this实例)
+  computed:{
+       page_size(){
+          if(this.isWideScreen){
+            return 12
+          }else{
+            return 6
+          }
+       }
+  },
+  created() {},
+  beforeRouteEnter(to, from, next) {
+    next((vm) => {
+      if (from.path == "/cms/ChipPrintScreen/ChipPrintScreenCheck") {
+        vm.selectedInfo = JSON.parse(localStorage.getItem("printInfo"));
+        vm.getChipDetail();
+       vm.handleGetType(JSON.parse(localStorage.getItem("printInfo")).order_no);
+      }})
+  },
+  // 生命周期 - 挂载完成(可以访问DOM元素)
+  mounted() {
+    //    this.axios.post('/api/station_get_type').then(res=>{
+    //           if(res.code == 200){
+    //               this.employeeList = res.data.employee_list;
+    //               this.employeeList.map(item=>{
+    //                       item.isChoosed = false;
+    //               })
+    //               this.produceList = res.data.produce_list;
+    //               this.produceList.map(item=>{
+    //                   item.isChoosed = false;
+    //               })
+    //           }
+    // })
+  },
+  methods: {
+    selectOk(){
+      this.selectTrue = false;
+       this.selectedAll = !this.selectedAll;
+        this.contentData.map(v=>{
+          v.isChoosed = true
+        });
+        this.saveData = [];
+    },
+handleSelectionAll(){
+     this.selectTrue = true;
+},
+    handleSelectionCancel(){
+        this.selectedAll = !this.selectedAll;
+      if(this.selectedAll){
+        this.contentData.map(v=>{
+          v.isChoosed = true
+        });
+        this.saveData = [];
+      }else{
+        this.contentData.map(v=>{
+          v.isChoosed = false;
+        });
+        this.saveData=[];
+        this.cancelData = [];
+      }
+    },
+    Print(row,type){
+       if (
+        type &&
+        this.modalRoomListSelected.length != this.selectedObj.print_num
+      ) {
+        return this.$Message.warning("与打印数量不符");
+      }
+      let ids = this.modalRoomListSelected.map((v) => {
+        return v.id;
+      });
+      let data = type
+        ? {
+            order_no: this.selectedInfo.order_no,
+            product_id: this.selectedInfo.product_id,
+            rows: this.selectedInfo.rows,
+            num: this.selectedObj.print_num,
+            id: row.id,
+            ids,
+            type,
+          }
+        : {
+            order_no: this.selectedInfo.order_no,
+            product_id: this.selectedInfo.product_id,
+            rows: this.selectedInfo.rows,
+            num: this.selectedObj.print_num,
+            id: row.id,
+          };
+      // 获取打印数据
+      this.axios({
+        method: "post",
+        url: "/api/station_print",
+        data,
+      }).then((resp) => {
+        if (resp.code == 200) {
+          console.log(resp)
+          this.tagPrintList = resp.data;
+          setTimeout(()=>{
+               this.$print(this.$refs.printRow);
+          })
+         
+        }
+        });
+       
+    },
+    cancel(){
+       this.fullscreenModal = false;
+       this.$router.push({path:'/cms/ChipPrintScreen/list'});
+      //  this.$forceUpdate();
+    },
+    focusChange(index){
+        this.focusIndex = index;
+        this.max = this.rownoList[index].num;
+        this.show5=true;
+    }, 
+        delChange(){
+        //  item.num = item.num.toString().substring(0,item.num.length-1)
+       this.rownoList[this.focusIndex].num = this.rownoList[this.focusIndex].num.toString().substring(0,this.rownoList[this.focusIndex].num.toString().length-1);
+      //  console.log(this.rownoList[this.focusIndex].num)
+      },
+      numChange(e){
+        // console.log(index);
+      //  item.num = item.num+''+e;
+      this.rownoList[this.focusIndex].num =this.rownoList[this.focusIndex].num==='0'?'':this.rownoList[this.focusIndex].num+''+e;
+      console.log(this.rownoList)
+      if(Number(this.rownoList[this.focusIndex].num)>this.rownoList[this.focusIndex].val){
+        this.rownoList[this.focusIndex].num = this.rownoList[this.focusIndex].val.toString();
+      }
+      // if(this.this.rownoList[this.focusIndex].num>max){
+      //  this.rownoList[this.focusIndex].num=max
+      // }
+      // if(Number(this.rownoList[this.focusIndex].num)>Number(max==''?'0':max)){
+        
+      //   this.rownoList[this.focusIndex].num =JSON.parse(JSON.stringify(max));
+      //   console.log(this.rownoList[this.focusIndex].num)
+      // }
+      },
+      changeChooseEmployeeList(item){
+        this.employeeList.map(m=>{
+              if(m.id==item.id){
+                  m.isChoosed = !m.isChoosed
+              }else{
+                   m.isChoosed=false;
+              }
+          })
+          if(item.isChoosed){
+              this.employeeID =item.id
+          }else{
+            this.employeeID =null;
+          }
+          this.$forceUpdate();
+      },
+      changeChooseProduceList(item){
+          let passData={
+             order_no: this.selectedInfo.order_no,
+          product_id: this.selectedInfo.product_id,
+          rows: this.selectedInfo.rows,
+          };
+          let produce = item.id;
+            let id = [];
+            let cancelId = [];
+            if(this.selectedAll){
+                this.cancelData.map(v=>{
+                  cancelId.push(v.id)
+                })
+                 passData.delete_id = cancelId;
+                passData.produce =produce;
+                passData.type =1;  //type1全选状态;
+            }else{
+               this.saveData.map(v=>{
+                id.push(v.id);
+            });
+             passData.id = id;
+              passData.produce =produce;
+            }
+          this.produceList.map(m=>{
+             
+              if(m.id==item.id){
+                  m.isChoosed = !m.isChoosed
+              }else{
+                   m.isChoosed=false;
+              }
+          })
+          console.log(item)
+          if(item.isChoosed){
+               this.axios.post('/api/station_get_order_produce',{...passData}).then(res=>{
+                if(res.code==200){
+                    this.rownoList = res.data;
+                    this.produceID = item.id;
+                    this.produce_type = item.value;
+                    this.rownoList.map(v=>{
+                      v.val = v.num;
+                    })
+              this.rule_data.forEach(element => {
+              if(element.id == item.id){
+                this.employeeList = element.employee_list;
+                 this.employeeList.map(item=>{
+                          item.isChoosed = false;
+                  })
+                console.log(1)
+              }
+            });
+            
+            console.log(this.employeeList)
+                }
+            })
+          }else{
+            this.employeeList=[];
+              this.rownoList= [];
+              this.produceID = null;
+              this.produce_type = '';
+          }   
+      },
+    back() {
+      this.$router.go(-1);
+    },
+    handleSelection(obj, type) {
+      this.saveData = [];
+      if (type == 2 && this.selectedInfo.order_no == "") {
+        return this.$Message.warning("请先选择项目");
+        
+      }
+      this.currentSearchValue = "";
+      this.currentSearchValue = obj.currentSearchValue;
+      this.currencySelectedObj = obj;
+      this.selectionModal = true;
+      this.total = 0;
+      this.currencySelectedObj.type = type;
+      if (this.currencySelectedObj.list.length == 0 || type == 2) {
+        this.handleCurrentSearch(
+          this.currencySelectedObj,
+          this.currentSearchValue
+        );
+      }
+    },
+    handleSelectionRowno(row) {
+      if (this.selectedInfo.rows.length > 0) {
+        this.chooseLineNo = JSON.parse(JSON.stringify(this.selectedInfo.rows));
+      } else {
+        this.chooseLineNo = [{ start: null, end: null }];
+      }
+      this.selectionRownolModal = true;
+    },
+    handleCancelSelected(v, type) {
+      this.saveData = [];
+      if (type) {
+        this.selectedInfo.rows.splice(v, 1);
+      } else if (v == "product_id") {
+        this.selectedInfo.url_number = "";
+        this.selectedInfo.product_id = "";
+      } else {
+        this.selectedInfo[v] = "";
+      }
+      if (v != "order_no") {
+        this.getChipDetail();
+      } else {
+        this.selectedInfo.residential_name = "";
+        this.selectedInfo.url_number = "";
+        this.selectedInfo.product_id = "";
+        this.selectedInfo.rows = [];
+        this.contentData = [];
+        this.total = 0;
+      }
+    },
+    handleChooseBlockClick(row) {
+      
+      if (row.isChoosed) {
+        row.isChoosed = false;
+        this.saveData.map((v,index)=>{
+            if(v.id == row.id){
+                this.saveData.splice(index,1)
+            }
+        })
+      } else {
+        row.isChoosed = true;
+        this.saveData.push(row)
+      }
+      // console.log(this.saveData)
+      if (row.un_print == 0) {
+        row.isFinished = true;
+      }
+      if(this.saveData.length == 1){
+        this.selectedObj = this.saveData[0];
+      }else{
+        if(this.saveData.length>1){
+          this.selectedObj = {};
+        }else{
+          this.selectedObj = {state:0};
+        }
+        
+      }
+      if(this.selectedAll){
+        if(!row.isChoosed){
+        this.cancelData.push(row)
+        }else{
+          this.cancelData.map((v,index)=>{
+            if(v.id == row.id){
+              this.cancelData.splice(index,1)
+            }
+          })
+        }
+      }
+      console.log(this.saveData)
+      console.log(this.cancelData)
+      // this.selectedObj = row;
+    },
+    goCheckPage() {
+     
+         localStorage.setItem("printInfo", JSON.stringify(this.selectedInfo));
+      this.$router.push({
+        path: "/cms/ChipPrintScreen/ChipPrintScreenCheck"
+      });
+     
+    },
+    handleSelectionClick(row, obj) {
+      row.list.map((v) => (v.isCurrent = false));
+      obj.isCurrent = true;
+      if (row.hasChild) {
+        // 行号
+        this.selectionModal = false;
+        this.selectionDetailModal = true;
+        this.chooseDetailUrlNo = obj;
+        this.currentSearchValue = this.rownoObj.currentSearchValue;
+        this.contentData = [];
+        this.total = 0;
+      } else {
+        // 订单号
+        this.chooseOrderNo = obj;
+        this.currentSearchValue = this.ordernoObj.currentSearchValue;
+      }
+      if (row.type == 1) {
+        this.handleSelectionComfirm(this.currencySelectedObj);
+      }
+      this.$forceUpdate();
+    },
+    handleSelectedRoomClick(list, block) {
+      if (block.isCurrent) {
+        this.modalRoomListSelected = this.modalRoomListSelected.filter(
+          (v) => v.id != block.id
+        );
+        block.isCurrent = !block.isCurrent;
+      } else {
+        if (this.modalRoomListSelected.length < this.selectedObj.print_num) {
+          block.isCurrent = !block.isCurrent;
+          this.modalRoomListSelected = this.modalRoomListSelected.concat(
+            this.modalRoomList.filter((v) => v.isCurrent)
+          );
+        } else {
+          this.$Message.warning("与打印数量不符,请重新选择");
+        }
+      }
+      this.modalRoomListSelected = Array.from(
+        new Set([...this.modalRoomListSelected])
+      );
+    },
+    handleAddRow(row, index) {
+      this.chooseLineNo.push({
+        start: "",
+        end: "",
+      });
+    },
+    handleDeleRow(row, index) {
+      this.chooseLineNo.splice(index, 1);
+    },
+    handleSelectionDetailClick(row, obj) {
+      row.children.map((v) => (v.isCurrent = false));
+      obj.isCurrent = true;
+      this.chooseUrlNo = obj;
+      this.handleSelectionComfirm(this.currencySelectedObj);
+      this.$forceUpdate();
+    },
+    handleFullScreenClick() {
+      this.isFullScreen = !this.isFullScreen;
+      if (this.isFullScreen) {
+        this.enterFullScreen();
+      } else {
+        this.exitFullScreen();
+      }
+    },
+    handleWideScreenClick() {
+      this.isWideScreen = !this.isWideScreen;
+      localStorage.setItem("isWideScreen", this.isWideScreen);
+      
+      if (this.isWideScreen) {
+        this.page_index =1;
+        // this.page_size = 12;
+        this.enterWideScreen();
+      } else {
+        this.page_index =1;
+        // this.page_size = 6;
+        this.exitWideScreen();
+      }
+      this.getChipDetail();
+    },
+    enterWideScreen() {},
+    exitWideScreen() {},
+    handleSelectionRoom() {
+      this.getModalRoomList();
+      this.roomModal = true;
+    },
+    enterFullScreen() {
+      let el = document.documentElement;
+      let rfs =
+        el.requestFullScreen ||
+        el.webkitRequestFullScreen ||
+        el.mozRequestFullScreen ||
+        el.msRequestFullscreen;
+      if (rfs) {
+        rfs.call(el);
+      } else if (typeof window.ActiveXObject !== "undefined") {
+        // for IE,这里其实就是模拟了按下键盘的F11,使浏览器全屏
+        let wscript = new ActiveXObject("WScript.Shell");
+        if (wscript != null) {
+          wscript.SendKeys("{F11}");
+        }
+      }
+    },
+    exitFullScreen() {
+      let el = document;
+      let cfs =
+        el.cancelFullScreen ||
+        el.mozCancelFullScreen ||
+        el.msExitFullscreen ||
+        el.webkitExitFullscreen ||
+        el.exitFullscreen;
+      if (cfs) {
+        // typeof cfs != "undefined" && cfs
+        cfs.call(el);
+      } else if (typeof window.ActiveXObject !== "undefined") {
+        // for IE,这里和fullScreen相同,模拟按下F11键退出全屏
+        let wscript = new ActiveXObject("WScript.Shell");
+        if (wscript != null) {
+          wscript.SendKeys("{F11}");
+        }
+      }
+    },
+    handleCurrentSearch(row, val) {
+      //type  1项目选择   2图号选择
+      let url =
+        row.type == 1
+          ? "/api/station_get_order"
+          : "/api/station_get_url_number";
+      this.axios({
+        method: "post",
+        url,
+        data: {
+          page_index:
+            row.type == 1 ? this.modal_1_page_index : this.modal_2_page_index,
+          page_size:
+            row.type == 1 ? this.modal_1_page_size : this.modal_2_page_size,
+          order_no: row.type == 1 ? val : this.selectedInfo.order_no,
+          url_number: row.type == 1 ? "" : val,
+        },
+      }).then((res) => {
+        if (res.code == 200) {
+          if (row.type == 1) {
+            row.list = res.data.data;
+            this.modal_1_total = res.data.total;
+          } else {
+            row.list = [];
+            this.modal_2_total = res.data.total;
+            let length = Math.ceil(res.data.data.length / 10);
+            for (let index = 0; index < length; index++) {
+              row.list.push({
+                //最后一位不一定刚好10个
+                title:
+                  length - index == 1
+                    ? `${res.data.data[10 * index].url_number}~${
+                        res.data.data[res.data.data.length - 1].url_number
+                      }`
+                    : `${res.data.data[10 * index].url_number}~${
+                        res.data.data[10 * index + 9].url_number
+                      }`,
+                children: res.data.data.slice(10 * index, 10 * index + 10),
+              });
+            }
+          }
+        }
+      });
+    },
+    handleGetType(row){
+  this.axios.post('/api/station_get_type',{order_no:row}).then(res=>{
+              if(res.code == 200){
+                  // this.employeeList = res.data.employee_list;
+                  // this.employeeList.map(item=>{
+                  //         item.isChoosed = false;
+                  // })
+                  this.rule_data = res.data.rule_data;
+                  this.produceList = res.data.produce_list;
+                  this.produceList.map(item=>{
+                      item.isChoosed = false;
+                  })
+              }
+    })
+    },
+    //项目、图号确认
+    handleSelectionComfirm(row) {
+      console.log(`row`, row);
+      this.page_index=1;
+      // 这里需要把弹框关闭之后赋值到selectedInfo上
+      // this.selectedInfo.order_no;
+      // 1 项目选择  2图号选择
+      if (row.type == 1) {
+        let order_no ='';
+        this.saveData = [];
+        this.selectedInfo.order_no = this.chooseOrderNo.order_no;
+        this.selectedInfo.residential_name = this.chooseOrderNo.residential_name;
+        this.selectionModal = false;
+        this.selectedAll = false;
+        this.contentData = [];
+        this.selectedInfo.url_number = '';
+        row.list.map(v=>{
+          if(v.isCurrent){
+               order_no = v.order_no;
+          }
+        })
+       this.handleGetType(order_no);
+      } else if (row.type == 2) {
+        this.selectedAll = false;
+        this.selectedInfo.url_number = this.chooseUrlNo.url_number;
+        this.selectedInfo.product_id = this.chooseUrlNo.product_id;
+        this.selectionDetailModal = false;
+        this.getChipDetail();
+      }
+      // order_no: "20211010",
+      // residential_name: "2",
+      // url_number: "3",
+      // row_no: [],
+    },
+    // 获取具体详情
+    getChipDetail() {
+      this.axios({
+        method: "post",
+        url: "/api/station_get_order_product_pr",
+        data: {
+          order_no: this.selectedInfo.order_no,
+          product_id: this.selectedInfo.product_id,
+          rows: this.selectedInfo.rows,
+          page_index: this.page_index,
+          page_size: this.page_size,
+        },
+      }).then((res) => {
+        if (res.code == 200) {
+         
+          res.data.data.map((v) => (v.isChoosed = false));
+          this.contentData = res.data.data;
+          if(this.selectedAll){
+            this.contentData.map(v=>{
+              v.isChoosed = true;
+            })
+            this.contentData.map(v=>{
+              this.cancelData.map(m=>{
+                if(v.id == m.id){
+                  v.isChoosed=false;
+                }
+              })
+            })
+          }
+
+          this.contentData.map(v=>{
+              this.saveData.map(m=>{
+                  if(v.id==m.id){
+                      v.isChoosed =true;
+                  }
+              })
+          })
+          this.total = res.data.total;
+        }
+      });
+    },
+    handlePrint() {
+      if(this.selectedObj.state == 0){
+        return this.$Message.warning("请选择数据");
+      }
+      if (!this.selectedObj.isChoosed) {
+        return this.$Message.warning("打印只能单选");
+      }
+      if (this.selectedObj.type != 1) {
+        return this.$Message.warning("该部件不含芯片,无需打印");
+      }
+      if (this.selectedObj.un_print == 0) {
+        this.selectedObj.print_num = this.selectedObj.on_print;
+      } else {
+        this.selectedObj.print_num = this.selectedObj.un_print;
+      }
+      this.printModal = true;
+    },
+    handlePrintComfirm(row, type) {
+      if (
+        type &&
+        this.modalRoomListSelected.length != this.selectedObj.print_num
+      ) {
+        return this.$Message.warning("与打印数量不符");
+      }
+      let ids = this.modalRoomListSelected.map((v) => {
+        return v.id;
+      });
+      let data = type
+        ? {
+            order_no: this.selectedInfo.order_no,
+            product_id: this.selectedInfo.product_id,
+            rows: this.selectedInfo.rows,
+            num: this.selectedObj.print_num,
+            id: row.id,
+            ids,
+            type,
+          }
+        : {
+            order_no: this.selectedInfo.order_no,
+            product_id: this.selectedInfo.product_id,
+            rows: this.selectedInfo.rows,
+            num: this.selectedObj.print_num,
+            id: row.id,
+          };
+      // 获取打印数据
+      this.axios({
+        method: "post",
+        url: "/api/station_print",
+        data,
+      }).then((resp) => {
+        if (resp.code == 200) {
+          // usb打印/ip打印
+          this.axios.get("/api/get_print_local_url").then((res) => {
+            console.log(res);
+            if (res.code == 200) {
+              if (res.data.state) {
+                this.handlePrintChipsUsb(resp.data, res.data.type);
+              } else {
+                this.handlePrintChipsIp(resp.data, res.data.type);
+              }
+            }
+          });
+          // this.selectedObj.un_print = this.selectedObj.un_print - this.selectedObj.print_num;
+          // if(this.selectedObj.un_print == 0){
+          //   this.selectedObj.isFinished == true;
+          //   this.selectedObj.print_num == this.selectedObj.on_print;
+          // }
+          this.modalRoomList.map((v) => {
+        v.isCurrent = false;
+      });
+      this.modalRoomListSelected = [];
+          this.saveData = [];
+          this.printModal = false;
+          this.roomModal = false;
+        }
+      });
+    },
+    handleThen(){
+      if(!this.produceID||!this.employeeID){
+        return this.$Message.warning('请确认信息')
+      }
+       this.axios.post('/api/station_order_produce_complete',{produce_id:this.produceID,employee_id:this.employeeID,sort_list:this.rownoList,produce_type:this.produce_type}).then(res=>{
+           if(res.code==200){
+               this.$Message.success(res.msg);
+               this.produceList.map((v) => {
+        v.isChoosed = false;
+      });
+               this.produceID = null;
+               this.produce_type = '';
+               this.rownoList=[];
+               this.finishWork = false;
+           }
+       })
+        // this.finishWork = false;
+    },
+    handleOk() {
+      if (this.saveData.length==0&&!this.selectedAll) {
+        return this.$Message.warning("请选择数据");
+      }
+    //   if (this.selectedObj.type == 1 && this.selectedObj.un_print == 0) {
+    //     this.selectedObj.ok_num =
+    //       this.selectedObj.on_print - this.selectedObj.on_complete;
+    //     this.okModal = true;
+    //   } else if (this.selectedObj.type != 1) {
+    //     this.selectedObj.ok_num = this.selectedObj.un_complete;
+    //     this.okModal = true;
+    //   } else {
+    //     return this.$Message.warning("部件存在未打印芯片,请先打印");
+    //   }
+     this.finishWork = true;
+    },
+     handleRoomCancel() {
+      this.modalRoomList.map((v) => {
+        v.isCurrent = false;
+      });
+      this.modalRoomListSelected = [];
+      this.roomModal = false;
+    },
+    handleCancel() {
+      this.produceList.map((v) => {
+        v.isChoosed = false;
+      });
+      this.produceID = null;
+      this.produce_type = '';
+      this.rownoList = [];
+      this.finishWork = false;
+    },
+    // handleOkComfirm(row) {
+    //   this.axios({
+    //     method: "post",
+    //     url: "/api/station_complete",
+    //     data: {
+    //       order_no: this.selectedInfo.order_no,
+    //       product_id: this.selectedInfo.product_id,
+    //       rows: this.selectedInfo.rows,
+    //       num: this.selectedObj.ok_num,
+    //       id: row.id,
+    //     },
+    //   }).then((res) => {
+    //     if (res.code == 200) {
+    //       this.okModal = false;
+    //       this.getChipDetail();
+    //     }
+    //   });
+    // },
+    //行号确认
+    handleRowNoComfirm() {
+      let data =[];
+      this.chooseLineNo.map((v)=>{
+             if(v.start&&v.end){
+               data.push(v)
+             }
+      })
+      this.selectedInfo.rows = JSON.parse(JSON.stringify(data));
+      this.selectionRownolModal = false;
+      this.page_index = 1;
+      this.getChipDetail();
+    },
+    onInput(value) {
+      this.currentSearchValue = this.currentSearchValue + "" + value;
+      this.handleCurrentSearch(
+        this.currencySelectedObj,
+        this.currentSearchValue
+      );
+    },
+    onDelete() {
+      this.currentSearchValue = this.currentSearchValue.substring(
+        0,
+        this.currentSearchValue.length - 1
+      );
+      this.handleCurrentSearch(
+        this.currencySelectedObj,
+        this.currentSearchValue
+      );
+    },
+    keyboardOkTap(value) {
+      let max;
+      if (this.selectedObj.type == 1) {
+        max = this.selectedObj.on_print - this.selectedObj.on_complete;
+      } else {
+        max = this.selectedObj.un_complete;
+      }
+      this.selectedObj.ok_num =
+        (this.selectedObj.ok_num ? this.selectedObj.ok_num : "") + "" + value;
+      if (this.selectedObj.ok_num * 1 > max) {
+        this.selectedObj.ok_num = max;
+      }
+      this.$forceUpdate();
+    },
+    keyboardOkDele() {
+      this.selectedObj.ok_num = (this.selectedObj.ok_num + "").substring(
+        0,
+        this.selectedObj.ok_num.length - 1
+      );
+      this.$forceUpdate();
+    },
+    keyboardPrintTap(value) {
+      let max = this.selectedObj.on_print + this.selectedObj.un_print;
+      this.selectedObj.print_num =
+        Number((this.selectedObj.print_num ? this.selectedObj.print_num : "") +
+        "" +
+        value);
+      if (this.selectedObj.print_num * 1 > max) {
+        this.selectedObj.print_num = max;
+      }
+      this.$forceUpdate();
+    },
+    keyboardPrintDele() {
+      this.selectedObj.print_num = Number((this.selectedObj.print_num + "").substring(
+        0,
+        this.selectedObj.print_num.length - 1
+      ));
+      this.$forceUpdate();
+    },
+    keyboardTap(value) {
+      this.keyboardObj[this.keyboardVal] =
+        (this.keyboardObj[this.keyboardVal]
+          ? this.keyboardObj[this.keyboardVal]
+          : "") +
+        "" +
+        value;
+    },
+    keyboardDele() {
+      this.keyboardObj[this.keyboardVal] = this.keyboardObj[
+        this.keyboardVal
+      ].substring(0, this.keyboardObj[this.keyboardVal].length - 1);
+    },
+    handleRowNoInput(row, type) {
+      if (type == 1) {
+        this.keyboardVal = "start";
+      } else {
+        this.keyboardVal = "end";
+      }
+      this.keyboardObj = row;
+      
+      this.show2 = true;
+    },
+    handleOkInput() {
+      this.show3 = true;
+    },
+    handlePrintInput() {
+      this.show4 = true;
+    },
+    changePage(e) {
+      this.page_index = e;
+      this.getChipDetail();
+    },
+    changeModalPage(e) {
+      this.currencySelectedObj.type == 1
+        ? (this.modal_1_page_index = e)
+        : (this.modal_2_page_index = e);
+      this.handleCurrentSearch(
+        this.currencySelectedObj,
+        this.currentSearchValue
+      );
+    },
+    changeRoomPage(e) {
+      this.modal_room_page_index = e;
+      this.getModalRoomList();
+    },
+    getModalRoomList() {
+      this.axios({
+        method: "post",
+        url: "/api/station_get_print_house",
+        data: {
+          order_no: this.selectedInfo.order_no,
+          product_id: this.selectedInfo.product_id,
+          rows: this.selectedInfo.rows,
+          page_index: this.modal_room_page_index,
+          page_size: this.modal_room_page_size,
+          id: this.selectedObj.id,
+        },
+      }).then((res) => {
+        if (res.code == 200) {
+          res.data.data.map((v) => {
+            v.isCurrent = false;
+            this.modalRoomListSelected &&
+              this.modalRoomListSelected.map((w) => {
+                if (w.id == v.id) {
+                  v.isCurrent = true;
+                }
+              });
+          });
+          this.modalRoomList = res.data.data;
+          this.modal_room_total = res.data.total;
+          console.log(this.modalRoomList)
+        }
+      });
+    },
+    handlePrintChipsUsb(contents, type) {
+      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();
+          },
+        });
+      });
+    },
+     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("");
+},
+    handlePrintChipsIp(contents, type) {
+      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
+        let IP = res.data.print_url;
+        let port = 9100;
+        let IP_Port = IP + "," + port;
+        printparamsJsonArray.push({ PTK_Connect_Timer: IP_Port + ",1" });
+        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 });
+        console.log(`contents`, contents);
+        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:
+                "100,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:
+                "600,40,60,0,微软雅黑,1,700,0,0,0," + printContent_l1_2,
+            });
+            const printContent_l2 = `房号:${content.number_detail}`;
+            printparamsJsonArray.push({
+              PTK_DrawText_TrueType:
+                "100,110,60,0,微软雅黑,1,700,0,0,0," + printContent_l2,
+            });
+            const printContent_l2_2 = `产品:${content.product_title}`;
+            printparamsJsonArray.push({
+              PTK_DrawText_TrueType:
+                "600,110,60,0,微软雅黑,1,700,0,0,0," + printContent_l2_2,
+            });
+            const printContent_l3 = `图号:${content.url_number}`;
+            printparamsJsonArray.push({
+              PTK_DrawText_TrueType:
+                "100,180,60,0,微软雅黑,1,700,0,0,0," + printContent_l3,
+            });
+            const printContent_l3_2 = `部件:${content.part_title}`;
+            printparamsJsonArray.push({
+              PTK_DrawText_TrueType:
+                "600,180,60,0,微软雅黑,1,700,0,0,0," + printContent_l3_2,
+            });
+            const printContent_l4 = `木皮:${content.color_title}`;
+            printparamsJsonArray.push({
+              PTK_DrawText_TrueType:
+                "100,320,60,0,微软雅黑,1,700,0,0,0," + printContent_l4,
+            });
+            const printContent_l4_2 = `尺寸:${content.measure}`;
+            printparamsJsonArray.push({
+              PTK_DrawText_TrueType:
+                "100,250,60,0,微软雅黑,1,700,0,0,0," + printContent_l4_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_DrawText_TrueType:
+                "100,570,45,0,微软雅黑,1,700,0,0,0," + printContent_l4,
+            });
+            printparamsJsonArray.push({
+              PTK_DrawText_TrueType:
+                "600,570,45,0,微软雅黑,1,700,0,0,0," + printContent_l4_2,
+            });
+            // 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_CloseConnect: "" });
+        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();
+          },
+        });
+      });
+    },
+  },
+  // 监控data中的数据变化
+  watch: {},
+  beforeCreate() {}, // 生命周期 - 创建之前
+  beforeMount() {}, // 生命周期 - 挂载之前
+  beforeUpdate() {}, // 生命周期 - 更新之前
+  updated() {}, // 生命周期 - 更新之后
+  beforeDestroy() {}, // 生命周期 - 销毁之前
+  destroyed() {}, // 生命周期 - 销毁完成
+  activated() {}, // 如果页面有keep-alive缓存功能,这个函数会触发
+};
+</script>
+
+<style lang="scss" scoped>
+.fullscreen-title-btn {
+  position: absolute;
+  right: 100px;
+  top: 0.175rem;
+}
+.fullscreen-content {
+  font-size: 26px;
+  font-family: "Microsoft YaHei", 微软雅黑;
+  font-weight: bold;
+  .fullscreen-content-select {
+    display: flex;
+    justify-content: flex-start;
+    padding-bottom: 0.1rem;
+    border-bottom: 1px solid #e8eaec;
+    .fullscreen-content-select-block {
+      display: flex;
+      justify-content: flex-start;
+      align-items: center;
+    }
+    .fullscreen-content-select-block:nth-child(1) {
+      width: 30%;
+    }
+    .fullscreen-content-select-block:nth-child(2) {
+      width: 30%;
+    }
+    .fullscreen-content-select-block:nth-child(3) {
+      width: 30%;
+    }
+  }
+  .fullscreen-content-choose {
+    display: flex;
+    justify-content: flex-start;
+    flex-wrap: wrap;
+    padding-top: 0.1rem;
+    margin-bottom: 0.5rem;
+    .fullscreen-content-choose-block {
+      width: 33.33%;
+      border-radius: 5px;
+      border: 1px solid #2d8cf0;
+      // margin: 0.1rem 1%;
+      padding: 1%;
+      position: relative;
+      div {
+        display: flex;
+        justify-content: space-between;
+        // margin-top: 5px;
+      }
+      .chip-tag {
+        display: inline-block;
+        position: absolute;
+        width: 1rem;
+        top: 0;
+        left: 50%;
+        font-size: 18px;
+        background-color: #fadb14;
+        color: black;
+        height: 0.75rem;
+        border-radius: 15%;
+        text-align: center;
+        padding-top: 0.15rem;
+        transform: translate(-50%, -10%);
+      }
+      .chip-tag-choosed {
+        display: inline-block;
+        position: absolute;
+        width: 1rem;
+        top: 0;
+        left: 15%;
+        font-size: 18px;
+        background-color: #fadb14;
+        color: black;
+        height: 0.75rem;
+        border-radius: 15%;
+        text-align: center;
+        padding-top: 0.15rem;
+        transform: translate(-10%, -10%) !important;
+      }
+    }
+    .fullscreen-content-choose-block-wide {
+      width: 24.5%;
+    }
+    .fullscreen-content-choose-block-choosen {
+      color: white;
+      background-color: #2d8cf0;
+    }
+    .fullscreen-content-choose-block-unchoosen {
+      color: #2d8cf0;
+      background-color: white;
+    }
+  }
+}
+.fullscreen-content-page {
+  display: flex;
+  justify-content: center;
+}
+.selection-modal {
+  .selection-modal-top {
+    display: flex;
+    justify-content: center;
+  }
+  .selection-modal-body {
+    display: flex;
+    justify-content: center;
+    flex-wrap: wrap;
+    .selection-modal-body-block {
+      cursor: pointer;
+      width: 30%;
+      margin: 1%;
+      padding: 3% 1%;
+      background-color: #e9ecef;
+      div {
+        display: flex;
+        justify-content: center;
+      }
+    }
+    .selection-modal-body-block-detail {
+      cursor: pointer;
+      width: 17%;
+      margin: 1%;
+      padding: 3% 1%;
+      background-color: #e9ecef;
+      div {
+        display: flex;
+        justify-content: center;
+      }
+    }
+    .selection-modal-body-block-choosen,
+    .selection-modal-body-block-detail-choosen {
+      background-color: #fadb14;
+    }
+    .selection-modal-body-block-unchoosen,
+    .selection-modal-body-block-detail-unchoosen {
+      background-color: #e9ecef;
+    }
+  }
+}
+.selection-rowno-modal {
+  .selection-rowno-modal-body {
+    max-height: 7rem;
+    overflow: auto;
+    .selection-rowno-modal-body-block {
+      margin: 0.5rem 0;
+      text-align: center;
+    }
+  }
+}
+.selection-print-modal {
+  .selection-print-modal-body {
+    font-size: 0.5rem;
+    height: 4.5rem;
+    .selection-print-modal-body-top {
+      display: flex;
+      justify-content: space-around;
+      align-items: center;
+      margin: 0.5rem 0;
+      /deep/.ivu-input-number-handler{
+        height: 20.5px;
+      }
+      // /deep/.ivu-input-number-input-warp{
+      //   margin: auto 0;
+      //    /deep/.ivu-input-number-input{
+      //  margin: auto 0;
+      // }
+      // }
+    }
+    .selection-print-modal-body-info {
+      padding-top: 16px;
+      border-top: 1px solid #e8eaec;
+      text-align: center;
+      button{
+         height: 2em;
+      font-size: 1em;
+      }
+    }
+  }
+  .selection-print-modal-body-footer{
+    height: 1rem;
+    display: flex;
+    justify-content: space-around;
+    button{
+      height: 1.5em;
+      font-size: 3em;
+    }
+  }
+}
+.icon-wrapper {
+  position: relative;
+  font-size: 0.25rem;
+}
+.icon-close {
+  position: absolute;
+  right: -0.35rem;
+  top: -0.2rem;
+}
+/deep/.ivu-page-item {
+  display: inline-block;
+  font-size: 0.5rem;
+  height: 1rem;
+  line-height: 1rem;
+  width: 1rem;
+}
+/deep/.ivu-page-prev,
+/deep/.ivu-page-next {
+  display: inline-block;
+  font-size: 0.5rem;
+  height: 1rem;
+  line-height: 1rem;
+  width: 1rem;
+  a {
+    font-size: 0.5rem;
+  }
+}
+/deep/.ivu-modal-close {
+  border: 1px solid black;
+}
+/deep/.fullscreen-content-page {
+  display: flex;
+  justify-content: space-around;
+}
+.wide-screen-rowno {
+  display: flex;
+  justify-content: center !important;
+  span {
+    display: inline-block;
+    text-align: center;
+    width: 3rem;
+    height: 3rem;
+    line-height: 3rem;
+    border-radius: 50%;
+    font-size: 1.5rem;
+  }
+  .wide-screen-rowno-span-choosed {
+    color: #2d8cf0;
+    background-color: white;
+  }
+  .wide-screen-rowno-span {
+    color: white;
+    background-color: #2d8cf0;
+  }
+}
+.printRow{
+  display: none;
+}
+@media print {
+        .printRow{
+            display: block;
+            width: 100%;
+            margin-top: 10mm;
+            .printRow_content{
+              page-break-after: always;
+            }
+        }
+               @page{
+
+margin:10mm 1mm
+
+}
+        }
+</style>

+ 45 - 0
src/views/ChipPrintScreen/list.vue

@@ -0,0 +1,45 @@
+<template>
+    <div style="margin-top:10px">
+        <div class='content' >
+        <span class="block_item" @click="goPage(1)">打印屏</span>
+        <span class="block_item" @click="goPage(2)">完工屏</span>
+        </div>
+    </div>
+</template>
+<script>
+export default {
+    methods:{
+        goPage(type){
+           if(type==1){
+                this.$router.push({path:'/cms/ChipPrintScreen/ChipPrintScreen'})
+           }else{
+                    this.$router.push({path:'/cms/ChipPrintScreen/finishWorkScreen'})              
+           }
+        }
+    }
+}
+</script>
+<style lang="scss" scoped>
+.content{
+    position:fixed;
+    left: 53%;
+    top: 50%;
+    transform:translate(-50%,-50%);
+    .block_item{
+        border-radius: 10px;
+         margin: 60px;
+         display: inline-block;
+         width: 250px;
+         height: 150px;
+         text-align: center;
+         line-height: 150px;
+         font-size: 30px;
+         background: rgb(228, 224, 224);
+         cursor: pointer;
+}
+.block_item:hover{
+    box-shadow: 3px 3px 3px rgb(77, 77, 75);
+}
+}
+
+</style>

+ 6 - 6
src/views/Dispatching/DispatchedListDetail.vue

@@ -89,7 +89,7 @@
             ref='forms'
             :model="dispatchInfo">
         <FormItem label="选择时间">
-          <DatePicker :options="options"
+          <DatePicker 
                       style="width:100%;"
                       v-model="dispatchTime"
                       clearable
@@ -159,11 +159,11 @@ export default {
       showModal: false,
       dispatchTime: [],
       dispatchInfo: {},
-      options: {
-        disabledDate (date) {
-          return date && date.valueOf() < Date.now() - 86400000;
-        }
-      },
+      // options: {
+      //   disabledDate (date) {
+      //     return date && date.valueOf() < Date.now() - 86400000;
+      //   }
+      // },
 
     }
   },

+ 40 - 4
src/views/Dispatching/Dispatching.vue

@@ -31,7 +31,7 @@
           </Select>
         </FormItem>
         <FormItem label='图号:'>
-          <Tooltip placement='top' max-width='600' transfer>
+          <Tooltip placement='right' max-width='600' transfer>
           <Select style="width:200px" v-model="searchData.url_number" multiple filterable :disabled='show' :max-tag-count='1' >
             <Option value='全部' label="全部" @click.native="total_choose"></Option>
             <Option :value="item" :label="item" v-for="(item,index) in urlNumberList" :key="index"></Option>
@@ -41,6 +41,31 @@
           </div>
           </Tooltip>
         </FormItem>
+        <FormItem label='区域:' >
+          <Select style="width:200px" v-model="searchData.residential_name"  filterable @on-change='residentialNameChange' clearable>
+            <Option :value="item" :label="item" v-for="(item,index) in projectList" :key="index"></Option>
+          </Select>
+        </FormItem>
+        <FormItem label='楼栋:' >
+          <Select style="width:200px" v-model="searchData.residential_name"  filterable @on-change='residentialNameChange' clearable>
+            <Option :value="item" :label="item" v-for="(item,index) in projectList" :key="index"></Option>
+          </Select>
+        </FormItem>
+        <FormItem label='单元:' >
+          <Select style="width:200px" v-model="searchData.residential_name"  filterable @on-change='residentialNameChange' clearable>
+            <Option :value="item" :label="item" v-for="(item,index) in projectList" :key="index"></Option>
+          </Select>
+        </FormItem>
+        <FormItem label='楼层:' >
+          <Select style="width:200px" v-model="searchData.residential_name"  filterable @on-change='residentialNameChange' clearable>
+            <Option :value="item" :label="item" v-for="(item,index) in projectList" :key="index"></Option>
+          </Select>
+        </FormItem>
+        <FormItem label='房间号:' >
+          <Select style="width:200px" v-model="searchData.residential_name"  filterable @on-change='residentialNameChange' clearable>
+            <Option :value="item" :label="item" v-for="(item,index) in projectList" :key="index"></Option>
+          </Select>
+        </FormItem>
         <FormItem>
           <Button  type="primary" @click="initDataSearch">搜索</Button>
         </FormItem>
@@ -69,6 +94,7 @@
           @on-selection-change="handleSelectionChange"
           :data="tableData"
           ref="y_table"
+           :loading='loading'
         >
           <template slot="slotGroup" slot-scope="{ row, index }">
             <Select
@@ -201,6 +227,7 @@ export default {
   data() {
     // 这里存放数据
     return {
+      loading:false,
       show:true,
       orderList:[],
       urlNumberList:[],
@@ -217,6 +244,11 @@ export default {
           minWidth: 150,
           slot: "slotGroup",
         },
+         { title: "区域", align: "center", key: "num", minWidth: 150 },
+          { title: "楼栋", align: "center", key: "num", minWidth: 150 },
+           { title: "单元", align: "center", key: "num", minWidth: 150 },
+            { title: "楼层", align: "center", key: "num", minWidth: 150 },
+             { title: "房间号", align: "center", key: "num", minWidth: 150 },
         {
           title: "操作",
           align: "center",
@@ -288,7 +320,7 @@ export default {
       .catch((err) => {});
     //获取班组列表
     this.axios("/api/employee_list").then(
-      (res) => (this.groupList = res.data)
+      (res) => (this.groupList = res.data.data)
     );
   },
   // 生命周期 - 挂载完成(可以访问DOM元素)
@@ -547,6 +579,7 @@ export default {
             }
           });
           this.$forceUpdate();
+          this.loading = false;
         })
         .catch((err) => {});
     },
@@ -677,12 +710,15 @@ export default {
       this.initData();
     },
     handleProcedureChange(val) {
+      this.loading = true;
       this.selected = [];
       this.currencyTag = val;
+
       localStorage.setItem("dispatchTag", val);
        this.axios.get('/api/order_produce_url_number',{params:{...this.searchData,type_id:this.currencyTag}}).then(res=>{
-                  this.searchData.url_number =[];
-                this.urlNumberList = res.data;});
+                this.urlNumberList = res.data;
+                });
+        this.searchData.url_number =[];         
       this.initData();  
       this.page_index = 1;
       this.page_size = 10;

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

@@ -296,6 +296,11 @@ export default {
         { title: "产品", align: "center", key: "product_title", minWidth: 150 },
         { title: "图号", align: "center", key: "url_number", minWidth: 150 },
         { title: "部件", align: "center", key: "part_title", minWidth: 150 },
+         { title: "区域", align: "center", key: "num", minWidth: 150 },
+          { title: "楼栋", align: "center", key: "num", minWidth: 150 },
+           { title: "单元", align: "center", key: "num", minWidth: 150 },
+            { title: "楼层", align: "center", key: "num", minWidth: 150 },
+             { title: "房间号", align: "center", key: "num", minWidth: 150 },
         // { title: "材质", align: "center", key: "material", minWidth: 150 },
         // { title: "颜色", align: "center", key: "color", minWidth: 150 },
         // { title: "工艺", align: "center", key: "work", minWidth: 150 },
@@ -341,7 +346,7 @@ export default {
   created() {
     //获取班组列表
     this.axios("/api/employee_list", { params: { type: 3 } }).then(
-      (res) => (this.groupList = res.data)
+      (res) => (this.groupList = res.data.data)
     );
   },
   // 生命周期 - 挂载完成(可以访问DOM元素)

+ 595 - 0
src/views/MatchChange/change.vue

@@ -0,0 +1,595 @@
+<template>
+  <div>
+    <Toptitle title="变更">
+       <Button type="primary" style="margin-right: 10px" @click="postData"
+        >保存</Button
+      >
+       <Button type="primary" ghost style="margin-right: 10px" @click="match"
+        >匹配</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>
+            <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="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="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>
+            </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>
+  </div>
+</template>
+
+<script>
+// 这里可以导入其他文件(比如:组件,工具js,第三方插件js,json文件,图片文件等等)
+// 例如:import 《组件名称》 from '《组件路径》';
+
+export default {
+  name: "",
+  components: {},
+  props: {},
+  // import引入的组件需要注入到对象中才能使用
+  data() {
+    // 这里存放数据
+    return {
+      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: []
+      },
+      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: "area",  resizable: true,
+                        minWidth: 160 },
+        { title: "房号", align: "center", key: "house_id",  resizable: true,
+                        minWidth: 160,slot:'number' },
+        { title: "组合名称", align: "center", key:'compose_name', resizable: true,
+                        minWidth: 100 },
+        { title: "部件名称", align: "center", key: "part_title",  resizable: true,
+                        minWidth: 180 },
+        { title: "行号", align: "center", key: "sort",  resizable: true,
+                        minWidth: 170 },
+        {
+          title: "精裁尺寸",
+          align: "center",
+          resizable: true,
+                        width: 150,
+          render: (h, params) => {
+            return h("span", {}, params.row.measure);
+          },
+         },
+      ], //匹配表头
+      process_man: "",
+      processManList: [],
+      process_start_time: "",
+      process_end_time: "",
+      process_control: false,
+      cut_order_product_ids: [],
+      matchedSelectedList: [],
+      editData:[],
+      proxObj:{},
+    };
+  },
+  // 生命周期 - 创建完成(可以访问当前this实例)
+  created() {
+    this.axios("/api/user").then(
+      (res) => (this.processManList = res.data.data)
+    );
+  },
+  // 生命周期 - 挂载完成(可以访问DOM元素)
+  mounted() {
+    this.initData();
+  },
+  methods: {
+    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.pr_id = v.id;
+          obj.house_id = v.house_id;
+          obj.url_number = v.url_number;
+          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;
+             });
+    },
+    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>

+ 1035 - 0
src/views/MatchChange/check.vue

@@ -0,0 +1,1035 @@
+<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="5">
+          <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>
+            <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:[],
+      },
+      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: "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: "sort",  resizable: true,
+                        minWidth: 170 },
+        {
+          title: "精裁尺寸",
+          align: "center",
+          resizable: true,
+                        minWidth: 150,
+          render: (h, params) => {
+            return h("span", {}, params.row.measure);
+          },
+         }, 
+         { title: "打印芯片", align: "center", key: "chip_state",  resizable: true,
+                        minWidth: 80 ,  render: (h, params) => {
+            return h("span", {}, params.row.chip_state==0?'否':'是');
+          }}
+      ], //匹配表头
+      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(){
+        console.log(this.matchedSelectedList)
+         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>

+ 125 - 0
src/views/MatchChange/list.vue

@@ -0,0 +1,125 @@
+<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/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();
+        },
+        changePage(e){
+     this.pageIndex =e;
+     this.init();
+        },
+        init(){
+           this.getData(this.searchData);
+
+        }
+    }
+}
+</script>
+<style lang="scss" scoped>
+
+</style>

+ 6 - 6
src/views/OrderMannage/BusinessOrderlist/agentOrder.vue

@@ -104,7 +104,7 @@
 
         <FormItem label="交付日期:"
                   prop='end_time'>
-          <DatePicker :options="options"
+          <DatePicker 
                       v-model="info.end_time"
                       type="date"
                       placeholder="交付日期"
@@ -305,11 +305,11 @@ export default {
         ],
       },
       warningList: [],
-      options: {
-        disabledDate (date) {
-          return date && date.valueOf() < Date.now() - 86400000;
-        }
-      }
+      // options: {
+      //   disabledDate (date) {
+      //     return date && date.valueOf() < Date.now() - 86400000;
+      //   }
+      // }
     }
   },
 

+ 1 - 1
src/views/OrderMannage/BusinessOrderlist/edit.vue

@@ -3451,7 +3451,7 @@ export default {
       }
     },
     getUsers() {
-      this.axios("/api/employee_list").then((res) => (this.users = res.data));
+      this.axios("/api/employee_list").then((res) => (this.users = res.data.data));
     },
     handleExtraAdd(array, type) {
       array.push({

+ 1 - 1
src/views/OrderMannage/BusinessOrderlist/editcopy.vue

@@ -3519,7 +3519,7 @@ export default {
       ).toFixed(2);
     },
     getUsers() {
-      this.axios("/api/employee_list").then((res) => (this.users = res.data));
+      this.axios("/api/employee_list").then((res) => (this.users = res.data.data));
     },
     handleExtraAdd(array, type) {
       array.push({

+ 1 - 1
src/views/ProcedureMannage/edit.vue

@@ -91,7 +91,7 @@ export default {
     this.axios
       .get("/api/employee_list", { params: { type: 3 } })
       .then((res) => {
-        this.employeeList = res.data;
+        this.employeeList = res.data.data;
       });
     // 获取工序
     // basics_procedure_index

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

@@ -189,6 +189,7 @@ export default {
         {
           title: "产品",
           name: "Select",
+          filterable: true,
           serverName: "product",
           placeholder: "请选择产品",
           value: "",
@@ -208,6 +209,7 @@ export default {
           title: "部件",
           name: "Select",
           serverName: "part",
+           filterable: true,
           placeholder: "请选择部件",
           value: "",
           option: [],

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

@@ -149,7 +149,7 @@ export default {
     // this.axios("/api/procedure_index").then(
     //   (res) => (this.produces = res.data.data)
     // );
-    this.axios("/api/employee_list").then((res) => (this.nickname_users = res.data));
+    this.axios("/api/employee_list").then((res) => (this.nickname_users = res.data.data));
   },
   computed: {
     list() {
@@ -353,6 +353,8 @@ export default {
           order_no: this.$route.query.order_no,
           produce_id: row.produce_id,
           produce_time: row.produce_time,
+          url_number:this.proxyObj.url_number.toString(),
+          procedure_title:this.proxyObj.procedure_title.toString()
         },
       });
     },

+ 4 - 4
src/views/ProductionOrderList/Dispatchlist/details.vue

@@ -394,7 +394,7 @@ export default {
           title: "图号",
           filterable: true,
           name: "Select",
-          value: "",
+          value: '',
           change:true,
           serverName: "url_number",
           optionName: "url_number",
@@ -478,7 +478,7 @@ export default {
       });
     this.axios("/api/employee_list").then((res) => {
       console.log(res);
-      this.username_list = res.data;
+      this.username_list = res.data.data;
     });
   },
   methods: {
@@ -594,7 +594,7 @@ export default {
             if (res.code == 200) {
               // this.$Message.success(res.msg);
               // this.getData(this.$route.query)
-              this.form_modal.nickname = res.data;
+              this.form_modal.nickname = res.data.data;
             }
           });
           this.axios
@@ -618,7 +618,7 @@ export default {
             //选择了请求班组数据
             this.axios.get("/api/employee_list").then((res) => {
               if (res.code == 200) {
-                this.form_modal.nickname = res.data;
+                this.form_modal.nickname = res.data.data;
               }
             });
             //请求产品数据,此时的row是选择产品id的数组

+ 1 - 1
src/views/ProductionOrderList/Dispatchlist/list.vue

@@ -149,7 +149,7 @@ export default {
     // 获取紧急程度
     this.axios.get('/api/warning_list').then(res => { this.warningList = res.data.data })
     // 获取用户列表
-    this.axios({ method: 'get', url: '/api/employee_list', }).then((res) => { this.userList = res.data }).catch((err) => { });
+    this.axios({ method: 'get', url: '/api/employee_list', }).then((res) => { this.userList = res.data.data }).catch((err) => { });
   },
   beforeRouteEnter (to, from, next) {
     next(vm => {

+ 5 - 4
src/views/ProductionOrderList/InboundForm/details.vue

@@ -121,10 +121,10 @@
         @on-ok="confirmOutStock"
       >
         <Form :label-width="100">
-          <FormItem label="选择人员">
+          <FormItem label="选择班组">
             <Select clearable v-model="info.user_id">
               <Option
-                v-for="item of users"
+                v-for="item of band_list"
                 :key="item.id"
                 :value="item.id"
                 :label="item.nickname"
@@ -184,6 +184,7 @@ import { mapActions } from "vuex";
 export default {
   data() {
     return {
+      band_list:[],
       inboundVal:0,
       inboundTotal:0,
       inboundPageSize:10,
@@ -409,7 +410,7 @@ export default {
         end_time: "",
         user_salary: "",
       },
-      users: [],
+     
       time: "",
       shipArray: [],
       options: {
@@ -460,6 +461,7 @@ export default {
   },
   created() {
     this.getOptions();
+     this.axios("/api/employee_list").then((res) => (this.band_list = res.data.data));
   },
 
   methods: {
@@ -495,7 +497,6 @@ export default {
       this.showStock = true;
       },
     init(row) {
-      this.axios("/api/user").then((res) => (this.users = res.data.data));
       this.pageIndex = 1;
       row.page_index = this.pageIndex;
       row.page_size = this.pageSize;

+ 1 - 1
src/views/ProductionOrderList/InboundForm/index.vue

@@ -157,7 +157,7 @@ export default {
     });
     // 获取用户列表
     this.axios({ method: "get", url: "/api/employee_list" }).then((res) => {
-      this.userList = res.data;
+      this.userList = res.data.data;
     });
   },
   computed: {

+ 1 - 1
src/views/ProductionOrderList/ProductionPlanlist/BST_two.vue

@@ -504,7 +504,7 @@ export default {
     });
     this.axios
       .get("/api/employee_list")
-      .then((res) => (this.userList = res.data));
+      .then((res) => (this.userList = res.data.data));
     //this.axios.get('/api/employee_list').then(res => { this.employeeList = res.data })
     this.currencyPageId = this.$store.state.navgationData[0].sub[0].sub[0].id;
   },

+ 1 - 1
src/views/ProductionOrderList/ProductionPlanlist/type_one.vue

@@ -517,7 +517,7 @@ export default {
     });
     this.axios
       .get("/api/employee_list")
-      .then((res) => (this.userList = res.data));
+      .then((res) => (this.userList = res.data.data));
     //this.axios.get('/api/employee_list').then(res => { this.employeeList = res.data })
     this.currencyPageId = this.$store.state.navgationData[0].sub[0].sub[0].id;
   },

+ 9 - 9
src/views/ProductionOrderList/ProductionsOrder/BST_Decorationlist.vue

@@ -960,12 +960,12 @@ export default {
   },
   created() {
     this.getOptions();
-    // const wxsoect = new WebSocket("ws://localhost:8080");
-    // this.wxsoect = wxsoect;
-    // console.log("this.wxsoect :>> ", this.wxsoect);
-    // wxsoect.onopen = function(evt) {
-    //   console.log(`已成功打开`);
-    // };
+    const wxsoect = new WebSocket("ws://localhost:8080");
+    this.wxsoect = wxsoect;
+    console.log("this.wxsoect :>> ", this.wxsoect);
+    wxsoect.onopen = function(evt) {
+      console.log(`已成功打开`);
+    };
 
     // wxsoect.onclose = function(evt) {
     //   console.log(`已断开socket连接`);
@@ -2059,9 +2059,9 @@ switch(e){
     //   st.send("ClosePort");
     // },
     printChip(rows) {
-      // if (this.wxsoect.readyState != 1) {
-      //   return this.$Message.error("打印机未正常连接,请检查");
-      // }
+      if (this.wxsoect.readyState != 1) {
+        return this.$Message.error("打印机未正常连接,请检查");
+      }
       this.axios("/api/get_sub_part", { params: { id: rows.id } }).then(
         (res) => {
           if (res.code == 200) {

+ 15 - 15
src/views/ProductionOrderList/ProductionsOrder/demo_Decorationlist.vue

@@ -888,22 +888,22 @@ export default {
   },
   created() {
     this.getOptions();
-    // const wxsoect = new WebSocket("ws://localhost:8080");
-    // this.wxsoect = wxsoect;
-    // console.log("this.wxsoect :>> ", this.wxsoect);
-    // wxsoect.onopen = function(evt) {
-    //   console.log(`已成功打开`);
-    // };
+    const wxsoect = new WebSocket("ws://localhost:8080");
+    this.wxsoect = wxsoect;
+    console.log("this.wxsoect :>> ", this.wxsoect);
+    wxsoect.onopen = function(evt) {
+      console.log(`已成功打开`);
+    };
 
-    // wxsoect.onclose = function(evt) {
-    //   console.log(`已断开socket连接`);
-    // };
-    // wxsoect.onerror = function(err) {
-    //   throw new Error(err);
-    // };
-    // wxsoect.onmessage = function(message) {
-    //   console.log(message);
-    // };
+    wxsoect.onclose = function(evt) {
+      console.log(`已断开socket连接`);
+    };
+    wxsoect.onerror = function(err) {
+      throw new Error(err);
+    };
+    wxsoect.onmessage = function(message) {
+      console.log(message);
+    };
     this.axios("/api/bp_list").then((res) => {
       this.info.bps = res.data;
     });

+ 1 - 1
src/views/ProductionOrderList/workOver/confirm.vue

@@ -244,7 +244,7 @@ export default {
     mounted(){
         this.getData(this.$route.query);
         this.axios("/api/employee_list").then((res) => {
-      this.username_list = res.data;
+      this.username_list = res.data.data;
     });
     },
     methods:{

+ 1 - 1
src/views/ProductionOrderList/workOver/details.vue

@@ -160,7 +160,7 @@ export default {
     //   (res) => {
     //     this.unit_list = res.data.data}
     // );
-    this.axios("/api/employee_list").then((res) => (this.username_list = res.data));
+    this.axios("/api/employee_list").then((res) => (this.username_list = res.data.data));
   },
   computed: {
     list() {

+ 1 - 1
src/views/ProductionOrderList/workOver/list.vue

@@ -145,7 +145,7 @@ export default {
     // 获取紧急程度
     this.axios.get('/api/warning_list').then(res => { this.warningList = res.data.data })
     // 获取用户列表
-    this.axios({ method: 'get', url: '/api/employee_list', }).then((res) => { this.userList = res.data }).catch((err) => { });
+    this.axios({ method: 'get', url: '/api/employee_list', }).then((res) => { this.userList = res.data.data }).catch((err) => { });
   },
   beforeRouteEnter (to, from, next) {
     next(vm => {

+ 1 - 9
src/views/PurchasingManage/PurchasingOrder/edit.vue

@@ -1111,11 +1111,9 @@ export default {
     selectChange(row,index){
       if(!row.copy&&!row.edit){
         this.tableData[index].change = true;
-        console.log(this.tableData)
       }
    },
     check(row){
-      console.log(row);
       if(row.project_number!=='查看'){
         return
       }else{
@@ -1169,7 +1167,6 @@ export default {
           if((this.$route.query.type==1&&!v.is_refer)||v.state==0){
             this.selectChoose.map(m=>{
               if(m.index == v.index ){
-                        console.log(v);
                      v.num =this.total_num;//数量
                     v.no_tax_amount = (v.num*v.no_tax_price*1).toFixed(2);//无税金额
                     v.total_price = (v.num*v.price*1).toFixed(2);//价格合计
@@ -1243,7 +1240,6 @@ if(this.selectChoose.length == 0){
       this.total_type = val;
     },
     changenum(e,currentRow,index){
-      console.log(currentRow)
          currentRow.num = e.target.value
                   currentRow.total_price = (1 * currentRow.price * currentRow.num).toFixed(2)
                   this.tableData[index].total_price = (1 * currentRow.price * currentRow.num).toFixed(2)
@@ -1283,7 +1279,6 @@ if(this.selectChoose.length == 0){
          if(this.$route.query.type==2){
               this.tableData = []
           }
-          console.log(this.tableData);
           this.tableData=res.data.list;
         const data = JSON.parse(JSON.stringify(res.data))
         delete data.list
@@ -1310,7 +1305,6 @@ if(this.selectChoose.length == 0){
         if(this.$route.query.type!=2){
           this.tableData.push({material_title:'选择物料',_disabled:true})
         }
-        console.log(this.tableData)
       }).catch((err) => { });
     },
     postData () {
@@ -1478,7 +1472,6 @@ if(this.selectChoose.length == 0){
      let content = [];
          newArr.forEach(v=>{
            if(copy_purchase_data.length==0){
-            
              this.purchase_data.push(v)
            }else{
                
@@ -1517,7 +1510,7 @@ if(this.selectChoose.length == 0){
        })
        this.purchase_data.push(...content);
        this.purchase_tableData = [];
-    
+    console.log(this.purchase_data);
           this.purchase_data.forEach(v=>{
             let data = {...v[0]};
              data.num = 0
@@ -1536,7 +1529,6 @@ if(this.selectChoose.length == 0){
             })
            this.purchase_tableData.push(data)
           })
-          console.log(this.purchase_tableData);
           this.plan_no = [];
           this.purchase_data.forEach(v=>{
             v.forEach(m=>{

+ 8 - 0
src/views/leadMatch/roomList/edit.vue

@@ -405,6 +405,14 @@ export default {
             // await setTimeout(() => { }, 1000);
         }
       }
+      await this.axios.get('/api/cut_order_detail',{params:{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.cut_order_id = res.data.cut_order_id
+          })
         },
     //点击事件
     onClickBtn () {

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

@@ -411,6 +411,14 @@ export default {
             // await setTimeout(() => { }, 1000);
         }
       }
+      await  this.axios.get('/api/cut_order_detail',{params:{cut_order_id:this.$route.query.cut_order_id,order_type:1}}).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.cut_order_id = res.data.cut_order_id
+          })
         },
           objToForm (obj) {
       let Form = new FormData();

+ 2 - 2
vue.config.js

@@ -2,13 +2,13 @@ const axios_default_ip =
   process.env.NODE_ENV == "dev"
     ? "http://121.41.102.225:82"
     : process.env.NODE_ENV == "test-prd"
-    ? "http://124.71.176.88:882" //测试服
+    ? "http://121.41.102.225:82" //测试服
     : process.env.NODE_ENV == "prd_other"
     ? "http://121.37.173.82:82" //贝斯特
     : "http://124.71.176.88:882";
 //  http://124.71.176.88:882  //江山
 // 'http://121.41.102.225:82' :测试
-// http://124.71.176.88:70  江山新地址
+// http://124.71.176.88:70  下沙新地址
 process.env.VUE_APP_BASE_URL = axios_default_ip;
 module.exports = {
   publicPath: "./",