Add employee code assignment function
This commit is contained in:
+110
-6
@@ -1,5 +1,5 @@
|
||||
import axios from 'axios';
|
||||
import type { ApiResponse, AuthResponse, User } from '@/types';
|
||||
import type { ApiResponse, AuthResponse, User, EmployeeSerial, EmployeeSerialResponse } from '@/types';
|
||||
|
||||
const API_BASE_URL = import.meta.env.VITE_API_BASE_URL || '/api';
|
||||
|
||||
@@ -78,10 +78,9 @@ export const authApi = {
|
||||
|
||||
updateProfile: async (data: { name?: string; email?: string }) => {
|
||||
const response = await apiClient.put('/auth/profile', data);
|
||||
const user = response.data;
|
||||
if (user) {
|
||||
localStorage.setItem('currentUser', JSON.stringify(user));
|
||||
return user;
|
||||
if (response.data.user) {
|
||||
localStorage.setItem('currentUser', JSON.stringify(response.data.user));
|
||||
return response.data.user as User;
|
||||
}
|
||||
throw new Error('更新资料失败');
|
||||
},
|
||||
@@ -91,7 +90,10 @@ export const authApi = {
|
||||
if (response.data.message) {
|
||||
return true;
|
||||
}
|
||||
throw new Error(response.data.error || '修改密码失败');
|
||||
if (response.data.error) {
|
||||
throw new Error(response.data.error);
|
||||
}
|
||||
throw new Error('修改密码失败');
|
||||
},
|
||||
};
|
||||
|
||||
@@ -192,6 +194,7 @@ export const dashboardApi = {
|
||||
return {
|
||||
totalCompanies: data.overview?.totalCompanies || 0,
|
||||
totalSerials: data.overview?.totalSerials || 0,
|
||||
totalEmployeeSerials: data.overview?.totalEmployeeSerials || 0,
|
||||
activeSerials: data.overview?.activeSerials || 0,
|
||||
inactiveSerials: data.overview?.inactiveSerials || 0,
|
||||
monthlyData: data.monthlyStats || [],
|
||||
@@ -207,9 +210,110 @@ export const dashboardApi = {
|
||||
companyName: s.companyName,
|
||||
status: s.isActive ? 'active' : 'inactive',
|
||||
createdAt: s.createdAt,
|
||||
type: s.type,
|
||||
})) || [],
|
||||
};
|
||||
}
|
||||
throw new Error('获取统计数据失败');
|
||||
},
|
||||
};
|
||||
|
||||
export const employeeSerialApi = {
|
||||
generate: async (data: {
|
||||
companyName: string;
|
||||
department: string;
|
||||
employeeName: string;
|
||||
quantity: number;
|
||||
serialPrefix?: string;
|
||||
}) => {
|
||||
const response = await apiClient.post('/employee-serials/generate', data);
|
||||
if (response.data.serials) {
|
||||
return response.data;
|
||||
}
|
||||
throw new Error(response.data.error || '生成员工序列号失败');
|
||||
},
|
||||
|
||||
list: async (filter?: { page?: number; limit?: number; search?: string }) => {
|
||||
let url = '/employee-serials';
|
||||
const params = new URLSearchParams();
|
||||
if (filter?.page && filter.page > 1) params.append('page', String(filter.page));
|
||||
if (filter?.limit && filter.limit !== 20) params.append('limit', String(filter.limit));
|
||||
if (filter?.search) params.append('search', filter.search);
|
||||
if (params.toString()) url += `?${params.toString()}`;
|
||||
|
||||
const response = await apiClient.get(url);
|
||||
if (response.data.data) {
|
||||
return response.data as EmployeeSerialResponse;
|
||||
}
|
||||
throw new Error('获取员工序列号列表失败');
|
||||
},
|
||||
|
||||
query: async (serialNumber: string) => {
|
||||
const response = await apiClient.get(`/employee-serials/${encodeURIComponent(serialNumber)}/query`);
|
||||
if (response.data.serial) {
|
||||
return response.data.serial as EmployeeSerial;
|
||||
}
|
||||
throw new Error(response.data.error || '查询员工序列号失败');
|
||||
},
|
||||
|
||||
queryAll: async (serialNumber: string) => {
|
||||
// 先查企业序列号
|
||||
try {
|
||||
const companyResponse = await apiClient.get(`/serials/${encodeURIComponent(serialNumber)}/query`);
|
||||
if (companyResponse.data.serial) {
|
||||
return { type: 'company', data: companyResponse.data.serial };
|
||||
}
|
||||
} catch (e: any) {
|
||||
// 企业序列号不存在,继续查员工序列号
|
||||
}
|
||||
// 再查员工序列号
|
||||
try {
|
||||
const employeeResponse = await apiClient.get(`/employee-serials/${encodeURIComponent(serialNumber)}/query`);
|
||||
if (employeeResponse.data.serial) {
|
||||
return { type: 'employee', data: employeeResponse.data.serial };
|
||||
}
|
||||
} catch (e: any) {
|
||||
throw new Error('序列号不存在');
|
||||
}
|
||||
throw new Error('序列号不存在');
|
||||
},
|
||||
|
||||
generateQrCode: async (serialNumber: string, baseUrl?: string) => {
|
||||
const response = await apiClient.post(`/employee-serials/${encodeURIComponent(serialNumber)}/qrcode`, {
|
||||
baseUrl,
|
||||
});
|
||||
if (response.data.qrCodeData) {
|
||||
return response.data;
|
||||
}
|
||||
throw new Error(response.data.error || '生成二维码失败');
|
||||
},
|
||||
|
||||
update: async (serialNumber: string, data: {
|
||||
companyName?: string;
|
||||
department?: string;
|
||||
employeeName?: string;
|
||||
isActive?: boolean;
|
||||
}) => {
|
||||
const response = await apiClient.put(`/employee-serials/${encodeURIComponent(serialNumber)}`, data);
|
||||
if (response.data.serial) {
|
||||
return response.data.serial as EmployeeSerial;
|
||||
}
|
||||
throw new Error(response.data.error || '更新员工序列号失败');
|
||||
},
|
||||
|
||||
revoke: async (serialNumber: string) => {
|
||||
const response = await apiClient.post(`/employee-serials/${encodeURIComponent(serialNumber)}/revoke`);
|
||||
if (response.data.message) {
|
||||
return true;
|
||||
}
|
||||
throw new Error(response.data.error || '吊销员工序列号失败');
|
||||
},
|
||||
|
||||
delete: async (serialNumber: string) => {
|
||||
const response = await apiClient.delete(`/employee-serials/${encodeURIComponent(serialNumber)}`);
|
||||
if (response.data.message) {
|
||||
return true;
|
||||
}
|
||||
throw new Error(response.data.error || '删除员工序列号失败');
|
||||
},
|
||||
};
|
||||
Reference in New Issue
Block a user