668 lines
14 KiB
JavaScript
668 lines
14 KiB
JavaScript
// pages/sugarSickInfo/sugarSickInfo.js
|
||
import {nation} from "../../../api/common"
|
||
import {getLocation,getDiseaseList,getDoctorList,createDetection,getPurposeList,getProject,getArea} from "../../../api/checkSugar"
|
||
import {getProvince,getCity,getCountry} from "../../../api/consultExpert"
|
||
import {throttle} from "../../../utils/util"
|
||
import Dialog from '@vant/weapp/dialog/dialog';
|
||
import {client_type} from "../../../utils/isPc"
|
||
let wait_time=15;
|
||
|
||
const beforeClose = (action) =>
|
||
new Promise((resolve) => {
|
||
console.log(action,wait_time);
|
||
try {
|
||
if (action === 'confirm' && wait_time<=0) {
|
||
resolve(true);
|
||
}else if (action === 'cancel') {
|
||
resolve(true);
|
||
}else {
|
||
// 拦截取消操作
|
||
resolve(false);
|
||
}
|
||
} catch (error) {
|
||
|
||
}
|
||
});
|
||
const app = getApp();
|
||
let provinceArr=[{area_id:'', area_name: "全国"}];
|
||
let cityArr=[];
|
||
Page({
|
||
|
||
/**
|
||
* 页面的初始数据
|
||
*/
|
||
data: {
|
||
showSick:false,
|
||
showNation:false,
|
||
showDoctor:false,
|
||
currentPatientName:'',
|
||
showNationSelect:false,
|
||
showCity:false,
|
||
confirmtext:"同意",
|
||
currentPosition:"全国",
|
||
detection_project_id:1,
|
||
sick_name:'',
|
||
real_name:'',
|
||
doctor_name:'',
|
||
nation_name:'',
|
||
nation_id:'',
|
||
purpose_id:'',
|
||
purpose_name:'',
|
||
confirmColor:"#bfbfbf",
|
||
nationcolumns:[],
|
||
sickList:[],
|
||
sex:"",
|
||
age:'',
|
||
showAgree:false,
|
||
messageAgree:'',
|
||
doctorList:[],
|
||
timer:null,
|
||
doctorResult:'',
|
||
select_doctor_id:'',
|
||
showdialog:false,
|
||
order_detection_id:'',
|
||
messageTitle:"",
|
||
cancelBtn:false,
|
||
columns: [{
|
||
values: [],
|
||
className: 'column1',
|
||
},
|
||
{
|
||
values: [],
|
||
className: 'column2',
|
||
defaultIndex: 1,
|
||
},
|
||
{
|
||
values: [],
|
||
className: 'column3',
|
||
defaultIndex: 1,
|
||
}
|
||
],
|
||
sickResult:[],
|
||
disease_ids:[],
|
||
area:{
|
||
province_id:'',
|
||
city_id:'',
|
||
county_id:''
|
||
},
|
||
img_host:'https://oss.prod.applets.igandanyiyuan.com/applet/patient/static'
|
||
},
|
||
cancelAgree(){
|
||
this.setData({
|
||
showAgree: false
|
||
})
|
||
},
|
||
|
||
confirmAgree(event){
|
||
if (event.detail ) {
|
||
this.setData({
|
||
showAgree: false
|
||
})
|
||
}
|
||
},
|
||
cancelAlert(){
|
||
this.setData({
|
||
showdialog: false
|
||
})
|
||
},
|
||
confirm(event) {
|
||
if (event.detail) {
|
||
this.setData({
|
||
showdialog: false
|
||
})
|
||
}
|
||
if(this.data.messageTitle=="当前患者存在进行中检测订单"){
|
||
let {order_detection_id}=this.data;
|
||
app.method.navigateTo({
|
||
url: '/pages/checkOrderDetail/checkOrderDetail?order_detection_id='+ order_detection_id,
|
||
})
|
||
}
|
||
},
|
||
/**
|
||
* 生命周期函数--监听页面加载
|
||
*/
|
||
onLoad(options) {
|
||
this.setData({
|
||
family_id:options.family_id,
|
||
real_name:options.real_name,
|
||
sex:options.sex,
|
||
age:options.age,
|
||
nation_id:options.nation_id,
|
||
nation_name:options.nation_name,
|
||
detection_project_id:options.detection_project_id
|
||
})
|
||
// {{real_name}}({{sex==1?'男':'女'}} | {{age}}岁 {{showNationSelect?" | "+nation_name:''}})
|
||
let sex=options.sex==1?'男':'女';
|
||
if(options.nation_id){
|
||
this.setData({
|
||
currentPatientName:options.real_name+"("+sex+" | "+options.age+"岁 | "+options.nation_name+")",
|
||
showNationSelect:false
|
||
})
|
||
}else{
|
||
this.setData({
|
||
currentPatientName:options.real_name+"("+sex+" | "+options.age+"岁"+")",
|
||
showNationSelect:true
|
||
})
|
||
}
|
||
|
||
this.handelGetProject();
|
||
this.handleWxLocation();
|
||
this.getNation();
|
||
this.handlegetDiseaseList();
|
||
this.handleGetPurposeList();
|
||
},
|
||
handleWxLocation(){
|
||
let that=this;
|
||
try {
|
||
wx.getFuzzyLocation({
|
||
type: 'gcj02',
|
||
success (res) {
|
||
if(res.errMsg=='getFuzzyLocation:ok'){
|
||
const latitude = res.latitude;
|
||
const longitude = res.longitude;
|
||
that.handleGetLocation(longitude,latitude);
|
||
}
|
||
|
||
},
|
||
fail(err){
|
||
console.log(err)
|
||
console.log("获取位置信息失败")
|
||
that.handleGetDoctorList();
|
||
}
|
||
})
|
||
} catch (error) {
|
||
|
||
}
|
||
|
||
},
|
||
goAgree(){
|
||
let {detection_project_id}=this.data;
|
||
app.method.navigateTo({
|
||
url:'/pages/agreement/agreement?detection_project_id='+detection_project_id
|
||
})
|
||
},
|
||
handelGetProject(){
|
||
let {detection_project_id}=this.data;
|
||
getProject(
|
||
detection_project_id
|
||
).then(data=>{
|
||
this.setData({
|
||
nodes:data.informed_consent_form
|
||
})
|
||
})
|
||
},
|
||
handleCreateDetection:throttle(function(){
|
||
|
||
let {nation_id,doctorResult,sickResult,real_name,purpose_id,showNationSelect,disease_ids,timer}=this.data;
|
||
let detection_disease_class_ids='';
|
||
sickResult.forEach((item)=>{
|
||
if(!detection_disease_class_ids){
|
||
detection_disease_class_ids+=item
|
||
}else{
|
||
detection_disease_class_ids+=","+item
|
||
}
|
||
})
|
||
if(!real_name){
|
||
wx.showToast({
|
||
title:"请输入真实姓名",
|
||
icon:"none"
|
||
});
|
||
return false
|
||
};
|
||
if(!nation_id && showNationSelect){
|
||
wx.showToast({
|
||
title:"请选择民族",
|
||
icon:"none"
|
||
});
|
||
return false
|
||
};
|
||
if(disease_ids.length==0){
|
||
wx.showToast({
|
||
title:"请选择既往病史",
|
||
icon:"none"
|
||
});
|
||
return false
|
||
};
|
||
if(!purpose_id){
|
||
wx.showToast({
|
||
title:"请选择目的",
|
||
icon:"none"
|
||
});
|
||
return false
|
||
};
|
||
if(!doctorResult){
|
||
wx.showToast({
|
||
title:"请选择申请医生",
|
||
icon:"none"
|
||
});
|
||
return false
|
||
};
|
||
wait_time=15;
|
||
this.setData({
|
||
confirmColor:wait_time==0?"#3CC7C0":"#bfbfbf"
|
||
});
|
||
Dialog.confirm({
|
||
title: '知情同意书',
|
||
width:'710rpx',
|
||
message: '弹窗内容',
|
||
selector:"#agreeDialog",
|
||
confirmButtonText :wait_time==0?"同意":"同意("+wait_time+"S)",
|
||
beforeClose:beforeClose,
|
||
}).then(() => {
|
||
this.goPay();
|
||
// on confirm
|
||
}).catch(() => {
|
||
console.log("none")
|
||
// on cancel
|
||
});
|
||
if(this.data.timer){
|
||
clearInterval(this.data.timer);
|
||
};
|
||
let timerSetInterval=setInterval(()=>{
|
||
|
||
if(wait_time<=1){
|
||
clearInterval(timer);
|
||
wait_time=0;
|
||
this.setData({
|
||
waitTime:0,
|
||
confirmColor:"#3CC7C0",
|
||
confirmtext:"同意",
|
||
})
|
||
return false
|
||
}
|
||
wait_time--;
|
||
|
||
this.setData({
|
||
confirmtext:"同意("+wait_time+"S)",
|
||
})
|
||
},1000)
|
||
this.setData({
|
||
timer:timerSetInterval
|
||
})
|
||
|
||
}),
|
||
goPay:throttle(function(){
|
||
let {family_id,nation_id,detection_project_id,doctorResult,sickResult,purpose_id}=this.data;
|
||
let detection_disease_class_ids='';
|
||
sickResult.forEach((item)=>{
|
||
if(!detection_disease_class_ids){
|
||
detection_disease_class_ids+=item
|
||
}else{
|
||
detection_disease_class_ids+=","+item
|
||
}
|
||
})
|
||
createDetection({
|
||
company_id:1,
|
||
patient_id:wx.getStorageSync('CLIENT_USER_ID'),
|
||
family_id,
|
||
doctor_id:doctorResult,
|
||
nation_id,
|
||
purpose_id,
|
||
detection_disease_class_ids,
|
||
detection_project_id,
|
||
client_type:client_type
|
||
}).then(data=>{
|
||
if(data.status==1){
|
||
app.method.navigateTo({
|
||
url: '/pages/payOrder/payOrder?&inquiry_no=' + data.data.inquiry_no + "&order_detection_id="+ data.data.order_no+"&order_type=3&fromType="+encodeURIComponent('pages/checkOrder/checkOrder')
|
||
})
|
||
}else if(data.status==2){
|
||
this.setData({
|
||
showdialog:true,
|
||
messageTitle:"当前患者存在进行中检测订单",
|
||
order_detection_id: data.data.order_no,
|
||
cancelBtn:true
|
||
})
|
||
}
|
||
})
|
||
}),
|
||
onChangeSick(event) {
|
||
console.log(event.detail)
|
||
let result=event.detail;
|
||
this.setData({
|
||
sickResult:result ,
|
||
});
|
||
const {sickList}=this.data;
|
||
for (let i = 0; i < sickList.length; i++) {
|
||
let temp="sickList["+i+"].check";
|
||
if(result.indexOf(sickList[i].id)!==-1){
|
||
this.setData({
|
||
[temp]:true
|
||
})
|
||
}else{
|
||
this.setData({
|
||
[temp]:false
|
||
})
|
||
}
|
||
}
|
||
//console.log(sickList);
|
||
|
||
},
|
||
onChangeDoctor(event) {
|
||
// console.log(event)
|
||
this.setData({
|
||
doctorResult: event.detail,
|
||
});
|
||
},
|
||
showNation() {
|
||
this.setData({
|
||
showNation: true
|
||
})
|
||
|
||
},
|
||
onCancelNation() {
|
||
this.setData({
|
||
showNation: false
|
||
})
|
||
},
|
||
onConfirmNation(event) {
|
||
const {
|
||
value
|
||
} = event.detail;
|
||
this.setData({
|
||
"nation_name": `${value.nation_name}`,
|
||
"nation_id": `${value.nation_id}`,
|
||
showNation: false
|
||
})
|
||
},
|
||
openPurpose(){
|
||
this.setData({
|
||
showPurpose: true
|
||
})
|
||
},
|
||
onConfirmPurpose(event) {
|
||
const {
|
||
value
|
||
} = event.detail;
|
||
this.setData({
|
||
"purpose_name": `${value.purpose_name}`,
|
||
"purpose_id": `${value.purpose_id}`,
|
||
showPurpose: false
|
||
})
|
||
},
|
||
onCancelPurpose(){
|
||
this.setData({
|
||
showPurpose: false
|
||
})
|
||
},
|
||
getNation(){
|
||
nation().then(data=>{
|
||
this.setData({
|
||
nationcolumns:data
|
||
})
|
||
})
|
||
},
|
||
handleGetArea(){
|
||
getArea().then(data=>{
|
||
console.log('获取地址')
|
||
console.log(data)
|
||
let position ='';
|
||
if(data.province || data.city || data.county){
|
||
position=data.province+data.city+data.county
|
||
}else{
|
||
position="全国"
|
||
}
|
||
this.setData({
|
||
area:data,
|
||
currentPosition:position
|
||
})
|
||
this.handleGetDoctorList();
|
||
})
|
||
},
|
||
handleGetLocation(lon,lat){
|
||
getLocation({
|
||
lon,
|
||
lat
|
||
}).then(data=>{
|
||
this.handleGetArea();
|
||
|
||
})
|
||
},
|
||
handleGetPurposeList(){
|
||
getPurposeList().then(data=>{
|
||
this.setData({
|
||
purposecolumns:data
|
||
})
|
||
})
|
||
},
|
||
handlegetDiseaseList(){
|
||
getDiseaseList({
|
||
detection_project_id:1
|
||
}).then(data=>{
|
||
//let arr=[];
|
||
data.forEach(item=>{
|
||
item.check=false;
|
||
})
|
||
this.setData({
|
||
sickList:data
|
||
})
|
||
})
|
||
},
|
||
handleGetDoctorList(){
|
||
const {area}=this.data;
|
||
const postData={
|
||
company_id:1,
|
||
province_id:area.province_id,
|
||
city_id:area.city_id,
|
||
county_id:area.county_id
|
||
}
|
||
getDoctorList(postData).then(data=>{
|
||
this.setData({
|
||
doctorList:data
|
||
})
|
||
})
|
||
},
|
||
toggleSick(event) {
|
||
|
||
const { index } = event.currentTarget.dataset;
|
||
const checkbox = this.selectComponent(`.checkboxessick-${index}`);
|
||
checkbox.toggle();
|
||
},
|
||
onClickDcotor(event){
|
||
const {name,userid,doctorname,hospital} = event.currentTarget.dataset;
|
||
console.log(userid,name)
|
||
this.setData({
|
||
doctorResult: name,
|
||
doctor_name:doctorname+"("+hospital+")",
|
||
showDoctor:false
|
||
});
|
||
},
|
||
noop() {},
|
||
onConfirmSick() {
|
||
let {sickResult,sickList}=this.data;
|
||
this.setData({
|
||
showSick: false,
|
||
disease_ids:sickResult
|
||
});
|
||
let sick_name="";
|
||
sickList.forEach((item)=>{
|
||
if(sickResult.indexOf(item.id)!=-1){
|
||
if(!sick_name){
|
||
sick_name+=item.name;
|
||
}else{
|
||
sick_name+=" | "+item.name
|
||
}
|
||
}
|
||
})
|
||
this.setData({
|
||
sick_name
|
||
})
|
||
},
|
||
closeDoctor(){
|
||
this.setData({
|
||
showDoctor: false
|
||
})
|
||
},
|
||
openCity(){
|
||
this.provinceList()
|
||
this.setData({
|
||
showCity:true
|
||
})
|
||
},
|
||
openSick() {
|
||
this.setData({
|
||
showSick: true
|
||
})
|
||
},
|
||
openDoctor(){
|
||
this.setData({
|
||
showDoctor:true
|
||
})
|
||
},
|
||
closeSick() {
|
||
this.setData({
|
||
showSick: false
|
||
})
|
||
},
|
||
provinceList(){
|
||
getProvince().then((res)=>{
|
||
provinceArr= provinceArr.concat(res);
|
||
let province=[{area_id:'', area_name: "全国"}];//
|
||
for (let i = 0; i < res.length; i++) {
|
||
province.push(res[i]);
|
||
};
|
||
this.setData({
|
||
'columns[0].values':province
|
||
})
|
||
//this.cityList(province[0].area_id);
|
||
|
||
})
|
||
},
|
||
cityList(area_id){
|
||
getCity({
|
||
area_id:area_id
|
||
}).then((res)=>{
|
||
|
||
cityArr=res;
|
||
let city=[];
|
||
for (let i = 0; i < res.length; i++) {
|
||
city.push(res[i]);
|
||
};
|
||
this.setData({
|
||
'columns[1].values':city,
|
||
// 'area.county_id':res[0].area_id
|
||
})
|
||
this.countryList(res[0].area_id);
|
||
})
|
||
},
|
||
countryList(area_id){
|
||
getCountry({
|
||
area_id:area_id
|
||
}).then((res)=>{
|
||
let area=[];
|
||
for (let i = 0; i < res.length; i++) {
|
||
area.push(res[i]);
|
||
};
|
||
this.setData({
|
||
'columns[2].values':area,
|
||
isLoding:false
|
||
})
|
||
})
|
||
},
|
||
onConfirm(event) {
|
||
const {value} = event.detail;
|
||
let currentPosition=''
|
||
for (let index = 0; index < value.length; index++) {
|
||
if(!value[0].area_id){
|
||
currentPosition="全国";
|
||
this.setData({
|
||
area:{
|
||
province_id:'',
|
||
city_id:'',
|
||
county_id:'',
|
||
province:'',
|
||
city:'',
|
||
county:''
|
||
}
|
||
})
|
||
}else{
|
||
currentPosition+=value[index].area_name;
|
||
if(index===0){
|
||
this.setData({
|
||
'area.province_id':value[index].area_id
|
||
})
|
||
}else if(index==1){
|
||
this.setData({
|
||
'area.city_id':value[index].area_id,
|
||
})
|
||
}else if(index==2){
|
||
this.setData({
|
||
'area.county_id':value[index].area_id
|
||
})
|
||
}
|
||
}
|
||
}
|
||
this.setData({
|
||
currentPosition:currentPosition,
|
||
showCity: false
|
||
});
|
||
console.log(this.data.area);
|
||
this.handleGetDoctorList();
|
||
},
|
||
onChangePicker(event) {
|
||
const { picker, value, index } = event.detail;
|
||
if(index===0){
|
||
let currentIndex=picker.getIndexes()[0];
|
||
if(provinceArr[currentIndex].area_id){
|
||
this.cityList(provinceArr[currentIndex].area_id);
|
||
}else{
|
||
this.setData({
|
||
'columns[1].values':[],
|
||
'columns[2].values':[]
|
||
})
|
||
}
|
||
}
|
||
},
|
||
onCancel() {
|
||
this.setData({
|
||
showCity: false
|
||
})
|
||
},
|
||
/**
|
||
* 生命周期函数--监听页面初次渲染完成
|
||
*/
|
||
onReady() {
|
||
|
||
},
|
||
|
||
/**
|
||
* 生命周期函数--监听页面显示
|
||
*/
|
||
onShow() {
|
||
|
||
},
|
||
|
||
/**
|
||
* 生命周期函数--监听页面隐藏
|
||
*/
|
||
onHide() {
|
||
|
||
clearInterval(this.data.timer);
|
||
// this.setData({
|
||
// sickResult:[],
|
||
// doctorResult:''
|
||
// })
|
||
},
|
||
|
||
/**
|
||
* 生命周期函数--监听页面卸载
|
||
*/
|
||
onUnload() {
|
||
clearInterval(this.timer);
|
||
},
|
||
|
||
/**
|
||
* 页面相关事件处理函数--监听用户下拉动作
|
||
*/
|
||
onPullDownRefresh() {
|
||
|
||
},
|
||
|
||
/**
|
||
* 页面上拉触底事件的处理函数
|
||
*/
|
||
onReachBottom() {
|
||
|
||
},
|
||
|
||
}) |