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
+14 -3
View File
@@ -322,6 +322,12 @@ type TaskListResult struct {
// `[必须]` 底部统计要跟随当前筛选,所以 Counts 和 Rows 用的是**同一个**
// filter,见 #19。
func ListTasksView(db *sql.DB, filter repository.TaskFilter, requestedPage int) (*TaskListResult, error) {
return ListTasksViewWithPageSize(db, filter, requestedPage, DefaultPageSize)
}
// ListTasksViewWithPageSize 按白名单页容量返回任务列表。
func ListTasksViewWithPageSize(db *sql.DB, filter repository.TaskFilter, requestedPage, pageSize int) (*TaskListResult, error) {
pageSize = NormalizePageSize(pageSize)
counts, err := repository.CountTasksByStatus(db, filter)
if err != nil {
return nil, err
@@ -330,9 +336,9 @@ func ListTasksView(db *sql.DB, filter repository.TaskFilter, requestedPage int)
for _, n := range counts {
total += n
}
totalPages := TotalPages(total)
totalPages := TotalPages(total, pageSize)
page := ClampPage(requestedPage, totalPages)
rows, err := repository.ListTasks(db, filter, PageSize, (page-1)*PageSize)
rows, err := repository.ListTasks(db, filter, pageSize, (page-1)*pageSize)
if err != nil {
return nil, err
}
@@ -371,6 +377,11 @@ func taskCreatorText(username string) string {
// ListTasksViewForUser 在服务端固定当前账号范围,忽略采购员伪造的创建人筛选。
func ListTasksViewForUser(db *sql.DB, actor *model.User, filter repository.TaskFilter, creatorValue string, requestedPage int) (*TaskListResult, error) {
return ListTasksViewForUserWithPageSize(db, actor, filter, creatorValue, requestedPage, DefaultPageSize)
}
// ListTasksViewForUserWithPageSize 固定账号可见范围后按白名单页容量返回任务。
func ListTasksViewForUserWithPageSize(db *sql.DB, actor *model.User, filter repository.TaskFilter, creatorValue string, requestedPage, pageSize int) (*TaskListResult, error) {
visibleUserID, err := visibleClientUserID(actor)
if err != nil {
return nil, err
@@ -386,7 +397,7 @@ func ListTasksViewForUser(db *sql.DB, actor *model.User, filter repository.TaskF
filter.CreatorUserID = creatorValue
}
}
return ListTasksView(db, filter, requestedPage)
return ListTasksViewWithPageSize(db, filter, requestedPage, pageSize)
}
// StatusLine 拼底部状态条,形如: