Others.vue 5.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182
  1. <template>
  2. <div class="other-wrap otherper">
  3. <div class="content">
  4. <div v-for="(it,i) in dtoList"
  5. v-if="dtoList"
  6. :key="it.id"
  7. class="label">
  8. <p class="quest">{{i + 1 +'.' + (it.description||it.name)}}</p>
  9. <img class="questionImg" :src="it.url.replace('{imageUrlPrefix}',imgUrl)" v-if="it.url">
  10. <!-- <Label v-if="it.controlType==0" -->
  11. <Label v-if="it.controlType==0"
  12. :item="it"
  13. :ppId="it.id"
  14. :moduleType="datas.type"/>
  15. <!-- 输入框 -->
  16. <Input v-if="it.controlType==6 || it.controlType==7"
  17. :item="it"
  18. :key="it.id"
  19. @updata="updataData($event,it.id)"/>
  20. <!-- 文本域 -->
  21. <ComTextArea v-if="it.controlType == 5"
  22. :item="it"
  23. @updata="updataData($event,it.id)"/>
  24. <Radio v-if="it.controlType==1"
  25. :item="it"
  26. :key="it.id"
  27. @updata="updataData($event,it.id)"/>
  28. <CheckBox v-if="it.controlType==2"
  29. :item="it"
  30. :key="it.id"
  31. @updata="updataData($event,it.id)"/>
  32. <!-- 多行输入-->
  33. <template
  34. v-if="it.controlType == 3"
  35. v-for="(part,index) in it.questionDetailList"
  36. >
  37. <MultiLineInput
  38. :msg="part.name"
  39. :part="part"
  40. @updata="updataData($event,it.id,index)"
  41. ></MultiLineInput>
  42. </template>
  43. </div>
  44. <div class="result" v-if="checkText.length>0">
  45. <p class="title">{{datas.name}}</p>
  46. <p>{{getText()}}</p>
  47. </div>
  48. </div>
  49. <div class="foot" v-if="modluesLen==3&&!nextName||modluesLen==2">
  50. <span class="back" @click="beBack">{{'返回'+ preName}}</span>
  51. <span class="next" @click="toNext">{{'预览并提交病历'}}</span>
  52. </div>
  53. <div class="foot" v-else>
  54. <span class="back" @click="beBack">{{'返回'+ preName}}</span>
  55. <span class="next" @click="toNext">{{'进入'+ nextName}}</span>
  56. </div>
  57. </div>
  58. </template>
  59. <script type="text/javascript">
  60. import UploadImg from '../common/UploadImg.vue';
  61. import Label from '../common/Label.vue';
  62. import DetailBox from './DetailBox.vue';
  63. import Toast from '../common/Toast.vue';
  64. import Input from '../common/Input.vue';
  65. import ComTextArea from '../common/ComTextArea.vue';
  66. import {moduleCP,patt,imageUrlPrefix,setScroll} from '@utils/tools';
  67. import Radio from '../common/Radio.vue';
  68. import CheckBox from '../common/CheckBox.vue';
  69. import MultiLineInput from '../common/MultiLineInput.vue';
  70. import BScroll from 'better-scroll';
  71. export default {
  72. name:'Others',
  73. data(){
  74. let {origin,datas,text} = this.$store.state.others;
  75. return{
  76. msg:"其他情况",
  77. // imgs:this.$store.state.others.imgSrc,
  78. // dtoList:origin, //模板数据
  79. dtoList:datas, //模板数据
  80. labelDetail:{}, //标签明细
  81. checkText:text, //选中的文字
  82. ppId:null,
  83. show:false,
  84. imgUrl:imageUrlPrefix,
  85. scroll:null
  86. }
  87. },
  88. props:['datas','preName','nextName','modluesLen'],
  89. created(){},
  90. mounted(){
  91. let scroll = setScroll(BScroll,true,'.otherper')
  92. this.scroll = scroll
  93. },
  94. methods:{
  95. beBack(){
  96. this.$emit('back');
  97. },
  98. toNext(){
  99. if(!this.nextName){
  100. this.$emit('next','preview')
  101. }else{
  102. this.$emit('next');
  103. }
  104. },
  105. updataData(data,id,index){//输入框存值
  106. let list = this.dtoList;
  107. for(let i in list){
  108. // if(list[i].id==data.id){
  109. if(list[i].id==id){
  110. if(list[i].controlType == 3){//多行输入
  111. let detailList = list[i].questionDetailList;
  112. detailList.splice(index,1,data);
  113. }else{
  114. list.splice(i,1,data)
  115. }
  116. }
  117. }
  118. // this.$store.commit('setOrigin',{type:'3',data:data,pId:data.id});
  119. this.$store.commit('setDatas',{type:moduleCP['other'],data:data,pId:data.id,ppId:id});
  120. this.$store.commit('setText',{type:moduleCP['other'],text:data.value.replace(patt,'').replace(/\#\{/g,'').replace(/\}/g,''),textP:data.valueP.replace(patt,'').replace(/\#\{/g,'').replace(/\}/g,''),pId:data.id,flag:true});
  121. },
  122. getText(){
  123. let textArr = this.checkText;
  124. let msg = "";
  125. for(let k in textArr){
  126. if(textArr[k].textP){
  127. msg += textArr[k].textP + ';'
  128. }
  129. }
  130. return msg;
  131. }
  132. },
  133. components:{
  134. UploadImg,
  135. Label,
  136. DetailBox,
  137. Input,
  138. ComTextArea,
  139. Radio,
  140. CheckBox,
  141. MultiLineInput
  142. },
  143. /*watch:{
  144. dtoList:{
  145. handler(newVal,oldVal){
  146. console.log("其他史数据更新:",newVal,this.$store.state.others.text)
  147. },
  148. deep:true
  149. }
  150. },*/
  151. }
  152. </script>
  153. <style lang="less" scoped>
  154. @import '../less/base.less';
  155. .other-wrap{
  156. font-size: .3rem;
  157. .btscroll;
  158. .quest{
  159. color: #000;
  160. margin-bottom: .36rem;
  161. font-weight: 700;
  162. }
  163. .label{
  164. .label;
  165. }
  166. .result{
  167. .result;
  168. }
  169. }
  170. .foot{
  171. .dbfooter;
  172. }
  173. .detail{
  174. // .mask;
  175. // z-index: 66;
  176. }
  177. .questionImg {
  178. width: 96%;
  179. }
  180. </style>