From d4cb996085114345aca929c551801d2b74328dde Mon Sep 17 00:00:00 2001 From: tangweijie <877588133@qq.com> Date: Tue, 13 Jan 2026 16:25:02 +0800 Subject: [PATCH] =?UTF-8?q?fix(performance):=20=E6=89=B9=E9=87=8F=E6=9B=B4?= =?UTF-8?q?=E6=96=B0=E6=8E=A5=E5=8F=A3=E4=BC=98=E5=8C=96=E9=97=AE=E5=8D=B7?= =?UTF-8?q?=E7=B3=BB=E7=BB=9F=E6=80=A7=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 添加batchUpdate API调用 - 修复savePartitions循环调用API问题 (50题只需1次请求) - 修复onPartitionDragEnd拖拽排序性能问题 - 修复onQuestionDragEnd问题拖拽排序性能问题 - 添加自动填充来源字典支持 PRISON_QUESTION_AUTO_FILL_SOURCE - 问题表单优化: 折叠面板、分区选择、快速粘贴等 --- src/api/prison/area/index.ts | 53 + src/api/prison/cell/index.ts | 53 + src/api/prison/consumption/index.ts | 56 + src/api/prison/question/index.ts | 69 ++ src/api/prison/questionnaire/index.ts | 51 + src/api/prison/questionnairerecord/index.ts | 52 + src/api/prison/riskassessment/index.ts | 61 ++ src/api/prison/score/index.ts | 58 ++ src/utils/dict.ts | 15 +- src/views/prison/area/AreaForm.vue | 143 +++ src/views/prison/area/index.vue | 252 +++++ src/views/prison/cell/CellForm.vue | 137 +++ src/views/prison/cell/index.vue | 241 +++++ .../prison/consumption/ConsumptionForm.vue | 166 +++ src/views/prison/consumption/index.vue | 258 +++++ src/views/prison/question/QuestionForm.vue | 973 ++++++++++++++++++ src/views/prison/question/index.vue | 247 +++++ .../questionnaire/QuestionnaireForm.vue | 134 +++ .../questionnaire/components/QuestionList.vue | 804 +++++++++++++++ src/views/prison/questionnaire/index.vue | 273 +++++ .../QuestionnaireRecordForm.vue | 144 +++ .../prison/questionnairerecord/index.vue | 321 ++++++ .../riskassessment/RiskAssessmentForm.vue | 203 ++++ src/views/prison/riskassessment/index.vue | 277 +++++ src/views/prison/score/ScoreForm.vue | 170 +++ src/views/prison/score/index.vue | 265 +++++ 26 files changed, 5475 insertions(+), 1 deletion(-) create mode 100644 src/api/prison/area/index.ts create mode 100644 src/api/prison/cell/index.ts create mode 100644 src/api/prison/consumption/index.ts create mode 100644 src/api/prison/question/index.ts create mode 100644 src/api/prison/questionnaire/index.ts create mode 100644 src/api/prison/questionnairerecord/index.ts create mode 100644 src/api/prison/riskassessment/index.ts create mode 100644 src/api/prison/score/index.ts create mode 100644 src/views/prison/area/AreaForm.vue create mode 100644 src/views/prison/area/index.vue create mode 100644 src/views/prison/cell/CellForm.vue create mode 100644 src/views/prison/cell/index.vue create mode 100644 src/views/prison/consumption/ConsumptionForm.vue create mode 100644 src/views/prison/consumption/index.vue create mode 100644 src/views/prison/question/QuestionForm.vue create mode 100644 src/views/prison/question/index.vue create mode 100644 src/views/prison/questionnaire/QuestionnaireForm.vue create mode 100644 src/views/prison/questionnaire/components/QuestionList.vue create mode 100644 src/views/prison/questionnaire/index.vue create mode 100644 src/views/prison/questionnairerecord/QuestionnaireRecordForm.vue create mode 100644 src/views/prison/questionnairerecord/index.vue create mode 100644 src/views/prison/riskassessment/RiskAssessmentForm.vue create mode 100644 src/views/prison/riskassessment/index.vue create mode 100644 src/views/prison/score/ScoreForm.vue create mode 100644 src/views/prison/score/index.vue diff --git a/src/api/prison/area/index.ts b/src/api/prison/area/index.ts new file mode 100644 index 00000000..628c19c2 --- /dev/null +++ b/src/api/prison/area/index.ts @@ -0,0 +1,53 @@ +import request from '@/config/axios' +import type { Dayjs } from 'dayjs'; + +/** 监区信息信息 */ +export interface Area { + id: number; // 监区ID + name?: string; // 监区名称 + code?: string; // 监区编码 + type: number; // 监区类型:1-普通监区 2-严管监区 3-医院 4-禁闭室 + capacity: number; // 容纳人数 + currentCount: number; // 当前人数 + sort: number; // 排序 + status?: number; // 状态:1-启用 2-禁用 + remark: string; // 备注 + } + +// 监区信息 API +export const AreaApi = { + // 查询监区信息分页 + getAreaPage: async (params: any) => { + return await request.get({ url: `/prison/area/page`, params }) + }, + + // 查询监区信息详情 + getArea: async (id: number) => { + return await request.get({ url: `/prison/area/get?id=` + id }) + }, + + // 新增监区信息 + createArea: async (data: Area) => { + return await request.post({ url: `/prison/area/create`, data }) + }, + + // 修改监区信息 + updateArea: async (data: Area) => { + return await request.put({ url: `/prison/area/update`, data }) + }, + + // 删除监区信息 + deleteArea: async (id: number) => { + return await request.delete({ url: `/prison/area/delete?id=` + id }) + }, + + /** 批量删除监区信息 */ + deleteAreaList: async (ids: number[]) => { + return await request.delete({ url: `/prison/area/delete-list?ids=${ids.join(',')}` }) + }, + + // 导出监区信息 Excel + exportArea: async (params) => { + return await request.download({ url: `/prison/area/export-excel`, params }) + } +} \ No newline at end of file diff --git a/src/api/prison/cell/index.ts b/src/api/prison/cell/index.ts new file mode 100644 index 00000000..30f7584f --- /dev/null +++ b/src/api/prison/cell/index.ts @@ -0,0 +1,53 @@ +import request from '@/config/axios' +import type { Dayjs } from 'dayjs'; + +/** 监室信息信息 */ +export interface Cell { + id: number; // 监室ID + areaId?: number; // 所属监区ID + name?: string; // 监室名称 + code?: string; // 监室编码 + capacity: number; // 床位数量 + currentCount: number; // 当前人数 + sort: number; // 排序 + status?: number; // 状态:1-启用 2-禁用 + remark: string; // 备注 + } + +// 监室信息 API +export const CellApi = { + // 查询监室信息分页 + getCellPage: async (params: any) => { + return await request.get({ url: `/prison/cell/page`, params }) + }, + + // 查询监室信息详情 + getCell: async (id: number) => { + return await request.get({ url: `/prison/cell/get?id=` + id }) + }, + + // 新增监室信息 + createCell: async (data: Cell) => { + return await request.post({ url: `/prison/cell/create`, data }) + }, + + // 修改监室信息 + updateCell: async (data: Cell) => { + return await request.put({ url: `/prison/cell/update`, data }) + }, + + // 删除监室信息 + deleteCell: async (id: number) => { + return await request.delete({ url: `/prison/cell/delete?id=` + id }) + }, + + /** 批量删除监室信息 */ + deleteCellList: async (ids: number[]) => { + return await request.delete({ url: `/prison/cell/delete-list?ids=${ids.join(',')}` }) + }, + + // 导出监室信息 Excel + exportCell: async (params) => { + return await request.download({ url: `/prison/cell/export-excel`, params }) + } +} \ No newline at end of file diff --git a/src/api/prison/consumption/index.ts b/src/api/prison/consumption/index.ts new file mode 100644 index 00000000..f3e3885b --- /dev/null +++ b/src/api/prison/consumption/index.ts @@ -0,0 +1,56 @@ +import request from '@/config/axios' +import type { Dayjs } from 'dayjs'; + +/** 消费记录信息 */ +export interface Consumption { + id: number; // 记录ID + prisonerId?: number; // 罪犯ID + prisonerNo?: string; // 罪犯编号 + type?: number; // 类型:1-存款 2-消费 3-转账 + amount?: number; // 金额 + balance: number; // 账户余额 + goodsName: string; // 商品名称 + goodsCount: number; // 商品数量 + orderNo: string; // 订单号 + tradeTime?: string | Dayjs; // 交易时间 + status?: number; // 状态:1-成功 2-失败 + remark: string; // 备注 + } + +// 消费记录 API +export const ConsumptionApi = { + // 查询消费记录分页 + getConsumptionPage: async (params: any) => { + return await request.get({ url: `/prison/consumption/page`, params }) + }, + + // 查询消费记录详情 + getConsumption: async (id: number) => { + return await request.get({ url: `/prison/consumption/get?id=` + id }) + }, + + // 新增消费记录 + createConsumption: async (data: Consumption) => { + return await request.post({ url: `/prison/consumption/create`, data }) + }, + + // 修改消费记录 + updateConsumption: async (data: Consumption) => { + return await request.put({ url: `/prison/consumption/update`, data }) + }, + + // 删除消费记录 + deleteConsumption: async (id: number) => { + return await request.delete({ url: `/prison/consumption/delete?id=` + id }) + }, + + /** 批量删除消费记录 */ + deleteConsumptionList: async (ids: number[]) => { + return await request.delete({ url: `/prison/consumption/delete-list?ids=${ids.join(',')}` }) + }, + + // 导出消费记录 Excel + exportConsumption: async (params) => { + return await request.download({ url: `/prison/consumption/export-excel`, params }) + } +} \ No newline at end of file diff --git a/src/api/prison/question/index.ts b/src/api/prison/question/index.ts new file mode 100644 index 00000000..0115023b --- /dev/null +++ b/src/api/prison/question/index.ts @@ -0,0 +1,69 @@ +import request from '@/config/axios' +import type { Dayjs } from 'dayjs'; + +/** 问卷问题信息 */ +export interface Question { + id: number // 问题ID + questionnaireId?: number // 所属问卷ID + title?: string // 问题标题 + type?: number // 问题类型:1-单选 2-多选 3-填空 4-评分 5-日期 6-数字 + options?: string // 选项JSON + score?: number // 分值 + sort?: number // 排序 + isRequired?: boolean // 是否必答 + // 新增字段 + partName?: string // 分区名称 + partSort?: number // 分区排序 + helpText?: string // 帮助说明 + placeholder?: string // 占位提示 + defaultValue?: string // 默认值 + autoFillType?: string // 自动填充类型:NONE/AUTO/MANUAL + autoFillSource?: string // 自动填充来源 + displayCondition?: string // 显示条件JSON + minValue?: number // 最小值 + maxValue?: number // 最大值 + createTime?: Date // 创建时间 +} + +// 问卷问题 API +export const QuestionApi = { + // 查询问卷问题分页 + getQuestionPage: async (params: any) => { + return await request.get({ url: `/prison/question/page`, params }) + }, + + // 查询问卷问题详情 + getQuestion: async (id: number) => { + return await request.get({ url: `/prison/question/get?id=` + id }) + }, + + // 新增问卷问题 + createQuestion: async (data: Question) => { + return await request.post({ url: `/prison/question/create`, data }) + }, + + // 修改问卷问题 + updateQuestion: async (data: Question) => { + return await request.put({ url: `/prison/question/update`, data }) + }, + + // 删除问卷问题 + deleteQuestion: async (id: number) => { + return await request.delete({ url: `/prison/question/delete?id=` + id }) + }, + + /** 批量删除问卷问题 */ + deleteQuestionList: async (ids: number[]) => { + return await request.delete({ url: `/prison/question/delete-list?ids=${ids.join(',')}` }) + }, + + // 导出问卷问题 Excel + exportQuestion: async (params) => { + return await request.download({ url: `/prison/question/export-excel`, params }) + }, + + // 批量更新问卷问题(仅排序和分区字段) + batchUpdate: async (data: { questions: Array<{ id: number; partName?: string; partSort?: number; sort?: number }> }) => { + return await request.post({ url: `/prison/question/batch-update`, data }) + } +} \ No newline at end of file diff --git a/src/api/prison/questionnaire/index.ts b/src/api/prison/questionnaire/index.ts new file mode 100644 index 00000000..e73361e6 --- /dev/null +++ b/src/api/prison/questionnaire/index.ts @@ -0,0 +1,51 @@ +import request from '@/config/axios' +import type { Dayjs } from 'dayjs'; + +/** 问卷模板信息 */ +export interface Questionnaire { + id: number; // 问卷ID + title?: string; // 问卷标题 + type?: number; // 问卷类型:1-心理测评 2-行为评估 3-满意度调查 + description: string; // 问卷说明 + totalScore: number; // 总分 + passScore: number; // 及格分 + status?: number; // 状态:1-草稿 2-已发布 3-已禁用 + } + +// 问卷模板 API +export const QuestionnaireApi = { + // 查询问卷模板分页 + getQuestionnairePage: async (params: any) => { + return await request.get({ url: `/prison/questionnaire/page`, params }) + }, + + // 查询问卷模板详情 + getQuestionnaire: async (id: number) => { + return await request.get({ url: `/prison/questionnaire/get?id=` + id }) + }, + + // 新增问卷模板 + createQuestionnaire: async (data: Questionnaire) => { + return await request.post({ url: `/prison/questionnaire/create`, data }) + }, + + // 修改问卷模板 + updateQuestionnaire: async (data: Questionnaire) => { + return await request.put({ url: `/prison/questionnaire/update`, data }) + }, + + // 删除问卷模板 + deleteQuestionnaire: async (id: number) => { + return await request.delete({ url: `/prison/questionnaire/delete?id=` + id }) + }, + + /** 批量删除问卷模板 */ + deleteQuestionnaireList: async (ids: number[]) => { + return await request.delete({ url: `/prison/questionnaire/delete-list?ids=${ids.join(',')}` }) + }, + + // 导出问卷模板 Excel + exportQuestionnaire: async (params) => { + return await request.download({ url: `/prison/questionnaire/export-excel`, params }) + } +} \ No newline at end of file diff --git a/src/api/prison/questionnairerecord/index.ts b/src/api/prison/questionnairerecord/index.ts new file mode 100644 index 00000000..8cf14f40 --- /dev/null +++ b/src/api/prison/questionnairerecord/index.ts @@ -0,0 +1,52 @@ +import request from '@/config/axios' +import type { Dayjs } from 'dayjs'; + +/** 问卷答题记录信息 */ +export interface QuestionnaireRecord { + id: number; // 记录ID + questionnaireId?: number; // 问卷ID + prisonerId?: number; // 罪犯ID + prisonerNo?: string; // 罪犯编号 + totalScore: number; // 得分 + passStatus: number; // 是否及格:1-及格 2-不及格 + answerTime?: string | Dayjs; // 答题时间 + status?: number; // 状态:1-已完成 2-已过期 + } + +// 问卷答题记录 API +export const QuestionnaireRecordApi = { + // 查询问卷答题记录分页 + getQuestionnaireRecordPage: async (params: any) => { + return await request.get({ url: `/prison/questionnaire-record/page`, params }) + }, + + // 查询问卷答题记录详情 + getQuestionnaireRecord: async (id: number) => { + return await request.get({ url: `/prison/questionnaire-record/get?id=` + 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?id=` + id }) + }, + + /** 批量删除问卷答题记录 */ + deleteQuestionnaireRecordList: async (ids: number[]) => { + return await request.delete({ url: `/prison/questionnaire-record/delete-list?ids=${ids.join(',')}` }) + }, + + // 导出问卷答题记录 Excel + exportQuestionnaireRecord: async (params) => { + return await request.download({ url: `/prison/questionnaire-record/export-excel`, params }) + } +} \ No newline at end of file diff --git a/src/api/prison/riskassessment/index.ts b/src/api/prison/riskassessment/index.ts new file mode 100644 index 00000000..1a6468f9 --- /dev/null +++ b/src/api/prison/riskassessment/index.ts @@ -0,0 +1,61 @@ +import request from '@/config/axios' +import type { Dayjs } from 'dayjs'; + +/** 危险评估信息 */ +export interface RiskAssessment { + id: number; // 评估ID + prisonerId?: number; // 罪犯ID + prisonerNo?: string; // 罪犯编号 + assessmentType?: number; // 评估类型:1-入狱评估 2-定期评估 3-专项评估 + assessmentDate?: string | Dayjs; // 评估日期 + violenceScore: number; // 暴力倾向得分 + escapeScore: number; // 脱逃倾向得分 + suicideScore: number; // 自杀倾向得分 + totalScore: number; // 综合得分 + riskLevel?: number; // 风险等级:1-低风险 2-中风险 3-高风险 4-极高风险 + riskFactors: string; // 风险因素 + suggestions: string; // 管控建议 + assessorId: number; // 评估人ID + assessorName: string; // 评估人姓名 + nextAssessmentDate: string | Dayjs; // 下次评估日期 + status?: number; // 状态:1-待审核 2-已通过 + remark: string; // 备注 + } + +// 危险评估 API +export const RiskAssessmentApi = { + // 查询危险评估分页 + getRiskAssessmentPage: async (params: any) => { + return await request.get({ url: `/prison/risk-assessment/page`, params }) + }, + + // 查询危险评估详情 + getRiskAssessment: async (id: number) => { + return await request.get({ url: `/prison/risk-assessment/get?id=` + id }) + }, + + // 新增危险评估 + createRiskAssessment: async (data: RiskAssessment) => { + return await request.post({ url: `/prison/risk-assessment/create`, data }) + }, + + // 修改危险评估 + updateRiskAssessment: async (data: RiskAssessment) => { + return await request.put({ url: `/prison/risk-assessment/update`, data }) + }, + + // 删除危险评估 + deleteRiskAssessment: async (id: number) => { + return await request.delete({ url: `/prison/risk-assessment/delete?id=` + id }) + }, + + /** 批量删除危险评估 */ + deleteRiskAssessmentList: async (ids: number[]) => { + return await request.delete({ url: `/prison/risk-assessment/delete-list?ids=${ids.join(',')}` }) + }, + + // 导出危险评估 Excel + exportRiskAssessment: async (params) => { + return await request.download({ url: `/prison/risk-assessment/export-excel`, params }) + } +} \ No newline at end of file diff --git a/src/api/prison/score/index.ts b/src/api/prison/score/index.ts new file mode 100644 index 00000000..42cbdf37 --- /dev/null +++ b/src/api/prison/score/index.ts @@ -0,0 +1,58 @@ +import request from '@/config/axios' +import type { Dayjs } from 'dayjs'; + +/** 计分考核信息 */ +export interface Score { + id: number; // 记录ID + prisonerId?: number; // 罪犯ID + prisonerNo?: string; // 罪犯编号 + year?: number; // 考核年份 + month?: number; // 考核月份 + baseScore: number; // 基础分 + rewardScore: number; // 加分 + penaltyScore: number; // 扣分 + totalScore: number; // 总分 + level: number; // 考核等级:1-优秀 2-良好 3-合格 4-不合格 + assessorId: number; // 考核人ID + assessorName: string; // 考核人姓名 + status?: number; // 状态:1-待审核 2-已通过 3-已驳回 + remark: string; // 备注 + } + +// 计分考核 API +export const ScoreApi = { + // 查询计分考核分页 + getScorePage: async (params: any) => { + return await request.get({ url: `/prison/score/page`, params }) + }, + + // 查询计分考核详情 + getScore: async (id: number) => { + return await request.get({ url: `/prison/score/get?id=` + id }) + }, + + // 新增计分考核 + createScore: async (data: Score) => { + return await request.post({ url: `/prison/score/create`, data }) + }, + + // 修改计分考核 + updateScore: async (data: Score) => { + return await request.put({ url: `/prison/score/update`, data }) + }, + + // 删除计分考核 + deleteScore: async (id: number) => { + return await request.delete({ url: `/prison/score/delete?id=` + id }) + }, + + /** 批量删除计分考核 */ + deleteScoreList: async (ids: number[]) => { + return await request.delete({ url: `/prison/score/delete-list?ids=${ids.join(',')}` }) + }, + + // 导出计分考核 Excel + exportScore: async (params) => { + return await request.download({ url: `/prison/score/export-excel`, params }) + } +} \ No newline at end of file diff --git a/src/utils/dict.ts b/src/utils/dict.ts index 5f9f3c62..b341ae79 100644 --- a/src/utils/dict.ts +++ b/src/utils/dict.ts @@ -253,5 +253,18 @@ export enum DICT_TYPE { PRISON_SUPERVISION_LEVEL = 'prison_supervision_level', // 监管等级 PRISON_RISK_LEVEL = 'prison_risk_level', // 风险等级 PRISONER_STATUS = 'prisoner_status', // 罪犯状态 - PRISON_EDUCATION = 'prison_education' // 文化程度 + PRISON_EDUCATION = 'prison_education', // 文化程度 + PRISON_QUESTION_TYPE = 'prison_question_type', // 问卷问题类型 + PRISON_QUESTIONNAIRE_TYPE = 'prison_questionnaire_type', // 问卷类型 + PRISON_QUESTIONNAIRE_STATUS = 'prison_questionnaire_status', // 问卷状态 + PRISON_CONSUMPTION_TYPE = 'prison_consumption_type', // 消费类型 + PRISON_CONSUMPTION_STATUS = 'prison_consumption_status', // 消费状态 + PRISON_ASSESSMENT_TYPE = 'prison_assessment_type', // 评估类型 + PRISON_SCORE_LEVEL = 'prison_score_level', // 考核等级 + PRISON_SCORE_STATUS = 'prison_score_status', // 考核状态 + PRISON_AREA_TYPE = 'prison_area_type', // 监区类型 + PRISON_CELL_STATUS = 'prison_cell_status', // 监室状态 + PRISON_RECORD_PASS_STATUS = 'prison_record_pass_status', // 问卷答题是否及格 + PRISON_RECORD_STATUS = 'prison_record_status', // 问卷答题记录状态 + PRISON_QUESTION_AUTO_FILL_SOURCE = 'prison_question_auto_fill_source' // 问卷问题自动填充来源 } diff --git a/src/views/prison/area/AreaForm.vue b/src/views/prison/area/AreaForm.vue new file mode 100644 index 00000000..93511356 --- /dev/null +++ b/src/views/prison/area/AreaForm.vue @@ -0,0 +1,143 @@ + + \ No newline at end of file diff --git a/src/views/prison/area/index.vue b/src/views/prison/area/index.vue new file mode 100644 index 00000000..82a2d4ba --- /dev/null +++ b/src/views/prison/area/index.vue @@ -0,0 +1,252 @@ + + + diff --git a/src/views/prison/cell/CellForm.vue b/src/views/prison/cell/CellForm.vue new file mode 100644 index 00000000..6caa85ff --- /dev/null +++ b/src/views/prison/cell/CellForm.vue @@ -0,0 +1,137 @@ + + \ No newline at end of file diff --git a/src/views/prison/cell/index.vue b/src/views/prison/cell/index.vue new file mode 100644 index 00000000..4855f660 --- /dev/null +++ b/src/views/prison/cell/index.vue @@ -0,0 +1,241 @@ + + + diff --git a/src/views/prison/consumption/ConsumptionForm.vue b/src/views/prison/consumption/ConsumptionForm.vue new file mode 100644 index 00000000..902bd51d --- /dev/null +++ b/src/views/prison/consumption/ConsumptionForm.vue @@ -0,0 +1,166 @@ + + \ No newline at end of file diff --git a/src/views/prison/consumption/index.vue b/src/views/prison/consumption/index.vue new file mode 100644 index 00000000..1a901a67 --- /dev/null +++ b/src/views/prison/consumption/index.vue @@ -0,0 +1,258 @@ + + + diff --git a/src/views/prison/question/QuestionForm.vue b/src/views/prison/question/QuestionForm.vue new file mode 100644 index 00000000..b9c597aa --- /dev/null +++ b/src/views/prison/question/QuestionForm.vue @@ -0,0 +1,973 @@ + + + + + diff --git a/src/views/prison/question/index.vue b/src/views/prison/question/index.vue new file mode 100644 index 00000000..be99eb72 --- /dev/null +++ b/src/views/prison/question/index.vue @@ -0,0 +1,247 @@ + + + diff --git a/src/views/prison/questionnaire/QuestionnaireForm.vue b/src/views/prison/questionnaire/QuestionnaireForm.vue new file mode 100644 index 00000000..3f468040 --- /dev/null +++ b/src/views/prison/questionnaire/QuestionnaireForm.vue @@ -0,0 +1,134 @@ + + \ No newline at end of file diff --git a/src/views/prison/questionnaire/components/QuestionList.vue b/src/views/prison/questionnaire/components/QuestionList.vue new file mode 100644 index 00000000..21104eaa --- /dev/null +++ b/src/views/prison/questionnaire/components/QuestionList.vue @@ -0,0 +1,804 @@ + + + + + diff --git a/src/views/prison/questionnaire/index.vue b/src/views/prison/questionnaire/index.vue new file mode 100644 index 00000000..f18b5a90 --- /dev/null +++ b/src/views/prison/questionnaire/index.vue @@ -0,0 +1,273 @@ + + + diff --git a/src/views/prison/questionnairerecord/QuestionnaireRecordForm.vue b/src/views/prison/questionnairerecord/QuestionnaireRecordForm.vue new file mode 100644 index 00000000..9d06273a --- /dev/null +++ b/src/views/prison/questionnairerecord/QuestionnaireRecordForm.vue @@ -0,0 +1,144 @@ + + \ No newline at end of file diff --git a/src/views/prison/questionnairerecord/index.vue b/src/views/prison/questionnairerecord/index.vue new file mode 100644 index 00000000..8f1e5888 --- /dev/null +++ b/src/views/prison/questionnairerecord/index.vue @@ -0,0 +1,321 @@ + + + \ No newline at end of file diff --git a/src/views/prison/riskassessment/RiskAssessmentForm.vue b/src/views/prison/riskassessment/RiskAssessmentForm.vue new file mode 100644 index 00000000..9b7a4eaf --- /dev/null +++ b/src/views/prison/riskassessment/RiskAssessmentForm.vue @@ -0,0 +1,203 @@ + + \ No newline at end of file diff --git a/src/views/prison/riskassessment/index.vue b/src/views/prison/riskassessment/index.vue new file mode 100644 index 00000000..6c529955 --- /dev/null +++ b/src/views/prison/riskassessment/index.vue @@ -0,0 +1,277 @@ + + + diff --git a/src/views/prison/score/ScoreForm.vue b/src/views/prison/score/ScoreForm.vue new file mode 100644 index 00000000..d97ea071 --- /dev/null +++ b/src/views/prison/score/ScoreForm.vue @@ -0,0 +1,170 @@ + + \ No newline at end of file diff --git a/src/views/prison/score/index.vue b/src/views/prison/score/index.vue new file mode 100644 index 00000000..ba3721ae --- /dev/null +++ b/src/views/prison/score/index.vue @@ -0,0 +1,265 @@ + + +