feat(avatar): 默认头像轮前端集成——设置页两级样式 + 登录写学校默认键 + 顶栏三态头像
build / build (push) Successful in 5m35s

- BaseApi:schAvatarStyle/saveSchAvatarStyle/clearSchAvatarStyle 三端点(后端 SchSettingsController 配套,本仓 service 仓随轮提交)
- App.vue:登录后 loadSchAvatarDefault()(与 loadSchThemeDefault 同构:失败/404/空→不写键不报错不阻塞),写 localStorage[yh-avatar-sch-default]
- Settings.vue:新增 avatar pane(我的头像样式人人可见 + 本校默认管理员可配,watch 进 pane 拉取)
- AppHeader/UserInfoModal:头像展示位换 UserAvatar 三态组件
- ThemePreview:预览页头像形态联动
运行时联调与部署验证待人工(后端端点须随 service 发版)
This commit is contained in:
chenxing
2026-10-06 20:20:44 +08:00
parent 4d9da5e3a6
commit e2c937f424
6 changed files with 390 additions and 37 deletions
+16
View File
@@ -62,6 +62,7 @@ mittBus.on("openBschIframePage", async (params: IframePageParmas) => {
const [r1, r2] = await Promise.all([p1, p2]);
store.$state.userInfo = userinfo;
loadSchThemeDefault();
loadSchAvatarDefault();
if (r1.length == 0) {
store.$state.userRoleList = [
{
@@ -103,6 +104,21 @@ function loadSchThemeDefault() {
.catch(() => undefined);
}
/** 拉学校默认头像样式写键(默认头像轮 2026-09-30;与 loadSchThemeDefault 同构:失败/404/空 → 不写、不报错、不阻塞登录流程) */
function loadSchAvatarDefault() {
BaseApi.getSchAvatarStyle()
.then((res: any) => {
if (res && res.avatarStyle) {
try {
localStorage.setItem("yh-avatar-sch-default", res.avatarStyle);
} catch (e) {
/* 隐私模式写失败静默 */
}
}
})
.catch(() => undefined);
}
/**切换角色 */
async function switchRole() {
await loadUserMenuBarList();