From aa2231f2564ef151b461196e69e9fadb9a7f5812 Mon Sep 17 00:00:00 2001 From: zoujiandong <10130823232@qq.com> Date: Fri, 12 Apr 2024 09:01:31 +0800 Subject: [PATCH] =?UTF-8?q?4.12=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- api/health.js | 19 + app.json | 4 +- components/navbar/navbar.js | 2 +- filters/filter.wxs | 14 + .../pages/healthyDetail/healthyDetail.js | 270 +++++- .../pages/healthyDetail/healthyDetail.json | 4 +- .../pages/healthyDetail/healthyDetail.wxml | 92 +- .../pages/healthyDetail/healthyDetail.wxss | 273 +++++- .../pages/healthyIntro/healthyIntro.js | 115 ++- .../pages/healthyIntro/healthyIntro.json | 3 +- .../pages/healthyIntro/healthyIntro.wxml | 157 ++- .../pages/healthyIntro/healthyIntro.wxss | 358 ++++++- .../pages/visitDetail/visitDetail.js | 298 +++++- .../pages/visitDetail/visitDetail.json | 4 +- .../pages/visitDetail/visitDetail.wxml | 95 +- .../pages/visitDetail/visitDetail.wxss | 307 +++++- healthyService/pages/visitList/visitList.js | 159 ++++ healthyService/pages/visitList/visitList.json | 7 + healthyService/pages/visitList/visitList.wxml | 47 + healthyService/pages/visitList/visitList.wxss | 367 +++++++ healthyService/pages/writeSick/writeSick.js | 901 ++++++++++++++++++ healthyService/pages/writeSick/writeSick.json | 17 + healthyService/pages/writeSick/writeSick.wxml | 168 ++++ healthyService/pages/writeSick/writeSick.wxss | 356 +++++++ pages/index/index.js | 25 +- pages/index/index.wxml | 2 +- patient/pages/expertDetail/expertDetail.js | 2 +- 27 files changed, 4006 insertions(+), 60 deletions(-) create mode 100644 api/health.js create mode 100644 healthyService/pages/visitList/visitList.js create mode 100644 healthyService/pages/visitList/visitList.json create mode 100644 healthyService/pages/visitList/visitList.wxml create mode 100644 healthyService/pages/visitList/visitList.wxss create mode 100644 healthyService/pages/writeSick/writeSick.js create mode 100644 healthyService/pages/writeSick/writeSick.json create mode 100644 healthyService/pages/writeSick/writeSick.wxml create mode 100644 healthyService/pages/writeSick/writeSick.wxss diff --git a/api/health.js b/api/health.js new file mode 100644 index 0000000..4353ab4 --- /dev/null +++ b/api/health.js @@ -0,0 +1,19 @@ +import {request} from '../utils/request.js' +function getItems(id){ //获取地址 + return request('/doctor/inquiry/service/follow/item/'+id,'GET',{},true) +}; +function getServiceDetail(data){ + return request('/patient/service/detail','GET',data,true) +} +function createServiceOrder(data){ + return request('/patient/service','POST',data,true) +} + + + + +module.exports={ + getItems, + getServiceDetail, + createServiceOrder +} diff --git a/app.json b/app.json index a59b0a4..d57ae4a 100644 --- a/app.json +++ b/app.json @@ -95,7 +95,9 @@ "pages/healthyDetail/healthyDetail", "pages/visitDetail/visitDetail", "pages/healthyOrder/healthyOrder", - "pages/healthyOrderDetail/healthyOrderDetail" + "pages/healthyOrderDetail/healthyOrderDetail", + "pages/writeSick/writeSick", + "pages/visitList/visitList" ], "independent": true } diff --git a/components/navbar/navbar.js b/components/navbar/navbar.js index 6af007f..2e6f0bd 100644 --- a/components/navbar/navbar.js +++ b/components/navbar/navbar.js @@ -26,7 +26,7 @@ Component({ }, goInquirtForm(){ wx.navigateTo({ - url: '/healthyService/pages/healthyIntro/healthyIntro', + url: '/healthyService/pages/visitList/visitList', }) } }, diff --git a/filters/filter.wxs b/filters/filter.wxs index d584d52..d941699 100644 --- a/filters/filter.wxs +++ b/filters/filter.wxs @@ -202,7 +202,21 @@ function hasTuWen(arr){ } return false } + +function formatHealthPrcice(arr){ + var price=null; + if(arr){ + for (var i = 0; i < arr.length; i++) { + if(arr[i].inquiry_type==1 && arr[i].inquiry_mode==8){ + return arr[i].inquiry_price; + } + + } + } + return price +}; module.exports = { + formatHealthPrcice:formatHealthPrcice, formatwenzhenList:formatwenzhenList, formatChufang:formatChufang, formatPrice:formatPrice, diff --git a/healthyService/pages/healthyDetail/healthyDetail.js b/healthyService/pages/healthyDetail/healthyDetail.js index 287edb5..5ed7d42 100644 --- a/healthyService/pages/healthyDetail/healthyDetail.js +++ b/healthyService/pages/healthyDetail/healthyDetail.js @@ -1,4 +1,7 @@ // healthyService/pages/healthyDetail/healthyDetail.js +import {doctorDetail} from "../../../api/consultExpert" +import {family,addfamily} from "../../../api/familyDoc"; +import {getServiceDetail,getItems} from "../../../api/health" import {throttle} from "../../../utils/util" const app = getApp() Page({ @@ -7,14 +10,277 @@ Page({ * 页面的初始数据 */ data: { - img_host:app.hostConfig().imghost + active:0, + img_host:app.hostConfig().imghost, + doctor_id:'', + currentData:0, + inquiry_mode:8, + inquiry_type:1, + current_price:'', + avatar: '', + user_name: '', + doctor_title: '', + doctor_id: '', + doctor_title_name:'', + user_id:'', + is_online:'0', + hospital: null, + priceList:[], + show:false, + currentFamilyId:'', + realName:'', + idCard:'', + phoneNumber:'', + relationId:'', + sex:'', + service_type:1, + chat_id:'', + }, + + inputChange(e) { + this.setData({ + [e.target.dataset.id]: e.detail.value + }) + }, + goNext:throttle(function() { + this.handleGetServiceDetail(); + + }), + addFamily() { + let { + realName, + idCard, + phoneNumber, + relationId, + sex + } = this.data; + addfamily({ + card_name: realName, + type: 1, + id_number: idCard, + mobile: phoneNumber, + is_default: 0, + relation: relationId + }).then((data) => { + this.getFamily(); + this.setData({ + currentFamilyId:data.family_id, + realName:'', + idCard:'', + phoneNumber:'', + relationId:'', + relation:'', + showAdd:false + }) + + }) + }, + showPatient(){ + this.setData({ + show:true + }) + }, + addPatient() { + this.setData({ + showAdd: true, + currentFamilyId: '', + sex: '' + }) + }, + selectPatient(e) { + let currentFamilyId=e.currentTarget.dataset.familyid; + let sex=e.currentTarget.dataset.sex; + let name=e.currentTarget.dataset.name; + let age=e.currentTarget.dataset.age; + this.setData({ + currentFamilyId:currentFamilyId, + sex:sex + }) + }, + transforpage(arr) { + const pages = [] + let newArr = arr.concat([{ + type: "add" + }]) + newArr.forEach((item, index) => { + const page = Math.floor(index / 2) + if (!pages[page]) { + pages[page] = [] + } + pages[page].push(item) + }); + return pages + }, + confirmNext() { + if (!/^[\u4e00-\u9fa5]+(·[\u4e00-\u9fa5]+)*$/.test(this.data.realName)) { + wx.showToast({ + title: `姓名要求在2-10个字符`, + icon: 'none', + }); + return false; + }; + if (!/(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)/.test(this.data.idCard)) { + wx.showToast({ + title: `请输入有效的身份证号`, + icon: 'none', + }); + return false; + }; + + if (!/^1[3456789]\d{9}$/.test(this.data.phoneNumber)) { + wx.showToast({ + title: `请输入有效的手机号码!`, + icon: 'none', + }); + return false; + } + }, + getFamily() { + family().then((data) => { + this.setData({ + family: this.transforpage(data) + }) + }) + }, + goSick:throttle(function() { + if (!/^([\u4e00-\u9fa5\·]{2,10})$/.test(this.data.realName)) { + wx.showToast({ + title: `姓名要求在2-10个汉字`, + icon: 'none', + }); + return false; + }; + if (!/(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)/.test(this.data.idCard)) { + wx.showToast({ + title: `请输入有效的身份证号`, + icon: 'none', + }); + return false; + }; + if (this.data.phoneNumber) { + if (!/^1[3456789]\d{9}$/.test(this.data.phoneNumber)) { + wx.showToast({ + title: `请输入有效的手机号码!`, + icon: 'none', + }); + return false; + } + }; + + let idInfo = this.getIdInfo(this.data.idCard); + if (idInfo.age < 6) { + wx.showToast({ + title: `六岁以下儿童不支持线上问诊`, + icon: 'none', + }); + return false; + } + this.setData({ + sex:idInfo.sex + }) + this.addFamily() + + }), + //获取身份证号信息 + getIdInfo(IdCard) { + var reg = /(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)/; + if (reg.test(IdCard)) { + let sex + if (parseInt(IdCard.substr(16, 1)) % 2 === 1) { + sex = '1' + } else { + sex = '2' + } + var ageDate = new Date() + var month = ageDate.getMonth() + 1 + var day = ageDate.getDate() + var age = ageDate.getFullYear() - IdCard.substring(6, 10) - 1 + if (IdCard.substring(10, 12) < month || (IdCard.substring(10, 12) === month && IdCard.substring(12, 14) <= day)) { + age++ + } + if (age <= 0) { + age = 1 + } + return { + sex, + age + } + } else { + return false; + } + }, + onClose() { + this.setData({ + show: false + }); + }, + onCloseAdd() { + this.setData({ + showAdd: false + }); + }, + + getDeatil(id) { + doctorDetail(id).then((res) => { + for (const key in this.data) { + if (res[key]) { + this.setData({ + [key]: res[key] + }) + } + }; + this.setData({ + chat_id:res.user_id + }) + }) + }, + handleGetServiceDetail(){ + let {doctor_id,currentFamilyId,service_type,follow_package_item_id,chat_id,sex,inquiry_mode,inquiry_type}=this.data; + getServiceDetail({ + doctor_id, + family_id:currentFamilyId, + service_type, + follow_package_item_id + + }).then((res)=>{ + if(res.status==1){ + app.method.navigateTo({ + url:'/healthyService/pages/writeSick/writeSick?doctor_id='+doctor_id+"&family_id="+currentFamilyId+"&chat_id="+chat_id+"&inquiry_type="+inquiry_type+"&sex="+sex+"&inquiry_mode="+inquiry_mode+"&package_id="+follow_package_item_id + }) + }else if(res.status==2){ + + }else if(res.status==3){ + app.method.navigateTo({ + url:'/patient/pages/expertDetail/expertDetail?doctor_id='+doctor_id + }) + + }else if(res.status==4){ + + }else if(res.status==5){ + + } + + }) + }, + showPatient(){ + this.setData({ + show:true + }) }, /** * 生命周期函数--监听页面加载 */ onLoad(options) { - + this.setData({ + doctor_id:options.doctor_id, + current_price:options.price + }) + + this.getDeatil(options.doctor_id); + + this.getFamily(); + }, /** diff --git a/healthyService/pages/healthyDetail/healthyDetail.json b/healthyService/pages/healthyDetail/healthyDetail.json index 9ce900b..c931201 100644 --- a/healthyService/pages/healthyDetail/healthyDetail.json +++ b/healthyService/pages/healthyDetail/healthyDetail.json @@ -1,6 +1,8 @@ { "usingComponents": { - "nav":"../../../components/nav/nav" + "nav":"../../../components/nav/nav", + "van-popup": "@vant/weapp/popup/index", + "van-picker": "@vant/weapp/picker/index" }, "navigationStyle":"custom" } \ No newline at end of file diff --git a/healthyService/pages/healthyDetail/healthyDetail.wxml b/healthyService/pages/healthyDetail/healthyDetail.wxml index f39109a..6152947 100644 --- a/healthyService/pages/healthyDetail/healthyDetail.wxml +++ b/healthyService/pages/healthyDetail/healthyDetail.wxml @@ -2,6 +2,24 @@ + + + + + + + + + + + {{user_name}} + {{hospital.hospital_level_name}} + 可处方 + + {{doctor_title_name}} {{item.department_custom_name}} + {{hospital.hospital_name}} + + @@ -62,6 +80,76 @@ - 立即购买:¥XX.XX + 立即购买:¥{{current_price}} - \ No newline at end of file + + + 选择患者 + + + + + + {{item.card_name}} + 本人 + 父母 + 爱人 + 子女 + 亲戚 + 其他 + + + 性别未知 + + + {{item.age}}岁 + + + + + +新建患者 + + + + + + + + + + + + 新建患者 + + 真实姓名* + + + + 身份证号* + + + + 联系电话 + + + + 患者关系 + + + + 温馨提示: + + 1、根据国家卫健委要求,就医实行实名制,请如实填写患者信息。 + 2、信息受隐私保护,仅接诊医生可见。 + + 3、6岁以下儿童不支持线上问诊,请到线下就诊。 + + + + + 确定 + + + \ No newline at end of file diff --git a/healthyService/pages/healthyDetail/healthyDetail.wxss b/healthyService/pages/healthyDetail/healthyDetail.wxss index 584cea8..631c050 100644 --- a/healthyService/pages/healthyDetail/healthyDetail.wxss +++ b/healthyService/pages/healthyDetail/healthyDetail.wxss @@ -23,7 +23,7 @@ page{ flex:1; display: flex; flex-direction: column; -margin-top: 200rpx; +margin:0rpx; background: #FFFFFF; border-radius: 32rpx 32rpx 0rpx 0rpx; } @@ -85,4 +85,273 @@ align-items: center; justify-content: center; line-height: 50rpx; text-align: center; -} \ No newline at end of file +} +.viewcell{ + display: flex; + background-color: #fff; + margin:30rpx; + padding:20rpx; + box-shadow: 0rpx 8rpx 20rpx 2rpx rgba(0,0,0,0.04); +border-radius: 10rpx; + +} +.headimg{ + width:120rpx; + height:120rpx; + border-radius: 50%; +} +.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; + } + .viewcellbox .hospital{ + margin-top: 12rpx; + color: #333333; + display: flex; + font-size: 30rpx; + word-wrap: break-word; + } + .hospital_name{ + font-size: 28rpx; + word-wrap: break-word; + margin-right: 10rpx; + overflow: hidden; + white-space: nowrap; + color:#333; + text-overflow: ellipsis; + } + .viewcell .right{ + flex:1; + margin-left: 20rpx; + } + .namebox{ + display: flex; + font-size: 34rpx; + font-weight: 600; + color:#333; + align-items: flex-end; + } + .personbox { + border-radius: 10rpx; + background-color: #fff; + padding: 40rpx 20rpx 144rpx; + overflow-y: scroll; + } + + .personbox .row { + margin-top: 30rpx; + display: flex; + justify-content: space-between; + + } + + .personbox .row:first-child { + margin-top: 0; + } + + .personbox .row .cell { + position: relative; + width: 47%; + height: 120rpx; + display: flex; + flex-direction: column; + justify-content: center; + margin-left: 30rpx; + border-radius: 10rpx; + border: 1px solid #CCCCCC; + } + + .personbox .row .cell:first-child { + margin-left: 0rpx; + } + + .personbox .person { + display: flex; + margin: 0 25rpx; + align-items: center; + } + + .personbox .tag { + margin-left: 32rpx; + font-size: 24rpx; + display: flex; + align-items: center; + line-height: 24rpx; + justify-content: center; + color: #666666; + width: 80rpx; + height: 32rpx; + border-radius: 4rpx; + transform: rotateZ(360deg); + border: 1rpx solid #979797; + } + + .personbox .desc { + display: flex; + margin: 0 25rpx; + font-size: 28rpx; + color: #666; + margin-top: 3px; + } + + .personbox .name { + white-space: nowrap; + overflow: hidden; + max-width: 200rpx; + text-overflow: ellipsis; + font-size: 34rpx; + color: #333; + } + + .personbox .age { + + margin-left: 12rpx; + } + + .personbox .cell .gou { + position: absolute; + bottom: -1rpx; + right: 0rpx; + width: 66rpx; + height: 53.7rpx; + } + + .personbox .add { + justify-content: center; + align-items: center; + font-size: 34rpx; + color: #333; + } + .own .add.disabled{ + color: #999; + } + .titlepop{ + font-size: 34rpx; + font-weight: 400; + color: #333333; + padding:40rpx 0; + text-align: center; + width:100%; + border-bottom:1rpx solid #E7E7E7; + } + + .van-icon-cross { + color: #333; + font-size: 40rpx !important; + } + + .infobox { + margin-top: 40rpx; + } + + .info { + border-bottom: 1rpx solid #E7E7E7; + display: flex; + align-items: center; + height: 112rpx; + color: #333333; + } + + .infobox .title { + border-bottom: 1rpx solid #E7E7E7; + text-align: center; + font-size: 34rpx; + padding-bottom: 35rpx; + } + + .info .name { + white-space: nowrap; + width: 180rpx; + display: flex; + align-items: center; + margin-left: 52rpx; + color: #333333; + font-size: 34rpx; + } + + .info text { + margin-top: 20rpx; + color:#E34D59; + + display: flex; + align-items: center; + } + .info input { + margin-left: 15rpx; + margin-right: 52rpx; + flex: 1; + } + .input-placeholder { + color: #999999; + font-size: 28rpx; + } + .tip{ + padding:30rpx 52rpx 20rpx; + } + .warntitle{ + color: #E34D59; + font-size: 28rpx; + } + .warn{ + margin-top: 20rpx; + font-size: 24rpx; + line-height: 36rpx; + color: #666666; + } + .next{ + display: flex; + align-items: center; + justify-content: center; + height: 94rpx; + font-size: 36rpx; + left: 30rpx; + right: 30rpx; + margin:0 52rpx; + border-radius: 47rpx; + color: #fff; + margin-bottom: 40rpx; + background: #3CC7C0; + } + .celladd{ + display: flex; + flex-direction: column; + justify-content: center; + align-items: center; + height: 120rpx; + } + .btnbox{ + position: fixed; + width:100%; + bottom:0rpx; + height: 134rpx; + background:#fff; + + + } + .btnbox .btn{ + border-radius: 47rpx; + border:none; + background: #3CC7C0!important; + margin:0 32rpx; + height: 94rpx; + display: flex; + justify-content: center; + align-items: center; + font-size: 36rpx; + color: #FFFFFF!important; + } + .btnbox .btn[disabled]{ + color: #000000!important; + background:rgba(0,0,0,0.1)!important; + } + \ No newline at end of file diff --git a/healthyService/pages/healthyIntro/healthyIntro.js b/healthyService/pages/healthyIntro/healthyIntro.js index 40e47a7..0bd9f05 100644 --- a/healthyService/pages/healthyIntro/healthyIntro.js +++ b/healthyService/pages/healthyIntro/healthyIntro.js @@ -1,5 +1,6 @@ // healthyService/pages/healthyIntro/healthyIntro.js import {throttle} from "../../../utils/util" +import {doctorList} from "../../../api/consultExpert" const app = getApp() Page({ @@ -7,12 +8,107 @@ Page({ * 页面的初始数据 */ data: { - blockHeight:"150rpx" + blockHeight:"150rpx", + type:'', + doctorList:[], + page:1, + pageNumber:10, + isTriggered:false, + show:false, + expertise_id:'', + province_id:'', + city_id:'', + keyword:'', + lock:false, + is_online:0, + sort_order:1, + inquiry_type:'1', + inquiry_mode:'8', }, - goDetail:throttle(function(){ - app.method.navigateTo({ - url: '/healthyService/pages/visitDetail/visitDetail', - //url: '/healthyService/pages/healthyDetail/healthyDetail', + handleRefresher(){ + + this.setData({ + lock:false, + page:1, + doctorList:[] + }); + this.getDoctorList() + }, + goExpertDetail:throttle(function(e){ + let {doctorid,price}=e.currentTarget.dataset; + if(price){ + app.method.navigateTo({ + url:'/healthyService/pages/healthyDetail/healthyDetail?doctor_id='+doctorid+"&price="+price + }) + } + else{ + app.method.navigateTo({ + url:'/healthyService/pages/healthyDetail/healthyDetail?doctor_id='+doctorid+"&price="+price + }) + wx.showToast({ + title: '未设置健康包价格', + icon:'none' + }) + } + + }), + 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) + }) + } + + + }) + }, + 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(); + } + }, + goAgree(){ + this.setData({ + showRight:flase + }) + }, + lookGood:throttle(function(){ + this.setData({ + showRight:true }) }), // 显示遮罩层 @@ -27,7 +123,7 @@ showModal() { this.setData({ hideModal: false, - blockHeight:"300rpx" + blockHeight:"150rpx" }) }, touchstart(e) { @@ -69,7 +165,12 @@ showModal() { * 生命周期函数--监听页面加载 */ onLoad(options) { - + if(options.type){ + this.setData({ + type:'visit' + }) + } + this.getDoctorList(); }, /** diff --git a/healthyService/pages/healthyIntro/healthyIntro.json b/healthyService/pages/healthyIntro/healthyIntro.json index 39c3ea8..195d1fd 100644 --- a/healthyService/pages/healthyIntro/healthyIntro.json +++ b/healthyService/pages/healthyIntro/healthyIntro.json @@ -1,7 +1,8 @@ { "usingComponents": { "nav":"../../../components/nav/nav", - "van-popup": "@vant/weapp/popup/index" + "van-popup": "@vant/weapp/popup/index", + "van-dialog": "@vant/weapp/dialog/index" }, "navigationStyle":"custom" } \ No newline at end of file diff --git a/healthyService/pages/healthyIntro/healthyIntro.wxml b/healthyService/pages/healthyIntro/healthyIntro.wxml index 290d93f..1146c08 100644 --- a/healthyService/pages/healthyIntro/healthyIntro.wxml +++ b/healthyService/pages/healthyIntro/healthyIntro.wxml @@ -1,9 +1,14 @@ - + + + - - + + + + + - + @@ -11,6 +16,73 @@ 健康包服务医生 + + + + + + + + + + + + + + + {{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}} + + + + + + + + + 暂无数据! + + + - \ No newline at end of file + + + + + 服务内容: + + 1、 + 每个月2次问诊 + + + 2、 + 30盒肝爽颗粒(3g*9袋) (每次最多开具10盒) + + + + + 服务价格: + + 1、 + 健康包价格低至1080元起,内所含每月两次问诊,费用低至5折;超出次数需按照原价支付问诊费; + + + 2、 + 健康包内包含30盒肝爽颗粒(3g*9袋),原价42.8元/盒,健康包内售价为35元/盒,超出30盒的可按38.5元/盒优惠价购买; + + + + 3、 + 赠送全品类药品劵10元 + + + + 4、 + + 赠送肝胆相照商城优惠劵100元 + (药品总价满100元方可使用,不可与其他优惠劵叠加使用); + + + + + 退款说明: + + 1、 + 未使用随时退; + + + 2、 + +健康包开始使用后如需退款请联系客服,退款不收取任何服务费等额外费用,但不支持部分退款: + + + + + 3、 + 药品一经发出,问诊一经接诊,均概不退换; + + + + + 4、 + 未消费健康包内容可退款,已消费服务的部分按原价计费,即:已发生的问诊按照问诊时互联网医院显示的价格结算,肝爽颗粒按照原价每盒42.8元结算。 + + + + + diff --git a/healthyService/pages/healthyIntro/healthyIntro.wxss b/healthyService/pages/healthyIntro/healthyIntro.wxss index c7c5968..be7e994 100644 --- a/healthyService/pages/healthyIntro/healthyIntro.wxss +++ b/healthyService/pages/healthyIntro/healthyIntro.wxss @@ -1,23 +1,33 @@ /* healthyService/pages/healthyIntro/healthyIntro.wxss */ .page{ + margin-top: 172rpx; - padding-bottom:100rpx; + overflow-y: scroll; + height: calc(100vh - 172rpx - 60rpx); position: relative; } +.imgbox{ + position: relative; +} +page{ + height: 100vh; + overflow: hidden; +} .btn{ position: absolute; + left: 50%; margin-left: -232rpx; width:464rpx; height: 86rpx; - bottom:200rpx; + bottom:130rpx; } .bg{ width:100%; } .top{ position: absolute; - top:20rpx; + top:10rpx; width:100%; display: flex; justify-content: center; @@ -41,11 +51,349 @@ .popwrper{ top:0rpx; background-color: #fff; - position: absolute; + position: relative; transition: height 0.5s; width:100%; border-radius: 20rpx; overflow: hidden; height:100%; bottom:0px; - } \ No newline at end of file + } + .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: 40rpx; + 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; + + 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; + 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%; + } + .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; + } + .popwrper{ + display: flex; + flex-direction: column; + } + .slotmsg{ + height:400rpx; + overflow-y: scroll; + padding:30rpx; + } + .row{ + display: flex; + margin-bottom: 6rpx; + line-height: 45rpx; + font-weight: 400; +font-size: 28rpx; +color: #333333; + } + .rowtitle{ + margin-bottom:15rpx; + font-weight: 500; + font-size: 32rpx; + color: #000000; + + } + .rowbox{ + margin-bottom: 20rpx; + } + .row .tips{ + margin-top: 10rpx; + display: flex; + height: 113rpx; + padding:0 18rpx; + align-items: center; +background: #F1F1F1; +border-radius: 10rpx; + } diff --git a/healthyService/pages/visitDetail/visitDetail.js b/healthyService/pages/visitDetail/visitDetail.js index 248b2d4..b86ec01 100644 --- a/healthyService/pages/visitDetail/visitDetail.js +++ b/healthyService/pages/visitDetail/visitDetail.js @@ -1,4 +1,8 @@ // healthyService/pages/healthyDetail/healthyDetail.js +import {doctorDetail} from "../../../api/consultExpert" +import {getItems} from "../../../api/health" +import {family,addfamily} from "../../../api/familyDoc"; +import {getServiceDetail} from "../../../api/health" import {throttle} from "../../../utils/util" const app = getApp() Page({ @@ -7,34 +11,294 @@ Page({ * 页面的初始数据 */ data: { - active:0, - priceList:[{ - price:'180元/1月', - id:1 - },{ - price:'500元/3月', - id:2 - },{ - price:'1000元/6月', - id:3 - },{ - price:'2000元/12月', - id:4 - }], + follow_package_item_id:'', + img_host:app.hostConfig().imghost, + doctor_id:'', + currentData:0, + inquiry_mode:9, + inquiry_type:1, + current_price:'', + avatar: '', + user_name: '', + doctor_title: '', + doctor_id: '', + doctor_title_name:'', + user_id:'', + is_online:'0', + hospital: null, + priceList:[], + show:false, + currentFamilyId:'', + realName:'', + idCard:'', + phoneNumber:'', + relationId:'', + sex:'', + service_type:2, + chat_id:'', img_host:app.hostConfig().imghost }, + inputChange(e) { + this.setData({ + [e.target.dataset.id]: e.detail.value + }) + }, + goNext:throttle(function() { + this.handleGetServiceDetail(); + + }), + addFamily() { + let { + realName, + idCard, + phoneNumber, + relationId, + sex + } = this.data; + addfamily({ + card_name: realName, + type: 1, + id_number: idCard, + mobile: phoneNumber, + is_default: 0, + relation: relationId + }).then((data) => { + this.getFamily(); + this.setData({ + currentFamilyId:data.family_id, + realName:'', + idCard:'', + phoneNumber:'', + relationId:'', + relation:'', + showAdd:false + }) + + }) + }, + + addPatient() { + this.setData({ + showAdd: true, + currentFamilyId: '', + sex: '' + }) + }, + selectPatient(e) { + let currentFamilyId=e.currentTarget.dataset.familyid; + let sex=e.currentTarget.dataset.sex; + let name=e.currentTarget.dataset.name; + let age=e.currentTarget.dataset.age; + this.setData({ + currentFamilyId:currentFamilyId, + sex:sex + }) + }, + transforpage(arr) { + const pages = [] + let newArr = arr.concat([{ + type: "add" + }]) + newArr.forEach((item, index) => { + const page = Math.floor(index / 2) + if (!pages[page]) { + pages[page] = [] + } + pages[page].push(item) + }); + return pages + }, + confirmNext() { + if (!/^[\u4e00-\u9fa5]+(·[\u4e00-\u9fa5]+)*$/.test(this.data.realName)) { + wx.showToast({ + title: `姓名要求在2-10个字符`, + icon: 'none', + }); + return false; + }; + if (!/(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)/.test(this.data.idCard)) { + wx.showToast({ + title: `请输入有效的身份证号`, + icon: 'none', + }); + return false; + }; + + if (!/^1[3456789]\d{9}$/.test(this.data.phoneNumber)) { + wx.showToast({ + title: `请输入有效的手机号码!`, + icon: 'none', + }); + return false; + } + }, + getFamily() { + family().then((data) => { + this.setData({ + family: this.transforpage(data) + }) + }) + }, + goSick:throttle(function() { + if (!/^([\u4e00-\u9fa5\·]{2,10})$/.test(this.data.realName)) { + wx.showToast({ + title: `姓名要求在2-10个汉字`, + icon: 'none', + }); + return false; + }; + if (!/(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)/.test(this.data.idCard)) { + wx.showToast({ + title: `请输入有效的身份证号`, + icon: 'none', + }); + return false; + }; + if (this.data.phoneNumber) { + if (!/^1[3456789]\d{9}$/.test(this.data.phoneNumber)) { + wx.showToast({ + title: `请输入有效的手机号码!`, + icon: 'none', + }); + return false; + } + }; + + let idInfo = this.getIdInfo(this.data.idCard); + if (idInfo.age < 6) { + wx.showToast({ + title: `六岁以下儿童不支持线上问诊`, + icon: 'none', + }); + return false; + } + this.setData({ + sex:idInfo.sex + }) + this.addFamily() + + }), + //获取身份证号信息 + getIdInfo(IdCard) { + var reg = /(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)/; + if (reg.test(IdCard)) { + let sex + if (parseInt(IdCard.substr(16, 1)) % 2 === 1) { + sex = '1' + } else { + sex = '2' + } + var ageDate = new Date() + var month = ageDate.getMonth() + 1 + var day = ageDate.getDate() + var age = ageDate.getFullYear() - IdCard.substring(6, 10) - 1 + if (IdCard.substring(10, 12) < month || (IdCard.substring(10, 12) === month && IdCard.substring(12, 14) <= day)) { + age++ + } + if (age <= 0) { + age = 1 + } + return { + sex, + age + } + } else { + return false; + } + }, + onClose() { + this.setData({ + show: false + }); + }, + onCloseAdd() { + this.setData({ + showAdd: false + }); + }, + hanldeGetItems(id){ + getItems(id).then(res=>{ + + let arr=res.map((item,index)=>{ + return { + price:item.service_price+'元/'+ Number(item.service_period)/30+'月', + follow_package_item_id:item.follow_package_item_id, + service_price:item.service_price + } + }); + this.setData({ + priceList:arr, + current_price:res[0].service_price, + follow_package_item_id:res[0].follow_package_item_id + }) + }) + }, + getDeatil(id) { + doctorDetail(id).then((res) => { + for (const key in this.data) { + if (res[key]) { + this.setData({ + [key]: res[key] + }) + } + }; + this.setData({ + chat_id:res.user_id + }) + }) + }, + handleGetServiceDetail(){ + let {doctor_id,currentFamilyId,service_type,follow_package_item_id,chat_id,sex,inquiry_mode,inquiry_type}=this.data; + getServiceDetail({ + doctor_id, + family_id:currentFamilyId, + service_type, + follow_package_item_id + + }).then((res)=>{ + if(res.status==1){ + app.method.navigateTo({ + url:'/healthyService/pages/writeSick/writeSick?doctor_id='+doctor_id+"&family_id="+currentFamilyId+"&chat_id="+chat_id+"&inquiry_type="+inquiry_type+"&sex="+sex+"&inquiry_mode="+inquiry_mode+"&package_id="+follow_package_item_id + }) + }else if(res.status==2){ + + }else if(res.status==3){ + app.method.navigateTo({ + url:'/patient/pages/expertDetail/expertDetail?doctor_id='+doctor_id + }) + + }else if(res.status==4){ + + }else if(res.status==5){ + + } + + }) + }, + showPatient(){ + this.setData({ + show:true + }) + }, choosePrice(e){ - let {id}=e.currentTarget.dataset; + let {id,price}=e.currentTarget.dataset; + console.log(price); this.setData({ - active:id + follow_package_item_id:id, + current_price:price }) }, /** * 生命周期函数--监听页面加载 */ onLoad(options) { - + this.setData({ + doctor_id:options.doctor_id + }) + this.getDeatil(options.doctor_id); + this.hanldeGetItems(options.doctor_id); + this.getFamily(); }, /** diff --git a/healthyService/pages/visitDetail/visitDetail.json b/healthyService/pages/visitDetail/visitDetail.json index 9ce900b..c931201 100644 --- a/healthyService/pages/visitDetail/visitDetail.json +++ b/healthyService/pages/visitDetail/visitDetail.json @@ -1,6 +1,8 @@ { "usingComponents": { - "nav":"../../../components/nav/nav" + "nav":"../../../components/nav/nav", + "van-popup": "@vant/weapp/popup/index", + "van-picker": "@vant/weapp/picker/index" }, "navigationStyle":"custom" } \ No newline at end of file diff --git a/healthyService/pages/visitDetail/visitDetail.wxml b/healthyService/pages/visitDetail/visitDetail.wxml index 9e5cc77..af0aa46 100644 --- a/healthyService/pages/visitDetail/visitDetail.wxml +++ b/healthyService/pages/visitDetail/visitDetail.wxml @@ -1,11 +1,30 @@ + + + + + + + + + + + + {{user_name}} + {{hospital.hospital_level_name}} + 可处方 + + {{doctor_title_name}} {{item.department_custom_name}} + {{hospital.hospital_name}} + + 请选择服务 - {{item.price}} + {{item.price}} @@ -65,6 +84,76 @@ - 立即购买:¥XX.XX + 立即购买:¥{{current_price}} - \ No newline at end of file + + + 选择患者 + + + + + + {{item.card_name}} + 本人 + 父母 + 爱人 + 子女 + 亲戚 + 其他 + + + 性别未知 + + + {{item.age}}岁 + + + + + +新建患者 + + + + + + + + + + + + 新建患者 + + 真实姓名* + + + + 身份证号* + + + + 联系电话 + + + + 患者关系 + + + + 温馨提示: + + 1、根据国家卫健委要求,就医实行实名制,请如实填写患者信息。 + 2、信息受隐私保护,仅接诊医生可见。 + + 3、6岁以下儿童不支持线上问诊,请到线下就诊。 + + + + + 确定 + + + \ No newline at end of file diff --git a/healthyService/pages/visitDetail/visitDetail.wxss b/healthyService/pages/visitDetail/visitDetail.wxss index 06e0568..0c0aade 100644 --- a/healthyService/pages/visitDetail/visitDetail.wxss +++ b/healthyService/pages/visitDetail/visitDetail.wxss @@ -2,14 +2,25 @@ page{ height:100vh; overflow: hidden; } + /* healthyService/pages/healthyDetail/healthyDetail.wxss */ .page{ width:100%; + background: #F2F2F2; height:calc(100% - 172rpx); margin-top: 172rpx; display: flex; overflow: hidden; flex-direction: column; +} +.viewcell{ + display: flex; + background-color: #fff; + margin:30rpx; + padding:20rpx; + box-shadow: 0rpx 8rpx 20rpx 2rpx rgba(0,0,0,0.04); +border-radius: 10rpx; + } .dcimg{ width:100%; @@ -122,4 +133,298 @@ border-radius: 10rpx; background: #3CC7C0; color:#fff; border: 1rpx solid #3CC7C0; -} \ No newline at end of file +} + + + .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; + } + .viewcellbox .hospital{ + margin-top: 12rpx; + color: #333333; + display: flex; + font-size: 30rpx; + word-wrap: break-word; + } + .hospital_name{ + font-size: 28rpx; + word-wrap: break-word; + margin-right: 10rpx; + overflow: hidden; + white-space: nowrap; + color:#333; + 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:120rpx; + height:120rpx; + 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; + } + .headimg{ + width:120rpx; + height:120rpx; + border-radius: 50%; + } + .personbox { + border-radius: 10rpx; + background-color: #fff; + padding: 40rpx 20rpx 144rpx; + overflow-y: scroll; + } + + .personbox .row { + margin-top: 30rpx; + display: flex; + justify-content: space-between; + + } + + .personbox .row:first-child { + margin-top: 0; + } + + .personbox .row .cell { + position: relative; + width: 47%; + height: 120rpx; + display: flex; + flex-direction: column; + justify-content: center; + margin-left: 30rpx; + border-radius: 10rpx; + border: 1px solid #CCCCCC; + } + + .personbox .row .cell:first-child { + margin-left: 0rpx; + } + + .personbox .person { + display: flex; + margin: 0 25rpx; + align-items: center; + } + + .personbox .tag { + margin-left: 32rpx; + font-size: 24rpx; + display: flex; + align-items: center; + line-height: 24rpx; + justify-content: center; + color: #666666; + width: 80rpx; + height: 32rpx; + border-radius: 4rpx; + transform: rotateZ(360deg); + border: 1rpx solid #979797; + } + + .personbox .desc { + display: flex; + margin: 0 25rpx; + font-size: 28rpx; + color: #666; + margin-top: 3px; + } + + .personbox .name { + white-space: nowrap; + overflow: hidden; + max-width: 200rpx; + text-overflow: ellipsis; + font-size: 34rpx; + color: #333; + } + + .personbox .age { + + margin-left: 12rpx; + } + + .personbox .cell .gou { + position: absolute; + bottom: -1rpx; + right: 0rpx; + width: 66rpx; + height: 53.7rpx; + } + + .personbox .add { + justify-content: center; + align-items: center; + font-size: 34rpx; + color: #333; + } + .own .add.disabled{ + color: #999; + } + .titlepop{ + font-size: 34rpx; + font-weight: 400; + color: #333333; + padding:40rpx 0; + text-align: center; + width:100%; + border-bottom:1rpx solid #E7E7E7; + } + + .van-icon-cross { + color: #333; + font-size: 40rpx !important; + } + + .infobox { + margin-top: 40rpx; + } + + .info { + border-bottom: 1rpx solid #E7E7E7; + display: flex; + align-items: center; + height: 112rpx; + color: #333333; + } + + .infobox .title { + border-bottom: 1rpx solid #E7E7E7; + text-align: center; + font-size: 34rpx; + padding-bottom: 35rpx; + } + + .info .name { + white-space: nowrap; + width: 180rpx; + display: flex; + align-items: center; + margin-left: 52rpx; + color: #333333; + font-size: 34rpx; + } + + .info text { + margin-top: 20rpx; + color:#E34D59; + + display: flex; + align-items: center; + } + .info input { + margin-left: 15rpx; + margin-right: 52rpx; + flex: 1; + } + .input-placeholder { + color: #999999; + font-size: 28rpx; + } + .tip{ + padding:30rpx 52rpx 20rpx; + } + .warntitle{ + color: #E34D59; + font-size: 28rpx; + } + .warn{ + margin-top: 20rpx; + font-size: 24rpx; + line-height: 36rpx; + color: #666666; + } + .next{ + display: flex; + align-items: center; + justify-content: center; + height: 94rpx; + font-size: 36rpx; + left: 30rpx; + right: 30rpx; + margin:0 52rpx; + border-radius: 47rpx; + color: #fff; + margin-bottom: 40rpx; + background: #3CC7C0; + } + .celladd{ + display: flex; + flex-direction: column; + justify-content: center; + align-items: center; + height: 120rpx; + } + .btnbox{ + position: fixed; + width:100%; + bottom:0rpx; + height: 134rpx; + background:#fff; + + + } + .btnbox .btn{ + border-radius: 47rpx; + border:none; + background: #3CC7C0!important; + margin:0 32rpx; + height: 94rpx; + display: flex; + justify-content: center; + align-items: center; + font-size: 36rpx; + color: #FFFFFF!important; + } + .btnbox .btn[disabled]{ + color: #000000!important; + background:rgba(0,0,0,0.1)!important; + } + \ No newline at end of file diff --git a/healthyService/pages/visitList/visitList.js b/healthyService/pages/visitList/visitList.js new file mode 100644 index 0000000..9f65dd9 --- /dev/null +++ b/healthyService/pages/visitList/visitList.js @@ -0,0 +1,159 @@ +// healthyService/pages/healthyIntro/healthyIntro.js +import {throttle} from "../../../utils/util" +import {doctorList} from "../../../api/consultExpert" +const app = getApp() +Page({ + + /** + * 页面的初始数据 + */ + data: { + blockHeight:"150rpx", + type:'', + doctorList:[], + page:1, + pageNumber:10, + isTriggered:false, + show:false, + expertise_id:'', + province_id:'', + city_id:'', + keyword:'', + lock:false, + is_online:0, + sort_order:1, + inquiry_type:'1', + inquiry_mode:'9', + }, + handleRefresher(){ + + this.setData({ + lock:false, + page:1, + doctorList:[] + }); + this.getDoctorList() + }, + goExpertDetail:throttle(function(e){ + let {doctorid}=e.currentTarget.dataset; + app.method.navigateTo({ + url:'/healthyService/pages/visitDetail/visitDetail?doctor_id='+doctorid + }) + }), + 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) + }) + } + + + }) + }, + 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(); + } + }, + goDetail:throttle(function(){ + let url=this.data.type?'/healthyService/pages/visitDetail/visitDetail':'/healthyService/pages/healthyDetail/healthyDetail' + app.method.navigateTo({ + url: url + }) + }), + + /** + * 生命周期函数--监听页面加载 + */ + onLoad(options) { + if(options.type){ + this.setData({ + type:'visit' + }) + } + this.getDoctorList(); + }, + + /** + * 生命周期函数--监听页面初次渲染完成 + */ + onReady() { + + }, + + /** + * 生命周期函数--监听页面显示 + */ + onShow() { + + }, + + /** + * 生命周期函数--监听页面隐藏 + */ + onHide() { + + }, + + /** + * 生命周期函数--监听页面卸载 + */ + onUnload() { + + }, + + /** + * 页面相关事件处理函数--监听用户下拉动作 + */ + onPullDownRefresh() { + + }, + + /** + * 页面上拉触底事件的处理函数 + */ + onReachBottom() { + + }, + + /** + * 用户点击右上角分享 + */ + onShareAppMessage() { + + } +}) \ No newline at end of file diff --git a/healthyService/pages/visitList/visitList.json b/healthyService/pages/visitList/visitList.json new file mode 100644 index 0000000..39c3ea8 --- /dev/null +++ b/healthyService/pages/visitList/visitList.json @@ -0,0 +1,7 @@ +{ + "usingComponents": { + "nav":"../../../components/nav/nav", + "van-popup": "@vant/weapp/popup/index" + }, + "navigationStyle":"custom" +} \ No newline at end of file diff --git a/healthyService/pages/visitList/visitList.wxml b/healthyService/pages/visitList/visitList.wxml new file mode 100644 index 0000000..0c8a3e9 --- /dev/null +++ b/healthyService/pages/visitList/visitList.wxml @@ -0,0 +1,47 @@ + + + + + + + + + + + + + + + + + + + {{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}}/月起 + + + + + + + + 暂无数据! + + + + diff --git a/healthyService/pages/visitList/visitList.wxss b/healthyService/pages/visitList/visitList.wxss new file mode 100644 index 0000000..22c20fb --- /dev/null +++ b/healthyService/pages/visitList/visitList.wxss @@ -0,0 +1,367 @@ +/* healthyService/pages/healthyIntro/healthyIntro.wxss */ +.page{ + + margin-top: 172rpx; + + height: calc(100vh - 172rpx); + position: relative; +} +.imgbox{ + position: relative; +} +page{ + height: 100vh; + overflow: hidden; +} +.btn{ + position: absolute; + + left: 50%; + margin-left: -232rpx; + width:464rpx; + height: 86rpx; + bottom:130rpx; +} +.bg{ + width:100%; +} +.top{ + position: absolute; + top:10rpx; + width:100%; + display: flex; + justify-content: center; + padding:20rpx 0; + } + .top .up{ + width:40rpx; + height:22rpx; + transition: all 0.5s; + } + .top .up.active{ + transform: rotate(180deg); + } + .popname{ + margin-top: 60rpx; + padding:20rpx 52rpx 30rpx; + font-size: 34rpx; + color:#333; + border-bottom: 1px solid #E7E7E7; + } +.popwrper{ + top:0rpx; + background-color: #fff; + position: relative; + transition: height 0.5s; + width:100%; + border-radius: 20rpx; + overflow: hidden; + height:100%; + bottom:0px; + } + .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: 40rpx; + 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; + + 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; + 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%; + } + .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; + } + .popwrper{ + display: flex; + flex-direction: column; + } \ No newline at end of file diff --git a/healthyService/pages/writeSick/writeSick.js b/healthyService/pages/writeSick/writeSick.js new file mode 100644 index 0000000..ed2e103 --- /dev/null +++ b/healthyService/pages/writeSick/writeSick.js @@ -0,0 +1,901 @@ +// pages/writeSick/writeSick.js +const app = getApp() +import Dialog from '@vant/weapp/dialog/dialog'; +import dayjs from '../../../utils/dayjs.min.js' +import { + createServiceOrder +} from "../../../api/health" +import { + getSign +} from "../../../api/common" +import { + lastSick +} from "../../../api/consultExpert" +import { + throttle +} from "../../../utils/util" +import {client_type} from "../../../utils/isPc" +import {isExist,pathographyDetail} from "../../../api/sickRecord" +let urlHost=app.hostConfig().agreehost; +console.log(client_type); +Page({ + + /** + * 页面的初始数据 + */ + data: { + prevData: null, + pathography_id:'', + showdialog: false, + showAgreeDialog: false, + message: '', + order_inquiry_id:'', + doctor_id: '', + family_id: '', + chat_id: '', + inquiry_type: 1, + inquiry_mode: 1, + messageTitle: '', + disease_class_name: '', + disease_class_id:null, + show: false, + startIndex: 0, + cancelBtn: false, + showSick: false, + hideSick: false, + hideGuomin: false, + hidePregnant:false, + disease_desc: '', + hideFamilysick: false, + showBack: false, + is_exist:false, + columns: [], + fileList: [], + lockBtn: false, + checkSign: false, + is_allergy_history:null, + is_family_history:null, + is_pregnant:null, + pregnant: '', + checkAgree: false, + is_taboo:null, + diagnosis_date:null, + service_type:2, + product: [], + follow_package_item_id:'', + img_host:'https://oss.prod.applets.igandanyiyuan.com/applet/patient/static', + allergy_history: '', + family_history: '', + currentDate: new Date().getTime(), + minDate: new Date('1900/01/01 00:00:00').getTime(), + maxDate: new Date().getTime(), + formatter(type, value) { + if (type === 'year') { + return `${value}年`; + } + if (type === 'month') { + return `${value}月`; + } + if (type === 'day') { + return `${value}日`; + } + return value; + } + + }, + setInfo(obj){ + let Info =obj; + for (const key in Info) { + if (key != "product") { + if (Info[key]) { + this.setData({ + [key]: Info[key] + }) + } + } + + }; + if (Info.disease_desc) { + this.setData({ + hideSick: true + }) + }; + if (Info.pregnant) { + this.setData({ + hidePregnant: true + }) + }; + + if (Info.allergy_history) { + this.setData({ + hideGuomin: true + }) + }; + if (Info.family_history) { + this.setData({ + hideFamilysick: true + }) + }; + + if (Info.fileList) { + + this.setData({ + fileList:Info.fileList, + checkSign: false + }) + } else { + this.setData({ + checkSign: true + }) + } + }, + getlocalInfo(id){ + let sickInfo = wx.getStorageSync('sickInfo'); + if (sickInfo) { + var InfoObj = JSON.parse(sickInfo); + if (InfoObj instanceof Array) { + let obj=null; + let isHas= InfoObj.some((item)=>{ + if(item.family_id==id){ + obj=item; + } + return item.family_id==id; + }) + if(isHas){ + this.setInfo(obj) + }else{ + this.handleOnlineSick(this.data.family_id); + } + // for (let i = 0; i < InfoObj.length; i++) { + // if (InfoObj[i].family_id == id) { + // Dialog.confirm({ + // title: '温馨提示', + // message: '是否加载之前保存的病情信息?', + // }).then(() => { + // this.setInfo(InfoObj[i]) + // }).catch(() => { + + // }); + + // break; + // }; + // } + } + + }else{ + this.handleOnlineSick(this.data.family_id); + } + }, + handleSetValue(data){ + if(data){ + let obj = { + disease_class_name: '', + disease_class_id: '', + diagnosis_date: '', + disease_desc: '', + is_allergy_history:null, + product: [], + is_taboo:null, + is_pregnant:null, + pregnant: '', + is_family_history:null, + allergy_history: '', + family_history: '', + } + for (const key in obj) { + if (key != "product") { + if(key=="is_taboo" && !data[key]){ + this.setData({ + [key]: null + }) + }else{ + this.setData({ + [key]: data[key] + }) + } + + } + + }; + if (data.disease_desc) { + this.setData({ + hideSick: true + }) + }; + if (data.pregnant) { + this.setData({ + hidePregnant: true + }) + }; + + if (data.allergy_history) { + this.setData({ + hideGuomin: true + }) + }; + if (data.family_history) { + this.setData({ + hideFamilysick: true + }) + }; + if (data.diagnose_images) { + this.setData({ + fileList: data.diagnose_images, + checkSign: false + }) + } else { + this.setData({ + checkSign: false + }) + } + } + }, + handleOnlineSick(id){ + lastSick(id).then(data => { + this.handleSetValue(data); + }) + }, + // handleLastSick(id) { + // lastSick(id).then(data => { + // if (!data){ + // this.getlocalInfo(id); + // } else { + + + // } + // }) + // }, + + onConfirm(event) { + const { + value + } = event.detail; + this.setData({ + disease_class_name: `${value.disease_class_name}`, + disease_class_id: `${value.disease_class_id}`, + showSick: false + }) + }, + showSick() { + app.method.navigateTo({ + url: '/patient/pages/commonSick/commonSick' + }) + }, + delImg(event) { + let id = event.currentTarget.dataset.id; + this.data.fileList.splice(id, 1); + this.setData({ + fileList: this.data.fileList + }) + }, + previewImage(event) { + let id = event.currentTarget.dataset.id; + let urls = this.data.fileList; + wx.previewImage({ + current: urls[id], // 当前显示图片的http链接 + urls: urls // 需要预览的图片http链接列表 + }) + }, + uploadFile(File) { + wx.showLoading({ + title: '图片上传中...', + mask: true + }) + let THIS = this; + getSign({ + user_type: 1, + scene: 2 + }).then((resdata) => { + let { + accessid, + dir, + policy, + signature, + host + } = resdata; + let index = File.lastIndexOf("/"); + let filename = File.substring(index + 1, File.length); + return new Promise((resolve, reject) => { + wx.uploadFile({ + url: host, // 仅为示例,非真实的接口地址 + filePath: File, + name: 'file', + formData: { + OSSAccessKeyId: accessid, + policy, + key: dir + filename, + signature + }, + success(res) { + if (res.statusCode === 204) { + let url = host + '/' + dir + filename; + THIS.setData({ + fileList: THIS.data.fileList.concat([url]) + }) + } + }, + fail: err => { + console.log(err); + } + }); + }) + }) + }, + + upload() { + if(this.data.fileList.length>=9){ + wx.showToast({ + title: '复诊凭证最多上传9张', + icon:"none" + }) + return false + }; + let THIS = this; + wx.chooseMedia({ + count: 9-this.data.fileList.length, + mediaType: ['image'], + sourceType: ['album', 'camera'], + success(res) { + var imgList = res.tempFiles; + var promiseFun = []; + for (let i = 0; i < imgList.length; i++) { + var file = imgList[i].tempFilePath; + promiseFun.push( + THIS.uploadFile(file) + ) + }; + Promise.all(promiseFun).then((res) => { + wx.showToast({ + title: '图片上传成功', + icon: "none" + }) + THIS.setData({ + checkSign: false + }) + wx.hideLoading(); + + }); + + } + }) + }, + onCancel() { + this.setData({ + showSick: false + }) + }, + goRecord:throttle(function(){ + app.method.navigateTo({ + url:'/patient/pages/sickRecord/sickRecord?family_id='+this.data.family_id + }) + }), + handleThrottle: throttle(function () { + this.create_Order() + }), + create_Order() { + let { + inquiry_type, + inquiry_mode, + doctor_id, + family_id, + disease_class_id, + diagnosis_date, + disease_desc, + fileList, + is_allergy_history, + checkSign, + is_pregnant, + pregnant, + is_family_history, + allergy_history, + family_history, + checkAgree, + sex, + service_type, + follow_package_item_id + } = this.data; + + if (!disease_class_id) { + wx.showToast({ + title: '请选择所患疾病', + icon: "none" + }) + return false; + }; + if (!diagnosis_date) { + wx.showToast({ + title: '请选择确诊日期', + icon: "none" + }) + return false; + }; + if (!disease_desc) { + wx.showToast({ + title: '请填写病情主诉', + icon: "none" + }) + return false; + }; + if(disease_desc.length<10){ + wx.showToast({ + title: '病情主诉不少于10个字', + icon: "none" + }) + return false; + }; + + if (fileList.length == 0 && !checkSign) { + wx.showToast({ + title: '请上传复诊凭证或者勾选凭证遗失或不在身边', + icon: "none" + }) + return false; + } + + + + if (inquiry_type == 4 && allergy_history) { + for (let i = 0; i < product.length; i++) { + if (allergy_history.indexOf(product[i].product_name) != -1) { + this.setData({ + showdialog: true, + messageTitle: "您的情况不适合线上问诊开方,建议线下就诊" + }) + return false + } + + } + }; + if(is_allergy_history==null){ + wx.showToast({ + title: '请选择您是否有过敏史', + icon: "none" + }) + return false; + }; + if(is_allergy_history==1){ + if(!allergy_history){ + wx.showToast({ + title: '过敏史内容不能为空', + icon: "none" + }) + return false; + } + }; + if(is_family_history==null){ + wx.showToast({ + title: '请选择您是否有家族病史', + icon: "none" + }) + return false; + }; + if(is_family_history==1){ + if(!family_history){ + wx.showToast({ + title: '家族病史内容不能为空', + icon: "none" + }) + return false; + } + }; + if(is_pregnant==null && sex==2){ + wx.showToast({ + title: '请选择您是否处于备孕、妊娠、哺乳期', + icon: "none" + }) + return false; + }; + if (is_pregnant == 1) { + wx.showToast({ + title: '您的情况不适合线上问诊开方,建议线下就诊', + icon: "none" + }) + return false; + } + if (!checkAgree) { + this.setData({ + showAgreeDialog: true + }) + return false; + }; + this.setData({ + lockBtn: true + }); + createServiceOrder({ + patient_id: wx.getStorageSync('CLIENT_USER_ID'), + doctor_id: doctor_id, + family_id: family_id, + disease_class_id: disease_class_id, + diagnosis_date: diagnosis_date, + disease_desc: disease_desc, + is_allergy_history:is_allergy_history, + allergy_history: allergy_history, + family_history: family_history, + is_family_history: is_family_history, + is_pregnant: is_pregnant, + pregnant: pregnant, + inquiry_type: inquiry_type, + inquiry_mode: inquiry_mode, + diagnose_images: fileList, + client_type:client_type , + service_type:service_type, + follow_package_item_id:follow_package_item_id + }).then((data) => { + let { + inquiry_no, + order_inquiry_id + } = data.data; + let { + chat_id, + inquiry_type, + inquiry_mode + } = this.data; + this.setData({ + lockBtn: false + }); + if(data.status==1){ + app.method.navigateTo({ + url: '/patient/pages/payOrder/payOrder?doctor_id=' + doctor_id + '&inquiry_no=' + inquiry_no + "&chat_id=" + chat_id + "&inquiry_type=" + inquiry_type + "&inquiry_mode=" + inquiry_mode + "&order_inquiry_id=" + order_inquiry_id + "&fromType=chat" + }) + }else if(data.status==2){ + this.setData({ + showdialog:true, + messageTitle:"当前患者存在进行中问诊订单", + order_inquiry_id: order_inquiry_id, + cancelBtn:true + }) + } + + + }).catch((error)=>{ + this.setData({ + showdialog:true, + messageTitle:error.message, + cancelBtn:true + }) + }) + }, + inputChange(e) { + this.setData({ + [e.target.dataset.id]: e.detail.value + }) + }, + openPop() { + this.setData({ + show: true + }) + }, + handleClose() { + this.setData({ + show: false + }) + }, + handleConfirm(event) { + this.setData({ + show: false + }); + this.setData({ + diagnosis_date: dayjs(event.detail).format('YYYY-MM-DD') + }); + }, + handlepathographyDetail(id){ + pathographyDetail(id).then(data=>{ + this.handleSetValue(data); + }) + }, + handleIsExist(){ + let {family_id}=this.data; + isExist({ + family_id + }).then(data=>{ + this.setData({ + is_exist:data.is_exist==0?false:true + }) + }) + }, + handelFocus(e) { + let key = e.target.dataset.id; + let value = e.target.dataset.value; + if (!e.detail.value) { + this.setData({ + [key]: false, + [value]: e.detail.value + }) + } else { + this.setData({ + [key]: true, + [value]: e.detail.value + }) + } + }, + handelTextFocus(e) { + let key = e.target.dataset.id; + let value = e.target.dataset.value; + if (!e.detail) { + this.setData({ + [key]: false, + [value]: e.detail + }) + } else { + this.setData({ + [key]: true, + [value]: e.detail + }) + } + }, + goBack() { + + if (app.globalData.origion == 1) { + wx.reLaunch({ + url: '/pages/index/index', + }) + } else if (app.globalData.origion == 2) { + wx.reLaunch({ + url: '/pages/index/index', + }) + } else { + let { + disease_class_name, + diagnosis_date, + fileList, + is_allergy_history, + is_pregnant, + checkSign, + checkAgree, + is_family_history, + disease_desc + } = this.data; + //封装组件后退有bug,通过引用,回退正常 + if (disease_class_name || is_allergy_history || is_pregnant || is_family_history || fileList.length > 0 || diagnosis_date || disease_desc || checkSign || checkAgree) { + Dialog.confirm({ + title: '温馨提示', + message: '是否保存填写的病情信息?', + }).then(() => { + this.onSave() + }) + .catch(() => { + //wx.setStorageSync('sickInfo',''); + wx.navigateBack({ + delta: 1, + fail: function () { + wx.reLaunch({ + url: '/pages/index/index', + }) + } + }) + }); + } else { + + wx.navigateBack({ + delta: 1 + }) + } + } + }, + agreeConfirm(){ + this.setData({ + checkAgree:true + }) + }, + confirm(event) { + + if (event.detail) { + this.setData({ + showdialog: false + }) + } + if(this.data.messageTitle=="当前患者存在进行中问诊订单"){ + let {order_inquiry_id}=this.data; + app.method.navigateTo({ + url: '/patient/pages/orderDetail/orderDetail?order_inquiry_id='+ order_inquiry_id, + }) + } + }, + cancelAlert(){ + this.setData({ + showdialog: false + }) + }, + onChangeSign() { + this.setData({ + checkSign: !this.data.checkSign + }) + if (this.data.checkSign) { + this.setData({ + fileList: [] + }) + } + }, + onChange(event) { + + let key = event.target.dataset.id; + this.setData({ + [key]: event.detail + }); + if (event.detail == 0) { + if (key == "is_allergy_history") { + this.setData({ + allergy_history: '' + }) + }; + + if (key == "is_family_history") { + this.setData({ + family_history: '' + }) + }; + + if (key == "is_pregnant") { + this.setData({ + pregnant: '' + }) + } + } + }, + onSave() { + let { + family_id, + allergy_history, + family_history, + disease_desc, + disease_class_name, + disease_class_id, + diagnosis_date, + fileList, + checkSign, + checkAgree, + is_allergy_history, + is_pregnant, + pregnant, + is_family_history, + + } = this.data; + let sickInfo = { + family_id, + disease_class_name, + diagnosis_date, + fileList, + disease_class_id, + disease_desc, + allergy_history, + family_history, + is_allergy_history, + is_pregnant, + pregnant, + checkSign, + checkAgree, + is_family_history + }; + let sickInfo_stroage = wx.getStorageSync("sickInfo"); + if (sickInfo_stroage) { + let sickInfoObj = JSON.parse(sickInfo_stroage); + if (sickInfoObj instanceof Array) { + for (let i = 0; i < sickInfoObj.length; i++) { + if (sickInfoObj[i].family_id == family_id) { + sickInfoObj.splice(i, 1); + } + } + sickInfoObj.push(sickInfo); + wx.setStorageSync('sickInfo', JSON.stringify(sickInfoObj)); + } else { + sickInfoObj.family_id = family_id; + wx.setStorageSync('sickInfo', JSON.stringify([sickInfoObj])); + } + } else { + wx.setStorageSync('sickInfo', JSON.stringify([sickInfo])); + } + + wx.navigateBack({ + delta: 1 + }) + }, + /** + * 生命周期函数--监听页面加载 + */ + onLoad(options) { + // 订单类型(1:专家问诊 2:快速问诊 3:公益问诊 4:问诊购药) + console.log(options.package_id) + console.log(options.inquiry_mode) + if (options.inquiry_type == 1 || options.inquiry_type == 3) { + this.setData({ + follow_package_item_id:options.package_id?options.package_id:'', + doctor_id: options.doctor_id, + family_id: options.family_id, + chat_id: options.chat_id, + inquiry_type: options.inquiry_type, + inquiry_mode: options.inquiry_mode, + sex: options.sex + }) + } else { + if (options.inquiry_type == 4) { + this.setData({ + startIndex: 1 + }) + } + + this.setData({ + // product: options.product ? JSON.parse(options.product) : [], + family_id: options.family_id, + inquiry_type: options.inquiry_type, + sex: options.sex, + inquiry_mode: 1 + }) + } + //this.getSick(); + + this.handleIsExist(); + this.getlocalInfo(options.family_id); + }, + goAgreement:throttle(function(){ + app.method.navigateTo({ + url:"/patient/pages/linkPage/linkPage?url="+encodeURIComponent(urlHost+'/basic/file/agreement.htm?id=1') + }) + }), + /** + * 生命周期函数--监听页面初次渲染完成 + */ + onReady() { + + }, + + /** + * 生命周期函数--监听页面显示 + */ + onShow() { + this.setData({ + img_host:app.hostConfig().imghost + }); + let { + prevData, + pathography_id, + family_id + } = this.data; + if (prevData) { + this.setData({ + disease_class_name: prevData.disease_class_name, + disease_class_id: prevData.disease_class_id, + }) + } + console.log(pathography_id) + if(pathography_id){ + this.handlepathographyDetail(pathography_id) + } + // else{ + + // //this.handleLastSick(options.family_id); + // } + + + }, + + /** + * 生命周期函数--监听页面隐藏 + */ + onHide() { + + }, + + /** + * 生命周期函数--监听页面卸载 + */ + onUnload() {}, + + /** + * 页面相关事件处理函数--监听用户下拉动作 + */ + onPullDownRefresh() { + + }, + + /** + * 页面上拉触底事件的处理函数 + */ + onReachBottom() { + + }, + + /** + * 用户点击右上角分享 + */ + +}) \ No newline at end of file diff --git a/healthyService/pages/writeSick/writeSick.json b/healthyService/pages/writeSick/writeSick.json new file mode 100644 index 0000000..6dafd2a --- /dev/null +++ b/healthyService/pages/writeSick/writeSick.json @@ -0,0 +1,17 @@ +{ + "usingComponents": { + "van-field": "@vant/weapp/field/index", + "van-checkbox": "@vant/weapp/checkbox/index", + "van-radio": "@vant/weapp/radio/index", + "van-radio-group": "@vant/weapp/radio-group/index", + "van-datetime-picker": "@vant/weapp/datetime-picker/index", + "van-popup": "@vant/weapp/popup/index", + "van-picker": "@vant/weapp/picker/index", + "van-icon": "@vant/weapp/icon/index", + "dialog":"../../../components/dialog/dialog", + "van-dialog": "@vant/weapp/dialog/index", + "nav":"../../../components/nav/nav" + }, + "navigationStyle":"custom", + "navigationBarTitleText": "肝胆相照互联网医院" +} \ No newline at end of file diff --git a/healthyService/pages/writeSick/writeSick.wxml b/healthyService/pages/writeSick/writeSick.wxml new file mode 100644 index 0000000..e2faadb --- /dev/null +++ b/healthyService/pages/writeSick/writeSick.wxml @@ -0,0 +1,168 @@ + + + + + + 填写病情 + + + + 病情历史 + 查看记录 + + + 所患疾病 + + + + + 确诊日期 + + + + 病情主诉 + + + + + + + + + + 用药意向 + + + + {{item.product_name}}{{item.product_spec}}(数量{{item.product_num}}) + + + + + + 上传复诊凭证(最多9张) + 请上传问诊本人清晰的复诊凭证(病例/处方单/检查报告/住院单),仅接诊医生可见。 + + + + + + + + + + 复诊凭证遗失或不在身边,请勾选本项,未上传凭证可能会影响医生对您的诊断 + + + + + + {{startIndex}}、 + + 是否服用过您想购买的药品且无相关禁忌? + + + + + + + + + + {{startIndex+1}}、 + + 您是否有过敏史? + + + + + + + + + + + {{startIndex+2}}、 + + 您是否有家族病史? + + + + + + + + + + + {{startIndex+3}}、 + + 您是否处于备孕、妊娠、哺乳期? + + + + + + + + + + + + + + 胆相照互联网医院平台医生为您提供健康咨询服务,医生建议仅供参考。根据国家互联网诊疗相关政策要求,请您在提交服务前仔细阅读《风险告知与知情同意书》。继续操作表示您知悉并同意上述全部内容。 + + + + + + + + + + + + + + + + + + + 请您先仔细阅读并同意《风险告知与知情同意书》 + + + \ No newline at end of file diff --git a/healthyService/pages/writeSick/writeSick.wxss b/healthyService/pages/writeSick/writeSick.wxss new file mode 100644 index 0000000..d503454 --- /dev/null +++ b/healthyService/pages/writeSick/writeSick.wxss @@ -0,0 +1,356 @@ +/* pages/writeSick/writeSick.wxss */ +.content{ + min-height: 100%; + background: #f2f2f2; +} +.ui-navigatorbar { + position: fixed; + z-index:99; + top: 0; + width: 750rpx; + height: 172rpx; + background: #F2F2F2; + backdrop-filter: blur(20px); + } + + .ui-navigatorbar-back { + position: absolute; + padding-left:40rpx; + padding-right:40rpx; + width:30rpx; + height:60rpx; + left: 0rpx; + bottom: 20rpx; + } + + .ui-title { + position: absolute; + width: 350rpx; + height: 88rpx; + line-height: 56rpx; + font-size: 36rpx; + white-space: nowrap; + color: #000000; + bottom: 0; + left: 200rpx; + display: flex; + justify-content: center; + align-items: center; + } +.ui-navigatorbar-back { + position: absolute; + padding-left:40rpx; + padding-right:40rpx; + width:30rpx; + height:60rpx; + left: 0rpx; + bottom: 20rpx; + } + + .ui-title { + position: absolute; + width: 350rpx; + height: 88rpx; + line-height: 56rpx; + font-size: 36rpx; + color: #000000; + bottom: 0; + left: 200rpx; + display: flex; + justify-content: center; + align-items: center; + } +.infobox { + margin-top:172rpx; + +} +.sickHisbox{ + display: flex; + height:94rpx; + align-items: center; + margin-bottom: 20rpx; + background-color: #fff; + padding:0 55rpx; + justify-content: space-between; +} +.hisBtn{ +width: 166rpx; +height: 60rpx; +color:#3CC7C0; +display: flex; +font-size: 26rpx; +align-items: center; +justify-content: center; +background: #E2FFFE; +border-radius: 6rpx; +border: 1rpx solid #3CC7C0; +} +.info { + border-bottom: 1rpx solid #E7E7E7; + display: flex; + background-color: #fff; + align-items: center; + height: 112rpx; + color: #333333; +} + + +.info .name { + white-space: nowrap; + width: 180rpx; + display: flex; + align-items: center; + margin-left: 52rpx; + color: #333333; + font-size: 34rpx; +} + +.info text { + margin-top: 20rpx; + color:#E34D59; + + display: flex; + align-items: center; +} +.info .ipt { + margin-left: 15rpx; + margin-right: 52rpx; + flex: 1; +} +.input-placeholder { + color: #999999; + + font-size: 28rpx; +} +.textareaview{ + position: relative; + padding:40rpx 52rpx; + background: #fff!important; +} +.textwrap{ + background: #F2F2F2!important; + border-radius: 10rpx; +} +.van-cell{ + position: relative; + z-index:2; + background-color:transparent!important; +} +.van-field__body--textarea{ + height:360rpx; + width:580rpx; +} +.iptclass{ + top:0; + overflow-y: scroll; + -webkit-overflow-scrolling: touch; + height:360rpx!important; + bottom:0; + left:0rpx; + right:0rpx; + width:100%!important; + background-color: transparent; + +} +.mydailog .dialog-index--van-dialog__confirm{ + background:#ebf9f9!important; +} +/* +.van-field__control { + display: flex; + align-self: start; +} */ + +.van-field__word-limit { + color: #999999!important; + font-size: 24rpx; +} +.green{ + color:rgba(60, 199, 192, 1) +} +.van-field__word-num--full{ + color: #ee0a24!important; +} +.textbox{ + left:86rpx; + right:86rpx; + top:60rpx; + height:380rpx; + z-index:0; + position: absolute; +} + +.textbox .desc{ + word-break: break-all; + line-height: 42rpx; + color: #999; + margin-bottom: 20rpx; + font-size: 28rpx; +} +.textbox .goods{ + display: inline; + white-space:normal; +} +.textbox .goods:after{ + content:";" +} +.textbox .goods:last-child:after{ + content:"" +} +.textbox view:last-child{ + margin-bottom: 0; +} +.textbox text{ + color: #333333; + font-size: 28rpx; +} +.info .tip{ + line-height: 36rpx; + color: #666666; + margin:20rpx 52rpx 0; + font-size: 24rpx; +} +.uploadbox{ + + margin:30rpx 52rpx 0; + display: flex; + flex-wrap: wrap ; +} +.uploadbox .close{ + z-index:99; + top:5rpx; + right:5rpx; + position: absolute; + width:30rpx; + height:30rpx; +} +.uploadbox .upload{ + position: relative; + object-fit: cover; + margin: 5px 19rpx 5px 0; +} +.uploadbox .upload:nth-child(4n){ + margin-right: 0; +} +.van-icon-plus{ + color:#333; + font-size: 80rpx!important; +} +.agreebox{ + margin:30rpx 52rpx 0; + display: flex; +} +.agreebox .desc{ + color: #666666; + line-height: 36rpx; + + font-size: 24rpx; +} +.van-checkbox{ + display: flex; + align-items: flex-start!important; +} +.sickHis{ + background-color: #fff; + margin-top: 20rpx; + padding:40rpx 52rpx; + +} +textarea{ + width:100%; + color:#333; + height:132rpx; +} +.list .qa{ + display: flex; +} +.titlebox{ + flex:1; + +} +.radio{ + margin: 40rpx 0rpx 30rpx 0; +} +.sickArea{ + position: relative; + z-index:1; +} +.upload{ + width: 148rpx; + height:148rpx; + display: flex; + justify-content:center ; + align-items: center; + background: #F2F2F2; + border-radius: 4rpx +} +.radiotip{ + position: relative; + padding:24rpx 20rpx; + justify-content: center; + margin-top: 30rpx; + line-height: 42rpx; +background: #F2F2F2; +border-radius: 10rpx; +font-size: 28rpx; +color:#999; +margin-bottom: 20rpx; +} +.radiotip .textbox{ + top:20rpx; + left:20rpx; + height: 100rpx; + right:20rpx; +} +.radiotip .textarea{ + position: relative; + z-index:2; +} +.radiotip text{ + white-space: nowrap; + color:#333; +} +.xieyi{ + width:100%; + padding:30rpx 52rpx 40rpx; + + background-color: #fff; +} +.agreebox text{ + color:#3CC7C0; + +} +.nextbox{ + padding-bottom: 20rpx; + background-color: #fff; +} +.next{ + display: flex; + align-items: center; + justify-content: center; + height: 94rpx; + font-size: 36rpx; + border:none; + outline: none; + margin:0 52rpx; + border-radius: 47rpx; + color: #fff; + margin-bottom: 40rpx; + background: #3CC7C0!important; +} +.datePicker{ + width:100%; + position: fixed; + bottom:0; +} + +.dateTitle{ + border:1rpx solid #E7E7E7; +} +.van-uploader__preview-image,.van-uploader__upload{ + width: 148rpx!important; + height: 148rpx!important; +} +.van-uploader__preview{ + margin: 0 6px 8px 0; +} diff --git a/pages/index/index.js b/pages/index/index.js index 2d76b94..5cc00c6 100644 --- a/pages/index/index.js +++ b/pages/index/index.js @@ -41,7 +41,7 @@ Page({ } }), goH5:throttle(function(event){ - let {url,name}=event.currentTarget.dataset; + let {url,name,type}=event.currentTarget.dataset; if(url.indexOf("http")!=-1){ let urlName=(decodeURIComponent(url)) if(this.verifySuffix(urlName)){ @@ -55,14 +55,21 @@ Page({ } }else{ - wx.navigateToMiniProgram({ - appId: 'wxdee7006582529713', - path:url, - envVersion: 'release', - success(res) { - // 打开成功 - } - }) + if(type==4){ + app.method.navigateTo({ + url:'/'+url + }) + }else{ + wx.navigateToMiniProgram({ + appId: 'wxdee7006582529713', + path:url, + envVersion: 'release', + success(res) { + // 打开成功 + } + }) + } + } }), diff --git a/pages/index/index.wxml b/pages/index/index.wxml index 06a8337..000c47a 100644 --- a/pages/index/index.wxml +++ b/pages/index/index.wxml @@ -107,7 +107,7 @@ - + diff --git a/patient/pages/expertDetail/expertDetail.js b/patient/pages/expertDetail/expertDetail.js index d84bd46..3b54b07 100644 --- a/patient/pages/expertDetail/expertDetail.js +++ b/patient/pages/expertDetail/expertDetail.js @@ -18,8 +18,8 @@ Page({ tab3Height:500, img_host:'https://oss.prod.applets.igandanyiyuan.com/applet/patient/static', showDialog:false, - avatar: '', currentData:0, + avatar: '', user_name: '', doctor_title: '', doctor_id: '',