diff --git a/src/api/prison/question/index.ts b/src/api/prison/question/index.ts index 78e58e20..cc09d33d 100644 --- a/src/api/prison/question/index.ts +++ b/src/api/prison/question/index.ts @@ -84,5 +84,10 @@ export const QuestionApi = { // 导出问卷问题 Excel exportQuestion: async (params: QuestionPageParams) => { return await request.download({ url: `/prison/question/export-excel`, params }) + }, + + // 获取问卷问题列表(不分页) + getQuestionnaireQuestionList: async (params: QuestionPageParams) => { + return await request.get({ url: `/prison/question/page`, params }) } } diff --git a/src/api/prison/questionnaire-task/index.ts b/src/api/prison/questionnaire-task/index.ts index 66825918..60a2ce2a 100644 --- a/src/api/prison/questionnaire-task/index.ts +++ b/src/api/prison/questionnaire-task/index.ts @@ -90,6 +90,40 @@ export interface TaskAreaStatistics { } } +/** 按监区统计 */ +export interface TaskAreaStatistics { + areaId?: number + areaName?: string + totalCount: number + completedCount: number + completionRate: string | number + avgScore: string | number + passRate: string | number + riskDistribution: { + highRisk: number + mediumRisk: number + lowRisk: number + } +} + +/** 人员填写进度 */ +export interface PrisonerProgress { + id: number + prisonerId: number + prisonerNo: string + prisonerName: string + areaId?: number + areaName?: string + status: number + objectiveScore?: number + subjectiveScore?: number + totalScore?: number + riskLevel?: number + duration?: number + startTime?: string + finishTime?: string +} + /** 统计汇总 */ export interface TaskStatisticsSummary { taskCount: number @@ -170,6 +204,21 @@ export const QuestionnaireTaskApi = { return await request.post({ url: `/prison/questionnaire-task/remind`, params: { id } }) }, + // 获取任务的人员填写进度列表 + getPrisonerProgress: async (id: number) => { + return await request.get({ url: `/prison/questionnaire-task/prisoner-progress`, params: { id } }) + }, + + // 通知单个人员 + notifyPrisoner: async (recordId: number) => { + return await request.post({ url: `/prison/questionnaire-task/notify-prisoner`, params: { recordId } }) + }, + + // 重置人员答题记录 + resetPrisonerRecord: async (recordId: number) => { + return await request.post({ url: `/prison/questionnaire-task/reset-record`, params: { recordId } }) + }, + // ==================== 统计相关 ==================== // 按监区统计任务完成情况 diff --git a/src/api/prison/questionnairerecord/index.ts b/src/api/prison/questionnairerecord/index.ts index adf9bafb..b44970f4 100644 --- a/src/api/prison/questionnairerecord/index.ts +++ b/src/api/prison/questionnairerecord/index.ts @@ -160,6 +160,11 @@ export const QuestionnaireRecordApi = { return await request.post({ url: `/prison/questionnaire-record/submit`, data }) }, + /** 代为提交答卷(民警代填) */ + submitAnswerByAgent: async (data: AssessmentAnswerSubmitReq) => { + return await request.post({ url: `/prison/questionnaire-record/submit-by-agent`, data }) + }, + /** 结束测评 */ finishAssessment: async (id: number) => { return await request.post({ url: `/prison/questionnaire-record/finish`, params: { id } }) diff --git a/src/views/prison/question/index.vue b/src/views/prison/question/index.vue new file mode 100644 index 00000000..f2a1111e --- /dev/null +++ b/src/views/prison/question/index.vue @@ -0,0 +1,9 @@ + + + diff --git a/src/views/prison/questionnaire-task/components/AgentFillDialog.vue b/src/views/prison/questionnaire-task/components/AgentFillDialog.vue new file mode 100644 index 00000000..c685a59d --- /dev/null +++ b/src/views/prison/questionnaire-task/components/AgentFillDialog.vue @@ -0,0 +1,331 @@ + + + + + diff --git a/src/views/prison/questionnaire-task/components/CreateTaskDialog.vue b/src/views/prison/questionnaire-task/components/CreateTaskDialog.vue index 0457536b..7c22bd70 100644 --- a/src/views/prison/questionnaire-task/components/CreateTaskDialog.vue +++ b/src/views/prison/questionnaire-task/components/CreateTaskDialog.vue @@ -23,7 +23,7 @@ v-model="formData.questionnaireId" placeholder="请选择问卷" filterable - style="width: 100%" + style="width: calc(100% - 90px)" > + + 预览 + @@ -115,6 +123,19 @@ @confirm="handlePrisonerSelect" /> + + + + + +