2024-01-10 08:57:23 +08:00

668 lines
14 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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