import request from '@/config/axios' // ========== 风险等级枚举 ========== export enum RiskLevelEnum { LOW = 1, // 低风险 MEDIUM = 2, // 中风险 HIGH = 3, // 高风险 EXTREME = 4 // 极高风险 } // ========== 问卷答题记录/测评记录类型 ========== /** 问卷答题记录/测评记录信息 */ export interface QuestionnaireRecord { id?: number // 记录ID questionnaireId?: number // 问卷ID questionnaireName?: string // 问卷名称 prisonerId?: number // 罪犯ID prisonerNo?: string // 罪犯编号 prisonerName?: string // 罪犯姓名 status?: number // 状态:1-待测评 2-测评中 3-已完成 4-已过期 5-已取消 startTime?: string // 开始时间 endTime?: string // 结束时间 answerTime?: string // 答题时间 deadline?: string // 截止日期 objectiveScore?: number | string // 客观题得分(后端为BigDecimal) subjectiveScore?: number | string // 主观题得分(后端为BigDecimal) totalScore?: number | string // 总分(后端为BigDecimal) passScore?: number | string // 及格分数(后端为BigDecimal) passStatus?: number // 及格状态:1-及格 2-不及格 3-待评阅 riskLevel?: RiskLevelEnum // 风险等级:1-低风险 2-中风险 3-高风险 4-极高风险 evaluatorId?: number // 评阅人ID evaluatorName?: string // 评阅人姓名 evaluateTime?: string // 评阅时间 participantCount?: number // 参与人数 completedCount?: number // 完成人数 duration?: number // 答题用时(秒) remark?: string // 备注 createTime?: string // 创建时间 } /** 问卷答题记录分页参数 */ export interface QuestionnaireRecordPageParams { pageNo: number pageSize: number questionnaireId?: number // 问卷ID questionnaireName?: string // 问卷名称 prisonerId?: number // 罪犯ID prisonerNo?: string // 罪犯编号 status?: number // 状态:1-待测评 2-测评中 3-已完成 4-已过期 5-已取消 passStatus?: number // 及格状态:1-及格 2-不及格 3-待评阅 riskLevel?: RiskLevelEnum // 风险等级 startTime?: string[] // 开始时间范围 endTime?: string[] // 结束时间范围 deadline?: string[] // 截止日期范围 createTime?: string[] // 创建时间范围 } /** 发起测评请求 */ export interface AssessmentInitiateReq { questionnaireId: number // 问卷模板ID prisonerIds: number[] // 罪犯ID列表 deadline?: string // 截止日期 remark?: string // 备注 } /** 答题详情项 */ export interface AnswerItem { questionId: number // 问题ID answer?: string // 答案 optionIds?: number[] // 选择的选项ID列表 } /** 提交答卷请求 */ export interface AssessmentAnswerSubmitReq { recordId: number // 测评记录ID prisonerId: number // 罪犯ID answers: AnswerItem[] // 答题详情列表 } /** 人工评分请求 */ export interface AssessmentManualScoreReq { recordId: number // 测评记录ID subjectiveScore: number // 主观题得分 comment?: string // 评语 riskLevel?: RiskLevelEnum // 风险等级:1-低风险 2-中风险 3-高风险 4-极高风险 } /** 分数分布数据 */ export interface ScoreDistribution { '0-20'?: number '21-40'?: number '41-60'?: number '61-80'?: number '81-100'?: number } /** 风险分布数据 */ export interface RiskDistribution { extreme?: number // 极高风险 high?: number medium?: number low?: number } // ========== API 对象 ========== export const QuestionnaireRecordApi = { // ========== 基础 CRUD ========== /** 查询问卷答题记录分页 */ getQuestionnaireRecordPage: async (params: QuestionnaireRecordPageParams) => { return await request.get({ url: `/prison/questionnaire-record/page`, params }) }, /** 查询问卷答题记录详情 */ getQuestionnaireRecord: async (id: number) => { return await request.get({ url: `/prison/questionnaire-record/get`, params: { id } }) }, /** 新增问卷答题记录 */ createQuestionnaireRecord: async (data: QuestionnaireRecord) => { return await request.post({ url: `/prison/questionnaire-record/create`, data }) }, /** 修改问卷答题记录 */ updateQuestionnaireRecord: async (data: QuestionnaireRecord) => { return await request.put({ url: `/prison/questionnaire-record/update`, data }) }, /** 删除问卷答题记录 */ deleteQuestionnaireRecord: async (id: number) => { return await request.delete({ url: `/prison/questionnaire-record/delete`, params: { id } }) }, /** 批量删除问卷答题记录 */ deleteQuestionnaireRecordList: async (ids: number[]) => { return await request.post({ url: `/prison/questionnaire-record/delete-list`, data: ids }) }, /** 导出问卷答题记录 Excel */ exportQuestionnaireRecord: async (params: QuestionnaireRecordPageParams) => { return await request.download({ url: `/prison/questionnaire-record/export-excel`, params }) }, // ========== 测评执行相关 ========== /** 发起测评 */ initiateAssessment: async (data: AssessmentInitiateReq) => { return await request.post({ url: `/prison/questionnaire-record/initiate`, data }) }, /** 开始测评 */ startAssessment: async (id: number, prisonerId: number) => { return await request.post({ url: `/prison/questionnaire-record/start`, params: { id, prisonerId } }) }, /** 提交答卷 */ submitAnswer: async (data: AssessmentAnswerSubmitReq) => { return await request.post({ url: `/prison/questionnaire-record/submit`, data }) }, /** 结束测评 */ finishAssessment: async (id: number) => { return await request.post({ url: `/prison/questionnaire-record/finish`, params: { id } }) }, /** 取消测评 */ cancelAssessment: async (id: number) => { return await request.post({ url: `/prison/questionnaire-record/cancel`, params: { id } }) }, // ========== 评分相关 ========== /** 自动评分 */ autoScore: async (id: number) => { return await request.post({ url: `/prison/questionnaire-record/auto-score`, params: { id } }) }, /** 人工评分 */ manualScore: async (data: AssessmentManualScoreReq) => { return await request.post({ url: `/prison/questionnaire-record/manual-score`, data }) }, // ========== 统计相关 ========== /** 获取完成率 */ getCompletionRate: async (assessmentRecordId: number) => { return await request.get({ url: `/prison/questionnaire-record/completion-rate`, params: { assessmentRecordId } }) }, /** 获取分数分布 */ getScoreDistribution: async (assessmentRecordId: number) => { return await request.get({ url: `/prison/questionnaire-record/score-distribution`, params: { assessmentRecordId } }) }, /** 获取风险分布 */ getRiskDistribution: async (assessmentRecordId: number) => { return await request.get({ url: `/prison/questionnaire-record/risk-distribution`, params: { assessmentRecordId } }) } }