| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859 |
- <script setup lang="ts">
- import type { AnalysisOverviewItem } from '../typing';
- import {
- Card,
- CardContent,
- CardFooter,
- CardHeader,
- CardTitle,
- VbenCountToAnimator,
- VbenIcon,
- } from '@vben-core/shadcn-ui';
- interface Props {
- items: AnalysisOverviewItem[];
- }
- defineOptions({
- name: 'AnalysisOverview',
- });
- withDefaults(defineProps<Props>(), {
- items: () => [],
- });
- </script>
- <template>
- <div class="md:flex">
- <template v-for="(item, index) in items" :key="item.title">
- <Card
- :class="{ 'md:mr-4': index + 1 < 4 }"
- :title="item.title"
- class="mt-5 w-full md:mt-0 md:w-1/4"
- >
- <CardHeader>
- <CardTitle class="text-xl">{{ item.title }}</CardTitle>
- </CardHeader>
- <CardContent class="flex items-center justify-between">
- <VbenCountToAnimator
- :end-val="item.value"
- :start-val="1"
- class="text-xl"
- prefix=""
- />
- <VbenIcon :icon="item.icon" class="size-8 flex-shrink-0" />
- </CardContent>
- <CardFooter class="justify-between">
- <span>{{ item.totalTitle }}</span>
- <VbenCountToAnimator
- :end-val="item.totalValue"
- :start-val="1"
- prefix=""
- />
- </CardFooter>
- </Card>
- </template>
- </div>
- </template>
|