| | |
| | | > |
| | | <div class="min-w-0 pr-6"> |
| | | <p class="text-sm font-medium text-g-700">{{ item.title }}</p> |
| | | <ArtCountTo class="mt-3 block text-[2.3rem] font-semibold leading-none text-g-900" :target="item.total" :duration="1200" /> |
| | | <ArtCountTo |
| | | class="mt-3 block text-[2.3rem] font-semibold leading-none text-g-900" |
| | | :target="item.total" |
| | | :duration="1200" |
| | | /> |
| | | <div class="mt-4 flex items-center gap-2 text-sm"> |
| | | <span class="text-g-500">{{ item.badgeText }}</span> |
| | | <span class="text-g-600">{{ item.subtitle }}</span> |
| | | </div> |
| | | </div> |
| | | <div class="flex size-13 shrink-0 items-center justify-center rounded-2xl" :class="item.iconBoxClass"> |
| | | <div |
| | | class="flex size-13 shrink-0 items-center justify-center rounded-2xl" |
| | | :class="item.iconBoxClass" |
| | | > |
| | | <ArtSvgIcon :icon="item.icon" class="text-2xl" :class="item.iconClass" /> |
| | | </div> |
| | | </div> |
| | |
| | | @click="navigateTo(item.route)" |
| | | > |
| | | <div class="flex min-w-0 items-center gap-3"> |
| | | <div class="flex size-11 shrink-0 items-center justify-center rounded-2xl bg-[var(--el-color-primary-light-9)]"> |
| | | <div |
| | | class="flex size-11 shrink-0 items-center justify-center rounded-2xl bg-[var(--el-color-primary-light-9)]" |
| | | > |
| | | <ArtSvgIcon :icon="item.icon" class="text-xl text-[var(--el-color-primary)]" /> |
| | | </div> |
| | | <div class="min-w-0"> |
| | | <p class="truncate text-sm font-medium text-[var(--art-gray-900)]">{{ item.title }}</p> |
| | | <p class="truncate text-sm font-medium text-[var(--art-gray-900)]">{{ |
| | | item.title |
| | | }}</p> |
| | | <p class="mt-1 truncate text-xs text-g-500">{{ item.description }}</p> |
| | | </div> |
| | | </div> |
| | |
| | | </div> |
| | | <div class="min-w-0 flex-1"> |
| | | <div class="flex items-center gap-2"> |
| | | <p class="truncate text-base font-medium text-[var(--art-gray-900)]">{{ item.title }}</p> |
| | | <p class="truncate text-base font-medium text-[var(--art-gray-900)]">{{ |
| | | item.title |
| | | }}</p> |
| | | <ElTag size="small" effect="light" type="danger">{{ item.source }}</ElTag> |
| | | </div> |
| | | <p class="mt-2 text-sm text-g-600">{{ item.summary }}</p> |
| | |
| | | async function loadOverview() { |
| | | sectionLoading.summary = true |
| | | |
| | | const [checkDiffResponse, qlyInspectResponse, freezeResponse, locReviseResponse] = await Promise.all([ |
| | | withRequestGuard(fetchCheckDiffPage({ current: 1, pageSize: 5 }), { records: [], total: 0 }), |
| | | withRequestGuard(fetchQlyInspectPage({ current: 1, pageSize: 5 }), { records: [], total: 0 }), |
| | | withRequestGuard(fetchFreezePage({ current: 1, pageSize: 5 }), { records: [], total: 0 }), |
| | | withRequestGuard(fetchLocRevisePage({ current: 1, pageSize: 5 }), { records: [], total: 0 }) |
| | | ]) |
| | | const [checkDiffResponse, qlyInspectResponse, freezeResponse, locReviseResponse] = |
| | | await Promise.all([ |
| | | withRequestGuard(fetchCheckDiffPage({ current: 1, pageSize: 5 }), { |
| | | records: [], |
| | | total: 0 |
| | | }), |
| | | withRequestGuard(fetchQlyInspectPage({ current: 1, pageSize: 5 }), { |
| | | records: [], |
| | | total: 0 |
| | | }), |
| | | withRequestGuard(fetchFreezePage({ current: 1, pageSize: 5 }), { records: [], total: 0 }), |
| | | withRequestGuard(fetchLocRevisePage({ current: 1, pageSize: 5 }), { records: [], total: 0 }) |
| | | ]) |
| | | |
| | | overviewState.value = { |
| | | checkDiff: normalizeSummaryResponse(checkDiffResponse), |