Files
hzdyjs/web/src/api/xg/xgss/xsssfjgl/index.ts
T

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 };
}