123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108 |
- import {
- proxyLaunchHook, beforeBackHooks, beforeTabHooks, backApiCallHook,
- } from './hooks';
- import { Global, uniAppHook } from '../helpers/config';
- import { assertCanBack } from './util';
- import { warn } from '../helpers/warn';
- export const rewriteUniFun = function (Router) {
- const oldSwitchTab = uni.switchTab;
- uni.switchTab = function ({ url, ...args }, normal = false) {
- if (normal === true || uniAppHook.pageReady === false) {
- oldSwitchTab({
- url,
- ...args,
- });
- } else {
- if (uniAppHook.pageReady) {
- const { path } = Router.$Route;
- if (path == url) {
- return warn(`当前跳转路径:${url} 已在本页面无须跳转`);
- }
- beforeTabHooks.call(Router, url.substring(1));
- } else {
- warn('路由守卫正在忙碌中 不允许执行 ‘uni.switchTab’');
- }
- }
- };
- };
- export const registerLoddingPage = function (Router) {
- const { loddingPageHook, loddingPageStyle } = Router.CONFIG.APP;
- const view = new plus.nativeObj.View('router-loadding', {
- top: '0px',
- left: '0px',
- height: '100%',
- width: '100%',
- ...loddingPageStyle.call(Router),
- });
- loddingPageHook.call(Router, view);
- };
- export const removeBackPressEvent = function (page, options) {
- const isBack = assertCanBack(page);
- if (isBack) {
- options.onBackPress = [options.onBackPress[0]];
- }
- };
- export const pageIsHeadBack = function (page, options, args) {
- if (args[0].from == 'navigateBack') {
- if (Global.LockStatus) {
- warn('当前页面正在处于跳转状态,请稍后再进行跳转....');
- return true;
- }
- Global.LockStatus = true;
- backApiCallHook.call(this, options, args);
- return true;
- }
- const isBack = assertCanBack(page);
- if (isBack) {
- if (Global.LockStatus) {
- warn('当前页面正在处于跳转状态,请稍后再进行跳转....');
- return true;
- }
- Global.LockStatus = true;
- beforeBackHooks.call(this, options, args);
- return true;
- }
- return false;
- };
- export const appInit = function (Router) {
- proxyLaunchHook.call(this);
- const { holdTabbar } = Router.CONFIG.APP;
- if (holdTabbar) {
- rewriteUniFun(Router);
- }
- registerLoddingPage(Router);
- };
|