@opentiny/tiny-toolkit-pro
Version:
TinyPro Vue:开箱即用、前后端分离的 Vue 后台管理模板
110 lines (93 loc) • 2.9 kB
text/typescript
import axios from 'axios';
import { UserInfo } from '@/store/modules/user/types';
import { FilterType } from '@/types/global';
export interface LoginData {
email: string;
password: string;
}
export interface LogoutData {
token: string | null;
}
export interface RegisterData {
username: string;
email: string;
password: string;
roleIds: number[];
}
export interface LoginDataMail {
mailname: string;
mailpassword: string;
}
export interface LoginRes {
token: string;
userInfo: UserInfo;
}
export interface UserRes {
chartData: [];
tableData: [];
}
export interface UserData {
sort?: number | undefined;
startTime?: string;
endTime?: string;
filterStatus?: [];
filterType?: [];
}
export function login(data: LoginData) {
return axios.post<LoginRes>('/api/auth/login', data);
}
export function loginMail(data: LoginDataMail) {
return axios.post<LoginRes>('/api/mail/login', data);
}
export function logout(data: LogoutData) {
return axios.post<LoginRes>('/api/auth/logout', data);
}
// 获取全部用户
export function getAllUser(page?: number, limit?: number, filter?: FilterType) {
const keys = Object.keys(filter ?? {});
const params = new URLSearchParams();
params.set('page', page.toString());
params.set('limit', limit.toString());
for (let i = 0; i < keys.length; i += 1) {
const key = keys[i];
const value = filter[key];
if (value.type === 'enum') {
if (Array.isArray(value.value) && value.value.length) {
params.set(key, value.value.toString());
}
}
if (value.type === 'input' && !Array.isArray(value.value)) {
let sql = `${value.value.relation === 'contains' ? '%' : ''}${value.value.text}${value.value.relation === 'startwith' || value.value.relation === 'contains' ? '%' : ''}`;
params.set(key, sql);
}
}
return axios.get<UserInfo>(`/api/user?${params.toString()}`);
}
// 获取单个用户
export function getUserInfo(email?: string) {
return axios.get<UserInfo>(`/api/user/info/${email ?? ''}`);
}
export function deleteUser(email: string) {
return axios.delete<UserInfo>(`/api/user/${email}`);
}
export function updateUserInfo(data: any) {
return axios.patch('/api/user/update', data);
}
export function getUserData(data?: UserData) {
return axios.post<UserRes>(
`${import.meta.env.VITE_MOCK_SERVER_HOST}/api/user/data`,
data,
);
}
export function registerUser(data: any) {
return axios.post<UserInfo>('/api/user/reg', data);
}
export function updatePwdAdmin(data: any) {
return axios.patch('/api/user/admin/updatePwd', data);
}
export function updatePwdUser(data: any) {
return axios.patch('/api/user/updatePwd', data);
}
export const batchDeleteUsers = (emails: string[]) => {
return axios.post('/api/user/batch', emails)
}