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
+11 -6
View File
@@ -48,10 +48,11 @@ func (h *Handler) ShopeeDetail(c *gin.Context) {
c.HTML(http.StatusOK, "shopee/detail_modal", gin.H{
"D": detail, "CSRFToken": csrfToken(c),
"Keyword": c.Query("q"), "SearchField": service.ParseShopeeSearchField(c.Query("search_field")),
"StatusFilter": service.ParseShopeeStatus(c.Query("status")),
"DeletedFilter": currentUser(c).IsAdmin() && c.Query("deleted") == "1",
"UnlinkedFilter": c.Query("unlinked") == "1",
"CurrentPage": service.ParsePage(c.Query("page")),
"StatusFilter": service.ParseShopeeStatus(c.Query("status")),
"DeletedFilter": currentUser(c).IsAdmin() && c.Query("deleted") == "1",
"UnlinkedFilter": c.Query("unlinked") == "1",
"CurrentPage": service.ParsePage(c.Query("page")),
"CurrentPageSize": service.ParsePageSize(c.Query("page_size")),
})
}
@@ -72,8 +73,9 @@ func (h *Handler) renderShopeeList(c *gin.Context, keyword, searchFieldRaw, stat
// 不叫 page:本文件末尾要调用同名的 page(c, ...) 渲染辅助函数,
// 局部变量会把它遮住导致编译失败。
pageNum := service.ParsePage(pageRaw)
pageSize := service.ParsePageSize(c.Query("page_size"))
result, err := service.ListShopeeProducts(h.db, filter, pageNum)
result, err := service.ListShopeeProductsWithPageSize(h.db, filter, pageNum, pageSize)
if err != nil {
fail(c, http.StatusInternalServerError,
"读取蝦皮数据失败,数据没有被改动。刷新页面重试;一直失败请把这句话报给维护者。")
@@ -104,6 +106,7 @@ func (h *Handler) renderShopeeList(c *gin.Context, keyword, searchFieldRaw, stat
if filter.Unlinked {
values.Set("unlinked", "1")
}
values.Set("page_size", strconv.Itoa(pageSize))
c.HTML(http.StatusOK, "shopee/list", page(c, "shopee", "蝦皮数据", gin.H{
"Keyword": filter.Keyword,
@@ -117,8 +120,9 @@ func (h *Handler) renderShopeeList(c *gin.Context, keyword, searchFieldRaw, stat
"Status": status,
"HasAnyProducts": result.HasAnyProducts,
"IsFiltered": result.IsFiltered,
"Pagination": service.NewPaginationView(result.Page, result.TotalPages, values.Encode()),
"Pagination": service.NewPaginationView(result.Page, pageSize, result.TotalPages, values.Encode()),
"CurrentPage": result.Page,
"CurrentPageSize": pageSize,
"DetailURL": "/shopee/detail?" + detailValuesForShopee(values, result.Page),
"AutoOpenDetailID": strings.TrimSpace(c.Query("open_id")),
"AssignableClients": assignableClients,
@@ -264,6 +268,7 @@ func (h *Handler) shopeeRedirect(c *gin.Context, msg string) {
if value := strings.TrimSpace(c.PostForm("page")); value != "" {
params.Set("page", value)
}
params.Set("page_size", strconv.Itoa(service.ParsePageSize(c.PostForm("page_size"))))
if value := strings.TrimSpace(c.PostForm("open_id")); value != "" {
params.Set("open_id", value)
}