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

切换页签保存数据

parent 1bc7bdb0
......@@ -13,6 +13,7 @@
>
<el-menu-item
:index="resolvePath(onlyOneChild.path)"
@click="clickitem(onlyOneChild)"
:class="{ 'submenu-title-noDropdown': !isNest }"
>
<item
......@@ -55,7 +56,7 @@ import Item from "./Item";
import AppLink from "./Link";
import FixiOSBug from "./FixiOSBug";
import { mapGetters } from "vuex";
import router from '@/router';
export default {
name: "SidebarItem",
components: { Item, AppLink },
......@@ -83,6 +84,23 @@ export default {
return {};
},
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) {
if (!children) {
children = [];
......
......@@ -41,6 +41,7 @@ const permission = {
const asyncRoutes = filterDynamicRoutes(dynamicRoutes);
rewriteRoutes.push({ path: '*', redirect: '/404', hidden: true })
router.addRoutes(asyncRoutes);
console.log('rewriteRoutes', rewriteRoutes)
commit('SET_ROUTES', rewriteRoutes)
commit('SET_SIDEBAR_ROUTERS', constantRoutes.concat(sidebarRoutes))
commit('SET_DEFAULT_ROUTES', sidebarRoutes)
......@@ -67,7 +68,7 @@ function filterAsyncRouter(asyncRouterMap, lastRouter = false, type = false) {
} else if (route.component === 'InnerLink') {
route.component = InnerLink
} else {
route.component = loadView(route.component)
route.component = loadView(route.component, route.name)
}
}
if (route.children != null && route.children && route.children.length) {
......@@ -120,13 +121,39 @@ export function filterDynamicRoutes(routes) {
})
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') {
return (resolve) => require([`@/views/${view}`], resolve)
return createCustomComponent(name, (resolve) => require([`@/views/${view}`], resolve))
// return (resolve) => {
// return require([`@/views/${view}`], resolve)
// }
} else {
// 使用 import 实现生产环境的路由懒加载
return (resolve) => require([`@/views/${view}`], resolve)
return createCustomComponent(name, (resolve) => require([`@/views/${view}`], resolve))
}
}
......
......@@ -129,7 +129,6 @@
<!-- >删除-->
<!-- </el-button>-->
<!-- </template>-->
</el-table-column>
</el-table>
<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