Files
smart_grid_iot/client/src/api/customerCircuit.ts
T
andyesfly f72644c24f feat: 新增客户用电回路全链路功能
新增客户用电回路表及相关数据库迁移、后端服务、控制器、DTO、实体类和权限配置;新增前端API封装,同时调整路由名称以匹配新业务模块,复用现有菜单权限避免403错误。
2026-10-12 15:20:08 +08:00

132 lines
3.0 KiB
TypeScript

import request from '@/utils/request';
export interface CustomerCircuitInfo {
id: number;
customerId: number;
buildingId: number;
roomId?: number | null;
floorNo?: string;
circuitCode: string;
circuitName: string;
loopSpec?: string;
loadType?: string;
ratedVoltage?: string;
ratedCurrent?: string;
ratedPower?: number | string | null;
status: number;
remark?: string;
sortOrder?: number;
createdAt?: string;
}
export interface CustomerCircuitQuery {
page?: number;
pageSize?: number;
keyword?: string;
customerId?: number;
buildingId?: number;
roomId?: number;
floorNo?: string;
}
export interface CustomerCircuitListResult {
list: CustomerCircuitInfo[];
total: number;
page: number;
pageSize: number;
}
export interface CustomerCircuitCreateParams {
circuitCode: string;
customerId: number;
buildingId: number;
circuitName: string;
roomId?: number;
floorNo?: string;
loopSpec?: string;
loadType?: string;
ratedVoltage?: string;
ratedCurrent?: string;
ratedPower?: number;
status?: number;
remark?: string;
sortOrder?: number;
}
export interface CustomerCircuitUpdateParams {
circuitCode?: string;
customerId?: number;
buildingId?: number;
circuitName?: string;
roomId?: number;
floorNo?: string;
loopSpec?: string;
loadType?: string;
ratedVoltage?: string;
ratedCurrent?: string;
ratedPower?: number;
status?: number;
remark?: string;
sortOrder?: number;
}
// ==================== 空间拓扑(一次返回整棵树) ====================
export interface TopologyRoom {
id: number;
roomCode: string;
roomName: string;
buildingId: number;
floorNo?: string;
roomPurpose?: string;
deptId?: number;
circuits: CustomerCircuitInfo[];
}
export interface TopologyFloor {
floorNo: string;
rooms: TopologyRoom[];
circuits: CustomerCircuitInfo[];
}
export interface TopologyBuilding {
id: number;
customerId: number;
buildingName: string;
purpose?: string;
basicInfo?: string;
floorCount?: number;
floorDownCount?: number;
floors: TopologyFloor[];
}
export interface CustomerTopologyResult {
buildings: TopologyBuilding[];
}
// ==================== 常量 ====================
export const CIRCUIT_LOAD_TYPES = ['照明', '动力', '空调', '插座', '电梯', '消防', '其他'];
export const CIRCUIT_STATUS_OPTIONS = [
{ label: '正常', value: 1 },
{ label: '停用', value: 0 },
];
export const customerCircuitApi = {
getList: (params: CustomerCircuitQuery) =>
request.get<CustomerCircuitListResult>('/customer-circuits', { params }),
getTopology: (customerId: number) =>
request.get<CustomerTopologyResult>('/customer-circuits/topology', { params: { customerId } }),
getDetail: (id: number) =>
request.get<CustomerCircuitInfo>(`/customer-circuits/${id}`),
create: (data: CustomerCircuitCreateParams) =>
request.post('/customer-circuits', data),
update: (id: number, data: CustomerCircuitUpdateParams) =>
request.put(`/customer-circuits/${id}`, data),
delete: (id: number) =>
request.delete(`/customer-circuits/${id}`),
};