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
54e22055
Commit
54e22055
authored
Aug 19, 2021
by
yaqizhang
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'master' of
http://111.61.77.35:9999/gengdidi/gassafety
into master
parents
e1d1679a
444b3437
Show whitespace changes
Inline
Side-by-side
Showing
22 changed files
with
2155 additions
and
673 deletions
+2155
-673
TDeviceInfo.java
...m/src/main/java/com/zehong/system/domain/TDeviceInfo.java
+4
-4
TPipe.java
...-system/src/main/java/com/zehong/system/domain/TPipe.java
+4
-4
DeviceInfoVo.java
...c/main/java/com/zehong/system/domain/vo/DeviceInfoVo.java
+4
-4
PipeVo.java
...tem/src/main/java/com/zehong/system/domain/vo/PipeVo.java
+4
-4
flowMeter.vue
gassafety-web/src/components/PopWindow/flowMeter.vue
+7
-5
pressureGage.vue
gassafety-web/src/components/PopWindow/pressureGage.vue
+8
-6
regulatorBox.vue
gassafety-web/src/components/PopWindow/regulatorBox.vue
+7
-6
lineInfoWindow.vue
gassafety-web/src/components/PopWindowGis/lineInfoWindow.vue
+3
-1
lineInfoWindowWarn.vue
...ty-web/src/components/PopWindowGis/lineInfoWindowWarn.vue
+3
-2
markerInfoWindow.vue
...fety-web/src/components/PopWindowGis/markerInfoWindow.vue
+2
-1
markerInfoWindowWarn.vue
...-web/src/components/PopWindowGis/markerInfoWindowWarn.vue
+13
-2
checkDeviceLoaction.vue
...fety-web/src/components/mapDialog/checkDeviceLoaction.vue
+144
-0
checkPipeLineLocation.vue
...ty-web/src/components/mapDialog/checkPipeLineLocation.vue
+137
-0
gaodeMapDialog.js
gassafety-web/src/components/mapDialog/js/gaodeMapDialog.js
+913
-0
permission.js
gassafety-web/src/permission.js
+3
-0
gaodeMap.js
gassafety-web/src/utils/gaodeMap.js
+134
-73
index.vue
gassafety-web/src/views/device/deviceInfo/index.vue
+406
-294
index.vue
gassafety-web/src/views/device/deviceInfoDetail/index.vue
+2
-5
index.vue
gassafety-web/src/views/device/pipe/index.vue
+351
-255
index.vue
gassafety-web/src/views/device/pipeDetail/index.vue
+1
-4
index.vue
gassafety-web/src/views/enterprise/mapView/index.vue
+1
-1
login.vue
gassafety-web/src/views/login.vue
+4
-2
No files found.
gassafety-system/src/main/java/com/zehong/system/domain/TDeviceInfo.java
View file @
54e22055
...
...
@@ -74,13 +74,13 @@ public class TDeviceInfo extends BaseEntity
private
String
phone
;
/** 安装时间 */
@JsonFormat
(
pattern
=
"yyyy-MM-dd
HH:mm:ss
"
)
@Excel
(
name
=
"安装时间"
,
width
=
30
,
dateFormat
=
"yyyy-MM-dd
HH:mm:ss
"
)
@JsonFormat
(
pattern
=
"yyyy-MM-dd"
)
@Excel
(
name
=
"安装时间"
,
width
=
30
,
dateFormat
=
"yyyy-MM-dd"
)
private
Date
installationTime
;
/** 最后巡检时间 */
@JsonFormat
(
pattern
=
"yyyy-MM-dd
HH:mm:ss
"
)
@Excel
(
name
=
"最后巡检时间"
,
width
=
30
,
dateFormat
=
"yyyy-MM-dd
HH:mm:ss
"
)
@JsonFormat
(
pattern
=
"yyyy-MM-dd"
)
@Excel
(
name
=
"最后巡检时间"
,
width
=
30
,
dateFormat
=
"yyyy-MM-dd"
)
private
Date
inspectionTime
;
/** 是否删除 */
...
...
gassafety-system/src/main/java/com/zehong/system/domain/TPipe.java
View file @
54e22055
...
...
@@ -57,13 +57,13 @@ public class TPipe extends BaseEntity
private
String
iconUrl
;
/** 安装时间 */
@JsonFormat
(
pattern
=
"yyyy-MM-dd
HH:mm:ss
"
)
@Excel
(
name
=
"安装时间"
,
width
=
30
,
dateFormat
=
"yyyy-MM-dd
HH:mm:ss
"
)
@JsonFormat
(
pattern
=
"yyyy-MM-dd"
)
@Excel
(
name
=
"安装时间"
,
width
=
30
,
dateFormat
=
"yyyy-MM-dd"
)
private
Date
installationTime
;
/** 最后巡检时间 */
@JsonFormat
(
pattern
=
"yyyy-MM-dd
HH:mm:ss
"
)
@Excel
(
name
=
"最后巡检时间"
,
width
=
30
,
dateFormat
=
"yyyy-MM-dd
HH:mm:ss
"
)
@JsonFormat
(
pattern
=
"yyyy-MM-dd"
)
@Excel
(
name
=
"最后巡检时间"
,
width
=
30
,
dateFormat
=
"yyyy-MM-dd"
)
private
Date
inspectionTime
;
/** 是否删除 */
...
...
gassafety-system/src/main/java/com/zehong/system/domain/vo/DeviceInfoVo.java
View file @
54e22055
...
...
@@ -79,13 +79,13 @@ public class DeviceInfoVo extends BaseEntity
private
String
phone
;
/** 安装时间 */
@JsonFormat
(
pattern
=
"yyyy-MM-dd
HH:mm:ss
"
)
@Excel
(
name
=
"安装时间"
,
width
=
30
,
dateFormat
=
"yyyy-MM-dd
HH:mm:ss
"
)
@JsonFormat
(
pattern
=
"yyyy-MM-dd"
)
@Excel
(
name
=
"安装时间"
,
width
=
30
,
dateFormat
=
"yyyy-MM-dd"
)
private
Date
installationTime
;
/** 最后巡检时间 */
@JsonFormat
(
pattern
=
"yyyy-MM-dd
HH:mm:ss
"
)
@Excel
(
name
=
"最后巡检时间"
,
width
=
30
,
dateFormat
=
"yyyy-MM-dd
HH:mm:ss
"
)
@JsonFormat
(
pattern
=
"yyyy-MM-dd"
)
@Excel
(
name
=
"最后巡检时间"
,
width
=
30
,
dateFormat
=
"yyyy-MM-dd"
)
private
Date
inspectionTime
;
/** 是否删除 */
...
...
gassafety-system/src/main/java/com/zehong/system/domain/vo/PipeVo.java
View file @
54e22055
...
...
@@ -63,13 +63,13 @@ public class PipeVo extends BaseEntity
private
String
iconUrl
;
/** 安装时间 */
@JsonFormat
(
pattern
=
"yyyy-MM-dd
HH:mm:ss
"
)
@Excel
(
name
=
"安装时间"
,
width
=
30
,
dateFormat
=
"yyyy-MM-dd
HH:mm:ss
"
)
@JsonFormat
(
pattern
=
"yyyy-MM-dd"
)
@Excel
(
name
=
"安装时间"
,
width
=
30
,
dateFormat
=
"yyyy-MM-dd"
)
private
Date
installationTime
;
/** 最后巡检时间 */
@JsonFormat
(
pattern
=
"yyyy-MM-dd
HH:mm:ss
"
)
@Excel
(
name
=
"最后巡检时间"
,
width
=
30
,
dateFormat
=
"yyyy-MM-dd
HH:mm:ss
"
)
@JsonFormat
(
pattern
=
"yyyy-MM-dd"
)
@Excel
(
name
=
"最后巡检时间"
,
width
=
30
,
dateFormat
=
"yyyy-MM-dd"
)
private
Date
inspectionTime
;
/** 是否删除 */
...
...
gassafety-web/src/components/PopWindow/flowMeter.vue
View file @
54e22055
...
...
@@ -8,17 +8,17 @@
<el-form
ref=
"form"
:model=
"form"
:rules=
"rules"
label-width=
"135px"
>
<el-row>
<el-col
:span=
"11"
>
<el-form-item
label=
"所属管道"
prop=
"pipe
Code
"
>
<el-form-item
label=
"所属管道"
prop=
"pipe
Id
"
>
<el-select
v-model=
"form.pipe
Code
"
v-model=
"form.pipe
Id
"
placeholder=
"请选择所属管道"
style=
"width: 100%"
>
<el-option
v-for=
"item in pipeList"
:key=
"item.pipe
Code
"
:key=
"item.pipe
Id
"
:label=
"item.pipeName"
:value=
"item.pipe
Code"
:value=
"item.pipe
Id"
>
</el-option>
</el-select>
...
...
@@ -163,7 +163,7 @@ export default {
pipeList
:
[],
rules
:
{
pipe
Code
:
[
pipe
Id
:
[
{
required
:
true
,
message
:
"请选择所属管道"
,
trigger
:
"blur"
},
// { min: 3, max: 5, message: "长度在 3 到 5 个字符", trigger: "blur" },
],
...
...
@@ -211,6 +211,8 @@ export default {
},
submitForm
()
{
this
.
$refs
[
"form"
].
validate
((
valid
)
=>
{
// console.log("this.form流量计",this.form)
// return;
if
(
valid
)
{
if
(
this
.
form
.
deviceId
!=
null
)
{
updateDeviceInfo
(
this
.
form
).
then
((
response
)
=>
{
...
...
gassafety-web/src/components/PopWindow/pressureGage.vue
View file @
54e22055
...
...
@@ -8,17 +8,17 @@
<el-form
ref=
"form"
:model=
"form"
:rules=
"rules"
label-width=
"135px"
>
<el-row>
<el-col
:span=
"11"
>
<el-form-item
label=
"所属管道"
prop=
"pipe
Code
"
>
<el-form-item
label=
"所属管道"
prop=
"pipe
Id
"
>
<el-select
v-model=
"form.pipe
Code
"
v-model=
"form.pipe
Id
"
placeholder=
"请选择所属管道"
style=
"width: 100%"
>
<el-option
v-for=
"item in pipeList"
:key=
"item.pipe
Code
"
:key=
"item.pipe
Id
"
:label=
"item.pipeName"
:value=
"item.pipe
Code
"
:value=
"item.pipe
Id
"
>
</el-option>
</el-select>
...
...
@@ -156,7 +156,7 @@ export default {
fileList
:
[],
// 表单校验
rules
:
{
pipe
Code
:
[
pipe
Id
:
[
{
required
:
true
,
message
:
"请选择所属管道"
,
trigger
:
"blur"
},
// { min: 3, max: 5, message: "长度在 3 到 5 个字符", trigger: "blur" },
],
...
...
@@ -209,6 +209,8 @@ export default {
},
submitForm
()
{
this
.
$refs
[
"form"
].
validate
((
valid
)
=>
{
// console.log("this.form)",this.form)
if
(
valid
)
{
if
(
this
.
form
.
deviceId
!=
null
)
{
updateDeviceInfo
(
this
.
form
).
then
((
response
)
=>
{
...
...
gassafety-web/src/components/PopWindow/regulatorBox.vue
View file @
54e22055
...
...
@@ -8,17 +8,17 @@
<el-form
ref=
"form"
:model=
"form"
:rules=
"rules"
label-width=
"135px"
>
<el-row>
<el-col
:span=
"11"
>
<el-form-item
label=
"所属管道"
prop=
"pipe
Code
"
>
<el-form-item
label=
"所属管道"
prop=
"pipe
Id
"
>
<el-select
v-model=
"form.pipe
Code
"
v-model=
"form.pipe
Id
"
placeholder=
"请选择所属管道"
style=
"width: 100%"
>
<el-option
v-for=
"item in pipeList"
:key=
"item.pipe
Code
"
:key=
"item.pipe
Id
"
:label=
"item.pipeName"
:value=
"item.pipe
Code
"
:value=
"item.pipe
Id
"
>
</el-option>
</el-select>
...
...
@@ -160,7 +160,7 @@ export default {
fileArr
:
[],
pipeList
:
[],
rules
:
{
pipe
Code
:
[
pipe
Id
:
[
{
required
:
true
,
message
:
"请选择所属管道"
,
trigger
:
"blur"
},
// { min: 3, max: 5, message: "长度在 3 到 5 个字符", trigger: "blur" },
],
...
...
@@ -209,6 +209,7 @@ export default {
},
submitForm
()
{
this
.
$refs
[
"form"
].
validate
((
valid
)
=>
{
// console.log("this.form",this.form)
if
(
valid
)
{
if
(
this
.
form
.
deviceId
!=
null
)
{
updateDeviceInfo
(
this
.
form
).
then
((
response
)
=>
{
...
...
gassafety-web/src/components/PopWindowGis/lineInfoWindow.vue
View file @
54e22055
...
...
@@ -132,9 +132,11 @@ export default {
deviceMore
()
{
console
.
log
(
this
.
obj
.
polyline
.
getExtData
().
lineData
)
this
.
obj
.
polyline
.
getExtData
().
class
.
view
.
$router
.
push
({
path
:
"/
realtimeData
/realtimedetail"
,
path
:
"/
dataMonitoring
/realtimedetail"
,
query
:
{
deviceId
:
this
.
obj
.
polyline
.
getExtData
().
lineData
.
pipeId
,
//这里是传数字
deviceType
:
"0"
,
}
,
}
);
}
,
...
...
gassafety-web/src/components/PopWindowGis/lineInfoWindowWarn.vue
View file @
54e22055
...
...
@@ -167,7 +167,7 @@ export default {
}
,
checkWork
()
{
this
.
obj
.
polyline
.
getExtData
().
class
.
view
.
$router
.
push
({
path
:
"/
basicsInfo
/detail"
,
path
:
"/
workOrder
/detail"
,
query
:
{
orderId
:
this
.
obj
.
polyline
.
getExtData
().
lineData
.
orderId
,
}
,
...
...
@@ -191,9 +191,10 @@ export default {
deviceMore
()
{
console
.
log
(
this
.
obj
.
polyline
.
getExtData
().
lineData
);
this
.
obj
.
polyline
.
getExtData
().
class
.
view
.
$router
.
push
({
path
:
"/d
eviceAlarm
/alarmdetail"
,
path
:
"/d
ataMonitoring
/alarmdetail"
,
query
:
{
alarmId
:
this
.
obj
.
polyline
.
getExtData
().
lineData
.
alarmId
,
deviceType
:
"管道"
}
,
}
);
}
,
...
...
gassafety-web/src/components/PopWindowGis/markerInfoWindow.vue
View file @
54e22055
...
...
@@ -91,9 +91,10 @@ export default {
moment
,
deviceMore
()
{
this
.
data
.
class
.
view
.
$router
.
push
({
path
:
"/
realtimeData
/realtimedetail"
,
path
:
"/
dataMonitoring
/realtimedetail"
,
query
:
{
deviceId
:
this
.
data
.
deviceId
,
deviceType
:
this
.
data
.
deviceType
,
},
});
},
...
...
gassafety-web/src/components/PopWindowGis/markerInfoWindowWarn.vue
View file @
54e22055
...
...
@@ -104,6 +104,16 @@ export default {
data
:
{},
map
:
null
,
},
data
()
{
return
{
deviceType
:
{
1
:
"调压箱"
,
2
:
"阀门井"
,
3
:
"流量计"
,
4
:
"智能燃气表"
,
},
};
},
computed
:
{
orderId
()
{
// 如果已经生成过工单,就不能再次生成了
...
...
@@ -141,16 +151,17 @@ export default {
// },
deviceMore
()
{
this
.
data
.
view
.
$router
.
push
({
path
:
"/d
eviceAlarm
/alarmdetail"
,
path
:
"/d
ataMonitoring
/alarmdetail"
,
query
:
{
alarmId
:
this
.
data
.
alarmId
,
dcviceType
:
this
.
deviceType
[
this
.
data
.
deviceType
],
},
});
},
// 查看工单
checkWork
()
{
this
.
data
.
view
.
$router
.
push
({
path
:
"/
basicsInfo
/detail"
,
path
:
"/
workOrder
/detail"
,
query
:
{
orderId
:
this
.
data
.
orderId
,
},
...
...
gassafety-web/src/components/mapDialog/
index
.vue
→
gassafety-web/src/components/mapDialog/
checkDeviceLoaction
.vue
View file @
54e22055
...
...
@@ -23,10 +23,11 @@
<el-button
size=
"small"
@
click=
"$emit('dialogcancelFun')"
>
取消
</el-button
>
</el-row>
<div
style=
"width: 47vw; height:
57
vh"
id=
"container"
></div>
<div
style=
"width: 47vw; height:
65
vh"
id=
"container"
></div>
<el-col
:span=
"8"
class=
"button"
>
<el-input
id=
"ss"
placeholder=
"输入地址"
v-model=
"keyWorld"
></el-input><el-button
size=
"small"
type=
"primary"
icon=
"el-icon-search"
@
click=
"search"
style=
"position: fixed;margin-left: 3px;"
>
搜索
</el-button>
<el-input
id=
"ss"
placeholder=
"输入地址"
v-model=
"keyWorld"
></el-input>
<el-button
size=
"small"
type=
"primary"
icon=
"el-icon-search"
@
click=
"search"
style=
"position: fixed;margin-left: 3px;"
>
搜索
</el-button>
</el-col>
</el-dialog>
...
...
@@ -47,7 +48,10 @@
keyWorld
:
""
}
},
mounted
(){
watch
:{
dialogTableVisible
:{
handler
(
value
)
{
if
(
value
){
let
that
=
this
;
that
.
$nextTick
(()
=>
{
//初始化地图
...
...
@@ -58,10 +62,9 @@
viewMode
:
"3D"
,
showLabel
:
true
,
pitch
:
8
,
zoom
:
10
zoom
:
12
});
map
.
setFitView
();
var
overlays
=
[];
//坐标回显
if
(
typeof
that
.
slng
==
"number"
&&
that
.
slng
!=
0
)
{
that
.
lnglat
.
lng
=
that
.
slng
;
...
...
@@ -71,12 +74,12 @@
});
marker
.
setMap
(
map
);
map
.
setCenter
([
that
.
slng
,
that
.
slat
]);
overlays
.
push
(
marker
);
}
//点击获取坐标点
var
mouseTool
=
new
AMap
.
MouseTool
(
map
);
//监听draw事件可获取画好的覆盖物
var
overlays
=
[];
mouseTool
.
on
(
'draw'
,
function
(
e
){
map
.
remove
(
overlays
);
overlays
.
push
(
e
.
obj
);
...
...
@@ -92,6 +95,12 @@
});
});
})
}
},
// 代表在wacth里声明了firstName这个方法之后立即先去执行handler方法
immediate
:
true
}
},
methods
:{
confirmFun
(){
...
...
@@ -123,7 +132,7 @@
.button
{
position
:
relative
;
top
:
-
39
3px
;
top
:
-
45
3px
;
left
:
14px
;
}
...
...
gassafety-web/src/components/mapDialog/checkPipeLineLocation.vue
0 → 100644
View file @
54e22055
<
template
>
<el-dialog
title=
"拾取坐标"
:visible
.
sync=
"dialogTableVisible"
:show-close=
"false"
:close-on-click-modal=
"false"
>
<div
style=
"postion:relative"
>
<el-row
:span=
"8"
class=
"button"
>
<el-input
id=
"ss"
placeholder=
"输入地址"
v-model=
"keyWorld"
></el-input>
<el-button
size=
"small"
type=
"primary"
icon=
"el-icon-search"
@
click=
"search"
>
搜索
</el-button>
</el-row>
</div>
<div
style=
""
id=
"container"
ref=
"elD"
></div>
<el-row
class=
"lt"
>
<el-button
type=
"primary"
size=
"small"
@
click=
"confirmFun"
>
确定
</el-button>
<el-button
size=
"small"
@
click=
"$emit('dialogcancelFun')"
>
取消
</el-button>
</el-row>
</el-dialog>
</
template
>
<
script
>
import
gaodeMap
from
"./js/gaodeMapDialog.js"
;
import
{
getString
}
from
"@/utils/gassafety.js"
;
export
default
{
props
:
{
dialogTableVisible
:
{
type
:
Boolean
,
},
slat
:
0
,
slng
:
0
,
str
:{
type
:
String
,
}
},
data
(){
return
{
lnglat
:
{
lat
:
""
,
lng
:
""
},
keyWorld
:
""
,
map
:{},
div
:
null
,
}
},
watch
:{
dialogTableVisible
:{
handler
(
value
)
{
if
(
value
){
window
.
addEventListener
(
"click"
,
this
.
barClose
);
this
.
$nextTick
(()
=>
{
this
.
map
=
new
gaodeMap
(
"石家庄"
);
this
.
map
.
addMouseTool
();
if
(
this
.
str
){
this
.
map
.
addPolyline
([{
coordinates
:
this
.
str
}]);
}
this
.
map
.
lineType
=
1
;
if
(
this
.
map
.
newLineObj
==
null
)
{
this
.
map
.
createNewLine
();
}
})
}
else
{
console
.
log
(
"清除事件"
)
window
.
removeEventListener
(
"click"
,
this
.
barClose
);
}
},
// 代表在wacth里声明了firstName这个方法之后立即先去执行handler方法
immediate
:
true
}
},
methods
:{
confirmFun
(){
console
.
log
(
"path"
,
this
.
map
.
newLineObj
.
getPath
())
const
pathArr
=
this
.
map
.
newLineObj
.
getPath
().
map
(
item
=>
{
return
[
item
.
lng
,
item
.
lat
]
})
const
str
=
getString
(
pathArr
)
this
.
$emit
(
'confirmFun'
,
str
);
this
.
$emit
(
'dialogcancelFun'
);
},
search
(){
this
.
placeSearch
.
search
(
this
.
keyWorld
);
//关键字查询查询
},
barClose
()
{
console
.
log
(
"window"
);
this
.
deviceType
=
false
;
// 关闭当前线条的infowindow
this
.
map
.
closeInfoWindow
();
this
.
map
.
lineFlag
=
false
;
},
},
beforeDestroy
()
{
},
}
</
script
>
<
style
scoped
lang=
"scss"
>
.dialog
{
position
:relative
;
}
#container
{
width
:
100%
;
height
:
500px
;
}
.lt
{
margin-top
:
15px
;
text-align
:
right
;
}
.lt
.el-input
{
width
:
120px
;
margin-right
:
15px
;
display
:
inline-block
;
}
.button
{
position
:
absolute
;
top
:
90px
;
left
:
30px
;
z-index
:
999
;
}
.button
.el-input
{
width
:
180px
;
margin-right
:
10px
;
display
:
inline-block
;
}
</
style
>
gassafety-web/src/components/mapDialog/js/gaodeMapDialog.js
0 → 100644
View file @
54e22055
import
createPop
from
"@/utils/createPop"
;
import
regulatorBox
from
"@/components/PopWindow/regulatorBox.vue"
;
import
valveWell
from
"@/components/PopWindow/valveWell.vue"
;
import
flowMeter
from
"@/components/PopWindow/flowMeter.vue"
;
import
pressureGage
from
"@/components/PopWindow/pressureGage.vue"
;
import
pipelineView
from
"@/components/PopWindow/pipelineView.vue"
;
import
lineInfoWindow
from
"@/components/PopWindow/lineInfoWindow.vue"
;
import
{
delDeviceInfo
}
from
"@/api/device/deviceInfo"
;
import
markerInfoWindow
from
"@/components/PopWindow/markerInfoWindow.vue"
;
import
{
getArray
}
from
"@/utils/gassafety.js"
;
import
{
delPipe
}
from
"@/api/device/pipe.js"
;
import
vue
from
"@/main"
;
let
defaultCenter
=
"石家庄"
;
export
let
map
;
export
const
DEVICE_TYPE
=
{
PIPEPLINE
:
"1"
,
REGEULATORBOX
:
"2"
,
VALUEWELL
:
"3"
,
FLOWMETER
:
"4"
,
DUTYPERSON
:
"5"
,
WORKORDER
:
"6"
,
PRESSUREGAGE
:
"7"
,
INSPECTOR
:
"8"
};
class
gaodeMap
{
// 所有线的数组
polyLines
=
[];
// 是否开启新增
lineType
=
0
;
// 创建一个新的lineObj
newLineObj
=
null
;
// onceFlag=false;
lineFlag
=
false
;
mouseTool
=
null
;
myMap
=
null
;
showInfoWindow
=
null
;
//构造函数中设置中央点默认值
constructor
(
center
)
{
this
.
markers
=
[];
this
.
center
=
center
?
center
:
defaultCenter
;
map
=
new
AMap
.
Map
(
"container"
,
{
//mask: addMask(result.districtList[0].boundaries),
center
:
[
114.72995
,
38.37417
],
// resizeEnable: true,
disableSocket
:
true
,
viewMode
:
"3D"
,
showLabel
:
true
,
// labelzIndex: 110,
pitch
:
8
,
zoom
:
12
//mapStyle: 'amap://styles/darkblue',
// mapStyle: 'amap://styles/3b679a15f448a4740ba2ff7524e1a4ae',
});
this
.
myMap
=
map
;
this
.
myMap
.
on
(
"click"
,
e
=>
{
// if (this.lineType !=1 || this.lineFlag) return;
if
(
this
.
lineType
!=
1
||
this
.
lineFlag
)
return
;
// 除了这里,还要利用vue页面的window事件辅助,当组件出来的时候,就得利用window事件
if
(
this
.
newLineObj
)
{
vue
.
$confirm
(
"是否重新画管道"
)
.
then
(()
=>
{
this
.
newLineObj
.
polyEditor
.
close
();
map
.
remove
(
this
.
newLineObj
);
this
.
newLineObj
=
null
;
this
.
lineFlag
=
false
;
this
.
createNewLine
();
console
.
log
(
"map点击事件新建"
);
})
.
catch
(()
=>
{});
}
// console.log("抬起来了");
});
// 地图开始平移删除infowindow
this
.
myMap
.
on
(
"movestart"
,()
=>
{
// console.log("地图平移");
this
.
closeInfoWindow
()
})
// 地图开始缩放删除infowindow
this
.
myMap
.
on
(
"zoomstart"
,()
=>
{
// console.log("缩放开始")
this
.
closeInfoWindow
()
})
this
.
districtBoundaries
();
}
/**
* 获取map
* @returns {AMap.Map}
*/
get
getMap
()
{
return
this
.
map
;
}
/**
* 重新设置中央点
* @param value
*/
set
setCenter
(
value
)
{
this
.
center
=
value
;
this
.
districtBoundaries
();
}
resetMapCenter
(
value
)
{
map
.
setCenter
(
value
);
}
/**
* 设置城市边界
*/
districtBoundaries
()
{
let
that
=
this
;
let
opts
=
{
subdistrict
:
0
,
extensions
:
"all"
,
level
:
"city"
};
let
district
=
new
AMap
.
DistrictSearch
(
opts
);
district
.
search
(
that
.
center
,
function
(
status
,
result
)
{
if
(
status
==
"complete"
)
{
let
defaultCenter
=
[];
defaultCenter
.
push
(
result
.
districtList
[
0
].
center
.
lng
);
defaultCenter
.
push
(
result
.
districtList
[
0
].
center
.
lat
);
map
.
setCenter
(
defaultCenter
);
let
bounds
=
result
.
districtList
[
0
].
boundaries
;
for
(
let
i
=
0
;
i
<
bounds
.
length
;
i
+=
1
)
{
new
AMap
.
Polyline
({
path
:
bounds
[
i
],
strokeColor
:
"#0088ff"
,
strokeWeight
:
5
,
strokeOpacity
:
7
,
map
:
map
});
}
}
});
}
/**
* 添加Market
* @param markerType
* @param lnglats
*/
addMarker
(
markerType
,
data
)
{
let
that
=
this
;
that
.
markerType
=
markerType
;
let
infoWindow
=
new
AMap
.
InfoWindow
({
isCustom
:
true
,
offset
:
new
AMap
.
Pixel
(
24
,
-
38
),
anchor
:
"left-top"
});
infoWindow
.
on
(
"mouseover"
,
function
()
{
let
options
=
map
.
getStatus
();
options
.
scrollWheel
=
false
;
map
.
setStatus
(
options
);
});
infoWindow
.
on
(
"mouseout"
,
function
()
{
let
options
=
map
.
getStatus
();
options
.
scrollWheel
=
true
;
map
.
setStatus
(
options
);
});
let
marker
=
new
AMap
.
Marker
({
position
:
[
data
.
longitude
,
data
.
latitude
],
map
:
map
,
offset
:
new
AMap
.
Pixel
(
0
,
5
)
});
this
.
setMarkerIcon
(
marker
);
if
(
DEVICE_TYPE
.
WORKORDER
!=
markerType
&&
DEVICE_TYPE
.
INSPECTOR
!=
markerType
)
{
marker
.
content
=
this
.
getMarketContent
(
data
);
marker
.
on
(
"mouseover"
,
infoOpen
);
marker
.
on
(
"mouseout"
,
infoClose
);
marker
.
setExtData
(
data
);
that
.
deviceType
=
markerType
;
let
editWindow
=
that
.
createInfowindow
(
"编辑"
);
editWindow
.
fileArr
=
data
.
iconUrl
!=
""
&&
data
.
iconUrl
!=
undefined
?
[{
url
:
data
.
iconUrl
}]
:
[];
editWindow
.
obj
=
marker
;
editWindow
.
gaoMap
=
that
;
editWindow
.
map
=
map
;
marker
.
on
(
"click"
,
function
(
e
)
{
if
(
"edit"
==
that
.
mapOperateType
)
{
editWindow
.
form
=
e
.
target
.
getExtData
();
editWindow
.
show
();
}
else
if
(
"delete"
==
that
.
mapOperateType
)
{
let
diviceType
=
{
"2"
:
"调压箱"
,
"3"
:
"阀门井"
,
"4"
:
"流量计"
,
"7"
:
"压力表"
,};
vue
.
$confirm
(
'是否删除名称为"'
+
e
.
target
.
getExtData
().
deviceName
+
'"的'
+
diviceType
[
markerType
]
+
" ?"
,
"提示"
,
{
type
:
"warning"
// center: true
}).
then
(()
=>
{
map
.
remove
(
marker
);
that
.
deleteMarker
(
markerType
,
data
.
deviceId
);
}).
catch
(()
=>
{
vue
.
$message
({
type
:
"info"
,
// center:true,
offset
:
100
,
message
:
"已取消删除"
});
});
}
/*else {
//map.setZoomAndCenter(13, e.target.getPosition());
let infoWindow = new AMap.InfoWindow({
isCustom: true,
offset: new AMap.Pixel(24, -38),
anchor: "left-top"
});
infoWindow.setContent(e.target.content);
infoWindow.open(map, e.target.getPosition());
}*/
});
marker
.
on
(
"dragend"
,
function
(
e
)
{
editWindow
.
form
.
longitude
=
e
.
lnglat
.
lng
;
editWindow
.
form
.
latitude
=
e
.
lnglat
.
lat
;
});
}
else
{
marker
.
on
(
"mouseover"
,
function
(){
marker
.
setLabel
({
offset
:
new
AMap
.
Pixel
(
0
,
-
10
),
//设置文本标注偏移量
content
:
"<div class='info'>"
+
data
.
deviceName
+
"</div>"
,
//设置文本标注内容
direction
:
'top'
//设置文本标注方位
});
});
marker
.
on
(
"mouseout"
,
function
(){
marker
.
setLabel
({
content
:
null
});
});
}
this
.
markers
.
push
(
marker
);
map
.
setZoom
(
"11"
);
//map.setFitView();
function
infoClose
(
e
)
{
let
options
=
map
.
getStatus
();
options
.
scrollWheel
=
true
;
map
.
setStatus
(
options
);
//infoWindow.close(map, e.target.getPosition());
}
function
infoOpen
(
e
)
{
let
options
=
map
.
getStatus
();
options
.
scrollWheel
=
false
;
map
.
setStatus
(
options
);
infoWindow
.
setContent
(
e
.
target
.
content
);
infoWindow
.
open
(
map
,
e
.
target
.
getPosition
());
that
.
markerInfoWindow
=
infoWindow
;
}
}
/**
* marker添加拖拽事件
*/
addMarkerDragg
()
{
for
(
var
i
=
0
;
i
<
this
.
markers
.
length
;
i
++
)
{
this
.
markers
[
i
].
setDraggable
(
true
);
}
}
/**
* marker移除拖拽事件
*/
removeMarkerDragg
()
{
for
(
var
i
=
0
;
i
<
this
.
markers
.
length
;
i
++
)
{
this
.
markers
[
i
].
setDraggable
(
false
);
}
}
/**
* 添加marker信息
* @param data
* @returns {string}
*/
getMarketContent
(
data
)
{
switch
(
this
.
markerType
)
{
case
DEVICE_TYPE
.
REGEULATORBOX
:
{
const
dom
=
createPop
(
markerInfoWindow
,
{
title
:
"调压箱"
,
data
:
data
,
map
:
map
});
const
html
=
dom
.
$el
;
dom
.
remove
();
return
html
;
}
case
DEVICE_TYPE
.
VALUEWELL
:
{
const
dom
=
createPop
(
markerInfoWindow
,
{
title
:
"阀门井"
,
data
:
data
,
map
:
map
});
const
html
=
dom
.
$el
;
dom
.
remove
();
return
html
;
}
case
DEVICE_TYPE
.
FLOWMETER
:
{
const
dom
=
createPop
(
markerInfoWindow
,
{
title
:
"流量计"
,
data
:
data
,
map
:
map
});
const
html
=
dom
.
$el
;
dom
.
remove
();
return
html
;
}
case
DEVICE_TYPE
.
PRESSUREGAGE
:
{
const
dom
=
createPop
(
markerInfoWindow
,
{
title
:
"压力表"
,
data
:
data
,
map
:
map
});
const
html
=
dom
.
$el
;
dom
.
remove
();
return
html
;
}
}
}
/**
* 删除marker
* @param delType
* @param deviceId
*/
deleteMarker
(
delType
,
deviceId
)
{
if
(
DEVICE_TYPE
.
REGEULATORBOX
==
delType
||
DEVICE_TYPE
.
VALUEWELL
==
delType
||
DEVICE_TYPE
.
FLOWMETER
==
delType
||
DEVICE_TYPE
.
PRESSUREGAGE
==
delType
)
{
delDeviceInfo
(
deviceId
);
}
}
/**
* 设置设备图标
* @param marker
*/
setMarkerIcon
(
marker
)
{
switch
(
this
.
markerType
)
{
case
DEVICE_TYPE
.
REGEULATORBOX
:
{
let
icon
=
new
AMap
.
Icon
({
//size: new AMap.Size(51, 23),
image
:
require
(
"@/assets/images/tiaoyaxiang.png"
)
});
marker
.
setIcon
(
icon
);
break
;
}
case
DEVICE_TYPE
.
VALUEWELL
:
{
let
icon
=
new
AMap
.
Icon
({
//size: new AMap.Size(51, 23),
image
:
require
(
"@/assets/images/famenjing.png"
)
});
marker
.
setIcon
(
icon
);
break
;
}
case
DEVICE_TYPE
.
FLOWMETER
:
{
let
icon
=
new
AMap
.
Icon
({
//size: new AMap.Size(51, 23),
image
:
require
(
"@/assets/images/liuliangji.png"
)
});
marker
.
setIcon
(
icon
);
break
;
}
case
DEVICE_TYPE
.
DUTYPERSON
:
{
let
icon
=
new
AMap
.
Icon
({
//size: new AMap.Size(51, 23),
image
:
require
(
"@/assets/images/zhibanrenyuan.png"
)
});
marker
.
setIcon
(
icon
);
break
;
}
case
DEVICE_TYPE
.
WORKORDER
:
{
let
icon
=
new
AMap
.
Icon
({
//size: new AMap.Size(51, 23),
image
:
require
(
"@/assets/images/zhibanrenyuan.png"
)
});
marker
.
setIcon
(
icon
);
break
;
}
case
DEVICE_TYPE
.
PRESSUREGAGE
:
{
let
icon
=
new
AMap
.
Icon
({
//size: new AMap.Size(51, 23),
image
:
require
(
"@/assets/images/yalibiao.png"
)
});
marker
.
setIcon
(
icon
);
break
;
}
case
DEVICE_TYPE
.
INSPECTOR
:
{
let
icon
=
new
AMap
.
Icon
({
//size: new AMap.Size(51, 23),
image
:
require
(
"@/assets/images/zhibanrenyuan.png"
)
});
marker
.
setIcon
(
icon
);
break
;
}
}
}
/**
* 添加折线
* @param path
*/
addPolyline
(
arr
)
{
// this` polyLines = [];
console
.
log
(
"包装的数组"
,
arr
);
for
(
let
i
=
0
;
i
<
arr
.
length
;
i
++
)
{
const
item
=
arr
[
i
];
let
{
coordinates
}
=
item
;
// console.log("coordinates",coordinates)
// let path = coordinates ? getArray(coordinates) :[];
// 字符串转二维数组
let
path
=
coordinates
?
eval
(
coordinates
)
:
[];
let
polyline
=
new
AMap
.
Polyline
({
path
,
strokeColor
:
"#80d8ff"
,
strokeWeight
:
4
,
strokeOpacity
:
0.9
,
zIndex
:
50
,
bubble
:
true
,
geodesic
:
true
,
extData
:
{
type
:
"newLine"
,
//当前line状态 0:正常状态 1:正在编辑状态
isState
:
0
,
lineData
:
item
}
});
this
.
polyLines
.
push
(
polyline
);
this
.
newLineObj
=
polyline
;
// 信息窗体
const
dom
=
createPop
(
lineInfoWindow
,
{
obj
:
{
a
:
123
,
editorPage
:
true
,
...
item
,
polyline
}
});
console
.
log
(
"dom"
,
dom
.
$el
);
dom
.
$el
.
addEventListener
(
"mouseover"
,
()
=>
{
let
options
=
this
.
myMap
.
getStatus
();
options
.
scrollWheel
=
false
;
this
.
myMap
.
setStatus
(
options
);
});
dom
.
$el
.
addEventListener
(
"mouseout"
,
()
=>
{
let
options
=
this
.
myMap
.
getStatus
();
options
.
scrollWheel
=
true
;
this
.
myMap
.
setStatus
(
options
);
});
let
infoWindow
=
new
AMap
.
InfoWindow
({
isCustom
:
true
,
autoMove
:
false
,
content
:
dom
.
$el
,
//信息船体偏移量
offset
:
new
AMap
.
Pixel
(
0
,
0
),
anchor
:
"left-top"
});
this
.
newLineAddEvent
(
polyline
);
polyline
.
infoWindow
=
infoWindow
;
//添加事件
polyline
.
on
(
"mouseover"
,
e
=>
{
if
(
this
.
lineType
==
1
)
return
;
// 上方导航的高
const
topBar
=
81
;
// 坐标导航的宽
const
leftBar
=
100
;
// 屏幕可视区的宽高
const
{
clientWidth
:
windowClientWidth
,
clientHeight
:
windowClientHeight
}
=
document
.
body
;
// 弹出的信息窗口的宽高
const
{
offsetWidth
:
infoWindowWidth
,
offsetHeight
:
infoWindowHeight
}
=
{
offsetWidth
:
406
,
offsetHeight
:
316
};
// 鼠标碰到线后的位置
const
{
clientX
:
mouseClientX
,
clientY
:
mouseClientY
}
=
e
.
originEvent
;
// 鼠标到左边界的距离
const
offsetLeftX
=
mouseClientX
-
100
;
// 鼠标到右边界的距离
const
offsetRightX
=
windowClientWidth
-
mouseClientX
;
const
offsetTopY
=
mouseClientY
-
81
;
const
offsetBottomY
=
windowClientHeight
-
mouseClientY
;
const
offsetY
=
mouseClientY
-
80
-
infoWindowHeight
;
let
X
=
20
,
Y
=
-
20
;
if
(
offsetLeftX
<=
infoWindowWidth
)
{
console
.
log
(
"靠左了"
);
X
=
20
;
}
else
if
(
offsetRightX
<=
infoWindowWidth
)
{
console
.
log
(
"靠右了"
);
X
=
-
infoWindowWidth
-
20
;
}
if
(
offsetTopY
<=
infoWindowHeight
)
{
console
.
log
(
"靠上了"
);
Y
=
20
;
}
else
if
(
offsetBottomY
<=
infoWindowHeight
+
81
)
{
console
.
log
(
"靠下了"
);
Y
=
-
infoWindowHeight
-
20
;
}
polyline
.
setOptions
({
strokeColor
:
"#80d8ff"
});
infoWindow
.
setOffset
(
new
AMap
.
Pixel
(
X
,
Y
));
infoWindow
.
open
(
map
,
e
.
lnglat
);
// polyline.infoWindow=infoWindow;
this
.
showInfoWindow
=
infoWindow
;
// const
});
polyline
.
on
(
"mouseout"
,
e
=>
{
polyline
.
setOptions
({
strokeColor
:
"#80d8ff"
});
// infoWindow.close();
});
// 计算info的位置
// function infoPosition() {}
}
map
.
add
(
this
.
polyLines
);
// 缩放地图到合适的视野级别
map
.
setFitView
();
}
// 创建一条新的线
createNewLine
()
{
map
.
remove
(
this
.
markerOverlays
);
this
.
mouseTool
.
polyline
({
// bubbles:false,
strokeWeight
:
4
,
strokeColor
:
"#80d8ff"
,
extData
:
{
type
:
"newLine"
,
//当前line状态 0:正常状态 1:正在编辑状态
isState
:
0
}
//同Polyline的Option设置
});
// 让它不再等于null
// this.newLineObj={a:123}
}
// 创建出来的新线归位,重置,当点击编辑跟删除的时候
newLineReset
()
{
this
.
lineFlag
=
false
;
if
(
this
.
mouserTool
)
{
this
.
mouseTool
.
close
();
}
if
(
this
.
newLineObj
)
{
this
.
newLineObj
.
polyEditor
.
close
();
map
.
remove
(
this
.
newLineObj
);
this
.
newLineObj
=
null
;
}
}
// 新建line增加编辑以及右键菜单
closeInfoWindow
()
{
this
.
showInfoWindow
&&
this
.
showInfoWindow
.
close
();
this
.
markerInfoWindow
&&
this
.
markerInfoWindow
.
close
();
}
// 新line与老line添加点击事件
newLineAddEvent
(
obj
)
{
obj
.
polyEditor
=
new
AMap
.
PolyEditor
(
map
,
obj
);
// obj.polyEditor.on('adjust',(e)=>{
// console.log("addnode")
// })
obj
.
on
(
"mousedown"
,
e
=>
{
console
.
log
(
e
.
originEvent
);
console
.
log
(
"lineType"
,
this
.
lineType
);
this
.
lineFlag
=
true
;
// 每次点击关闭然后再次激活
// 如果是新线就关闭
if
(
obj
.
getExtData
().
type
==
"newLine"
)
{
this
.
mouseTool
.
close
();
}
// 删除
if
(
this
.
lineType
==
3
)
{
this
.
lineDelete
(
obj
);
return
;
}
// 获取当前状态 0普通状态,1是正编辑状态
const
{
isState
,
type
}
=
obj
.
getExtData
();
// 如果不是新线的时候并且没点编辑,点击是无效的
if
(
type
!=
"newLine"
&&
this
.
lineType
!=
2
)
return
;
if
(
isState
==
0
)
{
// 如果是0,就打开编辑,变成编辑状态
obj
.
polyEditor
.
open
();
let
opstions
=
obj
.
getExtData
();
opstions
.
isState
=
1
;
console
.
log
(
opstions
);
obj
.
setExtData
(
opstions
);
}
else
{
return
;
// 经纬度
const
lnglatsArr
=
obj
.
getPath
().
map
(
item
=>
[
item
.
lng
,
item
.
lat
]);
// 管道总长度
const
pipeLength
=
obj
.
getLength
();
// 传回来的数据 如果是新管道就是空
const
lineData
=
type
==
"newLine"
?
{}
:
obj
.
getExtData
().
lineData
;
// const lineData = obj.getExtData().lineData;
console
.
log
(
"lineData===================>传入组件的数据"
,
lineData
);
this
.
infoWindowPipelineView
({
target
:
obj
,
lineType
:
type
,
lnglatsArr
,
pipeLength
,
lineData
});
}
});
}
// 隐藏所有管道
lineShow
(
bool
)
{
bool
?
this
.
polyLines
.
forEach
(
item
=>
item
.
show
())
:
this
.
polyLines
.
forEach
(
item
=>
item
.
hide
());
if
(
this
.
newLineObj
)
{
bool
?
this
.
newLineObj
.
show
()
:
this
.
newLineObj
.
hide
();
}
}
markerShow
(
type
,
bool
)
{
this
.
markers
.
forEach
(
item
=>
{
const
{
deviceType
}
=
item
.
getExtData
();
if
(
deviceType
==
type
)
{
bool
?
item
.
show
()
:
item
.
hide
();
}
// console.log("deviceType",deviceType);
});
}
lineDelete
(
obj
)
{
const
{
lineData
:
{
pipeName
}
}
=
obj
.
getExtData
();
vue
.
$confirm
(
`是否删除名称为"
${
pipeName
}
"的管道 ?`
,
"提示"
,
{
// confirmButtonText: "确定",
// cancelButtonText: "取消",
type
:
"warning"
// center: true
})
.
then
(()
=>
{
const
{
lineData
:
{
pipeId
}
}
=
obj
.
getExtData
();
console
.
log
(
pipeId
);
delPipe
(
pipeId
).
then
(
res
=>
{
const
index
=
this
.
polyLines
.
indexOf
(
obj
);
// 如果是老线,就要线删除原来的,然后重新包装一遍
if
(
index
>=
0
)
{
this
.
polyLines
.
splice
(
index
,
1
);
map
.
remove
(
obj
);
}
vue
.
$message
({
type
:
"success"
,
offset
:
100
,
// center:true,
message
:
"删除成功!"
});
// 关闭当前线条的infowindow
// this.closeLineInfoWindow();
});
})
.
catch
(()
=>
{
vue
.
$message
({
type
:
"info"
,
// center:true,
offset
:
100
,
message
:
"已取消删除"
});
});
}
// 关闭所有已经上传的线的编辑状态
linePolyEditorAllClose
()
{
this
.
polyLines
.
forEach
(
item
=>
{
item
.
polyEditor
.
close
();
let
opstions
=
item
.
getExtData
();
opstions
.
isState
=
0
;
item
.
setExtData
(
opstions
);
let
attr
=
item
.
getOptions
();
attr
.
strokeColor
=
"#F7FE38"
;
item
.
setOptions
(
attr
);
});
}
// 传进组件的会调 点确认的时候调
lineOkCallBack
(
target
,
data
)
{
target
.
polyEditor
.
close
();
const
index
=
this
.
polyLines
.
indexOf
(
target
);
// 如果是老线,就要线删除原来的,然后重新包装一遍
if
(
index
>=
0
)
{
this
.
polyLines
.
splice
(
index
,
1
);
}
console
.
log
(
"data999-=================>传回来的data"
,
data
);
this
.
addPolyline
([
data
]);
map
.
remove
(
target
);
// console.log('polyLines',this.polyLines)
}
// 上传服务器用的组件
infoWindowPipelineView
(
options
)
{
// const {} =options;
const
notice
=
createPop
(
pipelineView
,
{
title
:
"管道"
,
// 数据
// lineData: options.lineData,
// lnglatsArr:options.lnglatsArr,
// pipeLength:options.pipeLength,
// //线是新线还是老线
// lineType: options.lineType,
// target: options.obj,
...
options
,
//把当前对象当作that传进去
gaodeMap
:
this
,
lineOkCallBack
:
this
.
lineOkCallBack
});
notice
.
show
();
}
/**
* 添加鼠标事件
*/
addMouseTool
()
{
this
.
mouseTool
=
new
AMap
.
MouseTool
(
map
);
//监听draw事件可获取画好的覆盖物
this
.
overlays
=
[];
let
that
=
this
;
this
.
markerOverlays
=
[];
this
.
mouseTool
.
on
(
"draw"
,
function
(
e
)
{
if
(
e
.
obj
.
getExtData
().
type
!=
"newLine"
)
{
map
.
remove
(
that
.
markerOverlays
);
const
device
=
that
.
createInfowindow
(
"新增"
);
device
.
map
=
map
;
device
.
obj
=
e
.
obj
;
device
.
gaoMap
=
that
;
e
.
obj
.
on
(
"click"
,
function
(
aa
)
{
let
postion
=
aa
.
target
.
_position
;
//兼容拖拽后单击事件,拖拽后点击事件返回位置为数组
if
(
postion
instanceof
Array
)
{
device
.
form
.
longitude
=
postion
[
0
];
device
.
form
.
latitude
=
postion
[
1
];
}
else
{
device
.
form
.
longitude
=
postion
.
lng
;
device
.
form
.
latitude
=
postion
.
lat
;
}
device
.
show
();
});
e
.
obj
.
on
(
"mouseover"
,
function
()
{
that
.
mouseTool
.
close
();
});
e
.
obj
.
on
(
"mouseout"
,
function
()
{
that
.
draw
(
that
.
deviceType
);
})
that
.
markerOverlays
.
push
(
e
.
obj
);
}
if
(
e
.
obj
&&
e
.
obj
.
getExtData
().
type
==
"newLine"
)
{
console
.
log
(
"挂上事件"
);
that
.
newLineAddEvent
(
e
.
obj
);
// 记录这条线
// console.log(e.obj.getPath().length)
// 如果只有一个点,并没有连成线的时候就不close 大于一个点的时候才执行clse
console
.
log
(
that
.
lineType
)
if
(
e
.
obj
.
getPath
().
length
>
1
)
{
that
.
newLineObj
=
e
.
obj
;
that
.
mouseTool
.
close
();
}
else
{
// that.newLineObj = null;
}
// 关闭
// 创建一条新线,然后在点地图的时候删除原来的旧线
// that.createNewLine();
// 右键菜单
// that.addEditorAndMenu(e.obj)
}
// if(e.obj.getExtData().type=="line"){
// return;
// }
//that.mouseTool.close();
that
.
overlays
.
push
(
e
.
obj
);
});
}
/**
* 创建弹框事件
*/
createInfowindow
(
val
)
{
switch
(
this
.
deviceType
)
{
case
DEVICE_TYPE
.
PIPEPLINE
:
{
break
;
}
case
DEVICE_TYPE
.
REGEULATORBOX
:
{
return
createPop
(
regulatorBox
,
{
title
:
val
+
"调压箱"
});
}
case
DEVICE_TYPE
.
VALUEWELL
:
{
return
createPop
(
valveWell
,
{
title
:
val
+
"阀门井"
});
}
case
DEVICE_TYPE
.
FLOWMETER
:
{
return
createPop
(
flowMeter
,
{
title
:
val
+
"流量计"
});
}
case
DEVICE_TYPE
.
PRESSUREGAGE
:
{
return
createPop
(
pressureGage
,
{
title
:
val
+
"压力表"
});
}
}
}
/**
* 鼠标画图事件
* @param deviceType 设备类型
*/
draw
(
deviceType
)
{
let
that
=
this
;
that
.
deviceType
=
deviceType
;
if
(
DEVICE_TYPE
.
REGEULATORBOX
==
deviceType
||
DEVICE_TYPE
.
VALUEWELL
==
deviceType
||
DEVICE_TYPE
.
FLOWMETER
==
deviceType
||
DEVICE_TYPE
.
PRESSUREGAGE
==
deviceType
)
{
that
.
mouseTool
.
marker
({
draggable
:
true
});
}
if
(
DEVICE_TYPE
.
PIPEPLINE
==
deviceType
)
{
that
.
mouseTool
.
polyline
({
strokeWeight
:
9
,
strokeColor
:
"#80d8ff"
//同Polyline的Option设置
});
}
}
/**
* 添加地图控件
*/
addMapControl
()
{
AMap
.
plugin
(
[
"AMap.ToolBar"
,
"AMap.Scale"
,
"AMap.HawkEye"
,
"AMap.MapType"
,
"AMap.Geolocation"
],
function
()
{
// 在图面添加工具条控件,工具条控件集成了缩放、平移、定位等功能按钮在内的组合控件
//map.addControl(new AMap.ToolBar());
// 在图面添加比例尺控件,展示地图在当前层级和纬度下的比例尺
map
.
addControl
(
new
AMap
.
Scale
());
// 在图面添加鹰眼控件,在地图右下角显示地图的缩略图
map
.
addControl
(
new
AMap
.
HawkEye
({
isOpen
:
true
}));
// 在图面添加类别切换控件,实现默认图层与卫星图、实施交通图层之间切换的控制
map
.
addControl
(
new
AMap
.
MapType
({
position
:
{
top
:
"10px"
,
left
:
"100px"
}
})
);
// 在图面添加定位控件,用来获取和展示用户主机所在的经纬度位置
// map.addControl(new AMap.Geolocation());
}
);
}
searchTips
(
inputId
)
{
let
that
=
this
;
AMap
.
plugin
([
"AMap.AutoComplete"
,
"AMap.PlaceSearch"
],
function
()
{
//输入提示
// var autoOptions = {
// input: inputId
// };
// let auto = new AMap.AutoComplete(autoOptions);
that
.
placeSearch
=
new
AMap
.
PlaceSearch
({
map
:
map
});
//构造地点查询类
// auto.on("select", function(e) {
// that.searchSelectAdcode = e.poi.adcode;
// that.searchSelectName = e.poi.name;
// });
});
}
closeAddMarker
()
{
this
.
mouseTool
.
close
();
map
.
remove
(
this
.
markerOverlays
);
}
}
export
default
gaodeMap
;
gassafety-web/src/permission.js
View file @
54e22055
...
...
@@ -54,8 +54,11 @@ router.afterEach((to, from) => {
// console.log('全局后置钩子',to, from)
if
(
to
.
path
==
"/enterprise/mapView"
)
{
store
.
dispatch
(
"app/toggleDevice"
,
"mobile"
);
store
.
dispatch
(
"app/closeSideBar"
,
{
withoutAnimation
:
true
});
}
else
{
store
.
dispatch
(
"app/toggleDevice"
,
"desktop"
);
store
.
dispatch
(
"app/closeSideBar"
,
{
withoutAnimation
:
false
});
}
NProgress
.
done
();
});
gassafety-web/src/utils/gaodeMap.js
View file @
54e22055
...
...
@@ -5,10 +5,10 @@ import flowMeter from "../components/PopWindow/flowMeter.vue";
import
pressureGage
from
"../components/PopWindow/pressureGage.vue"
;
import
pipelineView
from
"../components/PopWindow/pipelineView.vue"
;
import
lineInfoWindow
from
"../components/PopWindow/lineInfoWindow.vue"
;
import
{
delDeviceInfo
}
from
"@/api/device/deviceInfo"
;
import
{
delDeviceInfo
,
updateDeviceInfo
}
from
"@/api/device/deviceInfo"
;
import
markerInfoWindow
from
"../components/PopWindow/markerInfoWindow.vue"
;
import
{
getArray
}
from
"@/utils/gassafety.js"
;
import
{
delPipe
}
from
"@/api/device/pipe.js"
;
import
{
delPipe
,
updatePipe
}
from
"@/api/device/pipe.js"
;
import
vue
from
"../main"
;
let
defaultCenter
=
"石家庄"
;
export
let
map
;
...
...
@@ -77,15 +77,15 @@ class gaodeMap {
});
// 地图开始平移删除infowindow
this
.
myMap
.
on
(
"movestart"
,()
=>
{
this
.
myMap
.
on
(
"movestart"
,
()
=>
{
// console.log("地图平移");
this
.
closeInfoWindow
()
})
this
.
closeInfoWindow
();
});
// 地图开始缩放删除infowindow
this
.
myMap
.
on
(
"zoomstart"
,()
=>
{
this
.
myMap
.
on
(
"zoomstart"
,
()
=>
{
// console.log("缩放开始")
this
.
closeInfoWindow
()
})
this
.
closeInfoWindow
();
});
this
.
districtBoundaries
();
}
...
...
@@ -155,12 +155,12 @@ class gaodeMap {
offset
:
new
AMap
.
Pixel
(
24
,
-
38
),
anchor
:
"left-top"
});
infoWindow
.
on
(
"mouseover"
,
function
()
{
infoWindow
.
on
(
"mouseover"
,
function
()
{
let
options
=
map
.
getStatus
();
options
.
scrollWheel
=
false
;
map
.
setStatus
(
options
);
});
infoWindow
.
on
(
"mouseout"
,
function
()
{
infoWindow
.
on
(
"mouseout"
,
function
()
{
let
options
=
map
.
getStatus
();
options
.
scrollWheel
=
true
;
map
.
setStatus
(
options
);
...
...
@@ -171,7 +171,10 @@ class gaodeMap {
offset
:
new
AMap
.
Pixel
(
0
,
5
)
});
this
.
setMarkerIcon
(
marker
);
if
(
DEVICE_TYPE
.
WORKORDER
!=
markerType
&&
DEVICE_TYPE
.
INSPECTOR
!=
markerType
)
{
if
(
DEVICE_TYPE
.
WORKORDER
!=
markerType
&&
DEVICE_TYPE
.
INSPECTOR
!=
markerType
)
{
marker
.
content
=
this
.
getMarketContent
(
data
);
marker
.
on
(
"mouseover"
,
infoOpen
);
marker
.
on
(
"mouseout"
,
infoClose
);
...
...
@@ -190,14 +193,40 @@ class gaodeMap {
editWindow
.
form
=
e
.
target
.
getExtData
();
editWindow
.
show
();
}
else
if
(
"delete"
==
that
.
mapOperateType
)
{
let
diviceType
=
{
"2"
:
"调压箱"
,
"3"
:
"阀门井"
,
"4"
:
"流量计"
,
"7"
:
"压力表"
,};
vue
.
$confirm
(
'是否删除名称为"'
+
e
.
target
.
getExtData
().
deviceName
+
'"的'
+
diviceType
[
markerType
]
+
" ?"
,
"提示"
,
{
let
diviceType
=
{
"2"
:
"调压箱"
,
"3"
:
"阀门井"
,
"4"
:
"流量计"
,
"7"
:
"压力表"
};
vue
.
$confirm
(
'是否删除名称为"'
+
e
.
target
.
getExtData
().
deviceName
+
'"的'
+
diviceType
[
markerType
]
+
" ?"
,
"提示"
,
{
type
:
"warning"
// center: true
}).
then
(()
=>
{
}
)
.
then
(()
=>
{
// that.deleteMarker(markerType, data.deviceId);
that
.
deleteMarker
(
markerType
,
data
).
then
(
res
=>
{
if
(
res
.
code
==
200
)
{
map
.
remove
(
marker
);
that
.
deleteMarker
(
markerType
,
data
.
deviceId
);
}).
catch
(()
=>
{
// 数组里也删了
const
ind
=
that
.
markers
.
indexOf
(
marker
);
if
(
ind
>=
0
)
{
that
.
markers
.
splice
(
ind
,
1
);
console
.
log
(
that
.
markers
)
}
}
});
})
.
catch
(()
=>
{
vue
.
$message
({
type
:
"info"
,
// center:true,
...
...
@@ -220,22 +249,19 @@ class gaodeMap {
editWindow
.
form
.
longitude
=
e
.
lnglat
.
lng
;
editWindow
.
form
.
latitude
=
e
.
lnglat
.
lat
;
});
}
else
{
marker
.
on
(
"mouseover"
,
function
()
{
}
else
{
marker
.
on
(
"mouseover"
,
function
()
{
marker
.
setLabel
({
offset
:
new
AMap
.
Pixel
(
0
,
-
10
),
//设置文本标注偏移量
content
:
"<div class='info'>"
+
data
.
deviceName
+
"</div>"
,
//设置文本标注内容
direction
:
'top'
//设置文本标注方位
content
:
"<div class='info'>"
+
data
.
deviceName
+
"</div>"
,
//设置文本标注内容
direction
:
"top"
//设置文本标注方位
});
});
marker
.
on
(
"mouseout"
,
function
()
{
marker
.
on
(
"mouseout"
,
function
()
{
marker
.
setLabel
({
content
:
null
});
});
}
this
.
markers
.
push
(
marker
);
...
...
@@ -256,8 +282,6 @@ class gaodeMap {
infoWindow
.
setContent
(
e
.
target
.
content
);
infoWindow
.
open
(
map
,
e
.
target
.
getPosition
());
that
.
markerInfoWindow
=
infoWindow
;
}
}
...
...
@@ -334,14 +358,17 @@ class gaodeMap {
* @param delType
* @param deviceId
*/
deleteMarker
(
delType
,
device
Id
)
{
deleteMarker
(
delType
,
device
Data
)
{
if
(
DEVICE_TYPE
.
REGEULATORBOX
==
delType
||
DEVICE_TYPE
.
VALUEWELL
==
delType
||
DEVICE_TYPE
.
FLOWMETER
==
delType
||
DEVICE_TYPE
.
PRESSUREGAGE
==
delType
)
{
delDeviceInfo
(
deviceId
);
// delDeviceInfo(deviceId);
const
upDataObj
=
{
...
deviceData
};
upDataObj
.
isDel
=
1
;
return
updateDeviceInfo
(
upDataObj
);
}
}
...
...
@@ -634,27 +661,60 @@ class gaodeMap {
// console.log("deviceType",deviceType);
});
}
// 其实是修改了状态,不是真的删除
lineDelete
(
obj
)
{
const
{
lineData
:
{
pipeName
}
lineData
:
{
pipeName
,
deviceInfoList
}
}
=
obj
.
getExtData
();
console
.
log
(
"deviceInfoList"
,
deviceInfoList
);
var
devices
=
" "
;
for
(
var
i
=
0
;
i
<
deviceInfoList
.
length
;
i
++
)
{
var
item
=
deviceInfoList
[
i
];
devices
=
devices
+
item
.
deviceName
+
" "
;
}
vue
.
$confirm
(
`是否删除名称为"
${
pipeName
}
"的管道 ?`
,
"提示"
,
{
.
$confirm
(
'请确认是否删除管道名称为"'
+
pipeName
+
'"的数据项,该管道下包含的设备('
+
devices
+
")将一并删除"
,
"提示"
,
{
// confirmButtonText: "确定",
// cancelButtonText: "取消",
type
:
"warning"
// center: true
})
}
)
.
then
(()
=>
{
const
{
lineData
:
{
pipeId
}
}
=
obj
.
getExtData
();
console
.
log
(
pipeId
);
delPipe
(
pipeId
).
then
(
res
=>
{
const
{
lineData
}
=
obj
.
getExtData
();
// updatePipe
// delPipe(pipeId).then(res => {
let
upDataObj
=
{
...
lineData
};
upDataObj
.
isDel
=
1
;
updatePipe
(
upDataObj
).
then
(
res
=>
{
if
(
res
.
code
==
200
)
{
const
index
=
this
.
polyLines
.
indexOf
(
obj
);
// 如果是老线,就要线删除原来的,然后重新包装一遍
if
(
index
>=
0
)
{
this
.
polyLines
.
splice
(
index
,
1
);
// 删除管道的时候,与管道管理额的设备也要删除
for
(
var
i
=
0
;
i
<
deviceInfoList
.
length
;
i
++
)
{
const
item
=
deviceInfoList
[
i
];
for
(
let
j
=
0
;
j
<
this
.
markers
.
length
;
j
++
)
{
const
item2
=
this
.
markers
[
j
];
if
(
item
.
deviceId
==
item2
.
getExtData
().
deviceId
)
{
map
.
remove
(
item2
);
const
ind
=
this
.
markers
.
indexOf
(
item2
);
if
(
ind
>=
0
)
{
this
.
markers
.
splice
(
ind
,
1
);
}
break
;
}
}
}
map
.
remove
(
obj
);
}
vue
.
$message
({
...
...
@@ -665,9 +725,12 @@ class gaodeMap {
});
// 关闭当前线条的infowindow
// this.closeLineInfoWindow();
console
.
log
(
"改变线条"
);
}
});
})
.
catch
(()
=>
{
.
catch
(
err
=>
{
console
.
log
(
err
);
vue
.
$message
({
type
:
"info"
,
// center:true,
...
...
@@ -752,25 +815,24 @@ class gaodeMap {
device
.
show
();
});
e
.
obj
.
on
(
"mouseover"
,
function
()
{
e
.
obj
.
on
(
"mouseover"
,
function
()
{
that
.
mouseTool
.
close
();
});
e
.
obj
.
on
(
"mouseout"
,
function
()
{
e
.
obj
.
on
(
"mouseout"
,
function
()
{
that
.
draw
(
that
.
deviceType
);
})
})
;
that
.
markerOverlays
.
push
(
e
.
obj
);
}
if
(
e
.
obj
&&
e
.
obj
.
getExtData
().
type
==
"newLine"
)
{
console
.
log
(
"挂上事件"
);
that
.
newLineAddEvent
(
e
.
obj
);
// 记录这条线
// console.log(e.obj.getPath().length)
// 如果只有一个点,并没有连成线的时候就不close 大于一个点的时候才执行clse
console
.
log
(
that
.
lineType
)
console
.
log
(
that
.
lineType
)
;
if
(
e
.
obj
.
getPath
().
length
>
1
)
{
that
.
newLineObj
=
e
.
obj
;
that
.
mouseTool
.
close
();
...
...
@@ -803,22 +865,22 @@ class gaodeMap {
}
case
DEVICE_TYPE
.
REGEULATORBOX
:
{
return
createPop
(
regulatorBox
,
{
title
:
val
+
"调压箱"
title
:
val
+
"调压箱"
});
}
case
DEVICE_TYPE
.
VALUEWELL
:
{
return
createPop
(
valveWell
,
{
title
:
val
+
"阀门井"
title
:
val
+
"阀门井"
});
}
case
DEVICE_TYPE
.
FLOWMETER
:
{
return
createPop
(
flowMeter
,
{
title
:
val
+
"流量计"
title
:
val
+
"流量计"
});
}
case
DEVICE_TYPE
.
PRESSUREGAGE
:
{
return
createPop
(
pressureGage
,
{
title
:
val
+
"压力表"
title
:
val
+
"压力表"
});
}
}
...
...
@@ -902,7 +964,6 @@ class gaodeMap {
});
}
closeAddMarker
()
{
this
.
mouseTool
.
close
();
map
.
remove
(
this
.
markerOverlays
);
...
...
gassafety-web/src/views/device/deviceInfo/index.vue
View file @
54e22055
...
...
@@ -88,16 +88,16 @@
<el-table-column
label=
"设备编号"
align=
"center"
prop=
"deviceCode"
/>
<el-table-column
label=
"设备类型"
align=
"center"
prop=
"deviceType"
>
<template
slot-scope=
"scope"
>
<span
v-if=
"scope.row.deviceType == 1"
>
调压
箱
</span>
<span
v-if=
"scope.row.deviceType == 1"
>
调压
阀
</span>
<span
v-if=
"scope.row.deviceType == 2"
>
阀门井
</span>
<span
v-if=
"scope.row.deviceType == 3"
>
流量计
</span>
<span
v-if=
"scope.row.deviceType == 4"
>
智能燃气
表
</span>
<span
v-if=
"scope.row.deviceType == 4"
>
压力
表
</span>
</
template
>
</el-table-column>
<el-table-column
label=
"设备型号"
align=
"center"
prop=
"deviceModel"
/>
<el-table-column
label=
"所在地址"
align=
"center"
prop=
"deviceAddr"
/>
<el-table-column
label=
"安装
时间
"
align=
"center"
prop=
"installationTime"
width=
"180"
/>
<el-table-column
label=
"最后巡检
时间
"
align=
"center"
prop=
"inspectionTime"
width=
"180"
/>
<el-table-column
label=
"安装
日期
"
align=
"center"
prop=
"installationTime"
width=
"180"
/>
<el-table-column
label=
"最后巡检
日期
"
align=
"center"
prop=
"inspectionTime"
width=
"180"
/>
<el-table-column
label=
"操作"
align=
"center"
class-name=
"small-padding fixed-width"
>
<
template
slot-scope=
"scope"
>
<el-button
...
...
@@ -133,20 +133,31 @@
/>
<!-- 添加或修改设备信息对话框 -->
<el-dialog
:title=
"title"
:visible
.
sync=
"open"
width=
"800px"
append-to-body
>
<el-dialog
:title=
"title"
:visible
.
sync=
"open"
append-to-body
@
close=
"cancel"
>
<el-form
ref=
"form"
:model=
"form"
:rules=
"rules"
label-width=
"135px"
>
<el-col
:span=
"11"
>
<el-form-item
label=
"所属管道"
prop=
"pipeId"
>
<el-select
v-model=
"form.pipeId"
placeholder=
"请选择所属管道"
clearable
size=
"small"
style=
"width: 600px"
>
<el-select
v-model=
"form.pipeId"
placeholder=
"请选择所属管道"
style=
"width: 100%"
>
<el-option
v-for=
"item in options"
:key=
"item.pipeId"
:label=
"item.pipeName"
:value=
"item.pipeId"
></el-option>
>
</el-option>
</el-select>
</el-form-item>
<el-form-item
label=
"设备类型"
>
<el-select
v-model=
"form.deviceType"
placeholder=
"请选择设备类型"
style=
"width: 600px"
>
</el-col>
<el-col
:span=
"12"
>
<el-form-item
label=
"设备编号"
prop=
"deviceCode"
>
<el-input
v-model=
"form.deviceCode"
placeholder=
"请输入设备编号"
/>
</el-form-item>
</el-col>
<el-col
:span=
"11"
>
<el-form-item
label=
"设备类型"
prop=
"deviceType"
>
<el-select
v-model=
"form.deviceType"
placeholder=
"请选择设备类型"
style=
"width: 100%"
>
<el-option
v-for=
"dict in typeOptions"
:key=
"dict.dictValue"
...
...
@@ -155,34 +166,72 @@
></el-option>
</el-select>
</el-form-item>
</el-col>
<el-col
:span=
"12"
>
<el-form-item
label=
"设备名称"
prop=
"deviceName"
>
<el-input
v-model=
"form.deviceName"
placeholder=
"请输入设备名称"
style=
"width: 600px"
/>
</el-form-item>
<el-form-item
label=
"设备编号"
prop=
"deviceCode"
>
<el-input
v-model=
"form.deviceCode"
placeholder=
"请输入设备编号"
style=
"width: 600px"
/>
<el-input
v-model=
"form.deviceName"
placeholder=
"请输入设备名称"
/>
</el-form-item>
</el-col>
<el-col
:span=
"11"
>
<el-form-item
label=
"设备型号"
prop=
"deviceModel"
>
<el-input
v-model=
"form.deviceModel"
placeholder=
"请输入设备型号"
style=
"width: 600px"
/>
<el-input
v-model=
"form.deviceModel"
placeholder=
"请输入设备型号"
/>
</el-form-item>
</el-col>
<el-col
:span=
"12"
>
<el-form-item
label=
"物联网编号"
prop=
"iotNo"
>
<el-input
v-model=
"form.iotNo"
placeholder=
"请输入物联网编号"
/>
</el-form-item>
</el-col>
<el-col
:span=
"23"
>
<el-form-item
label=
"所在地址"
prop=
"deviceAddr"
>
<el-input
v-model=
"form.deviceAddr"
placeholder=
"请输入所在地址"
style=
"width: 600px
"
/>
<el-input
v-model=
"form.deviceAddr"
placeholder=
"请输入所在地址
"
/>
</el-form-item>
<el-form-item
label=
"经纬度"
>
</el-col>
<el-col
:span=
"23"
>
<el-form-item
label=
"经纬度坐标"
prop=
"longitude"
>
<el-row>
<el-col
:span=
"8"
>
<el-input
v-model
.
number=
"form.longitude"
placeholder=
"请输入经度"
/>
</el-col>
<el-col
:span=
"8
"
>
<el-col
:span=
"8"
style=
"margin-left: 10px
"
>
<el-input
v-model
.
number=
"form.latitude"
placeholder=
"请输入纬度"
/>
</el-col>
<el-col
:span=
"5
"
>
<el-col
:span=
"5"
style=
"margin-left: 10px
"
>
<el-button
type=
"primary"
plain
@
click=
"MapdialogFun"
>
选择经纬度
</el-button>
</el-col>
</el-row>
</el-form-item>
</el-col>
<el-col
:span=
"11"
>
<el-form-item
label=
"联系人"
prop=
"linkman"
>
<el-input
v-model=
"form.linkman"
placeholder=
"请输入联系人"
/>
</el-form-item>
</el-col>
<el-col
:span=
"12"
>
<el-form-item
label=
"联系电话"
prop=
"phone"
>
<el-input
type=
"number"
maxlength=
"12"
v-model=
"form.phone"
placeholder=
"请输入联系电话"
/>
</el-form-item>
</el-col>
<el-col>
<el-form-item
label=
"设备图片上传"
prop=
"iconUrl"
>
<MyFileUpload
listType=
"picture-card"
...
...
@@ -190,44 +239,58 @@
@
remove=
"listRemove"
:fileArr=
"fileList"
/>
<el-input
v-show=
"false"
disabled
v-model=
"form.iconUrl"
></el-input>
</el-form-item>
<el-form-item
label=
"联系人"
prop=
"linkman"
>
<el-input
v-model=
"form.linkman"
placeholder=
"请输入联系人"
/>
</el-form-item>
<el-form-item
label=
"电话"
prop=
"phone"
>
<el-input
v-model=
"form.phone"
placeholder=
"请输入电话"
/>
</el-form-item>
<el-form-item
label=
"安装时间"
prop=
"installationTime"
>
</el-col>
<el-col>
<el-form-item
label=
"安装日期"
prop=
"installationTime"
>
<el-col
:span=
"11"
>
<el-date-picker
clearable
size=
"small"
style=
"width: 100%"
v-model=
"form.installationTime"
type=
"datetim
e"
value-format=
"yyyy-MM-dd HH:mm:ss
"
placeholder=
"选择安装时间
"
>
type=
"dat
e"
value-format=
"yyyy-MM-dd
"
placeholder=
"请选择安装日期
"
>
</el-date-picker>
</el-col>
</el-form-item>
<el-form-item
label=
"备注"
prop=
"remarks"
>
<el-input
v-model=
"form.remarks"
placeholder=
"请输入备注"
/>
</el-col>
<el-col
:span=
"23"
>
<el-form-item
label=
"备注信息"
prop=
"remarks"
>
<el-input
type=
"textarea"
v-model=
"form.remarks"
placeholder=
"请输入备注信息"
/>
</el-form-item>
</el-col>
</el-form>
<div
slot=
"footer"
class=
"dialog-footer"
>
<el-button
type=
"primary"
@
click=
"submitForm"
>
确 定
</el-button>
<el-button
@
click=
"cancel"
>
取 消
</el-button>
</div>
</el-dialog>
<!-- <Mapdialog v-if="loadmap" :dialogTableVisible="dialogTableVisible" @dialogcancelFun="dialogcancelFun" :slat="form.latitude" :slng="form.longitude" @confirm="qrFun" />-->
<Mapdialog
v-if=
"loadmap"
:dialogTableVisible=
"dialogTableVisible"
@
dialogcancelFun=
"dialogcancelFun"
:slat=
"form.latitude"
:slng=
"form.longitude"
@
confirmFun=
"confirmFun($event)"
></Mapdialog>
</div>
</template>
<
script
>
import
{
listDeviceInfo
,
getDeviceInfo
,
addDeviceInfo
,
updateDeviceInfo
,
exportDeviceInfo
}
from
"@/api/device/deviceInfo"
;
import
{
pipeAllInfoList
}
from
"@/api/device/pipe"
;
import
MyFileUpload
from
'@/components/MyFileUpload'
;
// import Mapdialog from "@/components/maplnglat
.vue";
import
{
listDeviceInfo
,
getDeviceInfo
,
addDeviceInfo
,
updateDeviceInfo
,
exportDeviceInfo
}
from
"@/api/device/deviceInfo"
;
import
{
pipeAllInfoList
}
from
"@/api/device/pipe"
;
import
MyFileUpload
from
'@/components/MyFileUpload'
;
import
Mapdialog
from
"@/components/mapDialog/checkDeviceLoaction
.vue"
;
export
default
{
export
default
{
name
:
"DeviceInfo"
,
components
:
{
MyFileUpload
,
Mapdialog
},
data
()
{
return
{
...
...
@@ -284,6 +347,43 @@ export default {
form
:
{},
// 表单校验
rules
:
{
pipeId
:
[
{
required
:
true
,
message
:
"请选择所属管道"
,
trigger
:
"blur"
},
],
deviceType
:
[
{
required
:
true
,
message
:
"请选择设备类型"
,
trigger
:
"blur"
},
],
deviceName
:
[
{
required
:
true
,
message
:
"请输入设备名称"
,
trigger
:
"blur"
},
],
deviceCode
:
[
{
required
:
true
,
message
:
"请输入设备编号"
,
trigger
:
"blur"
},
],
deviceModel
:
[
{
required
:
true
,
message
:
"请输入设备型号"
,
trigger
:
"blur"
},
],
deviceAddr
:
[
{
required
:
true
,
message
:
"请输入所在地址"
,
trigger
:
"blur"
},
],
longitude
:
[
{
required
:
true
,
message
:
"请输入经纬度"
,
trigger
:
"blur"
},
],
iotNo
:
[
{
required
:
true
,
message
:
"请输入物联网编号"
,
trigger
:
"blur"
},
],
/*linkman: [
{ required: true, message: "请输入联系人", trigger: "blur" }
],
phone: [
{ required: true, message: "请输入联系电话", trigger: "blur" },
{ min: 11, max: 11, message: "长度11个数字", trigger: "blur" },
],
iconUrl: [
{ required: true, message: "请上传图片", trigger: "change" }
],
installationTime: [
{ required: true, message: "请选择日期", trigger: "change" },
],*/
}
};
},
...
...
@@ -307,22 +407,22 @@ export default {
this
.
form
.
iconUrl
=
res
.
url
;
},
listRemove
(
e
)
{
this
.
form
.
u
rl
=
""
;
this
.
form
.
iconU
rl
=
""
;
this
.
fileList
=
[];
},
// qr
Fun(res) {
//
//确认选择经纬度
//
this.form.longitude = res.lng;
//
this.form.latitude = res.lat;
//
},
//
MapdialogFun() {
//
this.loadmap = true;
//
this.dialogTableVisible = true;
//
},
//
dialogcancelFun() {
//
this.loadmap = false;
//
this.dialogTableVisible = false;
//
},
confirm
Fun
(
res
)
{
//确认选择经纬度
this
.
form
.
longitude
=
res
.
lng
;
this
.
form
.
latitude
=
res
.
lat
;
},
MapdialogFun
()
{
this
.
loadmap
=
true
;
this
.
dialogTableVisible
=
true
;
},
dialogcancelFun
()
{
this
.
loadmap
=
false
;
this
.
dialogTableVisible
=
false
;
},
// 取消按钮
cancel
()
{
this
.
open
=
false
;
...
...
@@ -373,7 +473,7 @@ export default {
pipeAllInfoList
().
then
(
response
=>
{
this
.
options
=
response
.
data
;
this
.
open
=
true
;
this
.
title
=
"添加
设备信息"
;
this
.
title
=
"新增
设备信息"
;
});
},
/** 修改按钮操作 */
...
...
@@ -385,14 +485,14 @@ export default {
const
deviceId
=
row
.
deviceId
||
this
.
ids
getDeviceInfo
(
deviceId
).
then
(
response
=>
{
this
.
form
=
response
.
data
;
this
.
open
=
true
;
this
.
title
=
"修改设备信息"
;
});
if
(
this
.
form
.
iconUrl
)
{
this
.
fileList
.
push
({
url
:
this
.
form
.
iconUrl
,
});
}
this
.
open
=
true
;
this
.
title
=
"修改设备信息"
;
});
},
/** 提交按钮 */
submitForm
()
{
...
...
@@ -405,6 +505,7 @@ export default {
this
.
getList
();
});
}
else
{
console
.
log
(
this
.
form
,
"this.form"
);
addDeviceInfo
(
this
.
form
).
then
(
response
=>
{
this
.
msgSuccess
(
"新增成功"
);
this
.
open
=
false
;
...
...
@@ -454,7 +555,18 @@ export default {
})
},
}
};
};
</
script
>
<
style
>
.notice
{
background
:
white
;
position
:
fixed
;
top
:
102px
;
right
:
0
;
left
:
0
;
margin
:
auto
;
width
:
80%
;
height
:
80%
;
border
:
solid
1px
;
}
</
style
>
gassafety-web/src/views/device/deviceInfoDetail/index.vue
View file @
54e22055
...
...
@@ -32,7 +32,7 @@
<el-form-item
label=
"设备型号:"
prop=
"deviceModel"
>
<font>
{{
form
.
deviceModel
}}
</font>
</el-form-item>
<el-form-item
label=
"物联网编号:"
prop=
"iotNo"
v-if=
"form.iotNo != null || form.iotNo != ''"
>
<el-form-item
label=
"物联网编号:"
prop=
"iotNo"
>
<font>
{{
form
.
iotNo
}}
</font>
</el-form-item>
<el-form-item
label=
"联系人:"
prop=
"linkman"
>
...
...
@@ -70,7 +70,7 @@
</el-form>
</div>
<div
id=
"marbox"
style=
"width: 700px;height:
40
0px;float: left;margin-top: -25px; border: 1px solid rgb(218, 213, 213);"
>
<div
id=
"marbox"
style=
"width: 700px;height:
39
0px;float: left;margin-top: -25px; border: 1px solid rgb(218, 213, 213);"
>
<div
style=
"width: 100%;height: 100%"
id=
"container"
></div>
</div>
</div>
...
...
@@ -106,12 +106,9 @@
this
.
gaoMap
=
gaoMap
;
},
methods
:
{
/** 获取巡检计划详情 */
getDetail
(){
getDeviceInfo
(
this
.
deviceId
).
then
(
response
=>
{
this
.
form
=
response
.
data
;
console
.
log
(
"this.form"
,
this
.
form
)
this
.
gaoMap
.
resetMapCenter
([
this
.
form
.
longitude
,
this
.
form
.
latitude
]);
this
.
gaoMap
.
addMarker
(
DEVICE_TYPE
.
WORKORDER
,
this
.
form
)
});
...
...
gassafety-web/src/views/device/pipe/index.vue
View file @
54e22055
...
...
@@ -101,8 +101,8 @@
</el-table-column>
<el-table-column
label=
"管道长度"
align=
"center"
prop=
"pipeLength"
/>
<el-table-column
label=
"所在地址"
align=
"center"
prop=
"pipeAddr"
/>
<el-table-column
label=
"安装
时间
"
align=
"center"
prop=
"installationTime"
width=
"180"
/>
<el-table-column
label=
"最后巡检
时间
"
align=
"center"
prop=
"inspectionTime"
width=
"180"
/>
<el-table-column
label=
"安装
日期
"
align=
"center"
prop=
"installationTime"
width=
"180"
/>
<el-table-column
label=
"最后巡检
日期
"
align=
"center"
prop=
"inspectionTime"
width=
"180"
/>
<el-table-column
label=
"操作"
align=
"center"
class-name=
"small-padding fixed-width"
>
<
template
slot-scope=
"scope"
>
<el-button
...
...
@@ -138,84 +138,120 @@
/>
<!-- 添加或修改管道信息对话框 -->
<el-dialog
:title=
"title"
:visible
.
sync=
"open"
width=
"800px"
append-to-body
>
<el-dialog
:title=
"title"
:visible
.
sync=
"open"
append-to-body
@
close=
"cancel"
>
<el-form
ref=
"form"
:model=
"form"
:rules=
"rules"
label-width=
"135px"
>
<el-form-item
label=
"管道类型"
>
<el-select
v-model=
"form.pipeType"
placeholder=
"请选择管道类型"
style=
"width: 600px"
>
<el-option
v-for=
"dict in typeOptions"
:key=
"dict.dictValue"
:label=
"dict.dictLabel"
:value=
"dict.dictValue"
></el-option>
</el-select>
</el-form-item>
<el-col
:span=
"23"
>
<el-form-item
label=
"管道名称"
prop=
"pipeName"
>
<el-input
v-model=
"form.pipeName"
placeholder=
"请输入管道名称"
style=
"width: 600px"
/>
<el-input
v-model=
"form.pipeName"
placeholder=
"请输入管道名称"
/>
</el-form-item>
</el-col>
<el-col
:span=
"11"
>
<el-form-item
label=
"管道编号"
prop=
"pipeCode"
>
<el-input
v-model=
"form.pipeCode"
placeholder=
"请输入管道编号"
style=
"width: 600px"
/>
</el-form-item>
<el-form-item
label=
"管道压力"
>
<el-select
v-model=
"form.pipePressure"
placeholder=
"请选择管道压力"
style=
"width: 600px"
>
<el-option
v-for=
"dict in pressureOptions"
:key=
"dict.dictValue"
:label=
"dict.dictLabel"
:value=
"dict.dictValue"
></el-option>
</el-select>
</el-form-item>
<el-form-item
label=
"所在地址"
prop=
"pipeAddr"
>
<el-input
v-model=
"form.pipeAddr"
placeholder=
"请输入所在地址"
style=
"width: 600px"
/>
<el-input
v-model=
"form.pipeCode"
placeholder=
"请输入管道编号"
/>
</el-form-item>
</el-col>
<el-col
:span=
"12"
>
<el-form-item
label=
"管道长度"
prop=
"pipeLength"
>
<el-input
v-model=
"form.pipeLength"
placeholder=
"请输入管道长度"
style=
"width: 600px"
/>
<el-input
type=
"number"
min=
"0"
v-model=
"form.pipeLength"
placeholder=
"请输入管道长度"
>
<i
slot=
"suffix"
style=
"color: #000; font-style: normal; margin-right: 10px"
>
米
</i
>
</el-input>
</el-form-item>
</el-col>
<el-col
:span=
"23"
>
<el-form-item
label=
"管道所在地址"
prop=
"pipeAddr"
>
<el-input
v-model=
"form.pipeAddr"
placeholder=
"请输入管道所在地址"
/>
</el-form-item>
</el-col>
<el-col
:span=
"23"
>
<el-form-item
label=
"管道坐标"
prop=
"coordinates"
>
<el-col
:span=
"18"
>
<el-input
v-model=
"form.coordinates"
type=
"textarea"
placeholder=
"请输入坐标"
/>
<el-input
type=
"textarea"
v-model=
"form.coordinates"
placeholder=
"请输入管道坐标"
/>
</el-col>
<el-col
:span=
"5"
style=
"margin-left: 10px"
>
<el-button
type=
"primary"
plain
@
click=
"MapdialogFun"
>
选择管道坐标
</el-button>
</el-col>
<el-col
:span=
"5"
>
<el-button
type=
"primary"
plain
@
click=
"MapdialogFun"
>
选择坐标
</el-button>
</el-form-item>
</el-col>
<el-col>
<el-form-item
label=
"管道类型"
prop=
"pipeType"
>
<el-radio-group
v-model=
"form.pipeType"
>
<el-radio
label=
"1"
>
地埋管线
</el-radio>
<el-radio
label=
"2"
>
地表管线
</el-radio>
</el-radio-group>
</el-form-item>
</el-col>
<el-col>
<el-form-item
label=
"管道压力"
prop=
"pipePressure"
>
<!-- select -->
<el-radio-group
v-model=
"form.pipePressure"
>
<!-- 1低压,2中压,3次高压,4高压 -->
<el-radio
label=
"1"
>
低压
</el-radio>
<el-radio
label=
"2"
>
中压
</el-radio>
<el-radio
label=
"3"
>
次高压
</el-radio>
<el-radio
label=
"4"
>
高压
</el-radio>
</el-radio-group>
</el-form-item>
<el-form-item
label=
"设备图片上传"
prop=
"iconUrl"
>
</el-col>
<el-col>
<el-form-item
label=
"管道图片上传"
prop=
"iconUrl"
>
<MyFileUpload
listType=
"picture-card"
@
resFun=
"getFileInfo"
@
remove=
"listRemove"
:fileArr=
"fileList"
/>
<el-input
v-show=
"false"
disabled
v-model=
"form.iconUrl"
></el-input>
</el-form-item>
<el-form-item
label=
"安装时间"
prop=
"installationTime"
>
</el-col>
<el-col>
<el-form-item
label=
"安装日期"
prop=
"installationTime"
>
<el-col
:span=
"11"
>
<el-date-picker
clearable
size=
"small"
style=
"width: 100%"
v-model=
"form.installationTime"
type=
"datetim
e"
value-format=
"yyyy-MM-dd HH:mm:ss
"
placeholder=
"选择安装时间
"
>
type=
"dat
e"
value-format=
"yyyy-MM-dd
"
placeholder=
"请选择安装日期
"
>
</el-date-picker>
</el-col>
</el-form-item>
<el-form-item
label=
"备注"
prop=
"remarks"
>
<el-input
v-model=
"form.remarks"
placeholder=
"请输入备注"
style=
"width: 600px"
/>
</el-col>
<el-col
:span=
"23"
>
<el-form-item
label=
"备注信息"
prop=
"remarks"
>
<el-input
v-model=
"form.remarks"
type=
"textarea"
placeholder=
"请输入备注信息"
/>
</el-form-item>
</el-col>
</el-form>
<div
slot=
"footer"
class=
"dialog-footer"
>
<el-button
type=
"primary"
@
click=
"submitForm"
>
确 定
</el-button>
<el-button
@
click=
"cancel"
>
取 消
</el-button>
</div>
</el-dialog>
<Mapdialog
v-if=
"loadmap"
:dialogTableVisible=
"dialogTableVisible"
@
dialogcancelFun=
"dialogcancelFun"
@
confirmFun=
"confirmFun($event)"
:str=
"str"
></Mapdialog>
</div>
</template>
<
script
>
import
{
listPipe
,
getPipe
,
delPipe
,
addPipe
,
updatePipe
,
exportPipe
}
from
"@/api/device/pipe"
;
import
MyFileUpload
from
'@/components/MyFileUpload'
;
import
{
listPipe
,
getPipe
,
addPipe
,
updatePipe
,
exportPipe
}
from
"@/api/device/pipe"
;
import
MyFileUpload
from
'@/components/MyFileUpload'
;
import
Mapdialog
from
"@/components/mapDialog/checkPipeLineLocation.vue"
;
export
default
{
export
default
{
name
:
"Pipe"
,
components
:
{
MyFileUpload
MyFileUpload
,
Mapdialog
},
data
()
{
return
{
...
...
@@ -241,9 +277,11 @@ export default {
open
:
false
,
// 上传文件列表
fileList
:
[],
// 管道类型字典
typeOptions
:
[],
// 管道压力字典
// 地图
loadmap
:
false
,
dialogTableVisible
:
false
,
str
:
""
,
// 管道压力数据字典
pressureOptions
:
[],
// 查询参数
queryParams
:
{
...
...
@@ -262,9 +300,42 @@ export default {
remarks
:
null
},
// 表单参数
form
:
{},
form
:
{
pipeName
:
""
,
pipeType
:
"1"
,
pipePressure
:
"1"
,
iconUrl
:
""
,
coordinates
:
""
},
// 表单校验
rules
:
{
pipeName
:
[
{
required
:
true
,
message
:
"请输入管道名称"
,
trigger
:
"blur"
},
],
pipeCode
:
[
{
required
:
true
,
message
:
"请输入管道编号"
,
trigger
:
"blur"
},
],
pipeLength
:
[
{
required
:
true
,
message
:
"请输入管道长度"
,
trigger
:
"blur"
},
],
pipeAddr
:
[
{
required
:
true
,
message
:
"请输入管道所在地址"
,
trigger
:
"blur"
},
],
pipeType
:
[
{
required
:
true
,
message
:
"请选择管道类型"
,
trigger
:
"blur"
},
],
pipePressure
:
[
{
required
:
true
,
message
:
"请选择管道压力"
,
trigger
:
"blur"
},
],
coordinates
:
[
{
required
:
true
,
message
:
"请选择管道坐标"
,
trigger
:
"blur"
},
],
/*iconUrl: [
{ required: true, message: "请上传图片", trigger: "change" },
],
installationTime: [
{ required: true, message: "请选择日期", trigger: "change" },
],*/
}
};
},
...
...
@@ -291,9 +362,21 @@ export default {
this
.
form
.
iconUrl
=
res
.
url
;
},
listRemove
(
e
)
{
this
.
form
.
u
rl
=
""
;
this
.
form
.
iconU
rl
=
""
;
this
.
fileList
=
[];
},
confirmFun
(
res
)
{
//确认选择坐标
this
.
form
.
coordinates
=
res
;
},
MapdialogFun
()
{
this
.
loadmap
=
true
;
this
.
dialogTableVisible
=
true
;
},
dialogcancelFun
()
{
this
.
loadmap
=
false
;
this
.
dialogTableVisible
=
false
;
},
// 取消按钮
cancel
()
{
this
.
open
=
false
;
...
...
@@ -316,7 +399,6 @@ export default {
inspectionTime
:
null
,
remarks
:
null
};
this
.
fileList
=
[];
this
.
resetForm
(
"form"
);
},
/** 搜索按钮操作 */
...
...
@@ -339,7 +421,7 @@ export default {
handleAdd
()
{
this
.
reset
();
this
.
open
=
true
;
this
.
title
=
"添加
管道信息"
;
this
.
title
=
"新增
管道信息"
;
},
/** 修改按钮操作 */
handleUpdate
(
row
)
{
...
...
@@ -347,13 +429,13 @@ export default {
const
pipeId
=
row
.
pipeId
||
this
.
ids
getPipe
(
pipeId
).
then
(
response
=>
{
this
.
form
=
response
.
data
;
this
.
open
=
true
;
this
.
title
=
"修改管道信息"
;
if
(
this
.
form
.
iconUrl
)
{
this
.
fileList
.
push
({
name
:
this
.
form
.
iconUrl
,
url
:
this
.
form
.
iconUrl
,
});
}
this
.
open
=
true
;
this
.
title
=
"修改管道信息"
;
});
},
/** 提交按钮 */
...
...
@@ -421,5 +503,19 @@ export default {
})
},
}
};
};
</
script
>
<
style
>
.notice
{
background
:
white
;
position
:
fixed
;
top
:
102px
;
right
:
0
;
left
:
0
;
margin
:
auto
;
width
:
80%
;
height
:
80%
;
border
:
solid
1px
;
}
</
style
>
gassafety-web/src/views/device/pipeDetail/index.vue
View file @
54e22055
...
...
@@ -56,7 +56,7 @@
</el-form>
</div>
<div
id=
"marbox"
style=
"width: 700px;height:
40
0px;float: left;margin-top: -25px; border: 1px solid rgb(218, 213, 213);"
>
<div
id=
"marbox"
style=
"width: 700px;height:
39
0px;float: left;margin-top: -25px; border: 1px solid rgb(218, 213, 213);"
>
<div
style=
"width: 100%;height: 100%"
id=
"container"
></div>
</div>
</div>
...
...
@@ -92,12 +92,9 @@
this
.
gaoMap
=
gaoMap
;
},
methods
:
{
/** 获取巡检计划详情 */
getDetail
(){
getPipe
(
this
.
pipeId
).
then
(
response
=>
{
this
.
form
=
response
.
data
;
console
.
log
(
"this.form"
,
this
.
form
)
this
.
gaoMap
.
resetMapCenter
([
this
.
form
.
longitude
,
this
.
form
.
latitude
]);
this
.
gaoMap
.
addMarker
(
DEVICE_TYPE
.
WORKORDER
,
this
.
form
)
});
...
...
gassafety-web/src/views/enterprise/mapView/index.vue
View file @
54e22055
...
...
@@ -342,6 +342,7 @@ export default {
created
()
{
// 让左边的框隐藏
this
.
$store
.
dispatch
(
"app/toggleDevice"
,
"mobile"
);
console
.
log
(
"sasdasdas"
)
},
mounted
()
{
...
...
@@ -396,7 +397,6 @@ export default {
}
});
},
getDeviceInfo
(
queryParams
)
{
this
.
loading
=
true
;
return
getAllDeviceInfo
(
queryParams
).
then
((
response
)
=>
{
...
...
gassafety-web/src/views/login.vue
View file @
54e22055
...
...
@@ -81,7 +81,7 @@ export default {
code
:
[{
required
:
true
,
trigger
:
"change"
,
message
:
"验证码不能为空"
}]
},
loading
:
false
,
redirect
:
"
/index
"
redirect
:
""
};
},
watch
:
{
...
...
@@ -134,7 +134,9 @@ export default {
Cookies
.
set
(
'rememberMe'
,
this
.
loginForm
.
rememberMe
,
{
expires
:
30
});
this
.
$store
.
dispatch
(
"Login"
,
this
.
loginForm
).
then
(()
=>
{
this
.
$router
.
push
({
path
:
this
.
redirect
||
"/"
}).
catch
(()
=>
{});
// this.$router.push({ path: this.redirect || "/" }).catch(()=>{});
// console.log(this.redirect)
this
.
$router
.
push
({
path
:
"/enterprise/mapView"
||
"/"
}).
catch
(()
=>
{});
}).
catch
(()
=>
{
this
.
loading
=
false
;
this
.
getCode
();
...
...
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