feat: 用户订阅流量限速规则编辑器与列表信息增强

- 订阅表单新增卡片式流量限速规则编辑器(TrafficLimitRuleEditor),替换 ArrayInput
- 用户列表与订阅详情展示会员状态(member_status)、最近登录时间(last_login_time)
- ProTable 支持列级 meta.className 自定义样式
- 仪表盘统计与促销规则表单配套调整,用户文案双语同步
This commit is contained in:
2026-07-09 13:34:03 -07:00
parent 511ce4ff65
commit dfe1bafd1c
11 changed files with 367 additions and 158 deletions
@@ -313,7 +313,8 @@ export function ProTable<
<TableHead
className={cn(
"!z-auto",
getTableHeaderClass(header.column.id)
getTableHeaderClass(header.column.id),
getColumnClassName(header)
)}
key={header.id}
>
@@ -362,7 +363,10 @@ export function ProTable<
.filter((cell) => cell.column.id !== "sortable")
.map((cell) => (
<TableCell
className={getTableCellClass(cell.column.id)}
className={cn(
getTableCellClass(cell.column.id),
getColumnClassName(cell)
)}
key={cell.id}
>
{flexRender(
@@ -381,7 +385,10 @@ export function ProTable<
>
{row.getVisibleCells().map((cell) => (
<TableCell
className={getTableCellClass(cell.column.id)}
className={cn(
getTableCellClass(cell.column.id),
getColumnClassName(cell)
)}
key={cell.id}
>
{flexRender(
@@ -476,3 +483,17 @@ function getTableCellClass(columnId: string) {
}
return "truncate";
}
function getColumnClassName(
columnLike: {
column: {
columnDef: {
meta?: {
className?: string;
};
};
};
}
) {
return columnLike.column.columnDef.meta?.className || "";
}
+3
View File
@@ -2598,6 +2598,9 @@ declare namespace API {
user_devices: UserDevice[];
remark: string;
rules: string[];
/** 当前有效订阅的套餐名(由后端计算),无有效订阅时为空 */
member_status?: string;
last_login_time?: number;
created_at: number;
updated_at: number;
deleted_at?: number;
-1
View File
@@ -1,4 +1,3 @@
// @ts-expect-error
/* eslint-disable */
import request from "@workspace/ui/lib/request";