WXL
17 小时以前 05c363fdd7ab04e3bd9a753e2c5d5bfff04d681c
1
"use strict";const e=require("../../../../common/vendor.js"),t=require("../function/index.js");const i=(new class{constructor(){this.config={type:"navigateTo",url:"",delta:1,params:{},animationType:"pop-in",animationDuration:300,intercept:!1},this.route=this.route.bind(this)}addRootPath(e){return"/"===e[0]?e:`/${e}`}mixinParam(e,i){e=e&&this.addRootPath(e);let n="";return/.*\/.*\?.*=.*/.test(e)?(n=t.queryParams(i,!1),e+`&${n}`):(n=t.queryParams(i),e+n)}async route(i={},n={}){let a={};if("string"==typeof i?(a.url=this.mixinParam(i,n),a.type="navigateTo"):(a=t.deepMerge(this.config,i),a.url=this.mixinParam(i.url,i.params)),a.url!==t.page())if(n.intercept&&(this.config.intercept=n.intercept),a.params=n,a=t.deepMerge(this.config,a),"function"==typeof e.index.$u.routeIntercept){await new Promise((t,i)=>{e.index.$u.routeIntercept(a,t)})&&this.openPage(a)}else this.openPage(a)}openPage(t){const{url:i,type:n,delta:a,animationType:r,animationDuration:o}=t;"navigateTo"!=t.type&&"to"!=t.type||e.index.navigateTo({url:i,animationType:r,animationDuration:o}),"redirectTo"!=t.type&&"redirect"!=t.type||(console.log(i,"进入路由"),e.index.redirectTo({url:i})),"switchTab"!=t.type&&"tab"!=t.type||(console.log(i,"进入路由"),e.index.switchTab({url:i})),"reLaunch"!=t.type&&"launch"!=t.type||e.index.reLaunch({url:i}),"navigateBack"!=t.type&&"back"!=t.type||e.index.navigateBack({delta:a})}}).route;exports.route=i;