- 优化 DimensionAnalysisPanel 维度分析面板 - 更新 LlmResultPanel LLM 结果展示组件 - 完善 PromptEditor 提示词编辑器功能 - 改进 ReportForm 报告表单交互 - 优化 ReportEditDrawer 报告编辑抽屉 - 调整 prisoner 页面显示 - 更新 evaluation-report 和 report API Co-Authored-By: Claude <noreply@anthropic.com>
374 lines
11 KiB
TypeScript
374 lines
11 KiB
TypeScript
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 } })
|
||
}
|
||
}
|