_hoscode.vue 5.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162
  1. <template>
  2. <!-- header -->
  3. <div class="nav-container page-component">
  4. <!--左侧导航 #start -->
  5. <div class="nav left-nav">
  6. <div class="nav-item selected">
  7. <span class="v-link selected dark" :onclick="'javascript:window.location=\'/hospital/'+hospital.hoscode+'\''">预约挂号 </span>
  8. </div>
  9. <div class="nav-item ">
  10. <span class="v-link clickable dark" :onclick="'javascript:window.location=\'/hospital/detail/'+hospital.hoscode+'\''"> 医院详情 </span>
  11. </div>
  12. <div class="nav-item">
  13. <span class="v-link clickable dark" :onclick="'javascript:window.location=\'/hospital/notice/'+hospital.hoscode+'\''"> 预约须知 </span>
  14. </div>
  15. <div class="nav-item "><span
  16. class="v-link clickable dark"> 停诊信息 </span>
  17. </div>
  18. <div class="nav-item "><span
  19. class="v-link clickable dark"> 查询/取消 </span>
  20. </div>
  21. </div>
  22. <!-- 左侧导航 #end -->
  23. <!-- 右侧内容 #start -->
  24. <div class="page-container">
  25. <div class="hospital-home">
  26. <div class="common-header">
  27. <div class="title-wrapper"><span
  28. class="hospital-title">{{ hospital.hosname }}</span>
  29. <div class="icon-wrapper">
  30. <span class="iconfont"></span>{{ hospital.param.hostypeString }}
  31. </div>
  32. </div>
  33. </div>
  34. <div class="info-wrapper">
  35. <img class="hospital-img" :src="'data:image/jpeg;base64,'+hospital.logoData" :alt="hospital.hosname">
  36. <div class="content-wrapper">
  37. <div> 挂号规则</div>
  38. <div class="line">
  39. <div><span class="label">预约周期:</span><span>{{ bookingRule.cycle }}天</span></div>
  40. <div class="space"><span class="label">放号时间:</span><span>{{ bookingRule.releaseTime }}</span></div>
  41. <div class="space"><span class="label">停挂时间:</span><span>{{ bookingRule.stopTime }}</span></div>
  42. </div>
  43. <div class="line"><span class="label">退号时间:</span>
  44. <span v-if="bookingRule.quitDay == -1">就诊前一工作日{{ bookingRule.quitTime }}前取消</span>
  45. <span v-if="bookingRule.quitDay == 0">就诊前当天{{ bookingRule.quitTime }}前取消</span>
  46. </div>
  47. <div style="margin-top:20px"> 医院预约规则</div>
  48. <div class="rule-wrapper">
  49. <ol>
  50. <li v-for="item in bookingRule.rule" :key="item">{{ item }}</li>
  51. </ol>
  52. </div>
  53. </div>
  54. </div>
  55. <div class="title select-title"> 选择科室</div>
  56. <div class="select-dept-wrapper">
  57. <div class="department-wrapper">
  58. <div class="hospital-department">
  59. <div class="dept-list-wrapper el-scrollbar" style="height: 100%;">
  60. <div class="dept-list el-scrollbar__wrap" style="margin-bottom: -17px; margin-right: -17px;">
  61. <div class="el-scrollbar__view">
  62. <div class="sub-item" v-for="(item,index) in departmentVoList" :key="item.id" :class="index == activeIndex ? 'selected' : ''" @click="move(index,item.depcode)"> {{ item.depname }}</div>
  63. </div>
  64. </div>
  65. <div class="el-scrollbar__bar is-horizontal">
  66. <div class="el-scrollbar__thumb" style="transform: translateX(0%);"></div>
  67. </div>
  68. <div class="el-scrollbar__bar is-vertical">
  69. <div class="el-scrollbar__thumb" style="transform: translateY(0%); height: 91.4761%;"></div>
  70. </div>
  71. </div>
  72. </div>
  73. </div>
  74. <div class="sub-dept-container">
  75. <div v-for="(item,index) in departmentVoList" :key="item.id" :class="index == 0 ? 'selected' : ''" class="sub-dept-wrapper" :id="item.depcode">
  76. <div class="sub-title">
  77. <div class="block selected"></div>{{ item.depname }}
  78. </div>
  79. <div class="sub-item-wrapper">
  80. <div v-for="it in item.children" :key="it.id" class="sub-item" @click="schedule(it.depcode)"><span class="v-link clickable">{{ it.depname }} </span></div>
  81. </div>
  82. </div>
  83. </div>
  84. </div>
  85. </div>
  86. </div>
  87. <!-- 右侧内容 #end -->
  88. </div>
  89. <!-- footer -->
  90. </template>
  91. <script>
  92. import '~/assets/css/hospital_personal.css'
  93. import '~/assets/css/hospital.css'
  94. import cookie from 'js-cookie'
  95. import hospitalApi from '@/api/hosp/hospital'
  96. import userInfoApi from '@/api/user/userInfo'
  97. export default {
  98. data() {
  99. return {
  100. hoscode: null,
  101. activeIndex: 0,
  102. hospital: {
  103. param: {}
  104. },
  105. bookingRule : {},
  106. departmentVoList : []
  107. }
  108. },
  109. created() {
  110. this.hoscode = this.$route.params.hoscode
  111. this.init()
  112. },
  113. methods: {
  114. init() {
  115. hospitalApi.show(this.hoscode).then(response => {
  116. this.hospital = response.data.hospital
  117. this.bookingRule = response.data.bookingRule
  118. })
  119. hospitalApi.findDepartment(this.hoscode).then(response => {
  120. this.departmentVoList = response.data
  121. })
  122. },
  123. move(index, depcode) {
  124. this.activeIndex = index
  125. document.getElementById(depcode).scrollIntoView();
  126. },
  127. schedule(depcode) {
  128. debugger
  129. // 登录判断
  130. let token = cookie.get('token')
  131. if (!token) {
  132. loginEvent.$emit('loginDialogEvent')
  133. return
  134. }
  135. //判断认证
  136. userInfoApi.getUserInfo().then(response => {
  137. let authStatus = response.data.authStatus
  138. // 状态为2认证通过
  139. if (!authStatus || authStatus != 2) {
  140. window.location.href = '/user'
  141. return
  142. }
  143. })
  144. window.location.href = '/hospital/schedule?hoscode=' + this.hospital.hoscode + "&depcode=" + depcode
  145. }
  146. }
  147. }
  148. </script>