695593266@qq.com 8 mēneši atpakaļ
vecāks
revīzija
676f6cbc68

+ 238 - 0
src/components/common/seekPage.vue

@@ -0,0 +1,238 @@
+<template>
+  <div class="index_box">
+    <el-form label-width="90px" :inline="true">
+      <el-form-item
+        v-for="(item, i) in seekListRow"
+        :key="i"
+        :label="item.label"
+        :label-width="(item.labelWidth || 90) + 'px'"
+      >
+        <component
+          :is="getFieldComponent(item)"
+          v-model="defaultWhere[item.value]"
+          v-bind="getFieldProps(item)"
+          @keydown.enter.native.stop="search"
+        >
+          <el-option
+            v-for="(op, j) in item.planList || []"
+            :key="j"
+            :label="op.label"
+            :value="op.value"
+          />
+        </component>
+      </el-form-item>
+
+      <el-form-item v-if="deboListRow.length" class="more_option">
+        <el-dropdown
+          ref="dropdownRef"
+          trigger="click"
+          :hide-on-click="false"
+          v-model="dropdownVisible"
+        >
+          <div class="el-dropdown-link">
+            更多选项 <i class="el-icon-arrow-down el-icon--right"></i>
+          </div>
+
+          <el-dropdown-menu slot="dropdown">
+            <div class="padding">
+              <el-form label-position="left">
+                <el-form-item
+                  v-for="(item, i) in deboListRow"
+                  :key="i"
+                  :label="item.label"
+                  :label-width="(item.labelWidth || 90) + 'px'"
+                >
+                  <component
+                    :is="getFieldComponent(item)"
+                    v-model="defaultWhere[item.value]"
+                    v-bind="getFieldProps(item)"
+                    @change="handleChange"
+                    @keydown.enter.native.stop="search"
+                  >
+                    <el-option
+                      v-for="(op, j) in item.planList || []"
+                      :key="j"
+                      :label="op.label"
+                      :value="op.value"
+                    />
+                  </component>
+                </el-form-item>
+              </el-form>
+            </div>
+          </el-dropdown-menu>
+        </el-dropdown>
+      </el-form-item>
+
+      <el-form-item>
+        <el-button type="primary" icon="el-icon-search" @click="search">
+          查询
+        </el-button>
+        <el-button icon="el-icon-refresh-left" type="primary" @click="reset">
+          重置
+        </el-button>
+      </el-form-item>
+    </el-form>
+  </div>
+</template>
+
+<script>
+  export default {
+    props: {
+      maxLength: { type: Number, default: 3 },
+      seekList: { type: Array, default: () => [] },
+      keyValue: { type: String, default: '' }
+    },
+
+    data() {
+      return {
+        defaultWhere: {},
+        dropdownVisible: false,
+        seekListRow: [],
+        deboListRow: []
+      };
+    },
+
+    watch: {
+      seekList: {
+        immediate: true,
+        deep: true,
+        handler(val) {
+          if (!Array.isArray(val)) return;
+          this.seekListRow = val.slice(0, this.maxLength);
+          this.deboListRow = val.slice(this.maxLength);
+        }
+      },
+      defaultWhere: {
+        deep: true,
+        handler(val) {
+          if (!this.keyValue) return;
+          if (Object.keys(val).length) {
+            sessionStorage.setItem(this.keyValue, JSON.stringify(val));
+          } else {
+            sessionStorage.removeItem(this.keyValue);
+          }
+        }
+      }
+    },
+
+    mounted() {
+      const cache = this.keyValue && sessionStorage.getItem(this.keyValue);
+      if (cache) {
+        this.defaultWhere = JSON.parse(cache);
+        this.search();
+      }
+    },
+
+    methods: {
+      /** 根据字段类型返回对应组件 */
+      getFieldComponent(item) {
+        switch (item.type) {
+          case 'input':
+            return 'el-input';
+          case 'select':
+            return 'el-select';
+          case 'selectTree':
+            return 'ele-tree-select';
+          case 'date':
+            return 'el-date-picker';
+          default:
+            return 'el-input';
+        }
+      },
+
+      /** 生成字段属性 */
+      getFieldProps(item) {
+        const base = {
+          placeholder:
+            item.placeholder ||
+            (item.type === 'input' ? '请输入内容' : '请选择'),
+          style: {
+            width: (item.width || (item.type === 'date' ? 350 : 200)) + 'px'
+          }
+        };
+
+        switch (item.type) {
+          case 'select':
+            return {
+              ...base,
+              multiple: !!item.multiple,
+              filterable: item.filterable !== false
+            };
+          case 'selectTree':
+            return {
+              ...base,
+              data: item.planList || [],
+              childrenKey: item.childrenKey || 'children',
+              valueKey: 'id',
+              labelKey: 'name',
+              'default-expand-all': true
+            };
+          case 'date':
+            return {
+              ...base,
+              type: item.dateType || 'daterange',
+              'value-format': 'yyyy-MM-dd HH:mm:ss',
+              'range-separator': '至',
+              'start-placeholder': '开始日期',
+              'end-placeholder': '结束日期'
+            };
+          default:
+            return base;
+        }
+      },
+
+      /** 下拉框保持展开 */
+      handleChange() {
+        if (this.$refs.dropdownRef?.show) this.$refs.dropdownRef.show();
+      },
+
+      /** 查询 */
+      search() {
+        const temp = { ...this.defaultWhere };
+        this.seekList
+          .filter((it) => it.valueAr)
+          .forEach((it) => {
+            const data = temp[it.value];
+            if (data) {
+              temp[it.valueAr[0]] = data[0];
+              temp[it.valueAr[1]] = data[1];
+            } else {
+              delete temp[it.valueAr[0]];
+              delete temp[it.valueAr[1]];
+            }
+            delete temp[it.value];
+          });
+        this.$emit('search', temp);
+      },
+
+      /** 重置 */
+      reset() {
+        this.defaultWhere = {};
+        this.search();
+      }
+    }
+  };
+</script>
+
+<style scoped lang="scss">
+  .index_box {
+    display: flex;
+  }
+
+  .padding {
+    padding: 20px;
+    max-height: 400px;
+    overflow-y: auto;
+  }
+
+  ::v-deep(.more_option.el-form--inline.el-form-item) {
+    margin-right: 0 !important;
+  }
+
+  /* ✅ 更多选项表单竖排间距优化 */
+  ::v-deep(.el-dropdown-menu .el-form-item) {
+    display: flex;
+    align-items: center;
+    margin-bottom: 10px;
+  }
+</style>

