bugfix: 刷新后保持当前页面&左侧导航选中
This commit is contained in:
@@ -67,7 +67,7 @@
|
|||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
import { LoadingOutlined } from "@ant-design/icons-vue";
|
import { LoadingOutlined } from "@ant-design/icons-vue";
|
||||||
import { message, Upload } from "ant-design-vue";
|
import { message, Upload } from "ant-design-vue";
|
||||||
import { defineComponent, onMounted, h, ref, nextTick, computed,reactive, toRefs, onBeforeMount } from "vue";
|
import { defineComponent, onMounted, h, ref, nextTick, computed,reactive, toRefs, onBeforeMount, watch } from "vue";
|
||||||
import { MailOutlined, AppstoreOutlined, SettingOutlined } from '@ant-design/icons-vue';
|
import { MailOutlined, AppstoreOutlined, SettingOutlined } from '@ant-design/icons-vue';
|
||||||
import { Https } from "@/tool/https";
|
import { Https } from "@/tool/https";
|
||||||
import { useStore } from "vuex";
|
import { useStore } from "vuex";
|
||||||
@@ -102,11 +102,38 @@ export default defineComponent({
|
|||||||
// 5,7
|
// 5,7
|
||||||
rootSubmenuKeys: [],
|
rootSubmenuKeys: [],
|
||||||
openKeys: [],
|
openKeys: [],
|
||||||
selectedKeys: ['sub1'],
|
selectedKeys: [],
|
||||||
nowPageName:'All User',//当前页面名称
|
nowPageName:'All User',//当前页面名称
|
||||||
});
|
});
|
||||||
let routers:any = ref([])
|
let routers:any = ref([])
|
||||||
|
|
||||||
|
const syncMenuStatus = (path:string)=>{
|
||||||
|
if(!state.rootSubmenuKeys.length)return
|
||||||
|
let matched = false
|
||||||
|
state.rootSubmenuKeys.some((item:any)=>{
|
||||||
|
if(item.children){
|
||||||
|
const target = item.children.find((child:any)=>child.route === path)
|
||||||
|
if(target){
|
||||||
|
state.selectedKeys = [target.key]
|
||||||
|
state.openKeys = [`sub-${item.key}`]
|
||||||
|
state.nowPageName = target.name
|
||||||
|
matched = true
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
}else if(item.route === path){
|
||||||
|
state.selectedKeys = [`item-${item.key}`]
|
||||||
|
state.openKeys = []
|
||||||
|
state.nowPageName = item.name
|
||||||
|
matched = true
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
return false
|
||||||
|
})
|
||||||
|
if(!matched){
|
||||||
|
state.selectedKeys = []
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
const onOpenChange = (openKeys: string[]) => {
|
const onOpenChange = (openKeys: string[]) => {
|
||||||
const latestOpenKey:any = openKeys.find(key => state.openKeys.indexOf(key) === -1);
|
const latestOpenKey:any = openKeys.find(key => state.openKeys.indexOf(key) === -1);
|
||||||
@@ -150,24 +177,12 @@ export default defineComponent({
|
|||||||
state.rootSubmenuKeys = adminRouter.all(t);
|
state.rootSubmenuKeys = adminRouter.all(t);
|
||||||
}
|
}
|
||||||
const route = router.currentRoute.value
|
const route = router.currentRoute.value
|
||||||
const isMenuRoute = state.rootSubmenuKeys.some((item:any) => item.route === route.path)
|
const isMenuRoute = state.rootSubmenuKeys.some((item:any) => item.route === route.path || item.children?.some((child:any)=>child.route === route.path))
|
||||||
// 如果是管理员首页或未匹配菜单,才重定向到首个菜单;否则保持当前路由,避免刷新回到 allUser
|
// 如果是管理员首页或未匹配菜单,才重定向到首个菜单;否则保持当前路由,避免刷新回到 allUser
|
||||||
if (route.path === "/administrator" || !isMenuRoute) {
|
if (route.path === "/administrator" || !isMenuRoute) {
|
||||||
router.push(state.rootSubmenuKeys[0].route)
|
router.push(state.rootSubmenuKeys[0].route)
|
||||||
}
|
}
|
||||||
// state.rootSubmenuKeys.forEach((item:any) => {
|
syncMenuStatus(router.currentRoute.value.path)
|
||||||
// if(item.children){
|
|
||||||
// item.children.forEach((item:any) => {
|
|
||||||
// if(item.route == router.currentRoute.value.path){
|
|
||||||
// state.selectedKeys[0] = item.key
|
|
||||||
// }
|
|
||||||
// });
|
|
||||||
// }else{
|
|
||||||
// if(item.route == router.currentRoute.value.path){
|
|
||||||
// state.selectedKeys[0] = item.key
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
// });
|
|
||||||
//储存所有用户id和name
|
//储存所有用户id和name
|
||||||
Https.axiosGet(Https.httpUrls.getAllUserId,).then((rv: any) => {
|
Https.axiosGet(Https.httpUrls.getAllUserId,).then((rv: any) => {
|
||||||
if (rv) {
|
if (rv) {
|
||||||
@@ -192,8 +207,11 @@ export default defineComponent({
|
|||||||
// router.push(state.rootSubmenuKeys[0].route)
|
// router.push(state.rootSubmenuKeys[0].route)
|
||||||
|
|
||||||
})
|
})
|
||||||
|
watch(()=>router.currentRoute.value.path,(path)=>{
|
||||||
|
syncMenuStatus(path)
|
||||||
|
},{immediate:true})
|
||||||
onBeforeMount(()=>{
|
onBeforeMount(()=>{
|
||||||
state.selectedKeys = ['sub1']
|
state.selectedKeys = []
|
||||||
})
|
})
|
||||||
return {
|
return {
|
||||||
...toRefs(state),
|
...toRefs(state),
|
||||||
|
|||||||
Reference in New Issue
Block a user