import request from '@/utils/request'; import { DormQuery, RoomForm, BedForm, DormTreeNode, RoomInfo, BedInfo } from './types'; // API前缀 const baseUrl = '/xsssfjgl'; /** * 获取宿舍楼树形结构 */ export function getDormTree() { return request({ url: '/xgss/dormBuildingTree/list', method: 'get' }); } /** * 获取房间列表 * @param query 查询条件 * @returns 房间列表 */ export function listRooms(query: DormQuery) { return request({ url: baseUrl + '/room/list', method: 'get', params: query }); } /** * 获取房间详情 * @param roomId 房间ID * @returns 房间详情 */ export function getRoom(roomId: string | number) { return request({ url: baseUrl + '/room/' + roomId, method: 'get' }); } /** * 新增房间 * @param data 房间信息 * @returns 结果 */ export function addRoom(data: RoomForm) { return request({ url: baseUrl + '/room', method: 'post', data: data }); } /** * 修改房间 * @param data 房间信息 * @returns 结果 */ export function updateRoom(data: RoomForm) { return request({ url: baseUrl + '/room', method: 'put', data: data }); } /** * 删除房间 * @param roomIds 房间ID字符串 * @returns 结果 */ export function delRoom(roomIds: string | number) { return request({ url: baseUrl + '/room/' + roomIds, method: 'delete' }); } /** * 获取床位列表 * @param roomId 房间ID * @returns 床位列表 */ export function listBeds(roomId: string | number) { return request({ url: baseUrl + '/bed/list', method: 'get', params: { roomId } }); } /** * 新增床位 * @param data 床位信息 * @returns 结果 */ export function addBed(data: BedForm) { return request({ url: baseUrl + '/bed', method: 'post', data: data }); } /** * 修改床位 * @param data 床位信息 * @returns 结果 */ export function updateBed(data: BedForm) { return request({ url: baseUrl + '/bed', method: 'put', data: data }); } /** * 删除床位 * @param bedIds 床位ID字符串 * @returns 结果 */ export function delBed(bedIds: string | number) { return request({ url: baseUrl + '/bed/' + bedIds, method: 'delete' }); } // 模拟数据 - 在API接口完成前使用 // 生成宿舍树形结构的模拟数据 export function getMockDormTree(): { data: DormTreeNode[] } { const mockData: DormTreeNode[] = [ { id: 1, label: '东校区', type: 'campus', disabled: true, children: [ { id: 11, label: '东区宿舍', type: 'area', disabled: true, children: [ { id: 111, label: '东区1号楼', type: 'building', buildingFloors: 6, gender: '1' // 男生楼 }, { id: 112, label: '东区2号楼', type: 'building', buildingFloors: 8, gender: '2' // 女生楼 } ] } ] }, { id: 2, label: '西校区', type: 'campus', disabled: true, children: [ { id: 21, label: '西区宿舍', type: 'area', disabled: true, children: [ { id: 211, label: '西区1号楼', type: 'building', buildingFloors: 7, gender: '2' // 女生楼 }, { id: 212, label: '西区2号楼', type: 'building', buildingFloors: 5, gender: '1' // 男生楼 } ] } ] } ]; return { data: mockData }; } // 生成房间数据的模拟数据 export function getMockRooms(buildingId: string | number, floorNumber?: number): { rows: RoomInfo[], total: number } { const rooms: RoomInfo[] = []; // 根据buildingId判断楼层数 let floors = 6; if (buildingId === 112) floors = 8; else if (buildingId === 211) floors = 7; else if (buildingId === 212) floors = 5; // 如果指定了楼层,只生成该楼层的数据 const startFloor = floorNumber || 1; const endFloor = floorNumber || floors; for (let floor = startFloor; floor <= endFloor; floor++) { for (let i = 1; i <= 10; i++) { const roomNumber = `${floor}${i.toString().padStart(2, '0')}`; rooms.push({ roomId: `${buildingId}${roomNumber}`, roomName: roomNumber, floorNumber: floor, buildingId: buildingId, capacity: 4, used: Math.floor(Math.random() * 5), roomType: '标准间', status: Math.random() > 0.9 ? '1' : '0', remark: '', createBy: 'admin', createTime: '2023-01-01 00:00:00', updateBy: 'admin', updateTime: '2023-01-01 00:00:00' }); } } return { rows: rooms.filter(room => !floorNumber || room.floorNumber === floorNumber), total: rooms.length }; } // 生成床位数据的模拟数据 export function getMockBeds(roomId: string | number): { data: BedInfo[] } { const beds: BedInfo[] = []; const capacity = 4; for (let i = 1; i <= capacity; i++) { const status = Math.random() > 0.6 ? '1' : '0'; beds.push({ bedId: `${roomId}-${i}`, bedName: `${i}号床`, roomId: roomId, status: status, studentId: status === '1' ? 10000 + Math.floor(Math.random() * 5000) : undefined, studentName: status === '1' ? `学生${Math.floor(Math.random() * 1000)}` : undefined, remark: '', createBy: 'admin', createTime: '2023-01-01 00:00:00', updateBy: 'admin', updateTime: '2023-01-01 00:00:00' }); } return { data: beds }; }