2.3.0-rc2

This commit is contained in:
2026-08-04 10:48:08 +08:00 Unverified
parent 6735a6d3fc
commit 10b51eb08a
19 changed files with 7292 additions and 7 deletions
+28
View File
@@ -118,6 +118,31 @@ onMounted(async () => {
<el-table-column prop="name" label="姓名" min-width="100" />
<el-table-column prop="className" label="班级" min-width="130" />
<el-table-column prop="majorName" label="专业" min-width="150" />
<el-table-column label="联系方式" min-width="210">
<template #default="{ row }">
<div class="contact-cell">
<span>{{ row.phone || '未填写电话' }}</span>
<small>{{ row.email || row.weChat ? [row.email, row.weChat && `微信 ${row.weChat}`].filter(Boolean).join(' · ') : '未填写邮箱或微信' }}</small>
</div>
</template>
</el-table-column>
<el-table-column label="紧急联系人" min-width="180">
<template #default="{ row }">
<div class="contact-cell">
<span>{{ row.emergencyContactName || '—' }}<template v-if="row.emergencyContactRelationship">{{ row.emergencyContactRelationship }}</template></span>
<small>{{ row.emergencyContactPhone || '未填写联系电话' }}</small>
</div>
</template>
</el-table-column>
<el-table-column label="特殊标记" min-width="210">
<template #default="{ row }">
<div class="special-cell">
<el-tag v-if="row.specialTags" type="warning" effect="light">{{ row.specialTags }}</el-tag>
<span v-else></span>
<small v-if="row.specialNeeds">{{ row.specialNeeds }}</small>
</div>
</template>
</el-table-column>
<el-table-column label="名单来源" width="210">
<template #default="{ row }">{{ row.enrolledAt ? `选课 · ${new Date(row.enrolledAt).toLocaleString('zh-CN')}` : '行政班关联' }}</template>
</el-table-column>
@@ -156,6 +181,9 @@ onMounted(async () => {
.roster-head h3 { margin: 5px 0 4px; font-size: 18px; }
.roster-head p { color: var(--muted); font-size: 12px; margin: 0; }
.roster-head span { color: var(--teal); font-size: 10px; font-weight: 700; }
.contact-cell, .special-cell { display: grid; gap: 4px; line-height: 1.35; }
.contact-cell small, .special-cell small { color: var(--muted); white-space: normal; }
.special-cell .el-tag { width: fit-content; max-width: 100%; white-space: normal; height: auto; padding-block: 3px; }
@media (max-width: 760px) {
.roster-workspace { grid-template-columns: 1fr; }
.roster-task-list { max-height: 220px; border-right: none; border-bottom: 1px solid var(--line); }