feat: Device Bind Limit

This commit is contained in:
EUForest 2026-01-06 21:03:31 +08:00
parent e3c0dc2569
commit 45b9b523b1
7 changed files with 37 additions and 0 deletions

View File

@ -28,6 +28,7 @@
"20005": "Insufficient balance, please recharge and try again.",
"20006": "The registration function is temporarily unavailable, please try again later.",
"20008": "User information is incorrect, please check and try again.",
"20011": "Registration is too frequent, please try again later.",
"30001": "The node already exists, please do not add it again.",
"30002": "Related node not found, please check and try again.",
"30003": "Group already exists, please try using a different name.",

View File

@ -49,6 +49,8 @@
"register": {
"day": "Day(s)",
"description": "Configure user registration related settings",
"deviceLimit": "Device Limit",
"deviceLimitDescription": "Maximum number of devices allowed per user",
"enableTrial": "Enable Trial",
"enableTrialDescription": "When enabled, new users will receive a trial subscription upon registration",
"hour": "Hour(s)",

View File

@ -28,6 +28,7 @@
"20005": "余额不足,请充值后再试。",
"20006": "注册功能暂时不可用,请稍后再试。",
"20008": "用户信息不正确,请检查后重试。",
"20011": "注册过于频繁,请稍后再试。",
"30001": "该节点已存在,请勿重复添加。",
"30002": "找不到相关节点,请检查后重试。",
"30003": "分组已存在,请尝试使用不同的名称。",

View File

@ -61,6 +61,11 @@ export function useNavs() {
url: "/dashboard/coupon",
icon: "flat-color-icons:bookmark",
},
{
title: t("Redemption Management", "Redemption Management"),
url: "/dashboard/redemption",
icon: "flat-color-icons:key",
},
{
title: t("Marketing Management", "Marketing Management"),
url: "/dashboard/marketing",

View File

@ -25,6 +25,9 @@ const DashboardSystemIndexLazyRouteImport =
const DashboardSubscribeIndexLazyRouteImport = createFileRoute(
'/dashboard/subscribe/',
)()
const DashboardRedemptionIndexLazyRouteImport = createFileRoute(
'/dashboard/redemption/',
)()
const DashboardProductIndexLazyRouteImport = createFileRoute(
'/dashboard/product/',
)()
@ -147,6 +150,14 @@ const DashboardSubscribeIndexLazyRoute =
} as any).lazy(() =>
import('./routes/dashboard/subscribe/index.lazy').then((d) => d.Route),
)
const DashboardRedemptionIndexLazyRoute =
DashboardRedemptionIndexLazyRouteImport.update({
id: '/redemption/',
path: '/redemption/',
getParentRoute: () => DashboardRouteLazyRoute,
} as any).lazy(() =>
import('./routes/dashboard/redemption/index.lazy').then((d) => d.Route),
)
const DashboardProductIndexLazyRoute =
DashboardProductIndexLazyRouteImport.update({
id: '/product/',
@ -338,6 +349,7 @@ export interface FileRoutesByFullPath {
'/dashboard/order': typeof DashboardOrderIndexLazyRoute
'/dashboard/payment': typeof DashboardPaymentIndexLazyRoute
'/dashboard/product': typeof DashboardProductIndexLazyRoute
'/dashboard/redemption': typeof DashboardRedemptionIndexLazyRoute
'/dashboard/subscribe': typeof DashboardSubscribeIndexLazyRoute
'/dashboard/system': typeof DashboardSystemIndexLazyRoute
'/dashboard/ticket': typeof DashboardTicketIndexLazyRoute
@ -369,6 +381,7 @@ export interface FileRoutesByTo {
'/dashboard/order': typeof DashboardOrderIndexLazyRoute
'/dashboard/payment': typeof DashboardPaymentIndexLazyRoute
'/dashboard/product': typeof DashboardProductIndexLazyRoute
'/dashboard/redemption': typeof DashboardRedemptionIndexLazyRoute
'/dashboard/subscribe': typeof DashboardSubscribeIndexLazyRoute
'/dashboard/system': typeof DashboardSystemIndexLazyRoute
'/dashboard/ticket': typeof DashboardTicketIndexLazyRoute
@ -402,6 +415,7 @@ export interface FileRoutesById {
'/dashboard/order/': typeof DashboardOrderIndexLazyRoute
'/dashboard/payment/': typeof DashboardPaymentIndexLazyRoute
'/dashboard/product/': typeof DashboardProductIndexLazyRoute
'/dashboard/redemption/': typeof DashboardRedemptionIndexLazyRoute
'/dashboard/subscribe/': typeof DashboardSubscribeIndexLazyRoute
'/dashboard/system/': typeof DashboardSystemIndexLazyRoute
'/dashboard/ticket/': typeof DashboardTicketIndexLazyRoute
@ -436,6 +450,7 @@ export interface FileRouteTypes {
| '/dashboard/order'
| '/dashboard/payment'
| '/dashboard/product'
| '/dashboard/redemption'
| '/dashboard/subscribe'
| '/dashboard/system'
| '/dashboard/ticket'
@ -467,6 +482,7 @@ export interface FileRouteTypes {
| '/dashboard/order'
| '/dashboard/payment'
| '/dashboard/product'
| '/dashboard/redemption'
| '/dashboard/subscribe'
| '/dashboard/system'
| '/dashboard/ticket'
@ -499,6 +515,7 @@ export interface FileRouteTypes {
| '/dashboard/order/'
| '/dashboard/payment/'
| '/dashboard/product/'
| '/dashboard/redemption/'
| '/dashboard/subscribe/'
| '/dashboard/system/'
| '/dashboard/ticket/'
@ -575,6 +592,13 @@ declare module '@tanstack/react-router' {
preLoaderRoute: typeof DashboardSubscribeIndexLazyRouteImport
parentRoute: typeof DashboardRouteLazyRoute
}
'/dashboard/redemption/': {
id: '/dashboard/redemption/'
path: '/redemption'
fullPath: '/dashboard/redemption'
preLoaderRoute: typeof DashboardRedemptionIndexLazyRouteImport
parentRoute: typeof DashboardRouteLazyRoute
}
'/dashboard/product/': {
id: '/dashboard/product/'
path: '/product'
@ -750,6 +774,7 @@ interface DashboardRouteLazyRouteChildren {
DashboardOrderIndexLazyRoute: typeof DashboardOrderIndexLazyRoute
DashboardPaymentIndexLazyRoute: typeof DashboardPaymentIndexLazyRoute
DashboardProductIndexLazyRoute: typeof DashboardProductIndexLazyRoute
DashboardRedemptionIndexLazyRoute: typeof DashboardRedemptionIndexLazyRoute
DashboardSubscribeIndexLazyRoute: typeof DashboardSubscribeIndexLazyRoute
DashboardSystemIndexLazyRoute: typeof DashboardSystemIndexLazyRoute
DashboardTicketIndexLazyRoute: typeof DashboardTicketIndexLazyRoute
@ -781,6 +806,7 @@ const DashboardRouteLazyRouteChildren: DashboardRouteLazyRouteChildren = {
DashboardOrderIndexLazyRoute: DashboardOrderIndexLazyRoute,
DashboardPaymentIndexLazyRoute: DashboardPaymentIndexLazyRoute,
DashboardProductIndexLazyRoute: DashboardProductIndexLazyRoute,
DashboardRedemptionIndexLazyRoute: DashboardRedemptionIndexLazyRoute,
DashboardSubscribeIndexLazyRoute: DashboardSubscribeIndexLazyRoute,
DashboardSystemIndexLazyRoute: DashboardSystemIndexLazyRoute,
DashboardTicketIndexLazyRoute: DashboardTicketIndexLazyRoute,

View File

@ -28,6 +28,7 @@
"20005": "Insufficient balance, please recharge and try again.",
"20006": "The registration function is temporarily unavailable, please try again later.",
"20008": "User information is incorrect, please check and try again.",
"20011": "Registration is too frequent, please try again later.",
"30001": "The node already exists, please do not add it again.",
"30002": "Related node not found, please check and try again.",
"30003": "Group already exists, please try using a different name.",

View File

@ -28,6 +28,7 @@
"20005": "余额不足,请充值后再试。",
"20006": "注册功能暂时不可用,请稍后再试。",
"20008": "用户信息不正确,请检查后重试。",
"20011": "注册过于频繁,请稍后再试。",
"30001": "该节点已存在,请勿重复添加。",
"30002": "找不到相关节点,请检查后重试。",
"30003": "分组已存在,请尝试使用不同的名称。",