From ed81e585833186c7161003f86eaf74291f7808fe Mon Sep 17 00:00:00 2001 From: dk <1260500659@qq.com> Date: Tue, 21 Jul 2026 15:52:59 +0800 Subject: [PATCH] =?UTF-8?q?feat(aireport):=20=E6=96=B0=E5=A2=9E=E5=A4=9A?= =?UTF-8?q?=E6=A8=A1=E6=9D=BF=E6=89=B9=E4=BB=BB=E5=8A=A1=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 在动态路由中添加 reportTaskMulti 和 testReportMulti 的路径映射 - 新增 TestReportMulti API 接口定义,包括批任务记录、列表参数、模板目录等接口类型 - 实现批任务多模板相关 API 方法,包含列表查询、压缩包验证、创建、详情获取等功能 - 创建 testReportMulti 页面组件,实现批任务管理界面和交互逻辑 - 开发批任务创建对话框组件,支持压缩包上传和子报告配置功能 --- .../src/api/aireport/testReportMulti/index.ts | 40 ++ .../testReportMulti/interface/index.ts | 72 +++ frontend/src/routers/modules/dynamicRouter.ts | 4 + .../TestReportMultiCreateDialog.vue | 438 +++++++++++++ .../components/TestReportMultiTable.vue | 133 ++++ .../views/aireport/testReportMulti/index.vue | 607 ++++++++++++++++++ frontend/tsconfig.app.json | 4 +- 7 files changed, 1297 insertions(+), 1 deletion(-) create mode 100644 frontend/src/api/aireport/testReportMulti/index.ts create mode 100644 frontend/src/api/aireport/testReportMulti/interface/index.ts create mode 100644 frontend/src/views/aireport/testReportMulti/components/TestReportMultiCreateDialog.vue create mode 100644 frontend/src/views/aireport/testReportMulti/components/TestReportMultiTable.vue create mode 100644 frontend/src/views/aireport/testReportMulti/index.vue diff --git a/frontend/src/api/aireport/testReportMulti/index.ts b/frontend/src/api/aireport/testReportMulti/index.ts new file mode 100644 index 0000000..a09f044 --- /dev/null +++ b/frontend/src/api/aireport/testReportMulti/index.ts @@ -0,0 +1,40 @@ +import http from '@/api' +import type { AxiosResponse } from 'axios' +import type { ReportTaskMulti } from './interface' + +const REPORT_TASK_MULTI_BASE_URL = '/api/test-report-multi' + +export const listReportTaskMultisApi = (params: ReportTaskMulti.ReportTaskMultiListParams) => { + return http.post(`${REPORT_TASK_MULTI_BASE_URL}/list`, params) +} + +export const validateReportTaskMultiZipApi = (formData: FormData) => { + return http.post(`${REPORT_TASK_MULTI_BASE_URL}/zip/validate`, formData, { + headers: { 'Content-Type': 'multipart/form-data' } + }) +} + +export const createReportTaskMultiApi = (params: ReportTaskMulti.ReportTaskMultiCreateParam) => { + return http.post(`${REPORT_TASK_MULTI_BASE_URL}/create`, params) +} + +export const getReportTaskMultiDetailApi = (id: string) => { + return http.get(`${REPORT_TASK_MULTI_BASE_URL}/${id}`) +} + +export const listReportTaskMultiChildReportsApi = (id: string) => { + return http.get(`${REPORT_TASK_MULTI_BASE_URL}/${id}/child-report/list`) +} + +export const downloadReportTaskMultiApi = (id: string): Promise> => + http.get(`${REPORT_TASK_MULTI_BASE_URL}/${id}/download`, undefined, { + responseType: 'blob' + }) as unknown as Promise> + +export const deleteReportTaskMultisApi = (ids: string[]) => { + return http.post(`${REPORT_TASK_MULTI_BASE_URL}/delete`, ids) +} + +export const generateReportTaskMultiApi = (id: string) => { + return http.post(`${REPORT_TASK_MULTI_BASE_URL}/${id}/generate`) +} diff --git a/frontend/src/api/aireport/testReportMulti/interface/index.ts b/frontend/src/api/aireport/testReportMulti/interface/index.ts new file mode 100644 index 0000000..3ba6c86 --- /dev/null +++ b/frontend/src/api/aireport/testReportMulti/interface/index.ts @@ -0,0 +1,72 @@ +export namespace ReportTaskMulti { + export interface ReportTaskMultiRecord { + id?: string + no?: string | null + zipFileName?: string | null + summaryFileName?: string | null + dirCount?: number | null + childReportCount?: number | null + pointCount?: number | null + importState?: number | null + generateState?: number | null + status?: number | null + createBy?: string | null + createByName?: string | null + createTime?: string | null + updateBy?: string | null + updateByName?: string | null + updateTime?: string | null + } + + export interface ReportTaskMultiListParams { + keyword?: string + searchBeginTime?: string + searchEndTime?: string + timeRange?: string[] + generateState?: number + pageNum?: number + pageSize?: number + } + + export interface ReportTaskMultiTemplateDirRecord { + dirName?: string | null + dirPath?: string | null + pointCount?: number | null + groupCount?: number | null + excelAttachmentCount?: number | null + wordAttachmentCount?: number | null + } + + export interface ReportTaskMultiValidateResult { + success?: boolean | null + sessionId?: string | null + zipFileName?: string | null + summaryFileName?: string | null + dirCount?: number | null + childReportCount?: number | null + pointCount?: number | null + excelAttachmentCount?: number | null + wordAttachmentCount?: number | null + orphanAttachmentPaths?: string[] | null + failReasons?: string[] | null + templateDirs?: ReportTaskMultiTemplateDirRecord[] | null + } + + export interface ReportTaskMultiChildConfig { + templateDirName: string + templateDirPath: string + no: string + clientUnitId: string + reportModelId: string + createUnit: string + contractNumber: string + standard: string[] + phonenumber?: string + } + + export interface ReportTaskMultiCreateParam { + no: string + sessionId: string + childReports: ReportTaskMultiChildConfig[] + } +} diff --git a/frontend/src/routers/modules/dynamicRouter.ts b/frontend/src/routers/modules/dynamicRouter.ts index 6e72698..492d32b 100644 --- a/frontend/src/routers/modules/dynamicRouter.ts +++ b/frontend/src/routers/modules/dynamicRouter.ts @@ -44,8 +44,12 @@ const COMPONENT_PATH_ALIASES: Record = { // 报告菜单后端使用 aiReport,前端目录沿用既有 aireport 命名。 '/aiReport/reportTask': '/aireport/testReport', '/aiReport/reportTask/index': '/aireport/testReport/index', + '/aiReport/reportTaskMulti': '/aireport/testReportMulti', + '/aiReport/reportTaskMulti/index': '/aireport/testReportMulti/index', '/aiReport/testReport': '/aireport/testReport', '/aiReport/testReport/index': '/aireport/testReport/index', + '/aiReport/testReportMulti': '/aireport/testReportMulti', + '/aiReport/testReportMulti/index': '/aireport/testReportMulti/index', '/aiReport/reportModel': '/aireport/reportModel', '/aiReport/reportModel/index': '/aireport/reportModel/index', '/aiReport/clientUnit': '/aireport/clientUnit', diff --git a/frontend/src/views/aireport/testReportMulti/components/TestReportMultiCreateDialog.vue b/frontend/src/views/aireport/testReportMulti/components/TestReportMultiCreateDialog.vue new file mode 100644 index 0000000..385010e --- /dev/null +++ b/frontend/src/views/aireport/testReportMulti/components/TestReportMultiCreateDialog.vue @@ -0,0 +1,438 @@ + + + + + diff --git a/frontend/src/views/aireport/testReportMulti/components/TestReportMultiTable.vue b/frontend/src/views/aireport/testReportMulti/components/TestReportMultiTable.vue new file mode 100644 index 0000000..e26180a --- /dev/null +++ b/frontend/src/views/aireport/testReportMulti/components/TestReportMultiTable.vue @@ -0,0 +1,133 @@ + + + diff --git a/frontend/src/views/aireport/testReportMulti/index.vue b/frontend/src/views/aireport/testReportMulti/index.vue new file mode 100644 index 0000000..964ff2c --- /dev/null +++ b/frontend/src/views/aireport/testReportMulti/index.vue @@ -0,0 +1,607 @@ + + + + + diff --git a/frontend/tsconfig.app.json b/frontend/tsconfig.app.json index 32d87f2..6ff8aaf 100644 --- a/frontend/tsconfig.app.json +++ b/frontend/tsconfig.app.json @@ -3,7 +3,9 @@ "include": [ "env.d.ts", "src/**/*", - "src/**/*.vue" + "src/**/*.vue", + "src/views/aireport/testReportMulti/**/*.vue", + "src/views/aireport/testReportMulti/**/*.ts" ], "exclude": [ "src/**/__tests__/*"