DiagTreat.vue 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180
  1. <template>
  2. <div class="treat-wrap">
  3. <div v-for="(it,i) in dtoList"
  4. v-if="dtoList"
  5. :key="it.id"
  6. class="label">
  7. <p class="quest">{{i + 1 +'.' + it.name}}</p>
  8. <Label v-if="it.controlType==0"
  9. :item="it"
  10. :indx="i"
  11. :ppId="it.id"
  12. :moduleType="datas.type"
  13. @setDetail="setDetail"/>
  14. <!-- 上传图片 -->
  15. <UploadImg v-if="it.controlType==4"
  16. :item="it"
  17. :moduleType="datas.type"
  18. :imgList="imgs"
  19. />
  20. <!-- 输入框 -->
  21. <Input v-if="it.controlType==6 || it.controlType==7"
  22. :item="it"
  23. :key="it.id"
  24. @updata="updataData($event,it.id)"/>
  25. <!-- 文本域 -->
  26. <ComTextArea v-if="it.controlType == 5"
  27. :item="it"
  28. @updata="updataData($event,it.id)"/>
  29. </div>
  30. <div class="result" v-if="checkText.length>0">
  31. <p class="title">治疗情况</p>
  32. <!-- <p v-for="(v,i) in checkText">{{v.text}}</p> -->
  33. <p>{{getText()}}</p>
  34. </div>
  35. <div class="foot" v-if="modluesLen==2">
  36. <span class="back" @click="beBack">{{'返回'+ preName}}</span>
  37. <span class="next" @click="toNext">{{'预览'}}</span>
  38. </div>
  39. <div class="foot" v-else>
  40. <span class="back" @click="beBack">{{'返回'+ preName}}</span>
  41. <span class="next" @click="toNext">{{'进入'+ nextName}}</span>
  42. </div>
  43. <div class="detail" v-if="show">
  44. <DetailBox @close="closeDetal"
  45. :data="labelDetail"
  46. :moduleType="datas.type"
  47. :ppId="ppId"
  48. v-if="labelDetail.questionMapping&&labelDetail.questionMapping.length>0"
  49. @pComplete="complete"/>
  50. </div>
  51. </div>
  52. </template>
  53. <script type="text/javascript">
  54. import UploadImg from '../common/UploadImg.vue';
  55. import Label from '../common/Label.vue';
  56. import DetailBox from './DetailBox.vue';
  57. import Input from '../common/Input.vue';
  58. import ComTextArea from '../common/ComTextArea.vue';
  59. export default {
  60. name:'DiagTreat',
  61. data(){
  62. let {origin,text,datas} = this.$store.state.diagnose;
  63. return{
  64. msg:"诊疗情况",
  65. imgs:this.$store.state.diagnose.imgSrc,
  66. // dtoList:origin, //模板数据
  67. dtoList:datas, //模板数据
  68. labelDetail:{}, //标签明细
  69. checkText:text, //选中的文字-Arr
  70. show:false,
  71. ppId:null
  72. }
  73. },
  74. props:['datas','preName','nextName','modluesLen'],
  75. methods:{
  76. beBack(){
  77. this.$emit('back');
  78. },
  79. toNext(){
  80. if(this.modluesLen==2){
  81. this.$emit('next','preview')
  82. }else{
  83. this.$emit('next');
  84. }
  85. },
  86. setDetail(obj){
  87. this.labelDetail = obj.detail;
  88. this.ppId = obj.ppId;
  89. this.show = true;
  90. },
  91. complete(){
  92. this.show = false;
  93. this.labelDetail = {};
  94. this.ppId = null;
  95. // 处理明细选中的值
  96. },
  97. closeDetal(){
  98. this.show = false;
  99. this.labelDetail = {};
  100. this.ppId = null;
  101. },
  102. getText(){
  103. let textArr = this.checkText;
  104. let msg = "";
  105. for(let k in textArr){
  106. msg += textArr[k].text + ';'
  107. }
  108. return msg;
  109. },
  110. updataData(data,id){//输入框存值
  111. let list = this.dtoList;
  112. for(let i in list){
  113. if(list[i].id==data.id){
  114. list.splice(i,1,data)
  115. }
  116. }
  117. this.$store.commit('setDatas',{type:'2',data:data,pId:data.id,ppId:id});
  118. this.$store.commit('setText',{type:'2',text:data.value,pId:data.id,flag:true});
  119. }
  120. },
  121. components:{
  122. UploadImg,
  123. Label,
  124. DetailBox,
  125. Input,
  126. ComTextArea
  127. },
  128. /*watch:{
  129. dtoList:{
  130. handler(newVal,oldVal){
  131. },
  132. deep:true
  133. }
  134. },*/
  135. }
  136. </script>
  137. <style lang="less" scoped>
  138. @import '../less/base.less';
  139. .treat-wrap{
  140. font-size: .3rem;
  141. .quest{
  142. color: #000;
  143. margin-bottom: .36rem;
  144. font-weight: 700;
  145. }
  146. .label{
  147. .label;
  148. /* img{
  149. width:.56rem;
  150. height: .74rem;
  151. vertical-align: top;
  152. } */
  153. }
  154. .result{
  155. .title{
  156. color: #4F50FF;
  157. padding-left: .1rem;
  158. border-left: .08rem solid #4F50FF;
  159. margin-bottom: .19rem;
  160. font-weight: 700;
  161. }
  162. p{
  163. color: #666;
  164. line-height: .44rem;
  165. }
  166. }
  167. }
  168. .foot{
  169. .dbfooter;
  170. }
  171. .detail{
  172. .mask;
  173. z-index: 66;
  174. }
  175. .footer{
  176. .footer;
  177. }
  178. </style>