ysy 1 год назад
Родитель
Сommit
0602845ab4

+ 126 - 0
src/views/produce/components/feeding/components/instanceBom.vue

@@ -0,0 +1,126 @@
+<template>
+    <div>
+        <div class="title_box rx-bc mt6">
+            <div class="name">物料清单 </div>
+
+            <div class="rx-bc"> </div>
+        </div>
+
+        <div class="material">
+            <div class="content_table mb4" v-for="(item, index) in list" :key="index">
+                <div class="item rx-sc">
+                    <div class="rx ww33">
+                        <div class="lable rx-cc">编码</div>
+                        <div class="content">
+                            {{ item.code }}
+                        </div>
+                    </div>
+
+                    <div class="rx ww33">
+                        <div class="lable rx-cc">名称</div>
+                        <div class="content">{{ item.name }}</div>
+                    </div>
+
+                    <div class="rx ww33">
+                        <div class="lable rx-cc">型号</div>
+                        <div class="content">{{ item.modelType }}</div>
+                    </div>
+                </div>
+
+                <div class="item rx-sc">
+                    <div class="rx ww33">
+                        <div class="lable rx-cc">规格</div>
+                        <div class="content rx-sc">
+                            <div>{{ item.specification }}</div>
+                        </div>
+                    </div>
+
+                    <div class="rx ww33">
+                        <div class="lable rx-cc">牌号</div>
+                        <div class="content rx-sc">
+                            <div>{{ item.brandNum }}</div>
+                        </div>
+                    </div>
+
+                    <div class="rx ww33">
+                        <div class="lable rx-cc">包装库存</div>
+                        <div class="content rx-sc">
+                            <div>{{ item.packingCountBase }}/ {{ item.minUnit }}</div>
+                        </div>
+                    </div>
+                </div>
+
+                <div class="item rx-sc">
+                    <div class="rx ww33" v-if="item.isConsumable == 1">
+                        <div class="lable rx-cc">数量</div>
+                        <div class="content content_num rx-sc">
+                            <el-input size="mini" v-model="item.feedQuantity" placeholder="数量">
+
+                            </el-input>
+                        </div>
+                    </div>
+
+                    <div class="rx ww33" v-if="item.isConsumable == 0">
+                        <div class="lable rx-cc">>{{ currentTaskDiagram.isFirstTask == 1 ? '物料重量': '上道重量' }}</div>
+                        <div class="content" v-if="currentTaskDiagram.isFirstTask == 1" >	{{item.extInfo.weight || 0}} {{ item.extInfo.weightUnit}}</div>
+                        <div class="content" v-if="currentTaskDiagram.isFirstTask == 0" >	{{item.extInfo.newWeight || 0}} {{ item.extInfo.weightUnit}}</div>
+                    </div>
+
+                    
+                    <div class="rx ww33" v-if="item.isConsumable == 0">
+                        <div class="lable rx-cc">刻码</div>
+                        <div class="content">{{ item.extInfo.engrave }}</div>
+                    </div>
+
+                      
+                    <div class="rx ww33" v-if="item.isConsumable == 0">
+                        <div class="lable rx-cc">物料代号</div>
+                        <div class="content">{{ item.extInfo.materielCode }}</div>
+                    </div>
+
+
+
+                </div>
+      
+
+            <div class="del_box">
+                <el-link type="danger" icon="el-icon-delete" @click="getDelete(index)"></el-link>
+            </div>
+        </div>
+    </div>
+    </div>
+</template>
+<script>
+export default {
+    props: {
+        list: {
+            type: Array,
+            default: () => []
+        },
+        equipmentList: {
+            type: Array,
+            default: () => []
+        },
+
+        currentTaskDiagram: {
+            type: Object,
+            default: () => { }
+        },
+        isDetails: {
+            type: Boolean,
+            default: false
+        }
+    },
+    methods: {
+        getDelete(index) {
+            this.list.splice(index, 1);
+        }
+    }
+};
+</script>
+
+<style lang="scss" scoped>
+.mb4 {
+    margin-bottom: 4px;
+}
+</style>

