feat(testReport): 新增台账导入功能并重构报告任务表单

- 新增台账导入面板组件,支持Excel模板下载和批量导入
- 在报告任务表单中集成三步式流程(导入→填写→完成)
- 添加导入结果预览和分组报告状态展示功能
- 扩展API接口支持台账导入和分组报告查询
- 优化表单验证逻辑,移除送资数据必填限制
- 集成日志面板实时显示导入过程状态
- 更新测试报告页面契约验证规则
- 添加监测点数和分组数统计展示
- 实现台账准备状态检查和快照功能
This commit is contained in:
2026-07-03 15:52:56 +08:00
parent 7c8e7d1b7e
commit 55fd3df55d
8 changed files with 1641 additions and 168 deletions

View File

@@ -8,7 +8,7 @@ export const listReportTasksApi = (params: ReportTask.ReportTaskListParams) => {
return http.post(`${REPORT_TASK_BASE_URL}/list`, params)
}
export const createReportTaskApi = (params: ReportTask.ReportTaskSaveRequest) => {
export const createReportTaskApi = (params: ReportTask.ReportTaskAddParam) => {
return http.post<boolean>(`${REPORT_TASK_BASE_URL}/add`, params)
}
@@ -30,3 +30,18 @@ export const exportReportTasksApi = (params: ReportTask.ReportTaskListParams): P
export const submitReportTaskAuditApi = (params: ReportTask.ReportTaskAuditRequest) => {
return http.post<boolean>(`${REPORT_TASK_BASE_URL}/submit-audit`, params)
}
export const downloadReportTaskLedgerTemplateApi = (): Promise<AxiosResponse<Blob>> =>
http.get(`${REPORT_TASK_BASE_URL}/ledger/template`, undefined, {
responseType: 'blob'
}) as unknown as Promise<AxiosResponse<Blob>>
export const importReportTaskLedgerApi = (id: string, formData: FormData) => {
return http.post<ReportTask.ReportTaskLedgerImportResult>(`${REPORT_TASK_BASE_URL}/${id}/ledger/import`, formData, {
headers: { 'Content-Type': 'multipart/form-data' }
})
}
export const listReportTaskGroupReportsApi = (id: string) => {
return http.get<ReportTask.ReportTaskGroupReportRecord[]>(`${REPORT_TASK_BASE_URL}/${id}/group-report/list`)
}

View File

@@ -1,4 +1,12 @@
export namespace ReportTask {
export type ReportTaskGroupReportGenerateState = 0 | 1 | 2 | 3
export type ReportTaskLedgerImportStage =
| '选择文件'
| '校验文件'
| '文件上传'
| '基础资料维护'
| '完成'
export interface ReportTaskRecord {
id?: string
no?: string | null
@@ -16,12 +24,16 @@ export namespace ReportTask {
checkTime?: string | null
checkResult?: string | null
status?: number
pointCount?: number | null
groupCount?: number | null
reportGenerateState?: number | null
createBy?: string | null
createByName?: string | null
createTime?: string | null
updateBy?: string | null
updateByName?: string | null
updateTime?: string | null
groupReports?: ReportTaskGroupReportRecord[] | null
}
export interface ReportTaskListParams {
@@ -33,7 +45,7 @@ export namespace ReportTask {
pageSize?: number
}
export interface ReportTaskSaveRequest {
export interface ReportTaskAddParam {
id?: string
no: string
clientUnitId: string
@@ -45,8 +57,102 @@ export namespace ReportTask {
phonenumber?: string
}
export interface ReportTaskSaveRequest extends ReportTaskAddParam {}
export interface ReportTaskAuditRequest {
id: string
checkResult?: string
}
export interface ReportTaskLedgerImportStageRecord {
stage?: ReportTaskLedgerImportStage | string | null
success?: boolean | null
message?: string | null
}
export interface ReportTaskLedgerImportSnapshotGroupRecord {
groupNo?: number | null
count?: number | null
}
export interface ReportTaskLedgerImportSnapshot {
version?: string | null
importMode?: string | null
summaryFileName?: string | null
sheetSummary?: {
pointSheet?: string | null
deviceSheetPresent?: boolean | null
clientSheetPresent?: boolean | null
} | null
rowCount?: number | null
groupSummary?: ReportTaskLedgerImportSnapshotGroupRecord[] | null
baseDataSummary?: {
deviceAddedCount?: number | null
deviceReuseCount?: number | null
clientAddedCount?: number | null
clientReuseCount?: number | null
} | null
}
export interface ReportTaskLedgerImportResult {
currentStage?: ReportTaskLedgerImportStage | string | null
success?: boolean | null
summaryFileName?: string | null
totalFileCount?: number
pointCount?: number
excelAttachmentCount?: number
wordAttachmentCount?: number
deviceAddedCount?: number
deviceReuseCount?: number
clientAddedCount?: number
clientReuseCount?: number
groupCount?: number
failReasons?: string[] | null
stages?: ReportTaskLedgerImportStageRecord[] | null
}
export interface ReportTaskPointRecord {
id?: string
groupNo?: number | null
substationName?: string | null
pointName?: string | null
monitorTime?: string | null
voltageLevel?: string | null
ptRatio?: string | null
ctRatio?: string | null
baseShortCircuitCapacity?: string | null
minShortCircuitCapacity?: string | null
protocolCapacity?: string | null
powerSupplyCapacity?: string | null
excelAttachmentName?: string | null
}
export interface ReportTaskPointGroupItem {
groupNo: number
pointIds: string[]
}
export interface ReportTaskGroupSaveRequest {
groups: ReportTaskPointGroupItem[]
}
export interface ReportTaskGroupReportRecord {
id?: string
groupNo?: number | null
reportName?: string | null
reportFileName?: string | null
reportStoragePath?: string | null
generateState?: ReportTaskGroupReportGenerateState | null
generateMessage?: string | null
generateTime?: string | null
sortNo?: number | null
}
export interface ReportTaskLedgerPreparedState {
draftId: string
latestImportResult: ReportTaskLedgerImportResult | null
snapshot: ReportTaskLedgerImportSnapshot | null
hasImported: boolean
pendingReimport: boolean
}
}