Parcourir la source

Merge branch 'dev' of http://110.41.163.243:9980/kd-aiot/kd-aiot-frontend-aps into dev

ysy il y a 1 an
Parent
commit
8bdde11b36

+ 22 - 0
src/api/productionPlan/index.js

@@ -132,3 +132,25 @@ export async function batchSave(data) {
   }
   return Promise.reject(new Error(res.data.message));
 }
+// 齐套性检查
+export async function homogeneityInspect(data) {
+  const res = await request.post(`/aps/productionplan/homogeneityInspect`,  data);
+  if (res.data.code == 0) {
+    return res.data.data;
+  }
+  return Promise.reject(new Error(res.data.message));
+}
+export async function getStockList (params) {
+  const res = await request.get('/wms/outindetailtwo/page', {params});
+  if (res.data.code == 0) {
+    return res.data.data;
+  }
+  return Promise.reject(new Error(res.data.message));
+}
+export async function getCurrentList (data) {
+  const res = await request.post('/eom/purchaseorder/getZtDetail', data);
+  if (res.data.code == 0) {
+    return res.data.data;
+  }
+  return Promise.reject(new Error(res.data.message));
+}

+ 284 - 0
src/views/productionPlan/components/currentDetailDialog.vue

@@ -0,0 +1,284 @@
+<template>
+  <ele-modal
+    width="80vw"
+    :visible.sync="visible"
+    :close-on-click-modal="false"
+    row-key="code"
+    custom-class="ele-dialog-form"
+    :title="'齐套性检查'"
+  >
+    <div class="form-wrapper">
+<!--      <el-form :model="requestData" label-width="0" :show-message="false">-->
+<!--        <el-descriptions title="" :column="2" border>-->
+<!--          <el-descriptions-item label="计划编号">-->
+<!--            {{ formData.code }}</el-descriptions-item-->
+<!--          >-->
+
+<!--          <el-descriptions-item label="产品编码">{{-->
+<!--            formData.productCode-->
+<!--            }}</el-descriptions-item>-->
+
+<!--          <el-descriptions-item label="产品名称">{{-->
+<!--            formData.productName-->
+<!--            }}</el-descriptions-item>-->
+
+<!--          <el-descriptions-item label="牌号|型号">-->
+<!--            {{ formData.brandNo }}|{{ formData.model }}</el-descriptions-item-->
+<!--          >-->
+
+<!--          <el-descriptions-item label="批次号">{{-->
+<!--            formData.batchNo-->
+<!--            }}</el-descriptions-item>-->
+
+<!--          <el-descriptions-item label="工艺路线">{{-->
+<!--            formData.produceRoutingName-->
+<!--            }}</el-descriptions-item>-->
+
+<!--          <el-descriptions-item label="要求生产数量">{{-->
+<!--            formData.requiredFormingNum-->
+<!--            }}</el-descriptions-item>-->
+<!--          <el-descriptions-item label="要求完成日期">{{-->
+<!--            formData.reqMoldTime-->
+<!--            }}</el-descriptions-item>-->
+<!--        </el-descriptions>-->
+<!--      </el-form>-->
+
+<!--      <headerTitle title="剩余拆批" class="mt20"> </headerTitle>-->
+      <el-form ref="form" :model="form" :rules="rules">
+<!--        <ele-pro-table-->
+<!--          ref="table"-->
+<!--          :needPage="false"-->
+<!--          :columns="columns"-->
+<!--          :datasource="form.surplusUnpack"-->
+<!--        >-->
+<!--          <template v-slot:toolbar>-->
+<!--            <el-button-->
+<!--              size="small"-->
+<!--              type="primary"-->
+<!--              icon="el-icon-plus"-->
+<!--              class="ele-btn-icon"-->
+<!--              :disabled="requiredFormingNum == 0 ? true : false"-->
+<!--              @click="openUnpack"-->
+<!--            >-->
+<!--              拆批-->
+<!--            </el-button>-->
+<!--          </template>-->
+
+<!--          <template v-slot:requiredFormingNum="scope">-->
+<!--            <el-form-item-->
+<!--              v-if="requiredFormingNum != 0"-->
+<!--              :prop="'surplusUnpack.' + scope.$index + '.requiredFormingNum'"-->
+<!--              :rules="[-->
+<!--                {-->
+<!--                  required: true,-->
+<!--                  message: '请输入要求生产数量',-->
+<!--                  trigger: 'change'-->
+<!--                },-->
+<!--                {-->
+<!--                  pattern: /^\d+(\.{0,1}\d+){0,1}$/,-->
+<!--                  message: '拆批数超过生产数量',-->
+<!--                  trigger: ['blur', 'change']-->
+<!--                }-->
+<!--              ]"-->
+<!--            >-->
+<!--              <el-input-->
+<!--                disabled-->
+<!--                v-model="requiredFormingNum"-->
+<!--                placeholder="请输入"-->
+<!--              ></el-input>-->
+<!--            </el-form-item>-->
+
+<!--            <el-form-item v-else> 工单已全部拆完 </el-form-item>-->
+<!--          </template>-->
+
+<!--          <template v-slot:splitResidue="scope">-->
+<!--            {{ formData.splitResidue }}-->
+<!--          </template>-->
+
+<!--        </ele-pro-table>-->
+
+<!--        <headerTitle title="拆批" class="mt20"> </headerTitle>-->
+
+        <ele-pro-table
+          ref="table"
+          :needPage="true"
+          :columns="columns"
+          :datasource="datasource"
+          :init-load="false"
+        >
+<!--          <template v-slot:requiredFormingNum="scope">-->
+<!--            <el-form-item-->
+<!--              :prop="'unpackList.' + scope.$index + '.requiredFormingNum'"-->
+<!--              :rules="{-->
+<!--                required: true,-->
+<!--                message: '请输入要求生产数量',-->
+<!--                trigger: 'change'-->
+<!--              }"-->
+<!--            >-->
+<!--              <el-input-number-->
+<!--                type="number"-->
+<!--                @change="changeNum(scope.$index)"-->
+<!--                :min="0"-->
+<!--                v-model="scope.row.requiredFormingNum"-->
+<!--                placeholder="请输入"-->
+<!--              ></el-input-number>-->
+<!--            </el-form-item>-->
+<!--          </template>-->
+
+<!--          <template v-slot:reqMoldTime="scope">-->
+<!--            <el-form-item-->
+<!--              :prop="'unpackList.' + scope.$index + '.reqMoldTime'"-->
+<!--              :rules="{-->
+<!--                required: true,-->
+<!--                message: '请选择开始计划时间',-->
+<!--                trigger: 'change'-->
+<!--              }"-->
+<!--            >-->
+<!--              <el-date-picker-->
+<!--                class="w100"-->
+<!--                v-model="scope.row.reqMoldTime"-->
+<!--                type="date"-->
+<!--                value-format="yyyy-MM-dd"-->
+<!--              ></el-date-picker>-->
+<!--            </el-form-item>-->
+<!--          </template>-->
+
+          <template v-slot:action="{ $index }">
+<!--            <el-popconfirm-->
+<!--              class="ele-action"-->
+<!--              title="确定要删除此子单吗?"-->
+<!--              @confirm="remove($index)"-->
+<!--            >-->
+<!--              <template v-slot:reference>-->
+<!--                <el-link type="danger" :underline="false" icon="el-icon-delete">-->
+<!--                  删除-->
+<!--                </el-link>-->
+<!--              </template>-->
+<!--            </el-popconfirm>-->
+            <el-link type="primary" :underline="false" icon="el-icon-view">
+              库存
+            </el-link>
+            <el-link type="primary" :underline="false" icon="el-icon-view">
+              在途
+            </el-link>
+          </template>
+        </ele-pro-table>
+      </el-form>
+    </div>
+    <div slot="footer">
+      <el-button plain @click="cancel">取消</el-button>
+      <el-button type="primary" @click="confirm">确定</el-button>
+    </div>
+  </ele-modal>
+</template>
+
+<script>
+  import { getCurrentList } from '@/api/productionPlan/index.js';
+  export default {
+    components: {},
+    data() {
+      return {
+        visible: false,
+
+        formData: {},
+        requestData: {
+          deviceCode: '',
+          deviceName: '',
+          deviceId: ''
+        },
+        requiredFormingNum: 0,
+
+        form: {
+          currentList: []
+        },
+
+        rules: {},
+
+        columns: [
+          {
+            prop: 'orderNo',
+            label: '订单号',
+            align: 'center',
+            minWidth: 100,
+            showOverflowTooltip: true
+          },
+          {
+            prop: 'productCode',
+            label: '产品编码',
+            align: 'center',
+            minWidth: 100
+          },
+          {
+            prop: 'productName',
+            label: '产品名称',
+            align: 'center',
+            minWidth: 100,
+            showOverflowTooltip: true
+          },
+          {
+            prop: 'totalCount',
+            label: '采购数量',
+            align: 'center',
+            minWidth: 100
+          },
+          {
+            prop: 'receiveNo',
+            label: '发货单号',
+            align: 'center',
+            minWidth: 80
+          },
+          {
+            prop: 'ztNumber',
+            label: '在途数量',
+            align: 'center',
+            minWidth: 80
+          },
+          {
+            prop: 'deliveryDeadline',
+            label: '预计交期时间',
+            align: 'center',
+            minWidth: 80
+          },
+        ],
+
+      };
+    },
+    methods: {
+      reload(where) {
+        this.$nextTick(() => {
+          this.$refs.table.reload({ page: 1, where });
+        });
+      },
+      /* 表格数据源 */
+      datasource({ page, limit, where }) {
+        return getCurrentList({
+          pageNum: page,
+          size: limit,
+          ...where,
+        });
+      },
+       async open(row) {
+         this.visible = true;
+         this.reload({code: row.bomCode});
+      },
+      cancel() {
+        this.formData = {};
+        this.visible = false;
+      },
+
+      confirm() {
+        this.visible = false;
+      }
+    }
+  };
+</script>
+
+<style lang="scss" scoped>
+  .mt20 {
+    margin-top: 20px;
+  }
+
+  .el-form-item {
+    margin-bottom: 0 !important;
+  }
+</style>

+ 303 - 0
src/views/productionPlan/components/homogeneityInspectDialog.vue

@@ -0,0 +1,303 @@
+<template>
+  <div>
+  <ele-modal
+    width="80vw"
+    :visible.sync="visible"
+    :close-on-click-modal="false"
+    row-key="code"
+    custom-class="ele-dialog-form"
+    :title="'齐套性检查'"
+  >
+    <div class="form-wrapper">
+<!--      <el-form :model="requestData" label-width="0" :show-message="false">-->
+<!--        <el-descriptions title="" :column="2" border>-->
+<!--          <el-descriptions-item label="计划编号">-->
+<!--            {{ formData.code }}</el-descriptions-item-->
+<!--          >-->
+
+<!--          <el-descriptions-item label="产品编码">{{-->
+<!--            formData.productCode-->
+<!--            }}</el-descriptions-item>-->
+
+<!--          <el-descriptions-item label="产品名称">{{-->
+<!--            formData.productName-->
+<!--            }}</el-descriptions-item>-->
+
+<!--          <el-descriptions-item label="牌号|型号">-->
+<!--            {{ formData.brandNo }}|{{ formData.model }}</el-descriptions-item-->
+<!--          >-->
+
+<!--          <el-descriptions-item label="批次号">{{-->
+<!--            formData.batchNo-->
+<!--            }}</el-descriptions-item>-->
+
+<!--          <el-descriptions-item label="工艺路线">{{-->
+<!--            formData.produceRoutingName-->
+<!--            }}</el-descriptions-item>-->
+
+<!--          <el-descriptions-item label="要求生产数量">{{-->
+<!--            formData.requiredFormingNum-->
+<!--            }}</el-descriptions-item>-->
+<!--          <el-descriptions-item label="要求完成日期">{{-->
+<!--            formData.reqMoldTime-->
+<!--            }}</el-descriptions-item>-->
+<!--        </el-descriptions>-->
+<!--      </el-form>-->
+
+<!--      <headerTitle title="剩余拆批" class="mt20"> </headerTitle>-->
+      <el-form ref="form" :model="form" :rules="rules">
+<!--        <ele-pro-table-->
+<!--          ref="table"-->
+<!--          :needPage="false"-->
+<!--          :columns="columns"-->
+<!--          :datasource="form.surplusUnpack"-->
+<!--        >-->
+<!--          <template v-slot:toolbar>-->
+<!--            <el-button-->
+<!--              size="small"-->
+<!--              type="primary"-->
+<!--              icon="el-icon-plus"-->
+<!--              class="ele-btn-icon"-->
+<!--              :disabled="requiredFormingNum == 0 ? true : false"-->
+<!--              @click="openUnpack"-->
+<!--            >-->
+<!--              拆批-->
+<!--            </el-button>-->
+<!--          </template>-->
+
+<!--          <template v-slot:requiredFormingNum="scope">-->
+<!--            <el-form-item-->
+<!--              v-if="requiredFormingNum != 0"-->
+<!--              :prop="'surplusUnpack.' + scope.$index + '.requiredFormingNum'"-->
+<!--              :rules="[-->
+<!--                {-->
+<!--                  required: true,-->
+<!--                  message: '请输入要求生产数量',-->
+<!--                  trigger: 'change'-->
+<!--                },-->
+<!--                {-->
+<!--                  pattern: /^\d+(\.{0,1}\d+){0,1}$/,-->
+<!--                  message: '拆批数超过生产数量',-->
+<!--                  trigger: ['blur', 'change']-->
+<!--                }-->
+<!--              ]"-->
+<!--            >-->
+<!--              <el-input-->
+<!--                disabled-->
+<!--                v-model="requiredFormingNum"-->
+<!--                placeholder="请输入"-->
+<!--              ></el-input>-->
+<!--            </el-form-item>-->
+
+<!--            <el-form-item v-else> 工单已全部拆完 </el-form-item>-->
+<!--          </template>-->
+
+<!--          <template v-slot:splitResidue="scope">-->
+<!--            {{ formData.splitResidue }}-->
+<!--          </template>-->
+
+<!--        </ele-pro-table>-->
+
+<!--        <headerTitle title="拆批" class="mt20"> </headerTitle>-->
+
+        <ele-pro-table
+          ref="table"
+          :needPage="false"
+          :columns="columns"
+          :datasource="form.homogeneityInspect"
+        >
+          <template v-slot:stockCount="{ row }">
+            <el-link type="primary" :underline="false" @click="stockDetail(row)">
+              {{ row.stockCount }}
+            </el-link>
+          </template>
+          <template v-slot:currentCount="{ row }">
+            <el-link type="primary" :underline="false" @click="currentDetail(row)">
+              {{ row.currentCount }}
+            </el-link>
+          </template>
+<!--          <template v-slot:requiredFormingNum="scope">-->
+<!--            <el-form-item-->
+<!--              :prop="'unpackList.' + scope.$index + '.requiredFormingNum'"-->
+<!--              :rules="{-->
+<!--                required: true,-->
+<!--                message: '请输入要求生产数量',-->
+<!--                trigger: 'change'-->
+<!--              }"-->
+<!--            >-->
+<!--              <el-input-number-->
+<!--                type="number"-->
+<!--                @change="changeNum(scope.$index)"-->
+<!--                :min="0"-->
+<!--                v-model="scope.row.requiredFormingNum"-->
+<!--                placeholder="请输入"-->
+<!--              ></el-input-number>-->
+<!--            </el-form-item>-->
+<!--          </template>-->
+
+<!--          <template v-slot:reqMoldTime="scope">-->
+<!--            <el-form-item-->
+<!--              :prop="'unpackList.' + scope.$index + '.reqMoldTime'"-->
+<!--              :rules="{-->
+<!--                required: true,-->
+<!--                message: '请选择开始计划时间',-->
+<!--                trigger: 'change'-->
+<!--              }"-->
+<!--            >-->
+<!--              <el-date-picker-->
+<!--                class="w100"-->
+<!--                v-model="scope.row.reqMoldTime"-->
+<!--                type="date"-->
+<!--                value-format="yyyy-MM-dd"-->
+<!--              ></el-date-picker>-->
+<!--            </el-form-item>-->
+<!--          </template>-->
+        </ele-pro-table>
+      </el-form>
+    </div>
+    <div slot="footer">
+      <el-button plain @click="cancel">取消</el-button>
+      <el-button type="primary" @click="confirm">确定</el-button>
+    </div>
+  </ele-modal>
+
+  <stockDetailDialog ref="stockDetailDialog" />
+
+  <currentDetailDialog ref="currentDetailDialog" />
+  </div>
+</template>
+
+<script>
+  import { homogeneityInspect } from '@/api/productionPlan/index.js';
+  import stockDetailDialog from './stockDetailDialog.vue';
+  import currentDetailDialog from './currentDetailDialog.vue';
+  export default {
+    components: {
+      stockDetailDialog,
+      currentDetailDialog
+    },
+    data() {
+      return {
+        visible: false,
+
+        formData: {},
+        requestData: {
+          deviceCode: '',
+          deviceName: '',
+          deviceId: ''
+        },
+        requiredFormingNum: 0,
+
+        form: {
+          homogeneityInspect: []
+        },
+
+        rules: {},
+
+        columns: [
+          {
+            prop: 'opCode',
+            label: '工序编码',
+            align: 'center',
+            minWidth: 100,
+            showOverflowTooltip: true
+          },
+          {
+            prop: 'opName',
+            label: '工序名称',
+            align: 'center',
+            minWidth: 100
+          },
+          {
+            prop: 'bomCode',
+            label: '物料编码',
+            align: 'center',
+            minWidth: 100,
+            showOverflowTooltip: true
+          },
+          {
+            prop: 'bomName',
+            label: '物料名称',
+            align: 'center',
+            minWidth: 100
+          },
+          {
+            prop: 'count',
+            label: '定额数量',
+            align: 'center',
+            minWidth: 80
+          },
+          {
+            slot: 'stockCount',
+            prop: 'stockCount',
+            label: '库存数量',
+            align: 'center',
+            minWidth: 80
+          },
+          {
+            prop: 'stockStatus',
+            label: '库存状态',
+            align: 'center',
+            minWidth: 80
+          },
+          {
+            slot: 'currentCount',
+            prop: 'currentCount',
+            label: '在途数量',
+            align: 'center',
+            minWidth: 80
+          },
+          {
+            prop: 'currentStatus',
+            label: '在途状态',
+            align: 'center',
+            minWidth: 80
+          },
+          {
+            prop: 'finishStatus',
+            label: '最终状态',
+            align: 'center',
+            minWidth: 80
+          },
+        ],
+
+      };
+    },
+    methods: {
+       stockDetail(row) {
+         this.$refs.stockDetailDialog.open(row);
+       },
+       currentDetail(row) {
+         this.$refs.currentDetailDialog.open(row);
+       },
+       async open(ids) {
+         try{
+           this.visible = true;
+           this.form.homogeneityInspect = await homogeneityInspect(ids);
+         } catch(err) {
+
+         } finally {
+
+         }
+      },
+      cancel() {
+        this.formData = {};
+        this.visible = false;
+      },
+
+      confirm() {
+        this.visible = false;
+      }
+    }
+  };
+</script>
+
+<style lang="scss" scoped>
+  .mt20 {
+    margin-top: 20px;
+  }
+
+  .el-form-item {
+    margin-bottom: 0 !important;
+  }
+</style>

