Others.vue 5.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188
  1. <template>
  2. <div class="other-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. <Label v-if="it.controlType==0"
  10. :item="it"
  11. :ppId="it.id"
  12. :moduleType="datas.type"
  13. @setDetail="setDetail"/>
  14. <!-- 输入框 -->
  15. <Input v-if="it.controlType==6 || it.controlType==7"
  16. :item="it"
  17. :key="it.id"
  18. @updata="updataData($event,it.id)"/>
  19. <!-- 文本域 -->
  20. <ComTextArea v-if="it.controlType == 5"
  21. :item="it"
  22. @updata="updataData($event,it.id)"/>
  23. <Radio v-if="it.controlType==1"
  24. :item="it"
  25. :key="it.id"
  26. @updata="updataData($event,it.id)"/>
  27. <CheckBox v-if="it.controlType==2"
  28. :item="it"
  29. :key="it.id"
  30. @updata="updataData($event,it.id)"/>
  31. <!-- 多行输入 存值和回读事件未处理 -->
  32. <!-- <template
  33. v-if="it.controlType == 3"
  34. v-for="(part,index) in it.questionDetailList"
  35. >
  36. <MultiLineInput
  37. v-if="it.controlType == 3"
  38. :msg="part.name"
  39. :part="part"
  40. @updata="updataData($event,index,it)"
  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 class="foot" v-if="modluesLen==3&&!nextName||modluesLen==2">
  49. <span class="back" @click="beBack">{{'返回'+ preName}}</span>
  50. <span class="next" @click="toNext">{{'预览并提交病历'}}</span>
  51. </div>
  52. <div class="foot" v-else>
  53. <span class="back" @click="beBack">{{'返回'+ preName}}</span>
  54. <span class="next" @click="toNext">{{'进入'+ nextName}}</span>
  55. </div>
  56. <div class="detail" v-if="show">
  57. <DetailBox @close="closeDetal"
  58. :data="labelDetail"
  59. :moduleType="datas.type"
  60. :ppId="ppId"
  61. v-if="labelDetail.questionMapping&&labelDetail.questionMapping.length>0"
  62. @pComplete="complete"/>
  63. </div>
  64. </div>
  65. </template>
  66. <script type="text/javascript">
  67. import UploadImg from '../common/UploadImg.vue';
  68. import Label from '../common/Label.vue';
  69. import DetailBox from './DetailBox.vue';
  70. import Toast from '../common/Toast.vue';
  71. import Input from '../common/Input.vue';
  72. import ComTextArea from '../common/ComTextArea.vue';
  73. import {moduleCP} from '@utils/tools';
  74. import Radio from '../common/Radio.vue';
  75. import CheckBox from '../common/CheckBox.vue';
  76. import MultiLineInput from '../common/MultiLineInput.vue';
  77. export default {
  78. name:'Others',
  79. data(){
  80. let {origin,datas,text} = this.$store.state.others;
  81. return{
  82. msg:"其他情况",
  83. // imgs:this.$store.state.others.imgSrc,
  84. // dtoList:origin, //模板数据
  85. dtoList:datas, //模板数据
  86. labelDetail:{}, //标签明细
  87. checkText:text, //选中的文字
  88. ppId:null,
  89. show:false,
  90. }
  91. },
  92. props:['datas','preName','nextName','modluesLen'],
  93. created(){},
  94. methods:{
  95. beBack(){
  96. this.$emit('back');
  97. },
  98. toNext(){
  99. if(this.modluesLen==2&&!this.nextName){
  100. this.$emit('next','preview')
  101. }else{
  102. this.$emit('next');
  103. }
  104. },
  105. setDetail(obj){
  106. this.labelDetail = obj.detail;
  107. this.ppId = obj.ppId;
  108. this.show = true;
  109. },
  110. complete(){
  111. this.show = false;
  112. this.labelDetail = {};
  113. this.ppId = null;
  114. // 处理明细选中的值
  115. },
  116. closeDetal(){
  117. this.show = false;
  118. this.labelDetail = {};
  119. this.ppId = null;
  120. },
  121. updataData(data,id){//输入框存值
  122. let list = this.dtoList;
  123. for(let i in list){
  124. if(list[i].id==data.id){
  125. list.splice(i,1,data)
  126. }
  127. }
  128. // this.$store.commit('setOrigin',{type:'3',data:data,pId:data.id});
  129. this.$store.commit('setDatas',{type:moduleCP['other'],data:data,pId:data.id,ppId:id});
  130. this.$store.commit('setText',{type:moduleCP['other'],text:data.value,pId:data.id,flag:true});
  131. },
  132. getText(){
  133. let textArr = this.checkText;
  134. let msg = "";
  135. for(let k in textArr){
  136. if(textArr[k].text){
  137. msg += textArr[k].text + ';'
  138. }
  139. }
  140. return msg;
  141. }
  142. },
  143. components:{
  144. UploadImg,
  145. Label,
  146. DetailBox,
  147. Input,
  148. ComTextArea,
  149. Radio,
  150. CheckBox,
  151. MultiLineInput
  152. },
  153. /*watch:{
  154. dtoList:{
  155. handler(newVal,oldVal){
  156. console.log("其他史数据更新:",newVal,this.$store.state.others.text)
  157. },
  158. deep:true
  159. }
  160. },*/
  161. }
  162. </script>
  163. <style lang="less" scoped>
  164. @import '../less/base.less';
  165. .other-wrap{
  166. font-size: .3rem;
  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. </style>