uniapp app 跳转内部页面和 h5 页面方法封装

763 阅读1分钟

/**

  • 自定义装修模板链接跳转

  • link 链接

  • type 链接类型 空 未指定 uniapp 原生链接 h5 即h5链接

  • needToken 是否需要登陆token true要 false不要

  • routeType 路由类型 1:默认navigateTo 2:redirectTo */

function diyLinkJump(link,type="",needToken=true,routeType=1){ console.log(link,type,needToken,routeType,'跳转路径') var has_xd = -1; if(link == ""){ return false; }

if(type == ""){
	if((link.indexOf('m=') != -1 && link.indexOf('a=') != -1) || link.indexOf('http') == 0){
		type = "h5";
	}else{
		type = "uniapp";
	}
}

if(type == "uniapp"){
	if(routeType == 2){
		uni.redirectTo({
			url: link
		});
	}else{
		uni.navigateTo({
			url: link
		});
	}
}else if(type == "h5"){
	if(link.indexOf('http') == 0){
		//设置webview的链接
		uni.setStorageSync("weburl", link)
		full_link = "/pages/webview/webview";
	}else{		
		var jing_url = "";
		var jing = link.indexOf('#');
		if(jing >=0 ){
			//带#的链接
			jing_url = link.slice(jing)
			link = link.slice(0,jing)
		}
	
		var full_link = link + '&user_agent=third_program_h5&request_mode=fortune_app&customer_id='+Store.state.vuex_customer_id;
		if (needToken == true) {
			if(Store.state.vuex_user.token == ""){
				var pages = getCurrentPages();
				let currentPage = pages[pages.length-1]['$page']['fullPath'] //当前页面路径(带参数)
				if(currentPage.charAt(0) != "/"){
					currentPage = "/" + currentPage;
				}
				uni.showModal({
					title: '提示',
					content: "请先登陆",
					confirmText: '登录',
					success: function(res) {
						if (res.confirm) {
							uni.redirectTo({
								url: '/public/pages/user/login?back_route='+currentPage
							})
						} else if (res.cancel) {}
					}
				});
				return false;
			}else{
				full_link = full_link + '&third_token='+Store.state.vuex_user.token;
			}
		}
		if(jing >=0 ){
			full_link = full_link + jing_url	//带#的链接
		}
		//设置webview的链接
		uni.setStorageSync("weburl", Store.state.vuex_apiUrl + full_link)
		full_link = "/pages/webview/webview";
	}

	if(routeType == 2){
		uni.redirectTo({
			url: full_link
		});
	}else{
		uni.navigateTo({
			url: full_link
		});
	}
}

}