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

This commit is contained in:
PKC278
2026-01-03 19:03:37 +08:00
parent 6d2916dc9f
commit 425bf808ed
11 changed files with 22 additions and 34 deletions
+2 -2
View File
@@ -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({
+1 -1
View File
@@ -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)
} }
+1 -1
View File
@@ -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)
}) })
+1 -1
View File
@@ -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)
+1 -1
View File
@@ -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
View File
@@ -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
+2 -1
View File
@@ -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()
+2 -2
View File
@@ -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)
} }
}) })
+1 -1
View File
@@ -17,7 +17,7 @@ const listViewKey = ref(0)
// 获取标签页 // 获取标签页
const workflowTabs = computed(() => { const workflowTabs = computed(() => {
return getWorkflowTabs() return getWorkflowTabs(t)
}) })
// 新增工作流对话框 // 新增工作流对话框
+8 -21
View File
@@ -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'),
+1 -1
View File
@@ -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()