From 68a14aad28df540e122da8cc2120f897c685daef Mon Sep 17 00:00:00 2001 From: yuetsh <517252939@qq.com> Date: Sun, 5 Oct 2025 16:44:01 +0800 Subject: [PATCH] add sort --- src/admin/api.ts | 3 ++- src/admin/user/list.vue | 33 +++++++++++++++++++++++++++++---- 2 files changed, 31 insertions(+), 5 deletions(-) diff --git a/src/admin/api.ts b/src/admin/api.ts index c07ced5..92bb614 100644 --- a/src/admin/api.ts +++ b/src/admin/api.ts @@ -86,9 +86,10 @@ export function getUserList( limit = 10, type = "", keyword: string, + orderBy = "", ) { return http.get("admin/user", { - params: { paging: true, offset, limit, keyword, type }, + params: { paging: true, offset, limit, keyword, type, order_by: orderBy }, }) } diff --git a/src/admin/user/list.vue b/src/admin/user/list.vue index 8c8ee1f..e968de5 100644 --- a/src/admin/user/list.vue +++ b/src/admin/user/list.vue @@ -22,12 +22,14 @@ const message = useMessage() interface UserQuery { keyword: string type: string + orderBy: string } // 使用分页 composable -const { query } = usePagination({ +const { query, clearQuery } = usePagination({ keyword: useRouteQuery("keyword", "").value, type: useRouteQuery("type", "").value, + orderBy: useRouteQuery("orderBy", "").value, }) const total = ref(0) @@ -39,6 +41,12 @@ const adminOptions = [ { label: "管理员", value: USER_TYPE.ADMIN }, { label: "超级管理员", value: USER_TYPE.SUPER_ADMIN }, ] + +const sortOptions = [ + { label: "默认排序", value: "" }, + { label: "最近登录", value: "-last_login" }, + { label: "最早登录", value: "last_login" }, +] const [create, toggleCreate] = useToggle(false) const password = ref("") const userIDs = ref([]) @@ -112,7 +120,13 @@ const problemPermissionOptions: SelectOption[] = [ async function listUsers() { if (query.page < 1) query.page = 1 const offset = (query.page - 1) * query.limit - const res = await getUserList(offset, query.limit, query.type, query.keyword) + const res = await getUserList( + offset, + query.limit, + query.type, + query.keyword, + query.orderBy, + ) total.value = res.data.total users.value = res.data.results } @@ -208,7 +222,7 @@ onMounted(listUsers) watchDebounced(() => query.keyword, listUsers, { debounce: 500, maxWait: 1000 }) // 监听其他查询条件变化 -watch(() => [query.page, query.limit, query.type], listUsers) +watch(() => [query.page, query.limit, query.type, query.orderBy], listUsers)