+ 62 - 0
src/views/produce/components/feeding/components/modelBom.vue

@@ -5,6 +5,63 @@
 
       <div class="rx-bc"> </div>
     </div>
+
+    <div class="material">
+      <div class="content_table" v-for="(item, index) in list" :key="index">
+        <div class="item rx-sc">
+          <div class="rx ww33">
+            <div class="lable rx-cc">模具名称</div>
+            <div class="content">
+              {{
+                item.name 
+              }}
+            </div>
+          </div>
+
+          <div class="rx ww33">
+            <div class="lable rx-cc">模具编码</div>
+            <div class="content">{{ item.code }}</div>
+          </div>
+
+          <div class="rx ww33">
+            <div class="lable rx-cc">模具编号</div>
+            <div class="content">{{ item.codeNumber }}</div>
+          </div>
+        </div>
+
+        <div class="item rx-sc">
+          <div class="rx ww33">
+            <div class="lable rx-cc">已冲压次数</div>
+            <div class="content rx-sc">
+              <div>{{ item.startCyTimes}}</div>
+            </div>
+          </div>
+
+
+
+          <div class="rx ww33">
+            <div class="lable rx-cc">最大冲压数</div>
+            <div class="content rx-sc">
+              <div>{{ item.extInfo.maxCyTimes }}</div>
+            </div>
+          </div>
+
+          <div class="rx ww33">
+            <div class="lable rx-cc">本次冲压数</div>
+            <div class="content content_num rx-sc">
+              <el-input size="mini" v-model="item.extInfo.cyTimes" placeholder="请输入本次冲压数" />
+            </div>
+          </div>
+        </div>
+
+        <div class="del_box">
+          <el-link type="danger" icon="el-icon-delete" @click="getDelete(index)"></el-link>
+        </div>
+      </div>
+    </div>
+
+
+
   </div>
 </template>
 <script>
@@ -14,6 +71,11 @@
         type: Array,
         default: () => []
       }
+    },
+    methods: {
+      getDelete(index) {
+        this.list.splice(index, 1)
+      }
     }
   };
 </script>

+ 309 - 284
src/views/produce/components/feeding/index.vue

@@ -1,7 +1,7 @@
 <template>
   <div>
     <div class="top_fixed">
-      <el-button type="primary" size="mini">一键投料</el-button>
+      <el-button type="primary" size="mini">一键投料(报工)</el-button>
       <el-button type="primary" size="mini">清空缓存</el-button>
       <el-button type="primary" size="mini">缓存</el-button>
     </div>
@@ -13,7 +13,12 @@
 
           <div class="rx-bc">
             <el-button type="text" size="mini">出库单</el-button>
-            <el-button type="text" size="mini" @click="openPicking(item.workOrderId, item)">添加物料</el-button>
+            <el-button
+              type="text"
+              size="mini"
+              @click="openPicking(item.workOrderId, item)"
+              >添加物料</el-button
+            >
             <el-button type="text" size="mini">清空缓存</el-button>
             <el-button type="text" size="mini">缓存</el-button>
           </div>
@@ -21,344 +26,364 @@
 
         <workOrderBom :item="item"></workOrderBom>
 
-        <paramBom v-if="item.paramDetailList.length != 0" :list="item.paramDetailList"></paramBom>
+        <paramBom
+          v-if="item.paramDetailList.length != 0"
+          :list="item.paramDetailList"
+        ></paramBom>
 
-        <deviceBom v-if="item.equipmentList.length != 0" :list="item.equipmentList"></deviceBom>
+        <deviceBom
+          v-if="item.equipmentList.length != 0"
+          :list="item.equipmentList"
+        ></deviceBom>
 
-        <productsBom v-if="item.product != null && item.product != '{}'" :itemObj="item" :productsObj="item.product">
+        <productsBom
+          v-if="item.product != null && item.product != '{}'"
+          :itemObj="item"
+          :productsObj="item.product"
+        >
         </productsBom>
 
-
-        <modelBom v-if='item.modelList.length != 0'  :list='item.modelList'
-        >
+        <modelBom v-if="item.modelList.length != 0" :list="item.modelList">
         </modelBom>
 
