3.29更新

This commit is contained in:
zoujiandong 2024-03-29 17:25:24 +08:00
parent 1ba1db521f
commit 17c32e24bf
39 changed files with 3329 additions and 10 deletions

View File

@ -86,6 +86,18 @@
"pages/globalCall/globalCall" "pages/globalCall/globalCall"
], ],
"independent": false "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": { "preloadRule": {

View File

@ -25,9 +25,9 @@ Component({
this.triggerEvent('handleFocus',true) this.triggerEvent('handleFocus',true)
}, },
goInquirtForm(){ goInquirtForm(){
// wx.navigateTo({ wx.navigateTo({
// url: '/patient/pages/expertDetail/expertDetail?doctor_id=516904855116750848', url: '/healthyService/pages/healthyIntro/healthyIntro',
// }) })
} }
}, },

View File

@ -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() {
}
})

View File

@ -0,0 +1,6 @@
{
"usingComponents": {
"nav":"../../../components/nav/nav"
},
"navigationStyle":"custom"
}

View File

@ -0,0 +1,67 @@
<!--healthyService/pages/healthyDetail/healthyDetail.wxml-->
<nav navName="健康包服务详情"></nav>
<view class="page">
<image src="{{img_host+'/mybg.png'}}" mode="widthFix" class="dcimg" lazy-load/>
<view class="detailbox">
<view class="quanyi">
<image src="../../static/images/quanyi.png" class="quanyiImg"/>
<view class="quanyiText">服务权益</view>
</view>
<view class="con">
<view class="cell">
<view class="celltitle">专属标识:</view>
<view class="celldesc">享有特殊标识,获得医生全面照护</view>
</view>
<view class="cell">
<view class="celltitle">服务周期:</view>
<view class="celldesc">购买后从第一次消费起90天内</view>
</view>
<view class="cell">
<view class="celltitle">图文问诊2次/月</view>
<view class="celldesc">1、医生接诊后每次可持续48小时; </view>
<view class="celldesc">
2、图片、文字、语音形式无限制的进行沟通;
</view>
<view class="celldesc">3、超出的问诊需按原价的图文服务购买。</view>
</view>
<view class="cell">
<view class="celltitle">处方:</view>
<view class="celldesc">1、每次问诊只可产生一个处方单;
</view>
<view class="celldesc">
2、服务包含30盒肝爽颗粒(步长)每月和医生问诊时医生开具处方选择收货地址即可每次最多只发货10盒。
</view>
</view>
<view class="cell">
<view class="celltitle">优惠劵:</view>
<view class="celldesc">1、赠送全品类药品劵10元不可与其他优惠劵叠加使用
</view>
<view class="celldesc">
2、赠送肝胆相照商城优惠劵100元(仅限纽娃复合蛋白营养素固体饮料使用注册肝胆相照商城后2~3个工作日到账)。
</view>
</view>
<view class="cell">
<view class="celltitle">退费:</view>
<view class="celldesc">1、未使用随时退;
</view>
<view class="celldesc">
2、健康包开始使用后如需退款请联系客服退款不收取任何服务费等额外费用但不支持部分退款:
</view>
<view class="celldesc">
3、药品一经发出问诊一经接诊均概不退换;
</view>
<view class="celldesc">
4、未消费健康包内容可退款已消费服务的部分按原价计费即:已发生的问诊按照问诊时互联网医院显示的价格结算肝爽颗粒按照原价每盒42.8元结算。
</view>
</view>
</view>
</view>
<view class="buttonbox">
<view class="btn">立即购买¥XX.XX</view>
</view>
</view>

View File

@ -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;
}

View File

@ -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() {
}
})

View File

@ -0,0 +1,7 @@
{
"usingComponents": {
"nav":"../../../components/nav/nav",
"van-popup": "@vant/weapp/popup/index"
},
"navigationStyle":"custom"
}

View File

