153 lines
4.4 KiB
Markdown
153 lines
4.4 KiB
Markdown
# 管理员快速填充功能说明
|
||
|
||
## 📋 功能概述
|
||
|
||
管理员在进行量表测评时,可以使用"快速填充"功能,自动选择所有题目的特定选项并提交测评。此功能主要用于测试和快速验证量表功能。
|
||
|
||
## 🎯 功能特性
|
||
|
||
### 1. 管理员专用
|
||
- 只有管理员(userId === 1 或 roles 包含 'admin')才能看到和使用此功能
|
||
- 普通用户无法看到快速填充按钮
|
||
|
||
### 2. 快速填充策略
|
||
系统提供4种填充策略:
|
||
|
||
#### ① 填充第一个选项并提交
|
||
- 为所有题目选择第一个选项(选项A或第一个选项)
|
||
- 适用于测试最低分或基础功能
|
||
|
||
#### ② 填充中间选项并提交
|
||
- 为所有题目选择中间选项
|
||
- 例如:5个选项中选择第3个,4个选项中选择第2个
|
||
|
||
#### ③ 填充最后一个选项并提交
|
||
- 为所有题目选择最后一个选项
|
||
- 适用于测试最高分或极端情况
|
||
|
||
#### ④ 随机填充并提交
|
||
- 为每个题目随机选择一个选项
|
||
- 适用于模拟真实答题情况
|
||
|
||
### 3. 自动处理
|
||
- 自动处理单选题、多选题、矩阵题
|
||
- 自动计算得分
|
||
- 自动保存所有答案
|
||
- 自动提交测评并生成报告
|
||
|
||
## 📝 使用方法
|
||
|
||
### 步骤1:进入测评页面
|
||
1. 登录系统(管理员账户)
|
||
2. 进入 `心理测评管理` → `测评记录`
|
||
3. 点击 **"开始测评"** 或 **"继续测评"**
|
||
|
||
### 步骤2:使用快速填充
|
||
1. 在测评页面顶部,找到 **"快速填充"** 按钮
|
||
2. 点击下拉箭头,选择填充策略:
|
||
- 填充第一个选项并提交
|
||
- 填充中间选项并提交
|
||
- 填充最后一个选项并提交
|
||
- 随机填充并提交
|
||
|
||
### 步骤3:确认并执行
|
||
1. 系统会弹出确认对话框
|
||
2. 点击 **"确定"** 后,系统会:
|
||
- 自动填充所有题目
|
||
- 保存所有答案
|
||
- 提交测评
|
||
- 生成测评报告
|
||
3. 完成后自动跳转到测评记录页面
|
||
|
||
## ⚙️ 技术实现
|
||
|
||
### 前端实现
|
||
- **文件位置**:`ruoyi-ui/src/views/psychology/assessment/taking.vue`
|
||
- **关键方法**:
|
||
- `handleQuickFill(command)`: 处理快速填充命令
|
||
- `performQuickFill(command)`: 执行快速填充逻辑
|
||
- `saveAnswerToServerPromise(answer)`: 保存答案到服务器
|
||
|
||
### 权限控制
|
||
- 使用 `isAdmin` 计算属性判断管理员身份
|
||
- 通过 `v-if="isAdmin"` 控制按钮显示
|
||
- 在方法中再次验证权限
|
||
|
||
### 填充逻辑
|
||
```javascript
|
||
// 选项选择策略
|
||
switch (command) {
|
||
case 'first': // 第一个选项
|
||
case 'middle': // 中间选项
|
||
case 'last': // 最后一个选项
|
||
case 'random': // 随机选项
|
||
}
|
||
|
||
// 自动保存和提交
|
||
Promise.all(fillPromises).then(() => {
|
||
submitAssessment(this.assessmentId)
|
||
})
|
||
```
|
||
|
||
## 🔒 安全特性
|
||
|
||
1. **权限验证**:双重验证管理员身份
|
||
2. **确认对话框**:防止误操作
|
||
3. **错误处理**:完善的错误处理和提示
|
||
4. **日志记录**:记录填充操作的日志
|
||
|
||
## ⚠️ 注意事项
|
||
|
||
1. **不可撤销**:快速填充并提交后,测评结果无法修改
|
||
2. **覆盖已有答案**:如果题目已有答案,快速填充会覆盖原有答案
|
||
3. **多选题处理**:多选题目前只选择第一个选项(可根据需要调整)
|
||
4. **测试用途**:此功能主要用于测试,不建议用于真实测评数据
|
||
|
||
## 📊 使用场景
|
||
|
||
### 适用场景
|
||
- ✅ 测试量表功能是否正常
|
||
- ✅ 快速生成测试报告
|
||
- ✅ 验证报告生成功能
|
||
- ✅ 系统功能演示
|
||
|
||
### 不适用场景
|
||
- ❌ 真实用户测评
|
||
- ❌ 正式的数据收集
|
||
- ❌ 需要准确答案的测评
|
||
|
||
## 🔧 自定义配置
|
||
|
||
如果需要修改填充策略,可以编辑 `performQuickFill` 方法中的 `optionStrategy` 函数。
|
||
|
||
例如,修改多选题策略为选择所有选项:
|
||
```javascript
|
||
else if (item.itemType === 'multiple') {
|
||
// 多选题,选择所有选项
|
||
selectedOptions = options.map(opt => opt.optionId);
|
||
const totalScore = options.reduce((sum, opt) => sum + (opt.optionScore || 0), 0);
|
||
// ...
|
||
}
|
||
```
|
||
|
||
## ✅ 验证清单
|
||
|
||
使用前请确认:
|
||
- [ ] 当前用户是管理员
|
||
- [ ] 测评状态为"进行中"
|
||
- [ ] 量表包含题目
|
||
- [ ] 所有题目都有选项
|
||
|
||
## 📚 相关文件
|
||
|
||
- `ruoyi-ui/src/views/psychology/assessment/taking.vue` - 测评页面
|
||
- `ruoyi-ui/src/api/psychology/assessment.js` - 测评API
|
||
|
||
## 🎉 更新日志
|
||
|
||
- **2025-01-XX**:添加管理员快速填充功能
|
||
- 支持4种填充策略
|
||
- 自动保存和提交
|
||
- 完善的权限控制和错误处理
|
||
|