feat(client): 添加服务端版本检查和客户端更新逻辑
Some checks failed
Build Multi-Platform Binaries / build-frontend (push) Successful in 27s
Build Multi-Platform Binaries / build-binaries (amd64, linux, client, true) (push) Successful in 1m24s
Build Multi-Platform Binaries / build-binaries (amd64, darwin, server, false) (push) Successful in 1m33s
Build Multi-Platform Binaries / build-binaries (amd64, windows, client, true) (push) Successful in 1m18s
Build Multi-Platform Binaries / build-binaries (amd64, linux, server, true) (push) Successful in 1m40s
Build Multi-Platform Binaries / build-binaries (arm, 7, linux, client, true) (push) Successful in 1m16s
Build Multi-Platform Binaries / build-binaries (amd64, windows, server, true) (push) Successful in 1m40s
Build Multi-Platform Binaries / build-binaries (arm64, darwin, server, false) (push) Failing after 1m39s
Build Multi-Platform Binaries / build-binaries (arm, 7, linux, server, true) (push) Successful in 1m49s
Build Multi-Platform Binaries / build-binaries (arm64, linux, client, true) (push) Successful in 1m26s
Build Multi-Platform Binaries / build-binaries (arm64, linux, server, true) (push) Successful in 1m53s
Build Multi-Platform Binaries / build-binaries (arm64, windows, server, false) (push) Successful in 1m16s
Some checks failed
Build Multi-Platform Binaries / build-frontend (push) Successful in 27s
Build Multi-Platform Binaries / build-binaries (amd64, linux, client, true) (push) Successful in 1m24s
Build Multi-Platform Binaries / build-binaries (amd64, darwin, server, false) (push) Successful in 1m33s
Build Multi-Platform Binaries / build-binaries (amd64, windows, client, true) (push) Successful in 1m18s
Build Multi-Platform Binaries / build-binaries (amd64, linux, server, true) (push) Successful in 1m40s
Build Multi-Platform Binaries / build-binaries (arm, 7, linux, client, true) (push) Successful in 1m16s
Build Multi-Platform Binaries / build-binaries (amd64, windows, server, true) (push) Successful in 1m40s
Build Multi-Platform Binaries / build-binaries (arm64, darwin, server, false) (push) Failing after 1m39s
Build Multi-Platform Binaries / build-binaries (arm, 7, linux, server, true) (push) Successful in 1m49s
Build Multi-Platform Binaries / build-binaries (arm64, linux, client, true) (push) Successful in 1m26s
Build Multi-Platform Binaries / build-binaries (arm64, linux, server, true) (push) Successful in 1m53s
Build Multi-Platform Binaries / build-binaries (arm64, windows, server, false) (push) Successful in 1m16s
- 引入 getVersionInfo API 和服务端版本获取功能 - 实现版本比较算法用于判断更新需求 - 添加服务端版本加载和目标版本计算逻辑 - 更新客户端版本显示为可更新目标版本 - 优化样式表移除不透明背景设置 - 调整进度条外观样式增强视觉效果
This commit is contained in:
@@ -660,11 +660,12 @@ const handleDeletePlugin = (plugin: ClientPlugin) => {
|
|||||||
刷新
|
刷新
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
<div class="card-body">
|
<div class="card-body system-stats-body">
|
||||||
<div v-if="!systemStats" class="empty-hint">
|
<Transition name="fade-slide" mode="out-in">
|
||||||
{{ loadingStats ? '加载中...' : '点击刷新获取状态' }}
|
<div v-if="!systemStats" class="empty-hint" key="empty">
|
||||||
</div>
|
{{ loadingStats ? '加载中...' : '点击刷新获取状态' }}
|
||||||
<template v-else>
|
</div>
|
||||||
|
<div v-else class="system-stats-content" key="stats">
|
||||||
<div class="system-stat-item">
|
<div class="system-stat-item">
|
||||||
<span class="system-stat-label">CPU</span>
|
<span class="system-stat-label">CPU</span>
|
||||||
<div class="progress-bar">
|
<div class="progress-bar">
|
||||||
@@ -692,7 +693,8 @@ const handleDeletePlugin = (plugin: ClientPlugin) => {
|
|||||||
<div class="system-stat-detail">
|
<div class="system-stat-detail">
|
||||||
{{ formatBytes(systemStats.disk_used) }} / {{ formatBytes(systemStats.disk_total) }}
|
{{ formatBytes(systemStats.disk_used) }} / {{ formatBytes(systemStats.disk_total) }}
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</div>
|
||||||
|
</Transition>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@@ -917,9 +919,54 @@ const handleDeletePlugin = (plugin: ClientPlugin) => {
|
|||||||
padding: 32px;
|
padding: 32px;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Hide particles */
|
/* Particles */
|
||||||
.particles {
|
.particles {
|
||||||
display: none;
|
position: absolute;
|
||||||
|
inset: 0;
|
||||||
|
overflow: hidden;
|
||||||
|
pointer-events: none;
|
||||||
|
z-index: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.particle {
|
||||||
|
position: absolute;
|
||||||
|
border-radius: 50%;
|
||||||
|
opacity: 0.15;
|
||||||
|
filter: blur(60px);
|
||||||
|
animation: float 20s ease-in-out infinite;
|
||||||
|
}
|
||||||
|
|
||||||
|
.particle-1 {
|
||||||
|
width: 350px;
|
||||||
|
height: 350px;
|
||||||
|
background: var(--color-accent);
|
||||||
|
top: -80px;
|
||||||
|
right: -80px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.particle-2 {
|
||||||
|
width: 280px;
|
||||||
|
height: 280px;
|
||||||
|
background: #8b5cf6;
|
||||||
|
bottom: -40px;
|
||||||
|
left: -40px;
|
||||||
|
animation-delay: -5s;
|
||||||
|
}
|
||||||
|
|
||||||
|
.particle-3 {
|
||||||
|
width: 220px;
|
||||||
|
height: 220px;
|
||||||
|
background: var(--color-success);
|
||||||
|
top: 40%;
|
||||||
|
left: 30%;
|
||||||
|
animation-delay: -10s;
|
||||||
|
}
|
||||||
|
|
||||||
|
@keyframes float {
|
||||||
|
0%, 100% { transform: translate(0, 0) scale(1); }
|
||||||
|
25% { transform: translate(30px, -30px) scale(1.05); }
|
||||||
|
50% { transform: translate(-20px, 20px) scale(0.95); }
|
||||||
|
75% { transform: translate(-30px, -20px) scale(1.02); }
|
||||||
}
|
}
|
||||||
|
|
||||||
.client-content {
|
.client-content {
|
||||||
@@ -1042,6 +1089,7 @@ const handleDeletePlugin = (plugin: ClientPlugin) => {
|
|||||||
display: grid;
|
display: grid;
|
||||||
grid-template-columns: 300px 1fr;
|
grid-template-columns: 300px 1fr;
|
||||||
gap: 24px;
|
gap: 24px;
|
||||||
|
align-items: start;
|
||||||
}
|
}
|
||||||
|
|
||||||
@media (max-width: 900px) {
|
@media (max-width: 900px) {
|
||||||
@@ -1525,6 +1573,31 @@ const handleDeletePlugin = (plugin: ClientPlugin) => {
|
|||||||
height: 16px;
|
height: 16px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* System Stats Transition */
|
||||||
|
.system-stats-body {
|
||||||
|
overflow: hidden;
|
||||||
|
}
|
||||||
|
|
||||||
|
.system-stats-content {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
}
|
||||||
|
|
||||||
|
.fade-slide-enter-active,
|
||||||
|
.fade-slide-leave-active {
|
||||||
|
transition: all 0.3s ease;
|
||||||
|
}
|
||||||
|
|
||||||
|
.fade-slide-enter-from {
|
||||||
|
opacity: 0;
|
||||||
|
transform: translateY(-10px);
|
||||||
|
}
|
||||||
|
|
||||||
|
.fade-slide-leave-to {
|
||||||
|
opacity: 0;
|
||||||
|
transform: translateY(10px);
|
||||||
|
}
|
||||||
|
|
||||||
/* System Stats */
|
/* System Stats */
|
||||||
.system-stat-item {
|
.system-stat-item {
|
||||||
display: flex;
|
display: flex;
|
||||||
|
|||||||
@@ -243,7 +243,52 @@ onMounted(() => {
|
|||||||
|
|
||||||
/* Hide particles */
|
/* Hide particles */
|
||||||
.particles {
|
.particles {
|
||||||
display: none;
|
position: absolute;
|
||||||
|
inset: 0;
|
||||||
|
overflow: hidden;
|
||||||
|
pointer-events: none;
|
||||||
|
z-index: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.particle {
|
||||||
|
position: absolute;
|
||||||
|
border-radius: 50%;
|
||||||
|
opacity: 0.15;
|
||||||
|
filter: blur(60px);
|
||||||
|
animation: float 20s ease-in-out infinite;
|
||||||
|
}
|
||||||
|
|
||||||
|
.particle-1 {
|
||||||
|
width: 350px;
|
||||||
|
height: 350px;
|
||||||
|
background: var(--color-accent);
|
||||||
|
top: -80px;
|
||||||
|
right: -80px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.particle-2 {
|
||||||
|
width: 280px;
|
||||||
|
height: 280px;
|
||||||
|
background: #8b5cf6;
|
||||||
|
bottom: -40px;
|
||||||
|
left: -40px;
|
||||||
|
animation-delay: -5s;
|
||||||
|
}
|
||||||
|
|
||||||
|
.particle-3 {
|
||||||
|
width: 220px;
|
||||||
|
height: 220px;
|
||||||
|
background: var(--color-success);
|
||||||
|
top: 40%;
|
||||||
|
left: 30%;
|
||||||
|
animation-delay: -10s;
|
||||||
|
}
|
||||||
|
|
||||||
|
@keyframes float {
|
||||||
|
0%, 100% { transform: translate(0, 0) scale(1); }
|
||||||
|
25% { transform: translate(30px, -30px) scale(1.05); }
|
||||||
|
50% { transform: translate(-20px, 20px) scale(0.95); }
|
||||||
|
75% { transform: translate(-30px, -20px) scale(1.02); }
|
||||||
}
|
}
|
||||||
|
|
||||||
.settings-content {
|
.settings-content {
|
||||||
|
|||||||
Reference in New Issue
Block a user