@@ -107,6 +107,9 @@ export interface Classroom {
|
|||||||
/** 绑定班级 id(null=未绑定) */
|
/** 绑定班级 id(null=未绑定) */
|
||||||
classId?: number | null;
|
classId?: number | null;
|
||||||
className?: string | null;
|
className?: string | null;
|
||||||
|
/** 绑定班级的年级(1=高一 2=高二 3=高三) */
|
||||||
|
grade?: GradeValue | null;
|
||||||
|
gradeName?: string | null;
|
||||||
studentCount?: number | null;
|
studentCount?: number | null;
|
||||||
headTeacher?: string | null;
|
headTeacher?: string | null;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -17,6 +17,9 @@ import type {
|
|||||||
Equipment,
|
Equipment,
|
||||||
} from "@/types/classroom";
|
} from "@/types/classroom";
|
||||||
|
|
||||||
|
/** 年级值 → 展示名(绑定班级详情行用) */
|
||||||
|
const GRADE_LABELS: Record<number, string> = { 1: "高一", 2: "高二", 3: "高三" };
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 教室管理(核心页)· 三栏布局
|
* 教室管理(核心页)· 三栏布局
|
||||||
*
|
*
|
||||||
@@ -500,6 +503,27 @@ const focusBuildingName = computed(
|
|||||||
() => buildings.value.find((b) => b.serID === focusRoom.value?.buildingId)?.buildingName ?? ""
|
() => buildings.value.find((b) => b.serID === focusRoom.value?.buildingId)?.buildingName ?? ""
|
||||||
);
|
);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 详情面板的绑定班级行。树回退行没有班级字段(classId 为 undefined)→ 全部显示"—";
|
||||||
|
* 未绑定(classId 为 null)→ 班级行显示"未绑定";已绑定 → 年级/班级/班主任/人数。
|
||||||
|
*/
|
||||||
|
const focusClassRows = computed(() => {
|
||||||
|
const fr = focusRoom.value;
|
||||||
|
const dash = "—";
|
||||||
|
if (!fr || fr.classId === undefined) {
|
||||||
|
return { grade: dash, className: dash, headTeacher: dash, studentCount: dash };
|
||||||
|
}
|
||||||
|
if (fr.classId == null) {
|
||||||
|
return { grade: dash, className: "未绑定", headTeacher: dash, studentCount: dash };
|
||||||
|
}
|
||||||
|
return {
|
||||||
|
grade: fr.gradeName || (fr.grade != null ? GRADE_LABELS[fr.grade] ?? dash : dash),
|
||||||
|
className: fr.className || dash,
|
||||||
|
headTeacher: fr.headTeacher || dash,
|
||||||
|
studentCount: fr.studentCount == null ? dash : `${fr.studentCount} 人`,
|
||||||
|
};
|
||||||
|
});
|
||||||
|
|
||||||
/** 布局示意图几何(按座位数生成课桌网格;多媒体区按设备名判断) */
|
/** 布局示意图几何(按座位数生成课桌网格;多媒体区按设备名判断) */
|
||||||
const plan = computed(() => {
|
const plan = computed(() => {
|
||||||
const fr = focusRoom.value;
|
const fr = focusRoom.value;
|
||||||
@@ -1225,6 +1249,22 @@ onMounted(async () => {
|
|||||||
</Tag>
|
</Tag>
|
||||||
</span>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
|
<div class="detail-row">
|
||||||
|
<span class="detail-row__label">年级</span>
|
||||||
|
<span class="detail-row__value">{{ focusClassRows.grade }}</span>
|
||||||
|
</div>
|
||||||
|
<div class="detail-row">
|
||||||
|
<span class="detail-row__label">班级</span>
|
||||||
|
<span class="detail-row__value">{{ focusClassRows.className }}</span>
|
||||||
|
</div>
|
||||||
|
<div class="detail-row">
|
||||||
|
<span class="detail-row__label">班主任</span>
|
||||||
|
<span class="detail-row__value">{{ focusClassRows.headTeacher }}</span>
|
||||||
|
</div>
|
||||||
|
<div class="detail-row">
|
||||||
|
<span class="detail-row__label">人数</span>
|
||||||
|
<span class="detail-row__value">{{ focusClassRows.studentCount }}</span>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!-- 布局示意图(按座位数/设备生成的示意,非实际测绘图) -->
|
<!-- 布局示意图(按座位数/设备生成的示意,非实际测绘图) -->
|
||||||
|
|||||||
Reference in New Issue
Block a user