diff --git a/app.json b/app.json index 625e269..a582dd3 100644 --- a/app.json +++ b/app.json @@ -13,6 +13,7 @@ "pages/login/login", "pages/mobileLogin/mobileLogin", "pages/expertConsult/expertConsult", + "pages/hivConsult/hivConsult", "pages/expertDetail/expertDetail", "pages/selectPatient/selectPatient", "pages/writeSick/writeSick", diff --git a/pages/index/index.js b/pages/index/index.js index e32c932..21ca93c 100644 --- a/pages/index/index.js +++ b/pages/index/index.js @@ -273,13 +273,13 @@ Page({ this.onClickHide(); }), goExpert:throttle(function(){ - wx.showToast({ - title: '敬请期待', - icon:'none' - }) - // app.method.navigateTo({ - // url: '/patient/pages/expertConsult/expertConsult' - // }) + // wx.showToast({ + // title: '敬请期待', + // icon:'none' + // }) + app.method.navigateTo({ + url: '/patient/pages/hivConsult/hivConsult' + }) }), goconsultandbuy:throttle(function(){ app.method.navigateTo({ diff --git a/pages/index/index.wxml b/pages/index/index.wxml index 10d8c4c..0338883 100644 --- a/pages/index/index.wxml +++ b/pages/index/index.wxml @@ -72,7 +72,7 @@ HIV - + 恐艾咨询,健康指导 diff --git a/patient/pages/expertConsult/expertConsult.json b/patient/pages/expertConsult/expertConsult.json index b5e3159..32d5dba 100644 --- a/patient/pages/expertConsult/expertConsult.json +++ b/patient/pages/expertConsult/expertConsult.json @@ -3,6 +3,7 @@ "van-dropdown-menu": "@vant/weapp/dropdown-menu/index", "van-dropdown-item": "@vant/weapp/dropdown-item/index", "van-picker": "@vant/weapp/picker/index", + "van-popup": "@vant/weapp/popup/index", "van-sticky": "@vant/weapp/sticky/index", "nav":"../../../components/nav/nav" diff --git a/patient/pages/hivConsult/hivConsult.js b/patient/pages/hivConsult/hivConsult.js new file mode 100644 index 0000000..269c51e --- /dev/null +++ b/patient/pages/hivConsult/hivConsult.js @@ -0,0 +1,406 @@ +// pages/expertConsult/expertConsult.js +const app = getApp() +import {doctorList,getProvince,getCity,getCountry} from "../../../api/consultExpert" +import {sickType} from "../../../api/common" +let provinceArr=[{area_id:'', area_name: "全国"}]; +let cityArr=[]; +import {throttle} from "../../../utils/util" +Page({ + + /** + * 页面的初始数据 + */ + data: { + page:1, + pageNumber:10, + isTriggered:false, + show:false, + expertise_id:21, + province_id:'', + city_id:'', + keyword:'', + lock:false, + is_online:0, + sort_order:1, + inquiry_type:'1,3', + inquiry_mode:'1,2', + navName:"专家问诊", + scrollHeight:53, + sickList:[], + img_host:'https://oss.prod.applets.igandanyiyuan.com/applet/patient/static', + option: [ + { text: '综合', value: 1 }, + { text: '响应时间快', value: 2 }, + { text: '价格从低到高', value: 3 }, + { text: '价格从高到低', value: 4 }, + { text: '服务数从多到少', value: 5}, + ], + overlay:true, + selectkind:false, + selectkarea:false, + position:"全国", + doctorList: [], + triggered: false, + scrollTop: 0, + offsetTop: 0, + columns: [ + { + values:[], + className: 'column1', + }, + { + values: [], + className: 'column2', + defaultIndex: 1, + } + ], + isLoding:false, + tabId:-1 + }, + goBack(){ + wx.navigateBack({ + delta: 1, + }) + }, + toggleOnline(){ + this.setData({ + is_online:this.data.is_online==0?1:0 + }) + this.onfresh(); + }, + onScroll(event) { + let {doctorList}=this.data; + wx.createSelectorQuery().select('#scroller') + .boundingClientRect((res) => { + let H=0; + if(event.detail.scrollTop>78){ + if(doctorList.length<=3){ + H=53; + }else{ + H=1; + } + + }else{ + H=53 + } + this.setData({ + scrollHeight:H + }); + + }).exec(); + }, + transforpage(arr) { + const pages = []; + let L= Math.ceil(arr.length / 2); + arr.forEach((item, index) => { + const page = Math.floor(index / L) + if (!pages[page]) { + pages[page] = [] + } + pages[page].push(item) + }); + return pages + }, + goSearch:throttle(function(){ + wx.hideKeyboard(); + app.method.navigateTo({ + url: '/patient/pages/search/search', + }) + }), + switchTab(event){ + this.setData({ + tabId:event.target.dataset.id, + expertise_id:event.target.dataset.id + }) + this.onfresh(); + }, + changeSorder({ detail }){ + this.setData({ + sort_order: detail, + selectkind:true + }); + this.onfresh(); + }, + getIptvalue(event){ + this.setData({ + keyword:event.detail.value + }) + this.onfresh(); + }, + goExpertDetail:throttle(function(event){ + app.method.navigateTo({ + url: '/patient/pages/expertDetail/expertDetail?doctor_id='+event.currentTarget.dataset.doctorid + }) + }), + openCity(){ + this.setData({ + show:true, + overlay:false + }) + }, + closeCity(){ + this.setData({ + show:false, + overlay:true + }) + }, + onChange(event) { + const { picker, value, index } = event.detail; + if(index===0){ + let currentIndex=picker.getIndexes()[0]; + if(provinceArr[currentIndex].area_id){ + this.cityList(provinceArr[currentIndex].area_id); + }else{ + this.setData({ + 'columns[1].values':[] + }) + } + + } + }, + + onConfirm(event) { + const { picker, value, index } = event.detail; + let currentPosition='' + for (let index = 0; index < value.length; index++) { + if(!value[0].area_id){ + currentPosition="全国"; + this.setData({ + province_id:'', + city_id:'' + }) + }else{ + currentPosition+=value[index].area_name; + if(index===0){ + this.setData({ + province_id:value[index].area_id + }) + }else if(index==1){ + this.setData({ + city_id:value[index].area_id + }) + } + } + } + this.setData({ + show:false, + selectarea:true, + position:currentPosition + }) + this.selectComponent('#item').toggle(); + this.onfresh(); + }, + + onCancel() { + this.setData({ + show:false + }) + this.selectComponent('#item').toggle(false); + }, + /** + * 生命周期函数--监听页面加载 + */ + getSickType(){ + sickType().then((res)=>{ + this.setData({ + sickList:this.transforpage(res) + }) + }) + }, + handleRefresher(){ + + this.setData({ + lock:false, + page:1, + scrollHeight:53, + doctorList:[] + }); + this.getDoctorList() + }, + getDoctorList(){ + let {expertise_id,province_id, city_id,sort_order,keyword,page,pageNumber,is_online,inquiry_type,inquiry_mode}=this.data; + doctorList({ + expertise_id:expertise_id, + province_id:province_id, + city_id:city_id, + sort_order: sort_order, + is_first_online:is_online, + keyword:keyword, + inquiry_type, + inquiry_mode, + page:page, + per_page:pageNumber + }).then((res)=>{ + let {doctorList}=this.data; + if(res.data.length==0){ + this.setData({ + lock:true, + isTriggered:false + }); + return false; + }else{ + this.setData({ + isTriggered:false, + doctorList:doctorList.concat(res.data) + }) + } + + + }) + }, + provinceList(){ + getProvince().then((res)=>{ + provinceArr= provinceArr.concat(res); + let province=[{area_id:'', area_name: "全国"}];// + for (let i = 0; i < res.length; i++) { + province.push(res[i]); + }; + this.setData({ + 'columns[0].values':province + }) + //this.cityList(province[0].area_id); + + }) + }, + cityList(area_id){ + getCity({ + area_id:area_id + }).then((res)=>{ + + cityArr=res; + let city=[]; + for (let i = 0; i < res.length; i++) { + city.push(res[i]); + }; + this.setData({ + 'columns[1].values':city, + + }) + //this.countryList(res[0].area_id); + }) + }, + countryList(area_id){ + getCountry({ + area_id:area_id + }).then((res)=>{ + let area=[]; + for (let i = 0; i < res.length; i++) { + area.push(res[i]); + }; + this.setData({ + 'columns[2].values':area, + isLoding:false + }) + }) + }, + onfresh(){ + this.setData({ + page:1, + doctorList:[], + lock:false + }) + this.getDoctorList(); + }, + lower(e) { + let {lock}=this.data; + let addPage=this.data.page+1; + if(!lock){ + this.setData({ + page:addPage + }); + this.getDoctorList(); + } + }, + onLoad(options) { + if(options.type=="free"){ + wx.setNavigationBarTitle({ + title: "特惠问诊" + }); + this.setData({ + navName:"特惠问诊", + inquiry_type:3, + inquiry_mode:1 + }) + }else if(options.type=="buyYao"){ + wx.setNavigationBarTitle({ + title: "问诊购药" + }); + this.setData({ + navName:"问诊购药", + inquiry_type:4, + inquiry_mode:1 + }) + } + this.getSickType(); + this.getDoctorList(); + this.provinceList(); + + }, + + /** + * 生命周期函数--监听页面初次渲染完成 + */ + onReady() { + + }, + + + onRefresh() { + if (this._freshing) return + this._freshing = true + setTimeout(() => { + this.setData({ + triggered: false, + }) + this._freshing = false + }, 3000) + }, + onRestore(e) { + console.log('onRestore:', e) + }, + + onAbort(e) { + console.log('onAbort', e) + }, + /** + * 生命周期函数--监听页面显示 + */ + onShow() { + this.setData({ + img_host:app.hostConfig().imghost + }); + }, + + /** + * 生命周期函数--监听页面隐藏 + */ + onHide() { + + }, + + /** + * 生命周期函数--监听页面卸载 + */ + onUnload() { + + }, + + /** + * 页面相关事件处理函数--监听用户下拉动作 + */ + onPullDownRefresh() { + + }, + + /** + * 页面上拉触底事件的处理函数 + */ + onReachBottom() { + + }, + + /** + * 用户点击右上角分享 + */ + +}) \ No newline at end of file diff --git a/patient/pages/hivConsult/hivConsult.json b/patient/pages/hivConsult/hivConsult.json new file mode 100644 index 0000000..32d5dba --- /dev/null +++ b/patient/pages/hivConsult/hivConsult.json @@ -0,0 +1,14 @@ +{ + "usingComponents": { + "van-dropdown-menu": "@vant/weapp/dropdown-menu/index", + "van-dropdown-item": "@vant/weapp/dropdown-item/index", + "van-picker": "@vant/weapp/picker/index", + + "van-popup": "@vant/weapp/popup/index", + "van-sticky": "@vant/weapp/sticky/index", + "nav":"../../../components/nav/nav" + }, + "navigationStyle":"custom", + "disableScroll":true, + "navigationBarTitleText": "肝胆相照互联网医院" +} \ No newline at end of file diff --git a/patient/pages/hivConsult/hivConsult.wxml b/patient/pages/hivConsult/hivConsult.wxml new file mode 100644 index 0000000..a9a7cfb --- /dev/null +++ b/patient/pages/hivConsult/hivConsult.wxml @@ -0,0 +1,115 @@ + + + + + + + + + + + + + + {{item.expertise_name}} + + + + + + + + + + + + + 优先在线 + + + + + + + + + + + + + + + + + + + + {{item.user_name}} + + {{item.hospital.hospital_level_name}} + 可处方 + + {{item.doctor_title_name}} {{item.department_custom_name}} + {{item.hospital.hospital_name}} + 擅长:{{item.be_good_at}} + {{cell.expertise_name}} + + 评分: {{item.praise_rate}} 暂无 + 问诊量: {{item.served_patients_num}}暂无 + 平均回复: {{moduleFilter.formatReply(item.avg_response_time)}}h暂无 + + + + 图文问诊:¥{{itemName.inquiry_price}} + + {{itemName.inquiry_mode==1?'图文问诊':itemName.inquiry_mode==2?'视频问诊':'其他问诊'}}:¥{{itemName.inquiry_price}} + + + + + + + 暂无数据! + + + + + + + diff --git a/patient/pages/hivConsult/hivConsult.wxss b/patient/pages/hivConsult/hivConsult.wxss new file mode 100644 index 0000000..00c418a --- /dev/null +++ b/patient/pages/hivConsult/hivConsult.wxss @@ -0,0 +1,306 @@ +/* pages/expertConsult/expertConsult.wxss */ +.wraper{ + + height: 100%; +} +.containexpert{ + margin-top: 172rpx; + padding: 0 30rpx 0rpx; + overflow: hidden; + position: relative; + transform: all 0.3s ease; +} +.droptitle,.van-ellipsis{ + font-size: 30rpx!important; +} +.namebox .name{ + max-width:400rpx; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + } + +.droptitle.active{ + color:#3CC7C0; +} +.searchbox { + width: 100%; + height: 72rpx; + display: flex; + border-radius: 40rpx; + align-items: center; + margin-top: 20rpx; + background: #FBFBFB; + border-radius: 36px; + border: 1rpx solid #CCCCCC; +} + +.searchbox input { + margin-left: 30rpx; + flex: 1; + font-size: 32rpx; + height: 80rpx; +} + +.searchbox image { + width: 30rpx; + height: 30rpx; + margin-right: 28rpx; +} + +.scroll-view_H { + height:195rpx; + white-space: nowrap; + vertical-align: top; +} +.scroll-view-item_H{ + /* width: 154rpx; */ + padding:0 15rpx; + background: #F4F4F4; + border-radius: 30rpx; + font-size: 28rpx; + color: #666666; + margin-left: 36rpx; + border: 1rpx solid #F4F4F4; + height: 58rpx; + display: inline-block; + text-align: center; + line-height: 58rpx; +} + +.page-section-spacing .row{ + margin-top: 30rpx; + margin-bottom: 30rpx; +} +.page-section-spacing .row:last-child{ + margin-top: 30rpx; + margin-bottom: 10rpx; +} +.scroll-view_H .scroll-view-item_H:first-child{ + margin-left: 0rpx; + +} +.scroll-view-item_H.active { + background: #E2FFFE; + color: #3CC7C0; + border: 1rpx solid #3CC7C0; +} +.van-dropdown-menu{ + box-shadow: none!important; + +} +.viewcell{ + display: flex; + overflow: hidden; + box-sizing: border-box; + padding:40rpx 30rpx 30rpx; + width:100%; + border-radius: 10rpx; + background-color: #fff; + border-bottom: 1rpx solid #E7E7E7; +} +.viewcell:last-child{ + border-bottom: none; +} +.viewcell .type{ + height: 32rpx; + margin-bottom: 6rpx; + line-height: 32rpx; + display: flex; + white-space: nowrap; + align-items: center; + margin-left: 18rpx; + padding:0rpx 6rpx; + background: #ED9C00; + border-radius: 4rpx; + color: #FFFFFF; + font-size: 24rpx; +} +.viewcell .hospital{ + margin-top: 12rpx; + color: #333333; + display: flex; + font-size: 30rpx; + word-wrap: break-word; +} +.hospital_name{ + word-wrap: break-word; + margin-right: 10rpx; + overflow: hidden; + white-space: nowrap; + text-overflow: ellipsis; +} +.goodjob{ +color: #666666; +margin-top: 28rpx; +line-height: 42rpx; +font-size: 28rpx; +word-break: break-all; +text-overflow: ellipsis; +display: -webkit-box; +-webkit-box-orient: vertical; +-webkit-line-clamp: 2; /* 这里是超出几行省略 */ +overflow: hidden; +} +.price{ + font-size: 28rpx; + position: relative; +} + +.price text{ + margin-left: 5rpx; + font-size: 32rpx; + color:#EF4F20; +} +.viewcell .right{ + flex:1; + margin-left: 20rpx; +} +.viewcell image{ + width:80rpx; + height:80rpx; + border-radius:50%; +} +.namebox{ + display: flex; + font-size: 34rpx; + font-weight: 600; + color:#333; + align-items: flex-end; +} +.namebox .position{ + font-weight: normal; + margin-left: 15rpx; + font-size: 30rpx; +} +.dropOnline.active{ + color: #3CC7C0; +} +.diseaseType{ +height: 40rpx; +background: #E2FFFE; +border-radius: 20rpx; +margin-right: 20rpx; +border: 1rpx solid #3CC7C0; +color: #3CC7C0; +font-size: 24rpx; +display: inline-flex; +text-align: center; +padding:0 15rpx; +align-items: center; +justify-content: center; +margin-top: 20rpx; +white-space: nowrap; +} +.detail{ + margin-top: 20rpx; + display: flex; + font-size: 24rpx; +} +.detail view{ + margin-right:40rpx; +} + +.detail view text{ + font-size: 28rpx; + color:#3CC7C0; +} +.consultbox{ + position: relative; + height: 60rpx; + margin-top: 28rpx; + display: flex; + align-items: center; + justify-content: space-between; +} + +.consult{ + height: 60rpx; +background: #3CC7C0; +border-radius: 30rpx; +color: #FFFFFF; +display: flex; +align-items: center; +padding:0 20rpx; +font-size: 30rpx; +} + +.wraper{ + display: flex; + flex-direction: column; +} +.scrollwraper{ + flex: 1; + overflow-y: scroll; + -webkit-overflow-scrolling: touch; +} +.dropdown{ + width:100%; + position: relative; + justify-content:center; + background-color: #fff; + align-items: center; + border-bottom: 1rpx solid #E7E7E7; + display: flex; +} +.dropdown .bar{ + + height:40rpx; + width:1rpx; + left: 50%; + top:50%; + transform: translate(-50%,-50%); + position: absolute; + background:#ccc; + opacity: 0.9; +} +.dropbar{ + background:#ccc; + opacity: 0.9; + height:40rpx; + width:1rpx; + position: static; + margin-top: 30rpx; +} +.dropOnline{ + display: flex; + justify-content: center; + align-items: center; + width:33.33%; + font-size: 30rpx; +} +.viewcell .left{ + position: relative; +} +.price .expert_prcie{ + text-decoration: line-through; + color:#999; +} +.price .expert_prcie .priceactive{ + color:#999; +} +.pricecell{ + display: flex; + font-size: 30rpx; + align-items: center; + white-space: nowrap; +} +.videocell{ + position: absolute; + right:0rpx; +} +.price.qs{ + display: none; +} +.price.gy,.price.hasfree{ + display: none; +} +.nonekaitong{ + position: absolute; + top:0rpx; + font-size: 30rpx; + right:320rpx; +} +.nonekaitong text{ + font-size: 30rpx; +} \ No newline at end of file