Bläddra i källkod

物料管理静态页面提交

LAPTOP-16IUEB3P\Lenovo 3 år sedan
förälder
incheckning
d06d1ac85b

+ 10 - 0
src/components/CommomSelect/dept-select.vue

@@ -7,8 +7,10 @@
     label-key="name"
     value-key="id"
     default-expand-all
+    ref="treeSelect"
     :placeholder="placeholder"
     @input="updateValue"
+    @change="changeChoose"
   />
 </template>
 
@@ -44,6 +46,14 @@
       /* 更新选中数据 */
       updateValue (value) {
         this.$emit('input', value);
+      },
+
+      changeChoose (val) {
+        this.$emit(
+          'changeGroup',
+          val,
+          this.$refs.treeSelect.getNodeByValue(val)
+        );
       }
     }
   };

+ 74 - 0
src/components/CommomSelect/person-select.vue

@@ -0,0 +1,74 @@
+<template>
+  <el-select
+    v-model="selectVal"
+    filterable
+    style="width: 100%"
+    v-bind="$attrs"
+    v-on="$listeners"
+    clearable
+  >
+    <el-option
+      v-for="item in dictList"
+      :key="item.id"
+      :value="item.id"
+      :label="item.name"
+    ></el-option>
+  </el-select>
+</template>
+
+<script>
+  import { getUserPage } from '@/api/system/organization';
+  export default {
+    model: {
+      prop: 'value',
+      event: 'updateVal'
+    },
+    props: {
+      value: {
+        type: [String, Number, Array],
+        default: ''
+      },
+      init: {
+        type: Boolean,
+        default: true
+      }
+    },
+    data () {
+      return {
+        dictList: []
+      };
+    },
+    computed: {
+      selectVal: {
+        set (val) {
+          this.$emit(
+            'selfChange',
+            val,
+            this.dictList.find((i) => i.id === val)
+          );
+          this.$emit('updateVal', val);
+        },
+        get () {
+          return this.value;
+        }
+      }
+    },
+    created () {
+      if (this.init) {
+        this.getList();
+      }
+    },
+    methods: {
+      async getList (params) {
+        let data = { pageNum: 1, size: -1 };
+        // 如果传了参数就是获取巡点检人员数据
+        if (params) {
+          data = Object.assign(data, params);
+        }
+        const res = await getUserPage(data);
+        this.selectVal = '';
+        this.dictList = res.list;
+      }
+    }
+  };
+</script>

+ 0 - 1
src/components/Dict/DictSelection.vue

@@ -1,7 +1,6 @@
 <template>
   <el-select
     v-model="selectVal"
-    size="small"
     style="width: 100%"
     v-bind="$attrs"
     v-on="$listeners"

+ 11 - 1
src/enum/dict.js

@@ -13,5 +13,15 @@ export default {
   规则状态: 'rule_status',
   规则周期: 'rule_cycle',
   运维计划状态: 'plan_status',
-  紧急程度: 'urgent_type'
+  紧急程度: 'urgent_type',
+  计量单位: 'measuring_uint',
+  包装单位: 'packing_unit',
+  体积单位: 'volume_unit',
+  重量单位: 'weight_unit',
+  质保预警参考: 'quality_assurance',
+  保质期单位: 'date_unit',
+  排程类型: 'schedule_type',
+  提前期单位: 'leadtime_unit',
+  价格单位: 'price_unit',
+  检验方案: 'inspection_scheme'
 };

+ 105 - 0
src/views/material/manage/components/BoatInfo.vue

@@ -0,0 +1,105 @@
+<template>
+  <div class="other">
+      <el-form label-width="120px"  ref="form" :model="form">
+         <div class="divider">
+           <div class="title">
+             <div class="ele-bg-primary"></div>
+             <span>舟皿信息</span>
+           </div>
+           <div class="ele-bg-primary ele-width"></div>
+         </div>
+         <el-row :gutter="24">
+           <el-col :span="8">
+             <el-form-item label="槽数" prop="fixedNum">
+                <el-input  v-model="form.fixedNum"/>
+             </el-form-item>
+           </el-col>
+           <el-col :span="8">
+             <el-form-item label="角度" prop="lossRate">
+                <DictSelection dictName="角度" clearable v-model="form.scheduleType">
+                </DictSelection>
+             </el-form-item>
+           </el-col>
+           <el-col :span="8">
+             <el-form-item label="长" prop="fixedNum">
+                <el-input v-model="form.lossRate">
+                    <template slot="append">mm</template>
+                </el-input>
+             </el-form-item>
+           </el-col>
+           <el-col :span="8">
+             <el-form-item label="宽" prop="consumeWave">
+                <el-input v-model="form.lossRate">
+                    <template slot="append">mm</template>
+                </el-input>
+             </el-form-item>
+           </el-col>
+           <el-col :span="8">
+             <el-form-item label="高" prop="consumeWave">
+                <el-input v-model="form.lossRate">
+                    <template slot="append">mm</template>
+                </el-input>
+             </el-form-item>
+           </el-col>
+         </el-row>
+      </el-form>
+  </div>
+</template>
+
+<script>
+  export default {
+    props: {
+      form: {
+        type: Object,
+        default: {}
+      }
+    },
+    components: { },
+    data() {
+      return {
+
+
+      };
+    },
+
+    methods: {
+
+
+    }
+  };
+</script>
+
+<style lang="scss" scoped>
+  .other{
+    background: #fff;
+    padding: 1px 17px;
+  }
+  .divider {
+    margin: 0px 0 20px;
+    .title {
+      display: flex;
+      align-items: center;
+      margin-bottom: 10px;
+      div {
+        width: 8px;
+        height: 20px;
+        margin-right: 10px;
+      }
+      span {
+        font-size: 20px;
+      }
+    }
+    .ele-width{
+      width: 100%;
+      height: 2px;
+    }
+  }
+  .form-line{
+    display: flex;
+    align-items: center;
+    justify-content: space-between;
+    .line-select{
+      margin-left:15px;
+    }
+  }
+</style>

