Feat: user list filter

This commit is contained in:
Lazy 2023-12-14 17:19:33 +08:00
parent 7b4f596f23
commit 3a3c194484
2 changed files with 13 additions and 6 deletions

View File

@ -223,7 +223,7 @@ const formData = ref<EditUserInfo>(_.cloneDeep(formDataOrigin));
const baseRules: Record<string, Rule[]> = {
userName: [
{ required: true, message: t("TXT_CODE_2695488c") },
{ min: 3, max: 12, message: t("TXT_CODE_3f477ec"), trigger: "blur" }
{ min: 3, max: 20, message: t("TXT_CODE_3f477ec"), trigger: "blur" }
],
permission: [{ required: true, message: t("TXT_CODE_3bb646e4") }]
};
@ -279,6 +279,11 @@ const handleEditUser = (user: BaseUserInfo) => {
userDialog.value.show();
};
const search = throttle(async () => {
operationForm.value.currentPage = 1;
await fetchData();
}, 600);
onMounted(async () => {
fetchData();
});
@ -364,7 +369,7 @@ onMounted(async () => {
</a-typography-title>
</template>
<template #right>
<a-button class="mr-8" type="default" :loading="getUserInfoLoading" @click="fetchData">
<a-button class="mr-8" type="default" :loading="getUserInfoLoading" @click="reload">
{{ t("TXT_CODE_b76d94e0") }}
</a-button>
<a-dropdown>
@ -387,7 +392,7 @@ onMounted(async () => {
<template #center>
<div class="search-input">
<a-input-group compact>
<a-select v-model:value="currentRole" style="width: 100px" @change="reload()">
<a-select v-model:value="currentRole" style="width: 100px" @change="search()">
<a-select-option value="">
{{ t("TXT_CODE_c48f6f64") }}
</a-select-option>
@ -399,7 +404,7 @@ onMounted(async () => {
v-model:value.trim="operationForm.name"
:placeholder="t('TXT_CODE_2471b9c')"
style="width: calc(100% - 100px)"
@change="reload()"
@change="search()"
>
<template #suffix>
<search-outlined />

View File

@ -45,15 +45,17 @@ router.get(
permission({ level: ROLE.ADMIN }),
validator({ query: { page: Number, page_size: Number } }),
async (ctx: Koa.ParameterizedContext) => {
const userName = ctx.query.userName as string;
const userName = ctx.query.userName;
const role = ctx.query.role;
const page = Number(ctx.query.page);
const pageSize = Number(ctx.query.page_size);
const condition: any = {};
if (userName) condition["userName"] = `%${userName}%`;
if (role) condition["permission"] = Number(role);
let resultPage = userSystem.getQueryWrapper().selectPage(condition, page, pageSize);
// make a copy, delete redundant
resultPage = JSON.parse(JSON.stringify(resultPage));
resultPage.data.forEach((v: any) => {
resultPage.data.forEach((v) => {
delete v.passWord;
delete v.salt;
});