From 9f5897980d202949a17d6e684a12803c86f8eeaa Mon Sep 17 00:00:00 2001 From: tyro880 <你的GitHub绑定邮箱> Date: Thu, 29 Jan 2026 12:13:36 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=8F=90=E4=BA=A4=E8=B1=86=E5=8C=85?= =?UTF-8?q?=E7=94=9F=E6=88=90=E7=9A=84=E7=94=A8=E6=88=B7=E7=AE=A1=E7=90=86?= =?UTF-8?q?=E9=AB=98=E7=BA=A7=E6=90=9C=E7=B4=A2=E8=A1=A8=E5=8D=95=E4=B8=8E?= =?UTF-8?q?=E8=B7=AF=E7=94=B1=E9=85=8D=E7=BD=AE=EF=BC=88=E8=AF=95=E6=A0=87?= =?UTF-8?q?=E4=BB=BB=E5=8A=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- mock/user.js | 62 +++++++- src/api/user.js | 8 + src/views/user/index.vue | 311 +++++++++++++++++++++++++++++++++++++++ src/views/user/list.vue | 311 +++++++++++++++++++++++++++++++++++++++ 4 files changed, 690 insertions(+), 2 deletions(-) create mode 100644 src/views/user/index.vue create mode 100644 src/views/user/list.vue diff --git a/mock/user.js b/mock/user.js index d82e079d58c..18bb0043921 100644 --- a/mock/user.js +++ b/mock/user.js @@ -1,4 +1,3 @@ - const tokens = { admin: { token: 'admin-token' @@ -23,6 +22,18 @@ const users = { } } +// 模拟用户列表数据 +const userList = [ + { id: 1, name: '张三', phone: '13800138001', role: 'super_admin', createTime: '2023-01-01 10:00:00', status: 1 }, + { id: 2, name: '李四', phone: '13800138002', role: 'admin', createTime: '2023-01-02 10:00:00', status: 1 }, + { id: 3, name: '王五', phone: '13800138003', role: 'user', createTime: '2023-01-03 10:00:00', status: 0 }, + { id: 4, name: '赵六', phone: '13800138004', role: 'user', createTime: '2023-01-04 10:00:00', status: 1 }, + { id: 5, name: '孙七', phone: '13800138005', role: 'user', createTime: '2023-01-05 10:00:00', status: 1 }, + { id: 6, name: '周八', phone: '13800138006', role: 'user', createTime: '2023-01-06 10:00:00', status: 0 }, + { id: 7, name: '吴九', phone: '13800138007', role: 'user', createTime: '2023-01-07 10:00:00', status: 1 }, + { id: 8, name: '郑十', phone: '13800138008', role: 'user', createTime: '2023-01-08 10:00:00', status: 1 } +] + module.exports = [ // user login { @@ -80,5 +91,52 @@ module.exports = [ data: 'success' } } + }, + + // user list + { + url: '/vue-element-admin/user/list', + type: 'get', + response: config => { + const { page, size, phone, role, createTime, status } = config.query + let filteredList = [...userList] + + // 手机号模糊匹配 + if (phone) { + filteredList = filteredList.filter(user => user.phone.includes(phone)) + } + + // 角色精准筛选 + if (role) { + filteredList = filteredList.filter(user => user.role === role) + } + + // 创建时间范围筛选 + if (createTime) { + const [startTime, endTime] = createTime.split(',') + filteredList = filteredList.filter(user => { + const userTime = new Date(user.createTime).getTime() + return userTime >= new Date(startTime).getTime() && userTime <= new Date(endTime).getTime() + }) + } + + // 用户状态筛选 + if (status && status.length > 0) { + filteredList = filteredList.filter(user => status.includes(user.status.toString())) + } + + // 分页 + const startIndex = (page - 1) * size + const endIndex = startIndex + parseInt(size) + const paginatedList = filteredList.slice(startIndex, endIndex) + + return { + code: 20000, + data: { + list: paginatedList, + total: filteredList.length + } + } + } } -] +] \ No newline at end of file diff --git a/src/api/user.js b/src/api/user.js index b8b8741caff..de3e40804e6 100644 --- a/src/api/user.js +++ b/src/api/user.js @@ -22,3 +22,11 @@ export function logout() { method: 'post' }) } + +export function fetchUserList(params) { + return request({ + url: '/vue-element-admin/user/list', + method: 'get', + params + }) +} diff --git a/src/views/user/index.vue b/src/views/user/index.vue new file mode 100644 index 00000000000..f134f2dd5f7 --- /dev/null +++ b/src/views/user/index.vue @@ -0,0 +1,311 @@ + + + + + diff --git a/src/views/user/list.vue b/src/views/user/list.vue new file mode 100644 index 00000000000..f134f2dd5f7 --- /dev/null +++ b/src/views/user/list.vue @@ -0,0 +1,311 @@ + + + + +