Procházet zdrojové kódy

feature/零星叫料修改

dy před 1 rokem
rodič
revize
b04ea8c77a

+ 1 - 1
.env.development

@@ -11,7 +11,7 @@ VITE_APP_BASE_API = '/dev-api'
 VITE_APP_UPLOAD_URL = 'http://192.168.101.4:9000'
 
 # 开发接口地址
-VITE_APP_API_URL = 'http://192.168.101.4:8079'
+VITE_APP_API_URL = 'http://192.168.101.30:8079'
 # Websocket地址
 VITE_WEBSOCKET_URL = 'ws://192.168.101.4:8079'
 ``

+ 1 - 1
src/plugins/permission.ts

@@ -24,7 +24,7 @@ export function setupPermission() {
         ) {
           const res = await getUserDicts(dictStore.types);
           if (res.data) {
-            dictStore.dicts.value = res?.data ?? [];
+            dictStore.dicts = res?.data ?? [];
           }
         }
 

+ 105 - 28
src/views/pro-operation/call-materiel/desperse.vue

@@ -17,24 +17,42 @@
           <div
             v-for="(box, index) in merterielBoxes"
             :key="index"
-            class="suit-box"
-            @click="clickItem(box)"
+            :class="box.selected ? 'suit-box suit-box-select' : 'suit-box'"
           >
-            <div>
-              <div class="suit-title">{{ box?.materialName }}</div>
-              <div class="suit-desc">{{ box?.spec }}</div>
+            <div style="width: 100%">
+              <div class="suit-header">
+                <div>
+                  <div class="suit-title">{{ box?.materialName }}</div>
+                  <div class="suit-desc">{{ box?.spec }}</div>
+                </div>
+                <div>
+                  <el-button
+                    class="suit-btn"
+                    round
+                    :type="box.selected ? 'info' : 'primary'"
+                    @click="clickItem(box)"
+                  >
+                    {{ box.selected ? "取消" : "添加" }}
+                  </el-button>
+                </div>
+              </div>
             </div>
-            <div>
+            <div style="width: 100%">
               <div>
-                <span class="suit-count">{{ box?.totalNum }}</span>
-                <span class="suit-desc">{{ box?.unit }}</span>
+                <div class="suit-count">
+                  <span>数量:</span><NumberInput v-model="box.totalNum" />
+                </div>
+                <span class="suit-desc">单位:{{ box?.unit }}</span>
               </div>
-              <div class="suit-desc">当前库存</div>
+              <!-- <div class="suit-desc">当前库存</div> -->
             </div>
           </div>
         </div>
       </el-scrollbar>
     </div>
+    <el-button class="call-btn" round type="primary" @click="toCall">
+      叫料
+    </el-button>
     <ChangeCount
       ref="changeCountRef"
       description="双面胶黑色"
@@ -59,7 +77,36 @@ const changeRightEl = (row: any, index: number) => {
   leftTreeIndex.value = index;
   accessoriesDataList(index);
 };
