chenxing
|
4d9da5e3a6
|
feat(appicon): AppIcon 资产库接入(应用网格矢量图标渲染,YschAppIcons 10-04 轮 P3)
- AppIcon.vue:矢量图标渲染组件(iconKey+iconColor → mask data-uri,无键无 URL 回退关键词映射占位)
- constants/appIconRules.ts:应用名关键词→图标键兜底映射(D4,两端各持一份,与 MobilePortal 关键词列一致;仅 icon_key 未配置且无 URL 时生效,有 URL 恒定位图零回归)
- AppList/SearchPanel/index:应用网格与搜索结果图标位换 AppIcon
- appicon.mask.css:资产库 mask 样式;yunhai-logo.svg:站点 Logo 矢量件
- main.scss/_app_container.scss:网格图标容器样式配套
依据:根目录《AppIcon资产库落地-执行报告-20261004.md》P3 UserHome(PC)接入
|
2026-10-06 20:20:32 +08:00 |
|
chenxing
|
93249cf5f5
|
chore(sync): YschTheme sync 件刷新(theme.ts 20261006-2013-75c1d10 + avatar 两件首次入库)+ view-ui-plus ^1.3.24 对齐
theme.ts 仅版本戳行变更(20260930-1248 → 20261006-2013);avatar.ts/UserAvatar.vue 为 YschTheme 默认头像轮 sync 下发公共源;package.json view-ui-plus ^1.3.19 → ^1.3.24 对齐通道生成基线(YschTheme iview-version 版本锁基准)
|
2026-10-06 20:20:30 +08:00 |
|
chenxing
|
1d34e5745d
|
feat(settings): 个人信息手机号/邮箱开放自助修改——保存按钮启用走 /api/user/UpdateContact(前端校验与后端同口径:手机号 1[3-9] 段位/邮箱格式/长度),成功以接口返回的最新 BoaUser 合并 store.userInfo 即时回显(规避 CAS principal 缓存旧值);BaseApi 新增 updateContact(任务B·前端)
|
2026-10-02 08:56:46 +08:00 |
|
chenxing
|
f52ce4136e
|
feat(settings): 我的壁纸 pane(mywallpaper,主题分组,所有人可见)——能力复制自 Header 设置壁纸模态框(模态框保留不动):系统/校区/我的上传三组网格点选即保存(checkWallpaper)、当前值回显 store 用户设置、上传走 /api/wallpaperUpload、个人壁纸可删;零新接口(任务A)
|
2026-10-02 08:45:47 +08:00 |
|
chenxing
|
7e239a0c73
|
style(settings): 边栏设置 pane 列宽与样式微调——未设宽列补 width/minWidth(名称120/图标70/地址220/打开方式100),地址列 tooltip 超长省略,操作列固定右侧,工具栏加分隔线收紧间距;Header「边栏设置」菜单改跳 /settings?pane=sidebar 并移除 test 残留按钮与旧 MenuBarModal 挂载(组件文件保留)(任务D)
|
2026-10-02 08:44:06 +08:00 |
|
chenxing
|
41f4dade91
|
fix(settings): 个人信息「所属部门」显示组路径——BoaUser.dept 是对象直显成 [object Object],改为取 groups 链学校组(type=2)→挂载组区段反向 join('/')(如「云海小学/校长室」),无学校组回退挂载组名、链空回退 dept.name、兜底 '-'(任务C)
|
2026-10-02 08:42:16 +08:00 |
|
chenxing
|
9bf2d3dbb1
|
feat(settings): 边栏设置 pane 对接真实管理(自 Header MenuBarModal 迁入)
build / build (push) Successful in 2m43s
- sidebar pane 静态示意(drag-list 占位)替换为真实管理:getMenuBarSchList 列表 + 新建/编辑/删除/toggleMenuBarShow 显示开关,列结构与图一 MenuBarModal 完全一致(名称/图标/角色/地址/打开方式/系统页面/是否显示/排序号/操作,isEdit 控制操作权限)
- 新建/编辑表单照抄:roleIds 多选(全部/半选态)、名称/网址、图标 iconUpload 直传(.svg + 网关头,可移除重传)、排序号、悬浮底部/系统页面开关、非系统页面时打开方式 Radio(排除 Modal)、IFrame 时显示头部开关;删除走 MyConfirm 二次确认
- 编辑弹窗为页面级 iview Modal(transfer);保存/删除/开关语义与 Header 弹窗一致(Header 入口未删,两处同数据同接口)
- 打开 pane 懒加载列表;静态 sidebarItems/drag-list 样式删除
|
2026-09-30 14:28:49 +08:00 |
|
chenxing
|
449696af04
|
ci: 重触发构建与自动发布——302aec5 建档后线上 /userhome/front/ 持续空响应(index.html 0B),projman auto 发布疑似下载/persist 中断,重跑完整链路重试
build / build (push) Successful in 2m56s
|
2026-09-30 13:36:20 +08:00 |
|
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 |
|