Commit Graph
50 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 0f7101983e feat(msgcenter): /msg 换真实数据——服务端筛选+滚动分页、铃铛直跳、unreadCount 上提 store、WS 通知带应用名
- views/msg/index.vue:数据层整体替换(msgType 0/1/2 映射、isRead 1=已读、fmtTime 重写绝对时间);列表走 msgCenter/list 服务端筛选(msgType/appKey/isRead/keyword 防抖 300ms),滚动到底追加下一页,切视图/搜索重置第 1 页;左栏分类计数走 summary(旧版 UserMsg 缺字段降级显示 —),应用清单取 store 应用列表、计数同源 todos;点击卡片标已读、全部已读、去处理(showJump/jumpUrl)、审批直批(共享弹窗);失败态有重试;WS 新消息经 mittBus 自刷新
- components/Header.vue:铃铛直跳 /msg(移除 Poptip 浮层与 900 宽 Modal 及 columns/tableApi 死代码);unreadCount 上提 pinia store(角标与 /msg、LeftMenu 同源);WS Notice.info 标题带应用名(appKey 匹配 store 应用列表,缺失回退类型标签);壁纸/LOGO Modal 不动
- components/MsgApprovalModal.vue(新增):审批直批弹窗抽共享组件,逻辑照抄原 Header 内联实现(同意可选意见/拒绝必填校验/三种失败反馈)
- components/LeftMenu.vue:「消息」入口(url=/msg)未读角标(读 store,红底白字胶囊)
- store/index.ts:unreadCount + setUnreadCount/incUnread/decUnread
- api/BaseApi.ts:getMsgCenterList 参数类型放宽(服务端筛选项);getMsgCenterSummary 返回类型补分类计数字段(可缺省)
- assets/styles/header.scss:删除消息浮层死样式 .message-wrap 段
2026-09-30 12:37:30 +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 c3fbfeefa8 ci(build): 前端构建挂宿主 npm 缓存卷 + 切国内镜像源,治 CI 13 分钟慢
build / build (push) Successful in 4m16s
- 实测 build #10 耗时 13分5秒,其中 npm install 占 12分46秒(97.6%,added 754 packages in 13m),
  vite build 仅 16.53s —— 瓶颈唯一且固定在依赖安装
- 根因:① 每次起全新 node:20 容器、装完即 rm -f,node_modules 零缓存;
  ② .npmrc / yarn.lock 均被 .gitignore 忽略 ⇒ CI 走公网 registry.npmjs.org 跨境下载 + 无 lock 全量解析
- 修复(照 notice/service 的 m2 缓存做法):
  - 挂 -v /opt/docker/projman-npm-cache:/root/.npm,npm 缓存落宿主、跨构建复用
  - npm config set registry https://registry.npmmirror.com,跨境改境内
  - npm install 加 --prefer-offline,优先命中宿主缓存
- 预期 13min → 3~5min;首次构建缓存为空不改善,第二次起见效
2026-09-30 10:01:10 +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
chenxing 08fa15db24 feat(msgcenter): 消息跳转入口改用后端 showJump 判权出参(C1)——铃铛卡片箭头与全部消息「去处理」v-if 由 jumpUrl 切至 showJump,审批按钮不受影响
build / build (push) Successful in 15m3s
2026-09-28 16:52:54 +08:00
chenxing a7ae4db2fb feat(msgcenter): 消息卡片直批入口——铃铛卡片与全部消息表格加同意/拒绝(msgType=2),弹窗拒绝意见必填、提交防重、成功标已读刷新 2026-09-28 13:30:30 +08:00
chenxing a0f104d1b4 fix(ci): npm install --ignore-scripts(node-sass@6 遗留依赖在 node:20 无预编译必炸;vite 实际走 dart-sass)
build / build (push) Successful in 14m15s
2026-09-19 14:21:21 +08:00
chenxing 2c7d6cdf0a fix(ci): npm ci→npm install(本仓不提交 lock,ci 无 lock 必 EUSAGE)
build / build (push) Failing after 14m53s
2026-09-19 13:58:13 +08:00
chenxing efd3b57826 feat(msgcenter): 消息中心 WS 实时推送前端 + CI 接入 projman 自动链路
build / build (push) Failing after 13s
- Header.vue:铃铛未读角标 + WS 客户端(25s 心跳/断线 5s 重连换新票/newMessage 红点+1+Notice 弹提示)
- BaseApi.ts:getMsgCenterWsTicket(POST /api/msgCenter/wsTicket 代签一次性票据)
- index.html:修复 lodash 引用路径(./libs/lodash.min.js,dev 404 致白屏)
- CI:build.yml 照 notice/front 模板(构建→zip→Nexus front-hosted→webhook 建档);
  userhome deployMode=auto,webhook 后自动发布;凭据 prod.env+projman DB 直读(不走仓库 Secrets)
