// router.js //import {getCurrentPageUrl} from "./getUrl" module.exports = { navigateTo(object) { let pages = getCurrentPages(); let len = pages.length; let dlt = 0; let cur_url=object.url; object.fail=function(error){ console.log(error) }; let is_otherCommon=false; let currentOptions=cur_url.split("?")[1]; for (let i = 0; i < len; i++) { //判断是否是聊天页面 if(pages[i].route=="TUIService/pages/index" && cur_url.indexOf("TUIService/pages/index")!=-1 ) { let currentOptionsArr=currentOptions.split("&"); let cur_options=currentOptionsArr[0].toString()+"&"+currentOptionsArr[1].toString(); let options=pages[i].options; //let params="currentConversationID="+options['currentConversationID']+"&order_inquiry_id="+options['order_inquiry_id']+"&inquiry_type="+options['inquiry_type'] let params="currentConversationID="+options['currentConversationID']+"&order_inquiry_id="+options['order_inquiry_id']; //判断历史路由栈中是否有打开过同一个问诊聊天 if(cur_options==params){ dlt = i+1 ; //目标页在栈中的位置 break; }else{ is_otherCommon=true; dlt = i+1 ; //目标页在栈中的位置 break; } }else if(pages[i].route=="pages/expertDetail/expertDetail" && cur_url.indexOf("pages/expertDetail/expertDetail")!=-1){ let options=pages[i].options; let params='doctor_id='+options['doctor_id']; if(currentOptions.indexOf(params)!=-1){ dlt = i+1 ; //目标页在栈中的位置 break; } } }; if (!dlt) { //这个判断里面的跳转代码可根据自己项目实际需求场景进行修改 if (len < 10) { wx.navigateTo(object); } else { wx.redirectTo(object) } } else { //主要是else里面的跳转代码用来解决页面栈10层限制问题导致卡住的问题 wx.navigateBack({ delta: len - dlt, fail(error){ console.log(error) }, success(){ // iOS使用navigateBack返回超过4级之后会导致页面点击事件失效以及都是聊天页但不是同一个用户,都对页面进行重新载入 if(is_otherCommon || len - dlt>=5){ wx.redirectTo(object) } } }); } // if (getCurrentPages().length > 9) { // wx.redirectTo(object) // // this.reLaunch(object) // } else { // wx.navigateTo(object) // } }, goTo(object){ //let pages=getCurrentPages(); }, // 其他跳转不处理 navigateBack(object) { wx.navigateBack(object) }, switchTab(object) { wx.switchTab(object) }, redirectTo(object) { wx.redirectTo(object) }, reLaunch(object) { wx.reLaunch(object) }, }