fix
This commit is contained in:
@@ -86,6 +86,11 @@ export const fetchAssetList = (data?: AssetListParams) => {
|
||||
return request.post("/Assets/v1/asset/list", data || {});
|
||||
};
|
||||
|
||||
/** 获取资产列表(不分页,下拉) */
|
||||
export const fetchAssetAll = (params?: { keyword?: string }) => {
|
||||
return request.get("/Assets/v1/asset/all", { params });
|
||||
};
|
||||
|
||||
/** 获取资产详情 */
|
||||
export const fetchAssetDetail = (id: number) => {
|
||||
return request.get(`/Assets/v1/asset/detail/${id}`);
|
||||
|
||||
@@ -38,14 +38,14 @@ export const deleteDatacenter = (id: number) => {
|
||||
};
|
||||
|
||||
/** 获取省份列表(用于下拉选择) */
|
||||
export const fetchProvinceList = () => {
|
||||
return request.get("/Assets/v1/province/all");
|
||||
};
|
||||
export const fetchProvinceList = (params?: { keyword?: string }) => {
|
||||
return request.get('/Assets/v1/province/all', { params })
|
||||
}
|
||||
|
||||
/** 获取城市列表(用于下拉选择) */
|
||||
export const fetchCityList = () => {
|
||||
return request.get("/Assets/v1/city/all");
|
||||
};
|
||||
export const fetchCityList = (provinceId: number, params?: { keyword?: string }) => {
|
||||
return request.get(`/Assets/v1/city/province/${provinceId}`, { params })
|
||||
}
|
||||
|
||||
/** 根据城市获取数据中心列表 */
|
||||
export const fetchDatacenterByCity = (cityId: number) => {
|
||||
|
||||
@@ -1,25 +1,91 @@
|
||||
import { request } from "@/api/request";
|
||||
import { request } from '@/api/request'
|
||||
|
||||
/** 获取 工单列表 */
|
||||
export const fetchFeedbackTickets = (data?: {
|
||||
page?: number,
|
||||
page_size?: number,
|
||||
size?: number,
|
||||
keyword?: string,
|
||||
type?: string,
|
||||
priority?: string,
|
||||
status?: string,
|
||||
creator_id?: number,
|
||||
assignee_id?: number
|
||||
}) => {
|
||||
// 兼容 size 参数,转换为 page_size
|
||||
const params: any = data ? { ...data } : {};
|
||||
if (params.size !== undefined && params.page_size === undefined) {
|
||||
params.page_size = params.size;
|
||||
delete params.size;
|
||||
/**
|
||||
* 后端要求 status 为字符串数组;统一为 string[](单选、逗号分隔写法也转成多项)。
|
||||
*/
|
||||
function normalizeTicketListStatusParam(params: Record<string, any>) {
|
||||
const raw = params.status
|
||||
if (raw === undefined || raw === null) return
|
||||
let arr: string[]
|
||||
if (Array.isArray(raw)) {
|
||||
arr = raw.map((s) => String(s).trim()).filter(Boolean)
|
||||
} else {
|
||||
const s = String(raw).trim()
|
||||
if (!s) {
|
||||
delete params.status
|
||||
return
|
||||
}
|
||||
arr = s.includes(',') ? s.split(',').map((x) => x.trim()).filter(Boolean) : [s]
|
||||
}
|
||||
return request.get("/Feedback/v1/tickets", params ? { params } : undefined);
|
||||
};
|
||||
if (arr.length === 0) delete params.status
|
||||
else params.status = arr
|
||||
}
|
||||
|
||||
/** GET query:`status` 重复键 status=a&status=b(与后端 []string 绑定一致) */
|
||||
function serializeFeedbackTicketListParams(params: Record<string, any>): string {
|
||||
const usp = new URLSearchParams()
|
||||
const keys = Object.keys(params).sort()
|
||||
for (const key of keys) {
|
||||
const value = params[key]
|
||||
if (value === undefined || value === null || value === '') continue
|
||||
if (key === 'status' && Array.isArray(value)) {
|
||||
for (const item of value) {
|
||||
const t = String(item).trim()
|
||||
if (t) usp.append('status', t)
|
||||
}
|
||||
continue
|
||||
}
|
||||
usp.append(key, String(value))
|
||||
}
|
||||
return usp.toString()
|
||||
}
|
||||
|
||||
/** 避免 undefined / null / 空串进入 query(部分运行时下发异常键名) */
|
||||
function stripEmptyQueryValues(params: Record<string, any>) {
|
||||
Object.keys(params).forEach((k) => {
|
||||
const v = params[k]
|
||||
if (v === undefined || v === null || v === '') {
|
||||
delete params[k]
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
/** 获取工单列表 GET /Feedback/v1/tickets(分页与多条件筛选) */
|
||||
export const fetchFeedbackTickets = (data?: {
|
||||
page?: number
|
||||
page_size?: number
|
||||
size?: number
|
||||
/** 单状态、逗号分隔、或 string[](将统一为数组并以重复 query 键序列化) */
|
||||
status?: string | string[]
|
||||
type?: string
|
||||
priority?: string
|
||||
creator_id?: number
|
||||
assignee_id?: number
|
||||
category_id?: number
|
||||
keyword?: string
|
||||
/** 格式 YYYY-MM-DD HH:MM:SS */
|
||||
start_time?: string
|
||||
/** 格式 YYYY-MM-DD HH:MM:SS */
|
||||
end_time?: string
|
||||
}) => {
|
||||
const params: any = data ? { ...data } : {}
|
||||
if (params.size !== undefined && params.page_size === undefined) {
|
||||
params.page_size = params.size
|
||||
delete params.size
|
||||
}
|
||||
normalizeTicketListStatusParam(params)
|
||||
stripEmptyQueryValues(params)
|
||||
const config =
|
||||
Object.keys(params).length > 0
|
||||
? {
|
||||
params,
|
||||
paramsSerializer: {
|
||||
serialize: (p: Record<string, any>) => serializeFeedbackTicketListParams(p),
|
||||
},
|
||||
}
|
||||
: undefined
|
||||
return request.get('/Feedback/v1/tickets', config)
|
||||
}
|
||||
|
||||
/** 创建 工单 */
|
||||
export const createFeedbackTicket = (data: any) => request.post("/Feedback/v1/tickets", data);
|
||||
|
||||
@@ -16,6 +16,14 @@ export const fetchFloorDetail = (id: number) => {
|
||||
return request.get(`/Assets/v1/floor/detail/${id}`);
|
||||
};
|
||||
|
||||
/** 根据数据中心获取楼层列表(下拉,不分页) */
|
||||
export const fetchFloorListByDatacenter = (
|
||||
datacenterId: number,
|
||||
params?: { name?: string }
|
||||
) => {
|
||||
return request.get(`/Assets/v1/floor/datacenter/${datacenterId}`, { params });
|
||||
};
|
||||
|
||||
/** 创建楼层 */
|
||||
export const createFloor = (data: any) => {
|
||||
return request.post("/Assets/v1/floor/create", data);
|
||||
@@ -32,6 +40,9 @@ export const deleteFloor = (id: number) => {
|
||||
};
|
||||
|
||||
/** 获取数据中心列表(用于下拉选择) */
|
||||
export const fetchDatacenterList = () => {
|
||||
return request.get("/Assets/v1/datacenter/all");
|
||||
export const fetchDatacenterList = (params?: { keyword?: string; name?: string }) => {
|
||||
const normalizedParams = params?.keyword
|
||||
? { ...params, name: params.name ?? params.keyword }
|
||||
: params
|
||||
return request.get("/Assets/v1/datacenter/all", { params: normalizedParams });
|
||||
};
|
||||
|
||||
@@ -23,6 +23,14 @@ export const fetchRackListByDatacenter = (
|
||||
return request.get(`/Assets/v1/rack/datacenter/${datacenterId}`, { params });
|
||||
};
|
||||
|
||||
/** 根据楼层获取机柜列表(下拉,不分页) */
|
||||
export const fetchRackListByFloor = (
|
||||
floorId: number,
|
||||
params?: { name?: string }
|
||||
) => {
|
||||
return request.get(`/Assets/v1/rack/floor/${floorId}`, { params });
|
||||
};
|
||||
|
||||
/** 获取机柜详情 */
|
||||
export const fetchRackDetail = (id: number) => {
|
||||
return request.get(`/Assets/v1/rack/detail/${id}`);
|
||||
@@ -49,11 +57,17 @@ export const fetchSupplierList = () => {
|
||||
};
|
||||
|
||||
/** 获取数据中心列表(用于下拉选择) */
|
||||
export const fetchDatacenterList = () => {
|
||||
return request.get("/Assets/v1/datacenter/all");
|
||||
export const fetchDatacenterList = (params?: { keyword?: string; name?: string }) => {
|
||||
const normalizedParams = params?.keyword
|
||||
? { ...params, name: params.name ?? params.keyword }
|
||||
: params
|
||||
return request.get("/Assets/v1/datacenter/all", { params: normalizedParams });
|
||||
};
|
||||
|
||||
/** 获取楼层列表(用于下拉选择) */
|
||||
export const fetchFloorListForSelect = (datacenterId?: number) => {
|
||||
return request.get("/Assets/v1/floor/all", { params: { datacenter_id: datacenterId } });
|
||||
export const fetchFloorListForSelect = (params?: { datacenter_id?: number; keyword?: string; name?: string }) => {
|
||||
const normalizedParams = params?.keyword
|
||||
? { ...params, name: params.name ?? params.keyword }
|
||||
: params
|
||||
return request.get("/Assets/v1/floor/all", { params: normalizedParams });
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user