123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158 |
- import stringify from '@/utils/querystring'
- export const _router = {
- mode: 'history',
- switchTab,
- push,
- replace,
- go,
- back,
- reLaunch,
- }
- export function handleAuth() {
- /**
- * 如何判断权限?
- * 用户如果登录了系统,会留下两个东西,一个是token,一个是userInfo
- * token存在会过期的问题,如果长时间没有打开小程序,会导致登录失效,出现打开一个页面瞬间跳转到授权页面的问题
- * 解决办法,保存token的时候加上过期时间,每次请求都取一下缓存里的token
- * userInfo只是用来限时用户信息,作用并不是很大
- * ps:只需要判断 token 是否存在即可
- */
- // if (cookie.get('login_status')) {
- // return true
- // }
- return true
- }
- export const handleLoginStatus = (location, complete, fail, success) => {
- // 不登录可访问的页面
- let page = [
- {
- path: '/pages/home/index',
- name: '首页',
- }
- ]
- // 是否可以访问
- let isAuth = false
- // 从 location 中获取当前url,location typeof string || object
- let path = ''
- if (typeof location === 'string') {
- path = location
- } else {
- path = location.path
- }
- // 判断用户是否有token
- if (!handleAuth()) {
- page.map(item => {
- if (item.path == path) {
- isAuth = true
- }
- })
- } else {
- isAuth = true
- }
- return new Promise((resolve, reject) => {
- resolve({
- url: parseUrl(location),
- complete,
- fail,
- success,
- })
- // if (isAuth) {
- // // 有token
- // if (path == '/pages/home/index' || path == '/pages/shop/GoodsClass/index' || path == '/pages/shop/ShoppingCart/index' || path == '/pages/user/User/index') {
- // // switchTab({
- // // path: parseUrl(location),
- // // })
- // // return
- // }
- // resolve({
- // url: parseUrl(location),
- // complete,
- // fail,
- // success,
- // })
- // } else {
- // // 没有token,先校验用户是否授权,如果授权了,进行自动登录
- // routerPermissions(parseUrl(location))
- // reject()
- // }
- })
- }
- export function switchTab(location, complete, fail, success) {
- handleLoginStatus(location, complete, fail, success)
- .then(params => {
- uni.switchTab(params)
- })
- .catch(error => {
- // 没有权限
- })
- }
- export function push(location, complete, fail, success) {
- handleLoginStatus(location, complete, fail, success)
- .then(params => {
- uni.navigateTo(params)
- })
- .catch(error => {
- // 没有权限
- })
- }
- export function replace(location, complete, fail, success) {
- handleLoginStatus(location, complete, fail, success)
- .then(params => {
- uni.redirectTo(params)
- })
- .catch(error => {
- // 没有权限
- })
- }
- export function reLaunch(location, complete, fail, success) {
- handleLoginStatus(location, complete, fail, success)
- .then(params => {
- uni.reLaunch(params)
- })
- }
- export function go(delta) {
- uni.navigateBack({
- delta,
- })
- }
- export function back() {
- uni.navigateBack({
- delta: 1,
- success: function(e) {},
- fail: function(e) {},
- })
- }
- export function parseRoute($mp) {
- const _$mp = $mp || {}
- const path = _$mp.page && _$mp.page.route
- return {
- path: `/${path}`,
- params: {},
- query: _$mp.query || _$mp.page.options,
- hash: '',
- fullPath: parseUrl({
- path: `/${path}`,
- query: _$mp.query || _$mp.page.options,
- }),
- name: path && path.replace(/\/(\w)/g, ($0, $1) => $1.toUpperCase()),
- }
- }
- export function parseUrl(location) {
- if (typeof location === 'string') return location
- const { path, query } = location
- const queryStr = stringify(query)
- if (!queryStr) {
- return path
- }
- return `${path}?${queryStr}`
- }
|