index.vue 5.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183
  1. <template>
  2. <view>
  3. <view class="cons">
  4. <!-- 位置 -->
  5. <view class="box tap-area" @click="jumpUrl('/pages/nearby/nearby')">
  6. <view class="header" v-if="merchant.logo">
  7. <image :src="merchant.logo" mode="aspectFill"></image>
  8. </view>
  9. <view class="header-title">
  10. <view class="header-name">{{merchant.title}}</view>
  11. <view class="header-text"><text>距离您</text>{{merchant.range ? merchant.mDistance < 1000 ? merchant.mDistance+'m' : merchant.range+'km' : ''}}</view>
  12. </view>
  13. <view class="header-more">
  14. <view class="more ddflex"><image src="../../static/pages/images/more.png"></image></view>
  15. </view>
  16. </view>
  17. <!-- 科室 -->
  18. <view class="box">
  19. <view class="title ddflex">
  20. <view class="fflex">选择科室</view>
  21. <!-- <view class="more ddflex"><image src="../../static/pages/images/more.png"></image></view> -->
  22. </view>
  23. <view class="tab ddflex pro-item">
  24. <view :class="'li' + (index==departmentIndex ? ' active':'')" v-for="(item,index) in departmentList" :key="index" @click="selectDepartment(item.id,index)">
  25. {{item.name}}
  26. </view>
  27. </view>
  28. </view>
  29. <!-- 医生 -->
  30. <view class="box">
  31. <view class="title ddflex">
  32. <image class="date-icon" src="../static/onlineregistration/image/dateIcon.png"></image>
  33. <biaofun-datetime-picker
  34. :dateStr="dateTime"
  35. :start="today"
  36. :end="endDate"
  37. fields="day"
  38. class="date-title fflex"
  39. @change="changeDatesPicker"
  40. ></biaofun-datetime-picker>
  41. <view class="more pmore ddflex"><image src="../../static/pages/images/more.png"></image></view>
  42. </view>
  43. <block v-if="doctorList&&doctorList.length>0">
  44. <view class="box doctor-item" v-for="(item,index) in doctorList" :key="index" @click="jumpUrl('/onlineregistration/doctorinfo/doctorinfo?id='+item.id+'&departmentId='+departmentList[departmentIndex].id)">
  45. <view class="header">
  46. <image :src="item.headUrl?item.headUrl:'../static/onlineregistration/image/doctorPic.png'" mode="aspectFill"></image>
  47. </view>
  48. <view class="header-title">
  49. <view>
  50. <text class="doctor-name">{{item.realName}}</text>
  51. <text class="doctor-position" v-if="item.userExtend&&item.userExtend.label">
  52. <block v-for="(it,idx) in item.userExtend.label.split(',')" :key="idx" v-if="idx==0">{{it}}</block></text>
  53. </view>
  54. <view class="doctor-about tovers" v-if="item.userExtend.projects">{{item.userExtend.projects}}</view>
  55. </view>
  56. <view class="header-more">
  57. <view class="regist-btn">预约</view>
  58. </view>
  59. </view>
  60. </block>
  61. <view class="nodata" v-else>
  62. <image :src="picUrlss+'empty_jl.png'"></image>
  63. <view>没有医生排班</view>
  64. </view>
  65. </view>
  66. </view>
  67. </view>
  68. </template>
  69. <script>
  70. //index.js
  71. //获取应用实例
  72. const app = getApp();
  73. const req = require('../../utils/request.js');
  74. const utils = require('../../utils/util.js');
  75. const api = require('../../utils/api.js');
  76. import biaofunDatetimePicker from '../../components/biaofun-datetime-picker/biaofun-datetime-picker.vue'
  77. export default {
  78. components: {
  79. biaofunDatetimePicker
  80. },
  81. data() {
  82. return {
  83. picUrlss: req.public.picUrls,
  84. query: {},
  85. merchant: {},
  86. departmentList: '',
  87. departmentIndex: 0,
  88. today: utils.formatTime(new Date).t2,
  89. endDate: this.getNowdate(new Date()),
  90. dateTime: utils.formatTime(new Date).t2,
  91. doctorList:[]
  92. };
  93. },
  94. onReachBottom() {
  95. },
  96. onLoad: async function(options) {
  97. this.query = options;
  98. },
  99. async onShow() {
  100. this.merchant = req.getStorage('MERCHANT')?req.getStorage('MERCHANT'):req.getStorage('defaultMerchant');
  101. console.log('merchant==',this.merchant)
  102. await this.getDepartmentList()
  103. await this.getDoctorList();
  104. },
  105. onShareAppMessage: function() {
  106. },
  107. onShareTimeline() {
  108. },
  109. methods: {
  110. getNowdate(start){
  111. var date_now = new Date(start)//获取当前时间
  112. var year = date_now.getFullYear()//获取当前时间的年份
  113. var month = date_now.getMonth()//获取当前时间的月份
  114. var day = date_now.getDate()//获取当前时间的日
  115. var days = new Date(year,month,0)//将获取到的年月赋值给days
  116. days = days.getDate()//获取当前年月的日
  117. var year2 = year
  118. var month2 = parseInt(month+7)//获取当前月份的1一个月以后的月份
  119. if(month2 > 12){
  120. year2 = parseInt(year2) + 1
  121. month2 = parseInt(month2) % 12
  122. }//考虑到12月要是获取一个月以后,就是一月,年份需要加一 ,一年没有13月,所以%12,取得来年1月
  123. var day2 = day
  124. var days2 = new Date(year2,month2,0)
  125. days2 = days2.getDate()
  126. if(day2>days2){
  127. day2 = days2
  128. }//获取了当前年份的日和6个月以后的日,为的就是判断如果前一个月是有31号,后一个月没有,就将一个月以后的日期取到,赋值给day2
  129. if(month2 < 10){
  130. month2 = '0' + month2
  131. }
  132. var time = year2 + '-' + month2 + '-' + day2
  133. return time
  134. },
  135. selectDepartment(id,index){
  136. if(this.departmentIndex == index) return false;
  137. this.departmentIndex = index
  138. this.getDoctorList()
  139. },
  140. // 获取科室列表
  141. getDepartmentList(){
  142. let that = this;
  143. return new Promise((resolve,reject)=>{
  144. req.getRequest(api.unified_tree_list, {type:2}, data => {
  145. this.departmentList = data
  146. resolve()
  147. });
  148. })
  149. },
  150. // 获取医生列表
  151. getDoctorList(){
  152. let that = this;
  153. let params = {
  154. merchantId: this.merchant.id,
  155. dateTime: this.dateTime,
  156. departmentId: this.departmentList[this.departmentIndex].id
  157. }
  158. return new Promise((resolve,reject)=>{
  159. req.getRequest(api.doctor_list, params, data => {
  160. this.doctorList = data;
  161. resolve()
  162. });
  163. })
  164. },
  165. changeDatesPicker(e){
  166. this.dateTime = e.f1
  167. this.getDoctorList()
  168. },
  169. jumpUrl(url) {
  170. uni.navigateTo({
  171. url: url
  172. })
  173. }
  174. }
  175. };
  176. </script>
  177. <style>
  178. @import "index.css";
  179. </style>