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
787a7bda
Commit
787a7bda
authored
Sep 23, 2021
by
皮倩雯
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
宿主管理增加域名端口验证,连接状态显示,界面优化
parent
0bf2a783
Pipeline
#35121
skipped with stages
Changes
13
Pipelines
1
Hide whitespace changes
Inline
Side-by-side
Showing
13 changed files
with
756 additions
and
115 deletions
+756
-115
正确.svg
src/assets/images/icons/正确.svg
+16
-0
AddModal.jsx
src/pages/platformCenter/bsmanager/maintenance/AddModal.jsx
+287
-0
maintenance.jsx
...ages/platformCenter/bsmanager/maintenance/maintenance.jsx
+215
-0
maintenance.less
...ges/platformCenter/bsmanager/maintenance/maintenance.less
+59
-0
AddModal.jsx
src/pages/platformCenter/bsmanager/workOrder/AddModal.jsx
+1
-1
incident.jsx
src/pages/platformCenter/bsmanager/workOrder/incident.jsx
+1
-1
IotConfig.jsx
src/pages/platformCenter/hostmanager/IotConfig/IotConfig.jsx
+123
-75
IotConfig.less
...pages/platformCenter/hostmanager/IotConfig/IotConfig.less
+2
-0
BaseConfig.jsx
...ages/platformCenter/hostmanager/baseConfig/BaseConfig.jsx
+12
-12
messageConfig.jsx
...latformCenter/hostmanager/messageConfig/messageConfig.jsx
+10
-7
ProxyConfig.jsx
...es/platformCenter/hostmanager/proxyConfig/ProxyConfig.jsx
+19
-17
ProxyConfig.less
...s/platformCenter/hostmanager/proxyConfig/ProxyConfig.less
+5
-2
config.js
src/routes/config.js
+6
-0
No files found.
src/assets/images/icons/正确.svg
0 → 100644
View file @
787a7bda
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 25.3.1, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg
version=
"1.1"
id=
"图层_1"
xmlns=
"http://www.w3.org/2000/svg"
xmlns:xlink=
"http://www.w3.org/1999/xlink"
x=
"0px"
y=
"0px"
viewBox=
"0 0 14 14"
style=
"enable-background:new 0 0 14 14;"
xml:space=
"preserve"
>
<style
type=
"text/css"
>
.st0{fill:#27DA99;}
</style>
<g>
<g>
<path
class=
"st0"
d=
"M7,0C5.143,0,3.363,0.738,2.05,2.05C0.738,3.363,0,5.143,0,7c0,3.866,3.134,7,7,7c3.866,0,7-3.134,7-7
C14,3.134,10.866,0,7,0L7,0z M10.443,5.285L7.151,9.726c-0.229,0.31-0.761,0.532-1.139,0.271L3.645,8.363
c-0.361-0.25-0.551-0.648-0.3-1.037c0.208-0.324,0.778-0.522,1.141-0.271L6.232,8.26c0.924-1.247,1.847-2.493,2.771-3.739
C9.599,3.716,11.045,4.473,10.443,5.285L10.443,5.285z M10.443,5.285"
/>
</g>
</g>
</svg>
src/pages/platformCenter/bsmanager/maintenance/AddModal.jsx
0 → 100644
View file @
787a7bda
import
React
,
{
useState
,
useEffect
}
from
'react'
;
import
{
Modal
,
Form
,
Input
,
notification
,
message
,
Row
,
Col
,
Select
,
Checkbox
,
Radio
,
Button
,
Dropdown
,
Menu
}
from
'antd'
;
import
styles
from
'./maintenance.less'
import
{
PlusOutlined
,
DownOutlined
}
from
'@ant-design/icons'
const
{
Option
}
=
Select
;
const
AddModal
=
props
=>
{
const
[
inputValue
,
setInputValue
]
=
useState
({
feedbackName
:
''
,
doRole
:
''
});
const
{
callBackSubmit
=
()
=>
{
},
visible
,
type
,
formObj
}
=
props
;
const
[
Type1
,
setType1
]
=
useState
(
''
)
const
[
Type2
,
setType2
]
=
useState
(
''
)
const
[
selectValue
,
SetSelectValue
]
=
useState
(
''
)
const
[
selectValue1
,
SetSelectValue1
]
=
useState
(
''
)
const
[
form
]
=
Form
.
useForm
();
const
{
Item
}
=
Form
;
const
{
TextArea
}
=
Input
;
const
onSubmit
=
()
=>
{
}
const
inputType1
=
e
=>
{
}
const
inputType2
=
e
=>
{
}
const
changeText
=
(
e
,
type
)
=>
{
}
const
pickFiled
=
(
fileds
)
=>
{
}
const
changTable
=
value
=>
{
setSelectValue
(
value
)
}
const
changTable1
=
value
=>
{
setSelectValue1
(
value
)
}
return
(
<
Modal
title=
'巡维保计划配置'
visible=
{
visible
}
maskClosable=
{
false
}
width=
"800px"
destroyOnClose
okText=
"确认"
cancelText=
"取消"
{
...
props
}
onOk=
{
()
=>
onSubmit
()
}
>
<
Form
form=
{
form
}
labelCol=
{
{
span
:
7
}
}
style=
{
{
height
:
'33rem'
,
overflowY
:
'scroll'
}
}
>
<
Row
>
<
Col
span=
{
23
}
>
<
Item
label=
"业务名称"
name=
"BusinessName"
labelCol=
{
{
span
:
4
}
}
rules=
{
[
{
required
:
true
,
message
:
'请输入业务名称'
,
},
]
}
>
<
Input
style=
{
{
width
:
'580px'
}
}
placeholder=
"请输入业务名称"
/>
</
Item
>
</
Col
>
<
Col
span=
{
23
}
>
<
span
style=
{
{
position
:
'absolute'
,
left
:
'5.5%'
,
top
:
'9%'
,
color
:
'red'
,
fontSize
:
'16px'
}
}
>
*
</
span
>
<
Item
label=
"业务类型"
name=
"BusinessType"
labelCol=
{
{
span
:
4
}
}
rules=
{
[
{
validator
:
(
rule
,
value
)
=>
{
if
(
form
.
getFieldsValue
().
BusinessType
==
''
)
{
return
Promise
.
reject
(
'业务类型必填'
)
}
return
Promise
.
resolve
();
}
}
]
}
>
<
div
>
<
Input
className=
"ue-editable-select-input"
style=
{
{
width
:
'580px'
}
}
onChange=
{
inputType1
}
value=
{
Type1
}
>
</
Input
>
<
Dropdown
placement=
'bottomRight'
style=
{
{
width
:
'20rem'
}
}
overlay=
{
<
Menu
>
<
Menu
.
Item
key=
"巡检"
onClick=
{
()
=>
{
setType1
(
"巡检"
);
form
.
setFieldsValue
({
BusinessType
:
"巡检"
})
}
}
style=
{
{
width
:
'580px'
,
marginLeft
:
'-8px'
}
}
>
巡检
</
Menu
.
Item
>
<
Menu
.
Item
key=
"保养"
onClick=
{
()
=>
{
setType1
(
"保养"
);
form
.
setFieldsValue
({
BusinessType
:
"保养"
})
}
}
style=
{
{
width
:
'580px'
,
marginLeft
:
'-8px'
}
}
>
保养
</
Menu
.
Item
>
</
Menu
>
}
>
<
div
className=
{
styles
.
linkDrowp
}
onClick=
{
e
=>
e
.
preventDefault
()
}
>
<
DownOutlined
style=
{
{
fontSize
:
'12px'
,
color
:
'rgba(0, 0, 0, 0.25)'
}
}
/>
</
div
>
</
Dropdown
>
</
div
>
</
Item
>
</
Col
>
<
Col
span=
{
23
}
>
<
Item
label=
"执行周期"
name=
"docycle"
labelCol=
{
{
span
:
4
}
}
rules=
{
[
{
required
:
true
,
message
:
'请选择执行周期'
,
},
]
}
>
<
Select
style=
{
{
width
:
'580px'
}
}
placeholder=
"选择执行周期"
onChange=
{
changTable
}
value=
{
selectValue
}
>
<
Option
value=
"一周一次"
>
一周一次
</
Option
>
<
Option
value=
"半月一次"
>
半月一次
</
Option
>
<
Option
value=
"一月一次"
>
一月一次
</
Option
>
<
Option
value=
"季度一次"
>
季度一次
</
Option
>
<
Option
value=
"半年一次"
>
半年一次
</
Option
>
<
Option
value=
"一年一次"
>
一年一次
</
Option
>
</
Select
>
</
Item
>
</
Col
>
<
Col
span=
{
23
}
>
<
span
style=
{
{
position
:
'absolute'
,
left
:
'5.5%'
,
top
:
'9%'
,
color
:
'red'
,
fontSize
:
'16px'
}
}
>
*
</
span
>
<
Item
label=
"台账名称"
name=
"accountName"
labelCol=
{
{
span
:
4
}
}
rules=
{
[
{
validator
:
(
rule
,
value
)
=>
{
if
(
form
.
getFieldsValue
().
accountName
==
''
)
{
return
Promise
.
reject
(
'台账名称必选'
)
}
return
Promise
.
resolve
();
}
}
]
}
>
<
div
>
<
Input
className=
"ue-editable-select-input"
style=
{
{
width
:
'580px'
}
}
onChange=
{
inputType2
}
value=
{
Type2
}
>
</
Input
>
{
/* <Dropdown
placement='bottomRight'
style={{ width: '20rem' }}
overlay={<Menu>
{treeData.length ? treeData.map((item, index) => { return <Menu.Item onClick={() => { setType2(item); form.setFieldsValue({ accountName: item }) }} style={{ width: '580px', marginLeft: '-8px' }} key={index}>{item}</Menu.Item> }) : ''}
</Menu>} >
<div className={styles.linkDrowp} onClick={e => e.preventDefault()}>
<DownOutlined style={{ fontSize: '12px', color: 'rgba(0, 0, 0, 0.25)' }} />
</div>
</Dropdown> */
}
</
div
>
</
Item
>
</
Col
>
<
Col
span=
{
23
}
>
<
span
style=
{
{
position
:
'absolute'
,
left
:
'5.5%'
,
top
:
'9%'
,
color
:
'red'
,
fontSize
:
'16px'
}
}
>
*
</
span
>
<
Item
label=
"反馈名称"
name=
"feedbackName"
labelCol=
{
{
span
:
4
}
}
rules=
{
[
{
validator
:
(
rule
,
value
)
=>
{
if
(
inputValue
.
feedbackName
==
""
)
{
return
Promise
.
reject
(
'反馈名称必填'
)
}
return
Promise
.
resolve
();
}
}
]
}
>
<
div
className=
{
styles
.
filed_listItem
}
>
<
Input
style=
{
{
width
:
'508px'
}
}
placeholder=
"请选择反馈名称"
onChange=
{
(
e
)
=>
changeText
(
e
,
'feedbackName'
)
}
value=
{
inputValue
.
feedbackName
}
allowClear
/>
<
Button
type=
"dashed"
onClick=
{
()
=>
pickFiled
(
'feedbackName'
)
}
icon=
{
<
PlusOutlined
/>
}
style=
{
{
marginLeft
:
'0.5rem'
,
width
:
'4rem'
}
}
/>
</
div
>
</
Item
>
</
Col
>
<
Col
span=
{
23
}
>
<
span
style=
{
{
position
:
'absolute'
,
left
:
'5.5%'
,
top
:
'9%'
,
color
:
'red'
,
fontSize
:
'16px'
}
}
>
*
</
span
>
<
Item
label=
"执行角色"
name=
"doRole"
labelCol=
{
{
span
:
4
}
}
rules=
{
[
{
validator
:
(
rule
,
value
)
=>
{
if
(
inputValue
.
doRole
==
""
)
{
return
Promise
.
reject
(
'执行角色必填'
)
}
return
Promise
.
resolve
();
}
},
]
}
>
<
div
className=
{
styles
.
filed_listItem
}
>
<
Input
style=
{
{
width
:
'508px'
}
}
placeholder=
"请选择执行角色"
onChange=
{
(
e
)
=>
changeText
(
e
,
'doRole'
)
}
value=
{
inputValue
.
doRole
}
allowClear
/>
<
Button
type=
"dashed"
onClick=
{
()
=>
pickFiled
(
'doRole'
)
}
icon=
{
<
PlusOutlined
/>
}
style=
{
{
marginLeft
:
'0.5rem'
,
width
:
'4rem'
}
}
/>
</
div
>
</
Item
>
</
Col
>
<
Col
span=
{
13
}
>
<
Item
label=
"预生成天数"
name=
"produceDays"
rules=
{
[
{
required
:
true
,
message
:
'请输入预生成天数'
,
},
]
}
>
<
Input
style=
{
{
width
:
'14rem'
}
}
placeholder=
"请输入预生成天数"
/>
</
Item
>
</
Col
>
<
Col
span=
{
11
}
>
<
Item
label=
"在线任务量"
name=
"onLines"
rules=
{
[
{
required
:
true
,
message
:
'请输入在线任务量'
,
},
]
}
>
<
Input
style=
{
{
width
:
'12rem'
}
}
placeholder=
"请输入在线任务量"
/>
</
Item
>
</
Col
>
<
Col
span=
{
23
}
>
<
Item
label=
"是否送审"
name=
"isSubmit"
labelCol=
{
{
span
:
4
}
}
rules=
{
[
{
required
:
true
,
message
:
'请选择是否送审'
,
},
]
}
>
<
Select
style=
{
{
width
:
'580px'
}
}
placeholder=
"选择是否送审"
onChange=
{
changTable1
}
value=
{
selectValue1
}
>
<
Option
value=
"否"
>
否
</
Option
>
<
Option
value=
"是"
>
是
</
Option
>
</
Select
>
</
Item
>
</
Col
>
<
Col
span=
{
23
}
>
<
Item
label=
"台账过滤条件"
name=
"filterCondition"
labelCol=
{
{
span
:
4
}
}
>
<
TextArea
style=
{
{
width
:
'580px'
}
}
placeholder=
"请输入台账过滤条件"
/>
</
Item
>
</
Col
>
</
Row
>
</
Form
>
</
Modal
>
)
};
export
default
AddModal
\ No newline at end of file
src/pages/platformCenter/bsmanager/maintenance/maintenance.jsx
0 → 100644
View file @
787a7bda
import
React
,
{
useState
,
useEffect
}
from
'react'
;
import
styles
from
'./maintenance.less'
import
{
Form
,
Card
,
Space
,
Table
,
Popconfirm
,
Spin
,
Tooltip
,
notification
,
Tree
,
Button
,
}
from
'antd'
;
import
{
DoubleLeftOutlined
,
DoubleRightOutlined
,
PlusSquareFilled
,
RightOutlined
,
EditTwoTone
,
DeleteOutlined
,
OrderedListOutlined
,
ApartmentOutlined
,
DesktopOutlined
,
PlusOutlined
}
from
'@ant-design/icons'
;
import
AddModal
from
'./AddModal'
const
maintenance
=
()
=>
{
const
[
addVisible
,
setAddVisible
]
=
useState
(
false
)
const
[
type
,
setType
]
=
useState
(
''
)
const
[
formObj
,
setFormObj
]
=
useState
(
''
)
const
[
tableData
,
setTableData
]
=
useState
([])
const
columns
=
[
{
title
:
'业务名称'
,
dataIndex
:
'businessName'
,
key
:
'businessName'
,
width
:
100
,
align
:
'center'
,
},
{
title
:
'业务类型'
,
dataIndex
:
'businessType'
,
key
:
'businessType'
,
width
:
100
,
ellipsis
:
true
,
align
:
'center'
,
},
{
title
:
'执行周期'
,
dataIndex
:
'docycle'
,
key
:
'docycle'
,
width
:
100
,
align
:
'center'
,
},
{
title
:
'台账名称'
,
dataIndex
:
'accountName'
,
key
:
'accountName'
,
width
:
200
,
ellipsis
:
true
,
align
:
'center'
,
},
{
title
:
'反馈名称'
,
dataIndex
:
'feedbackName'
,
key
:
'feedbackName'
,
width
:
200
,
align
:
'center'
,
},
{
title
:
'台账过滤条件'
,
dataIndex
:
'filterCondition'
,
key
:
'filterCondition'
,
width
:
200
,
ellipsis
:
true
,
align
:
'center'
,
},
{
title
:
'是否送审'
,
dataIndex
:
'isSubmit'
,
key
:
'isSubmit'
,
width
:
100
,
align
:
'center'
,
},
{
title
:
'执行角色'
,
dataIndex
:
'doRole'
,
key
:
'doRole'
,
width
:
200
,
ellipsis
:
true
,
align
:
'center'
,
},
{
title
:
'预生成天数'
,
dataIndex
:
'produceDays'
,
key
:
'produceDays'
,
width
:
100
,
align
:
'center'
,
},
{
title
:
'在线任务量'
,
dataIndex
:
'onLines'
,
key
:
'onLines'
,
width
:
100
,
ellipsis
:
true
,
align
:
'center'
,
},
{
title
:
'启停'
,
dataIndex
:
'doNot'
,
key
:
'doNot'
,
width
:
100
,
align
:
'center'
,
},
{
title
:
'操作'
,
key
:
'action'
,
align
:
'center'
,
rener
:
record
=>
{
<
Space
size
=
"middle"
>
<
Tooltip
title=
"修改"
>
<
EditTwoTone
onClick=
{
()
=>
editEventType
(
record
)
}
style=
{
{
fontSize
:
'16px'
}
}
/>
</
Tooltip
>
<
Tooltip
title=
"删除"
>
<
Popconfirm
placement=
"bottomRight"
title=
{
<
p
>
是否确认删除?
</
p
>
}
okText=
"确认"
cancelText=
"取消"
onConfirm=
{
()
=>
deleteEventType
(
record
)
}
>
<
DeleteOutlined
style=
{
{
fontSize
:
'16px'
,
color
:
'#e86060'
}
}
/>
</
Popconfirm
>
</
Tooltip
>
<
/
Space
>
}
}
]
const add =()=
>
{
setAddVisible
(
true
)
setType
(
'add'
)
}
const editEventType =record=
>
{
setAddVisible
(
true
)
setType
(
'edit'
)
setFormObj
(
record
);
}
const deleteEventType =record=
>
{
}
const onSubmit =()=
>
{
setAddVisible
(
false
)
}
return (
<
div
className=
{
styles
.
maintenanceContainer
}
>
<
div
className=
{
styles
.
contentContainers
}
>
<
div
style=
{
{
height
:
'50px'
,
backgroundColor
:
'white'
}
}
>
<
span
style=
{
{
float
:
'right'
,
marginRight
:
'10px'
}
}
>
<
Button
icon=
{
<
PlusOutlined
className=
{
styles
.
icon
}
/>
}
onClick=
{
add
}
style=
{
{
marginLeft
:
'30px'
,
verticalAlign
:
'middle'
,
marginTop
:
'10px'
}
}
>
添加
</
Button
>
</
span
>
</
div
>
<
Table
// rowClassName={setRowClassName}
size=
"small"
rowKey=
'ID'
bordered
onRow=
{
record
=>
{
return
{
onDoubleClick
:
event
=>
{
event
.
stopPropagation
();
editEventType
(
record
)
},
//双击
};
}
}
columns=
{
columns
}
dataSource=
{
tableData
}
scroll=
{
{
y
:
'calc(100vh - 155px)'
}
}
pagination=
{
{
showTotal
:
(
total
,
range
)
=>
`第${range[0]}-${range[1]} 条/共 ${total} 条`
,
pageSizeOptions
:
[
10
,
20
,
50
,
100
],
defaultPageSize
:
20
,
showQuickJumper
:
true
,
showSizeChanger
:
true
,
}
}
/>
{
/* 添加事件 */
}
<
AddModal
visible=
{
addVisible
}
type=
{
type
}
onCancel=
{
()
=>
setAddVisible
(
false
)
}
callBackSubmit=
{
onSubmit
}
formObj=
{
formObj
}
/>
</
div
>
</
div
>
)
};
export default maintenance
\ No newline at end of file
src/pages/platformCenter/bsmanager/maintenance/maintenance.less
0 → 100644
View file @
787a7bda
.maintenanceContainer{
.ant-card-body {
padding: 12px 24px 24px 24px;
}
.linkDrowp{
position: absolute;
top: 0px;
left: 92.5%;
width: 1rem;
height: 100%;
display: flex;
align-items: center;
}
.listItem{
display: flex;
justify-content: space-between;
font-size: 14px;
font-weight: 400;
color: #414E65;
cursor: pointer;
line-height: 28px;
align-items: center;
padding: 8px 14px;
}
.ant-btn .anticon.anticon-plus > svg, .ant-btn .anticon.anticon-minus > svg {
margin-top: -5px;
}
.pickItem{
background-color: #F5F6F9;
}
}
.formData{
height: 38rem;
overflow-y: scroll;
.ant-form-item-label > label.ant-form-item-required:not(.ant-form-item-required-mark-optional)::before{
display: none;
}
.formData_label{
display: flex;
align-items: center;
}
.filed_listItem{
display: flex;
height: 3.6rem;
.ant-btn-icon-only {
width: 32px;
height: 32px;
/* padding: 2.4px 0; */
font-size: 16px;
border-radius: 2px;
display: flex;
align-items: center;
justify-content: center;
}
}
}
\ No newline at end of file
src/pages/platformCenter/bsmanager/workOrder/AddModal.jsx
View file @
787a7bda
...
@@ -651,7 +651,7 @@ const AddModal = props => {
...
@@ -651,7 +651,7 @@ const AddModal = props => {
{
{
validator
:
(
rule
,
value
)
=>
{
validator
:
(
rule
,
value
)
=>
{
if
(
form
.
getFieldsValue
().
BusinessType
==
''
)
{
if
(
form
.
getFieldsValue
().
BusinessType
==
''
)
{
return
Promise
.
reject
(
'
摘要字段必选
'
)
return
Promise
.
reject
(
'
业务类型必填
'
)
}
}
return
Promise
.
resolve
();
return
Promise
.
resolve
();
}
}
...
...
src/pages/platformCenter/bsmanager/workOrder/incident.jsx
View file @
787a7bda
...
@@ -214,7 +214,7 @@ const incident = () => {
...
@@ -214,7 +214,7 @@ const incident = () => {
{
{
title
:
'操作'
,
title
:
'操作'
,
key
:
'action'
,
key
:
'action'
,
alig
i
n
:
'center'
,
align
:
'center'
,
render
:
record
=>
(
render
:
record
=>
(
<
Space
size=
"middle"
>
<
Space
size=
"middle"
>
...
...
src/pages/platformCenter/hostmanager/IotConfig/IotConfig.jsx
View file @
787a7bda
import
React
,
{
useEffect
,
useState
}
from
'react'
import
React
,
{
useEffect
,
useState
}
from
'react'
import
{
Card
,
Form
,
Input
,
Button
,
Select
,
message
,
Divider
}
from
'antd'
import
{
Card
,
Form
,
Input
,
Button
,
Select
,
message
,
Divider
,
Row
,
Col
,
Spin
}
from
'antd'
import
styles
from
'./IotConfig.less'
import
styles
from
'./IotConfig.less'
import
Internet
from
'../../../../assets/images/icons/物联.svg'
;
import
Internet
from
'../../../../assets/images/icons/物联.svg'
;
import
EMQ
from
'../../../../assets/images/icons/EMQ.svg'
;
import
EMQ
from
'../../../../assets/images/icons/EMQ.svg'
;
import
Yes
from
'../../../../assets/images/icons/正确.svg'
;
import
{
GetIOTPlatformVersion
,
GetTCPConfigInfo
,
PingIOTPlatform
,
SaveTcpAddress
}
from
'@/services/platform/hostmanager'
import
{
GetIOTPlatformVersion
,
GetTCPConfigInfo
,
PingIOTPlatform
,
SaveTcpAddress
}
from
'@/services/platform/hostmanager'
import
{
CloseCircleFilled
}
from
'@ant-design/icons'
;
const
layout
=
{
const
layout
=
{
labelCol
:
{
span
:
3
},
labelCol
:
{
span
:
4
},
wrapperCol
:
{
span
:
2
1
},
wrapperCol
:
{
span
:
2
0
},
};
};
const
tailLayout
=
{
const
tailLayout
=
{
wrapperCol
:
{
offset
:
11
,
span
:
13
},
wrapperCol
:
{
offset
:
9
,
span
:
15
},
};
};
const
IotConfig
=
()
=>
{
const
IotConfig
=
()
=>
{
const
[
loading
,
setLoading
]
=
useState
(
false
);
// 加载
const
[
show1
,
setShow1
]
=
useState
(
'none'
)
const
[
show2
,
setShow2
]
=
useState
(
'none'
)
const
[
currentIotVersion
,
setCurrentIotVersion
]
=
useState
({
data
:
""
});
const
[
currentIotVersion
,
setCurrentIotVersion
]
=
useState
({
data
:
""
});
const
[
currentIotConfig
,
setCurrentIotConfig
]
=
useState
({
const
[
currentIotConfig
,
setCurrentIotConfig
]
=
useState
({
TcpAddress
:
""
,
TcpAddress
:
""
,
...
@@ -67,93 +70,138 @@ const IotConfig = () => {
...
@@ -67,93 +70,138 @@ const IotConfig = () => {
console
.
log
(
obj
)
console
.
log
(
obj
)
form
.
setFieldsValue
(
obj
);
form
.
setFieldsValue
(
obj
);
setCurrentIotConfig
(
val
=>
({
...
val
,
...
obj
}));
setCurrentIotConfig
(
val
=>
({
...
val
,
...
obj
}));
setLoading
(
true
)
PingIOTPlatform
({
ip
:
obj
.
IotAddress
}).
then
(
res
=>
{
setLoading
(
false
)
if
(
res
.
code
===
0
)
{
setShow1
(
'block'
)
setShow2
(
'none'
)
}
else
{
setShow1
(
'none'
)
setShow2
(
'block'
)
}
}
)
}
}
}
}
)
)
}
}
const
PingIot
=
({
ip
,
values
})
=>
{
const
PingIot
=
({
ip
,
values
})
=>
{
SaveIotConfig
({
tcpAddress
:
values
.
TcpAddress
,
iotAddress
:
values
.
IotAddress
,
sslSafe
:
values
.
SSLSafe
})
}
const
PingIot1
=
()
=>
{
setLoading
(
true
)
let
aa
=
form
.
getFieldsValue
().
IotAddress
PingIOTPlatform
({
PingIOTPlatform
({
ip
:
ip
ip
:
aa
}).
then
(
}).
then
(
res
=>
{
res
=>
{
setLoading
(
false
)
if
(
res
.
code
===
0
)
{
if
(
res
.
code
===
0
)
{
SaveIotConfig
({
setShow1
(
'block'
)
tcpAddress
:
values
.
TcpAddress
,
setShow2
(
'none'
)
iotAddress
:
values
.
IotAddress
,
message
.
success
(
"连接成功!"
);
sslSafe
:
values
.
SSLSafe
}
else
{
})
setShow1
(
'none'
)
}
else
{
setShow2
(
'block'
)
message
.
info
(
"物联平台服务器连接异常!"
);
message
.
error
(
res
.
msg
);
}
}
}
}
)
)
}
}
const
SaveIotConfig
=
(
config
)
=>
{
const
SaveIotConfig
=
(
config
)
=>
{
SaveTcpAddress
(
config
).
then
(
setLoading
(
true
)
res
=>
{
SaveTcpAddress
(
config
).
then
(
res
=>
{
if
(
res
.
code
===
0
)
{
setLoading
(
false
)
message
.
info
(
'配置保存成功'
);
if
(
res
.
code
===
0
)
{
}
message
.
info
(
'配置保存成功'
);
}
else
{
message
.
error
(
res
.
msg
);
}
}
}
)
)
}
}
return
(
return
(
<
div
className=
{
styles
.
iot_container
}
>
<
div
className=
{
styles
.
iot_container
}
>
<
Card
title=
{
`物联平台${currentIotVersion.data ? `
[
$
{
currentIotVersion
.
data
}]
` : ""}`
}
style=
{
{
width
:
"100%"
,
height
:
'calc(100vh - 130px)'
}
}
>
<
Card
title=
{
`物联平台${currentIotVersion.data ? `
[
$
{
currentIotVersion
.
data
}]
` : ""}`
}
style=
{
{
width
:
"100%"
,
height
:
'calc(100vh - 130px)'
}
}
>
<
Spin
spinning=
{
loading
}
tip=
"loading"
>
<
Form
<
Form
{
...
layout
}
{
...
layout
}
form=
{
form
}
form=
{
form
}
name=
"basic"
name=
"basic"
initialValues=
{
{
remember
:
true
}
}
initialValues=
{
{
remember
:
true
}
}
onFinish=
{
onFinish
}
onFinish=
{
onFinish
}
onFinishFailed=
{
onFinishFailed
}
onFinishFailed=
{
onFinishFailed
}
>
<
div
style=
{
{
marginTop
:
'10px'
,
display
:
'flex'
,
alignItems
:
'center'
,
marginLeft
:
'15px'
}
}
>
<
img
src=
{
Internet
}
style=
{
{
height
:
'16px'
}
}
alt=
""
/><
span
style=
{
{
marginLeft
:
'10px'
,
fontWeight
:
'bold'
}
}
>
物联平台
</
span
>
</
div
>
<
Divider
/>
<
Form
.
Item
label=
"服务器地址(平台)"
name=
"IotAddress"
rules=
{
[{
required
:
true
,
pattern
:
new
RegExp
(
/^
(([
1-9
]?\d
|1
\d
{2}|2
[
0-4
]\d
|25
[
0-5
])\.)
{3}
([
1-9
]?\d
|1
\d
{2}|2
[
0-4
]\d
|25
[
0-5
])
$/
,
"g"
),
message
:
'请输入正确的IP例如:192.168.12.231'
}]
}
>
<
Input
style=
{
{
width
:
'94%'
}
}
/>
</
Form
.
Item
>
<
div
style=
{
{
marginTop
:
'40px'
,
display
:
'flex'
,
alignItems
:
'center'
,
marginLeft
:
'15px'
}
}
>
<
img
src=
{
EMQ
}
style=
{
{
height
:
'16px'
}
}
alt=
""
/><
span
style=
{
{
marginLeft
:
'10px'
,
fontWeight
:
'bold'
}
}
>
EMQ
</
span
>
</
div
>
<
Divider
/>
<
Form
.
Item
label=
"服务器地址(EMQ)"
name=
"TcpAddress"
rules=
{
[{
required
:
true
,
message
:
'请输入域名(IP):端口,例如:192.168.19.102:8131'
}]
}
>
<
Input
style=
{
{
width
:
'94%'
}
}
/>
</
Form
.
Item
>
<
Form
.
Item
name=
"SSLSafe"
label=
"SSL(EMQ)"
rules=
{
[{
required
:
true
,
message
:
'请选择是否!'
}]
}
>
>
<
Select
placeholder=
"请选择是否!"
style=
{
{
width
:
'94%'
}
}
>
<
div
style=
{
{
marginTop
:
'10px'
,
display
:
'flex'
,
alignItems
:
'center'
,
marginLeft
:
'15px'
}
}
>
<
Option
value=
"0"
>
是
</
Option
>
<
img
src=
{
Internet
}
style=
{
{
height
:
'16px'
}
}
alt=
""
/><
span
style=
{
{
marginLeft
:
'10px'
,
fontWeight
:
'bold'
}
}
>
物联平台
</
span
>
<
Option
value=
"1"
>
否
</
Option
>
</
div
>
</
Select
>
<
Divider
/>
</
Form
.
Item
>
<
Row
>
<
Form
.
Item
{
...
tailLayout
}
>
<
Col
span=
{
18
}
>
<
Button
type=
"primary"
htmlType=
"submit"
disabled=
{
currentIotConfig
.
TcpAddress
.
length
>
0
?
0
:
1
}
>
<
Form
.
Item
保存连接
label=
"服务地址(平台)"
</
Button
>
name=
"IotAddress"
</
Form
.
Item
>
rules=
{
[{
required
:
true
,
pattern
:
new
RegExp
(
/^
(([
1-9
]?\d
|1
\d
{2}|2
[
0-4
]\d
|25
[
0-5
])\.)
{3}
([
1-9
]?\d
|1
\d
{2}|2
[
0-4
]\d
|25
[
0-5
])
$/
,
"g"
),
message
:
'请输入正确的IP例如:192.168.12.231'
}]
}
</
Form
>
>
<
Input
style=
{
{
width
:
'95%'
}
}
/>
</
Form
.
Item
>
</
Col
>
<
Col
span=
{
3
}
>
<
Button
type=
"primary"
onClick=
{
()
=>
PingIot1
()
}
>
连接
</
Button
>
</
Col
>
<
Col
span=
{
3
}
>
<
span
style=
{
{
display
:
show1
}
}
><
img
src=
{
Yes
}
style=
{
{
height
:
'32px'
,
marginRight
:
'20px'
}
}
alt=
""
/>
已连接
</
span
>
<
span
style=
{
{
display
:
show2
}
}
><
CloseCircleFilled
style=
{
{
fontSize
:
'32px'
,
marginRight
:
'20px'
}
}
/>
未连接
</
span
>
</
Col
>
<
div
style=
{
{
marginTop
:
'40px'
,
display
:
'flex'
,
alignItems
:
'center'
,
marginLeft
:
'15px'
}
}
>
<
img
src=
{
EMQ
}
style=
{
{
height
:
'16px'
}
}
alt=
""
/><
span
style=
{
{
marginLeft
:
'10px'
,
fontWeight
:
'bold'
}
}
>
EMQ
</
span
>
</
div
>
<
Divider
/>
<
Col
span=
{
18
}
>
<
Form
.
Item
label=
"服务地址(EMQ)"
name=
"TcpAddress"
rules=
{
[{
required
:
true
,
pattern
:
new
RegExp
(
/^.*:.*$/
),
message
:
'请输入正确的IP:端口'
}]
}
>
<
Input
style=
{
{
width
:
'95%'
}
}
/>
</
Form
.
Item
>
</
Col
>
<
Col
span=
{
6
}
>
</
Col
>
<
Col
span=
{
18
}
>
<
Form
.
Item
name=
"SSLSafe"
label=
"SSL(EMQ)"
rules=
{
[{
required
:
true
,
message
:
'请选择是否!'
}]
}
>
<
Select
placeholder=
"请选择是否!"
style=
{
{
width
:
'95%'
}
}
>
<
Option
value=
"0"
>
是
</
Option
>
<
Option
value=
"1"
>
否
</
Option
>
</
Select
>
</
Form
.
Item
>
</
Col
>
<
Col
span=
{
6
}
>
</
Col
>
<
Col
span=
{
24
}
>
<
Form
.
Item
{
...
tailLayout
}
>
<
Button
type=
"primary"
htmlType=
"submit"
disabled=
{
currentIotConfig
.
TcpAddress
.
length
>
0
?
0
:
1
}
>
保存
</
Button
>
</
Form
.
Item
>
</
Col
>
</
Row
>
</
Form
>
</
Spin
>
</
Card
>
</
Card
>
</
div
>
</
div
>
)
)
...
...
src/pages/platformCenter/hostmanager/IotConfig/IotConfig.less
View file @
787a7bda
...
@@ -9,5 +9,6 @@
...
@@ -9,5 +9,6 @@
width: 100%;
width: 100%;
height: 20px;
height: 20px;
margin-bottom: 10px;
margin-bottom: 10px;
}
}
}
}
\ No newline at end of file
src/pages/platformCenter/hostmanager/baseConfig/BaseConfig.jsx
View file @
787a7bda
...
@@ -55,14 +55,14 @@ const BaseConfig = () => {
...
@@ -55,14 +55,14 @@ const BaseConfig = () => {
</
div
>
</
div
>
<
Divider
/>
<
Divider
/>
<
Row
>
<
Row
>
<
Col
span=
{
2
}
>
<
Col
span=
{
3
}
>
<
span
style=
{
{
marginLeft
:
'27px'
,
lineHeight
:
'32px'
,
color
:
'gray'
}
}
>
站点编号
</
span
>
<
span
style=
{
{
marginLeft
:
'27px'
,
lineHeight
:
'32px'
,
color
:
'gray'
}
}
>
站点编号
</
span
>
</
Col
>
</
Col
>
<
Col
span=
{
2
2
}
>
<
Col
span=
{
2
1
}
>
{
{
currentSiteInfo
?
<
Input
value=
{
currentSiteInfo
}
disabled=
{
true
}
/>
currentSiteInfo
?
<
Input
value=
{
currentSiteInfo
}
disabled=
{
true
}
style=
{
{
width
:
'80%'
}
}
/>
:
<
div
>
:
<
div
>
<
Input
value=
{
currentSiteInfo
}
/>
<
Input
value=
{
currentSiteInfo
}
style=
{
{
width
:
'80%'
}
}
/>
<
Button
style=
{
{
marginLeft
:
"10px"
}
}
>
生成编号
</
Button
>
<
Button
style=
{
{
marginLeft
:
"10px"
}
}
>
生成编号
</
Button
>
</
div
>
</
div
>
}
}
...
@@ -73,28 +73,28 @@ const BaseConfig = () => {
...
@@ -73,28 +73,28 @@ const BaseConfig = () => {
</
div
>
</
div
>
<
Divider
/>
<
Divider
/>
<
Row
gutter=
{
[
8
,
16
]
}
>
<
Row
gutter=
{
[
8
,
16
]
}
>
<
Col
span=
{
2
}
>
<
Col
span=
{
3
}
>
<
span
style=
{
{
marginLeft
:
'27px'
,
lineHeight
:
'32px'
,
color
:
'gray'
}
}
>
服务器IP
</
span
>
<
span
style=
{
{
marginLeft
:
'27px'
,
lineHeight
:
'32px'
,
color
:
'gray'
}
}
>
服务器IP
</
span
>
</
Col
>
</
Col
>
<
Col
span=
{
2
2
}
>
<
Col
span=
{
2
1
}
>
<
span
style=
{
{
lineHeight
:
'32px'
}
}
>
{
currentDataBase
.
ip
}
</
span
>
<
span
style=
{
{
lineHeight
:
'32px'
}
}
>
{
currentDataBase
.
ip
}
</
span
>
</
Col
>
</
Col
>
<
Col
span=
{
2
}
>
<
Col
span=
{
3
}
>
<
span
style=
{
{
marginLeft
:
'27px'
,
lineHeight
:
'32px'
,
color
:
'gray'
}
}
>
数据库名称
</
span
>
<
span
style=
{
{
marginLeft
:
'27px'
,
lineHeight
:
'32px'
,
color
:
'gray'
}
}
>
数据库名称
</
span
>
</
Col
>
</
Col
>
<
Col
span=
{
2
2
}
>
<
Col
span=
{
2
1
}
>
<
span
style=
{
{
lineHeight
:
'32px'
}
}
>
{
currentDataBase
.
dbName
}
</
span
>
<
span
style=
{
{
lineHeight
:
'32px'
}
}
>
{
currentDataBase
.
dbName
}
</
span
>
</
Col
>
</
Col
>
<
Col
span=
{
2
}
>
<
Col
span=
{
3
}
>
<
span
style=
{
{
marginLeft
:
'27px'
,
lineHeight
:
'32px'
,
color
:
'gray'
}
}
>
登录名
</
span
>
<
span
style=
{
{
marginLeft
:
'27px'
,
lineHeight
:
'32px'
,
color
:
'gray'
}
}
>
登录名
</
span
>
</
Col
>
</
Col
>
<
Col
span=
{
2
2
}
>
<
Col
span=
{
2
1
}
>
<
span
style=
{
{
lineHeight
:
'32px'
}
}
>
{
currentDataBase
.
userName
}
</
span
>
<
span
style=
{
{
lineHeight
:
'32px'
}
}
>
{
currentDataBase
.
userName
}
</
span
>
</
Col
>
</
Col
>
<
Col
span=
{
2
}
>
<
Col
span=
{
3
}
>
<
span
style=
{
{
marginLeft
:
'27px'
,
lineHeight
:
'32px'
,
color
:
'gray'
}
}
>
密码
</
span
>
<
span
style=
{
{
marginLeft
:
'27px'
,
lineHeight
:
'32px'
,
color
:
'gray'
}
}
>
密码
</
span
>
</
Col
>
</
Col
>
<
Col
span=
{
2
2
}
>
<
Col
span=
{
2
1
}
>
<
span
style=
{
{
lineHeight
:
'32px'
}
}
>
{
encrypt
(
currentDataBase
.
password
)
}
</
span
>
<
span
style=
{
{
lineHeight
:
'32px'
}
}
>
{
encrypt
(
currentDataBase
.
password
)
}
</
span
>
</
Col
>
</
Col
>
</
Row
>
</
Row
>
...
...
src/pages/platformCenter/hostmanager/messageConfig/messageConfig.jsx
View file @
787a7bda
import
React
,
{
useEffect
,
useState
}
from
'react'
import
React
,
{
useEffect
,
useState
}
from
'react'
import
{
Card
,
Form
,
Input
,
Button
,
Select
,
message
,
Divider
}
from
'antd'
import
{
Card
,
Form
,
Input
,
Button
,
Select
,
message
,
Divider
,
Spin
}
from
'antd'
import
styles
from
'./messageConfig.less'
;
import
styles
from
'./messageConfig.less'
;
import
{
GetMessageConfigInfo
,
SaveSystemInfo
,
ConnectMessPlatform
,
GetBasicInfo
,
GetDataBaseConfig
}
from
'@/services/platform/hostmanager'
import
{
GetMessageConfigInfo
,
SaveSystemInfo
,
ConnectMessPlatform
,
GetBasicInfo
,
GetDataBaseConfig
}
from
'@/services/platform/hostmanager'
import
message11
from
'../../../../assets/images/icons/消息.svg'
import
message11
from
'../../../../assets/images/icons/消息.svg'
...
@@ -15,7 +15,7 @@ const tailLayout = {
...
@@ -15,7 +15,7 @@ const tailLayout = {
};
};
const
MessageConfig
=
()
=>
{
const
MessageConfig
=
()
=>
{
const
[
loading
,
setLoading
]
=
useState
(
false
);
// 加载
const
[
currentAddress
,
setCurrentAddress
]
=
useState
(
""
)
const
[
currentAddress
,
setCurrentAddress
]
=
useState
(
""
)
const
[
currentDataBase
,
setCurrentDataBase
]
=
useState
({});
const
[
currentDataBase
,
setCurrentDataBase
]
=
useState
({});
const
[
currentSiteInfo
,
setcurrentSiteInfo
]
=
useState
(
""
);
const
[
currentSiteInfo
,
setcurrentSiteInfo
]
=
useState
(
""
);
...
@@ -24,6 +24,7 @@ const MessageConfig = () => {
...
@@ -24,6 +24,7 @@ const MessageConfig = () => {
const
onFinish
=
(
values
)
=>
{
const
onFinish
=
(
values
)
=>
{
//先测试连接再保存
//先测试连接再保存
//1.测试链接
//1.测试链接
setLoading
(
true
)
ConnectMessPlatform
({
ConnectMessPlatform
({
messAddress
:
values
.
messageAddress
,
messAddress
:
values
.
messageAddress
,
sqlServerIP
:
currentDataBase
.
ip
,
sqlServerIP
:
currentDataBase
.
ip
,
...
@@ -32,6 +33,7 @@ const MessageConfig = () => {
...
@@ -32,6 +33,7 @@ const MessageConfig = () => {
sqlName
:
currentDataBase
.
dbName
,
sqlName
:
currentDataBase
.
dbName
,
siteCode
:
currentSiteInfo
siteCode
:
currentSiteInfo
}).
then
(
res
=>
{
}).
then
(
res
=>
{
setLoading
(
false
)
if
(
res
.
code
===
0
)
{
if
(
res
.
code
===
0
)
{
//2.保存连接
//2.保存连接
SaveSystemInfo
({
SaveSystemInfo
({
...
@@ -42,12 +44,12 @@ const MessageConfig = () => {
...
@@ -42,12 +44,12 @@ const MessageConfig = () => {
if
(
res
.
code
===
0
)
{
if
(
res
.
code
===
0
)
{
message
.
info
(
"配置保存成功"
)
message
.
info
(
"配置保存成功"
)
}
else
{
}
else
{
message
.
error
Info
(
res
.
msg
)
message
.
error
(
res
.
msg
)
}
}
}
}
)
)
}
else
{
}
else
{
message
.
error
Info
(
res
.
msg
)
message
.
error
(
res
.
msg
)
}
}
})
})
...
@@ -94,6 +96,7 @@ const MessageConfig = () => {
...
@@ -94,6 +96,7 @@ const MessageConfig = () => {
return
(
return
(
<
div
className=
{
styles
.
message_container
}
>
<
div
className=
{
styles
.
message_container
}
>
<
Card
style=
{
{
width
:
"100%"
,
height
:
'calc(100vh - 130px)'
}
}
>
<
Card
style=
{
{
width
:
"100%"
,
height
:
'calc(100vh - 130px)'
}
}
>
<
Spin
spinning=
{
loading
}
tip=
"loading"
>
<
Form
<
Form
{
...
layout
}
{
...
layout
}
form=
{
form
}
form=
{
form
}
...
@@ -107,10 +110,9 @@ const MessageConfig = () => {
...
@@ -107,10 +110,9 @@ const MessageConfig = () => {
</
div
>
</
div
>
<
Divider
/>
<
Divider
/>
<
Form
.
Item
<
Form
.
Item
label=
"服务
器
地址(平台)"
label=
"服务地址(平台)"
name=
"messageAddress"
name=
"messageAddress"
rules=
{
[{
required
:
true
,
message
:
'请输入域名(IP):端口,例如:192.168.19.102:8131'
}]
}
rules=
{
[{
required
:
true
,
pattern
:
new
RegExp
(
/^
(([
1-9
]?\d
|1
\d
{2}|2
[
0-4
]\d
|25
[
0-5
])\.)
{3}
([
1-9
]?\d
|1
\d
{2}|2
[
0-4
]\d
|25
[
0-5
])(
:
\d
*
)
$/
,
"g"
),
message
:
'请输入正确的IP例如:192.168.12.231:8231'
}]
}
>
>
<
Input
style=
{
{
width
:
'94%'
}
}
/>
<
Input
style=
{
{
width
:
'94%'
}
}
/>
</
Form
.
Item
>
</
Form
.
Item
>
...
@@ -120,6 +122,7 @@ const MessageConfig = () => {
...
@@ -120,6 +122,7 @@ const MessageConfig = () => {
</
Button
>
</
Button
>
</
Form
.
Item
>
</
Form
.
Item
>
</
Form
>
</
Form
>
</
Spin
>
</
Card
>
</
Card
>
</
div
>
</
div
>
)
)
...
...
src/pages/platformCenter/hostmanager/proxyConfig/ProxyConfig.jsx
View file @
787a7bda
import
React
,
{
useEffect
,
useState
}
from
'react'
import
React
,
{
useEffect
,
useState
}
from
'react'
import
{
Card
,
Form
,
Input
,
Button
,
Switch
,
message
,
Divider
,
Row
,
Col
}
from
'antd'
import
{
Card
,
Form
,
Input
,
Button
,
Switch
,
message
,
Divider
,
Row
,
Col
,
Spin
}
from
'antd'
import
styles
from
'./ProxyConfig.less'
import
styles
from
'./ProxyConfig.less'
import
{
GetNginxConfigInfo
,
InsertNginxConfig
,
StartNginx
,
StopNginx
,
ReloadNginx
,
NginxCache
,
NginxLog
}
from
'@/services/platform/hostmanager'
import
{
GetNginxConfigInfo
,
InsertNginxConfig
,
StartNginx
,
StopNginx
,
ReloadNginx
,
NginxCache
,
NginxLog
}
from
'@/services/platform/hostmanager'
import
{
ReloadOutlined
}
from
'@ant-design/icons'
;
import
{
ReloadOutlined
}
from
'@ant-design/icons'
;
...
@@ -17,7 +17,7 @@ const tailLayout = {
...
@@ -17,7 +17,7 @@ const tailLayout = {
const
ProxyConfig
=
()
=>
{
const
ProxyConfig
=
()
=>
{
const
[
loading
,
setLoading
]
=
useState
(
false
);
// 加载
const
[
form
]
=
Form
.
useForm
();
const
[
form
]
=
Form
.
useForm
();
const
[
flag
,
setFlag
]
=
useState
(
1
)
const
[
flag
,
setFlag
]
=
useState
(
1
)
...
@@ -31,12 +31,13 @@ const ProxyConfig = () => {
...
@@ -31,12 +31,13 @@ const ProxyConfig = () => {
})
})
const
onFinish
=
(
values
)
=>
{
const
onFinish
=
(
values
)
=>
{
setLoading
(
true
)
InsertNginxConfig
({
InsertNginxConfig
({
port
:
values
.
NginxPort
,
port
:
values
.
NginxPort
,
iisLocation
:
values
.
IISIPProt
,
iisLocation
:
values
.
IISIPProt
,
emqLocation
:
values
.
EMQIPPort
emqLocation
:
values
.
EMQIPPort
}).
then
(
}).
then
(
res
=>
{
res
=>
{
setLoading
(
false
)
if
(
res
.
code
===
0
)
{
if
(
res
.
code
===
0
)
{
message
.
success
(
"保存成功"
)
message
.
success
(
"保存成功"
)
}
else
{
}
else
{
...
@@ -180,6 +181,7 @@ const ProxyConfig = () => {
...
@@ -180,6 +181,7 @@ const ProxyConfig = () => {
return
(
return
(
<
div
className=
{
styles
.
proxy_container
}
>
<
div
className=
{
styles
.
proxy_container
}
>
<
Card
style=
{
{
width
:
'100%'
,
height
:
'calc(100vh - 130px)'
}
}
>
<
Card
style=
{
{
width
:
'100%'
,
height
:
'calc(100vh - 130px)'
}
}
>
<
Spin
spinning=
{
loading
}
tip=
"loading"
>
<
Form
<
Form
{
...
layout
}
{
...
layout
}
form=
{
form
}
form=
{
form
}
...
@@ -196,7 +198,6 @@ const ProxyConfig = () => {
...
@@ -196,7 +198,6 @@ const ProxyConfig = () => {
label=
"端口(ngnix)"
label=
"端口(ngnix)"
name=
"NginxPort"
name=
"NginxPort"
rules=
{
[{
required
:
true
,
pattern
:
new
RegExp
(
/^
[
1-9
]\d
*$/
,
'g'
),
message
:
'请输入ngnix端口,例如:8091'
}]
}
rules=
{
[{
required
:
true
,
pattern
:
new
RegExp
(
/^
[
1-9
]\d
*$/
,
'g'
),
message
:
'请输入ngnix端口,例如:8091'
}]
}
>
>
<
Input
style=
{
{
marginLeft
:
'30px'
,
width
:
'98%'
}
}
/>
<
Input
style=
{
{
marginLeft
:
'30px'
,
width
:
'98%'
}
}
/>
</
Form
.
Item
>
</
Form
.
Item
>
...
@@ -204,7 +205,7 @@ const ProxyConfig = () => {
...
@@ -204,7 +205,7 @@ const ProxyConfig = () => {
<
Form
.
Item
<
Form
.
Item
label=
"地址(IIS)"
label=
"地址(IIS)"
name=
"IISIPProt"
name=
"IISIPProt"
rules=
{
[{
required
:
true
,
message
:
'请输入服务器地址!
'
}]
}
rules=
{
[{
required
:
true
,
pattern
:
new
RegExp
(
/^
(([
1-9
]?\d
|1
\d
{2}|2
[
0-4
]\d
|25
[
0-5
])\.)
{3}
([
1-9
]?\d
|1
\d
{2}|2
[
0-4
]\d
|25
[
0-5
])(
:
\d
*
)
$/
,
"g"
),
message
:
'请输入正确的IP例如:192.168.12.231:8231
'
}]
}
hasFeedback
hasFeedback
>
>
<
Input
style=
{
{
marginLeft
:
'30px'
,
width
:
'98%'
}
}
/>
<
Input
style=
{
{
marginLeft
:
'30px'
,
width
:
'98%'
}
}
/>
...
@@ -213,8 +214,7 @@ const ProxyConfig = () => {
...
@@ -213,8 +214,7 @@ const ProxyConfig = () => {
label=
"地址(EMQ)"
label=
"地址(EMQ)"
name=
"EMQIPPort"
name=
"EMQIPPort"
hasFeedback
hasFeedback
rules=
{
[{
required
:
true
,
message
:
'请选择是否!'
}]
}
rules=
{
[{
required
:
true
,
pattern
:
new
RegExp
(
/^
(([
1-9
]?\d
|1
\d
{2}|2
[
0-4
]\d
|25
[
0-5
])\.)
{3}
([
1-9
]?\d
|1
\d
{2}|2
[
0-4
]\d
|25
[
0-5
])(
:
\d
*
)
$/
,
"g"
),
message
:
'请输入正确的IP例如:192.168.12.231:8231'
}]
}
>
>
<
Input
style=
{
{
marginLeft
:
'30px'
,
width
:
'98%'
}
}
/>
<
Input
style=
{
{
marginLeft
:
'30px'
,
width
:
'98%'
}
}
/>
</
Form
.
Item
>
</
Form
.
Item
>
...
@@ -224,38 +224,40 @@ const ProxyConfig = () => {
...
@@ -224,38 +224,40 @@ const ProxyConfig = () => {
</
Button
>
</
Button
>
</
Form
.
Item
>
</
Form
.
Item
>
</
Form
>
</
Form
>
<
div
style=
{
{
display
:
'flex'
,
alignItems
:
'center'
,
marginTop
:
'40px'
}
}
>
<
div
style=
{
{
display
:
'flex'
,
alignItems
:
'center'
,
marginTop
:
'40px'
}
}
>
<
img
src=
{
configuration
}
style=
{
{
height
:
'16px'
}
}
/><
span
style=
{
{
marginLeft
:
'10px'
,
fontWeight
:
'bold'
}
}
>
服务
器
管理
</
span
>
<
img
src=
{
configuration
}
style=
{
{
height
:
'16px'
}
}
/><
span
style=
{
{
marginLeft
:
'10px'
,
fontWeight
:
'bold'
}
}
>
服务管理
</
span
>
</
div
>
</
div
>
<
Divider
/>
<
Divider
/>
<
div
className=
{
styles
.
operate_container
}
>
<
div
className=
{
styles
.
operate_container
}
>
<
Row
gutter=
{
[
20
,
25
]
}
style=
{
{
display
:
'flex'
,
alignItems
:
'center'
}
}
>
<
Row
gutter=
{
[
20
,
25
]
}
style=
{
{
display
:
'flex'
,
alignItems
:
'center'
}
}
>
<
Col
span=
{
2
}
>
<
Col
span=
{
2
}
>
<
div
style=
{
{
display
:
'flex'
,
justifyContent
:
'flex-end'
}
}
>
服务器
运行
</
div
>
<
div
style=
{
{
display
:
'flex'
,
justifyContent
:
'flex-end'
,
marginRight
:
'-10px'
}
}
>
服务
运行
</
div
>
</
Col
>
</
Col
>
<
Col
span=
{
22
}
>
<
Col
span=
{
22
}
>
<
Switch
checkedChildren=
'开启'
unCheckedChildren=
'关闭'
checked=
{
currentConfig
.
IsStartNginx
}
onChange=
{
OperateNginx
}
style=
{
{
marginLeft
:
'
25
px'
}
}
/>
<
Switch
checkedChildren=
'开启'
unCheckedChildren=
'关闭'
checked=
{
currentConfig
.
IsStartNginx
}
onChange=
{
OperateNginx
}
style=
{
{
marginLeft
:
'
30
px'
}
}
/>
</
Col
>
</
Col
>
<
Col
span=
{
2
}
>
<
Col
span=
{
2
}
>
<
div
style=
{
{
display
:
'flex'
,
justifyContent
:
'flex-end'
}
}
>
服务器
日志
</
div
>
<
div
style=
{
{
display
:
'flex'
,
justifyContent
:
'flex-end'
,
marginRight
:
'-10px'
}
}
>
服务
日志
</
div
>
</
Col
>
</
Col
>
<
Col
span=
{
22
}
>
<
Col
span=
{
22
}
>
<
Switch
checkedChildren=
'开启'
unCheckedChildren=
'关闭'
checked=
{
currentConfig
.
IsStartNginxLog
}
onChange=
{
OperateNginxLog
}
disabled=
{
currentConfig
.
IsStartNginx
>
0
?
0
:
1
}
style=
{
{
marginLeft
:
'
25
px'
}
}
/>
<
Switch
checkedChildren=
'开启'
unCheckedChildren=
'关闭'
checked=
{
currentConfig
.
IsStartNginxLog
}
onChange=
{
OperateNginxLog
}
disabled=
{
currentConfig
.
IsStartNginx
>
0
?
0
:
1
}
style=
{
{
marginLeft
:
'
30
px'
}
}
/>
</
Col
>
</
Col
>
<
Col
span=
{
2
}
>
<
Col
span=
{
2
}
>
<
div
style=
{
{
display
:
'flex'
,
justifyContent
:
'flex-end'
}
}
>
服务器
缓存
</
div
>
<
div
style=
{
{
display
:
'flex'
,
justifyContent
:
'flex-end'
,
marginRight
:
'-10px'
}
}
>
服务
缓存
</
div
>
</
Col
>
</
Col
>
<
Col
span=
{
22
}
>
<
Col
span=
{
22
}
>
<
Switch
checkedChildren=
'开启'
unCheckedChildren=
'关闭'
checked=
{
currentConfig
.
IsStartNginxCache
}
onChange=
{
OperateNginxCache
}
disabled=
{
currentConfig
.
IsStartNginx
>
0
?
0
:
1
}
style=
{
{
marginLeft
:
'
25
px'
}
}
/>
<
Switch
checkedChildren=
'开启'
unCheckedChildren=
'关闭'
checked=
{
currentConfig
.
IsStartNginxCache
}
onChange=
{
OperateNginxCache
}
disabled=
{
currentConfig
.
IsStartNginx
>
0
?
0
:
1
}
style=
{
{
marginLeft
:
'
30
px'
}
}
/>
</
Col
>
</
Col
>
<
Col
span=
{
2
}
>
<
Col
span=
{
2
}
>
<
div
style=
{
{
display
:
'flex'
,
justifyContent
:
'flex-end'
}
}
>
服务器
重载
</
div
>
<
div
style=
{
{
display
:
'flex'
,
justifyContent
:
'flex-end'
,
marginRight
:
'-10px'
}
}
>
服务
重载
</
div
>
</
Col
>
</
Col
>
<
Col
span=
{
22
}
>
<
Col
span=
{
22
}
>
<
Button
type=
"primary"
icon=
{
<
ReloadOutlined
/>
}
onClick=
{
OperateReloadNginx
}
disabled=
{
currentConfig
.
IsStartNginx
>
0
?
0
:
1
}
style=
{
{
marginLeft
:
'25
px'
}
}
>
重载
</
Button
>
<
Button
type=
"primary"
icon=
{
<
ReloadOutlined
style=
{
{
marginTop
:
'-10px'
}
}
/>
}
onClick=
{
OperateReloadNginx
}
disabled=
{
currentConfig
.
IsStartNginx
>
0
?
0
:
1
}
style=
{
{
marginLeft
:
'30
px'
}
}
>
重载
</
Button
>
</
Col
>
</
Col
>
</
Row
>
</
Row
>
</
div
>
</
div
>
</
Spin
>
</
Card
>
</
Card
>
</
div
>
</
div
>
)
)
...
...
src/pages/platformCenter/hostmanager/proxyConfig/ProxyConfig.less
View file @
787a7bda
...
@@ -18,5 +18,9 @@
...
@@ -18,5 +18,9 @@
height: 50px;
height: 50px;
margin-left:25px;
margin-left:25px;
}
}
}
}
}
}
\ No newline at end of file
.anticon svg {
margin-top:-5px;
}
src/routes/config.js
View file @
787a7bda
...
@@ -51,6 +51,7 @@ import TableManager from '@/pages/platformCenter/bsmanager/tablemanager';
...
@@ -51,6 +51,7 @@ import TableManager from '@/pages/platformCenter/bsmanager/tablemanager';
import
StandingBook
from
'@/pages/platformCenter/standingBook/standingBook'
;
import
StandingBook
from
'@/pages/platformCenter/standingBook/standingBook'
;
import
FiledConfig
from
'@/pages/platformCenter/filedConfig/filedConfig'
;
import
FiledConfig
from
'@/pages/platformCenter/filedConfig/filedConfig'
;
import
Incident
from
'@/pages/platformCenter/bsmanager/workOrder/incident'
;
import
Incident
from
'@/pages/platformCenter/bsmanager/workOrder/incident'
;
import
Maintenance
from
'@/pages/platformCenter/bsmanager/maintenance/maintenance'
import
Flow
from
'@/pages/platformCenter/bsmanager/workFlow/flow'
;
import
Flow
from
'@/pages/platformCenter/bsmanager/workFlow/flow'
;
import
FlowNode
from
'@/pages/platformCenter/bsmanager/workFlow/flowNode/flowNode'
;
import
FlowNode
from
'@/pages/platformCenter/bsmanager/workFlow/flowNode/flowNode'
;
// import Workflow from '@/pages/platformCenter/bsmanager/workflowEdit/Workflow';
// import Workflow from '@/pages/platformCenter/bsmanager/workflowEdit/Workflow';
...
@@ -301,6 +302,11 @@ export default {
...
@@ -301,6 +302,11 @@ export default {
hideMenu
:
true
,
hideMenu
:
true
,
component
:
FlowNode
,
component
:
FlowNode
,
},
},
{
path
:
'/platformCenter/bsmanger/maintenance'
,
name
:
'巡维保'
,
component
:
Maintenance
,
},
// {
// {
// path: '/platformCenter/bsmanger/Workflow',
// path: '/platformCenter/bsmanger/Workflow',
// name: '工作流编辑',
// name: '工作流编辑',
...
...
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