414 lines
9.6 KiB
JavaScript
414 lines
9.6 KiB
JavaScript
// healthyService/pages/healthyDetail/healthyDetail.js
|
|
import {doctorDetail} from "../../../api/consultExpert"
|
|
import {getItems,createServiceChatOrder,getServiceDetail} from "../../../api/health"
|
|
import {family,addfamily} from "../../../api/familyDoc";
|
|
import {throttle} from "../../../utils/util"
|
|
const app = getApp()
|
|
Page({
|
|
|
|
/**
|
|
* 页面的初始数据
|
|
*/
|
|
data: {
|
|
order_no:'',
|
|
order_inquiry_id:'',
|
|
chat_id:'',
|
|
confirmText:'确定',
|
|
status:'',
|
|
follow_package_item_id:'',
|
|
message:'',
|
|
showWarn:false,
|
|
img_host:app.hostConfig().imghost,
|
|
doctor_id:'',
|
|
currentData:0,
|
|
inquiry_mode:9,
|
|
inquiry_type:1,
|
|
current_price:'',
|
|
avatar: '',
|
|
user_name: '',
|
|
doctor_title: '',
|
|
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
|
|
})
|
|
|
|
})
|
|
},
|
|
goHasOrder(){
|
|
let {status,doctor_id,order_no}=this.data;
|
|
if(status==4){
|
|
let id=this.data.order_inquiry_id;
|
|
app.method.navigateTo({
|
|
url: '/patient/pages/orderDetail/orderDetail?order_inquiry_id='+id,
|
|
})
|
|
}else if(status==2){
|
|
let id=this.data.order_no;
|
|
app.method.navigateTo({
|
|
url: '/healthyService/pages/healthyOrderDetail/healthyOrderDetail?order_service_id='+id,
|
|
})
|
|
|
|
}else if(status==3){
|
|
app.method.navigateTo({
|
|
url:'/patient/pages/expertDetail/expertDetail?doctor_id='+doctor_id
|
|
})
|
|
}else if(status==5){
|
|
this.handleCreateServiceChatOrder(order_no)
|
|
}
|
|
|
|
|
|
},
|
|
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){
|
|
this.setData({
|
|
showWarn:true,
|
|
order_no:res.data.order_no,
|
|
status:2,
|
|
confirmNext:'确定',
|
|
message:res.message
|
|
})
|
|
|
|
}else if(res.status==3){
|
|
this.setData({
|
|
showWarn:true,
|
|
status:3,
|
|
confirmNext:'前往',
|
|
message:'本月问诊次数已用完,您可选择医生其他服'
|
|
})
|
|
}else if(res.status==4){
|
|
this.setData({
|
|
showWarn:true,
|
|
order_no:res.data.order_no,
|
|
order_inquiry_id:res.data.order_inquiry_id,
|
|
status:4,
|
|
confirmNext:'确定',
|
|
message:res.message
|
|
})
|
|
}else if(res.status==5){
|
|
this.setData({
|
|
showWarn:true,
|
|
status:5,
|
|
confirmNext:'前往',
|
|
order_no:res.data.order_no,
|
|
message:'是否使用剩余问诊次数?'
|
|
})
|
|
|
|
|
|
}
|
|
|
|
})
|
|
},
|
|
handleCreateServiceChatOrder(id){
|
|
createServiceChatOrder(id).then(res=>{
|
|
console.log(res);
|
|
let order_inquiry_id=res.order_inquiry_id;
|
|
let chat_id=this.data.chat_id;
|
|
app.method.navigateTo({
|
|
url: '/TUIService/pages/index?currentConversationID=' + chat_id + "&order_inquiry_id=" + order_inquiry_id + "&inquiry_type=1&fromType=chat"
|
|
})
|
|
})
|
|
},
|
|
showPatient(){
|
|
this.setData({
|
|
show:true
|
|
})
|
|
},
|
|
choosePrice(e){
|
|
|
|
let {id,price}=e.currentTarget.dataset;
|
|
console.log(price);
|
|
this.setData({
|
|
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();
|
|
},
|
|
|
|
/**
|
|
* 生命周期函数--监听页面初次渲染完成
|
|
*/
|
|
onReady() {
|
|
|
|
},
|
|
|
|
/**
|
|
* 生命周期函数--监听页面显示
|
|
*/
|
|
onShow() {
|
|
|
|
},
|
|
|
|
/**
|
|
* 生命周期函数--监听页面隐藏
|
|
*/
|
|
onHide() {
|
|
|
|
},
|
|
|
|
/**
|
|
* 生命周期函数--监听页面卸载
|
|
*/
|
|
onUnload() {
|
|
|
|
},
|
|
|
|
/**
|
|
* 页面相关事件处理函数--监听用户下拉动作
|
|
*/
|
|
onPullDownRefresh() {
|
|
|
|
},
|
|
|
|
/**
|
|
* 页面上拉触底事件的处理函数
|
|
*/
|
|
onReachBottom() {
|
|
|
|
},
|
|
|
|
/**
|
|
* 用户点击右上角分享
|
|
*/
|
|
onShareAppMessage() {
|
|
|
|
}
|
|
}) |