diff --git a/src/views/cms/SchoolWorkbench.vue b/src/views/cms/SchoolWorkbench.vue
index 3a2e098..d783d8d 100644
--- a/src/views/cms/SchoolWorkbench.vue
+++ b/src/views/cms/SchoolWorkbench.vue
@@ -198,7 +198,7 @@ onMounted(run);
我的学校
-
选择学校进入内容管理;学校与站点由平台管理员在「添加学校」中绑定创建。
+
选择学校进入内容管理;学校由平台管理员接入,院系子站可在「站点管理」自助创建。
diff --git a/src/views/cms/SiteManage.vue b/src/views/cms/SiteManage.vue
index 6faefaa..c289777 100644
--- a/src/views/cms/SiteManage.vue
+++ b/src/views/cms/SiteManage.vue
@@ -32,6 +32,10 @@ const router = useRouter();
/** 超管全局视图(工作台入口带入 scope=all) */
const scopeAll = computed(() => route.query.scope === "all" && store.isSuperAdmin);
+/** B1 建站权限拆分:校级(学校上下文内)可自助创建院系子站;超管向导行为不变 */
+const isSchoolAdmin = computed(() => !store.isSuperAdmin && !!store.currentSchool);
+const canCreateSite = computed(() => store.isSuperAdmin || isSchoolAdmin.value);
+
const rows = ref
([]);
const loading = ref(false);
const tableHeight = Utils.useTableHeight({ isOperat: true });
@@ -214,8 +218,9 @@ async function save() {
id: form.id,
code: form.code,
parentSiteId: form.parentSiteId || 0,
- schId: form.schId,
- schName: form.schName || undefined,
+ // B1:校级角色隐藏学校信息字段,留空由服务端继承主站(防伪造通道)
+ schId: isSchoolAdmin.value ? undefined : form.schId,
+ schName: isSchoolAdmin.value ? undefined : form.schName || undefined,
name: form.name,
theme: form.theme || undefined,
configJson: t ? mergeThemeParamsIntoConfigJson(form.configJson || "", t, themeParams) : form.configJson || undefined,
@@ -285,10 +290,10 @@ watch(() => store.currentSchool?.schId, () => run());
返回学校工作台
-
+
@@ -303,15 +308,15 @@ watch(() => store.currentSchool?.schId, () => run());
-
-
+
-
+
@@ -340,8 +345,8 @@ watch(() => store.currentSchool?.schId, () => run());
-
-
+
+
diff --git a/src/views/cms/SiteWizard.vue b/src/views/cms/SiteWizard.vue
index a13087a..5d247b0 100644
--- a/src/views/cms/SiteWizard.vue
+++ b/src/views/cms/SiteWizard.vue
@@ -17,6 +17,8 @@ import SiteConfigForm from "@/views/cms/components/SiteConfigForm.vue";
const props = defineProps<{
visible: boolean;
sites: SiteVo[];
+ /** B1 建站权限拆分:校级锁定在本校主站下建院系子站(上级禁改、学校信息由服务端继承) */
+ lockParentId?: number;
}>();
const emit = defineEmits<{
@@ -51,7 +53,12 @@ const canPreview = computed(() => !!sourceSiteCode.value && !!themeName.value);
const previewTick = ref(0);
const previewParams = ref