feat: 添加加载组件并优化团队详情页加载体验

- 新增Loading组件用于全局加载状态显示
- 在团队详情页添加加载状态提示
- 优化API请求时的加载状态管理
- 更新axios基础URL配置
This commit is contained in:
2025-08-13 10:47:18 +08:00
parent d6a4ff3843
commit 233b7311fe
3 changed files with 277 additions and 103 deletions

View File

@@ -0,0 +1,107 @@
<template>
<div class="loading-overlay" v-if="visible">
<div class="loading-container">
<div class="loading-spinner">
<div class="spinner-ring"></div>
<div class="spinner-ring"></div>
<div class="spinner-ring"></div>
<div class="spinner-ring"></div>
</div>
<div class="loading-text">{{ text }}</div>
</div>
</div>
</template>
<script setup>
import { defineProps } from 'vue'
defineProps({
visible: {
type: Boolean,
default: false
},
text: {
type: String,
default: '加载中...'
}
})
</script>
<style lang="scss" scoped>
.loading-overlay {
position: fixed;
top: 0;
left: 0;
width: 100%;
height: 100%;
background-color: rgba(255, 255, 255, 0.9);
display: flex;
justify-content: center;
align-items: center;
z-index: 9999;
backdrop-filter: blur(2px);
}
.loading-container {
display: flex;
flex-direction: column;
align-items: center;
gap: 1rem;
}
.loading-spinner {
position: relative;
width: 60px;
height: 60px;
}
.spinner-ring {
position: absolute;
width: 100%;
height: 100%;
border: 3px solid transparent;
border-top: 3px solid #3b82f6;
border-radius: 50%;
animation: spin 1.2s cubic-bezier(0.5, 0, 0.5, 1) infinite;
}
.spinner-ring:nth-child(1) {
animation-delay: -0.45s;
}
.spinner-ring:nth-child(2) {
animation-delay: -0.3s;
}
.spinner-ring:nth-child(3) {
animation-delay: -0.15s;
}
@keyframes spin {
0% {
transform: rotate(0deg);
}
100% {
transform: rotate(360deg);
}
}
.loading-text {
font-size: 1rem;
color: #64748b;
font-weight: 500;
text-align: center;
}
/* 响应式设计 */
@media (max-width: 768px) {
.loading-spinner {
width: 50px;
height: 50px;
}
.loading-text {
font-size: 0.9rem;
}
}
</style>