+
+
+
+
+

@@ -64,6 +91,7 @@
各园区统计
+
@@ -74,6 +102,7 @@ import { ref, onMounted, watch, computed } from 'vue'
import { rgbToHex } from '@/utils/color'
interface Props {
+ loading?: boolean
totalCount: number
formalEmployeeCount: number
externalStaffCount: number
@@ -319,5 +348,141 @@ onMounted(() => {
min-height: 17.5vh;
}
}
+
+ // 骨架屏样式
+ .skeleton-container {
+ .skeleton-card {
+ display: flex;
+ padding: 0 20px;
+ column-gap: 15px;
+ font-size: 0.8rem;
+
+ .skeleton-left {
+ display: flex;
+ height: 12vh;
+ min-width: 15vw;
+ padding: 0 10px;
+ background-image: url('@/assets/imgs/total_count_card_bg.png');
+ background-size: cover;
+ column-gap: 6px;
+ align-items: center;
+
+ .skeleton-icon {
+ width: 33px;
+ height: 33px;
+ background-color: #3a3a3a;
+ border-radius: 4px;
+ }
+
+ .skeleton-text {
+ background-color: #3a3a3a;
+ border-radius: 4px;
+ }
+
+ .skeleton-numbers {
+ display: flex;
+ align-items: center;
+ gap: 2px;
+ font-size: 0.8rem;
+
+ .skeleton-number {
+ width: 26px;
+ height: 50px;
+ background-color: #3a3a3a;
+ border-radius: 4px;
+ }
+ }
+ }
+
+ .skeleton-right {
+ display: flex;
+ height: 12vh;
+ min-width: 20vw;
+ background-image: url('@/assets/imgs/staff_types_bg.png');
+ background-position: top center;
+ background-size: cover;
+ flex-direction: column;
+ justify-content: center;
+ row-gap: 4px;
+
+ .skeleton-item {
+ display: flex;
+ align-items: center;
+ column-gap: 5px;
+ padding: 0 10px;
+
+ .skeleton-row {
+ display: flex;
+ align-items: center;
+ gap: 4px;
+ flex: 1;
+
+ .skeleton-icon-small {
+ width: 18px;
+ height: 18px;
+ background-color: #3a3a3a;
+ border-radius: 4px;
+ }
+
+ .skeleton-text {
+ height: 16px;
+ width: 60px;
+ background-color: #3a3a3a;
+ border-radius: 4px;
+ }
+ }
+
+ .skeleton-numbers {
+ display: flex;
+ align-items: center;
+ gap: 2px;
+ font-size: 0.8rem;
+
+ .skeleton-number-small {
+ width: 14px;
+ height: 25px;
+ background-color: #3a3a3a;
+ border-radius: 2px;
+ }
+ }
+ }
+ }
+ }
+ }
+
+ // 骨架屏动画
+ .skeleton-pulse {
+ animation: skeleton-loading-overview 1.5s ease-in-out infinite;
+
+ }
+
+ // 圆形饼图骨架屏
+ .skeleton-chart-circle {
+ width: 120px;
+ height: 120px;
+ border-radius: 50%;
+ margin: 30px auto 50px auto;
+ background-color: #444;
+ }
+
+ // 柱状图骨架屏
+ // .skeleton-chart-bar {
+ // width: 100%;
+ // height: 17.5vh;
+ // background-color: #444;
+ // border-radius: 8px;
+ // }
+
+ @keyframes skeleton-loading-overview {
+ 0% {
+ opacity: 1;
+ }
+ 50% {
+ opacity: 0.4;
+ }
+ 100% {
+ opacity: 1;
+ }
+ }
}
diff --git a/src/views/screen/components/RiskStatisticsPanel.vue b/src/views/screen/components/RiskStatisticsPanel.vue
index 5de6bf4..f43cdb6 100644
--- a/src/views/screen/components/RiskStatisticsPanel.vue
+++ b/src/views/screen/components/RiskStatisticsPanel.vue
@@ -9,7 +9,31 @@