+ 114 - 0
src/views/material/manage/components/MoldInfo.vue

@@ -0,0 +1,114 @@
+<template>
+  <div class="other">
+      <el-form label-width="120px"  ref="form" :model="form">
+         <div class="divider">
+           <div class="title">
+             <div class="ele-bg-primary"></div>
+             <span>模具信息</span>
+           </div>
+           <div class="ele-bg-primary ele-width"></div>
+         </div>
+         <el-row :gutter="24">
+           <el-col :span="8">
+             <el-form-item label="收缩系数" prop="fixedNum">
+                <el-input  v-model="form.fixedNum"/>
+             </el-form-item>
+           </el-col>
+           <el-col :span="8">
+             <el-form-item label="芯杆数量" prop="lossRate">
+                <el-input  v-model="form.fixedNum"/>
+             </el-form-item>
+           </el-col>
+           <el-col :span="8">
+             <el-form-item label="模孔数量" prop="fixedNum">
+                <el-input v-model="form.lossRate">
+                </el-input>
+             </el-form-item>
+           </el-col>
+           <el-col :span="8">
+             <el-form-item label="上冲头数量" prop="consumeWave">
+                <el-input v-model="form.lossRate">
+                </el-input>
+             </el-form-item>
+           </el-col>
+           <el-col :span="8">
+             <el-form-item label="下冲头数量" prop="consumeWave">
+                <el-input v-model="form.lossRate">
+                </el-input>
+             </el-form-item>
+           </el-col>
+           <el-col :span="8">
+             <el-form-item label="最大冲压次数" prop="consumeWave">
+                <el-input v-model="form.lossRate">
+                </el-input>
+             </el-form-item>
+           </el-col>
+           <el-col :span="8">
+             <el-form-item label="大模体型号" prop="consumeWave">
+                <el-input v-model="form.lossRate">
+                </el-input>
+             </el-form-item>
+           </el-col>
+           
+         </el-row>
+      </el-form>
+  </div>
+</template>
+
+<script>
+  export default {
+    props: {
+      form: {
+        type: Object,
+        default: {}
+      }
+    },
+    components: { },
+    data() {
+      return {
+
+
+      };
+    },
+
+    methods: {
+
+
+    }
+  };
+</script>
+
+<style lang="scss" scoped>
+  .other{
+    background: #fff;
+    padding: 1px 17px;
+  }
+  .divider {
+    margin: 0px 0 20px;
+    .title {
+      display: flex;
+      align-items: center;
+      margin-bottom: 10px;
+      div {
+        width: 8px;
+        height: 20px;
+        margin-right: 10px;
+      }
+      span {
+        font-size: 20px;
+      }
+    }
+    .ele-width{
+      width: 100%;
+      height: 2px;
+    }
+  }
+  .form-line{
+    display: flex;
+    align-items: center;
+    justify-content: space-between;
+    .line-select{
+      margin-left:15px;
+    }
+  }
+</style>

+ 108 - 0
src/views/material/manage/components/PlanInfo.vue

@@ -0,0 +1,108 @@
+<template>
+  <div class="other">
+      <el-form label-width="120px"  ref="form" :model="form">
+         <div class="divider">
+           <div class="title">
+             <div class="ele-bg-primary"></div>
+             <span>计划</span>
+           </div>
+           <div class="ele-bg-primary ele-width"></div>
+         </div>
+         <el-row :gutter="24">
+           <el-col :span="8">
+             <el-form-item label="固定提前期" prop="fixedNum">
+                <el-input  v-model="form.fixedNum"/>
+             </el-form-item>
+           </el-col>
+           <el-col :span="8">
+             <el-form-item label="变动提前期" prop="fixedNum">
+                <el-input  v-model="form.fixedNum"/>
+             </el-form-item>
+           </el-col>
+           <el-col :span="8">
+             <el-form-item label="检验提前期" prop="fixedNum">
+                <el-input  v-model="form.fixedNum"/>
+             </el-form-item>
+           </el-col>
+           <el-col :span="8">
+             <el-form-item label="累计提前期" prop="consumeWave">
+                <el-input  v-model="form.fixedNum"/>
+             </el-form-item>
+           </el-col>
+           <el-col :span="8">
+             <el-form-item label="提前期单位" prop="lossRate">
+                <DictSelection dictName="提前期单位" clearable v-model="form.scheduleType">
+                </DictSelection>
+             </el-form-item>
+           </el-col>
+           <el-col :span="8">
+             <el-form-item label="订货间隔期" prop="scheduleType">
+                <div class="form-line">
+                  <el-input  v-model="form.date"/>
+                  <DictSelection class="line-select" dictName="提前期单位" clearable v-model="form.dateUnit">
+                  </DictSelection>
+                </div>
+             </el-form-item>
+           </el-col>
+         </el-row>
+      </el-form>
+  </div>
+</template>
+
+<script>
+  export default {
+    props: {
+      form: {
+        type: Object,
+        default: {}
+      }
+    },
+    components: { },
+    data() {
+      return {
+
+
+      };
+    },
+
+    methods: {
+
+
+    }
+  };
+</script>
+
+<style lang="scss" scoped>
+  .other{
+    background: #fff;
+    padding: 1px 17px;
+  }
+  .divider {
+    margin: 0px 0 20px;
+    .title {
+      display: flex;
+      align-items: center;
+      margin-bottom: 10px;
+      div {
+        width: 8px;
+        height: 20px;
+        margin-right: 10px;
+      }
+      span {
+        font-size: 20px;
+      }
+    }
+    .ele-width{
+      width: 100%;
+      height: 2px;
+    }
+  }
+  .form-line{
+    display: flex;
+    align-items: center;
+    justify-content: space-between;
+    .line-select{
+      margin-left:15px;
+    }
+  }
+</style>

