mirror of
https://github.com/jxxghp/MoviePilot-Frontend.git
synced 2026-09-05 23:56:42 +08:00
调整词表、缓存、关于功能的位置
This commit is contained in:
@@ -118,10 +118,7 @@ onMounted(() => {
|
|||||||
<template>
|
<template>
|
||||||
<div class="px-3">
|
<div class="px-3">
|
||||||
<div class="section">
|
<div class="section">
|
||||||
<div>
|
<div class="section border-gray-800">
|
||||||
<h3 class="heading">{{ t('setting.about.title') }}</h3>
|
|
||||||
</div>
|
|
||||||
<div class="section border-t border-gray-800">
|
|
||||||
<dl>
|
<dl>
|
||||||
<div>
|
<div>
|
||||||
<div class="max-w-6xl py-4 sm:grid sm:grid-cols-3 sm:gap-4">
|
<div class="max-w-6xl py-4 sm:grid sm:grid-cols-3 sm:gap-4">
|
||||||
@@ -5,6 +5,8 @@ import LoggingView from '@/views/system/LoggingView.vue'
|
|||||||
import RuleTestView from '@/views/system/RuleTestView.vue'
|
import RuleTestView from '@/views/system/RuleTestView.vue'
|
||||||
import ModuleTestView from '@/views/system/ModuleTestView.vue'
|
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 CacheView from '@/views/system/CacheView.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'
|
||||||
@@ -41,6 +43,12 @@ const systemTestDialog = ref(false)
|
|||||||
// 消息中心弹窗
|
// 消息中心弹窗
|
||||||
const messageDialog = ref(false)
|
const messageDialog = ref(false)
|
||||||
|
|
||||||
|
// 词表设置弹窗
|
||||||
|
const wordsDialog = ref(false)
|
||||||
|
|
||||||
|
// 缓存管理弹窗
|
||||||
|
const cacheDialog = ref(false)
|
||||||
|
|
||||||
// 输入消息
|
// 输入消息
|
||||||
const user_message = ref('')
|
const user_message = ref('')
|
||||||
|
|
||||||
@@ -100,6 +108,20 @@ const shortcuts = [
|
|||||||
dialog: 'message',
|
dialog: 'message',
|
||||||
dialogRef: messageDialog,
|
dialogRef: messageDialog,
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
title: t('shortcut.words.title'),
|
||||||
|
subtitle: t('shortcut.words.subtitle'),
|
||||||
|
icon: 'mdi-file-word-box',
|
||||||
|
dialog: 'words',
|
||||||
|
dialogRef: wordsDialog,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: t('shortcut.cache.title'),
|
||||||
|
subtitle: t('shortcut.cache.subtitle'),
|
||||||
|
icon: 'mdi-database',
|
||||||
|
dialog: 'cache',
|
||||||
|
dialogRef: cacheDialog,
|
||||||
|
},
|
||||||
]
|
]
|
||||||
|
|
||||||
// 打开对话框
|
// 打开对话框
|
||||||
@@ -249,7 +271,15 @@ onMounted(() => {
|
|||||||
flat
|
flat
|
||||||
class="pa-2 d-flex align-center cursor-pointer transition-transform duration-300 hover:-translate-y-1 border h-full"
|
class="pa-2 d-flex align-center cursor-pointer transition-transform duration-300 hover:-translate-y-1 border h-full"
|
||||||
hover
|
hover
|
||||||
@click="item.dialog === 'message' ? openMessageDialog() : openDialog(item.dialogRef)"
|
@click="
|
||||||
|
item.dialog === 'message'
|
||||||
|
? openMessageDialog()
|
||||||
|
: item.dialog === 'words'
|
||||||
|
? openDialog(item.dialogRef)
|
||||||
|
: item.dialog === 'cache'
|
||||||
|
? openDialog(item.dialogRef)
|
||||||
|
: openDialog(item.dialogRef)
|
||||||
|
"
|
||||||
>
|
>
|
||||||
<VAvatar variant="text" size="48" rounded="lg">
|
<VAvatar variant="text" size="48" rounded="lg">
|
||||||
<VIcon color="primary" :icon="item.icon" size="24" />
|
<VIcon color="primary" :icon="item.icon" size="24" />
|
||||||
@@ -425,4 +455,36 @@ onMounted(() => {
|
|||||||
</VCardActions>
|
</VCardActions>
|
||||||
</VCard>
|
</VCard>
|
||||||
</VDialog>
|
</VDialog>
|
||||||
|
<!-- 词表设置弹窗 -->
|
||||||
|
<VDialog v-if="wordsDialog" v-model="wordsDialog" max-width="60rem" scrollable :fullscreen="!display.mdAndUp.value">
|
||||||
|
<VCard>
|
||||||
|
<VCardItem>
|
||||||
|
<VCardTitle>
|
||||||
|
<VIcon icon="mdi-file-word-box" class="me-2" />
|
||||||
|
{{ t('shortcut.words.subtitle') }}
|
||||||
|
</VCardTitle>
|
||||||
|
<VDialogCloseBtn @click="wordsDialog = false" />
|
||||||
|
</VCardItem>
|
||||||
|
<VDivider />
|
||||||
|
<VCardText>
|
||||||
|
<WordsView />
|
||||||
|
</VCardText>
|
||||||
|
</VCard>
|
||||||
|
</VDialog>
|
||||||
|
<!-- 缓存管理弹窗 -->
|
||||||
|
<VDialog v-if="cacheDialog" v-model="cacheDialog" max-width="90rem" scrollable :fullscreen="!display.mdAndUp.value">
|
||||||
|
<VCard>
|
||||||
|
<VCardItem>
|
||||||
|
<VCardTitle>
|
||||||
|
<VIcon icon="mdi-database" class="me-2" />
|
||||||
|
{{ t('shortcut.cache.subtitle') }}
|
||||||
|
</VCardTitle>
|
||||||
|
<VDialogCloseBtn @click="cacheDialog = false" />
|
||||||
|
</VCardItem>
|
||||||
|
<VDivider />
|
||||||
|
<VCardText>
|
||||||
|
<CacheView />
|
||||||
|
</VCardText>
|
||||||
|
</VCard>
|
||||||
|
</VDialog>
|
||||||
</template>
|
</template>
|
||||||
|
|||||||
@@ -5,6 +5,7 @@ import avatar1 from '@images/avatars/avatar-1.png'
|
|||||||
import api from '@/api'
|
import api from '@/api'
|
||||||
import ProgressDialog from '@/components/dialog/ProgressDialog.vue'
|
import ProgressDialog from '@/components/dialog/ProgressDialog.vue'
|
||||||
import UserAuthDialog from '@/components/dialog/UserAuthDialog.vue'
|
import UserAuthDialog from '@/components/dialog/UserAuthDialog.vue'
|
||||||
|
import AboutDialog from '@/components/dialog/AboutDialog.vue'
|
||||||
import { useAuthStore, useUserStore, useGlobalSettingsStore } from '@/stores'
|
import { useAuthStore, useUserStore, useGlobalSettingsStore } from '@/stores'
|
||||||
import { useI18n } from 'vue-i18n'
|
import { useI18n } from 'vue-i18n'
|
||||||
import { useDisplay, useTheme } from 'vuetify'
|
import { useDisplay, useTheme } from 'vuetify'
|
||||||
@@ -55,6 +56,9 @@ const transparencyLevel = ref(localStorage.getItem('transparency-level') || 'med
|
|||||||
const isTransparentTheme = computed(() => currentThemeName.value === 'transparent')
|
const isTransparentTheme = computed(() => currentThemeName.value === 'transparent')
|
||||||
const showTransparencyDialog = ref(false)
|
const showTransparencyDialog = ref(false)
|
||||||
|
|
||||||
|
// 关于对话框
|
||||||
|
const aboutDialog = ref(false)
|
||||||
|
|
||||||
// 预设值配置
|
// 预设值配置
|
||||||
const transparencyPresets = {
|
const transparencyPresets = {
|
||||||
low: { opacity: 0.1, blur: 5 },
|
low: { opacity: 0.1, blur: 5 },
|
||||||
@@ -207,6 +211,11 @@ function showSiteAuthDialog() {
|
|||||||
siteAuthDialog.value = true
|
siteAuthDialog.value = true
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 显示关于对话框
|
||||||
|
function showAboutDialog() {
|
||||||
|
aboutDialog.value = true
|
||||||
|
}
|
||||||
|
|
||||||
// 用户站点认证成功
|
// 用户站点认证成功
|
||||||
function siteAuthDone() {
|
function siteAuthDone() {
|
||||||
siteAuthDialog.value = false
|
siteAuthDialog.value = false
|
||||||
@@ -633,6 +642,14 @@ onUnmounted(() => {
|
|||||||
<VListItemTitle>{{ t('user.helpDocs') }}</VListItemTitle>
|
<VListItemTitle>{{ t('user.helpDocs') }}</VListItemTitle>
|
||||||
</VListItem>
|
</VListItem>
|
||||||
|
|
||||||
|
<!-- 👉 About -->
|
||||||
|
<VListItem @click="showAboutDialog" class="mb-1 rounded-lg" hover>
|
||||||
|
<template #prepend>
|
||||||
|
<VIcon icon="mdi-information-outline" />
|
||||||
|
</template>
|
||||||
|
<VListItemTitle>{{ t('setting.about.title') }}</VListItemTitle>
|
||||||
|
</VListItem>
|
||||||
|
|
||||||
<!-- Divider -->
|
<!-- Divider -->
|
||||||
<VDivider v-if="superUser" class="my-3" />
|
<VDivider v-if="superUser" class="my-3" />
|
||||||
|
|
||||||
@@ -777,6 +794,23 @@ onUnmounted(() => {
|
|||||||
</VCardText>
|
</VCardText>
|
||||||
</VCard>
|
</VCard>
|
||||||
</VDialog>
|
</VDialog>
|
||||||
|
|
||||||
|
<!-- 关于对话框 -->
|
||||||
|
<VDialog v-if="aboutDialog" v-model="aboutDialog" max-width="50rem" scrollable>
|
||||||
|
<VCard>
|
||||||
|
<VCardItem>
|
||||||
|
<VCardTitle>
|
||||||
|
<VIcon icon="mdi-information" class="me-2" />
|
||||||
|
{{ t('setting.about.title') }}
|
||||||
|
</VCardTitle>
|
||||||
|
<VDialogCloseBtn @click="aboutDialog = false" />
|
||||||
|
</VCardItem>
|
||||||
|
<VDivider />
|
||||||
|
<VCardText>
|
||||||
|
<AboutDialog />
|
||||||
|
</VCardText>
|
||||||
|
</VCard>
|
||||||
|
</VDialog>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<style lang="scss" scoped>
|
<style lang="scss" scoped>
|
||||||
|
|||||||
+11
-6
@@ -324,11 +324,6 @@ export default {
|
|||||||
title: 'Notifications',
|
title: 'Notifications',
|
||||||
description: 'Notification channels (WeChat, Telegram, Slack, SynologyChat, VoceChat, WebPush), message scope',
|
description: 'Notification channels (WeChat, Telegram, Slack, SynologyChat, VoceChat, WebPush), message scope',
|
||||||
},
|
},
|
||||||
words: {
|
|
||||||
title: 'Word Lists',
|
|
||||||
description:
|
|
||||||
'Custom recognition words, custom production/subtitle groups, custom placeholders, file organization block words',
|
|
||||||
},
|
|
||||||
about: {
|
about: {
|
||||||
title: 'About',
|
title: 'About',
|
||||||
description: 'Software version',
|
description: 'Software version',
|
||||||
@@ -375,6 +370,7 @@ export default {
|
|||||||
wizardSettings: 'Setup Wizard',
|
wizardSettings: 'Setup Wizard',
|
||||||
siteAuth: 'User Authentication',
|
siteAuth: 'User Authentication',
|
||||||
helpDocs: 'Help Documents',
|
helpDocs: 'Help Documents',
|
||||||
|
about: 'About',
|
||||||
restart: 'Restart',
|
restart: 'Restart',
|
||||||
management: 'User Management',
|
management: 'User Management',
|
||||||
noUsers: 'No Users',
|
noUsers: 'No Users',
|
||||||
@@ -514,6 +510,14 @@ export default {
|
|||||||
title: 'Messages',
|
title: 'Messages',
|
||||||
subtitle: 'Message Center',
|
subtitle: 'Message Center',
|
||||||
},
|
},
|
||||||
|
words: {
|
||||||
|
title: 'Words',
|
||||||
|
subtitle: 'Word Settings',
|
||||||
|
},
|
||||||
|
cache: {
|
||||||
|
title: 'Cache',
|
||||||
|
subtitle: 'Manage Cache',
|
||||||
|
},
|
||||||
},
|
},
|
||||||
workflow: {
|
workflow: {
|
||||||
components: 'Action Components',
|
components: 'Action Components',
|
||||||
@@ -1233,7 +1237,8 @@ export default {
|
|||||||
apiTokenLength: 'API Token must be at least 16 characters',
|
apiTokenLength: 'API Token must be at least 16 characters',
|
||||||
githubToken: 'Github Token',
|
githubToken: 'Github Token',
|
||||||
githubTokenFormat: 'ghp_**** or github_pat_****',
|
githubTokenFormat: 'ghp_**** or github_pat_****',
|
||||||
githubTokenHint: 'Used to increase the rate limit threshold when plugins access Github API,it is recommended to configure, otherwise plugins may not work properly',
|
githubTokenHint:
|
||||||
|
'Used to increase the rate limit threshold when plugins access Github API,it is recommended to configure, otherwise plugins may not work properly',
|
||||||
ocrHost: 'OCR Server',
|
ocrHost: 'OCR Server',
|
||||||
ocrHostHint: 'Used for site check-in, updating site cookies and other captcha recognition',
|
ocrHostHint: 'Used for site check-in, updating site cookies and other captcha recognition',
|
||||||
advancedSettings: 'Advanced Settings',
|
advancedSettings: 'Advanced Settings',
|
||||||
|
|||||||
@@ -323,10 +323,6 @@ export default {
|
|||||||
title: '通知',
|
title: '通知',
|
||||||
description: '通知渠道(微信、Telegram、Slack、SynologyChat、VoceChat、WebPush)、消息发送范围',
|
description: '通知渠道(微信、Telegram、Slack、SynologyChat、VoceChat、WebPush)、消息发送范围',
|
||||||
},
|
},
|
||||||
words: {
|
|
||||||
title: '词表',
|
|
||||||
description: '自定义识别词、自定义制作组/字幕组、自定义占位符、文件整理屏蔽词',
|
|
||||||
},
|
|
||||||
about: {
|
about: {
|
||||||
title: '关于',
|
title: '关于',
|
||||||
description: '软件版本',
|
description: '软件版本',
|
||||||
@@ -373,6 +369,7 @@ export default {
|
|||||||
wizardSettings: '设置向导',
|
wizardSettings: '设置向导',
|
||||||
siteAuth: '用户认证',
|
siteAuth: '用户认证',
|
||||||
helpDocs: '帮助文档',
|
helpDocs: '帮助文档',
|
||||||
|
about: '关于',
|
||||||
restart: '重启',
|
restart: '重启',
|
||||||
management: '用户管理',
|
management: '用户管理',
|
||||||
noUsers: '没有用户',
|
noUsers: '没有用户',
|
||||||
@@ -511,6 +508,14 @@ export default {
|
|||||||
title: '消息',
|
title: '消息',
|
||||||
subtitle: '消息中心',
|
subtitle: '消息中心',
|
||||||
},
|
},
|
||||||
|
words: {
|
||||||
|
title: '词表',
|
||||||
|
subtitle: '词表设置',
|
||||||
|
},
|
||||||
|
cache: {
|
||||||
|
title: '缓存',
|
||||||
|
subtitle: '管理缓存',
|
||||||
|
},
|
||||||
},
|
},
|
||||||
workflow: {
|
workflow: {
|
||||||
components: '动作组件',
|
components: '动作组件',
|
||||||
|
|||||||
@@ -324,10 +324,6 @@ export default {
|
|||||||
title: '通知',
|
title: '通知',
|
||||||
description: '通知渠道(微信、Telegram、Slack、SynologyChat、VoceChat、WebPush)、消息發送範圍',
|
description: '通知渠道(微信、Telegram、Slack、SynologyChat、VoceChat、WebPush)、消息發送範圍',
|
||||||
},
|
},
|
||||||
words: {
|
|
||||||
title: '詞表',
|
|
||||||
description: '自定義識別詞、自定義製作組/字幕組、自定義占位符、文件整理屏蔽詞',
|
|
||||||
},
|
|
||||||
about: {
|
about: {
|
||||||
title: '關於',
|
title: '關於',
|
||||||
description: '軟件版本',
|
description: '軟件版本',
|
||||||
@@ -374,6 +370,7 @@ export default {
|
|||||||
wizardSettings: '設定向導',
|
wizardSettings: '設定向導',
|
||||||
siteAuth: '用戶認證',
|
siteAuth: '用戶認證',
|
||||||
helpDocs: '幫助文檔',
|
helpDocs: '幫助文檔',
|
||||||
|
about: '關於',
|
||||||
restart: '重啟',
|
restart: '重啟',
|
||||||
management: '用戶管理',
|
management: '用戶管理',
|
||||||
noUsers: '沒有用戶',
|
noUsers: '沒有用戶',
|
||||||
@@ -498,6 +495,14 @@ export default {
|
|||||||
title: '消息',
|
title: '消息',
|
||||||
subtitle: '消息中心',
|
subtitle: '消息中心',
|
||||||
},
|
},
|
||||||
|
words: {
|
||||||
|
title: '詞表',
|
||||||
|
subtitle: '詞表設置',
|
||||||
|
},
|
||||||
|
cache: {
|
||||||
|
title: '緩存',
|
||||||
|
subtitle: '管理緩存',
|
||||||
|
},
|
||||||
},
|
},
|
||||||
workflow: {
|
workflow: {
|
||||||
components: '動作組件',
|
components: '動作組件',
|
||||||
|
|||||||
@@ -3,15 +3,12 @@ import { useRoute } from 'vue-router'
|
|||||||
import router from '@/router'
|
import router from '@/router'
|
||||||
import AccountSettingNotification from '@/views/setting/AccountSettingNotification.vue'
|
import AccountSettingNotification from '@/views/setting/AccountSettingNotification.vue'
|
||||||
import AccountSettingSite from '@/views/setting/AccountSettingSite.vue'
|
import AccountSettingSite from '@/views/setting/AccountSettingSite.vue'
|
||||||
import AccountSettingWords from '@/views/setting/AccountSettingWords.vue'
|
|
||||||
import AccountSettingAbout from '@/views/setting/AccountSettingAbout.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 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 AccountSettingCache from '@/views/setting/AccountSettingCache.vue'
|
|
||||||
import { getSettingTabs } from '@/router/i18n-menu'
|
import { getSettingTabs } from '@/router/i18n-menu'
|
||||||
import { useDynamicHeaderTab } from '@/composables/useDynamicHeaderTab'
|
import { useDynamicHeaderTab } from '@/composables/useDynamicHeaderTab'
|
||||||
|
|
||||||
@@ -104,15 +101,6 @@ onMounted(() => {
|
|||||||
</transition>
|
</transition>
|
||||||
</VWindowItem>
|
</VWindowItem>
|
||||||
|
|
||||||
<!-- 缓存 -->
|
|
||||||
<VWindowItem value="cache">
|
|
||||||
<transition name="fade-slide" appear>
|
|
||||||
<div>
|
|
||||||
<AccountSettingCache />
|
|
||||||
</div>
|
|
||||||
</transition>
|
|
||||||
</VWindowItem>
|
|
||||||
|
|
||||||
<!-- 通知 -->
|
<!-- 通知 -->
|
||||||
<VWindowItem value="notification">
|
<VWindowItem value="notification">
|
||||||
<transition name="fade-slide" appear>
|
<transition name="fade-slide" appear>
|
||||||
@@ -121,24 +109,6 @@ onMounted(() => {
|
|||||||
</div>
|
</div>
|
||||||
</transition>
|
</transition>
|
||||||
</VWindowItem>
|
</VWindowItem>
|
||||||
|
|
||||||
<!-- 词表 -->
|
|
||||||
<VWindowItem value="words">
|
|
||||||
<transition name="fade-slide" appear>
|
|
||||||
<div>
|
|
||||||
<AccountSettingWords />
|
|
||||||
</div>
|
|
||||||
</transition>
|
|
||||||
</VWindowItem>
|
|
||||||
|
|
||||||
<!-- 关于 -->
|
|
||||||
<VWindowItem value="about">
|
|
||||||
<transition name="fade-slide" appear>
|
|
||||||
<div>
|
|
||||||
<AccountSettingAbout />
|
|
||||||
</div>
|
|
||||||
</transition>
|
|
||||||
</VWindowItem>
|
|
||||||
</VWindow>
|
</VWindow>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|||||||
@@ -194,30 +194,12 @@ export function getSettingTabs() {
|
|||||||
tab: 'scheduler',
|
tab: 'scheduler',
|
||||||
description: t('settingTabs.scheduler.description'),
|
description: t('settingTabs.scheduler.description'),
|
||||||
},
|
},
|
||||||
{
|
|
||||||
title: t('settingTabs.cache.title'),
|
|
||||||
icon: 'mdi-database',
|
|
||||||
tab: 'cache',
|
|
||||||
description: t('settingTabs.cache.description'),
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
title: t('settingTabs.notification.title'),
|
title: t('settingTabs.notification.title'),
|
||||||
icon: 'mdi-bell',
|
icon: 'mdi-bell',
|
||||||
tab: 'notification',
|
tab: 'notification',
|
||||||
description: t('settingTabs.notification.description'),
|
description: t('settingTabs.notification.description'),
|
||||||
},
|
},
|
||||||
{
|
|
||||||
title: t('settingTabs.words.title'),
|
|
||||||
icon: 'mdi-file-word-box',
|
|
||||||
tab: 'words',
|
|
||||||
description: t('settingTabs.words.description'),
|
|
||||||
},
|
|
||||||
{
|
|
||||||
title: t('settingTabs.about.title'),
|
|
||||||
icon: 'mdi-information',
|
|
||||||
tab: 'about',
|
|
||||||
description: t('settingTabs.about.description'),
|
|
||||||
},
|
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -232,64 +232,65 @@ onMounted(() => {
|
|||||||
</script>
|
</script>
|
||||||
|
|
||||||
<template>
|
<template>
|
||||||
<VCard>
|
<div>
|
||||||
<VCardItem>
|
<!-- 工具栏操作按钮 -->
|
||||||
<VCardTitle>{{ t('setting.cache.title') }}</VCardTitle>
|
<VCard class="mb-4">
|
||||||
<VCardSubtitle>{{ t('setting.cache.subtitle') }}</VCardSubtitle>
|
<VCardItem>
|
||||||
|
<VCardTitle>{{ t('setting.cache.title') }}</VCardTitle>
|
||||||
|
<VCardSubtitle>{{ t('setting.cache.subtitle') }}</VCardSubtitle>
|
||||||
|
|
||||||
<template #append>
|
<template #append>
|
||||||
<div class="d-flex gap-2">
|
<div class="d-flex gap-2">
|
||||||
<VBtn icon color="primary" :loading="loading" @click="refreshCache">
|
<VBtn icon color="primary" :loading="loading" @click="refreshCache">
|
||||||
<VIcon>mdi-refresh</VIcon>
|
<VIcon>mdi-refresh</VIcon>
|
||||||
<VTooltip activator="parent" location="bottom">{{ t('setting.cache.refresh') }}</VTooltip>
|
<VTooltip activator="parent" location="bottom">{{ t('setting.cache.refresh') }}</VTooltip>
|
||||||
</VBtn>
|
</VBtn>
|
||||||
|
|
||||||
<VBtn
|
<VBtn
|
||||||
icon
|
icon
|
||||||
color="warning"
|
color="warning"
|
||||||
:loading="loading"
|
:loading="loading"
|
||||||
:disabled="selectedItems.length === 0"
|
:disabled="selectedItems.length === 0"
|
||||||
@click="deleteSelectedItems"
|
@click="deleteSelectedItems"
|
||||||
>
|
|
||||||
<VIcon>mdi-delete-sweep</VIcon>
|
|
||||||
<VTooltip activator="parent" location="bottom"
|
|
||||||
>{{ t('setting.cache.deleteSelected') }} ({{ selectedItems.length }})</VTooltip
|
|
||||||
>
|
>
|
||||||
</VBtn>
|
<VIcon>mdi-delete-sweep</VIcon>
|
||||||
|
<VTooltip activator="parent" location="bottom"
|
||||||
|
>{{ t('setting.cache.deleteSelected') }} ({{ selectedItems.length }})</VTooltip
|
||||||
|
>
|
||||||
|
</VBtn>
|
||||||
|
|
||||||
<VBtn icon color="error" :loading="loading" @click="clearAllCache">
|
<VBtn icon color="error" :loading="loading" @click="clearAllCache">
|
||||||
<VIcon>mdi-delete-variant</VIcon>
|
<VIcon>mdi-delete-variant</VIcon>
|
||||||
<VTooltip activator="parent" location="bottom">{{ t('setting.cache.clearAll') }}</VTooltip>
|
<VTooltip activator="parent" location="bottom">{{ t('setting.cache.clearAll') }}</VTooltip>
|
||||||
</VBtn>
|
</VBtn>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
</VCardItem>
|
</VCardItem>
|
||||||
|
</VCard>
|
||||||
|
|
||||||
<!-- 筛选框 -->
|
<!-- 筛选框 -->
|
||||||
<VCardText>
|
<VRow class="mb-4">
|
||||||
<VRow>
|
<VCol cols="6">
|
||||||
<VCol cols="6">
|
<VTextField
|
||||||
<VTextField
|
v-model="titleFilter"
|
||||||
v-model="titleFilter"
|
:label="t('setting.cache.filterByTitle')"
|
||||||
:label="t('setting.cache.filterByTitle')"
|
prepend-inner-icon="mdi-magnify"
|
||||||
prepend-inner-icon="mdi-magnify"
|
clearable
|
||||||
clearable
|
density="compact"
|
||||||
density="compact"
|
/>
|
||||||
/>
|
</VCol>
|
||||||
</VCol>
|
<VCol cols="6">
|
||||||
<VCol cols="6">
|
<VAutocomplete
|
||||||
<VAutocomplete
|
v-model="siteFilter"
|
||||||
v-model="siteFilter"
|
:label="t('setting.cache.filterBySite')"
|
||||||
:label="t('setting.cache.filterBySite')"
|
:items="siteOptions"
|
||||||
:items="siteOptions"
|
prepend-inner-icon="mdi-web"
|
||||||
prepend-inner-icon="mdi-web"
|
clearable
|
||||||
clearable
|
density="compact"
|
||||||
density="compact"
|
:placeholder="t('setting.cache.selectSite')"
|
||||||
:placeholder="t('setting.cache.selectSite')"
|
/>
|
||||||
/>
|
</VCol>
|
||||||
</VCol>
|
</VRow>
|
||||||
</VRow>
|
|
||||||
</VCardText>
|
|
||||||
|
|
||||||
<!-- 缓存列表 -->
|
<!-- 缓存列表 -->
|
||||||
<VDataTable
|
<VDataTable
|
||||||
@@ -419,54 +420,54 @@ onMounted(() => {
|
|||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
</VDataTable>
|
</VDataTable>
|
||||||
</VCard>
|
|
||||||
|
|
||||||
<!-- 重新识别对话框 -->
|
<!-- 重新识别对话框 -->
|
||||||
<VDialog v-model="reidentifyDialog" scrollable max-width="35rem">
|
<VDialog v-model="reidentifyDialog" scrollable max-width="35rem">
|
||||||
<VCard>
|
<VCard>
|
||||||
<VCardItem class="py-2">
|
<VCardItem class="py-2">
|
||||||
<template #prepend>
|
<template #prepend>
|
||||||
<VIcon>mdi-text-recognition</VIcon>
|
<VIcon>mdi-text-recognition</VIcon>
|
||||||
</template>
|
</template>
|
||||||
<VCardTitle>{{ t('setting.cache.reidentifyDialog.title') }}</VCardTitle>
|
<VCardTitle>{{ t('setting.cache.reidentifyDialog.title') }}</VCardTitle>
|
||||||
<VCardSubtitle>{{ currentReidentifyItem?.title }}</VCardSubtitle>
|
<VCardSubtitle>{{ currentReidentifyItem?.title }}</VCardSubtitle>
|
||||||
</VCardItem>
|
</VCardItem>
|
||||||
<VDialogCloseBtn @click="reidentifyDialog = false" />
|
<VDialogCloseBtn @click="reidentifyDialog = false" />
|
||||||
<VDivider />
|
<VDivider />
|
||||||
<VCardText>
|
<VCardText>
|
||||||
<VRow>
|
<VRow>
|
||||||
<VCol cols="12">
|
<VCol cols="12">
|
||||||
<VTextField
|
<VTextField
|
||||||
v-if="globalSettings.RECOGNIZE_SOURCE === 'themoviedb'"
|
v-if="globalSettings.RECOGNIZE_SOURCE === 'themoviedb'"
|
||||||
v-model="tmdbId"
|
v-model="tmdbId"
|
||||||
:label="t('setting.cache.reidentifyDialog.tmdbId')"
|
:label="t('setting.cache.reidentifyDialog.tmdbId')"
|
||||||
:hint="t('setting.cache.reidentifyDialog.tmdbIdHint')"
|
:hint="t('setting.cache.reidentifyDialog.tmdbIdHint')"
|
||||||
clearable
|
clearable
|
||||||
prepend-inner-icon="mdi-id-card"
|
prepend-inner-icon="mdi-id-card"
|
||||||
persistent-hint
|
persistent-hint
|
||||||
/>
|
/>
|
||||||
<VTextField
|
<VTextField
|
||||||
v-else
|
v-else
|
||||||
v-model="doubanId"
|
v-model="doubanId"
|
||||||
:label="t('setting.cache.reidentifyDialog.doubanId')"
|
:label="t('setting.cache.reidentifyDialog.doubanId')"
|
||||||
:hint="t('setting.cache.reidentifyDialog.doubanIdHint')"
|
:hint="t('setting.cache.reidentifyDialog.doubanIdHint')"
|
||||||
clearable
|
clearable
|
||||||
prepend-inner-icon="mdi-id-card"
|
prepend-inner-icon="mdi-id-card"
|
||||||
persistent-hint
|
persistent-hint
|
||||||
/>
|
/>
|
||||||
</VCol>
|
</VCol>
|
||||||
</VRow>
|
</VRow>
|
||||||
<VAlert type="info" variant="tonal" class="mt-4">
|
<VAlert type="info" variant="tonal" class="mt-4">
|
||||||
{{ t('setting.cache.reidentifyDialog.autoHint') }}
|
{{ t('setting.cache.reidentifyDialog.autoHint') }}
|
||||||
</VAlert>
|
</VAlert>
|
||||||
</VCardText>
|
</VCardText>
|
||||||
|
|
||||||
<VCardActions>
|
<VCardActions>
|
||||||
<VSpacer />
|
<VSpacer />
|
||||||
<VBtn color="primary" :loading="loading" prepend-icon="mdi-check" @click="performReidentify">
|
<VBtn color="primary" :loading="loading" prepend-icon="mdi-check" @click="performReidentify">
|
||||||
{{ t('setting.cache.reidentifyDialog.confirm') }}
|
{{ t('setting.cache.reidentifyDialog.confirm') }}
|
||||||
</VBtn>
|
</VBtn>
|
||||||
</VCardActions>
|
</VCardActions>
|
||||||
</VCard>
|
</VCard>
|
||||||
</VDialog>
|
</VDialog>
|
||||||
|
</div>
|
||||||
</template>
|
</template>
|
||||||
Reference in New Issue
Block a user