From c8cf9f8ba577ce75e8723ff2d4218fffae349c47 Mon Sep 17 00:00:00 2001
From: songshankun <songshankun@foxmail.com>
Date: 星期二, 14 十一月 2023 15:11:09 +0800
Subject: [PATCH] fix: 修复工序步骤条当前工序展示错误的问题

---
 src/views/dashboard/index.vue |   82 +++++++++++++++++++++++++++--------------
 1 files changed, 54 insertions(+), 28 deletions(-)

diff --git a/src/views/dashboard/index.vue b/src/views/dashboard/index.vue
index 1bb3da9..f4cff31 100644
--- a/src/views/dashboard/index.vue
+++ b/src/views/dashboard/index.vue
@@ -7,7 +7,7 @@
       <ChannelCollapse :channels="channels"></ChannelCollapse>
     </template>
     <template #middleBlock1>
-      <DashboardTitle></DashboardTitle>
+      <DashboardTitle @should-reload="reloadAllData"></DashboardTitle>
     </template>
     <template #middleBlock2>
       <el-tabs v-model="activeMainTabName" class="main-info-tabs">
@@ -15,17 +15,33 @@
           <ProcessingInfo style="margin-top: 6px" :task="activeTask"></ProcessingInfo>
         </el-tab-pane>
         <el-tab-pane label="宸ヨ壓淇℃伅" name="宸ヨ壓淇℃伅">
-          <el-scrollbar always>
-            <ProcessInfo
-              v-for="item in craftModelStore.craftModelList"
-              :key="item.ID"
-              :craft-model="item"
-              :task="activeTask"
-              :active-arr="activeArr"
-              @detail="openCraftModelDetailModal"
-              @update="updateCraft"
-            ></ProcessInfo>
-          </el-scrollbar>
+          <div style="height: 300px">
+            <el-scrollbar always class="scroller" style="height: 100%">
+              <div
+                v-infinite-scroll="craftModelStore.loadMore"
+                infinite-scroll-delay="500"
+                infinite-scroll-distance="40"
+                style="display: flex; align-items: center; flex-wrap: wrap"
+              >
+                <ProcessInfo
+                  v-for="item in craftModelStore.craftModelList"
+                  :key="item.ID"
+                  :task="activeTask"
+                  :active-arr="activeArr"
+                  :craft-model="item"
+                  @detail="openCraftModelDetailModal"
+                  @update="updateCraft"
+                ></ProcessInfo>
+              </div>
+              <div class="craft-loaded-tip">
+                <el-icon v-if="craftModelStore.loading" class="is-loading" size="30">
+                  <Loading />
+                </el-icon>
+
+                <div v-if="!craftModelStore.hasMore && craftModelStore.craftModelList.length > 6">鍔犺浇瀹屾垚</div>
+              </div>
+            </el-scrollbar>
+          </div>
         </el-tab-pane>
         <el-tab-pane label="鐗╂枡娓呭崟" name="鐗╂枡娓呭崟">
           <InputMaterialsList
@@ -42,7 +58,7 @@
     <template #middleBlock3>
       <SubTitle>浠诲姟璇︽儏</SubTitle>
       <div class="task-detail">
-        <TaskControl :task="activeTask" @should-reload="reloadAllData"></TaskControl>
+        <TaskControl :task="activeTask" @should-reload="reloadChannel"></TaskControl>
       </div>
       <ColorInfo :type="1"></ColorInfo>
       <ColorInfo :type="2"></ColorInfo>
@@ -77,8 +93,9 @@
   <MaterialDetails v-model="showMaterialDetail" :material="currentMaterialInfo"></MaterialDetails>
 </template>
 <script setup lang="ts">
-import { computed, ref, watch } from 'vue'
+import { computed, ref } from 'vue'
 import ChannelCollapse from '@/views/dashboard/components/ChannelCollapse.vue'
+
 import type { Worker, Order, Task, Material } from '@/api/task'
 import type { CraftModel } from '@/api/craftModel'
 import PersonInfo from '@/views/dashboard/components/PersonInfo.vue'
@@ -104,7 +121,9 @@
 import { useCraftModelStore } from '@/stores/craftModel'
 import CraftDetailModal from '@/views/dashboard/components/CraftDetailModal.vue'
 import MaterialDetails from '@/views/dashboard/components/MaterialDetails.vue'
+
 import { updateCraftParams } from '@/api'
+import { Loading } from '@element-plus/icons-vue'
 
 defineOptions({
   name: 'DashboardView'
@@ -114,14 +133,6 @@
 const taskStore = useTasksStore()
 const workers = computed(() => {
   return taskStore.activeTask?.Procedure?.procedure?.workers ?? []
-})
-
-const order = computed(() => {
-  return {
-    finishNumber: 0,
-    unit: '涓�',
-    amount: '10'
-  } as unknown as Order
 })
 
 const taskTabsList = [
@@ -153,8 +164,12 @@
  * 瀹屾垚浠诲姟鎴栬�呬笅鍙戝弬鏁版垚鍔熷悗瑕佸埛鏂伴�氶亾鏁版嵁
  * @param task
  */
-function reloadAllData(task: Task) {
-  tasksStore.reload(task.Channel)
+function reloadChannel(task: Task) {
+  tasksStore.reloadChannel(task.Channel)
+}
+
+function reloadAllData() {
+  tasksStore.reloadAllData()
 }
 // 鍚姩plc 杞
 const plcStore = usePLCStore()
@@ -170,7 +185,7 @@
 const showCraftModelDetail = ref(false)
 // 褰撳墠瑕佸睍绀虹殑宸ヨ壓璇︽儏
 const currentCraftModelInfo = ref<CraftModel>()
-const activeArr = ref([])
+const activeArr = ref<string[]>([])
 function openCraftModelDetailModal(craftModel: CraftModel) {
   currentCraftModelInfo.value = craftModel
   showCraftModelDetail.value = true
@@ -187,13 +202,14 @@
             message: '鏇存柊鎴愬姛锛�',
             type: 'success'
           })
+          craftModelStore.getCraftModelList()
         }
       },
       (err) => {
         console.error(err, '----err')
         setTimeout(() => {
           editActive(craftModel)
-        }, 3000000)
+        }, 300)
       }
     )
   }
@@ -201,7 +217,7 @@
 function editActive(craftModel: CraftModel) {
   for (let i in activeArr.value) {
     if (activeArr.value[i] == craftModel.number) {
-      activeArr.value.splice(i, 1)
+      activeArr.value.splice(Number(i), 1)
     }
   }
 }
@@ -228,7 +244,7 @@
   display: flex;
   align-items: center;
   justify-content: center;
-  padding-top: 12px;
+  padding-top: 22px;
 }
 :deep(.el-tabs) {
   height: 100%;
@@ -268,4 +284,14 @@
   width: 100%;
   font-size: 20px;
 }
+.craft-loaded-tip {
+  height: 40px;
+  text-align: center;
+  display: flex;
+  align-items: center;
+  justify-content: center;
+}
+.scroller {
+  padding: 4px 16px;
+}
 </style>

--
Gitblit v1.8.0