From bf5bbd3689b26c62b6d8c2335a9a9301dc4ae515 Mon Sep 17 00:00:00 2001 From: jxxghp Date: Thu, 3 Jul 2025 12:43:42 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0SMB=E7=BD=91=E7=BB=9C?= =?UTF-8?q?=E5=85=B1=E4=BA=AB=E6=94=AF=E6=8C=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/api/constants.ts | 5 + src/assets/images/misc/smb.png | Bin 0 -> 26702 bytes src/components/cards/StorageCard.vue | 17 +++ src/components/dialog/SmbConfigDialog.vue | 131 ++++++++++++++++++++++ src/locales/en-US.ts | 16 +++ src/locales/zh-CN.ts | 16 +++ src/locales/zh-TW.ts | 16 +++ 7 files changed, 201 insertions(+) create mode 100644 src/assets/images/misc/smb.png create mode 100644 src/components/dialog/SmbConfigDialog.vue diff --git a/src/api/constants.ts b/src/api/constants.ts index 35bd89ac..882dd85d 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: 'smb', + icon: 'mdi-folder-network-outline', + remote: true, + }, ] export const storageIconDict = storageAttributes.reduce((dict, item) => { diff --git a/src/assets/images/misc/smb.png b/src/assets/images/misc/smb.png new file mode 100644 index 0000000000000000000000000000000000000000..4774d7781281a9cef9cd4de5d70d968bfa7b0773 GIT binary patch literal 26702 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 { return rclone_png case 'alist': return alist_png + case 'smb': + return smb_png default: return custom_png } @@ -143,6 +152,7 @@ function handleDone() { u115AuthDialog.value = false rcloneConfigDialog.value = false aListConfigDialog.value = false + smbConfigDialog.value = false customConfigDialog.value = false // 更新存储 storage_ref.value.name = customName.value @@ -203,6 +213,13 @@ function onClose() { @close="aListConfigDialog = false" @done="handleDone" /> + +import api from '@/api' +import { useI18n } from 'vue-i18n' +import { useDisplay } from 'vuetify' + +// 显示器宽度 +const display = useDisplay() + +// 多语言支持 +const { t } = useI18n() + +// 定义输入 +const props = defineProps({ + conf: { + type: Object as PropType<{ [key: string]: any }>, + required: true, + }, +}) + +// 定义事件 +const emit = defineEmits(['done', 'close']) + +// 完成 +async function handleDone() { + await saveSmbConfig() + emit('done') +} + +// 重置配置 +async function handleReset() { + try { + const result: { [key: string]: any } = await api.get('/storage/reset/smb') + if (result.success) { + // 重置成功 + handleDone() + } + } catch (e) { + console.error(e) + } +} + +// 保存 SMB 设置 +async function saveSmbConfig() { + try { + await api.post(`storage/save/smb`, props.conf) + } catch (e) { + console.error(e) + } +} + + + diff --git a/src/locales/en-US.ts b/src/locales/en-US.ts index 29b9f2da..6e84d50b 100644 --- a/src/locales/en-US.ts +++ b/src/locales/en-US.ts @@ -780,6 +780,7 @@ export default { u115: '115 Cloud', rclone: 'RClone', alist: 'OpenList', + smb: 'SMB Network Share', custom: 'Custom', }, filterRules: { @@ -1678,6 +1679,21 @@ export default { complete: 'Complete', reset: 'Reset', }, + smbConfig: { + title: 'SMB Network Share Configuration', + host: 'SMB Server Address', + hostHint: 'IP address or hostname of the SMB server', + share: 'Share Name', + shareHint: 'Name of the shared folder to connect to', + username: 'Username', + usernameHint: 'SMB login username', + password: 'Password', + passwordHint: 'SMB login password', + domain: 'Domain', + domainHint: 'SMB domain name, such as WORKGROUP or domain controller name', + complete: 'Complete', + reset: 'Reset', + }, workflowAddEdit: { addTitle: 'Add Workflow', editTitle: 'Edit Workflow', diff --git a/src/locales/zh-CN.ts b/src/locales/zh-CN.ts index 834052d7..aa1eb424 100644 --- a/src/locales/zh-CN.ts +++ b/src/locales/zh-CN.ts @@ -777,6 +777,7 @@ export default { u115: '115网盘', rclone: 'RClone', alist: 'OpenList', + smb: 'SMB网络共享', custom: '自定义', }, filterRules: { @@ -1656,6 +1657,21 @@ export default { complete: '完成', reset: '重置', }, + smbConfig: { + title: 'SMB网络共享配置', + host: 'SMB服务器地址', + hostHint: 'SMB服务器的IP地址或主机名', + share: '共享名称', + shareHint: '要连接的共享文件夹名称', + username: '用户名', + usernameHint: 'SMB登录用户名', + password: '密码', + passwordHint: 'SMB登录密码', + domain: '域名', + domainHint: 'SMB域名,如WORKGROUP或域控制器名称', + complete: '完成', + reset: '重置', + }, workflowAddEdit: { addTitle: '添加工作流', editTitle: '编辑工作流', diff --git a/src/locales/zh-TW.ts b/src/locales/zh-TW.ts index 2e95cbfd..8602f0c3 100644 --- a/src/locales/zh-TW.ts +++ b/src/locales/zh-TW.ts @@ -775,6 +775,7 @@ export default { u115: '115網盤', rclone: 'RClone', alist: 'OpenList', + smb: 'SMB網路共享', custom: '自定義', }, @@ -1655,6 +1656,21 @@ export default { complete: '完成', reset: '重置', }, + smbConfig: { + title: 'SMB網路共享配置', + host: 'SMB伺服器地址', + hostHint: 'SMB伺服器的IP地址或主機名', + share: '共享名稱', + shareHint: '要連接的共享資料夾名稱', + username: '用戶名', + usernameHint: 'SMB登入用戶名', + password: '密碼', + passwordHint: 'SMB登入密碼', + domain: '域名', + domainHint: 'SMB域名,如WORKGROUP或域控制器名稱', + complete: '完成', + reset: '重置', + }, workflowAddEdit: { addTitle: '新增工作流', editTitle: '編輯工作流',