fix: 修复 i18n-menu 工具函数外部调用导致的运行时错误

This commit is contained in:
PKC278
2026-01-02 21:22:14 +08:00
parent 6d2916dc9f
commit 425bf808ed
11 changed files with 22 additions and 34 deletions

View File

@@ -122,7 +122,7 @@ function loadRecentSearches() {
function getMenus(): NavMenu[] {
let menus: NavMenu[] = []
// 导航菜单
getNavMenus().forEach(
getNavMenus(t).forEach(
item =>
item &&
menus.push({
@@ -134,7 +134,7 @@ function getMenus(): NavMenu[] {
}),
)
// 设置标签页
getSettingTabs().forEach(
getSettingTabs(t).forEach(
item =>
item &&
menus.push({

View File

@@ -197,7 +197,7 @@ const {
// 根据分类获取菜单列表
const getMenuList = (header: string) => {
// 使用国际化菜单
const menus = getNavMenus()
const menus = getNavMenus(t)
const filteredMenus = filterMenusByPermission(menus, userPermissions.value)
return filteredMenus.filter((item: NavMenu) => item.header === header)
}

View File

@@ -49,7 +49,7 @@ const userPermissions = computed(() => {
// 获取导航菜单
const navMenus = computed(() => {
const allMenus = getNavMenus()
const allMenus = getNavMenus(t)
return filterMenusByPermission(allMenus, userPermissions.value)
})

View File

@@ -23,7 +23,7 @@ const appGroups = ref<Record<string, NavMenu[]>>({})
// 根据header属性对应用进行分类
function categorizeApps() {
// 获取所有菜单并根据权限过滤
const allMenus = getNavMenus()
const allMenus = getNavMenus(t)
const filteredMenus = filterMenusByPermission(allMenus, userPermissions.value)
const menus = filteredMenus.filter((item: NavMenu) => !item.footer)

View File

@@ -58,7 +58,7 @@ function initializeColors() {
// 初始化发现标签
function initDiscoverTabs() {
const tabs = getDiscoverTabs()
const tabs = getDiscoverTabs(t)
for (const tab of tabs) {
discoverTabs.value.push({
name: tab.name,

View File

@@ -21,7 +21,7 @@ const authStore = useAuthStore()
const userStore = useUserStore()
// 获取有权限的菜单
const navMenus = getNavMenus()
const navMenus = computed(() => getNavMenus(t))
// 表单
const form = ref({
@@ -229,7 +229,7 @@ async function handleLoginSuccess(response: any) {
...userPayload.permissions,
}
const filteredMenus = filterMenusByPermission(navMenus, userPermissions)
const filteredMenus = filterMenusByPermission(navMenus.value, userPermissions)
if (filteredMenus.length === 0) {
errorMessage.value = t('login.noPermission')
return

View File

@@ -12,10 +12,11 @@ import AccountSettingRule from '@/views/setting/AccountSettingRule.vue'
import { getSettingTabs } from '@/router/i18n-menu'
import { useDynamicHeaderTab } from '@/composables/useDynamicHeaderTab'
const { t } = useI18n()
const route = useRoute()
const activeTab = ref((route.query.tab as string) || '')
const settingTabs = computed(() => getSettingTabs())
const settingTabs = computed(() => getSettingTabs(t))
// 使用动态标签页
const { registerHeaderTab } = useDynamicHeaderTab()

View File

@@ -22,9 +22,9 @@ const shareViewKey = ref(0)
// 获取标签页
const subscribeTabs = computed(() => {
if (subType === '电影') {
return getSubscribeMovieTabs()
return getSubscribeMovieTabs(t)
} else {
return getSubscribeTvTabs()
return getSubscribeTvTabs(t)
}
})

View File

@@ -17,7 +17,7 @@ const listViewKey = ref(0)
// 获取标签页
const workflowTabs = computed(() => {
return getWorkflowTabs()
return getWorkflowTabs(t)
})
// 新增工作流对话框

View File

@@ -1,9 +1,8 @@
import { useI18n } from 'vue-i18n'
import { useGlobalSettingsStore } from '@/stores'
import type { Composer } from 'vue-i18n'
// 构建路由菜单,每次调用时使用当前的语言环境
export function getNavMenus() {
const { t } = useI18n()
export function getNavMenus(t: Composer['t']) {
const globalSettingsStore = useGlobalSettingsStore()
// 检查是否为高级模式
@@ -148,9 +147,7 @@ export function getNavMenus() {
}
// 获取设置标签页
export function getSettingTabs() {
const { t } = useI18n()
export function getSettingTabs(t: Composer['t']) {
return [
{
title: t('settingTabs.system.title'),
@@ -204,9 +201,7 @@ export function getSettingTabs() {
}
// 获取电影订阅标签页
export function getSubscribeMovieTabs() {
const { t } = useI18n()
export function getSubscribeMovieTabs(t: Composer['t']) {
return [
{
title: t('subscribeTabs.movie.mysub'),
@@ -222,9 +217,7 @@ export function getSubscribeMovieTabs() {
}
// 获取电视剧订阅标签页
export function getSubscribeTvTabs() {
const { t } = useI18n()
export function getSubscribeTvTabs(t: Composer['t']) {
return [
{
title: t('subscribeTabs.tv.mysub'),
@@ -245,9 +238,7 @@ export function getSubscribeTvTabs() {
}
// 获取插件标签页
export function getPluginTabs() {
const { t } = useI18n()
export function getPluginTabs(t: Composer['t']) {
return [
{
title: t('pluginTabs.installed'),
@@ -263,9 +254,7 @@ export function getPluginTabs() {
}
// 获取发现标签页
export function getDiscoverTabs() {
const { t } = useI18n()
export function getDiscoverTabs(t: Composer['t']) {
return [
{
name: t('discoverTabs.themoviedb'),
@@ -286,9 +275,7 @@ export function getDiscoverTabs() {
}
// 获取工作流标签页
export function getWorkflowTabs() {
const { t } = useI18n()
export function getWorkflowTabs(t: Composer['t']) {
return [
{
title: t('workflowTabs.list'),

View File

@@ -32,7 +32,7 @@ const { appMode } = usePWA()
const activeTab = ref('installed')
// 获取插件标签页
const pluginTabs = computed(() => getPluginTabs())
const pluginTabs = computed(() => getPluginTabs(t))
// 使用动态标签页
const { registerHeaderTab } = useDynamicHeaderTab()