gtsoft-snail-job-admin/src/views/home/index.vue

78 lines
2.4 KiB
Vue
Raw Normal View History

2024-03-08 17:59:45 +08:00
<script setup lang="ts">
2024-03-22 11:22:07 +08:00
import { computed, ref } from 'vue';
2024-03-21 10:57:53 +08:00
import { useAppStore } from '@/store/modules/app';
2024-03-22 11:22:07 +08:00
import { fetchCardCount } from '@/service/api';
2024-03-08 17:59:45 +08:00
import HeaderBanner from './modules/header-banner.vue';
import CardData from './modules/card-data.vue';
import LineChart from './modules/line-chart.vue';
import PieChart from './modules/pie-chart.vue';
import ProjectNews from './modules/project-news.vue';
2024-03-28 16:22:18 +08:00
import RetryTab from './modules/retry-tab.vue';
2024-03-08 17:59:45 +08:00
import CreativityBanner from './modules/creativity-banner.vue';
2024-03-21 10:57:53 +08:00
const appStore = useAppStore();
const gap = computed(() => (appStore.isMobile ? 0 : 16));
2024-03-22 11:22:07 +08:00
const cardCount = ref<Api.Dashboard.CardCount>();
2024-03-28 16:22:18 +08:00
const tabParams = ref<Api.Dashboard.DashboardLineParams>({
type: 'WEEK'
});
2024-03-22 11:22:07 +08:00
const getCardData = async () => {
const { data: cardData, error } = await fetchCardCount();
if (!error) {
cardCount.value = cardData;
}
};
getCardData();
2024-03-08 17:59:45 +08:00
</script>
<template>
2024-03-21 10:57:53 +08:00
<NSpace vertical :size="16">
2024-03-08 17:59:45 +08:00
<HeaderBanner />
2024-03-28 16:22:18 +08:00
<CardData :model-value="cardCount!" />
<NCard :bordered="false" class="card-wrapper">
<div class="relative">
<NTabs type="line" animated>
<NTabPane name="retryTask" :tab="$t('page.home.retryTask')">
<RetryTab :type="0" />
</NTabPane>
<NTabPane name="jobTask" :tab="$t('page.home.jobTask')">
<RetryTab :type="1" />
</NTabPane>
</NTabs>
<div class="absolute right-40px top-4px">
<NRadioGroup v-model:value="tabParams.type">
<NRadioButton value="DAY" label="今日" />
<NRadioButton value="WEEK" label="最近一周" />
<NRadioButton value="MONTH" label="最近一月" />
<NRadioButton value="YEAR" label="全年" />
</NRadioGroup>
</div>
</div>
</NCard>
2024-03-21 10:57:53 +08:00
<NGrid :x-gap="gap" :y-gap="16" responsive="screen" item-responsive>
<NGi span="24 s:24 m:14">
<NCard :bordered="false" class="card-wrapper">
2024-03-28 16:22:18 +08:00
<LineChart />
2024-03-21 10:57:53 +08:00
</NCard>
</NGi>
<NGi span="24 s:24 m:10">
<NCard :bordered="false" class="card-wrapper">
<PieChart />
</NCard>
</NGi>
</NGrid>
<NGrid :x-gap="gap" :y-gap="16" responsive="screen" item-responsive>
<NGi span="24 s:24 m:14">
2024-03-08 17:59:45 +08:00
<ProjectNews />
2024-03-21 10:57:53 +08:00
</NGi>
<NGi span="24 s:24 m:10">
2024-03-08 17:59:45 +08:00
<CreativityBanner />
2024-03-21 10:57:53 +08:00
</NGi>
</NGrid>
</NSpace>
2024-03-08 17:59:45 +08:00
</template>
<style scoped></style>