diff --git a/src/types/api/system/user.d.ts b/src/types/api/system/user.d.ts index 7e459b8a..f2d77c81 100644 --- a/src/types/api/system/user.d.ts +++ b/src/types/api/system/user.d.ts @@ -1,67 +1,160 @@ -import { PageQueryParam, PageResult } from '../base'; +import request from '@/utils/request'; +import { AxiosPromise } from 'axios'; +import { + UserFormData, + UserInfo, + UserPageResult, + UserQueryParam +} from '@/types/api/system/user'; /** - * 登录用户类型声明 + * 登录成功后获取用户信息(昵称、头像、权限集合和角色集合) */ -export interface UserInfo { - nickname: string; - avatar: string; - roles: string[]; - perms: string[]; +export function getUserInfo(): AxiosPromise { + return request({ + url: '/youlai-admin/api/v1/users/me', + method: 'get' + }); } /** - * 用户查询参数类型声明 + * 获取用户分页列表 + * + * @param queryParams */ -export interface UserQueryParam extends PageQueryParam { - keywords: string; - status: number; - deptId: number; +export function listUserPages( + queryParams: UserQueryParam +): AxiosPromise { + return request({ + url: '/youlai-admin/api/v1/users/pages', + method: 'get', + params: queryParams + }); } /** - * 用户分页列表项声明 + * 获取用户表单详情 + * + * @param userId */ -export interface UserItem { - id: string; - username: string; - nickname: string; - mobile: string; - gender: number; - avatar: string; - email: string; - status: number; - deptName: string; - roleNames: string; - createTime: string; +export function getUserFormData(userId: number): AxiosPromise { + return request({ + url: '/youlai-admin/api/v1/users/' + userId + '/form_data', + method: 'get' + }); } /** - * 用户分页项类型声明 + * 添加用户 + * + * @param data */ -export type UserPageResult = PageResult; - -/** - * 用户表单类型声明 - */ -export interface UserFormData { - id: number | undefined; - deptId: number; - username: string; - nickname: string; - password: string; - mobile: string; - email: string; - gender: number; - status: number; - remark: string; - roleIds: number[]; +export function addUser(data: any) { + return request({ + url: '/youlai-admin/api/v1/users', + method: 'post', + data: data + }); } /** - * 用户导入表单类型声明 + * 修改用户 + * + * @param id + * @param data */ -export interface UserImportFormData { - deptId: number; - roleIds: number[]; +export function updateUser(id: number, data: UserFormData) { + return request({ + url: '/youlai-admin/api/v1/users/' + id, + method: 'put', + data: data + }); +} + +/** + * 修改用户状态 + * + * @param id + * @param status + */ +export function updateUserStatus(id: number, status: number) { + return request({ + url: '/youlai-admin/api/v1/users/' + id + '/status', + method: 'patch', + params: { status: status } + }); +} + +/** + * 修改用户密码 + * + * @param id + * @param password + */ +export function updateUserPassword(id: number, password: string) { + return request({ + url: '/youlai-admin/api/v1/users/' + id + '/password', + method: 'patch', + params: { password: password } + }); +} + +/** + * 删除用户 + * + * @param ids + */ +export function deleteUsers(ids: string) { + return request({ + url: '/youlai-admin/api/v1/users/' + ids, + method: 'delete' + }); +} + +/** + * 下载用户导入模板 + * + * @returns + */ +export function downloadTemplate() { + return request({ + url: '/youlai-admin/api/v1/users/template', + method: 'get', + responseType: 'arraybuffer' + }); +} + +/** + * 导出用户 + * + * @param queryParams + * @returns + */ +export function exportUser(queryParams: UserQueryParam) { + return request({ + url: '/youlai-admin/api/v1/users/_export', + method: 'get', + params: queryParams, + responseType: 'arraybuffer' + }); +} + +/** + * 导入用户 + * + * @param file + */ +export function importUser(deptId: number, roleIds: string, file: File) { + const formData = new FormData(); + formData.append('file', file); + formData.append('deptId', deptId.toString()); + formData.append('roleIds', roleIds); + return request({ + url: '/youlai-admin/api/v1/users/_import', + method: 'post', + data: formData, + headers: { + 'Content-Type': 'multipart/form-data' + } + }); } diff --git a/src/views/system/user/index.vue b/src/views/system/user/index.vue index 5830be2b..f54348a0 100644 --- a/src/views/system/user/index.vue +++ b/src/views/system/user/index.vue @@ -18,7 +18,7 @@ import { // 导入API import { listUserPages, - getUserFormData, + getUserDetail, deleteUsers, addUser, updateUser, @@ -272,27 +272,28 @@ function resetPassword(row: { [key: string]: any }) { * 添加用户 **/ async function handleAdd() { - await loadDeptOptions(); - await loadRoleOptions(); state.dialog = { title: '添加用户', visible: true }; + await loadDeptOptions(); + await loadRoleOptions(); } /** * 修改用户 **/ async function handleUpdate(row: { [key: string]: any }) { - const userId = row.id || state.ids; - await loadDeptOptions(); - await loadRoleOptions(); state.dialog = { title: '修改用户', visible: true }; - getUserFormData(userId).then(({ data }) => { - state.formData = data; + + const userId = row.id || state.ids; + await loadDeptOptions(); + await loadRoleOptions(); + getUserDetail(userId).then(({ data }) => { + formData.value = data; }); } @@ -398,7 +399,7 @@ function handleDownloadTemplate() { async function showImportDialog() { await loadDeptOptions(); await loadRoleOptions(); - state.importDialog.visible = true; + importDialog.value.visible = true; } /** @@ -714,6 +715,7 @@ onMounted(() => { :data="deptOptions" filterable check-strictly + :render-after-expand="false" />