Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Contribute to GitLab
Sign in / Register
Toggle navigation
G
gassafety
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
耿迪迪
gassafety
Commits
66eb8ffe
Commit
66eb8ffe
authored
Aug 06, 2021
by
耿迪迪
Browse files
Options
Browse Files
Download
Plain Diff
燃气设备监控配置 gengdidi
parents
3b37c54f
b5fdea59
Hide whitespace changes
Inline
Side-by-side
Showing
13 changed files
with
528 additions
and
175 deletions
+528
-175
TDeviceInfoServiceImpl.java
...om/zehong/system/service/impl/TDeviceInfoServiceImpl.java
+11
-11
lineInfoWindow.vue
gassafety-web/src/components/PopWindowGis/lineInfoWindow.vue
+40
-40
markerInfoWindow.vue
...fety-web/src/components/PopWindowGis/markerInfoWindow.vue
+63
-46
markerInfoWindowWarn.vue
...-web/src/components/PopWindowGis/markerInfoWindowWarn.vue
+220
-0
index.vue
gassafety-web/src/components/TopNav/index.vue
+22
-2
ResizeHandler.js
gassafety-web/src/layout/mixin/ResizeHandler.js
+22
-16
permission.js
gassafety-web/src/permission.js
+40
-31
app.js
gassafety-web/src/store/modules/app.js
+1
-0
permission.js
gassafety-web/src/store/modules/permission.js
+5
-2
gaodeMapView.js
gassafety-web/src/utils/gaodeMapView.js
+7
-2
index.vue
...y-web/src/views/deviceInspection/inspectionPlan/index.vue
+9
-9
RightBototmData.vue
...c/views/enterprise/mapView/components/RightBototmData.vue
+75
-11
index.vue
gassafety-web/src/views/enterprise/mapView/index.vue
+13
-5
No files found.
gassafety-system/src/main/java/com/zehong/system/service/impl/TDeviceInfoServiceImpl.java
View file @
66eb8ffe
...
...
@@ -102,14 +102,14 @@ public class TDeviceInfoServiceImpl implements ITDeviceInfoService
for
(
TPipe
pipe
:
pipeList
){
Map
<
Object
,
Object
>
map
=
new
HashMap
<>();
map
.
put
(
"id"
,
pipe
.
getPipeId
());
map
.
put
(
"level"
,
2
);
map
.
put
(
"level"
,
"2"
);
map
.
put
(
"name"
,
pipe
.
getPipeName
());
childNodeList
.
add
(
map
);
}
Map
<
Object
,
Object
>
treeNode
=
new
HashMap
<>();
treeNode
.
put
(
"id"
,
0
);
treeNode
.
put
(
"level"
,
1
);
treeNode
.
put
(
"id"
,
"0"
);
treeNode
.
put
(
"level"
,
"1"
);
treeNode
.
put
(
"name"
,
"管道"
);
treeNode
.
put
(
"childList"
,
childNodeList
);
...
...
@@ -141,23 +141,23 @@ public class TDeviceInfoServiceImpl implements ITDeviceInfoService
}
Map
<
Object
,
Object
>
treeNode1
=
new
HashMap
<>();
treeNode1
.
put
(
"id"
,
1
);
treeNode1
.
put
(
"level"
,
1
);
treeNode1
.
put
(
"id"
,
"1"
);
treeNode1
.
put
(
"level"
,
"1"
);
treeNode1
.
put
(
"name"
,
"调压阀"
);
treeNode1
.
put
(
"childList"
,
childNodeList1
);
Map
<
Object
,
Object
>
treeNode2
=
new
HashMap
<>();
treeNode2
.
put
(
"id"
,
2
);
treeNode2
.
put
(
"level"
,
1
);
treeNode2
.
put
(
"id"
,
"2"
);
treeNode2
.
put
(
"level"
,
"1"
);
treeNode2
.
put
(
"name"
,
"阀门井"
);
treeNode2
.
put
(
"childList"
,
childNodeList2
);
Map
<
Object
,
Object
>
treeNode3
=
new
HashMap
<>();
treeNode3
.
put
(
"id"
,
3
);
treeNode3
.
put
(
"level"
,
1
);
treeNode3
.
put
(
"id"
,
"3"
);
treeNode3
.
put
(
"level"
,
"1"
);
treeNode3
.
put
(
"name"
,
"流量计"
);
treeNode3
.
put
(
"childList"
,
childNodeList3
);
Map
<
Object
,
Object
>
treeNode4
=
new
HashMap
<>();
treeNode4
.
put
(
"id"
,
4
);
treeNode4
.
put
(
"level"
,
1
);
treeNode4
.
put
(
"id"
,
"4"
);
treeNode4
.
put
(
"level"
,
"1"
);
treeNode4
.
put
(
"name"
,
"压力表"
);
treeNode4
.
put
(
"childList"
,
childNodeList4
);
...
...
gassafety-web/src/components/PopWindowGis/lineInfoWindow.vue
View file @
66eb8ffe
...
...
@@ -7,7 +7,7 @@
</div>
</div>
<!-- 设备信息 -->
<!--
报警
设备信息 -->
<div
class=
"content"
>
<div
class=
"eq-content display-default"
>
<div
class=
"text-wrapper"
>
...
...
@@ -59,11 +59,7 @@
<
el
-
col
:
span
=
"13"
>
<
div
>
<
span
>
最后巡检日期:
<
/span
>
<
span
>
{{
obj
.
inspectionTime
?
obj
.
inspectionTime
:
"-"
}}
<
/span
>
<
span
>
{{
obj
.
inspectionTime
?
obj
.
inspectionTime
:
"-"
}}
<
/span
>
<
/div
>
<
/el-col
>
...
...
@@ -71,23 +67,24 @@
<
span
>
管道所在地址:
<
/span
>
<
span
>
{{
obj
.
pipeAddr
}}
<
/span
>
<
/div
>
<
div
>
<
div
style
=
"padding: 0"
>
<
span
>
备注信息:
<
/span
>
<
span
>
{{
obj
.
remarks
}}
<
/span
>
<
/div
>
<
/div
>
<
template
v
-
if
=
"!obj.editorPage"
>
<
div
class
=
"warn-content"
>
<
div
>
报警状态
<
span
>
报警
<
/span></
div
>
<
div
>
详细信息:
<
span
>
管线两端设备压差较大,管线可能泄漏
<
/span></
div
>
<
/div
>
<
div
class
=
"btn"
>
<
el
-
button
class
=
"elbtn"
type
=
"primary"
>
生成工单
<
/el-button
>
<
/div
>
<
/template
>
<
/div
>
<!--
报警状态
-->
<
div
class
=
"warn-wrapper"
v
-
if
=
"true"
>
<!--
<
div
class
=
"warn-content"
>
<
div
>
报警状态:
<
span
>
报警
<
/span></
div
>
<
div
>
详细信息:
<
span
>
管线两端设备压差较大,管线可能泄漏
<
/span></
div
>
<
/div> --
>
<
div
class
=
"btn"
>
<
el
-
button
class
=
"elbtn"
type
=
"primary"
>
设备详情
<
/el-button
>
<!--
<
el
-
button
class
=
"elbtn"
type
=
"primary"
>
生成工单
<
/el-button> --
>
<
/div
>
<
/div
>
<
/div
>
<
/template
>
...
...
@@ -135,15 +132,15 @@ export default {
<
style
lang
=
"scss"
scoped
>
.
wrapper
{
width
:
406
px
;
// height: 488
px;
max
-
height
:
430
px
;
background
:
#
fff
;
border
-
radius
:
4
px
;
box
-
shadow
:
0
px
3
px
6
px
rgba
(
0
,
0
,
0
,
0.16
);
//
overflow: hidden;
overflow
:
hidden
;
.
top
{
width
:
100
%
;
height
:
51
px
;
background
-
color
:
#
053
b6a
;
background
-
color
:
#
053
B6A
;
.
text
{
font
-
weight
:
600
;
font
-
size
:
16
px
;
...
...
@@ -162,9 +159,11 @@ export default {
}
.
content
{
position
:
relative
;
max
-
height
:
4
00
px
;
max
-
height
:
3
00
px
;
overflow
:
hidden
;
overflow
-
y
:
auto
;
padding
-
bottom
:
2
px
;
border
-
bottom
:
1
px
solid
#
eeeeee
;
.
eq
-
content
{
// min-height: 156px;
box
-
sizing
:
border
-
box
;
...
...
@@ -209,7 +208,7 @@ export default {
max
-
height
:
119
px
;
padding
-
left
:
22
px
;
// padding-right: 22px;
padding
-
bottom
:
10
px
;
//
padding-bottom: 10px;
// padding-top: 16px;
box
-
sizing
:
border
-
box
;
// border-bottom: 1px solid #e2e2e2;
...
...
@@ -225,26 +224,27 @@ export default {
}
}
}
.
warn
-
content
{
height
:
82
px
;
box
-
sizing
:
border
-
box
;
padding
:
8
px
0
0
22
px
;
border
-
bottom
:
1
px
solid
#
e2e2e2
;
&
>
div
{
font
-
size
:
14
px
;
font
-
weight
:
400
;
margin
-
bottom
:
8
px
;
.
warn
-
wrapper
{
.
warn
-
content
{
box
-
sizing
:
border
-
box
;
padding
:
10
px
0
2
px
22
px
;
border
-
bottom
:
1
px
solid
#
e2e2e2
;
color
:
#
FE5966
;
&
>
div
{
font
-
size
:
14
px
;
font
-
weight
:
400
;
margin
-
bottom
:
8
px
;
}
}
}
.
btn
{
padding
-
top
:
32
px
;
text
-
align
:
center
;
.
elbtn
{
background
-
color
:
#
053
b6a
;
box
-
shadow
:
0
px
3
px
6
px
rgba
(
0
,
0
,
0
,
0.16
)
;
width
:
95
px
;
height
:
33
px
;
.
btn
{
padding
:
16
px
0
;
text
-
align
:
center
;
.
elbtn
{
background
-
color
:
#
053
b6a
;
box
-
shadow
:
0
px
3
px
6
px
rgba
(
0
,
0
,
0
,
0.16
)
;
width
:
95
px
;
height
:
33
px
;
}
}
}
}
...
...
gassafety-web/src/components/PopWindowGis/markerInfoWindow.vue
View file @
66eb8ffe
...
...
@@ -2,41 +2,51 @@
<div
class=
"wrapper"
>
<span
class=
"dot-left"
></span>
<div
class=
"top display-default"
>
<div
class=
"left text"
>
{{
data
.
deviceName
}}
</div>
<div
class=
"left text"
>
{{
data
.
deviceName
}}
</div>
<div
class=
"right text"
>
<img
src=
"../../assets/images/closeBtn.png"
alt=
""
@
click=
"map.clearInfoWindow()"
/>
<img
src=
"../../assets/images/closeBtn.png"
alt=
""
@
click=
"map.clearInfoWindow()"
/>
</div>
</div>
<!-- 设备信息 -->
<div
class=
"content"
>
<div
class=
"eq-content display-default"
>
<div
class=
"text-wrapper"
>
<div
class=
"eq-text"
>
设备类型:
<span>
{{
title
}}
</span></div>
<div
class=
"eq-text"
>
设备型号:
<span>
{{
data
.
deviceModel
}}
</span></div>
<div
class=
"eq-text"
>
所属管道:
<span>
{{
data
.
pipeCode
}}
</span></div>
<div
class=
"eq-text"
>
物联网编号:
<span>
{{
data
.
iotNo
}}
</span></div>
<div
class=
"eq-text"
>
设备类型:
<span>
{{
title
}}
</span>
</div>
<div
class=
"eq-text"
>
设备型号:
<span>
{{
data
.
deviceModel
}}
</span>
</div>
<div
class=
"eq-text"
>
所属管道:
<span>
{{
data
.
pipeCode
}}
</span>
</div>
<div
class=
"eq-text"
>
物联网编号:
<span>
{{
data
.
iotNo
}}
</span>
</div>
</div>
<div
class=
"pic"
>
<img
v-bind:src=
"data.iconUrl"
alt=
""
/>
</div>
</div>
<!-- 维修人员 -->
<div
class=
"maintain-content"
>
<div
class=
"maintain-content"
>
<el-col
:span=
"11"
>
<div>
<span>
安装日期:
</span>
<span>
{{
moment
(
data
.
installationTime
).
format
(
"YYYY-MM-DD"
)
}}
</span>
<span>
{{
moment
(
data
.
installationTime
).
format
(
"YYYY-MM-DD"
)
}}
</span>
</div>
</el-col>
<el-col
:span=
"13"
>
<div>
<span>
最后巡检日期:
</span>
<span>
{{
data
.
inspectionTime
?
data
.
inspectionTime
:
"-"
}}
</span>
<span>
{{
data
.
inspectionTime
?
data
.
inspectionTime
:
"-"
}}
</span>
</div>
</el-col>
...
...
@@ -49,37 +59,42 @@
<span>
{{
data
.
remarks
}}
</span>
</div>
</div>
<!-- 报警状态 -->
<!--
<div
class=
"warn-content"
>
<div>
报警状态
<span>
报警
</span></div>
<div>
详细信息:
<span>
管线两端设备压差较大,管线可能泄漏
</span></div>
</div>
-->
</div>
<!-- 报警状态 -->
<div
class=
"warn-wrapper"
v-if=
"true"
>
<!--
<div
class=
"warn-content"
>
<div>
报警状态:
<span>
报警
</span></div>
<div>
详细信息:
<span>
管线两端设备压差较大,管线可能泄漏
</span></div>
</div>
-->
<div
class=
"btn"
>
<el-button
class=
"elbtn"
type=
"primary"
>
设备详情
</el-button>
<!--
<el-button
class=
"elbtn"
type=
"primary"
>
生成工单
</el-button>
-->
</div>
</div>
</div>
</
template
>
<
script
>
import
moment
from
"moment"
import
moment
from
"moment"
;
//line移入时的的infowindow
export
default
{
props
:
{
obj
:
{
typs
:
Object
},
title
:
""
,
data
:
{},
map
:
null
map
:
null
,
},
methods
:{
methods
:
{
moment
,
}
},
};
</
script
>
<
style
lang=
"scss"
scoped
>
.wrapper
{
width
:
406px
;
// height: 488
px;
max-height
:
430
px
;
background
:
#fff
;
border-radius
:
4px
;
box-shadow
:
0px
3px
6px
rgba
(
0
,
0
,
0
,
0
.16
);
...
...
@@ -106,9 +121,11 @@ export default {
}
.content
{
position
:
relative
;
max-height
:
4
00px
;
max-height
:
3
00px
;
overflow
:
hidden
;
overflow-y
:
auto
;
padding-bottom
:
2px
;
border-bottom
:
1px
solid
#eeeeee
;
.eq-content
{
// min-height: 156px;
box-sizing
:
border-box
;
...
...
@@ -153,7 +170,7 @@ export default {
max-height
:
119px
;
padding-left
:
22px
;
// padding-right: 22px;
padding-bottom
:
10px
;
//
padding-bottom: 10px;
// padding-top: 16px;
box-sizing
:
border-box
;
// border-bottom: 1px solid #e2e2e2;
...
...
@@ -169,26 +186,27 @@ export default {
}
}
}
.warn-content
{
height
:
82px
;
box-sizing
:
border-box
;
padding
:
8px
0
0
22px
;
border-bottom
:
1px
solid
#e2e2e2
;
&
>
div
{
font-size
:
14px
;
font-weight
:
400
;
margin-bottom
:
8px
;
.warn-wrapper
{
.warn-content
{
box-sizing
:
border-box
;
padding
:
10px
0
2px
22px
;
border-bottom
:
1px
solid
#e2e2e2
;
color
:
#fe5966
;
&
>
div
{
font-size
:
14px
;
font-weight
:
400
;
margin-bottom
:
8px
;
}
}
}
.btn
{
padding-top
:
32px
;
text-align
:
center
;
.elbtn
{
background-color
:
#053b6a
;
box-shadow
:
0px
3px
6px
rgba
(
0
,
0
,
0
,
0
.16
)
;
width
:
95
px
;
height
:
33px
;
.btn
{
padding
:
16px
0
;
text-align
:
center
;
.elbtn
{
background-color
:
#053b6a
;
box-shadow
:
0px
3px
6px
rgba
(
0
,
0
,
0
,
0
.16
)
;
width
:
95px
;
height
:
33
px
;
}
}
}
}
...
...
@@ -199,5 +217,4 @@ export default {
display
:
flex
;
justify-content
:
space-between
;
}
</
style
>
gassafety-web/src/components/PopWindowGis/markerInfoWindowWarn.vue
0 → 100644
View file @
66eb8ffe
<
template
>
<div
class=
"wrapper"
>
<span
class=
"dot-left"
></span>
<div
class=
"top display-default"
>
<div
class=
"left text"
>
{{
data
.
deviceName
}}
</div>
<div
class=
"right text"
>
<img
src=
"../../assets/images/closeBtn.png"
alt=
""
@
click=
"map.clearInfoWindow()"
/>
</div>
</div>
<!-- 设备信息 -->
<div
class=
"content"
>
<div
class=
"eq-content display-default"
>
<div
class=
"text-wrapper"
>
<div
class=
"eq-text"
>
设备类型:
<span>
{{
title
}}
</span>
</div>
<div
class=
"eq-text"
>
设备型号:
<span>
{{
data
.
deviceModel
}}
</span>
</div>
<div
class=
"eq-text"
>
所属管道:
<span>
{{
data
.
pipeCode
}}
</span>
</div>
<div
class=
"eq-text"
>
物联网编号:
<span>
{{
data
.
iotNo
}}
</span>
</div>
</div>
<div
class=
"pic"
>
<img
v-bind:src=
"data.iconUrl"
alt=
""
/>
</div>
</div>
<!-- 维修人员 -->
<div
class=
"maintain-content"
>
<el-col
:span=
"11"
>
<div>
<span>
安装日期:
</span>
<span>
{{
moment
(
data
.
installationTime
).
format
(
"YYYY-MM-DD"
)
}}
</span>
</div>
</el-col>
<el-col
:span=
"13"
>
<div>
<span>
最后巡检日期:
</span>
<span>
{{
data
.
inspectionTime
?
data
.
inspectionTime
:
"-"
}}
</span>
</div>
</el-col>
<div>
<span>
管道所在地址:
</span>
<span>
{{
data
.
pipeAddr
}}
</span>
</div>
<div>
<span>
备注信息:
</span>
<span>
{{
data
.
remarks
}}
</span>
</div>
</div>
</div>
<!-- 报警状态 -->
<div
class=
"warn-wrapper"
v-if=
"true"
>
<!--
<div
class=
"warn-content"
>
<div>
报警状态:
<span>
报警
</span></div>
<div>
详细信息:
<span>
管线两端设备压差较大,管线可能泄漏
</span></div>
</div>
-->
<div
class=
"btn"
>
<el-button
class=
"elbtn"
type=
"primary"
>
设备详情
</el-button>
<el-button
class=
"elbtn"
type=
"primary"
>
生成工单
</el-button>
</div>
</div>
</div>
</
template
>
<
script
>
import
moment
from
"moment"
;
//line移入时的的infowindow
export
default
{
props
:
{
obj
:
{
typs
:
Object
},
title
:
""
,
data
:
{},
map
:
null
,
},
methods
:
{
moment
,
},
};
</
script
>
<
style
lang=
"scss"
scoped
>
.wrapper
{
width
:
406px
;
max-height
:
430px
;
background
:
#fff
;
border-radius
:
4px
;
box-shadow
:
0px
3px
6px
rgba
(
0
,
0
,
0
,
0
.16
);
overflow
:
hidden
;
.top
{
width
:
100%
;
height
:
51px
;
background-color
:
#FF5A67
;
.text
{
font-weight
:
600
;
font-size
:
16px
;
color
:
#ffffff
;
line-height
:
51px
;
}
.left
{
padding-left
:
22px
;
}
.right
{
padding-right
:
22px
;
img
{
cursor
:
pointer
;
}
}
}
.content
{
position
:
relative
;
max-height
:
300px
;
overflow
:
hidden
;
overflow-y
:
auto
;
padding-bottom
:
2px
;
border-bottom
:
1px
solid
#eeeeee
;
.eq-content
{
// min-height: 156px;
box-sizing
:
border-box
;
padding
:
13px
22px
0px
22px
;
// border-bottom: 1px solid #e2e2e2;
.text-wrapper
{
padding-top
:
1px
;
&
>
div
{
margin-bottom
:
6px
;
}
.eq-text
{
font-size
:
14px
;
font-weight
:
400
;
color
:
#1d1d1d
;
opacity
:
1
;
&
>
span
{
vertical-align
:
top
;
display
:
inline-block
;
// white-space: nowrap;
// text-overflow: ellipsis;
// overflow: hidden;
word-break
:
break-all
;
max-width
:
100px
;
}
}
}
.pic
{
width
:
180px
;
height
:
103px
;
// background-color: black;
img
{
width
:
100%
;
height
:
100%
;
// cursor: pointer;
}
}
}
}
.maintain-content
{
width
:
100%
;
max-height
:
119px
;
padding-left
:
22px
;
// padding-right: 22px;
// padding-bottom: 10px;
// padding-top: 16px;
box-sizing
:
border-box
;
// border-bottom: 1px solid #e2e2e2;
&
>
div
{
margin-bottom
:
8px
;
font-size
:
14px
;
font-weight
:
400
;
span
{
vertical-align
:
top
;
display
:
inline-block
;
word-break
:
break-all
;
max-width
:
280px
;
}
}
}
.warn-wrapper
{
.warn-content
{
box-sizing
:
border-box
;
padding
:
10px
0
2px
22px
;
border-bottom
:
1px
solid
#e2e2e2
;
color
:
#fe5966
;
&
>
div
{
font-size
:
14px
;
font-weight
:
400
;
margin-bottom
:
8px
;
}
}
.btn
{
padding
:
16px
0
;
text-align
:
center
;
.elbtn
{
background-color
:
#053b6a
;
box-shadow
:
0px
3px
6px
rgba
(
0
,
0
,
0
,
0
.16
);
width
:
95px
;
height
:
33px
;
}
}
}
}
.wrapperEditorPage
{
}
.display-default
{
display
:
flex
;
justify-content
:
space-between
;
}
</
style
>
gassafety-web/src/components/TopNav/index.vue
View file @
66eb8ffe
...
...
@@ -37,6 +37,7 @@
<
script
>
import
{
constantRoutes
}
from
"@/router"
;
import
"../../common/font/font.css"
;
export
default
{
data
()
{
...
...
@@ -47,6 +48,7 @@ export default {
isFrist
:
false
,
// 当前激活菜单的 index
currentIndex
:
undefined
,
myRouter
:
[],
};
},
computed
:
{
...
...
@@ -133,7 +135,9 @@ export default {
},
// 菜单选择事件
handleSelect
(
key
,
keyPath
)
{
console
.
log
(
key
)
console
.
log
(
"key"
,
key
);
console
.
log
(
"keypath"
,
keyPath
);
let
path
;
this
.
currentIndex
=
key
;
if
(
this
.
ishttp
(
key
))
{
// http(s):// 路径新窗口打开
...
...
@@ -143,7 +147,18 @@ export default {
this
.
$router
.
push
({
path
:
key
.
replace
(
"/redirect"
,
""
)
});
}
else
{
// 显示左侧联动菜单
this
.
activeRoutes
(
key
);
path
=
this
.
activeRoutes
(
key
);
if
(
this
.
$route
.
path
!=
path
[
0
].
path
)
{
this
.
$router
.
push
(
path
[
0
].
path
);
}
// if (key == "/enterprise") {
// // this.$store.commit("TOGGLE_DEVICE","mobile");
// this.$store.dispatch("app/toggleDevice", "mobile");
// } else {
// this.$store.dispatch("app/toggleDevice", "desktop");
// }
// TOGGLE_DEVICE
}
},
// 当前激活的路由
...
...
@@ -156,9 +171,14 @@ export default {
}
});
}
// console.log(this.myRouter)
// console.log(this.myRouter)
if
(
routes
.
length
>
0
)
{
this
.
$store
.
commit
(
"SET_SIDEBAR_ROUTERS"
,
routes
);
}
return
routes
;
},
ishttp
(
url
)
{
...
...
gassafety-web/src/layout/mixin/ResizeHandler.js
View file @
66eb8ffe
import
store
from
'@/store'
import
store
from
"@/store"
;
const
{
body
}
=
document
const
WIDTH
=
992
// refer to Bootstrap's responsive design
const
{
body
}
=
document
;
const
WIDTH
=
992
;
// refer to Bootstrap's responsive design
export
default
{
watch
:
{
$route
(
route
)
{
if
(
this
.
device
===
'mobile'
&&
this
.
sidebar
.
opened
)
{
store
.
dispatch
(
'app/closeSideBar'
,
{
withoutAnimation
:
false
})
if
(
this
.
device
===
"mobile"
&&
this
.
sidebar
.
opened
)
{
store
.
dispatch
(
"app/closeSideBar"
,
{
withoutAnimation
:
false
});
}
}
},
beforeMount
()
{
window
.
addEventListener
(
'resize'
,
this
.
$_resizeHandler
)
window
.
addEventListener
(
"resize"
,
this
.
$_resizeHandler
);
},
beforeDestroy
()
{
window
.
removeEventListener
(
'resize'
,
this
.
$_resizeHandler
)
window
.
removeEventListener
(
"resize"
,
this
.
$_resizeHandler
);
},
mounted
()
{
const
isMobile
=
this
.
$_isMobile
()
const
isMobile
=
this
.
$_isMobile
()
;
if
(
isMobile
)
{
store
.
dispatch
(
'app/toggleDevice'
,
'mobile'
)
store
.
dispatch
(
'app/closeSideBar'
,
{
withoutAnimation
:
true
})
store
.
dispatch
(
"app/toggleDevice"
,
"mobile"
);
store
.
dispatch
(
"app/closeSideBar"
,
{
withoutAnimation
:
true
});
}
},
methods
:
{
// use $_ for mixins properties
// https://vuejs.org/v2/style-guide/index.html#Private-property-names-essential
$_isMobile
()
{
const
rect
=
body
.
getBoundingClientRect
()
return
rect
.
width
-
1
<
WIDTH
const
rect
=
body
.
getBoundingClientRect
()
;
return
rect
.
width
-
1
<
WIDTH
;
},
$_resizeHandler
()
{
if
(
!
document
.
hidden
)
{
const
isMobile
=
this
.
$_isMobile
()
store
.
dispatch
(
'app/toggleDevice'
,
isMobile
?
'mobile'
:
'desktop'
)
const
isMobile
=
this
.
$_isMobile
();
// console.log(this.$route.path)
// 当是gis地图的时候左边隐藏
if
(
this
.
$route
.
path
==
"/enterprise/mapView"
)
{
store
.
dispatch
(
"app/toggleDevice"
,
"mobile"
);
}
else
{
store
.
dispatch
(
"app/toggleDevice"
,
isMobile
?
"mobile"
:
"desktop"
);
}
if
(
isMobile
)
{
store
.
dispatch
(
'app/closeSideBar'
,
{
withoutAnimation
:
true
})
store
.
dispatch
(
"app/closeSideBar"
,
{
withoutAnimation
:
true
});
}
}
}
}
}
}
;
gassafety-web/src/permission.js
View file @
66eb8ffe
import
router
from
'./router'
import
store
from
'./store'
import
{
Message
}
from
'element-ui'
import
NProgress
from
'nprogress'
import
'nprogress/nprogress.css'
import
{
getToken
}
from
'@/utils/auth'
import
router
from
"./router"
;
import
store
from
"./store"
;
import
{
Message
}
from
"element-ui"
;
import
NProgress
from
"nprogress"
;
import
"nprogress/nprogress.css"
;
import
{
getToken
}
from
"@/utils/auth"
;
NProgress
.
configure
({
showSpinner
:
false
})
NProgress
.
configure
({
showSpinner
:
false
})
;
const
whiteList
=
[
'/login'
,
'/auth-redirect'
,
'/bind'
,
'/register'
]
const
whiteList
=
[
"/login"
,
"/auth-redirect"
,
"/bind"
,
"/register"
];
router
.
beforeEach
((
to
,
from
,
next
)
=>
{
NProgress
.
start
()
NProgress
.
start
()
;
if
(
getToken
())
{
/* has token*/
if
(
to
.
path
===
'/login'
)
{
next
({
path
:
'/'
})
NProgress
.
done
()
if
(
to
.
path
===
"/login"
)
{
next
({
path
:
"/"
});
NProgress
.
done
()
;
}
else
{
if
(
store
.
getters
.
roles
.
length
===
0
)
{
// 判断当前用户是否已拉取完user_info信息
store
.
dispatch
(
'GetInfo'
).
then
(()
=>
{
store
.
dispatch
(
'GenerateRoutes'
).
then
(
accessRoutes
=>
{
// 根据roles权限生成可访问的路由表
router
.
addRoutes
(
accessRoutes
)
// 动态添加可访问路由表
next
({
...
to
,
replace
:
true
})
// hack方法 确保addRoutes已完成
})
}).
catch
(
err
=>
{
store
.
dispatch
(
'LogOut'
).
then
(()
=>
{
Message
.
error
(
err
)
next
({
path
:
'/'
})
})
store
.
dispatch
(
"GetInfo"
)
.
then
(()
=>
{
store
.
dispatch
(
"GenerateRoutes"
).
then
(
accessRoutes
=>
{
// 根据roles权限生成可访问的路由表
router
.
addRoutes
(
accessRoutes
);
// 动态添加可访问路由表
next
({
...
to
,
replace
:
true
});
// hack方法 确保addRoutes已完成
});
})
.
catch
(
err
=>
{
store
.
dispatch
(
"LogOut"
).
then
(()
=>
{
Message
.
error
(
err
);
next
({
path
:
"/"
});
});
});
}
else
{
next
()
next
()
;
}
}
}
else
{
// 没有token
if
(
whiteList
.
indexOf
(
to
.
path
)
!==
-
1
)
{
// 在免登录白名单,直接进入
next
()
next
()
;
}
else
{
next
(
`/login?redirect=
${
to
.
fullPath
}
`
)
// 否则全部重定向到登录页
NProgress
.
done
()
next
(
`/login?redirect=
${
to
.
fullPath
}
`
)
;
// 否则全部重定向到登录页
NProgress
.
done
()
;
}
}
})
})
;
router
.
afterEach
(()
=>
{
NProgress
.
done
()
})
router
.
afterEach
((
to
,
from
)
=>
{
// console.log('全局后置钩子',to, from)
if
(
to
.
path
==
"/enterprise/mapView"
)
{
store
.
dispatch
(
"app/toggleDevice"
,
"mobile"
);
}
else
{
store
.
dispatch
(
"app/toggleDevice"
,
"desktop"
);
}
NProgress
.
done
();
});
gassafety-web/src/store/modules/app.js
View file @
66eb8ffe
...
...
@@ -26,6 +26,7 @@ const mutations = {
},
TOGGLE_DEVICE
:
(
state
,
device
)
=>
{
state
.
device
=
device
console
.
log
(
123
)
},
SET_SIZE
:
(
state
,
size
)
=>
{
state
.
size
=
size
...
...
gassafety-web/src/store/modules/permission.js
View file @
66eb8ffe
...
...
@@ -9,7 +9,8 @@ const permission = {
addRoutes
:
[],
defaultRoutes
:
[],
topbarRouters
:
[],
sidebarRouters
:
[]
sidebarRouters
:
[],
mySidebarRouters
:[],
},
mutations
:
{
SET_ROUTES
:
(
state
,
routes
)
=>
{
...
...
@@ -28,8 +29,10 @@ const permission = {
state
.
topbarRouters
=
routes
.
concat
(
index
);
},
SET_SIDEBAR_ROUTERS
:
(
state
,
routes
)
=>
{
state
.
sidebarRouters
=
routes
state
.
sidebarRouters
=
routes
;
state
.
mySidebarRouters
=
routes
;
},
},
actions
:
{
// 生成路由
...
...
gassafety-web/src/utils/gaodeMapView.js
View file @
66eb8ffe
...
...
@@ -3,9 +3,12 @@ import regulatorBox from "../components/PopWindow/regulatorBox.vue";
import
valveWell
from
"../components/PopWindow/valveWell.vue"
;
import
flowMeter
from
"../components/PopWindow/flowMeter.vue"
;
import
pipelineView
from
"../components/PopWindow/pipelineView.vue"
;
import
lineInfoWindow
from
"../components/PopWindowGis/lineInfoWindowWarn.vue"
;
import
{
delDeviceInfo
}
from
"@/api/device/deviceInfo"
;
import
lineInfoWindow
from
"../components/PopWindowGis/lineInfoWindow.vue"
;
import
markerInfoWindow
from
"../components/PopWindowGis/markerInfoWindow.vue"
;
import
markerInfoWindowWarn
from
"../components/PopWindowGis/markerInfoWindowWarn.vue"
;
import
lineInfoWindowWarn
from
"../components/PopWindowGis/lineInfoWindowWarn.vue"
;
import
{
delDeviceInfo
}
from
"@/api/device/deviceInfo"
;
import
workerManInfowindow
from
"../components/PopWindowGis/workerManInfowindow.vue"
;
import
workerManView
from
"../components/PopWindowGis/workerManView.vue"
;
...
...
@@ -341,7 +344,9 @@ class gaodeMap {
* @returns {string}
*/
getMarketContent
(
data
)
{
// let markerInfoWindow = markerInfoWindowWarn;
switch
(
this
.
markerType
)
{
case
DEVICE_TYPE
.
REGEULATORBOX
:
{
const
dom
=
createPop
(
markerInfoWindow
,
{
title
:
"调压箱"
,
...
...
gassafety-web/src/views/deviceInspection/inspectionPlan/index.vue
View file @
66eb8ffe
...
...
@@ -151,7 +151,7 @@
<
/el-form-item
>
<
el
-
form
-
item
label
=
"巡检设备"
prop
=
"devices"
>
<
el
-
cascader
v
-
model
=
"devices"
v
-
model
=
"
form.
devices"
:
options
=
"options"
:
props
=
"props"
:
show
-
all
-
levels
=
"false"
...
...
@@ -287,14 +287,14 @@
orderName
:
[
{
required
:
true
,
message
:
"工单名称不能为空"
,
trigger
:
"blur"
}
],
//
devices: [
//
{
required
:
true
,
message
:
'请选择巡检设备'
,
trigger
:
'change'
,
type
:
'array'
}
//
],
devices
:
[
{
required
:
true
,
message
:
"请选择巡检设备"
,
trigger
:
"blur"
}
],
startTime
:
[
{
required
:
true
,
message
:
'请选择开始时间'
,
trigger
:
'blur'
}
{
required
:
true
,
message
:
"请选择开始时间"
,
trigger
:
"blur"
}
],
endTime
:
[
{
required
:
true
,
message
:
'请选择结束事件'
,
trigger
:
'blur'
}
{
required
:
true
,
message
:
"请选择结束事件"
,
trigger
:
"blur"
}
],
}
}
;
...
...
@@ -308,7 +308,7 @@
methods
:
{
handleChange
(
value
)
{
// this.devices = value;
console
.
log
(
this
.
devices
);
console
.
log
(
this
.
form
.
devices
);
}
,
/** 查询巡检计划列表 */
getList
()
{
...
...
@@ -405,7 +405,7 @@
const
planId
=
row
.
planId
||
this
.
ids
getInspectionPlan
(
planId
).
then
(
response
=>
{
this
.
form
=
response
.
data
;
this
.
devices
=
eval
(
this
.
form
.
deviceIds
);
this
.
form
.
devices
=
eval
(
this
.
form
.
deviceIds
);
this
.
open
=
true
;
this
.
title
=
"修改巡检计划"
;
}
);
...
...
@@ -416,7 +416,7 @@
if
(
valid
)
{
if
(
this
.
title
!=
"下发工单"
)
{
// 二维数组转字符串(处理设备级联选项的值)
var
arr
=
this
.
devices
;
var
arr
=
this
.
form
.
devices
;
var
arrLen
=
arr
.
length
;
var
str
=
"["
;
for
(
var
i
=
0
;
i
<
arrLen
;
i
++
)
{
...
...
gassafety-web/src/views/enterprise/mapView/components/RightBototmData.vue
View file @
66eb8ffe
<
template
>
<div
class=
"wrapper"
>
<div
class=
"left"
>
<div
class=
"top"
>
设备报警最新记录
</div>
<div
class=
"top"
>
<span>
设备报警最新记录
</span>
<span
@
click=
"repeatClick"
class=
"repeat"
>
刷新
</span>
<span
@
click=
"moreClick"
class=
"more"
>
更多
</span>
</div>
<div
class=
"bottom right-bottom-data-left"
>
<!--
<div
class=
"table-top"
>
...
...
@@ -13,16 +17,21 @@
</div>
-->
<!--
<div
class=
"one"
>
设备编号:
<span>
1123123123
</span></div>
<div
class=
"two"
>
报警时间:
<span>
34523452345
</span></div>
-->
<el-table
size=
"mini"
:data=
"tableData"
style=
"width: 100%"
height=
"170"
>
<el-table-column
prop=
"date"
label=
"编号"
width=
"150"
>
<el-table
size=
"mini"
:data=
"tableData"
style=
"width: 100%"
height=
"170"
>
<el-table-column
prop=
"deviceCode"
label=
"编号"
width=
"100"
>
</el-table-column>
<el-table-column
prop=
"
name"
label=
"名称"
width=
"120
"
>
<el-table-column
prop=
"
deviceName"
label=
"名称"
width=
"
"
>
</el-table-column>
<el-table-column
prop=
"
province"
label=
"
类型"
width=
"80"
>
<el-table-column
prop=
"
alarmType"
label=
"报警
类型"
width=
"80"
>
</el-table-column>
<el-table-column
prop=
"c
ity"
label=
"时间"
width=
"12
0"
>
<el-table-column
prop=
"c
reateTime"
label=
"报警开始时间"
width=
"17
0"
>
</el-table-column>
<el-table-column
prop=
"a
ddress"
label=
"内容"
width=
"
"
>
<el-table-column
prop=
"a
larmValue"
label=
"报警内容"
width=
"100
"
>
</el-table-column>
</el-table>
</div>
...
...
@@ -54,6 +63,8 @@
</template>
<
script
>
import
{
listDeviceAlarm
}
from
"@/api/dataMonitoring/deviceAlarm"
;
export
default
{
props
:
{
list
:
{
...
...
@@ -78,7 +89,7 @@ export default {
},
tableData
:
[
{
d
at
e
:
"2016-05-03"
,
d
eviceCod
e
:
"2016-05-03"
,
name
:
"王小虎"
,
province
:
"上海"
,
city
:
"普陀区"
,
...
...
@@ -131,11 +142,45 @@ export default {
},
created
()
{
console
.
log
(
"list"
,
this
.
list
);
this
.
getList
();
},
methods
:
{
iconClass
(
item
)
{
return
this
.
iconList
[
item
.
type
];
},
moreClick
()
{
this
.
$router
.
push
(
"/dataMonitoring/deviceAlarm"
);
// route.push(`dataMonitoring/deviceAlarm`)
},
repeatClick
(){
this
.
getList
();
},
getList
()
{
this
.
loading
=
true
;
listDeviceAlarm
({
pageNum
:
1
,
pageSize
:
10
}).
then
((
res
)
=>
{
if
(
res
.
code
==
200
)
{
const
arr
=
res
.
rows
.
map
((
item
)
=>
{
const
{
deviceCode
,
deviceName
,
alarmType
,
createTime
,
alarmValue
,
}
=
item
;
return
{
deviceCode
,
deviceName
,
alarmType
,
createTime
,
alarmValue
,
};
});
console
.
log
(
arr
);
this
.
tableData
=
arr
}
});
},
},
};
</
script
>
...
...
@@ -147,14 +192,14 @@ export default {
position
:
fixed
;
right
:
10px
;
bottom
:
10px
;
overflow
:hidden
;
overflow
:
hidden
;
// background-color: #fff;
display
:
flex
;
justify-content
:
space-between
;
&
>
div
{
}
.left
{
width
:
778
px
;
width
:
680
px
;
margin-right
:
12px
;
box-shadow
:
2px
2px
5px
rgba
(
0
,
0
,
0
,
0
.16
);
// background-color: #fff;
...
...
@@ -167,6 +212,25 @@ export default {
color
:
#fff
;
line-height
:
32px
;
padding-left
:
12px
;
// position: relative;
span
{
display
:
inline-block
;
}
.repeat
{
margin-left
:
20px
;
cursor
:
pointer
;
&
:hover
{
color
:
#2788ea
;
}
}
.more
{
float
:
right
;
margin-right
:
20px
;
cursor
:
pointer
;
&
:hover
{
color
:
#2788ea
;
}
}
}
.bottom
{
.table-top
{
...
...
@@ -186,7 +250,7 @@ export default {
flex-wrap
:
wrap
;
// justify-content: space-between;
align-content
:
flex-start
;
margin-top
:
7px
;
margin-top
:
7px
;
&
>
.right-content
{
background-color
:
#fff
;
width
:
238px
;
...
...
gassafety-web/src/views/enterprise/mapView/index.vue
View file @
66eb8ffe
...
...
@@ -94,7 +94,12 @@
</div>
</div>
<RightBototmData
v-show=
"bottomDataShow"
:class=
"{classShow:!bottomDataShow}"
ref=
"RightBototmData"
:list=
"rightBototmData"
/>
<RightBototmData
v-show=
"bottomDataShow"
:class=
"{ classShow: !bottomDataShow }"
ref=
"RightBototmData"
:list=
"rightBototmData"
/>
</div>
</template>
<
script
>
...
...
@@ -168,9 +173,13 @@ export default {
keyWord
:
""
,
// 右下角的数据data
rightBototmData
:
[],
bottomDataShow
:
true
,
bottomDataShow
:
true
,
};
},
created
()
{
// 让左边的框隐藏
this
.
$store
.
dispatch
(
"app/toggleDevice"
,
"mobile"
);
},
mounted
()
{
this
.
initMap
();
},
...
...
@@ -185,7 +194,6 @@ export default {
this
.
getPipeList
();
// 右下角数据
this
.
rightBottomData
();
},
// 右下角数据
async
rightBottomData
()
{
...
...
@@ -447,7 +455,7 @@ export default {
// 新建下拉列表关闭 window点击事件
barClose
()
{
// 一点windowbottomData显示
this
.
bottomDataShow
=
true
;
this
.
bottomDataShow
=
true
;
// return;
console
.
log
(
"window"
);
this
.
deviceType
=
false
;
...
...
@@ -730,7 +738,7 @@ input[type="radio"] {
color
:
white
;
background-color
:
#053b6a
;
}
.classShow
{
.classShow
{
opacity
:
0
;
}
</
style
>
...
...
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