style(dashboard): reuse shared loading overlay
This commit is contained in:
@@ -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;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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'
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user