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
198dd281
Commit
198dd281
authored
Jul 30, 2021
by
耿迪迪
Browse files
Options
Browse Files
Download
Plain Diff
值班人员修改 gengdidi
parents
2b50332d
cb779535
Show whitespace changes
Inline
Side-by-side
Showing
19 changed files
with
1410 additions
and
151 deletions
+1410
-151
TOrderFeedbackController.java
...ng/web/controller/workOrder/TOrderFeedbackController.java
+11
-2
TInspectionPlan.java
...c/main/java/com/zehong/system/domain/TInspectionPlan.java
+2
-2
TOrderFeedback.java
...rc/main/java/com/zehong/system/domain/TOrderFeedback.java
+0
-14
OrderFeedbackVo.java
...ain/java/com/zehong/system/domain/vo/OrderFeedbackVo.java
+189
-0
WorkOrderVo.java
...rc/main/java/com/zehong/system/domain/vo/WorkOrderVo.java
+3
-4
ITOrderFeedbackService.java
...ava/com/zehong/system/service/ITOrderFeedbackService.java
+1
-1
TOrderFeedbackServiceImpl.java
...zehong/system/service/impl/TOrderFeedbackServiceImpl.java
+14
-1
TWorkOrderServiceImpl.java
...com/zehong/system/service/impl/TWorkOrderServiceImpl.java
+25
-1
TOrderFeedbackMapper.xml
...src/main/resources/mapper/system/TOrderFeedbackMapper.xml
+1
-6
fonticon.scss
gassafety-web/src/assets/styles/fonticon.scss
+23
-3
index.vue
gassafety-web/src/components/MyFileUpload/index.vue
+26
-18
lineInfoWindow.vue
gassafety-web/src/components/PopWindow/lineInfoWindow.vue
+1
-0
gaodeMap.js
gassafety-web/src/utils/gaodeMap.js
+16
-0
gaodeMapView.js
gassafety-web/src/utils/gaodeMapView.js
+912
-0
index.vue
gassafety-web/src/views/device/map/index.vue
+8
-0
RightBototmData.vue
...c/views/enterprise/mapView/components/RightBototmData.vue
+132
-0
detail.vue
gassafety-web/src/views/workOrder/basicsInfo/detail.vue
+45
-88
index.vue
gassafety-web/src/views/workOrder/feedback/index.vue
+0
-10
vue.config.js
gassafety-web/vue.config.js
+1
-1
No files found.
gassafety-admin/src/main/java/com/zehong/web/controller/workOrder/TOrderFeedbackController.java
View file @
198dd281
package
com
.
zehong
.
web
.
controller
.
workOrder
;
import
java.util.List
;
import
com.zehong.common.utils.StringUtils
;
import
org.springframework.security.access.prepost.PreAuthorize
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.web.bind.annotation.GetMapping
;
...
...
@@ -74,9 +76,16 @@ public class TOrderFeedbackController extends BaseController
@PreAuthorize
(
"@ss.hasPermi('workOrder:feedback:add')"
)
@Log
(
title
=
"工单反馈信息"
,
businessType
=
BusinessType
.
INSERT
)
@PostMapping
public
AjaxResult
add
(
@RequestBody
TOrderFeedback
tOrderFeedback
)
public
AjaxResult
add
(
@RequestBody
TOrderFeedback
tOrderFeedback
)
throws
Exception
{
return
toAjax
(
tOrderFeedbackService
.
insertTOrderFeedback
(
tOrderFeedback
));
int
result
=
0
;
try
{
result
=
tOrderFeedbackService
.
insertTOrderFeedback
(
tOrderFeedback
);
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
throw
new
Exception
(
StringUtils
.
format
(
"工单反馈操作失败,数据有误"
));
}
return
toAjax
(
result
);
}
/**
...
...
gassafety-system/src/main/java/com/zehong/system/domain/TInspectionPlan.java
View file @
198dd281
...
...
@@ -42,8 +42,8 @@ public class TInspectionPlan extends BaseEntity
@Excel
(
name
=
"结束时间"
,
width
=
30
,
dateFormat
=
"yyyy-MM-dd HH:mm:ss"
)
private
Date
endTime
;
/**
状态
*/
@Excel
(
name
=
"
状态
"
)
/**
计划状态(0未下发,1已下发,2进行中,3已完成)
*/
@Excel
(
name
=
"
计划状态(0未下发,1已下发,2进行中,3已完成)
"
)
private
String
planStatus
;
/** 计划描述 */
...
...
gassafety-system/src/main/java/com/zehong/system/domain/TOrderFeedback.java
View file @
198dd281
...
...
@@ -57,10 +57,6 @@ public class TOrderFeedback extends BaseEntity
@Excel
(
name
=
"图片地址3"
)
private
String
pictureUrl3
;
/** 备注 */
@Excel
(
name
=
"备注"
)
private
String
remarks
;
public
void
setFeedbackId
(
int
feedbackId
)
{
this
.
feedbackId
=
feedbackId
;
...
...
@@ -151,15 +147,6 @@ public class TOrderFeedback extends BaseEntity
{
return
pictureUrl3
;
}
public
void
setRemarks
(
String
remarks
)
{
this
.
remarks
=
remarks
;
}
public
String
getRemarks
()
{
return
remarks
;
}
@Override
public
String
toString
()
{
...
...
@@ -174,7 +161,6 @@ public class TOrderFeedback extends BaseEntity
.
append
(
"pictureUrl1"
,
getPictureUrl1
())
.
append
(
"pictureUrl2"
,
getPictureUrl2
())
.
append
(
"pictureUrl3"
,
getPictureUrl3
())
.
append
(
"remarks"
,
getRemarks
())
.
toString
();
}
}
gassafety-system/src/main/java/com/zehong/system/domain/vo/OrderFeedbackVo.java
0 → 100644
View file @
198dd281
package
com
.
zehong
.
system
.
domain
.
vo
;
import
com.fasterxml.jackson.annotation.JsonFormat
;
import
com.zehong.common.annotation.Excel
;
import
com.zehong.common.core.domain.BaseEntity
;
import
org.apache.commons.lang3.builder.ToStringBuilder
;
import
org.apache.commons.lang3.builder.ToStringStyle
;
import
java.util.Date
;
/**
* 工单反馈信息对象 t_order_feedback
*
* @author zehong
* @date 2021-07-19
*/
public
class
OrderFeedbackVo
extends
BaseEntity
{
private
static
final
long
serialVersionUID
=
1L
;
/** 工单反馈id */
private
int
feedbackId
;
/** 工单id */
private
String
orderId
;
/** 设备编号 */
private
String
deviceCode
;
/** 设备名称 */
private
String
deviceName
;
/** 设备类型 */
private
String
deviceType
;
/** 反馈内容 */
private
String
contents
;
/** 反馈时间 */
@JsonFormat
(
pattern
=
"yyyy-MM-dd HH:mm:ss"
)
private
Date
feedbackTime
;
/** 是否存在隐患(1是,2否) */
private
String
isHiddenDanger
;
/** 处理状态(1不需处理,2已处理完成,3未处理完成) */
private
String
dealStatus
;
/** 图片地址1 */
private
String
pictureUrl1
;
/** 图片地址2 */
private
String
pictureUrl2
;
/** 图片地址3 */
private
String
pictureUrl3
;
public
void
setFeedbackId
(
int
feedbackId
)
{
this
.
feedbackId
=
feedbackId
;
}
public
int
getFeedbackId
()
{
return
feedbackId
;
}
public
void
setOrderId
(
String
orderId
)
{
this
.
orderId
=
orderId
;
}
public
String
getOrderId
()
{
return
orderId
;
}
public
void
setDeviceCode
(
String
deviceCode
)
{
this
.
deviceCode
=
deviceCode
;
}
public
String
getDeviceCode
()
{
return
deviceCode
;
}
public
String
getDeviceName
()
{
return
deviceName
;
}
public
void
setDeviceName
(
String
deviceName
)
{
this
.
deviceName
=
deviceName
;
}
public
String
getDeviceType
()
{
return
deviceType
;
}
public
void
setDeviceType
(
String
deviceType
)
{
this
.
deviceType
=
deviceType
;
}
public
void
setContents
(
String
contents
)
{
this
.
contents
=
contents
;
}
public
String
getContents
()
{
return
contents
;
}
public
void
setFeedbackTime
(
Date
feedbackTime
)
{
this
.
feedbackTime
=
feedbackTime
;
}
public
Date
getFeedbackTime
()
{
return
feedbackTime
;
}
public
void
setIsHiddenDanger
(
String
isHiddenDanger
)
{
this
.
isHiddenDanger
=
isHiddenDanger
;
}
public
String
getIsHiddenDanger
()
{
return
isHiddenDanger
;
}
public
void
setDealStatus
(
String
dealStatus
)
{
this
.
dealStatus
=
dealStatus
;
}
public
String
getDealStatus
()
{
return
dealStatus
;
}
public
void
setPictureUrl1
(
String
pictureUrl1
)
{
this
.
pictureUrl1
=
pictureUrl1
;
}
public
String
getPictureUrl1
()
{
return
pictureUrl1
;
}
public
void
setPictureUrl2
(
String
pictureUrl2
)
{
this
.
pictureUrl2
=
pictureUrl2
;
}
public
String
getPictureUrl2
()
{
return
pictureUrl2
;
}
public
void
setPictureUrl3
(
String
pictureUrl3
)
{
this
.
pictureUrl3
=
pictureUrl3
;
}
public
String
getPictureUrl3
()
{
return
pictureUrl3
;
}
@Override
public
String
toString
()
{
return
new
ToStringBuilder
(
this
,
ToStringStyle
.
MULTI_LINE_STYLE
)
.
append
(
"feedbackId"
,
getFeedbackId
())
.
append
(
"orderId"
,
getOrderId
())
.
append
(
"deviceId"
,
getDeviceCode
())
.
append
(
"contents"
,
getContents
())
.
append
(
"feedbackTime"
,
getFeedbackTime
())
.
append
(
"isHiddenDanger"
,
getIsHiddenDanger
())
.
append
(
"dealStatus"
,
getDealStatus
())
.
append
(
"pictureUrl1"
,
getPictureUrl1
())
.
append
(
"pictureUrl2"
,
getPictureUrl2
())
.
append
(
"pictureUrl3"
,
getPictureUrl3
())
.
toString
();
}
}
gassafety-system/src/main/java/com/zehong/system/domain/vo/WorkOrderVo.java
View file @
198dd281
package
com
.
zehong
.
system
.
domain
.
vo
;
import
com.fasterxml.jackson.annotation.JsonFormat
;
import
com.zehong.common.annotation.Excel
;
import
com.zehong.common.core.domain.BaseEntity
;
import
com.zehong.system.domain.TDeviceInfo
;
import
com.zehong.system.domain.TOrderFeedback
;
...
...
@@ -44,7 +43,7 @@ public class WorkOrderVo extends BaseEntity
private
List
<
TDeviceInfo
>
deviceInfoList
;
/** 反馈信息列表 */
private
List
<
TOrderFeedback
>
feedbackList
;
private
List
<
OrderFeedbackVo
>
feedbackList
;
/** 设备数量 */
private
int
deviceNum
;
...
...
@@ -157,11 +156,11 @@ public class WorkOrderVo extends BaseEntity
this
.
deviceInfoList
=
deviceInfoList
;
}
public
List
<
TOrderFeedback
>
getFeedbackList
()
{
public
List
<
OrderFeedbackVo
>
getFeedbackList
()
{
return
feedbackList
;
}
public
void
setFeedbackList
(
List
<
TOrderFeedback
>
feedbackList
)
{
public
void
setFeedbackList
(
List
<
OrderFeedbackVo
>
feedbackList
)
{
this
.
feedbackList
=
feedbackList
;
}
...
...
gassafety-system/src/main/java/com/zehong/system/service/ITOrderFeedbackService.java
View file @
198dd281
...
...
@@ -33,7 +33,7 @@ public interface ITOrderFeedbackService
* @param tOrderFeedback 工单反馈信息
* @return 结果
*/
public
int
insertTOrderFeedback
(
TOrderFeedback
tOrderFeedback
);
public
int
insertTOrderFeedback
(
TOrderFeedback
tOrderFeedback
)
throws
Exception
;
/**
* 修改工单反馈信息
...
...
gassafety-system/src/main/java/com/zehong/system/service/impl/TOrderFeedbackServiceImpl.java
View file @
198dd281
...
...
@@ -28,6 +28,10 @@ public class TOrderFeedbackServiceImpl implements ITOrderFeedbackService
private
THiddenTroubleMapper
tHiddenTroubleMapper
;
@Autowired
private
TDeviceAlarmMapper
tDeviceAlarmMapper
;
@Autowired
private
TPipeMapper
tPipeMapper
;
@Autowired
private
TDeviceInfoMapper
tDeviceInfoMapper
;
/**
* 查询工单反馈信息
...
...
@@ -60,7 +64,7 @@ public class TOrderFeedbackServiceImpl implements ITOrderFeedbackService
* @return 结果
*/
@Override
public
int
insertTOrderFeedback
(
TOrderFeedback
tOrderFeedback
)
public
int
insertTOrderFeedback
(
TOrderFeedback
tOrderFeedback
)
throws
Exception
{
if
(
"2"
.
equals
(
tOrderFeedback
.
getIsHiddenDanger
())){
tOrderFeedback
.
setDealStatus
(
"1"
);
...
...
@@ -82,6 +86,15 @@ public class TOrderFeedbackServiceImpl implements ITOrderFeedbackService
data
.
setUpdateTime
(
DateUtils
.
getNowDate
());
tInspectionDataMapper
.
updateTInspectionData
(
data
);
if
(
"0"
.
equals
(
data
.
getDeviceType
())){
TPipe
pipe
=
tPipeMapper
.
selectTPipeByCode
(
deviceCode
);
pipe
.
setInspectionTime
(
DateUtils
.
getNowDate
());
tPipeMapper
.
updateTPipe
(
pipe
);
}
else
{
TDeviceInfo
device
=
tDeviceInfoMapper
.
selectTDeviceInfoByCode
(
deviceCode
);
device
.
setInspectionTime
(
DateUtils
.
getNowDate
());
tDeviceInfoMapper
.
updateTDeviceInfo
(
device
);
}
}
else
if
(
"2"
.
equals
(
orderType
))
{
THiddenTrouble
trouble
=
tHiddenTroubleMapper
.
selectTHiddenTroubleById
(
order
.
getResourceId
());
trouble
.
setDealStatus
(
dealStatus
);
...
...
gassafety-system/src/main/java/com/zehong/system/service/impl/TWorkOrderServiceImpl.java
View file @
198dd281
...
...
@@ -7,6 +7,7 @@ import com.zehong.common.core.domain.entity.SysUser;
import
com.zehong.common.utils.DateUtils
;
import
com.zehong.system.domain.*
;
import
com.zehong.system.domain.form.TWorkOrderForm
;
import
com.zehong.system.domain.vo.OrderFeedbackVo
;
import
com.zehong.system.domain.vo.WorkOrderVo
;
import
com.zehong.system.mapper.*
;
import
org.springframework.beans.BeanUtils
;
...
...
@@ -139,8 +140,31 @@ public class TWorkOrderServiceImpl implements ITWorkOrderService
workOrderVo
.
setDeviceInfoList
(
deviceInfoList
);
List
<
TOrderFeedback
>
feedbackList
=
tOrderFeedbackMapper
.
selectTOrderFeedbackByOrderId
(
tWorkOrder
.
getOrderId
());
List
<
OrderFeedbackVo
>
feedbackVoList
=
new
ArrayList
<>();
TDeviceInfo
device
=
null
;
if
(
feedbackList
.
size
()
!=
0
)
{
workOrderVo
.
setFeedbackList
(
feedbackList
);
for
(
TOrderFeedback
feedback
:
feedbackList
)
{
OrderFeedbackVo
feedbackVo
=
new
OrderFeedbackVo
();
if
(
feedback
!=
null
)
{
BeanUtils
.
copyProperties
(
feedback
,
feedbackVo
);
}
device
=
tDeviceInfoMapper
.
selectTDeviceInfoByCode
(
feedback
.
getDeviceCode
());
if
(
device
!=
null
)
{
feedbackVo
.
setDeviceName
(
device
.
getDeviceName
());
feedbackVo
.
setDeviceType
(
device
.
getDeviceType
());
}
if
(
feedbackVo
!=
null
)
{
feedbackVoList
.
add
(
feedbackVo
);
}
}
if
(
feedbackVoList
.
size
()
!=
0
)
{
workOrderVo
.
setFeedbackList
(
feedbackVoList
);
}
}
return
workOrderVo
;
...
...
gassafety-system/src/main/resources/mapper/system/TOrderFeedbackMapper.xml
View file @
198dd281
...
...
@@ -15,11 +15,10 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<result
property=
"pictureUrl1"
column=
"picture_url_1"
/>
<result
property=
"pictureUrl2"
column=
"picture_url_2"
/>
<result
property=
"pictureUrl3"
column=
"picture_url_3"
/>
<result
property=
"remarks"
column=
"remarks"
/>
</resultMap>
<sql
id=
"selectTOrderFeedbackVo"
>
select feedback_id, order_id, device_code, contents, feedback_time, is_hidden_danger, deal_status, picture_url_1, picture_url_2, picture_url_3
, remarks
from t_order_feedback
select feedback_id, order_id, device_code, contents, feedback_time, is_hidden_danger, deal_status, picture_url_1, picture_url_2, picture_url_3 from t_order_feedback
</sql>
<select
id=
"selectTOrderFeedbackList"
parameterType=
"TOrderFeedback"
resultMap=
"TOrderFeedbackResult"
>
...
...
@@ -34,7 +33,6 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if
test=
"pictureUrl1 != null and pictureUrl1 != ''"
>
and picture_url_1 = #{pictureUrl1}
</if>
<if
test=
"pictureUrl2 != null and pictureUrl2 != ''"
>
and picture_url_2 = #{pictureUrl2}
</if>
<if
test=
"pictureUrl3 != null and pictureUrl3 != ''"
>
and picture_url_3 = #{pictureUrl3}
</if>
<if
test=
"remarks != null and remarks != ''"
>
and remarks = #{remarks}
</if>
</where>
</select>
...
...
@@ -61,7 +59,6 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if
test=
"pictureUrl1 != null"
>
picture_url_1,
</if>
<if
test=
"pictureUrl2 != null"
>
picture_url_2,
</if>
<if
test=
"pictureUrl3 != null"
>
picture_url_3,
</if>
<if
test=
"remarks != null"
>
remarks,
</if>
</trim>
<trim
prefix=
"values ("
suffix=
")"
suffixOverrides=
","
>
<if
test=
"orderId != null"
>
#{orderId},
</if>
...
...
@@ -73,7 +70,6 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if
test=
"pictureUrl1 != null"
>
#{pictureUrl1},
</if>
<if
test=
"pictureUrl2 != null"
>
#{pictureUrl2},
</if>
<if
test=
"pictureUrl3 != null"
>
#{pictureUrl3},
</if>
<if
test=
"remarks != null"
>
#{remarks},
</if>
</trim>
</insert>
...
...
@@ -89,7 +85,6 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if
test=
"pictureUrl1 != null"
>
picture_url_1 = #{pictureUrl1},
</if>
<if
test=
"pictureUrl2 != null"
>
picture_url_2 = #{pictureUrl2},
</if>
<if
test=
"pictureUrl3 != null"
>
picture_url_3 = #{pictureUrl3},
</if>
<if
test=
"remarks != null"
>
remarks = #{remarks},
</if>
</trim>
where feedback_id = #{feedbackId}
</update>
...
...
gassafety-web/src/assets/styles/fonticon.scss
View file @
198dd281
@font-face
{
font-family
:
"iconfont"
;
/* Project id 2692138 */
src
:
url('//at.alicdn.com/t/font_2692138_
75daec8zfbv.woff2?t=162701182876
3')
format
(
'woff2'
)
,
url('//at.alicdn.com/t/font_2692138_
75daec8zfbv.woff?t=162701182876
3')
format
(
'woff'
)
,
url('//at.alicdn.com/t/font_2692138_
75daec8zfbv.ttf?t=162701182876
3')
format
(
'truetype'
);
src
:
url('//at.alicdn.com/t/font_2692138_
r2b0jk88vrj.woff2?t=162761646637
3')
format
(
'woff2'
)
,
url('//at.alicdn.com/t/font_2692138_
r2b0jk88vrj.woff?t=162761646637
3')
format
(
'woff'
)
,
url('//at.alicdn.com/t/font_2692138_
r2b0jk88vrj.ttf?t=162761646637
3')
format
(
'truetype'
);
}
.iconfont
{
...
...
@@ -13,6 +13,26 @@
-moz-osx-font-smoothing
:
grayscale
;
}
.icon-gdcd
:before
{
content
:
"\e615"
;
}
.icon-tyxgs
:before
{
content
:
"\e610"
;
}
.icon-fmjgs
:before
{
content
:
"\e612"
;
}
.icon-rqbgs
:before
{
content
:
"\e613"
;
}
.icon-ljsgs
:before
{
content
:
"\e614"
;
}
.icon-ylb
:before
{
content
:
"\e60f"
;
}
...
...
gassafety-web/src/components/MyFileUpload/index.vue
View file @
198dd281
...
...
@@ -15,7 +15,7 @@
:show-file-list=
"true"
:headers=
"headers"
class=
"upload-file-uploader"
:class=
"
{
hide:addShow
}"
:class=
"
{
hide: addShow
}"
ref="upload"
>
<!-- 上传按钮 -->
...
...
@@ -33,8 +33,13 @@
的文件
</div>
</el-upload>
<el-dialog
:modal=
"modal"
:visible
.
sync=
"dialogVisible"
>
<img
width=
"100%"
:src=
"dialogImageUrl"
alt=
""
/>
<el-dialog
:center=
"true"
width=
"50%"
:modal=
"modal"
:visible
.
sync=
"dialogVisible"
>
<img
:src=
"dialogImageUrl"
alt=
""
/>
</el-dialog>
<!-- 文件列表 -->
<!-- <transition-group class="upload-file-list el-upload-list el-upload-list--text" name="el-fade-in-linear" tag="ul">
...
...
@@ -80,7 +85,6 @@ export default {
type
:
Boolean
,
default
:
false
,
},
},
data
()
{
return
{
...
...
@@ -89,10 +93,10 @@ export default {
Authorization
:
"Bearer "
+
getToken
(),
},
fileList
:
[],
modal
:
false
,
dialogVisible
:
false
,
dialogImageUrl
:
""
,
addShow
:
true
,
modal
:
false
,
dialogVisible
:
false
,
dialogImageUrl
:
""
,
addShow
:
true
,
};
},
computed
:
{
...
...
@@ -167,7 +171,7 @@ export default {
// 文件列表移除文件
handleRemove
(
file
,
fileList
)
{
console
.
log
(
"列表移除"
,
file
,
fileList
);
this
.
addShow
=
fileList
.
length
>
0
?
true
:
false
;
this
.
addShow
=
fileList
.
length
>
0
?
true
:
false
;
this
.
$emit
(
"remove"
,
file
);
},
// 删除文件
...
...
@@ -189,10 +193,13 @@ export default {
// }
// });
},
handleFileClick
(
file
)
{
this
.
dialogImageUrl
=
file
.
response
.
url
;
this
.
dialogVisible
=
true
;
handleFileClick
(
file
,
fileList
)
{
this
.
dialogImageUrl
=
file
.
response
?
file
.
response
.
url
:
file
.
url
;
// this.dialogImageUrl =if(this.fileArr) this.fileArr[0].url;
this
.
dialogVisible
=
true
;
console
.
log
(
file
);
// console.log(file.response.url)
},
// 获取文件名称
getFileName
(
name
)
{
...
...
@@ -203,19 +210,21 @@ export default {
}
},
// 当改变列表改变时
fileChange
(
file
,
fileList
){
this
.
addShow
=
fileList
.
length
>
0
?
true
:
false
;
}
fileChange
(
file
,
fileList
)
{
this
.
addShow
=
fileList
.
length
>
0
?
true
:
false
;
},
},
created
()
{
// this.fileList = this.list;
this
.
addShow
=
this
.
fileArr
.
length
>
0
?
true
:
false
;
this
.
addShow
=
this
.
fileArr
.
length
>
0
?
true
:
false
;
},
};
</
script
>
<
style
scoped
lang=
"scss"
>
img
{
width
:
100%
;
}
.upload-file-uploader
{
margin-bottom
:
5px
;
}
...
...
@@ -234,5 +243,4 @@ export default {
.ele-upload-list__item-content-action
.el-link
{
margin-right
:
10px
;
}
</
style
>
gassafety-web/src/components/PopWindow/lineInfoWindow.vue
View file @
198dd281
...
...
@@ -121,6 +121,7 @@ export default {
}
}
.
content
{
position
:
relative
;
max
-
height
:
400
px
;
overflow
:
hidden
;
overflow
-
y
:
auto
;
...
...
gassafety-web/src/utils/gaodeMap.js
View file @
198dd281
...
...
@@ -208,6 +208,22 @@ class gaodeMap {
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
);
...
...
gassafety-web/src/utils/gaodeMapView.js
0 → 100644
View file @
198dd281
import
createPop
from
"./createPop"
;
import
regulatorBox
from
"../components/PopWindow/regulatorBox.vue"
;
import
valveWell
from
"../components/PopWindow/valveWell.vue"
;
import
flowMeter
from
"../components/PopWindow/flowMeter.vue"
;
import
pipelineView
from
"../components/PopWindow/pipelineView.vue"
;
import
lineInfoWindow
from
"../components/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"
};
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
:
9
//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("抬起来了");
});
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
)
{
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
;
});
}
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
)
{
// 如果有cloneDom就删了
console
.
log
(
that
.
cloneDom
);
// 删除克隆出来的clonedom
that
.
removeCloneDom
();
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/zhibaorenyuan.png"
)
});
marker
.
setIcon
(
icon
);
break
;
}
case
DEVICE_TYPE
.
WORKORDER
:
{
let
icon
=
new
AMap
.
Icon
({
//size: new AMap.Size(51, 23),
image
:
require
(
"../assets/images/zhibaorenyuan.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
;
}
}
}
/**
* 添加折线
* @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
:
"#F7FE38"
,
strokeWeight
:
4
,
strokeOpacity
:
0.9
,
zIndex
:
50
,
bubble
:
true
,
geodesic
:
true
,
extData
:
{
type
:
"line"
,
//当前line状态 0:正常状态 1:正在编辑状态
isState
:
0
,
lineData
:
item
}
});
this
.
polyLines
.
push
(
polyline
);
// 信息窗体
const
dom
=
createPop
(
lineInfoWindow
,
{
obj
:
{
a
:
123
,
editorPage
:
true
,
...
item
,
polyline
}
});
// console.log("domdomdomdomdom",dom)
//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
:
"#FF5A67"
});
infoWindow
.
setOffset
(
new
AMap
.
Pixel
(
X
,
Y
));
infoWindow
.
open
(
map
,
e
.
lnglat
);
// 这个是为了盖住vue里的东西
polyline
.
cloneDom
=
infoWindow
.
dom
.
cloneNode
(
true
);
console
.
log
(
infoWindow
.
dom
.
offsetLeft
);
console
.
log
(
infoWindow
.
dom
);
polyline
.
cloneDom
.
style
.
top
=
infoWindow
.
dom
.
offsetTop
+
80
+
"px"
;
polyline
.
cloneDom
.
style
.
left
=
infoWindow
.
dom
.
offsetLeft
+
100
+
"px"
;
// 先删除之前的,后增加现在的
this
.
removeCloneDom
();
document
.
body
.
appendChild
(
polyline
.
cloneDom
);
infoWindow
.
close
();
// polyline.infoWindow=infoWindow;
this
.
showInfoWindow
=
infoWindow
;
this
.
cloneDom
=
polyline
.
cloneDom
;
// const
});
polyline
.
on
(
"mouseout"
,
e
=>
{
polyline
.
setOptions
({
strokeColor
:
"#F7FE38"
});
// infoWindow.close();
});
// 计算info的位置
// function infoPosition() {}
}
map
.
add
(
this
.
polyLines
);
// 缩放地图到合适的视野级别
// map.setFitView();
}
removeCloneDom
()
{
this
.
cloneDom
&&
document
.
body
.
removeChild
(
this
.
cloneDom
);
this
.
cloneDom
=
null
;
}
// 创建一条新的线
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
();
// 删除浮动到线上的cloneDom
this
.
removeCloneDom
();
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
{
// 经纬度
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
(
flowMeter
,
{
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/views/device/map/index.vue
View file @
198dd281
...
...
@@ -416,7 +416,15 @@ export default {
<
style
lang=
"scss"
scoped
>
// 解决地图下拉框
#container
{
position
:
fixed
;
top
:
80px
;
bottom
:
0
;
width
:
100%
;
}
// 左边的bar
.leftBar-wrapper
{
position
:
fixed
;
left
:
100px
;
...
...
gassafety-web/src/views/enterprise/mapView/components/RightBototmData.vue
0 → 100644
View file @
198dd281
<
template
>
<div
class=
"wrapper"
>
<div
class=
"left"
>
<div
class=
"top"
>
设备报警最新记录
</div>
<div
class=
"bottom"
>
<div
class=
"one"
>
设备编号:
<span>
1123123123
</span></div>
<div
class=
"two"
>
报警时间:
<span>
34523452345
</span></div>
</div>
</div>
<div
class=
"right"
>
<template
v-for=
"item in list"
>
<div
class=
"right-content"
:key=
"item.type"
>
<div
class=
"text-icon"
>
<i
class=
"iconfont icon-gdcd"
></i>
</div>
<div
class=
"text"
>
<div
class=
"top"
>
{{
typeName
[
item
.
type
]
}}
</div>
<div
class=
"bottom"
>
{{
item
.
number
}}{{
item
.
type
==
99
?
"KM"
:
"个"
}}
</div>
</div>
</div>
</
template
>
</div>
</div>
</template>
<
script
>
export
default
{
props
:
{
list
:
{
type
:
Array
,
},
},
data
(){
return
{
typeName
:{
"1"
:
"调压箱"
,
"2"
:
"阀门井"
,
"3"
:
"流量计"
,
"4"
:
"压力表"
,
"99"
:
"管道"
,
},
// type
}
},
created
()
{
console
.
log
(
"list"
,
this
.
list
);
},
};
</
script
>
<
style
lang=
"scss"
scoped
>
.wrapper
{
width
:
778px
;
height
:
304px
;
position
:
fixed
;
right
:
32px
;
bottom
:
22px
;
// background-color: #fff;
display
:
flex
;
justify-content
:
space-between
;
&
>
div
{
}
.left
{
width
:
278px
;
margin-right
:
12px
;
box-shadow
:
2px
2px
5px
rgba
(
0
,
0
,
0
,
0
.16
);
background-color
:
#fff
;
color
:
#fff
;
font-size
:
14px
;
font-weight
:
400
;
.top
{
height
:
32px
;
background-color
:
#053b6a
;
line-height
:
32px
;
padding-left
:
12px
;
}
.bottom
{
&
>
div
{
height
:
20px
;
padding-left
:
32px
;
padding-bottom
:
2px
;
&
.one
{
background-color
:
#f0f0f0
;
color
:
#2788ea
;
}
&
.two
{
color
:
#676767
;
}
}
}
}
.right
{
width
:
500px
;
display
:
flex
;
flex-wrap
:
wrap
;
justify-content
:
space-between
;
align-content
:
flex-start
;
&
>
.right-content
{
background-color
:
#fff
;
width
:
238px
;
height
:
82px
;
margin-bottom
:
29px
;
box-shadow
:
2px
2px
5px
rgba
(
0
,
0
,
0
,
0
.16
);
display
:
flex
;
// align-items: center;
.text-icon
{
line-height
:
82px
;
padding-left
:
22px
;
margin-right
:
22px
;
i
{
color
:
#053b6a
;
font-size
:
60px
;
}
}
.text
{
font-size
:
14px
;
padding-top
:
16px
;
.top
{
color
:
#000
;
margin-bottom
:
10px
;
font-weight
:
600
;
}
.bottom
{
color
:
#2788ea
;
}
}
}
}
}
</
style
>
\ No newline at end of file
gassafety-web/src/views/workOrder/basicsInfo/detail.vue
View file @
198dd281
...
...
@@ -108,105 +108,58 @@
<div
style=
"color: #31EAEA;width: 100%;height: 40px;"
>
<ul><li>
反馈信息
</li></ul>
</div>
<!--
<el-table
:data=
"form.feedbackList"
height=
"250"
border
style=
"width: 100%"
>
<el-table-column
prop=
"contents"
label=
"反馈信息"
>
</el-table-column>
<el-table-column
prop=
"feedbackTime"
label=
"反馈时间"
>
</el-table-column>
<el-table-column
prop=
"dealStatus"
label=
"是否解决"
>
<template
slot-scope=
"scope"
>
<font
v-if=
"scope.row.dealStatus == 3"
>
未解决
</font>
<font
v-if=
"scope.row.dealStatus != 3 && scope.row.dealStatus != null"
>
已解决
</font>
</
template
>
</el-table-column>
<el-table-column
prop=
"pictureUrl1"
label=
"图片1"
>
<
template
slot-scope=
"scope"
>
<el-image
:src=
"scope.row.pictureUrl1"
fit=
"cover"
v-if=
"scope.row.pictureUrl1 != null && scope.row.pictureUrl1 != ''"
style=
"width: 100px;height: 100px;"
>
</el-image>
</
template
>
</el-table-column>
<el-table-column
prop=
"pictureUrl2"
label=
"图片2"
>
<
template
slot-scope=
"scope"
>
<el-image
:src=
"scope.row.pictureUrl2"
fit=
"cover"
v-if=
"scope.row.pictureUrl2 != null && scope.row.pictureUrl2 != ''"
style=
"width: 100px;height: 100px;"
>
</el-image>
</
template
>
</el-table-column>
<el-table-column
prop=
"pictureUrl3"
label=
"图片3"
>
<
template
slot-scope=
"scope"
>
<el-image
:src=
"scope.row.pictureUrl3"
fit=
"cover"
v-if=
"scope.row.pictureUrl3 != null && scope.row.pictureUrl3 != ''"
style=
"width: 100px;height: 100px;"
>
</el-image>
</
template
>
</el-table-column>
</el-table>
-->
<div
class=
"block"
style=
"width: 95%;margin-left: 2%;"
>
<el-timeline>
<el-timeline-item
v-for=
"(activity, index) in form.feedbackList"
:key=
"index"
:timestamp=
"activity.feedbackTime"
>
<el-timeline-item
v-for=
"(activity, index) in form.feedbackList"
:key=
"index"
:timestamp=
"activity.feedbackTime"
>
<el-card>
<div
style=
"float: left;margin-left: 50px;"
>
<p>
设备类型:{{activity.deviceType}}
</p>
<p>
设备名称:{{activity.deviceType}}
</p>
<p>
反馈信息:{{activity.contents}}
</p>
<div
style=
"width: 600px;float: left;"
>
<div
style=
" width: 600px;"
>
<div
style=
"float: left;margin-left: 50px; width: 250px;"
>
<p>
设备类型:
<span
v-if=
"activity.deviceType == 0"
>
管道
</span>
<span
v-if=
"activity.deviceType == 1"
>
调压箱
</span>
<span
v-if=
"activity.deviceType == 2"
>
阀门井
</span>
<span
v-if=
"activity.deviceType == 3"
>
流量计
</span>
<span
v-if=
"activity.deviceType == 4"
>
压力表
</span>
</p>
<p>
设备名称:
{{
activity
.
deviceName
}}
</p>
<p>
是否有隐患:
<span
v-if=
"activity.isHiddenDanger == 1"
>
是
</span>
<span
v-if=
"activity.isHiddenDanger == 2"
>
否
</span>
</p>
<div
style=
"width: 600px;"
>
<p>
反馈信息:
<span>
{{
activity
.
contents
}}
</span>
</p>
</div>
</div>
<div
style=
"float: left;margin-left:
50px;"
>
<div
style=
"float: left;margin-left: 50px; width: 2
50px;"
>
<p
v-if=
"activity.dealStatus == 3"
>
是否解决:未解决
</p>
<p
v-if=
"activity.dealStatus != 3"
>
是否解决:已解决
</p>
<p>
反馈时间:
{{
activity
.
feedbackTime
}}
</p>
<p
v-if=
"activity.isHiddenDanger == 1"
>
处理状态:
<span
v-if=
"activity.dealStatus == 1"
>
不需要处理
</span>
<span
v-if=
"activity.dealStatus == 2"
>
已处理完成
</span>
<span
v-if=
"activity.dealStatus == 3"
>
未处理完成
</span>
</p>
</div>
</div>
</div>
<div
class=
"feedbackTime-div"
>
<div
class=
"feedbackTime"
>
<el-image
:src=
"activity.pictureUrl1"
:preview-src-list=
"
activity.pictureUrl1"
v-if=
"activity.pictureUrl1 != null && activity.pictureUrl1 != ''"
style=
"width: 7
0px;"
></el-image>
<el-image
:src=
"activity.pictureUrl1"
:preview-src-list=
"
[activity.pictureUrl1]"
v-if=
"activity.pictureUrl1 != null && activity.pictureUrl1 != ''"
style=
"width: 9
0px;"
></el-image>
</div>
<div
class=
"feedbackTime"
>
<el-image
:src=
"activity.pictureUrl2"
v-if=
"activity.pictureUrl2 != null && activity.pictureUrl2 != ''"
style=
"width: 7
0px;"
></el-image>
<el-image
:src=
"activity.pictureUrl2"
:preview-src-list=
"[activity.pictureUrl2]"
v-if=
"activity.pictureUrl2 != null && activity.pictureUrl2 != ''"
style=
"width: 9s
0px;"
></el-image>
</div>
<div
class=
"feedbackTime"
>
<el-image
:src=
"activity.pictureUrl3"
v-if=
"activity.pictureUrl3 != null && activity.pictureUrl3 != ''"
style=
"width: 7
0px;"
></el-image>
<el-image
:src=
"activity.pictureUrl3"
:preview-src-list=
"[activity.pictureUrl3]"
v-if=
"activity.pictureUrl3 != null && activity.pictureUrl3 != ''"
style=
"width: 9
0px;"
></el-image>
</div>
</div>
</el-card>
</el-timeline-item>
</el-timeline>
</div>
<!-- <el-timeline-item timestamp="2018/4/3" placement="top">
<el-card>
<p>反馈时间:{{contents}}</p>
</el-card>
</el-timeline-item>
<el-timeline-item timestamp="2018/4/2" placement="top">
<el-card>
<p>是否解决:{{contents}}</p>
</el-card>
</el-timeline-item> -->
<!-- <div style="width: 95%;float: left;">
<div style="float: left;margin-left: 50px;" >
<el-image :src="form.pictureUrl1" fit="cover" v-if="form.pictureUrl1 != null && form.pictureUrl1 != ''" style="width: 100px;height: 100px;">
</el-image>
<el-image :src="form.pictureUrl2" fit="cover" v-if="form.pictureUrl2 != null && form.pictureUrl2 != ''" style="width: 100px;height: 100px;">
</el-image>
<el-image :src="form.pictureUrl3" fit="cover" v-if="form.pictureUrl3 != null && form.pictureUrl3 != ''" style="width: 100px;height: 100px;">
</el-image>
</div>
<el-form ref="form" v-model="form" :rules="rules" label-width="100px" style="float: left;margin-left: 50px;" >
<el-form-item label="反馈信息:" prop="contents">
<font>{{form.contents}}</font>
</el-form-item>
<el-form-item label="反馈时间:" prop="feedbackTime">
<font>{{form.feedbackTime}}</font>
</el-form-item>
<el-form-item label="是否解决:" prop="dealStatus">
<font v-if="form.dealStatus == 3">未解决</font>
<font v-if="form.dealStatus != 3 && form.dealStatus != null">已解决</font>
</el-form-item>
</el-form>
</div>-->
</div>
<!-- 返回按钮 -->
...
...
@@ -333,7 +286,7 @@ export default {
getBasicsInfo
(){
getBasicsInfo
(
this
.
orderId
).
then
(
response
=>
{
this
.
form
=
response
.
data
;
console
.
log
(
this
.
form
,
"00000000000"
)
console
.
log
(
this
.
form
.
feedbackList
,
"00000000000"
)
this
.
active
=
parseInt
(
response
.
data
.
orderStatus
)
+
1
;
if
(
this
.
form
.
deviceInfoList
.
length
>
0
){
this
.
gaoMap
.
resetMapCenter
([
this
.
form
.
deviceInfoList
[
0
].
longitude
,
this
.
form
.
deviceInfoList
[
0
].
latitude
]);
...
...
@@ -472,10 +425,11 @@ export default {
float
:
left
;
margin-left
:
150px
;
margin-top
:
10px
;
}
.feedbackTime
{
height
:
1
0
0px
;
width
:
1
0
0px
;
height
:
1
2
0px
;
width
:
1
2
0px
;
float
:
left
;
margin-left
:
15px
;
margin-top
:
5px
;
margin-bottom
:
15px
;
display
:
flex
;
justify-content
:
center
;
...
...
@@ -490,6 +444,9 @@ export default {
.detail
.el-form-item
{
margin-bottom
:
0px
;
}
.el-tree
{
margin-top
:
5px
;
}
.avatar-uploader
{
width
:
25%
;
float
:
left
;
...
...
gassafety-web/src/views/workOrder/feedback/index.vue
View file @
198dd281
...
...
@@ -154,17 +154,12 @@
/>
</el-form-item>
<el-form-item
label=
"是否存在隐患"
prop=
"isHiddenDanger"
>
<!--<el-radio-group v-model="form.isHiddenDanger">
<el-radio :label="1">是</el-radio>
<el-radio :label="2">否</el-radio>
</el-radio-group>-->
<el-switch
v-model=
"isHiddenDanger"
active-text=
"是"
inactive-text=
"否"
>
</el-switch>
</el-form-item>
<!-- <el-form-item label="处理结果" prop="dealStatus">-->
<el-form-item
label=
"处理结果"
prop=
"dealStatus"
v-if=
"isHiddenDanger == true"
>
<el-radio-group
v-model=
"form.dealStatus"
>
<el-radio
:label=
"2"
>
已处理完成
</el-radio>
...
...
@@ -347,11 +342,6 @@
const
orderId
=
row
.
orderId
||
this
.
ids
getBasicsInfo
(
orderId
).
then
(
response
=>
{
this
.
form
=
response
.
data
;
this
.
form
.
pictureUrl1
=
null
;
this
.
form
.
pictureUrl2
=
null
;
this
.
form
.
pictureUrl3
=
null
;
this
.
form
.
contents
=
null
;
this
.
form
.
remarks
=
null
;
this
.
open
=
true
;
this
.
title
=
"工单反馈"
;
});
...
...
gassafety-web/vue.config.js
View file @
198dd281
...
...
@@ -33,7 +33,7 @@ module.exports = {
proxy
:
{
// detail: https://cli.vuejs.org/config/#devserver-proxy
[
process
.
env
.
VUE_APP_BASE_API
]:
{
target
:
`http://
36.148.23.59:8901
/gassafety`
,
target
:
`http://
localhost:8903
/gassafety`
,
changeOrigin
:
true
,
pathRewrite
:
{
[
'^'
+
process
.
env
.
VUE_APP_BASE_API
]:
''
...
...
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