feat: 支持主列表选择每页条数 (#242)

This commit is contained in:
chengma
2026-08-15 15:15:38 +08:00
parent 8c09023434
commit b4558537d5
37 changed files with 479 additions and 160 deletions
+7 -4
View File
@@ -36,11 +36,12 @@ func (h *Handler) UserList(c *gin.Context) {
func (h *Handler) renderUserList(c *gin.Context, httpStatus int, message, errorMessage string, needCreate bool, createUsername string) {
keyword := strings.TrimSpace(userListValue(c, "q"))
listStatus := userListValue(c, "status")
pageSize := service.ParsePageSize(userListValue(c, "page_size"))
if c.Request.Method == http.MethodPost {
listStatus = c.PostForm("list_status")
}
result, err := service.ListUsers(h.db, currentUser(c), keyword,
model.UserStatus(listStatus), service.ParsePage(userListValue(c, "page")))
result, err := service.ListUsersWithPageSize(h.db, currentUser(c), keyword,
model.UserStatus(listStatus), service.ParsePage(userListValue(c, "page")), pageSize)
if err != nil {
fail(c, http.StatusInternalServerError, "读取用户列表失败,账号数据没有被改动。刷新后重试。")
return
@@ -55,10 +56,11 @@ func (h *Handler) renderUserList(c *gin.Context, httpStatus int, message, errorM
status := fmt.Sprintf("共 %d 个用户 · 第 %d/%d 页", result.Total, result.Page, result.TotalPages)
c.HTML(httpStatus, "user/list", page(c, "users", "用户管理", gin.H{
"Rows": result.Rows, "Keyword": result.Keyword, "Status": status,
"Pagination": service.NewPaginationView(result.Page, result.TotalPages, values.Encode()),
"Pagination": service.NewPaginationView(result.Page, pageSize, result.TotalPages, values.Encode()),
"StatusFilter": result.Status, "Message": message, "Error": errorMessage,
"NeedCreate": needCreate, "CreateUsername": createUsername,
"CurrentPage": result.Page,
"CurrentPage": result.Page,
"CurrentPageSize": pageSize,
}))
}
@@ -135,6 +137,7 @@ func redirectUsers(c *gin.Context, message, errorMessage string) {
if page := c.PostForm("page"); page != "" {
query.Set("page", page)
}
query.Set("page_size", fmt.Sprintf("%d", service.ParsePageSize(c.PostForm("page_size"))))
if message != "" {
query.Set("msg", message)
}