4.12更新

This commit is contained in:
zoujiandong 2024-04-12 09:01:31 +08:00
parent 17c32e24bf
commit aa2231f256
27 changed files with 4006 additions and 60 deletions

19
api/health.js Normal file
View File

@ -0,0 +1,19 @@
import {request} from '../utils/request.js'
function getItems(id){ //获取地址
return request('/doctor/inquiry/service/follow/item/'+id,'GET',{},true)
};
function getServiceDetail(data){
return request('/patient/service/detail','GET',data,true)
}
function createServiceOrder(data){
return request('/patient/service','POST',data,true)
}
module.exports={
getItems,
getServiceDetail,
createServiceOrder
}

View File

@ -95,7 +95,9 @@
"pages/healthyDetail/healthyDetail",
"pages/visitDetail/visitDetail",
"pages/healthyOrder/healthyOrder",
"pages/healthyOrderDetail/healthyOrderDetail"
"pages/healthyOrderDetail/healthyOrderDetail",
"pages/writeSick/writeSick",
"pages/visitList/visitList"
],
"independent": true
}

View File

@ -26,7 +26,7 @@ Component({
},
goInquirtForm(){
wx.navigateTo({
url: '/healthyService/pages/healthyIntro/healthyIntro',
url: '/healthyService/pages/visitList/visitList',
})
}
},

View File

