ysy пре 1 година
родитељ
комит
d14e9bbef6

+ 93 - 0
src/views/produce/components/feeding/components/aridRegion.vue

@@ -0,0 +1,93 @@
+<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" 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">
+              {{ !isType ? item.code : item.aridRegionList[0].code }}
+            </div>
+          </div>
+
+          <div class="rx ww33">
+            <div class="lable rx-cc">状态</div>
+            <div
+              class="content"
+              :style="{ color: item.status == 0 ? '#157A2C' : '#FFA929' }"
+            >
+              {{ item.status == 0 ? '空闲' : item.status == 1 ? '占用' : '' }}
+            </div>
+          </div>
+
+          <div class="rx ww33">
+            <div class="lable rx-cc">名称</div>
+            <div class="content">{{ item.name }}</div>
+          </div>
+        </div>
+
+        <div class="item rx-sc">
+          <div class="rx ww33">
+            <div class="lable rx-cc">位置</div>
+            <div class="content rx-sc">
+              <div>{{ !isType ? item.region : item.extInfo.region }}</div>
+            </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 {
+    name: 'deviceBom',
+    props: {
+      list: {
+        type: Array,
+        default: () => []
+      },
+      wordItem: {
+        type: Object,
+        default: () => {}
+      },
+      isType: {
+        type: Boolean,
+        default: false
+      },
+
+      remainingTime: {
+        type: Number,
+        default: 0
+      }
+    },
+
+    computed: {},
+
+    data() {
+      return {};
+    },
+
+    methods: {
+      getDelete(idx) {
+        this.list.splice(idx, 1);
+      }
+    }
+  };
+</script>
+
+<style scoped lang="scss"></style>

+ 110 - 0
src/views/produce/components/feeding/components/packingBom.vue

@@ -0,0 +1,110 @@
+<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" 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.specification }}</div>
+          </div>
+        </div>
+
+        <div class="item rx-sc">
+          <div class="rx ww33">
+            <div class="lable rx-cc">型号</div>
+            <div class="content content_num rx-sc">
+              <el-input
+                size="mini"
+                v-model="item.feedQuantity"
+                placeholder="数量"
+              >
+              </el-input>
+              /{{item.unit}}
+            </div>
+          </div>
+
+          <div class="rx ww33">
+            <div class="lable rx-cc">型号</div>
+            <div class="content">
+              <div>{{ item.modelType }}</div>
+            </div>
+          </div>
+
+          <div class="rx ww33">
+            <div class="lable rx-cc">领料仓库</div>
+            <div class="content">
+              <div>{{ item.pathName }}</div>
+            </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 {
+    name: 'deviceBom',
+    props: {
+      list: {
+        type: Array,
+        default: () => []
+      },
+      wordItem: {
+        type: Object,
+        default: () => {}
+      },
+      isType: {
+        type: Boolean,
+        default: false
+      },
+
+      remainingTime: {
+        type: Number,
+        default: 0
+      }
+    },
+
+    computed: {},
+
+    data() {
+      return {};
+    },
+
+    methods: {
+      getDelete(idx) {
+        this.list.splice(idx, 1);
+      }
+    }
+  };
+</script>
+
+<style scoped lang="scss"></style>

+ 102 - 0
src/views/produce/components/feeding/components/palletBom.vue

@@ -0,0 +1,102 @@
+<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" 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"  v-if="isDetails">
+              <div class="lable rx-cc">仓库</div>
+              <div class="content">
+                <div>	{{item.pathName || item.positionVO && item.positionVO[0].pathName}}</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.formedNum" type='digit' :disabled="isDetails"/>
+            </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 {
+      name: 'deviceBom',
+      props: {
+        list: {
+          type: Array,
+          default: () => []
+        },
+        wordItem: {
+          type: Object,
+          default: () => {}
+        },
+        isType: {
+          type: Boolean,
+          default: false
+        },
+  
+        remainingTime: {
+          type: Number,
+          default: 0
+        }
+      },
+  
+      computed: {},
+  
+      data() {
+        return {};
+      },
+  
+      methods: {
+        getDelete(idx) {
+          this.list.splice(idx, 1);
+        }
+      }
+    };
+  </script>
+  
+  <style scoped lang="scss"></style>
+  

+ 99 - 0
src/views/produce/components/feeding/components/revolvingDiskBom.vue

@@ -0,0 +1,99 @@
+<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" 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" v-if="pattern != 'job'">
+            <div class="lable rx-cc">仓库</div>
+            <div class="content">
+              <div>
+                {{
+                  item.pathName ||
+                  (item.positionVO && item.positionVO[0].pathName)
+                }}</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.formedNum"
+                type="digit"
+                :disabled="isDetails"
+              />
+            </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 {
+    name: 'deviceBom',
+    props: {
+      list: {
+        type: Array,
+        default: () => []
+      },
+
+      pattern: {
+        type: String,
+        default: ''
+      }
+    },
+
+    computed: {},
+
+    data() {
+      return {};
+    },
+
+    methods: {
+      getDelete(idx) {
+        this.list.splice(idx, 1);
+      }
+    }
+  };
+</script>
+
+<style scoped lang="scss"></style>