2026-09-19 13:48:32 +08:00
chenxing 0e3bd97c55 10号功能修订 2026-09-10 09:47:46 +08:00
chenxing 59226875f3 feat: 退出登录去掉 /cas 前缀并新增管理员后台管理入口
build / build (push) Successful in 1m51s
- 退出登录路径由 /cas/logout 改为 /logout(Header.vue、UserInfoModal.vue 两处)
- Header 用户下拉在"系统设置"下方为管理员新增"后台管理"栏,新窗口打开 baseHost + /userbase/front/index.html
- 新增雪碧图图标 admin-backend.svg 并统一与其他菜单项图标尺寸
2026-09-10 09:32:17 +08:00
chenxing 696d8f1fff ci: 移除 userbase 专用 deploy.yml,仅保留 projman 标准 build workflow
build / build (push) Successful in 2m7s
2026-09-10 08:54:35 +08:00
chenxing 4279f99be1 feat: 接入 UserHome 前端业务代码(含真实 src/依赖,保留 projman 标准 CI)
deploy-userbase-front / build-and-deploy (push) Failing after 1m54s
build / build (push) Successful in 3m36s
2026-09-09 22:37:59 +08:00
admin a53ce07228 ci: init build workflow [skip ci] 2026-09-09 16:32:39 +08:00
chenxing b1b16332e4 ci
deploy-userbase-front / build-and-deploy (push) Successful in 2m9s
2026-09-07 18:29:17 +08:00
chenxing c7404b9d5e env-config修订 2026-09-07 18:16:37 +08:00
chenxing 7e37f2ada6 更改校端权限 2026-09-07 09:32:38 +08:00
chenxing 9200fa2135 更改环境配置 2026-09-03 23:57:05 +08:00
chenxing 790f0e3db5 bug修订 2026-09-02 08:41:35 +08:00
chenxing 428ee56bd3 读取动态配置 2026-09-01 11:50:38 +08:00
chenxing 886cce1b9e 跨校身份更改 2026-08-27 20:13:16 +08:00
chenxing 73066b5ab3 转出状态 2026-08-26 12:37:56 +08:00
chenxing 9c04b5e9fc 样式修复 2026-08-20 15:35:43 +08:00
chenxing f5c1289681 开放日志修改 2026-08-20 12:17:29 +08:00
chenxing 049965f51b 添加开放接口日志 2026-08-20 10:23:47 +08:00
chenxing 35529fc671 api路径修复 2026-08-19 12:01:26 +08:00
chenxing eb0ab76c83 修复api 2026-08-19 11:28:31 +08:00
chenxing bf6439888e 更新api 2026-08-19 00:26:27 +08:00
chenxing a096948371 api更改 2026-08-19 00:19:03 +08:00
chenxing 5247515a85 ci 2026-08-18 23:48:18 +08:00
chenxing 02f1fd2b14 修复重复弹msg的bug 2026-08-18 23:31:27 +08:00
chenxing 8fd5a21fcc 推送/操作日志下载改location.href;移动组关闭自动select;所在组改单选 2026-08-18 00:04:08 +08:00
chenxing 58a606764b 更改推送日志功能 2026-08-17 22:54:49 +08:00
chenxing 4b73cc7b29 推送日志修改 2026-08-17 20:25:18 +08:00
chenxing 89e7c08b2f 功能修改 2026-08-17 19:49:00 +08:00
chenxing 2321571060 修改角色bug 2026-08-17 18:54:00 +08:00
chenxing 0fa4b0f38a 修复所在组bug 2026-08-17 17:19:04 +08:00
chenxing b96bbc9a62 修改功能 2026-08-17 16:41:08 +08:00
chenxing 85619785f6 推送功能添加 2026-08-14 09:08:01 +08:00
chenxing 4077ef64d8 组用户功能修订 2026-08-12 19:19:46 +08:00
chenxing 82f4c623af 修改环境变量,重新ci 2026-08-10 17:57:27 +08:00
chenxing 648c32c29e test 2026-08-10 16:33:36 +08:00
chenxing bf2d800c63 docs: 注明仓库Actions已启用,push到main自动触发部署 2026-08-10 16:24:16 +08:00
chenxing 4adf38af77 fix: deploy.yml 两处修复 - .npmrc 仅存在时删(被gitignore,CI无此文件); 软链改用相对路径(releases/X)避免Caddy容器内绝对路径断链 2026-08-10 16:16:58 +08:00
chenxing 020911419e fix: 前端部署方案B修复 - deploy.yml支持首次真实目录迁移到releases/initial再建软链; 删除多余且基于错误假设的caddy-switch.yml(Caddy已是file_server) 2026-08-10 16:06:09 +08:00
chenxing 06ee85cf8d ci: 前端方案B - 软链接版本化部署(不再打镜像) + caddy-switch 工作流 2026-08-10 15:42:00 +08:00
chenxing eea881b616 init: UserBaseFront (frontend) 2026-08-10 14:41:13 +08:00