+        <instanceBom
+          v-if="item.instanceList.length != 0"
+          :list="item.instanceList"
+          :equipmentList="item.equipmentList"
+          :currentTaskDiagram="item.currentTaskDiagram"
+        ></instanceBom>
       </div>
     </div>
 
-    <pickingList isType="feed" ref="pickingListRef" @allSelection="allSelection"></pickingList>
+    <pickingList
+      isType="feed"
+      ref="pickingListRef"
+      @allSelection="allSelection"
+    ></pickingList>
   </div>
 </template>
 
 <script>
-import { workorderList } from '@/api/produce/workOrder';
-
-import pickingList from '../picking/pickingList.vue';
-
-import workOrderBom from './components/workOrderBom.vue';
-import paramBom from './components/paramBom.vue';
-import deviceBom from './components/deviceBom.vue';
-import productsBom from './components/productsBom.vue';
-import modelBom from './components/modelBom.vue';
-export default {
-  name: 'feeding',
-  components: {
-    pickingList,
-
-    workOrderBom,
-    paramBom,
-    deviceBom,
-    productsBom,
-    modelBom
-  },
-  props: {
-    workListIds: {
-      type: Array,
-      default() {
-        return [];
+  import { workorderList } from '@/api/produce/workOrder';
+
+  import pickingList from '../picking/pickingList.vue';
+
+  import workOrderBom from './components/workOrderBom.vue';
+  import paramBom from './components/paramBom.vue';
+  import deviceBom from './components/deviceBom.vue';
+  import productsBom from './components/productsBom.vue';
+  import modelBom from './components/modelBom.vue';
+  import instanceBom from './components/instanceBom.vue';
+  export default {
+    name: 'feeding',
+    components: {
+      pickingList,
+
+      workOrderBom,
+      paramBom,
+      deviceBom,
+      productsBom,
+      modelBom,
+      instanceBom
+    },
+    props: {
+      workListIds: {
+        type: Array,
+        default() {
+          return [];
+        }
       }
-    }
-  },
+    },
 
-  computed: {
-    taskObj() {
-      return this.$store.state.user.taskObj;
-    }
-  },
+    computed: {
+      taskObj() {
+        return this.$store.state.user.taskObj;
+      }
+    },
 
-  watch: {
-    workListIds: {
-      handler(val) {
-        this.getList(val);
-      },
-      deep: true,
-      immediate: true
-    }
-  },
-  data() {
-    return {
-      List: []
-    };
-  },
-
-  methods: {
-    getList(ids) {
-      let param = {
-        ids: ids,
-        taskId: this.taskObj.id
+    watch: {
+      workListIds: {
+        handler(val) {
+          this.getList(val);
+        },
+        deep: true,
+        immediate: true
+      }
+    },
+    data() {
+      return {
+        List: []
       };
-      workorderList(param).then((res) => {
-        this.List = res.map((m) => {
-          m.workOrderId = m.id;
-          m.paramDetailList = [];
-
-          m.instanceList = []; // 物料
-          m.equipmentList = []; // 设备
-          m.modelList = []; // 模具
-          m.aridRegionList = []; // 干燥区
-          m.packingList = []; // 包装
-          m.palletList = []; // 舟皿
-          m.revolvingDiskList = []; // 周转盘
-          m.semiProductList = []; //半成品
-
-          if (m.pickOutInList.length > 0) {
-            m.pickOutInList.forEach((f) => {
-              if (f.rootCategoryLevelId == 1) {
-                m.instanceList.push(f);
-              } else if (f.rootCategoryLevelId == 4) {
-                m.modelList.push(f);
-              } else if (f.rootCategoryLevelId == 5) {
-                m.modelList.push(f);
+    },
+
+    methods: {
+      getList(ids) {
+        let param = {
+          ids: ids,
+          taskId: this.taskObj.id
+        };
+        workorderList(param).then((res) => {
+          this.List = res.map((m) => {
+            m.workOrderId = m.id;
+            m.paramDetailList = [];
+
+            m.instanceList = []; // 物料
+            m.equipmentList = []; // 设备
+            m.modelList = []; // 模具
+            m.aridRegionList = []; // 干燥区
+            m.packingList = []; // 包装
+            m.palletList = []; // 舟皿
+            m.revolvingDiskList = []; // 周转盘
+            m.semiProductList = []; //半成品
+
+            if (m.pickOutInList.length > 0) {
+              m.pickOutInList.forEach((f) => {
+                if (f.rootCategoryLevelId == 1) {
+                  m.instanceList.push(f);
+                } else if (f.rootCategoryLevelId == 4) {
+                  m.modelList.push(f);
+                } else if (f.rootCategoryLevelId == 5) {
+                  m.modelList.push(f);
+                } else if (f.rootCategoryLevelId == 11) {
+                  m.aridRegionList.push(f);
+                } else if (f.rootCategoryLevelId == 13) {
+                  m.packingList.push(f);
+                } else if (f.rootCategoryLevelId == 8) {
+                  m.palletList.push(f);
+                } else if (f.rootCategoryLevelId == 26) {
+                  m.revolvingDiskList.push(f);
+                } else if (
+                  [23, 2, 9, 28].includes(Number(f.rootCategoryLevelId))
+                ) {
+                  m.semiProductList.push(f);
+                }
+              });
+            }
+
+            // 处理字段
+            m.quality == '' ? (m.quality = {}) : '';
+
+            if (!Object.prototype.hasOwnProperty.call(m, 'product')) {
+              m.product = '{}';
+            }
+
+            delete m.id;
+            if (this.taskObj.id) {
+              m.taskId = this.taskObj.id;
+              m.taskName = this.taskObj.name;
+            }
+            return {
+              ...m
+            };
+          });
+        });
+
+        this.$forceUpdate();
+      },
+
+      openPicking(id, item) {
+        this.$refs.pickingListRef.open(id, item);
+      },
+
+      allSelection(id, selectList) {
+        this.List.forEach((m) => {
+          if (m.workOrderId == id) {
+            let modelList = []; // 模具
+            let instanceList = []; // 投料
+            let aridRegionList = []; // 干燥区
+            let equipmentList = []; // 生产设备
+            let palletList = []; // 舟皿
+            let revolvingDiskList = []; // 周转盘
+            let semiProductList = []; // 半成品
+            let turnover = []; //周转车
+
+            selectList.forEach((f) => {
+              if (f.rootCategoryLevelId == 4) {
+                equipmentList = equipmentList.concat(f);
+              }
+              if (f.rootCategoryLevelId == 5) {
+                modelList = modelList.concat(f);
+              } else if (f.rootCategoryLevelId == 1) {
+                instanceList = instanceList.concat(f);
               } else if (f.rootCategoryLevelId == 11) {
-                m.aridRegionList.push(f);
-              } else if (f.rootCategoryLevelId == 13) {
-                m.packingList.push(f);
+                aridRegionList = aridRegionList.concat(f);
+              } else if (f.rootCategoryLevelId == 7) {
+                turnover = turnover.concat(f);
               } else if (f.rootCategoryLevelId == 8) {
-                m.palletList.push(f);
+                palletList = palletList.concat(f);
               } else if (f.rootCategoryLevelId == 26) {
-                m.revolvingDiskList.push(f);
+                revolvingDiskList = revolvingDiskList.concat(f);
               } else if (
                 [23, 2, 9, 28].includes(Number(f.rootCategoryLevelId))
               ) {
-                m.semiProductList.push(f);
+                semiProductList = semiProductList.concat(f);
               }
             });
-          }
 
-          // 处理字段
-          m.quality == '' ? (m.quality = {}) : '';
+            this.$set(m, 'modelList', modelList);
+            this.$set(m, 'instanceList', instanceList);
+            this.$set(m, 'aridRegionList', aridRegionList);
+            this.$set(m, 'equipmentList', equipmentList);
+            this.$set(m, 'turnover', turnover);
+            this.$set(m, 'palletList', palletList);
+            this.$set(m, 'revolvingDiskList', revolvingDiskList);
+            this.$set(m, 'semiProductList', semiProductList);
 
-          if (!Object.prototype.hasOwnProperty.call(m, 'product')) {
-            m.product = '{}';
+            this.$forceUpdate();
           }
-
-          delete m.id;
-          if (this.taskObj.id) {
-            m.taskId = this.taskObj.id;
-            m.taskName = this.taskObj.name;
-          }
-          return {
-            ...m
-          };
         });
-      });
-
-      this.$forceUpdate();
-    },
-
-    openPicking(id, item) {
-      this.$refs.pickingListRef.open(id, item);
-    },
-
-    allSelection(id, selectList) {
-      this.List.forEach((m) => {
-        if (m.workOrderId == id) {
-          let modelList = []; // 模具
-          let instanceList = []; // 投料
-          let aridRegionList = []; // 干燥区
-          let equipmentList = []; // 生产设备
-          let palletList = []; // 舟皿
-          let revolvingDiskList = []; // 周转盘
-          let semiProductList = []; // 半成品
-          let turnover = []; //周转车
-
-          selectList.forEach((f) => {
-            if (f.rootCategoryLevelId == 4) {
-              equipmentList = equipmentList.concat(f);
-            }
-            if (f.rootCategoryLevelId == 5) {
-              modelList = modelList.concat(f);
-            } else if (f.rootCategoryLevelId == 1) {
-              instanceList = instanceList.concat(f);
-            } else if (f.rootCategoryLevelId == 11) {
-              aridRegionList = aridRegionList.concat(f);
-            } else if (f.rootCategoryLevelId == 7) {
-              turnover = turnover.concat(f);
-            } else if (f.rootCategoryLevelId == 8) {
-              palletList = palletList.concat(f);
-            } else if (f.rootCategoryLevelId == 26) {
-              revolvingDiskList = revolvingDiskList.concat(f);
-            } else if (
-              [23, 2, 9, 28].includes(Number(f.rootCategoryLevelId))
-            ) {
-              semiProductList = semiProductList.concat(f);
-            }
-          });
-
-          this.$set(m, 'modelList', modelList);
-          this.$set(m, 'instanceList', instanceList);
-          this.$set(m, 'aridRegionList', aridRegionList);
-          this.$set(m, 'equipmentList', equipmentList);
-          this.$set(m, 'turnover', turnover);
-          this.$set(m, 'palletList', palletList);
-          this.$set(m, 'revolvingDiskList', revolvingDiskList);
-          this.$set(m, 'semiProductList', semiProductList);
-
-          this.$forceUpdate();
-        }
-      });
+      }
     }
-  }
-};
+  };
 </script>
 
 <style scoped lang="scss">
-.top_fixed {
-  width: 100%;
-  height: 40px;
-  background: #fff;
-  display: flex;
-  align-items: center;
-  justify-content: flex-end;
-}
-
-.feed_box {
-  margin-top: 6px;
-  width: 100%;
-  height: calc(100vh - 70px - 50px - 80px - 60px);
-  overflow-y: scroll;
-  overflow-x: hidden;
-}
-
-.card_box {
-  background: #fff;
-  padding: 8px;
-  border-radius: 2px;
-}
+  .top_fixed {
+    width: 100%;
+    height: 40px;
+    background: #fff;
+    display: flex;
+    align-items: center;
+    justify-content: flex-end;
+  }
+
+  .feed_box {
+    margin-top: 6px;
+    width: 100%;
+    height: calc(100vh - 70px - 50px - 80px - 60px);
+    overflow-y: scroll;
+    overflow-x: hidden;
+  }
+
+  .card_box {
+    background: #fff;
+    padding: 8px;
+    border-radius: 2px;
+  }
 </style>
 
 <style lang="scss">
-.mt6 {
-  margin-top: 6px;
-}
-
-.title_box {
-  .name {
-    font-size: 14px;
-    font-style: normal;
-    font-weight: 400;
-    color: #157a2c;
-    padding-left: 5px;
-    position: relative;
-
-    &:before {
-      position: absolute;
-      content: '';
-      left: 0px;
-      top: 0px;
-      bottom: 0px;
-      width: 2px;
-      height: 14px;
-      background: #157a2c;
-      margin: auto;
+  .mt6 {
+    margin-top: 6px;
+  }
+
+  .title_box {
+    .name {
+      font-size: 14px;
+      font-style: normal;
+      font-weight: 400;
+      color: #157a2c;
+      padding-left: 5px;
+      position: relative;
+
+      &:before {
+        position: absolute;
+        content: '';
+        left: 0px;
+        top: 0px;
+        bottom: 0px;
+        width: 2px;
+        height: 14px;
+        background: #157a2c;
+        margin: auto;
+      }
     }
   }
-}
 
-.material {
-  margin-top: 6px;
+  .material {
+    margin-top: 6px;
 
-  .content_table {
-    width: 100%;
-    border: 1px solid #e3e5e5;
-    position: relative;
-
-    .item {
-      display: flex;
-      border-bottom: 1px solid #e3e5e5;
-
-      .lable {
-        width: 66px;
-        text-align: center;
-        background-color: #f7f9fa;
-        font-size: 13px;
-        border-right: 1px solid #e3e5e5;
-        flex-shrink: 0;
-      }
+    .content_table {
+      width: 100%;
+      border: 1px solid #e3e5e5;
+      position: relative;
 
-      .lable80 {
-        width: 80px !important;
-        font-size: 12px;
-      }
+      .item {
+        display: flex;
+        border-bottom: 1px solid #e3e5e5;
 
-      .ww60 {
-        width: 60px;
-      }
+        .lable {
+          width: 72px;
+          text-align: center;
+          background-color: #f7f9fa;
+          font-size: 12px;
+          border-right: 1px solid #e3e5e5;
+          flex-shrink: 0;
+        }
 
-      .content {
-        width: 250px;
-        min-height: 32px;
-        font-size: 14px;
-        line-height: 14px;
-        font-style: normal;
-        font-weight: 400;
-        padding: 9px 4px;
-        box-sizing: border-box;
-        word-wrap: break-word;
-        flex-grow: 1 !important;
-
-        .unit {
-          padding: 0 2px;
+        .lable80 {
+          width: 80px !important;
           font-size: 12px;
-          color: #404446;
         }
-      }
 
-      .content_num {
-        display: flex;
-        align-items: center;
-        padding: 2px;
-        --input-background-color: #f0f8f2;
-      }
+        .ww60 {
+          width: 60px;
+        }
 
-      .pd2 {
-        padding: 2px 4px;
-      }
+        .content {
+          width: 250px;
+          min-height: 32px;
+          font-size: 14px;
+          line-height: 14px;
+          font-style: normal;
+          font-weight: 400;
+          padding: 9px 4px;
+          box-sizing: border-box;
+          word-wrap: break-word;
+          flex-grow: 1 !important;
+
+          .unit {
+            padding: 0 2px;
+            font-size: 12px;
+            color: #404446;
+          }
+        }
 
-      &:last-child {
-        border-bottom: none;
+        .content_num {
+          display: flex;
+          align-items: center;
+          padding: 2px;
+          --input-background-color: #f0f8f2;
+        }
+
+        .pd2 {
+          padding: 2px 4px;
+        }
+
+        &:last-child {
+          border-bottom: none;
+        }
       }
-    }
 
-    .ww55 {
-      width: 55%;
-    }
+      .ww55 {
+        width: 55%;
+      }
 
-    .ww50 {
-      width: 50%;
-    }
+      .ww50 {
+        width: 50%;
+      }
 
-    .ww45 {
-      width: 45%;
-    }
+      .ww45 {
+        width: 45%;
+      }
 
-    .ww30 {
-      width: 30%;
-    }
+      .ww30 {
+        width: 30%;
+      }
 
-    .ww33 {
-      width: 33.33%;
-    }
+      .ww33 {
+        width: 33.33%;
+      }
 
-    .ww20 {
-      width: 20%;
-    }
+      .ww20 {
+        width: 20%;
+      }
 
-    .del_box {
-      position: absolute;
-      right: 2px;
-      top: 2px;
+      .del_box {
+        position: absolute;
+        right: 2px;
+        top: 2px;
+      }
     }
   }
-}
 </style>