|
@@ -0,0 +1,188 @@
|
|
|
+<template>
|
|
|
+ <portal to="notification-outlet">
|
|
|
+ <div class="select">
|
|
|
+ <div class="selected-tags">
|
|
|
+ <p class="title">已选伴随症状:</p>
|
|
|
+ <ul class="clearfix">
|
|
|
+ <li v-if="selecteds.length>0" v-for="it in selecteds">
|
|
|
+ <span>{{it.description||it.name}}</span>
|
|
|
+ <img @click="delSelected(it)" src="../images/closeimg.png" alt=""/>
|
|
|
+ </li>
|
|
|
+ </ul>
|
|
|
+ </div>
|
|
|
+ <ul class="tags clearfix">
|
|
|
+ <li
|
|
|
+ v-for="(item,idx) in symptoms"
|
|
|
+ :class="[{'liSelect':item.select}]"
|
|
|
+ :key="item.id"
|
|
|
+ @click="selectResult(item,idx)"
|
|
|
+ >
|
|
|
+ {{item.description||item.name}}
|
|
|
+ </li>
|
|
|
+ </ul>
|
|
|
+ <div :class="selecteds.length>0?'realSure sure':'sure'" @click="makeSuer">
|
|
|
+ 确定 <span v-if="numPlus">({{numPlus}})</span>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </portal>
|
|
|
+</template>
|
|
|
+<script>
|
|
|
+ import api from '../utils/api.js';
|
|
|
+ import {mapState} from 'vuex';
|
|
|
+ export default {
|
|
|
+ props: ["num"],
|
|
|
+ data() {
|
|
|
+ return {
|
|
|
+ selecteds: [], //已选伴随症状
|
|
|
+ selectedsName:'', //已选伴随症状名称
|
|
|
+ symptoms:[], //症状
|
|
|
+ sure:false,
|
|
|
+ numPlus:0 //已选答案个数
|
|
|
+ };
|
|
|
+ },
|
|
|
+ computed:{
|
|
|
+ ...mapState({
|
|
|
+ activeModule: state => state.activeModule,
|
|
|
+ chooseSymp: state => state.symptom.choose,//已选症状
|
|
|
+ checkText: state => state.symptom.text,//症状情况文字
|
|
|
+ config: state => state.sysConfig,
|
|
|
+ pathInfo: state => state.pathInfo
|
|
|
+ }),
|
|
|
+ },
|
|
|
+ mounted() {
|
|
|
+ //this.numPlus = this.num
|
|
|
+ //this.result = this.symptomResult.questionDetailList;
|
|
|
+ this.getPush(this.chooseSymp.name);
|
|
|
+ },
|
|
|
+ methods: {
|
|
|
+ getSympText() {//推送使用医生端信息
|
|
|
+ const text = this.$store.state.symptom.text;
|
|
|
+ let msg = "";
|
|
|
+ for (let i in text) {
|
|
|
+ if(text[i] && text[i].text){
|
|
|
+ msg += text[i].text;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return trimDots(msg);
|
|
|
+ },
|
|
|
+ getPush(symptoms) {//推理
|
|
|
+ const param = {
|
|
|
+ "age": this.pathInfo.patientAge,
|
|
|
+ "hosCode": this.pathInfo.hospitalCode,
|
|
|
+ "sex": this.pathInfo.sexType,
|
|
|
+ "symptom": symptoms //症状+选择的明细,string
|
|
|
+ };
|
|
|
+ api.getPush(param).then((res) => {
|
|
|
+ const result = res.data;
|
|
|
+ if (result.code == 0&&result.data) {
|
|
|
+ this.symptoms = result.data.symptom;
|
|
|
+ //this.getSymptomLisCom(result)
|
|
|
+ }else{
|
|
|
+ //this.getSymptomLisCom()
|
|
|
+ }
|
|
|
+ }).catch((err)=>{
|
|
|
+
|
|
|
+ })
|
|
|
+ },
|
|
|
+ getSymptomLisCom(result){
|
|
|
+ let symp = (result&&result.data.symptom)||[];
|
|
|
+ let symped = JSON.parse(JSON.stringify(this.chooseSymp));//已选症状
|
|
|
+ let sympStic = JSON.parse(localStorage.getItem('staticSymp'))||[];//首次有无症状
|
|
|
+ let sympAll = sympStic.concat(symp);
|
|
|
+ var obj = {};
|
|
|
+ sympAll = sympAll.reduce(function(item, next) {
|
|
|
+ obj[next.name] ? '' : obj[next.name] = true && item.push(next);
|
|
|
+ return item;
|
|
|
+ }, []);
|
|
|
+ for(let i = 0;i < symped.length;i++){//去掉已选的已选症状
|
|
|
+ for(let j = 0;j < sympAll.length;j++){//去掉
|
|
|
+ if(sympAll[j].name == symped[i].name){
|
|
|
+ sympAll.splice(j,1)
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ this.symp = sympAll.slice(0,12);
|
|
|
+ this.$refs.showHide.style.height = 'auto'
|
|
|
+ },
|
|
|
+ makeSuer() {
|
|
|
+ if(!this.selecteds.length>0){return}
|
|
|
+ let number = this.num;
|
|
|
+ this.$emit("updataResult", '',this.selectedsName,++number);
|
|
|
+ },
|
|
|
+ selectResult(item) {
|
|
|
+ this.selectedsName = this.selectedsName?this.selectedsName+"、"+item.name:item.name;
|
|
|
+ this.selecteds.push(item);
|
|
|
+ this.getPush(this.chooseSymp.name+this.selectedsName);
|
|
|
+ },
|
|
|
+ delSelected(item){ //删除已选伴随症状
|
|
|
+ const selecteds = JSON.parse(JSON.stringify(this.selecteds));
|
|
|
+ const inx = selecteds.findIndex((it)=>{
|
|
|
+ return it.tagName === item.tagName;
|
|
|
+ });
|
|
|
+ if(inx!==-1){
|
|
|
+ this.selectedsName = this.selectedsName.replace(item.name,"").replace("、、","、");
|
|
|
+ selecteds.splice(inx,1);
|
|
|
+ }
|
|
|
+ this.selecteds = selecteds;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ };
|
|
|
+</script>
|
|
|
+<style lang="less" scoped>
|
|
|
+ @import "../less/base.less";
|
|
|
+ .select{
|
|
|
+ background-color: #fff;
|
|
|
+ padding: 0.2rem 0 0 0;
|
|
|
+ position: fixed;
|
|
|
+ width: 100%;
|
|
|
+ bottom: 0;
|
|
|
+ box-sizing: border-box;
|
|
|
+ }
|
|
|
+ .selected-tags{
|
|
|
+ margin-bottom: .8rem;
|
|
|
+ .title{
|
|
|
+ color: #aaa;
|
|
|
+ font-size: .26rem;
|
|
|
+ margin-bottom: .4rem;
|
|
|
+ text-indent: .28rem;
|
|
|
+ }
|
|
|
+ li{
|
|
|
+ position: relative;
|
|
|
+ display:inline-block;
|
|
|
+ span{
|
|
|
+ display: inline-block;
|
|
|
+ padding: 0.14rem 0.2rem;
|
|
|
+ background-color: #colors[btn];
|
|
|
+ border:1px #colors[btn] solid;
|
|
|
+ border-radius: 0.36rem;
|
|
|
+ font-size: 0.26rem;
|
|
|
+ margin: 0.15rem;
|
|
|
+ float: left;
|
|
|
+ color: #fff;
|
|
|
+ }
|
|
|
+ img{
|
|
|
+ width: .3rem;
|
|
|
+ height: .3rem;
|
|
|
+ position: absolute;
|
|
|
+ right: .05rem;
|
|
|
+ top: .1rem;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ .tags {
|
|
|
+ li {
|
|
|
+ padding: 0.14rem 0.2rem;
|
|
|
+ border:1px #DFE0E4 solid;
|
|
|
+ border-radius: 0.36rem;
|
|
|
+ font-size: 0.26rem;
|
|
|
+ margin: 0.15rem;
|
|
|
+ float: left;
|
|
|
+ color: #666;
|
|
|
+ }
|
|
|
+ .liSelect {
|
|
|
+ color: #fff;
|
|
|
+ background-color: #colors[btn];
|
|
|
+ border-color: #colors[btn];
|
|
|
+ }
|
|
|
+ }
|
|
|
+</style>
|