Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
H
haoban-3
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
office
haoban-3
Commits
f38ddc5f
Commit
f38ddc5f
authored
Apr 26, 2022
by
caoyanzhi
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
update: 按钮权限
parent
5beeddf1
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
129 additions
and
19 deletions
+129
-19
button-code.js
menu-data/button-code.js
+14
-0
create-menu-json.js
menu-data/create-menu-json.js
+114
-18
menu-data.js
menu-data/menu-data.js
+1
-1
result.xlsx
menu-data/result.xlsx
+0
-0
No files found.
menu-data/button-code.js
0 → 100644
View file @
f38ddc5f
/* eslint-disable */
module
.
exports
=
{
// key为按钮所在的页面路径,对象为页面按钮
// 客户列表
myCustomerList
:
{
// key为按钮code,数组为按钮数据
// 按钮名称、是否受权限控制0否1是、是否增删改0跳转1是2其他、按钮跳转路径
assign
:
[
'分配'
,
1
,
2
],
multipleAssign
:
[
'批量分配'
,
1
,
2
]
},
memberTagSet
:
{
syncLog
:
[
'同步历史'
,
1
,
0
,
'syncHistory'
]
}
}
menu-data/create-menu-json.js
View file @
f38ddc5f
...
@@ -3,8 +3,9 @@ const path = require('path');
...
@@ -3,8 +3,9 @@ const path = require('path');
const
fs
=
require
(
'fs'
);
const
fs
=
require
(
'fs'
);
const
json2xls
=
require
(
'json2xls'
);
const
json2xls
=
require
(
'json2xls'
);
const
menuData
=
require
(
'./menu-data.js'
);
const
menuData
=
require
(
'./menu-data.js'
);
const
buttonData
=
require
(
'./button-code.js'
);
function
checkData
(
data
,
level
)
{
function
check
Menu
Data
(
data
,
level
)
{
return
data
.
some
(
el
=>
{
return
data
.
some
(
el
=>
{
// 每个节点是否有menu属性
// 每个节点是否有menu属性
let
flag
=
el
.
hasOwnProperty
(
'menu'
);
let
flag
=
el
.
hasOwnProperty
(
'menu'
);
...
@@ -39,15 +40,15 @@ function checkData(data, level) {
...
@@ -39,15 +40,15 @@ function checkData(data, level) {
}
}
}
}
if
(
flag
&&
Array
.
isArray
(
el
.
children
))
{
if
(
flag
&&
Array
.
isArray
(
el
.
children
))
{
flag
=
!
checkData
(
el
.
children
,
level
+
1
);
flag
=
!
check
Menu
Data
(
el
.
children
,
level
+
1
);
}
}
return
!
flag
;
return
!
flag
;
});
});
};
};
function
createMenuJson
(
data
,
parentCode
)
{
function
createMenuJson
(
data
,
parentCode
)
{
let
result
=
[];
let
result
=
[];
// 菜单名称、路径、icon_url、code、父code
data
.
forEach
((
el
,
index
)
=>
{
data
.
forEach
((
el
,
index
)
=>
{
// 菜单名称、路径、是否受权限控制、icon_url
const
[
menuName
,
menuUrl
,
isRight
,
iconUrl
]
=
el
.
menu
;
const
[
menuName
,
menuUrl
,
isRight
,
iconUrl
]
=
el
.
menu
;
const
menuIndex
=
(
index
+
1
).
toString
().
padStart
(
2
,
'0'
);
const
menuIndex
=
(
index
+
1
).
toString
().
padStart
(
2
,
'0'
);
const
item
=
{
const
item
=
{
...
@@ -55,10 +56,9 @@ function createMenuJson(data, parentCode) {
...
@@ -55,10 +56,9 @@ function createMenuJson(data, parentCode) {
menuCode
:
parentCode
?
parentCode
+
menuIndex
:
'hb_m'
+
menuIndex
,
menuCode
:
parentCode
?
parentCode
+
menuIndex
:
'hb_m'
+
menuIndex
,
parentCode
,
parentCode
,
menuUrl
,
menuUrl
,
type
:
0
,
menuType
:
0
,
iconUrl
:
iconUrl
||
''
,
iconUrl
,
isRight
,
isRight
isPageBtn
:
0
}
}
result
.
push
(
item
);
result
.
push
(
item
);
if
(
Array
.
isArray
(
el
.
children
))
{
if
(
Array
.
isArray
(
el
.
children
))
{
...
@@ -67,21 +67,119 @@ function createMenuJson(data, parentCode) {
...
@@ -67,21 +67,119 @@ function createMenuJson(data, parentCode) {
});
});
return
result
;
return
result
;
}
}
function
checkButtonData
(
data
,
menuJson
)
{
function
hasPage
(
menuUrl
,
menuJson
,
menuUrlList
)
{
const
menu
=
menuJson
.
find
(
el
=>
el
.
menuUrl
==
menuUrl
)
||
{};
let
flag
=
menu
&&
menu
.
menuCode
;
if
(
!
Array
.
isArray
(
menuUrlList
))
{
menuUrlList
=
[];
}
menuUrlList
.
push
(
menuUrl
)
if
(
!
flag
)
{
console
.
log
(
menuUrlList
,
'页面不存在'
);
return
flag
;
}
if
(
menu
.
parentCode
.
length
>
6
)
{
flag
=
hasPage
(
menuJson
.
find
(
el
=>
el
.
menuCode
==
menu
.
parentCode
).
menuUrl
,
menuJson
,
menuUrlList
);
}
return
flag
;
}
let
buttonCode
=
[];
let
flag
=
Object
.
keys
(
data
).
some
(
menuUrl
=>
{
// 按钮所在的页面和上级页是否存在
return
!
hasPage
(
menuUrl
,
menuJson
)
||
Object
.
keys
(
data
[
menuUrl
]).
some
(
code
=>
{
// 按钮code是否重复
let
flag
=
buttonCode
.
includes
(
code
);
if
(
flag
)
{
console
.
log
(
code
,
'code重复了'
);
return
flag
;
}
// 按钮名称、是否受权限控制、是否增删改、跳转页面
// 是否有3个或者4个元素
flag
=
!
Array
.
isArray
(
data
[
menuUrl
][
code
])
||
(
data
[
menuUrl
][
code
].
length
!=
3
&&
data
[
menuUrl
][
code
].
length
!=
4
);
if
(
flag
)
{
console
.
log
(
code
,
'按钮数据配置错误'
);
return
flag
;
}
// 如果是跳转按钮
if
(
data
[
menuUrl
][
code
][
2
]
==
0
)
{
// 是否配了跳转页面
flag
=
!
data
[
menuUrl
][
code
][
3
];
if
(
flag
)
{
console
.
log
(
code
,
'未配置跳转页面'
)
return
;
}
// 按钮跳转的页面和上级页面是否存在
flag
=
!
hasPage
(
data
[
menuUrl
][
code
][
3
],
menuJson
);
if
(
flag
)
{
console
.
log
(
code
,
'页面不存在'
);
return
flag
;
}
}
return
false
;
});
});
return
flag
;
}
function
createButtonJson
(
data
,
menuJson
)
{
return
Object
.
keys
(
data
).
reduce
((
buttonJson
,
menuUrl
)
=>
{
const
codeData
=
data
[
menuUrl
];
const
menuCode
=
menuJson
.
find
(
el
=>
el
.
menuUrl
==
menuUrl
).
menuCode
;
const
codeJson
=
Object
.
keys
(
codeData
).
reduce
((
result
,
btnCode
)
=>
{
// 按钮名称、是否受权限控制、是否增删改、跳转页面
const
[
menuName
,
isRight
,
buttonType
,
toUrl
]
=
codeData
[
btnCode
];
const
item
=
{
menuName
,
menuCode
:
btnCode
,
parentCode
:
menuCode
,
menuType
:
5
,
isRight
,
buttonType
,
toUrl
};
result
.
push
(
item
);
return
result
;
},
[]);
return
buttonJson
.
concat
(
codeJson
);
},
[])
}
function
createXls
()
{
function
createXls
()
{
if
(
checkData
(
menuData
,
0
))
return
;
if
(
checkMenuData
(
menuData
,
0
))
return
;
return
const
menuJson
=
createMenuJson
(
menuData
,
''
);
const
data
=
createMenuJson
(
menuData
,
''
);
if
(
checkButtonData
(
buttonData
,
menuJson
))
return
;
const
jsonArray
=
data
.
map
(
item
=>
{
const
buttonJson
=
createButtonJson
(
buttonData
,
menuJson
);
// 按钮受权限控制时,跳转页面不受权限控制,并且跳转页面的关联code改成按钮code
// 按钮不受权限控制时,跳转页面受权限控制,并且按钮的关联code改成页面的code
buttonJson
.
forEach
(
btn
=>
{
if
(
btn
.
buttonType
==
0
)
{
menuJson
.
some
(
menu
=>
{
if
(
menu
.
menuUrl
==
btn
.
toUrl
)
{
if
(
btn
.
isRight
==
1
)
{
menu
.
isRight
=
0
;
menu
.
concatCode
=
btn
.
menuCode
;
}
else
{
menu
.
isRight
=
1
;
btn
.
concatCode
=
menu
.
menuCode
;
}
}
return
menu
.
menuUrl
==
btn
.
toUrl
;
})
}
})
// return
const
jsonArray
=
[...
menuJson
,
...
buttonJson
].
map
(
item
=>
{
return
{
return
{
'菜单名称'
:
item
.
menuName
,
'菜单名称'
:
item
.
menuName
,
'菜单code'
:
item
.
menuCode
,
'菜单code'
:
item
.
menuCode
,
'父菜单code'
:
item
.
parentCode
,
'父菜单code'
:
item
.
parentCode
,
'菜单路径'
:
item
.
menuUrl
,
'菜单路径'
:
item
.
menuUrl
||
''
,
'菜单类型(0菜单 5按钮)'
:
item
.
t
ype
,
'菜单类型(0菜单 5按钮)'
:
item
.
menuT
ype
,
'icon_url'
:
item
.
iconUrl
,
'icon_url'
:
item
.
iconUrl
||
''
,
'是否控制权限,1控制 0否'
:
item
.
isRight
,
'是否控制权限,1控制 0否'
:
item
.
isRight
,
'只有页面才有,用于菜单不需要独立权限控制,配置的是按钮的menu_code'
:
''
,
'只有页面才有,用于菜单不需要独立权限控制,配置的是按钮的menu_code'
:
item
.
concatCode
||
''
,
'是否赠删改的按钮
'
:
item
.
isPageBtn
'是否赠删改的按钮
0:跳转 1:增删改 2:其他'
:
typeof
item
.
buttonType
==
'number'
?
item
.
buttonType
:
''
}
}
});
});
fs
.
writeFile
(
path
.
resolve
(
__dirname
,
'./result.xlsx'
),
json2xls
(
jsonArray
),
'binary'
,
(
err
)
=>
{
fs
.
writeFile
(
path
.
resolve
(
__dirname
,
'./result.xlsx'
),
json2xls
(
jsonArray
),
'binary'
,
(
err
)
=>
{
...
@@ -93,5 +191,3 @@ function createXls() {
...
@@ -93,5 +191,3 @@ function createXls() {
});
});
}
}
createXls
();
createXls
();
// console.log(createMenuJson(menuData, ''));
menu-data/menu-data.js
View file @
f38ddc5f
/* eslint-disable */
/* eslint-disable */
module
.
exports
=
[
module
.
exports
=
[
// 菜单名称、路径、是否
分权、icon_url、code、父code
// 菜单名称、路径、是否
受权限控制、icon_url
{
{
menu
:
[
'客户'
,
''
,
1
],
menu
:
[
'客户'
,
''
,
1
],
children
:
[
children
:
[
...
...
menu-data/result.xlsx
View file @
f38ddc5f
No preview for this file type
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment