|
|
@@ -2,139 +2,89 @@ import axios from 'axios';
|
|
|
|
|
|
const API_BASE_URL = 'http://your-device-api-url.com'; // 替换为实际的设备 API URL
|
|
|
|
|
|
-// 模拟数据存储
|
|
|
-let mockData = [
|
|
|
- {
|
|
|
- personId: '1',
|
|
|
- name: '张三',
|
|
|
- gender: '男',
|
|
|
- age: 30,
|
|
|
- birthDate: '1994-01-01',
|
|
|
- maritalStatus: '已婚',
|
|
|
- isBaptized: true,
|
|
|
- baptismDate: '2010-05-15',
|
|
|
- contact: '13800138000',
|
|
|
- photo: null,
|
|
|
- servicePosition: ['主日学老师', '敬拜团成员']
|
|
|
+const instance = axios.create({
|
|
|
+ baseURL: API_BASE_URL,
|
|
|
+ timeout: 10000,
|
|
|
+ headers: {
|
|
|
+ 'Content-Type': 'application/json',
|
|
|
},
|
|
|
- {
|
|
|
- personId: '2',
|
|
|
- name: '李四',
|
|
|
- gender: '女',
|
|
|
- age: 25,
|
|
|
- birthDate: '1999-03-15',
|
|
|
- maritalStatus: '未婚',
|
|
|
- isBaptized: false,
|
|
|
- baptismDate: null,
|
|
|
- contact: '13900139000',
|
|
|
- photo: null,
|
|
|
- servicePosition: ['接待员']
|
|
|
- }
|
|
|
-];
|
|
|
-
|
|
|
-// 模拟考勤记录
|
|
|
-let mockAttendanceRecords = [
|
|
|
- { personId: '1', name: '张三', timestamp: '2024-10-22T09:00:00Z', facePhoto: 'https://example.com/face1.jpg' },
|
|
|
- { personId: '2', name: '李四', timestamp: '2024-10-22T09:15:00Z', facePhoto: 'https://example.com/face2.jpg' },
|
|
|
- { personId: '1', name: '张三', timestamp: '2024-10-23T08:55:00Z', facePhoto: 'https://example.com/face3.jpg' },
|
|
|
- { personId: '2', name: '李四', timestamp: '2024-10-23T09:05:00Z', facePhoto: 'https://example.com/face4.jpg' },
|
|
|
-];
|
|
|
+});
|
|
|
|
|
|
export const deviceApi = {
|
|
|
- getAllPersons: async () => {
|
|
|
+ // ... 保留之前的其他方法 ...
|
|
|
+
|
|
|
+ // 获取设备信息
|
|
|
+ getDeviceInfo: async () => {
|
|
|
try {
|
|
|
- console.log('调用 getAllPersons API');
|
|
|
- return new Promise((resolve) => {
|
|
|
- setTimeout(() => {
|
|
|
- console.log('模拟 API 返回数据');
|
|
|
- resolve([...mockData]);
|
|
|
- }, 1000);
|
|
|
+ const response = await instance.get('/device/info');
|
|
|
+ return response.data;
|
|
|
+ } catch (error) {
|
|
|
+ console.error('获取设备信息失败', error);
|
|
|
+ throw error;
|
|
|
+ }
|
|
|
+ },
|
|
|
+
|
|
|
+ // 获取考勤记录
|
|
|
+ getAttendanceRecords: async (startTime, endTime) => {
|
|
|
+ try {
|
|
|
+ const response = await instance.post('/device/searchPersonPassRecords', {
|
|
|
+ startTime,
|
|
|
+ endTime,
|
|
|
});
|
|
|
+ return response.data;
|
|
|
} catch (error) {
|
|
|
- console.error('获取所有会友信息失败:', error);
|
|
|
+ console.error('获取考勤记录失败', error);
|
|
|
throw error;
|
|
|
}
|
|
|
},
|
|
|
|
|
|
+ // 下发人员信息
|
|
|
addPerson: async (personInfo) => {
|
|
|
try {
|
|
|
- console.log('添加会友:', personInfo);
|
|
|
- return new Promise((resolve) => {
|
|
|
- setTimeout(() => {
|
|
|
- const newPerson = {
|
|
|
- ...personInfo,
|
|
|
- personId: (mockData.length + 1).toString(),
|
|
|
- photo: personInfo.photo ? URL.createObjectURL(personInfo.photo) : null
|
|
|
- };
|
|
|
- mockData.push(newPerson);
|
|
|
- resolve(newPerson);
|
|
|
- }, 500);
|
|
|
- });
|
|
|
+ const response = await instance.post('/person/add', personInfo);
|
|
|
+ return response.data;
|
|
|
} catch (error) {
|
|
|
- console.error('添加会友失败:', error);
|
|
|
+ console.error('下发人员信息失败', error);
|
|
|
throw error;
|
|
|
}
|
|
|
},
|
|
|
|
|
|
+ // 更新人员信息
|
|
|
updatePerson: async (personId, personInfo) => {
|
|
|
try {
|
|
|
- console.log('更新会友:', personId, personInfo);
|
|
|
- return new Promise((resolve) => {
|
|
|
- setTimeout(() => {
|
|
|
- const index = mockData.findIndex(p => p.personId === personId);
|
|
|
- if (index !== -1) {
|
|
|
- mockData[index] = {
|
|
|
- ...personInfo,
|
|
|
- personId,
|
|
|
- photo: personInfo.photo ? URL.createObjectURL(personInfo.photo) : mockData[index].photo
|
|
|
- };
|
|
|
- resolve(mockData[index]);
|
|
|
- } else {
|
|
|
- throw new Error('未找到指定会友');
|
|
|
- }
|
|
|
- }, 500);
|
|
|
+ const response = await instance.post('/person/update', {
|
|
|
+ ...personInfo,
|
|
|
+ personId,
|
|
|
});
|
|
|
+ return response.data;
|
|
|
} catch (error) {
|
|
|
- console.error('更新会友失败:', error);
|
|
|
+ console.error('更新人员信息失败', error);
|
|
|
throw error;
|
|
|
}
|
|
|
},
|
|
|
|
|
|
+ // 删除人员信息
|
|
|
deletePerson: async (personId) => {
|
|
|
try {
|
|
|
- console.log('删除会友:', personId);
|
|
|
- return new Promise((resolve) => {
|
|
|
- setTimeout(() => {
|
|
|
- mockData = mockData.filter(p => p.personId !== personId);
|
|
|
- resolve({ success: true });
|
|
|
- }, 500);
|
|
|
- });
|
|
|
+ const response = await instance.post('/person/delete', { personId });
|
|
|
+ return response.data;
|
|
|
} catch (error) {
|
|
|
- console.error('删除会友失败:', error);
|
|
|
+ console.error('删除人员信息失败', error);
|
|
|
throw error;
|
|
|
}
|
|
|
},
|
|
|
|
|
|
- getDeviceInfo: async () => {
|
|
|
- return new Promise((resolve) => {
|
|
|
- setTimeout(() => {
|
|
|
- resolve({
|
|
|
- deviceId: 'DEVICE001',
|
|
|
- deviceName: '教会主门考勤机'
|
|
|
- });
|
|
|
- }, 500);
|
|
|
- });
|
|
|
- },
|
|
|
-
|
|
|
- getAttendanceRecords: async (startDate, endDate) => {
|
|
|
- return new Promise((resolve) => {
|
|
|
- setTimeout(() => {
|
|
|
- const filteredRecords = mockAttendanceRecords.filter(record => {
|
|
|
- const recordDate = new Date(record.timestamp);
|
|
|
- return recordDate >= new Date(startDate) && recordDate <= new Date(endDate);
|
|
|
- });
|
|
|
- resolve(filteredRecords);
|
|
|
- }, 1000);
|
|
|
- });
|
|
|
+ // 获取人员列表
|
|
|
+ getAllPersons: async () => {
|
|
|
+ try {
|
|
|
+ const response = await instance.post('/person/list', {
|
|
|
+ pageNo: 1,
|
|
|
+ pageSize: 1000, // 假设最大支持1000人,可以根据实际情况调整
|
|
|
+ });
|
|
|
+ return response.data.list;
|
|
|
+ } catch (error) {
|
|
|
+ console.error('获取人员列表失败', error);
|
|
|
+ throw error;
|
|
|
+ }
|
|
|
},
|
|
|
};
|