tangweijie 79cfcf9c6d feat(report): 更新评估报告前端组件和 API
- 优化 DimensionAnalysisPanel 维度分析面板
- 更新 LlmResultPanel LLM 结果展示组件
- 完善 PromptEditor 提示词编辑器功能
- 改进 ReportForm 报告表单交互
- 优化 ReportEditDrawer 报告编辑抽屉
- 调整 prisoner 页面显示
- 更新 evaluation-report 和 report API

Co-Authored-By: Claude <noreply@anthropic.com>
2026-01-20 12:13:13 +08:00

374 lines
11 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 request from '@/config/axios'
// 导入评估报告更新请求类型
import type { ReportUpdateReqVO } from '../evaluation-report'
// ============ 评估报告模板相关类型 ============
/** 评估报告模板分页参数 */
export interface ReportTemplatePageParams {
pageNo: number
pageSize: number
name?: string
type?: number
status?: number
}
/** 评估维度配置 */
export interface ReportDimension {
id?: number
name: string // 维度名称
aiPrompt?: string // AI提示词
dataSources: string[] // 数据源绑定
outputFormat: string // 输出格式text/paragraph/list
enableAi: boolean // 是否AI生成
editorType: string // 编辑器类型text/richtext/select
sort: number // 排序
}
/** 评估报告模板 */
export interface ReportTemplate {
id: number
name: string // 模板名称
type: number // 模板类型1-入监综合评估 2-定期考核报告 3-出监评估 4-减刑假释建议 5-专项评估
titleFormat: string // 报告标题格式
dimensions: ReportDimension[] // 评估维度
aiPromptConfig?: string // AI提示词配置JSON
styleConfig?: string // 样式配置JSON
status: number // 状态0-停用 1-启用
isDefault: boolean // 是否默认
version: number // 版本号
remark?: string // 备注
creator?: string
createTime?: string
}
// ============ 评估报告相关类型 ============
/** 报告分页参数 */
export interface ReportPageParams {
pageNo: number
pageSize: number
reportNo?: string
prisonerNo?: string
templateId?: number
status?: number
reportDate?: string[]
}
/** 报告维度内容 */
export interface ReportDimensionContent {
dimensionId: number
dimensionName: string
content: string // 内容
dataSources?: string // 数据源JSON
isAiGenerated: boolean // 是否AI生成
aiGenerateTime?: string // AI生成时间
lastModifyTime?: string // 最后修改时间
lastModifyBy?: string // 最后修改人
enableAi?: boolean
sort?: number
}
/** 评估报告 */
export interface Report {
id: number
reportNo: string // 报告编号
prisonerId: number // 罪犯ID
prisonerNo: string // 罪犯编号
prisonerName?: string // 罪犯姓名
areaId?: number // 监区ID
areaName?: string // 监区名称
templateId: number // 模板ID
templateName?: string // 模板名称
title: string // 报告标题
reportDate: string // 报告日期
dimensions: ReportDimensionContent[] // 维度内容
conclusion?: string // 综合结论
suggestions?: string // 改造建议
riskLevel?: number // 风险等级1-低风险 2-中风险 3-高风险 4-极高风险
attachments?: string[] // 附件列表
status: number // 状态1-草稿 2-待审核 3-已通过 4-已退回
version: number // 版本号
signature?: string // 数字签名
fingerprint?: string // 报告指纹
submitterId?: number // 提交人ID
submitterName?: string // 提交人姓名
submitTime?: string // 提交时间
reviewerId?: number // 审核人ID
reviewerName?: string // 审核人姓名
reviewTime?: string // 审核时间
reviewComment?: string // 审核意见
remark?: string // 备注
creator?: string
createTime?: string
}
/** 报告创建请求 */
export interface ReportCreateReqVO {
prisonerId: number
templateId: number
title: string
reportDate?: string
evaluationDate?: string
evaluationCycle?: number
evaluationType?: number
prisonerNo?: string
prisonerName?: string
areaId?: number
areaName?: string
status?: number
dimensions?: ReportDimensionContent[]
}
// ============ 快捷评语相关类型 ============
/** 快捷评语分类 */
export interface CommentCategory {
id: number
name: string
type: number // 评估类型
sort: number
status: number
}
/** 快捷评语 */
export interface QuickComment {
id: number
categoryId: number
categoryName?: string // 分类名称
content: string
usageCount: number // 使用次数
sort: number
status: number
}
// ============ 报告版本历史 ============
/** 报告版本历史 */
export interface ReportVersion {
id: number
reportId: number
version: number
content: string // 内容快照JSON
modifierId: number
modifierName: string
modifyTime: string
comment?: string // 版本备注
}
// ============ 评估报告模板 API ============
export const ReportTemplateApi = {
// 查询模板分页
getTemplatePage: async (params: ReportTemplatePageParams) => {
return await request.get({ url: '/prison/evaluation-report/template/page', params })
},
// 查询模板详情
getTemplate: async (id: number) => {
return await request.get({ url: '/prison/evaluation-report/template/get?id=' + id })
},
// 新增模板
createTemplate: async (data: ReportTemplate) => {
return await request.post({ url: '/prison/evaluation-report/template/create', data })
},
// 修改模板
updateTemplate: async (data: ReportTemplate) => {
return await request.put({ url: '/prison/evaluation-report/template/update', data })
},
// 删除模板
deleteTemplate: async (id: number) => {
return await request.delete({ url: '/prison/evaluation-report/template/delete?id=' + id })
},
// 批量删除模板
deleteTemplateList: async (ids: number[]) => {
return await request.delete({ url: '/prison/evaluation-report/template/delete-list?ids=' + ids.join(',') })
},
// 获取启用的模板列表
getEnabledTemplateList: async () => {
return await request.get({ url: '/prison/evaluation-report/template/list-enabled' })
},
// 导出模板
exportTemplate: async (params: ReportTemplatePageParams) => {
return await request.download({ url: '/prison/evaluation-report/template/export-excel', params })
}
}
// ============ 评估报告 API ============
export const ReportApi = {
// 查询报告分页
getReportPage: async (params: ReportPageParams) => {
return await request.get({ url: '/prison/evaluation-report/report/page', params })
},
// 查询报告详情
getReport: async (id: number) => {
return await request.get({ url: '/prison/evaluation-report/report/get?id=' + id })
},
// 根据报告编号查询
getReportByNo: async (reportNo: string) => {
return await request.get({ url: '/prison/evaluation-report/report/get-by-report-no?reportNo=' + reportNo })
},
// 根据罪犯ID获取报告列表
getReportsByPrisonerId: async (prisonerId: number) => {
return await request.get({ url: '/prison/evaluation-report/report/list-by-prisoner?prisonerId=' + prisonerId })
},
// 新增报告
createReport: async (data: ReportCreateReqVO) => {
return await request.post({ url: '/prison/evaluation-report/report/create', data })
},
// 修改报告 - 只传递需要更新的字段
updateReport: async (data: ReportUpdateReqVO) => {
return await request.put({ url: '/prison/evaluation-report/report/update', data })
},
// 删除报告
deleteReport: async (id: number) => {
return await request.delete({ url: '/prison/evaluation-report/report/delete?id=' + id })
},
// 批量删除报告
deleteReportList: async (ids: number[]) => {
return await request.delete({ url: '/prison/evaluation-report/report/delete-list?ids=' + ids.join(',') })
},
// 提交审核
submitReport: async (id: number) => {
return await request.post({ url: '/prison/evaluation-report/report/submit?id=' + id })
},
// 审核报告
auditReport: async (id: number, status: number, comment?: string) => {
return await request.post({ url: '/prison/evaluation-report/report/audit', data: { id, status, comment } })
},
// 作废报告
voidReport: async (id: number) => {
return await request.post({ url: '/prison/evaluation-report/report/void?id=' + id })
},
// 导出报告 Excel
exportReportExcel: async (params: ReportPageParams) => {
return await request.download({ url: '/prison/evaluation-report/report/export-excel', params })
},
// AI生成报告
generateReportByAi: async (reportId: number, dimensionIds?: number[]) => {
return await request.post({
url: '/prison/evaluation-report/report/generate-by-ai',
data: { reportId, dimensionIds }
})
},
// AI生成单个维度
generateDimensionByAi: async (reportId: number, dimensionId: number) => {
return await request.post({
url: '/prison/evaluation-report/dimension/generate-by-ai',
data: { reportId, dimensionId }
})
}
}
// ============ 快捷评语 API ============
export const QuickCommentApi = {
// 查询评语分页
getCommentPage: async (params: { pageNo: number; pageSize: number; categoryId?: number; keyword?: string; status?: number }) => {
return await request.get({ url: '/prison/evaluation-report/comment/page', params })
},
// 根据类型和等级获取评语列表
getCommentsByTypeAndLevel: async (commentType: number, level?: number) => {
return await request.get({ url: '/prison/evaluation-report/comment/list-by-type-level', params: { commentType, level } })
},
// 根据维度ID获取评语列表
getCommentsByDimensionId: async (dimensionId: number) => {
return await request.get({ url: '/prison/evaluation-report/comment/list-by-dimension', params: { dimensionId } })
},
// 新增评语
createComment: async (data: QuickComment) => {
return await request.post({ url: '/prison/evaluation-report/comment/create', data })
},
// 修改评语
updateComment: async (data: QuickComment) => {
return await request.put({ url: '/prison/evaluation-report/comment/update', data })
},
// 删除评语
deleteComment: async (id: number) => {
return await request.delete({ url: '/prison/evaluation-report/comment/delete?id=' + id })
},
// 批量删除评语
deleteCommentList: async (ids: number[]) => {
return await request.delete({ url: '/prison/evaluation-report/comment/delete-list?ids=' + ids.join(',') })
},
// 获取评语详情
getComment: async (id: number) => {
return await request.get({ url: '/prison/evaluation-report/comment/get?id=' + id })
}
}
// ============ 罪犯选择相关 API ============
/** 罪犯简要信息 */
export interface PrisonerBrief {
id: number
prisonerNo: string
name: string
areaId: number
areaName: string
riskLevel?: number // 风险等级
}
/** 罪犯分页参数 */
export interface PrisonerPageParams {
pageNo: number
pageSize: number
name?: string
prisonerNo?: string
areaId?: number
}
export const PrisonerSelectApi = {
// 查询罪犯简要信息分页
getPrisonerPage: async (params: PrisonerPageParams) => {
return await request.get({ url: '/prison/prisoner/brief/page', params })
},
// 查询所有罪犯简要信息(用于选择列表)
getAllPrisoners: async (params: { name?: string; prisonerNo?: string }) => {
return await request.get({ url: '/prison/prisoner/brief/list', params })
}
}
// ============ 报告版本历史 API ============
export const ReportVersionApi = {
// 获取版本历史列表
getVersionList: async (reportId: number) => {
return await request.get({ url: '/prison/evaluation-report/version/list-by-report', params: { reportId } })
},
// 恢复版本
restoreVersion: async (versionId: number) => {
return await request.post({ url: '/prison/evaluation-report/version/restore', data: { id: versionId } })
}
}