From 65fae9d24eb4daf452425f512a93717747528591 Mon Sep 17 00:00:00 2001 From: zpc Date: Mon, 23 Feb 2026 13:49:58 +0800 Subject: [PATCH] =?UTF-8?q?feat(navigation):=20=E5=AF=BC=E8=88=AA=E7=8A=B6?= =?UTF-8?q?=E6=80=81=E6=94=B9=E4=B8=BA=E4=B8=89=E6=80=81=EF=BC=9A=E4=B8=8B?= =?UTF-8?q?=E7=BA=BF(0)=E3=80=81=E4=B8=8A=E7=BA=BF(1)=E3=80=81=E5=8D=B3?= =?UTF-8?q?=E5=B0=86=E4=B8=8A=E7=BA=BF(2)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 后端 NavigationStatusNames 更新为三个状态 - 前端表格状态列从 switch 改为 tag+dropdown - 搜索和表单的状态选项同步更新 --- .../Services/ContentService.cs | 5 +- .../business/content/navigation/index.vue | 57 +++++++++++++------ 2 files changed, 43 insertions(+), 19 deletions(-) diff --git a/server/MiAssessment/src/MiAssessment.Admin.Business/Services/ContentService.cs b/server/MiAssessment/src/MiAssessment.Admin.Business/Services/ContentService.cs index f7ddd99..18fcad5 100644 --- a/server/MiAssessment/src/MiAssessment.Admin.Business/Services/ContentService.cs +++ b/server/MiAssessment/src/MiAssessment.Admin.Business/Services/ContentService.cs @@ -560,8 +560,9 @@ public class ContentService : IContentService /// private static readonly Dictionary NavigationStatusNames = new() { - { 0, "即将上线" }, - { 1, "已上线" } + { 0, "下线" }, + { 1, "上线" }, + { 2, "即将上线" } }; /// diff --git a/server/MiAssessment/src/MiAssessment.Admin/admin-web/src/views/business/content/navigation/index.vue b/server/MiAssessment/src/MiAssessment.Admin/admin-web/src/views/business/content/navigation/index.vue index 960f84d..ab04b2f 100644 --- a/server/MiAssessment/src/MiAssessment.Admin/admin-web/src/views/business/content/navigation/index.vue +++ b/server/MiAssessment/src/MiAssessment.Admin/admin-web/src/views/business/content/navigation/index.vue @@ -29,8 +29,9 @@ - - + + + @@ -81,17 +82,25 @@ - + @@ -191,8 +200,9 @@ - - + + + @@ -213,7 +223,7 @@ * @description 管理小程序首页导航入口卡片,支持图标上传、跳转配置和状态管理 */ import { reactive, ref, onMounted } from 'vue' -import { Plus, Search, Refresh, Edit, Delete, Picture } from '@element-plus/icons-vue' +import { Plus, Search, Refresh, Edit, Delete, Picture, ArrowDown } from '@element-plus/icons-vue' import { ElMessage, type FormInstance, type FormRules } from 'element-plus' import { getNavigationList, @@ -297,6 +307,18 @@ function getDefaultFormData(): NavigationFormData { } } +/** 状态文本映射 */ +function statusLabel(status: number): string { + const map: Record = { 0: '下线', 1: '上线', 2: '即将上线' } + return map[status] ?? '未知' +} + +/** 状态标签颜色映射 */ +function statusTagType(status: number): '' | 'success' | 'info' | 'warning' | 'danger' { + const map: Record = { 0: 'info', 1: 'success', 2: 'warning' } + return map[status] ?? 'info' +} + // ============ API Functions ============ async function loadList() { @@ -373,13 +395,14 @@ function handleEdit(row: NavigationItem) { } async function handleStatusChange(row: NavigationItem & { _statusLoading?: boolean }, status: number) { + const oldStatus = row.status row._statusLoading = true try { const res = await updateNavigationStatus({ id: row.id, status }) if (res.code === 0) { - ElMessage.success(status === 1 ? '已上线' : '已设为即将上线') + row.status = status + ElMessage.success(`已设为${statusLabel(status)}`) } else { - row.status = status === 1 ? 0 : 1 throw new Error(res.message || '状态更新失败') } } catch (error) {