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