From 1519870c0e18171ced014a840e86a459dc6b00f1 Mon Sep 17 00:00:00 2001 From: yangfeng <wanwan926_4@163.com> Date: 星期二, 12 十二月 2023 17:26:06 +0800 Subject: [PATCH] 报工记录列表增加人员姓名 --- src/views/dashboard/index.vue | 99 ++++++++++++++++++++++++++++++++++--------------- 1 files changed, 69 insertions(+), 30 deletions(-) diff --git a/src/views/dashboard/index.vue b/src/views/dashboard/index.vue index e1b8f18..3f1a9c3 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" :workers="currentWorkers" @should-reload="reloadChannel"></TaskControl> </div> <ColorInfo :type="1"></ColorInfo> <ColorInfo :type="2"></ColorInfo> @@ -77,9 +93,10 @@ <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 { 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' @@ -104,7 +121,10 @@ 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' +import { isNumber } from 'lodash-es' defineOptions({ name: 'DashboardView' @@ -114,14 +134,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 = [ @@ -143,7 +155,7 @@ const tasksStore = useTasksStore() const { activeTask, channels } = storeToRefs(tasksStore) -tasksStore.getChannels(1) +tasksStore.getChannels(1, true) function changeTab(tab: LabelValue) { tasksStore.getChannels(tab.value) @@ -153,8 +165,15 @@ * 瀹屾垚浠诲姟鎴栬�呬笅鍙戝弬鏁版垚鍔熷悗瑕佸埛鏂伴�氶亾鏁版嵁 * @param task */ -function reloadAllData(task: Task) { - tasksStore.reload(task.Channel) +function reloadChannel(task: Task) { + tasksStore.reloadChannel(task.Channel).then(() => { + plcStore.startPollingPLC() + }) +} + +function reloadAllData() { + tasksStore.reloadAllData() + location.reload() } // 鍚姩plc 杞 const plcStore = usePLCStore() @@ -170,7 +189,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 +206,14 @@ message: '鏇存柊鎴愬姛锛�', type: 'success' }) + craftModelStore.getCraftModelList() } }, (err) => { console.error(err, '----err') setTimeout(() => { editActive(craftModel) - }, 500) + }, 300) } ) } @@ -201,7 +221,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) } } } @@ -219,6 +239,15 @@ currentMaterialInfo.value = material showMaterialDetail.value = true } + +const currentWorkers = computed(() => { + const channel = activeTask.value?.Channel + if (isNumber(channel)) { + return channels.value[channel].workers ?? [] + } else { + return [] + } +}) </script> <style scoped lang="scss"> @@ -228,7 +257,7 @@ display: flex; align-items: center; justify-content: center; - padding-top: 12px; + padding-top: 22px; } :deep(.el-tabs) { height: 100%; @@ -268,4 +297,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