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
9658e275
Commit
9658e275
authored
Dec 02, 2021
by
邓超
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
fix: 添加发送消息测试功能,修改网关配置开关功能
parent
ecad602f
Pipeline
#39323
skipped with stages
Changes
14
Pipelines
1
Hide whitespace changes
Inline
Side-by-side
Showing
14 changed files
with
1452 additions
and
1191 deletions
+1452
-1191
Fieldselection.jsx
.../flowNodeComponents/nodeEditComponents/Fieldselection.jsx
+1
-3
gateWay.jsx
src/pages/platformCenter/hostmanager/gateWay/gateWay.jsx
+81
-57
index.jsx
src/pages/platformCenter/hostmanager/index.jsx
+29
-34
index.jsx
src/pages/platformCenter/messageManage/index.jsx
+18
-25
ProjectManage.jsx
...tformCenter/messageManage/projectManage/ProjectManage.jsx
+15
-14
CardCheck.jsx
...ageManage/projectManage/components/PushTest/CardCheck.jsx
+55
-0
PushTest.jsx
...sageManage/projectManage/components/PushTest/PushTest.jsx
+150
-0
PushTest.less
...ageManage/projectManage/components/PushTest/PushTest.less
+36
-0
VisibleRoleModal.jsx
...projectManage/components/RolseSelect/VisibleRoleModal.jsx
+310
-322
schemeDetail.jsx
src/pages/platformCenter/schemeDetail/schemeDetail.jsx
+36
-6
editorModal.jsx
src/pages/platformCenter/standingBook/editorModal.jsx
+4
-2
standingBook.less
src/pages/platformCenter/standingBook/standingBook.less
+1
-1
siteManage.jsx
src/pages/userCenter/siteManageV2/siteManage.jsx
+695
-708
messagemanage.jsx
src/services/platform/messagemanage.jsx
+21
-19
No files found.
src/pages/platformCenter/bsmanager/workFlow/flowNode/flowNodeComponents/nodeEditComponents/Fieldselection.jsx
View file @
9658e275
...
...
@@ -29,9 +29,7 @@ const Fieldselection = props => {
useEffect
(()
=>
{
if
(
visible
)
{
setCheckList
(
fieldList
);
let
newArr
=
filedData
.
map
(
item
=>
{
return
{
name
:
item
};
});
let
newArr
=
filedData
.
map
(
item
=>
({
name
:
item
}));
setSelectList
(
newArr
);
}
else
{
setSelectList
([]);
...
...
src/pages/platformCenter/hostmanager/gateWay/gateWay.jsx
View file @
9658e275
import
React
,
{
useEffect
,
useState
}
from
'react'
import
{
Card
,
Form
,
Switch
,
message
,
Divider
,
Row
,
Col
,
Spin
}
from
'antd'
import
styles
from
'./gateWay.less'
import
{
GetGateWay
,
UpdateGeteWay
}
from
'@/services/platform/hostmanager'
import
configuration
from
'../../../../assets/images/icons/消息.svg'
import
React
,
{
useEffect
,
useState
}
from
'react'
;
import
{
Card
,
Form
,
Switch
,
message
,
Divider
,
Row
,
Col
,
Spin
}
from
'antd'
;
import
styles
from
'./gateWay.less'
;
import
{
GetGateWay
,
UpdateGeteWay
}
from
'@/services/platform/hostmanager'
;
import
configuration
from
'../../../../assets/images/icons/消息.svg'
;
const
GateConfig
=
()
=>
{
const
[
loading
,
setLoading
]
=
useState
(
false
);
// 加载
const
[
form
]
=
Form
.
useForm
();
const
[
loading
,
setLoading
]
=
useState
(
false
);
// 加载
const
[
form
]
=
Form
.
useForm
();
const
[
flag
,
setFlag
]
=
useState
(
1
)
const
[
currentConfig
,
setCurrentConfig
]
=
useState
()
const
[
flag
,
setFlag
]
=
useState
(
1
);
const
[
currentConfig
,
setCurrentConfig
]
=
useState
();
const
OperateNginx
=
(
checked
)
=>
{
console
.
log
(
checked
)
UpdateGeteWay
({
isUsed
:
checked
}).
then
(
res
=>
{
if
(
res
.
code
===
0
){
setFlag
(
flag
+
1
)
message
.
success
(
"设置成功"
)
}
else
{
message
.
error
(
"设置失败"
)
}
})
const
OperateNginx
=
checked
=>
{
console
.
log
(
checked
);
UpdateGeteWay
({
isUsed
:
checked
}).
then
(
res
=>
{
if
(
res
.
code
===
0
)
{
setFlag
(
flag
+
1
);
message
.
success
(
'设置成功'
);
}
else
{
message
.
error
(
'设置失败'
);
}
});
};
useEffect
(()
=>
{
if
(
currentConfig
)
{
localStorage
.
setItem
(
'panda-publish'
,
'getway'
);
}
else
{
localStorage
.
setItem
(
'panda-publish'
,
''
);
}
},
[
currentConfig
]);
useEffect
(()
=>
{
GetGateWay
().
then
(
res
=>
{
if
(
res
.
code
===
0
)
{
setCurrentConfig
(
res
.
data
)
console
.
log
(
res
.
data
)
console
.
log
(
currentConfig
)
}
})
},
[
flag
])
useEffect
(()
=>
{
GetGateWay
().
then
(
res
=>
{
if
(
res
.
code
===
0
)
{
setCurrentConfig
(
res
.
data
);
console
.
log
(
res
.
data
);
console
.
log
(
currentConfig
);
}
});
},
[
flag
]);
return
(
<
div
className=
{
styles
.
gateWay_container
}
>
<
Card
style=
{
{
width
:
'100%'
,
height
:
'calc(100vh - 130px)'
}
}
>
<
Spin
spinning=
{
loading
}
tip=
"loading"
>
<
div
style=
{
{
display
:
'flex'
,
alignItems
:
'center'
,
marginTop
:
'40px'
}
}
>
<
img
src=
{
configuration
}
style=
{
{
height
:
'16px'
}
}
/><
span
style=
{
{
marginLeft
:
'10px'
,
fontWeight
:
'bold'
}
}
>
服务管理
</
span
>
</
div
>
<
Divider
/>
<
div
className=
{
styles
.
operate_container
}
>
<
Row
gutter=
{
[
20
,
25
]
}
style=
{
{
display
:
'flex'
,
alignItems
:
'center'
}
}
>
<
Col
span=
{
2
}
>
<
div
style=
{
{
display
:
'flex'
,
justifyContent
:
'flex-end'
,
marginRight
:
'-10px'
}
}
>
服务运行
</
div
>
</
Col
>
<
Col
span=
{
22
}
>
{
console
.
log
(
currentConfig
)
}
<
Switch
checkedChildren=
'开启'
unCheckedChildren=
'关闭'
checked=
{
currentConfig
}
onChange=
{
OperateNginx
}
style=
{
{
marginLeft
:
'30px'
}
}
/>
</
Col
>
</
Row
>
return
(
<
div
className=
{
styles
.
gateWay_container
}
>
<
Card
style=
{
{
width
:
'100%'
,
height
:
'calc(100vh - 130px)'
}
}
>
<
Spin
spinning=
{
loading
}
tip=
"loading"
>
<
div
style=
{
{
display
:
'flex'
,
alignItems
:
'center'
,
marginTop
:
'40px'
}
}
>
<
img
src=
{
configuration
}
style=
{
{
height
:
'16px'
}
}
alt=
""
/>
<
span
style=
{
{
marginLeft
:
'10px'
,
fontWeight
:
'bold'
}
}
>
服务管理
</
span
>
</
div
>
<
Divider
/>
<
div
className=
{
styles
.
operate_container
}
>
<
Row
gutter=
{
[
20
,
25
]
}
style=
{
{
display
:
'flex'
,
alignItems
:
'center'
}
}
>
<
Col
span=
{
2
}
>
<
div
style=
{
{
display
:
'flex'
,
justifyContent
:
'flex-end'
,
marginRight
:
'-10px'
,
}
}
>
服务运行
</
div
>
</
Spin
>
</
Card
>
</
div
>
)
}
export
default
GateConfig
;
\ No newline at end of file
</
Col
>
<
Col
span=
{
22
}
>
{
console
.
log
(
currentConfig
)
}
<
Switch
checkedChildren=
"开启"
unCheckedChildren=
"关闭"
checked=
{
currentConfig
}
onChange=
{
OperateNginx
}
style=
{
{
marginLeft
:
'30px'
}
}
/>
</
Col
>
</
Row
>
</
div
>
</
Spin
>
</
Card
>
</
div
>
);
};
export
default
GateConfig
;
src/pages/platformCenter/hostmanager/index.jsx
View file @
9658e275
import
React
,
{
useState
,
useEffect
}
from
'react'
;
import
{
Tabs
}
from
'antd'
;
import
PageContainer
from
'@/components/BasePageContainer'
;
import
BaseConfig
from
'./baseConfig/BaseConfig'
import
IotConfig
from
'./IotConfig/IotConfig'
import
MessageConfig
from
'./messageConfig/messageConfig'
import
ProxyConfig
from
'./proxyConfig/ProxyConfig'
import
GateConfig
from
'./gateWay/gateWay'
import
BaseConfig
from
'./baseConfig/BaseConfig'
;
import
IotConfig
from
'./IotConfig/IotConfig'
;
import
MessageConfig
from
'./messageConfig/messageConfig'
;
import
ProxyConfig
from
'./proxyConfig/ProxyConfig'
;
import
GateConfig
from
'./gateWay/gateWay'
;
const
{
TabPane
}
=
Tabs
;
const
HostManager
=
()
=>
{
const
callback
=
()
=>
{};
const
callback
=
()
=>
{
}
return
(
<
PageContainer
>
<
Tabs
onChange=
{
callback
}
type=
"card"
>
<
TabPane
tab=
"基础配置"
key=
"1"
>
<
BaseConfig
/>
</
TabPane
>
<
TabPane
tab=
"物联配置"
key=
"2"
>
<
IotConfig
/>
</
TabPane
>
<
TabPane
tab=
"消息配置"
key=
"3"
>
<
MessageConfig
/>
</
TabPane
>
<
TabPane
tab=
"代理配置"
key=
"4"
>
<
ProxyConfig
/>
</
TabPane
>
<
TabPane
tab=
"网关配置"
key=
"5"
>
<
GateConfig
/>
</
TabPane
>
</
Tabs
>
</
PageContainer
>
)
}
export
default
HostManager
;
\ No newline at end of file
return
(
<
PageContainer
>
<
Tabs
onChange=
{
callback
}
type=
"card"
>
<
TabPane
tab=
"基础配置"
key=
"1"
>
<
BaseConfig
/>
</
TabPane
>
<
TabPane
tab=
"物联配置"
key=
"2"
>
<
IotConfig
/>
</
TabPane
>
<
TabPane
tab=
"消息配置"
key=
"3"
>
<
MessageConfig
/>
</
TabPane
>
<
TabPane
tab=
"代理配置"
key=
"4"
>
<
ProxyConfig
/>
</
TabPane
>
<
TabPane
tab=
"网关配置"
key=
"5"
>
<
GateConfig
/>
</
TabPane
>
</
Tabs
>
</
PageContainer
>
);
};
export
default
HostManager
;
src/pages/platformCenter/messageManage/index.jsx
View file @
9658e275
import
React
,
{
useState
,
useEffect
}
from
'react'
;
import
{
Tabs
}
from
'antd'
;
import
PageContainer
from
'@/components/BasePageContainer'
;
import
TemplateManage
from
'../messageManage/templateManage/TemplateManage'
import
ProjectManage
from
'../messageManage/projectManage/ProjectManage'
import
TemplateManage
from
'./templateManage/TemplateManage'
;
import
ProjectManage
from
'./projectManage/ProjectManage'
;
const
{
TabPane
}
=
Tabs
;
const
HostManager
=
()
=>
{
const
callback
=
()
=>
{
}
return
(
<
PageContainer
>
<
Tabs
onChange=
{
callback
}
type=
"card"
>
<
TabPane
tab=
"推送方案配置"
key=
"2"
>
<
ProjectManage
/>
</
TabPane
>
<
TabPane
tab=
"推送模板配置"
key=
"1"
>
<
TemplateManage
/>
</
TabPane
>
</
Tabs
>
</
PageContainer
>
)
}
export
default
HostManager
;
\ No newline at end of file
const
callback
=
()
=>
{};
return
(
<
PageContainer
>
<
Tabs
onChange=
{
callback
}
type=
"card"
>
<
TabPane
tab=
"推送方案配置"
key=
"2"
>
<
ProjectManage
/>
</
TabPane
>
<
TabPane
tab=
"推送模板配置"
key=
"1"
>
<
TemplateManage
/>
</
TabPane
>
</
Tabs
>
</
PageContainer
>
);
};
export
default
HostManager
;
src/pages/platformCenter/messageManage/projectManage/ProjectManage.jsx
View file @
9658e275
...
...
@@ -24,6 +24,7 @@ import {
}
from
'@ant-design/icons'
;
import
{
useHistory
}
from
'react-router-dom'
;
import
EditModal
from
'./components/EditModal'
;
import
PushTest
from
'./components/PushTest/PushTest'
;
import
VisibleRoleModal
from
'./components/RolseSelect/VisibleRoleModal'
;
import
{
GetMessageConfigList
,
...
...
@@ -42,6 +43,7 @@ const ProjectManage = () => {
delVisible
:
false
,
// 删除弹窗
editVisible
:
false
,
// 修改弹窗
spinLoading
:
false
,
// 加载弹窗
pushTestVisible
:
false
,
// 推送测试弹窗
btnLoading
:
false
,
loading
:
false
,
checkBoxLoading
:
false
,
...
...
@@ -57,6 +59,7 @@ const ProjectManage = () => {
const
[
treeLoading
,
setTreeLoading
]
=
useState
(
false
);
const
[
showSearchStyle
,
setShowSearchStyle
]
=
useState
(
false
);
// 是否显示模糊查询样式
const
[
value
,
setValue
]
=
useState
(
''
);
const
[
pushTestMsg
,
setPushTestMsg
]
=
useState
(
''
);
const
columns
=
[
{
title
:
'方案名称'
,
...
...
@@ -181,20 +184,8 @@ const ProjectManage = () => {
// handleShowModal("editVisible", true)
};
const
TestDesc
=
record
=>
{
if
(
record
.
ThemeName
)
TestPush
({
theme
:
record
.
ThemeName
,
msgType
:
record
.
MsgType
,
tousers
:
record
.
PushGroup
,
pushPath
:
record
.
item
.
AgentConfig
?
record
.
item
.
AgentConfig
.
Url
:
''
,
msgTypeId
:
record
.
ID
,
}).
then
(
res
=>
{
if
(
res
.
code
===
0
)
{
message
.
success
(
'测试推送成功'
);
}
else
{
message
.
error
(
res
.
msg
);
}
});
setPushTestMsg
(
record
);
handleShowModal
(
'pushTestVisible'
,
true
);
};
const
DeleteProject
=
record
=>
{
let
agen
=
record
.
item
.
AgentConfig
;
...
...
@@ -246,6 +237,10 @@ const ProjectManage = () => {
handleShowModal
(
'addVisbile'
,
false
);
setFlag
(
flag
+
1
);
};
const
pushTestModal
=
()
=>
{
handleShowModal
(
'pushTestVisible'
,
false
);
setFlag
(
flag
+
1
);
};
const
onAddClick
=
()
=>
{
setCurrentTempalte
({});
// handleShowModal("addVisible", true)
...
...
@@ -412,6 +407,12 @@ const ProjectManage = () => {
onCancel=
{
()
=>
handleShowModal
(
'addVisible'
,
false
)
}
confirmModal=
{
bddModal
}
/>
<
PushTest
visible=
{
visibleParams
.
pushTestVisible
}
onCancel=
{
()
=>
handleShowModal
(
'pushTestVisible'
,
false
)
}
confirmModal=
{
pushTestModal
}
pushTestMsg=
{
pushTestMsg
}
/>
</
Spin
>
</
div
>
);
...
...
src/pages/platformCenter/messageManage/projectManage/components/PushTest/CardCheck.jsx
0 → 100644
View file @
9658e275
import
React
,
{
useState
,
useEffect
}
from
'react'
;
import
{
Checkbox
}
from
'antd'
;
import
styles
from
'./PushTest.less'
;
const
CheckboxGroup
=
Checkbox
.
Group
;
const
CardCheck
=
props
=>
{
const
{
cardMsg
,
cardIndex
,
callback
}
=
props
;
const
[
checkedList
,
setCheckedList
]
=
useState
();
const
[
indeterminate
,
setIndeterminate
]
=
useState
(
false
);
const
[
checkAll
,
setCheckAll
]
=
useState
(
false
);
const
[
plainOptions
,
setPlainOptions
]
=
useState
([]);
useEffect
(()
=>
{
setPlainOptions
(
cardMsg
.
plainOptions
);
},
[]);
useEffect
(()
=>
{
callback
(
checkedList
,
cardIndex
);
},
[
checkedList
]);
const
onChange
=
list
=>
{
console
.
log
(
list
);
setCheckedList
(
list
);
setIndeterminate
(
!!
list
.
length
&&
list
.
length
<
plainOptions
.
length
);
setCheckAll
(
list
.
length
===
plainOptions
.
length
);
};
const
onCheckAllChange
=
e
=>
{
setCheckedList
(
e
.
target
.
checked
?
plainOptions
.
map
(
item
=>
item
.
value
)
:
[],
);
setIndeterminate
(
false
);
setCheckAll
(
e
.
target
.
checked
);
};
return
(
<
div
className=
{
styles
.
divBox
}
>
<
div
className=
{
styles
.
topCheckbox
}
>
<
Checkbox
indeterminate=
{
indeterminate
}
onChange=
{
e
=>
onCheckAllChange
(
e
)
}
checked=
{
checkAll
}
>
{
cardMsg
.
groupName
}
</
Checkbox
>
</
div
>
<
div
className=
{
styles
.
bottomCheckbox
}
style=
{
{
marginTop
:
'10px'
}
}
>
<
CheckboxGroup
options=
{
plainOptions
}
value=
{
checkedList
}
onChange=
{
list
=>
onChange
(
list
)
}
/>
</
div
>
</
div
>
);
};
export
default
CardCheck
;
src/pages/platformCenter/messageManage/projectManage/components/PushTest/PushTest.jsx
0 → 100644
View file @
9658e275
import
React
,
{
useState
,
useEffect
,
useCallback
}
from
'react'
;
import
{
Modal
,
Form
,
Input
,
Button
,
message
,
Spin
,
Pagination
}
from
'antd'
;
import
{
GetGroupUserTree
,
TestPush
}
from
'@/services/platform/messagemanage'
;
import
styles
from
'./PushTest.less'
;
import
CardCheck
from
'./CardCheck'
;
let
checkList
=
[];
console
.
log
(
checkList
,
'checkList'
);
const
PushTest
=
props
=>
{
const
[
form
]
=
Form
.
useForm
();
const
{
confirmModal
,
onCancel
,
visible
,
pushTestMsg
}
=
props
;
const
[
allList
,
setAllist
]
=
useState
([]);
const
[
loading
,
setLoading
]
=
useState
(
false
);
useEffect
(()
=>
{
if
(
visible
)
{
getData
();
}
else
{
checkList
=
[];
setAllist
([]);
}
},
[
visible
]);
const
checkCallBack
=
useCallback
((
val
,
index
)
=>
{
if
(
val
)
{
checkList
[
index
].
checkedList
=
val
;
}
});
const
onFinish
=
()
=>
{
let
newArr
=
checkList
.
reduce
(
(
total
,
currentValue
)
=>
[...
total
,
...
currentValue
.
checkedList
],
[],
);
if
(
pushTestMsg
.
ThemeName
)
TestPush
({
theme
:
pushTestMsg
.
ThemeName
,
msgType
:
pushTestMsg
.
MsgType
,
tousers
:
newArr
,
pushPath
:
pushTestMsg
.
item
.
AgentConfig
?
pushTestMsg
.
item
.
AgentConfig
.
Url
:
''
,
msgTypeId
:
pushTestMsg
.
ID
.
toString
(),
}).
then
(
res
=>
{
if
(
res
.
code
===
0
)
{
confirmModal
();
message
.
success
(
'测试推送成功'
);
}
else
{
message
.
error
(
res
.
msg
);
}
});
console
.
log
(
newArr
,
'newArr'
);
};
const
onSearch
=
()
=>
{
getData
({
key
:
form
.
getFieldsValue
().
username
});
};
const
getData
=
value
=>
{
let
obj
=
value
?
value
:
{};
setLoading
(
true
);
GetGroupUserTree
(
obj
).
then
(
res
=>
{
console
.
log
(
res
);
let
list
=
res
.
data
.
map
(
item
=>
{
let
options
=
item
.
users
.
map
(
val
=>
({
label
:
val
.
userName
,
value
:
val
.
userId
,
}));
return
{
groupName
:
item
.
groupName
,
groupId
:
item
.
groupId
,
indeterminate
:
false
,
checkAll
:
false
,
plainOptions
:
options
,
checkedList
:
[],
};
});
checkList
=
list
;
setAllist
(
list
);
setTimeout
(()
=>
{
setLoading
(
false
);
},
0
);
});
};
return
(
<>
<
Modal
title=
"选择推送人"
visible=
{
visible
}
onOk=
{
onFinish
}
width=
"700px"
onCancel=
{
onCancel
}
maskClosable=
{
false
}
destroyOnClose
centered
>
<
div
className=
"searchHeader"
>
<
Form
form=
{
form
}
layout=
"inline"
>
<
Form
.
Item
name=
"username"
>
<
Input
placeholder=
"请输入用户名称"
/>
</
Form
.
Item
>
<
Form
.
Item
>
<
Button
type=
"primary"
htmlType=
"submit"
onClick=
{
onSearch
}
style=
{
{
marginRight
:
'10px'
}
}
>
搜索
</
Button
>
<
Button
type=
"primary"
htmlType=
"submit"
onClick=
{
()
=>
{
getData
();
form
.
setFieldsValue
({
username
:
''
});
}
}
>
重置
</
Button
>
</
Form
.
Item
>
</
Form
>
</
div
>
<
Spin
spinning=
{
loading
}
>
<
div
className=
"checkContainer"
style=
{
{
height
:
'500px'
,
overflowY
:
'scroll'
,
margin
:
'20px 0'
}
}
>
{
allList
.
map
((
item
,
index
)
=>
(
<
div
className=
{
styles
.
checkBoxContent
}
key=
{
item
.
groupId
}
style=
{
{
display
:
item
.
plainOptions
.
length
>
0
?
'block'
:
'none'
,
}
}
>
<
CardCheck
cardMsg=
{
item
}
cardIndex=
{
index
}
callback=
{
(
val
,
i
)
=>
checkCallBack
(
val
,
i
)
}
/>
</
div
>
))
}
</
div
>
</
Spin
>
</
Modal
>
</>
);
};
export
default
PushTest
;
src/pages/platformCenter/messageManage/projectManage/components/PushTest/PushTest.less
0 → 100644
View file @
9658e275
.divBox {
display: flex;
width: 100%;
flex-direction: column;
border: 1px solid #c2cdfd;
border-radius: 5px;
margin-top: 20px;
min-height: 50px;
padding: 0 10px 10px 20px;
.ant-checkbox-wrapper {
background-color: #fff;
}
.topCheckbox {
height: 20px;
margin: -10px 0 0 0px;
line-height: 20px;
}
.topCheckbox > label :hover {
font-weight: 600;
}
.bottomCheckbox {
.ant-checkbox-group-item {
min-width: 150px !important;
}
.ant-checkbox-wrapper {
min-width: 150px !important;
}
}
.checkdiv {
display: flex;
flex-wrap: wrap;
// margin-left: 20px;
// justify-content: space-between;
}
}
src/pages/platformCenter/messageManage/projectManage/components/RolseSelect/VisibleRoleModal.jsx
View file @
9658e275
import
React
,
{
useEffect
,
useState
}
from
'react'
/* eslint-disable no-restricted-syntax */
import
React
,
{
useEffect
,
useState
}
from
'react'
;
import
SiteModal
from
'@/components/Modal/SiteModa'
;
import
{
Checkbox
,
Input
,
Button
,
Modal
}
from
'antd'
//import { data } from '../Mock'
import
{
Checkbox
,
Input
,
Button
,
Modal
}
from
'antd'
;
//
import { data } from '../Mock'
import
_
from
'lodash'
;
import
classnames
from
'classnames'
;
import
styles
from
'./VisibleRoleModal.less'
import
{
ManOutlined
}
from
'@ant-design/icons'
;
import
{
RoleGroupList
}
from
'@/services/platform/messagemanage'
import
{
RoleGroupList
}
from
'@/services/platform/messagemanage'
;
import
{
useTheme
}
from
'bizcharts'
;
import
styles
from
'./VisibleRoleModal.less'
;
const
checkIsGroup
=
node
=>
node
.
children
?.
length
>
0
;
const
getId
=
item
=>
item
.
userID
||
item
.
roleID
||
item
.
stationID
||
item
.
id
;
const
checkIsGroup
=
node
=>
node
.
children
?.
length
>
0
;
const
getId
=
item
=>
item
.
userID
||
item
.
roleID
||
item
.
stationID
||
item
.
id
;
const
VisibleRoleModal
=
props
=>
{
const
[
loading
,
setLoading
]
=
useState
(
false
);
const
[
previewVisible
,
setPreviewVisible
]
=
useState
(
false
)
const
[
selectRole
,
setSelectRole
]
=
useState
([])
const
[
dataTree
,
setDataTree
]
=
useState
([])
const
[
dataLeafs
,
setDataLeafs
]
=
useState
([])
const
[
selectValues
,
setSelectValues
]
=
useState
([])
const
{
onSubmit
,
title
,
operate
,
initValues
,
selectValue
}
=
props
const
[
isUnmount
,
setIsUnmount
]
=
useState
(
true
)
const
GetRoleGroupList
=
()
=>
{
}
useEffect
(()
=>
{
let
isUnmount
=
false
console
.
log
(
'selectValue'
,
selectValue
);
if
(
selectValue
)
{
setSelectRole
(
selectValue
)
}
RoleGroupList
().
then
(
async
res
=>
{
let
tree
=
[]
let
leafs
=
[]
res
.
data
&&
res
.
data
.
roleList
.
map
((
item
,
index
)
=>
{
tree
.
push
({
name
:
item
.
visibleTitle
,
id
:
index
,
children
:
item
.
roleList
.
map
((
roleItem
)
=>
{
leafs
.
push
({
name
:
roleItem
.
roleName
,
id
:
roleItem
.
roleID
,
})
const
leafNode
=
{
name
:
roleItem
.
roleName
,
id
:
roleItem
.
roleID
,
children
:
[]
}
return
leafNode
})
})
})
if
(
!
isUnmount
)
{
setDataTree
(
tree
)
setDataLeafs
(
leafs
)
return
()
=>
isUnmount
=
true
;
}
}
)
},
[
selectValue
])
const
handleCancel
=
()
=>
{
setPreviewVisible
(
false
)
const
[
loading
,
setLoading
]
=
useState
(
false
);
const
[
previewVisible
,
setPreviewVisible
]
=
useState
(
false
);
const
[
selectRole
,
setSelectRole
]
=
useState
([]);
const
[
dataTree
,
setDataTree
]
=
useState
([]);
const
[
dataLeafs
,
setDataLeafs
]
=
useState
([]);
const
[
selectValues
,
setSelectValues
]
=
useState
([]);
const
{
onSubmit
,
title
,
operate
,
initValues
,
selectValue
}
=
props
;
const
[
isUnmount
,
setIsUnmount
]
=
useState
(
true
);
const
GetRoleGroupList
=
()
=>
{};
useEffect
(()
=>
{
// eslint-disable-next-line no-shadow
let
isUnmount
=
false
;
console
.
log
(
'selectValue'
,
selectValue
);
if
(
selectValue
)
{
setSelectRole
(
selectValue
);
}
const
handleOk
=
()
=>
{
setPreviewVisible
(
false
)
onSubmit
&&
onSubmit
(
selectValues
)
RoleGroupList
().
then
(
async
res
=>
{
let
tree
=
[];
let
leafs
=
[];
// eslint-disable-next-line no-unused-expressions
res
.
data
&&
res
.
data
.
roleList
.
map
((
item
,
index
)
=>
{
tree
.
push
({
name
:
item
.
visibleTitle
,
id
:
index
,
children
:
item
.
roleList
.
map
(
roleItem
=>
{
leafs
.
push
({
name
:
roleItem
.
roleName
,
id
:
roleItem
.
roleID
,
});
const
leafNode
=
{
name
:
roleItem
.
roleName
,
id
:
roleItem
.
roleID
,
children
:
[],
};
return
leafNode
;
}),
});
});
if
(
!
isUnmount
)
{
setDataTree
(
tree
);
setDataLeafs
(
leafs
);
// eslint-disable-next-line no-return-assign
return
()
=>
(
isUnmount
=
true
);
}
});
},
[
selectValue
]);
const
handleCancel
=
()
=>
{
setPreviewVisible
(
false
);
};
const
handleOk
=
()
=>
{
setPreviewVisible
(
false
);
// eslint-disable-next-line no-unused-expressions
onSubmit
&&
onSubmit
(
selectValues
);
};
const
handleClick
=
()
=>
{
setPreviewVisible
(
true
);
};
const
onChange2
=
value
=>
{
console
.
log
(
value
);
const
strArr
=
[];
// eslint-disable-next-line no-restricted-syntax
for
(
const
item
of
value
)
{
strArr
.
push
(
item
.
name
);
}
const
handleClick
=
()
=>
{
setPreviewVisible
(
true
)
}
const
onChange2
=
(
value
)
=>
{
console
.
log
(
value
)
const
strArr
=
[]
for
(
const
item
of
value
)
{
strArr
.
push
(
item
.
name
)
setSelectRole
(
strArr
.
toString
());
setSelectValues
(
value
);
};
return
(
<
div
className=
{
styles
.
role_container
}
>
{
operate
?
(
<
div
onClick=
{
handleClick
}
>
{
operate
}
</
div
>
)
:
(
<
div
style=
{
{
display
:
'flex'
,
flexDirection
:
'row'
,
width
:
'100%'
}
}
>
<
Input
disabled
value=
{
selectRole
}
/>
<
div
className=
{
styles
.
select_btn
}
onClick=
{
handleClick
}
>
{
title
||
'选择角色'
}
</
div
>
</
div
>
)
}
<
SiteModal
{
...
props
}
title=
{
title
&&
Object
.
prototype
.
toString
.
call
(
title
)
!==
'[object Object]'
?
`选择${title}`
:
'关联角色'
}
setSelectRole
(
strArr
.
toString
())
setSelectValues
(
value
)
}
return
(
<
div
className=
{
styles
.
role_container
}
>
{
operate
?
(
<
div
onClick=
{
handleClick
}
>
{
operate
}
</
div
>
)
:
(
<
div
style=
{
{
display
:
"flex"
,
flexDirection
:
"row"
,
width
:
"100%"
}
}
>
<
Input
disabled=
{
true
}
value=
{
selectRole
}
/>
<
div
className=
{
styles
.
select_btn
}
onClick=
{
handleClick
}
>
{
title
?
title
:
"选择角色"
}
</
div
>
</
div
>
)
}
<
SiteModal
{
...
props
}
title=
{
title
&&
Object
.
prototype
.
toString
.
call
(
title
)
!==
'[object Object]'
?
`选择${title}`
:
"关联角色"
}
bodyStyle=
{
{
width
:
'100%'
,
minHeight
:
'100px'
}
}
style=
{
{
top
:
200
,
borderRadius
:
'20px'
}
}
width=
"800px"
destroyOnClose
cancelText=
"取消"
okText=
"确认"
onOk=
{
()
=>
handleOk
()
}
confirmLoading=
{
loading
}
visible=
{
previewVisible
}
onCancel=
{
handleCancel
}
>
<
div
className=
{
styles
.
list_card
}
>
<
ListCard
{
...
props
}
onChange2=
{
onChange2
}
data=
{
dataTree
}
dataLeafs=
{
dataLeafs
}
initValues=
{
initValues
}
/>
</
div
>
</
SiteModal
>
bodyStyle=
{
{
width
:
'100%'
,
minHeight
:
'100px'
}
}
style=
{
{
top
:
200
,
borderRadius
:
'20px'
}
}
width=
"800px"
destroyOnClose
cancelText=
"取消"
okText=
"确认"
onOk=
{
()
=>
handleOk
()
}
confirmLoading=
{
loading
}
visible=
{
previewVisible
}
onCancel=
{
handleCancel
}
>
<
div
className=
{
styles
.
list_card
}
>
<
ListCard
{
...
props
}
onChange2=
{
onChange2
}
data=
{
dataTree
}
dataLeafs=
{
dataLeafs
}
initValues=
{
initValues
}
/>
</
div
>
)
}
</
SiteModal
>
</
div
>
);
};
const
checkChildrenByCondition
=
(
item
,
fn
,
withGroup
=
true
,
method
=
'every'
,
item
,
fn
,
withGroup
=
true
,
method
=
'every'
,
)
=>
{
if
(
item
.
children
&&
item
.
children
.
length
>
0
)
{
return
fn
(
item
);
}
const
childrenResults
=
item
.
children
[
method
](
t
=>
checkChildrenByCondition
(
t
,
fn
,
withGroup
,
method
),
);
return
withGroup
?
[
fn
(
item
),
...
childrenResults
]
:
[...
childrenResults
];
if
(
item
.
children
&&
item
.
children
.
length
>
0
)
{
return
fn
(
item
);
}
const
childrenResults
=
item
.
children
[
method
](
t
=>
checkChildrenByCondition
(
t
,
fn
,
withGroup
,
method
),
);
return
withGroup
?
[
fn
(
item
),
...
childrenResults
]
:
[...
childrenResults
];
};
const
ListCard
=
props
=>
{
const
{
onChange
,
onChange2
,
data
,
dataLeafs
,
initValues
}
=
props
const
[
changedItem
,
setChangedItem
]
=
useState
({
item
:
{}
});
const
[
valueList
,
setValueList
]
=
useState
([]);
const
checkAll
=
e
=>
{
if
(
e
.
target
.
checked
)
{
const
result
=
data
.
map
(
item
=>
getAllID
(
item
)).
flat
(
Infinity
);
setValueList
(
result
);
// eslint-disable-next-line no-unused-expressions
const
fliterResult
=
filterChildren
(
result
)
const
strArr
=
[]
for
(
const
item
of
fliterResult
)
{
strArr
.
push
(
item
.
name
)
}
onChange
&&
onChange
(
strArr
.
toString
())
onChange2
&&
onChange2
(
fliterResult
)
}
else
{
setValueList
([]);
// eslint-disable-next-line no-unused-expressions
const
fliterResult
=
filterChildren
(
result
)
onChange
&&
onChange
(
fliterResult
)
onChange2
&&
onChange2
(
fliterResult
)
}
};
const
getAllID
=
item
=>
{
let
result
=
[];
const
haveChildren
=
Array
.
isArray
(
item
.
children
)
&&
item
.
children
.
length
>
0
;
// 统一使用 getId
result
.
push
(
getId
(
item
));
if
(
haveChildren
)
{
// 每次递归result被置空,所以要另外保存
result
=
[...
item
.
children
.
map
(
i
=>
getAllID
(
i
)),
...
result
];
}
return
result
;
};
const
filterChildren
=
(
select
)
=>
{
let
selectLeafs
=
[]
for
(
const
leaf
of
dataLeafs
)
{
for
(
const
id
of
select
)
{
if
(
id
==
leaf
.
id
)
{
selectLeafs
.
push
(
leaf
)
}
}
}
return
selectLeafs
const
{
onChange
,
onChange2
,
data
,
dataLeafs
,
initValues
}
=
props
;
const
[
changedItem
,
setChangedItem
]
=
useState
({
item
:
{}
});
const
[
valueList
,
setValueList
]
=
useState
([]);
const
checkAll
=
e
=>
{
if
(
e
.
target
.
checked
)
{
const
result
=
data
.
map
(
item
=>
getAllID
(
item
)).
flat
(
Infinity
);
setValueList
(
result
);
// eslint-disable-next-line no-unused-expressions
const
fliterResult
=
filterChildren
(
result
);
const
strArr
=
[];
// eslint-disable-next-line no-restricted-syntax
for
(
const
item
of
fliterResult
)
{
strArr
.
push
(
item
.
name
);
}
// eslint-disable-next-line no-unused-expressions
onChange
&&
onChange
(
strArr
.
toString
());
// eslint-disable-next-line no-unused-expressions
onChange2
&&
onChange2
(
fliterResult
);
}
else
{
setValueList
([]);
// eslint-disable-next-line no-unused-expressions
const
fliterResult
=
filterChildren
(
result
);
// eslint-disable-next-line no-unused-expressions
onChange
&&
onChange
(
fliterResult
);
// eslint-disable-next-line no-unused-expressions
onChange2
&&
onChange2
(
fliterResult
);
}
const
updateValueList
=
(
checkedKeys
,
childrenKeys
,
sourceItem
)
=>
{
const
removekeys
=
_
.
difference
(
childrenKeys
,
checkedKeys
);
let
result
=
_
.
uniq
(
_
.
union
(
checkedKeys
,
valueList
));
_
.
remove
(
result
,
v
=>
removekeys
.
includes
(
v
));
setValueList
(
result
);
if
(
sourceItem
)
setChangedItem
(
sourceItem
);
// eslint-disable-next-line no-unused-expressions
// onChange && onChange(result);
// onChange2 && onChange2(result);
const
fliterResult
=
filterChildren
(
result
)
const
strArr
=
[]
for
(
const
item
of
fliterResult
)
{
strArr
.
push
(
item
.
name
)
};
const
getAllID
=
item
=>
{
let
result
=
[];
const
haveChildren
=
Array
.
isArray
(
item
.
children
)
&&
item
.
children
.
length
>
0
;
// 统一使用 getId
result
.
push
(
getId
(
item
));
if
(
haveChildren
)
{
// 每次递归result被置空,所以要另外保存
result
=
[...
item
.
children
.
map
(
i
=>
getAllID
(
i
)),
...
result
];
}
return
result
;
};
const
filterChildren
=
select
=>
{
let
selectLeafs
=
[];
for
(
const
leaf
of
dataLeafs
)
{
for
(
const
id
of
select
)
{
if
(
id
==
leaf
.
id
)
{
selectLeafs
.
push
(
leaf
);
}
onChange
&&
onChange
(
strArr
.
toString
())
onChange2
&&
onChange2
(
fliterResult
)
}
}
useEffect
(()
=>
{
initValues
&&
setValueList
(
initValues
)
},
[])
return
(
<
div
>
<
Checkbox
onChange=
{
checkAll
}
>
全选/全不选
</
Checkbox
>
{
data
.
map
((
item
,
i
)
=>
{
return
<
ListCardItem
key=
{
i
}
item=
{
item
}
updateValueList=
{
updateValueList
}
valueList=
{
valueList
}
changedItem=
{
changedItem
}
{
...
props
}
/>
})
}
</
div
>
)
}
return
selectLeafs
;
};
const
updateValueList
=
(
checkedKeys
,
childrenKeys
,
sourceItem
)
=>
{
const
removekeys
=
_
.
difference
(
childrenKeys
,
checkedKeys
);
let
result
=
_
.
uniq
(
_
.
union
(
checkedKeys
,
valueList
));
_
.
remove
(
result
,
v
=>
removekeys
.
includes
(
v
));
setValueList
(
result
);
if
(
sourceItem
)
setChangedItem
(
sourceItem
);
// eslint-disable-next-line no-unused-expressions
// onChange && onChange(result);
// onChange2 && onChange2(result);
const
fliterResult
=
filterChildren
(
result
);
const
strArr
=
[];
// eslint-disable-next-line no-restricted-syntax
for
(
const
item
of
fliterResult
)
{
strArr
.
push
(
item
.
name
);
}
// eslint-disable-next-line no-unused-expressions
onChange
&&
onChange
(
strArr
.
toString
());
// eslint-disable-next-line no-unused-expressions
onChange2
&&
onChange2
(
fliterResult
);
};
useEffect
(()
=>
{
// eslint-disable-next-line no-unused-expressions
initValues
&&
setValueList
(
initValues
);
},
[]);
return
(
<
div
>
<
Checkbox
onChange=
{
checkAll
}
>
全选/全不选
</
Checkbox
>
{
data
.
map
((
item
,
i
)
=>
(
<
ListCardItem
key=
{
i
}
item=
{
item
}
updateValueList=
{
updateValueList
}
valueList=
{
valueList
}
changedItem=
{
changedItem
}
{
...
props
}
/>
))
}
</
div
>
);
};
const
ListCardItem
=
props
=>
{
const
{
item
,
valueList
,
updateValueList
,
changedItem
}
=
props
;
const
id
=
item
.
id
;
// 当前组件是否是分组id
const
isGroup
=
item
.
children
&&
item
.
children
.
length
>
0
;
const
[
indeterminate
,
setIndeterminate
]
=
useState
(
!
isGroup
);
const
[
childrenKeys
,
setChildrenKeys
]
=
useState
([]);
useEffect
(()
=>
{
if
(
isGroup
)
{
const
keys
=
item
.
children
.
map
(
child
=>
checkChildrenByCondition
(
child
,
c
=>
c
.
id
,
true
,
'map'
),
)
.
flat
(
Infinity
);
setChildrenKeys
(
keys
);
}
else
{
//
}
},
[
item
]);
useEffect
(()
=>
{
// 子节点勾选状态变化时
if
(
isGroup
&&
changedItem
.
item
!==
item
&&
!
checkIsGroup
(
changedItem
.
item
)
&&
childrenKeys
.
includes
(
getId
(
changedItem
.
item
))
)
{
if
(
changedItem
.
value
&&
childrenKeys
.
every
(
c
=>
valueList
.
includes
(
c
)))
{
// 全选
updateValueList
([
id
],
[
id
]);
setIndeterminate
(
false
);
}
else
if
(
childrenKeys
.
some
(
c
=>
valueList
.
includes
(
c
)))
{
// 半选
// eslint-disable-next-line no-unused-expressions
valueList
.
includes
(
id
)
&&
updateValueList
([],
[
id
]);
setIndeterminate
(
true
);
}
else
{
// 零选
// eslint-disable-next-line no-unused-expressions
valueList
.
includes
(
id
)
&&
updateValueList
([],
[
id
]);
setIndeterminate
(
false
);
}
}
},
[
changedItem
.
item
,
changedItem
.
value
]);
const
handleChecked
=
e
=>
{
const
{
checked
:
v
}
=
e
.
target
;
if
(
isGroup
)
{
const
result
=
[...
childrenKeys
,
id
];
updateValueList
(
v
?
result
:
[],
result
,
{
item
,
value
:
v
});
setIndeterminate
(
false
);
}
else
{
updateValueList
(
v
?
[
id
]
:
[],
[
id
],
{
item
,
value
:
v
});
}
const
{
item
,
valueList
,
updateValueList
,
changedItem
}
=
props
;
const
{
id
}
=
item
;
// 当前组件是否是分组id
const
isGroup
=
item
.
children
&&
item
.
children
.
length
>
0
;
const
[
indeterminate
,
setIndeterminate
]
=
useState
(
!
isGroup
);
const
[
childrenKeys
,
setChildrenKeys
]
=
useState
([]);
useEffect
(()
=>
{
if
(
isGroup
)
{
const
keys
=
item
.
children
.
map
(
child
=>
checkChildrenByCondition
(
child
,
c
=>
c
.
id
,
true
,
'map'
))
.
flat
(
Infinity
);
setChildrenKeys
(
keys
);
}
else
{
//
}
const
renderChild
=
()
=>
item
.
children
&&
item
.
children
.
map
((
c
,
i
)
=>
(
<
ListCardItem
item=
{
c
}
key=
{
`item${i}key`
}
updateValueList=
{
updateValueList
}
valueList=
{
valueList
}
changedItem=
{
changedItem
}
/>
));
return
(
<
div
className=
{
classnames
({
[
styles
.
divBox
]:
isGroup
,
[
styles
.
divSingle
]:
!
isGroup
,
})
}
>
<
div
className=
{
styles
.
topCheckbox
}
>
<
Checkbox
indeterminate=
{
isGroup
?
indeterminate
:
false
}
checked=
{
valueList
.
includes
(
id
)
}
onChange=
{
handleChecked
}
>
{
item
.
name
}
</
Checkbox
>
<
div
style=
{
{
width
:
'100%'
}
}
className=
{
styles
.
checkdiv
}
>
{
renderChild
()
}
</
div
>
</
div
>
},
[
item
]);
useEffect
(()
=>
{
// 子节点勾选状态变化时
if
(
isGroup
&&
changedItem
.
item
!==
item
&&
!
checkIsGroup
(
changedItem
.
item
)
&&
childrenKeys
.
includes
(
getId
(
changedItem
.
item
))
)
{
if
(
changedItem
.
value
&&
childrenKeys
.
every
(
c
=>
valueList
.
includes
(
c
)))
{
// 全选
updateValueList
([
id
],
[
id
]);
setIndeterminate
(
false
);
}
else
if
(
childrenKeys
.
some
(
c
=>
valueList
.
includes
(
c
)))
{
// 半选
// eslint-disable-next-line no-unused-expressions
valueList
.
includes
(
id
)
&&
updateValueList
([],
[
id
]);
setIndeterminate
(
true
);
}
else
{
// 零选
// eslint-disable-next-line no-unused-expressions
valueList
.
includes
(
id
)
&&
updateValueList
([],
[
id
]);
setIndeterminate
(
false
);
}
}
},
[
changedItem
.
item
,
changedItem
.
value
]);
const
handleChecked
=
e
=>
{
const
{
checked
:
v
}
=
e
.
target
;
if
(
isGroup
)
{
const
result
=
[...
childrenKeys
,
id
];
updateValueList
(
v
?
result
:
[],
result
,
{
item
,
value
:
v
});
setIndeterminate
(
false
);
}
else
{
updateValueList
(
v
?
[
id
]
:
[],
[
id
],
{
item
,
value
:
v
});
}
};
const
renderChild
=
()
=>
item
.
children
&&
item
.
children
.
map
((
c
,
i
)
=>
(
<
ListCardItem
item=
{
c
}
key=
{
`item${i}key`
}
updateValueList=
{
updateValueList
}
valueList=
{
valueList
}
changedItem=
{
changedItem
}
/>
));
return
(
<
div
className=
{
classnames
({
[
styles
.
divBox
]:
isGroup
,
[
styles
.
divSingle
]:
!
isGroup
,
})
}
>
<
div
className=
{
styles
.
topCheckbox
}
>
<
Checkbox
indeterminate=
{
isGroup
?
indeterminate
:
false
}
checked=
{
valueList
.
includes
(
id
)
}
onChange=
{
handleChecked
}
>
{
item
.
name
}
</
Checkbox
>
<
div
style=
{
{
width
:
'100%'
}
}
className=
{
styles
.
checkdiv
}
>
{
renderChild
()
}
</
div
>
)
}
export
default
VisibleRoleModal
\ No newline at end of file
</
div
>
</
div
>
);
};
export
default
VisibleRoleModal
;
src/pages/platformCenter/schemeDetail/schemeDetail.jsx
View file @
9658e275
...
...
@@ -188,11 +188,41 @@ const EditModal = props => {
aa
=
fv
.
enterprise_template
.
toString
();
}
console
.
log
(
fv
);
let
push_mode
=
(
currentTrench
.
isAPPShow
||
currentTrench
.
isWEBShow
?
'平台弹框'
:
''
)
+
(
currentTrench
.
isWXShow
?
',公众号推送'
:
''
)
+
(
currentTrench
.
isMessageShow
?
',短信推送'
:
''
)
+
(
currentTrench
.
isEnterpriseWXShow
?
',企业微信推送'
:
''
);
let
push_mode
=
[];
Object
.
keys
(
currentTrench
).
forEach
(
key
=>
{
console
.
log
(
key
,
'key'
);
switch
(
key
)
{
case
'isAPPShow'
:
if
(
currentTrench
[
key
])
{
push_mode
.
push
(
'平台弹框'
);
}
break
;
case
'isWEBShow'
:
if
(
currentTrench
[
key
])
{
push_mode
.
push
(
'平台弹框'
);
}
break
;
case
'isWXShow'
:
if
(
currentTrench
[
key
])
{
push_mode
.
push
(
'公众号推送'
);
}
break
;
case
'isMessageShow'
:
if
(
currentTrench
[
key
])
{
push_mode
.
push
(
'短信推送'
);
}
break
;
case
'isEnterpriseWXShow'
:
if
(
currentTrench
[
key
])
{
push_mode
.
push
(
'企业微信推送'
);
}
break
;
default
:
break
;
}
});
if
(
template
.
ThemeName
)
{
let
a
=
{
ID
:
template
.
ID
,
...
...
@@ -212,7 +242,7 @@ const EditModal = props => {
IsDelete
:
template
.
IsDelete
,
InputTime
:
moment
().
format
(
'YYYY-MM-DD HH:mm:ss'
),
Pusher
:
template
.
Pusher
,
PushMode
:
push_mode
,
PushMode
:
push_mode
.
join
(
','
)
,
PushPath
:
template
.
PushPath
,
IsStarted
:
isUse
,
MsgTemplateID
:
fv
.
message_template
,
...
...
src/pages/platformCenter/standingBook/editorModal.jsx
View file @
9658e275
...
...
@@ -78,7 +78,7 @@ const AddModal = props => {
let
data
=
type
==
'add'
?
{
...
obj
,
...
inputValue
,
Order
:
maxLength
}
:
{
...
obj
,
...
inputValue
,
Order
,
ID
:
formObj
.
ID
};
:
{
...
obj
,
Order
,
ID
:
formObj
.
ID
};
GetCMLedger_OperateLedger
(
data
)
.
then
(
res
=>
{
setLoading
(
false
);
...
...
@@ -241,6 +241,8 @@ const AddModal = props => {
setInputVaule
(
inputText
);
};
const
inputType
=
e
=>
{
e
.
persist
();
console
.
log
(
e
.
target
.
value
,
'value'
);
setType
(
e
.
target
.
value
);
form
.
setFieldsValue
({
Type
:
e
.
target
.
value
});
};
...
...
@@ -271,7 +273,7 @@ const AddModal = props => {
<
div
>
<
Input
className=
"ue-editable-select-input"
onChange=
{
inputType
}
onChange=
{
e
=>
inputType
(
e
)
}
value=
{
Type
}
/>
<
Dropdown
...
...
src/pages/platformCenter/standingBook/standingBook.less
View file @
9658e275
...
...
@@ -205,7 +205,7 @@
}
.ant-checkbox-group .ant-checkbox-group-item {
margin-right: 0px !important;
min-width: 200px !important;
//
min-width: 200px !important;
}
.ant-tree-list-holder {
overflow: auto;
...
...
src/pages/userCenter/siteManageV2/siteManage.jsx
View file @
9658e275
import
React
,
{
useEffect
,
useState
}
from
'react'
import
React
,
{
useEffect
,
useState
}
from
'react'
;
import
{
// Tree,
Table
,
Space
,
message
,
Modal
,
Input
,
notification
,
Tooltip
,
Card
,
Button
,
Spin
,
Dropdown
,
Menu
,
Row
,
Col
,
Empty
,
Pagination
,
Checkbox
// Tree,
Table
,
Space
,
message
,
Modal
,
Input
,
notification
,
Tooltip
,
Card
,
Button
,
Spin
,
Dropdown
,
Menu
,
Row
,
Col
,
Empty
,
Pagination
,
Checkbox
,
}
from
'antd'
;
import
classnames
from
'classnames'
import
classnames
from
'classnames'
;
import
{
UserOutlined
,
PlusSquareOutlined
,
UsergroupAddOutlined
,
EditOutlined
,
FormOutlined
,
DeleteOutlined
,
DoubleLeftOutlined
,
DoubleRightOutlined
,
DownOutlined
,
PlusOutlined
,
ApartmentOutlined
UserOutlined
,
PlusSquareOutlined
,
UsergroupAddOutlined
,
EditOutlined
,
FormOutlined
,
DeleteOutlined
,
DoubleLeftOutlined
,
DoubleRightOutlined
,
DownOutlined
,
PlusOutlined
,
ApartmentOutlined
,
}
from
'@ant-design/icons'
;
import
PageContainer
from
'@/components/BasePageContainer'
;
...
...
@@ -40,20 +40,20 @@ import Tree from '@/components/ExpendableTree';
import
voca
from
'voca'
;
import
zhCN
from
'antd/es/locale/zh_CN'
;
import
qs
from
'qs'
;
import
lodash
,
{
clone
}
from
'lodash'
;
import
styles
from
'./siteManage.less'
;
import
{
getWebModuleTree
,
chooseUserToStation
,
getAllGroup
,
getUserByStation
,
getStationUserList
,
groupUserPagingList
,
addChildSiteNode
,
getSiteTree
,
getStationUsers
getWebModuleTree
,
chooseUserToStation
,
getAllGroup
,
getUserByStation
,
getStationUserList
,
groupUserPagingList
,
addChildSiteNode
,
getSiteTree
,
getStationUsers
,
}
from
'@/services/userCenter/siteManage/api'
;
import
lodash
,
{
clone
}
from
'lodash'
;
import
AddModal
from
'../siteManage/AddModal'
;
import
DelModal
from
'../siteManage/DelModal'
;
import
EditModal
from
'../siteManage/EditModal'
;
...
...
@@ -61,699 +61,687 @@ import AddChildModal from '../siteManage/AddChildModal';
const
{
Search
}
=
Input
;
const
placeholder
=
'请输入机构名称'
;
const
SiteManageV2
=
()
=>
{
const
[
showSearchStyle
,
setShowSearchStyle
]
=
useState
(
false
);
// 是否显示模糊查询样式
const
[
treeVisible
,
setTreeVisible
]
=
useState
(
true
);
// 树是否可见
const
[
treeData
,
setTreeData
]
=
useState
([]);
// 用户站点树
const
[
treeDataCopy
,
setTreeDataCopy
]
=
useState
([]);
// 机构树数据备份,用于更改机构
const
[
treeState
,
setTreeState
]
=
useState
(
true
);
// 树第一次加载
const
[
treeLoading
,
setTreeLoading
]
=
useState
(
false
);
const
[
currentStation
,
setCurrentStation
]
=
useState
(
''
);
// 当前选中站点
const
[
currentStationMsg
,
setCurrentStationMsg
]
=
useState
({});
//当前编辑节点信息
const
[
currentStationOperate
,
setCurrentStationOperate
]
=
useState
(
false
)
const
[
flag
,
setFlag
]
=
useState
(
1
);
//操作标致触发界面刷新
const
[
dataList
,
setdataList
]
=
useState
([]);
//当前站点对应的分页用户列表
const
[
visibleParams
,
setvisibleParams
]
=
useState
({
modalVisible
:
false
,
// 新增弹窗
delVisible
:
false
,
// 删除弹窗
editVisible
:
false
,
// 修改弹窗
spinLoading
:
false
,
// 加载弹窗
btnLoading
:
false
,
loading
:
false
,
checkBoxLoading
:
false
,
});
const
[
total
,
setTotal
]
=
useState
(
0
);
// 分页总数
const
[
page
,
setPage
]
=
useState
({
pageNum
:
1
,
pageSize
:
10
});
const
[
selectList
,
setSelectList
]
=
useState
([]);
// 选择列表数据
const
[
updatePageUser
,
setUpdatePageUser
]
=
useState
(
1
);
//
const
[
updateCheck
,
setUpdateCheck
]
=
useState
(
1
);
const
[
name
,
setName
]
=
useState
(
''
);
const
[
des
,
setDes
]
=
useState
(
''
)
const
[
data
,
setData
]
=
useState
(
''
)
const
[
ch
,
setCh
]
=
useState
(
''
)
let
a
=
[]
// 渲染机构树
const
mapTree
=
org
=>
{
const
haveChildren
=
Array
.
isArray
(
org
.
children
)
&&
org
.
children
.
length
>
0
;
return
{
title
:
(
<
div
className=
{
styles
.
title
}
>
<
div
className=
{
styles
.
titleText
}
>
{
org
.
text
}
</
div
>
<
div
className=
{
styles
.
tip
}
>
<
Tooltip
title=
"添加下级站点"
className=
{
styles
.
fs
}
>
<
PlusSquareOutlined
style=
{
{
fontSize
:
'16px'
,
color
:
'#1890FF'
}
}
onClick=
{
e
=>
addSite
(
e
,
org
)
}
/>
</
Tooltip
>
<
Tooltip
title=
"编辑当前站点"
className=
{
styles
.
fs
}
>
<
FormOutlined
style=
{
{
fontSize
:
'16px'
,
color
:
'#1890FF'
}
}
onClick=
{
e
=>
editorSite
(
e
,
org
)
}
/>
</
Tooltip
>
<
Tooltip
title=
"删除当前站点"
className=
{
styles
.
fs
}
>
<
DeleteOutlined
style=
{
{
fontSize
:
'16px'
,
color
:
'#1890FF'
}
}
onClick=
{
e
=>
delSite
(
e
,
org
)
}
/>
</
Tooltip
>
</
div
>
</
div
>
),
key
:
org
.
id
,
// icon: <UserOutlined style={{ display: 'inline' }} />,
// 判断它是否存在子集,若果存在就进行再次进行遍历操作,知道不存在子集便对其他的元素进行操作
children
:
haveChildren
?
org
.
children
.
map
(
i
=>
mapTree
(
i
))
:
[],
};
};
//添加下级站点
const
addSite
=
(
e
,
recode
)
=>
{
e
.
stopPropagation
();
setCurrentStation
(
recode
.
id
);
handleShowModal
(
'addChildVisible'
,
true
);
}
//删除当前站点
const
delSite
=
(
e
,
recode
)
=>
{
e
.
stopPropagation
();
setCurrentStation
(
recode
.
id
);
handleShowModal
(
'delVisible'
,
true
);
}
//编辑当前站点
const
editorSite
=
(
e
,
recode
)
=>
{
e
.
stopPropagation
();
// console.log(recode);
// 保存编辑回显信息
setCurrentStationMsg
(
recode
);
// setCurrentStation(recode.id);
handleShowModal
(
'editVisible'
,
true
);
}
// 重新渲染树
const
updateTrees
=
()
=>
{
setTreeLoading
(
true
);
getSiteTree
({
selectNode
:
-
1
}).
then
(
res
=>
{
if
(
res
.
data
.
length
>
0
)
{
setTreeLoading
(
false
);
setTreeData
(
res
.
data
);
setTreeDataCopy
(
res
.
data
);
// 第一次加载,默认选择第一个组织
if
(
treeState
)
{
onSelect
([
res
.
data
[
0
].
id
],
false
);
//待会儿要改
setTreeState
(
false
);
}
}
else
{
setTreeLoading
(
false
);
notification
.
error
({
message
:
'获取失败'
,
description
:
res
.
message
,
});
}
}
)
const
[
showSearchStyle
,
setShowSearchStyle
]
=
useState
(
false
);
// 是否显示模糊查询样式
const
[
treeVisible
,
setTreeVisible
]
=
useState
(
true
);
// 树是否可见
const
[
treeData
,
setTreeData
]
=
useState
([]);
// 用户站点树
const
[
treeDataCopy
,
setTreeDataCopy
]
=
useState
([]);
// 机构树数据备份,用于更改机构
const
[
treeState
,
setTreeState
]
=
useState
(
true
);
// 树第一次加载
const
[
treeLoading
,
setTreeLoading
]
=
useState
(
false
);
const
[
currentStation
,
setCurrentStation
]
=
useState
(
''
);
// 当前选中站点
const
[
currentStationMsg
,
setCurrentStationMsg
]
=
useState
({});
// 当前编辑节点信息
const
[
currentStationOperate
,
setCurrentStationOperate
]
=
useState
(
false
);
const
[
flag
,
setFlag
]
=
useState
(
1
);
// 操作标致触发界面刷新
const
[
dataList
,
setdataList
]
=
useState
([]);
// 当前站点对应的分页用户列表
const
[
visibleParams
,
setvisibleParams
]
=
useState
({
modalVisible
:
false
,
// 新增弹窗
delVisible
:
false
,
// 删除弹窗
editVisible
:
false
,
// 修改弹窗
spinLoading
:
false
,
// 加载弹窗
btnLoading
:
false
,
loading
:
false
,
checkBoxLoading
:
false
,
});
const
[
total
,
setTotal
]
=
useState
(
0
);
// 分页总数
const
[
page
,
setPage
]
=
useState
({
pageNum
:
1
,
pageSize
:
10
});
const
[
selectList
,
setSelectList
]
=
useState
([]);
// 选择列表数据
const
[
updatePageUser
,
setUpdatePageUser
]
=
useState
(
1
);
//
const
[
updateCheck
,
setUpdateCheck
]
=
useState
(
1
);
const
[
name
,
setName
]
=
useState
(
''
);
const
[
des
,
setDes
]
=
useState
(
''
);
const
[
data
,
setData
]
=
useState
(
''
);
const
[
ch
,
setCh
]
=
useState
(
''
);
let
a
=
[];
// 渲染机构树
const
mapTree
=
org
=>
{
const
haveChildren
=
Array
.
isArray
(
org
.
children
)
&&
org
.
children
.
length
>
0
;
return
{
title
:
(
<
div
className=
{
styles
.
title
}
>
<
div
className=
{
styles
.
titleText
}
>
{
org
.
text
}
</
div
>
<
div
className=
{
styles
.
tip
}
>
<
Tooltip
title=
"添加下级站点"
className=
{
styles
.
fs
}
>
<
PlusSquareOutlined
style=
{
{
fontSize
:
'16px'
,
color
:
'#1890FF'
}
}
onClick=
{
e
=>
addSite
(
e
,
org
)
}
/>
</
Tooltip
>
<
Tooltip
title=
"编辑当前站点"
className=
{
styles
.
fs
}
>
<
FormOutlined
style=
{
{
fontSize
:
'16px'
,
color
:
'#1890FF'
}
}
onClick=
{
e
=>
editorSite
(
e
,
org
)
}
/>
</
Tooltip
>
<
Tooltip
title=
"删除当前站点"
className=
{
styles
.
fs
}
>
<
DeleteOutlined
style=
{
{
fontSize
:
'16px'
,
color
:
'#1890FF'
}
}
onClick=
{
e
=>
delSite
(
e
,
org
)
}
/>
</
Tooltip
>
</
div
>
</
div
>
),
key
:
org
.
id
,
// icon: <UserOutlined style={{ display: 'inline' }} />,
// 判断它是否存在子集,若果存在就进行再次进行遍历操作,知道不存在子集便对其他的元素进行操作
children
:
haveChildren
?
org
.
children
.
map
(
i
=>
mapTree
(
i
))
:
[],
};
// 获取用户机构树
useEffect
(()
=>
{
updateTrees
();
},
[
flag
]);
useEffect
(()
=>
{
getValue
()
},
[])
//切换站点,点击分页按钮,提交
useEffect
(()
=>
{
if
(
!
currentStation
)
return
;
getList
();
setShowSearchStyle
(
false
);
},
[
updatePageUser
,
name
]);
//切换站点,提交时触发已勾选列表更新
useEffect
(()
=>
{
if
(
!
currentStation
)
return
;
//getAllcheckList();
getAllCheckListNew
()
},
[
currentStation
,
updateCheck
]);
//获取当前站点可编辑用户(已勾选和未勾选)分页展示
const
getList
=
()
=>
{
let
params
=
{
id
:
+
currentStation
||
''
,
PageIndex
:
+
page
.
pageNum
,
PageSize
:
+
page
.
pageSize
,
};
if
(
name
)
params
=
{
...
params
,
name
};
groupUserPagingList
(
params
).
then
(
res
=>
{
if
(
res
.
code
===
0
&&
res
.
data
)
{
setShowSearchStyle
(
true
);
let
{
list
}
=
res
.
data
;
// 还原选择的数据
if
(
selectList
.
length
>
0
)
{
selectList
.
forEach
(
item
=>
{
list
.
forEach
((
value
,
index
)
=>
{
if
(
item
.
GroupId
===
value
.
GroupId
)
{
list
[
index
].
Users
.
forEach
((
user
,
userIndex
)
=>
{
if
(
user
.
userID
===
item
.
userID
)
{
list
[
index
].
Users
[
userIndex
].
isChecked
=
true
;
}
});
let
checkedLen
=
list
[
index
].
Users
.
filter
(
v
=>
v
.
isChecked
)
.
length
;
if
(
checkedLen
===
list
[
index
].
Users
.
length
)
{
list
[
index
].
isChecked
=
true
;
}
}
});
});
}
handleShowModal
(
'loading'
,
false
);
setdataList
(
lodash
.
cloneDeep
(
list
));
setTotal
(
res
.
data
.
TotalCount
);
}
else
{
handleShowModal
(
'loading'
,
false
);
setdataList
(
lodash
.
cloneDeep
([]));
}
});
}
//获取当前站点所有已经勾选的用户
const
getAllcheckList
=
async
()
=>
{
let
res
=
await
getUserByStation
({
stationID
:
currentStation
,
_version
:
9999
,
_dc
:
new
Date
().
getTime
(),
};
// 添加下级站点
const
addSite
=
(
e
,
recode
)
=>
{
e
.
stopPropagation
();
setCurrentStation
(
recode
.
id
);
handleShowModal
(
'addChildVisible'
,
true
);
};
// 删除当前站点
const
delSite
=
(
e
,
recode
)
=>
{
e
.
stopPropagation
();
setCurrentStation
(
recode
.
id
);
handleShowModal
(
'delVisible'
,
true
);
};
// 编辑当前站点
const
editorSite
=
(
e
,
recode
)
=>
{
e
.
stopPropagation
();
// console.log(recode);
// 保存编辑回显信息
setCurrentStationMsg
(
recode
);
// setCurrentStation(recode.id);
handleShowModal
(
'editVisible'
,
true
);
};
// 重新渲染树
const
updateTrees
=
()
=>
{
setTreeLoading
(
true
);
getSiteTree
({
selectNode
:
-
1
}).
then
(
res
=>
{
if
(
res
.
data
.
length
>
0
)
{
setTreeLoading
(
false
);
setTreeData
(
res
.
data
);
setTreeDataCopy
(
res
.
data
);
// 第一次加载,默认选择第一个组织
if
(
treeState
)
{
onSelect
([
res
.
data
[
0
].
id
],
false
);
// 待会儿要改
setTreeState
(
false
);
}
}
else
{
setTreeLoading
(
false
);
notification
.
error
({
message
:
'获取失败'
,
description
:
res
.
message
,
});
if
(
res
.
length
>
0
)
{
// 还原从后台返回的数据 选中的列表
let
list
=
[];
// console.log(res);
res
.
forEach
(
item
=>
{
if
(
item
.
userList
.
length
>
0
)
{
item
.
userList
.
forEach
(
value
=>
{
// console.log(value);
if
(
value
.
isChecked
&&
list
.
findIndex
(
v
=>
+
v
.
GroupId
===
+
item
.
OUID
&&
+
v
.
userID
===
+
value
.
userID
,
)
===
-
1
)
{
list
.
push
({
GroupId
:
+
item
.
OUID
,
GroupName
:
item
.
OUName
,
userName
:
value
.
userName
,
userID
:
value
.
userID
,
});
}
});
}
});
};
// 获取用户机构树
useEffect
(()
=>
{
updateTrees
();
},
[
flag
]);
useEffect
(()
=>
{
getValue
();
},
[]);
// 切换站点,点击分页按钮,提交
useEffect
(()
=>
{
if
(
!
currentStation
)
return
;
getList
();
setShowSearchStyle
(
false
);
},
[
updatePageUser
,
name
]);
// 切换站点,提交时触发已勾选列表更新
useEffect
(()
=>
{
if
(
!
currentStation
)
return
;
// getAllcheckList();
getAllCheckListNew
();
},
[
currentStation
,
updateCheck
]);
// 获取当前站点可编辑用户(已勾选和未勾选)分页展示
const
getList
=
()
=>
{
let
params
=
{
id
:
+
currentStation
||
''
,
PageIndex
:
+
page
.
pageNum
,
PageSize
:
+
page
.
pageSize
,
};
if
(
name
)
params
=
{
...
params
,
name
};
groupUserPagingList
(
params
).
then
(
res
=>
{
if
(
res
.
code
===
0
&&
res
.
data
)
{
setShowSearchStyle
(
true
);
let
{
list
}
=
res
.
data
;
// 还原选择的数据
if
(
selectList
.
length
>
0
)
{
selectList
.
forEach
(
item
=>
{
list
.
forEach
((
value
,
index
)
=>
{
if
(
item
.
GroupId
===
value
.
GroupId
)
{
list
[
index
].
Users
.
forEach
((
user
,
userIndex
)
=>
{
if
(
user
.
userID
===
item
.
userID
)
{
list
[
index
].
Users
[
userIndex
].
isChecked
=
true
;
}
});
let
checkedLen
=
list
[
index
].
Users
.
filter
(
v
=>
v
.
isChecked
)
.
length
;
if
(
checkedLen
===
list
[
index
].
Users
.
length
)
{
list
[
index
].
isChecked
=
true
;
}
}
});
setSelectList
(
lodash
.
cloneDeep
(
list
));
setUpdatePageUser
(
updatePageUser
+
1
)
});
}
}
//获取当前站点所有已经勾选的用户新接口
const
getAllCheckListNew
=
()
=>
{
getStationUsers
({
stationId
:
currentStation
}).
then
(
res
=>
{
let
list
=
[]
if
(
res
.
data
.
length
>
0
)
{
res
.
data
.
map
((
item
,
index
)
=>
{
list
.
push
({
GroupId
:
+
item
.
OUID
,
GroupName
:
item
.
OUName
,
userName
:
item
.
userName
,
userID
:
item
.
userID
,
});
})
}
setSelectList
(
lodash
.
cloneDeep
(
list
));
setUpdatePageUser
(
updatePageUser
+
1
)
handleShowModal
(
'loading'
,
false
);
setdataList
(
lodash
.
cloneDeep
(
list
));
setTotal
(
res
.
data
.
TotalCount
);
}
else
{
handleShowModal
(
'loading'
,
false
);
setdataList
(
lodash
.
cloneDeep
([]));
}
});
};
// 获取当前站点所有已经勾选的用户
const
getAllcheckList
=
async
()
=>
{
let
res
=
await
getUserByStation
({
stationID
:
currentStation
,
_version
:
9999
,
_dc
:
new
Date
().
getTime
(),
});
if
(
res
.
length
>
0
)
{
// 还原从后台返回的数据 选中的列表
let
list
=
[];
// console.log(res);
res
.
forEach
(
item
=>
{
if
(
item
.
userList
.
length
>
0
)
{
item
.
userList
.
forEach
(
value
=>
{
// console.log(value);
if
(
value
.
isChecked
&&
list
.
findIndex
(
v
=>
+
v
.
GroupId
===
+
item
.
OUID
&&
+
v
.
userID
===
+
value
.
userID
,
)
===
-
1
)
{
list
.
push
({
GroupId
:
+
item
.
OUID
,
GroupName
:
item
.
OUName
,
userName
:
value
.
userName
,
userID
:
value
.
userID
,
});
}
)
}
//选中某个站点
const
onSelect
=
(
props
,
e
)
=>
{
console
.
log
(
'props[0]'
,
props
[
0
]);
setCh
(
props
[
0
])
if
(
!
props
[
0
])
{
setCurrentStation
(
currentStation
)
}
else
{
setCurrentStation
(
props
[
0
]);
});
}
setPage
({
pageNum
:
1
,
pageSize
:
10
});
console
.
log
(
data
)
data
.
map
((
item
,
index
)
=>
{
if
(
item
.
id
==
props
[
0
])
{
console
.
log
(
item
.
id
)
console
.
log
(
item
.
describe
)
setDes
(
item
.
describe
)
}
})
});
setSelectList
(
lodash
.
cloneDeep
(
list
));
setUpdatePageUser
(
updatePageUser
+
1
);
}
const
getValue
=
()
=>
{
getSiteTree
({
selectNode
:
-
1
}).
then
(
res
=>
{
console
.
log
(
res
.
data
)
getData1
(
res
.
data
)
}
)
}
const
getData1
=
e
=>
{
console
.
log
(
e
)
e
.
map
((
i
,
j
)
=>
{
a
.
push
(
i
)
if
(
i
.
children
.
length
>
0
)
{
getData1
(
i
.
children
)
}
})
console
.
log
(
a
)
setData
(
a
)
};
// 获取当前站点所有已经勾选的用户新接口
const
getAllCheckListNew
=
()
=>
{
getStationUsers
({
stationId
:
currentStation
,
}).
then
(
res
=>
{
let
list
=
[];
if
(
res
.
data
.
length
>
0
)
{
res
.
data
.
map
((
item
,
index
)
=>
{
list
.
push
({
GroupId
:
+
item
.
OUID
,
GroupName
:
item
.
OUName
,
userName
:
item
.
userName
,
userID
:
item
.
userID
,
});
});
}
setSelectList
(
lodash
.
cloneDeep
(
list
));
setUpdatePageUser
(
updatePageUser
+
1
);
});
};
// 选中某个站点
const
onSelect
=
(
props
,
e
)
=>
{
console
.
log
(
'props[0]'
,
props
[
0
]);
setCh
(
props
[
0
]);
if
(
!
props
[
0
])
{
setCurrentStation
(
currentStation
);
}
else
{
setCurrentStation
(
props
[
0
]);
}
setPage
({
pageNum
:
1
,
pageSize
:
10
});
console
.
log
(
data
);
data
.
map
((
item
,
index
)
=>
{
if
(
item
.
id
==
props
[
0
])
{
console
.
log
(
item
.
id
);
console
.
log
(
item
.
describe
);
setDes
(
item
.
describe
);
}
});
};
// 弹出模态框
const
handleShowModal
=
(
key
,
value
)
=>
{
setvisibleParams
({
...
visibleParams
,
[
key
]:
value
});
};
// 获取搜索框的值
const
handleSearch
=
value
=>
{
setName
(
value
);
getList
(
value
);
};
const
confirmModal
=
e
=>
{
handleShowModal
(
'modalVisible'
,
false
);
setFlag
(
flag
+
1
);
};
const
delModal
=
()
=>
{
handleShowModal
(
'delVisible'
,
false
);
setFlag
(
flag
+
1
);
};
const
editModal
=
()
=>
{
handleShowModal
(
'editVisible'
,
false
);
setFlag
(
flag
+
1
);
};
const
addChildModal
=
()
=>
{
handleShowModal
(
'addChildVisible'
,
false
);
setFlag
(
flag
+
1
);
const
getValue
=
()
=>
{
getSiteTree
({
selectNode
:
-
1
}).
then
(
res
=>
{
console
.
log
(
res
.
data
);
getData1
(
res
.
data
);
});
};
const
getData1
=
e
=>
{
console
.
log
(
e
);
e
.
map
((
i
,
j
)
=>
{
a
.
push
(
i
);
if
(
i
.
children
.
length
>
0
)
{
getData1
(
i
.
children
);
}
});
console
.
log
(
a
);
setData
(
a
);
};
// 弹出模态框
const
handleShowModal
=
(
key
,
value
)
=>
{
setvisibleParams
({
...
visibleParams
,
[
key
]:
value
});
};
// 获取搜索框的值
const
handleSearch
=
value
=>
{
setName
(
value
);
getList
(
value
);
};
const
confirmModal
=
e
=>
{
handleShowModal
(
'modalVisible'
,
false
);
setFlag
(
flag
+
1
);
};
const
delModal
=
()
=>
{
handleShowModal
(
'delVisible'
,
false
);
setFlag
(
flag
+
1
);
};
const
editModal
=
()
=>
{
handleShowModal
(
'editVisible'
,
false
);
setFlag
(
flag
+
1
);
};
const
addChildModal
=
()
=>
{
handleShowModal
(
'addChildVisible'
,
false
);
setFlag
(
flag
+
1
);
};
const
handleChangeCollpase
=
(
groupId
,
isShow
)
=>
{
let
index
=
dataList
.
findIndex
(
item
=>
item
.
GroupId
===
groupId
);
if
(
dataList
[
index
].
children
&&
dataList
[
index
].
children
.
length
>
0
)
{
setdataList
(
lodash
.
cloneDeep
(
dataList
));
return
;
}
const
handleChangeCollpase
=
(
groupId
,
isShow
)
=>
{
let
index
=
dataList
.
findIndex
(
item
=>
item
.
GroupId
===
groupId
);
if
(
dataList
[
index
].
children
&&
dataList
[
index
].
children
.
length
>
0
)
{
setdataList
(
lodash
.
cloneDeep
(
dataList
));
return
;
}
handleShowModal
(
'loading'
,
true
);
getStationUserList
({
stationID
:
currentStation
,
groupId
}).
then
(
res
=>
{
if
(
res
.
code
===
0
&&
res
.
data
)
{
handleShowModal
(
'loading'
,
false
);
dataList
[
index
].
children
=
res
.
data
;
setdataList
(
lodash
.
cloneDeep
(
dataList
));
}
},
);
};
// 每组全选全不选
const
handleChangeAll
=
(
e
,
index
)
=>
{
dataList
[
index
].
isChecked
=
e
.
target
.
checked
;
dataList
[
index
].
Users
.
forEach
(
item
=>
{
item
.
isChecked
=
e
.
target
.
checked
;
let
delIndex
=
selectList
.
findIndex
(
v
=>
v
.
GroupId
===
dataList
[
index
].
GroupId
&&
v
.
userID
===
item
.
userID
,
);
if
(
e
.
target
.
checked
)
{
if
(
delIndex
===
-
1
)
{
selectList
.
push
({
GroupId
:
dataList
[
index
].
GroupId
,
GroupName
:
dataList
[
index
].
GroupName
,
userName
:
item
.
userName
,
userID
:
item
.
userID
,
});
}
}
if
(
!
e
.
target
.
checked
)
{
selectList
.
splice
(
delIndex
,
1
);
}
});
setSelectList
(
lodash
.
cloneDeep
(
selectList
));
handleShowModal
(
'loading'
,
true
);
getStationUserList
({
stationID
:
currentStation
,
groupId
}).
then
(
res
=>
{
if
(
res
.
code
===
0
&&
res
.
data
)
{
handleShowModal
(
'loading'
,
false
);
dataList
[
index
].
children
=
res
.
data
;
setdataList
(
lodash
.
cloneDeep
(
dataList
));
};
// 单个选择checkbox
const
handleChangeSignel
=
(
e
,
index
,
vIndex
)
=>
{
dataList
[
index
].
Users
[
vIndex
].
isChecked
=
e
.
target
.
checked
;
let
checked
=
isAllChecked
(
index
);
let
hasIndex
=
selectList
.
findIndex
(
item
=>
item
.
userID
===
dataList
[
index
].
Users
[
vIndex
].
userID
&&
item
.
GroupId
===
dataList
[
index
].
GroupId
,
);
dataList
[
index
].
isChecked
=
checked
;
if
(
e
.
target
.
checked
&&
hasIndex
===
-
1
)
{
selectList
.
push
({
GroupId
:
dataList
[
index
].
GroupId
,
GroupName
:
dataList
[
index
].
GroupName
,
userName
:
dataList
[
index
].
Users
[
vIndex
].
userName
,
userID
:
dataList
[
index
].
Users
[
vIndex
].
userID
,
});
}
else
{
selectList
.
splice
(
hasIndex
,
1
);
}
setdataList
(
lodash
.
cloneDeep
(
dataList
));
};
const
isAllChecked
=
index
=>
dataList
[
index
].
Users
.
filter
(
item
=>
item
.
isChecked
).
length
===
dataList
[
index
].
Users
.
length
;
// 删除已选列表
const
handleDel
=
index
=>
{
let
{
GroupId
,
userID
}
=
selectList
[
index
];
let
outerIndex
=
dataList
.
findIndex
(
item
=>
item
.
GroupId
===
GroupId
);
if
(
outerIndex
>
-
1
)
{
let
innerIndex
=
dataList
[
outerIndex
].
Users
.
findIndex
(
item
=>
item
.
userID
===
userID
,
);
dataList
[
outerIndex
].
Users
[
innerIndex
].
isChecked
=
false
;
dataList
[
outerIndex
].
isChecked
=
isAllChecked
(
outerIndex
);
}
});
};
// 每组全选全不选
const
handleChangeAll
=
(
e
,
index
)
=>
{
dataList
[
index
].
isChecked
=
e
.
target
.
checked
;
dataList
[
index
].
Users
.
forEach
(
item
=>
{
item
.
isChecked
=
e
.
target
.
checked
;
let
delIndex
=
selectList
.
findIndex
(
v
=>
v
.
GroupId
===
dataList
[
index
].
GroupId
&&
v
.
userID
===
item
.
userID
,
);
if
(
e
.
target
.
checked
)
{
if
(
delIndex
===
-
1
)
{
selectList
.
push
({
GroupId
:
dataList
[
index
].
GroupId
,
GroupName
:
dataList
[
index
].
GroupName
,
userName
:
item
.
userName
,
userID
:
item
.
userID
,
});
}
selectList
.
splice
(
index
,
1
);
setSelectList
(
lodash
.
cloneDeep
(
selectList
));
setdataList
(
lodash
.
cloneDeep
(
dataList
));
};
// 提交
const
handleCommitBtn
=
()
=>
{
handleShowModal
(
'btnLoading'
,
true
);
let
result
=
[];
let
obj
=
{};
selectList
.
forEach
(
item
=>
{
if
(
obj
[
item
.
GroupId
])
{
obj
[
item
.
GroupId
].
push
(
item
.
userID
);
}
else
{
obj
[
item
.
GroupId
]
=
[
item
.
userID
];
}
});
// dataList.forEach(item => {
// if (obj[item.GroupId] && item.Users.length === obj[item.GroupId].length) {
// obj[item.GroupId].push(item.GroupId);
// }
// });
result
=
Object
.
values
(
obj
);
// 数据处理成后台需要的格式
if
(
result
.
length
===
0
)
return
notification
.
warning
({
message
:
'提示'
,
description
:
'请至少选择选择一个用户!'
,
});
chooseUserToStation
(
{
userList
:
String
(
result
.
flat
()),
stationID
:
currentStation
,
}
)
.
then
(
res
=>
{
handleShowModal
(
'btnLoading'
,
false
);
}
if
(
!
e
.
target
.
checked
)
{
selectList
.
splice
(
delIndex
,
1
);
}
});
if
(
res
.
code
===
0
)
{
setSelectList
([]);
setUpdateCheck
(
updateCheck
+
1
);
notification
.
success
({
message
:
'提示'
,
duration
:
3
,
description
:
'设置成功'
,
});
}
else
{
notification
.
error
({
message
:
'提示'
,
duration
:
15
,
description
:
res
.
message
,
});
}
})
.
catch
(
err
=>
{
handleShowModal
(
'btnLoading'
,
false
);
console
.
log
(
err
);
});
};
// 分页
const
handleChangePage
=
(
pageNum
,
pageSize
)
=>
{
setPage
({
pageNum
,
pageSize
});
setUpdatePageUser
(
updatePageUser
+
1
);
};
/** ***操作按钮**** */
// 机构操作
const
addTopStation
=
()
=>
{
handleShowModal
(
'modalVisible'
,
true
);
setSelectList
(
lodash
.
cloneDeep
(
selectList
));
setdataList
(
lodash
.
cloneDeep
(
dataList
));
};
// 单个选择checkbox
const
handleChangeSignel
=
(
e
,
index
,
vIndex
)
=>
{
dataList
[
index
].
Users
[
vIndex
].
isChecked
=
e
.
target
.
checked
;
let
checked
=
isAllChecked
(
index
);
let
hasIndex
=
selectList
.
findIndex
(
item
=>
item
.
userID
===
dataList
[
index
].
Users
[
vIndex
].
userID
&&
item
.
GroupId
===
dataList
[
index
].
GroupId
,
);
dataList
[
index
].
isChecked
=
checked
;
if
(
e
.
target
.
checked
&&
hasIndex
===
-
1
)
{
selectList
.
push
({
GroupId
:
dataList
[
index
].
GroupId
,
GroupName
:
dataList
[
index
].
GroupName
,
userName
:
dataList
[
index
].
Users
[
vIndex
].
userName
,
userID
:
dataList
[
index
].
Users
[
vIndex
].
userID
,
});
}
else
{
selectList
.
splice
(
hasIndex
,
1
);
}
// 模糊查询匹配的样式
const
searchStyle
=
val
=>
{
console
.
log
(
showSearchStyle
)
console
.
log
(
name
)
let
n
;
if
(
showSearchStyle
)
{
n
=
val
.
replace
(
new
RegExp
(
name
,
'g'
),
`<span style='color:red'>
${
name
}
</span>`
,
);
setdataList
(
lodash
.
cloneDeep
(
dataList
));
};
const
isAllChecked
=
index
=>
dataList
[
index
].
Users
.
filter
(
item
=>
item
.
isChecked
).
length
===
dataList
[
index
].
Users
.
length
;
// 删除已选列表
const
handleDel
=
index
=>
{
let
{
GroupId
,
userID
}
=
selectList
[
index
];
let
outerIndex
=
dataList
.
findIndex
(
item
=>
item
.
GroupId
===
GroupId
);
if
(
outerIndex
>
-
1
)
{
let
innerIndex
=
dataList
[
outerIndex
].
Users
.
findIndex
(
item
=>
item
.
userID
===
userID
,
);
dataList
[
outerIndex
].
Users
[
innerIndex
].
isChecked
=
false
;
dataList
[
outerIndex
].
isChecked
=
isAllChecked
(
outerIndex
);
}
selectList
.
splice
(
index
,
1
);
setSelectList
(
lodash
.
cloneDeep
(
selectList
));
setdataList
(
lodash
.
cloneDeep
(
dataList
));
};
// 提交
const
handleCommitBtn
=
()
=>
{
handleShowModal
(
'btnLoading'
,
true
);
let
result
=
[];
let
obj
=
{};
selectList
.
forEach
(
item
=>
{
if
(
obj
[
item
.
GroupId
])
{
obj
[
item
.
GroupId
].
push
(
item
.
userID
);
}
else
{
obj
[
item
.
GroupId
]
=
[
item
.
userID
];
}
});
// dataList.forEach(item => {
// if (obj[item.GroupId] && item.Users.length === obj[item.GroupId].length) {
// obj[item.GroupId].push(item.GroupId);
// }
// });
result
=
Object
.
values
(
obj
);
// 数据处理成后台需要的格式
if
(
result
.
length
===
0
)
return
notification
.
warning
({
message
:
'提示'
,
description
:
'请至少选择选择一个用户!'
,
});
chooseUserToStation
({
userList
:
String
(
result
.
flat
()),
stationID
:
currentStation
,
})
.
then
(
res
=>
{
handleShowModal
(
'btnLoading'
,
false
);
if
(
res
.
code
===
0
)
{
setSelectList
([]);
setUpdateCheck
(
updateCheck
+
1
);
notification
.
success
({
message
:
'提示'
,
duration
:
3
,
description
:
'设置成功'
,
});
}
else
{
n
=
val
;
notification
.
error
({
message
:
'提示'
,
duration
:
15
,
description
:
res
.
message
,
});
}
console
.
log
(
n
)
return
<
div
dangerouslySetInnerHTML=
{
{
__html
:
n
}
}
/>;
};
})
.
catch
(
err
=>
{
handleShowModal
(
'btnLoading'
,
false
);
console
.
log
(
err
);
});
};
// 分页
const
handleChangePage
=
(
pageNum
,
pageSize
)
=>
{
setPage
({
pageNum
,
pageSize
});
setUpdatePageUser
(
updatePageUser
+
1
);
};
/** ***操作按钮**** */
// 机构操作
const
addTopStation
=
()
=>
{
handleShowModal
(
'modalVisible'
,
true
);
};
// 模糊查询匹配的样式
const
searchStyle
=
val
=>
{
console
.
log
(
showSearchStyle
);
console
.
log
(
name
);
let
n
;
if
(
showSearchStyle
)
{
n
=
val
.
replace
(
new
RegExp
(
name
,
'g'
),
`<span style='color:red'>
${
name
}
</span>`
,
);
}
else
{
n
=
val
;
}
console
.
log
(
n
);
return
<
div
dangerouslySetInnerHTML=
{
{
__html
:
n
}
}
/>;
};
const
Panels
=
React
.
memo
(
props
=>
{
let
{
index
,
GroupId
,
GroupName
,
Users
,
isChecked
,
isShow
,
color
}
=
props
;
return
(
<
div
className=
{
styles
.
sitePanel
}
key=
{
GroupId
}
id=
{
`siteId${GroupId}`
}
>
{
/* onClick={() => props.handleChangeCollpase(GroupId, isShow)} */
}
<
div
className=
{
styles
.
sitePanelHead
}
>
{
/* {isShow ? (
const
Panels
=
React
.
memo
(
props
=>
{
let
{
index
,
GroupId
,
GroupName
,
Users
,
isChecked
,
isShow
,
color
}
=
props
;
return
(
<
div
className=
{
styles
.
sitePanel
}
key=
{
GroupId
}
id=
{
`siteId${GroupId}`
}
>
{
/* onClick={() => props.handleChangeCollpase(GroupId, isShow)} */
}
<
div
className=
{
styles
.
sitePanelHead
}
>
{
/* {isShow ? (
<UpOutlined className={styles.siteIcon} />
) : (
<DownOutlined className={styles.siteIcon} />
)} */
}
{
/* <UpOutlined className={styles.siteIcon} /> */
}
<
ApartmentOutlined
className=
{
styles
.
siteIcon
}
/>
{
searchStyle
(
GroupName
)
}
<
Checkbox
key=
"0"
className=
{
styles
.
siteListTitle
}
checked=
{
isChecked
}
onClick=
{
e
=>
props
.
handleChangeAll
(
e
,
index
)
}
>
全选
</
Checkbox
>
</
div
>
<
div
className=
{
styles
.
sitePanelCon
}
>
{
Users
.
length
>
0
&&
Users
.
map
((
v
,
vIndex
)
=>
(
<
CheckBoxRow
{
...
v
}
index=
{
index
}
vIndex=
{
vIndex
}
key=
{
v
.
userID
}
handleChangeSignel=
{
props
.
handleChangeSignel
}
/>
{
/* <UpOutlined className={styles.siteIcon} /> */
}
<
ApartmentOutlined
className=
{
styles
.
siteIcon
}
/>
{
searchStyle
(
GroupName
)
}
<
Checkbox
key=
"0"
className=
{
styles
.
siteListTitle
}
checked=
{
isChecked
}
onClick=
{
e
=>
props
.
handleChangeAll
(
e
,
index
)
}
>
全选
</
Checkbox
>
</
div
>
<
div
className=
{
styles
.
sitePanelCon
}
>
{
Users
.
length
>
0
&&
Users
.
map
((
v
,
vIndex
)
=>
(
<
CheckBoxRow
{
...
v
}
index=
{
index
}
vIndex=
{
vIndex
}
key=
{
v
.
userID
}
handleChangeSignel=
{
props
.
handleChangeSignel
}
/>
))
}
</
div
>
</
div
>
);
});
return
(
<
PageContainer
className=
{
styles
.
siteManageContainer
}
>
<
div
className=
{
styles
.
contentContainer
}
>
<
Card
className=
{
classnames
({
[
styles
.
orgContainer
]:
true
,
[
styles
.
orgContainerHide
]:
!
treeVisible
,
})
}
>
<
span
style=
{
{
margin
:
'0 180px 0 10px'
}
}
>
站点列表
</
span
>
<
Tooltip
title=
"添加顶级站点"
>
<
PlusOutlined
onClick=
{
()
=>
addTopStation
()
}
style=
{
{
color
:
'#1890FF'
,
fontSize
:
'18px'
,
verticalAlign
:
'0.04em'
,
}
}
/>
</
Tooltip
>
{
treeData
.
length
>
0
&&
(
<
Tree
showIcon=
"true"
showLine=
{
{
showLeafIcon
:
false
}
}
blockNode
autoExpandParent
selectedKeys=
{
[
currentStation
]
}
onSelect=
{
onSelect
}
height=
{
treeData
.
length
&&
treeData
.
length
>
30
?
treeData
.
length
*
14
:
780
}
treeData=
{
treeData
.
map
(
t
=>
mapTree
(
t
))
}
/>
)
}
<
div
className=
{
styles
.
switcher
}
>
{
treeVisible
&&
(
<
Tooltip
title=
"隐藏站点列表"
>
<
DoubleLeftOutlined
onClick=
{
()
=>
setTreeVisible
(
false
)
}
/>
</
Tooltip
>
)
}
{
!
treeVisible
&&
(
<
Tooltip
title=
"显示站点列表"
>
<
DoubleRightOutlined
onClick=
{
()
=>
setTreeVisible
(
true
)
}
/>
</
Tooltip
>
)
}
</
div
>
</
Card
>
{
/* 右侧用户表 */
}
<
div
className=
{
classnames
({
[
styles
.
userContainer
]:
true
,
[
styles
.
userContainerHide
]:
!
treeVisible
,
})
}
>
<
AddModal
visible=
{
visibleParams
.
modalVisible
}
onCancel=
{
()
=>
handleShowModal
(
'modalVisible'
,
false
)
}
confirmModal=
{
confirmModal
}
/>
<
AddChildModal
visible=
{
visibleParams
.
addChildVisible
}
pid=
{
currentStation
}
onCancel=
{
()
=>
handleShowModal
(
'addChildVisible'
,
false
)
}
confirmModal=
{
addChildModal
}
/>
<
DelModal
visible=
{
visibleParams
.
delVisible
}
stationId=
{
currentStation
}
onCancel=
{
()
=>
handleShowModal
(
'delVisible'
,
false
)
}
confirmModal=
{
delModal
}
/>
<
EditModal
visible=
{
visibleParams
.
editVisible
}
stationObj=
{
currentStationMsg
}
des=
{
des
}
onCancel=
{
()
=>
handleShowModal
(
'editVisible'
,
false
)
}
confirmModal=
{
editModal
}
/>
<
div
className=
{
classnames
({
[
styles
.
boxR
]:
true
,
[
styles
.
boxH
]:
treeVisible
,
})
}
>
<
Card
className=
{
classnames
({
[
styles
.
cardBoxTop
]:
true
,
[
styles
.
boxH
]:
treeVisible
,
})
}
>
<
Row
align=
"middle"
>
<
Col
span=
{
1
}
>
搜索
</
Col
>
<
Col
span=
{
8
}
>
<
Search
allowClear
placeholder=
{
placeholder
}
onSearch=
{
handleSearch
}
// onChange={handleChange}
enterButton
/>
</
Col
>
<
Col
span=
{
3
}
/>
</
Row
>
</
Card
>
<
div
style=
{
{
background
:
'#fff'
}
}
>
<
Card
className=
{
classnames
({
[
styles
.
boxH
]:
treeVisible
,
[
styles
.
cardBoxR
]:
true
,
})
}
>
{
/* <Checkbox className={styles.siteAll}>全选/反选</Checkbox> */
}
{
dataList
.
length
>
0
&&
!
visibleParams
.
loading
?
(
<>
<
p
className=
{
styles
.
siteline
}
>
已选择列表:
</
p
>
<
div
className=
{
styles
.
siteSelectList
}
>
<
ul
className=
{
styles
.
siteSelectUl
}
>
{
selectList
.
map
((
item
,
index
)
=>
(
<
li
key=
{
`${item.userName}${item.GroupId}${index}`
}
onClick=
{
()
=>
handleDel
(
index
)
}
>
{
`${item.userName}(${item.GroupName})`
}
</
li
>
))
}
</
div
>
</
div
>
);
});
return
(
<
PageContainer
className=
{
styles
.
siteManageContainer
}
>
<
div
className=
{
styles
.
contentContainer
}
>
<
Card
className=
{
classnames
({
[
styles
.
orgContainer
]:
true
,
[
styles
.
orgContainerHide
]:
!
treeVisible
,
})
}
>
<
span
style=
{
{
margin
:
'0 180px 0 10px'
}
}
>
站点列表
</
span
>
<
Tooltip
title=
"添加顶级站点"
>
<
PlusOutlined
onClick=
{
()
=>
addTopStation
()
}
style=
{
{
color
:
'#1890FF'
,
fontSize
:
'18px'
,
verticalAlign
:
'0.04em'
,
}
}
/>
</
Tooltip
>
{
treeData
.
length
>
0
&&
(
<
Tree
showIcon=
"true"
showLine=
{
{
showLeafIcon
:
false
}
}
blockNode
autoExpandParent
selectedKeys=
{
[
currentStation
]
}
onSelect=
{
onSelect
}
height=
{
treeData
.
length
&&
treeData
.
length
>
30
?
treeData
.
length
*
14
:
780
}
treeData=
{
treeData
.
map
(
t
=>
mapTree
(
t
))
}
/>
)
}
<
div
className=
{
styles
.
switcher
}
>
{
treeVisible
&&
(
<
Tooltip
title=
"隐藏站点列表"
>
<
DoubleLeftOutlined
onClick=
{
()
=>
setTreeVisible
(
false
)
}
/>
</
Tooltip
>
)
}
{
!
treeVisible
&&
(
<
Tooltip
title=
"显示站点列表"
>
<
DoubleRightOutlined
onClick=
{
()
=>
setTreeVisible
(
true
)
}
/>
</
Tooltip
>
)
}
</
ul
>
</
div
>
</
Card
>
{
/* 右侧用户表 */
}
<
div
className=
{
classnames
({
[
styles
.
userContainer
]:
true
,
[
styles
.
userContainerHide
]:
!
treeVisible
,
})
}
>
<
AddModal
visible=
{
visibleParams
.
modalVisible
}
onCancel=
{
()
=>
handleShowModal
(
'modalVisible'
,
false
)
}
confirmModal=
{
confirmModal
}
/>
<
AddChildModal
visible=
{
visibleParams
.
addChildVisible
}
pid=
{
currentStation
}
onCancel=
{
()
=>
handleShowModal
(
'addChildVisible'
,
false
)
}
confirmModal=
{
addChildModal
}
/>
<
DelModal
visible=
{
visibleParams
.
delVisible
}
stationId=
{
currentStation
}
onCancel=
{
()
=>
handleShowModal
(
'delVisible'
,
false
)
}
confirmModal=
{
delModal
}
/>
<
EditModal
visible=
{
visibleParams
.
editVisible
}
stationObj=
{
currentStationMsg
}
des=
{
des
}
onCancel=
{
()
=>
handleShowModal
(
'editVisible'
,
false
)
}
confirmModal=
{
editModal
}
</>
)
:
(
<
Empty
image=
{
Empty
.
PRESENTED_IMAGE_SIMPLE
}
/>
)
}
<
Spin
spinning=
{
visibleParams
.
loading
}
>
{
dataList
.
map
((
item
,
index
)
=>
(
<
Panels
{
...
item
}
index=
{
index
}
key=
{
item
.
GroupId
}
handleChangeCollpase=
{
handleChangeCollpase
}
handleChangeAll=
{
handleChangeAll
}
handleChangeSignel=
{
handleChangeSignel
}
/>
<
div
className=
{
classnames
({
[
styles
.
boxR
]:
true
,
[
styles
.
boxH
]:
treeVisible
,
})
}
>
<
Card
className=
{
classnames
({
[
styles
.
cardBoxTop
]:
true
,
[
styles
.
boxH
]:
treeVisible
,
})
}
>
<
Row
align=
"middle"
>
<
Col
span=
{
1
}
>
搜索
</
Col
>
<
Col
span=
{
8
}
>
<
Search
allowClear
placeholder=
{
placeholder
}
onSearch=
{
handleSearch
}
// onChange={handleChange}
enterButton
/>
</
Col
>
<
Col
span=
{
3
}
/>
</
Row
>
</
Card
>
<
div
style=
{
{
background
:
'#fff'
}
}
>
<
Card
className=
{
classnames
({
[
styles
.
boxH
]:
treeVisible
,
[
styles
.
cardBoxR
]:
true
,
})
}
>
{
/* <Checkbox className={styles.siteAll}>全选/反选</Checkbox> */
}
{
dataList
.
length
>
0
&&
!
visibleParams
.
loading
?
(
<>
<
p
className=
{
styles
.
siteline
}
>
已选择列表:
</
p
>
<
div
className=
{
styles
.
siteSelectList
}
>
<
ul
className=
{
styles
.
siteSelectUl
}
>
{
selectList
.
map
((
item
,
index
)
=>
(
<
li
key=
{
`${item.userName}${item.GroupId}${index}`
}
onClick=
{
()
=>
handleDel
(
index
)
}
>
{
`${item.userName}(${item.GroupName})`
}
</
li
>
))
}
</
ul
>
</
div
>
</>
)
:
(
<
Empty
image=
{
Empty
.
PRESENTED_IMAGE_SIMPLE
}
/>
)
}
<
Spin
spinning=
{
visibleParams
.
loading
}
>
{
dataList
.
map
((
item
,
index
)
=>
(
<
Panels
{
...
item
}
index=
{
index
}
key=
{
item
.
GroupId
}
handleChangeCollpase=
{
handleChangeCollpase
}
handleChangeAll=
{
handleChangeAll
}
handleChangeSignel=
{
handleChangeSignel
}
/>
))
}
</
Spin
>
</
Card
>
{
dataList
.
length
>
0
&&
!
visibleParams
.
loading
?
(
<
div
style=
{
{
textAlign
:
'right'
}
}
>
<
Pagination
size=
"small"
total=
{
total
}
current=
{
page
.
pageNum
}
defaultPageSize=
"10"
onChange=
{
handleChangePage
}
pageSizeOptions=
{
[
'10'
]
}
/>
</
div
>)
:
''
}
<
div
className=
{
styles
.
siteBtn
}
>
<
Button
type=
"primary"
className=
{
styles
.
siteCommit
}
onClick=
{
handleCommitBtn
}
>
提交
</
Button
>
</
div
>
</
div
>
</
div
>
))
}
</
Spin
>
</
Card
>
{
dataList
.
length
>
0
&&
!
visibleParams
.
loading
?
(
<
div
style=
{
{
textAlign
:
'right'
}
}
>
<
Pagination
size=
"small"
total=
{
total
}
current=
{
page
.
pageNum
}
defaultPageSize=
"10"
onChange=
{
handleChangePage
}
pageSizeOptions=
{
[
'10'
]
}
/>
</
div
>
)
:
(
''
)
}
<
div
className=
{
styles
.
siteBtn
}
>
<
Button
type=
"primary"
className=
{
styles
.
siteCommit
}
onClick=
{
handleCommitBtn
}
>
提交
</
Button
>
</
div
>
</
div
>
</
PageContainer
>
)
}
</
div
>
</
div
>
</
div
>
</
PageContainer
>
);
};
const
CheckBoxRow
=
React
.
memo
(
props
=>
{
let
{
vIndex
,
index
,
isChecked
,
userName
}
=
props
;
return
(
<
Checkbox
className=
{
styles
.
siteList
}
checked=
{
isChecked
}
onClick=
{
e
=>
props
.
handleChangeSignel
(
e
,
index
,
vIndex
)
}
>
{
userName
}
</
Checkbox
>
);
let
{
vIndex
,
index
,
isChecked
,
userName
}
=
props
;
return
(
<
Checkbox
className=
{
styles
.
siteList
}
checked=
{
isChecked
}
onClick=
{
e
=>
props
.
handleChangeSignel
(
e
,
index
,
vIndex
)
}
>
{
userName
}
</
Checkbox
>
);
});
export
default
SiteManageV2
;
\ No newline at end of file
export
default
SiteManageV2
;
src/services/platform/messagemanage.jsx
View file @
9658e275
import
{
get
,
post
,
PUBLISH_SERVICE
,
CITY_SERVICE
}
from
'@/services/index'
;
//模板管理接口
//
模板管理接口
export
const
GetMessageTemplate
=
param
=>
get
(
`
${
PUBLISH_SERVICE
}
/MessageConfig/GetMessageTemplate`
,
param
);
get
(
`
${
PUBLISH_SERVICE
}
/MessageConfig/GetMessageTemplate`
,
param
);
export
const
InsertMessageTemplate
=
param
=>
post
(
`
${
PUBLISH_SERVICE
}
/MessageConfig/InsertMessageTemplate`
,
param
);
post
(
`
${
PUBLISH_SERVICE
}
/MessageConfig/InsertMessageTemplate`
,
param
);
export
const
UpdateMessageTemplate
=
param
=>
post
(
`
${
PUBLISH_SERVICE
}
/MessageConfig/UpdateMessageTemplate`
,
param
);
post
(
`
${
PUBLISH_SERVICE
}
/MessageConfig/UpdateMessageTemplate`
,
param
);
export
const
DeleteMessageTemplate
=
param
=>
get
(
`
${
PUBLISH_SERVICE
}
/MessageConfig/DeleteMessageTemplate`
,
param
);
get
(
`
${
PUBLISH_SERVICE
}
/MessageConfig/DeleteMessageTemplate`
,
param
);
export
const
GetThirdpartyTemplates
=
param
=>
get
(
`
${
PUBLISH_SERVICE
}
/MessageConfig/GetThirdpartyTemplates`
,
param
);
//方案管理接口
get
(
`
${
PUBLISH_SERVICE
}
/MessageConfig/GetThirdpartyTemplates`
,
param
);
//
方案管理接口
export
const
GetMessageConfigList
=
param
=>
get
(
`
${
PUBLISH_SERVICE
}
/MessageConfig/GetMessageConfigList`
,
param
);
get
(
`
${
PUBLISH_SERVICE
}
/MessageConfig/GetMessageConfigList`
,
param
);
export
const
InsertMessageConfig
=
param
=>
post
(
`
${
PUBLISH_SERVICE
}
/MessageConfig/InsertMessageConfig`
,
param
);
post
(
`
${
PUBLISH_SERVICE
}
/MessageConfig/InsertMessageConfig`
,
param
);
export
const
UpdateMessageConfig
=
param
=>
post
(
`
${
PUBLISH_SERVICE
}
/MessageConfig/UpdateMessageConfig`
,
param
);
post
(
`
${
PUBLISH_SERVICE
}
/MessageConfig/UpdateMessageConfig`
,
param
);
export
const
DeleteMessageConfig
=
param
=>
get
(
`
${
PUBLISH_SERVICE
}
/MessageConfig/DeleteMessageConfig`
,
param
);
get
(
`
${
PUBLISH_SERVICE
}
/MessageConfig/DeleteMessageConfig`
,
param
);
export
const
GetMessageVersion
=
param
=>
get
(
`
${
PUBLISH_SERVICE
}
/MessageConfig/GetMessageVersion`
,
param
);
get
(
`
${
PUBLISH_SERVICE
}
/MessageConfig/GetMessageVersion`
,
param
);
export
const
GetMsgTypeList
=
param
=>
get
(
`
${
PUBLISH_SERVICE
}
/MessageConfig/GetMsgTypeList`
,
param
);
get
(
`
${
PUBLISH_SERVICE
}
/MessageConfig/GetMsgTypeList`
,
param
);
export
const
TestPush
=
param
=>
ge
t
(
`
${
PUBLISH_SERVICE
}
/MessageConfig/TestPush`
,
param
);
pos
t
(
`
${
PUBLISH_SERVICE
}
/MessageConfig/TestPush`
,
param
);
export
const
AddIISAgentConfig
=
param
=>
post
(
`
${
PUBLISH_SERVICE
}
/MessageConfig/AddIISAgentConfig`
,
param
);
post
(
`
${
PUBLISH_SERVICE
}
/MessageConfig/AddIISAgentConfig`
,
param
);
export
const
DeleteIISAgentConfig
=
param
=>
get
(
`
${
PUBLISH_SERVICE
}
/MessageConfig/DeleteIISAgentConfig`
,
param
);
get
(
`
${
PUBLISH_SERVICE
}
/MessageConfig/DeleteIISAgentConfig`
,
param
);
export
const
GetIISAgentConfig
=
param
=>
get
(
`
${
PUBLISH_SERVICE
}
/MessageConfig/GetIISAgentConfig`
,
param
);
//组件接口
get
(
`
${
PUBLISH_SERVICE
}
/MessageConfig/GetIISAgentConfig`
,
param
);
//
组件接口
export
const
RoleGroupList
=
param
=>
get
(
`
${
PUBLISH_SERVICE
}
/UserCenter/RoleGroupList`
,
param
);
get
(
`
${
PUBLISH_SERVICE
}
/UserCenter/RoleGroupList`
,
param
);
export
const
GetGroupUserTree
=
param
=>
get
(
`
${
PUBLISH_SERVICE
}
/UserCenter/GetGroupUserTree`
,
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