import VueRouter from 'vue-router'; /**重置路由push */ const routerPush = VueRouter.prototype.push; /** * 路由跳转 * @params routeData string | object * @string '/vm/list' 路由路径 * @object path 路由路径:/vm/list * @object saveParams 页面需要保存的参数:{params: this.params}, 注意:key和变量保持一致 * @object query 路由传参: {uuid: '123-123-123'} */ VueRouter.prototype.push = function push (routeData: any) { let RouterThis = this; if (routeData === undefined || routeData === null) { console.error('routeData is required'); return false; } if (typeof routeData === 'string') { return recordRouterLinkData(RouterThis, routeData, {}) } else if (typeof routeData === 'object') { let path = routeData.path || '/', saveParams = routeData.saveParams || {}, query = routeData.query || {}; return recordRouterLinkData(RouterThis, path, saveParams, query); } else { console.error('the routeData type is string or object'); return false; } } function recordRouterLinkData(RouterThis: any, targetRouter: string, saveParams: any, routeParams?: any): any { // window['ROUTER_LINK_JUMP'] 是一个数组,每次跳转时都将跳转的页面信息储存起来。 if (!window['ROUTER_LINK_JUMP']) { window['ROUTER_LINK_JUMP'] = [] } window['ROUTER_LINK_JUMP'].push({ backRoute: RouterThis.history.current.path, // 返回页面的路由 targetRoute: targetRouter, saveParams: saveParams, }) // console.warn(window['ROUTER_LINK_JUMP']) let params = { // target: this.routeName }; params = routeParams ? Object.assign(params, routeParams) : params; return routerPush.call(RouterThis,{ path: targetRouter, query: params }); } export default VueRouter;