From eabe8f69510867ac16cec19bc16163dc82c3f5ce Mon Sep 17 00:00:00 2001 From: okatu-loli Date: Sat, 8 Aug 2026 00:46:31 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=B7=BB=E5=8A=A0=20AList=20=E5=AD=98?= =?UTF-8?q?=E5=82=A8=E9=80=89=E9=A1=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/api/constants.ts | 5 +++++ src/components/cards/DirectoryCard.vue | 1 + src/components/cards/StorageCard.vue | 8 +++++++- src/components/dialog/AlistConfigDialog.vue | 14 +++++++++----- src/locales/en-US.ts | 5 +++++ src/locales/zh-CN.ts | 5 +++++ src/locales/zh-TW.ts | 5 +++++ 7 files changed, 37 insertions(+), 6 deletions(-) diff --git a/src/api/constants.ts b/src/api/constants.ts index dc115036..4b6744e3 100644 --- a/src/api/constants.ts +++ b/src/api/constants.ts @@ -26,6 +26,11 @@ export const storageAttributes = [ icon: 'mdi-server-network-outline', remote: true, }, + { + type: 'alistgo', + icon: 'mdi-server-network-outline', + remote: true, + }, { type: 'smb', icon: 'mdi-folder-network-outline', diff --git a/src/components/cards/DirectoryCard.vue b/src/components/cards/DirectoryCard.vue index 6ba3f392..5e513fdc 100644 --- a/src/components/cards/DirectoryCard.vue +++ b/src/components/cards/DirectoryCard.vue @@ -12,6 +12,7 @@ const STORAGE_ACCENT_COLOR_MAP = { u115: '#17B26A', rclone: '#6675FF', alist: '#12B8D7', + alistgo: '#1BA0D8', smb: '#3B82F6', } diff --git a/src/components/cards/StorageCard.vue b/src/components/cards/StorageCard.vue index caf88e46..5b400bd0 100644 --- a/src/components/cards/StorageCard.vue +++ b/src/components/cards/StorageCard.vue @@ -6,6 +6,7 @@ import alipan_png from '@images/misc/alipan.webp' import u115_png from '@images/misc/u115.png' import rclone_png from '@images/misc/rclone.png' import alist_png from '@images/misc/openlist.svg' +import alistgo_png from '@images/misc/alist.svg' import custom_png from '@images/misc/database.png' import smb_png from '@images/misc/smb.png' import api from '@/api' @@ -58,6 +59,7 @@ function openStorageDialog() { u115: U115AuthDialog, rclone: RcloneConfigDialog, alist: AlistConfigDialog, + alistgo: AlistConfigDialog, smb: SmbConfigDialog, } @@ -69,7 +71,9 @@ function openStorageDialog() { const dialog = dialogMap[props.storage.type] || StorageCustomConfigDialog const dialogProps = dialog === StorageCustomConfigDialog ? { storage: props.storage } - : { conf: props.storage.config || {} } + : dialog === AlistConfigDialog + ? { conf: props.storage.config || {}, type: props.storage.type } + : { conf: props.storage.config || {} } openSharedDialog( dialog, @@ -94,6 +98,8 @@ const getIcon = computed(() => { return rclone_png case 'alist': return alist_png + case 'alistgo': + return alistgo_png case 'smb': return smb_png default: diff --git a/src/components/dialog/AlistConfigDialog.vue b/src/components/dialog/AlistConfigDialog.vue index 1c961710..6f9bbdf1 100644 --- a/src/components/dialog/AlistConfigDialog.vue +++ b/src/components/dialog/AlistConfigDialog.vue @@ -15,6 +15,10 @@ const props = defineProps({ type: Object as PropType<{ [key: string]: any }>, required: true, }, + type: { + type: String, + default: 'alist', + }, }) // 定义事件 @@ -29,7 +33,7 @@ async function handleDone() { // 重置配置 async function handleReset() { try { - const result: { [key: string]: any } = await api.get('/storage/reset/alist') + const result: { [key: string]: any } = await api.get(`/storage/reset/${props.type}`) if (result.success) { // 重置成功 handleDone() @@ -62,7 +66,7 @@ const sourceItems = [ // 保存alist设置 async function savaAlistConfig() { try { - await api.post(`storage/save/alist`, props.conf) + await api.post(`storage/save/${props.type}`, props.conf) } catch (e) { console.error(e) } @@ -78,7 +82,7 @@ async function savaAlistConfig() { - {{ t('dialog.alistConfig.title') }} + {{ t(`dialog.${props.type}Config.title`) }} @@ -87,8 +91,8 @@ async function savaAlistConfig() { diff --git a/src/locales/en-US.ts b/src/locales/en-US.ts index b33ab370..ff15c33d 100644 --- a/src/locales/en-US.ts +++ b/src/locales/en-US.ts @@ -1480,6 +1480,7 @@ export default { u115: '115 Cloud', rclone: 'RClone', alist: 'OpenList', + alistgo: 'AList', smb: 'SMB Network Share', custom: 'Custom', }, @@ -3006,6 +3007,10 @@ export default { complete: 'Complete', reset: 'Reset', }, + alistgoConfig: { + title: 'AList Configuration', + serverUrl: 'AList server address', + }, smbConfig: { title: 'SMB Network Share Configuration', host: 'SMB Server Address', diff --git a/src/locales/zh-CN.ts b/src/locales/zh-CN.ts index a457c042..df69bcea 100644 --- a/src/locales/zh-CN.ts +++ b/src/locales/zh-CN.ts @@ -1470,6 +1470,7 @@ export default { u115: '115网盘', rclone: 'RClone', alist: 'OpenList', + alistgo: 'AList', smb: 'SMB网络共享', custom: '自定义', }, @@ -2951,6 +2952,10 @@ export default { complete: '完成', reset: '重置', }, + alistgoConfig: { + title: 'AList配置', + serverUrl: 'AList服务地址', + }, smbConfig: { title: 'SMB网络共享配置', host: 'SMB服务器地址', diff --git a/src/locales/zh-TW.ts b/src/locales/zh-TW.ts index d2195959..866babd3 100644 --- a/src/locales/zh-TW.ts +++ b/src/locales/zh-TW.ts @@ -1468,6 +1468,7 @@ export default { u115: '115網盤', rclone: 'RClone', alist: 'OpenList', + alistgo: 'AList', smb: 'SMB網路共享', custom: '自定義', }, @@ -2950,6 +2951,10 @@ export default { complete: '完成', reset: '重置', }, + alistgoConfig: { + title: 'AList配置', + serverUrl: 'AList服務地址', + }, smbConfig: { title: 'SMB網路共享配置', host: 'SMB伺服器地址',