'admin-21.01.21:创建界面、处理路由缓存问题'

This commit is contained in:
lyt-Top 2021-01-21 00:18:30 +08:00
parent e633bb7df6
commit df3f55a7c0
26 changed files with 650 additions and 193 deletions

View File

@ -9,57 +9,62 @@ export const dynamicRoutes = [
title: '首页', title: '首页',
isLink: '', isLink: '',
isHide: false, isHide: false,
isKeepAlive: true,
icon: 'iconfont icon-shouye' icon: 'iconfont icon-shouye'
}, },
children: [ children: [{
{
path: '/home', path: '/home',
component: () => import('/@/views/home/index.vue'), component: () => import('/@/views/home/index.vue'),
meta: { meta: {
title: '首页', title: '首页',
isLink: '', isLink: '',
isHide: false, isHide: false,
isKeepAlive: true,
icon: 'iconfont icon-shouye' icon: 'iconfont icon-shouye'
} }
}
]
}, },
{ {
path: '/system', path: '/system',
component: () => import('/@/views/layout/index.vue'), name: 'system',
component: () => import('/@/views/layout/routerView/parent.vue'),
redirect: '/system/menu', redirect: '/system/menu',
meta: { meta: {
title: '系统设置', title: '系统设置',
isLink: '', isLink: '',
isHide: false, isHide: false,
icon: 'iconfont icon-xitongshezhi' icon: 'iconfont icon-xitongshezhi',
isKeepAlive: true
}, },
children: [ children: [
{ {
path: '/system/menu', path: '/system/menu',
name: "systemMenu",
component: () => import('/@/views/system/menu/index.vue'), component: () => import('/@/views/system/menu/index.vue'),
meta: { meta: {
title: '菜单管理', title: '菜单管理',
isLink: '', isLink: '',
isHide: false, isHide: false,
icon: 'iconfont icon-caidan' icon: 'iconfont icon-caidan',
isKeepAlive: true
} }
}, },
{ {
path: '/system/user', path: '/system/user',
name: "systemUser",
component: () => import('/@/views/system/user/index.vue'), component: () => import('/@/views/system/user/index.vue'),
meta: { meta: {
title: '用户管理', title: '用户管理',
isLink: '', isLink: '',
isHide: false, isHide: false,
icon: 'iconfont icon-icon-' icon: 'iconfont icon-icon-',
isKeepAlive: false
} }
} }
] ]
}, },
{ {
path: '/limits', path: '/limits',
component: () => import('/@/views/docs/index.vue'), component: () => import('/@/views/layout/routerView/parent.vue'),
redirect: '/limits/frontEnd', redirect: '/limits/frontEnd',
meta: { meta: {
title: '权限管理', title: '权限管理',
@ -70,7 +75,7 @@ export const dynamicRoutes = [
children: [ children: [
{ {
path: '/limits/frontEnd', path: '/limits/frontEnd',
component: () => import('/@/views/docs/index.vue'), component: () => import('/@/views/layout/routerView/parent.vue'),
redirect: '/limits/frontEnd/page', redirect: '/limits/frontEnd/page',
meta: { meta: {
title: '前端控制', title: '前端控制',
@ -80,7 +85,7 @@ export const dynamicRoutes = [
children: [ children: [
{ {
path: '/limits/frontEnd/page', path: '/limits/frontEnd/page',
component: () => import('/@/views/docs/index.vue'), component: () => import('/@/views/limits/frontEnd/page/index.vue'),
meta: { meta: {
title: '页面权限', title: '页面权限',
isLink: '', isLink: '',
@ -89,7 +94,7 @@ export const dynamicRoutes = [
}, },
{ {
path: '/limits/frontEnd/btn', path: '/limits/frontEnd/btn',
component: () => import('/@/views/docs/index.vue'), component: () => import('/@/views/limits/frontEnd/btn/index.vue'),
meta: { meta: {
title: '按钮权限', title: '按钮权限',
isLink: '', isLink: '',
@ -100,18 +105,127 @@ export const dynamicRoutes = [
}, },
{ {
path: '/limits/backEnd', path: '/limits/backEnd',
component: () => import('/@/views/docs/index.vue'), component: () => import('/@/views/layout/routerView/parent.vue'),
meta: { meta: {
title: '后端控制', title: '后端控制',
isLink: '', isLink: '',
isHide: false isHide: false
},
children: [
{
path: '/limits/backEnd/page',
component: () => import('/@/views/limits/backEnd/page/index.vue'),
meta: {
title: '页面权限',
isLink: '',
isHide: false
}
},
{
path: '/limits/backEnd/btn',
component: () => import('/@/views/limits/backEnd/btn/index.vue'),
meta: {
title: '按钮权限',
isLink: '',
isHide: false
}
}
]
}
]
},
{
path: '/menu',
component: () => import('/@/views/layout/routerView/parent.vue'),
redirect: '/menu/menu1',
meta: {
title: '路由嵌套',
isLink: '',
isHide: false,
icon: 'iconfont icon-xitongshezhi'
},
children: [
{
path: '/menu/menu1',
component: () => import('/@/views/layout/routerView/parent.vue'),
redirect: '/menu/menu1/menu11',
meta: {
title: '菜单1',
isLink: '',
isHide: false,
icon: 'iconfont icon-caidan'
},
children: [
{
path: '/menu/menu1/menu11',
component: () => import('/@/views/menu/menu1/menu11/index.vue'),
meta: {
title: '菜单11',
isLink: '',
isHide: false,
icon: 'iconfont icon-caidan'
}
},
{
path: '/menu/menu1/menu12',
component: () => import('/@/views/layout/routerView/parent.vue'),
redirect: '/menu/menu1/menu12/menu121',
meta: {
title: '菜单12',
isLink: '',
isHide: false,
icon: 'iconfont icon-caidan'
},
children: [
{
path: '/menu/menu1/menu12/menu121',
component: () => import('/@/views/menu/menu1/menu12/menu121/index.vue'),
meta: {
title: '菜单121',
isLink: '',
isHide: false,
icon: 'iconfont icon-caidan'
}
},
{
path: '/menu/menu1/menu12/menu122',
component: () => import('/@/views/menu/menu1/menu12/menu122/index.vue'),
meta: {
title: '菜单122',
isLink: '',
isHide: false,
icon: 'iconfont icon-caidan'
}
}
]
},
{
path: '/menu/menu1/menu13',
component: () => import('/@/views/menu/menu1/menu13/index.vue'),
meta: {
title: '菜单13',
isLink: '',
isHide: false,
icon: 'iconfont icon-caidan'
}
}
]
},
{
path: '/menu/menu2',
component: () => import('/@/views/menu/menu2/index.vue'),
meta: {
title: '菜单2',
isLink: '',
isHide: false,
icon: 'iconfont icon-caidan'
} }
} }
] ]
}, },
{ {
path: '/fun', path: '/fun',
component: () => import('/@/views/docs copy 1/index.vue'), component: () => import('/@/views/fun/index.vue'),
meta: { meta: {
title: '功能', title: '功能',
isLink: '', isLink: '',
@ -121,7 +235,7 @@ export const dynamicRoutes = [
}, },
{ {
path: '/pages', path: '/pages',
component: () => import('/@/views/docs copy 1/index.vue'), component: () => import('/@/views/pages/index.vue'),
meta: { meta: {
title: '页面', title: '页面',
isLink: '', isLink: '',
@ -131,7 +245,7 @@ export const dynamicRoutes = [
}, },
{ {
path: '/components', path: '/components',
component: () => import('/@/views/docs copy 1/index.vue'), component: () => import('/@/views/components/index.vue'),
meta: { meta: {
title: '组件', title: '组件',
isLink: '', isLink: '',
@ -141,7 +255,7 @@ export const dynamicRoutes = [
}, },
{ {
path: '/chart', path: '/chart',
component: () => import('/@/views/docs copy 1/index.vue'), component: () => import('/@/views/chart/index.vue'),
meta: { meta: {
title: '大数据图表', title: '大数据图表',
isLink: '', isLink: '',
@ -150,8 +264,8 @@ export const dynamicRoutes = [
} }
}, },
{ {
path: '/docs1', path: '/personal',
component: () => import('/@/views/docs copy 1/index.vue'), component: () => import('/@/views/personal/index.vue'),
meta: { meta: {
title: '个人中心', title: '个人中心',
isLink: '', isLink: '',
@ -160,8 +274,8 @@ export const dynamicRoutes = [
} }
}, },
{ {
path: '/docs2', path: '/tools',
component: () => import('/@/views/docs copy 2/index.vue'), component: () => import('/@/views/tools/index.vue'),
meta: { meta: {
title: '工具类集合', title: '工具类集合',
isLink: '', isLink: '',
@ -170,8 +284,8 @@ export const dynamicRoutes = [
} }
}, },
{ {
path: '/docs3', path: '/link',
component: () => import('/@/views/docs copy 3/index.vue'), component: () => import('/@/views/layout/routerView/parent.vue'),
meta: { meta: {
title: '外链', title: '外链',
isLink: '', isLink: '',
@ -181,17 +295,18 @@ export const dynamicRoutes = [
}, },
{ {
path: '/iframe', path: '/iframe',
component: () => import('/@/views/docs copy 3/index.vue'), component: () => import('/@/views/layout/routerView/iframe.vue'),
meta: { meta: {
title: '内嵌 iframe', title: '内嵌 iframe',
isLink: '', isLink: '',
isHide: false, isHide: false,
icon: 'iconfont icon-neiqianshujuchucun' icon: 'iconfont icon-neiqianshujuchucun'
} }
}]
} }
] ]
export const staticRoutes: Array<RouteRecordRaw> = [ const staticRoutes: Array<RouteRecordRaw> = [
{ {
path: '/login', path: '/login',
component: () => import('/@/views/login/index.vue'), component: () => import('/@/views/login/index.vue'),

View File

@ -786,6 +786,10 @@
width: 24px; width: 24px;
text-align: center; text-align: center;
} }
// 获取焦点时
.el-menu-item:focus {
background: transparent !important;
}
/* Tabs 标签页 /* Tabs 标签页
------------------------------- */ ------------------------------- */

View File

@ -0,0 +1,21 @@
<template>
<div>
chartIndex
<el-input v-model="val"></el-input>
</div>
</template>
<script lang="ts">
import { toRefs, reactive } from "vue";
export default {
name: "chartIndex",
setup() {
const state = reactive({
val: "",
});
return {
...toRefs(state),
};
},
};
</script>

View File

@ -0,0 +1,21 @@
<template>
<div>
componentsIndex
<el-input v-model="val"></el-input>
</div>
</template>
<script lang="ts">
import { toRefs, reactive } from "vue";
export default {
name: "componentsIndex",
setup() {
const state = reactive({
val: "",
});
return {
...toRefs(state),
};
},
};
</script>

View File

@ -1,3 +0,0 @@
<template>
docs
</template>

View File

@ -1,3 +0,0 @@
<template>
docs
</template>

View File

@ -1,3 +0,0 @@
<template>
docs
</template>

View File

@ -0,0 +1,21 @@
<template>
<div>
funIndex
<el-input v-model="val"></el-input>
</div>
</template>
<script lang="ts">
import { toRefs, reactive } from "vue";
export default {
name: "funIndex",
setup() {
const state = reactive({
val: "",
});
return {
...toRefs(state),
};
},
};
</script>

View File

@ -32,7 +32,7 @@ export default {
// // // //
const setFilterRoutes = () => { const setFilterRoutes = () => {
store.dispatch("setRoutes"); store.dispatch("setRoutes");
state.menuList = filterRoutesFun(store.state.routes); state.menuList = filterRoutesFun(store.state.routes[0].children);
}; };
// //
const filterRoutesFun = (arr: Array<object>) => { const filterRoutesFun = (arr: Array<object>) => {

View File

@ -40,7 +40,6 @@ export default {
breadcrumbList: [{ meta: { title: "", icon: "" } }], // v-for breadcrumbList: [{ meta: { title: "", icon: "" } }], // v-for
}); });
const getBreadcrumbList = (matched: any) => { const getBreadcrumbList = (matched: any) => {
console.log(matched);
state.breadcrumbList = matched; state.breadcrumbList = matched;
}; };
const onBreadcrumbClick = (v: object) => { const onBreadcrumbClick = (v: object) => {

View File

@ -128,8 +128,8 @@ export default {
}); });
onBeforeRouteUpdate((to) => { onBeforeRouteUpdate((to) => {
state.routePath = to.path; state.routePath = to.path;
getTagsRefsIndex(to.path); // getTagsRefsIndex(to.path);
moveToCurrentTag(); // moveToCurrentTag();
}); });
return { return {
isActive, isActive,

View File

@ -0,0 +1,21 @@
<template>
<div>
iframeIndex
<el-input v-model="val"></el-input>
</div>
</template>
<script lang="ts">
import { toRefs, reactive } from "vue";
export default {
name: "iframeIndex",
setup() {
const state = reactive({
val: "",
});
return {
...toRefs(state),
};
},
};
</script>

View File

@ -1,11 +1,13 @@
<template> <template>
<router-view v-slot="{ Component }" :key="Math.random()"> <div>
<router-view v-slot="{ Component, route }">
<transition :name="setTransitionName" mode="out-in"> <transition :name="setTransitionName" mode="out-in">
<keep-alive> <keep-alive include="home,systemMenu">
<component :is="Component" /> <component :is="Component" />
</keep-alive> </keep-alive>
</transition> </transition>
</router-view> </router-view>
</div>
</template> </template>
<script lang="ts"> <script lang="ts">
@ -16,6 +18,7 @@ import {
reactive, reactive,
getCurrentInstance, getCurrentInstance,
watch, watch,
onBeforeMount,
} from "vue"; } from "vue";
import { useStore } from "/@/store/index.ts"; import { useStore } from "/@/store/index.ts";
export default defineComponent({ export default defineComponent({

View File

@ -0,0 +1,21 @@
<template>
<div>
limitsBackEndEndBtn
<el-input v-model="val"></el-input>
</div>
</template>
<script lang="ts">
import { toRefs, reactive } from "vue";
export default {
name: "limitsBackEndEndBtn",
setup() {
const state = reactive({
val: "",
});
return {
...toRefs(state),
};
},
};
</script>

View File

@ -0,0 +1,21 @@
<template>
<div>
limitsBackEndEndPage
<el-input v-model="val"></el-input>
</div>
</template>
<script lang="ts">
import { toRefs, reactive } from "vue";
export default {
name: "limitsBackEndEndPage",
setup() {
const state = reactive({
val: "",
});
return {
...toRefs(state),
};
},
};
</script>

View File

@ -0,0 +1,21 @@
<template>
<div>
limitsFrontEndBtn
<el-input v-model="val"></el-input>
</div>
</template>
<script lang="ts">
import { toRefs, reactive } from "vue";
export default {
name: "limitsFrontEndBtn",
setup() {
const state = reactive({
val: "",
});
return {
...toRefs(state),
};
},
};
</script>

View File

@ -0,0 +1,21 @@
<template>
<div>
limitsFrontEndPage
<el-input v-model="val"></el-input>
</div>
</template>
<script lang="ts">
import { toRefs, reactive } from "vue";
export default {
name: "limitsFrontEndPage",
setup() {
const state = reactive({
val: "",
});
return {
...toRefs(state),
};
},
};
</script>

View File

@ -0,0 +1,21 @@
<template>
<div>
menuMenu11
<el-input v-model="val"></el-input>
</div>
</template>
<script lang="ts">
import { toRefs, reactive } from "vue";
export default {
name: "menuMenu11",
setup() {
const state = reactive({
val: "",
});
return {
...toRefs(state),
};
},
};
</script>

View File

@ -0,0 +1,21 @@
<template>
<div>
menuMenu121
<el-input v-model="val"></el-input>
</div>
</template>
<script lang="ts">
import { toRefs, reactive } from "vue";
export default {
name: "menuMenu121",
setup() {
const state = reactive({
val: "",
});
return {
...toRefs(state),
};
},
};
</script>

View File

@ -0,0 +1,21 @@
<template>
<div>
menuMenu122
<el-input v-model="val"></el-input>
</div>
</template>
<script lang="ts">
import { toRefs, reactive } from "vue";
export default {
name: "menuMenu122",
setup() {
const state = reactive({
val: "",
});
return {
...toRefs(state),
};
},
};
</script>

View File

@ -0,0 +1,21 @@
<template>
<div>
menuMenu13
<el-input v-model="val"></el-input>
</div>
</template>
<script lang="ts">
import { toRefs, reactive } from "vue";
export default {
name: "menuMenu13",
setup() {
const state = reactive({
val: "",
});
return {
...toRefs(state),
};
},
};
</script>

View File

@ -0,0 +1,21 @@
<template>
<div>
menuMenu2
<el-input v-model="val"></el-input>
</div>
</template>
<script lang="ts">
import { toRefs, reactive } from "vue";
export default {
name: "menuMenu2",
setup() {
const state = reactive({
val: "",
});
return {
...toRefs(state),
};
},
};
</script>

View File

@ -0,0 +1,21 @@
<template>
<div>
pagesIndex
<el-input v-model="val"></el-input>
</div>
</template>
<script lang="ts">
import { toRefs, reactive } from "vue";
export default {
name: "pagesIndex",
setup() {
const state = reactive({
val: "",
});
return {
...toRefs(state),
};
},
};
</script>

View File

@ -0,0 +1,21 @@
<template>
<div>
personalIndex
<el-input v-model="val"></el-input>
</div>
</template>
<script lang="ts">
import { toRefs, reactive } from "vue";
export default {
name: "personal",
setup() {
const state = reactive({
val: "",
});
return {
...toRefs(state),
};
},
};
</script>

View File

@ -1,12 +1,21 @@
<template> <template>
<div> <div>
systemUser systemUser
<el-input v-model="val"></el-input>
</div> </div>
</template> </template>
<script lang="ts"> <script lang="ts">
import { toRefs, reactive } from "vue";
export default { export default {
name: "systemUser", name: "systemUser",
setup() {}, setup() {
const state = reactive({
val: "",
});
return {
...toRefs(state),
};
},
}; };
</script> </script>

View File

@ -0,0 +1,21 @@
<template>
<div>
toolsIndex
<el-input v-model="val"></el-input>
</div>
</template>
<script lang="ts">
import { toRefs, reactive } from "vue";
export default {
name: "toolsIndex",
setup() {
const state = reactive({
val: "",
});
return {
...toRefs(state),
};
},
};
</script>