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)