TabPage.vue 6.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242
  1. <template>
  2. <div class="tab-wrap">
  3. <div class="tab"
  4. v-if="modlues&&modlues.length>0 && moduleShow">
  5. <p v-for="(it,index) in modlues"
  6. :style="{'width':1/modlues.length*100+'%'}"
  7. :key="it.id">
  8. <span :class="{current:index==number,comp:finish[it.type]}" v-if="type[it.type]==1">
  9. <!-- <i>{{it.type}}</i> -->
  10. <i>{{index+1}}</i>
  11. {{it.name}}
  12. </span>
  13. </p>
  14. </div>
  15. <!-- 内容 -->
  16. <div class="content">
  17. <template v-for="(item,idx) in modlues">
  18. <Symptom
  19. v-if="flag==moduleCP['symp']&&item.type==moduleCP['symp']&&moduleShow"
  20. @next="toNext"
  21. :nameStr="item.name"
  22. :modluesLen="modluesLen"
  23. />
  24. <DiagTreat
  25. v-if="flag==moduleCP['diagT']&&item.type==moduleCP['diagT']&&moduleShow"
  26. :datas="item"
  27. :preName="modlues[0]&&modlues[0].name"
  28. :modluesLen="modluesLen"
  29. :nextName="modlues[2]&&modlues[2].name"
  30. @next="toNext"
  31. @back="beBack"
  32. />
  33. <Others
  34. v-if="flag==moduleCP['other']&&item.type==moduleCP['other']&&moduleShow"
  35. :modluesLen="modluesLen"
  36. :datas="item"
  37. :preName="modlues[idx-1]&&modlues[idx-1].name"
  38. :nextName="modlues[idx+1]&&modlues[idx+1].name"
  39. @next="toNext"
  40. @back="beBack"
  41. />
  42. <AddContent
  43. v-show="flag == moduleCP['suplement']&&item.type==moduleCP['suplement']&&moduleShow"
  44. :modluesLen="modluesLen"
  45. :allMoudles="item"
  46. :preName="modlues[idx-1]&&modlues[idx-1].name"
  47. @toggleModule="toggleModule"
  48. @next="toNext"
  49. @back="beBack"
  50. />
  51. </template>
  52. <Preview v-if="!moduleShow"
  53. :preName="getPreviewName()"
  54. :loadingShow="this.$store.state.loadingShow"
  55. :showLis="type"
  56. @back="beBack"
  57. />
  58. </div>
  59. </div>
  60. </template>
  61. <script type="text/javascript">
  62. import Symptom from './Symptom.vue';
  63. import AddContent from './AddContent.vue';
  64. import DiagTreat from './DiagTreat.vue';
  65. import Others from './Others.vue';
  66. import Preview from './Preview.vue';
  67. import {moduleConfig,moduleCP} from '../utils/tools.js';
  68. import $ from 'jquery';
  69. export default {
  70. name: 'TabPage',
  71. data() {
  72. let sysConfig = this.$store.state.sysConfig;
  73. let tmpAllMoudles = this.$store.state.allMoudles;
  74. let allMoudles = moduleConfig(sysConfig,tmpAllMoudles);
  75. return {
  76. config: sysConfig,
  77. modlues: allMoudles.data,
  78. modluesLen: allMoudles.len,
  79. type: {
  80. "1": sysConfig.length > 0 && sysConfig.filter(item => item.code == "symptoms_show")[0].value,
  81. "51": sysConfig.length > 0 && sysConfig.filter(item => item.code == "diagnosis_show")[0].value,
  82. "3": sysConfig.length > 0 && sysConfig.filter(item => item.code == "omhistory_show")[0].value,
  83. "52": sysConfig.length > 0 && sysConfig.filter(item => item.code == "replenish_show")[0].value,
  84. },
  85. flag: allMoudles.order,
  86. moduleShow:true,
  87. finish:{ //标识已填
  88. '1':true,
  89. '51':false,
  90. '3':false,
  91. '52':false
  92. },
  93. number:0,
  94. moduleCP:moduleCP,
  95. }
  96. },
  97. created() {
  98. if (this.config.length == 0) {
  99. // this.$router.go(-1)
  100. this.$router.replace({path:'/'})
  101. }
  102. },
  103. methods: {
  104. getPreviewName(){
  105. let len = this.modluesLen,tmpModule = this.modlues;
  106. let preName = '';
  107. if(len == 1){
  108. preName=tmpModule[0].name
  109. }else if(len == 2){
  110. preName=tmpModule[1].name
  111. }else if(len == 3){
  112. preName=tmpModule[2].name
  113. }else if(len == 4){
  114. preName=tmpModule[3].name
  115. }
  116. return preName
  117. },
  118. getNames(type){
  119. let len = this.modluesLen,tmpModule = this.modlues;
  120. let nextName = '';
  121. if(len == 1){
  122. preName=tmpModule[0].name
  123. }else if(len == 2){
  124. preName=tmpModule[1].name
  125. }else if(len == 3){
  126. preName=tmpModule[2].name
  127. }else if(len == 4){
  128. preName=tmpModule[3].name
  129. }
  130. return preName
  131. },
  132. toNext(preview) {
  133. if(preview === 'preview'){
  134. this.moduleShow=false
  135. return
  136. }
  137. let flag = parseInt(this.flag),num=this.number;
  138. this.number = ++num;
  139. for(let j in this.finish){
  140. if(j <= flag){
  141. this.finish[j] = true
  142. }
  143. }
  144. for(let i = 0;i < this.modlues.length;i++){
  145. let part = this.modlues[i];
  146. if(part.type == flag){
  147. if(i < (this.modlues.length-1)){
  148. this.flag = this.modlues[i+1].type
  149. }
  150. }
  151. }
  152. $('body').scrollTop(0);
  153. },
  154. beBack(preview) {
  155. if(preview === 'preview'){
  156. this.moduleShow=true
  157. return
  158. }
  159. let flag = parseInt(this.flag),num=this.number;
  160. this.number = --num;
  161. for(let j in this.finish){
  162. if(j <= flag){
  163. this.finish[j] = true
  164. }
  165. }
  166. for(let i = 0;i < this.modlues.length;i++){
  167. let part = this.modlues[i];
  168. if(part.type == flag){
  169. this.flag = this.modlues[i-1].type
  170. }
  171. }
  172. $('body').scrollTop(0);
  173. },
  174. toggleModule(flg){
  175. this.moduleShow = flg
  176. },
  177. },
  178. components: {
  179. Symptom,
  180. DiagTreat,
  181. Others,
  182. AddContent,
  183. Preview
  184. }
  185. }
  186. </script>
  187. <style lang="less" scoped>
  188. .tab-wrap {
  189. width: 100%;
  190. height: 100%;
  191. padding-bottom: 0.88rem;
  192. padding-top: 0.82rem;
  193. .tab {
  194. position: fixed;
  195. top: 0;
  196. left: 0;
  197. width: 100%;
  198. background: #fff;
  199. z-index: 50;
  200. height: 0.82rem;
  201. line-height: 0.82rem;
  202. border-bottom: 1px solid #ededed;
  203. box-sizing: border-box;
  204. padding-top: 0.16rem;
  205. p {
  206. display: inline-block;
  207. padding: 0 0.2rem;
  208. box-sizing: border-box;
  209. }
  210. span {
  211. font-size: 0.24rem;
  212. display: inline-block;
  213. vertical-align: top;
  214. width: 100%;
  215. height: 0.5rem;
  216. line-height: 0.5rem;
  217. color: #7c828e;
  218. text-align: center;
  219. // margin-left: 0.2rem;
  220. // margin-right: 0.19rem;
  221. }
  222. .current {
  223. color: #0043e8;
  224. background: #e5ecfc;
  225. border-radius: 25px;
  226. }
  227. .comp{
  228. color: #0043e8;
  229. }
  230. }
  231. .content {
  232. font-size: 0.3rem;
  233. // padding: 0.45rem 0.6rem;
  234. // padding: 0.45rem 0.3rem 0.45rem 0.6rem;
  235. padding: 0.45rem 0 0.45rem 0.3rem;
  236. }
  237. }
  238. </style>