feat: 自定义版本功能更新
Build and Release / Build (push) Has been cancelled

- 新增家庭共享订阅管理
- 新增用户邀请统计
- 新增签名和订阅模式设置表单
- 更新 API 服务层和国际化文件
- UI 组件优化(enhanced-input、pro-table)
This commit is contained in:
2026-03-19 01:56:13 -07:00
parent 31803a1d24
commit 6b92979c7c
82 changed files with 3266 additions and 739 deletions
@@ -99,6 +99,8 @@
"title": "Email Settings",
"trafficExceedEmailTemplate": "Traffic Exceed Email Template",
"trafficTemplate": "Traffic Template",
"deleteAccountEmailTemplate": "Delete Account Email Template",
"deleteAccountTemplate": "Delete Account Template",
"verifyEmailTemplate": "Verify Email Template",
"verifyTemplate": "Verify Template",
"whitelistSuffixes": "Whitelist Suffixes",
@@ -31,6 +31,7 @@
"System Config": "System Config",
"Ticket Management": "Ticket Management",
"Traffic Details": "Traffic Details",
"Device Group": "Device Group",
"User Management": "User Management",
"Users & Support": "Users & Support"
}
@@ -3,6 +3,7 @@
"common": {
"cancel": "Cancel",
"save": "Save Settings",
"saving": "Saving...",
"saveFailed": "Save Failed",
"saveSuccess": "Save Successful"
},
@@ -23,6 +24,10 @@
"description": "Configure user invitation and referral reward settings",
"forcedInvite": "Require Invitation to Register",
"forcedInviteDescription": "When enabled, users must register through an invitation link",
"giftDays": "Invite Gift Days",
"giftDaysDescription": "When referral percentage is 0, both the inviter and invitee receive this many extra subscription days after the invitee makes a purchase",
"giftDaysPlaceholder": "Enter days",
"giftDaysSuffix": "day(s)",
"inputPlaceholder": "Please enter",
"onlyFirstPurchase": "First Purchase Reward Only",
"onlyFirstPurchaseDescription": "When enabled, referrers only receive rewards for the first purchase by referred users",
@@ -42,6 +47,22 @@
"title": "Log Cleanup Settings"
},
"logSettings": "Log Settings",
"signature": {
"title": "Request Signature",
"description": "Enable or disable request signature verification for public APIs",
"enable": "Enable Signature Verification",
"enableDescription": "When enabled, clients can trigger strict signature verification by sending X-Signature-Enabled: 1",
"saveSuccess": "Save Successful",
"saveFailed": "Save Failed"
},
"subscribeMode": {
"title": "Subscription Mode",
"description": "Configure single or multiple subscription purchase behavior",
"singleSubscriptionMode": "Single Subscription Mode",
"singleSubscriptionModeDescription": "After enabling, users can only purchase/renew one subscription in the same account",
"saveSuccess": "Subscription mode updated successfully",
"saveFailed": "Failed to update settings"
},
"privacyPolicy": {
"description": "Edit and manage privacy policy content",
"title": "Privacy Policy"
@@ -24,6 +24,7 @@
"createSubscription": "Create Subscription",
"createSuccess": "Created successfully",
"createUser": "Create User",
"currentCommission": "Current Commission",
"delete": "Delete",
"deleted": "Deleted",
"deleteDescription": "This action cannot be undone.",
@@ -31,19 +32,57 @@
"deleteSuccess": "Deleted successfully",
"isDeleted": "Status",
"deviceLimit": "Device Limit",
"deviceGroup": "Device Group",
"deviceNo": "Device No.",
"deviceSearch": "Device",
"download": "Download",
"downloadTraffic": "Download Traffic",
"edit": "Edit",
"editSubscription": "Edit Subscription",
"enable": "Enable",
"enabled": "Enabled",
"disabled": "Disabled",
"expiredAt": "Expired At",
"expireTime": "expireTime",
"familyActions": "Actions",
"familyConfirmDissolve": "Confirm Dissolve",
"familyConfirmRemoveMember": "Confirm Remove Member",
"familyDetail": "Device Group Detail",
"familyDisabled": "Disabled",
"familyDissolve": "Dissolve",
"familyDissolved": "Device group dissolved",
"familyDissolveDescription": "This will dissolve the device group and remove all active members.",
"familyId": "Device Group ID",
"familyInvalidMaxMembers": "Invalid max members",
"familyJoinSource": "Join Source",
"familyJoinSourceOwnerInit": "Owner Init",
"familyJoinedAt": "Joined At",
"familyLeftAt": "Left At",
"familyManagement": "Device Group Management",
"familyMaxMembers": "Max Members",
"familyMaxMembersTooSmall": "Max members cannot be lower than active member count",
"familyMember": "Member",
"familyMemberLeft": "Left",
"familyMemberRemoved": "Removed",
"familyMembers": "Members",
"familyNoData": "No device group data",
"familyNoMembers": "No members",
"familyOwnerUserId": "Owner User ID",
"familyRemoveMemberDescription": "This will remove the member from the active device group.",
"familyStatus": "Status",
"familySummary": "Summary",
"familyUpdateMaxMembers": "Update Max Members",
"firstPurchaseOnly": "First purchase only",
"giftAmount": "Gift Amount",
"giftAmountPlaceholder": "Enter gift amount",
"giftLogs": "Gift Logs",
"globalDefault": "Global Default",
"invalidEmailFormat": "Invalid email format",
"inviteCode": "Invite Code",
"inviteCodePlaceholder": "Enter invite code",
"inviteCount": "Invited Users",
"inviteStats": "Invite Statistics",
"invitedUsers": "Invited Users",
"kickOfflineConfirm": "kickOfflineConfirm",
"kickOfflineSuccess": "Device kicked offline",
"lastSeen": "Last Seen",
@@ -52,17 +91,22 @@
"loginNotifications": "Login Notifications",
"loginStatus": "Login Status",
"manager": "Administrator",
"memberCount": "Member Count",
"more": "More",
"normal": "Normal",
"next": "Next",
"noInvitedUsers": "No invited users yet",
"notifySettingsTitle": "Notify Settings",
"offline": "Offline",
"online": "Online",
"onlineDevices": "Online Devices",
"onlyFirstPurchase": "First Purchase Only",
"orderList": "Order List",
"owner": "Owner",
"password": "Password",
"passwordPlaceholder": "Enter password",
"permanent": "Permanent",
"prev": "Prev",
"pleaseEnterEmail": "Enter email",
"referer": "Referer",
"refererId": "Referer ID",
@@ -71,7 +115,9 @@
"referralPercentage": "Referral Percentage",
"referralPercentagePlaceholder": "Enter percentage",
"referrerUserId": "Referrer User ID",
"registeredAt": "Registered At",
"remove": "Remove",
"removeSuccess": "Removed successfully",
"resetLogs": "Reset Logs",
"resetTraffic": "Reset Traffic",
"toggleStatus": "Toggle Status",
@@ -81,6 +127,7 @@
"resetSubscriptionTrafficDescription": "This will reset the subscription traffic counters.",
"toggleSubscriptionStatus": "Toggle Status",
"toggleSubscriptionStatusDescription": "This will toggle the subscription status.",
"resetSearch": "Reset",
"resetTime": "Reset Time",
"resetToken": "Reset Subscription Address",
"resetTokenDescription": "This will reset the subscription address and regenerate a new token.",
@@ -102,6 +149,12 @@
"statusDeducted": "Deducted",
"statusStopped": "Stopped",
"save": "Save",
"search": "Search",
"searchPlaceholder": "Email / Invite Code / Device ID",
"searchInputPlaceholder": "Enter search term",
"sharedSubscription": "Shared",
"sharedSubscriptionInfo": "This user is a device group member. Showing shared subscriptions from owner (ID: {{ownerId}})",
"sharedSubscriptionList": "Shared Subscription List",
"speedLimit": "Speed Limit",
"startTime": "startTime",
"subscription": "Subscription",
@@ -114,6 +167,7 @@
"telephone": "Phone",
"telephonePlaceholder": "Enter phone number",
"token": "token",
"totalCommission": "Total Commission",
"totalTraffic": "Total Traffic",
"tradeNotifications": "Trade Notifications",
"trafficDetails": "Traffic Details",
@@ -134,5 +188,7 @@
"userList": "User List",
"userName": "Username",
"userProfile": "User Profile",
"verified": "Verified"
"verified": "Verified",
"viewDeviceGroup": "View Device Group",
"viewOwner": "View Owner"
}
@@ -99,6 +99,8 @@
"title": "邮箱设置",
"trafficExceedEmailTemplate": "流量超额邮件模板",
"trafficTemplate": "流量模板",
"deleteAccountEmailTemplate": "注销账户邮件模板",
"deleteAccountTemplate": "注销模版",
"verifyEmailTemplate": "验证邮件模板",
"verifyTemplate": "验证模板",
"whitelistSuffixes": "白名单后缀",
@@ -31,6 +31,7 @@
"System Config": "系统配置",
"Ticket Management": "工单管理",
"Traffic Details": "流量详情",
"Device Group": "设备组",
"User Management": "用户管理",
"Users & Support": "用户与支持"
}
@@ -3,6 +3,7 @@
"common": {
"cancel": "取消",
"save": "保存设置",
"saving": "保存中...",
"saveFailed": "保存失败",
"saveSuccess": "保存成功"
},
@@ -23,6 +24,10 @@
"description": "配置用户邀请和推荐奖励设置",
"forcedInvite": "强制邀请注册",
"forcedInviteDescription": "启用后,用户必须通过邀请链接注册",
"giftDays": "邀请赠送天数",
"giftDaysDescription": "当推荐佣金比例为 0 时,被邀请人完成购买后,邀请人和被邀请人各自获得的订阅延长天数",
"giftDaysPlaceholder": "请输入天数",
"giftDaysSuffix": "天",
"inputPlaceholder": "请输入",
"onlyFirstPurchase": "仅首次购买奖励",
"onlyFirstPurchaseDescription": "启用后,推荐人仅在被推荐用户首次购买时获得奖励",
@@ -42,6 +47,22 @@
"title": "日志清理设置"
},
"logSettings": "日志设置",
"signature": {
"title": "请求签名",
"description": "启用或禁用公共 API 的请求签名验证",
"enable": "启用签名验证",
"enableDescription": "启用后,客户端可以通过发送 X-Signature-Enabled: 1 来触发严格的签名验证",
"saveSuccess": "保存成功",
"saveFailed": "保存失败"
},
"subscribeMode": {
"title": "订阅模式",
"description": "配置单订阅或多订阅购买行为",
"singleSubscriptionMode": "单订阅模式",
"singleSubscriptionModeDescription": "启用后,用户在同一账户中只能购买/续费一个订阅",
"saveSuccess": "订阅模式更新成功",
"saveFailed": "更新设置失败"
},
"privacyPolicy": {
"description": "编辑和管理隐私政策内容",
"title": "隐私政策"
@@ -24,26 +24,66 @@
"createSubscription": "创建订阅",
"createSuccess": "创建成功",
"createUser": "创建用户",
"currentCommission": "当前佣金",
"delete": "删除",
"deleted": "已删除",
"deleteDescription": "此操作无法撤销。",
"deleteSubscriptionDescription": "此操作无法撤销。",
"deleteSuccess": "删除成功",
"isDeleted": "状态",
"deviceGroup": "设备组",
"deviceLimit": "IP限制",
"deviceNo": "设备编号",
"deviceSearch": "设备",
"download": "下载",
"downloadTraffic": "下载流量",
"edit": "编辑",
"email": "邮箱",
"editSubscription": "编辑订阅",
"enable": "启用",
"enabled": "启用",
"disabled": "禁用",
"expiredAt": "过期时间",
"expireTime": "过期时间",
"familyActions": "操作",
"familyConfirmDissolve": "确认注销账号",
"familyConfirmRemoveMember": "确认移除成员",
"familyDetail": "设备组详情",
"familyDisabled": "已禁用",
"familyDissolve": "注销账号",
"familyDissolved": "设备组已解散",
"familyDissolveDescription": "此操作将注销账号并移除所有活跃成员。",
"familyId": "设备组 ID",
"familyInvalidMaxMembers": "最大成员数无效",
"familyJoinSource": "加入方式",
"familyJoinSourceOwnerInit": "创建者初始化",
"familyJoinedAt": "加入时间",
"familyLeftAt": "离开时间",
"familyManagement": "设备组管理",
"familyMaxMembers": "最大成员数",
"familyMaxMembersTooSmall": "最大成员数不能小于当前活跃成员数",
"familyMember": "成员",
"familyMemberLeft": "已离开",
"familyMemberRemoved": "已移除",
"familyMembers": "设备组成员",
"familyNoData": "暂无设备组数据",
"familyNoMembers": "暂无成员",
"familyOwnerUserId": "所有者用户 ID",
"familyRemoveMemberDescription": "此操作将从活跃设备组中移除该成员。",
"familyStatus": "设备组状态",
"familySummary": "设备组概览",
"familyUpdateMaxMembers": "更新最大成员数",
"firstPurchaseOnly": "仅首次购买",
"giftAmount": "赠送金额",
"giftAmountPlaceholder": "输入赠送金额",
"giftLogs": "赠送日志",
"globalDefault": "全局默认",
"invalidEmailFormat": "邮箱格式无效",
"inviteCode": "邀请码",
"inviteCodePlaceholder": "输入邀请码",
"inviteCount": "邀请用户数",
"inviteStats": "邀请统计",
"invitedUsers": "已邀请用户",
"kickOfflineConfirm": "确认踢下线",
"kickOfflineSuccess": "设备已踢下线",
"lastSeen": "最后上线",
@@ -52,17 +92,22 @@
"loginNotifications": "登录通知",
"loginStatus": "登录状态",
"manager": "管理员",
"memberCount": "成员数量",
"more": "更多",
"normal": "正常",
"next": "下一页",
"noInvitedUsers": "暂无邀请用户",
"notifySettingsTitle": "通知设置",
"offline": "离线",
"online": "在线",
"onlineDevices": "在线设备",
"onlyFirstPurchase": "仅首次购买",
"orderList": "订单列表",
"owner": "所有者",
"password": "密码",
"passwordPlaceholder": "输入密码",
"permanent": "永久",
"prev": "上一页",
"pleaseEnterEmail": "输入邮箱",
"referer": "推荐人",
"refererId": "推荐人 ID",
@@ -71,7 +116,9 @@
"referralPercentage": "推荐百分比",
"referralPercentagePlaceholder": "输入百分比",
"referrerUserId": "推荐人用户 ID",
"registeredAt": "注册时间",
"remove": "移除",
"removeSuccess": "移除成功",
"resetLogs": "重置日志",
"resetTraffic": "重置流量",
"toggleStatus": "切换状态",
@@ -81,6 +128,7 @@
"resetSubscriptionTrafficDescription": "将重置该订阅的流量统计。",
"toggleSubscriptionStatus": "切换状态",
"toggleSubscriptionStatusDescription": "将切换该订阅的启用/停用状态。",
"resetSearch": "重置",
"resetTime": "重置时间",
"resetToken": "重置订阅地址",
"resetTokenDescription": "这将重置订阅地址并重新生成新的令牌。",
@@ -102,6 +150,12 @@
"statusDeducted": "已扣除",
"statusStopped": "已停止",
"save": "保存",
"search": "搜索",
"searchPlaceholder": "邮箱 / 邀请码 / 设备ID",
"searchInputPlaceholder": "请输入搜索内容",
"sharedSubscription": "共享",
"sharedSubscriptionInfo": "该用户为设备组成员,当前显示所有者 (ID: {{ownerId}}) 的共享订阅",
"sharedSubscriptionList": "共享订阅列表",
"speedLimit": "速度限制",
"startTime": "开始时间",
"subscription": "订阅",
@@ -114,6 +168,7 @@
"telephone": "电话",
"telephonePlaceholder": "输入电话号码",
"token": "令牌",
"totalCommission": "总佣金",
"totalTraffic": "总流量",
"tradeNotifications": "交易通知",
"trafficDetails": "流量详情",
@@ -134,5 +189,7 @@
"userList": "用户列表",
"userName": "用户名",
"userProfile": "用户资料",
"verified": "已验证"
"verified": "已验证",
"viewDeviceGroup": "查看设备组",
"viewOwner": "查看所有者"
}