From 180a6ff82473bd19d1ef2c89e387752c4cc085cb Mon Sep 17 00:00:00 2001 From: Ran_Chen <1908198662@qq.com> Date: Mon, 21 Apr 2025 10:24:04 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E2=80=9C=E8=A7=92=E8=89=B2?= =?UTF-8?q?=E9=85=8D=E7=BD=AE=E2=80=9D=E9=A1=B5=E9=9D=A2=E8=BF=94=E5=9B=9E?= =?UTF-8?q?=E6=8C=89=E9=92=AE=EF=BC=8C=E6=99=BA=E8=83=BD=E4=BD=93=E7=AE=A1?= =?UTF-8?q?=E7=90=86=E9=AA=A8=E6=9E=B6=E5=B1=8F=E5=8A=A0=E8=BD=BD=E6=98=BE?= =?UTF-8?q?=E7=A4=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- main/manager-web/src/views/home.vue | 114 ++++++++++++++++++++-- main/manager-web/src/views/roleConfig.vue | 38 +++++++- 2 files changed, 142 insertions(+), 10 deletions(-) diff --git a/main/manager-web/src/views/home.vue b/main/manager-web/src/views/home.vue index b09d032e..65a5687a 100644 --- a/main/manager-web/src/views/home.vue +++ b/main/manager-web/src/views/home.vue @@ -31,8 +31,30 @@
- + + +
@@ -60,7 +82,9 @@ export default { devices: [], originalDevices: [], isSearching: false, - searchRegex: null + searchRegex: null, + isLoading: true, + skeletonCount: localStorage.getItem('skeletonCount') || 8, } }, @@ -109,12 +133,26 @@ export default { }, // 获取智能体列表 fetchAgentList() { + this.isLoading = true; Api.agent.getAgentList(({ data }) => { - this.originalDevices = data.data.map(item => ({ - ...item, - agentId: item.id // 字段映射 - })); - this.handleSearchReset(); // 重置搜索状态 + if (data?.data) { + this.originalDevices = data.data.map(item => ({ + ...item, + agentId: item.id + })); + + // 动态设置骨架屏数量(可选) + this.skeletonCount = Math.min( + Math.max(this.originalDevices.length, 3), // 最少3个 + 10 // 最多10个 + ); + + this.handleSearchReset(); + } + this.isLoading = false; + }, (error) => { + console.error('Failed to fetch agent list:', error); + this.isLoading = false; }); }, // 删除智能体 @@ -262,6 +300,66 @@ export default { /* 居中显示 */ } +/* 骨架屏动画 */ +@keyframes shimmer { + 100% { transform: translateX(100%); } +} +.skeleton-item { + background: #fff; + border-radius: 8px; + padding: 20px; + height: 120px; + position: relative; + overflow: hidden; + margin-bottom: 20px; +} + +.skeleton-image { + width: 80px; + height: 80px; + background: #f0f2f5; + border-radius: 4px; + float: left; + position: relative; + overflow: hidden; +} + +.skeleton-content { + margin-left: 100px; +} + +.skeleton-line { + height: 16px; + background: #f0f2f5; + border-radius: 4px; + margin-bottom: 12px; + width: 70%; + position: relative; + overflow: hidden; +} + +.skeleton-line-short { + height: 12px; + background: #f0f2f5; + border-radius: 4px; + width: 50%; +} + +.skeleton-item::after { + content: ''; + position: absolute; + top: 0; + left: 0; + width: 50%; + height: 100%; + background: linear-gradient( + 90deg, + rgba(255,255,255,0), + rgba(255,255,255,0.3), + rgba(255,255,255,0) + ); + animation: shimmer 1.5s infinite; +} \ No newline at end of file diff --git a/main/manager-web/src/views/roleConfig.vue b/main/manager-web/src/views/roleConfig.vue index 46bd6e5e..c13ad718 100644 --- a/main/manager-web/src/views/roleConfig.vue +++ b/main/manager-web/src/views/roleConfig.vue @@ -15,6 +15,9 @@ {{ form.agentName }} +
@@ -165,6 +168,9 @@ export default { } }, methods: { + goToHome() { + this.$router.push('/home'); + }, saveConfig() { const configData = { agentCode: this.form.agentCode, @@ -423,6 +429,7 @@ export default { } .config-header { + position: relative; display: flex; align-items: center; gap: 13px; @@ -560,8 +567,35 @@ export default { background: none; position: absolute; font-size: 12px; - bottom: -10px; - right: 21px; + bottom: -10%; + right: 3%; +} + +.custom-close-btn { + position: absolute; + top: 25%; + right: 0; + transform: translateY(-50%); + width: 35px; + height: 35px; + border-radius: 50%; + border: 2px solid #cfcfcf; + background: none; + font-size: 30px; + font-weight: lighter; + color: #cfcfcf; + cursor: pointer; + display: flex; + align-items: center; + justify-content: center; + z-index: 1; + padding: 0; + outline: none; +} + +.custom-close-btn:hover { + color: #409EFF; + border-color: #409EFF; } \ No newline at end of file