Others.vue 6.9 KB

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