chore: 前置快照-assetUrl前缀与学校切换收敛会话遗留(执行方案B1~B5前既有未提交变更)

This commit is contained in:
chenxing
2026-09-08 15:14:07 +08:00
parent 67a7164897
commit c77be8b5d8
6 changed files with 232 additions and 137 deletions
+40 -24
View File
@@ -88,7 +88,8 @@ const form = ref({
});
const rules = {
schId: [{ required: true, message: "请选择学校(来自用户中心)", trigger: "change" }],
// 必须声明 type:"number":schId 是 UserBase 组 ID(数字),缺省按 string 校验会把已选中的数字 ID 判为不通过
schId: [{ required: true, type: "number", message: "请选择学校(来自用户中心)", trigger: "change" }],
code: [
{ required: true, message: "主站编码不得为空", trigger: "blur" },
{ pattern: /^[a-z0-9][a-z0-9-]{1,62}[a-z0-9]$/, message: "仅限小写字母/数字/短横线", trigger: "blur" },
@@ -125,11 +126,10 @@ async function loadThemes() {
function onSchoolPick(id: number) {
const opt = options.value.find(o => o.id === id);
// 校名/编码/名称始终跟随当前选中学校带出,避免切换学校后残留上一所的默认值造成“已选好”的假象
form.value.schName = opt?.name || "";
if (!form.value.name && opt) {
if (opt) {
form.value.name = `${opt.name}门户网站`;
}
if (!form.value.code && opt) {
form.value.code = `sch-${opt.id}`;
}
}
@@ -171,27 +171,30 @@ onMounted(run);
<template>
<div class="workbench">
<header class="wb-header fix">
<h4 class="fl align-middle">云海CMS · 学校工作台</h4>
<div class="wb-header-aside fr">
<Button v-if="isSuper" size="small" class="wb-btn" @click="goAllSites" :disabled="!cards.length">
<Icon type="ios-globe" />
全部站点总览
</Button>
<Button v-if="isSuper" size="small" type="primary" class="wb-btn" @click="openAdd">
<Icon type="ios-add" />
添加学校
</Button>
<span class="delimiter align-middle"></span>
<img :src="userInfo.avatar" v-if="userInfo.avatar" class="fl align-middle wb-avatar" @click="linkUserInfo" />
<a class="name fl align-middle" href="javascript:void(0);" @click="linkUserInfo">{{ userInfo.name }}</a>
<span class="delimiter align-middle"></span>
<a href="javascript:;" @click="logout" title="退出登陆">
<header class="wb-header">
<h4>云海CMS · 学校工作台</h4>
<div class="wb-header-aside">
<img :src="userInfo.avatar" v-if="userInfo.avatar" class="wb-avatar" @click="linkUserInfo" />
<a class="name" href="javascript:void(0);" @click="linkUserInfo">{{ userInfo.name }}</a>
<span class="delimiter"></span>
<a href="javascript:;" class="logout" @click="logout" title="退出登陆">
<i class="iconfont icon-logout"></i>
</a>
</div>
</header>
<!-- 操作工具行(Notice search-wrap 同款灰底条):按钮居左,账号区保持在深色 header 右侧 -->
<div class="wb-toolbar" v-if="isSuper">
<Button class="wb-btn" @click="goAllSites" :disabled="!cards.length">
<Icon type="ios-globe" />
全部站点总览
</Button>
<Button type="primary" class="wb-btn" @click="openAdd">
<Icon type="ios-add" />
添加学校
</Button>
</div>
<div class="wb-body">
<div class="wb-title">
<h3>我的学校</h3>
@@ -225,7 +228,7 @@ onMounted(run);
</div>
<div v-else class="empty-state">
<Icon type="ios-school" :size="48" />
<p v-if="isSuper">还没有学校 —— 点击右上角「添加学校」绑定用户中心学校并创建门户主站。</p>
<p v-if="isSuper">还没有学校 —— 点击上方「添加学校」绑定用户中心学校并创建门户主站。</p>
<p v-else>暂无可管理的学校站点,请联系平台管理员。</p>
<Button v-if="isSuper" type="primary" @click="openAdd">
<Icon type="ios-add" />
@@ -279,6 +282,7 @@ onMounted(run);
}
.wb-header {
height: 56px;
flex-shrink: 0;
background: #1f2a3a;
color: #fff;
display: flex;
@@ -288,9 +292,9 @@ onMounted(run);
color: #fff;
font-size: 16px;
margin: 0;
line-height: 56px;
}
.wb-header-aside {
margin-left: auto;
display: flex;
align-items: center;
gap: 10px;
@@ -307,12 +311,24 @@ onMounted(run);
width: 28px;
height: 28px;
border-radius: 50%;
cursor: pointer;
}
.wb-btn {
// 深色 header 上按钮保持默认浅色块
.logout {
color: #fff;
display: inline-flex;
align-items: center;
}
}
}
/* 工具行:Notice front .search-wrap 同款(#f7f7f7 底 + 10px 16px 内边距 ≈ 52px 高),按钮居左 */
.wb-toolbar {
flex-shrink: 0;
background: #f7f7f7;
padding: 10px 16px;
display: flex;
align-items: center;
gap: 12px;
}
.wb-body {
flex: 1;
overflow-y: auto;