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
97f21ca9
Commit
97f21ca9
authored
Jul 27, 2021
by
纪泽龙
Browse files
Options
Browse Files
Download
Plain Diff
合并到jzl
parents
0b91e536
24aa3dcc
Show whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
517 additions
and
305 deletions
+517
-305
pipe.js
gassafety-web/src/api/device/pipe.js
+9
-4
pipelineView.vue
gassafety-web/src/components/PopWindow/pipelineView.vue
+79
-29
gaodeMap.js
gassafety-web/src/utils/gaodeMap.js
+162
-92
gassafety.js
gassafety-web/src/utils/gassafety.js
+171
-128
index.vue
gassafety-web/src/views/enterprise/map/index.vue
+96
-52
No files found.
gassafety-web/src/api/device/pipe.js
View file @
97f21ca9
...
...
@@ -9,6 +9,7 @@ export function listPipe(query) {
})
}
// 查询管道信息列表
export
function
pipeAllInfoList
(
query
)
{
return
request
({
...
...
@@ -18,11 +19,15 @@ export function pipeAllInfoList(query) {
})
}
// 查询管道信息详细
export
function
getPipe
(
pipeId
)
{
// getAllDeviceInfo
export
function
getAllDevice
(
data
)
{
return
request
({
url
:
'/device/pipe/'
+
pipeId
,
method
:
'get'
url
:
'/device/pipe/getAllDeviceInfo'
,
method
:
'post'
,
data
:
data
})
}
...
...
gassafety-web/src/components/PopWindow/pipelineView.vue
View file @
97f21ca9
...
...
@@ -4,8 +4,14 @@
:visible
.
sync=
"dialogVisible"
:before-close=
"handleClose"
>
<el-row>
<el-form
ref=
"editForm"
:model=
"editForm"
label-width=
"120px"
size=
"mini"
>
<el-row
>
<el-form
:rules=
"rules"
ref=
"editForm"
:model=
"editForm"
label-width=
"120px"
size=
"mini"
>
<el-col>
<el-form-item
v-show=
"false"
label=
"管道id"
prop=
"pipeId"
>
<el-input
...
...
@@ -44,8 +50,8 @@
</el-form-item>
</el-col>
<el-col>
<el-form-item
label=
"管道所在地址"
prop=
"
iconUrl
"
>
<el-input
v-model=
"editForm.
iconUrl
"
></el-input>
<el-form-item
label=
"管道所在地址"
prop=
"
pipeAddr
"
>
<el-input
v-model=
"editForm.
pipeAddr
"
></el-input>
</el-form-item>
</el-col>
<el-col>
...
...
@@ -78,7 +84,7 @@
<!--
select
-->
<
el
-
radio
-
group
v
-
model
=
"editForm.pipePressure"
>
<!--
1
低压,
2
中压,
3
次高压,
4
高压
-->
<
el
-
radio
label
=
"1"
>
低
押
<
/el-radio
>
<
el
-
radio
label
=
"1"
>
低
压
<
/el-radio
>
<
el
-
radio
label
=
"2"
>
中压
<
/el-radio
>
<
el
-
radio
label
=
"3"
>
次高压
<
/el-radio
>
<
el
-
radio
label
=
"4"
>
高压
<
/el-radio
>
...
...
@@ -86,20 +92,21 @@
<
/el-form-item
>
<
/el-col
>
<
el
-
col
>
<
el
-
form
-
item
label
=
"上传图片"
prop
=
""
>
<
el
-
form
-
item
label
=
"上传图片"
prop
=
"
iconUrl
"
>
<
MyFileUpload
listType
=
"picture-card"
@
resFun
=
"fileFinshed"
@
remove
=
"listRemove"
:
fileArr
=
"fileArr"
/>
<
el
-
input
v
-
show
=
"false"
disabled
v
-
model
=
"editForm.iconUrl"
><
/el-input
>
<
/el-form-item
>
<!--
<
el
-
form
-
item
v
-
show
=
"false"
label
=
"设备图片路径"
prop
=
"iconUrl"
>
-->
<!--
<
/el-form-item> --
>
<
/el-col
>
<
el
-
col
>
<
el
-
form
-
item
v
-
show
=
"false"
label
=
"设备图片路径"
prop
=
"url"
>
<
el
-
input
disabled
v
-
model
=
"editForm.url"
><
/el-input
>
<
/el-form-item
>
<
/el-col
>
<!--
<
el
-
col
>
<
/el-col> --
>
<
el
-
col
>
<
el
-
form
-
item
label
=
"安装日期"
prop
=
"installationTime"
>
<
el
-
col
:
span
=
"11"
>
...
...
@@ -141,6 +148,8 @@
<
script
>
import
MyFileUpload
from
"@/components/MyFileUpload"
;
import
{
addPipe
,
updatePipe
}
from
"@/api/device/pipe.js"
;
import
{
getString
}
from
"@/utils/gassafety.js"
;
import
moment
from
"moment"
;
export
default
{
props
:
{
lineData
:
{
...
...
@@ -170,11 +179,42 @@ export default {
// isShow: false,
fileArr
:
[],
editForm
:
{
pipeName
:
""
,
pipeType
:
"1"
,
pipePressure
:
"1"
,
u
rl
:
""
,
iconU
rl
:
""
,
}
,
dialogVisible
:
false
,
rules
:
{
pipeName
:
[
{
required
:
true
,
message
:
"请输入管道名称"
,
trigger
:
"blur"
}
,
//
{
min
:
3
,
max
:
5
,
message
:
"长度在 3 到 5 个字符"
,
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"
}
,
],
iconUrl
:
[{
required
:
true
,
message
:
"请上传骨片"
,
trigger
:
"change"
}
],
installationTime
:
[
{
// type: "date",
required
:
true
,
message
:
"请选择日期"
,
trigger
:
"change"
,
}
,
],
}
,
}
;
}
,
created
()
{
...
...
@@ -182,25 +222,33 @@ export default {
if
(
this
.
lineData
?.
pipeId
)
{
this
.
editForm
=
{
...
this
.
lineData
}
;
}
this
.
editForm
.
coordinates
=
this
.
lnglatsArr
;
this
.
editForm
.
coordinates
=
getString
(
this
.
lnglatsArr
)
;
// 如果有图片路径就赋显,如果没有就啥也没有
this
.
fileArr
=
this
.
editForm
.
url
!=
""
?
[{
url
:
this
.
editForm
.
u
rl
}
]
:
[];
this
.
fileArr
=
this
.
lineData
.
pipeId
?
[{
url
:
this
.
editForm
.
iconU
rl
}
]
:
[];
}
,
methods
:
{
mouseup
(){
console
.
log
(
'组件mouseup'
)
}
,
ok
()
{
// console.log(this.editForm.pipeId);
// if(this.editForm.pipeId)
{
// console.log("更改")
//
}
else
{
// console.log("新增")
//
}
this
.
$refs
.
editForm
.
validate
((
valid
)
=>
{
if
(
valid
){
const
data
=
{
...
this
.
editForm
}
;
data
.
installationTime
=
moment
(
this
.
editForm
.
installationTime
).
format
(
"YYYY-MM-DD HH:mm:ss"
);
console
.
log
(
"data"
,
data
);
console
.
log
(
this
.
editForm
.
pipeId
);
this
.
requeset
(
this
.
editForm
.
pipeId
).
then
((
res
)
=>
{
this
.
requeset
(
this
.
editForm
.
pipeId
,
data
).
then
((
res
)
=>
{
// 改变this指向,传回去target ,传回去data
if
(
res
.
code
==
200
)
{
this
.
dialogVisible
=
false
;
this
.
lineOkCallBack
.
call
(
this
.
gaodeMap
,
this
.
target
);
data
.
pipeId
=
data
.
pipeId
?
data
.
pipeId
:
res
.
data
;
this
.
lineOkCallBack
.
call
(
this
.
gaodeMap
,
this
.
target
,
data
);
}
}
);
}
}
)
// console.log(this.gaodeMap,this.target)
}
,
async
requeset
(
id
,
data
)
{
...
...
@@ -222,16 +270,18 @@ export default {
this
.
$confirm
(
"确认关闭?"
)
.
then
((
_
)
=>
{
done
();
}
)
.
catch
((
_
)
=>
{
}
);
}
,
// 图片上传成功
fileFinshed
(
e
)
{
this
.
editForm
.
u
rl
=
e
.
url
;
this
.
editForm
.
iconU
rl
=
e
.
url
;
}
,
// 图片列表移除
listRemove
(
e
)
{
this
.
editForm
.
url
=
""
;
this
.
editForm
.
iconUrl
=
""
;
this
.
fileArr
=
[];
}
,
}
,
...
...
gassafety-web/src/utils/gaodeMap.js
View file @
97f21ca9
...
...
@@ -6,6 +6,8 @@ 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
;
...
...
@@ -25,7 +27,10 @@ class gaodeMap {
lineType
=
0
;
// 创建一个新的lineObj
newLineObj
=
null
;
lineFlag
=
false
;
mouseTool
=
null
;
myMap
=
null
;
//构造函数中设置中央点默认值
constructor
(
center
)
{
this
.
markers
=
[];
...
...
@@ -43,6 +48,38 @@ class gaodeMap {
//mapStyle: 'amap://styles/darkblue',
// mapStyle: 'amap://styles/3b679a15f448a4740ba2ff7524e1a4ae',
});
this
.
myMap
=
map
;
this
.
myMap
.
on
(
"mousedown"
,
e
=>
{
// e.originEvent.stopPropagation();
// console.log(this.mouseTool);
// this.createNewLine()
// console.log(123)
// console.log(this.lineFlag)
// if (this.lineFlag) {
// return;
// }
// console.log("this.newLineObj",this.newLineObj)
// if (this.newLineObj != null) {
// this.newLineObj.polyEditor.close();
// map.remove(this.newLineObj);
// console.log(this.mouseTool);
// }
// console.log("map", e);
});
this
.
myMap
.
on
(
"click"
,
e
=>
{
if
(
this
.
lineType
!=
1
||
this
.
lineFlag
)
return
;
console
.
log
(
this
.
lineFlag
);
// this.lineFlag = false;
// this.createNewLine();
// console.log("mapUp")
// 除了这里,还要利用vue页面的window事件辅助,当组件出来的时候,就得利用window事件
if
(
this
.
newLineObj
!=
null
)
{
this
.
newLineObj
.
polyEditor
.
close
();
map
.
remove
(
this
.
newLineObj
);
this
.
createNewLine
();
}
console
.
log
(
"抬起来了"
);
});
this
.
districtBoundaries
();
}
...
...
@@ -103,9 +140,13 @@ class gaodeMap {
addMarker
(
markerType
,
data
)
{
let
that
=
this
;
that
.
markerType
=
markerType
;
let
infoWindow
=
new
AMap
.
InfoWindow
({
isCustom
:
true
,
offset
:
new
AMap
.
Pixel
(
12
,
-
65
),
anchor
:
"left-top"
});
let
infoWindow
=
new
AMap
.
InfoWindow
({
isCustom
:
true
,
offset
:
new
AMap
.
Pixel
(
12
,
-
65
),
anchor
:
"left-top"
});
let
marker
=
new
AMap
.
Marker
({
position
:
[
data
.
longitude
,
data
.
latitude
],
position
:
[
data
.
longitude
,
data
.
latitude
],
map
:
map
,
offset
:
new
AMap
.
Pixel
(
-
13
,
-
30
)
});
...
...
@@ -128,7 +169,7 @@ class gaodeMap {
}
else
if
(
"delete"
==
that
.
mapOperateType
)
{
if
(
confirm
(
"确认删除"
)
==
true
)
{
map
.
remove
(
marker
);
that
.
deleteMarker
(
markerType
,
data
.
deviceId
);
that
.
deleteMarker
(
markerType
,
data
.
deviceId
);
}
}
else
{
map
.
setZoomAndCenter
(
13
,
e
.
target
.
getPosition
());
...
...
@@ -145,7 +186,6 @@ class gaodeMap {
editWindow
.
form
.
longitude
=
e
.
lnglat
.
lng
;
editWindow
.
form
.
latitude
=
e
.
lnglat
.
lat
;
});
}
this
.
markers
.
push
(
marker
);
...
...
@@ -188,30 +228,30 @@ class gaodeMap {
getMarketContent
(
data
)
{
switch
(
this
.
markerType
)
{
case
DEVICE_TYPE
.
REGEULATORBOX
:
{
const
dom
=
createPop
(
markerInfoWindow
,{
const
dom
=
createPop
(
markerInfoWindow
,
{
title
:
"调压箱"
,
data
:
data
,
map
:
map
map
:
map
});
const
html
=
dom
.
$el
;
dom
.
remove
();
return
html
;
}
case
DEVICE_TYPE
.
VALUEWELL
:
{
const
dom
=
createPop
(
markerInfoWindow
,{
const
dom
=
createPop
(
markerInfoWindow
,
{
title
:
"阀门井"
,
data
:
data
,
map
:
map
map
:
map
});
const
html
=
dom
.
$el
;
dom
.
remove
();
return
html
;
}
case
DEVICE_TYPE
.
FLOWMETER
:
{
const
dom
=
createPop
(
markerInfoWindow
,{
const
dom
=
createPop
(
markerInfoWindow
,
{
title
:
"流量计"
,
data
:
data
,
map
:
map
map
:
map
});
const
html
=
dom
.
$el
;
dom
.
remove
();
...
...
@@ -240,19 +280,18 @@ class gaodeMap {
if
(
DEVICE_TYPE
.
REGEULATORBOX
==
delType
||
DEVICE_TYPE
.
VALUEWELL
==
delType
||
DEVICE_TYPE
.
FLOWMETER
==
delType
||
DEVICE_TYPE
.
PRESSUREGAGE
==
delType
){
delDeviceInfo
(
deviceId
);
}
}
/**
* 设置设备图标
* @param marker
*/
setMarkerIcon
(
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"
)
,
image
:
require
(
"../assets/images/tiaoyaxiang.png"
)
});
marker
.
setIcon
(
icon
);
break
;
...
...
@@ -260,7 +299,7 @@ class gaodeMap {
case
DEVICE_TYPE
.
VALUEWELL
:
{
let
icon
=
new
AMap
.
Icon
({
//size: new AMap.Size(51, 23),
image
:
require
(
"../assets/images/famenjing.png"
)
,
image
:
require
(
"../assets/images/famenjing.png"
)
});
marker
.
setIcon
(
icon
);
break
;
...
...
@@ -268,7 +307,7 @@ class gaodeMap {
case
DEVICE_TYPE
.
FLOWMETER
:
{
let
icon
=
new
AMap
.
Icon
({
//size: new AMap.Size(51, 23),
image
:
require
(
"../assets/images/liuliangji.png"
)
,
image
:
require
(
"../assets/images/liuliangji.png"
)
});
marker
.
setIcon
(
icon
);
break
;
...
...
@@ -276,7 +315,7 @@ class gaodeMap {
case
DEVICE_TYPE
.
DUTYPERSON
:
{
let
icon
=
new
AMap
.
Icon
({
//size: new AMap.Size(51, 23),
image
:
require
(
"../assets/images/zhibaorenyuan.png"
)
,
image
:
require
(
"../assets/images/zhibaorenyuan.png"
)
});
marker
.
setIcon
(
icon
);
break
;
...
...
@@ -284,7 +323,7 @@ class gaodeMap {
case
DEVICE_TYPE
.
WORKORDER
:
{
let
icon
=
new
AMap
.
Icon
({
//size: new AMap.Size(51, 23),
image
:
require
(
"../assets/images/zhibaorenyuan.png"
)
,
image
:
require
(
"../assets/images/zhibaorenyuan.png"
)
});
marker
.
setIcon
(
icon
);
break
;
...
...
@@ -304,12 +343,19 @@ class gaodeMap {
* 添加折线
* @param path
*/
addPolyline
(
path
)
{
console
.
log
(
path
);
addPolyline
(
arr
)
{
// this` polyLines = [];
for
(
let
i
=
0
;
i
<
path
.
length
;
i
++
)
{
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
:
path
[
i
]
,
path
,
strokeColor
:
"#F7FE38"
,
strokeWeight
:
8
,
strokeOpacity
:
0.9
,
...
...
@@ -319,13 +365,14 @@ class gaodeMap {
extData
:
{
type
:
"line"
,
//当前line状态 0:正常状态 1:正在编辑状态
isState
:
0
isState
:
0
,
lineData
:
item
}
});
this
.
polyLines
.
push
(
polyline
);
// 信息窗体
const
dom
=
createPop
(
lineInfoWindow
,
{
obj
:
{
a
:
123
,
editorPage
:
true
}
obj
:
{
a
:
123
,
editorPage
:
true
,
...
item
}
});
console
.
log
(
"dom"
,
dom
.
$el
);
...
...
@@ -339,39 +386,6 @@ class gaodeMap {
});
this
.
newLineAddEvent
(
polyline
);
// // 编辑状态
// let polyEditor = new AMap.PolyEditor(map, polyline);
// //创建右键菜单
// let contextMenu = new AMap.ContextMenu();
// //菜单选择
// contextMenu.addItem(
// "编辑Polyline",
// function() {
// polyEditor.setTarget(polyline);
// polyEditor.open();
// contextMenu.close();
// },
// 0
// );
// // 结束编辑
// contextMenu.addItem(
// "结束编辑",
// function() {
// polyEditor.close();
// contextMenu.close();
// },
// 0
// );
// contextMenu.addItem(
// "保存信息",
// function() {
// console.log("折线数组", polyline.getPath());
// // polyEditor.close();
// // contextMenu.close()
// },
// 0
// );
//添加事件
polyline
.
on
(
"mouseover"
,
e
=>
{
...
...
@@ -432,20 +446,6 @@ class gaodeMap {
});
// 计算info的位置
// function infoPosition() {}
// polyline.on("rightclick", e => {
// console.log(this.lineType);
// // if(!this.lineFlag==0) return;
// // lineFlag 1新建 2编辑 3删除 0啥也不让干
// switch (this.lineType) {
// case 2: {
// contextMenu.open(map, e.lnglat);
// break;
// }
// default:
// break;
// }
// });
}
map
.
add
(
this
.
polyLines
);
// 缩放地图到合适的视野级别
...
...
@@ -454,6 +454,7 @@ class gaodeMap {
// 创建一条新的线
createNewLine
()
{
this
.
mouseTool
.
polyline
({
// bubbles:false,
strokeWeight
:
9
,
strokeColor
:
"#80d8ff"
,
extData
:
{
...
...
@@ -461,9 +462,20 @@ class gaodeMap {
//当前line状态 0:正常状态 1:正在编辑状态
isState
:
0
}
//同Polyline的Option设置
});
}
// 创建出来的新线归位,重置,当点击编辑跟删除的时候
newLineReset
()
{
this
.
lineFlag
=
false
;
if
(
this
.
mouserTool
)
{
this
.
mouseTool
.
close
();
}
if
(
this
.
newLineObj
)
{
map
.
remove
(
this
.
newLineObj
);
}
}
// 新建line增加编辑以及右键菜单
addEditorAndMenu
(
obj
)
{
let
polyEditor
=
new
AMap
.
PolyEditor
(
map
,
obj
);
...
...
@@ -514,10 +526,21 @@ class gaodeMap {
// 新line与老line添加点击事件
newLineAddEvent
(
obj
)
{
obj
.
polyEditor
=
new
AMap
.
PolyEditor
(
map
,
obj
);
obj
.
on
(
"click"
,
()
=>
{
console
.
log
(
this
.
lineType
)
// obj.polyEditor.on('adjust',(e)=>{
// console.log("addnode")
// })
obj
.
on
(
"mousedown"
,
e
=>
{
console
.
log
(
e
.
originEvent
);
console
.
log
(
"lineType"
,
this
.
lineType
);
this
.
lineFlag
=
true
;
// 每次点击关闭然后再次激活
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
;
...
...
@@ -530,13 +553,53 @@ class gaodeMap {
obj
.
setExtData
(
opstions
);
}
else
{
// 经纬度
const
lnglatsArr
=
obj
.
getPath
().
map
(
item
=>
([
item
.
lng
,
item
.
lat
])
);
const
lnglatsArr
=
obj
.
getPath
().
map
(
item
=>
[
item
.
lng
,
item
.
lat
]
);
// 管道总长度
const
pipeLength
=
obj
.
getLength
();
// 传回来的数据 如果是新管道就是空
const
lineData
=
type
==
"newLine"
?
{}
:
obj
.
getExtData
().
lineData
;
this
.
infoWindowPipelineView
({
target
:
obj
,
lineType
:
type
,
lnglatsArr
,
pipeLength
,
lineData
});
console
.
log
(
"lineData===================>传入组件的数据"
,
lineData
);
this
.
infoWindowPipelineView
({
target
:
obj
,
lineType
:
type
,
lnglatsArr
,
pipeLength
,
lineData
});
}
});
}
lineDelete
(
obj
)
{
vue
.
$confirm
(
"是否删除该管道"
,
"提示"
,
{
// 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"
,
message
:
"删除成功!"
});
});
})
.
catch
(()
=>
{
vue
.
$message
({
type
:
"info"
,
message
:
"已取消删除"
});
});
}
// 关闭所有已经上传的线的编辑状态
...
...
@@ -545,20 +608,21 @@ class gaodeMap {
item
.
polyEditor
.
close
();
// let opstions = obj.getExtData();
// opstions.isState = 1;
item
.
setExtData
({
isState
:
0
});
item
.
setExtData
({
isState
:
0
});
item
.
setOptions
({
strokeColor
:
"#F7FE38"
});
});
}
// 传进组件的会调 点确认的时候调
lineOkCallBack
(
target
)
{
lineOkCallBack
(
target
,
data
)
{
target
.
polyEditor
.
close
();
const
index
=
this
.
polyLines
.
indexOf
(
target
);
// 如果是老线,就要线删除原来的,然后重新包装一遍
if
(
index
>=
0
)
{
this
.
polyLines
.
splice
(
index
,
1
);
}
this
.
addPolyline
([
target
.
getPath
()]);
console
.
log
(
"data999-=================>传回来的data"
,
data
);
this
.
addPolyline
([
data
]);
map
.
remove
(
target
);
// console.log('polyLines',this.polyLines)
}
...
...
@@ -601,10 +665,10 @@ class gaodeMap {
e
.
obj
.
on
(
"click"
,
function
(
aa
)
{
let
postion
=
aa
.
target
.
_position
;
//兼容拖拽后单击事件,拖拽后点击事件返回位置为数组
if
(
postion
instanceof
Array
)
{
if
(
postion
instanceof
Array
)
{
device
.
form
.
longitude
=
postion
[
0
];
device
.
form
.
latitude
=
postion
[
1
];
}
else
{
}
else
{
device
.
form
.
longitude
=
postion
.
lng
;
device
.
form
.
latitude
=
postion
.
lat
;
}
...
...
@@ -617,6 +681,12 @@ class gaodeMap {
if
(
e
.
obj
.
getExtData
().
type
==
"newLine"
)
{
console
.
log
(
"挂上菜单"
);
that
.
newLineAddEvent
(
e
.
obj
);
// 记录这条线
that
.
newLineObj
=
e
.
obj
;
that
.
mouseTool
.
close
();
// 创建一条新线,然后在点地图的时候删除原来的旧线
// that.createNewLine();
// 右键菜单
// that.addEditorAndMenu(e.obj)
that
.
overlays
.
push
(
e
.
obj
);
...
...
@@ -719,9 +789,9 @@ class gaodeMap {
);
}
searchTips
(
inputId
){
searchTips
(
inputId
)
{
let
that
=
this
;
AMap
.
plugin
([
'AMap.AutoComplete'
,
'AMap.PlaceSearch'
],
function
()
{
AMap
.
plugin
([
"AMap.AutoComplete"
,
"AMap.PlaceSearch"
],
function
()
{
//输入提示
var
autoOptions
=
{
input
:
inputId
...
...
@@ -731,22 +801,22 @@ class gaodeMap {
map
:
map
});
//构造地点查询类
auto
.
on
(
'select'
,
function
(
e
)
{
console
.
log
(
e
,
"eeeeee========"
)
auto
.
on
(
"select"
,
function
(
e
)
{
console
.
log
(
e
,
"eeeeee========"
);
that
.
placeSearch
.
clear
();
that
.
placeSearch
.
setCity
(
e
.
poi
.
adcode
);
that
.
placeSearch
.
search
(
e
.
poi
.
name
);
//关键字查询查询
})
})
})
;
})
;
}
searchKeyWord
(
keyWord
){
AMap
.
plugin
([
'AMap.AutoComplete'
],
function
()
{
searchKeyWord
(
keyWord
)
{
AMap
.
plugin
([
"AMap.AutoComplete"
],
function
()
{
var
placeSearch
=
new
AMap
.
PlaceSearch
({
map
:
map
});
placeSearch
.
search
(
keyWord
);
//关键字查询查询
})
})
;
}
closeAddMarker
(){
...
...
gassafety-web/src/utils/gassafety.js
View file @
97f21ca9
...
...
@@ -3,27 +3,27 @@
* Copyright (c) 2021 gassafety
*/
const
baseURL
=
process
.
env
.
VUE_APP_BASE_API
const
baseURL
=
process
.
env
.
VUE_APP_BASE_API
;
// 日期格式化
export
function
parseTime
(
time
,
pattern
)
{
if
(
arguments
.
length
===
0
||
!
time
)
{
return
null
return
null
;
}
const
format
=
pattern
||
'{y}-{m}-{d} {h}:{i}:{s}'
let
date
if
(
typeof
time
===
'object'
)
{
date
=
time
const
format
=
pattern
||
"{y}-{m}-{d} {h}:{i}:{s}"
;
let
date
;
if
(
typeof
time
===
"object"
)
{
date
=
time
;
}
else
{
if
((
typeof
time
===
'string'
)
&&
(
/^
[
0-9
]
+$/
.
test
(
time
)
))
{
time
=
parseInt
(
time
)
}
else
if
(
typeof
time
===
'string'
)
{
time
=
time
.
replace
(
new
RegExp
(
/-/gm
),
'/'
);
if
(
typeof
time
===
"string"
&&
/^
[
0-9
]
+$/
.
test
(
time
))
{
time
=
parseInt
(
time
);
}
else
if
(
typeof
time
===
"string"
)
{
time
=
time
.
replace
(
new
RegExp
(
/-/gm
),
"/"
);
}
if
((
typeof
time
===
'number'
)
&&
(
time
.
toString
().
length
===
10
)
)
{
time
=
time
*
1000
if
(
typeof
time
===
"number"
&&
time
.
toString
().
length
===
10
)
{
time
=
time
*
1000
;
}
date
=
new
Date
(
time
)
date
=
new
Date
(
time
);
}
const
formatObj
=
{
y
:
date
.
getFullYear
(),
...
...
@@ -33,17 +33,19 @@ export function parseTime(time, pattern) {
i
:
date
.
getMinutes
(),
s
:
date
.
getSeconds
(),
a
:
date
.
getDay
()
}
};
const
time_str
=
format
.
replace
(
/{
(
y|m|d|h|i|s|a
)
+}/g
,
(
result
,
key
)
=>
{
let
value
=
formatObj
[
key
]
let
value
=
formatObj
[
key
];
// Note: getDay() returns 0 on Sunday
if
(
key
===
'a'
)
{
return
[
'日'
,
'一'
,
'二'
,
'三'
,
'四'
,
'五'
,
'六'
][
value
]
}
if
(
key
===
"a"
)
{
return
[
"日"
,
"一"
,
"二"
,
"三"
,
"四"
,
"五"
,
"六"
][
value
];
}
if
(
result
.
length
>
0
&&
value
<
10
)
{
value
=
'0'
+
value
value
=
"0"
+
value
;
}
return
value
||
0
})
return
time_str
return
value
||
0
;
});
return
time_str
;
}
// 表单重置
...
...
@@ -57,8 +59,8 @@ export function resetForm(refName) {
export
function
addDateRange
(
params
,
dateRange
,
propName
)
{
var
search
=
params
;
search
.
params
=
{};
if
(
null
!=
dateRange
&&
''
!=
dateRange
)
{
if
(
typeof
(
propName
)
===
"undefined"
)
{
if
(
null
!=
dateRange
&&
""
!=
dateRange
)
{
if
(
typeof
propName
===
"undefined"
)
{
search
.
params
[
"beginTime"
]
=
dateRange
[
0
];
search
.
params
[
"endTime"
]
=
dateRange
[
1
];
}
else
{
...
...
@@ -72,13 +74,13 @@ export function addDateRange(params, dateRange, propName) {
// 回显数据字典
export
function
selectDictLabel
(
datas
,
value
)
{
var
actions
=
[];
Object
.
keys
(
datas
).
some
((
key
)
=>
{
if
(
datas
[
key
].
dictValue
==
(
''
+
value
)
)
{
Object
.
keys
(
datas
).
some
(
key
=>
{
if
(
datas
[
key
].
dictValue
==
""
+
value
)
{
actions
.
push
(
datas
[
key
].
dictLabel
);
return
true
;
}
})
return
actions
.
join
(
''
);
});
return
actions
.
join
(
""
);
}
// 回显数据字典(字符串数组)
...
...
@@ -86,33 +88,40 @@ export function selectDictLabels(datas, value, separator) {
var
actions
=
[];
var
currentSeparator
=
undefined
===
separator
?
","
:
separator
;
var
temp
=
value
.
split
(
currentSeparator
);
Object
.
keys
(
value
.
split
(
currentSeparator
)).
some
((
val
)
=>
{
Object
.
keys
(
datas
).
some
((
key
)
=>
{
if
(
datas
[
key
].
dictValue
==
(
''
+
temp
[
val
])
)
{
Object
.
keys
(
value
.
split
(
currentSeparator
)).
some
(
val
=>
{
Object
.
keys
(
datas
).
some
(
key
=>
{
if
(
datas
[
key
].
dictValue
==
""
+
temp
[
val
]
)
{
actions
.
push
(
datas
[
key
].
dictLabel
+
currentSeparator
);
}
})
})
return
actions
.
join
(
''
).
substring
(
0
,
actions
.
join
(
''
).
length
-
1
);
});
});
return
actions
.
join
(
""
).
substring
(
0
,
actions
.
join
(
""
).
length
-
1
);
}
// 通用下载方法
export
function
download
(
fileName
)
{
window
.
location
.
href
=
baseURL
+
"/common/download?fileName="
+
encodeURI
(
fileName
)
+
"&delete="
+
true
;
window
.
location
.
href
=
baseURL
+
"/common/download?fileName="
+
encodeURI
(
fileName
)
+
"&delete="
+
true
;
}
// 字符串格式化(%s )
export
function
sprintf
(
str
)
{
var
args
=
arguments
,
flag
=
true
,
i
=
1
;
str
=
str
.
replace
(
/%s/g
,
function
()
{
var
args
=
arguments
,
flag
=
true
,
i
=
1
;
str
=
str
.
replace
(
/%s/g
,
function
()
{
var
arg
=
args
[
i
++
];
if
(
typeof
arg
===
'undefined'
)
{
if
(
typeof
arg
===
"undefined"
)
{
flag
=
false
;
return
''
;
return
""
;
}
return
arg
;
});
return
flag
?
str
:
''
;
return
flag
?
str
:
""
;
}
// 转换字符串,undefined,null等转化为""
...
...
@@ -132,9 +141,9 @@ export function praseStrEmpty(str) {
*/
export
function
handleTree
(
data
,
id
,
parentId
,
children
)
{
let
config
=
{
id
:
id
||
'id'
,
parentId
:
parentId
||
'parentId'
,
childrenList
:
children
||
'children'
id
:
id
||
"id"
,
parentId
:
parentId
||
"parentId"
,
childrenList
:
children
||
"children"
};
var
childrenListMap
=
{};
...
...
@@ -173,3 +182,37 @@ export function handleTree(data, id, parentId, children) {
}
return
tree
;
}
// 二维数组转字符串
export
const
getString
=
objarr
=>
{
const
typeNO
=
objarr
.
length
;
let
tree
=
"["
;
for
(
var
i
=
0
;
i
<
typeNO
;
i
++
)
{
tree
+=
"["
;
tree
+=
"'"
+
objarr
[
i
][
0
]
+
"',"
;
tree
+=
"'"
+
objarr
[
i
][
1
]
+
"'"
;
tree
+=
"]"
;
if
(
i
<
typeNO
-
1
)
{
tree
+=
","
;
}
}
tree
+=
"]"
;
return
tree
;
};
// 二维数组字符串转回数组
export
const
getArray
=
str
=>
{
let
newArr
=
str
.
slice
(
1
,
str
.
length
-
1
);
newArr
=
newArr
.
split
(
"],"
)
return
newArr
.
map
((
item
,
index
,
own
)
=>
{
let
str
=
""
,
arr
=
[];
str
=
item
.
replace
(
/
\[
/g
,
""
);
str
=
str
.
replace
(
/]/g
,
""
);
arr
=
str
.
split
(
","
);
arr
=
arr
.
map
(
item
=>
{
return
Number
(
item
);
});
return
arr
;
});
};
gassafety-web/src/views/enterprise/map/index.vue
View file @
97f21ca9
...
...
@@ -31,7 +31,7 @@
<div
class=
"el-btn"
:class=
"
{ active: targetNum == 1 }"
@click="addDevice"
@click
.stop
="addDevice"
>
<template
v-if=
"iconClass == 'icon-create'"
>
<span
class=
"left"
>
...
...
@@ -49,7 +49,7 @@
<div
class=
"el-btn"
:class=
"{ active: targetNum == 2 }"
@
click=
"editDevice"
@
click
.
stop
=
"editDevice"
>
<span
class=
"left"
>
<i
class=
"iconfont icon-compile"
/>
...
...
@@ -59,7 +59,7 @@
<div
class=
"el-btn"
:class=
"{ active: targetNum == 3 }"
@
click=
"deleteDevice"
@
click
.
stop
=
"deleteDevice"
>
<span
class=
"left"
>
<i
class=
"iconfont icon-delete"
/>
...
...
@@ -75,7 +75,7 @@
<div
class=
"op-btn"
:class=
"{ active: item.value == createValue }"
@
click
=
"createChange(
item)"
@
click
.
stop=
"createChange($event,
item)"
>
<span
class=
"left"
>
<i
class=
"iconfont"
:class=
"item.icon"
/>
...
...
@@ -89,8 +89,19 @@
</div>
<!-- <el-select-->
<el-input
v-model=
"keyWord"
placeholder=
"点击输入"
id=
"tipinput"
class=
"search-input"
/>
<el-button
type=
"red"
icon=
"el-icon-search"
class=
"search-but"
@
click=
"search()"
>
搜索
</el-button>
<el-input
v-model=
"keyWord"
placeholder=
"点击输入"
id=
"tipinput"
class=
"search-input"
/>
<el-button
type=
"red"
icon=
"el-icon-search"
class=
"search-but"
@
click=
"search()"
>
搜索
</el-button
>
<!-- <el-button
type="primary"
style="position: absolute; top: 100px; left: 75%"
...
...
@@ -128,7 +139,7 @@
v-for=
"item in changeBtnData"
:key=
"item.value"
class=
"box"
:class=
"{ active: leftBarNum.indexOf(item.value)
>=
0 }"
:class=
"{ active: leftBarNum.indexOf(item.value)
>=
0 }"
@
click=
"leftBarChange(item)"
>
<div
class=
"left"
>
...
...
@@ -143,7 +154,7 @@
</template>
<
script
>
import
gaodeMap
from
"utils/gaodeMap.js"
;
import
{
pipeAllInfoList
}
from
"@/api/device/pipe.js"
import
{
pipeAllInfoList
}
from
"@/api/device/pipe.js"
;
import
{
map
,
DEVICE_TYPE
,
mapOperateType
}
from
"utils/gaodeMap.js"
;
import
{
getAllDeviceInfo
}
from
"@/api/device/deviceInfo"
;
export
default
{
...
...
@@ -168,13 +179,13 @@ export default {
phone
:
null
,
installationTime
:
null
,
inspectionTime
:
null
,
remarks
:
null
remarks
:
null
,
},
radio1
:
""
,
// 1新建,2编辑,3删除,点按钮变色
targetNum
:
0
,
// 左边的bar的active判定
leftBarNum
:
[
1
,
2
,
3
,
4
,
5
],
leftBarNum
:
[
1
,
2
,
3
,
4
,
5
],
// 新建里的值
iconClass
:
"icon-create"
,
...
...
@@ -207,15 +218,14 @@ export default {
label
:
"压力表"
,
},
],
keyWord
:
""
keyWord
:
""
,
};
},
mounted
()
{
let
gaoMap
=
new
gaodeMap
(
"石家庄"
);
pipeAllInfoList
().
then
(
res
=>
{
console
.
log
(
"管道"
,
res
);
})
this
.
gaoMap
=
gaoMap
;
window
.
addEventListener
(
"click"
,
this
.
barClose
);
let
path
=
[
[
[
114.436698
,
38.083306
],
...
...
@@ -229,20 +239,20 @@ export default {
[
114.530768
,
38.00165
],
],
];
gaoMap
.
addPolyline
(
path
);
gaoMap
.
addMouseTool
();
gaoMap
.
searchTips
(
"tipinput"
);
this
.
getDeviceInfo
();
this
.
getPipeList
();
},
methods
:
{
// 左边的Bar修改值
leftBarChange
(
item
){
leftBarChange
(
item
)
{
// this.leftBarNum= this.leftBarNum != item.value ? item.value:0;
const
index
=
this
.
leftBarNum
.
indexOf
(
item
.
value
);
if
(
index
>=
0
)
{
this
.
leftBarNum
.
splice
(
index
,
1
)
}
else
{
this
.
leftBarNum
.
push
(
item
.
value
)
if
(
index
>=
0
)
{
this
.
leftBarNum
.
splice
(
index
,
1
);
}
else
{
this
.
leftBarNum
.
push
(
item
.
value
);
}
},
addDevice
()
{
...
...
@@ -254,8 +264,8 @@ export default {
this
.
createReset
();
}
}
if
(
this
.
targetNum
==
1
&&
this
.
createValue
==
1
)
{
this
.
gaoMap
.
lineType
=
1
;
if
(
this
.
targetNum
==
1
&&
this
.
createValue
==
1
)
{
this
.
gaoMap
.
lineType
=
1
;
}
this
.
deviceType
=
!
this
.
deviceType
;
this
.
gaoMap
.
mapOperateType
=
"add"
;
...
...
@@ -263,15 +273,16 @@ export default {
},
// 选择新建项目哪个
createChange
(
item
)
{
createChange
(
e
,
item
)
{
// e.stopPropagation();
this
.
deviceType
=
false
;
this
.
iconClass
=
item
.
icon
;
this
.
createValue
=
item
.
value
;
this
.
createLabel
=
item
.
label
;
if
(
this
.
targetNum
==
1
&&
this
.
createValue
==
1
)
{
if
(
this
.
targetNum
==
1
&&
this
.
createValue
==
1
)
{
// 0是初始,1是新建 2是编辑 3删除
this
.
gaoMap
.
lineType
=
1
;
this
.
gaoMap
.
lineType
=
1
;
this
.
gaoMap
.
createNewLine
();
}
else
{
this
.
gaoMap
.
draw
(
this
.
createValue
.
toString
());
...
...
@@ -285,12 +296,14 @@ export default {
},
editDevice
()
{
this
.
targetNum
=
this
.
targetNum
!=
2
?
2
:
0
;
this
.
gaoMap
.
lineType
=
this
.
targetNum
;
console
.
log
(
this
.
gaoMap
.
lineType
)
if
(
this
.
targetNum
!=
2
)
{
this
.
gaoMap
.
lineType
=
this
.
targetNum
;
console
.
log
(
this
.
gaoMap
.
lineType
)
;
if
(
this
.
targetNum
!=
2
)
{
this
.
gaoMap
.
linePolyEditorAllClose
();
}
this
.
createReset
();
// 如果正在新建线条,则清空
this
.
gaoMap
.
newLineReset
();
this
.
deviceType
=
false
;
this
.
gaoMap
.
mapOperateType
=
"edit"
;
this
.
gaoMap
.
addMarkerDragg
();
...
...
@@ -299,8 +312,9 @@ export default {
},
deleteDevice
()
{
this
.
targetNum
=
this
.
targetNum
!=
3
?
3
:
0
;
this
.
gaoMap
.
lineType
=
this
.
targetNum
;
this
.
gaoMap
.
lineType
=
this
.
targetNum
;
// 如果正在新建线条,则清空
this
.
gaoMap
.
newLineReset
();
this
.
createReset
();
this
.
deviceType
=
false
;
this
.
gaoMap
.
mapOperateType
=
"delete"
;
...
...
@@ -320,19 +334,22 @@ export default {
this
.
gaoMap
.
createNewLine
();
}
},
getDeviceInfo
(){
getDeviceInfo
()
{
this
.
loading
=
true
;
getAllDeviceInfo
(
this
.
queryParams
).
then
(
response
=>
{
if
(
response
.
code
==
200
){
for
(
var
i
=
0
;
i
<
response
.
data
.
length
;
i
++
){
if
(
"1"
==
response
.
data
[
i
].
deviceType
){
this
.
gaoMap
.
addMarker
(
DEVICE_TYPE
.
REGEULATORBOX
,
response
.
data
[
i
])
getAllDeviceInfo
(
this
.
queryParams
).
then
((
response
)
=>
{
if
(
response
.
code
==
200
)
{
for
(
var
i
=
0
;
i
<
response
.
data
.
length
;
i
++
)
{
if
(
"1"
==
response
.
data
[
i
].
deviceType
)
{
this
.
gaoMap
.
addMarker
(
DEVICE_TYPE
.
REGEULATORBOX
,
response
.
data
[
i
]
);
}
if
(
"2"
==
response
.
data
[
i
].
deviceType
)
{
this
.
gaoMap
.
addMarker
(
DEVICE_TYPE
.
VALUEWELL
,
response
.
data
[
i
])
if
(
"2"
==
response
.
data
[
i
].
deviceType
)
{
this
.
gaoMap
.
addMarker
(
DEVICE_TYPE
.
VALUEWELL
,
response
.
data
[
i
]);
}
if
(
"3"
==
response
.
data
[
i
].
deviceType
)
{
this
.
gaoMap
.
addMarker
(
DEVICE_TYPE
.
FLOWMETER
,
response
.
data
[
i
])
if
(
"3"
==
response
.
data
[
i
].
deviceType
)
{
this
.
gaoMap
.
addMarker
(
DEVICE_TYPE
.
FLOWMETER
,
response
.
data
[
i
]);
}
if
(
"4"
==
response
.
data
[
i
].
deviceType
){
this
.
gaoMap
.
addMarker
(
DEVICE_TYPE
.
PRESSUREGAGE
,
response
.
data
[
i
])
...
...
@@ -341,12 +358,37 @@ export default {
}
this
.
loading
=
false
;
});
},
search
(){
getPipeList
()
{
pipeAllInfoList
().
then
((
res
)
=>
{
console
.
log
(
"管道"
,
res
);
if
(
res
.
code
==
200
)
{
this
.
gaoMap
.
addPolyline
(
res
.
data
);
}
});
},
search
()
{
this
.
gaoMap
.
placeSearch
.
clear
();
this
.
gaoMap
.
placeSearch
.
search
(
this
.
keyWord
)
this
.
gaoMap
.
placeSearch
.
search
(
this
.
keyWord
);
},
// 新建下拉列表关闭
barClose
()
{
console
.
log
(
"window"
);
this
.
deviceType
=
false
;
// 如果没有选择的时候点window 则高亮消失
if
(
this
.
targetNum
==
1
&&
this
.
iconClass
==
"icon-create"
)
{
this
.
targetNum
=
0
;
}
// 辅助新建重新画线
if
(
!
this
.
gaoMap
.
lineFlag
)
return
;
this
.
gaoMap
.
lineFlag
=
false
;
this
.
gaoMap
.
createNewLine
();
},
},
beforeDestroy
()
{
console
.
log
(
"移除window事件"
);
window
.
removeEventListener
(
"click"
,
this
.
barClose
);
},
};
</
script
>
...
...
@@ -558,17 +600,19 @@ input[type="radio"] {
width
:
4rem
;
margin-right
:
1rem
;
}
.search-input
{
.search-input
{
position
:
absolute
;
top
:
100px
;
left
:
2%
;
width
:
240px
;
width
:
240px
;
}
.search-but
{
.search-but
{
position
:
absolute
;
top
:
100px
;
left
:
19%
;
width
:
85px
;
color
:
white
;
background-color
:
#053B6A
;
top
:
100px
;
left
:
19%
;
width
:
85px
;
color
:
white
;
background-color
:
#053b6a
;
}
</
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