+ 152 - 131
src/views/produce/components/feeding/components/turnoverBom.vue

@@ -25,7 +25,11 @@
               </div>
 
               <div class="del_box">
-                <el-link type="danger" icon="el-icon-delete" @click="getDelete(index)"></el-link>
+                <el-link
+                  type="danger"
+                  icon="el-icon-delete"
+                  @click="getDelete(index)"
+                ></el-link>
               </div>
             </div>
           </template>
@@ -38,18 +42,29 @@
               <div class="item ww20">数量PCS</div>
               <div class="item ww20" v-if="!isDetails">投料PCS</div>
               <div class="item ww20" v-if="isDetails">
-                {{ wordItem.taskType ? '抽样' : '投料' }}</div>
+                {{ wordItem.taskType ? '抽样' : '投料' }}</div
+              >
             </div>
 
             <div class="table">
-              <div class="tr row rx-sc" v-for="(it, idx) in item.extInfo.positionList" :key="idx">
+              <div
+                class="tr row rx-sc"
+                v-for="(it, idx) in item.extInfo.positionList"
+                :key="idx"
+              >
                 <div class="item ww10">{{ it.code }}</div>
-                <div class="item ww25" :class="{ color157: it.workOrderCode === wordItem.code }">
+                <div
+                  class="item ww25"
+                  :class="{ color157: it.workOrderCode === wordItem.code }"
+                >
                   {{ it.workOrderCode }}
                 </div>
-                <div class="item ww25" :class="{
-                  color157: it.categoryCode === wordItem.productCode
-                }">
+                <div
+                  class="item ww25"
+                  :class="{
+                    color157: it.categoryCode === wordItem.productCode
+                  }"
+                >
                   {{ it.categoryCode }}
                 </div>
 
@@ -58,16 +73,23 @@
                 </div>
 
                 <div class="item ww20">
-                  <el-input :class="[
-                    'uni-input',
-                    wordItem.code == it.workOrderCode && it.quantity > 0
-                      ? 'content_num'
-                      : ''
-                  ]" size="mini" v-model="it.feedNum" type="digit" :disabled="it.quantity <= 0" @blur="
+                  <el-input
+                    :class="[
+                      'uni-input',
+                      wordItem.code == it.workOrderCode && it.quantity > 0
+                        ? 'content_num'
+                        : ''
+                    ]"
+                    size="mini"
+                    v-model="it.feedNum"
+                    type="digit"
+                    :disabled="it.quantity <= 0"
+                    @blur="
                       Number(it.feedNum) > Number(it.quantity)
                         ? (it.feedNum = Number(it.quantity))
                         : ''
-                      "></el-input>
+                    "
+                  ></el-input>
                 </div>
               </div>
             </div>
@@ -78,147 +100,146 @@
   </div>
 </template>
 <script>
