3 changed files with 175 additions and 178 deletions
@ -0,0 +1,156 @@ |
|||||
|
<template> |
||||
|
<div> |
||||
|
<div> |
||||
|
<div |
||||
|
class="item-container" |
||||
|
v-for="(item, index) in questions" |
||||
|
:key="index" |
||||
|
> |
||||
|
<div class="item-title">{{ item.index }}. {{ item.question }}</div> |
||||
|
<div class="item-radio-box"> |
||||
|
<el-radio-group v-model="form[`topic${item.index}`]"> |
||||
|
<el-radio |
||||
|
v-for="(criteria, index) in item.criteria" |
||||
|
:key="index" |
||||
|
:label="criteria.value" |
||||
|
>{{ criteria.label }} |
||||
|
</el-radio> |
||||
|
</el-radio-group> |
||||
|
</div> |
||||
|
</div> |
||||
|
<div class="submit-box"> |
||||
|
<el-button type="primary" @click="submitForm">提交</el-button> |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
</template> |
||||
|
|
||||
|
<script> |
||||
|
export default { |
||||
|
name: "PHQ9", |
||||
|
props: ["scaleCode"], |
||||
|
data() { |
||||
|
return { |
||||
|
form: {}, |
||||
|
questions: [ |
||||
|
{ |
||||
|
index: 1, |
||||
|
question: "睡眠质量-总体评价睡眠质量", |
||||
|
criteria: [ |
||||
|
{ label: "很好", value: 0 }, |
||||
|
{ label: "较好", value: 1 }, |
||||
|
{ label: "较差", value: 2 }, |
||||
|
{ label: "很差", value: 3 }, |
||||
|
], |
||||
|
}, |
||||
|
{ |
||||
|
index: 2, |
||||
|
question: "入睡时间-从上床到入睡的时间", |
||||
|
criteria: [ |
||||
|
{ label: "≤15分钟", value: 0 }, |
||||
|
{ label: "16~30分钟", value: 1 }, |
||||
|
{ label: "31~60分钟", value: 2 }, |
||||
|
{ label: "≥60分钟", value: 3 }, |
||||
|
], |
||||
|
}, |
||||
|
{ |
||||
|
index: 3, |
||||
|
question: "睡眠时间-每晚实际睡眠时间", |
||||
|
criteria: [ |
||||
|
{ label: ">7小时", value: 0 }, |
||||
|
{ label: "6~7小时", value: 1 }, |
||||
|
{ label: "5~6小时", value: 2 }, |
||||
|
{ label: "<5小时", value: 3 }, |
||||
|
], |
||||
|
}, |
||||
|
{ |
||||
|
index: 4, |
||||
|
question: "睡眠效率-睡眠时间与床上时间的比例", |
||||
|
criteria: [ |
||||
|
{ label: ">85%", value: 0 }, |
||||
|
{ label: "75%~84%", value: 1 }, |
||||
|
{ label: "65%~74%", value: 2 }, |
||||
|
{ label: "<65%", value: 3 }, |
||||
|
], |
||||
|
}, |
||||
|
{ |
||||
|
index: 5, |
||||
|
question: "睡眠障碍-夜间醒来、呼吸困难、噩梦等", |
||||
|
criteria: [ |
||||
|
{ label: "每项无", value: 0 }, |
||||
|
{ label: "<1次/周", value: 1 }, |
||||
|
{ label: "1~2次/周", value: 2 }, |
||||
|
{ label: "≥3次/周", value: 3 }, |
||||
|
], |
||||
|
}, |
||||
|
{ |
||||
|
index: 6, |
||||
|
question: "催眠药物-使用催眠药物的频率", |
||||
|
criteria: [ |
||||
|
{ label: "无", value: 0 }, |
||||
|
{ label: "<1次/周", value: 1 }, |
||||
|
{ label: "1~2次/周", value: 2 }, |
||||
|
{ label: "≥3次/周", value: 3 }, |
||||
|
], |
||||
|
}, |
||||
|
{ |
||||
|
index: 7, |
||||
|
question: "日间功能障碍-白天困倦、注意力不集中等", |
||||
|
criteria: [ |
||||
|
{ label: "无", value: 0 }, |
||||
|
{ label: "<1次/周", value: 1 }, |
||||
|
{ label: "1~2次/周", value: 2 }, |
||||
|
{ label: "≥3次/周", value: 3 }, |
||||
|
], |
||||
|
}, |
||||
|
], |
||||
|
scaleData: {}, |
||||
|
}; |
||||
|
}, |
||||
|
created() { |
||||
|
console.log("this.scaleCode", this.scaleCode); |
||||
|
this.treatmentId = this.$route.query.treatmentId; // 诊疗id |
||||
|
let scaleData = localStorage.getItem("scaleData"); // 获取上次填写的数据 |
||||
|
this.scaleData = scaleData |
||||
|
? JSON.parse(scaleData) |
||||
|
: { |
||||
|
[this.treatmentId]: {}, |
||||
|
}; |
||||
|
this.form = this.scaleData[this.treatmentId][this.scaleCode] || {}; // 将上次填写的数据赋值给form |
||||
|
}, |
||||
|
methods: { |
||||
|
submitForm() { |
||||
|
let score = 0; |
||||
|
// 计算总分, topic${i}属性不一定存在,先校验是否存在 |
||||
|
for (let i = 1; i <= 9; i++) { |
||||
|
if (this.form[`topic${i}`] !== undefined) { |
||||
|
score += this.form[`topic${i}`]; |
||||
|
} |
||||
|
} |
||||
|
// 存储数据 |
||||
|
this.scaleData[this.treatmentId][this.scaleCode] = this.form; |
||||
|
localStorage.setItem("scaleData", JSON.stringify(this.scaleData)); |
||||
|
// 将数据传递给父组件 |
||||
|
this.$emit("getScaleResult", score, this.scaleCode); |
||||
|
}, |
||||
|
}, |
||||
|
}; |
||||
|
</script> |
||||
|
<style scoped src="@/assets/styles/common.css"></style> |
||||
|
|
||||
|
<style scoped> |
||||
|
.item-title { |
||||
|
font-size: 20px; |
||||
|
font-weight: bold; |
||||
|
color: #3d3d3d; |
||||
|
line-height: 26px; |
||||
|
} |
||||
|
.item-radio-box { |
||||
|
margin: 16px 0px; |
||||
|
} |
||||
|
>>> .el-radio__label { |
||||
|
font-size: 18px; |
||||
|
color: #555555; |
||||
|
line-height: 20px; |
||||
|
} |
||||
|
</style> |
@ -1,174 +0,0 @@ |
|||||
<template> |
|
||||
<div> |
|
||||
<!-- |
|
||||
1 坐着阅读书刊 0:从不打瞌睡;1:轻度可能;2:中度可能;3:很可能打瞌睡 |
|
||||
2 看电视 0:从不打瞌睡;1:轻度可能;2:中度可能;3:很可能打瞌睡 |
|
||||
3 在公共场所坐着不活动(如剧院或会议) 0:从不打瞌睡;1:轻度可能;2:中度可能;3:很可能打瞌睡 |
|
||||
4 作为乘客在车内乘坐一小时以上 0:从不打瞌睡;1:轻度可能;2:中度可能;3:很可能打瞌睡 |
|
||||
5 午间静卧休息 0:从不打瞌睡;1:轻度可能;2:中度可能;3:很可能打瞌睡 |
|
||||
6 坐着和别人交谈 0:从不打瞌睡;1:轻度可能;2:中度可能;3:很可能打瞌睡 |
|
||||
7 午餐后静坐(不饮酒) 0:从不打瞌睡;1:轻度可能;2:中度可能;3:很可能打瞌睡 |
|
||||
8 坐在车内,当车辆因交通拥堵而停下时 0:从不打瞌睡;1:轻度可能;2:中度可能;3:很可能打瞌睡 |
|
||||
--> |
|
||||
<div> |
|
||||
<div |
|
||||
class="item-container" |
|
||||
v-for="(item, index) in questions" |
|
||||
:key="index" |
|
||||
> |
|
||||
<div class="item-title">{{ item.index }}. {{ item.question }}</div> |
|
||||
<div class="item-radio-box"> |
|
||||
<el-radio-group v-model="form[`topic${item.index}`]"> |
|
||||
<el-radio |
|
||||
v-for="(criteria, index) in item.criteria" |
|
||||
:key="index" |
|
||||
:label="criteria.value" |
|
||||
>{{ criteria.label }} |
|
||||
</el-radio> |
|
||||
</el-radio-group> |
|
||||
</div> |
|
||||
</div> |
|
||||
<div class="submit-box"> |
|
||||
<el-button type="primary" @click="submitForm">提交</el-button> |
|
||||
</div> |
|
||||
</div> |
|
||||
</div> |
|
||||
</template> |
|
||||
|
|
||||
<script> |
|
||||
export default { |
|
||||
name: "phq", |
|
||||
data() { |
|
||||
return { |
|
||||
form: {}, |
|
||||
questions: [ |
|
||||
{ |
|
||||
index: 1, |
|
||||
question: "坐着阅读书刊", |
|
||||
criteria: [ |
|
||||
{ label: "从不打瞌睡", value: 0 }, |
|
||||
{ label: "轻度可能", value: 1 }, |
|
||||
{ label: "中度可能", value: 2 }, |
|
||||
{ label: "很可能打瞌睡", value: 3 }, |
|
||||
], |
|
||||
}, |
|
||||
{ |
|
||||
index: 2, |
|
||||
question: "看电视", |
|
||||
criteria: [ |
|
||||
{ label: "从不打瞌睡", value: 0 }, |
|
||||
{ label: "轻度可能", value: 1 }, |
|
||||
{ label: "中度可能", value: 2 }, |
|
||||
{ label: "很可能打瞌睡", value: 3 }, |
|
||||
], |
|
||||
}, |
|
||||
{ |
|
||||
index: 3, |
|
||||
question: "在公共场所坐着不活动(如剧院或会议)", |
|
||||
criteria: [ |
|
||||
{ label: "从不打瞌睡", value: 0 }, |
|
||||
{ label: "轻度可能", value: 1 }, |
|
||||
{ label: "中度可能", value: 2 }, |
|
||||
{ label: "很可能打瞌睡", value: 3 }, |
|
||||
], |
|
||||
}, |
|
||||
{ |
|
||||
index: 4, |
|
||||
question: "作为乘客在车内乘坐一小时以上", |
|
||||
criteria: [ |
|
||||
{ label: "从不打瞌睡", value: 0 }, |
|
||||
{ label: "轻度可能", value: 1 }, |
|
||||
{ label: "中度可能", value: 2 }, |
|
||||
{ label: "很可能打瞌睡", value: 3 }, |
|
||||
], |
|
||||
}, |
|
||||
{ |
|
||||
index: 5, |
|
||||
question: "午间静卧休息", |
|
||||
criteria: [ |
|
||||
{ label: "从不打瞌睡", value: 0 }, |
|
||||
{ label: "轻度可能", value: 1 }, |
|
||||
{ label: "中度可能", value: 2 }, |
|
||||
{ label: "很可能打瞌睡", value: 3 }, |
|
||||
], |
|
||||
}, |
|
||||
{ |
|
||||
index: 6, |
|
||||
question: "坐着和别人交谈", |
|
||||
criteria: [ |
|
||||
{ label: "从不打瞌睡", value: 0 }, |
|
||||
{ label: "轻度可能", value: 1 }, |
|
||||
{ label: "中度可能", value: 2 }, |
|
||||
{ label: "很可能打瞌睡", value: 3 }, |
|
||||
], |
|
||||
}, |
|
||||
{ |
|
||||
index: 7, |
|
||||
question: "午餐后静坐(不饮酒)", |
|
||||
criteria: [ |
|
||||
{ label: "从不打瞌睡", value: 0 }, |
|
||||
{ label: "轻度可能", value: 1 }, |
|
||||
{ label: "中度可能", value: 2 }, |
|
||||
{ label: "很可能打瞌睡", value: 3 }, |
|
||||
], |
|
||||
}, |
|
||||
{ |
|
||||
index: 8, |
|
||||
question: "坐在车内,当车辆因交通拥堵而停下时", |
|
||||
criteria: [ |
|
||||
{ label: "从不打瞌睡", value: 0 }, |
|
||||
{ label: "轻度可能", value: 1 }, |
|
||||
{ label: "中度可能", value: 2 }, |
|
||||
{ label: "很可能打瞌睡", value: 3 }, |
|
||||
], |
|
||||
}, |
|
||||
], |
|
||||
scaleData: {}, |
|
||||
}; |
|
||||
}, |
|
||||
created() { |
|
||||
this.treatmentId = this.$route.query.treatmentId; // 诊疗id |
|
||||
let scaleData = localStorage.getItem("scaleData"); // 获取上次填写的数据 |
|
||||
this.scaleData = scaleData |
|
||||
? JSON.parse(scaleData) |
|
||||
: { |
|
||||
[this.treatmentId]: {}, |
|
||||
}; |
|
||||
this.form = this.scaleData[this.treatmentId].epworth || {}; // 将上次填写的数据赋值给form |
|
||||
}, |
|
||||
methods: { |
|
||||
submitForm() { |
|
||||
let score = 0; |
|
||||
// 计算总分, topic${i}属性不一定存在,先校验是否存在 |
|
||||
for (let i = 1; i <= 9; i++) { |
|
||||
if (this.form[`topic${i}`] !== undefined) { |
|
||||
score += this.form[`topic${i}`]; |
|
||||
} |
|
||||
} |
|
||||
// 存储数据 |
|
||||
this.scaleData[this.treatmentId].epworth = this.form; |
|
||||
localStorage.setItem("scaleData", JSON.stringify(this.scaleData)); |
|
||||
// 将数据传递给父组件 |
|
||||
this.$emit("getScaleResult", score, "PG_SM_EPSW_DF"); |
|
||||
}, |
|
||||
}, |
|
||||
}; |
|
||||
</script> |
|
||||
<style scoped src="@/assets/styles/common.css"></style> |
|
||||
|
|
||||
<style scoped> |
|
||||
.item-title { |
|
||||
font-size: 20px; |
|
||||
font-weight: bold; |
|
||||
color: #3d3d3d; |
|
||||
line-height: 26px; |
|
||||
} |
|
||||
.item-radio-box { |
|
||||
margin: 16px 0px; |
|
||||
} |
|
||||
>>> .el-radio__label { |
|
||||
font-size: 18px; |
|
||||
color: #555555; |
|
||||
line-height: 20px; |
|
||||
} |
|
||||
</style> |
|
Loading…
Reference in new issue