超管后台 - 流量池分页跳转

This commit is contained in:
柳清爽
2025-04-12 16:27:28 +08:00
parent 9257716d9b
commit 192701e41e
4 changed files with 60 additions and 75 deletions

View File

@@ -10,28 +10,7 @@ class AdministratorPermissions extends Model
{
// 设置数据表名
protected $name = 'administrator_permissions';
// 设置主键
protected $pk = 'id';
// 自动写入时间戳
protected $autoWriteTimestamp = true;
// 定义时间戳字段名
protected $createTime = 'createTime';
protected $updateTime = 'updateTime';
protected $deleteTime = 'deleteTime';
// 定义字段类型
protected $type = [
'id' => 'integer',
'adminId' => 'integer',
'permissions' => 'json',
'createTime' => 'integer',
'updateTime' => 'integer',
'deleteTime' => 'integer'
];
/**
* 保存管理员权限
* @param int $adminId 管理员ID

View File

@@ -10,26 +10,4 @@ class Company extends Model
{
// 设置数据表名
protected $name = 'company';
// 设置主键
protected $pk = 'id';
// 设置时间格式为datetime类型
protected $autoWriteTimestamp = 'datetime';
// 定义时间戳字段名
protected $createTime = 'createTime';
protected $updateTime = 'lastUpdateTime';
// 定义字段类型
protected $type = [
'id' => 'integer',
'tenantId' => 'integer',
'isTop' => 'integer',
'level' => 'integer',
'parentId' => 'integer',
'privileges' => 'json',
'createTime' => 'datetime',
'lastUpdateTime' => 'datetime'
];
}

View File

@@ -10,33 +10,4 @@ class WechatFriend extends Model
{
// 设置数据表名
protected $name = 'wechat_friend';
// 不使用自增主键
protected $pk = null;
// 指定自动时间字段的格式
protected $autoWriteTimestamp = 'datetime';
// 定义时间戳字段名
protected $createTime = 'createTime';
protected $updateTime = 'updateTime';
// 定义字段类型
protected $type = [
'id' => 'integer',
'wechatAccountId' => 'integer',
'gender' => 'integer',
'addFrom' => 'integer',
'isDeleted' => 'integer',
'isPassed' => 'integer',
'accountId' => 'integer',
'groupId' => 'integer',
'updateTime' => 'integer',
'labels' => 'json',
'extendFields' => 'json',
'thirdParty' => 'json',
'deleteTime' => 'datetime',
'passTime' => 'datetime',
'createTime' => 'datetime'
];
}

View File

@@ -124,6 +124,7 @@ export default function CustomersPage() {
const [totalPages, setTotalPages] = useState(1)
const [totalItems, setTotalItems] = useState(0)
const [pageSize, setPageSize] = useState(10)
const [jumpToPage, setJumpToPage] = useState("")
// 获取客户列表数据
useEffect(() => {
@@ -158,6 +159,22 @@ export default function CustomersPage() {
}
};
// 处理页码跳转
const handleJumpToPage = () => {
const page = parseInt(jumpToPage);
if (!isNaN(page) && page >= 1 && page <= totalPages) {
setCurrentPage(page);
setJumpToPage("");
}
};
// 处理每页显示条数变化
const handlePageSizeChange = (size: string) => {
const newSize = parseInt(size);
setPageSize(newSize);
setCurrentPage(1); // 重置为第一页
};
// Filter customers based on search and filters (兼容示例数据)
const filteredCustomers = customersData.filter((customer) => {
const matchesSearch =
@@ -365,8 +382,25 @@ export default function CustomersPage() {
{/* 分页控件 */}
{!isLoading && !error && customers.length > 0 && (
<div className="flex items-center justify-between px-2">
<div className="text-sm text-muted-foreground">
{totalItems} {currentPage}/{totalPages}
<div className="flex items-center space-x-4">
<div className="text-sm text-muted-foreground">
{totalItems} {currentPage}/{totalPages}
</div>
<div className="flex items-center space-x-2">
<span className="text-sm">:</span>
<Select value={pageSize.toString()} onValueChange={handlePageSizeChange}>
<SelectTrigger className="h-8 w-[70px]">
<SelectValue placeholder={pageSize} />
</SelectTrigger>
<SelectContent>
<SelectItem value="10">10</SelectItem>
<SelectItem value="30">30</SelectItem>
<SelectItem value="50">50</SelectItem>
<SelectItem value="100">100</SelectItem>
</SelectContent>
</Select>
<span className="text-sm"></span>
</div>
</div>
<div className="flex items-center space-x-2">
<Button
@@ -419,6 +453,29 @@ export default function CustomersPage() {
>
<ChevronRight className="h-4 w-4" />
</Button>
{/* 页码跳转 */}
<div className="flex items-center space-x-2 ml-2">
<span className="text-sm"></span>
<Input
type="number"
value={jumpToPage}
onChange={(e) => setJumpToPage(e.target.value)}
onKeyDown={(e) => e.key === "Enter" && handleJumpToPage()}
className="h-8 w-16 text-center"
min={1}
max={totalPages}
/>
<span className="text-sm"></span>
<Button
size="sm"
variant="outline"
onClick={handleJumpToPage}
disabled={!jumpToPage || isNaN(parseInt(jumpToPage)) || parseInt(jumpToPage) < 1 || parseInt(jumpToPage) > totalPages}
>
</Button>
</div>
</div>
</div>
)}