1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
| <template>
| <div>
| <el-table :data="items" border size="small">
| <el-table-column prop="symptom" label="症状" width="160" />
| <el-table-column label="程度" align="center" width="120">
| <template slot-scope="scope">
| <el-select v-if="editing" v-model="scope.row.degree" size="small">
| <el-option v-for="o in degrees" :key="o.v" :label="o.l" :value="o.v" />
| </el-select>
| <span v-else>{{ degLabel(scope.row.degree) }}</span>
| </template>
| </el-table-column>
| <el-table-column prop="score" label="评分" align="center" width="100" />
| </el-table>
| <div style="margin-top:10px;font-size:14px">总分:{{ totalScore }} 程度:{{ severity }}</div>
| </div>
| </template>
| <script>
| export default {
| name:"KuppermanScoreTable",
| props:{ value:{ type:Object, default:()=>({}) }, editing:Boolean },
| data(){ return { degrees:[{v:0,l:"无"},{v:1,l:"轻"},{v:2,l:"中"},{v:3,l:"重"}] }; },
| computed:{
| items(){
| const list = [
| { symptom:"潮热出汗",factor:4 },{ symptom:"感觉异常",factor:2 },{ symptom:"失眠",factor:2 },
| { symptom:"情绪波动",factor:2 },{ symptom:"抑郁",factor:1 },{ symptom:"眩晕",factor:1 },
| { symptom:"疲乏",factor:1 },{ symptom:"关节痛",factor:1 },{ symptom:"头痛",factor:1 },
| { symptom:"心悸",factor:1 },{ symptom:"皮肤蚁走感",factor:1 },{ symptom:"性生活",factor:2 },{ symptom:"泌尿系感染",factor:2 },
| ];
| return list.map(item => {
| const v = this.value[item.symptom]||0;
| return { ...item, degree:v, score:item.factor * v };
| });
| },
| totalScore(){ return this.items.reduce((s,i)=>s+i.score,0); },
| severity(){ const t=this.totalScore; return t<=6?"正常":t<=15?"轻度":t<=30?"中度":"重度"; },
| },
| watch:{
| items:{ deep:true, handler(v){
| const obj = { ...this.value, kuppermanTotal:this.totalScore, kuppermanSeverity:this.severity };
| v.forEach(i=>{ obj[i.symptom]=i.degree; });
| this.$emit('input',obj);
| }},
| },
| methods:{
| degLabel(v){ const r=this.degrees.find(d=>d.v===v); return r?r.l:"-"; },
| },
| };
| </script>
|
|