Files
water-management-system/frontend/node_modules/element-plus/theme-chalk/src/loading.scss
T
bot_dev1 85df71fc28 feat: 实现供水运营专题大屏BI可视化
- 新增OperationDashboard.vue全屏大屏组件
- 添加6个核心KPI指标卡片: 进水总量/出水总量/产销差率/营收额/平均水质/报警次数
- 实现6个ECharts图表: 供水趋势/水质分布/报警统计/管网空间/设备状态/营收分析
- 创建静态HTML版本operation-dashboard.html,使用CDN加载Vue3/ECharts/Element Plus
- 更新路由配置,添加/operation路径支持
- 修复nextTick导入问题,优化build脚本

🚧 开发者: bot_dev1
📝 任务: #38 [BI] 运营仪表盘 + 供水专题大屏
2026-06-15 09:06:11 +08:00

105 lines
2.0 KiB
SCSS

@use 'mixins/mixins' as *;
@use 'mixins/var' as *;
@use 'common/var' as *;
:root {
@include set-component-css-var('loading', $loading);
}
@include b(loading-parent) {
@include m(relative) {
position: relative !important;
}
@include m(hidden) {
overflow: hidden !important;
}
}
@include b(loading-mask) {
position: absolute;
z-index: 2000;
background-color: getCssVar('mask-color');
margin: 0;
top: 0;
right: 0;
bottom: 0;
left: 0;
transition: opacity getCssVar('transition-duration');
@include when(fullscreen) {
position: fixed;
.#{$namespace}-loading-spinner {
margin-top: calc(
(0px - getCssVar('loading-fullscreen-spinner-size')) / 2
);
.circular {
height: getCssVar('loading-fullscreen-spinner-size');
width: getCssVar('loading-fullscreen-spinner-size');
}
}
}
}
@include b(loading-spinner) {
top: 50%;
margin-top: calc((0px - getCssVar('loading-spinner-size')) / 2);
width: 100%;
text-align: center;
position: absolute;
.#{$namespace}-loading-text {
color: getCssVar('color-primary');
margin: 3px 0;
font-size: 14px;
}
.circular {
display: inline;
height: getCssVar('loading-spinner-size');
width: getCssVar('loading-spinner-size');
animation: loading-rotate 2s linear infinite;
}
.path {
animation: loading-dash 1.5s ease-in-out infinite;
stroke-dasharray: 90, 150;
stroke-dashoffset: 0;
stroke-width: 2;
stroke: getCssVar('color-primary');
stroke-linecap: round;
}
i {
color: getCssVar('color-primary');
}
}
.#{$namespace}-loading-fade-enter-from,
.#{$namespace}-loading-fade-leave-to {
opacity: 0;
}
@keyframes loading-rotate {
100% {
transform: rotate(360deg);
}
}
@keyframes loading-dash {
0% {
stroke-dasharray: 1, 200;
stroke-dashoffset: 0;
}
50% {
stroke-dasharray: 90, 150;
stroke-dashoffset: -40px;
}
100% {
stroke-dasharray: 90, 150;
stroke-dashoffset: -120px;
}
}