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
+12 -3
View File
@@ -28,8 +28,13 @@ func (h *Handler) PddList(c *gin.Context) {
func (h *Handler) renderPddList(c *gin.Context, keyword, statusRaw, pageRaw, message string, importResult *service.PddImportResult) {
status := service.ParseCollectStatus(statusRaw)
pageNum := service.ParsePage(pageRaw)
pageSizeRaw := c.Query("page_size")
if pageSizeRaw == "" && c.Request.Method == http.MethodPost {
pageSizeRaw = c.PostForm("page_size")
}
pageSize := service.ParsePageSize(pageSizeRaw)
result, err := service.ListPddProducts(h.db, keyword, status, pageNum)
result, err := service.ListPddProductsWithPageSize(h.db, keyword, status, pageNum, pageSize)
if err != nil {
fail(c, http.StatusInternalServerError,
"读取 PDD 商品列表失败,数据没有被改动。刷新页面重试;一直失败请把这句话报给维护者。")
@@ -59,6 +64,7 @@ func (h *Handler) renderPddList(c *gin.Context, keyword, statusRaw, pageRaw, mes
if status != "" {
values.Set("status", string(status))
}
values.Set("page_size", strconv.Itoa(pageSize))
detailValues := url.Values{}
for key, entries := range values {
detailValues[key] = append([]string(nil), entries...)
@@ -73,7 +79,8 @@ func (h *Handler) renderPddList(c *gin.Context, keyword, statusRaw, pageRaw, mes
"HasAnyProducts": result.Total > 0,
"IsFiltered": result.IsFiltered,
"CurrentPage": result.Page,
"Pagination": service.NewPaginationView(result.Page, result.TotalPages, values.Encode()),
"Pagination": service.NewPaginationView(result.Page, pageSize, result.TotalPages, values.Encode()),
"CurrentPageSize": pageSize,
"DetailURL": "/pdd/detail?" + detailValues.Encode(),
"AssignableClients": assignableClients,
"ImportResult": importResult,
@@ -112,7 +119,8 @@ func (h *Handler) PddDetail(c *gin.Context) {
"CSRFToken": csrfToken(c),
"AssignableClients": assignableClients,
"Keyword": c.Query("q"), "StatusFilter": c.Query("status"),
"CurrentPage": service.ParsePage(c.Query("page")),
"CurrentPage": service.ParsePage(c.Query("page")),
"CurrentPageSize": service.ParsePageSize(c.Query("page_size")),
})
}
@@ -291,6 +299,7 @@ func (h *Handler) pddRedirect(c *gin.Context, msg string) {
if p := c.PostForm("page"); p != "" {
params.Set("page", p)
}
params.Set("page_size", strconv.Itoa(service.ParsePageSize(c.PostForm("page_size"))))
if msg != "" {
params.Set("msg", msg)
}