diff --git a/app.json b/app.json index 4fad8ed..a59b0a4 100644 --- a/app.json +++ b/app.json @@ -86,6 +86,18 @@ "pages/globalCall/globalCall" ], "independent": false + }, + { + "root": "healthyService", + "name": "healthyService", + "pages": [ + "pages/healthyIntro/healthyIntro", + "pages/healthyDetail/healthyDetail", + "pages/visitDetail/visitDetail", + "pages/healthyOrder/healthyOrder", + "pages/healthyOrderDetail/healthyOrderDetail" + ], + "independent": true } ], "preloadRule": { diff --git a/components/navbar/navbar.js b/components/navbar/navbar.js index df35b70..6af007f 100644 --- a/components/navbar/navbar.js +++ b/components/navbar/navbar.js @@ -25,9 +25,9 @@ Component({ this.triggerEvent('handleFocus',true) }, goInquirtForm(){ - // wx.navigateTo({ - // url: '/patient/pages/expertDetail/expertDetail?doctor_id=516904855116750848', - // }) + wx.navigateTo({ + url: '/healthyService/pages/healthyIntro/healthyIntro', + }) } }, diff --git a/healthyService/pages/healthyDetail/healthyDetail.js b/healthyService/pages/healthyDetail/healthyDetail.js new file mode 100644 index 0000000..287edb5 --- /dev/null +++ b/healthyService/pages/healthyDetail/healthyDetail.js @@ -0,0 +1,68 @@ +// healthyService/pages/healthyDetail/healthyDetail.js +import {throttle} from "../../../utils/util" +const app = getApp() +Page({ + + /** + * 页面的初始数据 + */ + data: { + img_host:app.hostConfig().imghost + }, + + /** + * 生命周期函数--监听页面加载 + */ + onLoad(options) { + + }, + + /** + * 生命周期函数--监听页面初次渲染完成 + */ + onReady() { + + }, + + /** + * 生命周期函数--监听页面显示 + */ + onShow() { + + }, + + /** + * 生命周期函数--监听页面隐藏 + */ + onHide() { + + }, + + /** + * 生命周期函数--监听页面卸载 + */ + onUnload() { + + }, + + /** + * 页面相关事件处理函数--监听用户下拉动作 + */ + onPullDownRefresh() { + + }, + + /** + * 页面上拉触底事件的处理函数 + */ + onReachBottom() { + + }, + + /** + * 用户点击右上角分享 + */ + onShareAppMessage() { + + } +}) \ No newline at end of file diff --git a/healthyService/pages/healthyDetail/healthyDetail.json b/healthyService/pages/healthyDetail/healthyDetail.json new file mode 100644 index 0000000..9ce900b --- /dev/null +++ b/healthyService/pages/healthyDetail/healthyDetail.json @@ -0,0 +1,6 @@ +{ + "usingComponents": { + "nav":"../../../components/nav/nav" + }, + "navigationStyle":"custom" +} \ No newline at end of file diff --git a/healthyService/pages/healthyDetail/healthyDetail.wxml b/healthyService/pages/healthyDetail/healthyDetail.wxml new file mode 100644 index 0000000..f39109a --- /dev/null +++ b/healthyService/pages/healthyDetail/healthyDetail.wxml @@ -0,0 +1,67 @@ + + + + + + + + 服务权益 + + + + 专属标识: + 享有特殊标识,获得医生全面照护 + + + 服务周期: + 购买后,从第一次消费起90天内 + + + 图文问诊2次/月 + 1、医生接诊后,每次可持续48小时; + + 2、图片、文字、语音形式,无限制的进行沟通; + + 3、超出的问诊需按原价的图文服务购买。 + + + 处方: + 1、每次问诊,只可产生一个处方单; + + + 2、服务包含30盒肝爽颗粒(步长),每月和医生问诊时,医生开具处方,选择收货地址即可,每次最多只发货10盒。 + + + + 优惠劵: + 1、赠送全品类药品劵10元(不可与其他优惠劵叠加使用); + + + + 2、赠送肝胆相照商城优惠劵100元(仅限纽娃复合蛋白营养素固体饮料使用,注册肝胆相照商城后,2~3个工作日到账)。 + + + + 退费: + 1、未使用随时退; + + + + + + 2、健康包开始使用后如需退款请联系客服,退款不收取任何服务费等额外费用,但不支持部分退款: + + + 3、药品一经发出,问诊一经接诊,均概不退换; + + + 4、未消费健康包内容可退款,已消费服务的部分按原价计费,即:已发生的问诊按照问诊时互联网医院显示的价格结算,肝爽颗粒按照原价每盒42.8元结算。 + + + + + + + 立即购买:¥XX.XX + + \ No newline at end of file diff --git a/healthyService/pages/healthyDetail/healthyDetail.wxss b/healthyService/pages/healthyDetail/healthyDetail.wxss new file mode 100644 index 0000000..584cea8 --- /dev/null +++ b/healthyService/pages/healthyDetail/healthyDetail.wxss @@ -0,0 +1,88 @@ +page{ + height:100vh; + overflow: hidden; +} +/* healthyService/pages/healthyDetail/healthyDetail.wxss */ +.page{ + width:100%; + height:calc(100% - 172rpx); + margin-top: 172rpx; + display: flex; + overflow: hidden; + flex-direction: column; +} +.dcimg{ + width:100%; + position: absolute; + z-index:-1; +} +.detailbox{ + overflow: hidden; + /* position: relative; */ + z-index:1; + flex:1; + display: flex; + flex-direction: column; +margin-top: 200rpx; +background: #FFFFFF; +border-radius: 32rpx 32rpx 0rpx 0rpx; +} +.con{ + flex:1; + padding: 0 30rpx; + overflow-y: scroll; + -webkit-overflow-scrolling: touch; +} +.quanyi{ + position: relative; + width:260rpx; + margin:0 auto; + height:70rpx; +} +.quanyiImg{ + width:260rpx; + height:70rpx; +} +.cell{ + margin-bottom: 30rpx; +} +.quanyiText{ + top:0; + position: absolute; + + font-size: 34rpx; + width:260rpx; + height:70rpx; + display: flex; + justify-content: center; + align-items: center; + color: #FFFFFF; +} + +.celltitle{ + font-weight: 550; + font-size: 30rpx; + color: #000000; +} +.celldesc{ + margin-top: 15rpx; + font-size: 30rpx; + color: #000000; +} +.buttonbox{ + width:100%; + height:200rpx; +} +.btn{ + height: 94rpx; + margin:35rpx 30rpx 0; + background: #3CC7C0; +border-radius: 47rpx; +font-size: 36rpx; +color: #FFFFFF; +display: flex; +align-items: center; +justify-content: center; +line-height: 50rpx; +text-align: center; +} \ No newline at end of file diff --git a/healthyService/pages/healthyIntro/healthyIntro.js b/healthyService/pages/healthyIntro/healthyIntro.js new file mode 100644 index 0000000..40e47a7 --- /dev/null +++ b/healthyService/pages/healthyIntro/healthyIntro.js @@ -0,0 +1,123 @@ +// healthyService/pages/healthyIntro/healthyIntro.js +import {throttle} from "../../../utils/util" +const app = getApp() +Page({ + + /** + * 页面的初始数据 + */ + data: { + blockHeight:"150rpx" + }, + goDetail:throttle(function(){ + app.method.navigateTo({ + url: '/healthyService/pages/visitDetail/visitDetail', + //url: '/healthyService/pages/healthyDetail/healthyDetail', + }) + }), +// 显示遮罩层 +showModal() { + this.setData({ + hideModal: true, + blockHeight:"1130rpx" + }) + }, + // 隐藏遮罩层 + hideModal() { + + this.setData({ + hideModal: false, + blockHeight:"300rpx" + }) + }, + touchstart(e) { + this.setData({ + startX: e.changedTouches[0].clientX, + startY: e.changedTouches[0].clientY + }) + }, + angle(start, end) { + var _X = end.X - start.X, + _Y = end.Y - start.Y; + //返回角度 Math.atan()返回数字的反正切值 + return 360 * Math.atan(_Y / _X) / (2 * Math.PI); + }, + touchend(e) { + let {startX,startY} = this.data; + let slidingRange = 45; // + let touchMoveX = e.changedTouches[0].clientX; + let touchMoveY = e.changedTouches[0].clientY; + let angle = this.angle({ + X: startX, + Y: startY + }, { + X: touchMoveX, + Y: touchMoveY + }); + //为了方便计算取绝对值判断 + if (Math.abs(angle) > slidingRange && touchMoveY < startY) { + + this.showModal() + // 向上滑动 + }; + if (Math.abs(angle) > slidingRange && touchMoveY > startY ) { + this.hideModal() + // 向下滑动 + } + }, + /** + * 生命周期函数--监听页面加载 + */ + onLoad(options) { + + }, + + /** + * 生命周期函数--监听页面初次渲染完成 + */ + onReady() { + + }, + + /** + * 生命周期函数--监听页面显示 + */ + onShow() { + + }, + + /** + * 生命周期函数--监听页面隐藏 + */ + onHide() { + + }, + + /** + * 生命周期函数--监听页面卸载 + */ + onUnload() { + + }, + + /** + * 页面相关事件处理函数--监听用户下拉动作 + */ + onPullDownRefresh() { + + }, + + /** + * 页面上拉触底事件的处理函数 + */ + onReachBottom() { + + }, + + /** + * 用户点击右上角分享 + */ + onShareAppMessage() { + + } +}) \ No newline at end of file diff --git a/healthyService/pages/healthyIntro/healthyIntro.json b/healthyService/pages/healthyIntro/healthyIntro.json new file mode 100644 index 0000000..39c3ea8 --- /dev/null +++ b/healthyService/pages/healthyIntro/healthyIntro.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/healthyIntro/healthyIntro.wxml b/healthyService/pages/healthyIntro/healthyIntro.wxml new file mode 100644 index 0000000..290d93f --- /dev/null +++ b/healthyService/pages/healthyIntro/healthyIntro.wxml @@ -0,0 +1,39 @@ + + + + + + + + + + + + 健康包服务医生 + + + + + \ No newline at end of file diff --git a/healthyService/pages/healthyIntro/healthyIntro.wxss b/healthyService/pages/healthyIntro/healthyIntro.wxss new file mode 100644 index 0000000..c7c5968 --- /dev/null +++ b/healthyService/pages/healthyIntro/healthyIntro.wxss @@ -0,0 +1,51 @@ +/* healthyService/pages/healthyIntro/healthyIntro.wxss */ +.page{ + margin-top: 172rpx; + padding-bottom:100rpx; + position: relative; +} +.btn{ + position: absolute; + left: 50%; + margin-left: -232rpx; + width:464rpx; + height: 86rpx; + bottom:200rpx; +} +.bg{ + width:100%; +} +.top{ + position: absolute; + top:20rpx; + 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: absolute; + transition: height 0.5s; + width:100%; + border-radius: 20rpx; + overflow: hidden; + height:100%; + bottom:0px; + } \ No newline at end of file diff --git a/healthyService/pages/healthyOrder/healthyOrder.js b/healthyService/pages/healthyOrder/healthyOrder.js new file mode 100644 index 0000000..5417291 --- /dev/null +++ b/healthyService/pages/healthyOrder/healthyOrder.js @@ -0,0 +1,274 @@ +// pages/consultOrder/consultOrder.js +const app = getApp() +import {detectionList} from "../../../api/checkSugar" + import{family} from "../../../api/familyDoc" +Page({ + + /** + * 页面的初始数据 + */ + data: { + time: 0, + changeStatus:'', + changeId:'', + isLoading:true, + selectstatus:false, + selectfamily:false, + delId:'', + option1: [ + { text: '全部订单', value: 0 }, + { text: '待支付', value: 1 }, + { text: '待绑定', value: 2 }, + { text: '检测中', value: 3}, + { text: '检测完成', value: 4}, + {text:'已取消',value:5} + + ], + page:1, + isTriggered:false, + pageNumber:10, + option2: [], + detection_status: 0, + family_id:0, + orderList:[], + isLock:false, + img_host:'https://oss.prod.applets.igandanyiyuan.com/applet/patient/static', + fromType:'' + }, + handleRefresher(){ + this.setData({ + isLock:false, + page:1, + orderList:[] + }) + this.getDetectionList(); + }, + goBack(flag=true){ + + let {fromType}=this.data; + if(app.globalData.origion==1){ + wx.reLaunch({ + url: '/pages/index/index', + }) + }else if(app.globalData.origion==2){ + wx.reLaunch({ + url: '/pages/index/index', + }) + }else{ + if(fromType){ + wx.reLaunch({ + url: '/pages/my/my', + }) + }else{ + if(true){ + wx.navigateBack({ + delta: 1, + fail:function(){ + wx.reLaunch({ + url: '/pages/index/index', + }) + } + }) + } + + } + } + }, + lower(e) { + if(!this.data.isLock){ + this.setData({ + page: ++this.data.page + }) + this.getDetectionList() + } + }, + goExpertList(){ + app.method.navigateTo({ + url: '/sugarCheck/pages/checkOrderDetail/checkOrderDetail' //'/pages/expertConsult/expertConsult', + }) + }, + changeStatus({ detail }){ + this.setData({ + isLock:false, + page:1, + selectstatus:true, + detection_status:detail, + orderList:[] + }) + this.getDetectionList() + }, + changeFamily({ detail }){ + this.setData({ + family_id:detail, + isLock:false, + selectfamily:true, + page:1, + orderList:[] + }) + this.getDetectionList() + }, + getDetectionList(){ + let {detection_status,family_id,page,pageNumber}=this.data; + this.setData({ + isLoading:true + }) + detectionList({ + detection_status, + family_id, + page, + per_page:pageNumber + }).then(data=>{ + let result=data.data; + this.setData({ + isLoading:false + }) + if(result.length==0){ + this.setData({ + isLock:true, + isTriggered:false + }) + return false + }; + this.setData({ + orderList:this.data.orderList.concat(result), + isTriggered:false + }) + }) + }, + handelCancelOrder(id){ + cancelOrder(id).then(data=>{ + wx.showToast({ + title: '订单取消成功', + icon:"none" + }) + }) + }, + getfamily(){ + family().then(data=>{ + + let arr=[]; + data.forEach((item,index)=>{ + arr[index]={}; + let sex=""; + switch (item.sex){ + case '0':sex="未知"; + break; + case '1':sex="男"; + break; + case '2':sex="女"; + break; + } + let age=item.age; + arr[index].text=item.card_name+"("+sex+","+age+")"; + arr[index].value=item.family_id; + }) + arr=[{text:"全部成员",value:0}].concat(arr); + this.setData({ + option2:arr + }) + this.getDetectionList(); + }) + + }, + goDetail(event){ + let id=event.currentTarget.dataset.id; + app.method.navigateTo({ + url: '/sugarCheck/pages/checkOrderDetail/checkOrderDetail?order_detection_id='+id, + }) + }, + /** + * 生命周期函数--监听页面加载 + */ + onLoad(options) { + if(options.fromType){ + this.setData({ + fromType:options.fromType + }) + }; + if(options.prevData){ + let json=JSON.parse(options.prevData); + this.setData({ + changeStatus:json.changeStatus, + changeId:json.changesId + }); + } + this.getfamily(); + + + }, + + /** + * 生命周期函数--监听页面初次渲染完成 + */ + onReady() { + + }, + + /** + * 生命周期函数--监听页面显示 + */ + onShow() { + this.setData({ + img_host:app.hostConfig().imghost + }); + //刷新列表 + let {delId,orderList,changeStatus,changeId}=this.data; + if(delId){ + let list=orderList.filter((item)=>{ + return item.order_detection_id!=delId + }) + this.setData({ + orderList:list + }) + }else if(changeStatus && changeId){ + for (let i = 0; i < orderList.length; i++) { + const item =orderList[i]; + if(item.order_detection_id==changeId){ + let currentitem=`orderList[${i}].detection_status` + this.setData({ + [currentitem]:changeStatus + }) + break; + } + } + }else{ + // this.setData({ + // isLock:false, + // page:1, + // orderList:[] + // }) + // this.getDetectionList(); + // this.getfamily(); + } + }, + + /** + * 生命周期函数--监听页面隐藏 + */ + onHide() { + + }, + + /** + * 生命周期函数--监听页面卸载 + */ + onUnload() { + // this.goBack(false) + }, + + /** + * 页面相关事件处理函数--监听用户下拉动作 + */ + + /** + * 页面上拉触底事件的处理函数 + */ + onReachBottom() { + + }, + + /** + * 用户点击右上角分享 + */ + +}) \ No newline at end of file diff --git a/healthyService/pages/healthyOrder/healthyOrder.json b/healthyService/pages/healthyOrder/healthyOrder.json new file mode 100644 index 0000000..e30fe4e --- /dev/null +++ b/healthyService/pages/healthyOrder/healthyOrder.json @@ -0,0 +1,11 @@ +{ + "usingComponents": { + "van-dropdown-menu": "@vant/weapp/dropdown-menu/index", + "van-dropdown-item": "@vant/weapp/dropdown-item/index", + "van-count-down": "@vant/weapp/count-down/index" + + }, + "navigationStyle":"custom", + "navigationBarTitleText":"肝胆相照互联网医院" + +} \ No newline at end of file diff --git a/healthyService/pages/healthyOrder/healthyOrder.wxml b/healthyService/pages/healthyOrder/healthyOrder.wxml new file mode 100644 index 0000000..8a33a73 --- /dev/null +++ b/healthyService/pages/healthyOrder/healthyOrder.wxml @@ -0,0 +1,107 @@ + + + + + + 检测订单 + + + + + + + + + + + + + 糖组检测 + + + 待支付 + + + + + 待绑定 + 检测中 + 已开具报告 + 已取消 + + 支付超时 + + + + + + + + + + {{item.user_doctor.user_name}} {{item.user_doctor.doctor_title}} + 平台分配医生中 + 接诊医生 + + {{item.user_doctor.hospital_name}} + + + + + + + + + + {{item.patient_name}}(未知{{item.patient_age}}岁) + + + + + + + 下单时间 + + {{item.created_at}} + + + 详情 + + + + + 下单时间 + + {{item.created_at}} + + + + 待付金额 + + ¥{{item.payment_amount_total}} + + + 详情 + + + + + + + + + + 暂无检测订单 + + + + \ No newline at end of file diff --git a/healthyService/pages/healthyOrder/healthyOrder.wxss b/healthyService/pages/healthyOrder/healthyOrder.wxss new file mode 100644 index 0000000..aff8359 --- /dev/null +++ b/healthyService/pages/healthyOrder/healthyOrder.wxss @@ -0,0 +1,332 @@ +/* pages/consultOrder/consultOrder.wxss */ +/**app.wxss**/ +.container { + padding-top: 135px; + padding-bottom: 10rpx; + /* top:280rpx; */ + /* position: absolute; */ + width:100%; + /* overflow-y: scroll; */ + background: #F2F2F2; + } + input{ + font-family: -apple-system, BlinkMacSystemFont, 'Helvetica Neue', Helvetica, + } + page{ + position: relative; + width:100%; + height:100%; + font-family: -apple-system, BlinkMacSystemFont, 'Helvetica Neue', Helvetica, + Segoe UI, Arial, Roboto, 'PingFang SC', 'miui', 'Hiragino Sans GB', 'Microsoft Yahei', + sans-serif; + } + .page{ + width:100vw; + height:100vh; + background: #f2f2f2; + } + .contain{padding: 0 30rpx 0rpx;height: 100%;overflow: hidden;position: relative;} + ::-webkit-scrollbar { + display: none; + width: 0; + height: 0; + color: transparent; + } + .van-picker__confirm { + color:#3CC7C0!important; + font-size: 32rpx!important; + } + .van-picker__title{ + font-weight: 600!important; + color: rgba(0,0,0,0.9)!important; + font-size: 32rpx!important; + } + .van-picker__cancel{ + color: rgba(0,0,0,0.6)!important; + font-size: 32rpx!important; + } + .nonedata{ + width:100%; + color:#666; + min-height: 320rpx; + font-size: 28rpx; + display: flex; + justify-content: center; + align-items: center; + } + .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; + color: #000000; + bottom: 0; + left: 200rpx; + display: flex; + justify-content: center; + align-items: center; + } + .droptitle.active{ + color:#3CC7C0; + } + .slotmsg{ + -webkit-overflow-scrolling: touch; + font-size: 28rpx; + line-height:40rpx; + max-height:60vh; + overflow-y: auto; + padding:48rpx; + text-align: center; + } + .van-dropdown-item__title{ + width:100%!important; + flex:1; + text-align: center; + } + .van-dropdown-item__icon{ + z-index:2; + position: absolute!important; + + right:25rpx; + } + .van-cell__value{ + flex:none!important; + z-index:1; + } + .onlinebox .icon{ + top:60rpx; + left:50%; + position: absolute; + margin-left: -48rpx; + width:96rpx; + height:34rpx; + border-radius: 0; + } +.page { + display: flex; + flex-direction: column; +} + +.dropdown { + position: relative; + height:102rpx; + margin-top: 172rpx; +} + +.dropdown .bar { + position: absolute; + height: 40rpx; + width: 1rpx; + left: 50%; + top: 50%; + transform: translate(-50%, -50%); + background: #ccc; + opacity: 0.9; +} + +.van-dropdown-menu { + box-shadow: none !important; + border-bottom: 1rpx solid #E7E7E7; +} + +.btn { + position: absolute; + bottom: 20rpx; + left: 32rpx; + right: 32rpx; + display: flex; + height: 94rpx; + background: #3CC7C0; + border-radius: 47rpx; + justify-content: center; + align-items: center; + color: #fff; + background: #3CC7C0; + +} + +.nodata { + flex: 1; + display: flex; + + flex-direction: column; + align-items: center; +} + +.noorder { + margin-top: 150rpx; + width: 518rpx; + height: 325rpx; +} +.tips { + font-size: 28rpx; + font-weight: 400; + color: #666666; +} +.hasdata{ + flex: 1; + overflow-y: scroll; + -webkit-overflow-scrolling: touch; + margin-top: 20rpx; +} +.datacell{ + background:#fff; + padding-bottom: 20rpx; + margin-bottom:10rpx; +} +.datacell:last-child{ + margin-bottom: 0; +} +.status{ + color: #333333; + font-size: 28rpx; +} +.titlebox .name{ + color: #000; + font-size: 32rpx; +} +.titlebox{ + padding:0 32rpx; + height: 112rpx; + border-bottom: 1rpx solid #E3E4E5; + display: flex; + justify-content: space-between; + align-items: center; +} +.waitpay{ + text-align: right; + color: #EF4F20 +} +.headicon{ + width:80rpx; + height:80rpx; + flex-shrink: 0; + border-radius: 50%; +} +.van-count-down { + margin-top: 5rpx; + color: #EF4F20!important; +} +.infobox{ + padding:20rpx 32rpx 0; + align-items: center; + display: flex; +} +.infobox .name{ + margin-left: 30rpx; + font-weight: 600; +} +.hospital{ + margin-left: 30rpx; + font-size: 28rpx; +font-weight: 400; +color: #333333; +} +.infobox .position{ + font-weight:normal; +} +.row{ + align-items: center; + padding:0 32rpx; + display: flex; + line-height: 52rpx +} +.row.first{ + margin-top: 15rpx; +} +.row .name{ + white-space: nowrap; + font-size: 28rpx; + color:#333; + font-weight: 600; + width:112rpx; + align-items: baseline; +} +.row.first .name{ + + display: flex; + justify-content: space-between; + +} +.row .dot{ + align-items: baseline; + height: 52rpx; + font-weight: 600; + display: flex; + +} +.row .desc{ + align-items: baseline; + font-size: 28rpx; + line-height: 52rpx; + color:#333; +} +.row .desc.red{ + color:rgba(239, 79, 32, 1); +} +.rowdesc{ + align-items: flex-start; +} +.namedesc{ + display: flex; + align-items: center; +} +.rowdesc .desc{ + text-overflow: -o-ellipsis-lastline; + overflow: hidden; + text-overflow: ellipsis; + display: -webkit-box; + -webkit-line-clamp: 2; + line-clamp: 2; + -webkit-box-orient: vertical +} +.row .price{ +color:#EF4F20; +font-weight: bold; +font-size:34rpx +} +.row.last{ + justify-content: space-between; +} +.row .left{ + display: flex; +} +.row .right{ + display: flex; +} +.righticon{ + width:24rpx; + height:48rpx; +} +.right .detail{ + margin-right: 10rpx; + color: #666666; +} +.agebar{ + display: inline-block; + width:2rpx; + background: #333; + height:26rpx; + margin: 0rpx 10rpx 0; +} \ No newline at end of file diff --git a/healthyService/pages/healthyOrderDetail/healthyOrderDetail.js b/healthyService/pages/healthyOrderDetail/healthyOrderDetail.js new file mode 100644 index 0000000..7e791f6 --- /dev/null +++ b/healthyService/pages/healthyOrderDetail/healthyOrderDetail.js @@ -0,0 +1,643 @@ +// pages/medinceOrderDetail/medinceOrderDetail.js +const app = getApp() +import {detectionDetail,bindCheck,cancelCheckPay,delCheckOrder,cancelCheckOrder,checkInquiry} from "../../../api/checkSugar.js" +import {cancelPay} from "../../../api/consultOrder" +import {cancelOrder} from "../../../api/consultOrder" +import {fllowDoctor,notfllowDoctor} from "../../../api/consultExpert" +import {throttle} from "../../../utils/util" +import {getSign} from "../../../api/common" +import Dialog from '@vant/weapp/dialog/dialog'; +Page({ + + /** + * 页面的初始数据 + */ + data: { + time: 30 * 60 * 60 * 1000, + showCover:true, + isWait:true, + cancelBtn:false, + order:{}, + showError:false, + pay_money:0, + fileList:[], + checkSatus:1, + showCheckDialog:false, + checkmessage:'', + detection_bar_code:'', + detection_code:'', + order_detection_id:'', + showDialog:false, + message:'', + fromType:'', + user_doctor:{}, + order:{}, + patient_family_data:'', + img_host:'https://oss.prod.applets.igandanyiyuan.com/applet/patient/static' + }, + onClickHide() { + this.setData({ showCover: false }); + wx.setStorageSync("showCover",true); + }, + closeError(){ + this.setData({ showError: false }); + }, + 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: 4 + }).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>=3){ + wx.showToast({ + title: '检测管照片最多上传3张', + icon:"none" + }) + return false + }; + let THIS = this; + wx.chooseMedia({ + count: 3-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" + }) + wx.hideLoading(); + }); + + } + }) + }, + + goBack(){ + let {fromType}=this.data; + if(app.globalData.origion==1){ + wx.reLaunch({ + url: '/pages/index/index', + }) + }else if(app.globalData.origion==2){ + wx.reLaunch({ + url: '/pages/index/index', + }) + }else{ + if(fromType){ + let url=decodeURIComponent(fromType); + let goUrl=''; + if(url.indexOf('?')!=-1){ + goUrl='/'+url+"&fromType="+url; + }else{ + goUrl='/'+url+"?fromType="+url; + } + //处理聊天收到消息不及时; + if(url.indexOf("TUIService/pages/index")!=-1){ + app.method.navigateTo({ + url:goUrl + }) + }else{ + wx.redirectTo({ + url: goUrl + }) + } + + }else{ + wx.navigateBack({ + delta: 1, + fail:function(){ + wx.reLaunch({ + url: '/pages/index/index', + }) + } + }) + } + } + + }, + bluript(event){ + const {value}=event.detail; + const reg=/^SDB[A-Z](?:2[3-9]|2[0-2])[SP](?:1688[6-9]|1689\d|169\d\d|1[7-9]\d\d\d|[2-9][0-9]{4}|99999)$/; + let detection_status=this.data.order.detection_status; + if(detection_status!=3){ + if(reg.test(value)){ + this.setData({ + showError:false + }) + }else{ + this.setData({ + showError:true + }) + } + } + + + }, + chnageIpt(event){ + const {value}=event.detail; + this.setData({ + detection_bar_code:value + }) + }, + handleCancelInquiryPay(){ + let {order_inquiry_id} = this.data; + cancelPay(order_inquiry_id).then(data=>{ + wx.showToast({ + title: '取消支付成功', + icon:'none' + }) + this.handleCheckInquiry(); + }) + }, + handelCancelInquiryOrder(){ + let id=this.data.order_inquiry_id; + cancelOrder(id).then(data=>{ + wx.showToast({ + title: '订单取消成功', + icon:"none" + }); + this.handleCheckInquiry(); + // this.goChat() + }) + }, + handleCheckInquiry:throttle(function(){ + let id=this.data.order.order_detection_id; + checkInquiry(id).then(data=>{ + console.log(data); + if(data.status==1){ + this.setData({ + order_inquiry_id:data.data, + }) + this.goChat(); + }else if(data.status==2){ + this.setData({ + showCheckDialog:true, + order_inquiry_id:data.data, + checkSatus:2, + checkmessage:'当前医生有您待支付的订单,点击“继续”将为您取消订单直接进入报告解读服务。' + }) + }else if(data.status==3){ + this.setData({ + checkSatus:3, + showCheckDialog:true, + order_inquiry_id:data.data, + checkmessage:'当前医生有您待接诊的订单,点击“继续”将为您取消订单直接进入报告解读服务。' + }) + }else if(data.status==4){ + this.setData({ + showCheckDialog:true, + checkSatus:4, + order_inquiry_id:data.data, + checkmessage:'当前医生有您接诊中的订单,点击“继续”将为您直接进入报告解读服务。' + }) + } + }) + },1000), + goReport:throttle(function(){ + wx.showLoading({ + mask:true, + title: '正在打开文件...', + }); + let url=this.data.order.detection_result_pdf; + const randfile = new Date().getTime() + '检测报告'; + const newPath = `${wx.env.USER_DATA_PATH}/${randfile}`; + wx.downloadFile({ + // 示例 url,并非真实存在 + url:url, + filePath: newPath, + success: function (res) { + //const filePath = res.tempFilePath + wx.openDocument({ + fileType:"pdf", + showMenu:true, + filePath: newPath, + success: function (res) { + wx.hideLoading() + console.log('打开文档成功') + }, + fail:function(error){ + wx.hideLoading() + wx.showToast({ + title:res, + icon:"none" + }) + } + }) + }, + fail:function(error){ + wx.showToast({ + title:error, + icon:"none" + }) + } + + }) + // app.method.navigateTo({ + // url:"/pages/linkPage/linkPage?url="+encodeURIComponent(url) + // }) + }), + handleBindCheck:throttle(function(){ + let id=this.data.order.order_detection_id; + let detection_status=this.data.order.detection_status; + if(detection_status==3){ + wx.showToast({ + title: '您已提交,请等待结果', + icon:"none" + }) + return false + } + const {detection_bar_code,fileList}=this.data; + const reg=/^SDB[A-Z](?:2[3-9]|2[0-2])[SP](?:1688[6-9]|1689\d|169\d\d|1[7-9]\d\d\d|[2-9][0-9]{4}|99999)$/; + if(!reg.test(detection_bar_code)){ + wx.showToast({ + title: '检测码格式不正确', + icon:"none" + }) + this.setData({ + showError:true + }) + return false + } + bindCheck(id,{ + detection_bar_code, + detection_pic:fileList + }).then(data=>{ + this.handleDetectionDetail(); + wx.showToast({ + title: '提交成功', + icon:"none" + }) + }) + }), + goChat:throttle(function(){ + let {user_id}=this.data.user_doctor; + let order_inquiry_id=this.data.order.order_inquiry_id; + let anther_order_inquiry_id=this.data.order_inquiry_id; + let id=''; + if(!order_inquiry_id && !anther_order_inquiry_id){ + wx.showToast({ + title: '服务器错误', + icon:'none' + }); + return false + }; + if(order_inquiry_id){ + id=order_inquiry_id + }else if(anther_order_inquiry_id){ + id=anther_order_inquiry_id + } + app.method.navigateTo({ + url: '/TUIService/pages/index?currentConversationID=' + user_id + "&order_inquiry_id=" + id+ "&inquiry_type=5" + }) + }), + orderMsg(){ + wx.requestSubscribeMessage({ + tmplIds: ['82rKSdbKkbFK_tHmIMnHyfyRJq9ujvmAsTjRHdxmCdE'], + success (res) { + Dialog.confirm({ + title: '温馨提示', + confirmButtonOpenType:'contact', + message: '立即联系客服', + }).then(() => { + // on confirm + }).catch(()=>{ + + }) + } + }) + }, + goSugar:throttle(function(){ + app.method.navigateTo({ + url: '/sugarCheck/pages/sugarDetail/sugarDetail', + }) + }), + goExpert:throttle(function(){ + let id=this.data.user_doctor.doctor_id; + app.method.navigateTo({ + url: '/patient/pages/expertDetail/expertDetail?doctor_id='+id, + }) + }), + handleDetectionDetail(flag=false){ + let id =this.data.order_detection_id; + detectionDetail(id).then(data=>{ + if(flag){ + let pages = getCurrentPages(); + let prevPage = pages[pages.length - 2]; //上一页 + prevPage.setData({ + changeStatus:data.detection_status, + changeId:id + }); + }; + let pay_money=(Number(data.amount_total)-Number(data.coupon_amount_total)).toFixed(2); + this.setData({ + order:data, + detection_bar_code:data.detection_bar_code, + user_doctor:data.user_doctor, + pay_money + }); + + + if(data.detection_pic && data.detection_pic.length>0){ + this.setData({ + fileList:data.detection_pic + }) + } + }) +}, +goScan:throttle(function(){ + let that=this; + wx.scanCode({ + onlyFromCamera: true, + scanType:['qrCode','barCode','datamatrix','pdf417'], + success (res) { + const reg=/^SDB[A-Z](?:2[3-9]|2[0-2])[SP](?:1688[6-9]|1689\d|169\d\d|1[7-9]\d\d\d|[2-9][0-9]{4}|99999)$/; + console.log(res.result); + if(reg.test(res.result)){ + that.setData({ + detection_bar_code:res.result, + showCode:true, + showError:false + }) + }else{ + that.setData({ + showDialog:true, + cancelBtn:false, + message:'无法识别,请手动输入检测码' + }) + } + + } + }) +}), +confirmCancelOrder(){ + this.setData({ + showDialog:true, + cancelBtn:true, + message:"是否确定要取消检测?" + }) +}, +confirmDelOrder(){ + this.setData({ + showDialog:true, + cancelBtn:true, + message:"您确定是要删除订单记录么?" + }) +}, +confirmCancelPay(){ + this.setData({ + showDialog:true, + cancelBtn:true, + message:"您确定取消支付么?" + }) + }, +confirm:throttle(function(event){ + if(event.detail && this.data.message=="您确定是要删除订单记录么?"){ + this.handelDelProduct(); + }else if(event.detail && this.data.message=="您确定取消支付么?"){ + this.handelCancelPayProduct(); + }else if(event.detail && this.data.message=="是否确定要取消检测?"){ + this.handelCancelCheckOrder(); + } +}), +//未支付2 //待接诊需要重新请求检测订单3 +confirmCheck:throttle(function(){ + if(this.data.checkSatus==2){ + this.handleCancelInquiryPay(); + }else if(this.data.checkSatus==3){ + this.handelCancelInquiryOrder(); + }else if(this.data.checkSatus==4){ + this.goChat(); + } +}), +handelCancelCheckOrder(flag=true){ + let id =this.data.order.order_detection_id; + cancelCheckOrder(id).then(data=>{ + wx.showToast({ + title: '取消成功', + icon:"none" + }) + if(!flag){ + this.goChat(); + } + this.handleDetectionDetail(); + }) +}, +handelCancelPayProduct(flag=true){ + let id =this.data.order.order_detection_id; + cancelCheckPay(id).then(data=>{ + wx.showToast({ + title: '取消支付成功', + icon:"none" + }) + if(!flag){ + this.handleCheckInquiry(); + } + this.handleDetectionDetail(); + }) +}, +copy(event){ + let text=event.target.dataset.text; + wx.setClipboardData({ + data:text + }) +}, +goPay:throttle(function(){ + let {order_detection_id,detection_no}=this.data.order; + app.method.navigateTo({ + url: '/patient/pages/payOrder/payOrder?inquiry_no='+ detection_no +"&order_detection_id="+order_detection_id+"&order_type=3&fromType="+encodeURIComponent('/sugarCheck/pages/checkOrder/checkOrder') + }) +}), +handelDelProduct(){ + let id =this.data.order.order_detection_id; + delCheckOrder(id).then(data=>{ + let pages = getCurrentPages(); + //获取所需页面 + let prevPage = pages[pages.length - 2]; //上一页 + prevPage.setData({ + delId: id//需要传过去的数据 + }); + wx.navigateBack({ + delta: 1, + }) + wx.showToast({ + title: '订单删除成功', + icon:"none" + }); + + }) +}, +goPrescriptionDetail:throttle(function(event){ + let id=event.currentTarget.dataset.id; + app.method.navigateTo({ + url: '/patient/pages/prescriptDetail/prescriptDetail?order_prescription_id='+id, + }) +}), +handelfllowDoctor(){ + let id=this.data.user_doctor.doctor_id + fllowDoctor(id).then(data=>{ + this.setData({ + "user_doctor.follow":true + }) + wx.showToast({ + title: '关注成功', + icon:"none" + }) + }) +}, +handenotfllowDoctor(){ + let id=this.data.user_doctor.doctor_id; + notfllowDoctor(id).then(data=>{ + this.setData({ + "user_doctor.follow":false + }) + wx.showToast({ + title: '已取消关注', + icon:"none" + }) + }) +}, +toggleFllow(){ + if(this.data.order.user_doctor.follow){ + this.handenotfllowDoctor() + }else{ + this.handelfllowDoctor() + } +}, + /** + * 生命周期函数--监听页面加载 + */ + onLoad(options) { + const cover=wx.getStorageSync('showCover'); + if(cover){ + this.setData({ + showCover:false + }) + } + if(options.fromType){ + this.setData({ + fromType:options.fromType + }) + } + let order_detection_id=options.order_detection_id; + console.log(order_detection_id) + if(order_detection_id){ + this.setData({ + order_detection_id + }); + this.handleDetectionDetail(); + } + }, + + /** + * 生命周期函数--监听页面初次渲染完成 + */ + onReady() { + + }, + + /** + * 生命周期函数--监听页面显示 + */ + onShow() { + this.setData({ + img_host:app.hostConfig().imghost + }); + }, + + /** + * 生命周期函数--监听页面隐藏 + */ + onHide() { + + }, + + /** + * 生命周期函数--监听页面卸载 + */ + onUnload() { + + }, + + /** + * 页面相关事件处理函数--监听用户下拉动作 + */ + onPullDownRefresh() { + + }, + + /** + * 页面上拉触底事件的处理函数 + */ + onReachBottom() { + + }, + + /** + * 用户点击右上角分享 + */ + +}) \ No newline at end of file diff --git a/healthyService/pages/healthyOrderDetail/healthyOrderDetail.json b/healthyService/pages/healthyOrderDetail/healthyOrderDetail.json new file mode 100644 index 0000000..60d4be6 --- /dev/null +++ b/healthyService/pages/healthyOrderDetail/healthyOrderDetail.json @@ -0,0 +1,12 @@ +{ + "usingComponents": { + "van-count-down": "@vant/weapp/count-down/index", + "dialog":"../../../components/dialog/dialog", + "van-dialog": "@vant/weapp/dialog/index", + "van-icon": "@vant/weapp/icon/index", + "van-overlay": "@vant/weapp/overlay/index" + }, + "navigationStyle":"custom", + "disableScroll":true, + "navigationBarTitleText": "肝胆相照互联网医院" +} \ No newline at end of file diff --git a/healthyService/pages/healthyOrderDetail/healthyOrderDetail.wxml b/healthyService/pages/healthyOrderDetail/healthyOrderDetail.wxml new file mode 100644 index 0000000..0297d39 --- /dev/null +++ b/healthyService/pages/healthyOrderDetail/healthyOrderDetail.wxml @@ -0,0 +1,258 @@ + + + + + 订单详情 + + + + + + + 就诊人信息 + + + {{order.patient_name}}(未知|{{order.patient_age}}岁) + + + + + + 绑定检测码 + + + + + + + 检测码有误,请重新输入 + + + + + + + + + + + + + + + + + 上传 + + + + + 预计检测完成时间 + {{order.detection_success_time}} + + + + + 订单信息 + + + + + 待支付 + + + + + 待绑定 + 检测中 + 检测完成 + 取消检测 + 支付超时 + + + + 订单编号 + + + + {{order.detection_no}} + + | + + 复制 + + + + + 下单时间 + + + {{order.created_at}} + + + + 问诊类型 + + 糖组检测 + + + + 订单金额 + + + ¥{{order.amount_total}} + + + + + + + ¥{{order.coupon_amount_total}} + + + + + 支付金额 + + + + ¥{{pay_money}} + + + + + + + + + 主动取消 + 客服取消 + 支付超时 + + + + + 退款进度 + + + + 无退款 + + + 申请退款 + + + 退款中 + + + 退款成功 + + + 拒绝退款 + + + 退款关闭 + + + + + + 联系客服 + + + 取消检测 + + + 删除订单 + + + + + + + + + + + + {{user_doctor.user_name}} + {{user_doctor.hospital_level_name}} + 可处方 + + + + + {{user_doctor.doctor_title}} + 主任中医师 + {{user_doctor.department_custom_name}} + + {{user_doctor.hospital_name}} + + + +   关注 + + + +   关注 + + + + + + + + + 联系客服 + + + + + + + + 取消支付 + + 立即支付 + + + + + + 提交 + + + 查看报告 + + 报告解读 + + + + + 重新检测 + + + + + + + + + + 知道了 + + + + + + \ No newline at end of file diff --git a/healthyService/pages/healthyOrderDetail/healthyOrderDetail.wxss b/healthyService/pages/healthyOrderDetail/healthyOrderDetail.wxss new file mode 100644 index 0000000..bf1b094 --- /dev/null +++ b/healthyService/pages/healthyOrderDetail/healthyOrderDetail.wxss @@ -0,0 +1,887 @@ +/* pages/medinceOrderDetail/medinceOrderDetail.wxss */ +/**app.wxss**/ +.container { + padding-top: 135px; + padding-bottom: 10rpx; + /* top:280rpx; */ + /* position: absolute; */ + width:100%; + /* overflow-y: scroll; */ + background: #F2F2F2; + } + input{ + font-family: -apple-system, BlinkMacSystemFont, 'Helvetica Neue', Helvetica, + } + page{ + position: relative; + width:100%; + height:100%; + font-family: -apple-system, BlinkMacSystemFont, 'Helvetica Neue', Helvetica, + Segoe UI, Arial, Roboto, 'PingFang SC', 'miui', 'Hiragino Sans GB', 'Microsoft Yahei', + sans-serif; + } + .page{ + width:100vw; + height:100vh; + background: #f2f2f2; + } + .contain{padding: 0 30rpx 0rpx;height: 100%;overflow: hidden;position: relative;} + ::-webkit-scrollbar { + display: none; + width: 0; + height: 0; + color: transparent; + } + .van-picker__confirm { + color:#3CC7C0!important; + font-size: 32rpx!important; + } + .van-picker__title{ + font-weight: 600!important; + color: rgba(0,0,0,0.9)!important; + font-size: 32rpx!important; + } + .van-picker__cancel{ + color: rgba(0,0,0,0.6)!important; + font-size: 32rpx!important; + } + .nonedata{ + width:100%; + color:#666; + min-height: 320rpx; + font-size: 28rpx; + display: flex; + justify-content: center; + align-items: center; + } + .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; + color: #000000; + bottom: 0; + left: 200rpx; + display: flex; + justify-content: center; + align-items: center; + } + .droptitle.active{ + color:#3CC7C0; + } + .slotmsg{ + -webkit-overflow-scrolling: touch; + font-size: 28rpx; + line-height:40rpx; + max-height:60vh; + overflow-y: auto; + padding:48rpx; + text-align: center; + } + .van-dropdown-item__title{ + width:100%!important; + flex:1; + text-align: center; + } + .van-dropdown-item__icon{ + z-index:2; + position: absolute!important; + + right:25rpx; + } + .van-cell__value{ + flex:none!important; + z-index:1; + } + .onlinebox .icon{ + top:60rpx; + left:50%; + position: absolute; + margin-left: -48rpx; + width:96rpx; + height:34rpx; + border-radius: 0; + } +.page{ + position: relative; + display: flex; + flex-direction: column; + margin-bottom:0rpx; +} +.outwraper{ + flex:1; + overflow-y: scroll; + -webkit-overflow-scrolling: touch; + padding-bottom: 200rpx; +} +.outwraper.active{ + padding-bottom: 220rpx; +} +.add { + width: 100%; + display: flex; + justify-content: center; + align-items: center; + height: 120rpx; + background: #FFFFFF; + font-weight: 600; + color: #ED9C00; + font-size: 32rpx; +} +.addicon{ + width: 40rpx; + height:40rpx; + flex-shrink: 0; +} +.addressbox { + margin-top:172rpx; + align-items: center; + display: flex; + justify-content: space-between; + padding: 32rpx 32rpx; + background-color: #fff; +} + +.addressbox .left { + display: flex; + align-items: center; +} + +.addressbox .icon { + width: 40rpx; + flex-shrink: 0; + height: 47rpx; + +} + +.addressbox .info { + margin-left: 30rpx; +} + +.addressbox .ricon { + width: 24rpx; + height: 48rpx; +} + +.info .name { + font-size: 28rpx; + font-weight: 600; + color: #333333 +} + +.info .address { + margin-top: 10rpx; + color: #333333; + font-size: 28rpx; +} +.row { + align-items: center; + padding: 0 32rpx; + display: flex; + line-height: 52rpx +} + +.row.first { + margin-top: 34rpx; +} + +.rowbox .row .name { + white-space: nowrap; + font-size: 28rpx; + color: #333; + font-weight: 600; + display: flex; + width:114rpx; + align-items: baseline; + justify-content: space-between; +} +.row .dot{ + font-weight: 600; + display: flex; + align-items: baseline; +} +.row .desc { + align-items: baseline; + font-size: 28rpx; + color: #333; +} + +.rowdesc { + align-items: flex-start; +} + +.rowdesc .desc { + text-overflow: -o-ellipsis-lastline; + overflow: hidden; + text-overflow: ellipsis; + display: -webkit-box; + -webkit-line-clamp: 2; + line-clamp: 2; + -webkit-box-orient: vertical +} + +.row .price { + color: #EF4F20; + font-weight: bold; + font-size: 34rpx +} + +.row.last { + justify-content: space-between; +} + +.copy { + + height: 40rpx; + color: #000; + font-size: 24rpx; + display: flex; + margin-left: 20rpx; + align-items: center; + justify-content: center; + border-radius: 6rpx; +} +.row .left { + display: flex; +} + +.row .right { + display: flex; +} + +.titlebox .name { + color: #000; + font-size: 34rpx; +} +.rowbox{ + margin-top: 20rpx; + background-color: #fff; + padding-bottom: 30rpx; +} +.titlebox { + padding: 0 32rpx; + height: 112rpx; + border-bottom: 1rpx solid #E3E4E5; + display: flex; + justify-content: space-between; + align-items: center; +} +.titlebox .status{ + font-size: 28rpx +} +.waitpay { + text-align: right; + color: #EF4F20 +} + +.headicon { + width: 80rpx; + height: 80rpx; + border-radius: 50%; +} + +.van-count-down { + margin-top: 5rpx; + color: #EF4F20 !important; +} +.infobox { + margin-top: 20rpx; + background:#fff; + +} +.infobox .status{ + font-size: 28rpx; + font-weight: 400; + color: #333333; +} +.infobox .status.wait{ + color: #EF4F20; +} +.infobox .status.timeout{ + color: #EF4F20; +} +.infobox .title { + padding: 0 32rpx; + background-color: #fff; + font-size: 34rpx; + height: 112rpx; + align-items: center; + display: flex; + justify-content: space-between; + border-bottom: 1rpx solid #E3E4E5; +} + +.imgbox { + border-radius:8rpx; + border:1rpx solid #ccc; + width: 200rpx; + height: 200rpx; + display: flex; + align-items: center; + justify-content: center; + position: relative; +} + +.yaoimg { + width: 120rpx; + height: 128rpx; +} + +.imgbox .desc { + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + position: absolute; + top: 50%; + font-size: 22rpx; + font-weight: 400; + color: #666666; + line-height: 30rpx; + transform: translateY(-50%); +} + +.imgbox .desc .tip { + text-align: center; +} + +.medincebox .cell { + padding: 30rpx 32rpx; + display: flex; + align-items: center; + border-bottom: 1rpx solid #E3E4E5; +} +.medincebox .cell:nth-last-child(2){ + border-bottom:none; +} +.rightinfo { + margin-left: 30rpx; + flex: 1; + + display: flex; + flex-direction: column; + justify-content: center; +} + +.medincebox .cell .name { + word-break: break-all; + font-size: 32rpx; + font-weight: bold; + color: #333; + text-overflow: ellipsis; + display: -webkit-box; + -webkit-box-orient: vertical; + -webkit-line-clamp: 2; + overflow: hidden; +} +.row.beizhu{ + align-items: flex-start; +} +.rightinfo .own { + margin-top: 47rpx; + display: flex; + justify-content: space-between; + align-items: center; + font-size: 28rpx; + font-weight: 400; + color: #333333; +} +.btnbox{ + display: flex; + padding:0 32rpx; + font-size: 30rpx; + padding-bottom: 30rpx; + justify-content: flex-end; +} +.btnbox .btn{ + display: flex; + justify-content: space-between; + align-items: center; + padding: 0 20rpx; + height:58rpx; + background: #FFFFFF; + border-radius: 30rpx; + margin-left: 20px; + +} +.btnbox .orderDetail{ + background: #3CC7C0; + color:#fff; + border: 1rpx solid #3CC7C0; +} +.personinfo{ + margin-top: 20rpx; + background: #fff; +} +.personinfobox { + padding: 30rpx 32rpx 40rpx; + background: #fff; + margin-top: 20rpx; + margin-bottom:10rpx; +} +.personinfobox .title { + background-color: #fff; + font-size: 32rpx; + height: 112rpx; + align-items: center; + display: flex; + justify-content: space-between; + border-bottom: 1rpx solid #E3E4E5; +} +.personinfobox .namebox .head { + width: 80rpx; + height:80rpx; + border-radius: 50%; +} + +.personinfobox .namebox .guanzhu image { + width: 28rpx; + height: 26rpx; +} + + +.personinfobox .namewraper { + flex:1; + display: flex; + + justify-content: space-between; + flex-direction: column; + margin-left: 20rpx; +} +.personinfobox .type { + height: 32rpx; + display: flex; + margin-bottom: 6rpx; + line-height: 32rpx; + white-space: nowrap; + align-items: center; + margin-left: 18rpx; + padding: 0rpx 6rpx; + background: #ED9C00; + border-radius: 4rpx; + color: #FFFFFF; + font-size: 24rpx; +} + +.personinfobox .namebox .row { + display: flex; + padding:0; + align-items: flex-end; + +} + +.personinfobox .namebox { + display: flex; + align-items:stretch; + + justify-content: space-between; +} + +.personinfobox .namebox .name { + display: inline-block; + overflow: hidden; + max-width:400rpx; + text-overflow: ellipsis; + white-space: nowrap; + font-weight: 600; + color: #333333; + font-size: 34rpx; +} + +.personinfobox .position { + font-size: 30rpx; + white-space: normal; + word-break: break-all; +} +.doctor_title{ + margin-right: 10rpx; +} +.personinfobox .namebox .row{ + line-height: 40rpx; + align-items: flex-end; +} +.personinfobox .hospital { + margin-top: 12rpx; + color: #333333; + font-size: 28rpx; + white-space: normal; + word-break: break-all; +} + + +.personinfobox .namebox .position { + font-weight: normal; + white-space: nowrap; + margin-left: 15rpx; + font-size: 30rpx; +} +.personinfobox .goodjob { + color: #666666; + margin-top: 38rpx; + line-height: 42rpx; + margin-left: 100rpx; + font-size: 28rpx; + word-break: break-all; +} +.paybox{ + bottom:0px; + height: 186rpx; + background: #FFFFFF; + position: absolute; + display: flex; + z-index:1; + width:100%; +} +.submitbtn{ + width:100%; + margin:16px 32rpx 0; + height: 94rpx; +background: #3CC7C0; +border-radius: 47rpx; +display: flex; +justify-content: center; +align-items: center; +font-size: 36rpx; +color: #FFFFFF; +} +.submitbtn.active{ + color: #000000; + background: rgba(0,0,0,0.1); +} +.paybox .left{ + height: 94rpx; +border-radius: 47rpx; +font-size: 36rpx; +color: rgba(0,0,0,0.85); +border: 1rpx solid rgba(0,0,0,0.65); + margin-left: 32rpx; + flex:1; + font-size: 28rpx; +margin-top: 16rpx; + display: flex; + align-items: center; + justify-content: center; + +} +.orderrow{ + display: flex; + margin:10rpx 32rpx 0; + justify-content: flex-end; +} +.freetalk{ + position: absolute; + width:403rpx; + height:79rpx; + top: -53rpx; + left:25rpx; +} +.paybox .right{ + position: relative; + margin-right: 32rpx; + margin-top: 16rpx; + color: #FFFFFF; + display: flex; + margin-left: 24rpx; + align-items: center; + justify-content: center; + background: #3CC7C0; + height: 94rpx; + font-size: 36rpx; +color: #FFFFFF; + background: #3CC7C0; + border-radius: 47rpx; + flex:2; +} +.express{ +width: 158rpx; +height: 60rpx; +display: flex; +justify-content: center; +align-items: center; +background: #F8F8F8; +font-size: 26rpx; +font-weight: 400; +color: #353535; +border-radius: 6rpx; +border: 1rpx solid rgba(5,5,5,0.1); +} +.namenum{ + font-size: 28rpx; +font-weight: 400; +color: #333333; +} +.row.wuliu{ + margin-top: 20rpx; + align-items: flex-start; +} +.row.wuliu .desc{ + margin-left: 20rpx; +} +.desc .dizhi{ + font-size: 28rpx; +font-weight: 400; +color: #333333; +line-height: 28rpx; +} +.wuliucar{ + width:40rpx; + height:33rpx; + flex-shrink: 0; +} +.row.wuliu .date{ + font-size: 24rpx; +font-weight: 400; +color: #666666; +} +.guanzhu { + flex-shrink: 0; + display: flex; + white-space: nowrap; + color: #3CC7C0; + font-size: 30rpx; + font-weight: 600; + justify-content: center; + align-items: center; + font-size: 24rpx; + +} +.namebox .guanzhu image { + width: 35rpx; + height: 32rpx; +} +.patientbox{ + margin-top: 172rpx; + width:100%; + box-sizing: border-box; + padding:0 32rpx; + display: flex; + align-items: center; + justify-content: space-between; + height: 109rpx; +background: #FFFFFF; +} +.patient_name{ + font-size: 32rpx; +font-weight: 400; +color: rgba(0,0,0,0.85) +} +.patientbox .rightcon{ + font-size: 28rpx; + font-weight: 400; + color: rgba(0,0,0,0.65) +} +.namebox{ + display: flex; +} +.rowbox .row{ + justify-content: space-between; +} +.bar{ + margin-left: 30rpx; + color: rgba(0,0,0,0.45); + height: 40rpx; + margin-bottom: 5rpx; + display: flex; + align-items: center; +} +.rightbox{ + display: flex; + align-items: center; +} +.bindbox{ + overflow: hidden; + padding:0 32rpx 10rpx; + margin:20rpx 0rpx; + background: #FFFFFF; +} +.errorbox{ + margin-top: 10rpx; + display: flex; + height: 80rpx; +background: #FFF1F0; +border-radius: 8rpx; +padding:0 20rpx; + align-items: center; + justify-content: space-between; +} +.tiptitle{ + height: 80rpx; + align-items: center; + display: flex; + justify-content: space-between; + margin-top: 10rpx; +} +.tipleft{ + font-size: 32rpx; + color: rgba(0,0,0,0.85); +} +.tipright{ + color:#4096FF; + font-size: 28rpx; +} +.iptbox{ + margin-top: 24rpx; + width:100%; + height: 78rpx; +border-radius: 6rpx; +border: 2rpx solid #3CC7C0; +display: flex; +align-items: center; +} +.iptbox.active{ + border: 2rpx solid #FF4D4F; +} +.mybar{ + height:38rpx; + margin:0 30rpx; + width:2rpx; + background:#3CC7C0 ; +} +.ipt{ + margin-left: 20rpx; + flex:1; +} +.scan{ + margin-right: 20rpx; + width:40rpx; + height:40rpx; +} +.uploadbox{ + + margin:24rpx 0rpx 0; + display: flex; + flex-wrap: wrap ; +} +.uploadbox .close{ + z-index:9; + top:5rpx; + right:5rpx; + position: absolute; + width:30rpx; + height:30rpx; +} +.uploadbox .upload{ + position: relative; + object-fit: cover; + display: flex; + flex-direction: column; + margin: 5px 19rpx 5px 0; +} +.uploadbox .upload:nth-child(4n){ + margin-right: 0; +} +.van-icon-plus{ + color:#333; + font-size: 80rpx!important; +} +.upload{ + width: 148rpx; + height:148rpx; + display: flex; + justify-content:center ; + align-items: center; + background: #F2F2F2; + border-radius: 4rpx +} +.uploadbox view:first-child{ + margin-left: 0!important; +} +.upload .text{ + font-size: 28rpx; +} + +.errorleft{ + display: flex; + align-items: center; +} +.checkerror{ + margin-right: 10rpx; + width:40rpx; + height:40rpx; +} +.checkclose{ + width:32rpx; + height:32rpx; +} +.wrapper{ + width:100%; + display: flex; + align-items: center; + flex-direction: column; + justify-content: center; + margin:285rpx auto; +} +.timg1{ + width:694rpx; +} +.timg2{ + width:506rpx; +} +.button{ + display: flex; + align-items: center; + justify-content: center; + width: 224rpx; + font-size: 32rpx; +height: 83rpx; +font-weight: 500; +margin-top: 72rpx; +color: #FFFFFF; +border-radius: 47rpx; +border: 1rpx solid #FFFFFF; +} +.contactbox{ + width: 320rpx; + margin:20rpx auto 0rpx; +height: 72rpx; +border-radius: 39rpx; +border: 2rpx solid rgba(0,0,0,0.15); +align-items: center; +color: rgba(0,0,0,0.85); +font-size: 28rpx; +justify-content: center; + display: flex; +} +.kefu{ + width: 32rpx; + margin-right: 10rpx; + height: 32rpx; +} +.finish{ + margin-top: 20rpx; + display: flex; + justify-content: space-between; + margin-bottom: 20rpx; + align-items: center; +} +.finish .left{ + font-size: 32rpx; +font-weight: 400; +color: rgba(0,0,0,0.85); +} +.finish .right{ + font-size: 28rpx; +font-weight: 400; +color: rgba(0,0,0,0.45); +} \ No newline at end of file diff --git a/healthyService/pages/visitDetail/visitDetail.js b/healthyService/pages/visitDetail/visitDetail.js new file mode 100644 index 0000000..248b2d4 --- /dev/null +++ b/healthyService/pages/visitDetail/visitDetail.js @@ -0,0 +1,88 @@ +// healthyService/pages/healthyDetail/healthyDetail.js +import {throttle} from "../../../utils/util" +const app = getApp() +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 + }], + img_host:app.hostConfig().imghost + }, + choosePrice(e){ + + let {id}=e.currentTarget.dataset; + this.setData({ + active:id + }) + }, + /** + * 生命周期函数--监听页面加载 + */ + onLoad(options) { + + }, + + /** + * 生命周期函数--监听页面初次渲染完成 + */ + onReady() { + + }, + + /** + * 生命周期函数--监听页面显示 + */ + onShow() { + + }, + + /** + * 生命周期函数--监听页面隐藏 + */ + onHide() { + + }, + + /** + * 生命周期函数--监听页面卸载 + */ + onUnload() { + + }, + + /** + * 页面相关事件处理函数--监听用户下拉动作 + */ + onPullDownRefresh() { + + }, + + /** + * 页面上拉触底事件的处理函数 + */ + onReachBottom() { + + }, + + /** + * 用户点击右上角分享 + */ + onShareAppMessage() { + + } +}) \ No newline at end of file diff --git a/healthyService/pages/visitDetail/visitDetail.json b/healthyService/pages/visitDetail/visitDetail.json new file mode 100644 index 0000000..9ce900b --- /dev/null +++ b/healthyService/pages/visitDetail/visitDetail.json @@ -0,0 +1,6 @@ +{ + "usingComponents": { + "nav":"../../../components/nav/nav" + }, + "navigationStyle":"custom" +} \ No newline at end of file diff --git a/healthyService/pages/visitDetail/visitDetail.wxml b/healthyService/pages/visitDetail/visitDetail.wxml new file mode 100644 index 0000000..9e5cc77 --- /dev/null +++ b/healthyService/pages/visitDetail/visitDetail.wxml @@ -0,0 +1,70 @@ + + + + + + 请选择服务 + + {{item.price}} + + + + + + + + + + + 服务权益 + + + + 专属标识: + 享有特殊标识,获得医生全面照护 + + + + 图文问诊10次/不限次 + 服务期间,每次可持续48小时,图片、文字、语音形式,无限制的进行沟通 + + + + + 处方: + 一次问诊只可开具一个处方单 + + + + + + 退费: + 1、未使用随时退; + + + + + + 2、健康包开始使用后如需退款请联系客服,退款不收取任何服务费等额外费用,但不支持部分退款: + + + + 3、已接诊的订单,不再退款; + + + + 4、未消费服务包内容可退款,已消费服务的部分按原价计费,即:已发生的问诊按照问诊时互联网医院显示的价格结算。 + + + + + + + 立即购买:¥XX.XX + + \ No newline at end of file diff --git a/healthyService/pages/visitDetail/visitDetail.wxss b/healthyService/pages/visitDetail/visitDetail.wxss new file mode 100644 index 0000000..06e0568 --- /dev/null +++ b/healthyService/pages/visitDetail/visitDetail.wxss @@ -0,0 +1,125 @@ +page{ + height:100vh; + overflow: hidden; +} +/* healthyService/pages/healthyDetail/healthyDetail.wxss */ +.page{ + width:100%; + height:calc(100% - 172rpx); + margin-top: 172rpx; + display: flex; + overflow: hidden; + flex-direction: column; +} +.dcimg{ + width:100%; + position: absolute; + z-index:-1; +} +.detailbox{ + overflow: hidden; + /* position: relative; */ + z-index:1; + flex:1; + display: flex; + flex-direction: column; +margin-top:30rpx; +background: #FFFFFF; +border-radius: 32rpx 32rpx 0rpx 0rpx; +} +.con{ + flex:1; + padding: 0 30rpx; + overflow-y: scroll; + -webkit-overflow-scrolling: touch; +} +.quanyi{ + position: relative; + width:260rpx; + margin:0 auto; + height:70rpx; +} +.quanyiImg{ + width:260rpx; + height:70rpx; +} +.cell{ + margin-bottom: 30rpx; +} +.quanyiText{ + top:0; + position: absolute; + + font-size: 34rpx; + width:260rpx; + height:70rpx; + display: flex; + justify-content: center; + align-items: center; + color: #FFFFFF; +} + +.celltitle{ + font-weight: 550; + font-size: 30rpx; + color: #000000; +} +.celldesc{ + margin-top: 15rpx; + font-size: 30rpx; + color: #000000; +} +.buttonbox{ + width:100%; + height:200rpx; +} +.btn{ + height: 94rpx; + margin:35rpx 30rpx 0; + background: #3CC7C0; +border-radius: 47rpx; +font-size: 36rpx; +color: #FFFFFF; +display: flex; +align-items: center; +justify-content: center; +line-height: 50rpx; +text-align: center; +} +.red{ + color:red; +} +.servicebox{ + margin:0 30rpx; + padding:27rpx 30rpx; + background: #FFFFFF; +border-radius: 10rpx; +} +.servicebox .ser_title{ + font-weight: 550; + font-size: 30rpx; + color: #000000; +} +.row{ + display: flex; + justify-content: space-between; + flex-wrap: wrap; +} +.moneyType{ + margin-top: 30rpx; + width: 300rpx; +height: 120rpx; +display: flex; +justify-content: center; +align-items: center; +font-size: 34rpx; +color: #333333; +border: 1rpx solid #CCCCCC; +border-radius: 10rpx; + +} +.moneyType.on{ + background: #3CC7C0; + color:#fff; + border: 1rpx solid #3CC7C0; +} \ No newline at end of file diff --git a/healthyService/static/images/healthy_bg.jpg b/healthyService/static/images/healthy_bg.jpg new file mode 100644 index 0000000..f6a04ae Binary files /dev/null and b/healthyService/static/images/healthy_bg.jpg differ diff --git a/healthyService/static/images/healthy_button.png b/healthyService/static/images/healthy_button.png new file mode 100644 index 0000000..a1676b3 Binary files /dev/null and b/healthyService/static/images/healthy_button.png differ diff --git a/healthyService/static/images/quanyi.png b/healthyService/static/images/quanyi.png new file mode 100644 index 0000000..ae0646d Binary files /dev/null and b/healthyService/static/images/quanyi.png differ diff --git a/healthyService/static/images/up.png b/healthyService/static/images/up.png new file mode 100644 index 0000000..b45bac3 Binary files /dev/null and b/healthyService/static/images/up.png differ diff --git a/healthyService/static/images/xia.png b/healthyService/static/images/xia.png new file mode 100644 index 0000000..5d5fa49 Binary files /dev/null and b/healthyService/static/images/xia.png differ diff --git a/pages/my/my.js b/pages/my/my.js index a67e15c..6f880ff 100644 --- a/pages/my/my.js +++ b/pages/my/my.js @@ -73,6 +73,11 @@ Page({ url: '/sugarCheck/pages/checkOrder/checkOrder', }) }), + goHealthyOrder:throttle(function(){ + app.method.navigateTo({ + url: '/healthyService/pages/healthyOrder/healthyOrder', + }) + }), goMyPrescript:throttle(function(){ app.method.navigateTo({ url: '/patient/pages/myPrescript/myPrescript', diff --git a/pages/my/my.wxml b/pages/my/my.wxml index fff2047..2520a63 100644 --- a/pages/my/my.wxml +++ b/pages/my/my.wxml @@ -46,6 +46,14 @@ 检测 {{filter.formatNumber(patient_info.order_detection_count)}} + + + + + + 服务包 + {{filter.formatNumber(patient_info.order_detection_count)}} + diff --git a/pages/my/my.wxss b/pages/my/my.wxss index 21deea0..f05ac1d 100644 --- a/pages/my/my.wxss +++ b/pages/my/my.wxss @@ -121,7 +121,7 @@ color: rgba(0,0,0,0.65); margin-top: 30rpx; width: 100%; padding-bottom: 20rpx; - height: 256rpx; + overflow: hidden; background: #FFFFFF; border-radius: 10rpx; @@ -144,7 +144,7 @@ color: rgba(0,0,0,0.65); .iconbox { display: flex; margin: 30rpx 52rpx 0; - + flex-wrap: wrap; justify-content: space-between; } diff --git a/patient/pages/expertConsult/expertConsult.js b/patient/pages/expertConsult/expertConsult.js index aa8c748..00c31be 100644 --- a/patient/pages/expertConsult/expertConsult.js +++ b/patient/pages/expertConsult/expertConsult.js @@ -208,7 +208,7 @@ Page({ this.setData({ lock:false, page:1, - scrollHeight:300, + scrollHeight:150, doctorList:[] }); this.getDoctorList() diff --git a/patient/pages/expertDetail/expertDetail.wxml b/patient/pages/expertDetail/expertDetail.wxml index 1b0b8eb..a0d39ac 100644 --- a/patient/pages/expertDetail/expertDetail.wxml +++ b/patient/pages/expertDetail/expertDetail.wxml @@ -72,7 +72,8 @@ 医生服务 {{filter.formatYear(days)}}内服务过您 - + + @@ -104,6 +105,24 @@ 暂未开通 + + + + 随访包 + ¥150起 + + + + + + + 随访包 + ¥1260/次 + + @@ -118,6 +137,7 @@ {{videoPrice?'¥'+videoPrice+'/次':'暂未开通'}} + @@ -133,6 +153,7 @@ + diff --git a/patient/pages/expertDetail/expertDetail.wxss b/patient/pages/expertDetail/expertDetail.wxss index 37d648f..e26422e 100644 --- a/patient/pages/expertDetail/expertDetail.wxss +++ b/patient/pages/expertDetail/expertDetail.wxss @@ -517,17 +517,28 @@ justify-content:center; .wz_tabbox{ margin-top: 20rpx; } +.tabbox{ + margin-top: 16rpx; + overflow-x: scroll; + width:100%; +} .tabs{ - margin-top: 16rpx; + height:330rpx; display: flex; - justify-content: space-between; + width:1150rpx; + } .tabs .tab{ width: 214rpx; height: 300rpx; position: relative; + margin-right: 20rpx; box-shadow: 0rpx 8rpx 20rpx 2rpx rgba(0,0,0,0.04); } + +.tabs .tab:last-child{ + margin-right: 0; +} .tabbg{ top:0rpx; width: 100%; @@ -568,7 +579,7 @@ color: #999999; text-decoration: line-through; } .swiperbox{ - margin-top: 45rpx; + margin-top: 35rpx; } .swiper-item{ border-radius: 20rpx; diff --git a/patient/static/images.zip b/patient/static/images.zip new file mode 100644 index 0000000..eb92c0c Binary files /dev/null and b/patient/static/images.zip differ diff --git a/patient/static/images/healthy_disable.png b/patient/static/images/healthy_disable.png new file mode 100644 index 0000000..23bd027 Binary files /dev/null and b/patient/static/images/healthy_disable.png differ diff --git a/patient/static/images/healthy_on.png b/patient/static/images/healthy_on.png new file mode 100644 index 0000000..037c809 Binary files /dev/null and b/patient/static/images/healthy_on.png differ diff --git a/patient/static/images/suifang_disable.png b/patient/static/images/suifang_disable.png new file mode 100644 index 0000000..11708b9 Binary files /dev/null and b/patient/static/images/suifang_disable.png differ diff --git a/patient/static/images/suifang_on.png b/patient/static/images/suifang_on.png new file mode 100644 index 0000000..ccc6697 Binary files /dev/null and b/patient/static/images/suifang_on.png differ diff --git a/patient/static/images/服务包.png b/patient/static/images/服务包.png new file mode 100644 index 0000000..18b3333 Binary files /dev/null and b/patient/static/images/服务包.png differ