You can use this.$router.go(0) to reload the page. You need the 0 if you use Typescript as mentioned by @Second2None. In combination with this.$router.push({ path: '/some/path' }) you can achieve it without directly changing the browser's window property.
<template>
<button @click="redirectReload">Redirect & Reload</button>
</template>
<script>
export default {
methods: {
redirectReload() {
this.$router
.push({ path: '/expedition' })
.then(() => { this.$router.go(0) })
}
}
}
</script>
Notice how I used .then after $router.push(). Because the push() method is asynchronous, the reload would happen before the route change without then().
As a bonus, it lets you use all the features of $router.push (for example using arguments like { name: 'home' }.
Example with Composition API and async/await syntax:
<script setup>
import { useRouter } from 'vue-router'
const router = useRouter()
const redirectReload = async () => {
await router.push({ path: '/expedition' })
router.go(0)
}
</script>
Update
I recommend checking out this thread as there are answers that describe how to reload the page component without reloading the whole website using the :key prop and other useful information.