Browse Source

no message

master
xpz2018 9 months ago
parent
commit
b0fb01ba98
6 changed files with 41 additions and 17 deletions
  1. 6
      src/api/sys/menu.ts
  2. 2
      src/locales/lang/zh-CN/routes/system.ts
  3. 34
      src/router/helper/menuHelper.ts
  4. 2
      src/settings/projectSetting.ts
  5. 12
      src/views/invite/index/index.vue
  6. 2
      src/views/invite/list/index.vue

6
src/api/sys/menu.ts

@ -2,15 +2,15 @@ import { defHttp } from '/@/utils/http/axios'
import { getMenuListResultModel, RolePageListGetResultModel } from './model/menuModel'
enum Api {
GetMenuList = '/dating-agency-uec/user/list/user-org-role/application-resource',
GetMenuList = '/dating-agency-uec/user/list/user-clue-org-role/application-resource',
RolePageList = '/dating-agency-uec/user/page/organization-role',
CreateMenu = '/dating-agency-uec/user/create/application-resource',
DeleteMenu = '/dating-agency-uec/user/delete/application-resource',
EditMenu = '/dating-agency-uec/user/edit/application-resource',
GetAllMenuList = '/dating-agency-uec/user/list/application-resource/by-app-program-id',
GetAllMenuList = '/dating-agency-uec/user/list/clue/application-resource',
CreateRole = '/dating-agency-uec/user/create/organization-role',
EditRole = '/dating-agency-uec/user/edit/organization-role',
RoleMenu = '/dating-agency-uec/user/list/organization-role/application-resource',
RoleMenu = '/dating-agency-uec/user/list/clue-org-role/application-resource',
DeleteRole = '/dating-agency-uec/user/delete/organization-role',
}

2
src/locales/lang/zh-CN/routes/system.ts

@ -1,5 +1,5 @@
export default {
system: '企业管理',
system: '门店管理',
role: '角色管理',
menu: '菜单管理'
}

34
src/router/helper/menuHelper.ts

@ -114,19 +114,23 @@ export function configureDynamicParamsMenu(menu: Menu, params: RouteParams) {
/**
* menus和前端路由进行对比然后组成新的菜单,
*/
export function transformMenu(menus: string[]): Menu[] {
export function transformMenu(menus: any[]): Menu[] {
// 如果没有菜单数据,按照管理员来处理
if(menus.length == 0){
return []
}
// const menuArray = flattenTree(menus)
let menuList: Menu[] = []
appMenuList.forEach(item => {
let element: Menu = {path: item.path, name: item.name, component: 'LAYOUT', redirect: item.redirect, meta: item.meta}
let children: Menu[] = []
item.children?.forEach(menu => {
// 这里只考虑二级菜单,没有做
if(menus.includes(menu.path)){
children.push(cloneDeep(menu))
}
})
if(children.length){
element.children = children
@ -134,4 +138,32 @@ export function transformMenu(menus: string[]): Menu[] {
}
})
return menuList
}
function flattenSingleNode(root: Menu): string[] {
const stack: Menu[] = [root];
const result: string[] = [];
while (stack.length) {
const node = stack.pop()!;
result.push(node.path);
if (node.children) {
// 从右向左压栈,保证从左到右遍历
for (let i = node.children.length - 1; i >= 0; i--) {
stack.push(node.children[i]);
}
}
}
return result;
}
function flattenTree(nodes: Menu | Menu[]): string[] {
if (Array.isArray(nodes)) {
let result: string[] = [];
nodes.forEach(node => {
result = result.concat(flattenSingleNode(node));
});
return result;
} else {
return flattenSingleNode(nodes);
}
}

2
src/settings/projectSetting.ts

@ -24,7 +24,7 @@ const setting: ProjectConfig = {
settingButtonPosition: SettingButtonPositionEnum.AUTO,
// Permission mode
permissionMode: PermissionModeEnum.ROLE,
permissionMode: PermissionModeEnum.BACK,
// Permission-related cache is stored in sessionStorage or localStorage
permissionCacheType: CacheTypeEnum.LOCAL,

12
src/views/invite/index/index.vue

@ -48,14 +48,6 @@
</div>
</template>
<template #action="{ record }">
<!-- <TableAction
:actions="[
{
label: '详情',
onClick: toDetail.bind(null, record),
},
]"
/> -->
<div class="flex-row-center-start">
<Button type="link" @click="toDetail(record)">详情</Button>
<span style="color: #999;">|</span>
@ -81,7 +73,7 @@
import { Radio } from 'ant-design-vue'
export default {
name: 'CluePool',
name: 'Invite',
components: { RadioGroup: Radio.Group, RadioButton: Radio.Button },
}
</script>
@ -132,7 +124,7 @@
rowSelection: {
type: 'checkbox',
onChange,
getCheckboxProps(record: Recordable) {
getCheckboxProps(record: any) {
// Demo: id0
return { disabled: record.allocationStatus !== 1 };
},

2
src/views/invite/list/index.vue

@ -81,7 +81,7 @@
import { Radio } from 'ant-design-vue'
export default {
name: 'CluePool',
name: 'MyClue',
components: { RadioGroup: Radio.Group, RadioButton: Radio.Button },
}
</script>

Loading…
Cancel
Save