Commit f8046a21 authored by 沈翠玲's avatar 沈翠玲

切换页签保存数据

parent 1bc7bdb0
...@@ -13,6 +13,7 @@ ...@@ -13,6 +13,7 @@
> >
<el-menu-item <el-menu-item
:index="resolvePath(onlyOneChild.path)" :index="resolvePath(onlyOneChild.path)"
@click="clickitem(onlyOneChild)"
:class="{ 'submenu-title-noDropdown': !isNest }" :class="{ 'submenu-title-noDropdown': !isNest }"
> >
<item <item
...@@ -55,7 +56,7 @@ import Item from "./Item"; ...@@ -55,7 +56,7 @@ import Item from "./Item";
import AppLink from "./Link"; import AppLink from "./Link";
import FixiOSBug from "./FixiOSBug"; import FixiOSBug from "./FixiOSBug";
import { mapGetters } from "vuex"; import { mapGetters } from "vuex";
import router from '@/router';
export default { export default {
name: "SidebarItem", name: "SidebarItem",
components: { Item, AppLink }, components: { Item, AppLink },
...@@ -83,6 +84,23 @@ export default { ...@@ -83,6 +84,23 @@ export default {
return {}; return {};
}, },
methods: { methods: {
clickitem (obj) {
// this.$tab.refreshPage(item)
const { path, query, matched } = router.currentRoute;
if (obj === undefined) {
matched.forEach((m) => {
if (m.components && m.components.default && m.components.default.name) {
if (!['Layout', 'ParentView'].includes(m.components.default.name)) {
obj = { name: m.components.default.name, path: path, query: query };
}
}
});
}
this.$store.dispatch('tagsView/delCachedView', obj).then(() => {
const { path, query } = obj
this.$router.replace({ path: '/' + path, query })
})
},
hasOneShowingChild(children = [], parent) { hasOneShowingChild(children = [], parent) {
if (!children) { if (!children) {
children = []; children = [];
......
...@@ -41,6 +41,7 @@ const permission = { ...@@ -41,6 +41,7 @@ const permission = {
const asyncRoutes = filterDynamicRoutes(dynamicRoutes); const asyncRoutes = filterDynamicRoutes(dynamicRoutes);
rewriteRoutes.push({ path: '*', redirect: '/404', hidden: true }) rewriteRoutes.push({ path: '*', redirect: '/404', hidden: true })
router.addRoutes(asyncRoutes); router.addRoutes(asyncRoutes);
console.log('rewriteRoutes', rewriteRoutes)
commit('SET_ROUTES', rewriteRoutes) commit('SET_ROUTES', rewriteRoutes)
commit('SET_SIDEBAR_ROUTERS', constantRoutes.concat(sidebarRoutes)) commit('SET_SIDEBAR_ROUTERS', constantRoutes.concat(sidebarRoutes))
commit('SET_DEFAULT_ROUTES', sidebarRoutes) commit('SET_DEFAULT_ROUTES', sidebarRoutes)
...@@ -67,7 +68,7 @@ function filterAsyncRouter(asyncRouterMap, lastRouter = false, type = false) { ...@@ -67,7 +68,7 @@ function filterAsyncRouter(asyncRouterMap, lastRouter = false, type = false) {
} else if (route.component === 'InnerLink') { } else if (route.component === 'InnerLink') {
route.component = InnerLink route.component = InnerLink
} else { } else {
route.component = loadView(route.component) route.component = loadView(route.component, route.name)
} }
} }
if (route.children != null && route.children && route.children.length) { if (route.children != null && route.children && route.children.length) {
...@@ -120,13 +121,39 @@ export function filterDynamicRoutes(routes) { ...@@ -120,13 +121,39 @@ export function filterDynamicRoutes(routes) {
}) })
return res return res
} }
export function createCustomComponent (name, component) {
return {
name,
data () {
return { component: null }
},
async created () {
if (component instanceof Promise) {
try {
const module = await component
this.component = module?.default
} catch (error) {
console.error(`can not resolve component ${name}, error:`, error)
}
export const loadView = (view) => { return
}
this.component = component
},
render (h) {
return this.component ? h(this.component) : null
},
}
}
export const loadView = (view, name) => {
if (process.env.NODE_ENV === 'development') { if (process.env.NODE_ENV === 'development') {
return (resolve) => require([`@/views/${view}`], resolve) return createCustomComponent(name, (resolve) => require([`@/views/${view}`], resolve))
// return (resolve) => {
// return require([`@/views/${view}`], resolve)
// }
} else { } else {
// 使用 import 实现生产环境的路由懒加载 // 使用 import 实现生产环境的路由懒加载
return (resolve) => require([`@/views/${view}`], resolve) return createCustomComponent(name, (resolve) => require([`@/views/${view}`], resolve))
} }
} }
......
...@@ -129,7 +129,6 @@ ...@@ -129,7 +129,6 @@
<!-- >删除--> <!-- >删除-->
<!-- </el-button>--> <!-- </el-button>-->
<!-- </template>--> <!-- </template>-->
</el-table-column>
</el-table> </el-table>
<pagination <pagination
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment