优化分页和筛选功能:实现服务端分页和筛选,修复总数不匹配问题
- 优化设备管理、版本管理、用户管理、在线实例、公告管理页面的分页功能 - 后端添加筛选参数支持(application_id, status, type, search等) - 前端移除冗余的前端筛选逻辑,改为服务端筛选 - 修复分页总数与筛选数据不匹配的问题 - 优化云端变量记录页面的时间筛选和搜索功能 - 修复DateTimePicker组件关闭后不自动更新的问题
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
package admin
|
||||
package admin
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
@@ -28,6 +28,10 @@ func handleGetAllAnnouncements(c *gin.Context) {
|
||||
|
||||
page := c.DefaultQuery("page", "1")
|
||||
pageSize := c.DefaultQuery("page_size", "20")
|
||||
applicationIDFilter := c.Query("application_id")
|
||||
typeFilter := c.Query("type")
|
||||
statusFilter := c.Query("status")
|
||||
searchFilter := c.Query("search")
|
||||
|
||||
var total int64
|
||||
|
||||
@@ -59,7 +63,36 @@ func handleGetAllAnnouncements(c *gin.Context) {
|
||||
|
||||
log.Printf("[DEBUG] appNameMap: %v\n", appNameMap)
|
||||
|
||||
database.DB.Model(&model.Announcement{}).Where("application_id IN ?", appIDs).Count(&total)
|
||||
countQuery := database.DB.Model(&model.Announcement{}).Where("application_id IN ?", appIDs)
|
||||
if applicationIDFilter != "" {
|
||||
countQuery = countQuery.Where("application_id = ?", applicationIDFilter)
|
||||
}
|
||||
if typeFilter != "" {
|
||||
countQuery = countQuery.Where("type = ?", typeFilter)
|
||||
}
|
||||
if statusFilter != "" {
|
||||
countQuery = countQuery.Where("status = ?", statusFilter)
|
||||
}
|
||||
if searchFilter != "" {
|
||||
searchLower := strings.ToLower(searchFilter)
|
||||
countQuery = countQuery.Where("LOWER(title) LIKE ? OR LOWER(content) LIKE ?", "%"+searchLower+"%", "%"+searchLower+"%")
|
||||
}
|
||||
countQuery.Count(&total)
|
||||
|
||||
query := database.DB.Where("application_id IN ?", appIDs)
|
||||
if applicationIDFilter != "" {
|
||||
query = query.Where("application_id = ?", applicationIDFilter)
|
||||
}
|
||||
if typeFilter != "" {
|
||||
query = query.Where("type = ?", typeFilter)
|
||||
}
|
||||
if statusFilter != "" {
|
||||
query = query.Where("status = ?", statusFilter)
|
||||
}
|
||||
if searchFilter != "" {
|
||||
searchLower := strings.ToLower(searchFilter)
|
||||
query = query.Where("LOWER(title) LIKE ? OR LOWER(content) LIKE ?", "%"+searchLower+"%", "%"+searchLower+"%")
|
||||
}
|
||||
|
||||
var announcements []model.Announcement
|
||||
offset := 0
|
||||
@@ -72,7 +105,7 @@ func handleGetAllAnnouncements(c *gin.Context) {
|
||||
limit = pageSizeInt
|
||||
}
|
||||
|
||||
if err := database.DB.Where("application_id IN ?", appIDs).Order("is_top DESC, created_at DESC").Limit(limit).Offset(offset).Find(&announcements).Error; err != nil {
|
||||
if err := query.Order("is_top DESC, created_at DESC").Limit(limit).Offset(offset).Find(&announcements).Error; err != nil {
|
||||
response.Error(c, 500, "获取公告列表失败")
|
||||
return
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user