+ 8 - 2
src/main.js

@@ -13,10 +13,13 @@ import './styles/index.scss';
 import DictSelection from '@/components/Dict/DictSelection';
 import HeaderTitle from '@/components/header-title';
 import authSelection from '@/components/authSelection';
-import seekPage from '@/components/seekPage';
+import seekPage from '@/components/common/seekPage';
+
+Vue.component('seekPage', seekPage);
+// import seekPage from '@/components/seekPage';
 Vue.component('HeaderTitle', HeaderTitle);
 Vue.component('authSelection', authSelection);
-Vue.component('seekPage', seekPage);
+// Vue.component('seekPage', seekPage);
 import clickOnce from './utils/clickOnce.js';
 // 注册全局自定义指令
 Vue.directive('click-once', clickOnce);
@@ -43,6 +46,9 @@ import '@/icons';
 Vue.component('DictSelection', DictSelection);
 Vue.config.productionTip = false;
 Vue.component('fileMain', fileMain);
+// import seekPage from '@/components/common/seekPage';
+
+// Vue.component('seekPage', seekPage);
 
 Vue.use(EleAdmin, {
   response: {

+ 442 - 0
src/views/materialRequirement/requirementListOrder/details.vue

@@ -0,0 +1,442 @@
+<template>
+  <div class="ele-body">
+    <el-card shadow="never" class="tabs_box">
+      <el-button size="small" type="primary" class="ele-btn-icon"
+        >关闭</el-button
+      >
+      <headerTitle style="margin-top: 10px" />
+      <el-form
+        ref="form"
+        :model="form"
+        :rules="rules"
+        label-position="right"
+        label-width="140px"
+      >
+        <el-row :gutter="10" class="basic">
+          <el-col :lg="8" :md="12" :sm="12" :xl="8" :xs="12">
+            <el-form-item label="计划编号:">
+              <el-input v-model="form.order" disabled></el-input>
+            </el-form-item>
+          </el-col>
+
+          <el-col :lg="8" :md="12" :sm="12" :xl="8" :xs="12">
+            <el-form-item label="批次号:">
+              <el-input v-model="form.order" disabled></el-input>
+            </el-form-item>
+          </el-col>
+
+          <el-col :lg="8" :md="12" :sm="12" :xl="8" :xs="12">
+            <el-form-item label="编码:">
+              <el-input v-model="form.order" disabled></el-input>
+            </el-form-item>
+          </el-col>
+
+          <el-col :lg="8" :md="12" :sm="12" :xl="8" :xs="12">
+            <el-form-item label="名称:">
+              <el-input v-model="form.order" disabled></el-input>
+            </el-form-item>
+          </el-col>
+
+          <el-col :lg="8" :md="12" :sm="12" :xl="8" :xs="12">
+            <el-form-item label="零部件图号:">
+              <el-input v-model="form.order" disabled></el-input>
+            </el-form-item>
+          </el-col>
+
+          <el-col :lg="8" :md="12" :sm="12" :xl="8" :xs="12">
+            <el-form-item label="计划数量:">
+              <el-input v-model="form.order" disabled></el-input>
+            </el-form-item>
+          </el-col>
+
+          <el-col :lg="8" :md="12" :sm="12" :xl="8" :xs="12">
+            <el-form-item label="BOM类型:">
+              <el-input v-model="form.order" disabled></el-input>
+            </el-form-item>
+          </el-col>
+
+          <el-col :lg="8" :md="12" :sm="12" :xl="8" :xs="12">
+            <el-form-item label="BOM版本:">
+              <el-input v-model="form.order" disabled></el-input>
+            </el-form-item>
+          </el-col>
+
+          <el-col :lg="8" :md="12" :sm="12" :xl="8" :xs="12">
+            <el-form-item label="投料控制清单号:">
+              <el-input v-model="form.order" disabled></el-input>
+            </el-form-item>
+          </el-col>
+
+          <el-col :lg="8" :md="12" :sm="12" :xl="8" :xs="12">
+            <el-form-item label="需求订单号:">
+              <el-input v-model="form.order" disabled></el-input>
+            </el-form-item>
+          </el-col>
+
+          <el-col :lg="8" :md="12" :sm="12" :xl="8" :xs="12">
+            <el-form-item label="顶级产品编号:">
+              <el-input v-model="form.order" disabled></el-input>
+            </el-form-item>
+          </el-col>
+
+          <el-col :lg="8" :md="12" :sm="12" :xl="8" :xs="12">
+            <el-form-item label="顶级产品名称:">
+              <el-input v-model="form.order" disabled></el-input>
+            </el-form-item>
+          </el-col>
+          <el-col :lg="8" :md="12" :sm="12" :xl="8" :xs="12">
+            <el-form-item label="生产工单号:">
+              <el-input v-model="form.order" disabled></el-input>
+            </el-form-item>
+          </el-col>
+        </el-row>
+      </el-form>
+
+      <seek-page :seekList="seekList" @search="search"></seek-page>
+
+      <ele-pro-table
+        ref="table"
+        :columns="columns"
+        :datasource="datasource"
+        :selection.sync="selection"
+        row-key="id"
+        cache-key="entrust_list_data"
+        :height="tableHeight"
+        :pageSize="20"
+        @fullscreen-change="fullscreenChange"
+      ></ele-pro-table>
+    </el-card>
+  </div>
+</template>
+
+<script>
+  export default {
+    data() {
+      return {
+        visible: false,
+        form: {},
+        rules: {},
+        tableHeight: 'calc(100vh - 665px)',
+        selection: []
+      };
+    },
+
+    computed: {
+      columns() {
+        return [
+          {
+            columnKey: 'selection',
+            type: 'selection',
+            width: 45,
+            align: 'center',
+            fixed: 'left'
+          },
+          {
+            columnKey: 'index',
+            label: '序号',
+            type: 'index',
+            width: 55,
+            align: 'center',
+            showOverflowTooltip: true,
+            fixed: 'left'
+          },
+          {
+            prop: 'type',
+            label: '物料分类',
+            width: 100,
+            align: 'center',
+            showOverflowTooltip: true,
+            slot: 'type'
+          },
+          ,
+          {
+            prop: 'type',
+            label: '属性类型',
+            width: 100,
+            align: 'center',
+            showOverflowTooltip: true,
+            slot: 'type'
+          },
+          ,
+          {
+            prop: 'type',
+            label: '存货类型',
+            width: 100,
+            align: 'center',
+            showOverflowTooltip: true,
+            slot: 'type'
+          },
+          ,
+          {
+            prop: 'type',
+            label: '生产类型',
+            width: 100,
+            align: 'center',
+            showOverflowTooltip: true,
+            slot: 'type'
+          },
+          ,
+          {
+            prop: 'type',
+            label: '物料编码',
+            width: 100,
+            align: 'center',
+            showOverflowTooltip: true,
+            slot: 'type'
+          },
+          ,
+          {
+            prop: 'type',
+            label: '需求订单号',
+            width: 100,
+            align: 'center',
+            showOverflowTooltip: true,
+            slot: 'type'
+          },
+          ,
+          {
+            prop: 'type',
+            label: '物料名称',
+            width: 100,
+            align: 'center',
+            showOverflowTooltip: true,
+            slot: 'type'
+          },
+          ,
+          {
+            prop: 'type',
+            label: '型号',
+            width: 100,
+            align: 'center',
+            showOverflowTooltip: true,
+            slot: 'type'
+          },
+          ,
+          {
+            prop: 'type',
+            label: '规格',
+            width: 100,
+            align: 'center',
+            showOverflowTooltip: true,
+            slot: 'type'
+          },
+          ,
+          {
+            prop: 'type',
+            label: '尺寸',
+            width: 100,
+            align: 'center',
+            showOverflowTooltip: true,
+            slot: 'type'
+          },
+          ,
+          {
+            prop: 'type',
+            label: '基本数量',
+            width: 100,
+            align: 'center',
+            showOverflowTooltip: true,
+            slot: 'type'
+          },
+          ,
+          {
+            prop: 'type',
+            label: '投料控制数量/定额数量',
+            width: 190,
+            align: 'center',
+            showOverflowTooltip: true,
+            slot: 'type'
+          },
+          ,
+          {
+            prop: 'type',
+            label: '计量单位',
+            width: 100,
+            align: 'center',
+            showOverflowTooltip: true,
+            slot: 'type'
+          },
+          ,
+          {
+            prop: 'type',
+            label: '牌号',
+            width: 100,
+            align: 'center',
+            showOverflowTooltip: true,
+            slot: 'type'
+          },
+          ,
+          {
+            prop: 'type',
+            label: '重量',
+            width: 100,
+            align: 'center',
+            showOverflowTooltip: true,
+            slot: 'type'
+          },
+          ,
+          {
+            prop: 'type',
+            label: '重量单位',
+            width: 100,
+            align: 'center',
+            showOverflowTooltip: true,
+            slot: 'type'
+          },
+          ,
+          {
+            prop: 'type',
+            label: '机型',
+            width: 100,
+            align: 'center',
+            showOverflowTooltip: true,
+            slot: 'type'
+          },
+          ,
+          {
+            prop: 'type',
+            label: '颜色',
+            width: 100,
+            align: 'center',
+            showOverflowTooltip: true,
+            slot: 'type'
+          },
+          ,
+          {
+            prop: 'type',
+            label: '已领数量',
+            width: 100,
+            align: 'center',
+            showOverflowTooltip: true,
+            slot: 'type'
+          },
+          ,
+          {
+            prop: 'type',
+            label: '未领数量',
+            width: 100,
+            align: 'center',
+            showOverflowTooltip: true,
+            slot: 'type'
+          },
+          ,
+          {
+            prop: 'type',
+            label: '已出库数量',
+            width: 100,
+            align: 'center',
+            showOverflowTooltip: true,
+            slot: 'type'
+          },
+          ,
+          {
+            prop: 'type',
+            label: '未出库数量',
+            width: 100,
+            align: 'center',
+            showOverflowTooltip: true,
+            slot: 'type'
+          },
+          ,
+          {
+            prop: 'type',
+            label: '已投数量',
+            width: 100,
+            align: 'center',
+            showOverflowTooltip: true,
+            slot: 'type'
+          },
+          ,
+          {
+            prop: 'type',
+            label: '未投数量',
+            width: 100,
+            align: 'center',
+            showOverflowTooltip: true,
+            slot: 'type'
+          },
+          ,
+          {
+            prop: 'type',
+            label: '余料数量',
+            width: 100,
+            align: 'center',
+            showOverflowTooltip: true,
+            slot: 'type'
+          },
+          ,
+          {
+            prop: 'type',
+            label: '创建人',
+            width: 100,
+            align: 'center',
+            showOverflowTooltip: true,
+            slot: 'type'
+          },
+          ,
+          {
+            prop: 'type',
+            label: '创建时间',
+            width: 100,
+            align: 'center',
+            showOverflowTooltip: true,
+            slot: 'type'
+          }
+        ];
+      },
+
+      seekList() {
+        return [
+          {
+            label: '计划编号:',
+            value: 'name',
+            type: 'input',
+            labelWidth: 100
+          },
+          {
+            label: '批次号:',
+            value: 'name',
+            type: 'input',
+            labelWidth: 80
+          },
+          {
+            label: '编码:',
+            value: 'name',
+            type: 'input',
+            labelWidth: 50
+          }
+        ];
+      }
+    },
+
+    methods: {
+      datasource() {
+        return [];
+      },
+
+      open() {
+        this.visible = true;
+      },
+
+      cancel() {
+        this.visible = false;
+      },
+
+      search() {},
+
+      fullscreenChange(fullscreen) {
+        if (fullscreen) {
+          this.tableHeight = 'calc(100vh - 120px)';
+        } else {
+          this.tableHeight = 'calc(100vh - 665px)';
+        }
+      }
+    }
+  };
+</script>
+
+<style scoped>
+  ::v-deep .el-form-item {
+    margin-bottom: 15px !important;
+  }
+</style>

+ 353 - 0
src/views/materialRequirement/requirementListOrder/index.vue

@@ -0,0 +1,353 @@
+<template>
+  <div class="ele-body">
+    <el-card shadow="never" v-loading="loading">
+      <seek-page :seekList="seekList" @search="search"></seek-page>
+
+      <ele-pro-table
+        ref="table"
+        :columns="columns"
+        :datasource="datasource"
+        :selection.sync="selection"
+        row-key="id"
+        cache-key="entrust_list_data"
+        :height="tableHeight"
+        :pageSize="20"
+        @fullscreen-change="fullscreenChange"
+      >
+        <template v-slot:toolbar>
+          <el-button
+            size="small"
+            type="primary"
+            icon="el-icon-plus"
+            class="ele-btn-icon"
+            @click="detail"
+          >
+            详情
+          </el-button>
+        </template>
+      </ele-pro-table>
+    </el-card>
+  </div>
+</template>
+
+<script>
+  import dictMixins from '@/mixins/dictMixins';
+  export default {
+    mixins: [dictMixins],
+    data() {
+      return {
+        loading: false,
+        factoryList: [],
+        selection: [],
+        tableHeight: 'calc(100vh - 320px)'
+      };
+    },
+
+    computed: {
+      columns() {
+        return [
+          {
+            columnKey: 'selection',
+            type: 'selection',
+            width: 45,
+            align: 'center',
+            fixed: 'left'
+          },
+          {
+            columnKey: 'index',
+            label: '序号',
+            type: 'index',
+            width: 55,
+            align: 'center',
+            showOverflowTooltip: true,
+            fixed: 'left'
+          },
+          {
+            prop: 'type',
+            label: '需求订单号',
+            width: 100,
+            align: 'center',
+            showOverflowTooltip: true,
+            slot: 'type'
+          },
+          {
+            prop: 'type',
+            label: '顶级产品编号',
+            width: 120,
+            align: 'center',
+            showOverflowTooltip: true,
+            slot: 'type'
+          },
+          {
+            prop: 'type',
+            label: '顶级产品名称',
+            width: 120,
+            align: 'center',
+            showOverflowTooltip: true,
+            slot: 'type'
+          },
+          {
+            prop: 'type',
+            label: '计划状态',
+            width: 100,
+            align: 'center',
+            showOverflowTooltip: true,
+            slot: 'type'
+          },
+          {
+            prop: 'type',
+            label: '计划编号',
+            width: 100,
+            align: 'center',
+            showOverflowTooltip: true,
+            slot: 'type'
+          },
+          {
+            prop: 'type',
+            label: '批次号',
+            width: 100,
+            align: 'center',
+            showOverflowTooltip: true,
+            slot: 'type'
+          },
+          {
+            prop: 'type',
+            label: '生产工单号',
+            width: 100,
+            align: 'center',
+            showOverflowTooltip: true,
+            slot: 'type'
+          },
+          {
+            prop: 'type',
+            label: '编码',
+            width: 100,
+            align: 'center',
+            showOverflowTooltip: true,
+            slot: 'type'
+          },
+          {
+            prop: 'type',
+            label: '名称',
+            width: 100,
+            align: 'center',
+            showOverflowTooltip: true,
+            slot: 'type'
+          },
+          {
+            prop: 'type',
+            label: '零部件图号',
+            width: 100,
+            align: 'center',
+            showOverflowTooltip: true,
+            slot: 'type'
+          },
+          {
+            prop: 'type',
+            label: '型号',
+            width: 100,
+            align: 'center',
+            showOverflowTooltip: true,
+            slot: 'type'
+          },
+          {
+            prop: 'type',
+            label: '规格',
+            width: 100,
+            align: 'center',
+            showOverflowTooltip: true,
+            slot: 'type'
+          },
+          {
+            prop: 'type',
+            label: '尺寸',
+            width: 100,
+            align: 'center',
+            showOverflowTooltip: true,
+            slot: 'type'
+          },
+          {
+            prop: 'type',
+            label: '计划数量',
+            width: 100,
+            align: 'center',
+            showOverflowTooltip: true,
+            slot: 'type'
+          },
+          {
+            prop: 'type',
+            label: '计量单位',
+            width: 100,
+            align: 'center',
+            showOverflowTooltip: true,
+            slot: 'type'
+          },
+          {
+            prop: 'type',
+            label: 'BOM类型',
+            width: 100,
+            align: 'center',
+            showOverflowTooltip: true,
+            slot: 'type'
+          },
+          {
+            prop: 'type',
+            label: 'BOM版本',
+            width: 100,
+            align: 'center',
+            showOverflowTooltip: true,
+            slot: 'type'
+          },
+          {
+            prop: 'type',
+            label: '牌号',
+            width: 100,
+            align: 'center',
+            showOverflowTooltip: true,
+            slot: 'type'
+          },
+          {
+            prop: 'type',
+            label: '加工类型',
+            width: 100,
+            align: 'center',
+            showOverflowTooltip: true,
+            slot: 'type'
+          },
+          {
+            prop: 'type',
+            label: '作业名称',
+            width: 100,
+            align: 'center',
+            showOverflowTooltip: true,
+            slot: 'type'
+          },
+          {
+            prop: 'type',
+            label: '承制单位',
+            width: 100,
+            align: 'center',
+            showOverflowTooltip: true,
+            slot: 'type'
+          },
+          {
+            prop: 'type',
+            label: '计划类别',
+            width: 100,
+            align: 'center',
+            showOverflowTooltip: true,
+            slot: 'type'
+          },
+          {
+            prop: 'type',
+            label: '投料控制清单号',
+            width: 120,
+            align: 'center',
+            showOverflowTooltip: true,
+            slot: 'type'
+          },
+          {
+            prop: 'type',
+            label: '创建人',
+            width: 100,
+            align: 'center',
+            showOverflowTooltip: true,
+            slot: 'type'
+          },
+          {
+            prop: 'type',
+            label: '创建时间',
+            width: 100,
+            align: 'center',
+            showOverflowTooltip: true,
+            slot: 'type'
+          }
+        ];
+      },
+
+      seekList() {
+        return [
+          {
+            label: '计划编号:',
+            value: 'name',
+            type: 'input',
+            labelWidth: 100
+          },
+          {
+            label: '批次号:',
+            value: 'name',
+            type: 'input',
+            labelWidth: 80
+          },
+          {
+            label: '编码:',
+            value: 'name',
+            type: 'input',
+            labelWidth: 50
+          },
+          {
+            label: '需求订单号:',
+            value: 'name',
+            type: 'input',
+            labelWidth: 100
+          },
+          {
+            label: '顶级产品编号:',
+            value: 'name',
+            type: 'input',
+            labelWidth: 100
+          },
+          {
+            label: '顶级产品名称:',
+            value: 'name',
+            type: 'input',
+            labelWidth: 100
+          },
+          {
+            label: '计划状态:',
+            value: 'name',
+            type: 'select',
+            labelWidth: 100,
+            planList: this.factoryList
+          },
+          {
+            label: '计划类别:',
+            value: 'name',
+            type: 'select',
+            labelWidth: 100,
+            planList: this.factoryList
+          },
+          {
+            label: '承制单位:',
+            value: 'name',
+            type: 'select',
+            labelWidth: 100,
+            planList: this.factoryList
+          }
+        ];
+      }
+    },
+
+    methods: {
+      datasource() {},
+
+      search() {},
+
+      fullscreenChange(fullscreen) {
+        if (fullscreen) {
+          this.tableHeight = 'calc(100vh - 120px)';
+        } else {
+          this.tableHeight = 'calc(100vh - 320px)';
+        }
+      },
+
+      detail() {
+        this.$router.push({
+          path: '/materialRequirement/requirementListOrder/details'
+        });
+      }
+    }
+  };
+</script>
+
+<style></style>

+ 347 - 0
src/views/materialRequirement/requirementListPlan/index.vue

@@ -0,0 +1,347 @@
+<template>
+  <div class="ele-body">
+    <el-card shadow="never" v-loading="loading">
+      <seek-page :seekList="seekList" @search="search"></seek-page>
+
+      <ele-pro-table
+        ref="table"
+        :columns="columns"
+        :datasource="datasource"
+        :selection.sync="selection"
+        row-key="id"
+        cache-key="entrust_list_data"
+        :height="tableHeight"
+        :pageSize="20"
+        @fullscreen-change="fullscreenChange"
+      >
+        <template v-slot:toolbar>
+          <el-button
+            size="small"
+            type="primary"
+            icon="el-icon-plus"
+            class="ele-btn-icon"
+            @click="detail"
+          >
+            详情
+          </el-button>
+        </template>
+      </ele-pro-table>
+    </el-card>
+  </div>
+</template>
+
+<script>
+  import dictMixins from '@/mixins/dictMixins';
+  export default {
+    mixins: [dictMixins],
+    data() {
+      return {
+        loading: false,
+        factoryList: [],
+        selection: [],
+        tableHeight: 'calc(100vh - 320px)'
+      };
+    },
+
+    computed: {
+      columns() {
+        return [
+          {
+            columnKey: 'selection',
+            type: 'selection',
+            width: 45,
+            align: 'center',
+            fixed: 'left'
+          },
+          {
+            columnKey: 'index',
+            label: '序号',
+            type: 'index',
+            width: 55,
+            align: 'center',
+            showOverflowTooltip: true,
+            fixed: 'left'
+          },
+          {
+            prop: 'type',
+            label: '需求订单号',
+            width: 100,
+            align: 'center',
+            showOverflowTooltip: true,
+            slot: 'type'
+          },
+          {
+            prop: 'type',
+            label: '顶级产品编号',
+            width: 120,
+            align: 'center',
+            showOverflowTooltip: true,
+            slot: 'type'
+          },
+          {
+            prop: 'type',
+            label: '顶级产品名称',
+            width: 120,
+            align: 'center',
+            showOverflowTooltip: true,
+            slot: 'type'
+          },
+          {
+            prop: 'type',
+            label: '计划状态',
+            width: 100,
+            align: 'center',
+            showOverflowTooltip: true,
+            slot: 'type'
+          },
+          {
+            prop: 'type',
+            label: '计划编号',
+            width: 100,
+            align: 'center',
+            showOverflowTooltip: true,
+            slot: 'type'
+          },
+          {
+            prop: 'type',
+            label: '批次号',
+            width: 100,
+            align: 'center',
+            showOverflowTooltip: true,
+            slot: 'type'
+          },
+          {
+            prop: 'type',
+            label: '生产工单号',
+            width: 100,
+            align: 'center',
+            showOverflowTooltip: true,
+            slot: 'type'
+          },
+          {
+            prop: 'type',
+            label: '编码',
+            width: 100,
+            align: 'center',
+            showOverflowTooltip: true,
+            slot: 'type'
+          },
+          {
+            prop: 'type',
+            label: '名称',
+            width: 100,
+            align: 'center',
+            showOverflowTooltip: true,
+            slot: 'type'
+          },
+          {
+            prop: 'type',
+            label: '零部件图号',
+            width: 100,
+            align: 'center',
+            showOverflowTooltip: true,
+            slot: 'type'
+          },
+          {
+            prop: 'type',
+            label: '型号',
+            width: 100,
+            align: 'center',
+            showOverflowTooltip: true,
+            slot: 'type'
+          },
+          {
+            prop: 'type',
+            label: '规格',
+            width: 100,
+            align: 'center',
+            showOverflowTooltip: true,
+            slot: 'type'
+          },
+          {
+            prop: 'type',
+            label: '尺寸',
+            width: 100,
+            align: 'center',
+            showOverflowTooltip: true,
+            slot: 'type'
+          },
+          {
+            prop: 'type',
+            label: '计划数量',
+            width: 100,
+            align: 'center',
+            showOverflowTooltip: true,
+            slot: 'type'
+          },
+          {
+            prop: 'type',
+            label: '计量单位',
+            width: 100,
+            align: 'center',
+            showOverflowTooltip: true,
+            slot: 'type'
+          },
+          {
+            prop: 'type',
+            label: 'BOM类型',
+            width: 100,
+            align: 'center',
+            showOverflowTooltip: true,
+            slot: 'type'
+          },
+          {
+            prop: 'type',
+            label: 'BOM版本',
+            width: 100,
+            align: 'center',
+            showOverflowTooltip: true,
+            slot: 'type'
+          },
+          {
+            prop: 'type',
+            label: '牌号',
+            width: 100,
+            align: 'center',
+            showOverflowTooltip: true,
+            slot: 'type'
+          },
+          {
+            prop: 'type',
+            label: '加工类型',
+            width: 100,
+            align: 'center',
+            showOverflowTooltip: true,
+            slot: 'type'
+          },
+          {
+            prop: 'type',
+            label: '作业名称',
+            width: 100,
+            align: 'center',
+            showOverflowTooltip: true,
+            slot: 'type'
+          },
+          {
+            prop: 'type',
+            label: '承制单位',
+            width: 100,
+            align: 'center',
+            showOverflowTooltip: true,
+            slot: 'type'
+          },
+          {
+            prop: 'type',
+            label: '计划类别',
+            width: 100,
+            align: 'center',
+            showOverflowTooltip: true,
+            slot: 'type'
+          },
+          {
+            prop: 'type',
+            label: '投料控制清单号',
+            width: 120,
+            align: 'center',
+            showOverflowTooltip: true,
+            slot: 'type'
+          },
+          {
+            prop: 'type',
+            label: '创建人',
+            width: 100,
+            align: 'center',
+            showOverflowTooltip: true,
+            slot: 'type'
+          },
+          {
+            prop: 'type',
+            label: '创建时间',
+            width: 100,
+            align: 'center',
+            showOverflowTooltip: true,
+            slot: 'type'
+          }
+        ];
+      },
+
+      seekList() {
+        return [
+          {
+            label: '计划编号:',
+            value: 'name',
+            type: 'input',
+            labelWidth: 100
+          },
+          {
+            label: '批次号:',
+            value: 'name',
+            type: 'input',
+            labelWidth: 80
+          },
+          {
+            label: '编码:',
+            value: 'name',
+            type: 'input',
+            labelWidth: 50
+          },
+          {
+            label: '需求订单号:',
+            value: 'name',
+            type: 'input',
+            labelWidth: 100
+          },
+          {
+            label: '顶级产品编号:',
+            value: 'name',
+            type: 'input',
+            labelWidth: 100
+          },
+          {
+            label: '顶级产品名称:',
+            value: 'name',
+            type: 'input',
+            labelWidth: 100
+          },
+          {
+            label: '计划状态:',
+            value: 'name',
+            type: 'select',
+            labelWidth: 100,
+            planList: this.factoryList
+          },
+          {
+            label: '计划类别:',
+            value: 'name',
+            type: 'select',
+            labelWidth: 100,
+            planList: this.factoryList
+          },
+          {
+            label: '承制单位:',
+            value: 'name',
+            type: 'select',
+            labelWidth: 100,
+            planList: this.factoryList
+          }
+        ];
+      }
+    },
+
+    methods: {
+      search() {},
+
+      fullscreenChange(fullscreen) {
+        if (fullscreen) {
+          this.tableHeight = 'calc(100vh - 120px)';
+        } else {
+          this.tableHeight = 'calc(100vh - 320px)';
+        }
+      },
+
+      detail() {}
+    }
+  };
+</script>
+
+<style></style>

+ 1 - 2
src/views/productionPlan/components/homogeneityInspectDialog.vue

@@ -1251,8 +1251,7 @@
       color: green;
     }
   }
-  .planInfo {
-  }
+
   .form-wrapper {
     display: flex;
   }

+ 0 - 2
src/views/productionPlan/components/kittingComplete.vue

@@ -1253,8 +1253,6 @@
       color: green;
     }
   }
-  .planInfo {
-  }
   .form-wrapper {
     display: flex;
   }

+ 1 - 1
src/views/workOrder/index.vue

@@ -164,7 +164,7 @@
             v-if="
               unpackShow(row) &&
               row.splitResidue !== 0 &&
-              $hasPermission('aps:workorder:ordersplitting ')
+              $hasPermission('aps:workorder:ordersplitting')
             "
             :underline="false"
             type="primary"