- 两个班:大比分 + 一次就对副比分,每道题左右两根条、差得最多的在上,下面每周人均和全班分布 - 三个班以上:一行一道题、一格一个班,越深做对的人越多,皇冠是这道做得最好的班;右边谁领先的题多和赛跑 - 学生自己的班标「你们班」,输掉的题写「再 N 人做对就打平」;AI 分析只给老师,直接在页面里出 - 去掉综合分、雷达图、十张柱状图;手机版按稿改成上下排和页签 - 排名页、班级对抗、班级详情的入口对登录的人都开放,带上当前的班 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
d83804b814
commit
ce0093fc29
12 files changed
+2230
-873
No files matched your search
@@ -14,7 +14,7 @@ const props = defineProps<{
|
||||
teacher?: boolean
|
||||
/** 放在手机页签卡里:不要自己的边框和标题 */
|
||||
bare?: boolean
|
||||
/** 显示「班级 PK」入口(原来排名页上那个按钮,管理员角色才有) */
|
||||
/** 显示「班级 PK」入口(登录了就有:学生也能比) */
|
||||
pk?: boolean
|
||||
}>()
|
||||
const emit = defineEmits<{ pick: [className: string] }>()
|
||||
@@ -56,7 +56,12 @@ function shortLabel(className: string) {
|
||||
<div class="battle" :class="{ bare }">
|
||||
<div class="title">
|
||||
<b v-if="!bare">班级对抗</b><span class="muted">人均做对 · 全服 · 点班名看详情</span>
|
||||
<router-link v-if="pk" to="/class" class="pk">班级 PK ›</router-link>
|
||||
<router-link
|
||||
v-if="pk"
|
||||
:to="{ path: '/class', query: mine ? { classes: mine } : {} }"
|
||||
class="pk"
|
||||
>班级 PK ›</router-link
|
||||
>
|
||||
</div>
|
||||
<div
|
||||
v-for="item in shown"
|
||||
|
||||
@@ -245,7 +245,7 @@ function go(path: string, query: Record<string, string>) {
|
||||
<MdPreview v-if="report" class="report" :model-value="report" />
|
||||
</section>
|
||||
|
||||
<a v-if="pk" href="#" class="pk" @click.prevent="go('/class', {})"
|
||||
<a v-if="pk" href="#" class="pk" @click.prevent="go('/class', { classes: className! })"
|
||||
>和别的班比 → 班级 PK ›</a
|
||||
>
|
||||
</div>
|
||||
|
||||
@@ -480,7 +480,17 @@ async function restore(userId: number) {
|
||||
>
|
||||
班级详情 · AI 分析
|
||||
</n-button>
|
||||
<n-button size="small" secondary @click="router.push('/class')">班级 PK</n-button>
|
||||
<n-button
|
||||
size="small"
|
||||
secondary
|
||||
@click="
|
||||
router.push({
|
||||
path: '/class',
|
||||
query: classContext ? { classes: classContext } : {},
|
||||
})
|
||||
"
|
||||
>班级 PK</n-button
|
||||
>
|
||||
</div>
|
||||
<div class="hidden-list">
|
||||
<span class="hidden-title">不计入排名的人</span>
|
||||
@@ -506,7 +516,7 @@ async function restore(userId: number) {
|
||||
:items="battle"
|
||||
:mine="classContext"
|
||||
:teacher="teacher"
|
||||
:pk="userStore.isAdminRole"
|
||||
:pk="userStore.isAuthed"
|
||||
@pick="openDetail"
|
||||
/>
|
||||
</aside>
|
||||
@@ -560,7 +570,7 @@ async function restore(userId: number) {
|
||||
:items="battle"
|
||||
:mine="classContext"
|
||||
:teacher="teacher"
|
||||
:pk="userStore.isAdminRole"
|
||||
:pk="userStore.isAuthed"
|
||||
@pick="openDetail"
|
||||
/>
|
||||
<RankTrend
|
||||
@@ -586,7 +596,7 @@ async function restore(userId: number) {
|
||||
v-model:show="showDetail"
|
||||
:class-name="detailClass"
|
||||
:teacher="teacher"
|
||||
:pk="userStore.isAdminRole"
|
||||
:pk="userStore.isAuthed"
|
||||
/>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
Reference in new issue
Block a user