+ 183 - 0
src/views/material/manage/components/ProcureInfo.vue

@@ -0,0 +1,183 @@
+<template>
+  <div class="other">
+      <el-form label-width="120px"  ref="form" :model="form">
+         <div class="divider">
+           <div class="title">
+             <div class="ele-bg-primary"></div>
+             <span>采购</span>
+           </div>
+           <div class="ele-bg-primary ele-width"></div>
+         </div>
+         <el-row :gutter="24">
+           <el-col :span="8">
+             <el-form-item label="采购单位">
+                <el-input  v-model="form.procureUnit"/>
+             </el-form-item>
+           </el-col>
+           <el-col :span="8">
+             <el-form-item label="计价单位">
+                <el-input  v-model="form.priceUnit"/>
+             </el-form-item>
+           </el-col>
+           <el-col :span="8">
+             <el-form-item label="采购组织" prop="procureGroup">
+               <deptSelect v-model="form.procureGroup" @changeGroup="searchDeptNodeClick"/>
+             </el-form-item>
+           </el-col>
+           <el-col :span="8">
+             <el-form-item label="采购员" prop="purchaserId">
+               <personSelect
+                 ref="directorRef"
+                 v-model="form.purchaserId"
+                 @selfChange="handleDirectorChange"
+                 :init="false"
+               />
+             </el-form-item>
+           </el-col>
+           <el-col :span="8">
+             <el-form-item label="默认供应商" prop="supplier">
+                <el-input  v-model="form.supplier"/>
+             </el-form-item>
+           </el-col>
+           <el-col :span="8">
+             <el-form-item label="允许退料" prop="isReturn">
+               <el-radio v-model="form.isReturn" label="1">是</el-radio>
+               <el-radio v-model="form.isReturn" label="0">否</el-radio>
+             </el-form-item>
+           </el-col>
+           <el-col :span="8">
+             <el-form-item label="是否请购" prop="isApplay" >
+                <el-radio v-model="form.isApplay" label="1">是</el-radio>
+                <el-radio v-model="form.isApplay" label="0">否</el-radio>
+             </el-form-item>
+           </el-col>
+           <el-col :span="8">
+             <el-form-item label="货源控制" prop="isControl">
+                <el-radio v-model="form.isControl" label="1">是</el-radio>
+                <el-radio v-model="form.isControl" label="0">否</el-radio>
+             </el-form-item>
+           </el-col>
+           <el-col :span="8">
+             <el-form-item label="收货上限比例" prop="upperLimit">
+                <el-input v-model="form.upperLimit">
+                    <template slot="append">%</template>
+                </el-input>
+             </el-form-item>
+           </el-col>
+           <el-col :span="8">
+             <el-form-item label="收货提前天数" prop="earlyDays">
+                <el-input  v-model="form.earlyDays"/>
+             </el-form-item>
+           </el-col>
+           <el-col :span="8">
+             <el-form-item label="收货延迟天数" prop="delayDays">
+                <el-input  v-model="form.delayDays"/>
+             </el-form-item>
+           </el-col>
+           <el-col :span="8">
+             <el-form-item label="收货下限比例" prop="lowerLimit">
+                <el-input v-model="form.lowerLimit">
+                    <template slot="append">%</template>
+                </el-input>
+             </el-form-item>
+           </el-col>
+           <el-col :span="8">
+             <el-form-item label="默认条码规则" prop="earlyDays">
+                <el-input  v-model="form.earlyDays"/>
+             </el-form-item>
+           </el-col>
+           <el-col :span="8">
+             <el-form-item label="最小包装数" prop="earlyDays">
+                <el-input  v-model="form.earlyDays"/>
+             </el-form-item>
+           </el-col>
+           <el-col :span="8">
+             <el-form-item label="重复打印数" prop="earlyDays">
+                <el-input  v-model="form.earlyDays"/>
+             </el-form-item>
+           </el-col>
+           <el-col :span="8">
+             <el-form-item label="委外单位" prop="earlyDays">
+                <el-input  v-model="form.earlyDays"/>
+             </el-form-item>
+           </el-col>
+           <el-col :span="8">
+             <el-form-item label="委外计价单位" prop="earlyDays">
+                <el-input  v-model="form.earlyDays"/>
+             </el-form-item>
+           </el-col>
+         </el-row>
+      </el-form>
+  </div>
+</template>
+
+<script>
+  import deptSelect from '@/components/CommomSelect/dept-select.vue'
+  import personSelect from '@/components/CommomSelect/person-select.vue';
+  export default {
+    props: {
+      form: {
+        type: Object,
+        default: {}
+      }
+    },
+    components: { deptSelect , personSelect },
+    data() {
+      return {
+
+
+      };
+    },
+
+    methods: {
+      // 选择所属部门
+      searchDeptNodeClick (id, info) {
+        // 根据部门获取人员
+        const params = { executeGroupId: id };
+        this.$nextTick(() => {
+          this.$refs.directorRef.getList(params);
+        });
+      },
+      //选择负责人
+      handleDirectorChange (id, info) {
+      },
+
+
+    }
+  };
+</script>
+
+<style lang="scss" scoped>
+  .other{
+    background: #fff;
+    padding: 1px 17px;
+  }
+  .divider {
+    margin: 0px 0 20px;
+    .title {
+      display: flex;
+      align-items: center;
+      margin-bottom: 10px;
+      div {
+        width: 8px;
+        height: 20px;
+        margin-right: 10px;
+      }
+      span {
+        font-size: 20px;
+      }
+    }
+    .ele-width{
+      width: 100%;
+      height: 2px;
+    }
+  }
+  .form-line{
+    display: flex;
+    align-items: center;
+    justify-content: space-between;
+    .line-select{
+      margin-left:15px;
+    }
+  }
+</style>

+ 153 - 0
src/views/material/manage/components/ProductionInfo.vue

