rentease-web/src/api/api.js

191 lines
4.9 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

// API服务层用于与后端进行交互
const API_BASE_URL = '/api';
// 通用请求函数
async function request(url, options = {}) {
try {
const response = await fetch(`${API_BASE_URL}${url}`, {
...options,
headers: {
'Content-Type': 'application/json',
...options.headers
}
});
if (!response.ok) {
throw new Error(`HTTP error! status: ${response.status}`);
}
return await response.json();
} catch (error) {
console.error('API request error:', error);
throw error;
}
}
// 区域管理API
export const regionApi = {
getAll: () => request('/regions'),
getById: (id) => request(`/regions/${id}`),
create: (data) => request('/regions', {
method: 'POST',
body: JSON.stringify(data)
}),
update: (id, data) => request(`/regions/${id}`, {
method: 'PUT',
body: JSON.stringify(data)
}),
delete: (id) => request(`/regions/${id}`, {
method: 'DELETE'
})
};
// 构建查询字符串
function buildQueryString(params) {
const query = Object.entries(params)
.filter(([key, value]) => value !== undefined && value !== null && value !== '')
.map(([key, value]) => `${encodeURIComponent(key)}=${encodeURIComponent(value)}`)
.join('&');
return query ? `?${query}` : '';
}
// 公寓管理API
export const apartmentApi = {
getAll: (params = {}) => request(`/apartments${buildQueryString(params)}`),
getById: (id) => request(`/apartments/${id}`),
create: (data) => request('/apartments', {
method: 'POST',
body: JSON.stringify(data)
}),
update: (id, data) => request(`/apartments/${id}`, {
method: 'PUT',
body: JSON.stringify(data)
}),
delete: (id) => request(`/apartments/${id}`, {
method: 'DELETE'
})
};
// 房间管理API
export const roomApi = {
getAll: (params = {}) => request(`/rooms${buildQueryString(params)}`),
getById: (id) => request(`/rooms/${id}`),
create: (data) => request('/rooms', {
method: 'POST',
body: JSON.stringify(data)
}),
update: (id, data) => request(`/rooms/${id}`, {
method: 'PUT',
body: JSON.stringify(data)
}),
delete: (id) => request(`/rooms/${id}`, {
method: 'DELETE'
})
};
// 租客管理API
export const tenantApi = {
getAll: () => request('/tenants'),
getById: (id) => request(`/tenants/${id}`),
create: (data) => request('/tenants', {
method: 'POST',
body: JSON.stringify(data)
}),
update: (id, data) => request(`/tenants/${id}`, {
method: 'PUT',
body: JSON.stringify(data)
}),
delete: (id) => request(`/tenants/${id}`, {
method: 'DELETE'
})
};
// 合同管理API
export const contractApi = {
getAll: () => request('/contracts'),
getById: (id) => request(`/contracts/${id}`),
create: (data) => request('/contracts', {
method: 'POST',
body: JSON.stringify(data)
}),
update: (id, data) => request(`/contracts/${id}`, {
method: 'PUT',
body: JSON.stringify(data)
}),
delete: (id) => request(`/contracts/${id}`, {
method: 'DELETE'
})
};
// 租房管理API
export const rentalApi = {
getAll: (params = {}) => request(`/rentals${buildQueryString(params)}`),
getById: (id) => request(`/rentals/${id}`),
create: (data) => request('/rentals', {
method: 'POST',
body: JSON.stringify(data)
}),
update: (id, data) => request(`/rentals/${id}`, {
method: 'PUT',
body: JSON.stringify(data)
}),
delete: (id) => request(`/rentals/${id}`, {
method: 'DELETE'
})
};
// 统计分析API
export const statisticsApi = {
getRentData: () => request('/statistics/rent'),
getRoomStatus: () => request('/statistics/room-status'),
getRegionHouseStats: () => request('/statistics/region-house'),
getRegionApartmentHouseStats: () => request('/statistics/region-apartment-house')
};
// 水费管理API
export const waterBillApi = {
getAll: (params = {}) => request(`/water-bills${buildQueryString(params)}`),
getById: (id) => request(`/water-bills/${id}`),
create: (data) => request('/water-bills', {
method: 'POST',
body: JSON.stringify(data)
}),
update: (id, data) => request(`/water-bills/${id}`, {
method: 'PUT',
body: JSON.stringify(data)
}),
delete: (id) => request(`/water-bills/${id}`, {
method: 'DELETE'
})
};
// 电费管理API
export const electricityBillApi = {
getAll: (params = {}) => request(`/electricity-bills${buildQueryString(params)}`),
getById: (id) => request(`/electricity-bills/${id}`),
create: (data) => request('/electricity-bills', {
method: 'POST',
body: JSON.stringify(data)
}),
update: (id, data) => request(`/electricity-bills/${id}`, {
method: 'PUT',
body: JSON.stringify(data)
}),
delete: (id) => request(`/electricity-bills/${id}`, {
method: 'DELETE'
})
};
export default {
region: regionApi,
apartment: apartmentApi,
room: roomApi,
tenant: tenantApi,
contract: contractApi,
rental: rentalApi,
statistics: statisticsApi,
waterBill: waterBillApi,
electricityBill: electricityBillApi
};