@ -202,7 +202,21 @@ function hasTuWen(arr){
}
return false
}
function formatHealthPrcice(arr){
var price=null;
if(arr){
for (var i = 0; i < arr.length; i++) {
if(arr[i].inquiry_type==1 && arr[i].inquiry_mode==8){
return arr[i].inquiry_price;
}
}
}
return price
};
module.exports = {
formatHealthPrcice:formatHealthPrcice,
formatwenzhenList:formatwenzhenList,
formatChufang:formatChufang,
formatPrice:formatPrice,

View File

@ -1,4 +1,7 @@
// healthyService/pages/healthyDetail/healthyDetail.js
import {doctorDetail} from "../../../api/consultExpert"
import {family,addfamily} from "../../../api/familyDoc";
import {getServiceDetail,getItems} from "../../../api/health"
import {throttle} from "../../../utils/util"
const app = getApp()
Page({
@ -7,14 +10,277 @@ Page({
* 页面的初始数据
*/
data: {
img_host:app.hostConfig().imghost
active:0,
img_host:app.hostConfig().imghost,
doctor_id:'',
currentData:0,
inquiry_mode:8,
inquiry_type:1,
current_price:'',
avatar: '',
user_name: '',
doctor_title: '',
doctor_id: '',
doctor_title_name:'',
user_id:'',
is_online:'0',
hospital: null,
priceList:[],
show:false,
currentFamilyId:'',
realName:'',
idCard:'',
phoneNumber:'',
relationId:'',
sex:'',
service_type:1,
chat_id:'',
},
inputChange(e) {
this.setData({
[e.target.dataset.id]: e.detail.value
})
},
goNext:throttle(function() {
this.handleGetServiceDetail();
}),
addFamily() {
let {
realName,
idCard,
phoneNumber,
relationId,
sex
} = this.data;
addfamily({
card_name: realName,
type: 1,
id_number: idCard,
mobile: phoneNumber,
is_default: 0,
relation: relationId
}).then((data) => {
this.getFamily();
this.setData({
currentFamilyId:data.family_id,
realName:'',
idCard:'',
phoneNumber:'',
relationId:'',
relation:'',
showAdd:false
})
})
},
showPatient(){
this.setData({
show:true
})
},
addPatient() {
this.setData({
showAdd: true,
currentFamilyId: '',
sex: ''
})
},
selectPatient(e) {
let currentFamilyId=e.currentTarget.dataset.familyid;
let sex=e.currentTarget.dataset.sex;
let name=e.currentTarget.dataset.name;
let age=e.currentTarget.dataset.age;
this.setData({
currentFamilyId:currentFamilyId,
sex:sex
})
},
transforpage(arr) {
const pages = []
let newArr = arr.concat([{
type: "add"
}])
newArr.forEach((item, index) => {
const page = Math.floor(index / 2)
if (!pages[page]) {
pages[page] = []
}
pages[page].push(item)
});
return pages
},
confirmNext() {
if (!/^[\u4e00-\u9fa5]+(·[\u4e00-\u9fa5]+)*$/.test(this.data.realName)) {
wx.showToast({
title: `姓名要求在2-10个字符`,
icon: 'none',
});
return false;
};
if (!/(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)/.test(this.data.idCard)) {
wx.showToast({
title: `请输入有效的身份证号`,
icon: 'none',
});
return false;
};
if (!/^1[3456789]\d{9}$/.test(this.data.phoneNumber)) {
wx.showToast({
title: `请输入有效的手机号码!`,
icon: 'none',
});
return false;
}
},
getFamily() {
family().then((data) => {
this.setData({
family: this.transforpage(data)
})
})
},
goSick:throttle(function() {
if (!/^([\u4e00-\u9fa5\·]{2,10})$/.test(this.data.realName)) {
wx.showToast({
title: `姓名要求在2-10个汉字`,
icon: 'none',
});
return false;
};
if (!/(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)/.test(this.data.idCard)) {
wx.showToast({
title: `请输入有效的身份证号`,
icon: 'none',
});
return false;
};
if (this.data.phoneNumber) {
if (!/^1[3456789]\d{9}$/.test(this.data.phoneNumber)) {
wx.showToast({
title: `请输入有效的手机号码!`,
icon: 'none',
});
return false;
}
};
let idInfo = this.getIdInfo(this.data.idCard);
if (idInfo.age < 6) {
wx.showToast({
title: `六岁以下儿童不支持线上问诊`,
icon: 'none',
});
return false;
}
this.setData({
sex:idInfo.sex
})
this.addFamily()
}),
//获取身份证号信息
getIdInfo(IdCard) {
var reg = /(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)/;
if (reg.test(IdCard)) {
let sex
if (parseInt(IdCard.substr(16, 1)) % 2 === 1) {
sex = '1'
} else {
sex = '2'
}
var ageDate = new Date()
var month = ageDate.getMonth() + 1
var day = ageDate.getDate()
var age = ageDate.getFullYear() - IdCard.substring(6, 10) - 1
if (IdCard.substring(10, 12) < month || (IdCard.substring(10, 12) === month && IdCard.substring(12, 14) <= day)) {
age++
}
if (age <= 0) {
age = 1
}
return {
sex,
age
}
} else {
return false;
}
},
onClose() {
this.setData({
show: false
});
},
onCloseAdd() {
this.setData({
showAdd: false
});
},
getDeatil(id) {
doctorDetail(id).then((res) => {
for (const key in this.data) {
if (res[key]) {
this.setData({
[key]: res[key]
})
}
};
this.setData({
chat_id:res.user_id
})
})
},
handleGetServiceDetail(){
let {doctor_id,currentFamilyId,service_type,follow_package_item_id,chat_id,sex,inquiry_mode,inquiry_type}=this.data;
getServiceDetail({
doctor_id,
family_id:currentFamilyId,
service_type,
follow_package_item_id
}).then((res)=>{
if(res.status==1){
app.method.navigateTo({
url:'/healthyService/pages/writeSick/writeSick?doctor_id='+doctor_id+"&family_id="+currentFamilyId+"&chat_id="+chat_id+"&inquiry_type="+inquiry_type+"&sex="+sex+"&inquiry_mode="+inquiry_mode+"&package_id="+follow_package_item_id
})
}else if(res.status==2){
}else if(res.status==3){
app.method.navigateTo({
url:'/patient/pages/expertDetail/expertDetail?doctor_id='+doctor_id
})
}else if(res.status==4){
}else if(res.status==5){
}
})
},
showPatient(){
this.setData({
show:true
})
},
/**
* 生命周期函数--监听页面加载
*/
onLoad(options) {
this.setData({
doctor_id:options.doctor_id,
current_price:options.price
})
this.getDeatil(options.doctor_id);
this.getFamily();
},
/**

View File

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

View File

@ -2,6 +2,24 @@
<nav navName="健康包服务详情"></nav>
<view class="page">
<image src="{{img_host+'/mybg.png'}}" mode="widthFix" class="dcimg" lazy-load/>
<view class="viewcell" >
<view class="left">
<image src="{{avatar}}" wx:if="{{avatar}}" mode="aspectFill" class="headimg"></image>
<image src="{{img_host+'/doctor_avatar.png'}}" class="headimg" wx:else></image>
<view class="onlinebox" wx:if="{{user.is_online==1}}">
<image src="{{img_host+'/online.gif'}}" mode="" class="icon"/>
</view>
</view>
<view class="right">
<view class="namebox">
<view class="name">{{user_name}}</view>
<view class="type" wx:if="{{hospital.hospital_level_name != '未知'&& hospital.hospital_level_name}}">{{hospital.hospital_level_name}}</view>
<view class="type" wx:if="{{multi_point_status == 1 && multi_point_enable==1}}">可处方</view>
</view>
<view class="hospital"><text class="hospital_name" wx:if="{{doctor_title_name}}">{{doctor_title_name}}</text> <text wx:if="{{item.department_custom_name}}">{{item.department_custom_name}}</text></view>
<view class="hospital"><text class="hospital_name" >{{hospital.hospital_name}}</text></view>
</view>
</view>
<view class="detailbox">
<view class="quanyi">
<image src="../../static/images/quanyi.png" class="quanyiImg"/>
@ -62,6 +80,76 @@
</view>
</view>
<view class="buttonbox">
<view class="btn">立即购买¥XX.XX</view>
<view class="btn" bind:tap="showPatient">立即购买:¥{{current_price}}</view>
</view>
</view>
</view>
<van-popup show="{{ show }}" bind:close="onClose" closeable
position="bottom" round
custom-style="min-height: 60%">
<view class="titlepop">选择患者</view>
<view class="personbox">
<view class="row" wx:for-item="itemName" wx:for="{{family}}" wx:key="*this">
<view class="cell" wx:for-item="item" wx:for="{{itemName}}" wx:key="family_id">
<view class="cellinner" wx:if="{{!item.type}}" bindtap="selectPatient" data-familyId="{{item.family_id}}" data-sex="{{item.sex}}">
<view class="person">
<view class="name">{{item.card_name}}</view>
<view class="tag" wx:if="{{item.relation==1}}">本人</view>
<view class="tag" wx:elif="{{item.relation==2}}">父母</view>
<view class="tag" wx:elif="{{item.relation==3}}">爱人</view>
<view class="tag" wx:elif="{{item.relation==4}}">子女</view>
<view class="tag" wx:elif="{{item.relation==5}}">亲戚</view>
<view class="tag" wx:elif="{{item.relation==6}}">其他</view>
</view>
<view class="desc">
<view class="sex" wx:if="{{item.sex===0}}">性别未知</view>
<view class="sex" wx:elif="{{item.sex==1}}">男</view>
<view class="sex" wx:else>女</view>
<view class="age">{{item.age}}岁</view>
</view>
<image src="{{img_host+'/gou.png'}}" class="gou" wx:if="{{item.family_id==currentFamilyId}}"></image>
</view>
<view class="celladd" bindtap="addPatient" wx:elif="{{item.type}}">
+新建患者
</view>
</view>
</view>
</view>
<view class="btnbox">
<button class="btn" plain="true" disabled="{{currentFamilyId?false:true}}" bindtap="goNext">下一步</button>
</view>
</van-popup>
<van-popup show="{{showAdd}}" round closeable z-index="999" position="bottom" custom-style="height:{{height}}rpx" bind:close="onCloseAdd">
<view class="infobox">
<view class="title">新建患者</view>
<view class="info">
<view class="name">真实姓名<text>*</text></view>
<input value="{{realName}}" type="text" bindinput="inputChange" placeholder="请输入真实姓名" data-id="realName"/>
</view>
<view class="info">
<view class="name">身份证号<text>*</text></view>
<input value="{{idCard}}" type="idcard" bindinput="inputChange" placeholder="请输入真实身份证号" data-id="idCard"/>
</view>
<view class="info">
<view class="name">联系电话</view>
<input value="{{phoneNumber}}" type="number" bindblur="onblur" bindfocus="onfocus" cursor-spacing="100" bindinput="inputChange" bindinput="inputChange" placeholder="请输入联系电话" data-id="phoneNumber"/>
</view>
<view class="info" bindtap="openPicker">
<view class="name">患者关系</view>
<input type="text" value="{{relation}}" placeholder="请选择与患者的关系" disabled="true" />
</view>
<view class="tip">
<view class="warntitle">温馨提示:</view>
<view class="warn">
<view>1、根据国家卫健委要求,就医实行实名制,请如实填写患者信息。</view>
<view>2、信息受隐私保护仅接诊医生可见。
</view>
<view>3、6岁以下儿童不支持线上问诊请到线下就诊。
</view>
</view>
</view>
<view class="next" bindtap="goSick">
确定
</view>
</view>
</van-popup>

View File

@ -23,7 +23,7 @@ page{
flex:1;
display: flex;
flex-direction: column;
margin-top: 200rpx;
margin:0rpx;
background: #FFFFFF;
border-radius: 32rpx 32rpx 0rpx 0rpx;
}
@ -85,4 +85,273 @@ align-items: center;
justify-content: center;
line-height: 50rpx;
text-align: center;
}
}
.viewcell{
display: flex;
background-color: #fff;
margin:30rpx;
padding:20rpx;
box-shadow: 0rpx 8rpx 20rpx 2rpx rgba(0,0,0,0.04);
border-radius: 10rpx;
}
.headimg{
width:120rpx;
height:120rpx;
border-radius: 50%;
}
.viewcell .type{
height: 32rpx;
margin-bottom: 6rpx;
line-height: 32rpx;
display: flex;
white-space: nowrap;
align-items: center;
margin-left: 18rpx;
padding:0rpx 6rpx;
background: #ED9C00;
border-radius: 4rpx;
color: #FFFFFF;
font-size: 24rpx;
}
.viewcellbox .hospital{
margin-top: 12rpx;
color: #333333;
display: flex;
font-size: 30rpx;
word-wrap: break-word;
}
.hospital_name{
font-size: 28rpx;
word-wrap: break-word;
margin-right: 10rpx;
overflow: hidden;
white-space: nowrap;
color:#333;
text-overflow: ellipsis;
}
.viewcell .right{
flex:1;
margin-left: 20rpx;
}
.namebox{
display: flex;
font-size: 34rpx;
font-weight: 600;
color:#333;
align-items: flex-end;
}
.personbox {
border-radius: 10rpx;
background-color: #fff;
padding: 40rpx 20rpx 144rpx;
overflow-y: scroll;
}
.personbox .row {
margin-top: 30rpx;
display: flex;
justify-content: space-between;
}
.personbox .row:first-child {
margin-top: 0;
}
.personbox .row .cell {
position: relative;
width: 47%;
height: 120rpx;
display: flex;
flex-direction: column;
justify-content: center;
margin-left: 30rpx;
border-radius: 10rpx;
border: 1px solid #CCCCCC;
}
.personbox .row .cell:first-child {
margin-left: 0rpx;
}
.personbox .person {
display: flex;
margin: 0 25rpx;
align-items: center;
}
.personbox .tag {
margin-left: 32rpx;
font-size: 24rpx;
display: flex;
align-items: center;
line-height: 24rpx;
justify-content: center;
color: #666666;
width: 80rpx;
height: 32rpx;
border-radius: 4rpx;
transform: rotateZ(360deg);
border: 1rpx solid #979797;
}
.personbox .desc {
display: flex;
margin: 0 25rpx;
font-size: 28rpx;
color: #666;
margin-top: 3px;
}
.personbox .name {
white-space: nowrap;
overflow: hidden;
max-width: 200rpx;
text-overflow: ellipsis;
font-size: 34rpx;
color: #333;
}
.personbox .age {
margin-left: 12rpx;
}
.personbox .cell .gou {
position: absolute;
bottom: -1rpx;
right: 0rpx;
width: 66rpx;
height: 53.7rpx;
}
.personbox .add {
justify-content: center;
align-items: center;
font-size: 34rpx;
color: #333;
}
.own .add.disabled{
color: #999;
}
.titlepop{
font-size: 34rpx;
font-weight: 400;
color: #333333;
padding:40rpx 0;
text-align: center;
width:100%;
border-bottom:1rpx solid #E7E7E7;
}
.van-icon-cross {
color: #333;
font-size: 40rpx !important;
}
.infobox {
margin-top: 40rpx;
}
.info {
border-bottom: 1rpx solid #E7E7E7;
display: flex;
align-items: center;
height: 112rpx;
color: #333333;
}
.infobox .title {
border-bottom: 1rpx solid #E7E7E7;
text-align: center;
font-size: 34rpx;
padding-bottom: 35rpx;
}
.info .name {
white-space: nowrap;
width: 180rpx;
display: flex;
align-items: center;
margin-left: 52rpx;
color: #333333;
font-size: 34rpx;
}
.info text {
margin-top: 20rpx;
color:#E34D59;
display: flex;
align-items: center;
}
.info input {
margin-left: 15rpx;
margin-right: 52rpx;
flex: 1;
}
.input-placeholder {
color: #999999;
font-size: 28rpx;
}
.tip{
padding:30rpx 52rpx 20rpx;
}
.warntitle{
color: #E34D59;
font-size: 28rpx;
}
.warn{
margin-top: 20rpx;
font-size: 24rpx;
line-height: 36rpx;
color: #666666;
}
.next{
display: flex;
align-items: center;
justify-content: center;
height: 94rpx;
font-size: 36rpx;
left: 30rpx;
right: 30rpx;
margin:0 52rpx;
border-radius: 47rpx;
color: #fff;
margin-bottom: 40rpx;
background: #3CC7C0;
}
.celladd{
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
height: 120rpx;
}
.btnbox{
position: fixed;
width:100%;
bottom:0rpx;
height: 134rpx;
background:#fff;
}
.btnbox .btn{
border-radius: 47rpx;
border:none;
background: #3CC7C0!important;
margin:0 32rpx;
height: 94rpx;
display: flex;
justify-content: center;
align-items: center;
font-size: 36rpx;
color: #FFFFFF!important;
}
.btnbox .btn[disabled]{
color: #000000!important;
background:rgba(0,0,0,0.1)!important;
}

View File

@ -1,5 +1,6 @@
// healthyService/pages/healthyIntro/healthyIntro.js
import {throttle} from "../../../utils/util"
import {doctorList} from "../../../api/consultExpert"
const app = getApp()
Page({
@ -7,12 +8,107 @@ Page({
* 页面的初始数据
*/
data: {
blockHeight:"150rpx"
blockHeight:"150rpx",
type:'',
doctorList:[],
page:1,
pageNumber:10,
isTriggered:false,
show:false,
expertise_id:'',
province_id:'',
city_id:'',
keyword:'',
lock:false,
is_online:0,
sort_order:1,
inquiry_type:'1',
inquiry_mode:'8',
},
goDetail:throttle(function(){
app.method.navigateTo({
url: '/healthyService/pages/visitDetail/visitDetail',
//url: '/healthyService/pages/healthyDetail/healthyDetail',
handleRefresher(){
this.setData({
lock:false,
page:1,
doctorList:[]
});
this.getDoctorList()
},
goExpertDetail:throttle(function(e){
let {doctorid,price}=e.currentTarget.dataset;
if(price){
app.method.navigateTo({
url:'/healthyService/pages/healthyDetail/healthyDetail?doctor_id='+doctorid+"&price="+price
})
}
else{
app.method.navigateTo({
url:'/healthyService/pages/healthyDetail/healthyDetail?doctor_id='+doctorid+"&price="+price
})
wx.showToast({
title: '未设置健康包价格',
icon:'none'
})
}
}),
getDoctorList(){
let {expertise_id,province_id, city_id,sort_order,keyword,page,pageNumber,is_online,inquiry_type,inquiry_mode}=this.data;
doctorList({
expertise_id:expertise_id,
province_id:province_id,
city_id:city_id,
sort_order: sort_order,
is_first_online:is_online,
keyword:keyword,
inquiry_type,
inquiry_mode,
page:page,
per_page:pageNumber
}).then((res)=>{
let {doctorList}=this.data;
if(res.data.length==0){
this.setData({
lock:true,
isTriggered:false
});
return false;
}else{
this.setData({
isTriggered:false,
doctorList:doctorList.concat(res.data)
})
}
})
},
onfresh(){
this.setData({
page:1,
doctorList:[],
lock:false
})
this.getDoctorList();
},
lower(e) {
let {lock}=this.data;
let addPage=this.data.page+1;
if(!lock){
this.setData({
page:addPage
});
this.getDoctorList();
}
},
goAgree(){
this.setData({
showRight:flase
})
},
lookGood:throttle(function(){
this.setData({
showRight:true
})
}),
// 显示遮罩层
@ -27,7 +123,7 @@ showModal() {
this.setData({
hideModal: false,
blockHeight:"300rpx"
blockHeight:"150rpx"
})
},
touchstart(e) {
@ -69,7 +165,12 @@ showModal() {
* 生命周期函数--监听页面加载
*/
onLoad(options) {
if(options.type){
this.setData({
type:'visit'
})
}
this.getDoctorList();
},
/**

View File

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

View File

@ -1,9 +1,14 @@
<nav navName="肝胆相照"></nav>
<nav navName="健康包服务医生"></nav>
<wxs src="../../../filters/filter.wxs" module="moduleFilter"></wxs>
<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 class="imgbox">
<image src="../../static/images/healthy_bg.jpg" class="bg" mode="widthFix"/>
<image src="../../static/images/healthy_button.png" class="btn" bind:tap="lookGood"/>
</view>
</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">
<van-popup class="mypop" id="mypop" show="{{true}}" lock-scroll="{{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>
@ -11,6 +16,73 @@
<view class="popname">
健康包服务医生
</view>
<view class="scrollwraper">
<scroll-view scroll-y style="width: 100%;height:100%" bindrefresherrefresh="handleRefresher" refresher-triggered="{{isTriggered}}" refresher-threshold="100" refresher-enabled="true" bindscrolltolower="lower" id="scroller" bounces="false">
<view wx:if="{{doctorList.length>0}}">
<view class="viewcell" bindtap="goExpertDetail" wx:for="{{doctorList}}" wx:key="doctor_id" data-doctorid="{{item.doctor_id}}" data-price="{{moduleFilter.formatHealthPrcice(item.doctor_inquiry_config)}}">
<view class="left">
<image src="{{item.avatar}}" wx:if="{{item.avatar}}" mode="aspectFill"></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="position" >{{item.doctor_title_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 && item.multi_point_enable==1}}">可处方</view>
</view>
<view class="hospital"><text class="hospital_name" wx:if="{{item.doctor_title_name}}">{{item.doctor_title_name}}</text> <text wx:if="{{item.department_custom_name}}">{{item.department_custom_name}}</text></view>
<view class="hospital"><text class="hospital_name" >{{item.hospital.hospital_name}}</text></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="index">{{cell.expertise_name}}</view>
<view class="detail" wx:if="{{item.is_display_score}}">
<view>评分: <text wx:if="{{item.praise_rate>0}}">{{item.praise_rate}} </text><text wx:else>暂无</text></view>
<view>问诊量: <text wx:if="{{item.served_patients_num>0}}">{{item.served_patients_num}}</text><text wx:else>暂无</text></view>
<view>平均回复: <text wx:if="{{item.avg_response_time>0}}"> {{moduleFilter.formatReply(item.avg_response_time)}}h</text><text wx:else>暂无</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 && itemName.inquiry_mode==8 && itemName.inquiry_price}}">
<view class="pricecell">健康包:<text>¥{{itemName.inquiry_price}}</text>
</view>
</view>
</view>
</view>
</view>
</view>
<view class="nonedata" wx:else>暂无数据!</view>
<!-- <view class="viewcell">
<view class="left">
<image src="https://img.applets.igandanyiyuan.com/applet/patient/static/home.png"></image>
</view>
<view class="right">
<view class="namebox">
<view class="name">魏胜昭</view>
<view class="position"> 教授</view>
<view class="type">三甲</view>
<view class="type">可处方</view>
</view>
<view class="hospital">首都医科大学佑安医院 <text decode="true">&nbsp;耳鼻科</text></view>
<view class="goodjob">擅长:治疗耳鼻喉疑难病。比如: 人工关节置换、传导性耳聋、人工晶体植入、肾移···</view>
<view class="diseaseType">中西医结合</view>
<view class="detail">
<view>好评率: <text>5 </text> </view>
<view>服务患者数: <text>100</text></view>
<view>平均回复: <text> 0.5h </text></view>
</view>
<view class="consultbox">
<view class="price">公益问诊:<text>¥100</text></view>
<view class="consult">立即咨询</view>
</view>
</view>
</view> -->
</scroll-view>
</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>
@ -36,4 +108,79 @@
</view> -->
</view>
</van-popup>
</van-popup>
<van-dialog
use-slot
class="mydailog"
bind:confirm="goAgree"
title="温馨提示"
z-index="9999"
theme='green'
show="{{showRight}}"
confirm-button-color="#3CC7C0"
cancel-button-text="确定"
>
<view class="slotmsg">
<view class="rowbox">
<view class="rowtitle">服务内容:</view>
<view class="row">
<view class="rowleft">1、</view>
<view class="rowright">每个月2次问诊</view>
</view>
<view class="row">
<view class="rowleft">2、</view>
<view class="rowright">30盒肝爽颗粒(3g*9袋) (每次最多开具10盒)
</view>
</view>
</view>
<view class="rowbox">
<view class="rowtitle">服务价格:</view>
<view class="row">
<view class="rowleft">1、</view>
<view class="rowright">健康包价格低至1080元起内所含每月两次问诊费用低至5折;超出次数需按照原价支付问诊费;</view>
</view>
<view class="row">
<view class="rowleft">2、</view>
<view class="rowright">健康包内包含30盒肝爽颗粒(3g*9袋)原价42.8元/盒健康包内售价为35元/盒超出30盒的可按38.5元/盒优惠价购买;
</view>
</view>
<view class="row">
<view class="rowleft">3、</view>
<view class="rowright">赠送全品类药品劵10元
</view>
</view>
<view class="row">
<view class="rowleft">4、</view>
<view class="rowright">
<view class="desc">赠送肝胆相照商城优惠劵100元</view>
<view class="tips">(药品总价满100元方可使用不可与其他优惠劵叠加使用);</view>
</view>
</view>
</view>
<view class="rowbox">
<view class="rowtitle">退款说明:</view>
<view class="row">
<view class="rowleft">1、</view>
<view class="rowright">未使用随时退; </view>
</view>
<view class="row">
<view class="rowleft">2、</view>
<view class="rowright">
健康包开始使用后如需退款请联系客服,退款不收取任何服务费等额外费用,但不支持部分退款:
</view>
</view>
<view class="row">
<view class="rowleft">3、</view>
<view class="rowright">药品一经发出,问诊一经接诊,均概不退换;
</view>
</view>
<view class="row">
<view class="rowleft">4、</view>
<view class="rowright">未消费健康包内容可退款,已消费服务的部分按原价计费,即:已发生的问诊按照问诊时互联网医院显示的价格结算肝爽颗粒按照原价每盒42.8元结算。
</view>
</view>
</view>
</view>
</van-dialog>

View File

@ -1,23 +1,33 @@
/* healthyService/pages/healthyIntro/healthyIntro.wxss */
.page{
margin-top: 172rpx;
padding-bottom:100rpx;
overflow-y: scroll;
height: calc(100vh - 172rpx - 60rpx);
position: relative;
}
.imgbox{
position: relative;
}
page{
height: 100vh;
overflow: hidden;
}
.btn{
position: absolute;
left: 50%;
margin-left: -232rpx;
width:464rpx;
height: 86rpx;
bottom:200rpx;
bottom:130rpx;
}
.bg{
width:100%;
}
.top{
position: absolute;
top:20rpx;
top:10rpx;
width:100%;
display: flex;
justify-content: center;
@ -41,11 +51,349 @@
.popwrper{
top:0rpx;
background-color: #fff;
position: absolute;
position: relative;
transition: height 0.5s;
width:100%;
border-radius: 20rpx;
overflow: hidden;
height:100%;
bottom:0px;
}
}
.wraper{
height: 100%;
}
.containexpert{
margin-top: 172rpx;
padding: 0 30rpx 0rpx;
overflow: hidden;
position: relative;
transform: all 0.3s ease;
}
.droptitle,.van-ellipsis{
font-size: 30rpx!important;
}
.namebox .name{
max-width:400rpx;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
.droptitle.active{
color:#3CC7C0;
}
.searchbox {
width: 100%;
height: 72rpx;
display: flex;
border-radius: 40rpx;
align-items: center;
margin-top: 20rpx;
background: #FBFBFB;
border-radius: 36px;
border: 1rpx solid #CCCCCC;
}
.searchbox input {
margin-left: 30rpx;
flex: 1;
font-size: 32rpx;
height: 80rpx;
}
.searchbox image {
width: 30rpx;
height: 30rpx;
margin-right: 28rpx;
}
.scroll-view_H {
height:195rpx;
white-space: nowrap;
vertical-align: top;
}
.scroll-view-item_H{
/* width: 154rpx; */
padding:0 15rpx;
background: #F4F4F4;
border-radius: 30rpx;
font-size: 28rpx;
color: #666666;
margin-left: 36rpx;
border: 1rpx solid #F4F4F4;
height: 58rpx;
display: inline-block;
text-align: center;
line-height: 58rpx;
}
.page-section-spacing .row{
margin-top: 40rpx;
margin-bottom: 30rpx;
}
.page-section-spacing .row:last-child{
margin-top: 30rpx;
margin-bottom: 10rpx;
}
.scroll-view_H .scroll-view-item_H:first-child{
margin-left: 0rpx;
}
.scroll-view-item_H.active {
background: #E2FFFE;
color: #3CC7C0;
border: 1rpx solid #3CC7C0;
}
.van-dropdown-menu{
box-shadow: none!important;
}
.viewcell{
display: flex;
overflow: hidden;
box-sizing: border-box;
padding:40rpx 30rpx 30rpx;
width:100%;
border-radius: 10rpx;
background-color: #fff;
border-bottom: 1rpx solid #E7E7E7;
}
.viewcell:last-child{
border-bottom: none;
}
.viewcell .type{
height: 32rpx;
margin-bottom: 6rpx;
line-height: 32rpx;
display: flex;
white-space: nowrap;
align-items: center;
margin-left: 18rpx;
padding:0rpx 6rpx;
background: #ED9C00;
border-radius: 4rpx;
color: #FFFFFF;
font-size: 24rpx;
}
.viewcell .hospital{
margin-top: 12rpx;
color: #333333;
display: flex;
font-size: 30rpx;
word-wrap: break-word;
}
.hospital_name{
word-wrap: break-word;
margin-right: 10rpx;
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
}
.goodjob{
color: #666666;
margin-top: 28rpx;
line-height: 42rpx;
font-size: 28rpx;
word-break: break-all;
text-overflow: ellipsis;
display: -webkit-box;
-webkit-box-orient: vertical;
-webkit-line-clamp: 2; /* 这里是超出几行省略 */
overflow: hidden;
}
.price{
font-size: 28rpx;
position: relative;
}
.price text{
margin-left: 5rpx;
font-size: 32rpx;
color:#EF4F20;
}
.viewcell .right{
flex:1;
margin-left: 20rpx;
}
.viewcell image{
width:80rpx;
height:80rpx;
border-radius:50%;
}
.namebox{
display: flex;
font-size: 34rpx;
font-weight: 600;
color:#333;
align-items: flex-end;
}
.namebox .position{
font-weight: normal;
margin-left: 15rpx;
font-size: 30rpx;
}
.dropOnline.active{
color: #3CC7C0;
}
.diseaseType{
height: 40rpx;
background: #E2FFFE;
border-radius: 20rpx;
margin-right: 20rpx;
border: 1rpx solid #3CC7C0;
color: #3CC7C0;
font-size: 24rpx;
display: inline-flex;
text-align: center;
padding:0 15rpx;
align-items: center;
justify-content: center;
margin-top: 20rpx;
white-space: nowrap;
}
.detail{
margin-top: 20rpx;
display: flex;
font-size: 24rpx;
}
.detail view{
margin-right:40rpx;
}
.detail view text{
font-size: 28rpx;
color:#3CC7C0;
}
.consultbox{
position: relative;
margin-top: 28rpx;
display: flex;
align-items: center;
justify-content: space-between;
}
.consult{
height: 60rpx;
background: #3CC7C0;
border-radius: 30rpx;
color: #FFFFFF;
display: flex;
align-items: center;
padding:0 20rpx;
font-size: 30rpx;
}
.wraper{
display: flex;
flex-direction: column;
}
.scrollwraper{
flex: 1;
overflow-y: scroll;
-webkit-overflow-scrolling: touch;
}
.dropdown{
width:100%;
position: relative;
justify-content:center;
align-items: center;
border-bottom: 1rpx solid #E7E7E7;
display: flex;
}
.dropdown .bar{
height:40rpx;
width:1rpx;
left: 50%;
top:50%;
transform: translate(-50%,-50%);
position: absolute;
background:#ccc;
opacity: 0.9;
}
.dropbar{
background:#ccc;
opacity: 0.9;
height:40rpx;
width:1rpx;
position: static;
margin-top: 30rpx;
}
.dropOnline{
display: flex;
justify-content: center;
align-items: center;
width:33.33%;
}
.viewcell .left{
position: relative;
}
.price .expert_prcie{
text-decoration: line-through;
color:#999;
}
.price .expert_prcie .priceactive{
color:#999;
}
.pricecell{
display: flex;
font-size: 30rpx;
align-items: center;
white-space: nowrap;
}
.videocell{
position: absolute;
right:0rpx;
}
.price.qs{
display: none;
}
.price.gy,.price.hasfree{
display: none;
}
.nonekaitong{
position: absolute;
top:0rpx;
font-size: 30rpx;
right:320rpx;
}
.nonekaitong text{
font-size: 30rpx;
}
.popwrper{
display: flex;
flex-direction: column;
}
.slotmsg{
height:400rpx;
overflow-y: scroll;
padding:30rpx;
}
.row{
display: flex;
margin-bottom: 6rpx;
line-height: 45rpx;
font-weight: 400;
font-size: 28rpx;
color: #333333;
}
.rowtitle{
margin-bottom:15rpx;
font-weight: 500;
font-size: 32rpx;
color: #000000;
}
.rowbox{
margin-bottom: 20rpx;
}
.row .tips{
margin-top: 10rpx;
display: flex;
height: 113rpx;
padding:0 18rpx;
align-items: center;
background: #F1F1F1;
border-radius: 10rpx;
}

View File

@ -1,4 +1,8 @@
// healthyService/pages/healthyDetail/healthyDetail.js
import {doctorDetail} from "../../../api/consultExpert"
import {getItems} from "../../../api/health"
import {family,addfamily} from "../../../api/familyDoc";
import {getServiceDetail} from "../../../api/health"
import {throttle} from "../../../utils/util"
const app = getApp()
Page({
@ -7,34 +11,294 @@ Page({
* 页面的初始数据
*/
data: {
active:0,
priceList:[{
price:'180元/1月',
id:1
},{
price:'500元/3月',
id:2
},{
price:'1000元/6月',
id:3
},{
price:'2000元/12月',
id:4
}],
follow_package_item_id:'',
img_host:app.hostConfig().imghost,
doctor_id:'',
currentData:0,
inquiry_mode:9,
inquiry_type:1,
current_price:'',
avatar: '',
user_name: '',
doctor_title: '',
doctor_id: '',
doctor_title_name:'',
user_id:'',
is_online:'0',
hospital: null,
priceList:[],
show:false,
currentFamilyId:'',
realName:'',
idCard:'',
phoneNumber:'',
relationId:'',
sex:'',
service_type:2,
chat_id:'',
img_host:app.hostConfig().imghost
},
inputChange(e) {
this.setData({
[e.target.dataset.id]: e.detail.value
})
},
goNext:throttle(function() {
this.handleGetServiceDetail();
}),
addFamily() {
let {
realName,
idCard,
phoneNumber,
relationId,
sex
} = this.data;
addfamily({
card_name: realName,
type: 1,
id_number: idCard,
mobile: phoneNumber,
is_default: 0,
relation: relationId
}).then((data) => {
this.getFamily();
this.setData({
currentFamilyId:data.family_id,
realName:'',
idCard:'',
phoneNumber:'',
relationId:'',
relation:'',
showAdd:false
})
})
},
addPatient() {
this.setData({
showAdd: true,
currentFamilyId: '',
sex: ''
})
},
selectPatient(e) {
let currentFamilyId=e.currentTarget.dataset.familyid;
let sex=e.currentTarget.dataset.sex;
let name=e.currentTarget.dataset.name;
let age=e.currentTarget.dataset.age;
this.setData({
currentFamilyId:currentFamilyId,
sex:sex
})
},
transforpage(arr) {
const pages = []
let newArr = arr.concat([{
type: "add"
}])
newArr.forEach((item, index) => {
const page = Math.floor(index / 2)
if (!pages[page]) {
pages[page] = []
}
pages[page].push(item)
});
return pages
},
confirmNext() {
if (!/^[\u4e00-\u9fa5]+(·[\u4e00-\u9fa5]+)*$/.test(this.data.realName)) {
wx.showToast({
title: `姓名要求在2-10个字符`,
icon: 'none',
});
return false;
};
if (!/(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)/.test(this.data.idCard)) {
wx.showToast({
title: `请输入有效的身份证号`,
icon: 'none',
});
return false;
};
if (!/^1[3456789]\d{9}$/.test(this.data.phoneNumber)) {
wx.showToast({
title: `请输入有效的手机号码!`,
icon: 'none',
});
return false;
}
},
getFamily() {
family().then((data) => {
this.setData({
family: this.transforpage(data)
})
})
},
goSick:throttle(function() {
if (!/^([\u4e00-\u9fa5\·]{2,10})$/.test(this.data.realName)) {
wx.showToast({
title: `姓名要求在2-10个汉字`,
icon: 'none',
});
return false;
};
if (!/(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)/.test(this.data.idCard)) {
wx.showToast({
title: `请输入有效的身份证号`,
icon: 'none',
});
return false;
};
if (this.data.phoneNumber) {
if (!/^1[3456789]\d{9}$/.test(this.data.phoneNumber)) {
wx.showToast({
title: `请输入有效的手机号码!`,
icon: 'none',
});
return false;
}
};
let idInfo = this.getIdInfo(this.data.idCard);
if (idInfo.age < 6) {
wx.showToast({
title: `六岁以下儿童不支持线上问诊`,
icon: 'none',
});
return false;
}
this.setData({
sex:idInfo.sex
})
this.addFamily()
}),
//获取身份证号信息
getIdInfo(IdCard) {
var reg = /(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)/;
if (reg.test(IdCard)) {
let sex
if (parseInt(IdCard.substr(16, 1)) % 2 === 1) {
sex = '1'
} else {
sex = '2'
}
var ageDate = new Date()
var month = ageDate.getMonth() + 1
var day = ageDate.getDate()
var age = ageDate.getFullYear() - IdCard.substring(6, 10) - 1
if (IdCard.substring(10, 12) < month || (IdCard.substring(10, 12) === month && IdCard.substring(12, 14) <= day)) {
age++
}
if (age <= 0) {
age = 1
}
return {
sex,
age
}
} else {
return false;
}
},
onClose() {
this.setData({
show: false
});
},
onCloseAdd() {
this.setData({
showAdd: false
});
},
hanldeGetItems(id){
getItems(id).then(res=>{
let arr=res.map((item,index)=>{
return {
price:item.service_price+'元/'+ Number(item.service_period)/30+'月',
follow_package_item_id:item.follow_package_item_id,
service_price:item.service_price
}
});
this.setData({
priceList:arr,
current_price:res[0].service_price,
follow_package_item_id:res[0].follow_package_item_id
})
})
},
getDeatil(id) {
doctorDetail(id).then((res) => {
for (const key in this.data) {
if (res[key]) {
this.setData({
[key]: res[key]
})
}
};
this.setData({
chat_id:res.user_id
})
})
},
handleGetServiceDetail(){
let {doctor_id,currentFamilyId,service_type,follow_package_item_id,chat_id,sex,inquiry_mode,inquiry_type}=this.data;
getServiceDetail({
doctor_id,
family_id:currentFamilyId,
service_type,
follow_package_item_id
}).then((res)=>{
if(res.status==1){
app.method.navigateTo({
url:'/healthyService/pages/writeSick/writeSick?doctor_id='+doctor_id+"&family_id="+currentFamilyId+"&chat_id="+chat_id+"&inquiry_type="+inquiry_type+"&sex="+sex+"&inquiry_mode="+inquiry_mode+"&package_id="+follow_package_item_id
})
}else if(res.status==2){
}else if(res.status==3){
app.method.navigateTo({
url:'/patient/pages/expertDetail/expertDetail?doctor_id='+doctor_id
})
}else if(res.status==4){
}else if(res.status==5){
}
})
},
showPatient(){
this.setData({
show:true
})
},
choosePrice(e){
let {id}=e.currentTarget.dataset;
let {id,price}=e.currentTarget.dataset;
console.log(price);
this.setData({
active:id
follow_package_item_id:id,
current_price:price
})
},
/**
* 生命周期函数--监听页面加载
*/
onLoad(options) {
this.setData({
doctor_id:options.doctor_id
})
this.getDeatil(options.doctor_id);
this.hanldeGetItems(options.doctor_id);
this.getFamily();
},
/**

View File

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

View File

@ -1,11 +1,30 @@
<!--healthyService/pages/healthyDetail/healthyDetail.wxml-->
<wxs src="../../../filters/filter.wxs" module="moduleFilter"></wxs>
<nav navName="随访包服务详情"></nav>
<view class="page">
<image src="{{img_host+'/mybg.png'}}" mode="widthFix" class="dcimg" lazy-load/>
<view class="viewcell" >
<view class="left">
<image src="{{avatar}}" wx:if="{{avatar}}" mode="aspectFill" class="headimg"></image>
<image src="{{img_host+'/doctor_avatar.png'}}" class="headimg" wx:else></image>
<view class="onlinebox" wx:if="{{user.is_online==1}}">
<image src="{{img_host+'/online.gif'}}" mode="" class="icon"/>
</view>
</view>
<view class="right">
<view class="namebox">
<view class="name">{{user_name}}</view>
<view class="type" wx:if="{{hospital.hospital_level_name != '未知'&& hospital.hospital_level_name}}">{{hospital.hospital_level_name}}</view>
<view class="type" wx:if="{{multi_point_status == 1 && multi_point_enable==1}}">可处方</view>
</view>
<view class="hospital"><text class="hospital_name" wx:if="{{doctor_title_name}}">{{doctor_title_name}}</text> <text wx:if="{{item.department_custom_name}}">{{item.department_custom_name}}</text></view>
<view class="hospital"><text class="hospital_name" >{{hospital.hospital_name}}</text></view>
</view>
</view>
<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 {{follow_package_item_id==item.follow_package_item_id?'on':''}}" wx:for="{{ priceList}}" wx:key="follow_package_item_id" bind:tap="choosePrice" data-id="{{item.follow_package_item_id}}" data-price="{{item.service_price}}">{{item.price}}</view>
<!-- <view class="moneyType">500元/3月</view>
<view class="moneyType">1000元/6月</view>
<view class="moneyType">2000元/12月</view> -->
@ -65,6 +84,76 @@
</view>
</view>
<view class="buttonbox">
<view class="btn">立即购买¥XX.XX</view>
<view class="btn" bind:tap="showPatient">立即购买:¥{{current_price}}</view>
</view>
</view>
</view>
<van-popup show="{{ show }}" bind:close="onClose" closeable
position="bottom" round
custom-style="min-height: 60%">
<view class="titlepop">选择患者</view>
<view class="personbox">
<view class="row" wx:for-item="itemName" wx:for="{{family}}" wx:key="*this">
<view class="cell" wx:for-item="item" wx:for="{{itemName}}" wx:key="family_id">
<view class="cellinner" wx:if="{{!item.type}}" bindtap="selectPatient" data-familyId="{{item.family_id}}" data-sex="{{item.sex}}">
<view class="person">
<view class="name">{{item.card_name}}</view>
<view class="tag" wx:if="{{item.relation==1}}">本人</view>
<view class="tag" wx:elif="{{item.relation==2}}">父母</view>
<view class="tag" wx:elif="{{item.relation==3}}">爱人</view>
<view class="tag" wx:elif="{{item.relation==4}}">子女</view>
<view class="tag" wx:elif="{{item.relation==5}}">亲戚</view>
<view class="tag" wx:elif="{{item.relation==6}}">其他</view>
</view>
<view class="desc">
<view class="sex" wx:if="{{item.sex===0}}">性别未知</view>
<view class="sex" wx:elif="{{item.sex==1}}">男</view>
<view class="sex" wx:else>女</view>
<view class="age">{{item.age}}岁</view>
</view>
<image src="{{img_host+'/gou.png'}}" class="gou" wx:if="{{item.family_id==currentFamilyId}}"></image>
</view>
<view class="celladd" bindtap="addPatient" wx:elif="{{item.type}}">
+新建患者
</view>
</view>
</view>
</view>
<view class="btnbox">
<button class="btn" plain="true" disabled="{{currentFamilyId?false:true}}" bindtap="goNext">下一步</button>
</view>
</van-popup>
<van-popup show="{{showAdd}}" round closeable z-index="999" position="bottom" custom-style="height:{{height}}rpx" bind:close="onCloseAdd">
<view class="infobox">
<view class="title">新建患者</view>
<view class="info">
<view class="name">真实姓名<text>*</text></view>
<input value="{{realName}}" type="text" bindinput="inputChange" placeholder="请输入真实姓名" data-id="realName"/>
</view>
<view class="info">
<view class="name">身份证号<text>*</text></view>
<input value="{{idCard}}" type="idcard" bindinput="inputChange" placeholder="请输入真实身份证号" data-id="idCard"/>
</view>
<view class="info">
<view class="name">联系电话</view>
<input value="{{phoneNumber}}" type="number" bindblur="onblur" bindfocus="onfocus" cursor-spacing="100" bindinput="inputChange" bindinput="inputChange" placeholder="请输入联系电话" data-id="phoneNumber"/>
</view>
<view class="info" bindtap="openPicker">
<view class="name">患者关系</view>
<input type="text" value="{{relation}}" placeholder="请选择与患者的关系" disabled="true" />
</view>
<view class="tip">
<view class="warntitle">温馨提示:</view>
<view class="warn">
<view>1、根据国家卫健委要求,就医实行实名制,请如实填写患者信息。</view>
<view>2、信息受隐私保护仅接诊医生可见。
</view>
<view>3、6岁以下儿童不支持线上问诊请到线下就诊。
</view>
</view>
</view>
<view class="next" bindtap="goSick">
确定
</view>
</view>
</van-popup>

View File

@ -2,14 +2,25 @@ page{
height:100vh;
overflow: hidden;
}
/* healthyService/pages/healthyDetail/healthyDetail.wxss */
.page{
width:100%;
background: #F2F2F2;
height:calc(100% - 172rpx);
margin-top: 172rpx;
display: flex;
overflow: hidden;
flex-direction: column;
}
.viewcell{
display: flex;
background-color: #fff;
margin:30rpx;
padding:20rpx;
box-shadow: 0rpx 8rpx 20rpx 2rpx rgba(0,0,0,0.04);
border-radius: 10rpx;
}
.dcimg{
width:100%;
@ -122,4 +133,298 @@ border-radius: 10rpx;
background: #3CC7C0;
color:#fff;
border: 1rpx solid #3CC7C0;
}
}
.viewcell .type{
height: 32rpx;
margin-bottom: 6rpx;
line-height: 32rpx;
display: flex;
white-space: nowrap;
align-items: center;
margin-left: 18rpx;
padding:0rpx 6rpx;
background: #ED9C00;
border-radius: 4rpx;
color: #FFFFFF;
font-size: 24rpx;
}
.viewcellbox .hospital{
margin-top: 12rpx;
color: #333333;
display: flex;
font-size: 30rpx;
word-wrap: break-word;
}
.hospital_name{
font-size: 28rpx;
word-wrap: break-word;
margin-right: 10rpx;
overflow: hidden;
white-space: nowrap;
color:#333;
text-overflow: ellipsis;
}
.goodjob{
color: #666666;
margin-top: 28rpx;
line-height: 42rpx;
font-size: 28rpx;
word-break: break-all;
text-overflow: ellipsis;
display: -webkit-box;
-webkit-box-orient: vertical;
-webkit-line-clamp: 2; /* 这里是超出几行省略 */
overflow: hidden;
}
.price{
font-size: 28rpx;
position: relative;
}
.price text{
margin-left: 5rpx;
font-size: 32rpx;
color:#EF4F20;
}
.viewcell .right{
flex:1;
margin-left: 20rpx;
}
.viewcell image{
width:120rpx;
height:120rpx;
border-radius:50%;
}
.namebox{
display: flex;
font-size: 34rpx;
font-weight: 600;
color:#333;
align-items: flex-end;
}
.namebox .position{
font-weight: normal;
margin-left: 15rpx;
font-size: 30rpx;
}
.headimg{
width:120rpx;
height:120rpx;
border-radius: 50%;
}
.personbox {
border-radius: 10rpx;
background-color: #fff;
padding: 40rpx 20rpx 144rpx;
overflow-y: scroll;
}
.personbox .row {
margin-top: 30rpx;
display: flex;
justify-content: space-between;
}
.personbox .row:first-child {
margin-top: 0;
}
.personbox .row .cell {
position: relative;
width: 47%;
height: 120rpx;
display: flex;
flex-direction: column;
justify-content: center;
margin-left: 30rpx;
border-radius: 10rpx;
border: 1px solid #CCCCCC;
}
.personbox .row .cell:first-child {
margin-left: 0rpx;
}
.personbox .person {
display: flex;
margin: 0 25rpx;
align-items: center;
}
.personbox .tag {
margin-left: 32rpx;
font-size: 24rpx;
display: flex;
align-items: center;
line-height: 24rpx;
justify-content: center;
color: #666666;
width: 80rpx;
height: 32rpx;
border-radius: 4rpx;
transform: rotateZ(360deg);
border: 1rpx solid #979797;
}
.personbox .desc {
display: flex;
margin: 0 25rpx;
font-size: 28rpx;
color: #666;
margin-top: 3px;
}
.personbox .name {
white-space: nowrap;
overflow: hidden;
max-width: 200rpx;
text-overflow: ellipsis;
font-size: 34rpx;
color: #333;
}
.personbox .age {
margin-left: 12rpx;
}
.personbox .cell .gou {
position: absolute;
bottom: -1rpx;
right: 0rpx;
width: 66rpx;
height: 53.7rpx;
}
.personbox .add {
justify-content: center;
align-items: center;
font-size: 34rpx;
color: #333;
}
.own .add.disabled{
color: #999;
}
.titlepop{
font-size: 34rpx;
font-weight: 400;
color: #333333;
padding:40rpx 0;
text-align: center;
width:100%;
border-bottom:1rpx solid #E7E7E7;
}
.van-icon-cross {
color: #333;
font-size: 40rpx !important;
}
.infobox {
margin-top: 40rpx;
}
.info {
border-bottom: 1rpx solid #E7E7E7;
display: flex;
align-items: center;
height: 112rpx;
color: #333333;
}
.infobox .title {
border-bottom: 1rpx solid #E7E7E7;
text-align: center;
font-size: 34rpx;
padding-bottom: 35rpx;
}
.info .name {
white-space: nowrap;
width: 180rpx;
display: flex;
align-items: center;
margin-left: 52rpx;
color: #333333;
font-size: 34rpx;
}
.info text {
margin-top: 20rpx;
color:#E34D59;
display: flex;
align-items: center;
}
.info input {
margin-left: 15rpx;
margin-right: 52rpx;
flex: 1;
}
.input-placeholder {
color: #999999;
font-size: 28rpx;
}
.tip{
padding:30rpx 52rpx 20rpx;
}
.warntitle{
color: #E34D59;
font-size: 28rpx;
}
.warn{
margin-top: 20rpx;
font-size: 24rpx;
line-height: 36rpx;
color: #666666;
}
.next{
display: flex;
align-items: center;
justify-content: center;
height: 94rpx;
font-size: 36rpx;
left: 30rpx;
right: 30rpx;
margin:0 52rpx;
border-radius: 47rpx;
color: #fff;
margin-bottom: 40rpx;
background: #3CC7C0;
}
.celladd{
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
height: 120rpx;
}
.btnbox{
position: fixed;
width:100%;
bottom:0rpx;
height: 134rpx;
background:#fff;
}
.btnbox .btn{
border-radius: 47rpx;
border:none;
background: #3CC7C0!important;
margin:0 32rpx;
height: 94rpx;
display: flex;
justify-content: center;
align-items: center;
font-size: 36rpx;
color: #FFFFFF!important;
}
.btnbox .btn[disabled]{
color: #000000!important;
background:rgba(0,0,0,0.1)!important;
}

View File

@ -0,0 +1,159 @@
// healthyService/pages/healthyIntro/healthyIntro.js
import {throttle} from "../../../utils/util"
import {doctorList} from "../../../api/consultExpert"
const app = getApp()
Page({
/**
* 页面的初始数据
*/
data: {
blockHeight:"150rpx",
type:'',
doctorList:[],
page:1,
pageNumber:10,
isTriggered:false,
show:false,
expertise_id:'',
province_id:'',
city_id:'',
keyword:'',
lock:false,
is_online:0,
sort_order:1,
inquiry_type:'1',
inquiry_mode:'9',
},
handleRefresher(){
this.setData({
lock:false,
page:1,
doctorList:[]
});
this.getDoctorList()
},
goExpertDetail:throttle(function(e){
let {doctorid}=e.currentTarget.dataset;
app.method.navigateTo({
url:'/healthyService/pages/visitDetail/visitDetail?doctor_id='+doctorid
})
}),
getDoctorList(){
let {expertise_id,province_id, city_id,sort_order,keyword,page,pageNumber,is_online,inquiry_type,inquiry_mode}=this.data;
doctorList({
expertise_id:expertise_id,
province_id:province_id,
city_id:city_id,
sort_order: sort_order,
is_first_online:is_online,
keyword:keyword,
inquiry_type,
inquiry_mode,
page:page,
per_page:pageNumber
}).then((res)=>{
let {doctorList}=this.data;
if(res.data.length==0){
this.setData({
lock:true,
isTriggered:false
});
return false;
}else{
this.setData({
isTriggered:false,
doctorList:doctorList.concat(res.data)
})
}
})
},
onfresh(){
this.setData({
page:1,
doctorList:[],
lock:false
})
this.getDoctorList();
},
lower(e) {
let {lock}=this.data;
let addPage=this.data.page+1;
if(!lock){
this.setData({
page:addPage
});
this.getDoctorList();
}
},
goDetail:throttle(function(){
let url=this.data.type?'/healthyService/pages/visitDetail/visitDetail':'/healthyService/pages/healthyDetail/healthyDetail'
app.method.navigateTo({
url: url
})
}),
/**
* 生命周期函数--监听页面加载
*/
onLoad(options) {
if(options.type){
this.setData({
type:'visit'
})
}
this.getDoctorList();
},
/**
* 生命周期函数--监听页面初次渲染完成
*/
onReady() {
},
/**
* 生命周期函数--监听页面显示
*/
onShow() {
},
/**
* 生命周期函数--监听页面隐藏
*/
onHide() {
},
/**
* 生命周期函数--监听页面卸载
*/
onUnload() {
},
/**
* 页面相关事件处理函数--监听用户下拉动作
*/
onPullDownRefresh() {
},
/**
* 页面上拉触底事件的处理函数
*/
onReachBottom() {
},
/**
* 用户点击右上角分享
*/
onShareAppMessage() {
}
})

View File

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

View File

@ -0,0 +1,47 @@
<nav navName="随访包服务医生"></nav>
<wxs src="../../../filters/filter.wxs" module="moduleFilter"></wxs>
<view class="page">
<view class="scrollwraper">
<scroll-view scroll-y style="width: 100%;height:100%" bindrefresherrefresh="handleRefresher" refresher-triggered="{{isTriggered}}" refresher-threshold="100" refresher-enabled="true" bindscrolltolower="lower" id="scroller" bounces="false">
<view wx:if="{{doctorList.length>0}}">
<view class="viewcell" bindtap="goExpertDetail" wx:for="{{doctorList}}" wx:key="doctor_id" data-doctorid="{{item.doctor_id}}" >
<view class="left">
<image src="{{item.avatar}}" wx:if="{{item.avatar}}" mode="aspectFill"></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="position" >{{item.doctor_title_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 && item.multi_point_enable==1}}">可处方</view>
</view>
<view class="hospital"><text class="hospital_name" wx:if="{{item.doctor_title_name}}">{{item.doctor_title_name}}</text> <text wx:if="{{item.department_custom_name}}">{{item.department_custom_name}}</text></view>
<view class="hospital"><text class="hospital_name" >{{item.hospital.hospital_name}}</text></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="index">{{cell.expertise_name}}</view>
<view class="detail" wx:if="{{item.is_display_score}}">
<view>评分: <text wx:if="{{item.praise_rate>0}}">{{item.praise_rate}} </text><text wx:else>暂无</text></view>
<view>问诊量: <text wx:if="{{item.served_patients_num>0}}">{{item.served_patients_num}}</text><text wx:else>暂无</text></view>
<view>平均回复: <text wx:if="{{item.avg_response_time>0}}"> {{moduleFilter.formatReply(item.avg_response_time)}}h</text><text wx:else>暂无</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 && itemName.inquiry_mode==9 && itemName.inquiry_price}}">
<view class="pricecell">随访包:<text>¥{{itemName.inquiry_price}}/月起</text>
</view>
</view>
</view>
</view>
</view>
</view>
<view class="nonedata" wx:else>暂无数据!</view>
</scroll-view>
</view>
</view>

View File

@ -0,0 +1,367 @@
/* healthyService/pages/healthyIntro/healthyIntro.wxss */
.page{
margin-top: 172rpx;
height: calc(100vh - 172rpx);
position: relative;
}
.imgbox{
position: relative;
}
page{
height: 100vh;
overflow: hidden;
}
.btn{
position: absolute;
left: 50%;
margin-left: -232rpx;
width:464rpx;
height: 86rpx;
bottom:130rpx;
}
.bg{
width:100%;
}
.top{
position: absolute;
top:10rpx;
width:100%;
display: flex;
justify-content: center;
padding:20rpx 0;
}
.top .up{
width:40rpx;
height:22rpx;
transition: all 0.5s;
}
.top .up.active{
transform: rotate(180deg);
}
.popname{
margin-top: 60rpx;
padding:20rpx 52rpx 30rpx;
font-size: 34rpx;
color:#333;
border-bottom: 1px solid #E7E7E7;
}
.popwrper{
top:0rpx;
background-color: #fff;
position: relative;
transition: height 0.5s;
width:100%;
border-radius: 20rpx;
overflow: hidden;
height:100%;
bottom:0px;
}
.wraper{
height: 100%;
}
.containexpert{
margin-top: 172rpx;
padding: 0 30rpx 0rpx;
overflow: hidden;
position: relative;
transform: all 0.3s ease;
}
.droptitle,.van-ellipsis{
font-size: 30rpx!important;
}
.namebox .name{
max-width:400rpx;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
.droptitle.active{
color:#3CC7C0;
}
.searchbox {
width: 100%;
height: 72rpx;
display: flex;
border-radius: 40rpx;
align-items: center;
margin-top: 20rpx;
background: #FBFBFB;
border-radius: 36px;
border: 1rpx solid #CCCCCC;
}
.searchbox input {
margin-left: 30rpx;
flex: 1;
font-size: 32rpx;
height: 80rpx;
}
.searchbox image {
width: 30rpx;
height: 30rpx;
margin-right: 28rpx;
}
.scroll-view_H {
height:195rpx;
white-space: nowrap;
vertical-align: top;
}
.scroll-view-item_H{
/* width: 154rpx; */
padding:0 15rpx;
background: #F4F4F4;
border-radius: 30rpx;
font-size: 28rpx;
color: #666666;
margin-left: 36rpx;
border: 1rpx solid #F4F4F4;
height: 58rpx;
display: inline-block;
text-align: center;
line-height: 58rpx;
}
.page-section-spacing .row{
margin-top: 40rpx;
margin-bottom: 30rpx;
}
.page-section-spacing .row:last-child{
margin-top: 30rpx;
margin-bottom: 10rpx;
}
.scroll-view_H .scroll-view-item_H:first-child{
margin-left: 0rpx;
}
.scroll-view-item_H.active {
background: #E2FFFE;
color: #3CC7C0;
border: 1rpx solid #3CC7C0;
}
.van-dropdown-menu{
box-shadow: none!important;
}
.viewcell{
display: flex;
overflow: hidden;
box-sizing: border-box;
padding:40rpx 30rpx 30rpx;
width:100%;
border-radius: 10rpx;
background-color: #fff;
border-bottom: 1rpx solid #E7E7E7;
}
.viewcell:last-child{
border-bottom: none;
}
.viewcell .type{
height: 32rpx;
margin-bottom: 6rpx;
line-height: 32rpx;
display: flex;
white-space: nowrap;
align-items: center;
margin-left: 18rpx;
padding:0rpx 6rpx;
background: #ED9C00;
border-radius: 4rpx;
color: #FFFFFF;
font-size: 24rpx;
}
.viewcell .hospital{
margin-top: 12rpx;
color: #333333;
display: flex;
font-size: 30rpx;
word-wrap: break-word;
}
.hospital_name{
word-wrap: break-word;
margin-right: 10rpx;
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
}
.goodjob{
color: #666666;
margin-top: 28rpx;
line-height: 42rpx;
font-size: 28rpx;
word-break: break-all;
text-overflow: ellipsis;
display: -webkit-box;
-webkit-box-orient: vertical;
-webkit-line-clamp: 2; /* 这里是超出几行省略 */
overflow: hidden;
}
.price{
font-size: 28rpx;
position: relative;
}
.price text{
margin-left: 5rpx;
font-size: 32rpx;
color:#EF4F20;
}
.viewcell .right{
flex:1;
margin-left: 20rpx;
}
.viewcell image{
width:80rpx;
height:80rpx;
border-radius:50%;
}
.namebox{
display: flex;
font-size: 34rpx;
font-weight: 600;
color:#333;
align-items: flex-end;
}
.namebox .position{
font-weight: normal;
margin-left: 15rpx;
font-size: 30rpx;
}
.dropOnline.active{
color: #3CC7C0;
}
.diseaseType{
height: 40rpx;
background: #E2FFFE;
border-radius: 20rpx;
margin-right: 20rpx;
border: 1rpx solid #3CC7C0;
color: #3CC7C0;
font-size: 24rpx;
display: inline-flex;
text-align: center;
padding:0 15rpx;
align-items: center;
justify-content: center;
margin-top: 20rpx;
white-space: nowrap;
}
.detail{
margin-top: 20rpx;
display: flex;
font-size: 24rpx;
}
.detail view{
margin-right:40rpx;
}
.detail view text{
font-size: 28rpx;
color:#3CC7C0;
}
.consultbox{
position: relative;
margin-top: 28rpx;
display: flex;
align-items: center;
justify-content: space-between;
}
.consult{
height: 60rpx;
background: #3CC7C0;
border-radius: 30rpx;
color: #FFFFFF;
display: flex;
align-items: center;
padding:0 20rpx;
font-size: 30rpx;
}
.wraper{
display: flex;
flex-direction: column;
}
.scrollwraper{
flex: 1;
overflow-y: scroll;
-webkit-overflow-scrolling: touch;
}
.dropdown{
width:100%;
position: relative;
justify-content:center;
align-items: center;
border-bottom: 1rpx solid #E7E7E7;
display: flex;
}
.dropdown .bar{
height:40rpx;
width:1rpx;
left: 50%;
top:50%;
transform: translate(-50%,-50%);
position: absolute;
background:#ccc;
opacity: 0.9;
}
.dropbar{
background:#ccc;
opacity: 0.9;
height:40rpx;
width:1rpx;
position: static;
margin-top: 30rpx;
}
.dropOnline{
display: flex;
justify-content: center;
align-items: center;
width:33.33%;
}
.viewcell .left{
position: relative;
}
.price .expert_prcie{
text-decoration: line-through;
color:#999;
}
.price .expert_prcie .priceactive{
color:#999;
}
.pricecell{
display: flex;
font-size: 30rpx;
align-items: center;
white-space: nowrap;
}
.videocell{
position: absolute;
right:0rpx;
}
.price.qs{
display: none;
}
.price.gy,.price.hasfree{
display: none;
}
.nonekaitong{
position: absolute;
top:0rpx;
font-size: 30rpx;
right:320rpx;
}
.nonekaitong text{
font-size: 30rpx;
}
.popwrper{
display: flex;
flex-direction: column;
}

View File

@ -0,0 +1,901 @@
// pages/writeSick/writeSick.js
const app = getApp()
import Dialog from '@vant/weapp/dialog/dialog';
import dayjs from '../../../utils/dayjs.min.js'
import {
createServiceOrder
} from "../../../api/health"
import {
getSign
} from "../../../api/common"
import {
lastSick
} from "../../../api/consultExpert"
import {
throttle
} from "../../../utils/util"
import {client_type} from "../../../utils/isPc"
import {isExist,pathographyDetail} from "../../../api/sickRecord"
let urlHost=app.hostConfig().agreehost;
console.log(client_type);
Page({
/**
* 页面的初始数据
*/
data: {
prevData: null,
pathography_id:'',
showdialog: false,
showAgreeDialog: false,
message: '',
order_inquiry_id:'',
doctor_id: '',
family_id: '',
chat_id: '',
inquiry_type: 1,
inquiry_mode: 1,
messageTitle: '',
disease_class_name: '',
disease_class_id:null,
show: false,
startIndex: 0,
cancelBtn: false,
showSick: false,
hideSick: false,
hideGuomin: false,
hidePregnant:false,
disease_desc: '',
hideFamilysick: false,
showBack: false,
is_exist:false,
columns: [],
fileList: [],
lockBtn: false,
checkSign: false,
is_allergy_history:null,
is_family_history:null,
is_pregnant:null,
pregnant: '',
checkAgree: false,
is_taboo:null,
diagnosis_date:null,
service_type:2,
product: [],
follow_package_item_id:'',
img_host:'https://oss.prod.applets.igandanyiyuan.com/applet/patient/static',
allergy_history: '',
family_history: '',
currentDate: new Date().getTime(),
minDate: new Date('1900/01/01 00:00:00').getTime(),
maxDate: new Date().getTime(),
formatter(type, value) {
if (type === 'year') {
return `${value}`;
}
if (type === 'month') {
return `${value}`;
}
if (type === 'day') {
return `${value}`;
}
return value;
}
},
setInfo(obj){
let Info =obj;
for (const key in Info) {
if (key != "product") {
if (Info[key]) {
this.setData({
[key]: Info[key]
})
}
}
};
if (Info.disease_desc) {
this.setData({
hideSick: true
})
};
if (Info.pregnant) {
this.setData({
hidePregnant: true
})
};
if (Info.allergy_history) {
this.setData({
hideGuomin: true
})
};
if (Info.family_history) {
this.setData({
hideFamilysick: true
})
};
if (Info.fileList) {
this.setData({
fileList:Info.fileList,
checkSign: false
})
} else {
this.setData({
checkSign: true
})
}
},
getlocalInfo(id){
let sickInfo = wx.getStorageSync('sickInfo');
if (sickInfo) {
var InfoObj = JSON.parse(sickInfo);
if (InfoObj instanceof Array) {
let obj=null;
let isHas= InfoObj.some((item)=>{
if(item.family_id==id){
obj=item;
}
return item.family_id==id;
})
if(isHas){
this.setInfo(obj)
}else{
this.handleOnlineSick(this.data.family_id);
}
// for (let i = 0; i < InfoObj.length; i++) {
// if (InfoObj[i].family_id == id) {
// Dialog.confirm({
// title: '温馨提示',
// message: '是否加载之前保存的病情信息?',
// }).then(() => {
// this.setInfo(InfoObj[i])
// }).catch(() => {
// });
// break;
// };
// }
}
}else{
this.handleOnlineSick(this.data.family_id);
}
},
handleSetValue(data){
if(data){
let obj = {
disease_class_name: '',
disease_class_id: '',
diagnosis_date: '',
disease_desc: '',
is_allergy_history:null,
product: [],
is_taboo:null,
is_pregnant:null,
pregnant: '',
is_family_history:null,
allergy_history: '',
family_history: '',
}
for (const key in obj) {
if (key != "product") {
if(key=="is_taboo" && !data[key]){
this.setData({
[key]: null
})
}else{
this.setData({
[key]: data[key]
})
}
}
};
if (data.disease_desc) {
this.setData({
hideSick: true
})
};
if (data.pregnant) {
this.setData({
hidePregnant: true
})
};
if (data.allergy_history) {
this.setData({
hideGuomin: true
})
};
if (data.family_history) {
this.setData({
hideFamilysick: true
})
};
if (data.diagnose_images) {
this.setData({
fileList: data.diagnose_images,
checkSign: false
})
} else {
this.setData({
checkSign: false
})
}
}
},
handleOnlineSick(id){
lastSick(id).then(data => {
this.handleSetValue(data);
})
},
// handleLastSick(id) {
// lastSick(id).then(data => {
// if (!data){
// this.getlocalInfo(id);
// } else {
// }
// })
// },
onConfirm(event) {
const {
value
} = event.detail;
this.setData({
disease_class_name: `${value.disease_class_name}`,
disease_class_id: `${value.disease_class_id}`,
showSick: false
})
},
showSick() {
app.method.navigateTo({
url: '/patient/pages/commonSick/commonSick'
})
},
delImg(event) {
let id = event.currentTarget.dataset.id;
this.data.fileList.splice(id, 1);
this.setData({
fileList: this.data.fileList
})
},
previewImage(event) {
let id = event.currentTarget.dataset.id;
let urls = this.data.fileList;
wx.previewImage({
current: urls[id], // 当前显示图片的http链接
urls: urls // 需要预览的图片http链接列表
})
},
uploadFile(File) {
wx.showLoading({
title: '图片上传中...',
mask: true
})
let THIS = this;
getSign({
user_type: 1,
scene: 2
}).then((resdata) => {
let {
accessid,
dir,
policy,
signature,
host
} = resdata;
let index = File.lastIndexOf("/");
let filename = File.substring(index + 1, File.length);
return new Promise((resolve, reject) => {
wx.uploadFile({
url: host, // 仅为示例,非真实的接口地址
filePath: File,
name: 'file',
formData: {
OSSAccessKeyId: accessid,
policy,
key: dir + filename,
signature
},
success(res) {
if (res.statusCode === 204) {
let url = host + '/' + dir + filename;
THIS.setData({
fileList: THIS.data.fileList.concat([url])
})
}
},
fail: err => {
console.log(err);
}
});
})
})
},
upload() {
if(this.data.fileList.length>=9){
wx.showToast({
title: '复诊凭证最多上传9张',
icon:"none"
})
return false
};
let THIS = this;
wx.chooseMedia({
count: 9-this.data.fileList.length,
mediaType: ['image'],
sourceType: ['album', 'camera'],
success(res) {
var imgList = res.tempFiles;
var promiseFun = [];
for (let i = 0; i < imgList.length; i++) {
var file = imgList[i].tempFilePath;
promiseFun.push(
THIS.uploadFile(file)
)
};
Promise.all(promiseFun).then((res) => {
wx.showToast({
title: '图片上传成功',
icon: "none"
})
THIS.setData({
checkSign: false
})
wx.hideLoading();
});
}
})
},
onCancel() {
this.setData({
showSick: false
})
},
goRecord:throttle(function(){
app.method.navigateTo({
url:'/patient/pages/sickRecord/sickRecord?family_id='+this.data.family_id
})
}),
handleThrottle: throttle(function () {
this.create_Order()
}),
create_Order() {
let {
inquiry_type,
inquiry_mode,
doctor_id,
family_id,
disease_class_id,
diagnosis_date,
disease_desc,
fileList,
is_allergy_history,
checkSign,
is_pregnant,
pregnant,
is_family_history,
allergy_history,
family_history,
checkAgree,
sex,
service_type,
follow_package_item_id
} = this.data;
if (!disease_class_id) {
wx.showToast({
title: '请选择所患疾病',
icon: "none"
})
return false;
};
if (!diagnosis_date) {
wx.showToast({
title: '请选择确诊日期',
icon: "none"
})
return false;
};
if (!disease_desc) {
wx.showToast({
title: '请填写病情主诉',
icon: "none"
})
return false;
};
if(disease_desc.length<10){
wx.showToast({
title: '病情主诉不少于10个字',
icon: "none"
})
return false;
};
if (fileList.length == 0 && !checkSign) {
wx.showToast({
title: '请上传复诊凭证或者勾选凭证遗失或不在身边',
icon: "none"
})
return false;
}
if (inquiry_type == 4 && allergy_history) {
for (let i = 0; i < product.length; i++) {
if (allergy_history.indexOf(product[i].product_name) != -1) {
this.setData({
showdialog: true,
messageTitle: "您的情况不适合线上问诊开方,建议线下就诊"
})
return false
}
}
};
if(is_allergy_history==null){
wx.showToast({
title: '请选择您是否有过敏史',
icon: "none"
})
return false;
};
if(is_allergy_history==1){
if(!allergy_history){
wx.showToast({
title: '过敏史内容不能为空',
icon: "none"
})
return false;
}
};
if(is_family_history==null){
wx.showToast({
title: '请选择您是否有家族病史',
icon: "none"
})
return false;
};
if(is_family_history==1){
if(!family_history){
wx.showToast({
title: '家族病史内容不能为空',
icon: "none"
})
return false;
}
};
if(is_pregnant==null && sex==2){
wx.showToast({
title: '请选择您是否处于备孕、妊娠、哺乳期',
icon: "none"
})
return false;
};
if (is_pregnant == 1) {
wx.showToast({
title: '您的情况不适合线上问诊开方,建议线下就诊',
icon: "none"
})
return false;
}
if (!checkAgree) {
this.setData({
showAgreeDialog: true
})
return false;
};
this.setData({
lockBtn: true
});
createServiceOrder({
patient_id: wx.getStorageSync('CLIENT_USER_ID'),
doctor_id: doctor_id,
family_id: family_id,
disease_class_id: disease_class_id,
diagnosis_date: diagnosis_date,
disease_desc: disease_desc,
is_allergy_history:is_allergy_history,
allergy_history: allergy_history,
family_history: family_history,
is_family_history: is_family_history,
is_pregnant: is_pregnant,
pregnant: pregnant,
inquiry_type: inquiry_type,
inquiry_mode: inquiry_mode,
diagnose_images: fileList,
client_type:client_type ,
service_type:service_type,
follow_package_item_id:follow_package_item_id
}).then((data) => {
let {
inquiry_no,
order_inquiry_id
} = data.data;
let {
chat_id,
inquiry_type,
inquiry_mode
} = this.data;
this.setData({
lockBtn: false
});
if(data.status==1){
app.method.navigateTo({
url: '/patient/pages/payOrder/payOrder?doctor_id=' + doctor_id + '&inquiry_no=' + inquiry_no + "&chat_id=" + chat_id + "&inquiry_type=" + inquiry_type + "&inquiry_mode=" + inquiry_mode + "&order_inquiry_id=" + order_inquiry_id + "&fromType=chat"
})
}else if(data.status==2){
this.setData({
showdialog:true,
messageTitle:"当前患者存在进行中问诊订单",
order_inquiry_id: order_inquiry_id,
cancelBtn:true
})
}
}).catch((error)=>{
this.setData({
showdialog:true,
messageTitle:error.message,
cancelBtn:true
})
})
},
inputChange(e) {
this.setData({
[e.target.dataset.id]: e.detail.value
})
},
openPop() {
this.setData({
show: true
})
},
handleClose() {
this.setData({
show: false
})
},
handleConfirm(event) {
this.setData({
show: false
});
this.setData({
diagnosis_date: dayjs(event.detail).format('YYYY-MM-DD')
});
},
handlepathographyDetail(id){
pathographyDetail(id).then(data=>{
this.handleSetValue(data);
})
},
handleIsExist(){
let {family_id}=this.data;
isExist({
family_id
}).then(data=>{
this.setData({
is_exist:data.is_exist==0?false:true
})
})
},
handelFocus(e) {
let key = e.target.dataset.id;
let value = e.target.dataset.value;
if (!e.detail.value) {
this.setData({
[key]: false,
[value]: e.detail.value
})
} else {
this.setData({
[key]: true,
[value]: e.detail.value
})
}
},
handelTextFocus(e) {
let key = e.target.dataset.id;
let value = e.target.dataset.value;
if (!e.detail) {
this.setData({
[key]: false,
[value]: e.detail
})
} else {
this.setData({
[key]: true,
[value]: e.detail
})
}
},
goBack() {
if (app.globalData.origion == 1) {
wx.reLaunch({
url: '/pages/index/index',
})
} else if (app.globalData.origion == 2) {
wx.reLaunch({
url: '/pages/index/index',
})
} else {
let {
disease_class_name,
diagnosis_date,
fileList,
is_allergy_history,
is_pregnant,
checkSign,
checkAgree,
is_family_history,
disease_desc
} = this.data;
//封装组件后退有bug,通过引用,回退正常
if (disease_class_name || is_allergy_history || is_pregnant || is_family_history || fileList.length > 0 || diagnosis_date || disease_desc || checkSign || checkAgree) {
Dialog.confirm({
title: '温馨提示',
message: '是否保存填写的病情信息?',
}).then(() => {
this.onSave()
})
.catch(() => {
//wx.setStorageSync('sickInfo','');
wx.navigateBack({
delta: 1,
fail: function () {
wx.reLaunch({
url: '/pages/index/index',
})
}
})
});
} else {
wx.navigateBack({
delta: 1
})
}
}
},
agreeConfirm(){
this.setData({
checkAgree:true
})
},
confirm(event) {
if (event.detail) {
this.setData({
showdialog: false
})
}
if(this.data.messageTitle=="当前患者存在进行中问诊订单"){
let {order_inquiry_id}=this.data;
app.method.navigateTo({
url: '/patient/pages/orderDetail/orderDetail?order_inquiry_id='+ order_inquiry_id,
})
}
},
cancelAlert(){
this.setData({
showdialog: false
})
},
onChangeSign() {
this.setData({
checkSign: !this.data.checkSign
})
if (this.data.checkSign) {
this.setData({
fileList: []
})
}
},
onChange(event) {
let key = event.target.dataset.id;
this.setData({
[key]: event.detail
});
if (event.detail == 0) {
if (key == "is_allergy_history") {
this.setData({
allergy_history: ''
})
};
if (key == "is_family_history") {
this.setData({
family_history: ''
})
};
if (key == "is_pregnant") {
this.setData({
pregnant: ''
})
}
}
},
onSave() {
let {
family_id,
allergy_history,
family_history,
disease_desc,
disease_class_name,
disease_class_id,
diagnosis_date,
fileList,
checkSign,
checkAgree,
is_allergy_history,
is_pregnant,
pregnant,
is_family_history,
} = this.data;
let sickInfo = {
family_id,
disease_class_name,
diagnosis_date,
fileList,
disease_class_id,
disease_desc,
allergy_history,
family_history,
is_allergy_history,
is_pregnant,
pregnant,
checkSign,
checkAgree,
is_family_history
};
let sickInfo_stroage = wx.getStorageSync("sickInfo");
if (sickInfo_stroage) {
let sickInfoObj = JSON.parse(sickInfo_stroage);
if (sickInfoObj instanceof Array) {
for (let i = 0; i < sickInfoObj.length; i++) {
if (sickInfoObj[i].family_id == family_id) {
sickInfoObj.splice(i, 1);
}
}
sickInfoObj.push(sickInfo);
wx.setStorageSync('sickInfo', JSON.stringify(sickInfoObj));
} else {
sickInfoObj.family_id = family_id;
wx.setStorageSync('sickInfo', JSON.stringify([sickInfoObj]));
}
} else {
wx.setStorageSync('sickInfo', JSON.stringify([sickInfo]));
}
wx.navigateBack({
delta: 1
})
},
/**
* 生命周期函数--监听页面加载
*/
onLoad(options) {
// 订单类型1:专家问诊 2:快速问诊 3:公益问诊 4:问诊购药)
console.log(options.package_id)
console.log(options.inquiry_mode)
if (options.inquiry_type == 1 || options.inquiry_type == 3) {
this.setData({
follow_package_item_id:options.package_id?options.package_id:'',
doctor_id: options.doctor_id,
family_id: options.family_id,
chat_id: options.chat_id,
inquiry_type: options.inquiry_type,
inquiry_mode: options.inquiry_mode,
sex: options.sex
})
} else {
if (options.inquiry_type == 4) {
this.setData({
startIndex: 1
})
}
this.setData({
// product: options.product ? JSON.parse(options.product) : [],
family_id: options.family_id,
inquiry_type: options.inquiry_type,
sex: options.sex,
inquiry_mode: 1
})
}
//this.getSick();
this.handleIsExist();
this.getlocalInfo(options.family_id);
},
goAgreement:throttle(function(){
app.method.navigateTo({
url:"/patient/pages/linkPage/linkPage?url="+encodeURIComponent(urlHost+'/basic/file/agreement.htm?id=1')
})
}),
/**
* 生命周期函数--监听页面初次渲染完成
*/
onReady() {
},
/**
* 生命周期函数--监听页面显示
*/
onShow() {
this.setData({
img_host:app.hostConfig().imghost
});
let {
prevData,
pathography_id,
family_id
} = this.data;
if (prevData) {
this.setData({
disease_class_name: prevData.disease_class_name,
disease_class_id: prevData.disease_class_id,
})
}
console.log(pathography_id)
if(pathography_id){
this.handlepathographyDetail(pathography_id)
}
// else{
// //this.handleLastSick(options.family_id);
// }
},
/**
* 生命周期函数--监听页面隐藏
*/
onHide() {
},
/**
* 生命周期函数--监听页面卸载
*/
onUnload() {},
/**
* 页面相关事件处理函数--监听用户下拉动作
*/
onPullDownRefresh() {
},
/**
* 页面上拉触底事件的处理函数
*/
onReachBottom() {
},
/**
* 用户点击右上角分享
*/
})

View File

@ -0,0 +1,17 @@
{
"usingComponents": {
"van-field": "@vant/weapp/field/index",
"van-checkbox": "@vant/weapp/checkbox/index",
"van-radio": "@vant/weapp/radio/index",
"van-radio-group": "@vant/weapp/radio-group/index",
"van-datetime-picker": "@vant/weapp/datetime-picker/index",
"van-popup": "@vant/weapp/popup/index",
"van-picker": "@vant/weapp/picker/index",
"van-icon": "@vant/weapp/icon/index",
"dialog":"../../../components/dialog/dialog",
"van-dialog": "@vant/weapp/dialog/index",
"nav":"../../../components/nav/nav"
},
"navigationStyle":"custom",
"navigationBarTitleText": "肝胆相照互联网医院"
}

View File

@ -0,0 +1,168 @@
<!--pages/writeSick/writeSick.wxml-->
<wxs src="../../../filters/filter.wxs" module="filter"></wxs>
<view class="content">
<view class="ui-navigatorbar">
<image class="ui-navigatorbar-back" bindtap="goBack" src="{{img_host+'/back.png'}}" />
<view class="ui-title">填写病情</view>
</view>
<view class="infobox">
<view class="sickHisbox" wx:if="{{is_exist}}">
<view class="name">病情历史</view>
<view class="hisBtn" bindtap="goRecord">查看记录</view>
</view>
<view class="info" bindtap="showSick">
<view class="name">所患疾病</view>
<input type="text" value="{{disease_class_name}}" placeholder="请填写所患疾病名称" class="ipt" disabled="true">
</input>
</view>
<view class="info" bindtap="openPop">
<view class="name">确诊日期</view>
<input type="text" auto-focus value="{{filter.formatDay(diagnosis_date) }}" placeholder="请选择日期(年月日)" class="ipt" disabled="true" />
</view>
<view class="info">
<view class="name">病情主诉</view>
</view>
<view class="textareaview">
<view class="textwrap" style="background: #f2f2f2!important;">
<view class="textbox" hidden="{{hideSick}}">
<view class="desc"><text>临床症状:</text>如没有力气、食欲不好、眼睛发黄、面色晦暗、尿液发黄、肝区疼痛等等</view>
<view class="desc"><text>诊疗情况:</text>描述做过哪些检查以及重要结果,是否开始治疗?治疗方案是什么(写出具体药物)、治疗效果如何?</view>
<view class="desc"><text>希望解答的问题:</text>1、是否需要更换抗病毒药物 2、如果需要更换请问哪种药物更合适</view>
</view>
<van-field show-confirm-bar="{{false}}" maxlength="500" bind:change="handelTextFocus" data-id="hideSick" data-value="disease_desc" custom-style="height: 458rpx!important; border-radius: 10px;position:relative;" input-class="iptclass" class="sickArea" show-word-limit value="{{ disease_desc }}" label="" type="textarea" placeholder="" border="{{ false }}"></van-field>
</view>
</view>
<view class="infobox" style="margin-top: 20rpx;background-color: #fff;padding-bottom: 30rpx;" wx:if="{{inquiry_type==4}}">
<view class="info">
<view class="name">用药意向</view>
</view>
<view class="radiotip" style="margin:30rpx 32rpx 0;padding-bottom: 20rpx;overflow:hidden">
<view class="textbox" style="position: static;height:auto;">
<view class="desc" ><text class="goods" wx:for="{{product}}" wx:key="product_id">{{item.product_name}}{{item.product_spec}}(数量{{item.product_num}}</text></view>
</view>
</view>
</view>
<view class="info" style="flex-direction: column;height:auto;align-items:flex-start;padding: 40rpx 0;margin-top: 20rpx;">
<view class="name">上传复诊凭证最多9张</view>
<view class="tip">请上传问诊本人清晰的复诊凭证(病例/处方单/检查报告/住院单),仅接诊医生可见。</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">
<van-icon name="plus" />
</view>
</view>
<view class="agreebox">
<van-checkbox value="{{checkSign}}" data-id="checkSign" bind:change="onChangeSign" checked-color="#3cc7c0" label-class="desc">复诊凭证遗失或不在身边,请勾选本项,未上传凭证可能会影响医生对您的诊断</van-checkbox>
</view>
</view>
<view class="sickHis">
<view class="list">
<view class="qa" wx:if="{{inquiry_type==4}}">
<view class="num">{{startIndex}}、</view>
<view class="titlebox">
<view class="title">是否服用过您想购买的药品且无相关禁忌?</view>
<view class="radio">
<van-radio-group value="{{filter.numberTOstring(is_taboo)}}" data-id="is_taboo" bind:change="onChange" direction="horizontal">
<van-radio name="1" checked-color="#3cc7c0">是</van-radio>
<van-radio name="0" checked-color="#3cc7c0" style="margin-left: 140rpx;">否</van-radio>
</van-radio-group>
</view>
</view>
</view>
<view class="qa">
<view class="num">{{startIndex+1}}、</view>
<view class="titlebox">
<view class="title">您是否有过敏史?</view>
<view class="radio">
<van-radio-group value="{{filter.numberTOstring(is_allergy_history)}}" data-id="is_allergy_history" bind:change="onChange" direction="horizontal">
<van-radio name="1" checked-color="#3cc7c0">是</van-radio>
<van-radio name="0" checked-color="#3cc7c0" style="margin-left: 140rpx;">否</van-radio>
</van-radio-group>
<view class="radiotip" hidden="{{is_allergy_history!=1}}">
<textarea placeholder=" " class="textarea" show-confirm-bar="{{false}}" cursor-spacing="70" confirm-type="done" value="{{allergy_history}}" bindinput="handelFocus" data-id="hideGuomin" data-value="allergy_history"></textarea>
<view class="textbox" hidden="{{hideGuomin}}">
<view class="desc"><text>过敏史:</text>请填写过敏源如药物请写出药名如食物请写具体如鸡蛋、牛奶等限制50个字</view>
</view>
<!-- <text> 过敏史:</text>
请填写过敏源,如药物,请写出药名;如食物,请写具体如鸡蛋、牛奶等 -->
</view>
</view>
</view>
</view>
<view class="qa">
<view class="num">{{startIndex+2}}、</view>
<view class="titlebox">
<view class="title">您是否有家族病史?</view>
<view class="radio">
<van-radio-group value="{{ filter.numberTOstring(is_family_history) }}" data-id="is_family_history" bind:change="onChange" direction="horizontal">
<van-radio name="1" checked-color="#3cc7c0">是</van-radio>
<van-radio name="0" checked-color="#3cc7c0" style="margin-left: 140rpx;">否</van-radio>
</van-radio-group>
</view>
<view class="radiotip" hidden="{{is_family_history!=1}}">
<textarea class="textarea" placeholder=" " show-confirm-bar="{{false}}" cursor-spacing="70" confirm-type="done" value="{{family_history}}" bindinput="handelFocus" data-id="hideFamilysick" data-value="family_history"></textarea>
<view class="textbox" hidden="{{hideFamilysick}}">
<view class="desc"><text>家族病史:</text>如果是肝病请写明患肝炎、肝硬化、肝衰竭还是肝癌。限制50个字</view>
</view>
<!-- <text> 过敏史:</text>
请填写过敏源,如药物,请写出药名;如食物,请写具体如鸡蛋、牛奶等 -->
</view>
</view>
</view>
<view class="qa" wx:if="{{sex==2}}">
<view class="num">{{startIndex+3}}、</view>
<view class="titlebox">
<view class="title">您是否处于备孕、妊娠、哺乳期?</view>
<view class="radio">
<van-radio-group value="{{ filter.numberTOstring(is_pregnant)}}" data-id="is_pregnant" bind:change="onChange" direction="horizontal">
<van-radio name="1" checked-color="#3cc7c0">是</van-radio>
<van-radio name="0" checked-color="#3cc7c0" style="margin-left: 140rpx;">否</van-radio>
</van-radio-group>
</view>
<!-- <view class="radiotip" hidden="{{is_pregnant!=1}}">
<textarea class="textarea" placeholder=" " show-confirm-bar="{{false}}" cursor-spacing="70" confirm-type="done" value="{{pregnant}}" bindinput="handelFocus" data-id="hidePregnant" data-value="pregnant"></textarea>
<view class="textbox" hiden="{{hidePregnant}}">
<view class="desc">请描述您目前所处阶段如备孕中、哺乳期中、妊娠月份。限制50个字</view>
</view>
</view> -->
</view>
</view>
</view>
</view>
<view class="agreebox" style="margin: 20rpx 0 0 0;">
<view class="xieyi">
<van-checkbox value="{{ checkAgree }}" data-id="checkAgree" bind:change="onChange" checked-color="#3cc7c0" label-class="desc" label-disabled>胆相照互联网医院平台医生为您提供健康咨询服务,医生建议仅供参考。根据国家互联网诊疗相关政策要求,请您在提交服务前仔细阅读<text bindtap="goAgreement">《风险告知与知情同意书》</text>。继续操作表示您知悉并同意上述全部内容。</van-checkbox>
</view>
</view>
<view class="nextbox">
<button class="next" type="primary" bindtap="handleThrottle" disabled="{{btnLock}}">下一步</button>
</view>
</view>
<van-popup show="{{ show }}" position="bottom" custom-style="height: auto">
<van-datetime-picker title="选择确诊日期" min-date="{{ minDate }}" toolbar-class="dateTitle" type="date" value="{{ currentDate }}" bind:cancel="handleClose" bind:confirm="handleConfirm" max-date="{{ maxDate }}" formatter="{{ formatter }}" />
</van-popup>
<van-popup show="{{ showSick }}" position="bottom" custom-style="height: auto">
<van-picker show-toolbar title="选择所患疾病" columns="{{ columns }}" value-key="disease_class_name" bind:cancel="onCancel" bind:confirm="onConfirm" />
</van-popup>
</view>
<dialog bind:confirm="confirm" bind:cancel="cancelAlert" showDialog="{{showdialog}}" message="{{messageTitle}}" cancelBtn="{{cancelBtn}}"></dialog>
<van-dialog
use-slot
class="mydailog"
bind:confirm="agreeConfirm"
title="温馨提示"
theme='green'
show="{{showAgreeDialog}}"
confirm-button-color="#3CC7C0"
cancel-button-text="确定"
>
<view class="slotmsg">
请您先仔细阅读并同意<text class="green" bindtap="goAgreement">《风险告知与知情同意书》</text>
</view>
</van-dialog>
<van-dialog id="van-dialog" confirm-button-color="#3CC7C0" />

View File

@ -0,0 +1,356 @@
/* pages/writeSick/writeSick.wxss */
.content{
min-height: 100%;
background: #f2f2f2;
}
.ui-navigatorbar {
position: fixed;
z-index:99;
top: 0;
width: 750rpx;
height: 172rpx;
background: #F2F2F2;
backdrop-filter: blur(20px);
}
.ui-navigatorbar-back {
position: absolute;
padding-left:40rpx;
padding-right:40rpx;
width:30rpx;
height:60rpx;
left: 0rpx;
bottom: 20rpx;
}
.ui-title {
position: absolute;
width: 350rpx;
height: 88rpx;
line-height: 56rpx;
font-size: 36rpx;
white-space: nowrap;
color: #000000;
bottom: 0;
left: 200rpx;
display: flex;
justify-content: center;
align-items: center;
}
.ui-navigatorbar-back {
position: absolute;
padding-left:40rpx;
padding-right:40rpx;
width:30rpx;
height:60rpx;
left: 0rpx;
bottom: 20rpx;
}
.ui-title {
position: absolute;
width: 350rpx;
height: 88rpx;
line-height: 56rpx;
font-size: 36rpx;
color: #000000;
bottom: 0;
left: 200rpx;
display: flex;
justify-content: center;
align-items: center;
}
.infobox {
margin-top:172rpx;
}
.sickHisbox{
display: flex;
height:94rpx;
align-items: center;
margin-bottom: 20rpx;
background-color: #fff;
padding:0 55rpx;
justify-content: space-between;
}
.hisBtn{
width: 166rpx;
height: 60rpx;
color:#3CC7C0;
display: flex;
font-size: 26rpx;
align-items: center;
justify-content: center;
background: #E2FFFE;
border-radius: 6rpx;
border: 1rpx solid #3CC7C0;
}
.info {
border-bottom: 1rpx solid #E7E7E7;
display: flex;
background-color: #fff;
align-items: center;
height: 112rpx;
color: #333333;
}
.info .name {
white-space: nowrap;
width: 180rpx;
display: flex;
align-items: center;
margin-left: 52rpx;
color: #333333;
font-size: 34rpx;
}
.info text {
margin-top: 20rpx;
color:#E34D59;
display: flex;
align-items: center;
}
.info .ipt {
margin-left: 15rpx;
margin-right: 52rpx;
flex: 1;
}
.input-placeholder {
color: #999999;
font-size: 28rpx;
}
.textareaview{
position: relative;
padding:40rpx 52rpx;
background: #fff!important;
}
.textwrap{
background: #F2F2F2!important;
border-radius: 10rpx;
}
.van-cell{
position: relative;
z-index:2;
background-color:transparent!important;
}
.van-field__body--textarea{
height:360rpx;
width:580rpx;
}
.iptclass{
top:0;
overflow-y: scroll;
-webkit-overflow-scrolling: touch;
height:360rpx!important;
bottom:0;
left:0rpx;
right:0rpx;
width:100%!important;
background-color: transparent;
}
.mydailog .dialog-index--van-dialog__confirm{
background:#ebf9f9!important;
}
/*
.van-field__control {
display: flex;
align-self: start;
} */
.van-field__word-limit {
color: #999999!important;
font-size: 24rpx;
}
.green{
color:rgba(60, 199, 192, 1)
}
.van-field__word-num--full{
color: #ee0a24!important;
}
.textbox{
left:86rpx;
right:86rpx;
top:60rpx;
height:380rpx;
z-index:0;
position: absolute;
}
.textbox .desc{
word-break: break-all;
line-height: 42rpx;
color: #999;
margin-bottom: 20rpx;
font-size: 28rpx;
}
.textbox .goods{
display: inline;
white-space:normal;
}
.textbox .goods:after{
content:""
}
.textbox .goods:last-child:after{
content:""
}
.textbox view:last-child{
margin-bottom: 0;
}
.textbox text{
color: #333333;
font-size: 28rpx;
}
.info .tip{
line-height: 36rpx;
color: #666666;
margin:20rpx 52rpx 0;
font-size: 24rpx;
}
.uploadbox{
margin:30rpx 52rpx 0;
display: flex;
flex-wrap: wrap ;
}
.uploadbox .close{
z-index:99;
top:5rpx;
right:5rpx;
position: absolute;
width:30rpx;
height:30rpx;
}
.uploadbox .upload{
position: relative;
object-fit: cover;
margin: 5px 19rpx 5px 0;
}
.uploadbox .upload:nth-child(4n){
margin-right: 0;
}
.van-icon-plus{
color:#333;
font-size: 80rpx!important;
}
.agreebox{
margin:30rpx 52rpx 0;
display: flex;
}
.agreebox .desc{
color: #666666;
line-height: 36rpx;
font-size: 24rpx;
}
.van-checkbox{
display: flex;
align-items: flex-start!important;
}
.sickHis{
background-color: #fff;
margin-top: 20rpx;
padding:40rpx 52rpx;
}
textarea{
width:100%;
color:#333;
height:132rpx;
}
.list .qa{
display: flex;
}
.titlebox{
flex:1;
}
.radio{
margin: 40rpx 0rpx 30rpx 0;
}
.sickArea{
position: relative;
z-index:1;
}
.upload{
width: 148rpx;
height:148rpx;
display: flex;
justify-content:center ;
align-items: center;
background: #F2F2F2;
border-radius: 4rpx
}
.radiotip{
position: relative;
padding:24rpx 20rpx;
justify-content: center;
margin-top: 30rpx;
line-height: 42rpx;
background: #F2F2F2;
border-radius: 10rpx;
font-size: 28rpx;
color:#999;
margin-bottom: 20rpx;
}
.radiotip .textbox{
top:20rpx;
left:20rpx;
height: 100rpx;
right:20rpx;
}
.radiotip .textarea{
position: relative;
z-index:2;
}
.radiotip text{
white-space: nowrap;
color:#333;
}
.xieyi{
width:100%;
padding:30rpx 52rpx 40rpx;
background-color: #fff;
}
.agreebox text{
color:#3CC7C0;
}
.nextbox{
padding-bottom: 20rpx;
background-color: #fff;
}
.next{
display: flex;
align-items: center;
justify-content: center;
height: 94rpx;
font-size: 36rpx;
border:none;
outline: none;
margin:0 52rpx;
border-radius: 47rpx;
color: #fff;
margin-bottom: 40rpx;
background: #3CC7C0!important;
}
.datePicker{
width:100%;
position: fixed;
bottom:0;
}
.dateTitle{
border:1rpx solid #E7E7E7;
}
.van-uploader__preview-image,.van-uploader__upload{
width: 148rpx!important;
height: 148rpx!important;
}
.van-uploader__preview{
margin: 0 6px 8px 0;
}

View File

@ -41,7 +41,7 @@ Page({
}
}),
goH5:throttle(function(event){
let {url,name}=event.currentTarget.dataset;
let {url,name,type}=event.currentTarget.dataset;
if(url.indexOf("http")!=-1){
let urlName=(decodeURIComponent(url))
if(this.verifySuffix(urlName)){
@ -55,14 +55,21 @@ Page({
}
}else{
wx.navigateToMiniProgram({
appId: 'wxdee7006582529713',
path:url,
envVersion: 'release',
success(res) {
// 打开成功
}
})
if(type==4){
app.method.navigateTo({
url:'/'+url
})
}else{
wx.navigateToMiniProgram({
appId: 'wxdee7006582529713',
path:url,
envVersion: 'release',
success(res) {
// 打开成功
}
})
}
}
}),

View File

@ -107,7 +107,7 @@
<block wx:for="{{banner}}" wx:key="banner_id">
<swiper-item>
<view class="swiper-item">
<image class="swiperimg" src="{{item.banner_path}}" data-url="{{item.banner_link}}" data-name="{{item.banner_name}}" bindtap="goH5"></image>
<image class="swiperimg" src="{{item.banner_path}}" data-url="{{item.banner_link}}" data-name="{{item.banner_name}}" data-type="{{item.open_with}}" bindtap="goH5"></image>
</view>
</swiper-item>
</block>

View File

@ -18,8 +18,8 @@ Page({
tab3Height:500,
img_host:'https://oss.prod.applets.igandanyiyuan.com/applet/patient/static',
showDialog:false,
avatar: '',
currentData:0,
avatar: '',
user_name: '',
doctor_title: '',
doctor_id: '',