@ -0,0 +1,39 @@
<nav navName="肝胆相照"></nav>
<view class="page">
<image src="../../static/images/healthy_bg.jpg" class="bg" mode="widthFix"/>
<image src="../../static/images/healthy_button.png" class="btn" bind:tap="goDetail"/>
</view>
<van-popup class="mypop" id="mypop" show="{{true}}" position="bottom" overlay="{{blockHeight=='1130rpx'?true:false}}" duration="500" z-index="9999" custom-style=" border-radius:8rpx;transition: height 0.5s;height:{{blockHeight}}" bind:close="onClose">
<view class="popwrper" id="popwrper" bindtouchstart="touchstart" bindtouchend="touchend" style="height:{{blockHeight}}" >
<view class="top">
<image src="../../static/images/up.png" class="up {{blockHeight=='1130rpx'?'active':''}}"></image>
</view>
<view class="popname">
健康包服务医生
</view>
<!-- <view class="infobox" style="margin-top: 32rpx;margin-bottom: 0rpx;padding-bottom: 0;">
<view class="namebox" style="justify-content: flex-start;">
<image src="{{doctorDetail.avatar}}" class="head" wx:if="{{doctorDetail.avatar}}" mode="aspectFill"></image>
<image src="{{img_host+'/doctor_avatar.png'}}" class="head" wx:else></image>
<view class="namewraper">
<view class="row">
<view class="name">{{doctorDetail.user_name}}</view>
<view class="type" wx:if="{{doctorDetail.hospital.hospital_level_name!='未知' && doctorDetail.hospital.hospital_level_name}}">{{doctorDetail.hospital.hospital_level_name}}</view>
<view class="type" wx:if="{{doctorDetail.multi_point_status==1 && doctorDetail.multi_point_enable==1}}">可处方</view>
</view>
<view class="hospital"><text wx:if="{{doctorDetail.doctor_title_name}}" class="doctor_title">{{doctorDetail.doctor_title_name}}</text><text>{{doctorDetail.department_custom_name}}</text></view>
<view class="hospital">{{doctorDetail.hospital.hospital_name}}</view>
</view>
</view>
<view class="borderbox">
<view class="goodjob" style="margin-top: 30rpx;">
擅长:{{doctorDetail.be_good_at}}
</view>
</view>
</view> -->
</view>
</van-popup>

View File

@ -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;
}

View File

@ -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() {
},
/**
* 用户点击右上角分享
*/
})

View File

@ -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":"肝胆相照互联网医院"
}

View File

@ -0,0 +1,107 @@
<!--pages/consultOrder/consultOrder.wxml-->
<wxs src="../../../filters/filter.wxs" module="timeModule"></wxs>
<view class="page">
<view class="ui-navigatorbar" style="border-bottom: 1rpx solid #E3E4E5;background:#fff">
<image class="ui-navigatorbar-back" bindtap="goBack" src="{{img_host+'/back.png'}}" />
<view class="ui-title">检测订单</view>
</view>
<view class="dropdown">
<view class="bar"></view>
<van-dropdown-menu active-color="#3CC7C0">
<van-dropdown-item value="{{ detection_status }}" options="{{ option1 }}" title-class="droptitle {{selectstatus?'active':''}}" bind:change="changeStatus" />
<van-dropdown-item value="{{ family_id }}" title-class="droptitle {{selectfamily?'active':''}}" options="{{ option2 }}" bind:change="changeFamily" />
</van-dropdown-menu>
</view>
<scroll-view scroll-y="true" bindrefresherrefresh="handleRefresher" refresher-triggered="{{isTriggered}}" refresher-threshold="100" refresher-enabled="true" class="hasdata" bindscrolltolower="lower" wx:if="{{orderList.length>0}}">
<view class="databox">
<view class="datacell" bindtap="goDetail" wx:for="{{orderList}}" wx:key="order_detection_id" data-id="{{item.detection_no}}">
<view class="titlebox">
<view class="name" >糖组检测</view>
<view class="status" wx:if="{{item.detection_status==1 && item.detection_pay_status==1}}">
<view class="waitpay">待支付</view>
<view class="countdown">
<van-count-down time="{{timeModule.countDown(item.created_at)}}" />
</view>
</view>
<view class="status waitpay" wx:elif="{{item.detection_status==2}}">待绑定</view>
<view class="status waitpay" wx:elif="{{item.detection_status==3}}">检测中</view>
<view class="status" wx:elif="{{item.detection_status==4}}" style="color:#3CC7C0">已开具报告</view>
<view class="status" wx:elif="{{item.detection_status==5 && item.detection_pay_status!=5 }}">已取消</view>
<view class="status" wx:elif="{{item.detection_status==5 && item.detection_pay_status==5}}">
<view class="waitpay">支付超时</view>
</view>
</view>
<view class="infobox">
<image src="{{item.user_doctor.avatar}}" class="headicon" wx:if="{{item.user_doctor.avatar}}" mode="aspectFill"></image>
<image src="{{img_host+'/doctor_avatar.png'}}" class="headicon" wx:else></image>
<view class="namebox">
<view class="name" wx:if="{{item.user_doctor.user_name}}">{{item.user_doctor.user_name}} <text class="position">{{item.user_doctor.doctor_title}}</text></view>
<view class="name" wx:elif="{{item.detection_status==2}}">平台分配医生中</view>
<view class="name" wx:else>接诊医生</view>
<view class="hospital" wx:if="{{item.user_doctor.hospital_name}}">
{{item.user_doctor.hospital_name}}
</view>
</view>
</view>
<view class="row first">
<view class="name"><text>就</text><text>诊</text><text>人</text></view>
<view class="dot"></view>
<view class="desc">
<view class="namedesc">
{{item.patient_name}}<text wx:if="{{item.patient_sex==0}}">未知</text><text wx:if="{{item.patient_sex==1}}">男</text><text wx:else>女</text><text decode="true" class="agebar"></text><text>{{item.patient_age}}岁)</text></view>
</view>
</view>
<!-- <view class="row rowdesc" wx:if="{{item.detection_status!=1}}">
<view class="name">病情描述</view>
<view class="dot"></view>
<view class="desc">{{item.disease_desc}}</view>
</view>
<view class="row rowdesc" wx:else>
<view class="name">下单时间</view>
<view class="dot"></view>
<view class="desc">{{item.created_at}}</view>
</view> -->
<view class="row last" wx:if="{{item.detection_status!=1}}">
<view class="left">
<view class="name">下单时间</view>
<view class="dot"></view>
<view class="desc">{{item.created_at}}</view>
</view>
<view class="right">
<view class="detail">详情</view>
<image src="{{img_host+'/righticon.png'}}" class="righticon"> </image>
</view>
</view>
<view class="row rowdesc" wx:if="{{item.detection_status==1}}">
<view class="name">下单时间</view>
<view class="dot"></view>
<view class="desc">{{item.created_at}}</view>
</view>
<view class="row last" wx:if="{{item.detection_status==1}}">
<view class="left">
<view class="name">待付金额</view>
<view class="dot"></view>
<view class="desc red">¥{{item.payment_amount_total}}</view>
</view>
<view class="right">
<view class="detail">详情</view>
<image src="{{img_host+'/righticon.png'}}"class="righticon"> </image>
</view>
</view>
</view>
</view>
</scroll-view>
<view class="nodata" wx:elif="{{!isLoading && orderList.length==0}}">
<image src="{{img_host+'/nocheck.png'}}" class="noorder"></image>
<view class="tips">暂无检测订单</view>
<!-- <view class="btn" bindtap="goExpertList">专家问诊</view> -->
</view>
</view>

View File

@ -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;
}

View File

@ -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() {
},
/**
* 用户点击右上角分享
*/
})

View File

@ -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": "肝胆相照互联网医院"
}

View File

@ -0,0 +1,258 @@
<!--pages/medinceOrderDetail/medinceOrderDetail.wxml-->
<wxs src="../../../filters/filter.wxs" module="filter"></wxs>
<view class="ui-navigatorbar" style="border-bottom: 1rpx solid #E3E4E5;background:#fff;">
<image class="ui-navigatorbar-back" bindtap="goBack" src="{{img_host+'/back.png'}}" />
<view class="ui-title">订单详情</view>
</view>
<view class="page">
<view class="outwraper {{order.detection_status==2?'active':''}}">
<view class="patientbox">
<view class="patient_name">
就诊人信息
</view>
<view class="rightcon">
{{order.patient_name}}<text wx:if="{{order.patient_sex==1}}">男</text><text wx:elif="{{order.patient_sex==2}}">女</text><text wx:else>未知</text>{{order.patient_age}}岁)
</view>
</view>
<view class="bindbox" wx:if="{{order.detection_status==2 || order.detection_status==3 || order.detection_status==4}}">
<view class="tiptitle" wx:if="{{!showError}}">
<view class="tipleft">
绑定检测码
</view>
<!-- <view class="tipright">
查看手册
</view> -->
</view>
<view class="errorbox" wx:else="{{showError}}">
<view class="errorleft">
<image src="{{img_host+'/check_error.png'}}" class="checkerror" mode=""/>
<text>检测码有误,请重新输入</text>
</view>
<image src="{{img_host+'/check_close.png'}}" class="checkclose" mode="" bindtap="closeError"/>
</view>
<view class="iptbox {{showError?'active':''}}" >
<input type="text" value="{{detection_bar_code}}" class="ipt" placeholder="请输入检测码或扫描条形码绑定" bindinput="chnageIpt" bindblur="bluript" disabled="{{order.detection_status==3 || order.detection_status==4}}"/>
<view class="mybar" wx:if="{{order.detection_status==2}}"></view>
<image src="{{img_host+'/scancode.png'}}" class="scan" mode="" bindtap="goScan" wx:if="{{order.detection_status==2}}"/>
</view>
<view class="tiptitle" hidden="{{(order.detection_status==3 && fileList.length==0)|| (order.detection_status==4 && fileList.length==0)}}">
<view class="tipleft">
检测管照片
</view>
</view>
<view class="uploadbox">
<image wx:for="{{fileList}}" src="{{item}}" mode="aspectFill" class="upload" bindtap="previewImage" data-id="{{idx}}" wx:for-index="idx" wx:key="idx">
<image src="{{img_host+'/xiaoclose.png'}}" class="close" catchtap="delImg" data-id="{{idx}}"></image>
</image>
<view class="upload" bindtap="upload" wx:if="{{order.detection_status==2}}">
<van-icon name="plus" />
<view class="text">
上传
</view>
</view>
</view>
<view class="finish" wx:if="{{order.detection_status==3 || order.detection_status==4 }}">
<view class="left">预计检测完成时间</view>
<view class="right">{{order.detection_success_time}}</view>
</view>
</view>
<view class="rowbox">
<view class="titlebox">
<view class="name">订单信息</view>
<!-- 检测订单状态(1:待支付 2:待绑定 3:检测中 4:检测完成 5:已取消) -->
<!-- 支付状态1:未支付 2:已支付 3:支付中 4:支付失败 5:支付超时 6:支付关闭 7:已撤销 8:转入退款) -->
<view class="status" wx:if="{{order.detection_status==1}}">
<view class="waitpay">待支付</view>
<view class="countdown">
<van-count-down time="{{filter.countDown(order.created_at)}}" />
</view>
</view>
<view class="status waitpay" wx:elif="{{order.detection_status==2}}">待绑定</view>
<view class="status waitpay" wx:elif="{{order.detection_status==3}}">检测中</view>
<view class="status" wx:elif="{{order.detection_status==4}}" style="color:#3CC7C0">检测完成</view>
<view class="status" wx:elif="{{order.detection_status==5 && order.detection_pay_status!=5 }}">取消检测</view>
<view class="status waitpay" wx:elif="{{order.detection_status==5 && order.detection_pay_status==5}}">支付超时</view>
</view>
<view class="row first">
<view class="namebox">
<view class="name">订单编号</view>
<view class="dot"></view>
</view>
<view class="rightbox">
<view class="desc">{{order.detection_no}}</view>
<view class="bar">
|
</view>
<view class="copy" bindtap="copy" data-text="{{order.detection_no}}">复制</view>
</view>
</view>
<view class="row">
<view class="namebox">
<view class="name">下单时间</view>
<view class="dot"></view>
</view>
<view class="desc rightbox">{{order.created_at}}</view>
</view>
<view class="row">
<view class="namebox">
<view class="name">问诊类型</view>
<view class="dot"></view></view>
<view class="desc">糖组检测</view>
</view>
<view class="row">
<view class="namebox">
<view class="name">订单金额</view>
<view class="dot"></view>
</view>
<view class="desc rightbox">¥{{order.amount_total}}</view>
</view>
<view class="row">
<view class="namebox">
<view class="name"><text>优</text><text>惠</text><text>券</text></view>
<view class="dot"></view>
</view>
<view class="desc rightbox" wx:if="{{order.coupon_amount_total>0}}">¥{{order.coupon_amount_total}}</view>
<view class="desc rightbox" wx:else>无</view>
</view>
<view class="row">
<view class="namebox">
<view class="name">支付金额</view>
<view class="dot"></view>
</view>
<view class="desc price rightbox">
¥{{pay_money}}
</view>
</view>
<view class="row beizhu" wx:if="{{order.cancel_reason}}">
<view class="namebox">
<view class="name"><text>备</text><text>注</text></view>
<view class="dot"></view>
</view>
<!-- 取消订单原因1:主动取消 2:客服取消 3:支付超时) -->
<view class="desc rightbox" wx:if="{{order.cancel_reason==1}}">主动取消 </view>
<view class="desc rightbox" wx:elif="{{order.cancel_reason==2}}">客服取消</view>
<view class="desc rightbox" wx:elif="{{order.cancel_reason==3}}">支付超时</view>
</view>
<!-- 商品订单退款状态0:无退款 1:申请退款 2:退款中 3:退款成功 4:拒绝退款 5:退款关闭) -->
<view class="row" wx:if="{{order.cancel_reason==2}}">
<view class="namebox">
<view class="name">退款进度</view>
<view class="dot"></view>
</view>
<view class="desc rightbox" wx:if="{{order.detection_refund_status==0}}">
无退款
</view>
<view class="desc rightbox" wx:elif="{{order.detection_refund_status==1}}">
申请退款
</view>
<view class="desc rightbox" wx:elif="{{order.detection_refund_status==2}}">
退款中
</view>
<view class="desc rightbox" wx:elif="{{order.detection_refund_status==3}}">
退款成功
</view>
<view class="desc rightbox" wx:elif="{{order.detection_refund_status==4}}">
拒绝退款
</view>
<view class="desc rightbox" wx:elif="{{order.detection_refund_status==5}}">
退款关闭
</view>
</view>
<!-- 检测订单状态(1:待支付 2:待绑定 3:检测中 4:检测完成 5:已取消) -->
<view class="contactbox" wx:if="{{order.detection_status==3 || order.detection_status==4}}" bindtap="orderMsg">
<image src="{{img_host+'/kefu.png'}}" class="kefu" mode=""/>
<text>联系客服</text>
</view>
<view class="contactbox" wx:if="{{order.detection_status==2}}" bindtap="confirmCancelOrder">
<text>取消检测</text>
</view>
<view class="contactbox" wx:if="{{order.detection_status==5}}" bindtap="confirmDelOrder">
<text>删除订单</text>
</view>
</view>
<view class="personinfobox" bindtap="goExpert" wx:if="user_doctor && user_doctor.doctor_id">
<view class="namebox" style="justify-content: flex-start;">
<image src="{{user_doctor.avatar}}" class="head" wx:if="{{user_doctor.avatar}}" mode="aspectFill"></image>
<image src="{{img_host+'/doctor_avatar.png'}}" class="head" wx:else></image>
<view class="namewraper">
<view class="row">
<view class="name">{{user_doctor.user_name}}</view>
<view class="type" wx:if="{{user_doctor.hospital_level_name}}">{{user_doctor.hospital_level_name}}</view>
<view class="type" wx:if="{{user_doctor.multi_point_status == 1 && user_doctor.multi_point_enable==1}}">可处方</view>
</view>
<view class="hospital">
<!-- 1主任医师、2主任中医师、3副主任医师、4副主任中医师、5主治医师、8住院医师 -->
<text class="doctor_title" wx:if="{{user_doctor.doctor_title}}">{{user_doctor.doctor_title}}</text>
<text class="doctor_title" wx:elif="{{user_doctor.doctor_title==2}}">主任中医师</text>
<text>{{user_doctor.department_custom_name}}</text>
</view>
<view class="hospital">{{user_doctor.hospital_name}}</view>
</view>
<view class="guanzhu" wx:if="{{!user_doctor.follow}}" catchtap="toggleFllow">
<image src="{{img_host+'/star.png'}}" ></image>
<text decode="true">&nbsp;&nbsp;关注</text>
</view>
<view class="guanzhu" wx:else catchtap="toggleFllow">
<image src="{{img_host+'/star_on.png'}}" ></image>
<text decode="true">&nbsp;&nbsp;关注</text>
</view>
</view>
<!-- <view class="borderbox">
<view class="goodjob" style="margin-top: 30rpx;">
擅长:{{user_doctor.be_good_at}}
</view>
</view> -->
</view>
<view class="contactbox" style="border:none;" wx:if="{{order.detection_status==2}}" bindtap="orderMsg">
<image src="{{img_host+'/kefu.png'}}" class="kefu" mode=""/>
<text>联系客服</text>
</view>
</view>
</view>
<!-- 检测订单状态(1:待支付 2:待绑定 3:检测中 4:检测完成 5:已取消) -->
<view class="paybox" wx:if="{{order.detection_pay_status==1}}">
<view class="left" bindtap="confirmCancelPay">取消支付</view>
<view class="right" bindtap="goPay">
立即支付
<!-- :¥{{order.payment_amount_total}} -->
</view>
</view>
<view class="paybox" wx:if="{{order.detection_status==2 || order.detection_status==3}}">
<view class="submitbtn {{order.detection_status==3?'active':''}}" bindtap="handleBindCheck">提交</view>
</view>
<view class="paybox" wx:if="{{order.detection_status==4}}">
<view class="left" bindtap="goReport">查看报告</view>
<view class="right" bindtap="handleCheckInquiry">
<text>报告解读</text>
<image src="{{img_host+'/freetalk.png'}}" class="freetalk" alt=""/>
</view>
</view>
<view class="paybox" wx:if="{{order.detection_status==5}}">
<view class="submitbtn" bindtap="goSugar">重新检测</view>
</view>
<dialog bind:confirm="confirm" cancelBtn="{{cancelBtn}}" showDialog="{{showDialog}}" message="{{message}}"></dialog>
<van-dialog id="van-dialog" confirm-button-color="#3CC7C0" />
<van-overlay show="{{ showCover }}" wx:if="{{order.detection_status==2}}">
<view class="wrapper">
<image src="{{img_host+'/mask_check1.png'}}" mode="widthFix" class="timg1" lazy-load/>
<image src="{{img_host+'/mask_check2.png'}}" mode="widthFix" class="timg2" lazy-load/>
<view class="button" bindtap="onClickHide">
知道了
</view>
</view>
</van-overlay>
<van-dialog id="van-dialog" confirm-button-color="#3CC7C0" />
<dialog bind:confirm="confirmCheck" cancelBtn="{{true}}" showDialog="{{showCheckDialog}}" message="{{checkmessage}}" confirmtext="继续"></dialog>