@@ -0,0 +1,153 @@
+<template>
+  <div class="other">
+      <el-form label-width="120px"  ref="form" :model="form">
+         <div class="divider">
+           <div class="title">
+             <div class="ele-bg-primary"></div>
+             <span>生产信息</span>
+           </div>
+           <div class="ele-bg-primary ele-width"></div>
+         </div>
+         <el-row :gutter="24">
+           <el-col :span="8">
+             <el-form-item label="是否齐套件">
+                <el-radio v-model="form.isComplete" label="1">是</el-radio>
+                <el-radio v-model="form.isComplete" label="0">否</el-radio>
+             </el-form-item>
+           </el-col>
+           <el-col :span="8">
+             <el-form-item label="消耗波动" prop="consumeWave">
+                <el-input v-model="form.consumeWave">
+                    <template slot="append">%</template>
+                </el-input>
+             </el-form-item>
+           </el-col>
+           <el-col :span="8">
+             <el-form-item label="变动损耗率" prop="lossRate">
+                <el-input v-model="form.lossRate">
+                    <template slot="append">%</template>
+                </el-input>
+             </el-form-item>
+           </el-col>
+           <el-col :span="8">
+             <el-form-item label="固定损耗数" prop="fixedNum">
+                <el-input  v-model="form.fixedNum"/>
+             </el-form-item>
+           </el-col>
+           <el-col :span="8">
+             <el-form-item label="排程类型" prop="scheduleType">
+                <DictSelection dictName="排程类型" clearable v-model="form.scheduleType">
+                </DictSelection>
+             </el-form-item>
+           </el-col>
+           <el-col :span="8">
+             <el-form-item label="允许改型" prop="isAllow">
+               <el-radio v-model="form.isAllow" label="1">是</el-radio>
+               <el-radio v-model="form.isAllow" label="0">否</el-radio>
+             </el-form-item>
+           </el-col>
+           <el-col :span="8">
+             <el-form-item label="允许返工返修" prop="isRework">
+               <el-radio v-model="form.isRework" label="1">是</el-radio>
+               <el-radio v-model="form.isRework" label="0">否</el-radio>
+             </el-form-item>
+           </el-col>
+           <el-col :span="8">
+             <el-form-item label="是否返回料" prop="isReturnMaterial">
+               <el-radio v-model="form.isReturnMaterial" label="1">是</el-radio>
+               <el-radio v-model="form.isReturnMaterial" label="0">否</el-radio>
+             </el-form-item>
+           </el-col>
+           <el-col :span="8">
+             <el-form-item label="是否副产品" prop="isByProduct">
+               <el-radio v-model="form.isByProduct" label="1">是</el-radio>
+               <el-radio v-model="form.isByProduct" label="0">否</el-radio>
+             </el-form-item>
+           </el-col>
+           <el-col :span="8">
+             <el-form-item label="是否废品" prop="isWaste">
+               <el-radio v-model="form.isWaste" label="1">是</el-radio>
+               <el-radio v-model="form.isWaste" label="0">否</el-radio>
+             </el-form-item>
+           </el-col>
+           <el-col :span="8">
+             <el-form-item label="是否不良品" prop="isNotGood">
+               <el-radio v-model="form.isNotGood" label="1">是</el-radio>
+               <el-radio v-model="form.isNotGood" label="0">否</el-radio>
+             </el-form-item>
+           </el-col>
+         </el-row>
+      </el-form>
+  </div>
+</template>
+
+<script>
+  import deptSelect from '@/components/CommomSelect/dept-select.vue'
+  import personSelect from '@/components/CommomSelect/person-select.vue';
+  export default {
+    props: {
+      form: {
+        type: Object,
+        default: {}
+      }
+    },
+    components: { deptSelect , personSelect },
+    data() {
+      return {
+
+
+      };
+    },
+
+    methods: {
+      // 选择所属部门
+      searchDeptNodeClick (id, info) {
+        // 根据部门获取人员
+        const params = { executeGroupId: id };
+        this.$nextTick(() => {
+          this.$refs.directorRef.getList(params);
+        });
+      },
+      //选择负责人
+      handleDirectorChange (id, info) {
+      },
+
+
+    }
+  };
+</script>
+
+<style lang="scss" scoped>
+  .other{
+    background: #fff;
+    padding: 1px 17px;
+  }
+  .divider {
+    margin: 0px 0 20px;
+    .title {
+      display: flex;
+      align-items: center;
+      margin-bottom: 10px;
+      div {
+        width: 8px;
+        height: 20px;
+        margin-right: 10px;
+      }
+      span {
+        font-size: 20px;
+      }
+    }
+    .ele-width{
+      width: 100%;
+      height: 2px;
+    }
+  }
+  .form-line{
+    display: flex;
+    align-items: center;
+    justify-content: space-between;
+    .line-select{
+      margin-left:15px;
+    }
+  }
+</style>

+ 113 - 0
src/views/material/manage/components/QualityInfo.vue

@@ -0,0 +1,113 @@
+<template>
+  <div class="other">
+      <el-form label-width="120px"  ref="form" :model="form">
+         <div class="divider">
+           <div class="title">
+             <div class="ele-bg-primary"></div>
+             <span>质量配置</span>
+           </div>
+           <div class="ele-bg-primary ele-width"></div>
+         </div>
+         <el-row :gutter="24">
+           <el-col :span="8">
+             <el-form-item label="是否来料检验" prop="isCheckout">
+                 <el-radio v-model="form.isCheckout" label="1">是</el-radio>
+                 <el-radio v-model="form.isCheckout" label="0">否</el-radio>
+             </el-form-item>
+           </el-col>
+           <el-col :span="8">
+             <el-form-item label="检验方案" prop="lossRate">
+                <DictSelection dictName="检验方案" clearable v-model="form.scheduleType">
+                </DictSelection>
+             </el-form-item>
+           </el-col>
+           <el-col :span="8">
+             <el-form-item label="采购组织" prop="procureGroup">
+               <deptSelect v-model="form.procureGroup" @changeGroup="searchDeptNodeClick"/>
+             </el-form-item>
+           </el-col>
+           <el-col :span="8">
+             <el-form-item label="采购员" prop="purchaserId">
+               <personSelect
+                 ref="directorRef"
+                 v-model="form.purchaserId"
+                 @selfChange="handleDirectorChange"
+                 :init="false"
+               />
+             </el-form-item>
+           </el-col>
+         </el-row>
+      </el-form>
+  </div>
+</template>
+
+<script>
+  import deptSelect from '@/components/CommomSelect/dept-select.vue'
+  import personSelect from '@/components/CommomSelect/person-select.vue';
+  export default {
+    props: {
+      form: {
+        type: Object,
+        default: {}
+      }
+    },
+    components: { deptSelect , personSelect },
+    data() {
+      return {
+
+
+      };
+    },
+
+    methods: {
+      // 选择所属部门
+      searchDeptNodeClick (id, info) {
+        // 根据部门获取人员
+        const params = { executeGroupId: id };
+        this.$nextTick(() => {
+          this.$refs.directorRef.getList(params);
+        });
+      },
+      //选择负责人
+      handleDirectorChange (id, info) {
+      },
+
+
+    }
+  };
+</script>
+
+<style lang="scss" scoped>
+  .other{
+    background: #fff;
+    padding: 1px 17px;
+  }
+  .divider {
+    margin: 0px 0 20px;
+    .title {
+      display: flex;
+      align-items: center;
+      margin-bottom: 10px;
+      div {
+        width: 8px;
+        height: 20px;
+        margin-right: 10px;
+      }
+      span {
+        font-size: 20px;
+      }
+    }
+    .ele-width{
+      width: 100%;
+      height: 2px;
+    }
+  }
+  .form-line{
+    display: flex;
+    align-items: center;
+    justify-content: space-between;
+    .line-select{
+      margin-left:15px;
+    }
+  }
+</style>

+ 87 - 0
src/views/material/manage/components/RemarkInfo.vue

@@ -0,0 +1,87 @@
+<template>
+  <div class="other">
+      <el-form label-width="120px"  ref="form" :model="form">
+         <div class="divider">
+           <div class="title">
+             <div class="ele-bg-primary"></div>
+             <span>备注信息</span>
+           </div>
+           <div class="ele-bg-primary ele-width"></div>
+         </div>
+         <el-row :gutter="24">
+           <el-col :span="24">
+             <el-form-item label="附件" prop="allowReturns">
+                <ele-image-upload v-model="form.files" :limit="1" @upload="onUpload" />
+             </el-form-item>
+           </el-col>
+           <el-col :span="24">
+             <el-form-item label="备注" prop="remark">
+                <el-input  v-model="form.remark" type="textarea" :row="5" resize="none"/>
+             </el-form-item>
+           </el-col>
+         </el-row>
+      </el-form>
+  </div>
+</template>
+
+<script>
+  import EleImageUpload from 'ele-admin/es/ele-image-upload';
+  export default {
+    props: {
+      form: {
+        type: Object,
+        default: {}
+      }
+    },
+    components: { EleImageUpload  },
+    data() {
+      return {
+
+
+      };
+    },
+
+    methods: {
+      onUpload(){
+        
+      }
+
+
+    }
+  };
+</script>
+
+<style lang="scss" scoped>
+  .other{
+    background: #fff;
+    padding: 1px 17px;
+  }
+  .divider {
+    margin: 0px 0 20px;
+    .title {
+      display: flex;
+      align-items: center;
+      margin-bottom: 10px;
+      div {
+        width: 8px;
+        height: 20px;
+        margin-right: 10px;
+      }
+      span {
+        font-size: 20px;
+      }
+    }
+    .ele-width{
+      width: 100%;
+      height: 2px;
+    }
+  }
+  .form-line{
+    display: flex;
+    align-items: center;
+    justify-content: space-between;
+    .line-select{
+      margin-left:15px;
+    }
+  }
+</style>

+ 113 - 0
src/views/material/manage/components/SalesInfo.vue

@@ -0,0 +1,113 @@
+<template>
+  <div class="other">
+      <el-form label-width="120px"  ref="form" :model="form">
+         <div class="divider">
+           <div class="title">
+             <div class="ele-bg-primary"></div>
+             <span>销售信息</span>
+           </div>
+           <div class="ele-bg-primary ele-width"></div>
+         </div>
+         <el-row :gutter="24">
+           <el-col :span="8">
+             <el-form-item label="允许退货" prop="allowReturns">
+                 <el-radio v-model="form.allowReturns" label="1">是</el-radio>
+                 <el-radio v-model="form.allowReturns" label="0">否</el-radio>
+             </el-form-item>
+           </el-col>
+           <el-col :span="8">
+             <el-form-item label="计价单位" prop="lossRate">
+                <DictSelection dictName="重量单位" clearable v-model="form.scheduleType">
+                </DictSelection>
+             </el-form-item>
+           </el-col>
+           <el-col :span="8">
+             <el-form-item label="起订量" prop="fixedNum">
+                <el-input  v-model="form.fixedNum"/>
+             </el-form-item>
+           </el-col>
+           <el-col :span="8">
+             <el-form-item label="超发上限" prop="fixedNum">
+                <el-input v-model="form.lossRate">
+                    <template slot="append">%</template>
+                </el-input>
+             </el-form-item>
+           </el-col>
+           <el-col :span="8">
+             <el-form-item label="超发下限" prop="consumeWave">
+                <el-input v-model="form.lossRate">
+                    <template slot="append">%</template>
+                </el-input>
+             </el-form-item>
+           </el-col>
+           <el-col :span="8">
+             <el-form-item label="参考单价" prop="scheduleType">
+                <div class="form-line">
+                  <el-input  v-model="form.date"/>
+                  <DictSelection class="line-select" dictName="价格单位" clearable v-model="form.dateUnit">
+                  </DictSelection>
+                </div>
+             </el-form-item>
+           </el-col>
+         </el-row>
+      </el-form>
+  </div>
+</template>
+
+<script>
+  export default {
+    props: {
+      form: {
+        type: Object,
+        default: {}
+      }
+    },
+    components: { },
+    data() {
+      return {
+
+
+      };
+    },
+
+    methods: {
+
+
+    }
+  };
+</script>
+
+<style lang="scss" scoped>
+  .other{
+    background: #fff;
+    padding: 1px 17px;
+  }
+  .divider {
+    margin: 0px 0 20px;
+    .title {
+      display: flex;
+      align-items: center;
+      margin-bottom: 10px;
+      div {
+        width: 8px;
+        height: 20px;
+        margin-right: 10px;
+      }
+      span {
+        font-size: 20px;
+      }
+    }
+    .ele-width{
+      width: 100%;
+      height: 2px;
+    }
+  }
+  .form-line{
+    display: flex;
+    align-items: center;
+    justify-content: space-between;
+    .line-select{
+      margin-left:15px;
+    }
+  }
+</style>

