优化分页和筛选功能:实现服务端分页和筛选,修复总数不匹配问题

- 优化设备管理、版本管理、用户管理、在线实例、公告管理页面的分页功能
- 后端添加筛选参数支持(application_id, status, type, search等)
- 前端移除冗余的前端筛选逻辑,改为服务端筛选
- 修复分页总数与筛选数据不匹配的问题
- 优化云端变量记录页面的时间筛选和搜索功能
- 修复DateTimePicker组件关闭后不自动更新的问题
This commit is contained in:
2026-05-08 13:45:21 +08:00
parent 4c060c494d
commit d0ef52ab4f
12 changed files with 542 additions and 155 deletions
+36 -3
View File
@@ -1,4 +1,4 @@
package admin
package admin
import (
"archive/zip"
@@ -40,6 +40,10 @@ func handleGetAllVersions(c *gin.Context) {
page := c.DefaultQuery("page", "1")
pageSize := c.DefaultQuery("page_size", "20")
applicationIDFilter := c.Query("application_id")
updateStrategyFilter := c.Query("update_strategy")
updateMethodFilter := c.Query("update_method")
searchFilter := c.Query("search")
var total int64
@@ -71,7 +75,36 @@ func handleGetAllVersions(c *gin.Context) {
log.Printf("[DEBUG] appNameMap: %v\n", appNameMap)
database.DB.Model(&model.Version{}).Where("application_id IN ?", appIDs).Count(&total)
countQuery := database.DB.Model(&model.Version{}).Where("application_id IN ?", appIDs)
if applicationIDFilter != "" {
countQuery = countQuery.Where("application_id = ?", applicationIDFilter)
}
if updateStrategyFilter != "" {
countQuery = countQuery.Where("update_strategy = ?", updateStrategyFilter)
}
if updateMethodFilter != "" {
countQuery = countQuery.Where("update_method = ?", updateMethodFilter)
}
if searchFilter != "" {
searchLower := strings.ToLower(searchFilter)
countQuery = countQuery.Where("LOWER(version) LIKE ? OR LOWER(description) LIKE ?", "%"+searchLower+"%", "%"+searchLower+"%")
}
countQuery.Count(&total)
query := database.DB.Where("application_id IN ?", appIDs)
if applicationIDFilter != "" {
query = query.Where("application_id = ?", applicationIDFilter)
}
if updateStrategyFilter != "" {
query = query.Where("update_strategy = ?", updateStrategyFilter)
}
if updateMethodFilter != "" {
query = query.Where("update_method = ?", updateMethodFilter)
}
if searchFilter != "" {
searchLower := strings.ToLower(searchFilter)
query = query.Where("LOWER(version) LIKE ? OR LOWER(description) LIKE ?", "%"+searchLower+"%", "%"+searchLower+"%")
}
var versions []model.Version
offset := 0
@@ -84,7 +117,7 @@ func handleGetAllVersions(c *gin.Context) {
limit = pageSizeInt
}
if err := database.DB.Where("application_id IN ?", appIDs).Order("created_at DESC").Limit(limit).Offset(offset).Find(&versions).Error; err != nil {
if err := query.Order("created_at DESC").Limit(limit).Offset(offset).Find(&versions).Error; err != nil {
response.Error(c, 500, "获取版本列表失败")
return
}