diff --git a/agent/app/dto/request/website_ssl.go b/agent/app/dto/request/website_ssl.go index a67c2d9f5..96c5c4d25 100644 --- a/agent/app/dto/request/website_ssl.go +++ b/agent/app/dto/request/website_ssl.go @@ -6,6 +6,8 @@ type WebsiteSSLSearch struct { dto.PageInfo AcmeAccountID string `json:"acmeAccountID"` Domain string `json:"domain"` + OrderBy string `json:"orderBy" validate:"required,oneof=expire_date"` + Order string `json:"order" validate:"required,oneof=null ascending descending"` } type WebsiteSSLCreate struct { diff --git a/agent/app/service/website_ssl.go b/agent/app/service/website_ssl.go index 1e68665ae..5ce24c903 100644 --- a/agent/app/service/website_ssl.go +++ b/agent/app/service/website_ssl.go @@ -59,7 +59,11 @@ func (w WebsiteSSLService) Page(search request.WebsiteSSLSearch) (int64, []respo result []response.WebsiteSSLDTO opts []repo.DBOption ) - opts = append(opts, repo.WithOrderBy("created_at desc")) + if search.OrderBy != "" && search.Order != "null" { + opts = append(opts, repo.WithOrderRuleBy(search.OrderBy, search.Order)) + } else { + opts = append(opts, repo.WithOrderBy("created_at desc")) + } if search.Domain != "" { opts = append(opts, websiteSSLRepo.WithByDomain(search.Domain)) } diff --git a/frontend/src/views/website/ssl/index.vue b/frontend/src/views/website/ssl/index.vue index a1a698bfb..50b1bea5c 100644 --- a/frontend/src/views/website/ssl/index.vue +++ b/frontend/src/views/website/ssl/index.vue @@ -43,6 +43,7 @@ :columns="columns" localKey="sslColumn" :height-diff="260" + @sort-change="changeSort" > ([]); const columns = ref([]); const req = reactive({ domain: '', + orderBy: 'expire_date', + order: 'ascending', }); const routerButton = [ @@ -302,11 +306,19 @@ const mobile = computed(() => { return globalStore.isMobile(); }); +const changeSort = ({ order }) => { + req.orderBy = 'expire_date'; + req.order = order; + search(); +}; + const search = () => { const request = { page: paginationConfig.currentPage, pageSize: paginationConfig.pageSize, domain: req.domain, + orderBy: req.orderBy, + order: req.order, }; loading.value = true; searchSSL(request)