2.23更新

This commit is contained in:
zoujiandong 2024-02-23 14:06:27 +08:00
parent e856d259d6
commit cce4628d63
23 changed files with 997 additions and 112 deletions

View File

@ -44,6 +44,18 @@ Component({
type: Boolean
}
},
pageLifetimes: {
show: function() {
// 页面被展示
},
hide: function() {
// 页面被隐藏
this.hangup()
},
resize: function(size) {
// 页面尺寸变化
}
},
data:{
IMG_DEFAULT_AVATAR:`${PATH}/default_avatar.png`,
IMG_HANGUP:`${PATH}/hangup.png`,

View File

@ -256,7 +256,40 @@ Component({
}];
return renderDom;
}
if (customMessage.message_type === 16){
let data = customMessage.data;
const renderDom = [{
type: 'video_time_16',
title: customMessage.title,
desc: customMessage.desc,
}];
return renderDom;
}
//13 赠送对话
if (customMessage.message_type ===13){
let data = customMessage.data;
const renderDom = [{
type: 'send_talk',
title: customMessage.title,
desc: customMessage.desc,
}];
return renderDom;
}
//17 预约时间
if (customMessage.message_type === 17){
let data = customMessage.data;
const renderDom = [{
type: 'video_time',
title: customMessage.title,
desc: customMessage.desc,
}];
return renderDom;
}
} catch (error) {}
// 客服咨询
@ -271,6 +304,7 @@ Component({
}];
return renderDom;
}
} catch (error) {}
// 音视频通话消息解析
try {
@ -344,11 +378,11 @@ Component({
console.log(params);
if(!ismine){//未填写
app.method.navigateTo({
url:'/pages/inquiryForm/inquiryForm?params='+params+"&order_inquiry_id="+id
url:'/patient/pages/inquiryForm/inquiryForm?params='+params+"&order_inquiry_id="+id
})
}else{//已填写
app.method.navigateTo({
url:'/pages/inquiryForm/inquiryForm?case_filled_fields='+params+"&order_inquiry_id="+id
url:'/patient/pages/inquiryForm/inquiryForm?case_filled_fields='+params+"&order_inquiry_id="+id
})
}
// app.go(url);

View File

@ -103,5 +103,13 @@
<image src="../../../../../static/images/back.png" class="back" mode=""/>
</view>
</view>
<view class="videotime video_time_16" wx:if="{{renderDom[0].type==='video_time_16'}}" >
</view>
<view class="videotime" wx:if="{{renderDom[0].type==='video_time'}}" >
{{renderDom[0].desc}}
</view>
<view class="videotime" wx:if="{{renderDom[0].type==='send_talk'}}" >
{{renderDom[0].desc}}
</view>
</view>

View File

@ -422,4 +422,13 @@ color: #666666;
background: rgb(255, 255, 255);
border: 1rpx solid #D8D8D8;
border-style: none none solid solid
}
}
.videotime{
font-size: 28rpx;
text-align: center;
line-height: 44rpx;
color: rgba(0,0,0,0.65);
}
.video_time_16{
display: none;
}

View File

@ -3,7 +3,7 @@
<scroll-view class="message-list-container" scroll-y="true" scroll-into-view="{{jumpAim}}" refresher-enabled="{{true}}" bindrefresherrefresh="refresh" refresher-triggered="{{triggered}}" lower-threshold="200" bindscrolltolower="scrollHandler">
<view class="no-message" wx:if="{{isCompleted}}">没有更多啦</view>
<!-- <text style="display: none;">{{filter.toS(messageList[messageList.length-1])}}</text> -->
<view class="t-message" wx:if="{{conversation.type !== '@TIM#SYSTEM'}}" wx:for="{{messageList}}" wx:key="index" data-index ='{{index}}' hidden="{{!(item.payload.data && (filter.formateText(item.payload.data).message_type!=20) || item.type!='TIMCustomElem') }}">
<view class="t-message" wx:if="{{conversation.type !== '@TIM#SYSTEM'}}" wx:for="{{messageList}}" wx:key="index" data-index ='{{index}}' hidden="{{!(item.payload.data && (filter.formateText(item.payload.data).message_type!=20) || item.type!='TIMCustomElem') || filter.formateText(item.payload.data).message_type==16}}">
<view class="time-pop-mask" data-value="{{item.time}}" wx:if="{{showMessageTime}}">
<view class="showmessagetime" wx:if="{{item.isShowTime}}">
<text class="time" wx:if="{{!item.isDeleted && !item.isRevoked}}">{{messageTime}} </text>
@ -49,7 +49,7 @@
<ImageMessage wx:if="{{item.type === 'TIMImageElem'}}" message="{{item}}" isMine="{{item.flow === 'out'}}" />
<VideoMessage wx:if="{{item.type === 'TIMVideoFileElem'}}" message="{{item}}" isMine="{{item.flow === 'out'}}"/>
<AudioMessage wx:if="{{item.type === 'TIMSoundElem'}}" message="{{item}}" data-index ='{{index}}' messageList="{{messageList}}" bind:closeAudio="closeAudio" id="audio{{item.ID}}" isMine="{{item.flow === 'out'}}"/>
<CustomMessage style="width:100vw" bind:popComment="popComment" wx:if="{{item.type === 'TIMCustomElem' && filter.formateText(item.payload.data).message_type!=6 && filter.formateText(item.payload.data).message_type!=11 && filter.formateText(item.payload.data).message_type!=20 && filter.formateText(item.payload.data).message_type!==0}}" message="{{item}}" isMine="{{item.flow === 'out'}}" bindtap="handleJumpLink" data-value = "{{item}}" class="{{(item.type === 'TIMCustomElem' && filter.formateText(item.payload.data).message_type==2)?'custom'+filter.formateText(item.payload.data).data.order_inquiry_id:''}}" patient_data="{{filter.formateText(item.cloudCustomData).patient_family_data}}"/>
<CustomMessage style="width:100vw" bind:popComment="popComment" wx:if="{{item.type === 'TIMCustomElem' && filter.formateText(item.payload.data).message_type!=6 && filter.formateText(item.payload.data).message_type!=11 && filter.formateText(item.payload.data).message_type!=20 && filter.formateText(item.payload.data).message_type!==0 }}" message="{{item}}" isMine="{{item.flow === 'out'}}" bindtap="handleJumpLink" data-value = "{{item}}" class="{{(item.type === 'TIMCustomElem' && filter.formateText(item.payload.data).message_type==2)?'custom'+filter.formateText(item.payload.data).data.order_inquiry_id:''}}" patient_data="{{filter.formateText(item.cloudCustomData).patient_family_data}}"/>
<FaceMessage wx:if="{{item.type === 'TIMFaceElem'}}" message="{{item}}" isMine="{{item.flow === 'out'}}"/>
<FileMessage wx:if="{{item.type === 'TIMFileElem'}}" message="{{item}}" isMine="{{item.flow === 'out'}}"/>
<MergerMessage wx:if="{{item.type === 'TIMRelayElem'}}" message="{{item}}" isMine="{{item.flow === 'out'}}"/>

View File

@ -39,6 +39,9 @@ function fllowDoctor(id){
function notfllowDoctor(id){
return request('/patient/doctor/follow/'+id,'DELETE')
}
function getService(id){//获取医生开启的服务列表
return request('/doctor/inquiry/service/'+id,'GET')
}
module.exports={
doctorList,
@ -53,6 +56,8 @@ module.exports={
getCountry,
commentList,
fllowDoctor,
notfllowDoctor
notfllowDoctor,
getService
}

150
app.json
View File

@ -3,63 +3,62 @@
"pages/index/index",
"pages/message/message",
"pages/my/my"
],
"subPackages": [
{
"root": "patient",
"name": "patient",
"pages": [
"pages/login/login",
"pages/mobileLogin/mobileLogin",
"pages/expertConsult/expertConsult",
"pages/expertDetail/expertDetail",
"pages/selectPatient/selectPatient",
"pages/writeSick/writeSick",
"pages/comment/comment",
"pages/personCenter/personCenter",
"pages/myWelfare/myWelfare",
"pages/medinceRecord/medinceRecord",
"pages/myDoctor/myDoctor",
"pages/familyDoc/familyDoc",
"pages/memberDetail/memberDetail",
"pages/address/address",
"pages/editAddress/editAddress",
"pages/consultOrder/consultOrder",
"pages/orderDetail/orderDetail",
"components/consultList/consultList",
"pages/sickInfo/sickInfo",
"pages/myPrescript/myPrescript",
"pages/prescriptDetail/prescriptDetail",
"pages/payInfo/payInfo",
"pages/payOrder/payOrder",
"pages/medinceOrder/medinceOrder",
"pages/medinceOrderDetail/medinceOrderDetail",
"pages/sysMsgDetail/sysMsgDetail",
"pages/sysMsgList/sysMsgList",
"pages/fuliMsgList/fuliMsgList",
"pages/refundMsgList/refundMsgList",
"pages/quickConsult/quickConsult",
"pages/applyMedince/applyMedince",
"pages/medinceList/medinceList",
"pages/allotDoctor/allotDoctor",
"pages/search/search",
"pages/payPlatform/payPlatform",
"pages/linkPage/linkPage",
"pages/expressDetail/expressDetail",
"pages/medinceSearch/medinceSearch",
"pages/commonSick/commonSick",
"pages/agreement/agreement",
"pages/agreeList/agreeList",
"pages/imgPreview/imgpreview",
"pages/notify/notify",
"pages/inquiryForm/inquiryForm",
"pages/sickManage/sickManage",
"pages/sickRecord/sickRecord",
"pages/sickDetail/sickDetail"
],
"independent": false
"root": "patient",
"name": "patient",
"pages": [
"pages/login/login",
"pages/mobileLogin/mobileLogin",
"pages/expertConsult/expertConsult",
"pages/expertDetail/expertDetail",
"pages/selectPatient/selectPatient",
"pages/writeSick/writeSick",
"pages/comment/comment",
"pages/personCenter/personCenter",
"pages/myWelfare/myWelfare",
"pages/medinceRecord/medinceRecord",
"pages/myDoctor/myDoctor",
"pages/familyDoc/familyDoc",
"pages/memberDetail/memberDetail",
"pages/address/address",
"pages/editAddress/editAddress",
"pages/consultOrder/consultOrder",
"pages/orderDetail/orderDetail",
"components/consultList/consultList",
"pages/sickInfo/sickInfo",
"pages/myPrescript/myPrescript",
"pages/prescriptDetail/prescriptDetail",
"pages/payInfo/payInfo",
"pages/payOrder/payOrder",
"pages/medinceOrder/medinceOrder",
"pages/medinceOrderDetail/medinceOrderDetail",
"pages/sysMsgDetail/sysMsgDetail",
"pages/sysMsgList/sysMsgList",
"pages/fuliMsgList/fuliMsgList",
"pages/refundMsgList/refundMsgList",
"pages/quickConsult/quickConsult",
"pages/applyMedince/applyMedince",
"pages/medinceList/medinceList",
"pages/allotDoctor/allotDoctor",
"pages/search/search",
"pages/payPlatform/payPlatform",
"pages/linkPage/linkPage",
"pages/expressDetail/expressDetail",
"pages/medinceSearch/medinceSearch",
"pages/commonSick/commonSick",
"pages/agreement/agreement",
"pages/agreeList/agreeList",
"pages/imgPreview/imgpreview",
"pages/notify/notify",
"pages/inquiryForm/inquiryForm",
"pages/sickManage/sickManage",
"pages/sickRecord/sickRecord",
"pages/sickDetail/sickDetail",
"pages/videoList/videoList"
],
"independent": false
},
{
"root": "TUIService",
@ -67,33 +66,34 @@
"pages/index"
],
"independent": false
},
{
"root": "sugarCheck",
"name": "sugarCheck",
"pages": [
"pages/sugarDetail/sugarDetail",
"pages/sugarSickInfo/sugarSickInfo",
"pages/checkOrder/checkOrder",
"pages/checkOrderDetail/checkOrderDetail"
],
"independent": true
},
{
"root": "TUICallKit",
"name": "TUICallKit",
"pages": [
"pages/globalCall/globalCall"
],
"independent": false
"root": "sugarCheck",
"name": "sugarCheck",
"pages": [
"pages/sugarDetail/sugarDetail",
"pages/sugarSickInfo/sugarSickInfo",
"pages/checkOrder/checkOrder",
"pages/checkOrderDetail/checkOrderDetail"
],
"independent": true
},
{
"root": "TUICallKit",
"name": "TUICallKit",
"pages": [
"pages/globalCall/globalCall"
],
"independent": false
}
],
"preloadRule": {
"TUICallKit/pages/globalCall/globalCall": {
"network": "all",
"packages": ["TUICallKit"]
}
"network": "all",
"packages": [
"TUICallKit"
]
}
},
"window": {
"backgroundTextStyle": "light",

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.3 KiB

View File

@ -16,8 +16,11 @@
<view class="databox">
<view class="datacell" bindtap="goDetail" wx:for="{{orderList}}" wx:key="order_inquiry_id" data-id="{{item.order_inquiry_id}}">
<view class="titlebox">
<view class="name" wx:if="{{item.inquiry_type==1}}">专家问诊</view>
<view class="name" wx:elif="{{item.inquiry_type==2}}">快速问诊</view>
<view class="name" wx:if="{{item.inquiry_type==1 && item.inquiry_mode==1}}">专家问诊-图文</view>
<view class="name" wx:elif="{{item.inquiry_type==1 && item.inquiry_mode==2}}">专家问诊-视频</view>
<view class="name" wx:elif="{{item.inquiry_type==1 && item.inquiry_mode==6}}">专家问诊-疑难会诊</view>
<view class="name" wx:elif="{{item.inquiry_type==2 && item.inquiry_mode!=7}}">快速问诊</view>
<view class="name" wx:elif="{{item.inquiry_type==2 && item.inquiry_mode==7}}">快速问诊-附赠回复</view>
<view class="name" wx:elif="{{item.inquiry_type==3}}">公益问诊</view>
<view class="name" wx:elif="{{item.inquiry_type==4}}">问诊购药</view>
<view class="name" wx:elif="{{item.inquiry_type==5}}">报告解读</view>

View File

@ -6,7 +6,8 @@ import {
isReceivepatient,
commentList,
fllowDoctor,
notfllowDoctor
notfllowDoctor,
doctorList
} from "../../../api/consultExpert"
import {throttle} from "../../../utils/util"
Page({
@ -14,6 +15,7 @@ Page({
* 页面的初始数据
*/
data: {
tab3Height:500,
img_host:'https://oss.prod.applets.igandanyiyuan.com/applet/patient/static',
showDialog:false,
avatar: '',
@ -54,14 +56,31 @@ Page({
expertInquiry_price:'',
recieveStatus:0,
commentList: [],
hasVideoList:false,
totalComment:0,
isFinished:false,
isReceivePatient:false //是否可接诊
isReceivePatient:false, //是否可接诊
service_content:'【医生填写的服务内容】',
service_process:'【医生填写的服务流程】'
},
getHeight(){
wx.createSelectorQuery().select('#swiperitem3').boundingClientRect( (rect)=>{
this.setData({
tab3Height:rect.height*2
})
console.log('元素高度为:', rect.height)
}).exec()
},
handleThrottle:throttle(function(e){
let {type}=e.currentTarget.dataset;
this.goSelectPatient()
}),
goVideo:throttle(function(){
app.method.navigateTo({
url:'/patient/pages/videoList/videoList'
})
}),
goSelectPatient() {
//判断是否能接诊
@ -110,10 +129,14 @@ bindchange(e){
inquiry_mode:this.data.current_inquiry_config.inquiry_mode
})
}else if(id==1){
let {hasVideoList,canVideo}=this.data;
this.setData({
inquiry_type:1,
inquiry_mode:2
})
if(hasVideoList && !canVideo){
this.goVideo();
}
}else {
this.setData({
inquiry_type:1,
@ -298,6 +321,26 @@ bindchange(e){
})
},
getVideoDoctorList(){
doctorList({
page:1,
inquiry_type:1,
inquiry_mode:2,
per_page:10
}).then((res)=>{
if(res.data.length==0){
this.setData({
hasVideoList:false
});
}else{
this.setData({
hasVideoList:true
})
}
})
},
getService(id){
doctorService(id).then(res=>{
let doctor_inquiry_config = res;
@ -321,6 +364,18 @@ bindchange(e){
this.setData({
isFinished:true
})
for (let i = 0; i < res.length; i++) {
if(res[i].inquiry_type==1 && res[i].inquiry_mode==6){
this.setData({
service_content: res[i].service_content ,
service_process:res[i].service_process
})
break;
}
}
wx.nextTick(()=>{
this.getHeight()
})
})
},
/**
@ -340,7 +395,8 @@ bindchange(e){
})
this.getDeatil(doctor_id);
this.getService(doctor_id);
this.getEvaluationList()
this.getEvaluationList();
this.getVideoDoctorList();
},

View File

@ -97,7 +97,7 @@
<view class="name">视频问诊</view>
<view class="price">¥{{videoPrice}}/次</view>
</view>
<view class="typebox disable" wx:else>
<view class="typebox disable" wx:else >
<view class="name">视频问诊</view>
<view class="price">暂未开通</view>
</view>
@ -118,12 +118,12 @@
</view>
</view>
<swiper current="{{currentData}}" class="swiperbox" bindchange="bindchange" style="height:{{currentData==0?'350rpx':currentData==1?'700rpx':'530rpx'}}">
<swiper current="{{currentData}}" class="swiperbox" bindchange="bindchange" style="height:{{currentData==0?'350rpx':currentData==1?'700rpx':tab3Height+'rpx'}}">
<swiper-item class="">
<view class="swiper-item">
<image src="{{img_host+'/tuwen_bg.png'}}" class="itembg" wx:if="{{canTuwen}}"></image>
<image src="{{img_host+'/tuwen_bg_disable.png'}}" class="itembg" wx:else></image>
<image src="{{img_host+'/tuwen_bg.png'}}" class="itembg" style="height:auto;" mode="widthFix" wx:if="{{canTuwen}}"></image>
<image src="{{img_host+'/tuwen_bg_disable.png'}}" class="itembg" style="height:auto;" mode="widthFix" wx:else></image>
<view class="itembox">
<view class="title">通过文字、图片、语音进行咨询</view>
<view class="tipbox {{!canTuwen?'active':''}}">
@ -149,8 +149,8 @@
</swiper-item>
<swiper-item>
<view class="swiper-item">
<image src="{{img_host+'/video_bg.png'}}" class="itembg" wx:if="{{canVideo}}"></image>
<image src="{{img_host+'/video_bg_disable.png'}}" class="itembg" wx:else></image>
<image src="{{img_host+'/video_bg.png'}}" class="itembg" style="height:auto;" mode="widthFix" wx:if="{{canVideo}}"></image>
<image src="{{img_host+'/video_bg_disable.png'}}" style="height:auto;" mode="widthFix" class="itembg" wx:else></image>
<view class="itembox">
<view class="title">通过视频面对面进行咨询</view>
<view class="tipbox {{!canVideo?'active':''}}">
@ -190,20 +190,20 @@
</view>
</view>
</swiper-item>
<swiper-item>
<view class="swiper-item">
<image src="{{img_host+'/yinan_bg.png'}}" class="itembg" wx:if="{{canDiffcult}}"></image>
<image src="{{img_host+'/video_bg_disable.png'}}" class="itembg" wx:else></image>
<swiper-item >
<view class="swiper-item" id="swiperitem3">
<image src="{{img_host+'/yinan_bg.png'}}" class="itembg" wx:if="{{canDiffcult}}" style="height:auto;" mode="widthFix"></image>
<image src="{{img_host+'/video_bg_disable.png'}}" class="itembg" style="height:auto;" mode="widthFix" wx:else></image>
<view class="itembox">
<view class="title">通过文字、图片、语音进行咨询</view>
<view class="tipbox {{!canDiffcult?'active':''}}">
<view class="tipmsg">
<view class="circle"></view>
<view class="msg">【医生填写的服务内容】</view>
<view class="msg">{{service_content}}</view>
</view>
<view class="tipmsg">
<view class="circle"></view>
<view class="msg">【医生填写的服务流程】</view>
<view class="msg">{{service_process}}</view>
</view>
<view class="tipmsg">
<view class="circle"></view>
@ -289,6 +289,7 @@
<!-- <view></view> -->
<view class="ask" wx:if="{{(current_inquiry_config && current_inquiry_config.recieveStatus>0) && currentData==0}}" bindtap="handleThrottle" hidden="{{!isFinished}}" data-type="{{currentData}}">立即咨询</view>
<view class="ask" wx:elif="{{canVideo && currentData==1}}" bindtap="handleThrottle" hidden="{{!isFinished}}" data-type="{{currentData}}">立即咨询</view>
<view class="noask" wx:elif="{{!canVideo && currentData==1 && !hasVideoList}}" hidden="{{!isFinished}}" data-type="{{currentData}}">暂不接诊</view>
<view class="ask" wx:elif="{{canDiffcult && currentData==2}}" bindtap="handleThrottle" hidden="{{!isFinished}}" data-type="{{currentData}}">立即咨询</view>
<view class="noask" bindtap="notAsk" data-type="{{currentData}}" wx:else hidden="{{!isFinished}}">{{currentData==0?'暂不接诊':'暂未开通'}}</view>
</view>

View File

@ -598,6 +598,7 @@ border-radius: 50%;
}
.tipbox .tipmsg .msg{
font-size: 28rpx;
white-space: pre-wrap;
color: rgba(0,0,0,0.65);
}
.swiperbox .swiper-item:nth-child(1) .circle{

View File

@ -1,8 +1,8 @@
// pages/orderDetail/orderDetail.js
const app = getApp()
import {cancelOrder,inquiryDetail,inquiryDel,cancelPay} from "../../../api/consultOrder"
import {cancelOrder,inquiryDetail,inquiryDel,cancelPay,getRate} from "../../../api/consultOrder"
import {fllowDoctor,notfllowDoctor} from "../../../api/consultExpert"
import {assignDoctor} from "../../../api/consult"
import {assignDoctor,evaluation} from "../../../api/consult"
import {throttle} from "../../../utils/util"
import Dialog from '@vant/weapp/dialog/dialog';
Page({
@ -15,13 +15,134 @@ Page({
timer:null,
order_inquiry_id:'',
order:null,
showComment:false,
show:false,
is_evaluation:false,
message:'',
fromType:'',
showPadding:false,
prevData:'',
comment:{},
score:5,
img_host:'https://oss.prod.applets.igandanyiyuan.com/applet/patient/static'
},
openComment(){
this.setData({
showComment:true,
})
},
onChangeContent(event) {
this.setData({
[comment.content]: event.detail
})
},
handleEvaluation: throttle(function () {
let{ order_inquiry_id}=this.data;
let doctor_id=this.data.order.user_doctor.doctor_id;
let {
reply_quality,
service_attitude,
reply_progress,
content
} = this.data.comment;
if (reply_quality == '') {
wx.showToast({
title: '请评论回复质量',
icon: "none"
});
return false;
};
if (service_attitude == '') {
wx.showToast({
title: '请评论服务态度',
icon: "none"
});
return false;
};
if (content == '') {
wx.showToast({
title: '请填写您对医生的印象',
icon: "none"
});
return false;
};
if (reply_progress == '') {
wx.showToast({
title: '请评论回复速度',
icon: "none"
});
return false;
};
evaluation({
order_inquiry_id,
doctor_id:doctor_id,
reply_quality,
service_attitude,
reply_progress,
content,
}).then(data => {
this.setData({
showComment: false,
is_evaluation:true
});
wx.showToast({
title: '评价成功',
icon: "none"
})
})
}),
handleClose() {
this.setData({
showComment:false
})
},
onChange(event) {
let obj='comment.'+event.target.dataset.id
this.setData({
[obj]: event.detail
});
let {
reply_quality,
service_attitude,
reply_progress
} = this.data.comment;
if (reply_quality && service_attitude && reply_progress) {
let score = (reply_quality * 0.4) + (service_attitude * 0.3) + (reply_progress * 0.3);
this.setData({
score: Math.floor(score)
})
}
},
//获取星级评价
handleGetRate(id) {
getRate(id).then(data => {
let commentDetail = null;
if (data) {
commentDetail = data
this.setData({
is_evaluation:true,
score:data.avg_score
})
} else {
commentDetail = {
avg_score: 5,
content: "感谢您的服务",
evaluation_id: "",
reply_progress: 5,
reply_quality: 5,
service_attitude: 5
}
this.setData({
is_evaluation:false,
})
}
this.setData({
comment:commentDetail
})
})
},
copy(event){
let text=event.target.dataset.text;
wx.setClipboardData({
@ -323,6 +444,7 @@ Page({
order_inquiry_id:options.order_inquiry_id
});
this.handleinquiryDetail();
this.handleGetRate(options.order_inquiry_id)
},
/**

View File

@ -1,6 +1,10 @@
{
"usingComponents": {
"consult-list":"../../../components/consultList/consultList",
"van-icon": "@vant/weapp/icon/index",
"van-rate": "@vant/weapp/rate/index",
"van-field": "@vant/weapp/field/index",
"van-popup": "@vant/weapp/popup/index",
"dialog":"../../../components/dialog/dialog",
"van-dialog": "@vant/weapp/dialog/index",
"van-count-down": "@vant/weapp/count-down/index"

View File

@ -7,6 +7,7 @@
<view class="page">
<view class="databox {{showPadding?'active':''}}">
<view class="datacell">
<image src="../../../assets/images/addComment.png" mode="" class="comment" bind:tap="openComment" />
<view class="titlebox">
<view class="name">订单信息</view>
@ -42,8 +43,11 @@
<view class="row">
<view class="name">问诊类型</view>
<view class="dot"></view>
<view class="desc" wx:if="{{order.inquiry_type==1}}">专家问诊</view>
<view class="desc" wx:elif="{{order.inquiry_type==2}}">快速问诊</view>
<view class="desc" wx:if="{{order.inquiry_type==1 && order.inquiry_mode==1}}">专家问诊-图文</view>
<view class="desc" wx:elif="{{order.inquiry_type==1 && order.inquiry_mode==2}}">专家问诊-视频</view>
<view class="desc" wx:elif="{{order.inquiry_type==1 && order.inquiry_mode==6}}">专家问诊-疑难会诊</view>
<view class="desc" wx:elif="{{order.inquiry_type==2 && order.inquiry_mode!=7}}">快速问诊</view>
<view class="desc" wx:elif="{{order.inquiry_type==2 && order.inquiry_mode==7}}">快速问诊-附赠回复</view>
<view class="desc" wx:elif="{{order.inquiry_type==3}}">公益问诊</view>
<view class="desc" wx:elif="{{order.inquiry_type==4}}">问诊购药</view>
<view class="desc" wx:elif="{{order.inquiry_type==5}}">糖组检测</view>
@ -180,4 +184,67 @@
</view>
<dialog bind:confirm="confirm" showDialog="{{show}}" message="{{message}}"></dialog>
<van-dialog id="van-dialog" confirm-button-color="#3CC7C0" />
<van-dialog id="van-dialog" confirm-button-color="#3CC7C0" />
<view class="tui-cards-container {{showComment?'':'hide'}}" >
<view class="service-evaluation" >
<view class="header">
<!-- <label>请对本次服务进行评价</label> -->
<van-icon name="cross" class="chatclose" catch:tap="handleClose" />
<!-- <image src="../../../../../static/images/chat_close.png" class="chatclose" catch:tap="handleClose">
</image>-->
</view>
<view class="main">
<view class="doctorInfo">
<image src="{{order.user_doctor.avatar}}" class="doctorAvatar" mode="aspectFill" wx:if="{{order.user_doctor.avatar}}"> </image>
<image src="{{img_host+'/doctor_avatar.png'}}" class="doctorAvatar" wx:else> </image>
<view class="namebox">
<view class="name">{{order.user_doctor.user_name}}</view>
<view class="position" wx:if="{{order.user_doctor.doctor_title}}">{{order.user_doctor.doctor_title}}</view>
</view>
<view class="viewstar">
<van-rate value="{{ score }}" size="{{ 26 }}" color="#ed9c00" void-icon="star" void-color="#eee" bind:change="onChange" gutter="16" readonly />
</view>
</view>
<view class="linebox">
<view class="line"></view>
<view class="pingjia">非常满意</view>
<view class="line"></view>
</view>
<view class="ratebox">
<view class="starbox">
<view class="name"> 回复质量</view>
<van-rate value="{{comment.reply_quality}}" size="{{ 20 }}" color="#ed9c00" void-icon="star" void-color="#eee" bind:change="onChange" gutter="8" data-id="reply_quality" readonly="{{is_evaluation}}" />
<view class="quality" wx:if="{{comment.reply_quality>=4}}">好评</view>
<view class="quality" wx:elif="{{comment.reply_quality==3}}">中评</view>
<view class="quality" wx:else="{{comment.reply_quality<=2}}">差评</view>
</view>
<view class="starbox">
<view class="name"> 服务态度</view>
<van-rate value="{{comment.service_attitude}}" size="{{ 20 }}" color="#ed9c00" void-icon="star" void-color="#eee" bind:change="onChange" gutter="8" data-id="service_attitude" readonly="{{is_evaluation}}" />
<view class="quality" wx:if="{{comment.service_attitude>=4}}">好评</view>
<view class="quality" wx:elif="{{comment.service_attitude==3}}">中评</view>
<view class="quality" wx:else="{{comment.service_attitude<=2}}">差评</view>
</view>
<view class="starbox">
<view class="name">回复速度</view>
<van-rate value="{{comment.reply_progress}}" size="{{ 20 }}" color="#ed9c00" void-icon="star" void-color="#eee" bind:change="onChange" gutter="8" data-id="reply_progress" readonly="{{is_evaluation}}"/>
<view class="quality" wx:if="{{comment.reply_progress>=4}}">好评</view>
<view class="quality" wx:elif="{{comment.reply_progress==3}}">中评</view>
<view class="quality" wx:else="{{comment.reply_progress<=2}}">差评</view>
</view>
</view>
<van-field maxlength="200" class="commentArea" input-class="ipt" custom-style="height: 240rpx; border-radius: 10rpx;background: #fff;border:1px solid #ccc;" placeholder="请您对本次服务进行评价" show-word-limit value="{{ comment.content }}" label="" type="textarea" border="{{ false }}" bind:change="onChangeContent" disabled="{{is_evaluation}}"></van-field>
</view>
<view class="footer">
<!-- bind:tap="sendMessage" -->
<button class="btn" type="primary" bindtap="handleEvaluation" disabled="{{is_evaluation}}">匿名评价</button>
</view>
</view>
</view>

View File

@ -433,4 +433,203 @@ color: #333333;
.fenpeitip{
font-size: 28rpx;
color: #333333;
}
}
.datacell{
position: relative;
}
.comment{
top:340rpx;
right:0rpx;
width:234rpx;
height:80rpx;
position: absolute;
}
.tui-cards-container {
position: fixed;
width: 100vw;
height: 100vh;
z-index:9999999;
top: 0;
background: rgba(0, 0, 0, 0.5);
display: flex;
align-items: flex-end;
}
.tui-cards-container.hide{
display: none;
}
.service-evaluation {
flex: 1;
background: #FFFFFF;
padding: 38rpx 40rpx 38rpx;
border-radius: 40rpx 40rpx 0 0;
}
.header {
display: flex;
justify-content: space-between;
font-family: PingFangSC-Regular;
}
.btn {
width: auto !important;
padding: 0;
margin: 0 !important;
background: none;
}
.header label {
font-size: 18px;
color: #000000;
letter-spacing: 0;
line-height: 25px;
}
.van-field__body--textarea{
width:600rpx;
}
.header .btn {
font-size: 16px;
color: #006EFF;
letter-spacing: 0;
line-height: 24px;
}
.main {
display: flex;
flex-direction: column;
padding: 8rpx 0 38rpx;
}
.main-evaluation-score {
padding: 0 60rpx 48rpx;
display: flex;
justify-content: space-between;
align-items: flex-end;
}
.main-evaluation-score .score-star {
width: 72rpx;
height: 72rpx;
}
.main textarea {
background: #F8F8F8;
border: 0 solid #D9D9D9;
border-radius: 4px;
font-size: 14px;
padding: 16rpx 32rpx;
}
.textarea-placeholder {
color: #B0B0B0;
}
.footer .btn{
height: 80rpx;
width:100%;
background: #3CC7C0;
color:#fff;
display: flex;
font-size: 30rpx;
align-items: center;
justify-content: center;
border-radius: 10rpx
}
.chatclose {
width: 30rpx;
height: 30rpx;
position: absolute;
padding:10rpx 30rpx;
right: 10rpx;
}
.doctorInfo {
display: flex;
flex-direction: column;
align-items: center;
}
.doctorAvatar {
width: 120rpx;
height: 120rpx;
border-radius: 50%;
}
.tui-cards-container .namebox {
display: flex;
margin-top: 18rpx;
align-items: center!important;
justify-content: center;
}
.tui-cards-container .namebox .name {
color: #333333;
font-size: 32rpx;
font-weight: normal;
}
.viewstar {
margin-top: 28rpx;
}
.tui-cards-container .namebox .position {
color: #333333;
font-size: 24rpx;
margin-left: 8rpx;
}
.linebox{
display: flex;
margin-top: 20rpx;
align-items: center;
}
.linebox .line {
flex: 1;
height:1rpx;
background: #CCCCCC;
}
.linebox .pingjia {
margin: 0 40rpx;
font-weight: 600;
color: #333333;
}
.starbox{
margin-bottom: 30rpx;
display: flex;
align-items: center;
color: #333333;
font-size: 28rpx;
}
.ratebox{
margin-top: 34rpx;
}
.starbox .name{
margin-right:22rpx;
}
.starbox .quality{
margin-left:22rpx;
}
.ipt{
height:165rpx;
background-color: transparent!important;
padding:8rpx!important;
}
.commentArea{
position: relative;
}
.commentArea .van-field__word-limit{
position: absolute!important;
left:10rpx;
right:10rpx;
text-align: right;
bottom:5rpx;
color: #ccc!important;
font-size: 24rpx;
}
.commentArea textarea{
min-height:200rpx;
}

View File

@ -16,7 +16,9 @@
</view>
<view class="row">
<!-- 1:专家问诊 2:快速问诊 3:公益问诊 4:问诊购药 -->
<view class="name" wx:if="{{inquiry_type==1}}">专家问诊</view>
<view class="name" wx:if="{{inquiry_type==1 && inquiry_mode==1}}">专家问诊-图文</view>
<view class="name" wx:elif="{{inquiry_type==1 && inquiry_mode==2}}">专家问诊-视频</view>
<view class="name" wx:elif="{{inquiry_type==1 && inquiry_mode==6}}">专家问诊-疑难会诊</view>
<view class="name" wx:elif="{{inquiry_type==2}}">快速问诊</view>
<view class="name" wx:elif="{{inquiry_type==3}}">公益问诊</view>
<view class="name" wx:elif="{{inquiry_type==4}}">问诊购药</view>

View File

@ -57,12 +57,7 @@
</view>
</view>
<!-- <view class="consultbox">
<view class="price" wx:if="{{moduleFilter.formatInquiryType(item.doctor_inquiry_config)==1}}">公益问诊:<text>¥{{item.free_clinic_price}}</text></view>
<view class="price" wx:elif="{{moduleFilter.formatInquiryType(item.doctor_inquiry_config)==2}}">专家问诊:<text>¥{{item.price}}</text></view>
<view class="price" wx:else></view>
</view> -->
</view>
</view>
</view>

View File

@ -76,7 +76,7 @@ color: #333333;
display: flex;
overflow: hidden;
box-sizing: border-box;
padding:40rpx 30rpx 30rpx;
padding:40rpx 0rpx 30rpx;
width:100%;
border-radius: 10rpx;
background-color: #fff;

View File

@ -0,0 +1,115 @@
// patient/pages/videoList/videoList.js
const app = getApp()
import {doctorList} from "../../../api/consultExpert"
Page({
/**
* 页面的初始数据
*/
data: {
page:1,
pageNumber:10,
lock:false,
doctorList:[],
img_host:'https://oss.prod.applets.igandanyiyuan.com/applet/patient/static',
},
goExpertDetail(event){
app.method.navigateTo({
url: '/patient/pages/expertDetail/expertDetail?doctor_id='+event.currentTarget.dataset.doctorid
})
},
onfresh(){
this.setData({
page:1,
doctorList:[],
lock:false
})
this.getDoctorList();
},
lower(e) {
let {lock}=this.data;
let addPage=this.data.page+1;
if(!lock){
this.setData({
page:addPage
});
this.getDoctorList();
}
},
getDoctorList(){
let {page,pageNumber}=this.data;
doctorList({
page:page,
inquiry_type:1,
inquiry_mode:2,
per_page:pageNumber
}).then((res)=>{
let {doctorList}=this.data;
if(res.data.length==0){
this.setData({
lock:true
});
return false;
}else{
this.setData({
doctorList:doctorList.concat(res.data)
})
}
})
},
/**
* 生命周期函数--监听页面加载
*/
onLoad(options) {
this.getDoctorList();
},
/**
* 生命周期函数--监听页面初次渲染完成
*/
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,46 @@
<!--patient/pages/videoList/videoList.wxml-->
<wxs src="../../../filters/filter.wxs" module="moduleFilter"></wxs>
<nav navName="视频服务"></nav>
<view class="page">
<view class="scrollwraper">
<scroll-view scroll-y style="width: 100%;height:100%" lower-threshold="200" bindscrolltolower="lower">
<view wx:if="{{doctorList.length>0}}" style="margin:0 30rpx">
<view class="viewcell" bindtap="goExpertDetail" wx:for="{{doctorList}}" wx:key="doctor_id" data-doctorid="{{item.doctor_id}}">
<view class="left">
<image src="{{item.avatar}}" mode="aspectFill" wx:if="{{item.avatar}}"></image>
<image src="{{img_host+'/doctor_avatar.png'}}" wx:else></image>
<view class="onlinebox" wx:if="{{item.user.is_online==1}}">
<image src="{{img_host+'/online.gif'}}" mode="" class="icon"/>
</view>
</view>
<view class="right">
<view class="namebox">
<view class="name">{{item.user_name}}</view>
<view class="type" wx:if="{{item.hospital.hospital_level_name != '未知'&& item.hospital.hospital_level_name}}">{{item.hospital.hospital_level_name}}</view>
<view class="type" wx:if="{{item.multi_point_status == 1 && moduleFilter.formatChufang(item.doctor_inquiry_config)}}">可处方</view>
</view>
<view class="hospital"><text class="doctor_title" wx:if="{{item.doctor_title_name}}">{{item.doctor_title_name}}</text><text>{{item.department_custom_name}}</text></view>
<view class="hospital">{{item.hospital.hospital_name}}</view>
<view class="goodjob" wx:if="{{item.be_good_at}}">擅长:{{item.be_good_at}}</view>
<!-- <view class="diseaseType" wx:for="{{item.doctor_expertise}}" wx:for-item="cell" wx:key="expertise_id">{{cell.expertise_name}}</view> -->
<!-- <view class="detail">
<view>好评率: <text>{{item.praise_rate}} </text> </view>
<view>服务患者数: <text>{{item.served_patients_num}}</text></view>
<view>平均回复: <text> {{item.avg_response_time}}</text></view>
</view> -->
<view class="consultbox">
<view class="price" wx:for="{{item.doctor_inquiry_config}}" wx:for-item="itemName" wx:if="{{((itemName.inquiry_type==1 && !(moduleFilter.hasFree(item.doctor_inquiry_config) && itemName.inquiry_mode==1 ) && (itemName.inquiry_mode==1 || itemName.inquiry_mode==2) ) || itemName.inquiry_type==3 && itemName.is_enable==1)}}">
<view class="pricecell" wx:if="{{itemName.inquiry_type==3 }}">图文问诊:<text>¥{{itemName.inquiry_price}}</text><text wx:if="{{moduleFilter.formatPrice(item.doctor_inquiry_config)}}" class="expert_prcie">¥{{moduleFilter.formatPrice(item.doctor_inquiry_config)}}</text></view>
<view class="pricecell" wx:elif="{{itemName.inquiry_type==1 && !(moduleFilter.hasFree(item.doctor_inquiry_config) && itemName.inquiry_mode==1) && (itemName.inquiry_mode==1 || itemName.inquiry_mode==2) }}" > {{itemName.inquiry_mode==1?'图文问诊':itemName.inquiry_mode==2?'视频问诊':'其他问诊'}}<text class="{{(itemName.is_enable==0 && itemName.inquiry_mode==2)?'priceactive':'' }}">¥{{itemName.inquiry_price}}</text></view>
</view>
</view>
</view>
</view>
</view>
<view class="nonedata" wx:elif="{{doctorList.length==0}}">暂无数据!</view>
</scroll-view>
</view>
</view>

View File

@ -0,0 +1,200 @@
/* patient/pages/videoList/videoList.wxss *//* pages/search/search.wxss */
.page{
background: #fff;
display: flex;
flex-direction: column;
}
.searchIpt{
font-size: 28rpx;
font-weight: 400;
color: #999999;
}
.listUl{
margin:30rpx 32rpx 0;
display: flex;
flex-wrap: wrap;
}
.listUl .cell{
width: 154rpx;
padding:0 10rpx;
box-sizing: border-box;
margin-right: 23rpx;
margin-bottom: 30rpx;
text-align: center;
line-height: 60rpx;
height: 60rpx;
background: #F4F4F4;
border-radius: 30rpx;
font-size: 28rpx;
color: #666666;
white-space: nowrap;
text-overflow: ellipsis;
overflow: hidden;
}
.titlebox{
margin:30rpx 32rpx 0;
display: flex;
align-items: center;
justify-content: space-between;
}
.titlebox .del{
width:32rpx;
height:32rpx;
}
.titlebox .name{
font-size: 28rpx;
color: #333333;
}
.listUl .cell:nth-child(4n){
margin-right: 0rpx;
}
.viewcell{
display: flex;
overflow: hidden;
box-sizing: border-box;
padding:40rpx 0rpx 30rpx;
width:100%;
border-radius: 10rpx;
background-color: #fff;
border-bottom: 1rpx solid #E7E7E7;
}
.viewcell .type{
height: 32rpx;
margin-bottom: 6rpx;
line-height: 32rpx;
display: flex;
white-space: nowrap;
align-items: center;
margin-left: 18rpx;
padding:0rpx 6rpx;
background: #ED9C00;
border-radius: 4rpx;
color: #FFFFFF;
font-size: 24rpx;
}
.doctor_title{
margin-right: 10rpx;
}
.viewcell .hospital{
margin-top: 12rpx;
color: #333333;
word-break: keep-all;
font-size: 30rpx;
}
.goodjob{
color: #666666;
margin-top: 28rpx;
line-height: 42rpx;
font-size: 28rpx;
word-break: break-all;
text-overflow: ellipsis;
display: -webkit-box;
-webkit-box-orient: vertical;
-webkit-line-clamp: 2; /* 这里是超出几行省略 */
overflow: hidden;
}
.price{
font-size: 24rpx;
}
.price text{
margin-left: 5rpx;
font-size: 34rpx;
color:#EF4F20;
}
.viewcell .right{
flex:1;
margin-left: 20rpx;
}
.viewcell image{
width:80rpx;
height:80rpx;
border-radius:50%;
}
.namebox{
display: flex;
font-size: 34rpx;
font-weight: 600;
color:#333;
align-items: flex-end;
}
.namebox .position{
font-weight: normal;
margin-left: 15rpx;
font-size: 30rpx;
}
.diseaseType{
height: 40rpx;
background: #E2FFFE;
border-radius: 20rpx;
margin-right: 20rpx;
border: 1rpx solid #3CC7C0;
color: #3CC7C0;
font-size: 24rpx;
display: inline-flex;
text-align: center;
padding:0 15rpx;
align-items: center;
justify-content: center;
margin-top: 20rpx;
white-space: nowrap;
}
.detail{
margin-top: 20rpx;
display: flex;
font-size: 24rpx;
}
.detail view{
margin-right:40rpx;
}
.detail view text{
font-size: 28rpx;
color:#3CC7C0;
}
.consultbox{
height: 60rpx;
margin-top: 28rpx;
display: flex;
align-items: center;
justify-content: space-between;
}
.consult{
height: 60rpx;
background: #3CC7C0;
border-radius: 30rpx;
color: #FFFFFF;
display: flex;
align-items: center;
padding:0 20rpx;
font-size: 30rpx;
}
.wraper{
display: flex;
flex-direction: column;
}
.scrollwraper{
margin-top: 172rpx;
flex: 1;
overflow-y: scroll;
-webkit-overflow-scrolling: touch;
}
.viewcell .left{
position: relative;
}
.price .expert_prcie{
text-decoration: line-through;
color:#999;
}
.price .expert_prcie .priceactive{
color:#999;
}
.pricecell{
display: flex;
align-items: center;
white-space: nowrap;
}