feat: post form

This commit is contained in:
dap
2024-09-13 15:27:29 +08:00
parent d27a131877
commit c56dc7c366
13 changed files with 1002 additions and 8 deletions

View File

@@ -0,0 +1,46 @@
import type { Post } from './model';
import type { ID, IDS, PageQuery } from '#/api/common';
import { commonExport } from '#/api/helper';
import { requestClient } from '#/api/request';
enum Api {
postExport = '/system/post/export',
postList = '/system/post/list',
postSelect = '/system/post/optionselect',
root = '/system/post',
}
/**
* 获取岗位列表
* @param params 参数
* @returns Post[]
*/
export function postList(params?: PageQuery) {
return requestClient.get<Post[]>(Api.postList, { params });
}
export function postExport(data: any) {
return commonExport(Api.postExport, data);
}
export function postInfo(postId: ID) {
return requestClient.get<Post>(`${Api.root}/${postId}`);
}
export function postAdd(data: any) {
return requestClient.postWithMsg<void>(Api.root, data);
}
export function postUpdate(data: any) {
return requestClient.putWithMsg<void>(Api.root, data);
}
export function postRemove(postIds: IDS) {
return requestClient.deleteWithMsg<void>(`${Api.root}/${postIds}`);
}
export function postOptionSelect(deptId: ID) {
return requestClient.get(Api.postSelect, { params: { deptId } });
}

View File

@@ -0,0 +1,12 @@
/**
* @description: Post interface
*/
export interface Post {
postId: number;
postCode: string;
postName: string;
postSort: number;
status: string;
remark: string;
createTime: string;
}

View File