+ 104 - 0
src/views/material/manage/components/TurnoverInfo.vue

@@ -0,0 +1,104 @@
+<template>
+  <div class="other">
+      <el-form label-width="120px"  ref="form" :model="form">
+         <div class="divider">
+           <div class="title">
+             <div class="ele-bg-primary"></div>
+             <span>周转车信息</span>
+           </div>
+           <div class="ele-bg-primary ele-width"></div>
+         </div>
+         <el-row :gutter="24">
+           <el-col :span="8">
+             <el-form-item label="层数" prop="fixedNum">
+                <el-input  v-model="form.fixedNum"/>
+             </el-form-item>
+           </el-col>
+           <el-col :span="8">
+             <el-form-item label="材质" prop="lossRate">
+                <el-input  v-model="form.fixedNum"/>
+             </el-form-item>
+           </el-col>
+           <el-col :span="8">
+             <el-form-item label="长" prop="fixedNum">
+                <el-input v-model="form.lossRate">
+                    <template slot="append">mm</template>
+                </el-input>
+             </el-form-item>
+           </el-col>
+           <el-col :span="8">
+             <el-form-item label="宽" prop="consumeWave">
+                <el-input v-model="form.lossRate">
+                    <template slot="append">mm</template>
+                </el-input>
+             </el-form-item>
+           </el-col>
+           <el-col :span="8">
+             <el-form-item label="高" prop="consumeWave">
+                <el-input v-model="form.lossRate">
+                    <template slot="append">mm</template>
+                </el-input>
+             </el-form-item>
+           </el-col>
+         </el-row>
+      </el-form>
+  </div>
+</template>
+
+<script>
+  export default {
+    props: {
+      form: {
+        type: Object,
+        default: {}
+      }
+    },
+    components: { },
+    data() {
+      return {
+
+
+      };
+    },
+
+    methods: {
+
+
+    }
+  };
+</script>
+
+<style lang="scss" scoped>
+  .other{
+    background: #fff;
+    padding: 1px 17px;
+  }
+  .divider {
+    margin: 0px 0 20px;
+    .title {
+      display: flex;
+      align-items: center;
+      margin-bottom: 10px;
+      div {
+        width: 8px;
+        height: 20px;
+        margin-right: 10px;
+      }
+      span {
+        font-size: 20px;
+      }
+    }
+    .ele-width{
+      width: 100%;
+      height: 2px;
+    }
+  }
+  .form-line{
+    display: flex;
+    align-items: center;
+    justify-content: space-between;
+    .line-select{
+      margin-left:15px;
+    }
+  }
+</style>

+ 133 - 0
src/views/material/manage/components/WarehouseInfo.vue

@@ -0,0 +1,133 @@
+<template>
+  <div class="other">
+      <el-form label-width="120px"  ref="form" :model="form">
+         <div class="divider">
+           <div class="title">
+             <div class="ele-bg-primary"></div>
+             <span>仓储配置</span>
+           </div>
+           <div class="ele-bg-primary ele-width"></div>
+         </div>
+         <el-row :gutter="24">
+           <el-col :span="8">
+             <el-form-item label="启用库存预警">
+                <el-radio v-model="form.warning" label="1">是</el-radio>
+                <el-radio v-model="form.warning" label="0">否</el-radio>
+             </el-form-item>
+           </el-col>
+           <el-col :span="8">
+             <el-form-item label="允许拆包" prop="isUnpacking">
+                <el-switch v-model="form.isUnpacking"> </el-switch>
+             </el-form-item>
+           </el-col>
+           <el-col :span="8">
+             <el-form-item label="安全库存" prop="safeStock">
+                <el-input  v-model="form.safeStock"/>
+             </el-form-item>
+           </el-col>
+           <el-col :span="8">
+             <el-form-item label="最小库存" prop="minInventory">
+                <el-input  v-model="form.minInventory"/>
+             </el-form-item>
+           </el-col>
+           <el-col :span="8">
+             <el-form-item label="最大库存" prop="maxInventory">
+                <el-input  v-model="form.maxInventory"/>
+             </el-form-item>
+           </el-col>
+           <el-col :span="8">
+             <el-form-item label="盘点模式" prop="inventoryMode">
+               <el-radio v-model="form.inventoryMode" label="1">逐个盘点</el-radio>
+               <el-radio v-model="form.inventoryMode" label="2">批量盘点</el-radio>
+             </el-form-item>
+           </el-col>
+           <el-col :span="8">
+             <el-form-item label="质保预警参考" prop="qualityAssurance">
+                <DictSelection dictName="质保预警参考" clearable v-model="form.qualityAssurance">
+                </DictSelection>
+             </el-form-item>
+           </el-col>
+           <el-col :span="8">
+             <el-form-item label="保质期">
+                <div class="form-line">
+                  <el-input  v-model="form.date"/>
+                  <DictSelection class="line-select" dictName="保质期单位" clearable v-model="form.dateUnit">
+                  </DictSelection>
+                </div>
+             </el-form-item>
+           </el-col>
+         </el-row>
+      </el-form>
+  </div>
+</template>
+
+<script>
+  import deptSelect from '@/components/CommomSelect/dept-select.vue'
+  import personSelect from '@/components/CommomSelect/person-select.vue';
+  export default {
+    props: {
+      form: {
+        type: Object,
+        default: {}
+      }
+    },
+    components: { deptSelect , personSelect },
+    data() {
+      return {
+
+
+      };
+    },
+
+    methods: {
+      // 选择所属部门
+      searchDeptNodeClick (id, info) {
+        // 根据部门获取人员
+        const params = { executeGroupId: id };
+        this.$nextTick(() => {
+          this.$refs.directorRef.getList(params);
+        });
+      },
+      //选择负责人
+      handleDirectorChange (id, info) {
+      },
+
+
+    }
+  };
+</script>
+
+<style lang="scss" scoped>
+  .other{
+    background: #fff;
+    padding: 1px 17px;
+  }
+  .divider {
+    margin: 0px 0 20px;
+    .title {
+      display: flex;
+      align-items: center;
+      margin-bottom: 10px;
+      div {
+        width: 8px;
+        height: 20px;
+        margin-right: 10px;
+      }
+      span {
+        font-size: 20px;
+      }
+    }
+    .ele-width{
+      width: 100%;
+      height: 2px;
+    }
+  }
+  .form-line{
+    display: flex;
+    align-items: center;
+    justify-content: space-between;
+    .line-select{
+      margin-left:15px;
+    }
+  }
+</style>

