|
5 | 5 | :team-summary="teamSummary" |
6 | 6 | :team-data="teamData" /> |
7 | 7 | <TeamBoardCard |
8 | | - v-for="member in DUMMY_TEAM_MEMBERS_LIST" |
9 | | - :key="member.name" |
10 | | - :name="member.name" |
11 | | - :department="member.department" |
12 | | - :task-status-summary="member.taskStatusSummary" |
13 | | - :tasks="member.tasks" /> |
| 8 | + v-for="member in data?.members" |
| 9 | + :key="member.processorId" |
| 10 | + :info="member" /> |
| 11 | + <NoContent |
| 12 | + v-if="data?.members.length === 0" |
| 13 | + content="검색된 담당자가 없습니다" /> |
14 | 14 | </div> |
15 | 15 | </div> |
16 | 16 | </template> |
17 | 17 |
|
18 | 18 | <script setup lang="ts"> |
19 | | -import { DUMMY_TEAM_MEMBERS_LIST } from '@/datas/dummy' |
20 | 19 | import TeamBoardCard from './TeamBoardCard.vue' |
21 | 20 | import CurrentTaskRatio from './CurrentTaskRatio.vue' |
| 21 | +import { axiosInstance } from '@/utils/axios' |
| 22 | +import { useTeamBoardParamsStore } from '@/stores/params' |
| 23 | +import { useQuery } from '@tanstack/vue-query' |
| 24 | +import { useParseParams } from '../hooks/useParseParams' |
| 25 | +import type { TeamBoardResponse } from '@/types/manager' |
| 26 | +import { computed } from 'vue' |
| 27 | +import NoContent from '../lists/NoContent.vue' |
22 | 28 |
|
23 | | -const getSummaryCount = (key: 'inProgress' | 'pendingCompletion' | 'totalTasks') => { |
24 | | - let count = 0 |
25 | | - DUMMY_TEAM_MEMBERS_LIST.forEach(el => (count += el.taskStatusSummary[key])) |
26 | | - return count |
27 | | -} |
28 | | -const teamSummary = { |
29 | | - inProgress: getSummaryCount('inProgress'), |
30 | | - pendingCompletion: getSummaryCount('pendingCompletion'), |
31 | | - totalTasks: getSummaryCount('totalTasks') |
| 29 | +const { params } = useTeamBoardParamsStore() |
| 30 | +
|
| 31 | +const fetchTeamStatus = async () => { |
| 32 | + const { parseBoardParams } = useParseParams() |
| 33 | + const parsedParams = parseBoardParams(params) |
| 34 | + const response = await axiosInstance.get('/api/team-status/filter', { params: parsedParams }) |
| 35 | + return response.data |
32 | 36 | } |
| 37 | +const { data } = useQuery<TeamBoardResponse>({ |
| 38 | + queryKey: ['teamStatus', params], |
| 39 | + queryFn: fetchTeamStatus |
| 40 | +}) |
| 41 | +
|
| 42 | +const teamSummary = computed(() => { |
| 43 | + return { |
| 44 | + inProgress: data.value?.totalInProgressTaskCount || 0, |
| 45 | + inReviewing: data.value?.totalInReviewingTaskCount || 0, |
| 46 | + totalTasks: data.value?.totalTaskCount || 0 |
| 47 | + } |
| 48 | +}) |
33 | 49 |
|
34 | | -const teamData = DUMMY_TEAM_MEMBERS_LIST.map(el => ({ |
35 | | - name: el.name, |
36 | | - tasks: el.taskStatusSummary.totalTasks |
37 | | -})) |
| 50 | +const teamData = computed(() => { |
| 51 | + return ( |
| 52 | + data.value?.members.map(el => ({ |
| 53 | + name: el.nickname, |
| 54 | + tasks: el.totalTaskCount |
| 55 | + })) || [] |
| 56 | + ) |
| 57 | +}) |
38 | 58 | </script> |
0 commit comments