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
1b61b19b
Commit
1b61b19b
authored
Jun 21, 2023
by
涂伟
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'master' of
https://g.civnet.cn:8443/ReactWeb5/maintenance
parents
a18f7114
8155e397
Pipeline
#74755
passed with stages
Changes
14
Pipelines
1
Hide whitespace changes
Inline
Side-by-side
Showing
14 changed files
with
578 additions
and
59 deletions
+578
-59
BookConfigNew.jsx
src/pages/bsmanager/base/standingBook/BookConfigNew.jsx
+1
-0
standingBook.jsx
src/pages/bsmanager/base/standingBook/standingBook.jsx
+8
-0
AddModal.jsx
...ages/bsmanager/patrolMaintenance/maintenance/AddModal.jsx
+57
-35
maintenance.jsx
...s/bsmanager/patrolMaintenance/maintenance/maintenance.jsx
+14
-2
FlowChartRt.jsx
...workOrder/workflowEdit/workFlowComponents/FlowChartRt.jsx
+7
-4
AddGIS.jsx
...onents/flowChartComponents/nodeModalComponents/AddGIS.jsx
+6
-3
ConfigGIS.jsx
...nts/flowChartComponents/nodeModalComponents/ConfigGIS.jsx
+8
-3
index.jsx
src/pages/log/logCenter/index.jsx
+403
-0
index.less
src/pages/log/logCenter/index.less
+32
-0
AddModal.jsx
src/pages/platformCenter/hostmanager/gateWay/AddModal.jsx
+16
-5
gateWay.jsx
src/pages/platformCenter/hostmanager/gateWay/gateWay.jsx
+0
-7
config.js
src/routes/config.js
+6
-0
api.js
src/services/logCenter/api.js
+12
-0
api.js
src/services/maintenance/api.js
+8
-0
No files found.
src/pages/bsmanager/base/standingBook/BookConfigNew.jsx
View file @
1b61b19b
...
...
@@ -848,6 +848,7 @@ const BookConfigNew = props => {
onOk=
{
viewSubmit
}
onCancel=
{
()
=>
{
setAccountVisile
(
false
);
callBackSubmit
();
}
}
centered
bodyStyle=
{
{
width
:
'100%'
,
height
:
'800px'
,
overflowY
:
'scorll'
}
}
...
...
src/pages/bsmanager/base/standingBook/standingBook.jsx
View file @
1b61b19b
...
...
@@ -98,6 +98,14 @@ const StandingBook = props => {
width
:
200
,
ellipsis
:
true
,
},
{
title
:
'父台账名称'
,
dataIndex
:
'PreName'
,
key
:
'PreName'
,
align
:
'center'
,
width
:
200
,
ellipsis
:
true
,
},
{
title
:
'台账字段'
,
dataIndex
:
'fields'
,
...
...
src/pages/bsmanager/patrolMaintenance/maintenance/AddModal.jsx
View file @
1b61b19b
...
...
@@ -33,6 +33,8 @@ import {
CM_XWBPlan_feedbackTable
,
CM_XWBPlan_DataEditORAdd
,
CM_XWBPlan_DataList
,
CM_XWBPlan_DeviceAccountTable
,
GetParentDeviceTemplate
,
}
from
'@/services/maintenance/api'
;
import
{
GetTaskSyncField
}
from
'@/services/PatrolFeedback/api'
;
...
...
@@ -75,6 +77,7 @@ const AddModal = props => {
const
[
eventData
,
setEventData
]
=
useState
([]);
const
[
autoFlag
,
setAutoFlag
]
=
useState
(
false
);
// 禁用自动派发
const
[
keepData
,
setKeepData
]
=
useState
(
''
);
const
[
parentList
,
setParentList
]
=
useState
([]);
const
[
keep
,
setKeep
]
=
useState
([
'任务编码'
,
'设备编码'
,
...
...
@@ -143,6 +146,7 @@ const AddModal = props => {
getEventData
();
if
(
visible
)
{
getRole
();
getParentList
();
if
(
type
===
'add'
)
{
setChee
(
'否'
);
form
.
setFieldsValue
({
isSubmit
:
'否'
,
docycle
:
'一周一次'
});
...
...
@@ -162,6 +166,11 @@ const AddModal = props => {
setVisibleChecked1
(
data
.
autoAssign
==
'是'
);
console
.
log
(
data
);
data
&&
form
.
setFieldsValue
({
...
data
});
if
(
data
.
parentBusinessName
)
{
form
.
setFieldsValue
({
parentId
:
data
.
parentId
});
}
else
{
form
.
setFieldsValue
({
parentId
:
''
});
}
let
mappingFields
=
JSON
.
parse
(
data
.
mappingFields
);
getGetTaskSyncField
(
mappingFields
);
// 获取字段名数据
...
...
@@ -189,6 +198,14 @@ const AddModal = props => {
getFeedbackTable
();
},
[]);
const
getParentList
=
()
=>
{
GetParentDeviceTemplate
({
id
:
formObj
.
id
}).
then
(
res
=>
{
if
(
res
.
code
===
0
)
{
setParentList
(
res
.
data
);
}
});
};
// 获取关联事件数据
const
getEventData
=
()
=>
{
GetCM_Event_LoadEventTable
().
then
(
res
=>
{
...
...
@@ -208,13 +225,9 @@ const AddModal = props => {
};
const
getList
=
()
=>
{
CM_XWBPlan_AccountTable
().
then
(
res
=>
{
if
(
res
.
msg
==
'Ok'
)
{
let
arr
=
[];
res
.
data
.
map
((
item
,
index
)
=>
{
arr
.
push
(
item
.
accountName
);
});
setTreeData
(
arr
);
CM_XWBPlan_DeviceAccountTable
().
then
(
res
=>
{
if
(
res
.
code
===
0
)
{
setTreeData
(
res
.
data
);
}
});
};
...
...
@@ -484,6 +497,17 @@ const AddModal = props => {
return
<
TreeNode
value=
{
org
}
title=
{
org
}
key=
{
org
}
/>;
};
const
mapTree
=
org
=>
{
if
(
org
.
Value
)
{
return
(
<
TreeNode
value=
{
org
.
Key
}
title=
{
org
.
Key
}
disabled
>
{
org
.
Value
.
map
(
item
=>
mapTree
(
item
))
}
</
TreeNode
>
);
}
return
<
TreeNode
value=
{
org
}
title=
{
org
}
key=
{
org
}
/>;
};
// 获取字段名数据
const
getGetTaskSyncField
=
e
=>
{
// 编辑时处理数据为下拉框过滤调已选数据
...
...
@@ -535,14 +559,11 @@ const AddModal = props => {
let
lastFrom
=
[];
let
lastTo
=
[];
console
.
log
(
from
);
console
.
log
(
keep
);
keep
.
map
(
j
=>
{
if
(
from
.
indexOf
(
j
)
==
-
1
)
{
lastFrom
.
push
(
j
);
}
});
console
.
log
(
lastFrom
);
setKeepData
(
lastFrom
);
keepAll
.
map
(
j
=>
{
...
...
@@ -550,7 +571,6 @@ const AddModal = props => {
lastTo
.
push
(
j
);
}
});
console
.
log
(
lastTo
);
setKeepTree
(
lastTo
);
}
...
...
@@ -571,13 +591,11 @@ const AddModal = props => {
// 改变关联事件类型
const
onChangeEvent
=
(
e
,
i
)
=>
{
console
.
log
(
e
,
i
,
'666'
);
if
(
!
i
||
!
e
)
{
setKeepData
(
keep
);
formAdd
.
resetFields
();
}
let
aa
=
keepAllData
.
find
(
i
=>
i
.
name
===
e
);
console
.
log
(
keepAllData
,
e
,
'666'
);
if
(
aa
)
{
getReloadTableField
(
aa
.
tableName
,
i
);
// 找到关联事件对应事件表获取对应表的所有字段
}
...
...
@@ -588,8 +606,6 @@ const AddModal = props => {
tableName
:
e
,
}).
then
(
res
=>
{
if
(
res
.
msg
===
'Ok'
)
{
console
.
log
(
res
.
data
.
root
);
console
.
log
(
i
);
setKeepAll
(
res
.
data
.
root
);
// 编辑时过滤下l拉框初始数据
if
(
i
)
{
...
...
@@ -606,7 +622,6 @@ const AddModal = props => {
lastTo
.
push
(
b
);
}
});
console
.
log
(
lastTo
);
setKeepTree
(
lastTo
);
}
else
{
setKeepTree
(
res
.
data
.
root
);
...
...
@@ -632,7 +647,6 @@ const AddModal = props => {
aa
.
push
({
name
:
item
,
key
:
index
,
ID
:
index
,
children
:
arr
[
item
]
});
bb
.
push
(
item
);
});
console
.
log
(
aa
,
'aaaaaaaaaaaaa'
);
// setKeepTree(aa);
// setKeepAll(aa);
// all.current = aa;
...
...
@@ -749,6 +763,7 @@ const AddModal = props => {
<
Select
placeholder=
"选择业务类型"
onSearch=
{
inputType
}
showSearch
>
<
Option
value=
"巡检"
>
巡检
</
Option
>
<
Option
value=
"保养"
>
保养
</
Option
>
<
Option
value=
"水厂"
>
水厂
</
Option
>
</
Select
>
</
Item
>
</
Col
>
...
...
@@ -764,22 +779,6 @@ const AddModal = props => {
>
{
characteristics1
.
map
(
i
=>
mapTreeSelect
(
i
))
}
</
TreeSelect
>
{
/* <Select placeholder="选择计划执行周期">
<Option value="一日一次">一日一次</Option>
<Option value="一周一次">一周一次</Option>
<Option value="半月一次">半月一次</Option>
<Option value="一月一次">一月一次</Option>
<Option value="季度一次">季度一次</Option>
<Option value="半年一次">半年一次</Option>
<Option value="一年一次">一年一次</Option>
<Option value="1小时一次">1小时一次</Option>
<Option value="2小时一次">2小时一次</Option>
<Option value="3小时一次">3小时一次</Option>
<Option value="4小时一次">4小时一次</Option>
<Option value="6小时一次">6小时一次</Option>
<Option value="8小时一次">8小时一次</Option>
<Option value="12小时一次">12小时一次</Option>
</Select> */
}
</
Item
>
</
Col
>
<
Col
span=
{
24
}
>
...
...
@@ -790,7 +789,7 @@ const AddModal = props => {
rules=
{
[
{
required
:
true
,
message
:
'请
输入业务名称
'
,
message
:
'请
选择维保设备
'
,
},
{
validator
:
(
rule
,
value
)
=>
{
...
...
@@ -802,7 +801,7 @@ const AddModal = props => {
},
]
}
>
<
Select
placeholder=
"选择此计划关联的设备台账名称"
showSearch
>
{
/*
<Select placeholder="选择此计划关联的设备台账名称" showSearch>
{treeData
? treeData.map((item, index) => (
<Option key={index} value={item}>
...
...
@@ -810,6 +809,29 @@ const AddModal = props => {
</Option>
))
: ''}
</Select> */
}
<
TreeSelect
showSearch
dropdownStyle=
{
{
maxHeight
:
400
,
overflow
:
'auto'
}
}
placeholder=
"请选择执行周期"
allowClear
treeDefaultExpandAll
showCheckedStrategy
>
{
treeData
.
map
(
i
=>
mapTree
(
i
))
}
</
TreeSelect
>
</
Item
>
</
Col
>
<
Col
span=
{
24
}
>
<
Item
label=
"父业务模板"
name=
"parentId"
labelCol=
{
{
span
:
5
}
}
>
<
Select
placeholder=
"选择父业务模板"
showSearch
allowClear
>
{
parentList
?
parentList
.
map
((
item
,
index
)
=>
(
<
Option
key=
{
index
.
ID
}
value=
{
item
.
ID
}
>
{
item
.
TemplateName
}
</
Option
>
))
:
''
}
</
Select
>
</
Item
>
</
Col
>
...
...
src/pages/bsmanager/patrolMaintenance/maintenance/maintenance.jsx
View file @
1b61b19b
...
...
@@ -10,7 +10,13 @@ import {
GetDeviceConfigList
,
EditDeviceConfig
,
}
from
'@/services/maintenance/api'
;
import
{
EditTwoTone
,
DeleteOutlined
,
PlusOutlined
,
OrderedListOutlined
}
from
'@ant-design/icons'
;
import
{
EditTwoTone
,
DeleteOutlined
,
PlusOutlined
,
OrderedListOutlined
,
ApartmentOutlined
,
}
from
'@ant-design/icons'
;
import
styles
from
'./maintenance.less'
;
import
AddModal
from
'./AddModal'
;
import
OptionEditModal
from
'./OptionEditModal'
;
...
...
@@ -355,11 +361,17 @@ const maintenance = () => {
</
Tooltip
>
),
},
{
title
:
'父业务模板'
,
dataIndex
:
'parentBusinessName'
,
key
:
'parentBusinessName'
,
width
:
100
,
align
:
'center'
,
},
{
title
:
'反馈名称'
,
dataIndex
:
'feedbackName'
,
key
:
'feedbackName'
,
onCell
:
()
=>
({
style
:
{
maxWidth
:
200
,
...
...
src/pages/bsmanager/workOrder/workflowEdit/workFlowComponents/FlowChartRt.jsx
View file @
1b61b19b
...
...
@@ -1082,9 +1082,11 @@ const FlowChart = props => {
const
jsonData
=
val
=>
{
let
listArr
=
[];
val
.
map
((
item
,
index
)
=>
{
if
(
!
item
.
Config
){
console
.
log
(
item
);
debugger
;
if
(
!
item
.
Config
)
{
console
.
log
(
item
);
debugger
debugger
;
let
arr
=
[];
arr
.
push
({
mapServer
:
item
.
schemeName
,
...
...
@@ -1108,6 +1110,7 @@ const FlowChart = props => {
fromData
:
{
tableName
:
item
.
TableName
,
filed
:
item
.
Fields
,
filedShape
:
item
.
tableShape
,
},
toData
:
arr
,
},
...
...
@@ -1118,6 +1121,7 @@ const FlowChart = props => {
fromData
:
{
tableName
:
item
.
TableName
,
filed
:
item
.
Fields
,
filedShape
:
item
.
tableShape
,
},
toData
:
arr
,
},
...
...
@@ -1126,10 +1130,9 @@ const FlowChart = props => {
let
json
=
JSON
.
stringify
(
obj
);
let
newObj
=
{
Config
:
json
,
BackfillType
:
'GIS'
,
RuleName
:
item
.
RuleName
};
listArr
.
push
(
newObj
);
}
else
{
}
else
{
listArr
.
push
(
item
);
}
});
return
listArr
;
};
...
...
src/pages/bsmanager/workOrder/workflowEdit/workFlowComponents/flowChartComponents/nodeModalComponents/AddGIS.jsx
View file @
1b61b19b
...
...
@@ -43,6 +43,7 @@ const AddModal = props => {
const
[
tableType
,
setTableType
]
=
useState
();
const
[
tableName
,
setTableName
]
=
useState
();
const
[
ruleList
,
setRuleList
]
=
useState
([]);
const
[
tableShape
,
setTableShape
]
=
useState
();
const
[
form
]
=
Form
.
useForm
();
useEffect
(()
=>
{
...
...
@@ -54,7 +55,9 @@ const AddModal = props => {
setRuleList
(
arr
);
getSchemeList
();
if
(
modalType
===
'edit'
)
{
console
.
log
(
msg
);
form
.
setFieldsValue
(
msg
);
setTableShape
(
msg
.
tableShape
);
setTableType
(
msg
.
tableType
);
setTableName
(
msg
.
TableName
);
}
...
...
@@ -104,8 +107,6 @@ const AddModal = props => {
const
getLayerFields
=
(
val
,
key
,
value
,
typeFields
)
=>
{
let
obj
=
form
.
getFieldsValue
();
let
newValue
=
value
?
value
:
schemeValue
;
console
.
log
(
schemeValue
);
debugger
;
let
data
=
newValue
.
find
(
i
=>
i
.
servicename
===
obj
.
schemeName
);
GetLayerFields
({
mapServer
:
data
.
servicename
,
...
...
@@ -141,6 +142,7 @@ const AddModal = props => {
arr
.
push
(...
item
.
TableFields
);
});
let
data
=
arr
.
find
(
i
=>
i
.
FieldName
===
val
[
Object
.
keys
(
val
)[
0
]]);
setTableShape
(
data
.
FiledShape
);
setTableType
(
data
.
type
);
setType
(
data
.
FiledType
);
setTableName
(
data
.
table
);
...
...
@@ -178,7 +180,8 @@ const AddModal = props => {
}
else
{
obj
=
{
...
validate
,
key
:
msg
.
ID
||
msg
.
key
,
...
arr
};
}
onSubumit
(
obj
,
modalType
,
tableType
,
tableName
);
debugger
onSubumit
(
obj
,
modalType
,
tableType
,
tableName
,
tableShape
);
}
});
};
...
...
src/pages/bsmanager/workOrder/workflowEdit/workFlowComponents/flowChartComponents/nodeModalComponents/ConfigGIS.jsx
View file @
1b61b19b
...
...
@@ -81,6 +81,8 @@ const ConfigGIS = (props, ref) => {
let
obj
=
{};
if
(
item
.
Config
)
{
let
newConfig
=
JSON
.
parse
(
item
.
Config
);
console
.
log
(
newConfig
);
debugger
if
(
newConfig
.
mapping
)
{
let
users
=
[];
newConfig
.
mapping
[
0
].
toData
.
map
((
x
,
y
)
=>
{
...
...
@@ -90,6 +92,7 @@ const ConfigGIS = (props, ref) => {
obj
.
ID
=
index
;
obj
.
RuleName
=
item
.
RuleName
;
obj
.
TableName
=
newConfig
.
mapping
[
0
].
fromData
.
tableName
;
obj
.
tableShape
=
newConfig
.
mapping
[
0
].
fromData
.
filedShape
;
obj
.
key
=
index
;
obj
.
nodeName1
=
newConfig
.
mapping
[
0
].
toData
[
0
].
tableName
;
obj
.
nodeValue1
=
newConfig
.
mapping
[
0
].
toData
[
0
].
filed
;
...
...
@@ -112,6 +115,7 @@ const ConfigGIS = (props, ref) => {
obj
.
ID
=
index
;
obj
.
RuleName
=
item
.
RuleName
;
obj
.
TableName
=
newConfig
.
relationFormMapping
[
0
].
fromData
.
tableName
;
obj
.
tableShape
=
newConfig
.
relationFormMapping
[
0
].
fromData
.
filedShape
;
obj
.
key
=
index
;
obj
.
nodeName1
=
newConfig
.
relationFormMapping
[
0
].
toData
[
0
].
tableName
;
obj
.
nodeValue1
=
newConfig
.
relationFormMapping
[
0
].
toData
[
0
].
filed
;
...
...
@@ -176,20 +180,21 @@ const ConfigGIS = (props, ref) => {
setviewMsg
(
val
);
};
// GIS配置确定回调
const
saveView
=
(
val
,
type
,
tableType
,
TableName
)
=>
{
const
saveView
=
(
val
,
type
,
tableType
,
TableName
,
tableShape
)
=>
{
let
list
=
JSON
.
parse
(
JSON
.
stringify
(
tableData
.
current
));
// eslint-disable-next-line prefer-spread
let
newKey
=
list
.
length
>
0
?
Math
.
max
.
apply
(
Math
,
list
.
map
(
item
=>
item
.
key
))
+
1
:
0
;
if
(
type
===
'add'
)
{
list
.
push
({
...
val
,
key
:
newKey
,
tableType
,
TableName
});
list
.
push
({
...
val
,
key
:
newKey
,
tableType
,
TableName
,
tableShape
});
}
else
{
let
edtiIndex
=
list
.
findIndex
(
item
=>
item
.
key
===
val
.
key
);
list
[
edtiIndex
]
=
{
...
val
,
key
:
newKey
,
tableType
,
TableName
};
list
[
edtiIndex
]
=
{
...
val
,
key
:
newKey
,
tableType
,
TableName
,
tableShape
};
}
tableData
.
current
=
list
;
console
.
log
(
list
);
debugger
nodeChage
(
'FlowNodeBackfillConfigs'
,
tableData
.
current
);
setViewModal
(
false
);
};
...
...
src/pages/log/logCenter/index.jsx
0 → 100644
View file @
1b61b19b
/* eslint-disable no-else-return */
/* eslint-disable no-unneeded-ternary */
import
React
,
{
useState
,
useEffect
}
from
'react'
;
import
{
DatePicker
,
Input
,
Table
,
Row
,
Col
,
Button
,
notification
,
message
,
Tooltip
,
Spin
,
Pagination
,
Select
,
Tag
,
Modal
,
}
from
'antd'
;
import
{
SwapRightOutlined
,
SyncOutlined
}
from
'@ant-design/icons'
;
import
moment
from
'moment'
;
import
'moment/dist/locale/zh-cn'
;
import
locale
from
'antd/es/date-picker/locale/zh_CN'
;
import
styles
from
'./index.less'
;
import
{
GetCallLogPages
}
from
'@/services/logCenter/api'
;
const
{
RangePicker
}
=
DatePicker
;
const
LogCenter
=
()
=>
{
const
[
loading
,
setLoading
]
=
useState
(
false
);
// 源数据
const
[
requestUrl
,
setRequestUrl
]
=
useState
(
''
);
// 接口名称筛选
const
[
label
,
setLabel
]
=
useState
(
''
);
// 标签筛选
const
[
allTime
,
setAllTime
]
=
useState
([
moment
().
startOf
(
'month'
),
moment
(
new
Date
(),
'YYYY-MM-DD HH:mm:ss'
),
]);
const
[
showSearchStyle
,
setShowSearchStyle
]
=
useState
(
false
);
// 是否显示模糊查询样式
const
[
total
,
setTotal
]
=
useState
();
const
[
pageSize
,
setPageSize
]
=
useState
(
20
);
const
[
currentPage
,
setCurrentPage
]
=
useState
(
1
);
const
[
keepTableList
,
setKeepTableList
]
=
useState
([]);
const
[
loginCodeFilters
,
setLoginCodeFilters
]
=
useState
([]);
const
[
loginStateCodeFilters
,
setLoginStateCodeFilters
]
=
useState
([]);
const
[
filteredValue
,
setFilteredValue
]
=
useState
([]);
const
[
content
,
setContent
]
=
useState
();
const
[
modalVisible
,
setModalVisible
]
=
useState
(
false
);
useEffect
(()
=>
{
getTableList
();
},
[]);
const
getTableList
=
(
pageIndex
,
page
,
time
,
url
,
tag
)
=>
{
setLoading
(
true
);
GetCallLogPages
({
pageIndex
:
pageIndex
?
pageIndex
:
currentPage
,
pageSize
:
page
?
page
:
pageSize
,
sortFieldsAndDirection
:
''
,
isAll
:
true
,
dateFrom
:
time
?
time
[
0
].
format
(
'YYYY-MM-DD HH:mm:ss'
)
:
allTime
[
0
].
format
(
'YYYY-MM-DD HH:mm:ss'
),
dateTo
:
time
?
time
[
1
].
format
(
'YYYY-MM-DD HH:mm:ss'
)
:
allTime
[
1
].
format
(
'YYYY-MM-DD HH:mm:ss'
),
requestUrl
:
url
===
''
?
''
:
requestUrl
,
thirdUrl
:
''
,
label
:
tag
===
''
?
''
:
label
,
}).
then
(
res
=>
{
setLoading
(
false
);
if
(
res
.
code
===
0
)
{
setKeepTableList
(
res
.
data
.
list
);
setTotal
(
res
.
data
.
totalCount
);
setPageSize
(
res
.
data
.
pageSize
);
setCurrentPage
(
res
.
data
.
pageIndex
);
let
arr1
=
res
.
data
.
list
.
map
(
item
=>
item
.
code
);
arr1
=
arr1
.
filter
((
value
,
index
)
=>
arr1
.
indexOf
(
value
)
===
index
);
setLoginCodeFilters
(
arr1
.
map
(
item
=>
({
text
:
item
,
value
:
item
})));
let
arr2
=
res
.
data
.
list
.
map
(
item
=>
item
.
statusCode
);
arr2
=
arr2
.
filter
((
value
,
index
)
=>
arr2
.
indexOf
(
value
)
===
index
);
setLoginStateCodeFilters
(
arr2
.
map
(
item
=>
({
text
:
item
,
value
:
item
})));
}
else
{
setKeepTableList
([]);
notification
.
error
({
message
:
'提示'
,
duration
:
3
,
description
:
res
.
msg
,
});
}
});
};
const
columns
=
[
{
title
:
'接口标签'
,
dataIndex
:
'label'
,
key
:
'label'
,
width
:
150
,
fixed
:
'left'
,
render
:
item
=>
searchStyle1
(
item
),
},
{
title
:
'接口名称'
,
dataIndex
:
'requestUrl'
,
key
:
'requestUrl'
,
width
:
300
,
fixed
:
'left'
,
// render: item => searchStyle(item),
onCell
:
()
=>
({
style
:
{
maxWidth
:
400
,
overflow
:
'hidden'
,
whiteSpace
:
'nowrap'
,
textOverflow
:
'ellipsis'
,
cursor
:
'pointer'
,
},
}),
render
:
record
=>
(
<
Tooltip
placement=
"topLeft"
title=
{
record
}
>
{
searchStyle
(
record
)
}
</
Tooltip
>
),
},
{
title
:
'调用时间'
,
dataIndex
:
'time'
,
key
:
'time'
,
width
:
120
,
align
:
'center'
,
},
{
title
:
'调用结果'
,
dataIndex
:
'code'
,
key
:
'code'
,
width
:
100
,
align
:
'center'
,
filters
:
loginCodeFilters
,
onFilter
:
(
value
,
record
)
=>
record
.
code
===
value
,
filteredValue
,
render
:
record
=>
{
if
(
record
===
0
)
{
return
<
span
style=
{
{
color
:
'#6ecd3d'
,
fontWeight
:
'bold'
}
}
>
成功
</
span
>;
}
else
{
return
<
span
style=
{
{
color
:
'red'
,
fontWeight
:
'bold'
}
}
>
失败
</
span
>;
}
},
},
{
title
:
'耗时/ms'
,
dataIndex
:
'consumerTime'
,
key
:
'consumerTime'
,
align
:
'center'
,
width
:
80
,
},
{
title
:
'返回状态码'
,
dataIndex
:
'statusCode'
,
key
:
'statusCode'
,
width
:
100
,
align
:
'center'
,
filters
:
loginStateCodeFilters
,
onFilter
:
(
value
,
record
)
=>
record
.
statusCode
===
value
,
filteredValue
,
},
{
title
:
'请求方法'
,
dataIndex
:
'method'
,
key
:
'method'
,
width
:
80
,
align
:
'center'
,
// render: record => {
// if (record === 'GET') {
// return <span style={{ color: '#6ecd3d', fontWeight: 'bold' }}>GET</span>;
// } else if (record === 'POST') {
// return <span style={{ color: '#ffb880', fontWeight: 'bold' }}>POST</span>;
// }
// },
},
{
title
:
'返回体大小/byte'
,
dataIndex
:
'responseSize'
,
key
:
'responseSize'
,
width
:
130
,
align
:
'center'
,
},
{
title
:
'返回信息'
,
dataIndex
:
'message'
,
key
:
'message'
,
onCell
:
()
=>
({
style
:
{
maxWidth
:
400
,
overflow
:
'hidden'
,
whiteSpace
:
'nowrap'
,
textOverflow
:
'ellipsis'
,
cursor
:
'pointer'
,
},
}),
render
:
record
=>
(
<
Tooltip
placement=
"topLeft"
title=
{
record
}
>
{
record
}
</
Tooltip
>
),
},
{
title
:
'异常信息'
,
dataIndex
:
'exception'
,
key
:
'exception'
,
align
:
'center'
,
width
:
100
,
render
:
record
=>
{
if
(
record
)
{
return
(
<
Button
size=
"small"
type=
"primary"
onClick=
{
()
=>
{
handleLog
(
record
);
}
}
style=
{
{
backgroundColor
:
'red'
}
}
>
错误内容
</
Button
>
);
}
},
},
];
const
handleLog
=
text
=>
{
setModalVisible
(
true
);
setContent
(
text
);
};
// 模糊查询匹配的样式
const
searchStyle
=
val
=>
{
let
n
;
if
(
showSearchStyle
)
{
n
=
val
.
replace
(
new
RegExp
(
requestUrl
,
'g'
),
`<span style='color:red'>
${
requestUrl
}
</span>`
);
}
else
{
n
=
val
;
}
return
<
div
dangerouslySetInnerHTML=
{
{
__html
:
n
}
}
/>;
};
const
searchStyle1
=
val
=>
{
let
n
;
if
(
showSearchStyle
)
{
n
=
val
.
replace
(
new
RegExp
(
label
,
'g'
),
`<span style='color:red'>
${
label
}
</span>`
);
}
else
{
n
=
val
;
}
return
<
div
dangerouslySetInnerHTML=
{
{
__html
:
n
}
}
/>;
};
const
changeTime
=
time
=>
{
let
time1
=
time
[
0
].
format
(
'YYYY-MM'
);
let
time2
=
time
[
1
].
format
(
'YYYY-MM'
);
if
(
time1
!==
time2
)
{
message
.
warning
(
'不允许跨月查询'
);
}
else
{
setAllTime
(
time
);
setPageSize
(
20
);
setCurrentPage
(
1
);
getTableList
(
1
,
20
,
time
);
}
};
// 近1/6/12/24小时
const
setTime
=
time
=>
{
setAllTime
([
moment
(
new
Date
(
new
Date
().
getTime
()
-
time
*
60
*
60
*
1000
),
'YYYY-MM-DD HH:mm:ss'
),
moment
(
new
Date
(),
'YYYY-MM-DD HH:mm:ss'
),
]);
};
const
handleReset
=
()
=>
{
setAllTime
([
moment
().
startOf
(
'month'
),
moment
(
new
Date
(),
'YYYY-MM-DD HH:mm:ss'
)]);
setRequestUrl
(
''
);
setLabel
(
''
);
setShowSearchStyle
(
false
);
getTableList
(
1
,
20
,
[
moment
().
startOf
(
'month'
),
moment
(
new
Date
(),
'YYYY-MM-DD HH:mm:ss'
)],
''
,
''
,
);
};
const
paginationChange
=
(
page
,
pageSizes
)
=>
{
getTableList
(
page
,
pageSizes
);
setCurrentPage
(
page
);
setPageSize
(
pageSizes
);
};
const
onChangeInput
=
filters
=>
{
setFilteredValue
(
filters
.
code
,
filters
.
statusCode
);
};
return
(
<
div
className=
{
styles
.
centerLog
}
>
<
div
className=
{
styles
.
head
}
>
<
span
style=
{
{
lineHeight
:
2
,
marginLeft
:
'7px'
}
}
>
时间:
</
span
>
<
RangePicker
locale=
{
locale
}
showTime
format=
"YYYY-MM-DD HH:mm:ss"
onChange=
{
changeTime
}
value=
{
allTime
}
allowClear=
{
false
}
/>
<
span
style=
{
{
marginLeft
:
'20px'
}
}
>
接口名称:
</
span
>
<
Input
style=
{
{
width
:
'200px'
}
}
placeholder=
"请输入接口名称"
onChange=
{
e
=>
{
setRequestUrl
(
e
.
target
.
value
);
}
}
value=
{
requestUrl
}
allowClear
/>
<
span
style=
{
{
marginLeft
:
'20px'
}
}
>
接口标签:
</
span
>
<
Input
style=
{
{
width
:
'200px'
}
}
placeholder=
"请输入接口标签"
onChange=
{
e
=>
{
setLabel
(
e
.
target
.
value
);
}
}
value=
{
label
}
allowClear
/>
<
Button
type=
"primary"
style=
{
{
marginLeft
:
'10px'
}
}
onClick=
{
()
=>
{
setPageSize
(
20
);
setCurrentPage
(
1
);
getTableList
(
1
,
20
);
setShowSearchStyle
(
true
);
}
}
>
查询
</
Button
>
<
Button
icon=
{
<
SyncOutlined
className=
{
styles
.
icon
}
/>
}
onClick=
{
handleReset
}
style=
{
{
marginLeft
:
'25px'
,
verticalAlign
:
'middle'
,
marginTop
:
'-3px'
,
}
}
>
重置
</
Button
>
</
div
>
<
div
className=
{
styles
.
table
}
>
<
Table
size=
"small"
bordered
columns=
{
columns
}
dataSource=
{
keepTableList
}
scroll=
{
{
x
:
'max-content'
,
y
:
'calc(100vh - 225px)'
}
}
pagination=
{
false
}
onChange=
{
onChangeInput
}
loading=
{
loading
}
/>
</
div
>
<
div
className=
{
styles
.
footer
}
>
<
Pagination
total=
{
total
}
showTotal=
{
(
aa
,
range
)
=>
`第${range[0]}-${range[1]} 条/共 ${total} 条`
}
pageSizeOptions=
{
[
10
,
20
,
40
,
100
]
}
current=
{
currentPage
}
onChange=
{
paginationChange
}
size=
"small"
pageSize=
{
pageSize
}
showSizeChanger
/>
</
div
>
<
Modal
title=
"详细信息"
visible=
{
modalVisible
}
keyboard=
{
false
}
maskClosable
centered
onOk=
{
()
=>
setModalVisible
(
false
)
}
onCancel=
{
()
=>
setModalVisible
(
false
)
}
width=
"1000px"
bodyStyle=
{
{
minHeight
:
'100px'
,
maxHeight
:
'600px'
,
overflowY
:
'scroll'
,
}
}
style=
{
{
top
:
'40px'
}
}
footer=
{
[
<
Button
type=
"primary"
onClick=
{
()
=>
setModalVisible
(
false
)
}
key=
"back"
>
关闭窗口
</
Button
>,
]
}
>
{
content
}
</
Modal
>
</
div
>
);
};
export
default
LogCenter
;
src/pages/log/logCenter/index.less
0 → 100644
View file @
1b61b19b
.centerLog {
width: 100%;
height: 100%;
.head {
padding: 10px;
background: white;
margin-bottom: 2px;
width: 100%;
height: 52px;
}
.table {
height: calc(100% - 95px);
width: 100%;
background-color: white;
padding: 10px;
overflow: hidden;
margin-bottom: 3px;
}
.footer{
width: 100%;
height: 42px;
background-color: white;
display: flex;
justify-content: flex-end;
padding: 10px;
}
.icon {
margin-top: -5px !important;
vertical-align: text-bottom;
}
}
src/pages/platformCenter/hostmanager/gateWay/AddModal.jsx
View file @
1b61b19b
...
...
@@ -17,6 +17,7 @@ import { SaveRoutes } from '@/services/hostmanager/hostmanager';
import
{
InfoCircleOutlined
}
from
'@ant-design/icons'
;
const
{
Item
}
=
Form
;
const
{
TextArea
}
=
Input
;
const
AddModal
=
props
=>
{
const
{
callBackSubmit
=
()
=>
{},
type
,
pickItem
,
visible
,
onCancel
,
keepData
}
=
props
;
const
[
loading
,
setLoading
]
=
useState
(
false
);
...
...
@@ -40,6 +41,7 @@ const AddModal = props => {
IsAuthentication
:
pickItem
.
isAuthentication
,
Key
:
pickItem
.
key
,
Priority
:
pickItem
.
priority
,
Remark
:
pickItem
.
remark
,
UpstreamHost
:
pickItem
.
upstreamHost
,
AddHeasersToRequest
:
pickItem
.
addHeasersToRequest
,
UpstreamHeaderTransform
:
pickItem
.
upstreamHeaderTransform
,
...
...
@@ -103,6 +105,7 @@ const AddModal = props => {
Url
:
obj
.
Url
||
null
,
IsAuthentication
:
obj
.
IsAuthentication
,
Key
:
obj
.
Key
||
null
,
Remark
:
obj
.
Remark
||
null
,
Priority
:
obj
.
Priority
||
0
,
UpstreamHost
:
obj
.
UpstreamHost
||
null
,
AddHeasersToRequest
:
obj
.
AddHeasersToRequest
||
null
,
...
...
@@ -239,7 +242,7 @@ const AddModal = props => {
},
]
}
>
<
Input
allowClear
placeholder=
"示例:/{url}"
disabled=
{
hidden
}
/>
<
Input
allowClear
placeholder=
"示例:/{url}"
disabled=
{
hidden
}
/>
</
Item
>
<
Item
label=
"上游请求方式"
...
...
@@ -275,10 +278,6 @@ const AddModal = props => {
label=
"关键字"
name=
"Key"
rules=
{
[
{
required
:
true
,
message
:
'请输入关键字'
,
},
{
validator
:
(
rule
,
value
)
=>
{
let
val
=
form
.
getFieldValue
().
Key
;
...
...
@@ -300,6 +299,18 @@ const AddModal = props => {
>
<
Input
allowClear
disabled=
{
hidden
}
/>
</
Item
>
<
Item
label=
"备注"
name=
"Remark"
rules=
{
[
{
required
:
true
,
message
:
'请填写备注'
,
},
]
}
>
<
TextArea
placeholder=
"请填写备注"
allowClear
/>
</
Item
>
<
Row
>
<
Col
span=
{
8
}
>
<
Item
...
...
src/pages/platformCenter/hostmanager/gateWay/gateWay.jsx
View file @
1b61b19b
...
...
@@ -69,13 +69,6 @@ const GateConfig = () => {
console
.
log
(
checked
);
if
(
checked
)
{
setAllLoading
(
true
);
// axios({
// method: 'get',
// url: `${tableData[0].url}/PandaOMS/OMS/health/get`,
// }).then(res => {
// console.log(res);
// debugger;
// });
GetWayHealthCheck
().
then
(
resData
=>
{
setAllLoading
(
false
);
if
(
resData
.
code
===
0
)
{
...
...
src/routes/config.js
View file @
1b61b19b
...
...
@@ -167,6 +167,7 @@ const MobileConfigPage = asyncComponent(() => import('@/pages/productCenter/mobi
const
ServiceLog
=
asyncComponent
(()
=>
import
(
'@/pages/log/serviceLog'
));
const
LoginLog
=
asyncComponent
(()
=>
import
(
'@/pages/log/loginLog'
));
const
OmsLog
=
asyncComponent
(()
=>
import
(
'@/pages/log/omsLog'
));
const
LogCenter
=
asyncComponent
(()
=>
import
(
'@/pages/log/logCenter'
));
const
superAuthority
=
[
USER_MODE
.
SUPER
];
const
adminAuthority
=
[...
superAuthority
,
USER_MODE
.
ADMIN
];
const
iconStyle
=
{
verticalAlign
:
'middle'
};
...
...
@@ -529,6 +530,11 @@ export default {
name
:
'运维痕迹'
,
component
:
OmsLog
,
},
{
path
:
'/system/logCenter'
,
name
:
'日志管理'
,
component
:
LogCenter
,
},
],
},
],
...
...
src/services/logCenter/api.js
0 → 100644
View file @
1b61b19b
/* eslint-disable camelcase */
/*
* @Description:
* @Author: leizhe
* @Date: 2021-09-27 09:42:21
* @LastEditTime: 2022-04-19 14:56:50
* @LastEditors: leizhe
*/
import
{
get
,
PUBLISH_SERVICE
,
post
,
postForm
}
from
'../index'
;
// 获取错误日志、业务日志、第三方调用日志
export
const
GetCallLogPages
=
data
=>
post
(
`/PandaCore/GCK/Log/GetCallLogPages`
,
data
);
src/services/maintenance/api.js
View file @
1b61b19b
...
...
@@ -24,6 +24,10 @@ export const CM_XWBPlan_DataList = query =>
export
const
CM_XWBPlan_AccountTable
=
query
=>
get
(
`
${
PUBLISH_SERVICE
}
/WorkOrderCenter/CM_XWBPlan_AccountTable`
,
query
);
// 巡维保计划关联设备台账表、普通台账
export
const
CM_XWBPlan_DeviceAccountTable
=
query
=>
get
(
`
${
PUBLISH_SERVICE
}
/WorkOrderCenter/CM_XWBPlan_DeviceAccountTable`
,
query
);
// 计划关联反馈台账表
export
const
CM_XWBPlan_feedbackTable
=
query
=>
get
(
`
${
PUBLISH_SERVICE
}
/WorkOrderCenter/CM_XWBPlan_feedbackTable`
,
query
);
...
...
@@ -39,3 +43,7 @@ export const CM_XWBPlan_DataEditORAdd = data =>
// 巡维保计划数据编辑OR添加
export
const
CM_XWBPlan_ChangeOrder
=
planIds
=>
post
(
`
${
PUBLISH_SERVICE
}
/WorkOrderCenter/CM_XWBPlan_ChangeOrder?planIds=
${
planIds
}
`
);
// 获取父级维保模板
export
const
GetParentDeviceTemplate
=
query
=>
get
(
`
${
PUBLISH_SERVICE
}
/WorkOrderCenter/GetParentDeviceTemplate`
,
query
);
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