Others.vue 5.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192
  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. this.$nextTick(()=>{
  92. let scroll = setScroll(BScroll,true,'.otherper')
  93. this.scroll = scroll
  94. scroll.on('scroll', this.onScroll)
  95. })
  96. },
  97. methods:{
  98. onScroll() {
  99. document.activeElement.scrollIntoViewIfNeeded(true);
  100. },
  101. beBack(){
  102. this.$emit('back');
  103. },
  104. toNext(){
  105. if(!this.nextName){
  106. this.$emit('next','preview')
  107. }else{
  108. this.$emit('next');
  109. }
  110. },
  111. updataData(data,id,index){//输入框存值
  112. let list = this.dtoList;
  113. for(let i in list){
  114. // if(list[i].id==data.id){
  115. if(list[i].id==id){
  116. if(list[i].controlType == 3){//多行输入
  117. let detailList = list[i].questionDetailList;
  118. detailList.splice(index,1,data);
  119. }else{
  120. list.splice(i,1,data)
  121. }
  122. }
  123. }
  124. // this.$store.commit('setOrigin',{type:'3',data:data,pId:data.id});
  125. this.$store.commit('setDatas',{type:moduleCP['other'],data:data,pId:data.id,ppId:id});
  126. 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});
  127. this.$nextTick(()=>{
  128. this.scroll.refresh()
  129. })
  130. },
  131. getText(){
  132. let textArr = this.checkText;
  133. let msg = "";
  134. for(let k in textArr){
  135. if(textArr[k].textP){
  136. msg += textArr[k].textP + ';'
  137. }
  138. }
  139. return msg;
  140. }
  141. },
  142. components:{
  143. UploadImg,
  144. Label,
  145. DetailBox,
  146. Input,
  147. ComTextArea,
  148. Radio,
  149. CheckBox,
  150. MultiLineInput
  151. },
  152. /*watch:{
  153. dtoList:{
  154. handler(newVal,oldVal){
  155. console.log("其他史数据更新:",newVal,this.$store.state.others.text)
  156. },
  157. deep:true
  158. }
  159. },*/
  160. }
  161. </script>
  162. <style lang="less" scoped>
  163. @import '../less/base.less';
  164. .other-wrap{
  165. font-size: .3rem;
  166. .btscroll;
  167. .quest{
  168. color: #000;
  169. margin-bottom: .36rem;
  170. font-weight: 700;
  171. }
  172. .label{
  173. .label;
  174. }
  175. .result{
  176. .result;
  177. }
  178. }
  179. .foot{
  180. .dbfooter;
  181. }
  182. .detail{
  183. // .mask;
  184. // z-index: 66;
  185. }
  186. .questionImg {
  187. width: 96%;
  188. }
  189. </style>