|
@@ -1,6 +1,6 @@
|
|
|
<template>
|
|
|
<div class="radio-wrap" v-if="item">
|
|
|
- <img :src="datas.url.replace('{imageUrlPrefix}',imgUrl)" v-if="datas.url">
|
|
|
+ <!-- <img :src="datas.url.replace('{imageUrlPrefix}',imgUrl)" v-if="datas.url"> -->
|
|
|
<p v-for="(it,index) in datas.questionDetailList" :key="it.id" class="list" @click="handleClick(it,index)">
|
|
|
<img :src="it.select==1?check:defaultPic">
|
|
|
<!-- <span :class="{'check':it.select==1}">{{it.name}}</span> -->
|
|
@@ -20,7 +20,7 @@
|
|
|
<script type="text/javascript">
|
|
|
import icon from '../images/radio-default.png'
|
|
|
import checkIcon from '../images/radio-check.png'
|
|
|
-import {patt,imageUrlPrefix} from '@utils/tools.js'
|
|
|
+import {patt,imageUrlPrefix,concatVal} from '@utils/tools.js'
|
|
|
import MultiLineInput from '../common/MultiLineInput.vue';
|
|
|
import OptionInp from '../common/OptionInp.vue';
|
|
|
export default{
|
|
@@ -40,59 +40,27 @@ import OptionInp from '../common/OptionInp.vue';
|
|
|
},
|
|
|
methods:{
|
|
|
handleClick(it,index){
|
|
|
- // let patt = /\$\{[^\]]+\}/g;
|
|
|
const list = this.datas;
|
|
|
let data = list.questionDetailList&&list.questionDetailList.slice(0); //数组深拷贝?
|
|
|
- let value = "";
|
|
|
- let valueP = "";
|
|
|
for(let i=0;i<data.length; i++){
|
|
|
data[i].select = 0
|
|
|
if(i==index){
|
|
|
data[i].select = 1;
|
|
|
- // value = data[i].name;
|
|
|
- // 选中该项时,带的输入框内有值则加上
|
|
|
- if(data[i].value){
|
|
|
- let newVal = '#{' + data[i].value + '}';
|
|
|
- let str = data[i].name.replace(patt,newVal);//医生
|
|
|
- let strP = (data[i].description ||data[i].name).replace(patt,newVal);//患者
|
|
|
- value = str ;
|
|
|
- valueP = strP ;
|
|
|
- }else{
|
|
|
- value = data[i].name ;
|
|
|
- valueP = data[i].description ||data[i].name ;
|
|
|
- }
|
|
|
}
|
|
|
}
|
|
|
- // const newData = Object.assign({},this.datas,{questionDetailList:data},{value:value})
|
|
|
- const newData = Object.assign({},this.datas,{questionDetailList:data,value:value,valueP:valueP})
|
|
|
+ let temp = concatVal(data);
|
|
|
+ const newData = Object.assign({},this.datas,{questionDetailList:data,value:temp.value,valueP:temp.valueP})
|
|
|
this.$emit("updata",newData);
|
|
|
},
|
|
|
- inpVal(val,index){//输入框失焦处理
|
|
|
- let valueStr = this.datas.value;
|
|
|
- /*if(valueStr){
|
|
|
- // let patt = /\$\{[^\]]+\}/g;
|
|
|
- let newVal = val;//修改时替换值用
|
|
|
- const str = valueStr.replace(patt,newVal);
|
|
|
- this.datas.value = str;
|
|
|
- }*/
|
|
|
- if(valueStr){
|
|
|
- let rePatt = /\#\{[^\]]+\}/g;
|
|
|
- let newVal = '#{' +val+'}';
|
|
|
- let str = "";
|
|
|
- // 区分第一次输入还是修改
|
|
|
- if(valueStr.indexOf("${") !== -1){
|
|
|
- str = valueStr.replace(patt,newVal);
|
|
|
- }else{//修改
|
|
|
- str = valueStr.replace(rePatt,newVal);
|
|
|
- }
|
|
|
- this.datas.value = str;
|
|
|
- this.datas.valueP = str;//输入框内容无医生患者之分
|
|
|
- }
|
|
|
-
|
|
|
+ inpVal(val,index){//输入框失焦处理
|
|
|
// 输入框回读
|
|
|
let detailList = this.datas.questionDetailList;
|
|
|
let currItem = detailList[index];
|
|
|
currItem.value = val;
|
|
|
+ // 输入框失焦重新拼接父级的value
|
|
|
+ let temp = concatVal(detailList);
|
|
|
+ this.datas.value = temp.value;
|
|
|
+ this.datas.valueP = temp.valueP;
|
|
|
this.$emit("updata",this.datas);
|
|
|
},
|
|
|
},
|