mirror of
https://github.com/ZeroCatDev/Classworks.git
synced 2025-07-04 18:39:22 +00:00
全屏按钮!
This commit is contained in:
parent
3988773341
commit
ac417b1432
@ -58,6 +58,23 @@
|
|||||||
</template>
|
</template>
|
||||||
</v-list-item>
|
</v-list-item>
|
||||||
|
|
||||||
|
<v-divider class="my-2" />
|
||||||
|
|
||||||
|
<v-list-item>
|
||||||
|
<template #prepend>
|
||||||
|
<v-icon icon="mdi-fullscreen" class="mr-3" />
|
||||||
|
</template>
|
||||||
|
<v-list-item-title>显示全屏按钮</v-list-item-title>
|
||||||
|
<v-list-item-subtitle>在主页面显示全屏切换按钮</v-list-item-subtitle>
|
||||||
|
<template #append>
|
||||||
|
<v-switch
|
||||||
|
v-model="localSettings.showFullscreenButton"
|
||||||
|
density="comfortable"
|
||||||
|
hide-details
|
||||||
|
/>
|
||||||
|
</template>
|
||||||
|
</v-list-item>
|
||||||
|
|
||||||
<div class="d-flex gap-2 mt-4">
|
<div class="d-flex gap-2 mt-4">
|
||||||
<v-btn
|
<v-btn
|
||||||
color="primary"
|
color="primary"
|
||||||
@ -91,7 +108,8 @@ export default {
|
|||||||
const settings = {
|
const settings = {
|
||||||
emptySubjectDisplay: getSetting('display.emptySubjectDisplay'),
|
emptySubjectDisplay: getSetting('display.emptySubjectDisplay'),
|
||||||
dynamicSort: getSetting('display.dynamicSort'),
|
dynamicSort: getSetting('display.dynamicSort'),
|
||||||
showRandomButton: getSetting('display.showRandomButton')
|
showRandomButton: getSetting('display.showRandomButton'),
|
||||||
|
showFullscreenButton: getSetting('display.showFullscreenButton')
|
||||||
};
|
};
|
||||||
|
|
||||||
return {
|
return {
|
||||||
|
@ -148,6 +148,16 @@
|
|||||||
>
|
>
|
||||||
随机点名
|
随机点名
|
||||||
</v-btn>
|
</v-btn>
|
||||||
|
<v-btn
|
||||||
|
v-if="showFullscreenButton"
|
||||||
|
:color="state.isFullscreen ? 'blue-grey' : 'blue'"
|
||||||
|
:prepend-icon="state.isFullscreen ? 'mdi-fullscreen-exit' : 'mdi-fullscreen'"
|
||||||
|
size="large"
|
||||||
|
class="ml-2"
|
||||||
|
@click="toggleFullscreen"
|
||||||
|
>
|
||||||
|
{{ state.isFullscreen ? '退出全屏' : '全屏显示' }}
|
||||||
|
</v-btn>
|
||||||
</v-container>
|
</v-container>
|
||||||
|
|
||||||
<!-- 出勤统计区域 -->
|
<!-- 出勤统计区域 -->
|
||||||
@ -429,6 +439,7 @@ export default {
|
|||||||
{ key: "地理", name: "地理" },
|
{ key: "地理", name: "地理" },
|
||||||
{ key: "其他", name: "其他" },
|
{ key: "其他", name: "其他" },
|
||||||
],
|
],
|
||||||
|
isFullscreen: false,
|
||||||
},
|
},
|
||||||
loading: {
|
loading: {
|
||||||
download: false,
|
download: false,
|
||||||
@ -561,6 +572,9 @@ export default {
|
|||||||
shouldBlockAutoSave() {
|
shouldBlockAutoSave() {
|
||||||
return !this.isToday && this.autoSave && this.blockNonTodayAutoSave;
|
return !this.isToday && this.autoSave && this.blockNonTodayAutoSave;
|
||||||
},
|
},
|
||||||
|
showFullscreenButton() {
|
||||||
|
return getSetting("display.showFullscreenButton");
|
||||||
|
},
|
||||||
},
|
},
|
||||||
|
|
||||||
watch: {
|
watch: {
|
||||||
@ -601,6 +615,12 @@ export default {
|
|||||||
this.unwatchSettings = watchSettings(() => {
|
this.unwatchSettings = watchSettings(() => {
|
||||||
this.updateSettings();
|
this.updateSettings();
|
||||||
});
|
});
|
||||||
|
|
||||||
|
// 监听全屏变化事件
|
||||||
|
document.addEventListener('fullscreenchange', this.fullscreenChangeHandler);
|
||||||
|
document.addEventListener('webkitfullscreenchange', this.fullscreenChangeHandler);
|
||||||
|
document.addEventListener('mozfullscreenchange', this.fullscreenChangeHandler);
|
||||||
|
document.addEventListener('MSFullscreenChange', this.fullscreenChangeHandler);
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
console.error("初始化失败:", err);
|
console.error("初始化失败:", err);
|
||||||
this.showError("初始化失败,请刷新页面重试");
|
this.showError("初始化失败,请刷新页面重试");
|
||||||
@ -615,6 +635,12 @@ export default {
|
|||||||
// 注意刷新间隔存放在 state 内
|
// 注意刷新间隔存放在 state 内
|
||||||
clearInterval(this.state.refreshInterval);
|
clearInterval(this.state.refreshInterval);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 移除全屏变化事件监听
|
||||||
|
document.removeEventListener('fullscreenchange', this.fullscreenChangeHandler);
|
||||||
|
document.removeEventListener('webkitfullscreenchange', this.fullscreenChangeHandler);
|
||||||
|
document.removeEventListener('mozfullscreenchange', this.fullscreenChangeHandler);
|
||||||
|
document.removeEventListener('MSFullscreenChange', this.fullscreenChangeHandler);
|
||||||
},
|
},
|
||||||
|
|
||||||
methods: {
|
methods: {
|
||||||
@ -1212,6 +1238,50 @@ export default {
|
|||||||
await this.trySave(true);
|
await this.trySave(true);
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
|
// 全屏相关方法
|
||||||
|
toggleFullscreen() {
|
||||||
|
if (!this.state.isFullscreen) {
|
||||||
|
this.enterFullscreen();
|
||||||
|
} else {
|
||||||
|
this.exitFullscreen();
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
enterFullscreen() {
|
||||||
|
const docElm = document.documentElement;
|
||||||
|
|
||||||
|
if (docElm.requestFullscreen) {
|
||||||
|
docElm.requestFullscreen();
|
||||||
|
} else if (docElm.webkitRequestFullScreen) {
|
||||||
|
docElm.webkitRequestFullScreen();
|
||||||
|
} else if (docElm.mozRequestFullScreen) {
|
||||||
|
docElm.mozRequestFullScreen();
|
||||||
|
} else if (docElm.msRequestFullscreen) {
|
||||||
|
docElm.msRequestFullscreen();
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
exitFullscreen() {
|
||||||
|
if (document.exitFullscreen) {
|
||||||
|
document.exitFullscreen();
|
||||||
|
} else if (document.webkitExitFullscreen) {
|
||||||
|
document.webkitExitFullscreen();
|
||||||
|
} else if (document.mozCancelFullScreen) {
|
||||||
|
document.mozCancelFullScreen();
|
||||||
|
} else if (document.msExitFullscreen) {
|
||||||
|
document.msExitFullscreen();
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
fullscreenChangeHandler() {
|
||||||
|
this.state.isFullscreen = !!(
|
||||||
|
document.fullscreenElement ||
|
||||||
|
document.webkitFullscreenElement ||
|
||||||
|
document.mozFullScreenElement ||
|
||||||
|
document.msFullscreenElement
|
||||||
|
);
|
||||||
|
},
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
</script>
|
</script>
|
||||||
|
@ -213,7 +213,8 @@ export default {
|
|||||||
display: {
|
display: {
|
||||||
emptySubjectDisplay: getSetting('display.emptySubjectDisplay'),
|
emptySubjectDisplay: getSetting('display.emptySubjectDisplay'),
|
||||||
dynamicSort: getSetting('display.dynamicSort'),
|
dynamicSort: getSetting('display.dynamicSort'),
|
||||||
showRandomButton: getSetting('display.showRandomButton')
|
showRandomButton: getSetting('display.showRandomButton'),
|
||||||
|
showFullscreenButton: getSetting('display.showFullscreenButton')
|
||||||
},
|
},
|
||||||
developer: {
|
developer: {
|
||||||
enabled: getSetting('developer.enabled'),
|
enabled: getSetting('developer.enabled'),
|
||||||
|
@ -97,6 +97,11 @@ const settingsDefinitions = {
|
|||||||
default: false,
|
default: false,
|
||||||
description: "是否显示随机按钮",
|
description: "是否显示随机按钮",
|
||||||
},
|
},
|
||||||
|
"display.showFullscreenButton": {
|
||||||
|
type: "boolean",
|
||||||
|
default: true,
|
||||||
|
description: "是否显示全屏按钮",
|
||||||
|
},
|
||||||
|
|
||||||
// 服务器设置(合并了数据提供者设置)
|
// 服务器设置(合并了数据提供者设置)
|
||||||
"server.domain": {
|
"server.domain": {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user