diff --git a/mail-vue/.env.remote b/mail-vue/.env.remote index fa20983..e9281f8 100644 --- a/mail-vue/.env.remote +++ b/mail-vue/.env.remote @@ -1,3 +1,3 @@ NODE_ENV = 'remote' VITE_APP_TITLE = '远程环境' -VITE_BASE_URL = 'xxxxxx' \ No newline at end of file +VITE_BASE_URL = 'https://mornglow.top/api' \ No newline at end of file diff --git a/mail-vue/index.html b/mail-vue/index.html index 7e6bf5b..fc76b12 100644 --- a/mail-vue/index.html +++ b/mail-vue/index.html @@ -5,6 +5,7 @@ + diff --git a/mail-vue/package-lock.json b/mail-vue/package-lock.json index bd978cd..4269791 100644 --- a/mail-vue/package-lock.json +++ b/mail-vue/package-lock.json @@ -16,7 +16,7 @@ "dayjs": "^1.11.13", "dexie": "^4.0.11", "echarts": "^5.6.0", - "element-plus": "^2.9.5", + "element-plus": "^2.9.11", "lodash-es": "^4.17.21", "path": "^0.12.7", "pinia": "^3.0.2", @@ -1916,9 +1916,9 @@ "integrity": "sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg==" }, "node_modules/element-plus": { - "version": "2.9.7", - "resolved": "https://registry.npmmirror.com/element-plus/-/element-plus-2.9.7.tgz", - "integrity": "sha512-6vjZh5SXBncLhUwJGTVKS5oDljfgGMh6J4zVTeAZK3YdMUN76FgpvHkwwFXocpJpMbii6rDYU3sgie64FyPerQ==", + "version": "2.10.4", + "resolved": "https://registry.npmmirror.com/element-plus/-/element-plus-2.10.4.tgz", + "integrity": "sha512-UD4elWHrCnp1xlPhbXmVcaKFLCRaRAY6WWRwemGfGW3ceIjXm9fSYc9RNH3AiOEA6Ds1p9ZvhCs76CR9J8Vd+A==", "license": "MIT", "dependencies": { "@ctrl/tinycolor": "^3.4.1", diff --git a/mail-vue/package.json b/mail-vue/package.json index fbdd047..e10f1d2 100644 --- a/mail-vue/package.json +++ b/mail-vue/package.json @@ -18,7 +18,7 @@ "dayjs": "^1.11.13", "dexie": "^4.0.11", "echarts": "^5.6.0", - "element-plus": "^2.9.5", + "element-plus": "^2.9.11", "lodash-es": "^4.17.21", "path": "^0.12.7", "pinia": "^3.0.2", diff --git a/mail-vue/src/App.vue b/mail-vue/src/App.vue index 9b6eaf2..6d74a7d 100644 --- a/mail-vue/src/App.vue +++ b/mail-vue/src/App.vue @@ -5,9 +5,11 @@ \ No newline at end of file diff --git a/mail-vue/src/i18n/en.js b/mail-vue/src/i18n/en.js index 1002f57..483b74b 100644 --- a/mail-vue/src/i18n/en.js +++ b/mail-vue/src/i18n/en.js @@ -5,18 +5,18 @@ const en = { starred: 'Starred', settings: 'Settings', analytics: 'Analytics', - allUsers: 'All users', - allMail: 'All mail', + allUsers: 'All Users', + allMail: 'All Mail', permissions: 'Role', - inviteCode: 'Invite code', - SystemSettings: 'System settings', + inviteCode: 'Invite Code', + SystemSettings: 'System Settings', noMoreData: 'No more data', noMessagesFound: 'No messages found', - addAccount: 'Add account', + addAccount: 'Add Account', emailAccount: 'Email', - deleteUser: 'Delete account', + deleteUser: 'Delete Account', deleteUserBtn: 'Delete', - changePassword: 'Change password', + changePassword: 'Change Password', newPassword: 'New password', confirmPassword: 'Confirm password', add: 'Add', @@ -29,22 +29,23 @@ const en = { changePwdBtn: 'Change', username: 'Username', password: 'Password', - delAccount: 'Delete account', + delAccount: 'Delete Account', delAccountMsg: 'This will permanently delete your account and data. It cannot be reactivated.', - totalReceived: 'Total received', - totalSent: 'Total sent', - totalMailboxes: 'Total accounts', - totalUsers: 'Total users', + totalReceived: 'Total Received', + totalSent: 'Total Sent', + totalMailboxes: 'Total Accounts', + totalUsers: 'Total Users', deleted: 'Deleted', + selectDeleted: 'Deleted', active: 'Active', - emailSource: 'Email source', - userGrowth: 'User growth', - emailGrowth: 'Email growth', + emailSource: 'Email Source', + userGrowth: 'User Growth', + emailGrowth: 'Email Growth', emailSent: 'Sent', emailReceived: 'Received', - sentToday: 'Sent today', + sentToday: 'Sent Today', total: 'Total', - growthTotalUsers: 'Total users', + growthTotalUsers: 'Total Users', searchByEmail: 'Enter email to search', tabEmailAddress: 'Email', tabReceived: 'Received', @@ -63,9 +64,9 @@ const en = { tabSetting: 'Settings', registrationIp: 'Registration IP', recentIP: 'Recent IP', - recentActivity: 'Recent activity', - loginDevice: 'Login device', - loginSystem: 'Login system', + recentActivity: 'Recent Activity', + loginDevice: 'Login Device', + loginSystem: 'Login System', browserLogin: 'Browser Login', unauthorized: 'Unauthorized', unlimited: 'Unlimited', @@ -76,10 +77,10 @@ const en = { perm: 'Role', btnBan: 'Ban', admin: 'Admin', - addUser: 'Add user', + addUser: 'Add User', select: 'Select', unknown: 'Unknown', - changePerm: 'Change role', + changePerm: 'Change Role', from: 'From', subject: 'Subject', sender: 'Sender', @@ -91,22 +92,22 @@ const en = { order: 'Order', default: 'Default', description: 'Description', - removeBody: 'Remove body', + removeContent: 'Remove content', removeAll: 'Remove all', expand: 'Expand', collapse: 'Collapse', daily: 'Daily', searchRegKeyDesc: 'Enter invite code to search', - remainingUses: 'Remaining uses', + remainingUses: 'Remaining Uses', exhausted: 'Exhausted', - validUntil: 'Valid until', + validUntil: 'Valid Until', expired: 'Expired', copy: 'Copy', history: 'History', - addRegKey: 'Add invite code', - regKey: 'Invite code', + addRegKey: 'Add Invite Code', + regKey: 'Invite Code', noCodeFound: 'No messages found', - useHistory: 'Usage history', + useHistory: 'Usage History', date: 'Date', roleDesc: 'Role', noSubject: 'No subject', @@ -131,43 +132,43 @@ const en = { regSwitch: 'Sign up', loginSwitch: 'Sign in', websiteSetting: 'Website', - websiteReg: 'Sign up', - multipleEmail: 'Multiple accounts', - multipleEmailDesc: 'Enable this feature to allow users to add multiple accounts', - physicallyWipeData: 'Physically wipe data', - physicallyWipeDataDesc: 'This action will permanently erase all deleted data', + websiteReg: 'Sign Up', + multipleEmail: 'Multiple Accounts', + multipleEmailDesc: 'Enable this feature to allow users to add multiple accounts.', + physicallyWipeData: 'Physically Wipe Data', + physicallyWipeDataDesc: 'This action will permanently erase all deleted data.', customization: 'Customization', websiteTitle: 'Title', - loginBoxOpacity: 'Login box opacity', + loginBoxOpacity: 'Login Box Opacity', loginBackground: 'Background', emailSetting: 'Email', - receiveEmails: 'Receive email', - autoRefresh: 'Auto refresh', - autoRefreshDesc: 'Automatically fetch the latest emails from the server', - sendEmail: 'Send email', + receiveEmail: 'Receive Email', + autoRefresh: 'Auto Refresh', + autoRefreshDesc: 'Automatically fetch the latest emails from the server.', + sendEmail: 'Send Email', resendToken: 'Resend Token', - R2OS: 'R2 Object storage', + R2OS: 'R2 Object Storage', osDomain: 'Domain', - emailPush: 'Email push', - tgBot: 'Telegram bot', + emailPush: 'Email Push', + tgBot: 'Telegram Bot', disable: 'Disable', disabled: 'Disabled', - otherEmail: 'Forwarding to external email', + otherEmail: 'Forwarding to External Email', forwardingRules: 'Forwarding Rules', forwardAll: 'All', rules: 'Rules', turnstileSetting: 'Turnstile', - signUpVerification: 'Sign up verification', - addEmailVerification: 'Add account verification', + signUpVerification: 'Sign Up Verification', + addEmailVerification: 'Add Account Verification', about: 'About', version: 'Version', community: 'Community', - changeTitle: 'Change title', + changeTitle: 'Change Title', addResendTokenDesc: 'Input to add; leave empty to delete.', - addOsDomain: 'Add domain', + addOsDomain: 'Add Domain', domainDesc: 'Domain', addTurnstileSecret: 'Add turnstile secret', - backgroundTitle: 'Change background', + backgroundTitle: 'Change Background', tgBotDesc: 'Forward received emails to a Telegram bot', tgBotToken: 'Bot token', toBotTokenDesc: 'Multiple user chat_ids, separated by commas', @@ -175,11 +176,11 @@ const en = { otherEmailInputDesc: 'Separate multiple email addresses with commas.', forwardingRulesDesc: 'Rule-based forwarding only forwards emails received by the specified address.', ruleEmailsInputDesc: 'Separate multiple email addresses with commas.', - resendTokenList: 'Token list', + resendTokenList: 'Token List', domain: 'Domain', optional: 'Optional', subjectInputDesc: 'Please enter the email subject.', - changeUserName: 'Change username', + changeUserName: 'Change Username', sendSeparately: 'Separately', send: 'Send', reply: 'Reply', @@ -204,9 +205,9 @@ const en = { addSuccessMsg: 'Addition successful', delConfirm: 'Confirm deleting {msg}?', emptyRoleNameMsg: 'Role name cannot be empty', - changSuccessMsg: 'Changes saved successfully', - changeRoleTitle: 'Change role', - addRoleTitle: 'Add role', + saveSuccessMsg: 'Saved successfully', + changeRoleTitle: 'Change Role', + addRoleTitle: 'Add Role', emptyUserNameMsg: 'Name cannot be empty', delAccountConfirm: 'Confirm deleting current account and all associated data?', clearAllDelConfirm: 'This action is irreversible. Enter DELETE to proceed', @@ -216,7 +217,7 @@ const en = { delBackgroundConfirm: 'Confirm deleting this background?', enable: 'Enable', enabled: 'Enabled', - reSendConfirm: 'Confirm reset of {msg} send total?', + reSendConfirm: 'Confirm reset of {msg} send count?', reSuccessMsg: 'Reset successful', restoreConfirm: 'Confirm restoring {msg}?', normalRestore: 'Normal restore', @@ -234,7 +235,7 @@ const en = { sendFailMsg: 'Send failed', saveDraftConfirm: 'Save draft?', delEmailsConfirm: 'Confirm batch delete these emails?', - sending: 'Sending Email...', + sending: 'Sending email...', sendingErrorMsg: 'Sending in progress', networkErrorMsg: 'Network error. Check your internet', timeoutErrorMsg: 'Timeout. Try again later', @@ -249,8 +250,8 @@ const en = { supportDesc: 'Buy me tea', featDesc: 'Feature Description', emailInterception: 'Email Interception', - emailInterceptionDesc: '*Intercept emails by blocking entire domain using @example.com to prevent users from receiving emails from certain websites.', - availableDomains: 'Available domains', + emailInterceptionDesc: 'Enter a domain or email address to prevent users from receiving emails from certain websites.', + availableDomains: 'Available Domains', availableDomainsDesc: 'Restrict users to email domains specified. Domains not on the approved list will be blocked from registration, adding email addresses, and sending/receiving emails. If left blank, all domains will be allowed by default.', backgroundUrlDesc: 'Image URL', localUpload: ' Local upload', @@ -260,6 +261,24 @@ const en = { rulesVerify: 'Rules', rulesVerifyTitle: 'Trigger After {count} Daily Uses per IP', botVerifyMsg: 'Please verify that you are human', + noticeTitle: 'Notice', + noticePopup: 'Sign-in Popup', + icon: 'Icon', + position: 'Position', + offset: 'Offset', + duration: 'Duration', + topRight: 'Top Right', + topLeft: 'Top Left', + bottomRight: 'Bottom Right', + bottomLeft: 'Bottom Left', + width: 'Width', + titleDesc: 'Title', + noticeContentDesc: 'Notice content supports HTML', + verifyModuleFailed: 'Verification module failed to load. Please refresh the page', + popUp: 'Pop Up', + noRecipientTitle: 'No Recipient', + noRecipientDesc: 'Emails can be received even without a registered email address.', + preview: 'Preview' } export default en diff --git a/mail-vue/src/i18n/zh.js b/mail-vue/src/i18n/zh.js index 311428f..039aee4 100644 --- a/mail-vue/src/i18n/zh.js +++ b/mail-vue/src/i18n/zh.js @@ -36,6 +36,7 @@ const zh = { totalMailboxes: '邮箱数量', totalUsers: '用户数量', deleted: '删除', + selectDeleted: '已删除', active: '正常', emailSource: '邮件来源', userGrowth: '用户增长', @@ -91,7 +92,7 @@ const zh = { order: '排序', default: '默认', description: '描述', - removeBody: '移除正文', + removeContent: '移除正文', removeAll: '丢弃邮件', expand: '展开', collapse: '收起', @@ -141,7 +142,7 @@ const zh = { loginBoxOpacity: '登录透明', loginBackground: '登录背景', emailSetting: '邮件设置', - receiveEmails: '邮件接收', + receiveEmail: '邮件接收', autoRefresh: '自动刷新', autoRefreshDesc: '轮询请求服务器获取最新邮件', sendEmail: '邮件发送', @@ -164,7 +165,7 @@ const zh = { community: '交流', changeTitle: '修改标题', addResendTokenDesc: '输入内容添加,不填则删除', - addOsDomain: '添加访问域名', + addOsDomain: '添加域名', domainDesc: '域名', addTurnstileSecret: '添加 Turnstile 密钥', backgroundTitle: '设置背景', @@ -204,7 +205,7 @@ const zh = { addSuccessMsg: '添加成功', delConfirm: '确认删除{msg}吗?', emptyRoleNameMsg: '身份名不能为空', - changSuccessMsg: '修改成功', + saveSuccessMsg: '保存成功', changeRoleTitle: '修改身份', addRoleTitle: '添加身份', emptyUserNameMsg: '用户名不能为空', @@ -249,7 +250,7 @@ const zh = { supportDesc: '请我喝杯奶茶', featDesc: '功能说明', emailInterception: '邮件拦截', - emailInterceptionDesc: '拦截邮件, 要拦截整个域名输入 *@example.com, 可用于禁止用户接收某些网站的邮件', + emailInterceptionDesc: '输入邮箱或域名拦截邮件,可用于禁止用户接收某些网站的邮件', availableDomains: '可用域名', availableDomainsDesc: '限制用户只能使用指定的域名邮箱,不在配置名单内的域名会被禁止使用注册添加邮箱,接收发送邮件等功能,留空默认允许可用所有域名', backgroundUrlDesc: '在线图片链接', @@ -260,5 +261,24 @@ const zh = { rulesVerify: '规则', rulesVerifyTitle: 'IP 每天使用 {count} 次后触发', botVerifyMsg: '请完成人机验证', + noticeTitle: '网站公告', + noticePopup: '登录弹窗', + icon: '图标', + position: '位置', + offset: '偏移距离', + duration: '显示时长', + topRight: '右上', + topLeft: '左上', + bottomRight: '右下', + bottomLeft: '左下', + width: '宽度', + titleDesc: '标题', + noticeContentDesc: '公告内容,支持HTML', + verifyModuleFailed: '人机验证模块加载失败,请刷新页面', + popUp: '弹出', + noRecipientTitle: '无人收件', + noRecipientDesc: '即使没有注册的邮箱也能收到邮件', + preview: '预览' + } export default zh \ No newline at end of file diff --git a/mail-vue/src/layout/account/index.vue b/mail-vue/src/layout/account/index.vue index 1885396..2bb291f 100644 --- a/mail-vue/src/layout/account/index.vue +++ b/mail-vue/src/layout/account/index.vue @@ -12,10 +12,10 @@
- +
- + @@ -217,7 +217,7 @@ function setName() { } ElMessage({ - message: t('changSuccessMsg'), + message: t('saveSuccessMsg'), type: "success", plain: true }) diff --git a/mail-vue/src/layout/aside/index.vue b/mail-vue/src/layout/aside/index.vue index 57c92c8..6417de6 100644 --- a/mail-vue/src/layout/aside/index.vue +++ b/mail-vue/src/layout/aside/index.vue @@ -94,7 +94,7 @@ const route = useRoute(); justify-content: center; gap: 5px; color: #ffffff; - background: linear-gradient(135deg, #1890ff, #1c6dd0); + background: linear-gradient(135deg, #1890ff, #3a80dd); transition: all 0.3s ease; :deep(.el-icon) { diff --git a/mail-vue/src/layout/header/index.vue b/mail-vue/src/layout/header/index.vue index 1b5e70c..7d8a31f 100644 --- a/mail-vue/src/layout/header/index.vue +++ b/mail-vue/src/layout/header/index.vue @@ -10,8 +10,19 @@
-
- {{ userStore.user.email }} + +
+ +
+ +
+
+
@@ -28,7 +39,7 @@
{{userStore.user.name}}
-