Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
J
jinfa-platform
Project
Project
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
shenshaokai
jinfa-platform
Commits
801f52b4
Commit
801f52b4
authored
Jan 07, 2023
by
shenshaokai
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
fix: copy标品230130版本TableOperation代码修复TableOperationAuth组件按钮权限显示问题
parent
f2ff8a88
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
50 additions
and
47 deletions
+50
-47
index.tsx
src/components/TableOperationAuth/index.tsx
+50
-47
No files found.
src/components/TableOperationAuth/index.tsx
View file @
801f52b4
...
...
@@ -4,11 +4,10 @@
import
React
from
'react'
import
{
Button
,
Dropdown
,
Menu
}
from
'antd'
import
{
CaretDownOutlined
}
from
'@ant-design/icons'
import
{
getIntl
}
from
'umi'
;
import
AuthButton
from
'@/components/AuthButton
'
import
{
getIntl
}
from
'umi'
import
{
AuthUrl
}
from
'../AuthButton/AuthUrl
'
const
intl
=
getIntl
();
const
intl
=
getIntl
()
/**
* 表格行操作
...
...
@@ -16,63 +15,67 @@ const intl = getIntl();
* 操作按钮大于两项 显示更多
*/
type
IButtonTextFieldMap
=
Record
<
string
,
boolean
>
;
type
IOperationHandler
=
Record
<
string
,
any
>
;
type
IButtonPermissionsMap
=
Record
<
string
,
string
>
;
type
IButtonTextFieldMap
=
Record
<
string
,
boolean
>
type
IOperationHandler
=
Record
<
string
,
any
>
type
IButtonPermissionsMap
=
Record
<
string
,
string
>
export
interface
TableOperationProps
{
/** 按钮文本和字段值映射 */
buttonTextFieldMap
:
IButtonTextFieldMap
,
buttonTextFieldMap
:
IButtonTextFieldMap
/** 按钮文本和操作函数映射 */
operationHandler
:
IOperationHandler
,
operationHandler
:
IOperationHandler
/** 按钮权限code和操作文本映射 */
buttonPermissionsMap
?:
IButtonPermissionsMap
,
buttonPermissionsMap
?:
IButtonPermissionsMap
/** 菜单父级关联code */
menuCode
?:
string
,
menuCode
?:
string
}
const
TableOperation
:
React
.
FC
<
TableOperationProps
>
=
(
props
)
=>
{
const
{
buttonTextFieldMap
,
operationHandler
,
buttonPermissionsMap
=
null
,
menuCode
=
null
}
=
props
const
keyNames
=
Object
.
keys
(
buttonTextFieldMap
)
return
(<>
{
Object
.
values
(
buttonTextFieldMap
).
filter
(
Boolean
).
length
>
2
?
<>
<
AuthButton
btnCode=
{
(
buttonPermissionsMap
&&
buttonPermissionsMap
[
keyNames
[
0
]])
||
''
}
>
<
Button
type=
'link'
onClick=
{
operationHandler
[
keyNames
[
0
]]
}
>
{
keyNames
[
0
]
}
</
Button
>
</
AuthButton
>
const
TableOperation
:
React
.
FC
<
TableOperationProps
>
=
(
props
)
=>
{
const
{
buttonTextFieldMap
,
operationHandler
,
buttonPermissionsMap
=
null
}
=
props
<
Dropdown
overlay=
{
<
Menu
>
const
validButtonWord
:
string
[]
=
[]
for
(
const
key
in
buttonTextFieldMap
)
{
if
(
buttonTextFieldMap
[
key
])
{
validButtonWord
.
push
(
key
)
}
}
{
keyNames
.
slice
(
1
,
keyNames
.
length
).
map
((
item
,
i
)
=>
buttonTextFieldMap
[
item
]
?
(
<
Menu
.
Item
key=
{
`menuItem${i}`
}
>
const
buttonElementArray
:
(
JSX
.
Element
|
null
)[]
=
validButtonWord
.
map
((
item
,
index
)
=>
{
const
show
=
buttonPermissionsMap
?
AuthUrl
(
buttonPermissionsMap
[
item
]
||
''
)
:
true
return
show
?
(
<
Button
type=
"link"
onClick=
{
operationHandler
[
item
]
}
>
{
item
}
</
Button
>
)
:
null
})
.
filter
(
Boolean
)
<
AuthButton
btnCode=
{
(
buttonPermissionsMap
&&
buttonPermissionsMap
[
item
])
||
''
}
>
<
Button
type=
'link'
onClick=
{
operationHandler
[
item
]
}
>
{
item
}
</
Button
>
</
AuthButton
>
</
Menu
.
Item
>
)
:
null
)
}
</
Menu
>
}
>
<
a
className=
"ant-dropdown-link"
onClick=
{
e
=>
e
.
preventDefault
()
}
>
return
(
<>
{
buttonElementArray
.
length
>
2
?
(
<>
{
buttonElementArray
[
0
]
}
<
Dropdown
overlay=
{
<
Menu
>
{
buttonElementArray
.
slice
(
1
,
buttonElementArray
.
length
).
map
((
element
,
index
)
=>
(
<
Menu
.
Item
key=
{
`table_opition_element_${index}`
}
>
{
element
}
</
Menu
.
Item
>
))
}
</
Menu
>
}
>
<
a
className=
"ant-dropdown-link"
onClick=
{
(
e
)
=>
e
.
preventDefault
()
}
>
{
intl
.
formatMessage
({
id
:
'components.gengduo'
})
}
<
CaretDownOutlined
/>
</
a
>
</
Dropdown
>
</>
:
keyNames
.
map
((
item
,
i
)
=>
(
buttonTextFieldMap
[
item
]
?
<
AuthButton
btnCode=
{
(
buttonPermissionsMap
&&
buttonPermissionsMap
[
item
])
||
''
}
key=
{
`btnItem${i}`
}
>
<
Button
type=
'link'
onClick=
{
operationHandler
[
item
]
}
>
{
item
}
</
Button
>
</
AuthButton
>
:
null
))
}
</>)
)
:
(
buttonElementArray
.
map
((
element
,
index
)
=>
(
<
a
key=
{
`table_opition_element_${index}`
}
>
{
element
}
</
a
>
))
)
}
</>
)
}
TableOperation
.
defaultProps
=
{}
...
...
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