+ 319 - 0
src/views/productionPlan/components/stockDetailDialog.vue

@@ -0,0 +1,319 @@
+<template>
+  <ele-modal
+    width="80vw"
+    :visible.sync="visible"
+    :close-on-click-modal="false"
+    row-key="code"
+    custom-class="ele-dialog-form"
+    :title="'库存详情'"
+  >
+    <div class="form-wrapper">
+<!--      <el-form :model="requestData" label-width="0" :show-message="false">-->
+<!--        <el-descriptions title="" :column="2" border>-->
+<!--          <el-descriptions-item label="计划编号">-->
+<!--            {{ formData.code }}</el-descriptions-item-->
+<!--          >-->
+
+<!--          <el-descriptions-item label="产品编码">{{-->
+<!--            formData.productCode-->
+<!--            }}</el-descriptions-item>-->
+
+<!--          <el-descriptions-item label="产品名称">{{-->
+<!--            formData.productName-->
+<!--            }}</el-descriptions-item>-->
+
+<!--          <el-descriptions-item label="牌号|型号">-->
+<!--            {{ formData.brandNo }}|{{ formData.model }}</el-descriptions-item-->
+<!--          >-->
+
+<!--          <el-descriptions-item label="批次号">{{-->
+<!--            formData.batchNo-->
+<!--            }}</el-descriptions-item>-->
+
+<!--          <el-descriptions-item label="工艺路线">{{-->
+<!--            formData.produceRoutingName-->
+<!--            }}</el-descriptions-item>-->
+
+<!--          <el-descriptions-item label="要求生产数量">{{-->
+<!--            formData.requiredFormingNum-->
+<!--            }}</el-descriptions-item>-->
+<!--          <el-descriptions-item label="要求完成日期">{{-->
+<!--            formData.reqMoldTime-->
+<!--            }}</el-descriptions-item>-->
+<!--        </el-descriptions>-->
+<!--      </el-form>-->
+
+<!--      <headerTitle title="剩余拆批" class="mt20"> </headerTitle>-->
+      <el-form ref="form" :model="form" :rules="rules">
+<!--        <ele-pro-table-->
+<!--          ref="table"-->
+<!--          :needPage="false"-->
+<!--          :columns="columns"-->
+<!--          :datasource="form.surplusUnpack"-->
+<!--        >-->
+<!--          <template v-slot:toolbar>-->
+<!--            <el-button-->
+<!--              size="small"-->
+<!--              type="primary"-->
+<!--              icon="el-icon-plus"-->
+<!--              class="ele-btn-icon"-->
+<!--              :disabled="requiredFormingNum == 0 ? true : false"-->
+<!--              @click="openUnpack"-->
+<!--            >-->
+<!--              拆批-->
+<!--            </el-button>-->
+<!--          </template>-->
+
+<!--          <template v-slot:requiredFormingNum="scope">-->
+<!--            <el-form-item-->
+<!--              v-if="requiredFormingNum != 0"-->
+<!--              :prop="'surplusUnpack.' + scope.$index + '.requiredFormingNum'"-->
+<!--              :rules="[-->
+<!--                {-->
+<!--                  required: true,-->
+<!--                  message: '请输入要求生产数量',-->
+<!--                  trigger: 'change'-->
+<!--                },-->
+<!--                {-->
+<!--                  pattern: /^\d+(\.{0,1}\d+){0,1}$/,-->
+<!--                  message: '拆批数超过生产数量',-->
+<!--                  trigger: ['blur', 'change']-->
+<!--                }-->
+<!--              ]"-->
+<!--            >-->
+<!--              <el-input-->
+<!--                disabled-->
+<!--                v-model="requiredFormingNum"-->
+<!--                placeholder="请输入"-->
+<!--              ></el-input>-->
+<!--            </el-form-item>-->
+
+<!--            <el-form-item v-else> 工单已全部拆完 </el-form-item>-->
+<!--          </template>-->
+
+<!--          <template v-slot:splitResidue="scope">-->
+<!--            {{ formData.splitResidue }}-->
+<!--          </template>-->
+
+<!--        </ele-pro-table>-->
+
+<!--        <headerTitle title="拆批" class="mt20"> </headerTitle>-->
+
+        <ele-pro-table
+          ref="table"
+          :needPage="true"
+          :columns="columns"
+          :datasource="datasource"
+          :init-load="false"
+        >
+<!--          <template v-slot:requiredFormingNum="scope">-->
+<!--            <el-form-item-->
+<!--              :prop="'unpackList.' + scope.$index + '.requiredFormingNum'"-->
+<!--              :rules="{-->
+<!--                required: true,-->
+<!--                message: '请输入要求生产数量',-->
+<!--                trigger: 'change'-->
+<!--              }"-->
+<!--            >-->
+<!--              <el-input-number-->
+<!--                type="number"-->
+<!--                @change="changeNum(scope.$index)"-->
+<!--                :min="0"-->
+<!--                v-model="scope.row.requiredFormingNum"-->
+<!--                placeholder="请输入"-->
+<!--              ></el-input-number>-->
+<!--            </el-form-item>-->
+<!--          </template>-->
+
+<!--          <template v-slot:reqMoldTime="scope">-->
+<!--            <el-form-item-->
+<!--              :prop="'unpackList.' + scope.$index + '.reqMoldTime'"-->
+<!--              :rules="{-->
+<!--                required: true,-->
+<!--                message: '请选择开始计划时间',-->
+<!--                trigger: 'change'-->
+<!--              }"-->
+<!--            >-->
+<!--              <el-date-picker-->
+<!--                class="w100"-->
+<!--                v-model="scope.row.reqMoldTime"-->
+<!--                type="date"-->
+<!--                value-format="yyyy-MM-dd"-->
+<!--              ></el-date-picker>-->
+<!--            </el-form-item>-->
+<!--          </template>-->
+
+          <template v-slot:action="{ $index }">
+<!--            <el-popconfirm-->
+<!--              class="ele-action"-->
+<!--              title="确定要删除此子单吗?"-->
+<!--              @confirm="remove($index)"-->
+<!--            >-->
+<!--              <template v-slot:reference>-->
+<!--                <el-link type="danger" :underline="false" icon="el-icon-delete">-->
+<!--                  删除-->
+<!--                </el-link>-->
+<!--              </template>-->
+<!--            </el-popconfirm>-->
+            <el-link type="primary" :underline="false" icon="el-icon-view">
+              库存
+            </el-link>
+            <el-link type="primary" :underline="false" icon="el-icon-view">
+              在途
+            </el-link>
+          </template>
+        </ele-pro-table>
+      </el-form>
+    </div>
+    <div slot="footer">
+      <el-button plain @click="cancel">取消</el-button>
+      <el-button type="primary" @click="confirm">确定</el-button>
+    </div>
+  </ele-modal>
+</template>
+
+<script>
+  import { getStockList } from '@/api/productionPlan/index.js';
+  export default {
+    components: {},
+    data() {
+      return {
+        visible: false,
+
+        formData: {},
+        requestData: {
+          deviceCode: '',
+          deviceName: '',
+          deviceId: ''
+        },
+        requiredFormingNum: 0,
+
+        form: {
+          stockList: []
+        },
+
+        rules: {},
+
+        columns: [
+          {
+            prop: 'categoryCode',
+            label: '物品编码',
+            align: 'center',
+            minWidth: 100,
+            showOverflowTooltip: true
+          },
+          {
+            prop: 'categoryName',
+            label: '物品名称',
+            align: 'center',
+            minWidth: 100
+          },
+          {
+            prop: 'modelType',
+            label: '型号',
+            align: 'center',
+            minWidth: 100,
+            showOverflowTooltip: true
+          },
+          {
+            prop: 'specification',
+            label: '规格',
+            align: 'center',
+            minWidth: 100
+          },
+          {
+            prop: 'level',
+            label: '级别',
+            align: 'center',
+            minWidth: 100
+          },
+          {
+            prop: 'measureQuantity',
+            label: '计划数量',
+            align: 'center',
+            minWidth: 100
+          },
+
+        ],
+        activeName: 'first',
+        selection: [],
+        request: {
+          categoryCode: '',
+        }
+      };
+    },
+    methods: {
+      reload(where) {
+        this.$nextTick(() => {
+          this.$refs.table.reload({ page: 1, where });
+        });
+      },
+      /* 表格数据源 */
+      datasource({ page, limit, where }) {
+        return getStockList({
+          pageNum: page,
+          size: limit,
+          ...where,
+        });
+      },
+      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 = [];
+        }
+      },
+      /* 数据转为树形结构 */
+      parseData(data) {
+        return {
+          ...data,
+          list: this.$util.toTreeData({
+            data: data.list,
+            count: data.total,
+
+            idField: 'code',
+            parentIdField: 'joinPlanCode'
+          })
+        };
+      },
+      onSortChange(e) {
+        let sort = {
+          orderBy: e.order,
+          sortName: e.prop
+        };
+        this.sort = sort;
+        this.reload();
+      },
+      async open(row) {
+          this.visible = true;
+          this.reload({categoryCode: row.bomCode});
+      },
+      cancel() {
+        this.formData = {};
+        this.visible = false;
+      },
+
+      confirm() {
+        this.visible = false;
+      },
+    }
+  };
+</script>
+
+<style lang="scss" scoped>
+  .mt20 {
+    margin-top: 20px;
+  }
+
+  .el-form-item {
+    margin-bottom: 0 !important;
+  }
+</style>

