mirror of
https://github.com/jxxghp/MoviePilot-Frontend.git
synced 2026-09-05 07:28:37 +08:00
fix: 修复 i18n-menu 工具函数外部调用导致的运行时错误
This commit is contained in:
@@ -122,7 +122,7 @@ function loadRecentSearches() {
|
|||||||
function getMenus(): NavMenu[] {
|
function getMenus(): NavMenu[] {
|
||||||
let menus: NavMenu[] = []
|
let menus: NavMenu[] = []
|
||||||
// 导航菜单
|
// 导航菜单
|
||||||
getNavMenus().forEach(
|
getNavMenus(t).forEach(
|
||||||
item =>
|
item =>
|
||||||
item &&
|
item &&
|
||||||
menus.push({
|
menus.push({
|
||||||
@@ -134,7 +134,7 @@ function getMenus(): NavMenu[] {
|
|||||||
}),
|
}),
|
||||||
)
|
)
|
||||||
// 设置标签页
|
// 设置标签页
|
||||||
getSettingTabs().forEach(
|
getSettingTabs(t).forEach(
|
||||||
item =>
|
item =>
|
||||||
item &&
|
item &&
|
||||||
menus.push({
|
menus.push({
|
||||||
|
|||||||
@@ -197,7 +197,7 @@ const {
|
|||||||
// 根据分类获取菜单列表
|
// 根据分类获取菜单列表
|
||||||
const getMenuList = (header: string) => {
|
const getMenuList = (header: string) => {
|
||||||
// 使用国际化菜单
|
// 使用国际化菜单
|
||||||
const menus = getNavMenus()
|
const menus = getNavMenus(t)
|
||||||
const filteredMenus = filterMenusByPermission(menus, userPermissions.value)
|
const filteredMenus = filterMenusByPermission(menus, userPermissions.value)
|
||||||
return filteredMenus.filter((item: NavMenu) => item.header === header)
|
return filteredMenus.filter((item: NavMenu) => item.header === header)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -49,7 +49,7 @@ const userPermissions = computed(() => {
|
|||||||
|
|
||||||
// 获取导航菜单
|
// 获取导航菜单
|
||||||
const navMenus = computed(() => {
|
const navMenus = computed(() => {
|
||||||
const allMenus = getNavMenus()
|
const allMenus = getNavMenus(t)
|
||||||
return filterMenusByPermission(allMenus, userPermissions.value)
|
return filterMenusByPermission(allMenus, userPermissions.value)
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|||||||
@@ -23,7 +23,7 @@ const appGroups = ref<Record<string, NavMenu[]>>({})
|
|||||||
// 根据header属性对应用进行分类
|
// 根据header属性对应用进行分类
|
||||||
function categorizeApps() {
|
function categorizeApps() {
|
||||||
// 获取所有菜单并根据权限过滤
|
// 获取所有菜单并根据权限过滤
|
||||||
const allMenus = getNavMenus()
|
const allMenus = getNavMenus(t)
|
||||||
const filteredMenus = filterMenusByPermission(allMenus, userPermissions.value)
|
const filteredMenus = filterMenusByPermission(allMenus, userPermissions.value)
|
||||||
const menus = filteredMenus.filter((item: NavMenu) => !item.footer)
|
const menus = filteredMenus.filter((item: NavMenu) => !item.footer)
|
||||||
|
|
||||||
|
|||||||
@@ -58,7 +58,7 @@ function initializeColors() {
|
|||||||
|
|
||||||
// 初始化发现标签
|
// 初始化发现标签
|
||||||
function initDiscoverTabs() {
|
function initDiscoverTabs() {
|
||||||
const tabs = getDiscoverTabs()
|
const tabs = getDiscoverTabs(t)
|
||||||
for (const tab of tabs) {
|
for (const tab of tabs) {
|
||||||
discoverTabs.value.push({
|
discoverTabs.value.push({
|
||||||
name: tab.name,
|
name: tab.name,
|
||||||
|
|||||||
+2
-2
@@ -21,7 +21,7 @@ const authStore = useAuthStore()
|
|||||||
const userStore = useUserStore()
|
const userStore = useUserStore()
|
||||||
|
|
||||||
// 获取有权限的菜单
|
// 获取有权限的菜单
|
||||||
const navMenus = getNavMenus()
|
const navMenus = computed(() => getNavMenus(t))
|
||||||
|
|
||||||
// 表单
|
// 表单
|
||||||
const form = ref({
|
const form = ref({
|
||||||
@@ -229,7 +229,7 @@ async function handleLoginSuccess(response: any) {
|
|||||||
...userPayload.permissions,
|
...userPayload.permissions,
|
||||||
}
|
}
|
||||||
|
|
||||||
const filteredMenus = filterMenusByPermission(navMenus, userPermissions)
|
const filteredMenus = filterMenusByPermission(navMenus.value, userPermissions)
|
||||||
if (filteredMenus.length === 0) {
|
if (filteredMenus.length === 0) {
|
||||||
errorMessage.value = t('login.noPermission')
|
errorMessage.value = t('login.noPermission')
|
||||||
return
|
return
|
||||||
|
|||||||
@@ -12,10 +12,11 @@ import AccountSettingRule from '@/views/setting/AccountSettingRule.vue'
|
|||||||
import { getSettingTabs } from '@/router/i18n-menu'
|
import { getSettingTabs } from '@/router/i18n-menu'
|
||||||
import { useDynamicHeaderTab } from '@/composables/useDynamicHeaderTab'
|
import { useDynamicHeaderTab } from '@/composables/useDynamicHeaderTab'
|
||||||
|
|
||||||
|
const { t } = useI18n()
|
||||||
const route = useRoute()
|
const route = useRoute()
|
||||||
|
|
||||||
const activeTab = ref((route.query.tab as string) || '')
|
const activeTab = ref((route.query.tab as string) || '')
|
||||||
const settingTabs = computed(() => getSettingTabs())
|
const settingTabs = computed(() => getSettingTabs(t))
|
||||||
|
|
||||||
// 使用动态标签页
|
// 使用动态标签页
|
||||||
const { registerHeaderTab } = useDynamicHeaderTab()
|
const { registerHeaderTab } = useDynamicHeaderTab()
|
||||||
|
|||||||
@@ -22,9 +22,9 @@ const shareViewKey = ref(0)
|
|||||||
// 获取标签页
|
// 获取标签页
|
||||||
const subscribeTabs = computed(() => {
|
const subscribeTabs = computed(() => {
|
||||||
if (subType === '电影') {
|
if (subType === '电影') {
|
||||||
return getSubscribeMovieTabs()
|
return getSubscribeMovieTabs(t)
|
||||||
} else {
|
} else {
|
||||||
return getSubscribeTvTabs()
|
return getSubscribeTvTabs(t)
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|||||||
@@ -17,7 +17,7 @@ const listViewKey = ref(0)
|
|||||||
|
|
||||||
// 获取标签页
|
// 获取标签页
|
||||||
const workflowTabs = computed(() => {
|
const workflowTabs = computed(() => {
|
||||||
return getWorkflowTabs()
|
return getWorkflowTabs(t)
|
||||||
})
|
})
|
||||||
|
|
||||||
// 新增工作流对话框
|
// 新增工作流对话框
|
||||||
|
|||||||
+8
-21
@@ -1,9 +1,8 @@
|
|||||||
import { useI18n } from 'vue-i18n'
|
|
||||||
import { useGlobalSettingsStore } from '@/stores'
|
import { useGlobalSettingsStore } from '@/stores'
|
||||||
|
import type { Composer } from 'vue-i18n'
|
||||||
|
|
||||||
// 构建路由菜单,每次调用时使用当前的语言环境
|
// 构建路由菜单,每次调用时使用当前的语言环境
|
||||||
export function getNavMenus() {
|
export function getNavMenus(t: Composer['t']) {
|
||||||
const { t } = useI18n()
|
|
||||||
const globalSettingsStore = useGlobalSettingsStore()
|
const globalSettingsStore = useGlobalSettingsStore()
|
||||||
|
|
||||||
// 检查是否为高级模式
|
// 检查是否为高级模式
|
||||||
@@ -148,9 +147,7 @@ export function getNavMenus() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// 获取设置标签页
|
// 获取设置标签页
|
||||||
export function getSettingTabs() {
|
export function getSettingTabs(t: Composer['t']) {
|
||||||
const { t } = useI18n()
|
|
||||||
|
|
||||||
return [
|
return [
|
||||||
{
|
{
|
||||||
title: t('settingTabs.system.title'),
|
title: t('settingTabs.system.title'),
|
||||||
@@ -204,9 +201,7 @@ export function getSettingTabs() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// 获取电影订阅标签页
|
// 获取电影订阅标签页
|
||||||
export function getSubscribeMovieTabs() {
|
export function getSubscribeMovieTabs(t: Composer['t']) {
|
||||||
const { t } = useI18n()
|
|
||||||
|
|
||||||
return [
|
return [
|
||||||
{
|
{
|
||||||
title: t('subscribeTabs.movie.mysub'),
|
title: t('subscribeTabs.movie.mysub'),
|
||||||
@@ -222,9 +217,7 @@ export function getSubscribeMovieTabs() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// 获取电视剧订阅标签页
|
// 获取电视剧订阅标签页
|
||||||
export function getSubscribeTvTabs() {
|
export function getSubscribeTvTabs(t: Composer['t']) {
|
||||||
const { t } = useI18n()
|
|
||||||
|
|
||||||
return [
|
return [
|
||||||
{
|
{
|
||||||
title: t('subscribeTabs.tv.mysub'),
|
title: t('subscribeTabs.tv.mysub'),
|
||||||
@@ -245,9 +238,7 @@ export function getSubscribeTvTabs() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// 获取插件标签页
|
// 获取插件标签页
|
||||||
export function getPluginTabs() {
|
export function getPluginTabs(t: Composer['t']) {
|
||||||
const { t } = useI18n()
|
|
||||||
|
|
||||||
return [
|
return [
|
||||||
{
|
{
|
||||||
title: t('pluginTabs.installed'),
|
title: t('pluginTabs.installed'),
|
||||||
@@ -263,9 +254,7 @@ export function getPluginTabs() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// 获取发现标签页
|
// 获取发现标签页
|
||||||
export function getDiscoverTabs() {
|
export function getDiscoverTabs(t: Composer['t']) {
|
||||||
const { t } = useI18n()
|
|
||||||
|
|
||||||
return [
|
return [
|
||||||
{
|
{
|
||||||
name: t('discoverTabs.themoviedb'),
|
name: t('discoverTabs.themoviedb'),
|
||||||
@@ -286,9 +275,7 @@ export function getDiscoverTabs() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// 获取工作流标签页
|
// 获取工作流标签页
|
||||||
export function getWorkflowTabs() {
|
export function getWorkflowTabs(t: Composer['t']) {
|
||||||
const { t } = useI18n()
|
|
||||||
|
|
||||||
return [
|
return [
|
||||||
{
|
{
|
||||||
title: t('workflowTabs.list'),
|
title: t('workflowTabs.list'),
|
||||||
|
|||||||
@@ -32,7 +32,7 @@ const { appMode } = usePWA()
|
|||||||
const activeTab = ref('installed')
|
const activeTab = ref('installed')
|
||||||
|
|
||||||
// 获取插件标签页
|
// 获取插件标签页
|
||||||
const pluginTabs = computed(() => getPluginTabs())
|
const pluginTabs = computed(() => getPluginTabs(t))
|
||||||
|
|
||||||
// 使用动态标签页
|
// 使用动态标签页
|
||||||
const { registerHeaderTab } = useDynamicHeaderTab()
|
const { registerHeaderTab } = useDynamicHeaderTab()
|
||||||
|
|||||||
Reference in New Issue
Block a user