From aa3dafa932f331088d49f35d5655bbc77f627cbf Mon Sep 17 00:00:00 2001 From: chenxing Date: Wed, 30 Sep 2026 09:28:50 +0800 Subject: [PATCH] =?UTF-8?q?feat(msgcenter,settings):=20=E6=B6=88=E6=81=AF?= =?UTF-8?q?=E4=B8=AD=E5=BF=83=E4=B8=8E=E8=AE=BE=E7=BD=AE=E4=B8=AD=E5=BF=83?= =?UTF-8?q?=E8=B7=AF=E7=94=B1=E5=8C=96=20+=20=E8=83=8C=E6=99=AF=E5=B1=82?= =?UTF-8?q?=E5=8F=8C=E5=8D=A1=E6=94=B9=E9=80=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 新增 /msg 消息中心路由页:左右双卡(左卡按分类/按应用双模式、右卡工具栏+列表), mock 数据,含时间格式/未读红点/已读三重置灰/审批直批按钮 - 新增 /settings 设置中心路由页:左导航卡+右内容卡,10 个 pane,?pane= 双向同步, 管理员/普通用户角色差异(普通用户直达管理项渲染无权限黄条) - 侧栏新增「设置」一级入口(前台硬编码补位,后台已配同 url 时自动去重)+ 分隔线 + 本地齿轮图标 - SysSetting.vue 卡片化:圆角 5→10px + 阴影,统一为 0 10px 20px rgba(0,0,0,.1) - .base-mask 提升:rgba(255,255,255,.35)→.55,blur(2px)→10px - Header 铃铛「查看全部」改跳 /msg;App.vue 菜单守卫放行 /msg、/settings(前台路由不在后端菜单表) --- src/App.vue | 3 +- src/assets/icons/menu-settings.svg | 1 + src/assets/styles/main.scss | 6 +- src/components/Header.vue | 2 +- src/components/LeftMenu.vue | 36 +- src/router/routes.ts | 12 + src/views/Settings.vue | 1010 ++++++++++++++++++++++++++++ src/views/SysSetting.vue | 6 +- src/views/msg/index.vue | 673 ++++++++++++++++++ 9 files changed, 1737 insertions(+), 12 deletions(-) create mode 100644 src/assets/icons/menu-settings.svg create mode 100644 src/views/Settings.vue create mode 100644 src/views/msg/index.vue diff --git a/src/App.vue b/src/App.vue index a754c07..7282c4b 100644 --- a/src/App.vue +++ b/src/App.vue @@ -113,7 +113,8 @@ async function loadUserMenuBarList() { } else { findIndex = menuList.findIndex(x => x.url === route.path); } - if (findIndex === -1) router.push({ name: "index" }); + // /msg、/settings 是前台硬编码路由(不在后台菜单表里),直达/刷新不应被弹回桌面 + if (findIndex === -1 && !["/msg", "/settings"].includes(route.path)) router.push({ name: "index" }); } const getRouterKey: (route: any) => string = route => { diff --git a/src/assets/icons/menu-settings.svg b/src/assets/icons/menu-settings.svg new file mode 100644 index 0000000..2d63f0b --- /dev/null +++ b/src/assets/icons/menu-settings.svg @@ -0,0 +1 @@ + diff --git a/src/assets/styles/main.scss b/src/assets/styles/main.scss index e2f8fa0..b9d845a 100644 --- a/src/assets/styles/main.scss +++ b/src/assets/styles/main.scss @@ -104,9 +104,9 @@ background-attachment: fixed; } .base-mask { - background: rgba(255, 255, 255, 0.35); - backdrop-filter: blur(2px); - -webkit-backdrop-filter: blur(2px); + background: rgba(255, 255, 255, 0.55); + backdrop-filter: blur(10px); + -webkit-backdrop-filter: blur(10px); } .app-loading { diff --git a/src/components/Header.vue b/src/components/Header.vue index 07e3f1f..d7458a7 100644 --- a/src/components/Header.vue +++ b/src/components/Header.vue @@ -694,7 +694,7 @@ function resetMsgPage() { } function showMsgList() { isMsgShow.value = false; - isMsgListShow.value = true; + router.push("/msg"); refTablePage.value.reloadData(); } diff --git a/src/components/LeftMenu.vue b/src/components/LeftMenu.vue index 0915fd1..4cb695b 100644 --- a/src/components/LeftMenu.vue +++ b/src/components/LeftMenu.vue @@ -5,17 +5,18 @@