style(dashboard): reuse shared loading overlay

This commit is contained in:
caoxiaozhu
2026-06-03 09:43:36 +08:00
parent 0d6327a990
commit d060f89d30
2 changed files with 17 additions and 12 deletions

View File

@@ -1,8 +1,13 @@
<template> <template>
<section class="risk-observation-dashboard" :class="{ 'is-loading': showBlockingLoading }"> <section class="risk-observation-dashboard" :class="{ 'is-loading': showBlockingLoading }">
<div v-if="showBlockingLoading" class="risk-dashboard-loading-overlay" role="status" aria-live="polite"> <div v-if="showBlockingLoading" class="risk-dashboard-loading-overlay" role="status" aria-live="polite">
<i class="mdi mdi-loading mdi-spin"></i> <TableLoadingState
<span>{{ loadingLabel }}</span> :title="loadingLabel"
message="正在同步风险观察、风险等级和近期高风险记录"
icon="mdi mdi-shield-search"
variant="overlay"
motion="loop"
/>
</div> </div>
<article class="panel dashboard-card risk-trend-panel"> <article class="panel dashboard-card risk-trend-panel">
<div class="card-head"> <div class="card-head">
@@ -180,6 +185,7 @@ import BarChart from '../charts/BarChart.vue'
import DonutChart from '../charts/DonutChart.vue' import DonutChart from '../charts/DonutChart.vue'
import RiskDailyTrendChart from '../charts/RiskDailyTrendChart.vue' import RiskDailyTrendChart from '../charts/RiskDailyTrendChart.vue'
import EnterpriseSelect from '../shared/EnterpriseSelect.vue' import EnterpriseSelect from '../shared/EnterpriseSelect.vue'
import TableLoadingState from '../shared/TableLoadingState.vue'
import { import {
formatRiskDimensionLabel, formatRiskDimensionLabel,
formatRiskLevelLabel, formatRiskLevelLabel,
@@ -371,20 +377,13 @@ function openClaim(item) {
place-content: center; place-content: center;
justify-items: center; justify-items: center;
gap: 10px; gap: 10px;
padding: 24px;
border: 1px solid #e2e8f0; border: 1px solid #e2e8f0;
border-radius: 4px; border-radius: 4px;
background: rgba(248, 250, 252, .82); background: rgba(248, 250, 252, .82);
color: #334155;
font-size: 13px;
font-weight: 800;
backdrop-filter: blur(2px); backdrop-filter: blur(2px);
} }
.risk-dashboard-loading-overlay i {
color: var(--theme-primary);
font-size: 26px;
}
.risk-observation-dashboard.is-loading .dashboard-card { .risk-observation-dashboard.is-loading .dashboard-card {
pointer-events: none; pointer-events: none;
} }

View File

@@ -1,8 +1,13 @@
<template> <template>
<section class="dashboard" :class="[`dashboard-${activeDashboard}`, { 'is-loading': activeDashboardLoading }]"> <section class="dashboard" :class="[`dashboard-${activeDashboard}`, { 'is-loading': activeDashboardLoading }]">
<div v-if="activeDashboardLoading" class="dashboard-loading-overlay" role="status" aria-live="polite"> <div v-if="activeDashboardLoading" class="dashboard-loading-overlay" role="status" aria-live="polite">
<i class="mdi mdi-loading mdi-spin"></i> <TableLoadingState
<span>{{ activeDashboardLoadingText }}</span> :title="activeDashboardLoadingText"
message="正在同步当前看板数据"
icon="mdi mdi-view-dashboard-outline"
variant="overlay"
motion="loop"
/>
</div> </div>
<div class="kpi-grid"> <div class="kpi-grid">
<article <article
@@ -361,6 +366,7 @@ import SystemUserTokenPie from '../components/charts/SystemUserTokenPie.vue'
import DigitalEmployeeDashboard from '../components/dashboard/DigitalEmployeeDashboard.vue' import DigitalEmployeeDashboard from '../components/dashboard/DigitalEmployeeDashboard.vue'
import RiskObservationDashboard from '../components/dashboard/RiskObservationDashboard.vue' import RiskObservationDashboard from '../components/dashboard/RiskObservationDashboard.vue'
import EnterpriseSelect from '../components/shared/EnterpriseSelect.vue' import EnterpriseSelect from '../components/shared/EnterpriseSelect.vue'
import TableLoadingState from '../components/shared/TableLoadingState.vue'
import { useOverviewView } from '../composables/useOverviewView.js' import { useOverviewView } from '../composables/useOverviewView.js'