|
|
|
@ -5,6 +5,7 @@ import { isString } from '/@/utils/is'; |
|
|
|
import { unref } from 'vue'; |
|
|
|
|
|
|
|
import { useRouter } from 'vue-router'; |
|
|
|
import { REDIRECT_NAME } from '/@/router/constant'; |
|
|
|
|
|
|
|
export type RouteLocationRawEx = Omit<RouteLocationRaw, 'path'> & { path: PageEnum }; |
|
|
|
|
|
|
|
@ -37,19 +38,18 @@ export function useGo(_router?: Router) { |
|
|
|
* @description: redo current page |
|
|
|
*/ |
|
|
|
export const useRedo = (_router?: Router) => { |
|
|
|
let router; |
|
|
|
if (!_router) { |
|
|
|
router = useRouter(); |
|
|
|
} |
|
|
|
const { push, currentRoute } = _router || router; |
|
|
|
const { query, params } = currentRoute.value; |
|
|
|
const { push, currentRoute } = _router || useRouter(); |
|
|
|
const { query, params = {}, name, fullPath } = unref(currentRoute.value); |
|
|
|
function redo(): Promise<boolean> { |
|
|
|
return new Promise((resolve) => { |
|
|
|
push({ |
|
|
|
path: '/redirect' + unref(currentRoute).fullPath, |
|
|
|
query, |
|
|
|
params, |
|
|
|
}).then(() => resolve(true)); |
|
|
|
if (name && Object.keys(params).length > 0) { |
|
|
|
params['_redirect_type'] = 'name'; |
|
|
|
params['path'] = String(name); |
|
|
|
} else { |
|
|
|
params['_redirect_type'] = 'path'; |
|
|
|
params['path'] = fullPath; |
|
|
|
} |
|
|
|
push({ name: REDIRECT_NAME, params, query }).then(() => resolve(true)); |
|
|
|
}); |
|
|
|
} |
|
|
|
return redo; |
|
|
|
|