Files
2025-04-30 14:04:34 +08:00

75 lines
1.5 KiB
JavaScript

import { LOGIN_PAGE_URL } from '../config.js'
export default class Router {
needLoginPages = []
constructor(options) {
if (options) this.needLoginPages = options.needLoginPages || [];
}
splicingUrl(res) {
return typeof res === 'string' ? res : res.params ? res.url + '?' + Object.keys(res.params).map(item =>
`${item}=${res.params[item]}`).join('&') : res.url;
}
testingNeedLogin(url) {
return this.needLoginPages.findIndex(item => item == url || url.startsWith(item)) != -1
}
getNeedLoginPages() {
return this.needLoginPages
}
switchTab(url) {
url = this.splicingUrl(url)
if (this.testingNeedLogin(url)) {
if (global.token) {
uni.switchTab({
url
});
} else {
uni.navigateTo({
url: LOGIN_PAGE_URL
})
}
return false;
}
uni.switchTab({
url
});
}
redirectTo(url) {
url = this.splicingUrl(url)
if (this.testingNeedLogin(url)) {
uni.redirectTo({
url: global.token ? url : LOGIN_PAGE_URL
});
return false;
}
uni.redirectTo({
url
});
}
reLaunch(url) {
uni.reLaunch({
url
});
}
navigateBack(num) {
uni.navigateBack({ delta: num || 1 });
}
navigateTo(url) {
url = this.splicingUrl(url)
console.log(url)
if (this.testingNeedLogin(url)) {
uni.navigateTo({
url: global.token ? url : LOGIN_PAGE_URL
});
return false;
}
uni.navigateTo({
url
});
}
}