-
+const toCall = async () => {
+  let array = [];
+  for (let i = 0; i < merterielBoxes.value.length; i++) {
+    if (merterielBoxes.value[i].selected) {
+      array.push({
+        materialCode: merterielBoxes.value[i].materialNo,
+        num: merterielBoxes.value[i].totalNum,
+      });
+    }
+  }
+  sporadicCallItem({
+    materials: array,
+    processId: processStore.scanInfo.id,
+    workOrderCode: processStore.odersData.workOrderCode,
+  })
+    .then(() => {
+      ElMessage.success("叫料成功");
+      accessoriesDataList(leftTreeIndex.value, false);
+      merterielBoxes.value.forEach((element: any) => {
+        element.selected = false;
+        element.totalNum = 0;
+      });
+    })
+    .catch(() => {
+      merterielBoxes.value.forEach((element: any) => {
+        element.selected = false;
+        element.totalNum = 0;
+      });
+    });
+};
 const cacheDataMap = ref(new Map());
 const accessoriesDataList = (index: number, cache: boolean = true) => {
   //对结果进行缓存 不频繁请求接口
@@ -78,9 +125,12 @@ const accessoriesDataList = (index: number, cache: boolean = true) => {
   // 获取数据
   loading.value = true;
   accessoriesList(queryAccessoriesParam)
-    .then((res) => {
+    .then((res: any) => {
       // console.log("onMounted", res.data);
       merterielBoxes.value = res.data;
+      merterielBoxes.value.forEach((element: any) => {
+        element.selected = false;
+      });
       cacheDataMap.value.set(index, res.data);
     })
     .finally(() => {
@@ -97,28 +147,37 @@ onMounted(() => {
 // =========叫料数量
 const changeCountRef = ref<InstanceType<typeof ChangeCount>>();
 const clickItem = (box: any) => {
-  changeCountRef.value?.showDialog(box.totalNum, (value: number) => {
-    sporadicCallItem({
-      materials: [
-        {
-          materialName: box.materialCode,
-          num: value,
-        },
-      ],
-      processId: processStore.scanInfo.id,
-      workOrderCode: processStore.odersData.workOrderCode,
-    }).then(() => {
-      ElMessage.success("叫料成功");
-      accessoriesDataList(leftTreeIndex.value, false);
-    });
-  });
+  box.selected = !box.selected;
+  // changeCountRef.value?.showDialog(box.totalNum, (value: number) => {
+  //   sporadicCallItem({
+  //     materials: [
+  //       {
+  //         materialName: box.materialCode,
+  //         num: value,
+  //       },
+  //     ],
+  //     processId: processStore.scanInfo.id,
+  //     workOrderCode: processStore.odersData.workOrderCode,
+  //   }).then(() => {
+  //     ElMessage.success("叫料成功");
+  //     accessoriesDataList(leftTreeIndex.value, false);
+  //   });
+  // });
 };
 </script>
 
 <style lang="scss" scoped>
 .container-desperse {
   display: flex;
-
+  position: relative;
+  .call-btn {
+    position: fixed;
+    height: 80px;
+    width: 200px;
+    font-size: 24px;
+    top: 80px;
+    left: 650px;
+  }
   .left {
     width: 300px;
 
@@ -128,6 +187,7 @@ const clickItem = (box: any) => {
       line-height: 80px;
       height: 80px;
       border-radius: 40px;
+      font-size: $f24;
 
       &:hover {
         color: #1482f0;
@@ -156,8 +216,19 @@ const clickItem = (box: any) => {
 
   grid-template-columns: 1fr 1fr 1fr;
   overflow-y: auto;
-
+  .suit-header {
+    display: flex;
+    align-items: center;
+    justify-content: space-between;
+    width: 100%;
+  }
+  .suit-btn {
+    font-size: $f24;
+    padding: 20px;
+  }
   .suit-box {
+    box-sizing: border-box;
+    border: 2px solid white;
     height: 210px;
     background-color: white;
     border-radius: 16px 16px 16px 16px;
@@ -180,6 +251,9 @@ const clickItem = (box: any) => {
       font-size: 38px;
       color: rgba(0, 0, 0, 0.9);
       text-align: left;
+      display: flex;
+      align-items: center;
+      justify-content: space-between;
     }
 
     .suit-desc {
@@ -188,5 +262,8 @@ const clickItem = (box: any) => {
       text-align: left;
     }
   }
+  .suit-box-select {
+    border: 2px solid #0a59f7 !important;
+  }
 }
 </style>

+ 2 - 2
src/views/process/components/order.vue

@@ -29,7 +29,7 @@
           产品数量
         </div>
       </div>
-      <div class="textDivider">
+      <!-- <div class="textDivider">
         <div class="dividerBox">
           <el-divider direction="vertical" style="height: 60%" />
         </div>
@@ -39,7 +39,7 @@
         <div :class="hoverStatus ? 'boxText boxTextHover' : 'boxText'">
           主料齐套
         </div>
-      </div>
+      </div> -->
     </div>
     <!-- 右下角状态盒子 -->
     <div

+ 6 - 4
src/views/process/components/steps.vue

@@ -62,15 +62,17 @@
             {{ item.completeNum }}
           </div>
         </div>
-        <div v-if="item.exists != true" class="existsText">
-          注:该工位在计划上未分配此工序任务!
-        </div>
+        <Transition>
+          <div v-if="item.exists != true" class="existsText">
+            注:该工位在计划上未分配此工序任务!
+          </div>
+        </Transition>
         <div class="line" v-if="index != opsArray.length - 1"></div>
       </div>
     </TransitionGroup>
     <el-empty v-if="!opsArray" description="暂无数据" />
     <!-- 弹窗 -->
-
+
     <el-dialog
       v-model="centerDialogVisible"
       width="500"

+ 3 - 0
src/views/storage-in/index.vue

@@ -72,6 +72,9 @@
               >{{ addStatus ? "取消" : "入库新载具" }}
             </el-button>
           </div>
+          <div class="addbox" v-if="outStatus && !Machinery">
+            当前盒子编码:{{ currentBox.vehicleNo }}
+          </div>
           <div
             v-for="(material, index) in outingMaterials"
             :key="index"