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')" @click="$emit('show-sync-message')"
> >
同步完成 同步完成
</v-btn> </v-btn><v-menu
<v-btn v-if="showUafTransferButton"
v-if="showRandomPickerButton" location="bottom end"
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-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 }"> <template #activator="{ props: menuProps }">
<v-btn <v-btn
v-bind="menuProps" v-bind="menuProps"
:disabled="uafTransferLoading" :disabled="uafTransferLoading"
:loading="uafTransferLoading" :loading="uafTransferLoading"
append-icon="mdi-menu-down"
class="ml-2" class="ml-2"
color="indigo" color="indigo"
prepend-icon="mdi-swap-vertical-bold"
size="large" size="large"
rounded="xl" rounded="xl"
> ><v-icon icon="mdi-swap-vertical-bold"></v-icon></v-btn>
作业导出导入
</v-btn>
</template> </template>
<v-list density="comfortable"> <v-list density="comfortable">
<v-list-item <v-list-item
@ -111,7 +47,65 @@
@click="$emit('open-uaf-import')" @click="$emit('open-uaf-import')"
/> />
</v-list> </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> </div>
<v-card <v-card
@ -156,6 +150,7 @@ export default {
isFullscreen: Boolean, isFullscreen: Boolean,
showAntiScreenBurnCard: Boolean, showAntiScreenBurnCard: Boolean,
showTestCardButton: Boolean, showTestCardButton: Boolean,
showUafTransferButton: Boolean,
uafTransferLoading: Boolean, uafTransferLoading: Boolean,
}, },
emits: [ emits: [

View File

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

View File

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

View File

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