+ 142 - 20
src/views/material/manage/manageMaterial.vue

@@ -1,7 +1,7 @@
 <template>
   <div class="ele-body">
     <el-card shadow="never">
-      <el-form label-width="90px"  ref="form" :model="form" :rules="rules">
+      <el-form label-width="120px"  ref="form" :model="form" :rules="rules">
          <div class="body-top">
             <div class="top-left">
                <div class="ele-page-header ele-cell">
@@ -9,8 +9,8 @@
                </div>
                <el-row :gutter="24">
                  <el-col :span="24">
-                   <el-form-item label="物料组"  label-width="70px" prop="categoryLevelRootName">
-                      <el-input @click.native="chooseMaterial" v-model="form.categoryLevelRootName"/>
+                   <el-form-item label="物料组"  label-width="70px" prop="categoryLevelGroupName">
+                      <el-input @click.native="chooseMaterial" v-model="form.categoryLevelGroupName"/>
                    </el-form-item>
                  </el-col>
                </el-row>
@@ -39,53 +39,154 @@
              </el-form-item>
            </el-col>
            <el-col :span="8">
-             <el-form-item label="分类" prop="categoryName">
-                <el-input  v-model="form.categoryName"/>
+             <el-form-item label="分类" prop="categoryLevelName">
+                <el-input  v-model="form.categoryLevelName"/>
              </el-form-item>
            </el-col>
            <el-col :span="8">
-             <el-form-item label="牌号" prop="brand">
-                <el-input  v-model="form.brand"/>
+             <el-form-item label="牌号" prop="brandNum">
+                <el-input  v-model="form.brandNum"/>
              </el-form-item>
            </el-col>
            <el-col :span="8">
-             <el-form-item label="规格" prop="specifications">
-                <el-input  v-model="form.specifications"/>
+             <el-form-item label="规格" prop="specification">
+                <el-input  v-model="form.specification"/>
              </el-form-item>
            </el-col>
            <el-col :span="8">
-             <el-form-item label="型号" prop="model">
-                <el-input  v-model="form.model"/>
+             <el-form-item label="型号" prop="modelType">
+                <el-input  v-model="form.modelType"/>
+             </el-form-item>
+           </el-col>
+           <el-col :span="8">
+             <el-form-item label="计量单位" prop="measuringUnit">
+                <DictSelection dictName="计量单位" clearable v-model="form.measuringUnit">
+                </DictSelection>
+             </el-form-item>
+           </el-col>
+           <el-col :span="8">
+             <el-form-item label="包装单位" prop="packingUnit">
+                <DictSelection dictName="包装单位" clearable v-model="form.packingUnit">
+                </DictSelection>
+             </el-form-item>
+           </el-col>
+           <el-col :span="8">
+             <el-form-item label="体积">
+                <div class="form-line">
+                  <el-input  v-model="form.volume"/>
+                  <DictSelection class="line-select" dictName="体积单位" clearable v-model="form.volumeUnit">
+                  </DictSelection>
+                </div>
+             </el-form-item>
+           </el-col>
+           <el-col :span="8">
+             <el-form-item label="毛重">
+                <div class="form-line">
+                  <el-input  v-model="form.roughWeight"/>
+                  <DictSelection class="line-select" dictName="重量单位" clearable v-model="form.roughWeightUnit">
+                  </DictSelection>
+                </div>
+             </el-form-item>
+           </el-col>
+           <el-col :span="8">
+             <el-form-item label="净重">
+                <div class="form-line">
+                  <el-input  v-model="form.netWeight"/>
+                  <DictSelection class="line-select" dictName="重量单位" clearable v-model="form.netWeightUnit">
+                  </DictSelection>
+                </div>
+             </el-form-item>
+           </el-col>
+           <el-col :span="8">
+             <el-form-item label="是否产品" prop="isProduct">
+                <el-switch v-model="form.isProduct"> </el-switch>
+             </el-form-item>
+           </el-col>
+           <el-col :span="8">
+             <el-form-item label="所属部门">
+                <deptSelect v-model="form.deptLeaderId" @changeGroup="searchDeptNodeClick"/>
+             </el-form-item>
+           </el-col>
+           <el-col :span="8">
+             <el-form-item label="负责人">
+                <personSelect
+                  ref="directorRef"
+                  v-model="form.deptId"
+                  @selfChange="handleDirectorChange"
+                  :init="false"
+                />
+             </el-form-item>
+           </el-col>
+           <el-col :span="8">
+             <el-form-item label="产品分类">
+                <el-input  v-model="form.categoryLevelName"/>
              </el-form-item>
            </el-col>
          </el-row>
