TabPage.vue 6.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238
  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. export default {
  69. name: 'TabPage',
  70. data() {
  71. let sysConfig = this.$store.state.sysConfig;
  72. let tmpAllMoudles = this.$store.state.allMoudles;
  73. let allMoudles = moduleConfig(sysConfig,tmpAllMoudles);
  74. return {
  75. config: sysConfig,
  76. modlues: allMoudles.data,
  77. modluesLen: allMoudles.len,
  78. type: {
  79. "1": sysConfig.length > 0 && sysConfig.filter(item => item.code == "symptoms_show")[0].value,
  80. "51": sysConfig.length > 0 && sysConfig.filter(item => item.code == "diagnosis_show")[0].value,
  81. "3": sysConfig.length > 0 && sysConfig.filter(item => item.code == "omhistory_show")[0].value,
  82. "52": sysConfig.length > 0 && sysConfig.filter(item => item.code == "replenish_show")[0].value,
  83. },
  84. flag: allMoudles.order,
  85. moduleShow:true,
  86. finish:{ //标识已填
  87. '1':true,
  88. '51':false,
  89. '3':false,
  90. '52':false
  91. },
  92. number:0,
  93. moduleCP:moduleCP,
  94. }
  95. },
  96. created() {
  97. if (this.config.length == 0) {
  98. this.$router.go(-1)
  99. }
  100. },
  101. methods: {
  102. getPreviewName(){
  103. let len = this.modluesLen,tmpModule = this.modlues;
  104. let preName = '';
  105. if(len == 1){
  106. preName=tmpModule[0].name
  107. }else if(len == 2){
  108. preName=tmpModule[1].name
  109. }else if(len == 3){
  110. preName=tmpModule[2].name
  111. }else if(len == 4){
  112. preName=tmpModule[3].name
  113. }
  114. return preName
  115. },
  116. getNames(type){
  117. let len = this.modluesLen,tmpModule = this.modlues;
  118. let nextName = '';
  119. if(len == 1){
  120. preName=tmpModule[0].name
  121. }else if(len == 2){
  122. preName=tmpModule[1].name
  123. }else if(len == 3){
  124. preName=tmpModule[2].name
  125. }else if(len == 4){
  126. preName=tmpModule[3].name
  127. }
  128. return preName
  129. },
  130. toNext(preview) {
  131. if(preview === 'preview'){
  132. this.moduleShow=false
  133. return
  134. }
  135. let flag = parseInt(this.flag),num=this.number;
  136. this.number = ++num;
  137. for(let j in this.finish){
  138. if(j <= flag){
  139. this.finish[j] = true
  140. }
  141. }
  142. for(let i = 0;i < this.modlues.length;i++){
  143. let part = this.modlues[i];
  144. if(part.type == flag){
  145. if(i < (this.modlues.length-1)){
  146. this.flag = this.modlues[i+1].type
  147. }
  148. }
  149. }
  150. },
  151. beBack(preview) {
  152. if(preview === 'preview'){
  153. this.moduleShow=true
  154. return
  155. }
  156. let flag = parseInt(this.flag),num=this.number;
  157. this.number = --num;
  158. for(let j in this.finish){
  159. if(j <= flag){
  160. this.finish[j] = true
  161. }
  162. }
  163. for(let i = 0;i < this.modlues.length;i++){
  164. let part = this.modlues[i];
  165. if(part.type == flag){
  166. this.flag = this.modlues[i-1].type
  167. }
  168. }
  169. },
  170. toggleModule(flg){
  171. this.moduleShow = flg
  172. },
  173. },
  174. components: {
  175. Symptom,
  176. DiagTreat,
  177. Others,
  178. AddContent,
  179. Preview
  180. }
  181. }
  182. </script>
  183. <style lang="less" scoped>
  184. .tab-wrap {
  185. width: 100%;
  186. height: 100%;
  187. padding-bottom: 0.88rem;
  188. padding-top: 0.82rem;
  189. .tab {
  190. position: fixed;
  191. top: 0;
  192. left: 0;
  193. width: 100%;
  194. background: #fff;
  195. z-index: 50;
  196. height: 0.82rem;
  197. line-height: 0.82rem;
  198. border-bottom: 1px solid #ededed;
  199. box-sizing: border-box;
  200. padding-top: 0.16rem;
  201. p {
  202. display: inline-block;
  203. padding: 0 0.2rem;
  204. box-sizing: border-box;
  205. }
  206. span {
  207. font-size: 0.24rem;
  208. display: inline-block;
  209. vertical-align: top;
  210. width: 100%;
  211. height: 0.5rem;
  212. line-height: 0.5rem;
  213. color: #7c828e;
  214. text-align: center;
  215. // margin-left: 0.2rem;
  216. // margin-right: 0.19rem;
  217. }
  218. .current {
  219. color: #0043e8;
  220. background: #e5ecfc;
  221. border-radius: 25px;
  222. }
  223. .comp{
  224. color: #0043e8;
  225. }
  226. }
  227. .content {
  228. font-size: 0.3rem;
  229. // padding: 0.45rem 0.6rem;
  230. // padding: 0.45rem 0.3rem 0.45rem 0.6rem;
  231. padding: 0.45rem 0 0.45rem 0.3rem;
  232. }
  233. }
  234. </style>