Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
C
CivManage
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
ReactWeb5
CivManage
Commits
572dc451
Commit
572dc451
authored
Apr 03, 2023
by
涂伟
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
fix: '运维工作流流程中心人员设置选择面板重写'
parent
9b604371
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
346 additions
and
43 deletions
+346
-43
RoalChoose.jsx
...ts/flowChartComponents/nodeModalComponents/RoalChoose.jsx
+217
-27
RoalChoose.less
...s/flowChartComponents/nodeModalComponents/RoalChoose.less
+126
-16
workflow.js
src/services/workflow/workflow.js
+3
-0
No files found.
src/pages/bsmanager/workOrder/workflowEdit/workFlowComponents/flowChartComponents/nodeModalComponents/RoalChoose.jsx
View file @
572dc451
import
React
,
{
useEffect
,
useState
}
from
'react'
;
import
{
GetRoleUser
}
from
'@/services/workflow/workflow'
;
import
{
GetRoleUser
,
GetRoleUserNew
}
from
'@/services/workflow/workflow'
;
import
{
Modal
,
Input
,
Checkbox
,
Pagination
,
Spin
,
notification
,
Empty
,
Tabs
,
Tag
}
from
'antd'
;
import
{
CaretDownOutlined
,
DesktopOutlined
,
MobileOutlined
,
WindowsOutlined
,
}
from
'@ant-design/icons'
;
import
styles
from
'./RoalChoose.less'
;
const
{
Search
}
=
Input
;
const
{
TabPane
}
=
Tabs
;
const
RoalChoose
=
props
=>
{
const
{
onSubumit
,
handleCancel
,
visible
,
roleList
}
=
props
;
const
[
plainOptions
,
setPlainOptions
]
=
useState
([]);
// 角色机构选择列表
const
[
roleArr
,
setRoleArr
]
=
useState
([]);
// 新角色机构选择列表
const
[
total
,
setTotal
]
=
useState
();
// 角色人员条数
const
[
loading
,
setLoading
]
=
useState
(
false
);
// 加载时的loading
const
[
currentPage
,
setCurrentPage
]
=
useState
(
1
);
...
...
@@ -15,11 +22,26 @@ const RoalChoose = props => {
const
[
selected
,
setSelected
]
=
useState
(
new
Map
());
// 已勾选角色列表
const
[
searchName
,
setSearchName
]
=
useState
();
// 搜索名称
const
[
delArr
,
setDelArr
]
=
useState
(
new
Map
());
// 删除了的元素
const
[
shrink
,
setShrink
]
=
useState
([]);
const
showTypeIcon
=
item
=>
{
if
(
item
.
type
===
'mobile'
)
{
return
<
MobileOutlined
/>;
}
if
(
item
.
visibleValue
==
'CS'
)
{
return
<
WindowsOutlined
/>;
}
if
(
item
.
visibleTitle
.
indexOf
(
'手持'
)
!==
-
1
)
{
return
<
MobileOutlined
/>;
}
return
<
DesktopOutlined
/>;
};
// 初始化
useEffect
(()
=>
{
if
(
visible
)
{
setCurrentPage
(
1
);
getData
(
''
,
1
,
pageSize
,
0
,
2
);
// getData('', 1, pageSize, 0, 2);
getRoleData
();
setRoleType
(
'2'
);
// 对已选的角色进行回显
if
(
roleList
.
length
>
0
)
{
...
...
@@ -71,11 +93,63 @@ const RoalChoose = props => {
}
});
};
// 获取角色选择数据
const
getRoleData
=
(
roleName
,
pageIndex
,
pageSizes
,
roleId
,
Type
)
=>
{
roleName
=
roleName
||
''
;
setLoading
(
true
);
GetRoleUserNew
({
roleName
,
}).
then
(
res
=>
{
setLoading
(
false
);
if
(
res
.
code
===
0
&&
res
.
data
.
length
)
{
let
list
=
JSON
.
parse
(
JSON
.
stringify
(
res
.
data
));
list
.
forEach
(
item
=>
{
if
(
item
.
child
.
length
)
{
item
.
child
[
0
].
roleList
.
forEach
(
v
=>
{
v
.
roleID
=
Number
(
v
.
roleID
);
if
(
selected
.
has
(
v
.
roleID
))
{
v
.
isChecked
=
true
;
}
else
{
v
.
isChecked
=
false
;
}
});
}
item
.
roleList
.
forEach
(
v
=>
{
v
.
roleID
=
Number
(
v
.
roleID
);
if
(
selected
.
has
(
v
.
roleID
))
{
v
.
isChecked
=
true
;
}
else
{
v
.
isChecked
=
false
;
}
});
});
setRoleArr
(
list
);
// setRoleArr(res.data);
// 处理勾选角色或部门回显
// res.data.data.forEach(item => {
// if (selected.has(item.id)) {
// item.isChecked = true;
// }
// });
// setPlainOptions(res.data.data);
// setTotal(res.data.count);
}
else
{
setRoleArr
([]);
notification
.
error
({
message
:
'提示'
,
duration
:
3
,
description
:
res
.
msg
,
});
}
});
};
// 查询角色
const
onSearch
=
value
=>
{
setCurrentPage
(
1
);
setSearchName
(
value
);
getData
(
value
,
1
,
pageSize
,
0
,
roleType
);
// getData(value, 1, pageSize, 0, roleType);
getRoleData
(
value
);
};
// 监听分页
const
paginationChange
=
(
page
,
pageSizes
)
=>
{
...
...
@@ -85,35 +159,49 @@ const RoalChoose = props => {
};
// 复选框监听事件
const
selectChange
=
(
e
,
index
,
value
)
=>
{
console
.
log
(
plainOptions
);
let
list
=
JSON
.
parse
(
JSON
.
stringify
(
plainOptions
));
list
[
index
].
isChecked
=
e
.
target
.
checked
;
console
.
log
(
e
,
index
,
value
,
'666'
);
let
list
=
JSON
.
parse
(
JSON
.
stringify
(
roleArr
));
list
.
forEach
(
item
=>
{
if
(
item
.
child
.
length
)
{
item
.
child
[
0
].
roleList
.
forEach
(
v
=>
{
if
(
v
.
roleID
===
value
.
roleID
)
{
v
.
isChecked
=
e
.
target
.
checked
;
}
});
}
item
.
roleList
.
forEach
(
v
=>
{
if
(
v
.
roleID
===
value
.
roleID
)
{
v
.
isChecked
=
e
.
target
.
checked
;
}
});
});
// list[index].isChecked = e.target.checked;
console
.
log
(
list
);
// 存储勾选角色或站点信息
if
(
e
.
target
.
checked
)
{
// 存储已选角色或站点的默认承办人
if
(
delArr
.
has
(
value
.
id
))
{
selected
.
set
(
value
.
id
,
delArr
.
get
(
value
.
id
));
delArr
.
delete
(
value
.
id
);
if
(
delArr
.
has
(
value
.
roleID
))
{
selected
.
set
(
value
.
roleID
,
delArr
.
get
(
value
.
roleID
));
delArr
.
delete
(
value
.
roleID
);
}
else
{
selected
.
set
(
value
.
id
,
{
roleName
:
value
.
n
ame
,
type
:
value
.
type
,
roleId
:
value
.
id
,
selected
.
set
(
value
.
roleID
,
{
roleName
:
value
.
roleN
ame
,
type
:
2
,
roleId
:
value
.
roleID
,
defauletUserName
:
''
,
defaultUserId
:
[],
});
}
}
else
{
delArr
.
set
(
value
.
id
,
selected
.
get
(
value
.
id
));
selected
.
delete
(
value
.
id
);
delArr
.
set
(
value
.
roleID
,
selected
.
get
(
value
.
roleID
));
selected
.
delete
(
value
.
roleID
);
}
console
.
log
(
list
);
console
.
log
(
selected
);
console
.
log
(
list
);
setDelArr
(
delArr
);
setSelected
(
selected
);
set
PlainOptions
(
list
);
set
RoleArr
(
list
);
};
// tab栏切换回调
const
tabCallback
=
val
=>
{
...
...
@@ -138,18 +226,43 @@ const RoalChoose = props => {
selected
.
delete
(
value
);
setDelArr
(
delArr
);
setSelected
(
selected
);
let
arr
=
JSON
.
parse
(
JSON
.
stringify
(
plainOptions
));
arr
.
forEach
(
item
=>
{
if
(
item
.
id
===
value
)
{
item
.
isChecked
=
false
;
// let arr = JSON.parse(JSON.stringify(plainOptions));
// arr.forEach(item => {
// if (item.id === value) {
// item.isChecked = false;
// }
// });
// setPlainOptions(arr);
let
list
=
JSON
.
parse
(
JSON
.
stringify
(
roleArr
));
list
.
forEach
(
item
=>
{
if
(
item
.
child
.
length
)
{
item
.
child
[
0
].
roleList
.
forEach
(
v
=>
{
if
(
v
.
roleID
===
value
)
{
v
.
isChecked
=
false
;
}
});
}
item
.
roleList
.
forEach
(
v
=>
{
if
(
v
.
roleID
===
value
)
{
v
.
isChecked
=
false
;
}
});
});
setPlainOptions
(
arr
);
setRoleArr
(
list
);
};
const
shirnk
=
name
=>
{
if
(
shrink
.
includes
(
name
))
{
let
type
=
shrink
.
filter
(
s
=>
s
!==
name
);
setShrink
(
type
);
}
else
{
setShrink
([...
shrink
,
name
]);
}
};
// 角色列表样式
const
roleDom
=
()
=>
(
<>
<
div
className=
{
styles
.
checkContainer
}
>
{
/*
<div className={styles.checkContainer}>
<Spin spinning={loading}>
{plainOptions.length > 0 ? (
<div className={styles.checkContent}>
...
...
@@ -173,6 +286,82 @@ const RoalChoose = props => {
/>
)}
</Spin>
</div> */
}
<
div
className=
{
styles
.
checkContainer
}
>
<
Spin
spinning=
{
loading
}
>
{
roleArr
.
length
?
(
<
div
className=
{
styles
.
checkContents
}
>
{
roleArr
.
map
((
v
,
i
)
=>
(
<
div
className=
{
styles
.
list
}
key=
{
v
.
visibleTitle
}
>
<
div
className=
{
styles
.
parent
}
>
<
span
className=
{
styles
.
imgDown
}
onClick=
{
()
=>
shirnk
(
v
.
visibleTitle
)
}
style=
{
{
transform
:
shrink
.
includes
(
v
.
visibleTitle
)
?
'rotate(270deg)'
:
''
}
}
>
<
CaretDownOutlined
/>
</
span
>
<
span
style=
{
{
color
:
'#1890ff'
,
marginRight
:
'10px'
}
}
>
{
showTypeIcon
(
v
)
}
</
span
>
<
span
>
{
v
.
visibleTitle
}
</
span
>
</
div
>
<
div
className=
{
styles
.
childs
}
style=
{
{
display
:
shrink
.
includes
(
v
.
visibleTitle
)
?
'none'
:
'block'
}
}
>
{
v
.
child
.
length
?
v
.
child
.
map
(
item
=>
(
<
div
className=
{
styles
.
checkGroupContent
}
>
<
div
className=
{
styles
.
topCheckbox
}
>
<
span
>
{
item
.
visibleTitle
}
</
span
>
</
div
>
<
div
className=
{
styles
.
bottomCheckbox
}
>
{
item
.
roleList
.
length
?
item
.
roleList
.
map
((
items
,
index
)
=>
(
<
div
key=
{
items
.
roleID
}
className=
{
styles
.
check
}
title=
{
items
.
name
}
>
<
Checkbox
checked=
{
items
.
isChecked
}
onChange=
{
e
=>
{
selectChange
(
e
,
index
,
items
);
}
}
>
{
items
.
roleName
}
</
Checkbox
>
</
div
>
))
:
null
}
</
div
>
</
div
>
))
:
null
}
<
div
className=
{
styles
.
checkContent
}
>
{
v
.
roleList
.
length
?
v
.
roleList
.
map
((
item
,
index
)
=>
(
<
div
key=
{
item
.
roleID
}
className=
{
styles
.
check
}
title=
{
item
.
name
}
>
<
Checkbox
checked=
{
item
.
isChecked
}
onChange=
{
e
=>
{
selectChange
(
e
,
index
,
item
);
}
}
>
{
item
.
roleName
}
</
Checkbox
>
</
div
>
))
:
null
}
</
div
>
</
div
>
</
div
>
))
}
</
div
>
)
:
(
<
Empty
image=
{
Empty
.
PRESENTED_IMAGE_SIMPLE
}
description=
"未有查找到角色"
/>
)
}
</
Spin
>
</
div
>
</>
);
...
...
@@ -207,14 +396,14 @@ const RoalChoose = props => {
<
TabPane
tab=
"角色"
key=
"2"
>
{
roleDom
()
}
</
TabPane
>
<
TabPane
tab=
"机构"
key=
"1"
>
{
/*
<TabPane tab="机构" key="1">
{roleDom()}
</
TabPane
>
</TabPane>
*/
}
</
Tabs
>
</
div
>
{
/* 分页 */
}
<
div
className=
{
styles
.
footer
}
>
<
Pagination
{
/*
<Pagination
size="small"
total={total}
showSizeChanger
...
...
@@ -223,7 +412,7 @@ const RoalChoose = props => {
onChange={paginationChange}
defaultPageSize={33}
pageSizeOptions={[33, 45, 60, 90]}
/>
/>
*/
}
</
div
>
</
div
>
</
div
>
...
...
@@ -249,7 +438,8 @@ const RoalChoose = props => {
<
div
className=
{
styles
.
selectValue
}
key=
{
item
[
0
]
}
>
<
Tag
closable
color=
{
item
[
1
].
type
===
2
?
'cyan'
:
'orange'
}
// color=
{
item
[1]
.
type
===
2
?
'
cyan
'
:
'
orange
'}
color=
"cyan"
onClose=
{
()
=>
delSelected
(
item
[
0
])
}
>
{
item
[
1
].
roleName
}
...
...
src/pages/bsmanager/workOrder/workflowEdit/workFlowComponents/flowChartComponents/nodeModalComponents/RoalChoose.less
View file @
572dc451
...
...
@@ -13,7 +13,7 @@
.optionalList {
position: relative;
width:
6
0%;
width:
7
0%;
border-right: 1px solid #e7e7e7;
.title {
...
...
@@ -63,21 +63,131 @@
height: 360px;
overflow-y: scroll;
.checkContent {
display: flex;
flex-wrap: wrap;
margin-left: 32px;
.check {
width: 150px;
margin-bottom: 10px;
margin-right: 6px;
.ant-checkbox-wrapper span {
max-width: 130px;
.checkContents {
padding-left: 15px;
.list {
.parent {
height: 38px;
line-height: 38px;
padding-left: 15px;
// border-bottom: 1px solid #f2f2f2;
transition: all 0.3s;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
.imgDown {
display: inline-block;
position: relative;
top: -2px;
margin-right: 5px;
&:hover {
cursor: pointer;
}
}
}
.childs {
overflow: hidden;
transition: all 0.3s;
.child {
overflow: hidden;
height: 38px;
line-height: 38px;
padding-left: 30px;
border-bottom: 1px solid #f2f2f2;
&:hover {
color: #0087F7;
cursor: pointer;
}
&[active="true"] {
color: #0087F7;
}
}
}
}
.checkContent {
display: flex;
flex-wrap: wrap;
margin-left: 32px;
// min-height: 50px;
.check {
width: 150px;
margin-bottom: 10px;
margin-right: 6px;
.ant-checkbox-wrapper span {
max-width: 130px;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
}
}
.checkGroupContent {
display: flex;
// width: 100%;
flex-direction: column;
border: 1px solid #c2cdfd;
border-radius: 5px;
margin: 10px 15px;
margin-right: 70px;
min-height: 50px;
padding: 0 10px 10px 16px;
.ant-checkbox-wrapper {
background-color: #fff;
}
.topCheckbox {
height: 20px;
margin: -10px 0 0 0px;
line-height: 20px;
>span {
background-color: white;
}
}
.topCheckbox>label :hover {
font-weight: 600;
}
.bottomCheckbox {
// margin-top: 10px;
display: flex;
flex-wrap: wrap;
.ant-checkbox-wrapper {
display: flex;
margin-left: 0;
width: 150px;
margin-right: 6px;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
margin-top:10px;
.ant-checkbox + span {
display: flex;
}
}
.fontlabel {
display: inline-block;
width:130px;
overflow: hidden;
text-overflow: ellipsis;
// white-space: nowrap;
}
// .ant-checkbox-group-item {
// min-width: 150px !important;
// }
// .ant-checkbox-wrapper {
// min-width: 150px !important;
// }
}
.checkdiv {
display: flex;
flex-wrap: wrap;
}
}
}
...
...
@@ -114,7 +224,7 @@
.selectedList {
position: relative;
width:
4
0%;
width:
3
0%;
.header {
height: 40px;
...
...
src/services/workflow/workflow.js
View file @
572dc451
...
...
@@ -9,6 +9,9 @@ export const CreateFlow = param => post(`${PUBLISH_SERVICE}/WorkFlow/CreateFlow`
export
const
UpdateFlowGroup
=
param
=>
post
(
`
${
PUBLISH_SERVICE
}
/WorkFlow/UpdateFlowGroup`
,
param
);
// 查询全部角色对应的人员
export
const
GetRoleUser
=
param
=>
post
(
`
${
PUBLISH_SERVICE
}
/WorkFlow/GetRoleUser`
,
param
);
// 查询全部角色对应的人员(新增分组)
export
const
GetRoleUserNew
=
param
=>
get
(
`
${
PUBLISH_SERVICE
}
/UserCenter/GetFlowConfigAllRole`
,
param
);
// 获取节点信息
export
const
GetNodeInfo
=
param
=>
get
(
`
${
PUBLISH_SERVICE
}
/WorkFlow/GetNodeInfo`
,
param
);
// 创建或修改流程节点
...
...
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