-
-
       </el-form>
     </el-card>
 
     <!-- 物料组弹窗 -->
     <GroupDialog ref="groupRefs" @changeMaterial='determineChoose'/>
+
+    <!-- 仓储配置 -->
+    <WarehouseInfo ref="warehouseRefs" :form="form"/>
+   <!-- 采购 -->
+    <ProcureInfo ref="procureRefs" :form="form"/>
+    <!-- 生产信息 -->
+     <ProductionInfo ref="productionRefs" :form="form"/>
+     <!-- 计划 -->
+     <PlanInfo ref="planRefs" :form="form"/>
+     <!-- 销售信息 -->
+     <SalesInfo ref="salesRefs" :form="form"/>
+     <!-- 质量配置 -->
+     <QualityInfo ref="qualityRefs" :form="form"/>
+     <!-- 舟皿信息 -->
+     <BoatInfo ref="qualityRefs" :form="form"/>
+     <!-- 周转车信息 -->
+     <TurnoverInfo ref="turnoverRefs" :form="form"/>
+     <!-- 模具信息 -->
+     <MoldInfo ref="moldRefs" :form="form"/>
+     <!-- 备注信息 -->
+     <RemarkInfo ref="remarkRefs" :form="form"/>
   </div>
 </template>
 
 <script>
-  import GroupDialog from './components/GroupDialog.vue'
+  import GroupDialog from './components/GroupDialog.vue';
+  import WarehouseInfo from './components/WarehouseInfo.vue';
+  import ProcureInfo from './components/ProcureInfo.vue';
+  import ProductionInfo from './components/ProductionInfo.vue';
+  import PlanInfo from './components/PlanInfo.vue';
+  import SalesInfo from './components/SalesInfo.vue';
+  import QualityInfo from './components/QualityInfo.vue';
+  import BoatInfo from './components/BoatInfo.vue';
+  import TurnoverInfo from './components/TurnoverInfo.vue';
+  import MoldInfo from './components/MoldInfo.vue';
+  import RemarkInfo from './components/RemarkInfo.vue';
+  import deptSelect from '@/components/CommomSelect/dept-select.vue';
+  import personSelect from '@/components/CommomSelect/person-select.vue';
   export default {
     name: 'ManageMaterial',
-    components: { GroupDialog },
+    components: {
+      GroupDialog , deptSelect , personSelect , WarehouseInfo , ProcureInfo ,ProductionInfo ,
+      PlanInfo , SalesInfo , QualityInfo , BoatInfo , TurnoverInfo , MoldInfo , RemarkInfo
+    },
     data() {
       return {
          form:{
-           categoryLevelRootName:'',
-           categoryName:''
+           categoryLevelGroupName:'',
+           categoryLevelName:'',
+           files:[]
          },
          // 表单验证规则
          rules: {
-         	  categoryLevelRootName:[{ required: true, message: '请选择所属物料组', trigger: 'change' }],
+         	  categoryLevelGroupName:[{ required: true, message: '请选择所属物料组', trigger: 'change' }],
             code:[{ required: true, message: '请输入编码', trigger: 'blur' }],
             name:[{ required: true, message: '请输入名称', trigger: 'blur' }],
-            categoryName:[{ required: true, message: '请选择所属分类', trigger: 'change' }],
+            categoryLevelName:[{ required: true, message: '请选择所属分类', trigger: 'change' }],
+            measuringUnit:[{ required: true, message: '请选择计量单位', trigger: 'change' }],
+            isProduct:[{ required: true, message: '请选择是否产品', trigger: 'change' }],
          },
          chooseItem:null,
 
@@ -94,12 +195,25 @@
     },
 
     methods: {
+      // 选择所属部门
+      searchDeptNodeClick (id, info) {
+        // 根据部门获取人员
+        const params = { executeGroupId: id };
+        this.$nextTick(() => {
+          this.$refs.directorRef.getList(params);
+        });
+      },
+      //选择负责人
+      handleDirectorChange (id, info) {
+      },
+
       chooseMaterial(){
           this.$refs.groupRefs.open(this.chooseItem)
       },
       determineChoose(row){
         this.chooseItem = row
-        this.$set(this.form,'categoryLevelRootName',row.name)
+        this.$set(this.form,'categoryLevelGroupName',row.name)
+        this.$set(this.form,'categoryLevelGroupId',row.id)
       },
       cancel(){
         this.$router.go(-1)
@@ -149,4 +263,12 @@
       height: 2px;
     }
   }
+  .form-line{
+    display: flex;
+    align-items: center;
+    justify-content: space-between;
+    .line-select{
+      margin-left:15px;
+    }
+  }
 </style>

+ 1 - 1
src/views/rulesManagement/planRules/components/addInventoryDialog.vue

@@ -155,7 +155,7 @@
         </el-col>
         <el-col :span="8" v-if="addForm.isSyncBill">
           <el-form-item label="执行部门" prop="executorDeptCode">
-				<deptSelect v-model="addForm.executorDeptCode" @changeGroup="searchDeptNodeClick"/>
+				    <deptSelect v-model="addForm.executorDeptCode" @changeGroup="searchDeptNodeClick"/>
           </el-form-item>
         </el-col>
         <el-col :span="8" v-if="addForm.isSyncBill">