WXL (wul)
6 天以前 a5cba9ab040f6f97558046885dce3017f9bab7e9
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 }} &nbsp;&nbsp; 程度:{{ 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>