ysy 1 ano atrás
pai
commit
b11693b66f
1 arquivos alterados com 614 adições e 546 exclusões
  1. 614 546
      src/views/productionPlan/index.vue

+ 614 - 546
src/views/productionPlan/index.vue

@@ -1,8 +1,13 @@
 <template>
   <div class="ele-body">
     <el-card shadow="never" v-loading="loading">
-      <productionPlan-search @search="reload" ref="searchRef" :statusOpt="statusOpt" :planType="planType"
-        :activeName="activeName">
+      <productionPlan-search
+        @search="reload"
+        ref="searchRef"
+        :statusOpt="statusOpt"
+        :planType="planType"
+        :activeName="activeName"
+      >
       </productionPlan-search>
       <div class="btn_box">
         <el-button type="success" size="mini">齐套性检查</el-button>
@@ -10,11 +15,15 @@
         <el-button type="primary" size="mini">补单计划</el-button>
         <el-button type="info" size="mini">计划行事历</el-button>
         <el-button type="warning" size="mini">预警设置</el-button>
-        <el-button type="primary" size="mini" @click="handleMerge">合批</el-button>
+        <el-button type="primary" size="mini" @click="handleMerge"
+          >合批</el-button
+        >
         <el-button type="danger" size="mini">延期申请</el-button>
         <el-button type="danger" size="mini">变更申请</el-button>
 
-        <el-button type="success" size="mini" v-if="timeDimensionPlanType == 3">新增</el-button>
+        <el-button type="success" size="mini" v-if="timeDimensionPlanType == 3"
+          >新增</el-button
+        >
       </div>
 
       <el-tabs v-model="activeName" type="card" size="mini">
@@ -23,22 +32,45 @@
         <el-tab-pane label="已变更" name="change"></el-tab-pane>
       </el-tabs>
       <!-- 数据表格 -->
-      <ele-pro-table ref="table" :key="activeName" :initLoad="false" :columns="newColumns" :datasource="datasource"
-        row-key="code" :selection.sync="selection" :cache-key="`${activeName}ProductionPlanTable`"
-        @sort-change="onSortChange" autoAmendPage :parse-data="parseData" @update:selection="handleSelectionChange">
+      <ele-pro-table
+        ref="table"
+        :key="activeName"
+        :initLoad="false"
+        :columns="newColumns"
+        :datasource="datasource"
+        row-key="code"
+        :selection.sync="selection"
+        :cache-key="`${activeName}ProductionPlanTable`"
+        @sort-change="onSortChange"
+        autoAmendPage
+        :parse-data="parseData"
+        @update:selection="handleSelectionChange"
+      >
         <template v-slot:batchNo="{ row }">
           <el-link type="primary" :underline="false">
-            <el-tag type="success" size="mini" v-if="row.joinPlanCode" @click.stop="splitDetails(1, row)">
-              拆</el-tag>
-
-            <el-tag type="danger" size="mini" v-if="row.splitBatch == 2" @click.stop="splitDetails(2, row)">
-              合</el-tag>
+            <el-tag
+              type="success"
+              size="mini"
+              v-if="row.joinPlanCode"
+              @click.stop="splitDetails(1, row)"
+            >
+              拆</el-tag
+            >
+
+            <el-tag
+              type="danger"
+              size="mini"
+              v-if="row.splitBatch == 2"
+              @click.stop="splitDetails(2, row)"
+            >
+              合</el-tag
+            >
             {{ row.batchNo }}
           </el-link>
         </template>
 
-        <template v-slot:selection="{ row }">
-          <div class="check_box" @click="handOneSelection(row)">
+        <template v-slot:selection="{ row }" >
+          <div class="check_box"  @click="handOneSelection(row)">
             <div class="check act_check" v-if="selectionFilter(row)">
               <i class="el-icon-check"></i>
             </div>
@@ -58,11 +90,23 @@
 
         <template v-slot:priority="{ row }">
           <div style="display: flex">
-            <el-input v-model="row.priority" type="number" size="mini" :min="0" :max="10" @change="priorityChange(row)"
-              style="width: 80px">
+            <el-input
+              v-model="row.priority"
+              type="number"
+              size="mini"
+              :min="0"
+              :max="10"
+              @change="priorityChange(row)"
+              style="width: 80px"
+            >
             </el-input>
 
