-
量表列表(请勾选需要分析的量表)
+
量表/问卷列表(请勾选需要分析的量表/问卷)
`
diff --git a/xinli-ui/src/views/psychology/scale/index.vue b/xinli-ui/src/views/psychology/scale/index.vue
index 72af8d96..a7f74303 100644
--- a/xinli-ui/src/views/psychology/scale/index.vue
+++ b/xinli-ui/src/views/psychology/scale/index.vue
@@ -2,20 +2,38 @@
-
+ filterable
+ allow-create
+ default-first-option
+ >
+
+
-
+ filterable
+ allow-create
+ default-first-option
+ >
+
+
@@ -427,6 +445,95 @@
正在生成二维码...
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ (根据题目自动计算)
+
+
+
+
+
+ (根据题目分数自动计算)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 正常
+ 停用
+
+
+
+
+
+
+
+
+
+
@@ -454,6 +561,8 @@ export default {
total: 0,
// 量表表格数据
scaleList: [],
+ // 所有量表数据(不分页,用于下拉框)
+ allScaleList: [],
// 弹出层标题
title: "",
// 是否显示弹出层
@@ -474,6 +583,21 @@ export default {
// 二维码对话框
qrcodeOpen: false,
qrcodeInfo: null,
+ // 问卷修改对话框
+ questionnaireOpen: false,
+ questionnaireTitle: "修改问卷",
+ questionnaireForm: {},
+ questionnaireRules: {
+ questionnaireCode: [
+ { required: true, message: "问卷编码不能为空", trigger: "blur" }
+ ],
+ questionnaireName: [
+ { required: true, message: "问卷名称不能为空", trigger: "blur" }
+ ],
+ questionnaireType: [
+ { required: true, message: "问卷类型不能为空", trigger: "change" }
+ ]
+ },
// 查询参数
queryParams: {
pageNum: 1,
@@ -481,7 +605,8 @@ export default {
scaleName: undefined,
scaleCode: undefined,
scaleType: undefined,
- status: undefined
+ status: undefined,
+ includeQuestionnaire: true // 包含问卷数据
},
// 表单参数
form: {},
@@ -524,10 +649,39 @@ export default {
{ label: "正常", value: "0" },
{ label: "停用", value: "1" }
];
+ },
+ /** 去重后的量表名称列表 */
+ uniqueScaleNames() {
+ // 使用所有量表列表而不是分页列表
+ if (!this.allScaleList || this.allScaleList.length === 0) {
+ return [];
+ }
+ const nameSet = new Set();
+ this.allScaleList.forEach(scale => {
+ if (scale.scaleName && scale.scaleName.trim()) {
+ nameSet.add(scale.scaleName.trim());
+ }
+ });
+ return Array.from(nameSet).sort();
+ },
+ /** 去重后的量表编码列表 */
+ uniqueScaleCodes() {
+ // 使用所有量表列表而不是分页列表
+ if (!this.allScaleList || this.allScaleList.length === 0) {
+ return [];
+ }
+ const codeSet = new Set();
+ this.allScaleList.forEach(scale => {
+ if (scale.scaleCode && scale.scaleCode.trim()) {
+ codeSet.add(scale.scaleCode.trim());
+ }
+ });
+ return Array.from(codeSet).sort();
}
},
created() {
- this.getList()
+ this.getAllScaleList() // 先获取所有量表用于下拉框
+ this.getList() // 再获取分页数据
},
methods: {
/** 获取字典标签 */
@@ -536,6 +690,21 @@ export default {
const dict = dictList.find(item => item.value === value);
return dict ? dict.label : value;
},
+ /** 获取所有量表列表(不分页,用于下拉框) */
+ getAllScaleList() {
+ // 创建一个不分页的查询参数
+ const allParams = {
+ pageNum: 1,
+ pageSize: 10000, // 设置一个足够大的数值获取所有数据
+ includeQuestionnaire: true // 包含问卷数据
+ }
+ listScale(allParams).then(response => {
+ this.allScaleList = response.rows || []
+ }).catch(error => {
+ console.error('获取所有量表列表失败:', error)
+ this.allScaleList = []
+ })
+ },
/** 查询量表列表 */
getList() {
this.loading = true
@@ -621,12 +790,14 @@ export default {
updateScale(this.form).then(response => {
this.$modal.msgSuccess("修改成功")
this.open = false
+ this.getAllScaleList() // 刷新所有量表列表
this.getList()
})
} else {
addScale(this.form).then(response => {
this.$modal.msgSuccess("新增成功")
this.open = false
+ this.getAllScaleList() // 刷新所有量表列表
this.getList()
})
}
@@ -639,6 +810,7 @@ export default {
this.$modal.confirm('是否确认删除量表编号为"' + scaleIds + '"的数据项?').then(function() {
return delScale(scaleIds)
}).then(() => {
+ this.getAllScaleList() // 刷新所有量表列表
this.getList()
this.$modal.msgSuccess("删除成功")
}).catch(() => {})
@@ -790,6 +962,7 @@ export default {
this.$modal.msgSuccess(response.msg || "导入成功")
this.importOpen = false
this.importJsonText = ""
+ this.getAllScaleList() // 刷新所有量表列表
this.getList()
}).catch(error => {
this.$modal.msgError(error.msg || "导入失败")
@@ -826,6 +999,7 @@ export default {
this.upload.fileContent = null
this.$refs.upload.clearFiles()
this.upload.isUploading = false
+ this.getAllScaleList() // 刷新所有量表列表
this.getList()
}).catch(error => {
this.$modal.msgError(error.msg || "导入失败")
@@ -858,6 +1032,7 @@ export default {
this.upload.fileContent = null
this.$refs.upload.clearFiles()
this.upload.isUploading = false
+ this.getAllScaleList() // 刷新所有量表列表
this.getList()
}).catch(error => {
this.$modal.msgError(error.msg || "导入失败")
@@ -927,8 +1102,62 @@ export default {
/** 问卷修改按钮操作 */
handleQuestionnaireUpdate(row) {
const questionnaireId = row.originalId || Math.abs(row.scaleId)
- // 跳转到问卷管理页面进行编辑
- this.$router.push({ path: '/psychology/questionnaire', query: { questionnaireId: questionnaireId, action: 'edit' } })
+ this.resetQuestionnaireForm()
+ getQuestionnaire(questionnaireId).then(response => {
+ this.questionnaireForm = response.data
+ this.questionnaireOpen = true
+ this.questionnaireTitle = "修改问卷"
+ }).catch(error => {
+ console.error("获取问卷信息失败:", error)
+ this.$modal.msgError("获取问卷信息失败")
+ })
+ },
+ /** 提交问卷表单 */
+ submitQuestionnaireForm() {
+ this.$refs["questionnaireForm"].validate(valid => {
+ if (valid) {
+ if (this.questionnaireForm.questionnaireId != undefined) {
+ updateQuestionnaire(this.questionnaireForm).then(response => {
+ this.$modal.msgSuccess("修改成功")
+ this.questionnaireOpen = false
+ this.resetQuestionnaireForm()
+ // 刷新量表列表
+ this.getAllScaleList() // 刷新所有量表列表
+ this.getList()
+ }).catch(error => {
+ console.error("修改问卷失败:", error)
+ })
+ }
+ }
+ })
+ },
+ /** 取消问卷编辑 */
+ cancelQuestionnaire() {
+ this.questionnaireOpen = false
+ this.resetQuestionnaireForm()
+ },
+ /** 重置问卷表单 */
+ resetQuestionnaireForm() {
+ this.questionnaireForm = {
+ questionnaireId: undefined,
+ questionnaireCode: undefined,
+ questionnaireName: undefined,
+ questionnaireType: "custom",
+ paperType: "manual",
+ itemCount: 0,
+ totalScore: undefined,
+ passScore: undefined,
+ estimatedTime: undefined,
+ description: undefined,
+ status: "0",
+ sortOrder: 0,
+ remark: undefined
+ }
+ this.$nextTick(() => {
+ if (this.$refs.questionnaireForm) {
+ this.$refs.questionnaireForm.clearValidate()
+ }
+ })
},
/** 问卷删除按钮操作 */
handleQuestionnaireDelete(row) {
@@ -937,6 +1166,7 @@ export default {
this.$modal.confirm('是否确认删除问卷"' + questionnaireName + '"的数据项?').then(() => {
return delQuestionnaire(questionnaireId)
}).then(() => {
+ this.getAllScaleList() // 刷新所有量表列表
this.getList()
this.$modal.msgSuccess("删除成功")
}).catch(() => {})
diff --git a/xinli-ui/src/views/student/tests.vue b/xinli-ui/src/views/student/tests.vue
index 09b39636..773c3a8c 100644
--- a/xinli-ui/src/views/student/tests.vue
+++ b/xinli-ui/src/views/student/tests.vue
@@ -191,7 +191,23 @@ export default {
const pausedRecord = this.getPausedRecord(test.scaleId)
if (pausedRecord) {
- this.continueAssessment(pausedRecord)
+ // 确认是否继续暂停的测评
+ this.$confirm('检测到您有该量表的暂停测评,是否继续?', '提示', {
+ confirmButtonText: '继续测评',
+ cancelButtonText: '重新开始',
+ type: 'warning'
+ }).then(() => {
+ this.continueAssessment(pausedRecord)
+ }).catch(() => {
+ // 用户选择重新开始,先提示确认
+ this.$confirm('重新开始将清空之前的答题记录,确定要重新开始吗?', '警告', {
+ confirmButtonText: '确定重新开始',
+ cancelButtonText: '取消',
+ type: 'warning'
+ }).then(() => {
+ this.createNewAssessment(test)
+ })
+ })
return
}
@@ -209,6 +225,11 @@ export default {
this.createAssessment(test)
},
+ // 创建新测评(用于重新开始)
+ createNewAssessment(test) {
+ this.createAssessment(test)
+ },
+
// 创建测评
createAssessment(test) {
this.loading = true