@@ -1,7 +1,8 @@
import type { FileCallBack, UpdatePasswordParam, UserProfile } from './model';
import { buildUUID } from '@vben/utils';
import { requestClient } from '#/api/request';
import { buildUUID } from '#/utils/uuid';
enum Api {
root = '/system/user/profile',

View File

@@ -0,0 +1,164 @@
import type {
DeptTree,
ResetPwdParam,
User,
UserImportParam,
UserInfoResponse,
} from './model';
import type { ID, IDS, PageQuery, PageResult } from '#/api/common';
import { commonExport, ContentTypeEnum } from '#/api/helper';
import { requestClient } from '#/api/request';
enum Api {
deptTree = '/system/user/deptTree',
listDeptUsers = '/system/user/list/dept',
root = '/system/user',
userAuthRole = '/system/user/authRole',
userExport = '/system/user/export',
userImport = '/system/user/importData',
userImportTemplate = '/system/user/importTemplate',
userList = '/system/user/list',
userResetPassword = '/system/user/resetPwd',
userStatusChange = '/system/user/changeStatus',
}
/**
* 获取用户列表
* @param params
* @returns User
*/
export function userList(params?: PageQuery) {
return requestClient.get<PageResult<User>>(Api.userList, { params });
}
/**
* 导出excel
* @param data data
* @returns blob
*/
export function userExport(data: any) {
return commonExport(Api.userExport, data);
}
/**
* 从excel导入用户
* @param data
* @returns void
*/
export function userImportData(data: UserImportParam) {
return requestClient.post<void>(Api.userImport, data, {
// 返回的msg包含<br> 用modal显示
errorMessageMode: 'modal',
headers: {
'Content-Type': ContentTypeEnum.FORM_DATA,
},
successMessageMode: 'modal',
});
}
/**
* 下载用户导入模板
* @returns blob
*/
export function downloadImportTemplate() {
return requestClient.post<Blob>(
Api.userImportTemplate,
{},
{
isTransformResponse: false,
responseType: 'blob',
},
);
}
/**
* 可以不传ID 返回部门和角色options 需要获得原始数据
* @param userId 用户ID
* @returns 用户信息
*/
export function findUserInfo(userId?: ID) {
const url = userId ? `${Api.root}/${userId}` : `${Api.root}`;
return requestClient.get<UserInfoResponse>(url);
}
/**
* 新增用户
* @param data data
* @returns void
*/
export function userAdd(data: any) {
return requestClient.postWithMsg<void>(Api.root, data);
}
/**
* 更新用户
* @param data data
* @returns void
*/
export function userUpdate(data: any) {
return requestClient.putWithMsg<void>(Api.root, data);
}
/**
* 更新用户状态
* @param data data
* @returns void
*/
export function userStatusChange(data: any) {
return requestClient.putWithMsg<void>(Api.userStatusChange, data);
}
/**
* 删除用户
* @param userIds 用户ID数组
* @returns void
*/
export function userRemove(userIds: IDS) {
return requestClient.deleteWithMsg<void>(`${Api.root}/${userIds}`);
}
/**
* 重置用户密码 需要加密
* @param data
* @returns void
*/
export function userResetPassword(data: ResetPwdParam) {
return requestClient.putWithMsg<void>(Api.userResetPassword, data, {
encrypt: true,
});
}
/**
* 这个方法未调用过
* @param userId
* @returns void
*/
export function getUserAuthRole(userId: ID) {
return requestClient.get(`${Api.userAuthRole}/${userId}`);
}
/**
* 这个方法未调用过
* @param userId
* @returns void
*/
export function userAuthRoleUpdate(userId: ID, roleIds: number[]) {
return requestClient.putWithMsg(Api.userAuthRole, { roleIds, userId });
}
/**
* 获取部门树
* @returns 部门树数组
*/
export function getDeptTree() {
return requestClient.get<DeptTree[]>(Api.deptTree);
}
/**
* 获取部门下的所有用户信息
*/
export function listUserByDeptId(deptId: ID) {
return requestClient.get<User[]>(`${Api.listDeptUsers}/${deptId}`);
}

View File

@@ -0,0 +1,116 @@
/**
* @description: 用户导入
* @param updateSupport 是否覆盖数据
* @param file excel文件
*/
export interface UserImportParam {
updateSupport: boolean;
file: Blob | File;
}
/**
* @description: 重置密码
*/
export interface ResetPwdParam {
userId: string;
password: string;
}
export interface Dept {
deptId: number;
parentId: number;
parentName?: string;
ancestors: string;
deptName: string;
orderNum: number;
leader: string;
phone?: string;
email?: string;
status: string;
createTime?: string;
}
export interface Role {
roleId: string;
roleName: string;
roleKey: string;
roleSort: number;
dataScope: string;
menuCheckStrictly?: boolean;
deptCheckStrictly?: boolean;
status: string;
remark: string;
createTime?: string;
flag: boolean;
superAdmin: boolean;
}
export interface User {
userId: string;
tenantId: string;
deptId: number;
userName: string;
nickName: string;
userType: string;
email: string;
phonenumber: string;
sex: string;
avatar?: string;
status: string;
loginIp: string;
loginDate: string;
remark: string;
createTime: string;
dept: Dept;
roles: Role[];
roleIds?: string[];
postIds?: number[];
roleId: string;
}
export interface Post {
postId: number;
postCode: string;
postName: string;
postSort: number;
status: string;
remark: string;
createTime: string;
}
/**
* @description 用户信息
* @param user 用户个人信息
* @param roleIds 角色IDS 不传id为空
* @param roles 所有的角色
* @param postIds 岗位IDS 不传id为空
* @param posts 所有的岗位
*/
export interface UserInfoResponse {
user?: User;
roleIds?: string[];
roles: Role[];
postIds?: number[];
posts: Post[];
}
/**
* @description: 部门树
*/
export interface DeptTree {
id: number;
/**
* antd组件必须要这个属性 实际是没有这个属性的
*/
key: string;
parentId: number;
label: string;
weight: number;
children?: DeptTree[];
}
export interface DeptTreeData {
id: number;
label: string;
children?: DeptTreeData[];
}