diff --git a/src/api/constants.ts b/src/api/constants.ts index 8c458832..a30696ee 100644 --- a/src/api/constants.ts +++ b/src/api/constants.ts @@ -1,49 +1,48 @@ import i18n from '@/plugins/i18n' -export const storageOptions = [ +export const storageAttributes = [ { - title: i18n.global.t('storage.local'), - value: 'local', + type: 'local', icon: 'mdi-folder-multiple-outline', remote: false, }, { - title: i18n.global.t('storage.alipan'), - value: 'alipan', + type: 'alipan', icon: 'mdi-cloud-outline', remote: true, }, { - title: i18n.global.t('storage.u115'), - value: 'u115', + type: 'u115', icon: 'mdi-cloud-outline', remote: true, }, { - title: i18n.global.t('storage.rclone'), - value: 'rclone', + type: 'rclone', icon: 'mdi-server-network-outline', remote: true, }, { - title: i18n.global.t('storage.alist'), - value: 'alist', + type: 'alist', icon: 'mdi-server-network-outline', remote: true, }, { - title: i18n.global.t('storage.custom'), - value: 'custom', - icon: 'mdi-cog-outline', + type: 'custom', + icon: 'mdi-database', remote: true, }, ] -export const storageDict = storageOptions.reduce((dict, item) => { - dict[item.value] = item.title +export const storageIconDict = storageAttributes.reduce((dict, item) => { + dict[item.type] = item.icon return dict }, {} as Record) +export const storageRemoteDict = storageAttributes.reduce((dict, item) => { + dict[item.type] = item.remote + return dict +}, {} as Record) + export const innerFilterRules = [ { title: i18n.global.t('filterRules.specSub'), value: ' SPECSUB ' }, { title: i18n.global.t('filterRules.cnSub'), value: ' CNSUB ' }, diff --git a/src/components/FileBrowser.vue b/src/components/FileBrowser.vue index 33d08810..92f010ea 100644 --- a/src/components/FileBrowser.vue +++ b/src/components/FileBrowser.vue @@ -3,12 +3,8 @@ import FileList from './filebrowser/FileList.vue' import FileToolbar from './filebrowser/FileToolbar.vue' import FileNavigator from './filebrowser/FileNavigator.vue' import type { EndPoints, FileItem, StorageConf } from '@/api/types' -import { storageOptions } from '@/api/constants' import { useDisplay } from 'vuetify' -import { useI18n } from 'vue-i18n' - -// 国际化 -const { t } = useI18n() +import { storageIconDict } from '@/api/constants' // 输入参数 const props = defineProps({ @@ -142,8 +138,11 @@ const showDirTree = ref(false) // 计算属性 const storagesArray = computed(() => { - const storageCodes = props.storages?.map(item => item.type) - return storageOptions.filter(item => storageCodes?.includes(item.value)) + return props.storages?.map(item => ({ + title: item.name, + value: item.type, + icon: storageIconDict[item.type], + })) }) // 方法 diff --git a/src/components/cards/DirectoryCard.vue b/src/components/cards/DirectoryCard.vue index 4ab79967..82829f70 100644 --- a/src/components/cards/DirectoryCard.vue +++ b/src/components/cards/DirectoryCard.vue @@ -1,9 +1,9 @@