You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

95 lines
2.6 KiB
TypeScript

1 year ago
import { useRouter } from 'vue-router';
import type { RouteLocationRaw } from 'vue-router';
import { router as globalRouter, routeName } from '@/router';
/**
*
* @param inSetup - vue/setupaxios使useRouteruseRoute
*/
export function useRouterPush(inSetup = true) {
const router = inSetup ? useRouter() : globalRouter;
const route = globalRouter.currentRoute;
/**
*
* @param to -
* @param newTab - Tab
*/
function routerPush(to: RouteLocationRaw, newTab = false) {
if (typeof to === 'string' && to?.indexOf('/board/kanBanRoot') > -1) {
// router.push({ name: 'board_kanBan' });
window.open('/board_kanBan', '_blank');
return Promise.resolve();
}
if (newTab) {
const routerData = router.resolve(to);
window.open(routerData.href, '_blank');
return Promise.resolve();
}
console.log('to', to);
return router.push(to);
}
/** 返回上一级路由 */
function routerBack() {
router.go(-1);
}
/**
*
* @param newTab -
*/
function toHome(newTab = false) {
routerPush({ name: routeName('root') }, newTab);
}
/**
*
* @param loginModule -
* @param redirectUrl - (),undefined
*/
function toLogin(loginModule?: UnionKey.LoginModule, redirectUrl?: string) {
const module: UnionKey.LoginModule = loginModule || 'pwd-login';
const routeLocation: RouteLocationRaw = {
name: routeName('login'),
params: { module }
};
const redirect = redirectUrl || route.value.fullPath;
Object.assign(routeLocation, { query: { redirect } });
routerPush(routeLocation);
}
/**
*
* @param module -
*/
function toLoginModule(module: UnionKey.LoginModule) {
const { query } = route.value;
routerPush({ name: routeName('login'), params: { module }, query });
}
/**
*
*/
function toLoginRedirect() {
// const { query } = route.value;
// if (query?.redirect) {
// console.log(query.redirect, 'redirect');
// routerPush(query.redirect as string);
// } else {
// toHome();
// }
toHome();
}
return {
routerPush,
routerBack,
toHome,
toLogin,
toLoginModule,
toLoginRedirect
};
}