View File

@ -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);
}

View File

@ -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() {
}
})

View File

@ -0,0 +1,6 @@
{
"usingComponents": {
"nav":"../../../components/nav/nav"
},
"navigationStyle":"custom"
}

View File

@ -0,0 +1,70 @@
<!--healthyService/pages/healthyDetail/healthyDetail.wxml-->
<nav navName="随访包服务详情"></nav>
<view class="page">
<image src="{{img_host+'/mybg.png'}}" mode="widthFix" class="dcimg" lazy-load/>
<view class="servicebox">
<view class="ser_title">请选择服务</view>
<view class="row">
<view class="moneyType {{active==item.id?'on':''}}" wx:for="{{ priceList}}" wx:key="id" bind:tap="choosePrice" data-id="{{item.id}}">{{item.price}}</view>
<!-- <view class="moneyType">500元/3月</view>
<view class="moneyType">1000元/6月</view>
<view class="moneyType">2000元/12月</view> -->
</view>
<!-- <view class="row">
<view class="moneyType">1000元/6月</view>
<view class="moneyType">2000元/12月</view>
</view> -->
</view>
<view class="detailbox">
<view class="servicebox">
</view>
<view class="quanyi">
<image src="../../static/images/quanyi.png" class="quanyiImg"/>
<view class="quanyiText">服务权益</view>
</view>
<view class="con">
<view class="cell">
<view class="celltitle">专属标识:</view>
<view class="celldesc">享有特殊标识,获得医生全面照护</view>
</view>
<view class="cell">
<view class="celltitle">图文问诊<text class="red">10次/不限次</text></view>
<view class="celldesc">服务期间每次可持续48小时图片、文字、语音形式无限制的进行沟通
</view>
</view>
<view class="cell">
<view class="celltitle">处方:</view>
<view class="celldesc">一次问诊只可开具一个处方单
</view>
</view>
<view class="cell">
<view class="celltitle">退费:</view>
<view class="celldesc">1、未使用随时退;
</view>
<view class="celldesc">
2、健康包开始使用后如需退款请联系客服退款不收取任何服务费等额外费用但不支持部分退款:
</view>
<view class="celldesc">
3、已接诊的订单不再退款;
</view>
<view class="celldesc">
4、未消费服务包内容可退款已消费服务的部分按原价计费即:已发生的问诊按照问诊时互联网医院显示的价格结算。
</view>
</view>
</view>
</view>
<view class="buttonbox">
<view class="btn">立即购买¥XX.XX</view>
</view>
</view>