+ 22 - 3
src/views/productionPlan/index.vue

@@ -10,7 +10,7 @@
       >
       </productionPlan-search>
       <div class="btn_box">
-        <el-button type="success" size="mini">齐套性检查</el-button>
+        <el-button type="success" size="mini" @click="homogeneityInspect">齐套性检查</el-button>
         <el-button type="primary" size="mini" @click="disassemblePlan"
           >计划分解</el-button
         >
@@ -203,6 +203,8 @@
 
     <unpackDetails ref="DetailsRef"></unpackDetails>
 
+    <homogeneityInspectDialog ref="homogeneityInspectDialog" @success="reload" />
+
     <disassemblePlanPop
       ref="disassemblePlanRef"
       @close="reload"
@@ -222,6 +224,7 @@
   import productionPlanSearch from './components/productionPlan-search.vue';
   import unpackDialog from './components/unpackDialog.vue';
   import mergeDialog from './components/mergeDialog.vue';
+  import homogeneityInspectDialog from './components/homogeneityInspectDialog.vue';
   import unpackDetails from './components/unpackDetails.vue';
   import disassemblePlanPop from './components/disassemblePlanPop.vue';
   import factoryAdd from './components/factoryAdd/index.vue';
@@ -236,7 +239,8 @@
       mergeDialog,
       unpackDetails,
       disassemblePlanPop,
-      factoryAdd
+      factoryAdd,
+      homogeneityInspectDialog
     },
     props: {
       timeDimensionPlanType: { type: Number, default: 1 }
@@ -555,7 +559,7 @@
             showOverflowTooltip: true
           },
 
-          
+
 
           {
             prop: 'orderType',
@@ -600,6 +604,21 @@
       this.getFieldModel();
     },
     methods: {
+      homogeneityInspect(){
+        if(this.selection.length > 0){
+          let ids = [];
+          this.selection.map(ele => {
+            if(ele.id){
+              ids.push(ele.id);
+            }
+
+          })
+          console.log(ids);
+          this.$refs.homogeneityInspectDialog.open(ids);
+        } else {
+          this.$message.warning('请至少选择一条计划!');
+        }
+      },
       statusFormatter(status) {
         const obj = this.statusOpt[this.activeName].find(
           (i) => i.value == status