-            <el-popover placement="right" width="200" trigger="hover" content="数值越大优先级越高(0-3普通, 4-6优先, 7-10紧急)">
+            <el-popover
+              placement="right"
+              width="200"
+              trigger="hover"
+              content="数值越大优先级越高(0-3普通, 4-6优先, 7-10紧急)"
+            >
               <div class="sort-wrap" slot="reference">
                 <i class="el-icon-caret-top" @click="sortTop(row)"></i>
                 <i class="el-icon-caret-bottom" @click="sortBottom(row)"></i>
@@ -94,24 +138,44 @@
         </template>
         <!-- 操作列 -->
         <template v-slot:action="{ row }">
-          <el-link type="primary" :underline="false" v-if="row.status == 2" @click="handleOrderPublish(1, row)">
+          <el-link
+            type="primary"
+            :underline="false"
+            v-if="row.status == 2 && row.splitBatch != 1"
+            @click="handleOrderPublish(1, row)"
+          >
             发布
           </el-link>
-          <el-link type="primary" v-if="row.status == 3" :underline="false" @click="handleOrderPublish(2, row)">
+          <el-link
+            type="primary"
+            v-if="row.status == 3"
+            :underline="false"
+            @click="handleOrderPublish(2, row)"
+          >
             重新发布
           </el-link>
-          <el-link v-if="
-            row.splitBatch != 2 && !row.joinPlanCode && activeName == 'first'
-          " type="primary" :underline="false" @click="planEdit(row)">
+          <el-link
+            v-if="
+              row.splitBatch != 2 && !row.joinPlanCode && activeName == 'first'
+            "
+            type="primary"
+            :underline="false"
+            @click="planEdit(row)"
+          >
             修改
           </el-link>
 
-          <el-link v-if="
-            clientEnvironmentId != 4 &&
-            activeName == 'first' &&
-            row.splitBatch != 2 &&
-            !row.joinPlanCode
-          " type="primary" :underline="false" @click="toUnpack(row)">
+          <el-link
+            v-if="
+              clientEnvironmentId != 4 &&
+              activeName == 'first' &&
+              row.splitBatch != 2 &&
+              !row.joinPlanCode
+            "
+            type="primary"
+            :underline="false"
+            @click="toUnpack(row)"
+          >
             拆批
           </el-link>
         </template>
@@ -127,606 +191,610 @@
 </template>
 
 <script>
-import { getList, del, updatePriority } from '@/api/productionPlan/index.js';
-import productionPlanSearch from './components/productionPlan-search.vue';
-import unpackDialog from './components/unpackDialog.vue';
-import mergeDialog from './components/mergeDialog.vue';
-import unpackDetails from './components/unpackDetails.vue';
-import { release } from '@/api/productionPlan/order.js';
-
-import { getCode } from '@/api/codeManagement';
-
-import { fieldModel } from '@/api/saleOrder';
-
-import { debounce } from 'lodash';
-export default {
-  components: {
-    productionPlanSearch,
-    unpackDialog,
-    mergeDialog,
-    unpackDetails
-  },
-  props: {
-    timeDimensionPlanType: { type: Number, default: 1 }
-  },
-  data() {
-    return {
-      activeName: 'first',
-
-      // 加载状态
-      loading: false,
-      pageType: 'add',
-      dialogTitle: '',
-      isBindPlan: false,
-      statusOpt: {
-        first: [
-          { label: '所有状态', value: '3,2' },
-          { label: '待发布', value: '2' },
-          { label: '发布失败', value: '3' }
-        ],
-        second: [
-          { label: '所有状态', value: '7,4,5,6' },
-          { label: '待生产', value: '4' },
-          { label: '生产中', value: '5' },
-          { label: '已完成', value: '6' },
-          { label: '已延期', value: '7' }
-        ],
-        change: [{ label: '已变更', value: '9' }]
-      },
-      planType: [
-        { label: '所有计划类型', value: null },
-        { label: '内销计划', value: '1' },
-        { label: '外销计划', value: '2' },
-        { label: '预制计划', value: '3' }
-      ],
-      newColumns: [],
-
-      selection: [],
-
-    };
-  },
-  computed: {
-    clientEnvironmentId() {
-      return this.$store.state.user.info.clientEnvironmentId;
+  import { getList, del, updatePriority } from '@/api/productionPlan/index.js';
+  import productionPlanSearch from './components/productionPlan-search.vue';
+  import unpackDialog from './components/unpackDialog.vue';
+  import mergeDialog from './components/mergeDialog.vue';
+  import unpackDetails from './components/unpackDetails.vue';
+  import { release } from '@/api/productionPlan/order.js';
+
+  import { getCode } from '@/api/codeManagement';
+
+  import { fieldModel } from '@/api/saleOrder';
+
+  import { debounce } from 'lodash';
+  export default {
+    components: {
+      productionPlanSearch,
+      unpackDialog,
+      mergeDialog,
+      unpackDetails
     },
-    // 表格列配置
-    columns() {
-      const opt = {
-        first: [
-
+    props: {
+      timeDimensionPlanType: { type: Number, default: 1 }
+    },
+    data() {
+      return {
+        activeName: 'first',
+
+        // 加载状态
+        loading: false,
+        pageType: 'add',
+        dialogTitle: '',
+        isBindPlan: false,
+        statusOpt: {
+          first: [
+            { label: '所有状态', value: '3,2' },
+            { label: '待发布', value: '2' },
+            { label: '发布失败', value: '3' }
+          ],
+          second: [
+            { label: '所有状态', value: '7,4,5,6' },
+            { label: '待生产', value: '4' },
+            { label: '生产中', value: '5' },
+            { label: '已完成', value: '6' },
+            { label: '已延期', value: '7' }
+          ],
+          change: [{ label: '已变更', value: '9' }]
+        },
+        planType: [
+          { label: '所有计划类型', value: null },
+          { label: '内销计划', value: '1' },
+          { label: '外销计划', value: '2' },
+          { label: '预制计划', value: '3' }
         ],
-        second: [
+        newColumns: [],
 
+        selection: []
+      };
+    },
+    computed: {
+      clientEnvironmentId() {
+        return this.$store.state.user.info.clientEnvironmentId;
+      },
+      // 表格列配置
+      columns() {
+        const opt = {
+          first: [],
+          second: [
+            {
+              prop: 'releaseTime',
+              label: '工单发布日期',
+              align: 'center',
+
+              minWidth: 110
+            },
+            {
+              prop: 'planFormingTime',
+              label: '预测生产日期',
+              align: 'center',
+
+              minWidth: 110
+            },
+            {
+              prop: 'deliveryTime',
+              label: '预测交货日期',
+              align: 'center',
+
+              minWidth: 110
+            },
+            {
+              prop: 'formingTime',
+              label: '实际交货日期',
+              align: 'center',
+
+              minWidth: 110
+            }
+          ],
+          change: []
+        };
+
+        return [
           {
-            prop: 'releaseTime',
-            label: '工单发布日期',
+            width: 45,
+            type: 'selection',
+            columnKey: 'selection',
             align: 'center',
-
-            minWidth: 110
+            slot: 'selection'
           },
           {
-            prop: 'planFormingTime',
-            label: '预测生产日期',
+            columnKey: 'index',
+            label: '序号',
+            type: 'index',
+            width: 55,
             align: 'center',
-
-            minWidth: 110
+            showOverflowTooltip: true
           },
+
           {
-            prop: 'deliveryTime',
-            label: '预测交货日期',
+            slot: 'batchNo',
+            prop: 'batchNo',
+            label: '批次号',
             align: 'center',
-
-            minWidth: 110
+            minWidth: 140
           },
+
           {
-            prop: 'formingTime',
-            label: '实际交货日期',
+            slot: 'code',
+            prop: 'code',
+            action: 'code',
+            label: '计划编号',
             align: 'center',
 
-            minWidth: 110
-          }
-        ],
-        change: []
-      };
-
-      return [
-        {
-          width: 45,
-          type: 'selection',
-          columnKey: 'selection',
-          align: 'center',
-          slot: 'selection'
-        },
-
-
-        {
-          slot: 'batchNo',
-          prop: 'batchNo',
-          label: '批次号',
-          align: 'center',
-          minWidth: 140
-        },
-
-        {
-          slot: 'code',
-          prop: 'code',
-          action: 'code',
-          label: '计划编号',
-          align: 'center',
-
-          minWidth: 160,
-          sortable: true
-        },
+            minWidth: 160,
+            sortable: true
+          },
 
-        {
-          prop: 'salesCode',
-          action: 'salesCode',
-          label: '销售订单号',
-          align: 'center',
+          {
+            prop: 'salesCode',
+            action: 'salesCode',
+            label: '销售订单号',
+            align: 'center',
 
-          minWidth: 160
-        },
+            minWidth: 160
+          },
 
-        {
-          prop: 'productCode',
-          label: '产品编码',
-          align: 'center',
+          {
+            prop: 'productCode',
+            label: '产品编码',
+            align: 'center',
 
-          minWidth: 140
-        },
-        {
-          prop: 'productName',
-          label: '产品名称',
-          align: 'center',
+            minWidth: 140
+          },
+          {
+            prop: 'productName',
+            label: '产品名称',
+            align: 'center',
 
-          minWidth: 140
-        },
+            minWidth: 140
+          },
 
-        {
-          prop: 'brandNo',
-          label: '牌号',
-          align: 'center',
-          showOverflowTooltip: true
-        },
+          {
+            prop: 'brandNo',
+            label: '牌号',
+            align: 'center',
+            showOverflowTooltip: true
+          },
 
-        {
-          prop: 'specification',
-          label: '规格',
-          align: 'center',
-          minWidth: 150,
+          {
+            prop: 'specification',
+            label: '规格',
+            align: 'center',
+            minWidth: 150,
 
-          showOverflowTooltip: true
-        },
-        {
-          prop: 'model',
-          label: '型号',
-          align: 'center',
-          showOverflowTooltip: true
-        },
+            showOverflowTooltip: true
+          },
+          {
+            prop: 'model',
+            label: '型号',
+            align: 'center',
+            showOverflowTooltip: true
+          },
 
-        {
-          prop: 'priority',
-          label: '优先级',
-          align: 'center',
-          minWidth: 120,
-          slot: 'priority',
-          sortable: 'custom'
-        },
+          {
+            prop: 'priority',
+            label: '优先级',
+            align: 'center',
+            minWidth: 120,
+            slot: 'priority',
+            sortable: 'custom'
+          },
 
-        {
-          prop: 'produceRoutingName',
-          label: '工艺路线',
-          align: 'center',
-          minWidth: 120
-        },
+          {
+            prop: 'produceRoutingName',
+            label: '工艺路线',
+            align: 'center',
+            minWidth: 120
+          },
 
-        {
-          prop: 'productNum',
-          label: '计划数量',
-          align: 'center',
+          {
+            prop: 'productNum',
+            label: '计划数量',
+            align: 'center',
 
-          slot: 'productNum'
-        },
-        {
-          prop: 'productWeight',
-          label: '计划重量',
-          align: 'center',
+            slot: 'productNum'
+          },
+          {
+            prop: 'productWeight',
+            label: '计划重量',
+            align: 'center',
 
-          slot: 'productWeight'
-        },
-        {
-          prop: 'requiredFormingNum',
-          label: '要求生产数量',
-          align: 'center',
+            slot: 'productWeight'
+          },
+          {
+            prop: 'requiredFormingNum',
+            label: '要求生产数量',
+            align: 'center',
 
-          slot: 'requiredFormingNum'
-        },
+            slot: 'requiredFormingNum'
+          },
 
-        {
-          prop: 'newSumOrderWeight',
-          label: '要求生产重量',
-          align: 'center',
+          {
+            prop: 'newSumOrderWeight',
+            label: '要求生产重量',
+            align: 'center',
 
-          slot: 'newSumOrderWeight'
-        },
+            slot: 'newSumOrderWeight'
+          },
 
-        {
-          prop: 'scheduleStatusName',
-          label: '进度状态',
-          align: 'center',
+          {
+            prop: 'scheduleStatusName',
+            label: '进度状态',
+            align: 'center',
 
-          minWidth: 100
-        },
+            minWidth: 100
+          },
 
-        {
-          prop: '',
-          label: '已排产数量',
-          align: 'center',
-          showOverflowTooltip: true
-        },
+          {
+            prop: '',
+            label: '已排产数量',
+            align: 'center',
+            showOverflowTooltip: true
+          },
 
-        {
-          prop: '',
-          label: '未排产数量',
-          align: 'center',
-          showOverflowTooltip: true
-        },
+          {
+            prop: '',
+            label: '未排产数量',
+            align: 'center',
+            showOverflowTooltip: true
+          },
 
-        {
-          prop: '',
-          label: '已生产数量',
-          align: 'center',
-          showOverflowTooltip: true
-        },
+          {
+            prop: '',
+            label: '已生产数量',
+            align: 'center',
+            showOverflowTooltip: true
+          },
 
-        {
-          prop: '',
-          label: '未生产数量',
-          align: 'center',
-          showOverflowTooltip: true
-        },
+          {
+            prop: '',
+            label: '未生产数量',
+            align: 'center',
+            showOverflowTooltip: true
+          },
 
-        {
-          prop: 'moCount',
-          label: '模数',
-          align: 'center',
-          show: this.clientEnvironmentId == '4'
-        },
+          {
+            prop: 'moCount',
+            label: '模数',
+            align: 'center',
+            show: this.clientEnvironmentId == '4'
+          },
 
-        {
-          prop: 'blockCount',
-          label: '块数',
-          align: 'center',
-          show: this.clientEnvironmentId == '4'
-        },
-        {
-          prop: 'noWordCount',
-          label: '未排程块数',
-          align: 'center',
+          {
+            prop: 'blockCount',
+            label: '块数',
+            align: 'center',
+            show: this.clientEnvironmentId == '4'
+          },
+          {
+            prop: 'noWordCount',
+            label: '未排程块数',
+            align: 'center',
 
-          show: this.clientEnvironmentId == '4',
-          minWidth: 110
-        },
-        {
-          prop: 'reqMoldTime',
-          label: '计划完成日期',
-          align: 'center',
+            show: this.clientEnvironmentId == '4',
+            minWidth: 110
+          },
+          {
+            prop: 'reqMoldTime',
+            label: '计划完成日期',
+            align: 'center',
 
-          minWidth: 110
-        },
+            minWidth: 110
+          },
 
-        ...opt[this.activeName],
+          ...opt[this.activeName],
 
-        {
-          prop: 'orderType',
-          label: '计划类型',
-          align: 'center',
+          {
+            prop: 'orderType',
+            label: '计划类型',
+            align: 'center',
 
-          formatter: (row) => {
-            const obj = this.planType.find((i) => i.value == row.planType);
-            return obj && obj.label;
-          }
-        },
-        {
-          prop: 'version',
-          label: '版本',
-          align: 'center',
+            formatter: (row) => {
+              const obj = this.planType.find((i) => i.value == row.planType);
+              return obj && obj.label;
+            }
+          },
+          {
+            prop: 'version',
+            label: '版本',
+            align: 'center',
 
-          minWidth: 80
-        },
-        {
-          prop: 'createTime',
-          label: '创建时间',
-          align: 'center',
+            minWidth: 80
+          },
+          {
+            prop: 'createTime',
+            label: '创建时间',
+            align: 'center',
 
-          minWidth: 110
-        },
-        {
-          columnKey: 'status',
-          slot: 'status',
-          label: '状态',
-          align: 'center',
-          formatter: (row) => {
-            const obj = this.statusOpt[this.activeName].find(
-              (i) => i.value == row.status
-            );
-            return obj && obj.label;
+            minWidth: 110
+          },
+          {
+            columnKey: 'status',
+            slot: 'status',
+            label: '状态',
+            align: 'center',
+            formatter: (row) => {
+              const obj = this.statusOpt[this.activeName].find(
+                (i) => i.value == row.status
+              );
+              return obj && obj.label;
+            }
           }
-        }
-      ];
-    }
-  },
-  created() {
-    this.getFieldModel();
-  },
-  methods: {
-    statusFormatter(status) {
-      const obj = this.statusOpt[this.activeName].find(
-        (i) => i.value == status
-      );
-
-      return obj && obj.label;
+        ];
+      }
     },
-    /* 表格数据源 */
-    datasource({ page, limit, where }) {
-      return getList({
-        pageNum: page,
-        timeDimensionPlanType: this.timeDimensionPlanType,
-        size: limit,
-        ...where,
-        ...this.sort
-      });
+    created() {
+      this.getFieldModel();
     },
-    // 发布工单
-    handleOrderPublish(type, row) {
-      if (!row.produceRoutingName) {
-        return this.$message.error('请先选择工艺路线!');
-      }
+    methods: {
+      statusFormatter(status) {
+        const obj = this.statusOpt[this.activeName].find(
+          (i) => i.value == status
+        );
 
-      this.$confirm('发布工单后不可撤回,确定发布吗?', '发布确认')
-        .then(async () => {
-          const loading = this.$loading({
-            lock: true,
-            fullscreen: true,
-            text: '工单发布中...'
-          });
-          try {
-            let code = row.workOrderCode;
-            if (!code) {
-              code = await getCode('product_order_code');
-            }
-            // 反显对象会报错 status
-            const data = await release([row.id]);
-            if (data || data === 0) {
-              this.$message.success('发布成功!');
-            } else {
-              this.$message.error('发布失败,请重新发布!');
-            }
-            this.reload();
-          } catch (error) {
-            console.error(error);
-          }
-          loading.close();
-        })
-        .catch((err) => {
-          console.error(err);
+        return obj && obj.label;
+      },
+      /* 表格数据源 */
+      datasource({ page, limit, where }) {
+        return getList({
+          pageNum: page,
+          timeDimensionPlanType: this.timeDimensionPlanType,
+          size: limit,
+          ...where,
+          ...this.sort
         });
-
-      // this.$router.push({
-      //   path: '/productionPlan/workOrderPublish',
-      //   query: {
-      //     type,
-      //     id: row.id
-      //   }
-      // });
-    },
-    // 修改计划
-    planEdit({ id }) {
-      this.$router.push({
-        path: '/saleOrder/salesToProduction',
-        query: {
-          type: 'edit',
-          id
+      },
+      // 发布工单
+      handleOrderPublish(type, row) {
+        if (!row.produceRoutingName) {
+          return this.$message.error('请先选择工艺路线!');
         }
-      });
-    },
 
-    getFieldModel() {
-      fieldModel({ fieldModel: 't_main_category' }).then((res) => {
-        const privateColumn = [];
-        if (this.activeName == 'first') {
-          privateColumn.push({
-            columnKey: 'action',
-            label: '操作',
-            width: 148,
-            align: 'center',
-            resizable: false,
-            fixed: 'right',
-            slot: 'action'
+        this.$confirm('发布工单后不可撤回,确定发布吗?', '发布确认')
+          .then(async () => {
+            const loading = this.$loading({
+              lock: true,
+              fullscreen: true,
+              text: '工单发布中...'
+            });
+            try {
+              let code = row.workOrderCode;
+              if (!code) {
+                code = await getCode('product_order_code');
+              }
+              // 反显对象会报错 status
+              const data = await release([row.id]);
+              if (data || data === 0) {
+                this.$message.success('发布成功!');
+              } else {
+                this.$message.error('发布失败,请重新发布!');
+              }
+              this.reload();
+            } catch (error) {
+              console.error(error);
+            }
+            loading.close();
+          })
+          .catch((err) => {
+            console.error(err);
           });
-        } else {
-          privateColumn = [];
-        }
 
-        let newRes = res.map((m) => {
-          return {
-            prop: 'extField.' + m.prop,
-            label: m.label,
-            align: 'center',
-            showOverflowTooltip: true
-          };
+        // this.$router.push({
+        //   path: '/productionPlan/workOrderPublish',
+        //   query: {
+        //     type,
+        //     id: row.id
+        //   }
+        // });
+      },
+      // 修改计划
+      planEdit({ id }) {
+        this.$router.push({
+          path: '/saleOrder/salesToProduction',
+          query: {
+            type: 'edit',
+            id
+          }
         });
+      },
 
-        this.newColumns = [...this.columns, ...newRes, ...privateColumn];
+      getFieldModel() {
+        fieldModel({ fieldModel: 't_main_category' }).then((res) => {
+          const privateColumn = [];
+          if (this.activeName == 'first') {
+            privateColumn.push({
+              columnKey: 'action',
+              label: '操作',
+              width: 148,
+              align: 'center',
+              resizable: false,
+              fixed: 'right',
+              slot: 'action'
+            });
+          } else {
+            privateColumn = [];
+          }
 
-        this.$forceUpdate();
-      });
-    },
+          let newRes = res.map((m) => {
+            return {
+              prop: 'extField.' + m.prop,
+              label: m.label,
+              align: 'center',
+              showOverflowTooltip: true
+            };
+          });
 
-    handleTabChange() {
-      this.$refs.searchRef.reset();
-    },
+          this.newColumns = [...this.columns, ...newRes, ...privateColumn];
 
-    /* 刷新表格 */
-    reload(where) {
-      this.$nextTick(() => {
-        this.$refs.table.reload({ page: 1, where });
-      });
-    },
+          this.$forceUpdate();
+        });
+      },
 
-    /* 数据转为树形结构 */
-    parseData(data) {
-      return {
-        ...data,
-        list: this.$util.toTreeData({
-          data: data.list,
-          count: data.total,
-
-          idField: 'code',
-          parentIdField: 'joinPlanCode'
-        })
-      };
-    },
-    handleSelectionChange(list) {
-      console.log(list);
+      handleTabChange() {
+        this.$refs.searchRef.reset();
+      },
 
+      /* 刷新表格 */
+      reload(where) {
+        this.$nextTick(() => {
+          this.$refs.table.reload({ page: 1, where });
+        });
+      },
 
-      if (list.length > 1) {
-        this.selection = list;
-      } else {
-        this.selection = [];
-      }
+      /* 数据转为树形结构 */
+      parseData(data) {
+        return {
+          ...data,
+          list: this.$util.toTreeData({
+            data: data.list,
+            count: data.total,
+
+            idField: 'code',
+            parentIdField: 'joinPlanCode'
+          })
+        };
+      },
+      handleSelectionChange(list) {
+        if (list.length > 1) {
+          let _list = [];
+          list.forEach((e) => {
+            if (e.childList.length > 0 && e.splitBatch != 2) {
+              _list.push(...e.childList);
+            } else {
+              _list.push(e);
+            }
+          });
+          this.selection = _list;
+        } else {
+          this.selection = [];
+        }
+      },
 
+      handOneSelection(row) {
+        const index = this.selection.findIndex((item) => item.id == row.id);
+        if (index >= 0) {
+          this.selection.splice(index, 1);
+        } else {
+          this.selection.push(row);
+        }
+      },
 
-    },
+      selectionFilter(row) {
+        return this.selection.findIndex((item) => item.id == row.id) >= 0;
+      },
 
-    handOneSelection(row) {
-      const index = this.selection.findIndex((item) => item.id == row.id);
-      if (index >= 0) {
-        this.selection.splice(index, 1);
-      } else {
-        this.selection.push(row)
-      }
+      goDetail({ id }) {
+        this.$router.push({
+          path: '/productionPlan/detail/' + id
+        });
+      },
 
+      // 拆批
+      toUnpack(row) {
+        if (!row.batchNo) {
+          return this.$message.error('请先填写批次号!');
+        }
+        this.$refs.unpackRef.open(row);
+      },
 
-    },
+      // 合并
+      handleMerge() {
+        if (this.selection.length <= 1) {
+          return this.$message.warning('请先勾选二个或多个计划!');
+        }
+        const productCode = this.selection[0].productCode;
+        const produceRoutingId = this.selection[0].produceRoutingId;
 
-    selectionFilter(row) {
-      return this.selection.findIndex((item) => item.id == row.id) >= 0;
-    },
+        for (var i = 0; i < this.selection.length; i++) {
+          if (productCode != this.selection[i].productCode) {
+            return this.$message.warning('产品编码不一致!');
+          }
 
-    goDetail({ id }) {
-      this.$router.push({
-        path: '/productionPlan/detail/' + id
-      });
-    },
+          if (produceRoutingId != this.selection[i].produceRoutingId) {
+            return this.$message.warning('工艺路线不一致!');
+          }
+        }
 
-    // 拆批
-    toUnpack(row) {
-      if (!row.batchNo) {
-        return this.$message.error('请先填写批次号!');
-      }
-      this.$refs.unpackRef.open(row);
-    },
+        this.$refs.mergeRef.open(this.selection);
 
-    // 合并
-    handleMerge() {
-      if (this.selection.length <= 1) {
-        return this.$message.warning('请先勾选二个或多个计划!');
-      }
-      const productCode = this.selection[0].productCode;
-      const produceRoutingId = this.selection[0].produceRoutingId;
+        console.log(this.selection);
+      },
 
-      for (var i = 0; i < this.selection.length; i++) {
-        if (productCode != this.selection[i].productCode) {
-          return this.$message.warning('产品编码不一致!');
-        }
+      splitDetails(type, row) {
+        this.$refs.DetailsRef.open(type, row);
+      },
 
-        if (produceRoutingId != this.selection[i].produceRoutingId) {
-          return this.$message.warning('工艺路线不一致!');
-        }
-      }
+      onSortChange(e) {
+        let sort = {
+          orderBy: e.order,
+          sortName: e.prop
+        };
+        this.sort = sort;
+        this.reload();
+      },
 
-      this.$refs.mergeRef.open(this.selection);
+      sortTop(row) {
+        row.priority = Number(row.priority) + 1;
+        this.priorityChange(row);
+      },
+      sortBottom(row) {
+        if (row.priority <= 1) {
+          return;
+        }
+        row.priority = Number(row.priority) - 1;
+        this.priorityChange(row);
+      },
 
-      console.log(this.selection);
-    },
+      priorityChange(row) {
+        if (row.priority > 10) {
+          row.priority = 10; // 如果大于 10,则设置为 10
+        } else if (row.priority < 0) {
+          row.priority = 0; // 如果小于 0,则设置为 0
+        }
 
-    splitDetails(type, row) {
-      this.$refs.DetailsRef.open(type, row);
-    },
+        this.priorityFn(row);
+      },
+      priorityFn: debounce(function (row) {
+        let params = {
+          id: row.id,
+          priority: row.priority
+        };
+        updatePriority(params).then((res) => {});
+      }, 800)
+    }
+  };
+</script>
 
-    onSortChange(e) {
-      let sort = {
-        orderBy: e.order,
-        sortName: e.prop
-      };
-      this.sort = sort;
-      this.reload();
-    },
+<style lang="scss" scoped>
+  .btn_box {
+    margin-bottom: 6px;
+  }
 
-    sortTop(row) {
-      row.priority = Number(row.priority) + 1;
-      this.priorityChange(row);
-    },
-    sortBottom(row) {
-      if (row.priority <= 1) {
-        return;
-      }
-      row.priority = Number(row.priority) - 1;
-      this.priorityChange(row);
-    },
+  .check_box {
+    width: 100%;
+    display: flex;
+    align-items: center;
+    justify-content: center;
+    cursor: pointer;
+  }
 
-    priorityChange(row) {
-      if (row.priority > 10) {
-        row.priority = 10; // 如果大于 10,则设置为 10
-      } else if (row.priority < 0) {
-        row.priority = 0; // 如果小于 0,则设置为 0
-      }
+  .check {
+    width: 14px;
+    height: 14px;
+    border: 1px solid #dddddd;
 
-      this.priorityFn(row);
-    },
-    priorityFn: debounce(function (row) {
-      let params = {
-        id: row.id,
-        priority: row.priority
-      };
-      updatePriority(params).then((res) => { });
-    }, 800)
+    display: flex;
+    align-items: center;
+    justify-content: center;
   }
-};
-</script>
 
-<style lang="scss" scoped>
-.btn_box {
-  margin-bottom: 6px;
-}
-
-.check_box {
-  width: 100%;
-  display: flex;
-  align-items: center;
-  justify-content: center;
-  cursor: pointer;
-}
-
-.check {
-  width: 14px;
-  height: 14px;
-  border: 1px solid #dddddd;
-
-  display: flex;
-  align-items: center;
-  justify-content: center;
-}
-
-.act_check {
-  border: 1px solid #409eff;
-  background: #409eff;
-
-  .el-icon-check {
-    color: #fff;
-    font-size: 10px;
+  .act_check {
+    border: 1px solid #409eff;
+    background: #409eff;
+
+    .el-icon-check {
+      color: #fff;
+      font-size: 10px;
+    }
   }
-}
 </style>