View File

@ -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;
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 213 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 824 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 925 B

View File

@ -73,6 +73,11 @@ Page({
url: '/sugarCheck/pages/checkOrder/checkOrder', url: '/sugarCheck/pages/checkOrder/checkOrder',
}) })
}), }),
goHealthyOrder:throttle(function(){
app.method.navigateTo({
url: '/healthyService/pages/healthyOrder/healthyOrder',
})
}),
goMyPrescript:throttle(function(){ goMyPrescript:throttle(function(){
app.method.navigateTo({ app.method.navigateTo({
url: '/patient/pages/myPrescript/myPrescript', url: '/patient/pages/myPrescript/myPrescript',

View File

@ -46,6 +46,14 @@
<view class="name">检测</view> <view class="name">检测</view>
<view class="bage" wx:if="{{patient_info.order_detection_count>0}}">{{filter.formatNumber(patient_info.order_detection_count)}}</view> <view class="bage" wx:if="{{patient_info.order_detection_count>0}}">{{filter.formatNumber(patient_info.order_detection_count)}}</view>
</view> </view>
</view>
<view class="iconbox" style="margin-top: 20rpx;">
<view class="iconcell" bindtap="goHealthyOrder">
<image src="{{img_host+'/check_new.png'}}" class="myicon"></image>
<view class="name">服务包</view>
<view class="bage" wx:if="{{patient_info.order_detection_count>0}}">{{filter.formatNumber(patient_info.order_detection_count)}}</view>
</view>
</view> </view>
</view> </view>
<view class="fuli" style="background: #FFF3F3;" wx:if="{{show_fuli}}" bindtap="goWelfare"> <view class="fuli" style="background: #FFF3F3;" wx:if="{{show_fuli}}" bindtap="goWelfare">

View File

@ -121,7 +121,7 @@ color: rgba(0,0,0,0.65);
margin-top: 30rpx; margin-top: 30rpx;
width: 100%; width: 100%;
padding-bottom: 20rpx; padding-bottom: 20rpx;
height: 256rpx;
overflow: hidden; overflow: hidden;
background: #FFFFFF; background: #FFFFFF;
border-radius: 10rpx; border-radius: 10rpx;
@ -144,7 +144,7 @@ color: rgba(0,0,0,0.65);
.iconbox { .iconbox {
display: flex; display: flex;
margin: 30rpx 52rpx 0; margin: 30rpx 52rpx 0;
flex-wrap: wrap;
justify-content: space-between; justify-content: space-between;
} }

View File

@ -208,7 +208,7 @@ Page({
this.setData({ this.setData({
lock:false, lock:false,
page:1, page:1,
scrollHeight:300, scrollHeight:150,
doctorList:[] doctorList:[]
}); });
this.getDoctorList() this.getDoctorList()

View File

@ -72,7 +72,8 @@
<view class="title">医生服务</view> <view class="title">医生服务</view>
<viwe class="tag" wx:if="{{filter.formatYear(days)}}">{{filter.formatYear(days)}}内服务过您</viwe> <viwe class="tag" wx:if="{{filter.formatYear(days)}}">{{filter.formatYear(days)}}内服务过您</viwe>
</view> </view>
<view class="tabs"> <view class="tabbox">
<view class="tabs">
<view class="tab " bindtap="switchTab" data-id="0"> <view class="tab " bindtap="switchTab" data-id="0">
<image wx:if="{{currentData==0 && canTuwen}}" src="{{img_host+'/tuwen_on.png'}}" alt="" class="tabbg on" ></image> <image wx:if="{{currentData==0 && canTuwen}}" src="{{img_host+'/tuwen_on.png'}}" alt="" class="tabbg on" ></image>
<image wx:elif="{{currentData==0 && !canTuwen}}" src="{{img_host+'/tuwen_disable_on.png'}}" alt="" class="tabbg on" ></image> <image wx:elif="{{currentData==0 && !canTuwen}}" src="{{img_host+'/tuwen_disable_on.png'}}" alt="" class="tabbg on" ></image>
@ -104,6 +105,24 @@
<view class="price" wx:if="{{!(expertInquiry_price && freePrice)}}">暂未开通</view> <view class="price" wx:if="{{!(expertInquiry_price && freePrice)}}">暂未开通</view>
</view> </view>
</view> </view>
<view class="tab add" bindtap="switchTab" data-id="3">
<image src="../../static/images/suifang_on.png" alt="" class="tabbg" ></image>
<view class="typebox" >
<view class="name">随访包</view>
<view class="price">¥150起</view>
</view>
<!-- <view class="typebox disable" wx:else >
<view class="name">视频问诊</view>
<view class="price">{{videoPrice?'¥'+videoPrice+'/次':'暂未开通'}}</view>
</view> -->
</view>
<view class="tab add" bindtap="switchTab" data-id="4">
<image src="../../static/images/healthy_on.png" alt="" class="tabbg" ></image>
<view class="typebox" >
<view class="name">随访包</view>
<view class="price">¥1260/次</view>
</view>
</view>
<view class="tab " bindtap="switchTab" data-id="1"> <view class="tab " bindtap="switchTab" data-id="1">
<image src="{{img_host+'/video_on.png'}}" wx:if="{{currentData==1 && canVideo}}" alt="" class="tabbg on" ></image> <image src="{{img_host+'/video_on.png'}}" wx:if="{{currentData==1 && canVideo}}" alt="" class="tabbg on" ></image>
<image wx:elif="{{currentData==1 && !canVideo}}" src="{{img_host+'/video_disable_on.png'}}" alt="" class="tabbg on" ></image> <image wx:elif="{{currentData==1 && !canVideo}}" src="{{img_host+'/video_disable_on.png'}}" alt="" class="tabbg on" ></image>
@ -118,6 +137,7 @@
<view class="price">{{videoPrice?'¥'+videoPrice+'/次':'暂未开通'}}</view> <view class="price">{{videoPrice?'¥'+videoPrice+'/次':'暂未开通'}}</view>
</view> </view>
</view> </view>
<view class="tab " bindtap="switchTab" data-id="2"> <view class="tab " bindtap="switchTab" data-id="2">
<image wx:if="{{currentData==2 && canDiffcult}}" src="{{img_host+'/yinan_on.png'}}" alt="" class="tabbg on" ></image> <image wx:if="{{currentData==2 && canDiffcult}}" src="{{img_host+'/yinan_on.png'}}" alt="" class="tabbg on" ></image>
<image wx:elif="{{currentData==2 && !canDiffcult}}" src="{{img_host+'/yinan_disable_on.png'}}" alt="" class="tabbg on" ></image> <image wx:elif="{{currentData==2 && !canDiffcult}}" src="{{img_host+'/yinan_disable_on.png'}}" alt="" class="tabbg on" ></image>
@ -133,6 +153,7 @@
</view> </view>
</view> </view>
</view>
</view> </view>
<swiper current="{{currentData}}" class="swiperbox" bindchange="bindchange" style="height:{{tab3Height+'px'}}"> <swiper current="{{currentData}}" class="swiperbox" bindchange="bindchange" style="height:{{tab3Height+'px'}}">
<swiper-item > <swiper-item >

View File

@ -517,17 +517,28 @@ justify-content:center;
.wz_tabbox{ .wz_tabbox{
margin-top: 20rpx; margin-top: 20rpx;
} }
.tabbox{
margin-top: 16rpx;
overflow-x: scroll;
width:100%;
}
.tabs{ .tabs{
margin-top: 16rpx; height:330rpx;
display: flex; display: flex;
justify-content: space-between; width:1150rpx;
} }
.tabs .tab{ .tabs .tab{
width: 214rpx; width: 214rpx;
height: 300rpx; height: 300rpx;
position: relative; position: relative;
margin-right: 20rpx;
box-shadow: 0rpx 8rpx 20rpx 2rpx rgba(0,0,0,0.04); box-shadow: 0rpx 8rpx 20rpx 2rpx rgba(0,0,0,0.04);
} }
.tabs .tab:last-child{
margin-right: 0;
}
.tabbg{ .tabbg{
top:0rpx; top:0rpx;
width: 100%; width: 100%;
@ -568,7 +579,7 @@ color: #999999;
text-decoration: line-through; text-decoration: line-through;
} }
.swiperbox{ .swiperbox{
margin-top: 45rpx; margin-top: 35rpx;
} }
.swiper-item{ .swiper-item{
border-radius: 20rpx; border-radius: 20rpx;

BIN
patient/static/images.zip Normal file

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB