task-43(账号/权限页面): 实现用户筛选条件状态
新增 users-filter.ts 页面局部状态机:keyword/createdByAdminId/page/pageSize 默认值、改条件重置第一页(withFilterReset)、翻页钳到>=1、空白关键字不算激活、 toUserListParams 映射查询参数;UsersPage 改用它,搜索按钮/回车重置页码。 筛选状态不入 Pinia。8 用例全过,307 单测 + build 绿。
This commit is contained in:
@@ -4,16 +4,17 @@ import { ElMessage, ElMessageBox } from 'element-plus'
|
||||
import { http } from '@/api/http'
|
||||
import type { AdminUser } from '@/types/admin'
|
||||
import { fetchUserList } from '@/api/users'
|
||||
import { createUserFilterState, toUserListParams } from './users-filter'
|
||||
|
||||
const loading = ref(false)
|
||||
const rows = ref<AdminUser[]>([])
|
||||
const total = ref(0)
|
||||
const form = reactive({ username: '', page: 1, pageSize: 15 })
|
||||
const filters = reactive(createUserFilterState())
|
||||
|
||||
async function loadUsers() {
|
||||
loading.value = true
|
||||
try {
|
||||
const page = await fetchUserList({ page: form.page, pageSize: form.pageSize, keyword: form.username || undefined })
|
||||
const page = await fetchUserList(toUserListParams(filters))
|
||||
rows.value = page.items
|
||||
total.value = page.total
|
||||
} catch (error) {
|
||||
@@ -23,6 +24,12 @@ async function loadUsers() {
|
||||
}
|
||||
}
|
||||
|
||||
/** 提交新筛选条件:重置回第一页再查询。 */
|
||||
function search() {
|
||||
filters.page = 1
|
||||
void loadUsers()
|
||||
}
|
||||
|
||||
async function removeUser(row: AdminUser) {
|
||||
try {
|
||||
await ElMessageBox.confirm(`确定删除用户“${row.username}”吗?`, '删除确认', { type: 'warning' })
|
||||
@@ -35,7 +42,7 @@ async function removeUser(row: AdminUser) {
|
||||
}
|
||||
|
||||
function changePage(page: number) {
|
||||
form.page = page
|
||||
filters.page = page
|
||||
void loadUsers()
|
||||
}
|
||||
|
||||
@@ -52,12 +59,12 @@ onMounted(loadUsers)
|
||||
<el-button type="primary">新建用户</el-button>
|
||||
</div>
|
||||
<el-card shadow="never">
|
||||
<el-form inline @submit.prevent="loadUsers">
|
||||
<el-form inline @submit.prevent="search">
|
||||
<el-form-item label="用户名">
|
||||
<el-input v-model="form.username" clearable placeholder="模糊搜索" @keyup.enter="loadUsers" />
|
||||
<el-input v-model="filters.keyword" clearable placeholder="模糊搜索" @keyup.enter="search" />
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<el-button type="primary" @click="loadUsers">查询</el-button>
|
||||
<el-button type="primary" @click="search">查询</el-button>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</el-card>
|
||||
@@ -79,8 +86,8 @@ onMounted(loadUsers)
|
||||
<el-pagination
|
||||
background
|
||||
layout="prev, pager, next"
|
||||
:page-size="form.pageSize"
|
||||
:current-page="form.page"
|
||||
:page-size="filters.pageSize"
|
||||
:current-page="filters.page"
|
||||
:total="total"
|
||||
@current-change="changePage"
|
||||
/>
|
||||
|
||||
Reference in New Issue
Block a user