index.js
3.59 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
import rules from './rules';
import jump from './jump';
import {parse, stringify} from '../vendors/query-stringify';
import jumpToMiniapp from './jump-to-miniapp';
import Promise from '../vendors/es6-promise';
import config from '../common/config';
// 跳转到小程序内
// router.go('https://miniapp.yohobuy.com/pages/index/index?xxxx=ghh&ytty=444');
// 跳转到小程序外
// router.go('https://miniapp.yohobuy.com/pages/index/index?app=yohobuy&xxxx=ghh&ytty=444');
const OPEN_BY_TYPE = {
GO_LIST: 'go.list',
GO_BRAND: 'go.brand',
GO_SHOP: 'go.shop',
GO_POOL_LIST: 'go.poollist',
GO_DETAIL: 'go.productDetail'
};
const pageNameMap = {};
for (let i in rules) {
if (rules.hasOwnProperty(i) && rules[i].path) {
pageNameMap[rules[i].path] = i;
}
}
global.router = {
go(name, qs, type) { // 小程序内跳转
let rule = rules[name];
if (!rule) {
return Promise.reject(`路由规则未匹配到: ${name}`);
}
qs = qs || {};
// 添加yas上报fromPage参数
let pages = getCurrentPages();
let currentPage = pages[pages.length - 1];
let path = `/${currentPage.route}`;
let options = currentPage.options;
if (pageNameMap[path]) {
qs.fromPage = pageNameMap[path];
qs.fromParam = stringify(options);
}
// 页面登录校验
this.app = this.app || getApp();
if (rule.auth && !this.app.getUid()) {
return wx.showToast({
title: '请先完成登录/注册后,再查看!',
icon: 'none',
duration: 2000
});
}
// 跳转类型
let jumpFn = jump[type] || rule.type || jump.navigateTo;
return jumpFn(rule.path, qs);
},
goUrl(url) { // 打开其他小程序或者外部H5
if (!url) {
return Promise.reject('function goUrl(url) has error url!');
}
const [uri, search] = url.split('?');
if (uri.includes(config.MINI_APP_DOMAIN)) {
const path = uri.split(config.MINI_APP_DOMAIN)[1];
const qs = parse(search);
if (!path) {
return Promise.reject('function goUrl(url) has error path');
}
if (qs.app) {
return jumpToMiniapp({
app: qs.app,
path: `${path}?${stringify(qs)}`
});
} else {
if (pageNameMap[path]) {
return this.go(pageNameMap[path], qs);
} else {
return wx.navigateTo({
url: `${path}?${stringify(qs)}`
});
}
}
} else {
return wx.navigateTo({
url: `/pages/webview/webview?url=${encodeURIComponent(url)}`
});
}
/* 此处暂时用不到,是配置的资源位链接转换成 小程序内部
let openBy = JSON.parse(qs['openby:yohobuy'] || {});
if (openBy.action) {
switch (openBy.action) {
case OPEN_BY_TYPE.GO_BRAND:
openBy.params.brand = openBy.params.brand_id;
delete openBy.params.brand_id;
this.go('productList', openBy.params);
break;
case OPEN_BY_TYPE.GO_SHOP:
this.go('productShop', openBy.params);
break;
case OPEN_BY_TYPE.GO_POOL_LIST:
this.go('productList', openBy.params);
break;
case OPEN_BY_TYPE.GO_LIST:
this.go('productList', openBy.params);
break;
case OPEN_BY_TYPE.GO_DETAIL:
this.go('productDetail', {productSkn: openBy.params.product_skn});
break;
default:
break;
}
}
*/
}
};