From f7ad95439053af6e89e04a2b669e16b6408ece25 Mon Sep 17 00:00:00 2001 From: haoxuan <haoxuan> Date: 星期二, 07 十一月 2023 17:02:15 +0800 Subject: [PATCH] 更新加载状态问题 --- src/views/dashboard/index.vue | 107 +++++++++++++++++++++++++++++++++++++++++++---------- 1 files changed, 87 insertions(+), 20 deletions(-) diff --git a/src/views/dashboard/index.vue b/src/views/dashboard/index.vue index 6ab459c..7b40a2b 100644 --- a/src/views/dashboard/index.vue +++ b/src/views/dashboard/index.vue @@ -15,14 +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" - @detail="openCraftModelDetailModal" - ></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">鍔犺浇瀹屾垚</div> + </div> + </el-scrollbar> + </div> </el-tab-pane> <el-tab-pane label="鐗╂枡娓呭崟" name="鐗╂枡娓呭崟"> <InputMaterialsList @@ -64,13 +83,21 @@ <BigButton class="btn" bg-color="red">绾㈢伅鍛煎彨</BigButton> </template> </DashboardLayout> - <CraftDetailModal v-model="showCraftModelDetail" @close="showCraftModelDetail = false"></CraftDetailModal> + <CraftDetailModal + v-model="showCraftModelDetail" + :active-arr="activeArr" + :craft-model="currentCraftModelInfo" + @renew="updateCraft" + @close="showCraftModelDetail = false" + ></CraftDetailModal> <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' import ProcessInfo from '@/views/dashboard/components/ProcessInfo.vue' import ColorInfo from '@/views/dashboard/components/ColorInfo.vue' @@ -95,6 +122,9 @@ 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' }) @@ -103,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 = [ @@ -161,8 +183,43 @@ craftModelStore.getCraftModelList() const showCraftModelDetail = ref(false) -function openCraftModelDetailModal() { +// 褰撳墠瑕佸睍绀虹殑宸ヨ壓璇︽儏 +const currentCraftModelInfo = ref<CraftModel>() +const activeArr = ref<string[]>([]) +function openCraftModelDetailModal(craftModel: CraftModel) { + currentCraftModelInfo.value = craftModel showCraftModelDetail.value = true +} +// 鏇存柊宸ヨ壓 +function updateCraft(craftModel: CraftModel) { + if (activeTask?.value?.Procedure?.ID) { + activeArr.value.push(craftModel.number) + updateCraftParams({ procedureId: activeTask!.value.Procedure.ID }).then( + (res) => { + if (res.code == 200) { + editActive(craftModel) + ElMessage({ + message: '鏇存柊鎴愬姛锛�', + type: 'success' + }) + craftModelStore.getCraftModelList() + } + }, + (err) => { + console.error(err, '----err') + setTimeout(() => { + editActive(craftModel) + }, 300) + } + ) + } +} +function editActive(craftModel: CraftModel) { + for (let i in activeArr.value) { + if (activeArr.value[i] == craftModel.number) { + activeArr.value.splice(Number(i), 1) + } + } } // 鏄惁灞曠ず鐗╂枡璇︽儏寮圭獥 @@ -187,7 +244,7 @@ display: flex; align-items: center; justify-content: center; - padding-top: 12px; + padding-top: 22px; } :deep(.el-tabs) { height: 100%; @@ -227,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