Commit Graph
5 Commits
Author SHA1 Message Date
chenxing 302aec52a6 fix(theme): schooltheme 补 item 级 adminOnly(审计发现普通用户导航出现「本校默认」)
build / build (push) Successful in 2m22s
步骤 4 harness 取证(role=user dump)发现 NAV_THEME.schooltheme 漏标 adminOnly: true,
item 级过滤未生效(ADMIN_PANES 兜底仍在,直达 URL 落 noperm 黄条验证通过)。
修复后重验:user 导航无「本校默认」、有「我的主题」、直达 ?pane=schooltheme 落 noperm;主构建绿
2026-09-30 13:19:44 +08:00
chenxing 357c0edb52 feat(theme): 设置页「主题」导航组 + iframe 预览页 + 学校默认档对接(主题设置 S2)
- Settings.vue:新增「主题」导航组(组级不设 adminOnly),mytheme「我的主题」所有人可见、schooltheme「本校默认」item 级 adminOnly + 入 ADMIN_PANES 双保险(NavItem 扩展 adminOnly 字段,navGroups 组级+item 级双层过滤);两个 pane 左色块右预览 iframe——候选档经 ?yh-theme=/yh-side=/yh-grad= URL 覆盖参数拼进 #/theme-preview src,切候选即换 src 重载;档位清单本轮硬编码 5 档(主色取通道 tokens);「跟随学校默认」=删用户键、「跟随系统默认」=clearSchTheme 清空学校配置;当前生效档与来源(我的选择/学校默认/系统默认)经 resolveEffectiveThemeState 标注
- views/ThemePreview.vue(新增):纯展示预览页——顶栏 .header-container + 左菜单 .left-menu + 面包屑 + iview Table 写死 4 行,DOM 结构对齐 Notice layout,观感由通道 CSS 按档位类驱动;根容器 pointer-events:none,无搜索/分页/ThemeSwitcher;挂载时动态 append 通道 init(baseHost + /static/js/yh-theme-init.js,判重防双挂)——仅该 document 吃通道 CSS,UserHome 本体 index.html 不加 loader(定案)
- App.vue:/theme-preview 顶层独立分支(不进桌面框架、不依赖登录态与 isRouterAlive——未登录直开不白屏);菜单白名单加 /theme-preview;登录成功后异步拉 schTheme 写 localStorage[yh-theme-sch-default](失败/空不写不报错,推荐值语义)
- router/routes.ts:登记 /theme-preview(实际渲染走 App.vue 分支;若后续引入守卫须列入免登录白名单——注释已写明)
- BaseApi:getSchTheme / saveSchThemeState / clearSchTheme 三封装
- src/utils/theme.ts:YschTheme npm run sync 下发(版本 20260930-1248-4e12e6d,含 SCHOOL_DEFAULT_STORAGE_KEY 与 resolveEffectiveThemeState 新导出)
2026-09-30 12:59:35 +08:00
chenxing 0ded3cce9f feat(settings): 五个 pane 对接真实数据(零新接口)——profile 读 store、改密登出流程、头像直传、logo/wallpaper 管理列表
- profile:姓名/工号(暂以登录账号展示,接口无独立工号字段)/部门/手机/邮箱改读 store.userInfo(无值显示 -),保存按钮占位 disabled(接口待 UserBase 支持本人自助修改,拍板搁置);头像行 v-real-img 真实图
- password:非空/一致性/不同旧密码/长度校验 + BaseApi.updatePassword,成功提示后 1500ms 登出跳 CAS(确认登出流程照抄 UserInfoModal L162-183,不自创)
- avatar:Upload 直传移植 UserInfoModal(action=/api/avatarUpload、accept/format/max-size 20480/with-credentials/网关头/成功写 store.profilePicture 照抄);预设色块保留、「使用默认头像」disabled 占位
- logo:getSchLogoManageList 管理列表(不带 schId,按登录人归属校返回;超管按机构切换走 sys pane)+ 直传 /api/logoUpload + deleteLogoById + 「保存设置」走 saveSchLogo(schId 后端按登录人推断)
- wallpaper:getSchWallpaperManageList + 直传 + deleteWallById + 「应用壁纸」采用 checkWallpaper 个人壁纸语义(与 Header 壁纸弹窗现状一致,执行报告写明;校级默认壁纸保存接口不存在,不发明新语义)
- BaseApi 补 saveSchLogo 封装(复用已有后端接口);sidebar/statset/sys/backend/noperm 五个不动 pane 模板 diff 为空;navGroups/ADMIN_PANES 权限结构未动
2026-09-30 12:43:27 +08:00
chenxing e91ce14408 feat(msgcenter,settings): 留白对齐与左侧图标规范化——/msg、/settings 壳层 padding 15px、msg-side 216px、sys pane :deep 抹平、LeftMenu 移除硬编码入口、菜单图标 fill 化 2026-09-30 12:18:57 +08:00
chenxing aa3dafa932 feat(msgcenter,settings): 消息中心与设置中心路由化 + 背景层双卡改造
build / build (push) Successful in 13m13s
- 新增 /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(前台路由不在后端菜单表)
2026-09-30 09:28:50 +08:00