refactor: Relocate scheduler service settings from the main settings page to a new dedicated system view accessible via the shortcut bar.

This commit is contained in:
jxxghp
2026-03-25 13:37:59 +08:00
parent 192ded374a
commit 3cc83d10d3
7 changed files with 50 additions and 24 deletions
+38 -4
View File
@@ -7,6 +7,7 @@ import ModuleTestView from '@/views/system/ModuleTestView.vue'
import MessageView from '@/views/system/MessageView.vue' import MessageView from '@/views/system/MessageView.vue'
import WordsView from '@/views/system/WordsView.vue' import WordsView from '@/views/system/WordsView.vue'
import CacheView from '@/views/system/CacheView.vue' import CacheView from '@/views/system/CacheView.vue'
import AccountSettingService from '@/views/system/ServiceView.vue'
import api from '@/api' import api from '@/api'
import { useDisplay } from 'vuetify' import { useDisplay } from 'vuetify'
import { getQueryValue } from '@/@core/utils' import { getQueryValue } from '@/@core/utils'
@@ -49,6 +50,9 @@ const wordsDialog = ref(false)
// 缓存管理弹窗 // 缓存管理弹窗
const cacheDialog = ref(false) const cacheDialog = ref(false)
// 定时服务弹窗
const schedulerDialog = ref(false)
// 输入消息 // 输入消息
const user_message = ref('') const user_message = ref('')
@@ -108,6 +112,13 @@ const shortcuts = [
dialog: 'cache', dialog: 'cache',
dialogRef: cacheDialog, dialogRef: cacheDialog,
}, },
{
title: t('shortcut.scheduler.title'),
subtitle: t('shortcut.scheduler.subtitle'),
icon: 'mdi-list-box',
dialog: 'scheduler',
dialogRef: schedulerDialog,
},
{ {
title: t('shortcut.system.title'), title: t('shortcut.system.title'),
subtitle: t('shortcut.system.subtitle'), subtitle: t('shortcut.system.subtitle'),
@@ -275,10 +286,10 @@ onMounted(() => {
item.dialog === 'message' item.dialog === 'message'
? openMessageDialog() ? openMessageDialog()
: item.dialog === 'words' : item.dialog === 'words'
? openDialog(item.dialogRef) ? openDialog(item.dialogRef)
: item.dialog === 'cache' : item.dialog === 'cache'
? openDialog(item.dialogRef) ? openDialog(item.dialogRef)
: openDialog(item.dialogRef) : openDialog(item.dialogRef)
" "
> >
<VAvatar variant="text" size="48" rounded="lg"> <VAvatar variant="text" size="48" rounded="lg">
@@ -420,6 +431,29 @@ onMounted(() => {
</VCardText> </VCardText>
</VCard> </VCard>
</VDialog> </VDialog>
<!-- 定时服务弹窗 -->
<VDialog
v-if="schedulerDialog"
v-model="schedulerDialog"
max-width="60rem"
scrollable
:fullscreen="!display.mdAndUp.value"
>
<VCard>
<VCardItem class="py-2">
<VCardTitle>
<VIcon icon="mdi-list-box" class="me-2" />
{{ t('shortcut.scheduler.subtitle') }}
</VCardTitle>
<VCardSubtitle>{{ t('setting.scheduler.subtitle') }}</VCardSubtitle>
<VDialogCloseBtn @click="schedulerDialog = false" />
</VCardItem>
<VDivider />
<VCardText class="pa-0">
<AccountSettingService />
</VCardText>
</VCard>
</VDialog>
<!-- 系统健康检查弹窗 --> <!-- 系统健康检查弹窗 -->
<VDialog <VDialog
v-if="systemTestDialog" v-if="systemTestDialog"
+4
View File
@@ -582,6 +582,10 @@ export default {
title: 'Cache', title: 'Cache',
subtitle: 'Manage Cache', subtitle: 'Manage Cache',
}, },
scheduler: {
title: 'Services',
subtitle: 'Scheduled Services',
},
}, },
workflow: { workflow: {
components: 'Action Components', components: 'Action Components',
+4
View File
@@ -579,6 +579,10 @@ export default {
title: '缓存', title: '缓存',
subtitle: '管理缓存', subtitle: '管理缓存',
}, },
scheduler: {
title: '服务',
subtitle: '定时服务',
},
}, },
workflow: { workflow: {
components: '动作组件', components: '动作组件',
+4
View File
@@ -579,6 +579,10 @@ export default {
title: '緩存', title: '緩存',
subtitle: '管理緩存', subtitle: '管理緩存',
}, },
scheduler: {
title: '服務',
subtitle: '定時服務',
},
}, },
workflow: { workflow: {
components: '動作組件', components: '動作組件',
-10
View File
@@ -6,7 +6,6 @@ import AccountSettingSite from '@/views/setting/AccountSettingSite.vue'
import AccountSettingSearch from '@/views/setting/AccountSettingSearch.vue' import AccountSettingSearch from '@/views/setting/AccountSettingSearch.vue'
import AccountSettingSubscribe from '@/views/setting/AccountSettingSubscribe.vue' import AccountSettingSubscribe from '@/views/setting/AccountSettingSubscribe.vue'
import AccountSettingSystem from '@/views/setting/AccountSettingSystem.vue' import AccountSettingSystem from '@/views/setting/AccountSettingSystem.vue'
import AccountSettingService from '@/views/setting/AccountSettingService.vue'
import AccountSettingDirectory from '@/views/setting/AccountSettingDirectory.vue' import AccountSettingDirectory from '@/views/setting/AccountSettingDirectory.vue'
import AccountSettingRule from '@/views/setting/AccountSettingRule.vue' import AccountSettingRule from '@/views/setting/AccountSettingRule.vue'
import { getSettingTabs } from '@/router/i18n-menu' import { getSettingTabs } from '@/router/i18n-menu'
@@ -93,15 +92,6 @@ onMounted(() => {
</transition> </transition>
</VWindowItem> </VWindowItem>
<!-- 服务 -->
<VWindowItem value="scheduler">
<transition name="fade-slide" appear>
<div>
<AccountSettingService />
</div>
</transition>
</VWindowItem>
<!-- 通知 --> <!-- 通知 -->
<VWindowItem value="notification"> <VWindowItem value="notification">
<transition name="fade-slide" appear> <transition name="fade-slide" appear>
-6
View File
@@ -185,12 +185,6 @@ export function getSettingTabs(t: Composer['t']) {
tab: 'subscribe', tab: 'subscribe',
description: t('settingTabs.subscribe.description'), description: t('settingTabs.subscribe.description'),
}, },
{
title: t('settingTabs.scheduler.title'),
icon: 'mdi-list-box',
tab: 'scheduler',
description: t('settingTabs.scheduler.description'),
},
{ {
title: t('settingTabs.notification.title'), title: t('settingTabs.notification.title'),
icon: 'mdi-bell', icon: 'mdi-bell',
@@ -70,10 +70,6 @@ useDataRefresh(
<template> <template>
<VCard> <VCard>
<VCardItem>
<VCardTitle>{{ t('setting.scheduler.title') }}</VCardTitle>
<VCardSubtitle>{{ t('setting.scheduler.subtitle') }}</VCardSubtitle>
</VCardItem>
<VTable class="text-no-wrap"> <VTable class="text-no-wrap">
<thead> <thead>
<tr> <tr>