2025-09-17 09:24:02 +08:00

539 lines
12 KiB
JavaScript

// index.js
const app = getApp()
import {caseList,getExpertSign,getProjectStatus,getBankInfo,getfangxinSite,limitCount,getDeal} from "../../api/api"
import {throttle} from "../../utils/util"
import {createStoreBindings} from "mobx-miniprogram-bindings"
import {store} from '../../store/store.js'
Page({
data: {
showDelDraft:false,
authMessage:'',
showAuth:false,
editId:'',
showDraft:true,
reason:'',
isLogin:false,
status_title:'病例状态',
casetype_title:'治疗类型',
draftTime:'',
caseDraft:{},
hasDraft:false,
showEntryTip:false,
showEntryTip_second:false,
statusList: [
{ text: '待提交', value: -1,select:false },
{ text: '待审核', value: 0,select:false },
{ text: '待修改', value: 2,select:false },
{ text: '已通过', value: 1,select:false },
],
typeList:[{
text:'DPMAS及联合模式',
value:1,
select:false,
},{
text:'CA280及联合模式',
value:2,
select:false,
}],
select_status:false,
select_type:false,
lock:false,
showCheck:false,
showAgree:false,
isTriggered:false,
list:[],
showCancel:true,
caseType:'',
status:'',
sortItemList:[{
column:0,
isAsc:true
}],
name:'',
pageNum:1,
pageSize:10,
img_host:app.hostConfig().imghost
},
handleGetDeal(){
getDeal().then(res=>{
this.setData({
authMessage:res,
showAuth:true
})
})
},
getAuthStatus(){
getProjectStatus().then(res=>{
getBankInfo().then(result=>{
if(result){
getExpertSign().then(response=>{
if(response.taskStatus==2){
this.handleGetDeal()
}
})
}else{
this.handleGetDeal()
}
})
})
},
handleGetProjectStatus(){
getProjectStatus().then(res=>{
limitCount({
type:4
}).then(result=>{
if(result<20){
this.handleGetSign()
}else{
wx.showToast({
title: '每人参与病例征集不得超过20例',
icon:'none'
})
}
})
}).catch((error)=>{
if(error.code==30007){
wx.showToast({
title: '您未登录',
icon:'none',
duration:4000
})
app.method.navigateTo({
url: '/case/pages/mobileLogin/mobileLogin',
})
}
})
},
onConfirmAuth(){
this.setData({
showAuth:false
});
app.method.navigateTo({
url: '/case/pages/bankCard/bankCard',
})
},
onCancleAuth(){
this.setData({
showAuth:false
});
},
onConfirmDelDraft(){
wx.setStorageSync('caseDraft', '');
this.setData({
showDelDraft:false,
hasDraft:false,
showDraft:false
});
},
onCancelDelDraft(){
this.setData({
showDelDraft:false,
})
},
onCloseSwipe(event){
const { position, instance } = event.detail;
switch (position) {
case 'left':
case 'cell':
instance.close();
break;
case 'right':
this.setData({
showDelDraft:true
})
break;
}
},
goDetail:throttle(function(event){
let {id,status,reason}=event.currentTarget.dataset;
if(status==2){
this.setData({
reason,
editId:id,
showCheck:true
})
}else{
app.method.navigateTo({
url: '/case/pages/createCase/createCase?medicalRecordId='+id+"&status="+status,
})
}
}),
goCreate:throttle(function(){
this.handleGetProjectStatus();
// app.method.navigateTo({
// url: '/case/pages/createCase/createCase',
// })
}),
goAgreement:throttle(function(event){
app.method.navigateTo({
url:"/case/pages/privacy/privacy"
})
}),
getSite(){
getfangxinSite().then(res=>{
app.method.navigateTo({
url:'/case/pages/webSign/webSign?src='+encodeURIComponent(res.linkUrl)
})
})
},
getBank(){
getBankInfo().then(res=>{
if(!res){
this.handleGetDeal();
// this.setData({
// showAgree:true
// })
// wx.showToast({
// title: '请先绑定信息',
// icon:"none",
// duration:3000
// })
// app.method.navigateTo({
// url: '/case/pages/bankCard/bankCard',
// })
}else{
this.setData({
showAgree:true
})
}
})
},
handleGetSign(){
getExpertSign().then(res=>{
if(res && res.taskStatus==1){
app.method.navigateTo({
url: '/case/pages/createCase/createCase',
})
}else{
// this.setData({
// showAuth:true
// })
this.getBank();
}
}).catch(error=>{
if(error.code==30007){
wx.showToast({
title: '您未登录',
icon:'none',
duration:4000
})
app.method.navigateTo({
url: '/case/pages/mobileLogin/mobileLogin',
})
}
})
},
handleCaseList(){
let { caseType,pageNum,pageSize,searchCount,status,name}=this.data;
caseList({
caseType,
pageNum,
name,
pageSize,
searchCount,
status
}).then(res=>{
if(status==='' && caseType===''){
this.toggleDraft();
};
this.setData({
isTriggered:false
})
// if(pageNum==1){
// this.setData({
// isTriggered:false
// })
// }
if(res.list.length==0){
this.setData({
lock:true
});
return;
};
this.setData({
list:this.data.list.concat(res.list)
})
}).catch(error=>{
this.setData({
isTriggered:false
})
})
},
onConfirm(){
let id=this.data.editId;
this.setData({
showCheck:false
})
app.method.navigateTo({
url: '/case/pages/createCase/createCase?medicalRecordId='+id+"&status=2",
})
},
onCancel(){
this.setData({
showCheck:false
})
},
onConfirmAgree(){
this.setData({
showAgree:false
});
//this.getSite();
app.method.navigateTo({
url:'/case/pages/bankCard/bankCard'
})
},
onCancelAgree(){
this.setData({
showAgree:false
})
},
goSearch(value){
this.setData({
lock:false,
pageNum:1,
name:value.detail,
list:[]
});
this.handleCaseList()
},
handleRefresher(){
let {status}=this.data;
if(status!=-1){
this.setData({
lock:false,
pageNum:1,
list:[]
});
this.handleCaseList()
}else{
this.setData({
isTriggered:false
})
}
},
lower(e) {
let {lock}=this.data;
let addPage=this.data.pageNum+1;
if(!lock){
this.setData({
pageNum:addPage
});
this.handleCaseList();
}
},
chooseStatus(e){
let {hasDraft,statusList,typeList}=this.data;
let {id,value,name,select,index}=e.currentTarget.dataset;
this.selectComponent('#'+id).toggle(false);
if(id=="item1"){
statusList.forEach((item,key)=>{
let cur_obj='statusList['+key+'].select'
this.setData({
[cur_obj]:false
})
})
let obj='statusList['+index+'].select';
this.setData({
status:!select?value:'',
status_title:!select?name:'病例状态',
[obj]:!select,
})
if(value==-1 && this.data.statusList[0].select){
this.setData({
showDraft:hasDraft?true:false,
list:[]
})
}else if(value==-1 && !this.data.statusList[0].select){
this.handleRefresher();
}else{
this.setData({
showDraft:false
})
this.handleRefresher();
}
let hasSelect=this.data.statusList.some(item=> item.select==true );
if(hasSelect){
this.setData({
select_status:true
})
}else{
this.setData({
select_status:false
})
}
}else{
typeList.forEach((item,i)=>{
let cur_obj='typeList['+i+'].select'
this.setData({
[cur_obj]:false
})
})
let obj='typeList['+index+'].select';
this.setData({
caseType:!select?value:'',
[obj]:!select,
casetype_title:!select?name:'病例类型'
})
if(this.data.status==-1 && this.data.statusList[0].select){
this.setData({
showDraft:hasDraft?true:false,
list:[]
})
}else if(this.data.status==-1 && !this.data.statusList[0].select){
this.handleRefresher();
}else{
this.setData({
showDraft:false
})
this.handleRefresher();
}
let hasSelect=this.data.typeList.some(item=> item.select==true );
if(hasSelect){
this.setData({
select_type:true
})
}else{
this.setData({
select_type:false
})
}
console.log(this.data.typeList);
}
},
onConfirmEntry(){
this.setData({
showEntryTip:false
})
},
onCloseEntry(){
this.setData({
showEntryTip:true,
showEntryTip_second:true
})
},
onConfirmEntry_second(){
this.setData({
showEntryTip_second:false,
});
//wx.setStorageSync('hasEntry', true);
},
onCloseEntry_second(){
wx.exitMiniProgram({success: (res) => {}})
this.setData({
showEntryTip_second:false,
showEntryTip:false,
});
},
toggleDraft(){
let caseDraft=wx.getStorageSync('caseDraft');
let draftTime=wx.getStorageSync('draftTime')
if(caseDraft){
this.setData({
caseDraft:JSON.parse(caseDraft),
hasDraft:true,
showDraft:true,
draftTime:draftTime
})
}else{
this.setData({
showDraft:false,
hasDraft:false
})
}
},
isHasToken(){
let tokenStr=''
const { envVersion } = wx.getAccountInfoSync().miniProgram;
if(envVersion=="develop" || envVersion=="trial"){
tokenStr="DEV_CASE_TOKEN"
}else{
tokenStr="PROD_CASE_TOKEN"
}
let token = wx.getStorageSync(tokenStr);
if(token){
this.setData({
isLogin:true
})
return true
}else {
this.setData({
isLogin:false
})
return false
}
},
onLoad(){
this.storeBindings = createStoreBindings(this, {
store,
fields: [,"active"],
actions: ["updateActive"],
});
this.isHasToken()
this.getAuthStatus();
},
onUnload() {
this.storeBindings.destroyStoreBindings();
},
onShow(){
this.updateActive('list');
let nav=this.selectComponent('#nav');
nav.clearKeyWord();
this.setData({
name:'',
select_status:false,
select_type:false,
status_title:'病例状态',
casetype_title:'病例类型',
status:'',
caseType:''
})
if(this.isHasToken()){
this.toggleDraft();
this.handleRefresher();
}
wx.getPrivacySetting({
success: res => {
console.log(res) // 返回结果为: res = { needAuthorization: true/false, privacyContractName: '《xxx隐私保护指引》' }
if (res.needAuthorization) {
// 需要弹出隐私协议
this.setData({
showEntryTip:true
});
} else {
this.setData({
showEntryTip:false
})
// 用户已经同意过隐私协议,所以不需要再弹出隐私协议,也能调用已声明过的隐私
}
},
fail: () => {},
complete: () => {}
})
}
});