超管后台 - 流量池分页跳转
This commit is contained in:
@@ -11,27 +11,6 @@ class AdministratorPermissions extends Model
|
|||||||
// 设置数据表名
|
// 设置数据表名
|
||||||
protected $name = 'administrator_permissions';
|
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
|
* @param int $adminId 管理员ID
|
||||||
|
|||||||
@@ -10,26 +10,4 @@ class Company extends Model
|
|||||||
{
|
{
|
||||||
// 设置数据表名
|
// 设置数据表名
|
||||||
protected $name = 'company';
|
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'
|
|
||||||
];
|
|
||||||
}
|
}
|
||||||
@@ -10,33 +10,4 @@ class WechatFriend extends Model
|
|||||||
{
|
{
|
||||||
// 设置数据表名
|
// 设置数据表名
|
||||||
protected $name = 'wechat_friend';
|
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'
|
|
||||||
];
|
|
||||||
}
|
}
|
||||||
@@ -124,6 +124,7 @@ export default function CustomersPage() {
|
|||||||
const [totalPages, setTotalPages] = useState(1)
|
const [totalPages, setTotalPages] = useState(1)
|
||||||
const [totalItems, setTotalItems] = useState(0)
|
const [totalItems, setTotalItems] = useState(0)
|
||||||
const [pageSize, setPageSize] = useState(10)
|
const [pageSize, setPageSize] = useState(10)
|
||||||
|
const [jumpToPage, setJumpToPage] = useState("")
|
||||||
|
|
||||||
// 获取客户列表数据
|
// 获取客户列表数据
|
||||||
useEffect(() => {
|
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 (兼容示例数据)
|
// Filter customers based on search and filters (兼容示例数据)
|
||||||
const filteredCustomers = customersData.filter((customer) => {
|
const filteredCustomers = customersData.filter((customer) => {
|
||||||
const matchesSearch =
|
const matchesSearch =
|
||||||
@@ -365,9 +382,26 @@ export default function CustomersPage() {
|
|||||||
{/* 分页控件 */}
|
{/* 分页控件 */}
|
||||||
{!isLoading && !error && customers.length > 0 && (
|
{!isLoading && !error && customers.length > 0 && (
|
||||||
<div className="flex items-center justify-between px-2">
|
<div className="flex items-center justify-between px-2">
|
||||||
|
<div className="flex items-center space-x-4">
|
||||||
<div className="text-sm text-muted-foreground">
|
<div className="text-sm text-muted-foreground">
|
||||||
共 {totalItems} 条记录,当前第 {currentPage}/{totalPages} 页
|
共 {totalItems} 条记录,当前第 {currentPage}/{totalPages} 页
|
||||||
</div>
|
</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">
|
<div className="flex items-center space-x-2">
|
||||||
<Button
|
<Button
|
||||||
variant="outline"
|
variant="outline"
|
||||||
@@ -419,6 +453,29 @@ export default function CustomersPage() {
|
|||||||
>
|
>
|
||||||
<ChevronRight className="h-4 w-4" />
|
<ChevronRight className="h-4 w-4" />
|
||||||
</Button>
|
</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>
|
||||||
</div>
|
</div>
|
||||||
)}
|
)}
|
||||||
|
|||||||
Reference in New Issue
Block a user