1
0
mirror of https://github.com/ZeroCatDev/Classworks.git synced 2026-08-12 09:20:31 +00:00

feat: 添加UAF作业导入导出按钮显示控制

This commit is contained in:
Sunwuyuan 2026-07-11 16:29:47 +08:00
parent 08fcc5cb4f
commit 8238d94f52
No known key found for this signature in database
GPG Key ID: A6A54CF66F56BB64
4 changed files with 81 additions and 71 deletions

View File

@ -19,85 +19,21 @@
@click="$emit('show-sync-message')"
>
同步完成
</v-btn>
<v-btn
v-if="showRandomPickerButton"
append-icon="mdi-dice-multiple"
class="ml-2"
color="amber"
prepend-icon="mdi-account-question"
size="large"
@click="$emit('open-random-picker')"
</v-btn><v-menu
v-if="showUafTransferButton"
location="bottom end"
>
随机点名
</v-btn>
<v-btn-group
v-if="showExamScheduleButton"
class="ml-2"
color="green"
variant="elevated"
divided
>
<v-btn
prepend-icon="mdi-calendar-check"
size="large"
@click="$router.push('/examschedule')"
>
考试看板
</v-btn>
<v-btn
icon="mdi-plus"
size="large"
@click="$emit('add-exam-card')"
/>
</v-btn-group>
<v-btn
v-if="showListCardButton"
class="ml-2"
color="primary-darken-1"
prepend-icon="mdi-list-box"
size="large"
@click="$router.push('/list')"
>
列表
</v-btn>
<v-btn
v-if="showFullscreenButton"
:color="isFullscreen ? 'blue-grey' : 'blue'"
:prepend-icon="
isFullscreen ? 'mdi-fullscreen-exit' : 'mdi-fullscreen'
"
class="ml-2"
size="large"
@click="$emit('toggle-fullscreen')"
>
{{ isFullscreen ? "退出全屏" : "全屏显示" }}
</v-btn>
<v-btn
v-if="showTestCardButton"
class="ml-2"
color="purple"
prepend-icon="mdi-test-tube"
size="large"
@click="$emit('add-test-card')"
>
添加测试卡片
</v-btn>
<v-menu location="bottom end">
<template #activator="{ props: menuProps }">
<v-btn
v-bind="menuProps"
:disabled="uafTransferLoading"
:loading="uafTransferLoading"
append-icon="mdi-menu-down"
class="ml-2"
color="indigo"
prepend-icon="mdi-swap-vertical-bold"
size="large"
rounded="xl"
>
作业导出导入
</v-btn>
><v-icon icon="mdi-swap-vertical-bold"></v-icon></v-btn>
</template>
<v-list density="comfortable">
<v-list-item
@ -111,7 +47,65 @@
@click="$emit('open-uaf-import')"
/>
</v-list>
</v-menu>
</v-menu> <v-btn
v-if="showFullscreenButton"
:color="isFullscreen ? 'blue-grey' : 'blue'"
:prepend-icon="
isFullscreen ? 'mdi-fullscreen-exit' : 'mdi-fullscreen'
"
rounded="xl"
class="ml-2"
size="large"
@click="$emit('toggle-fullscreen')"
>
{{ isFullscreen ? "退出全屏" : "全屏" }}
</v-btn>
<v-btn
v-if="showRandomPickerButton"
append-icon="mdi-dice-multiple"
class="ml-2"
color="amber"
prepend-icon="mdi-account-question"
size="large"
@click="$emit('open-random-picker')"
>
随机点名
</v-btn>
<v-btn
v-if="showExamScheduleButton"
prepend-icon="mdi-calendar-check"
size="large"
@click="$emit('add-exam-card')"
class="ml-2"
color="green"
>
考试看板
</v-btn>
<v-btn
v-if="showListCardButton"
class="ml-2"
color="primary-darken-1"
prepend-icon="mdi-list-box"
size="large"
@click="$router.push('/list')"
>
列表
</v-btn>
<v-btn
v-if="showTestCardButton"
class="ml-2"
color="purple"
prepend-icon="mdi-test-tube"
size="large"
@click="$emit('add-test-card')"
>
添加测试卡片
</v-btn>
</div>
<v-card
@ -156,6 +150,7 @@ export default {
isFullscreen: Boolean,
showAntiScreenBurnCard: Boolean,
showTestCardButton: Boolean,
showUafTransferButton: Boolean,
uafTransferLoading: Boolean,
},
emits: [

View File

@ -68,6 +68,9 @@
<v-divider class="my-2" />
<setting-item :setting-key="'display.showExamScheduleButton'" />
<v-divider class="my-2" />
<setting-item :setting-key="'display.showUafTransfer'" />
<v-divider class="my-2" />
<setting-item :setting-key="'display.forceDesktopMode'" />

View File

@ -200,6 +200,7 @@
:is-fullscreen="state.isFullscreen"
:show-anti-screen-burn-card="showAntiScreenBurnCard"
:show-test-card-button="showTestCardButton"
:show-uaf-transfer-button="showUafTransferButton"
:uaf-transfer-loading="loading.exportUaf"
@upload="manualUpload"
@show-sync-message="showSyncMessage"
@ -486,9 +487,10 @@
>
<v-card>
<v-card-title class="text-h6">
预览考试看板
考试看板
</v-card-title>
<v-card-text>
<v-list><v-list-item active color="green" @click="$router.push('/examschedule')" append-icon="mdi-arrow-right">打开考试看板</v-list-item></v-list>
<v-list v-if="examStore.examList.length > 0">
<v-list-item
v-for="exam in examStore.examList"
@ -1068,6 +1070,9 @@ export default {
showTestCardButton() {
return getSetting("developer.enabled");
},
showUafTransferButton() {
return getSetting("display.showUafTransfer");
},
shouldShowInit() {
const provider = getSetting("server.provider");
const isKv = provider === "kv-server" || provider === "classworkscloud";
@ -2417,6 +2422,7 @@ export default {
cardHoverEffect: "卡片悬浮效果",
enhancedTouchMode: "增强触摸模式",
showAntiScreenBurnCard: "防烧屏卡片",
showUafTransfer: "UAF导入导出",
mode: "主题模式",

View File

@ -203,6 +203,12 @@ const settingsDefinitions = {
icon: "mdi-calendar-check",
// 控制是否在主页显示考试看板按钮,指向考试安排页面
},
"display.showUafTransfer": {
type: "boolean",
default: true,
description: "是否显示UAF作业导入导出",
icon: "mdi-swap-vertical-bold",
},
"display.showQuickTools": {
type: "boolean",
default: true,