265 lines
5.7 KiB
TypeScript
265 lines
5.7 KiB
TypeScript
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 };
|
|
}
|