-export default {
-  props: {
-    list: {
-      type: Array,
-      default: () => []
+  export default {
+    props: {
+      list: {
+        type: Array,
+        default: () => []
+      },
+
+      wordItem: {
+        type: Object,
+        default: () => {}
+      },
+
+      pattern: {
+        type: String,
+        default: ''
+      },
+
+      isDetails: {
+        type: Boolean,
+        default: false
+      }
     },
-
-    wordItem: {
-      type: Object,
-      default: () => { }
+    watch: {
+      list: {
+        immediate: true,
+        handler(newVal) {
+          newVal.forEach((f) => {
+            if (
+              f.extInfo &&
+              f.extInfo.positionList &&
+              f.extInfo.positionList.length
+            ) {
+              f.extInfo.positionList.forEach((oo) => {
+                if (
+                  this.wordItem.code == oo.workOrderCode &&
+                  this.wordItem.productCode == oo.categoryCode &&
+                  Number(oo.quantity) > 1 &&
+                  this.isDetails != true
+                ) {
+                  this.$set(oo, 'feedNum', oo.quantity);
+                }
+              });
+            }
+          });
+
+          this.newList = newVal;
+        }
+      }
     },
 
-    pattern: {
-      type: String,
-      default: ''
+    data() {
+      return {
+        newList: []
+      };
     },
-
-    isDetails: {
-      type: Boolean,
-      default: false
-    }
-  },
-  watch: {
-    list: {
-      immediate: true,
-      handler(newVal) {
-        newVal.forEach((f) => {
-          if (
-            f.extInfo &&
-            f.extInfo.positionList &&
-            f.extInfo.positionList.length
-          ) {
-            f.extInfo.positionList.forEach((oo) => {
-              if (
-                this.wordItem.code == oo.workOrderCode &&
-                this.wordItem.productCode == oo.categoryCode &&
-                Number(oo.quantity) > 1 &&
-                this.isDetails != true
-              ) {
-                this.$set(oo, 'feedNum', oo.quantity);
-              }
-            });
-          }
-        });
-
-        this.newList = newVal;
+    methods: {
+      getDelete(index) {
+        this.list.splice(index, 1);
       }
     }
-  },
-
-  data() {
-    return {
-      newList: []
-    };
-  },
-  methods: {
-    getDelete(index) {
-      this.list.splice(index, 1);
-    }
-  }
-};
+  };
 </script>
 
 <style lang="scss" scoped>
-.material {
-  width: 92%;
-}
-
-.content_table2 {
-  width: 100%;
+  .material {
+    width: 92%;
+  }
 
-  .row {
+  .content_table2 {
     width: 100%;
 
-    .item {
-      color: #404446;
-      font-size: 14px;
-      padding-left: 6px;
-    }
+    .row {
+      width: 100%;
 
-    .color157 {
-      color: #157a2c;
-    }
+      .item {
+        color: #404446;
+        font-size: 14px;
+        padding-left: 6px;
+      }
 
-    .ww20 {
-      width: 20%;
-    }
+      .color157 {
+        color: #157a2c;
+      }
 
-    .ww25 {
-      width: 25%;
-    }
+      .ww20 {
+        width: 20%;
+      }
 
-    .ww35 {
-      width: 35%;
-    }
+      .ww25 {
+        width: 25%;
+      }
 
-    .ww10 {
-      width: 10%;
-    }
-  }
+      .ww35 {
+        width: 35%;
+      }
 
-  .head {
-    height: 32px;
-    background: #f7f9fa;
-    border-top: 1px solid #e3e5e5;
-    border-left: 1px solid #e3e5e5;
+      .ww10 {
+        width: 10%;
+      }
+    }
 
-    .item {
+    .head {
       height: 32px;
-      line-height: 32px;
-      border-right: 1px solid #e3e5e5;
-      box-sizing: border-box;
+      background: #f7f9fa;
+      border-top: 1px solid #e3e5e5;
+      border-left: 1px solid #e3e5e5;
+
+      .item {
+        height: 32px;
+        line-height: 32px;
+        border-right: 1px solid #e3e5e5;
+        box-sizing: border-box;
+      }
     }
-  }
 
-  .tr {
-    border-top: 1px solid #e3e5e5;
-    border-left: 1px solid #e3e5e5;
-
-    .item {
-      font-size: 12px;
-      min-height: 32px;
-      display: flex;
-      align-items: center;
-      border-right: 1px solid #e3e5e5;
-      box-sizing: border-box;
-      white-space: normal;
-      word-break: break-all;
-    }
+    .tr {
+      border-top: 1px solid #e3e5e5;
+      border-left: 1px solid #e3e5e5;
+
+      .item {
+        font-size: 12px;
+        min-height: 32px;
+        display: flex;
+        align-items: center;
+        border-right: 1px solid #e3e5e5;
+        box-sizing: border-box;
+        white-space: normal;
+        word-break: break-all;
+      }
 
-    &:last-child {
-      border-bottom: 1px solid #e3e5e5;
+      &:last-child {
+        border-bottom: 1px solid #e3e5e5;
+      }
     }
   }
-}
-
 
-.content_num {
-  display: flex;
-  align-items: center;
-  padding: 2px;
-  --input-background-color: #f0f8f2;
-}
+  .content_num {
+    display: flex;
+    align-items: center;
+    padding: 2px;
+    --input-background-color: #f0f8f2;
+  }
 </style>

+ 24 - 2
src/views/produce/components/feeding/index.vue

@@ -62,10 +62,26 @@
 
         <turnoverBom
           v-if="item.turnover.length != 0"
-          :wordItem='item'
+          :wordItem="item"
           :list="item.turnover"
           pattern="feed"
         ></turnoverBom>
+
+        <aridRegion
+          v-if="item.aridRegionList.length != 0"
+          :list="item.aridRegionList"
+          @handleScan="handleScan"
+        ></aridRegion>
+
+        <palletBom
+          v-if="item.palletList.length != 0"
+          :list="item.palletList"
+        ></palletBom>
+
+        <revolvingDiskBom
+          v-if="item.revolvingDiskList.length != 0"
+          :list="item.revolvingDiskList"
+        ></revolvingDiskBom>
       </div>
     </div>
 
@@ -90,6 +106,9 @@
   import instanceBom from './components/instanceBom.vue';
   import semiProductBom from './components/semiProductBom.vue';
   import turnoverBom from './components/turnoverBom.vue';
+  import aridRegion from './components/aridRegion.vue';
+  import palletBom from './components/palletBom.vue';
+  import revolvingDiskBom from './components/revolvingDiskBom.vue';
   export default {
     name: 'feeding',
     components: {
@@ -102,7 +121,10 @@
       modelBom,
       instanceBom,
       semiProductBom,
-      turnoverBom
+      turnoverBom,
+      aridRegion,
+      palletBom,
+      revolvingDiskBom
     },
     props: {
       workListIds: {