mirror of
https://github.com/1024-lab/smart-admin.git
synced 2025-09-03 11:16:07 +00:00
v1.0.9
This commit is contained in:
@@ -29,7 +29,7 @@ export const taskApi = {
|
||||
return getAxios(`/quartz/task/resume/${taskId}`);
|
||||
},
|
||||
// 删除任务
|
||||
deleteTasks: (taskId) => {
|
||||
deleteTask: (taskId) => {
|
||||
return getAxios(`/quartz/task/delete/${taskId}`);
|
||||
}
|
||||
};
|
||||
|
@@ -9,7 +9,7 @@ export default {
|
||||
return showTitle(item, this);
|
||||
},
|
||||
showChildren (item) {
|
||||
return item.children && (item.children.length > 1 || (item.meta && item.meta.showAlways));
|
||||
return item.children && (item.children.length > 0 || (item.meta && item.meta.showAlways));
|
||||
},
|
||||
getNameOrHref (item, children0) {
|
||||
return item.href ? `isTurnByHref_${item.href}` : (children0 ? item.children[0].name : item.name);
|
||||
|
@@ -11,9 +11,9 @@
|
||||
v-show="!collapsed"
|
||||
width="auto"
|
||||
>
|
||||
<template v-for="item in menuList">
|
||||
<template v-for="item in menuList">
|
||||
<template v-if="item.children && item.children.length === 1">
|
||||
<side-menu-item :key="`menu-${item.name}`" :parent-item="item" v-if="showChildren(item)"></side-menu-item>
|
||||
<side-menu-item :key="`menu-${item.name}`" :parent-item="item.children[0]" v-if="item.children[0].children && item.children[0].children.length > 0 "></side-menu-item>
|
||||
<menu-item
|
||||
:key="`menu-${item.children[0].name}`"
|
||||
:name="getNameOrHref(item, true)"
|
||||
@@ -24,7 +24,7 @@
|
||||
</menu-item>
|
||||
</template>
|
||||
<template v-else>
|
||||
<side-menu-item :key="`menu-${item.name}`" :parent-item="item" v-if="showChildren(item)"></side-menu-item>
|
||||
<side-menu-item :key="`menu-${item.name}`" :parent-item="item" v-if="item.children && item.children.length > 0"></side-menu-item>
|
||||
<menu-item :key="`menu-${item.name}`" :name="getNameOrHref(item)" v-else>
|
||||
<common-icon :type="item.icon || ''" />
|
||||
<span>{{ showTitle(item) }}</span>
|
||||
@@ -81,6 +81,13 @@ export default {
|
||||
CollapsedMenu
|
||||
},
|
||||
props: {
|
||||
// 菜单path数组
|
||||
menuNameMatchedMap:{
|
||||
type: Map,
|
||||
default() {
|
||||
return new Map();
|
||||
}
|
||||
},
|
||||
// 菜单集合
|
||||
menuList: {
|
||||
type: Array,
|
||||
@@ -161,6 +168,7 @@ export default {
|
||||
},
|
||||
methods: {
|
||||
updateActiveName(name){
|
||||
this.updateOpenName(name);
|
||||
this.$nextTick(() => {
|
||||
this.$refs.menu.updateOpened();
|
||||
this.$refs.menu.updateActiveName(name);
|
||||
@@ -171,13 +179,15 @@ export default {
|
||||
},
|
||||
// 从激活菜单的名称中获取打开的菜单
|
||||
getOpenedNamesByActiveName(name) {
|
||||
return this.$route.matched
|
||||
.map(item => item.name)
|
||||
.filter(item => item !== name);
|
||||
let array = this.menuNameMatchedMap.get(name);
|
||||
if(array){
|
||||
return array;
|
||||
}else{
|
||||
return [];
|
||||
}
|
||||
},
|
||||
updateOpenName(name) {
|
||||
if (name === this.$config.homeName) this.openedNames = [];
|
||||
else this.openedNames = this.getOpenedNamesByActiveName(name);
|
||||
this.openedNames = this.menuNameMatchedMap.get(name);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
@@ -10,6 +10,7 @@
|
||||
v-model="collapsed"
|
||||
>
|
||||
<SideMenu
|
||||
:menuNameMatchedMap="menuNameMatchedMap"
|
||||
:active-name="$route.name"
|
||||
:collapsed="collapsed"
|
||||
:menu-list="menuList"
|
||||
@@ -123,7 +124,8 @@ export default {
|
||||
searchKeyWord: '',
|
||||
searchList: [],
|
||||
searchListResult: [],
|
||||
menuList: []
|
||||
menuList: [],
|
||||
menuNameMatchedMap:new Map()
|
||||
};
|
||||
},
|
||||
computed: {
|
||||
@@ -284,6 +286,7 @@ export default {
|
||||
icon: _.isUndefined(router.meta.icon) ? '' : router.meta.icon,
|
||||
children: []
|
||||
};
|
||||
this.menuNameMatchedMap.set(menu.name,[menu.name]);
|
||||
privilegeTree.push(menu);
|
||||
//存在孩子节点,开始递归
|
||||
if (router.children && router.children.length > 0) {
|
||||
@@ -292,11 +295,17 @@ export default {
|
||||
}
|
||||
}
|
||||
}
|
||||
console.log('privilegeTree',privilegeTree)
|
||||
this.menuList = privilegeTree;
|
||||
},
|
||||
|
||||
recursion(children, parentMenu) {
|
||||
for (const router of children) {
|
||||
//验证权限
|
||||
if (this.$store.state.user.privilegeMenuKeyList.indexOf(router.name) ===-1) {
|
||||
continue;
|
||||
}
|
||||
|
||||
//过滤非菜单
|
||||
if (!router.meta.hideInMenu) {
|
||||
let menu = {
|
||||
@@ -309,6 +318,10 @@ export default {
|
||||
name: router.name,
|
||||
title: router.meta.title
|
||||
});
|
||||
|
||||
let menuNameArray = this.menuNameMatchedMap.get(parentMenu.name);
|
||||
this.menuNameMatchedMap.set(menu.name,[...menuNameArray,menu.name]);
|
||||
|
||||
parentMenu.children.push(menu);
|
||||
//存在孩子节点,开始递归
|
||||
if (router.children && router.children.length > 0) {
|
||||
|
@@ -10,9 +10,10 @@ import config from '@/config';
|
||||
|
||||
const { homeName } = config;
|
||||
|
||||
Vue.use(Router);
|
||||
Vue.use(Router);
|
||||
const router = new Router({
|
||||
routes: routers
|
||||
// routes: routers,
|
||||
routes: buildRouters(routers)
|
||||
// mode: 'history'
|
||||
});
|
||||
const LOGIN_PAGE_NAME = 'login';
|
||||
@@ -107,6 +108,63 @@ let tempCheckObj = {
|
||||
checkRouterPathMap: new Map()
|
||||
};
|
||||
|
||||
function buildRouters (routerArray) {
|
||||
let lineRouters = [];
|
||||
for (let routerItem of routerArray) {
|
||||
//如果是顶层菜单
|
||||
if (routerItem.meta.topMenu) {
|
||||
// for (let children of routerItem.children) {
|
||||
let lineRouterArray = convertRouterTree2Line(routerItem.children);
|
||||
lineRouters.push(...lineRouterArray);
|
||||
// }
|
||||
} else {
|
||||
let lineRouterArray = convertRouterTree2Line([routerItem]);
|
||||
lineRouters.push(...lineRouterArray);
|
||||
}
|
||||
}
|
||||
return lineRouters;
|
||||
}
|
||||
|
||||
function convertRouterTree2Line (routerArray) {
|
||||
//一级,比如 人员管理
|
||||
let topArray = [];
|
||||
for (let router1Item of routerArray) {
|
||||
let level2Array = [];
|
||||
//二级,比如员工管理
|
||||
if (router1Item.children) {
|
||||
for (let level2Item of router1Item.children) {
|
||||
|
||||
let level2ItemCopy = {};
|
||||
for (let property in level2Item) {
|
||||
if ('children' !== property) {
|
||||
level2ItemCopy[property] = level2Item[property];
|
||||
}
|
||||
}
|
||||
|
||||
//三级,
|
||||
if (level2Item.children) {
|
||||
level2Array.push(...level2Item.children)
|
||||
}
|
||||
|
||||
level2ItemCopy.children = [];
|
||||
level2Array.push(level2Item);
|
||||
}
|
||||
}
|
||||
|
||||
let newTopRouterItem = {};
|
||||
for (let property in router1Item) {
|
||||
if ('children' !== property) {
|
||||
newTopRouterItem[property] = router1Item[property];
|
||||
}
|
||||
}
|
||||
|
||||
newTopRouterItem.children = level2Array;
|
||||
topArray.push(newTopRouterItem);
|
||||
}
|
||||
|
||||
return topArray;
|
||||
}
|
||||
|
||||
function recursionRouter (routerArray) {
|
||||
for (let routerItem of routerArray) {
|
||||
if (!routerItem.name) {
|
||||
@@ -146,9 +204,12 @@ function recursionRouter (routerArray) {
|
||||
}
|
||||
}
|
||||
|
||||
recursionRouter(routers);
|
||||
|
||||
delete tempCheckObj.checkRouterNameMap;
|
||||
delete tempCheckObj.checkRouterPathMap;
|
||||
//如果是开发环境,需要检测router的规范性
|
||||
if (process.env.NODE_ENV === 'development') {
|
||||
recursionRouter(routers);
|
||||
delete tempCheckObj.checkRouterNameMap;
|
||||
delete tempCheckObj.checkRouterPathMap;
|
||||
}
|
||||
|
||||
export default router;
|
||||
|
@@ -17,7 +17,6 @@ export const threeRouter = [
|
||||
meta: {
|
||||
title: '三级菜单'
|
||||
},
|
||||
component: () => import('@/views/home'),
|
||||
children: [
|
||||
{
|
||||
path: '/three-router/level-two/level-three1',
|
||||
@@ -29,7 +28,7 @@ export const threeRouter = [
|
||||
{ title: '删除', name: 'roleOneTwo-delete' }
|
||||
]
|
||||
},
|
||||
component: () => import('@/views/home')
|
||||
component: () => import('@/views/three-router/three-content')
|
||||
},
|
||||
{
|
||||
path: '/three-router/level-two/level-three2',
|
||||
@@ -41,7 +40,7 @@ export const threeRouter = [
|
||||
{ title: '删除', name: 'roleTwoTwo-delete' }
|
||||
]
|
||||
},
|
||||
component: () => import('@/views/home')
|
||||
component: () => import('@/views/three-router/three-content')
|
||||
}
|
||||
]
|
||||
},
|
||||
@@ -55,7 +54,7 @@ export const threeRouter = [
|
||||
{ title: '删除', name: 'roleOneOne-delete' }
|
||||
]
|
||||
},
|
||||
component: () => import('@/views/home')
|
||||
component: () => import('@/views/three-router/three-content')
|
||||
}
|
||||
]
|
||||
}
|
||||
|
@@ -80,19 +80,8 @@
|
||||
<span>任务调度日志</span>
|
||||
</Col>
|
||||
</Row>
|
||||
<Tables
|
||||
:columns="logColumns"
|
||||
:current="logPageNum"
|
||||
:page-size="changeLogPageSize"
|
||||
:pageShow="true"
|
||||
:show-elevator="false"
|
||||
:show-sizer="false"
|
||||
:total="logPageTotal"
|
||||
:value="logData"
|
||||
@on-change="logChangePage"
|
||||
style="height: 420px;"
|
||||
v-if="hasLog"
|
||||
></Tables>
|
||||
<Table border :columns="logColumns" :data="logData"></Table>
|
||||
<Page show-total @on-change="changeLogPageNum" :current="logPageNum" :total="logTotal" show-sizer />
|
||||
<div slot="footer">
|
||||
<Button @click="closeLog" type="primary">关闭</Button>
|
||||
</div>
|
||||
@@ -125,8 +114,8 @@ export default {
|
||||
pageSize: 10,
|
||||
pageTotal: 0,
|
||||
logPageNum: 1,
|
||||
logPageSize: 6,
|
||||
logPageTotal: 0,
|
||||
logPageSize: 10,
|
||||
logTotal: 0,
|
||||
updateItem: {
|
||||
taskBean: '',
|
||||
taskCron: '',
|
||||
@@ -387,7 +376,7 @@ export default {
|
||||
taskId: this.taskId
|
||||
});
|
||||
this.logData = result.data.list;
|
||||
this.logPageTotal = result.data.total;
|
||||
this.logTotal = result.data.total;
|
||||
this.logPageNum = result.data.pageNum;
|
||||
this.logPageSize = result.data.pageSize;
|
||||
this.hasLog = true;
|
||||
@@ -405,7 +394,7 @@ export default {
|
||||
this.getTaskList();
|
||||
},
|
||||
// 日志分页
|
||||
changeLogPageSize(pageNum) {
|
||||
changeLogPageNum(pageNum) {
|
||||
this.logPageNum = pageNum;
|
||||
this.getTaskLog();
|
||||
},
|
||||
|
26
smart-admin-web/src/views/three-router/three-content.vue
Normal file
26
smart-admin-web/src/views/three-router/three-content.vue
Normal file
@@ -0,0 +1,26 @@
|
||||
<template>
|
||||
<Card class="warp-card" dis-hover>
|
||||
<Alert>
|
||||
<h3>三级路由页面</h3>
|
||||
<pre>
|
||||
这个是三级路由页面。
|
||||
</pre>
|
||||
</Alert>
|
||||
</Card>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
name: 'ThreeContent',
|
||||
components: {},
|
||||
props: {},
|
||||
data() {
|
||||
return {
|
||||
};
|
||||
},
|
||||
mounted() {
|
||||
},
|
||||
methods: {
|
||||
}
|
||||
};
|
||||
</script>
|
Reference in New Issue
Block a user