diff --git a/acupuncture-前台/src/views/medicalFile/components/posture/SRS22.vue b/acupuncture-前台/src/views/medicalFile/components/posture/SRS22.vue index c1466d61..3dc9fb8d 100644 --- a/acupuncture-前台/src/views/medicalFile/components/posture/SRS22.vue +++ b/acupuncture-前台/src/views/medicalFile/components/posture/SRS22.vue @@ -308,17 +308,60 @@ export default { // SRS-22量表的总得分是五个维度得分的平均值。 submitForm() { let score = 0; - // 计算总分, topic${i}属性不一定存在,先校验是否存在 - for (let i = 1; i <= 9; i++) { - if (this.form[`topic${i}`] !== undefined) { - score += this.form[`topic${i}`]; - } - } + // 功能/活动 第5、9、12、15、18题 + // 疼痛 第1、2、8、11、17题 + // 自我形象/外观 第4、6、10、14、19题 + // 心理健康 第3、7、13、16、20题 + // 治疗满意度 第21、22题 + + // 2. 维度得分计算: + // 每个维度的得分是该维度内所有问题得分的平均值。例如,功能维度包含多个问题,将这些问题的得分相加后除以问题数量,得到该维度的平均得分。 + // 计算各维度得分 + const calculateDimensionScore = (questionIndices) => { + let sum = 0; + let count = 0; + questionIndices.forEach((index) => { + if (this.form[`topic${index}`] !== undefined) { + sum += this.form[`topic${index}`]; + count++; + } + }); + return count > 0 ? sum / count : 0; + }; + // 各维度对应的题号 + const dimensions = { + function: [5, 9, 12, 15, 18], // 功能/活动 + pain: [1, 2, 8, 11, 17], // 疼痛 + appearance: [4, 6, 10, 14, 19], // 自我形象/外观 + mentalHealth: [3, 7, 13, 16, 20], // 心理健康 + satisfaction: [21, 22], // 治疗满意度 + }; + // 计算各维度得分 + const dimensionScores = { + function: calculateDimensionScore(dimensions.function), + pain: calculateDimensionScore(dimensions.pain), + appearance: calculateDimensionScore(dimensions.appearance), + mentalHealth: calculateDimensionScore(dimensions.mentalHealth), + satisfaction: calculateDimensionScore(dimensions.satisfaction), + }; + + // 3. 总得分计算: + // SRS-22量表的总得分是五个维度得分的平均值 + // 计算总得分 + const totalScore = + (dimensionScores.function + + dimensionScores.pain + + dimensionScores.appearance + + dimensionScores.mentalHealth + + dimensionScores.satisfaction) / + 5; + console.log("totalScore", totalScore); + // 存储数据 this.scaleData[this.treatmentId][this.scaleCode] = this.form; localStorage.setItem("scaleData", JSON.stringify(this.scaleData)); - // 将数据传递给父组件 - this.$emit("getScaleResult", score, this.scaleCode); + // // 将数据传递给父组件 + this.$emit("getScaleResult", totalScore, this.scaleCode); }, }, };