Files
CN_Tool_client/frontend/src/api/tools/mmsmapping/index.ts
yexb ef80aff151 feat(steady): 重构稳态校验功能并优化界面布局
- 更新 API 接口路径从 /steady/data-view/checksquare/* 到 /steady/checksquare/*
- 修改校验任务状态枚举值 FAILED 为 FAIL 并更新相关处理逻辑
- 移除缺失率和最大连续缺失分钟数字段,简化数据完整性计算
- 添加新的创建结果面板组件 ChecksquareCreateResultPanel.vue
- 调整创建对话框布局,采用两行搜索控件设计
- 更新任务表头部按钮文字为"新增"并调整搜索列配置为5列
- 修改详情面板显示开始时间和结束时间字段
- 重构工作台界面布局,使用 flex 布局替代 grid 布局
- 更新设备类型相关 API 接口和数据结构定义
- 添加设备类型字典常量并更新路由配置
- 优化搜索表单展开收起逻辑的计算方式
- 调整创建流程不再轮询获取任务详情,改为直接显示摘要信息
- 更新数据完整性格式化函数参数和调用方式
- 修改创建对话框样式类名和尺寸配置
- 添加设备类型管理相关的接口定义和实现方法
2026-06-15 08:40:44 +08:00

121 lines
5.1 KiB
TypeScript
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.

import http from '@/api'
import type { MmsMapping } from './interface'
const buildIcdFormData = (icdFile: File) => {
const formData = new FormData()
formData.append('icdFile', icdFile)
return formData
}
const buildIcdPathFormData = (icdFile: File, request: MmsMapping.CreateIcdPathRequest | MmsMapping.UpdateIcdPathRequest) => {
const formData = buildIcdFormData(icdFile)
formData.append('request', new Blob([JSON.stringify(request)], { type: 'application/json' }))
return formData
}
export const listDeviceTypesApi = () => {
return http.get<MmsMapping.DeviceType[]>('/api/device-types')
}
export const createDeviceTypeApi = (params: MmsMapping.CreateDeviceTypeRequest) => {
return http.post<boolean>('/api/device-types/add', params)
}
export const updateDeviceTypeApi = (params: MmsMapping.UpdateDeviceTypeRequest) => {
return http.post<boolean>('/api/device-types/update', params)
}
export const deleteDeviceTypesApi = (ids: string[]) => {
return http.post<boolean>('/api/device-types/delete', ids)
}
export const saveIcdCheckResultApi = (id: string, params: MmsMapping.SaveIcdCheckResultRequest) => {
return http.post<boolean>(`/api/device-types/${id}/icd-check-result`, params)
}
export const pqdifCheckApi = (id: string) => {
return http.post<MmsMapping.PqdifCheckPlaceholder>(`/api/device-types/${id}/pqdif-check`)
}
export const listIcdPathsApi = (params: MmsMapping.IcdPathListRequest) => {
return http.post<MmsMapping.IcdPathRecord[]>('/api/mms-mapping/icd-paths/list', params)
}
export const createIcdPathApi = (params: MmsMapping.CreateIcdPathRequest) => {
return http.post<boolean>('/api/mms-mapping/icd-paths/add', params)
}
export const createIcdPathWithFileApi = (params: MmsMapping.CreateIcdPathWithFileRequest) => {
return http.post<boolean>('/api/mms-mapping/icd-paths/add', buildIcdPathFormData(params.icdFile, params.request), {
headers: { 'Content-Type': 'multipart/form-data' }
})
}
export const updateIcdPathApi = (params: MmsMapping.UpdateIcdPathRequest) => {
return http.post<boolean>('/api/mms-mapping/icd-paths/update', params)
}
export const updateIcdPathWithFileApi = (params: MmsMapping.UpdateIcdPathWithFileRequest) => {
return http.post<boolean>('/api/mms-mapping/icd-paths/update', buildIcdPathFormData(params.icdFile, params.request), {
headers: { 'Content-Type': 'multipart/form-data' }
})
}
export const deleteIcdPathsApi = (ids: string[]) => {
return http.post<boolean>('/api/mms-mapping/icd-paths/delete', ids)
}
export const saveIcdPathCheckResultApi = (id: string, params: MmsMapping.SaveIcdPathCheckResultRequest) => {
return http.post<boolean>(`/api/mms-mapping/icd-paths/${id}/icd-check-result`, params)
}
export const checkIcdJsonConsistencyApi = (params: MmsMapping.IcdJsonConsistencyCheckRequest) => {
return http.post<MmsMapping.IcdJsonConsistencyCheckResponse>('/api/mms-mapping/check-icd-json-consistency', params)
}
export const getIcdApi = (params: MmsMapping.GetIcdParams) => {
const formData = buildIcdFormData(params.icdFile)
// 关键业务节点:解析 ICD 按钮改走独立 get-icd 接口,只上传当前选择的 ICD 文件。
return http.post<MmsMapping.MappingTaskResponse>('/api/mms-mapping/get-icd', formData, {
headers: { 'Content-Type': 'multipart/form-data' }
})
}
export const getIcdMmsJsonApi = (params: MmsMapping.GetIcdMmsJsonParams) => {
const formData = buildIcdFormData(params.icdFile)
// 接口文档要求 request 以 application/json 分段提交,避免后端按普通字符串丢失 JSON 结构。
formData.append('request', new Blob([JSON.stringify(params.request)], { type: 'application/json' }))
// 关键业务节点:生成映射仍走 get-icd-mms-json提交时保持 icdFile + request 的 multipart 结构。
return http.post<MmsMapping.MappingTaskResponse>('/api/mms-mapping/get-icd-mms-json', formData, {
headers: { 'Content-Type': 'multipart/form-data' }
})
}
export const getXmlFromJsonApi = (params: MmsMapping.GetXmlFromJsonParams) => {
const formData = new FormData()
// 关键业务节点XML 映射由后端根据已生成的 mappingJson 转换,前端保持 request JSON Part 的提交格式。
formData.append('request', new Blob([JSON.stringify(params.request)], { type: 'application/json' }))
return http.post<MmsMapping.MappingTaskResponse>('/api/mms-mapping/get-xml-from-json', formData, {
headers: { 'Content-Type': 'multipart/form-data' }
})
}
export const buildIndexConfirmDataApi = (params: MmsMapping.IndexCandidateGroup[]) => {
// 关键业务节点ICD 候选数据需要先转换成前端确认弹窗模型,后续人工确认才能继续生成正式索引配置。
return http.post<MmsMapping.IndexConfirmGroup[]>('/api/mms-mapping/build-index-confirm-data', params)
}
export const buildIndexSelectionApi = (params: MmsMapping.BuildIndexSelectionRequest) => {
// 关键业务节点:人工确认完成后,必须把 confirmData 和 confirmedData 一并提交给后端生成正式 request.indexSelection。
return http.post<MmsMapping.IndexSelectionGroup[]>('/api/mms-mapping/build-index-selection', params)
}