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
+18 -14
View File
@@ -28,7 +28,9 @@ func (h *Handler) InnerCodeList(c *gin.Context) {
}
status := strings.TrimSpace(c.Query("status"))
keyword := strings.TrimSpace(c.Query("q"))
result, err := service.ListInnerCodePage(h.db, businessDate, status, keyword, service.ParsePage(c.Query("page")))
pageSize := service.ParsePageSize(c.Query("page_size"))
result, err := service.ListInnerCodePageWithPageSize(h.db, businessDate, status, keyword,
service.ParsePage(c.Query("page")), pageSize)
if err != nil {
fail(c, http.StatusInternalServerError, "读取档口入库码列表失败,请稍后刷新重试。")
return
@@ -41,17 +43,18 @@ func (h *Handler) InnerCodeList(c *gin.Context) {
query.Set("q", keyword)
}
c.HTML(http.StatusOK, "inner_code/list", page(c, "inner-codes", "档口入库码", gin.H{
"BusinessDate": businessDate,
"StatusFilter": result.Status,
"Keyword": keyword,
"StatusOptions": service.InnerCodeStatusOptions(),
"Rows": result.Rows,
"HasAny": result.Counts.Total > 0,
"IsFiltered": result.IsFiltered,
"CurrentPage": result.Page,
"Message": strings.TrimSpace(c.Query("message")),
"Status": service.InnerCodeStatusMessage(result),
"Pagination": service.NewPaginationView(result.Page, result.TotalPages, query.Encode()),
"BusinessDate": businessDate,
"StatusFilter": result.Status,
"Keyword": keyword,
"StatusOptions": service.InnerCodeStatusOptions(),
"Rows": result.Rows,
"HasAny": result.Counts.Total > 0,
"IsFiltered": result.IsFiltered,
"CurrentPage": result.Page,
"CurrentPageSize": pageSize,
"Message": strings.TrimSpace(c.Query("message")),
"Status": service.InnerCodeStatusMessage(result),
"Pagination": service.NewPaginationView(result.Page, pageSize, result.TotalPages, query.Encode()),
}))
}
@@ -141,8 +144,8 @@ func (h *Handler) InnerCodeMatch(c *gin.Context) {
h.innerCodeRedirect(c, businessDate, status, keyword, pageNumber, "请先勾选要匹配的记录。")
return
}
if len(ids) > service.PageSize {
h.innerCodeRedirect(c, businessDate, status, keyword, pageNumber, "一次最多匹配当前页 20 条记录,请刷新后重新勾选。")
if len(ids) > service.InnerCodeRemoteBatchLimit {
h.innerCodeRedirect(c, businessDate, status, keyword, pageNumber, "一次最多匹配 20 条记录,请减少勾选后重试。")
return
}
cfg, err := config.Load()
@@ -272,6 +275,7 @@ func (h *Handler) innerCodeSybClient() (*syb.Client, string) {
func (h *Handler) innerCodeRedirect(c *gin.Context, businessDate, status, keyword string, pageNumber int, message string) {
values := url.Values{"date": {businessDate}, "page": {strconv.Itoa(pageNumber)}, "message": {message}}
values.Set("page_size", strconv.Itoa(service.ParsePageSize(c.PostForm("page_size"))))
if strings.TrimSpace(status) != "" {
values.Set("status", strings.TrimSpace(status))
}