From 9bde1998a8a0bc6c1ab314f8cf27c10aef016689 Mon Sep 17 00:00:00 2001 From: songshankun <songshankun@foxmail.com> Date: 星期一, 30 十月 2023 20:30:09 +0800 Subject: [PATCH] feat: 通道展示组件添加查看更多逻辑;任务选中展示;添加加工信息组件 --- src/views/dashboard/components/ChannelCollapse.vue | 49 ++++++++++++++++++++++++++++++++++++++++--------- 1 files changed, 40 insertions(+), 9 deletions(-) diff --git a/src/views/dashboard/components/ChannelCollapse.vue b/src/views/dashboard/components/ChannelCollapse.vue index fb4f3a3..bde2dd9 100644 --- a/src/views/dashboard/components/ChannelCollapse.vue +++ b/src/views/dashboard/components/ChannelCollapse.vue @@ -2,35 +2,51 @@ <div class="channel-collapse"> <el-collapse v-model="activeChannel"> <el-collapse-item - v-for="(tasks, channelNumber) in channels" + v-for="(channel, channelNumber) in channels" :key="channelNumber" :title="CHANNEL_NAME_MAP[channelNumber] + ' 閫氶亾'" :name="String(channelNumber)" > <TaskInfo - v-for="task in tasks" + v-for="task in channel.Tasks" :key="task.Procedure.ID" :active="task.Procedure.ID === tasksStore.activeTask?.Procedure.ID" :task="task" + style="margin-bottom: 16px" @click="tasksStore.setActiveTask(task)" ></TaskInfo> + + <div + v-show="channel.Tasks?.length && tasksStore.moreBtnStatus?.[channelNumber]" + class="btn more" + @click="tasksStore.moreChannelTasksBtn(channelNumber)" + > + 鏌ョ湅鏇村 + <el-icon style="margin-left: 6px"><ArrowDownBold /></el-icon> + </div> + + <div + v-show="channel.Tasks?.length && !tasksStore.moreBtnStatus?.[channelNumber]" + class="btn fold" + @click="tasksStore.foldChannelTasksBtn(channelNumber)" + > + 鏀惰捣 + <el-icon style="margin-left: 6px"><ArrowUpBold /></el-icon> + </div> </el-collapse-item> </el-collapse> </div> </template> <script setup lang="ts"> import { ref, watchEffect } from 'vue' -import type { Task } from '@/api/task' +import type { TasksGroupByChannel } from '@/api/task' import TaskInfo from './TaskInfo.vue' import { CHANNEL_NAME_MAP } from '@/common/constants' import { useTasksStore } from '@/stores/tasks' - -export interface Channel { - [channelNumber: number]: Task[] -} +import { ArrowDownBold, ArrowUpBold } from '@element-plus/icons-vue' export interface ChannelCollapseProps { - channels: Channel + channels: TasksGroupByChannel } const props = defineProps<ChannelCollapseProps>() @@ -39,7 +55,8 @@ const tasksStore = useTasksStore() watchEffect(() => { - const channelNumbers = Object.keys(props.channels).sort((a, b) => +a - +b) + // 閫氶亾鏁版嵁鍙樺寲鍚� + const channelNumbers = Object.keys(props?.channels ?? {}).sort((a, b) => +a - +b) activeChannel.value = [...channelNumbers] }) </script> @@ -75,4 +92,18 @@ font-size: 16px; font-weight: 600; } + +.btn { + width: 70%; + height: 50px; + margin: 0 auto; + display: flex; + align-items: center; + justify-content: center; + border-radius: 6px; + font-size: 18px; + font-weight: 600; + cursor: pointer; + background: linear-gradient(to right, rgb(29, 96, 212) 0%, rgb(47, 122, 251), rgb(29, 96, 212) 100%); +} </style> -- Gitblit v1.8.0