Commit 4dfad275 authored by jianqian's avatar jianqian

Merge remote-tracking branch 'origin/master'

parents e36eb042 f07ee030
...@@ -40,7 +40,7 @@ public class TDeviceAlarmController extends BaseController ...@@ -40,7 +40,7 @@ public class TDeviceAlarmController extends BaseController
/** /**
* 查询报警信息列表 * 查询报警信息列表
*/ */
@PreAuthorize("@ss.hasPermi('dataMonitoring:deviceAlarm:list')") //@PreAuthorize("@ss.hasPermi('dataMonitoring:deviceAlarm:list')")
@GetMapping("/list") @GetMapping("/list")
public TableDataInfo list(DeviceAlarmForm deviceAlarmForm) throws Exception public TableDataInfo list(DeviceAlarmForm deviceAlarmForm) throws Exception
{ {
......
...@@ -141,7 +141,7 @@ public class TDeviceInfoController extends BaseController ...@@ -141,7 +141,7 @@ public class TDeviceInfoController extends BaseController
/** /**
* 统计各设备类型的设备总数 * 统计各设备类型的设备总数
*/ */
@PreAuthorize("@ss.hasPermi('device:deviceInfo:countDeviceByType')") //@PreAuthorize("@ss.hasPermi('device:deviceInfo:countDeviceByType')")
@GetMapping("/countDeviceByType") @GetMapping("/countDeviceByType")
public AjaxResult countDeviceByType() public AjaxResult countDeviceByType()
{ {
......
...@@ -112,7 +112,7 @@ public class TPipeController extends BaseController ...@@ -112,7 +112,7 @@ public class TPipeController extends BaseController
/** /**
* 统计管道总长度 * 统计管道总长度
*/ */
@PreAuthorize("@ss.hasPermi('device:pipe:countPipeLength')") //@PreAuthorize("@ss.hasPermi('device:pipe:countPipeLength')")
@GetMapping("/countPipeLength") @GetMapping("/countPipeLength")
public AjaxResult countPipeLength() public AjaxResult countPipeLength()
{ {
......
...@@ -82,7 +82,7 @@ public class SysUserController extends BaseController ...@@ -82,7 +82,7 @@ public class SysUserController extends BaseController
/** /**
* 获取巡检员列表 * 获取巡检员列表
*/ */
@PreAuthorize("@ss.hasPermi('system:user:inspectorList')") //@PreAuthorize("@ss.hasPermi('system:user:inspectorList')")
@GetMapping("/inspectorList") @GetMapping("/inspectorList")
public AjaxResult inspectorList() public AjaxResult inspectorList()
{ {
......
# 数据源配置
spring:
datasource:
type: com.alibaba.druid.pool.DruidDataSource
driverClassName: com.mysql.cj.jdbc.Driver
druid:
# 主库数据源
master:
url: jdbc:mysql://36.148.23.59:3306/gas_db?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
username: root
password: root@123
# 从库数据源
slave:
# 从数据源开关/默认关闭
enabled: false
url:
username:
password:
# 初始连接数
initialSize: 5
# 最小连接池数量
minIdle: 10
# 最大连接池数量
maxActive: 20
# 配置获取连接等待超时的时间
maxWait: 60000
# 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
timeBetweenEvictionRunsMillis: 60000
# 配置一个连接在池中最小生存的时间,单位是毫秒
minEvictableIdleTimeMillis: 300000
# 配置一个连接在池中最大生存的时间,单位是毫秒
maxEvictableIdleTimeMillis: 900000
# 配置检测连接是否有效
validationQuery: SELECT 1 FROM DUAL
testWhileIdle: true
testOnBorrow: false
testOnReturn: false
webStatFilter:
enabled: true
statViewServlet:
enabled: true
# 设置白名单,不填则允许所有访问
allow:
url-pattern: /druid/*
# 控制台管理用户名和密码
login-username: zehong
login-password: 123456
filter:
stat:
enabled: true
# 慢SQL记录
log-slow-sql: true
slow-sql-millis: 1000
merge-sql: true
wall:
config:
multi-statement-allow: true
# redis 配置
redis:
# 地址
host: localhost
# 端口,默认为6379
port: 6379
# 数据库索引
database: 0
# 密码
password: 1qaz2wsx3edc
# 连接超时时间
timeout: 10s
lettuce:
pool:
# 连接池中的最小空闲连接
min-idle: 0
# 连接池中的最大空闲连接
max-idle: 8
# 连接池的最大数据库连接数
max-active: 8
# #连接池最大阻塞等待时间(使用负值表示没有限制)
max-wait: -1ms
# 项目相关配置
zehong:
# 名称
name: GasSafety
# 版本
version: 3.5.0
# 版权年份
copyrightYear: 2021
# 实例演示开关
demoEnabled: true
# 文件路径 示例( Windows配置D:/zehong/uploadPath,Linux配置 /data/zehong/uploadPath)
profile: /data/zehong/uploadPath
# 获取ip地址开关
addressEnabled: false
# 验证码类型 math 数组计算 char 字符验证
captchaType: math
# 数据源配置
spring:
datasource:
type: com.alibaba.druid.pool.DruidDataSource
driverClassName: com.mysql.cj.jdbc.Driver
druid:
# 主库数据源
master:
url: jdbc:mysql://36.148.23.59:3306/gas_db_prod?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
username: root
password: root@123
# 从库数据源
slave:
# 从数据源开关/默认关闭
enabled: false
url:
username:
password:
# 初始连接数
initialSize: 5
# 最小连接池数量
minIdle: 10
# 最大连接池数量
maxActive: 20
# 配置获取连接等待超时的时间
maxWait: 60000
# 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
timeBetweenEvictionRunsMillis: 60000
# 配置一个连接在池中最小生存的时间,单位是毫秒
minEvictableIdleTimeMillis: 300000
# 配置一个连接在池中最大生存的时间,单位是毫秒
maxEvictableIdleTimeMillis: 900000
# 配置检测连接是否有效
validationQuery: SELECT 1 FROM DUAL
testWhileIdle: true
testOnBorrow: false
testOnReturn: false
webStatFilter:
enabled: true
statViewServlet:
enabled: true
# 设置白名单,不填则允许所有访问
allow:
url-pattern: /druid/*
# 控制台管理用户名和密码
login-username: zehong
login-password: 123456
filter:
stat:
enabled: true
# 慢SQL记录
log-slow-sql: true
slow-sql-millis: 1000
merge-sql: true
wall:
config:
multi-statement-allow: true
# redis 配置
redis:
# 地址
host: localhost
# 端口,默认为6379
port: 6379
# 数据库索引
database: 0
# 密码
password: 1qaz2wsx3edc
# 连接超时时间
timeout: 10s
lettuce:
pool:
# 连接池中的最小空闲连接
min-idle: 0
# 连接池中的最大空闲连接
max-idle: 8
# 连接池的最大数据库连接数
max-active: 8
# #连接池最大阻塞等待时间(使用负值表示没有限制)
max-wait: -1ms
# 项目相关配置
zehong:
# 名称
name: GasSafety
# 版本
version: 3.5.0
# 版权年份
copyrightYear: 2021
# 实例演示开关
demoEnabled: true
# 文件路径 示例( Windows配置D:/zehong/uploadPath,Linux配置 /data/zehong/uploadPath)
profile: /data/zehong/uploadPath
# 获取ip地址开关
addressEnabled: false
# 验证码类型 math 数组计算 char 字符验证
captchaType: math
...@@ -54,4 +54,46 @@ spring: ...@@ -54,4 +54,46 @@ spring:
merge-sql: true merge-sql: true
wall: wall:
config: config:
multi-statement-allow: true multi-statement-allow: true
\ No newline at end of file # redis 配置
redis:
# 地址
host: localhost
# 端口,默认为6379
port: 6379
# 数据库索引
database: 0
# 密码
password:
# 连接超时时间
timeout: 10s
lettuce:
pool:
# 连接池中的最小空闲连接
min-idle: 0
# 连接池中的最大空闲连接
max-idle: 8
# 连接池的最大数据库连接数
max-active: 8
# #连接池最大阻塞等待时间(使用负值表示没有限制)
max-wait: -1ms
# 项目相关配置
zehong:
# 名称
name: GasSafety
# 版本
version: 3.5.0
# 版权年份
copyrightYear: 2021
# 实例演示开关
demoEnabled: true
# 文件路径 示例( Windows配置D:/zehong/uploadPath,Linux配置 /data/zehong/uploadPath)
profile: C:/Temp/zehong
# 获取ip地址开关
addressEnabled: false
# 验证码类型 math 数组计算 char 字符验证
captchaType: math
# 项目相关配置
zehong:
# 名称
name: GasSafety
# 版本
version: 3.5.0
# 版权年份
copyrightYear: 2021
# 实例演示开关
demoEnabled: true
# 文件路径 示例( Windows配置D:/zehong/uploadPath,Linux配置 /data/zehong/uploadPath)
profile: /data/zehong/uploadPath
# 获取ip地址开关
addressEnabled: false
# 验证码类型 math 数组计算 char 字符验证
captchaType: math
# 开发环境配置 # 开发环境配置
server: server:
# 服务器的HTTP端口,默认为8080 # 服务器的HTTP端口,默认为8080
...@@ -43,7 +26,7 @@ spring: ...@@ -43,7 +26,7 @@ spring:
# 国际化资源文件路径 # 国际化资源文件路径
basename: i18n/messages basename: i18n/messages
profiles: profiles:
active: druid active: test
# 文件上传 # 文件上传
servlet: servlet:
multipart: multipart:
...@@ -56,28 +39,6 @@ spring: ...@@ -56,28 +39,6 @@ spring:
restart: restart:
# 热部署开关 # 热部署开关
enabled: true enabled: true
# redis 配置
redis:
# 地址
host: localhost
# 端口,默认为6379
port: 6379
# 数据库索引
database: 0
# 密码
password:
# 连接超时时间
timeout: 10s
lettuce:
pool:
# 连接池中的最小空闲连接
min-idle: 0
# 连接池中的最大空闲连接
max-idle: 8
# 连接池的最大数据库连接数
max-active: 8
# #连接池最大阻塞等待时间(使用负值表示没有限制)
max-wait: -1ms
# token配置 # token配置
token: token:
......
...@@ -41,8 +41,9 @@ public class TDeviceReportDataServiceImpl implements ITDeviceReportDataService ...@@ -41,8 +41,9 @@ public class TDeviceReportDataServiceImpl implements ITDeviceReportDataService
DeviceReportDataVo deviceReportDataVo = new DeviceReportDataVo(); DeviceReportDataVo deviceReportDataVo = new DeviceReportDataVo();
TDeviceInfo tDeviceInfo = tDeviceInfoMapper.selectTDeviceInfoById(deviceId); TDeviceInfo tDeviceInfo = tDeviceInfoMapper.selectTDeviceInfoById(deviceId);
TDeviceReportData tDeviceReportData = tDeviceReportDataMapper.selectTDeviceReportDataByDeviceNum(tDeviceInfo.getIotNo()); TDeviceReportData tDeviceReportData = tDeviceReportDataMapper.selectTDeviceReportDataByDeviceNum(tDeviceInfo.getIotNo());
if(null != tDeviceReportData){
BeanUtils.copyProperties(tDeviceReportData, deviceReportDataVo); BeanUtils.copyProperties(tDeviceReportData, deviceReportDataVo);
}
deviceReportDataVo.setDeviceId(tDeviceInfo.getDeviceId()); deviceReportDataVo.setDeviceId(tDeviceInfo.getDeviceId());
deviceReportDataVo.setDeviceCode(tDeviceInfo.getDeviceCode()); deviceReportDataVo.setDeviceCode(tDeviceInfo.getDeviceCode());
deviceReportDataVo.setDeviceName(tDeviceInfo.getDeviceName()); deviceReportDataVo.setDeviceName(tDeviceInfo.getDeviceName());
......
...@@ -49,7 +49,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" ...@@ -49,7 +49,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
</select> </select>
<select id="countPipeLength" resultType="double"> <select id="countPipeLength" resultType="double">
select sum(pipe_length) from t_pipe select COALESCE(sum(pipe_length), 0) from t_pipe
where is_del = '0' where is_del = '0'
</select> </select>
......
This source diff could not be displayed because it is too large. You can view the blob instead.
...@@ -8,7 +8,8 @@ ...@@ -8,7 +8,8 @@
<link rel="icon" href="<%= BASE_URL %>favicon.ico"> <link rel="icon" href="<%= BASE_URL %>favicon.ico">
<title><%= webpackConfig.name %></title> <title><%= webpackConfig.name %></title>
<!--[if lt IE 11]><script>window.location.href='/html/ie.html';</script><![endif]--> <!--[if lt IE 11]><script>window.location.href='/html/ie.html';</script><![endif]-->
<script src="https://webapi.amap.com/maps?v=2.0&key=eed7ca3167f765467aa377fa78e61ece&plugin=Map3D,AMap.DistrictSearch,AMap.Scale,AMap.OverView,AMap.ToolBar,AMap.MouseTool,AMap.ControlBar,AMap.CircleEditor,AMap.PolyEditor"></script> <script src="https://webapi.amap.com/maps?v=2.0&key=49fcb156d466062435d7d33437099582&plugin=Map3D,AMap.DistrictSearch,AMap.Scale,AMap.OverView,AMap.ToolBar,AMap.MouseTool,AMap.ControlBar,AMap.CircleEditor,AMap.PolyEditor"></script>
<script src="./EasyWasmPlayer.js"></script>
<style> <style>
html, html,
body, body,
......
gassafety-web/src/assets/images/l.png

1.21 KB | W: | H:

gassafety-web/src/assets/images/l.png

4.46 KB | W: | H:

gassafety-web/src/assets/images/l.png
gassafety-web/src/assets/images/l.png
gassafety-web/src/assets/images/l.png
gassafety-web/src/assets/images/l.png
  • 2-up
  • Swipe
  • Onion skin
gassafety-web/src/assets/images/llj.gif

2.86 KB | W: | H:

gassafety-web/src/assets/images/llj.gif

2.05 KB | W: | H:

gassafety-web/src/assets/images/llj.gif
gassafety-web/src/assets/images/llj.gif
gassafety-web/src/assets/images/llj.gif
gassafety-web/src/assets/images/llj.gif
  • 2-up
  • Swipe
  • Onion skin
gassafety-web/src/assets/images/r.png

2.44 KB | W: | H:

gassafety-web/src/assets/images/r.png

4.45 KB | W: | H:

gassafety-web/src/assets/images/r.png
gassafety-web/src/assets/images/r.png
gassafety-web/src/assets/images/r.png
gassafety-web/src/assets/images/r.png
  • 2-up
  • Swipe
  • Onion skin
...@@ -78,19 +78,7 @@ ...@@ -78,19 +78,7 @@
display: inline-flex !important; display: inline-flex !important;
} }
// gis地图里抽屉的搜索样式
.search-input {
.el-input__inner {
height: 28px;
min-height: 28px;
outline: #053b6a;
&:focus {
// outline: #053b6a;
border-color: #053b6a;
}
}
}
// to fix el-date-picker css style // to fix el-date-picker css style
.el-range-separator { .el-range-separator {
box-sizing: content-box; box-sizing: content-box;
......
...@@ -103,61 +103,95 @@ ...@@ -103,61 +103,95 @@
} }
} }
// gis地图中底部table样式 // gis地图中底部table样式
.right-bottom-data-left { .right-bottom-data-left {
.el-table { .el-table {
background-color: rgba(0, 0, 0, 0) !important;
&::before {
height: 0px !important;
}
td {
border-bottom: none !important;
}
.el-table__header-wrapper, .el-table__header-wrapper,
.el-table__fixed-header-wrapper { .el-table__fixed-header-wrapper {
tr {
background-color: #213b5260 !important;
}
th { th {
word-break: break-word; word-break: break-word;
background-color: #fff; background-color: #213b5260 !important;
color: #525252; color: rgba(123, 248, 244, 1);
height: 30px; height: 30px;
font-size: 13px; font-size: 13px;
padding: 0; padding: 0;
&.is-leaf {
border-bottom: none;
}
} }
} }
.el-table__body-wrapper { .el-table__body-wrapper {
.el-table__row:nth-child(2n + 1) { .el-table__row:nth-child(2n + 1) {
background-color: #e6e6e6; // background-color: #e6e6e6;
background-color: #213b5260;
// &:hover { // &:hover {
// td { // td {
// background-color: #f4f4f4; // background-color: #f4f4f4;
// } // }
// } // }
&:hover td {
background-color: #7bf8f430 !important;
}
td { td {
.cell { .cell {
color: #525252; // color: #525252;
color: rgba(123, 248, 244, 1);
} }
} }
} }
.el-table__row:nth-child(2n) { .el-table__row:nth-child(2n) {
background-color: #f4f4f4; // background-color: #213b52;
background-color: #06315760;
// &:hover { // &:hover {
// td { // td {
// background-color: #e6e6e6; // background-color: #e6e6e6;
// } // }
// } // }
&:hover td {
background-color: #7bf8f430 !important;
}
td { td {
.cell { .cell {
color: #053b6a; // color: #053b6a;
color: #fff;
} }
} }
} }
} }
.el-table__body-wrapper { .el-table__body-wrapper {
.el-button [class*="el-icon-"] + span { .el-button [class*="el-icon-"] + span {
margin-left: 1px; // margin-left: 1px;
} }
} }
} }
} }
// gis地图里抽屉的搜索样式
.search-input {
.el-input__inner {
height: 28px;
min-height: 28px;
outline: #053b6a;
background: none !important;
color: #fff;
&:focus {
// outline: #053b6a;
border-color: #fff;
}
}
}
/** 表单布局 **/ /** 表单布局 **/
.form-header { .form-header {
font-size: 15px; font-size: 15px;
...@@ -346,3 +380,10 @@ ...@@ -346,3 +380,10 @@
} }
// background-color: ; // background-color: ;
} }
// gis地图内的bottom列表,如果隐藏在出现会有一个bug,这样可以解决
.el-bottom {
.el-table__body-wrapper {
height: 140px !important;
}
}
/** /**
* 通用css样式布局处理 * 通用css样式布局处理
* Copyright (c) 2019 gassafety * Copyright (c) 2019 gassafety
*/ */
/** 基础通用 **/ /** 基础通用 **/
.pt5 { .pt5 {
padding-top: 5px; padding-top: 5px;
} }
.pr5 { .pr5 {
padding-right: 5px; padding-right: 5px;
} }
.pb5 { .pb5 {
padding-bottom: 5px; padding-bottom: 5px;
} }
.mt5 { .mt5 {
margin-top: 5px; margin-top: 5px;
} }
.mr5 { .mr5 {
margin-right: 5px; margin-right: 5px;
} }
.mb5 { .mb5 {
margin-bottom: 5px; margin-bottom: 5px;
} }
.mb8 { .mb8 {
margin-bottom: 8px; margin-bottom: 8px;
} }
.ml5 { .ml5 {
margin-left: 5px; margin-left: 5px;
} }
.mt10 { .mt10 {
margin-top: 10px; margin-top: 10px;
} }
.mr10 { .mr10 {
margin-right: 10px; margin-right: 10px;
} }
.mb10 { .mb10 {
margin-bottom: 10px; margin-bottom: 10px;
} }
.ml0 { .ml0 {
margin-left: 10px; margin-left: 10px;
} }
.mt20 { .mt20 {
margin-top: 20px; margin-top: 20px;
} }
.mr20 { .mr20 {
margin-right: 20px; margin-right: 20px;
} }
.mb20 { .mb20 {
margin-bottom: 20px; margin-bottom: 20px;
} }
.m20 { .m20 {
margin-left: 20px; margin-left: 20px;
} }
.el-dialog:not(.is-fullscreen){ .el-dialog:not(.is-fullscreen) {
margin-top: 6vh !important; margin-top: 6vh !important;
} }
.el-table { .el-table {
.el-table__header-wrapper, .el-table__fixed-header-wrapper { .el-table__header-wrapper,
th { .el-table__fixed-header-wrapper {
word-break: break-word; th {
background-color: #f8f8f9; word-break: break-word;
color: #515a6e; background-color: #f8f8f9;
height: 40px; color: #515a6e;
font-size: 13px; height: 40px;
} font-size: 13px;
} }
.el-table__body-wrapper { }
.el-button [class*="el-icon-"] + span { .el-table__body-wrapper {
margin-left: 1px; .el-button [class*="el-icon-"] + span {
} margin-left: 1px;
} }
}
} }
/** 表单布局 **/ /** 表单布局 **/
.form-header { .form-header {
font-size:15px; font-size: 15px;
color:#6379bb; color: #6379bb;
border-bottom:1px solid #ddd; border-bottom: 1px solid #ddd;
margin:8px 10px 25px 10px; margin: 8px 10px 25px 10px;
padding-bottom:5px padding-bottom: 5px;
} }
/** 表格布局 **/ /** 表格布局 **/
.pagination-container { .pagination-container {
position: relative; position: relative;
height: 25px; height: 25px;
margin-bottom: 10px; margin-bottom: 10px;
margin-top: 15px; margin-top: 15px;
padding: 10px 20px !important; padding: 10px 20px !important;
} }
/* tree border */ /* tree border */
.tree-border { .tree-border {
margin-top: 5px; margin-top: 5px;
border: 1px solid #e5e6e7; border: 1px solid #e5e6e7;
background: #FFFFFF none; background: #ffffff none;
border-radius:4px; border-radius: 4px;
} }
.pagination-container .el-pagination { .pagination-container .el-pagination {
right: 0; right: 0;
position: absolute; position: absolute;
} }
.el-table .fixed-width .el-button--mini { .el-table .fixed-width .el-button--mini {
padding-left: 0; padding-left: 0;
padding-right: 0; padding-right: 0;
width: inherit; width: inherit;
} }
.el-tree-node__content > .el-checkbox { .el-tree-node__content > .el-checkbox {
margin-right: 8px; margin-right: 8px;
} }
.list-group-striped > .list-group-item { .list-group-striped > .list-group-item {
border-left: 0; border-left: 0;
border-right: 0; border-right: 0;
border-radius: 0; border-radius: 0;
padding-left: 0; padding-left: 0;
padding-right: 0; padding-right: 0;
} }
.list-group { .list-group {
padding-left: 0px; padding-left: 0px;
list-style: none; list-style: none;
} }
.list-group-item { .list-group-item {
border-bottom: 1px solid #e7eaec; border-bottom: 1px solid #e7eaec;
border-top: 1px solid #e7eaec; border-top: 1px solid #e7eaec;
margin-bottom: -1px; margin-bottom: -1px;
padding: 11px 0px; padding: 11px 0px;
font-size: 13px; font-size: 13px;
} }
.pull-right { .pull-right {
float: right !important; float: right !important;
} }
.el-card__header { .el-card__header {
padding: 14px 15px 7px; padding: 14px 15px 7px;
min-height: 40px; min-height: 40px;
} }
.el-card__body { .el-card__body {
padding: 15px 20px 20px 20px; padding: 15px 20px 20px 20px;
} }
.card-box { .card-box {
padding-right: 15px; padding-right: 15px;
padding-left: 15px; padding-left: 15px;
margin-bottom: 10px; margin-bottom: 10px;
} }
/* button color */ /* button color */
.el-button--cyan.is-active, .el-button--cyan.is-active,
.el-button--cyan:active { .el-button--cyan:active {
background: #20B2AA; background: #20b2aa;
border-color: #20B2AA; border-color: #20b2aa;
color: #FFFFFF; color: #ffffff;
} }
.el-button--cyan:focus, .el-button--cyan:focus,
.el-button--cyan:hover { .el-button--cyan:hover {
background: #48D1CC; background: #48d1cc;
border-color: #48D1CC; border-color: #48d1cc;
color: #FFFFFF; color: #ffffff;
} }
.el-button--cyan { .el-button--cyan {
background-color: #20B2AA; background-color: #20b2aa;
border-color: #20B2AA; border-color: #20b2aa;
color: #FFFFFF; color: #ffffff;
} }
/* text color */ /* text color */
.text-navy { .text-navy {
color: #1ab394; color: #1ab394;
} }
.text-primary { .text-primary {
color: inherit; color: inherit;
} }
.text-success { .text-success {
color: #1c84c6; color: #1c84c6;
} }
.text-info { .text-info {
color: #23c6c8; color: #23c6c8;
} }
.text-warning { .text-warning {
color: #f8ac59; color: #f8ac59;
} }
.text-danger { .text-danger {
color: #ed5565; color: #ed5565;
} }
.text-muted { .text-muted {
color: #888888; color: #888888;
} }
/* image */ /* image */
.img-circle { .img-circle {
border-radius: 50%; border-radius: 50%;
} }
.img-lg { .img-lg {
width: 120px; width: 120px;
height: 120px; height: 120px;
} }
.avatar-upload-preview { .avatar-upload-preview {
position: absolute; position: absolute;
top: 50%; top: 50%;
transform: translate(50%, -50%); transform: translate(50%, -50%);
width: 200px; width: 200px;
height: 200px; height: 200px;
border-radius: 50%; border-radius: 50%;
box-shadow: 0 0 4px #ccc; box-shadow: 0 0 4px #ccc;
overflow: hidden; overflow: hidden;
} }
/* 拖拽列样式 */ /* 拖拽列样式 */
.sortable-ghost{ .sortable-ghost {
opacity: .8; opacity: 0.8;
color: #fff!important; color: #fff !important;
background: #42b983!important; background: #42b983 !important;
} }
.top-right-btn { .top-right-btn {
position: relative; position: relative;
float: right; float: right;
} }
...@@ -71,12 +71,13 @@ ...@@ -71,12 +71,13 @@
// 文件类型, 例如['png', 'jpg', 'jpeg'] // 文件类型, 例如['png', 'jpg', 'jpeg']
fileType: { fileType: {
type: Array, type: Array,
default: () => ["doc", "xls", "ppt", "txt", "pdf", "png", "jpg", "jpeg"], // default: () => ["doc", "xls", "ppt", "txt", "pdf", "png", "jpg", "jpeg"],
default: () => ["png", "jpg", "jpeg", "gif"],
}, },
// 是否显示提示 // 是否显示提示
isShowTip: { isShowTip: {
type: Boolean, type: Boolean,
default: false, default: true,
}, },
}, },
data() { data() {
......
...@@ -15,7 +15,7 @@ ...@@ -15,7 +15,7 @@
:show-file-list="true" :show-file-list="true"
:headers="headers" :headers="headers"
class="upload-file-uploader" class="upload-file-uploader"
:class="{ hide: addShow }" :class="{ hide: fileArr.length>0 ||addShow }"
ref="upload" ref="upload"
> >
<!-- 上传按钮 --> <!-- 上传按钮 -->
...@@ -32,7 +32,7 @@ ...@@ -32,7 +32,7 @@
</template> </template>
的文件 的文件
</div> </div>
</el-upload> </el-upload>
<el-image v-show="false" <el-image v-show="false"
id="img" id="img"
...@@ -87,12 +87,13 @@ export default { ...@@ -87,12 +87,13 @@ export default {
// 文件类型, 例如['png', 'jpg', 'jpeg'] // 文件类型, 例如['png', 'jpg', 'jpeg']
fileType: { fileType: {
type: Array, type: Array,
default: () => ["doc", "xls", "ppt", "txt", "pdf", "png", "jpg", "jpeg"], // default: () => ["doc", "xls", "ppt", "txt", "pdf", "png", "jpg", "jpeg"],
default: () => ["png", "jpg", "jpeg", "gif"],
}, },
// 是否显示提示 // 是否显示提示
isShowTip: { isShowTip: {
type: Boolean, type: Boolean,
default: false, default: true,
}, },
}, },
data() { data() {
...@@ -232,6 +233,8 @@ export default { ...@@ -232,6 +233,8 @@ export default {
// this.fileList = this.list; // this.fileList = this.list;
this.addShow = this.fileArr.length > 0 ? true : false; this.addShow = this.fileArr.length > 0 ? true : false;
}, },
}; };
</script> </script>
......
...@@ -7,7 +7,7 @@ ...@@ -7,7 +7,7 @@
<el-row> <el-row>
<el-form ref="form" :model="form" :rules="rules" label-width="135px"> <el-form ref="form" :model="form" :rules="rules" label-width="135px">
<el-row> <el-row>
<el-col :span="11"> <el-col :span="22">
<el-form-item label="所属管道" prop="pipeId"> <el-form-item label="所属管道" prop="pipeId">
<el-select <el-select
v-model="form.pipeId" v-model="form.pipeId"
...@@ -151,12 +151,11 @@ export default { ...@@ -151,12 +151,11 @@ export default {
return { return {
form: { form: {
deviceType: "3", deviceType: "3",
iconUrl:"",
}, },
type: DEVICE_TYPE.FLOWMETER, type: DEVICE_TYPE.FLOWMETER,
dialogVisible: false, dialogVisible: false,
fileList: [], fileList: [],
// 表单校验
rules: {},
map: null, map: null,
obj: null, obj: null,
gaoMap: null, gaoMap: null,
...@@ -255,7 +254,7 @@ export default { ...@@ -255,7 +254,7 @@ export default {
this.gaoMap.view.pipeList(); this.gaoMap.view.pipeList();
}); });
//this.gaoMap.placeSearch.clear(); //this.gaoMap.placeSearch.clear();
this.gaoMap.closeAddMarker(); //this.gaoMap.closeAddMarker();
this.msgSuccess("新增成功"); this.msgSuccess("新增成功");
} else { } else {
// this.msgSuccess("新增失败"); // this.msgSuccess("新增失败");
...@@ -270,6 +269,7 @@ export default { ...@@ -270,6 +269,7 @@ export default {
}, },
listRemove(e) { listRemove(e) {
this.form.url = ""; this.form.url = "";
this.form.iconUrl="";
this.fileArr = []; this.fileArr = [];
}, },
getPipeInfos() { getPipeInfos() {
......
...@@ -3,6 +3,7 @@ ...@@ -3,6 +3,7 @@
:title="myTitle" :title="myTitle"
:visible.sync="dialogVisible" :visible.sync="dialogVisible"
:before-close="handleClose" :before-close="handleClose"
ref="dialog"
> >
<el-row> <el-row>
<el-form <el-form
...@@ -146,7 +147,7 @@ ...@@ -146,7 +147,7 @@
<el-button :loading="okLoading" type="primary" @click="ok" <el-button :loading="okLoading" type="primary" @click="ok"
> </el-button > </el-button
> >
<el-button @click="dialogVisible = false"> </el-button> <el-button @click="handleCloseBtn"> </el-button>
</span> </span>
</el-dialog> </el-dialog>
</template> </template>
...@@ -271,14 +272,19 @@ export default { ...@@ -271,14 +272,19 @@ export default {
if (res.code == 200) { if (res.code == 200) {
this.dialogVisible = false; this.dialogVisible = false;
data.pipeId = data.pipeId ? data.pipeId : res.data; data.pipeId = data.pipeId ? data.pipeId : res.data;
this.lineOkCallBack.call(this.gaodeMap, this.target, data,()=>{ this.lineOkCallBack.call(
const arr= this.gaodeMap.polyLines.map(item=>{ this.gaodeMap,
return item.getExtData().lineData this.target,
}) data,
console.log("arr===================",arr) () => {
this.gaodeMap.view.pipeClassify(arr) const arr = this.gaodeMap.polyLines.map((item) => {
this.gaodeMap.view.pipeList(); return item.getExtData().lineData;
}); });
console.log("arr===================", arr);
this.gaodeMap.view.pipeClassify(arr);
this.gaodeMap.view.pipeList();
}
);
if (!this.editForm.pipeId) { if (!this.editForm.pipeId) {
this.gaodeMap.newLineObj = null; this.gaodeMap.newLineObj = null;
this.gaodeMap.createNewLine(); this.gaodeMap.createNewLine();
...@@ -321,7 +327,9 @@ export default { ...@@ -321,7 +327,9 @@ export default {
options.lineData = { ...this.editForm }; options.lineData = { ...this.editForm };
this.target.setExtData(options); this.target.setExtData(options);
// 把值带出去 // 把值带出去
done(); if (done) {
done();
}
// this.$confirm("确认关闭?") // this.$confirm("确认关闭?")
// .then((_) => { // .then((_) => {
...@@ -329,6 +337,10 @@ export default { ...@@ -329,6 +337,10 @@ export default {
// }) // })
// .catch((_) => {}); // .catch((_) => {});
}, },
handleCloseBtn() {
this.handleClose();
this.dialogVisible = false;
},
// 图片上传成功 // 图片上传成功
fileFinshed(e) { fileFinshed(e) {
this.editForm.iconUrl = e.url; this.editForm.iconUrl = e.url;
......
...@@ -7,7 +7,7 @@ ...@@ -7,7 +7,7 @@
<el-row> <el-row>
<el-form ref="form" :model="form" :rules="rules" label-width="135px"> <el-form ref="form" :model="form" :rules="rules" label-width="135px">
<el-row> <el-row>
<el-col :span="11"> <el-col :span="22">
<el-form-item label="所属管道" prop="pipeId"> <el-form-item label="所属管道" prop="pipeId">
<el-select <el-select
v-model="form.pipeId" v-model="form.pipeId"
...@@ -151,6 +151,8 @@ export default { ...@@ -151,6 +151,8 @@ export default {
return { return {
form: { form: {
deviceType: "4", deviceType: "4",
iconUrl:"",
}, },
type: DEVICE_TYPE.PRESSUREGAGE, type: DEVICE_TYPE.PRESSUREGAGE,
dialogVisible: false, dialogVisible: false,
...@@ -253,7 +255,7 @@ export default { ...@@ -253,7 +255,7 @@ export default {
this.gaoMap.view.pipeList(); this.gaoMap.view.pipeList();
}); });
//this.gaoMap.placeSearch.clear(); //this.gaoMap.placeSearch.clear();
this.gaoMap.closeAddMarker(); //this.gaoMap.closeAddMarker();
this.msgSuccess("新增成功"); this.msgSuccess("新增成功");
} else { } else {
// this.msgSuccess("新增失败"); // this.msgSuccess("新增失败");
...@@ -268,6 +270,7 @@ export default { ...@@ -268,6 +270,7 @@ export default {
}, },
listRemove(e) { listRemove(e) {
this.form.url = ""; this.form.url = "";
this.form.iconUrl="";
this.fileArr = []; this.fileArr = [];
}, },
getPipeInfos() { getPipeInfos() {
......
...@@ -7,7 +7,7 @@ ...@@ -7,7 +7,7 @@
<el-row> <el-row>
<el-form ref="form" :model="form" :rules="rules" label-width="135px"> <el-form ref="form" :model="form" :rules="rules" label-width="135px">
<el-row> <el-row>
<el-col :span="11"> <el-col :span="22">
<el-form-item label="所属管道" prop="pipeId"> <el-form-item label="所属管道" prop="pipeId">
<el-select <el-select
v-model="form.pipeId" v-model="form.pipeId"
...@@ -151,6 +151,8 @@ export default { ...@@ -151,6 +151,8 @@ export default {
return { return {
form: { form: {
deviceType: "1", deviceType: "1",
iconUrl:"",
}, },
type: DEVICE_TYPE.REGEULATORBOX, type: DEVICE_TYPE.REGEULATORBOX,
dialogVisible: false, dialogVisible: false,
...@@ -253,7 +255,7 @@ export default { ...@@ -253,7 +255,7 @@ export default {
this.gaoMap.view.pipeList(); this.gaoMap.view.pipeList();
}); });
//this.gaoMap.placeSearch.clear(); //this.gaoMap.placeSearch.clear();
this.gaoMap.closeAddMarker(); //this.gaoMap.closeAddMarker();
this.msgSuccess("新增成功"); this.msgSuccess("新增成功");
} else { } else {
// this.msgSuccess("新增失败"); // this.msgSuccess("新增失败");
...@@ -265,6 +267,7 @@ export default { ...@@ -265,6 +267,7 @@ export default {
}, },
listRemove(e) { listRemove(e) {
this.form.url = ""; this.form.url = "";
this.form.iconUrl="";
this.fileArr = []; this.fileArr = [];
}, },
handleClose(done) { handleClose(done) {
......
...@@ -7,7 +7,7 @@ ...@@ -7,7 +7,7 @@
<el-row> <el-row>
<el-form ref="form" :model="form" :rules="rules" label-width="135px"> <el-form ref="form" :model="form" :rules="rules" label-width="135px">
<el-row> <el-row>
<el-col :span="11"> <el-col :span="22">
<el-form-item label="所属管道" prop="pipeId"> <el-form-item label="所属管道" prop="pipeId">
<el-select <el-select
v-model="form.pipeId" v-model="form.pipeId"
...@@ -150,6 +150,7 @@ export default { ...@@ -150,6 +150,7 @@ export default {
return { return {
form: { form: {
deviceType: "2", deviceType: "2",
iconUrl:"",
}, },
type: DEVICE_TYPE.VALUEWELL, type: DEVICE_TYPE.VALUEWELL,
dialogVisible: false, dialogVisible: false,
...@@ -251,7 +252,7 @@ export default { ...@@ -251,7 +252,7 @@ export default {
this.gaoMap.view.pipeList(); this.gaoMap.view.pipeList();
}); });
//this.gaoMap.placeSearch.clear(); //this.gaoMap.placeSearch.clear();
this.gaoMap.closeAddMarker(); // this.gaoMap.closeAddMarker();
this.msgSuccess("新增成功"); this.msgSuccess("新增成功");
} else { } else {
// this.msgSuccess("新增失败"); // this.msgSuccess("新增失败");
...@@ -266,6 +267,7 @@ export default { ...@@ -266,6 +267,7 @@ export default {
}, },
listRemove(e) { listRemove(e) {
this.form.url = ""; this.form.url = "";
this.form.iconUrl="";
this.fileArr = []; this.fileArr = [];
}, },
getPipeInfos() { getPipeInfos() {
......
...@@ -134,9 +134,10 @@ export default { ...@@ -134,9 +134,10 @@ export default {
deviceMore() { deviceMore() {
console.log(this.obj.polyline.getExtData().lineData); console.log(this.obj.polyline.getExtData().lineData);
this.obj.polyline.getExtData().class.view.$router.push({ this.obj.polyline.getExtData().class.view.$router.push({
path: "/dataMonitoring/realtimedetail", // path: "/dataMonitoring/realtimedetail",
path: "/device/pipeDetail",
query: { query: {
deviceId: this.obj.polyline.getExtData().lineData.pipeId, pipeId: this.obj.polyline.getExtData().lineData.pipeId,
//这里是传数字 //这里是传数字
deviceType: "0", deviceType: "0",
}, },
......
...@@ -87,10 +87,11 @@ export default { ...@@ -87,10 +87,11 @@ export default {
moment, moment,
deviceMore() { deviceMore() {
this.data.class.view.$router.push({ this.data.class.view.$router.push({
path: "/dataMonitoring/realtimedetail", // path: "/dataMonitoring/realtimedetail",
path: "/device/deviceInfoDetail",
query: { query: {
deviceId: this.data.deviceId, deviceId: this.data.deviceId,
deviceType: this.data.deviceType, // deviceType: this.data.deviceType,
}, },
}); });
}, },
......
...@@ -7,7 +7,6 @@ ...@@ -7,7 +7,6 @@
<template v-for="(item, index) in topMenus"> <template v-for="(item, index) in topMenus">
<!-- <el-menu-item :style="{'--theme': theme}" :index="item.path" :key="index" v-if="index < visibleNumber" --> <!-- <el-menu-item :style="{'--theme': theme}" :index="item.path" :key="index" v-if="index < visibleNumber" -->
<el-menu-item <el-menu-item
:style=""
:index="item.path" :index="item.path"
:key="index" :key="index"
v-if="index < visibleNumber" v-if="index < visibleNumber"
...@@ -22,7 +21,7 @@ ...@@ -22,7 +21,7 @@
<!-- 顶部菜单超出数量折叠 --> <!-- 顶部菜单超出数量折叠 -->
<!-- <div> --> <!-- <div> -->
<el-submenu <el-submenu
class="onlyNavTio" class="onlyNavTio moreLise"
index="more" index="more"
v-if="topMenus.length > visibleNumber" v-if="topMenus.length > visibleNumber"
> >
...@@ -308,4 +307,20 @@ export default { ...@@ -308,4 +307,20 @@ export default {
color: rgb(5 59 106) !important; color: rgb(5 59 106) !important;
font-weight: 900 !important; font-weight: 900 !important;
} }
.moreLise {
// background-image: url("../../assets/logo/item-background.png") !important;
// background-size: 100% 123% !important;
&.is-active {
// background-image: url("../../assets/logo/item-background.png") !important;
background-size: 100% 123% !important;
}
.el-submenu__title {
background-image: none !important;
}
&:hover {
background-image: url("../../assets/logo/item-background.png");
background-size: 100% 123%;
}
// height: 100px;
}
</style> </style>
...@@ -16,6 +16,7 @@ ...@@ -16,6 +16,7 @@
<el-button size="small" @click="$emit('dialogcancelFun')">取消</el-button> <el-button size="small" @click="$emit('dialogcancelFun')">取消</el-button>
</el-row> </el-row>
</el-dialog> </el-dialog>
</template> </template>
<script> <script>
......
...@@ -31,11 +31,11 @@ const permission = { ...@@ -31,11 +31,11 @@ const permission = {
const index = [ const index = [
{ {
path: "", path: "",
meta: { title: "Gis地图", icon: "dashboard" }, meta: { title: "GIS地图", icon: "dashboard" },
children: [ children: [
{ {
path: "enterprise/mapView", path: "enterprise/mapView",
meta: { title: "Gis地图", icon: "dashboard" } meta: { title: "GIS地图", icon: "dashboard" }
} }
] ]
} }
......
...@@ -41,7 +41,7 @@ class gaodeMap { ...@@ -41,7 +41,7 @@ class gaodeMap {
leftListClick = false; leftListClick = false;
//构造函数中设置中央点默认值 //构造函数中设置中央点默认值
constructor(center) { constructor(center, latlng) {
this.markers = []; this.markers = [];
this.center = center ? center : defaultCenter; this.center = center ? center : defaultCenter;
map = new AMap.Map("container", { map = new AMap.Map("container", {
...@@ -53,8 +53,8 @@ class gaodeMap { ...@@ -53,8 +53,8 @@ class gaodeMap {
showLabel: true, showLabel: true,
// labelzIndex: 110, // labelzIndex: 110,
pitch: 8, pitch: 8,
zoom: 9 zoom: 9,
//mapStyle: 'amap://styles/darkblue', // mapStyle: 'amap://styles/darkblue',
// mapStyle: 'amap://styles/3b679a15f448a4740ba2ff7524e1a4ae', // mapStyle: 'amap://styles/3b679a15f448a4740ba2ff7524e1a4ae',
}); });
this.myMap = map; this.myMap = map;
...@@ -77,7 +77,7 @@ class gaodeMap { ...@@ -77,7 +77,7 @@ class gaodeMap {
this.createNewLine(); this.createNewLine();
console.log("map点击事件新建"); console.log("map点击事件新建");
}) })
.catch(() => {}); .catch(() => { });
} }
// console.log("抬起来了"); // console.log("抬起来了");
}); });
...@@ -116,9 +116,10 @@ class gaodeMap { ...@@ -116,9 +116,10 @@ class gaodeMap {
let options = this.myMap.getStatus(); let options = this.myMap.getStatus();
options.scrollWheel = true; options.scrollWheel = true;
this.myMap.setStatus(options); this.myMap.setStatus(options);
console.log("飞行结束")
}); });
this.districtBoundaries(); this.districtBoundaries(latlng);
} }
panTo(lnglat) { panTo(lnglat) {
this.myMap.panTo(lnglat); this.myMap.panTo(lnglat);
...@@ -148,7 +149,7 @@ class gaodeMap { ...@@ -148,7 +149,7 @@ class gaodeMap {
* 设置城市边界 * 设置城市边界
*/ */
districtBoundaries() { districtBoundaries(latlng) {
let that = this; let that = this;
let opts = { let opts = {
subdistrict: 0, subdistrict: 0,
...@@ -156,12 +157,20 @@ class gaodeMap { ...@@ -156,12 +157,20 @@ class gaodeMap {
level: "city" level: "city"
}; };
let district = new AMap.DistrictSearch(opts); let district = new AMap.DistrictSearch(opts);
district.search(that.center, function(status, result) { district.search(that.center, function (status, result) {
if (status == "complete") { if (status == "complete") {
let defaultCenter = []; let defaultCenter = [];
defaultCenter.push(result.districtList[0].center.lng); defaultCenter.push(result.districtList[0].center.lng);
defaultCenter.push(result.districtList[0].center.lat); defaultCenter.push(result.districtList[0].center.lat);
map.setCenter(defaultCenter); if (latlng) {
map.setCenter(latlng);
} else {
map.setCenter(defaultCenter);
}
console.log("defaultCenter", defaultCenter)
let bounds = result.districtList[0].boundaries; let bounds = result.districtList[0].boundaries;
for (let i = 0; i < bounds.length; i += 1) { for (let i = 0; i < bounds.length; i += 1) {
new AMap.Polyline({ new AMap.Polyline({
...@@ -190,12 +199,12 @@ class gaodeMap { ...@@ -190,12 +199,12 @@ class gaodeMap {
offset: new AMap.Pixel(24, -38), offset: new AMap.Pixel(24, -38),
anchor: "left-top" anchor: "left-top"
}); });
infoWindow.on("mouseover", function() { infoWindow.on("mouseover", function () {
let options = map.getStatus(); let options = map.getStatus();
options.scrollWheel = false; options.scrollWheel = false;
map.setStatus(options); map.setStatus(options);
}); });
infoWindow.on("mouseout", function() { infoWindow.on("mouseout", function () {
let options = map.getStatus(); let options = map.getStatus();
options.scrollWheel = true; options.scrollWheel = true;
map.setStatus(options); map.setStatus(options);
...@@ -225,7 +234,7 @@ class gaodeMap { ...@@ -225,7 +234,7 @@ class gaodeMap {
editWindow.obj = marker; editWindow.obj = marker;
editWindow.gaoMap = that; editWindow.gaoMap = that;
editWindow.map = map; editWindow.map = map;
marker.on("click", function(e) { marker.on("click", function (e) {
if ("edit" == that.mapOperateType) { if ("edit" == that.mapOperateType) {
editWindow.form = e.target.getExtData(); editWindow.form = e.target.getExtData();
editWindow.show(); editWindow.show();
...@@ -239,10 +248,10 @@ class gaodeMap { ...@@ -239,10 +248,10 @@ class gaodeMap {
vue vue
.$confirm( .$confirm(
'是否删除名称为"' + '是否删除名称为"' +
e.target.getExtData().deviceName + e.target.getExtData().deviceName +
'"的' + '"的' +
diviceType[markerType] + diviceType[markerType] +
" ?", " ?",
"提示", "提示",
{ {
type: "warning" type: "warning"
...@@ -287,19 +296,19 @@ class gaodeMap { ...@@ -287,19 +296,19 @@ class gaodeMap {
infoWindow.open(map, e.target.getPosition()); infoWindow.open(map, e.target.getPosition());
}*/ }*/
}); });
marker.on("dragend", function(e) { marker.on("dragend", function (e) {
editWindow.form.longitude = e.lnglat.lng; editWindow.form.longitude = e.lnglat.lng;
editWindow.form.latitude = e.lnglat.lat; editWindow.form.latitude = e.lnglat.lat;
}); });
} else { } else {
marker.on("mouseover", function() { marker.on("mouseover", function () {
marker.setLabel({ marker.setLabel({
offset: new AMap.Pixel(0, -10), //设置文本标注偏移量 offset: new AMap.Pixel(0, -10), //设置文本标注偏移量
content: "<div class='info'>" + data.deviceName + "</div>", //设置文本标注内容 content: "<div class='info'>" + data.deviceName + "</div>", //设置文本标注内容
direction: "top" //设置文本标注方位 direction: "top" //设置文本标注方位
}); });
}); });
marker.on("mouseout", function() { marker.on("mouseout", function () {
marker.setLabel({ marker.setLabel({
content: null content: null
}); });
...@@ -943,14 +952,14 @@ class gaodeMap { ...@@ -943,14 +952,14 @@ class gaodeMap {
this.overlays = []; this.overlays = [];
let that = this; let that = this;
this.markerOverlays = []; this.markerOverlays = [];
this.mouseTool.on("draw", function(e) { this.mouseTool.on("draw", function (e) {
if (e.obj.getExtData().type != "newLine") { if (e.obj.getExtData().type != "newLine") {
map.remove(that.markerOverlays); map.remove(that.markerOverlays);
const device = that.createInfowindow("新增"); const device = that.createInfowindow("新增");
device.map = map; device.map = map;
device.obj = e.obj; device.obj = e.obj;
device.gaoMap = that; device.gaoMap = that;
e.obj.on("click", function(aa) { e.obj.on("click", function (aa) {
let postion = aa.target._position; let postion = aa.target._position;
//兼容拖拽后单击事件,拖拽后点击事件返回位置为数组 //兼容拖拽后单击事件,拖拽后点击事件返回位置为数组
if (postion instanceof Array) { if (postion instanceof Array) {
...@@ -962,11 +971,11 @@ class gaodeMap { ...@@ -962,11 +971,11 @@ class gaodeMap {
} }
device.show(); device.show();
}); });
e.obj.on("mouseover", function() { e.obj.on("mouseover", function () {
that.mouseTool.close(); that.mouseTool.close();
}); });
e.obj.on("mouseout", function() { e.obj.on("mouseout", function () {
that.draw(that.deviceType); that.draw(that.deviceType);
}); });
...@@ -1077,7 +1086,7 @@ class gaodeMap { ...@@ -1077,7 +1086,7 @@ class gaodeMap {
"AMap.MapType", "AMap.MapType",
"AMap.Geolocation" "AMap.Geolocation"
], ],
function() { function () {
// 在图面添加工具条控件,工具条控件集成了缩放、平移、定位等功能按钮在内的组合控件 // 在图面添加工具条控件,工具条控件集成了缩放、平移、定位等功能按钮在内的组合控件
//map.addControl(new AMap.ToolBar()); //map.addControl(new AMap.ToolBar());
...@@ -1100,7 +1109,7 @@ class gaodeMap { ...@@ -1100,7 +1109,7 @@ class gaodeMap {
searchTips(inputId) { searchTips(inputId) {
let that = this; let that = this;
AMap.plugin(["AMap.AutoComplete", "AMap.PlaceSearch"], function() { AMap.plugin(["AMap.AutoComplete", "AMap.PlaceSearch"], function () {
//输入提示 //输入提示
// var autoOptions = { // var autoOptions = {
// input: inputId // input: inputId
...@@ -1141,7 +1150,7 @@ class gaodeMap { ...@@ -1141,7 +1150,7 @@ class gaodeMap {
}); });
let infoWindow = new AMap.InfoWindow({ let infoWindow = new AMap.InfoWindow({
isCustom: true, isCustom: true,
content: `<span style='border:1px solid #80d8ff;background:#fff'>${pipeName}</span>`, content: `<div style='max-width:150px;border:1px solid #80d8ff;background:#fff'>${pipeName}</div>`,
anchor: "left-top", anchor: "left-top",
offset: new AMap.Pixel(20, -20) offset: new AMap.Pixel(20, -20)
}); });
...@@ -1158,9 +1167,11 @@ class gaodeMap { ...@@ -1158,9 +1167,11 @@ class gaodeMap {
infoWindow.close(); infoWindow.close();
}); });
map.add(polyline); map.add(polyline);
const path = eval(coordinates)[0]; const path1 = eval(coordinates)[0];
const path2 = eval(coordinates)[1];
// map.setFitView(); // map.setFitView();
map.setCenter([+path[0], +path[1]], false); const path3 = [(Number(path1[0])+Number(path2[0]) )/2 ,(Number(path1[1])+Number(path2[1]) )/2];
map.setCenter(path3, false);
// const lntlat = eval(coordinates)[0]; // const lntlat = eval(coordinates)[0];
// map.panTo(lntlat) // map.panTo(lntlat)
......
...@@ -69,9 +69,9 @@ class gaodeMap { ...@@ -69,9 +69,9 @@ class gaodeMap {
showLabel: true, showLabel: true,
// labelzIndex: 110, // labelzIndex: 110,
pitch: 8, pitch: 8,
zoom: 9 zoom: 9,
//mapStyle: 'amap://styles/darkblue', //mapStyle: 'amap://styles/darkblue',
// mapStyle: 'amap://styles/3b679a15f448a4740ba2ff7524e1a4ae', mapStyle: 'amap://styles/1c84d2203793b0f622df2cda53db1afd',
}); });
this.myMap = map; this.myMap = map;
this.myMap.on("mousedown", e => { this.myMap.on("mousedown", e => {
...@@ -117,7 +117,7 @@ class gaodeMap { ...@@ -117,7 +117,7 @@ class gaodeMap {
if (this.handleInfoWindowOpenFunc) { if (this.handleInfoWindowOpenFunc) {
this.handleInfoWindowOpenFunc(); this.handleInfoWindowOpenFunc();
this.handleInfoWindowOpenFunc = null; this.handleInfoWindowOpenFunc = null;
this.leftListClick=false; this.leftListClick = false;
} }
// 刚进入页面的时候只调用一次,让左侧的抽屉在地图移动完之后显示 // 刚进入页面的时候只调用一次,让左侧的抽屉在地图移动完之后显示
...@@ -216,6 +216,8 @@ class gaodeMap { ...@@ -216,6 +216,8 @@ class gaodeMap {
options.scrollWheel = true; options.scrollWheel = true;
map.setStatus(options); map.setStatus(options);
}); });
// this.infoWindowMove(infoWindow);
let marker = new AMap.Marker({ let marker = new AMap.Marker({
position: [data.longitude, data.latitude], position: [data.longitude, data.latitude],
map: map, map: map,
...@@ -953,7 +955,7 @@ class gaodeMap { ...@@ -953,7 +955,7 @@ class gaodeMap {
boxCollision(infowindowDom) { boxCollision(infowindowDom) {
// gis地图页面的bottomdata组件 // gis地图页面的bottomdata组件
const { const {
RightBototmData: { $el: pageDom } Bottom: { $el: pageDom }
} = this.view.$refs; } = this.view.$refs;
let { let {
offsetTop: ay, offsetTop: ay,
...@@ -1011,6 +1013,29 @@ class gaodeMap { ...@@ -1011,6 +1013,29 @@ class gaodeMap {
this.markerPassedPolylineInfoWindow && this.markerPassedPolylineInfoWindow &&
this.markerPassedPolylineInfoWindow.close(); this.markerPassedPolylineInfoWindow.close();
} }
// infoWindow的拖拽
infoWindowMove(infoWindow) {
let disX, disY, dom;
infoWindow.on("mousedown", e => {
dom = e.target.dom;
disX = e.originEvent.clientX - dom.offsetLeft;
disY = e.originEvent.clientY - dom.offsetTop;
console.log(disX,disY);
window.addEventListener("mousemove", windowMove);
});
const windowMove = e => {
const mouseX = e.clientX;
const mouseY = e.clientY
const domTop = mouseY -disY;
const domLeft = mouseX- disX;
// console.log(domTop,domLeft)
dom.style.top = domTop + "px";
dom.style.left = domLeft + "px";
};
infoWindow.on("mouseup", () => {
window.removeEventListener("mousemove", windowMove);
});
}
// 关闭转化到vue的dom // 关闭转化到vue的dom
removeCloneDom() { removeCloneDom() {
// 线 // 线
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
<div class="app-container detail" style="background-color: rgb(238, 241, 245);"> <div class="app-container detail" style="background-color: rgb(238, 241, 245);">
<div style="padding-top: 10px;background: #fff;height: 100%;"> <div style="padding-top: 10px;background: #fff;height: 100%;">
<el-row> <el-row>
<el-col :span="24" style="padding-left: 15px;"> <el-col :span="24" style="padding-left: 15px;margin-bottom: -10px;">
<div style="height: 45px;" @click="$router.go(-1)"> <div style="height: 45px;" @click="$router.go(-1)">
<el-button size="medium" type="text" style="font-size: 18px; color: rgb(7, 63, 112);float: left;">返回 <el-button size="medium" type="text" style="font-size: 18px; color: rgb(7, 63, 112);float: left;">返回
</el-button> </el-button>
...@@ -11,8 +11,15 @@ ...@@ -11,8 +11,15 @@
</el-col> </el-col>
</el-row> </el-row>
<el-row style="width: 100%;height: 40px;">
<el-row style="padding-left: 50px;"> <el-col :span="24">
<div style="">
<ul><li style="list-style: none;font-weight: 900;font-size: 20px;color: #053b6a;">报警信息管理详情</li></ul>
</div>
</el-col>
</el-row>
<el-divider></el-divider>
<el-row style="padding-left: 50px;margin-top: -10px;margin-bottom: -10px;">
<el-col :span="6"> <el-col :span="6">
<el-form ref="form" v-model="form" style="width: 100%;"> <el-form ref="form" v-model="form" style="width: 100%;">
<el-form-item label="设备类型:" prop="deviceType"> <el-form-item label="设备类型:" prop="deviceType">
...@@ -64,7 +71,13 @@ ...@@ -64,7 +71,13 @@
</el-col> </el-col>
</el-row> </el-row>
<el-divider></el-divider> <el-divider></el-divider>
<el-row style="width: 100%;height: 45px;margin-top: -15px;">
<el-col :span="24" style="margin-bottom: -10px;">
<div style="color: #31EAEA;">
<ul><li>设备详情</li></ul>
</div>
</el-col>
</el-row>
<el-row> <el-row>
<el-col :span="16" style="padding: 10px;"> <el-col :span="16" style="padding: 10px;">
<div style="width: 100%;float: left;height: 100%;" v-if="form.deviceType != '管道'"> <div style="width: 100%;float: left;height: 100%;" v-if="form.deviceType != '管道'">
...@@ -268,8 +281,8 @@ export default { ...@@ -268,8 +281,8 @@ export default {
this.getDetail(); this.getDetail();
}, },
mounted() { mounted() {
let gaoMap = new gaodeMap("石家庄"); // let gaoMap = new gaodeMap("石家庄");
this.gaoMap = gaoMap; // this.gaoMap = gaoMap;
}, },
methods: { methods: {
initData(getData1, getData2, getData3) { initData(getData1, getData2, getData3) {
...@@ -650,6 +663,13 @@ export default { ...@@ -650,6 +663,13 @@ export default {
if(this.form.pipeList != null){ if(this.form.pipeList != null){
let pipe = this.form.pipeList[0]; let pipe = this.form.pipeList[0];
const {coordinates} = this.form.pipeList[0];
const path1 = eval(coordinates)[0];
const path2 = eval(coordinates)[1];
const path3 = [(Number(path1[0]) + Number(path2[0])) / 2, (Number(path1[1]) + Number(path2[1])) / 2];
let gaoMap = new gaodeMap("石家庄",path3);
this.gaoMap=gaoMap;
console.log("pipe", pipe); console.log("pipe", pipe);
this.dataListdetail.push(pipe); this.dataListdetail.push(pipe);
this.gaoMap.onlyLine(pipe); this.gaoMap.onlyLine(pipe);
...@@ -659,8 +679,11 @@ export default { ...@@ -659,8 +679,11 @@ export default {
let device = this.form.deviceList[0]; let device = this.form.deviceList[0];
console.log("device", device); console.log("device", device);
this.dataListdetail.push(device); this.dataListdetail.push(device);
this.gaoMap.resetMapCenter([device.longitude, device.latitude]); let gaoMap = new gaodeMap("石家庄",[device.longitude, device.latitude]);
this.gaoMap = gaoMap;
this.gaoMap.addMarker(DEVICE_TYPE.WORKORDER, device); this.gaoMap.addMarker(DEVICE_TYPE.WORKORDER, device);
// this.gaoMap.resetMapCenter([device.longitude, device.latitude]);
} }
var getData1 = []; var getData1 = [];
......
<template> <template>
<div class="app-container"> <div class="app-container">
<el-row v-if="$route.query.back">
<el-col :span="24" style="padding-left: 15px">
<div style="height: 45px" @click="$router.go(-1)">
<el-button
size="medium"
type="text"
style="font-size: 18px; color: rgb(7, 63, 112); float: left"
>返回
</el-button>
<div style="float: left; margin-top: 8px; margin-left: 5px">
<img
src="../../../assets/logo/fanhui.png"
style="width: 25px"
alt=""
/>
</div>
</div>
</el-col>
</el-row>
<el-form <el-form
:model="queryParams" :model="queryParams"
ref="queryForm" ref="queryForm"
...@@ -71,30 +90,80 @@ ...@@ -71,30 +90,80 @@
</el-form-item> </el-form-item>
</el-form> </el-form>
<el-table v-loading="loading" :data="deviceAlarmList" @selection-change="handleSelectionChange" > <el-table
<el-table-column label="设备名称" align="center" prop="deviceName" width="280px"/> v-loading="loading"
<el-table-column label="设备编号" align="center" prop="deviceCode" width="240px"/> :data="deviceAlarmList"
<el-table-column label="设备类型" align="center" prop="deviceType"/> @selection-change="handleSelectionChange"
>
<el-table-column
label="设备名称"
align="center"
prop="deviceName"
width="280px"
/>
<el-table-column
label="设备编号"
align="center"
prop="deviceCode"
width="240px"
/>
<el-table-column label="设备类型" align="center" prop="deviceType" />
<el-table-column label="报警类型" align="center" prop="alarmType" /> <el-table-column label="报警类型" align="center" prop="alarmType" />
<el-table-column label="报警值" align="center" prop="alarmValue" width="150px"/> <el-table-column
<el-table-column label="报警开始时间" align="center" prop="startTime" width="220px"/> label="报警值"
<el-table-column label="报警结束时间" align="center" prop="endTime" width="220px"> align="center"
prop="alarmValue"
width="150px"
/>
<el-table-column
label="报警开始时间"
align="center"
prop="startTime"
width="220px"
/>
<el-table-column
label="报警结束时间"
align="center"
prop="endTime"
width="220px"
>
<template slot-scope="scope"> <template slot-scope="scope">
<span v-if="scope.row.endTime == null || scope.row.endTime == ''">-</span> <span v-if="scope.row.endTime == null || scope.row.endTime == ''"
<span v-if="scope.row.endTime != null && scope.row.endTime != ''">{{scope.row.endTime}}</span> >-</span
>
<span v-if="scope.row.endTime != null && scope.row.endTime != ''">{{
scope.row.endTime
}}</span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="处理状态" align="center" prop="dealStatus" width="150px"> <el-table-column
label="处理状态"
align="center"
prop="dealStatus"
width="150px"
>
<template slot-scope="scope"> <template slot-scope="scope">
<span v-if="scope.row.orderId == null || scope.row.orderId == ''">未生成工单</span> <span v-if="scope.row.orderId == null || scope.row.orderId == ''"
<span v-if="(scope.row.dealStatus == null || scope.row.dealStatus == '') && >未生成工单</span
scope.row.orderId != null && scope.row.orderId != ''">暂未处理</span> >
<span
v-if="
(scope.row.dealStatus == null || scope.row.dealStatus == '') &&
scope.row.orderId != null &&
scope.row.orderId != ''
"
>暂未处理</span
>
<span v-if="scope.row.dealStatus == 1">不需处理</span> <span v-if="scope.row.dealStatus == 1">不需处理</span>
<span v-if="scope.row.dealStatus == 2">已处理完成</span> <span v-if="scope.row.dealStatus == 2">已处理完成</span>
<span v-if="scope.row.dealStatus == 3">未处理完成</span> <span v-if="scope.row.dealStatus == 3">未处理完成</span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="操作" align="center" class-name="small-padding fixed-width"> <el-table-column
label="操作"
align="center"
class-name="small-padding fixed-width"
>
<template slot-scope="scope"> <template slot-scope="scope">
<el-button <el-button
size="normal" size="normal"
...@@ -102,7 +171,8 @@ ...@@ -102,7 +171,8 @@
icon="el-icon-edit" icon="el-icon-edit"
@click="handleIssue(scope.row)" @click="handleIssue(scope.row)"
v-hasPermi="['workOrder:basicsInfo:add']" v-hasPermi="['workOrder:basicsInfo:add']"
v-if="scope.row.orderId == '' || scope.row.orderId == null"> v-if="scope.row.orderId == '' || scope.row.orderId == null"
>
生成工单 生成工单
</el-button> </el-button>
<el-button <el-button
...@@ -110,7 +180,8 @@ ...@@ -110,7 +180,8 @@
type="text" type="text"
icon="el-icon-edit" icon="el-icon-edit"
@click="showDetail(scope.row)" @click="showDetail(scope.row)"
v-hasPermi="['dataMonitoring:deviceAlarm:query']"> v-hasPermi="['dataMonitoring:deviceAlarm:query']"
>
详情 详情
</el-button> </el-button>
</template> </template>
...@@ -118,11 +189,12 @@ ...@@ -118,11 +189,12 @@
</el-table> </el-table>
<pagination <pagination
v-show="total>0" v-show="total > 0"
:total="total" :total="total"
:page.sync="queryParams.pageNum" :page.sync="queryParams.pageNum"
:limit.sync="queryParams.pageSize" :limit.sync="queryParams.pageSize"
@pagination="getList" /> @pagination="getList"
/>
<!-- 添加工单信息对话框 --> <!-- 添加工单信息对话框 -->
<el-dialog :title="title" :visible.sync="open" width="800px" append-to-body> <el-dialog :title="title" :visible.sync="open" width="800px" append-to-body>
...@@ -137,10 +209,22 @@ ...@@ -137,10 +209,22 @@
<font>{{ form.alarmValue }}</font> <font>{{ form.alarmValue }}</font>
</el-form-item> </el-form-item>
<el-form-item label="工单名称" prop="orderName"> <el-form-item label="工单名称" prop="orderName">
<el-input v-model="form.orderName" placeholder="请输入工单名称" style="width: 590px" /> <el-input
v-model="form.orderName"
placeholder="请输入工单名称"
style="width: 590px"
/>
</el-form-item> </el-form-item>
<el-form-item label="指定执行人员" prop="appointInspector"> <el-form-item label="指定执行人员" prop="appointInspector">
<el-select v-model="form.appointInspector" placeholder="请选择执行人员" clearable filterable size="small" @change="setUserId" style="width: 590px"> <el-select
v-model="form.appointInspector"
placeholder="请选择执行人员"
clearable
filterable
size="small"
@change="setUserId"
style="width: 590px"
>
<el-option <el-option
v-for="item in inspector" v-for="item in inspector"
:key="item.userId" :key="item.userId"
...@@ -150,7 +234,12 @@ ...@@ -150,7 +234,12 @@
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="工单描述" prop="remarks"> <el-form-item label="工单描述" prop="remarks">
<el-input type="textarea" v-model="form.remarks" placeholder="请输入工单描述" style="width: 590px" /> <el-input
type="textarea"
v-model="form.remarks"
placeholder="请输入工单描述"
style="width: 590px"
/>
</el-form-item> </el-form-item>
</el-form> </el-form>
<div slot="footer" class="dialog-footer"> <div slot="footer" class="dialog-footer">
...@@ -162,9 +251,12 @@ ...@@ -162,9 +251,12 @@
</template> </template>
<script> <script>
import { listDeviceAlarm, getDeviceAlarm } from "@/api/dataMonitoring/deviceAlarm"; import {
import { addBasicsInfo } from "@/api/workOrder/basicsInfo"; listDeviceAlarm,
import { inspectorList } from "@/api/system/user"; getDeviceAlarm,
} from "@/api/dataMonitoring/deviceAlarm";
import { addBasicsInfo } from "@/api/workOrder/basicsInfo";
import { inspectorList } from "@/api/system/user";
export default { export default {
name: "DeviceAlarm", name: "DeviceAlarm",
...@@ -172,7 +264,7 @@ export default { ...@@ -172,7 +264,7 @@ export default {
data() { data() {
return { return {
// 判断是从哪里来的,如果是地图里来的,则可以返回 // 判断是从哪里来的,如果是地图里来的,则可以返回
fromGisMap:false, fromGisMap: false,
// 遮罩层 // 遮罩层
loading: true, loading: true,
// 导出遮罩层 // 导出遮罩层
...@@ -241,11 +333,11 @@ export default { ...@@ -241,11 +333,11 @@ export default {
beforeRouteEnter: (to, from, next) => { beforeRouteEnter: (to, from, next) => {
next((vm) => { next((vm) => {
// 如果是从地图里来的 // 如果是从地图里来的
if(from.path=="/enterprise/mapView"){ if (from.path == "/enterprise/mapView") {
// console.log(123) // console.log(123)
vm.fromGisMap=true; vm.fromGisMap = true;
}else{ } else {
vm.fromGisMap=false; vm.fromGisMap = false;
} }
}); });
}, },
...@@ -302,9 +394,9 @@ export default { ...@@ -302,9 +394,9 @@ export default {
}, },
// 多选框选中数据 // 多选框选中数据
handleSelectionChange(selection) { handleSelectionChange(selection) {
this.ids = selection.map(item => item.alarmId) this.ids = selection.map((item) => item.alarmId);
this.single = selection.length !== 1 this.single = selection.length !== 1;
this.multiple = !selection.length this.multiple = !selection.length;
}, },
/** 下发按钮操作 */ /** 下发按钮操作 */
handleIssue(row) { handleIssue(row) {
...@@ -334,12 +426,12 @@ export default { ...@@ -334,12 +426,12 @@ export default {
/** 详细信息跳转 */ /** 详细信息跳转 */
showDetail(row) { showDetail(row) {
this.$router.push({ this.$router.push({
path: '/dataMonitoring/alarmdetail', path: "/dataMonitoring/alarmdetail",
query: { query: {
alarmId: row.alarmId, alarmId: row.alarmId,
deviceType:row.deviceType deviceType: row.deviceType,
} },
}) //带参跳转 }); //带参跳转
}, },
}, },
}; };
......
...@@ -3,7 +3,7 @@ ...@@ -3,7 +3,7 @@
<div style="padding-top: 10px;background: #fff;height: 100%;"> <div style="padding-top: 10px;background: #fff;height: 100%;">
<el-row> <el-row>
<el-col :span="24" style="padding-left: 15px;"> <el-col :span="24" style="padding-left: 15px;margin-bottom: -10px;">
<div style="height: 45px;" @click="$router.go(-1)"> <div style="height: 45px;" @click="$router.go(-1)">
<el-button size="medium" type="text" style="font-size: 18px; color: rgb(7, 63, 112);float: left;">返回 <el-button size="medium" type="text" style="font-size: 18px; color: rgb(7, 63, 112);float: left;">返回
</el-button> </el-button>
...@@ -11,7 +11,13 @@ ...@@ -11,7 +11,13 @@
</div> </div>
</el-col> </el-col>
</el-row> </el-row>
<el-row style="width: 100%;height: 40px;">
<el-col :span="24" style="margin-bottom: -10px;">
<div style="">
<ul><li style="list-style: none;font-weight: 900;font-size: 20px;color: #053b6a;">实时数据详情</li></ul>
</div>
</el-col>
</el-row>
<el-row> <el-row>
<el-col :span="16" style="padding: 10px;"> <el-col :span="16" style="padding: 10px;">
<div style="height: 100%;"> <div style="height: 100%;">
...@@ -209,8 +215,8 @@ ...@@ -209,8 +215,8 @@
// this.getData(); // this.getData();
}, },
mounted() { mounted() {
let gaoMap = new gaodeMap("石家庄"); // let gaoMap = new gaodeMap("石家庄");
this.gaoMap = gaoMap; // this.gaoMap = gaoMap;
this.getData(); this.getData();
}, },
methods: { methods: {
...@@ -579,9 +585,11 @@ ...@@ -579,9 +585,11 @@
this.dataListdetail3.push(obj3); this.dataListdetail3.push(obj3);
this.form = response.data; this.form = response.data;
this.active = parseInt(response.data.orderStatus) + 1; this.active = parseInt(response.data.orderStatus) + 1;
this.gaoMap.resetMapCenter([this.form.longitude, this.form.latitude]); let gaoMap = new gaodeMap("石家庄",[this.form.longitude, this.form.latitude]);
this.gaoMap = gaoMap;
this.gaoMap.addMarker(DEVICE_TYPE.WORKORDER, this.form) this.gaoMap.addMarker(DEVICE_TYPE.WORKORDER, this.form)
console.log("this.form.longitude",this.form.longitude) // this.gaoMap.resetMapCenter([this.form.longitude, this.form.latitude]);
console.log("this.form.longitude",this.form.longitude)
console.log("this.form", this.form) console.log("this.form", this.form)
// if (this.form.length > 0) { // if (this.form.length > 0) {
......
...@@ -139,7 +139,7 @@ ...@@ -139,7 +139,7 @@
/> />
<!-- 添加或修改设备信息对话框 --> <!-- 添加或修改设备信息对话框 -->
<el-dialog :title="title" :visible.sync="open" append-to-body @close="cancel"> <el-dialog destroy-on-close :title="title" :visible.sync="open" append-to-body @close="cancel">
<el-form ref="form" :model="form" :rules="rules" label-width="135px"> <el-form ref="form" :model="form" :rules="rules" label-width="135px">
<el-col :span="11"> <el-col :span="11">
<el-form-item label="所属管道" prop="pipeId"> <el-form-item label="所属管道" prop="pipeId">
......
...@@ -2,27 +2,38 @@ ...@@ -2,27 +2,38 @@
<div class="app-container detail" style="background-color: rgb(238, 241, 245);"> <div class="app-container detail" style="background-color: rgb(238, 241, 245);">
<div style="padding-top: 10px;background: #fff;height: 100%;"> <div style="padding-top: 10px;background: #fff;height: 100%;">
<el-row> <el-row>
<el-col :span="24" style="padding-left: 15px;"> <el-col :span="24" style="padding-left: 15px;margin-bottom: -10px;">
<div style="height: 45px;" @click="$router.go(-1)"> <div style="height: 45px;" @click="$router.go(-1)">
<el-button size="medium" type="text" style="font-size: 18px; color: rgb(7, 63, 112);float: left;">返回 <el-button size="medium" type="text" style="font-size: 18px; color: rgb(7, 63, 112);float: left;">返回
</el-button> </el-button>
<div style="float: left;margin-top: 8px;margin-left: 5px;"><img src="../../../assets/logo/fanhui.png" style="width: 25px;" alt=""></div> <div style="float: left;margin-top: 8px;margin-left: 5px;"><img src="../../../assets/logo/fanhui.png"
style="width: 25px;" alt=""></div>
</div>
</el-col>
</el-row>
<el-row style="width: 100%;height: 40px;">
<el-col :span="24">
<div style="">
<ul>
<li style="list-style: none;font-weight: 900;font-size: 20px;color: #053b6a;">设备信息管理详情</li>
</ul>
</div> </div>
</el-col> </el-col>
</el-row> </el-row>
<el-divider></el-divider> <el-divider></el-divider>
<el-row style="width: 100%;"> <el-row style="width: 100%;margin-top: -15px;margin-bottom: -5px;">
<el-col :span="24"> <el-col :span="24">
<div style="color: #31EAEA;height: 25px;"> <div style="color: #31EAEA;height: 25px;">
<ul><li>详细信息</li></ul> <ul>
<li>详细信息</li>
</ul>
</div> </div>
</el-col> </el-col>
</el-row> </el-row>
<el-row style="width: 100%;padding: 10px;padding-left: 40px;"> <el-row style="width: 100%;padding: 10px;">
<el-col :span="5"> <el-col :span="5">
<el-form ref="form" v-model="form" :rules="rules" label-width="100px" style="width: 100%;"> <el-form ref="form" v-model="form" label-width="100px" style="width: 100%;">
<el-form-item label="设备名称:" prop="deviceName"> <el-form-item label="设备名称:" prop="deviceName">
<font>{{form.deviceName}}</font> <font>{{form.deviceName}}</font>
</el-form-item> </el-form-item>
...@@ -38,6 +49,9 @@ ...@@ -38,6 +49,9 @@
<el-form-item label="设备型号:" prop="deviceModel"> <el-form-item label="设备型号:" prop="deviceModel">
<font>{{form.deviceModel}}</font> <font>{{form.deviceModel}}</font>
</el-form-item> </el-form-item>
<el-form-item label="所属管道:" prop="pipeName">
<font>{{form.pipeName}}</font>
</el-form-item>
<el-form-item label="物联网编号:" prop="iotNo"> <el-form-item label="物联网编号:" prop="iotNo">
<font>{{form.iotNo}}</font> <font>{{form.iotNo}}</font>
</el-form-item> </el-form-item>
...@@ -47,16 +61,13 @@ ...@@ -47,16 +61,13 @@
<el-form-item label="联系电话:" prop="phone"> <el-form-item label="联系电话:" prop="phone">
<font>{{form.phone}}</font> <font>{{form.phone}}</font>
</el-form-item> </el-form-item>
<el-form-item label="备注信息:" prop="remarks"> <el-form-item label="备注信息:" prop="remarks" style="width: 170%;">
<font>{{form.remarks}}</font> <font>{{form.remarks}}</font>
</el-form-item> </el-form-item>
</el-form> </el-form>
</el-col> </el-col>
<el-col :span="6"> <el-col :span="6">
<el-form ref="form" v-model="form" :rules="rules" label-width="100px" style="width: 100%;"> <el-form ref="form" v-model="form" label-width="100px" style="width: 100%;">
<el-form-item label="所属管道:" prop="pipeName">
<font>{{form.pipeName}}</font>
</el-form-item>
<el-form-item label="所在地址:" prop="deviceAddr"> <el-form-item label="所在地址:" prop="deviceAddr">
<font>{{form.deviceAddr}}</font> <font>{{form.deviceAddr}}</font>
</el-form-item> </el-form-item>
...@@ -72,45 +83,33 @@ ...@@ -72,45 +83,33 @@
<el-form-item label="最后巡检时间:" prop="inspectionTime"> <el-form-item label="最后巡检时间:" prop="inspectionTime">
<font>{{form.inspectionTime}}</font> <font>{{form.inspectionTime}}</font>
</el-form-item> </el-form-item>
<el-form-item label="设备图片:" prop="inspectionTime"> <el-form-item label="设备图片:" prop="iconUrl">
<el-image :src="form.iconUrl" :preview-src-list="[form.iconUrl]" style="width: 90px;"></el-image> <div style="width: 20%;">
<el-image :src="form.iconUrl" :preview-src-list="[form.iconUrl]" style="width: auto;height: auto;"></el-image>
</div>
</el-form-item> </el-form-item>
</el-form> </el-form>
</el-col> </el-col>
<el-col :span="11"> <el-col :span="11">
<div id="marbox" style="width: 100%;height: 390px;margin-top: -35px; border: 1px solid rgb(218, 213, 213);margin-bottom: 10px;"> <div id="marbox"
style="width: 100%;height: 390px;margin-top: -25px; border: 1px solid rgb(218, 213, 213);margin-bottom: 10px;">
<div style="width: 100%;height: 100%" id="container"></div> <div style="width: 100%;height: 100%" id="container"></div>
</div> </div>
</el-col> </el-col>
</el-row> </el-row>
<div class="" style="width: 95%; height: 60px;margin-left: 50px;text-align: center;"> <div class="" style="width: 95%; height: 60px;margin-left: 50px;text-align: center;margin-top: 5px;">
<el-button <el-button size="normal" type="primary" icon="el-icon-edit" @click="handleUpdate(form)"
size="normal" v-hasPermi="['device:deviceInfo:edit']">修改</el-button>
type="primary" <el-button size="normal" type="primary" icon="el-icon-delete" @click="handleDelete(form)"
icon="el-icon-edit" v-hasPermi="['device:deviceInfo:remove']">删除</el-button>
@click="handleUpdate(form)"
v-hasPermi="['device:deviceInfo:edit']"
>修改</el-button>
<el-button
size="normal"
type="primary"
icon="el-icon-delete"
@click="handleDelete(form)"
v-hasPermi="['device:deviceInfo:remove']"
>删除</el-button>
<el-dialog :title="title" :visible.sync="open" append-to-body @close="cancel"> <el-dialog :title="title" :visible.sync="open" append-to-body @close="cancel">
<el-form ref="editForm" :model="editForm" :rules="rules" label-width="135px"> <el-form ref="editForm" :model="editForm" :rules="rules" label-width="135px">
<el-col :span="11"> <el-col :span="11">
<el-form-item label="所属管道" prop="pipeId"> <el-form-item label="所属管道" prop="pipeId">
<el-select v-model="editForm.pipeId" placeholder="请选择所属管道" filterable style="width: 100%" > <el-select v-model="editForm.pipeId" placeholder="请选择所属管道" filterable style="width: 100%">
<el-option <el-option v-for="item in options" :key="item.pipeId" :label="item.pipeName" :value="item.pipeId">
v-for="item in options"
:key="item.pipeId"
:label="item.pipeName"
:value="item.pipeId"
>
</el-option> </el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
...@@ -124,32 +123,22 @@ ...@@ -124,32 +123,22 @@
<el-col :span="11"> <el-col :span="11">
<el-form-item label="设备类型" prop="deviceType"> <el-form-item label="设备类型" prop="deviceType">
<el-select v-model="editForm.deviceType" placeholder="请选择设备类型" filterable style="width: 100%" > <el-select v-model="editForm.deviceType" placeholder="请选择设备类型" filterable style="width: 100%">
<el-option <el-option v-for="dict in typeOptions" :key="dict.dictValue" :label="dict.dictLabel"
v-for="dict in typeOptions" :value="dict.dictValue"></el-option>
:key="dict.dictValue"
:label="dict.dictLabel"
:value="dict.dictValue"
></el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="12"> <el-col :span="12">
<el-form-item label="设备名称" prop="deviceName"> <el-form-item label="设备名称" prop="deviceName">
<el-input <el-input v-model="editForm.deviceName" placeholder="请输入设备名称" />
v-model="editForm.deviceName"
placeholder="请输入设备名称"
/>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="11"> <el-col :span="11">
<el-form-item label="设备型号" prop="deviceModel"> <el-form-item label="设备型号" prop="deviceModel">
<el-input <el-input v-model="editForm.deviceModel" placeholder="请输入设备型号" />
v-model="editForm.deviceModel"
placeholder="请输入设备型号"
/>
</el-form-item> </el-form-item>
</el-col> </el-col>
...@@ -172,7 +161,7 @@ ...@@ -172,7 +161,7 @@
<el-input v-model.number="editForm.longitude" placeholder="请输入经度" /> <el-input v-model.number="editForm.longitude" placeholder="请输入经度" />
</el-col> </el-col>
<el-col :span="8" style="margin-left: 10px"> <el-col :span="8" style="margin-left: 10px">
<el-input v-model.number="editForm.latitude" placeholder="请输入纬度"/> <el-input v-model.number="editForm.latitude" placeholder="请输入纬度" />
</el-col> </el-col>
<el-col :span="5" style="margin-left: 10px"> <el-col :span="5" style="margin-left: 10px">
<el-button type="primary" plain @click="MapdialogFun">选择经纬度</el-button> <el-button type="primary" plain @click="MapdialogFun">选择经纬度</el-button>
...@@ -189,23 +178,13 @@ ...@@ -189,23 +178,13 @@
<el-col :span="12"> <el-col :span="12">
<el-form-item label="联系电话" prop="phone"> <el-form-item label="联系电话" prop="phone">
<el-input <el-input type="number" maxlength="12" v-model="editForm.phone" placeholder="请输入联系电话" />
type="number"
maxlength="12"
v-model="editForm.phone"
placeholder="请输入联系电话"
/>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col> <el-col>
<el-form-item label="设备图片上传" prop="iconUrl"> <el-form-item label="设备图片上传" prop="iconUrl">
<MyFileUpload <MyFileUpload listType="picture-card" @resFun="getFileInfo" @remove="listRemove" :fileArr="fileList" />
listType="picture-card"
@resFun="getFileInfo"
@remove="listRemove"
:fileArr="fileList"
/>
<el-input v-show="false" disabled v-model="editForm.iconUrl"></el-input> <el-input v-show="false" disabled v-model="editForm.iconUrl"></el-input>
</el-form-item> </el-form-item>
</el-col> </el-col>
...@@ -213,12 +192,8 @@ ...@@ -213,12 +192,8 @@
<el-col> <el-col>
<el-form-item label="安装日期" prop="installationTime"> <el-form-item label="安装日期" prop="installationTime">
<el-col :span="11"> <el-col :span="11">
<el-date-picker clearable size="small" <el-date-picker clearable size="small" style="width: 100%" v-model="editForm.installationTime"
style="width: 100%" type="date" value-format="yyyy-MM-dd" placeholder="请选择安装日期">
v-model="editForm.installationTime"
type="date"
value-format="yyyy-MM-dd"
placeholder="请选择安装日期">
</el-date-picker> </el-date-picker>
</el-col> </el-col>
</el-form-item> </el-form-item>
...@@ -236,14 +211,8 @@ ...@@ -236,14 +211,8 @@
</div> </div>
</el-dialog> </el-dialog>
<Mapdialog <Mapdialog v-if="loadmap" :dialogTableVisible="dialogTableVisible" @dialogcancelFun="dialogcancelFun"
v-if="loadmap" :slat="editForm.latitude" :slng="editForm.longitude" @confirmFun="confirmFun($event)"></Mapdialog>
:dialogTableVisible="dialogTableVisible"
@dialogcancelFun="dialogcancelFun"
:slat="editForm.latitude"
:slng="editForm.longitude"
@confirmFun="confirmFun($event)"
></Mapdialog>
</div> </div>
</div> </div>
</div> </div>
...@@ -280,33 +249,76 @@ ...@@ -280,33 +249,76 @@
// 设备类型字典 // 设备类型字典
typeOptions: [], typeOptions: [],
// 表单参数 // 表单参数
form: { }, form: {},
editForm: {}, editForm: {},
// 表单校验 // 表单校验
rules: { } 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" },
],
}
}; };
}, },
created() { created() {
// 如果是跳转来的,则接受初始化参数 // 如果是跳转来的,则接受初始化参数
this.deviceId = this.$route.query.deviceId; this.deviceId = this.$route.query.deviceId;
this.getDetail();
this.getDicts("t_device_type").then(response => { this.getDicts("t_device_type").then(response => {
this.typeOptions = response.data; this.typeOptions = response.data;
}); });
}, },
mounted(){ mounted() {
let gaoMap = new gaodeMap("石家庄"); this.getDetail();
this.gaoMap = gaoMap; // let gaoMap = new gaodeMap("石家庄");
// this.gaoMap = gaoMap;
}, },
methods: { methods: {
getDetail (){ getDetail() {
getDeviceInfo(this.deviceId).then(response =>{ getDeviceInfo(this.deviceId).then(response => {
this.form = response.data; this.form = response.data;
this.gaoMap.resetMapCenter([this.form.longitude, this.form.latitude]); console.log(this.form, "this.form")
const obj =this.form;
// this.gaoMap.resetMapCenter([this.form.longitude, this.form.latitude]);let obj = this.form.deviceList[0];
let gaoMap = new gaodeMap("石家庄", [obj.longitude, obj.latitude]);
this.gaoMap = gaoMap;
this.gaoMap.addMarker(DEVICE_TYPE.WORKORDER, this.form) this.gaoMap.addMarker(DEVICE_TYPE.WORKORDER, this.form)
}); });
}, },
getFileInfo(res){ getFileInfo(res) {
this.editForm.iconUrl = res.url; this.editForm.iconUrl = res.url;
}, },
listRemove(e) { listRemove(e) {
...@@ -385,10 +397,14 @@ ...@@ -385,10 +397,14 @@
width: 100%; width: 100%;
margin: 20px 0; margin: 20px 0;
} }
.feedbackTime-div{
float: left;margin-left: 150px;margin-top: 10px; .feedbackTime-div {
float: left;
margin-left: 150px;
margin-top: 10px;
} }
.feedbackTime{
.feedbackTime {
height: 120px; height: 120px;
width: 120px; width: 120px;
float: left; float: left;
...@@ -399,19 +415,24 @@ ...@@ -399,19 +415,24 @@
justify-content: center; justify-content: center;
align-items: center; align-items: center;
} }
.el-card__body { .el-card__body {
padding: 5px 20px 20px 20px; padding: 5px 20px 20px 20px;
} }
.detail .el-form{
.detail .el-form {
width: 20%; width: 20%;
} }
.detail .el-form-item{
.detail .el-form-item {
margin-bottom: 0px; margin-bottom: 0px;
} }
.avatar-uploader{
.avatar-uploader {
width: 25%; width: 25%;
float: left; float: left;
} }
.avatar-uploader .el-upload { .avatar-uploader .el-upload {
border: 1px dashed #d9d9d9; border: 1px dashed #d9d9d9;
border-radius: 6px; border-radius: 6px;
...@@ -419,9 +440,11 @@ ...@@ -419,9 +440,11 @@
position: relative; position: relative;
overflow: hidden; overflow: hidden;
} }
.avatar-uploader .el-upload:hover { .avatar-uploader .el-upload:hover {
border-color: #409EFF; border-color: #409EFF;
} }
.avatar-uploader-icon { .avatar-uploader-icon {
font-size: 28px; font-size: 28px;
color: #8c939d; color: #8c939d;
...@@ -430,12 +453,14 @@ ...@@ -430,12 +453,14 @@
line-height: 178px; line-height: 178px;
text-align: center; text-align: center;
} }
.avatar { .avatar {
width: 178px; width: 178px;
height: 178px; height: 178px;
display: block; display: block;
} }
li{
li {
font-size: 15px; font-size: 15px;
font-weight: 900; font-weight: 900;
} }
......
...@@ -144,7 +144,7 @@ ...@@ -144,7 +144,7 @@
/> />
<!-- 添加或修改管道信息对话框 --> <!-- 添加或修改管道信息对话框 -->
<el-dialog :title="title" :visible.sync="open" append-to-body @close="cancel"> <el-dialog destroy-on-close :title="title" :visible.sync="open" append-to-body @close="cancel">
<el-form ref="form" :model="form" :rules="rules" label-width="135px"> <el-form ref="form" :model="form" :rules="rules" label-width="135px">
<el-col :span="23"> <el-col :span="23">
<el-form-item label="管道名称" prop="pipeName"> <el-form-item label="管道名称" prop="pipeName">
......
...@@ -2,27 +2,38 @@ ...@@ -2,27 +2,38 @@
<div class="app-container detail" style="background-color: rgb(238, 241, 245);"> <div class="app-container detail" style="background-color: rgb(238, 241, 245);">
<div style="padding-top: 10px;background: #fff;height: 100%;"> <div style="padding-top: 10px;background: #fff;height: 100%;">
<el-row> <el-row>
<el-col :span="24" style="padding-left: 15px;"> <el-col :span="24" style="padding-left: 15px;margin-bottom: -10px;">
<div style="height: 45px;" @click="$router.go(-1)"> <div style="height: 45px;" @click="$router.go(-1)">
<el-button size="medium" type="text" style="font-size: 18px; color: rgb(7, 63, 112);float: left;">返回 <el-button size="medium" type="text" style="font-size: 18px; color: rgb(7, 63, 112);float: left;">返回
</el-button> </el-button>
<div style="float: left;margin-top: 8px;margin-left: 5px;"><img src="../../../assets/logo/fanhui.png" style="width: 25px;" alt=""></div> <div style="float: left;margin-top: 8px;margin-left: 5px;"><img src="../../../assets/logo/fanhui.png"
style="width: 25px;" alt=""></div>
</div>
</el-col>
</el-row>
<el-row style="width: 100%;height: 40px;">
<el-col :span="24">
<div style="">
<ul>
<li style="list-style: none;font-weight: 900;font-size: 20px;color: #053b6a;">管道管理详情</li>
</ul>
</div> </div>
</el-col> </el-col>
</el-row> </el-row>
<el-divider></el-divider> <el-divider></el-divider>
<el-row style="width: 100%;"> <el-row style="width: 100%;margin-top: -15px;margin-bottom: -5px;">
<el-col :span="24"> <el-col :span="24">
<div style="color: #31EAEA;height: 25px;"> <div style="color: #31EAEA;height: 25px;">
<ul><li>详细信息</li></ul> <ul>
<li>详细信息</li>
</ul>
</div> </div>
</el-col> </el-col>
</el-row> </el-row>
<el-row style="width: 100%;padding: 10px;padding-left: 40px;"> <el-row style="width: 100%;padding: 10px;">
<el-col :span="5"> <el-col :span="5">
<el-form ref="form" v-model="form" :rules="rules" label-width="100px" style="width: 100%;"> <el-form ref="form" v-model="form" label-width="100px" style="width: 100%;">
<el-form-item label="管道名称:" prop="pipeName"> <el-form-item label="管道名称:" prop="pipeName">
<font>{{form.pipeName}}</font> <font>{{form.pipeName}}</font>
</el-form-item> </el-form-item>
...@@ -42,13 +53,13 @@ ...@@ -42,13 +53,13 @@
<el-form-item label="管道长度:" prop="pipeLength"> <el-form-item label="管道长度:" prop="pipeLength">
<font>{{form.pipeLength}}</font> <font>{{form.pipeLength}}</font>
</el-form-item> </el-form-item>
<el-form-item label="备注信息:" prop="remarks"> <el-form-item label="备注信息:" prop="remarks" style="width: 170%;">
<font>{{form.remarks}}</font> <font>{{form.remarks}}</font>
</el-form-item> </el-form-item>
</el-form> </el-form>
</el-col> </el-col>
<el-col :span="6"> <el-col :span="6">
<el-form ref="form" v-model="form" :rules="rules" label-width="100px" style="width: 100%;"> <el-form ref="form" v-model="form" label-width="100px" style="width: 100%;">
<el-form-item label="管道地址:" prop="pipeAddr"> <el-form-item label="管道地址:" prop="pipeAddr">
<font>{{form.pipeAddr}}</font> <font>{{form.pipeAddr}}</font>
</el-form-item> </el-form-item>
...@@ -58,33 +69,26 @@ ...@@ -58,33 +69,26 @@
<el-form-item label="最后巡检时间:" prop="inspectionTime"> <el-form-item label="最后巡检时间:" prop="inspectionTime">
<font>{{form.inspectionTime}}</font> <font>{{form.inspectionTime}}</font>
</el-form-item> </el-form-item>
<el-form-item label="管道图片:" prop="inspectionTime"> <el-form-item label="管道图片:" prop="iconUrl">
<el-image :src="form.iconUrl" :preview-src-list="[form.iconUrl]" style="width: 90px;"></el-image> <div style="width: 20%;">
<el-image :src="form.iconUrl" :preview-src-list="[form.iconUrl]" style="width: auto;height: auto;"></el-image>
</div>
</el-form-item> </el-form-item>
</el-form> </el-form>
</el-col> </el-col>
<el-col :span="11"> <el-col :span="11">
<div id="marbox" style="width: 100%;height: 390px;margin-top: -35px; border: 1px solid rgb(218, 213, 213);margin-bottom: 10px;"> <div id="marbox"
style="width: 100%;height: 390px;margin-top: -25px; border: 1px solid rgb(218, 213, 213);margin-bottom: 10px;">
<div style="width: 100%;height: 100%" id="container"></div> <div style="width: 100%;height: 100%" id="container"></div>
</div> </div>
</el-col> </el-col>
</el-row> </el-row>
<div class="" style="width: 95%; height: 60px;margin-left: 50px;text-align: center;"> <div class="" style="width: 95%; height: 60px;margin-left: 50px;text-align: center;margin-top: 5px;">
<el-button <el-button size="normal" type="primary" icon="el-icon-edit" @click="handleUpdate(form)"
size="normal" v-hasPermi="['device:pipe:edit']">修改</el-button>
type="primary" <el-button size="normal" type="primary" icon="el-icon-delete" @click="handleDelete(form)"
icon="el-icon-edit" v-hasPermi="['device:pipe:remove']">删除</el-button>
@click="handleUpdate(form)"
v-hasPermi="['device:pipe:edit']"
>修改</el-button>
<el-button
size="normal"
type="primary"
icon="el-icon-delete"
@click="handleDelete(form)"
v-hasPermi="['device:pipe:remove']"
>删除</el-button>
<!-- 添加或修改管道信息对话框 --> <!-- 添加或修改管道信息对话框 -->
...@@ -103,10 +107,7 @@ ...@@ -103,10 +107,7 @@
<el-col :span="12"> <el-col :span="12">
<el-form-item label="管道长度" prop="pipeLength"> <el-form-item label="管道长度" prop="pipeLength">
<el-input type="number" min="0" v-model="editForm.pipeLength" placeholder="请输入管道长度"> <el-input type="number" min="0" v-model="editForm.pipeLength" placeholder="请输入管道长度">
<i <i slot="suffix" style="color: #000; font-style: normal; margin-right: 10px"></i>
slot="suffix"
style="color: #000; font-style: normal; margin-right: 10px"
></i>
</el-input> </el-input>
</el-form-item> </el-form-item>
</el-col> </el-col>
...@@ -147,24 +148,15 @@ ...@@ -147,24 +148,15 @@
</el-col> </el-col>
<el-col> <el-col>
<el-form-item label="管道图片上传" prop="iconUrl"> <el-form-item label="管道图片上传" prop="iconUrl">
<MyFileUpload <MyFileUpload listType="picture-card" @resFun="getFileInfo" @remove="listRemove" :fileArr="fileList" />
listType="picture-card"
@resFun="getFileInfo"
@remove="listRemove"
:fileArr="fileList"
/>
<el-input v-show="false" disabled v-model="editForm.iconUrl"></el-input> <el-input v-show="false" disabled v-model="editForm.iconUrl"></el-input>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col> <el-col>
<el-form-item label="安装日期" prop="installationTime"> <el-form-item label="安装日期" prop="installationTime">
<el-col :span="11"> <el-col :span="11">
<el-date-picker clearable size="small" <el-date-picker clearable size="small" style="width: 100%" v-model="editForm.installationTime"
style="width: 100%" type="date" value-format="yyyy-MM-dd" placeholder="请选择安装日期">
v-model="editForm.installationTime"
type="date"
value-format="yyyy-MM-dd"
placeholder="请选择安装日期">
</el-date-picker> </el-date-picker>
</el-col> </el-col>
</el-form-item> </el-form-item>
...@@ -181,13 +173,8 @@ ...@@ -181,13 +173,8 @@
</div> </div>
</el-dialog> </el-dialog>
<Mapdialog <Mapdialog v-if="loadmap" :dialogTableVisible="dialogTableVisible" @dialogcancelFun="dialogcancelFun"
v-if="loadmap" @confirmFun="confirmFun($event)" :str="str"></Mapdialog>
:dialogTableVisible="dialogTableVisible"
@dialogcancelFun="dialogcancelFun"
@confirmFun="confirmFun($event)"
:str="str"
></Mapdialog>
</div> </div>
</div> </div>
...@@ -229,12 +216,43 @@ ...@@ -229,12 +216,43 @@
editForm: { editForm: {
}, },
// 表单校验 // 表单校验
rules: { } 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" },
],
}
}; };
}, },
created() { created() {
// 如果是跳转来的,则接受初始化参数 // 如果是跳转来的,则接受初始化参数
this.pipeId = this.$route.query.pipeId; this.pipeId = this.$route.query.pipeId;
},
mounted() {
this.getDetail(); this.getDetail();
this.getDicts("t_pipe_type").then(response => { this.getDicts("t_pipe_type").then(response => {
this.typeOptions = response.data; this.typeOptions = response.data;
...@@ -242,19 +260,22 @@ ...@@ -242,19 +260,22 @@
this.getDicts("t_pipe_pressure").then(response => { this.getDicts("t_pipe_pressure").then(response => {
this.pressureOptions = response.data; this.pressureOptions = response.data;
}); });
},
mounted(){
let gaoMap = new gaodeMap("石家庄");
this.gaoMap = gaoMap;
}, },
methods: { methods: {
getDetail (){ getDetail() {
getPipe(this.pipeId).then(response =>{ getPipe(this.pipeId).then(response => {
this.form = response.data; this.form = response.data;
const { coordinates } = this.form;
const path1 = eval(coordinates)[0];
const path2 = eval(coordinates)[1];
const path3 = [(Number(path1[0]) + Number(path2[0])) / 2, (Number(path1[1]) + Number(path2[1])) / 2];
let gaoMap = new gaodeMap("石家庄", path3);
this.gaoMap = gaoMap;
this.gaoMap.onlyLine(this.form); this.gaoMap.onlyLine(this.form);
}); });
}, },
getFileInfo(res){ getFileInfo(res) {
this.editForm.iconUrl = res.url; this.editForm.iconUrl = res.url;
}, },
listRemove(e) { listRemove(e) {
...@@ -287,7 +308,7 @@ ...@@ -287,7 +308,7 @@
url: this.editForm.iconUrl, url: this.editForm.iconUrl,
}); });
} }
if(this.editForm.coordinates){ if (this.editForm.coordinates) {
this.str = this.editForm.coordinates; this.str = this.editForm.coordinates;
} }
this.open = true; this.open = true;
...@@ -311,7 +332,7 @@ ...@@ -311,7 +332,7 @@
handleDelete(res) { handleDelete(res) {
res.isDel = "1"; res.isDel = "1";
var devices = " "; var devices = " ";
for(var i = 0; i < res.deviceInfoList.length; i++){ for (var i = 0; i < res.deviceInfoList.length; i++) {
var obj = res.deviceInfoList[i]; var obj = res.deviceInfoList[i];
devices = devices + obj.deviceName + " "; devices = devices + obj.deviceName + " ";
} }
...@@ -337,10 +358,14 @@ ...@@ -337,10 +358,14 @@
width: 100%; width: 100%;
margin: 20px 0; margin: 20px 0;
} }
.feedbackTime-div{
float: left;margin-left: 150px;margin-top: 10px; .feedbackTime-div {
float: left;
margin-left: 150px;
margin-top: 10px;
} }
.feedbackTime{
.feedbackTime {
height: 120px; height: 120px;
width: 120px; width: 120px;
float: left; float: left;
...@@ -351,19 +376,24 @@ ...@@ -351,19 +376,24 @@
justify-content: center; justify-content: center;
align-items: center; align-items: center;
} }
.el-card__body { .el-card__body {
padding: 5px 20px 20px 20px; padding: 5px 20px 20px 20px;
} }
.detail .el-form{
.detail .el-form {
width: 20%; width: 20%;
} }
.detail .el-form-item{
.detail .el-form-item {
margin-bottom: 0px; margin-bottom: 0px;
} }
.avatar-uploader{
.avatar-uploader {
width: 25%; width: 25%;
float: left; float: left;
} }
.avatar-uploader .el-upload { .avatar-uploader .el-upload {
border: 1px dashed #d9d9d9; border: 1px dashed #d9d9d9;
border-radius: 6px; border-radius: 6px;
...@@ -371,9 +401,11 @@ ...@@ -371,9 +401,11 @@
position: relative; position: relative;
overflow: hidden; overflow: hidden;
} }
.avatar-uploader .el-upload:hover { .avatar-uploader .el-upload:hover {
border-color: #409EFF; border-color: #409EFF;
} }
.avatar-uploader-icon { .avatar-uploader-icon {
font-size: 28px; font-size: 28px;
color: #8c939d; color: #8c939d;
...@@ -382,12 +414,14 @@ ...@@ -382,12 +414,14 @@
line-height: 178px; line-height: 178px;
text-align: center; text-align: center;
} }
.avatar { .avatar {
width: 178px; width: 178px;
height: 178px; height: 178px;
display: block; display: block;
} }
li{
li {
font-size: 15px; font-size: 15px;
font-weight: 900; font-weight: 900;
} }
......
<template> <template>
<div class="app-container detail" style="background-color: rgb(238, 241, 245);"> <div class="app-container detail" style="background-color: rgb(238, 241, 245);">
<!-- 巡检计划信息 --> <!-- 巡检计划信息 -->
<div style="padding-top: 10px;background: #fff;height: 100%;"> <div style="padding-top: 10px;background: #fff;height: 100%;">
<el-row> <el-row>
<el-col :span="24" style="padding-left: 15px;"> <el-col :span="24" style="padding-left: 15px;margin-bottom: -10px;">
<div style="height: 45px;" @click="$router.go(-1)"> <div style="height: 45px;" @click="$router.go(-1)">
<el-button size="medium" type="text" style="font-size: 18px; color: rgb(7, 63, 112);float: left;">返回 <el-button size="medium" type="text" style="font-size: 18px; color: rgb(7, 63, 112);float: left;">返回
</el-button> </el-button>
<div style="float: left;margin-top: 8px;margin-left: 5px;"><img src="../../../assets/logo/fanhui.png" style="width: 25px;" alt=""></div> <div style="float: left;margin-top: 8px;margin-left: 5px;"><img src="../../../assets/logo/fanhui.png"
</div> style="width: 25px;" alt=""></div>
</el-col> </div>
</el-row> </el-col>
<el-divider></el-divider> </el-row>
<el-row style="width: 100%;height: 40px;">
<el-col :span="24">
<div style="">
<ul>
<li style="list-style: none;font-weight: 900;font-size: 20px;color: #053b6a;">设备巡检详情</li>
</ul>
</div>
</el-col>
</el-row>
<el-divider></el-divider>
<el-row style="width: 100%;"> <el-row style="width: 100%;margin-top: -15px;">
<el-col :span="24"> <el-col :span="24">
<div style="color: #31EAEA;height: 25px;"> <div style="color: #31EAEA;height: 25px;">
<ul><li>详细信息</li></ul> <ul>
</div> <li>详细信息</li>
</el-col> </ul>
</el-row> </div>
</el-col>
</el-row>
<el-row style="width: 100%;padding: 10px;padding-left: 40px;"> <el-row style="width: 100%;padding: 10px;margin-bottom: -5px;margin-top: -5px;">
<el-col :span="12">
<el-col :span="12"> <el-col :span="12">
<el-col :span="12"> <el-form ref="form" v-model="form" :rules="rules" label-width="100px"
<el-form ref="form" v-model="form" :rules="rules" label-width="100px" style="width: 100%;margin-left: 25px;margin-bottom: 25px;"> style="width: 100%;margin-bottom: 25px;">
<el-form-item label="计划名称:" prop="planName"> <el-form-item label="计划名称:" prop="planName">
<font>{{form.planName}}</font> <font>{{form.planName}}</font>
</el-form-item> </el-form-item>
<el-form-item label="检测地点:" prop="address"> <el-form-item label="检测地点:" prop="address">
<font>{{form.address}}</font> <font>{{form.address}}</font>
</el-form-item> </el-form-item>
<el-form-item label="计划描述:" prop="remarks"> <el-form-item label="计划描述:" prop="remarks" style="width: 170%;">
<div style="height: 90px;width: 200%; border: 1px solid rgb(187, 183, 183);margin-top: 10px;overflow-y: auto;padding: 5px;border-radius: 5px;"> <font>{{form.remarks}}</font>
<font>{{form.remarks}}</font> </el-form-item>
</div> </el-form>
</el-form-item>
</el-form>
</el-col>
<el-col :span="12">
<el-form ref="form" v-model="form" :rules="rules" label-width="100px" style="width: 100%;">
<el-form-item label="计划执行时间:" prop="startTime">
<font>{{form.startTime}}{{form.endTime}}</font>
</el-form-item>
<el-form-item label="计划状态:" prop="planStatus">
<font v-if="form.planStatus == 0">未生成工单</font>
<font v-if="form.planStatus == 1">已生成工单</font>
<font v-if="form.planStatus == 2">进行中</font>
<font v-if="form.planStatus == 3">已完成</font>
</el-form-item>
</el-form>
</el-col>
<el-col :span="24">
<el-table max-height="175px" :data="form.inspectionDataList" style="width: 89%; margin-left: 50px;">
<el-table-column label="设备名称" align="center" prop="deviceName" />
<el-table-column label="设备编号" align="center" prop="deviceCode" />
<el-table-column label="设备类型" align="center" prop="deviceType" />
<el-table-column label="处理状态" align="center" prop="dealStatus">
<template slot-scope="scope">
<span v-if="scope.row.dealStatus == null || scope.row.dealStatus == ''">未处理</span>
<span v-if="scope.row.dealStatus == 1">不需处理</span>
<span v-if="scope.row.dealStatus == 2">已处理完成</span>
<span v-if="scope.row.dealStatus == 3">未处理完成</span>
</template>
</el-table-column>
<el-table-column label="是否存在隐患" align="center" prop="isHiddenDanger" >
<template slot-scope="scope">
<span v-if="scope.row.isHiddenDanger == null || scope.row.isHiddenDanger == ''">-</span>
<span v-if="scope.row.isHiddenDanger == 1"></span>
<span v-if="scope.row.isHiddenDanger == 2"></span>
</template>
</el-table-column>
</el-table>
</el-col>
</el-col> </el-col>
<el-col :span="12"> <el-col :span="12">
<div id="marbox" style="width: 100%;height: 400px;margin-top: -25px; border: 1px solid rgb(218, 213, 213);"> <el-form ref="form" v-model="form" :rules="rules" label-width="100px" style="width: 100%;">
<div style="width: 100%;height: 100%" id="container"></div> <el-form-item label="计划执行时间:" prop="startTime">
</div> <font>{{form.startTime}}{{form.endTime}}</font>
</el-form-item>
<el-form-item label="计划状态:" prop="planStatus">
<font v-if="form.planStatus == 0">未生成工单</font>
<font v-if="form.planStatus == 1">已生成工单</font>
<font v-if="form.planStatus == 2">进行中</font>
<font v-if="form.planStatus == 3">已完成</font>
</el-form-item>
</el-form>
</el-col> </el-col>
</el-row>
<!-- 接单信息 -->
<el-row v-if="this.form.orderId != null && this.form.orderId != ''">
<el-divider></el-divider>
<el-col :span="24"> <el-col :span="24">
<div style="color: #31EAEA;width: 100%;height: 40px;"> <el-table max-height="175px" :data="form.inspectionDataList" style="width: 89%; margin-left: 30px;">
<ul><li>接单信息</li></ul> <el-table-column label="设备名称" align="center" prop="deviceName" />
</div> <el-table-column label="设备编号" align="center" prop="deviceCode" />
<el-table-column label="设备类型" align="center" prop="deviceType" />
<el-table-column label="处理状态" align="center" prop="dealStatus">
<template slot-scope="scope">
<span v-if="scope.row.dealStatus == null || scope.row.dealStatus == ''">未处理</span>
<span v-if="scope.row.dealStatus == 1">不需处理</span>
<span v-if="scope.row.dealStatus == 2">已处理完成</span>
<span v-if="scope.row.dealStatus == 3">未处理完成</span>
</template>
</el-table-column>
<el-table-column label="是否存在隐患" align="center" prop="isHiddenDanger">
<template slot-scope="scope">
<span v-if="scope.row.isHiddenDanger == null || scope.row.isHiddenDanger == ''">-</span>
<span v-if="scope.row.isHiddenDanger == 1"></span>
<span v-if="scope.row.isHiddenDanger == 2"></span>
</template>
</el-table-column>
</el-table>
</el-col> </el-col>
<el-col :span="5" style="margin-left: 50px;"> </el-col>
<el-col :span="12">
<div id="marbox" style="width: 100%;height: 250px;margin-top: -25px; border: 1px solid rgb(218, 213, 213);">
<div style="width: 100%;height: 100%" id="container"></div>
</div>
</el-col>
</el-row>
<!-- 接单信息 -->
<el-row v-if="this.form.orderId != null && this.form.orderId != ''">
<el-divider></el-divider>
<el-col :span="24" style="margin-top: -15px;margin-bottom: -10px;">
<div style="color: #31EAEA;width: 100%;height: 40px;">
<ul>
<li>接单信息</li>
</ul>
</div>
</el-col>
<el-row style="width: 100%;padding: 10px;">
<el-col :span="5" style="">
<el-form ref="form" v-model="form" :rules="rules" label-width="100px" style="height: 30px;width: 100%;"> <el-form ref="form" v-model="form" :rules="rules" label-width="100px" style="height: 30px;width: 100%;">
<el-form-item label="下发人员:" prop="appointInspectorName"> <el-form-item label="下发人员:" prop="appointInspectorName">
<font>{{form.appointInspectorName}}</font> <font>{{form.appointInspectorName}}</font>
...@@ -115,138 +129,106 @@ ...@@ -115,138 +129,106 @@
</el-form> </el-form>
</el-col> </el-col>
</el-row> </el-row>
<div> </el-row>
<div>
</div> </div>
<el-divider></el-divider> <!-- <el-divider></el-divider> -->
<div class="" style="width: 95%; height: 60px;margin-left: 50px;text-align: center;" v-if="form.planStatus == 0"> <div class="" style="width: 95%; height: 60px;margin-left: 50px;text-align: center;margin-top: 15px;" v-if="form.planStatus == 0">
<el-button <el-button size="normal" type="primary" icon="el-icon-edit" @click="handleIssue(form.planId)"
size="normal" v-hasPermi="['workOrder:basicsInfo:add']">生成工单
type="primary" </el-button>
icon="el-icon-edit" <el-button size="normal" type="primary" icon="el-icon-edit" @click="handleUpdate(form.planId)"
@click="handleIssue(form.planId)" v-hasPermi="['deviceInspection:inspectionPlan:edit']">修改
v-hasPermi="['workOrder:basicsInfo:add']" </el-button>
>生成工单 <el-button size="normal" type="primary" icon="el-icon-delete" @click="handleIsDel(form)"
</el-button> v-hasPermi="['deviceInspection:inspectionPlan:edit']">作废
<el-button </el-button>
size="normal" <el-dialog :title="title1" :visible.sync="open1" width="800px" append-to-body @close="cancel">
type="primary" <el-form ref="form1" :model="form1" :rules="rules1" label-width="120px">
icon="el-icon-edit" <el-form-item label="巡检计划名称" prop="planName">
@click="handleUpdate(form.planId)" <el-input v-model="form1.planName" placeholder="请输入巡检计划名称" />
v-hasPermi="['deviceInspection:inspectionPlan:edit']" </el-form-item>
>修改 <el-form-item label="巡检设备" prop="devices">
</el-button> <el-cascader v-model="form1.devices" :options="options" :props="props" :show-all-levels="false"
<el-button @change="handleChange" filterable clearable style="width: 640px"></el-cascader>
size="normal" </el-form-item>
type="primary" <el-form-item label="开始时间" prop="startTime">
icon="el-icon-delete" <el-date-picker clearable size="small" v-model="form1.startTime" type="date"
@click="handleIsDel(form)" value-format="yyyy-MM-dd HH:mm:ss" placeholder="选择开始时间">
v-hasPermi="['deviceInspection:inspectionPlan:edit']" </el-date-picker>
>作废 </el-form-item>
</el-button> <el-form-item label="结束时间" prop="endTime">
<el-dialog :title="title1" :visible.sync="open1" width="800px" append-to-body @close="cancel"> <el-date-picker clearable size="small" v-model="form1.endTime" type="date"
<el-form ref="form1" :model="form1" :rules="rules1" label-width="120px"> value-format="yyyy-MM-dd HH:mm:ss" placeholder="选择结束时间">
<el-form-item label="巡检计划名称" prop="planName"> </el-date-picker>
<el-input v-model="form1.planName" placeholder="请输入巡检计划名称"/> </el-form-item>
</el-form-item> <el-form-item label="地址" prop="address">
<el-form-item label="巡检设备" prop="devices"> <el-input v-model="form1.address" type="textarea" placeholder="请输入地址" />
<el-cascader </el-form-item>
v-model="form1.devices" <el-form-item label="计划描述" prop="remarks">
:options="options" <el-input type="textarea" v-model="form1.remarks" placeholder="请输入计划描述" />
:props="props" </el-form-item>
:show-all-levels="false" </el-form>
@change="handleChange" <div slot="footer" class="dialog-footer">
filterable <el-button type="primary" @click="submitForm1">确 定</el-button>
clearable <el-button @click="cancel">取 消</el-button>
style="width: 640px" </div>
></el-cascader> </el-dialog>
</el-form-item> <el-dialog :title="title2" :visible.sync="open2" width="800px" append-to-body @close="cancel">
<el-form-item label="开始时间" prop="startTime"> <el-form ref="form2" :model="form2" :rules="rules2" label-width="120px">
<el-date-picker clearable size="small" <el-form-item label="巡检计划名称">
v-model="form1.startTime" <font>{{form2.planName}}</font>
type="date" </el-form-item>
value-format="yyyy-MM-dd HH:mm:ss" <el-form-item label="计划时间">
placeholder="选择开始时间"> <font>{{ parseTime(form2.startTime, '{y}-{m}-{d}') }} 至
</el-date-picker> {{ parseTime(form2.endTime, '{y}-{m}-{d}') }}</font>
</el-form-item> </el-form-item>
<el-form-item label="结束时间" prop="endTime"> <el-form-item label="地址">
<el-date-picker clearable size="small" <font>{{form2.address}}</font>
v-model="form1.endTime" </el-form-item>
type="date" <el-form-item label="工单名称" prop="orderName">
value-format="yyyy-MM-dd HH:mm:ss" <el-input v-model="form2.orderName" placeholder="请输入工单名称" />
placeholder="选择结束时间"> </el-form-item>
</el-date-picker> <el-form-item label="指定执行人员" prop="appointInspector">
</el-form-item> <el-select v-model="form2.appointInspector" placeholder="请选择执行人员" clearable size="small">
<el-form-item label="地址" prop="address"> <el-option v-for="item in inspector" :key="item.userId" :label="item.nickName" :value="item.userId">
<el-input v-model="form1.address" type="textarea" placeholder="请输入地址"/> </el-option>
</el-form-item> </el-select>
<el-form-item label="计划描述" prop="remarks"> </el-form-item>
<el-input type="textarea" v-model="form1.remarks" placeholder="请输入计划描述"/> <el-form-item label="工单描述" prop="remarks">
</el-form-item> <el-input type="textarea" v-model="form2.remarks" placeholder="请输入工单描述" />
</el-form> </el-form-item>
<div slot="footer" class="dialog-footer"> </el-form>
<el-button type="primary" @click="submitForm1">确 定</el-button> <div slot="footer" class="dialog-footer">
<el-button @click="cancel">取 消</el-button> <el-button type="primary" @click="submitForm2">确 定</el-button>
</div> <el-button @click="cancel">取 消</el-button>
</el-dialog> </div>
<el-dialog :title="title2" :visible.sync="open2" width="800px" append-to-body @close="cancel"> </el-dialog>
<el-form ref="form2" :model="form2" :rules="rules2" label-width="120px">
<el-form-item label="巡检计划名称">
<font>{{form2.planName}}</font>
</el-form-item>
<el-form-item label="计划时间">
<font>{{ parseTime(form2.startTime, '{y}-{m}-{d}') }} 至
{{ parseTime(form2.endTime, '{y}-{m}-{d}') }}</font>
</el-form-item>
<el-form-item label="地址">
<font>{{form2.address}}</font>
</el-form-item>
<el-form-item label="工单名称" prop="orderName">
<el-input v-model="form2.orderName" placeholder="请输入工单名称" />
</el-form-item>
<el-form-item label="指定执行人员" prop="appointInspector">
<el-select v-model="form2.appointInspector" placeholder="请选择执行人员" clearable size="small" >
<el-option
v-for="item in inspector"
:key="item.userId"
:label="item.nickName"
:value="item.userId"
></el-option>
</el-select>
</el-form-item>
<el-form-item label="工单描述" prop="remarks">
<el-input type="textarea" v-model="form2.remarks" placeholder="请输入工单描述" />
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="submitForm2">确 定</el-button>
<el-button @click="cancel">取 消</el-button>
</div>
</el-dialog>
</div>
</div> </div>
</div> </div>
</template> </div>
</template>
<script> <script>
import { listInspectionPlan, getInspectionPlan, addInspectionPlan, updateInspectionPlan } from "@/api/deviceInspection/inspectionPlan"; import { listInspectionPlan, getInspectionPlan, addInspectionPlan, updateInspectionPlan } from "@/api/deviceInspection/inspectionPlan";
import { addBasicsInfo } from "@/api/workOrder/basicsInfo"; import { addBasicsInfo } from "@/api/workOrder/basicsInfo";
import gaodeMap from "utils/gaodeMap.js"; import gaodeMap from "utils/gaodeMap.js";
import { DEVICE_TYPE} from "utils/gaodeMap.js"; import { DEVICE_TYPE } from "utils/gaodeMap.js";
import { inspectorList } from "@/api/system/user"; import { inspectorList } from "@/api/system/user";
import { deviceTree } from "@/api/device/deviceInfo"; import { deviceTree } from "@/api/device/deviceInfo";
import { deviceNodeTree } from "@/api/device/deviceInfo"; import { deviceNodeTree } from "@/api/device/deviceInfo";
export default { export default {
name: "InspectionPlanDetail", name: "InspectionPlanDetail",
components: { components: {
}, },
data() { data() {
return { return {
// 遮罩层 // 遮罩层
loading: true, loading: true,
// 导出遮罩层 // 导出遮罩层
exportLoading: false, exportLoading: false,
// 选中数组 // 选中数组
...@@ -309,7 +291,7 @@ export default { ...@@ -309,7 +291,7 @@ export default {
// 设备级联 // 设备级联
options: [], options: [],
// 表单参数 // 表单参数
form: { }, form: {},
// 表单校验 // 表单校验
rules: { rules: {
}, },
...@@ -345,16 +327,16 @@ export default { ...@@ -345,16 +327,16 @@ export default {
// this.user_id = this.$route.query.id; //详细信息页接收参数 // this.user_id = this.$route.query.id; //详细信息页接收参数
this.getList(); this.getList();
this.planId = this.$route.query.planId; this.planId = this.$route.query.planId;
this.getDetail(); // this.getDetail();
}, },
mounted(){ mounted() {
let gaoMap = new gaodeMap("石家庄"); // let gaoMap = new gaodeMap("石家庄");
this.gaoMap = gaoMap; // this.gaoMap = gaoMap;
this.getDetail(); this.getDetail();
}, },
methods: { methods: {
/** 查询巡检计划列表 */ /** 查询巡检计划列表 */
getList() { getList() {
this.loading = true; this.loading = true;
listInspectionPlan(this.queryParams).then(response => { listInspectionPlan(this.queryParams).then(response => {
this.inspectionPlanList = response.rows; this.inspectionPlanList = response.rows;
...@@ -365,7 +347,7 @@ export default { ...@@ -365,7 +347,7 @@ export default {
handleChange(value) { handleChange(value) {
console.log(this.form1.devices); console.log(this.form1.devices);
}, },
getInspectorList(){ getInspectorList() {
this.loading = true; this.loading = true;
inspectorList().then(response => { inspectorList().then(response => {
this.inspector = response.data; this.inspector = response.data;
...@@ -373,29 +355,41 @@ export default { ...@@ -373,29 +355,41 @@ export default {
}); });
}, },
/** 获取巡检计划详情 */ /** 获取巡检计划详情 */
getDetail (){ getDetail() {
getInspectionPlan(this.planId).then(response =>{ getInspectionPlan(this.planId).then(response => {
this.form = response.data; this.form = response.data;
console.log("this.form",this.form) console.log("this.form", this.form)
this.active = parseInt(response.data.orderStatus) + 1; this.active = parseInt(response.data.orderStatus) + 1;
if(this.form.deviceList.length>0){ if (this.form.deviceList?.length > 0) {
this.gaoMap.resetMapCenter([this.form.deviceList[0].longitude,this.form.deviceList[0].latitude]);
} // for (var i = 0; i < this.form.deviceList.length; i++) {
for(var i = 0; i < this.form.deviceList.length; i++){ let obj = this.form.deviceList[0];
let obj = this.form.deviceList[i]; let gaoMap = new gaodeMap("石家庄", [obj.longitude, obj.latitude]);
this.gaoMap.addMarker(DEVICE_TYPE.WORKORDER, obj) this.gaoMap = gaoMap;
this.gaoMap.addMarker(DEVICE_TYPE.WORKORDER, obj)
// }
} }
for(var i = 0; i < this.form.pipeList.length; i++){
let obj = this.form.pipeList[i]; if (this.form.pipeList?.length > 0) {
this.gaoMap.onlyLine(obj); const { coordinates } = this.form.pipeList[0];
const path1 = eval(coordinates)[0];
const path2 = eval(coordinates)[1];
const path3 = [(Number(path1[0]) + Number(path2[0])) / 2, (Number(path1[1]) + Number(path2[1])) / 2];
let gaoMap = new gaodeMap("石家庄", path3);
this.gaoMap = gaoMap;
for (var i = 0; i < this.form.pipeList.length; i++) {
let obj = this.form.pipeList[i];
this.gaoMap.onlyLine(obj);
}
} }
if(this.form.orderType == '1') {
if (this.form.orderType == '1') {
// 获取设备列表树 // 获取设备列表树
let data = { let data = {
key1:this.form.deviceList, key1: this.form.deviceList,
key2:this.form.pipeList key2: this.form.pipeList
}; };
deviceTree(data).then(response => { deviceTree(data).then(response => {
this.deviceOptions[0].childList = response.data; this.deviceOptions[0].childList = response.data;
...@@ -427,8 +421,8 @@ export default { ...@@ -427,8 +421,8 @@ export default {
} }
}); });
}, },
/** 新增修改巡检计划提交按钮 */ /** 新增修改巡检计划提交按钮 */
submitForm1() { submitForm1() {
this.$refs["form1"].validate(valid => { this.$refs["form1"].validate(valid => {
console.log("form1", this.$refs["form1"]); console.log("form1", this.$refs["form1"]);
if (valid) { if (valid) {
...@@ -539,76 +533,89 @@ export default { ...@@ -539,76 +533,89 @@ export default {
}); });
}, },
/** 详细信息跳转 */ /** 详细信息跳转 */
showDetail(orderId) { showDetail(orderId) {
this.$router.push({ this.$router.push({
path: '/workOrder/detail', path: '/workOrder/detail',
query:{ query: {
orderId : orderId orderId: orderId
} }
}) //带参跳转 }) //带参跳转
}, },
/** 归档按钮操作 */ /** 归档按钮操作 */
handleFinish(res) { handleFinish(res) {
// this.reset(); // this.reset();
getInspectionPlan(res).then(response => { getInspectionPlan(res).then(response => {
this.form = response.data; this.form = response.data;
this.open = true; this.open = true;
this.title = "工单信息归档"; this.title = "工单信息归档";
}); });
}, },
} }
} }
</script> </script>
<style> <style>
.el-tree-node__content{ .el-tree-node__content {
width: 150px; width: 150px;
} }
.el-divider--horizontal {
display: block; .el-divider--horizontal {
height: 1px; display: block;
width: 100%; height: 1px;
margin: 20px 0; width: 100%;
} margin: 20px 0;
.feedbackTime-div{ }
float: left;margin-left: 150px;margin-top: 10px;
} .feedbackTime-div {
.feedbackTime{ float: left;
height: 120px; margin-left: 150px;
width: 120px; margin-top: 10px;
float: left; }
margin-left: 15px;
margin-top: 5px; .feedbackTime {
margin-bottom: 15px; height: 120px;
display: flex; width: 120px;
justify-content: center; float: left;
align-items: center; margin-left: 15px;
} margin-top: 5px;
.el-card__body { margin-bottom: 15px;
padding: 5px 20px 20px 20px; display: flex;
} justify-content: center;
.detail .el-form{ align-items: center;
width: 20%; }
}
.detail .el-form-item{ .el-card__body {
margin-bottom: 0px; padding: 5px 20px 20px 20px;
} }
.el-tree{
margin-top: 5px; .detail .el-form {
} width: 20%;
.avatar-uploader{ }
width: 25%;
float: left; .detail .el-form-item {
} margin-bottom: 0px;
.avatar-uploader .el-upload { }
.el-tree {
margin-top: 5px;
}
.avatar-uploader {
width: 25%;
float: left;
}
.avatar-uploader .el-upload {
border: 1px dashed #d9d9d9; border: 1px dashed #d9d9d9;
border-radius: 6px; border-radius: 6px;
cursor: pointer; cursor: pointer;
position: relative; position: relative;
overflow: hidden; overflow: hidden;
} }
.avatar-uploader .el-upload:hover { .avatar-uploader .el-upload:hover {
border-color: #409EFF; border-color: #409EFF;
} }
.avatar-uploader-icon { .avatar-uploader-icon {
font-size: 28px; font-size: 28px;
color: #8c939d; color: #8c939d;
...@@ -617,13 +624,15 @@ export default { ...@@ -617,13 +624,15 @@ export default {
line-height: 178px; line-height: 178px;
text-align: center; text-align: center;
} }
.avatar { .avatar {
width: 178px; width: 178px;
height: 178px; height: 178px;
display: block; display: block;
} }
li{
li {
font-size: 15px; font-size: 15px;
font-weight: 900; font-weight: 900;
} }
</style> </style>
\ No newline at end of file
...@@ -2,14 +2,14 @@ ...@@ -2,14 +2,14 @@
<div class="wrapper"> <div class="wrapper">
<div class="left"> <div class="left">
<div class="top"> <div class="top">
<span>设备报警最新记录</span> <span class="title">设备报警最新记录</span>
<span @click="repeatClick" class="repeat">刷新</span> <span @click="repeatClick" class="repeat">刷新</span>
<transition name="fade"> <transition name="fade">
<span v-show="repeatFinshed" class="repeat2"> 数据刷新成功</span> <span v-show="repeatFinshed" class="repeat2"> 数据刷新成功</span>
</transition> </transition>
<span @click="moreClick" class="more">更多>></span> <span @click="moreClick" class="more">更多</span>
</div> </div>
<div class="bottom right-bottom-data-left"> <div class="bottom right-bottom-data-left">
...@@ -22,28 +22,43 @@ ...@@ -22,28 +22,43 @@
</div> --> </div> -->
<!-- <div class="one">设备编号:<span>1123123123</span></div> <!-- <div class="one">设备编号:<span>1123123123</span></div>
<div class="two">报警时间:<span>34523452345</span></div> --> <div class="two">报警时间:<span>34523452345</span></div> -->
<el-table <el-table
size="mini" size="mini"
:data="tableData" :data="tableData"
style="width: 100%" style="width: 100%"
height="170" :height="tableHeight"
class="el-bottom"
> >
<el-table-column prop="deviceCode" label="设备编号" width="100"> <el-table-column prop="deviceCode" label="设备编号" width="100">
</el-table-column> </el-table-column>
<el-table-column prop="deviceName" label="设备名称" width=""> <el-table-column prop="deviceName" label="设备名称" width="150">
</el-table-column>
<el-table-column prop="alarmType" label="报警类型" width="">
</el-table-column> </el-table-column>
<el-table-column prop="alarmType" label="报警类型" width="80"> <el-table-column prop="createTime" label="报警开始时间" width="">
</el-table-column> </el-table-column>
<el-table-column prop="createTime" label="报警开始时间" width="170"> <el-table-column label="处理状态" align="center" prop="dealStatus">
<template slot-scope="scope">
<span v-if="scope.row.orderId == null || scope.row.orderId == ''"
>未生成工单</span
>
<span v-else-if="!scope.row.dealStatus && scope.row.orderId"
>暂未处理</span
>
<span v-else-if="scope.row.dealStatus == 1">不需处理</span>
<span v-else-if="scope.row.dealStatus == 2">已处理完成</span>
<span v-else-if="scope.row.dealStatus == 3">未处理完成</span>
<span v-else> - </span>
</template>
</el-table-column> </el-table-column>
<el-table-column prop="alarmValue" label="报警内容" width="100"> <el-table-column prop="alarmValue" label="报警内容" width="100">
</el-table-column> </el-table-column>
</el-table> </el-table>
</div> </div>
</div> </div>
<div class="right"> <!-- <div class="right">
<template v-for="(item, index) in list"> <template v-for="(item, index) in list">
<div <div
class="right-content" class="right-content"
...@@ -64,7 +79,7 @@ ...@@ -64,7 +79,7 @@
</div> </div>
</div> </div>
</template> </template>
</div> </div> -->
</div> </div>
</template> </template>
...@@ -95,6 +110,7 @@ export default { ...@@ -95,6 +110,7 @@ export default {
4: "icon-ylbgs", 4: "icon-ylbgs",
99: "icon-gdcd", 99: "icon-gdcd",
}, },
tableHeight: 170,
tableData: [ tableData: [
{ {
deviceCode: "2016-05-03", deviceCode: "2016-05-03",
...@@ -158,12 +174,12 @@ export default { ...@@ -158,12 +174,12 @@ export default {
return this.iconList[item.type]; return this.iconList[item.type];
}, },
moreClick() { moreClick() {
this.$router.push("/dataMonitoring/deviceAlarm"); this.$router.push("/dataMonitoring/deviceAlarm?back=1");
// route.push(`dataMonitoring/deviceAlarm`) // route.push(`dataMonitoring/deviceAlarm`)
}, },
repeatClick() { repeatClick() {
// this.tableData=[]; // this.tableData=[];
if(this.repeatFinshed) return; if (this.repeatFinshed) return;
this.getList(true); this.getList(true);
}, },
getList(bool) { getList(bool) {
...@@ -176,14 +192,18 @@ export default { ...@@ -176,14 +192,18 @@ export default {
deviceName, deviceName,
alarmType, alarmType,
createTime, createTime,
dealStatus,
alarmValue, alarmValue,
orderId,
} = item; } = item;
return { return {
deviceCode, deviceCode,
deviceName, deviceName,
alarmType, alarmType,
createTime, createTime,
dealStatus,
alarmValue, alarmValue,
orderId,
}; };
}); });
this.tableData = arr; this.tableData = arr;
...@@ -208,43 +228,62 @@ export default { ...@@ -208,43 +228,62 @@ export default {
position: fixed; position: fixed;
right: 10px; right: 10px;
bottom: 10px; bottom: 10px;
overflow: hidden;
// background-color: #fff; // background-color: #fff;
display: flex; display: flex;
justify-content: space-between; justify-content: space-between;
& > div { & > div {
} }
.left { .left {
width: 680px; width: 716px;
height: 198px;
margin-right: 12px; margin-right: 12px;
box-shadow: 2px 2px 5px rgba(0, 0, 0, 0.16); box-shadow: 2px 2px 5px rgba(0, 0, 0, 0.16);
// background-color: #fff; // background-color: #fff;
// color: #fff; // color: #fff;
font-size: 14px; font-size: 14px;
font-weight: 400; font-weight: 400;
background-image: url(../../../../assets/images/bottomBg.png);
.el-table__body-wrappe {
height: 140px !important;
}
.top { .top {
height: 32px; height: 19px;
background-color: #053b6a; // background-color: #053b6a;
color: #fff; color: #fff;
line-height: 32px; // line-height: 32px;
padding-left: 12px; // padding-left: 12px;
// position: relative; position: relative;
span {
display: inline-block; .title{
position: absolute;
left:50%;
margin-left:-92px;
top:-5px;
} }
.repeat { .repeat {
margin-left: 20px; position: absolute;
top:-5px;
right: 160px;
color: #fff;
cursor: pointer; cursor: pointer;
&:hover { &:hover {
color: #2788ea; color: #2788ea;
} }
} }
.repeat2 { .repeat2 {
margin-left: 20px; position: absolute;
color:#67c23a; right: 206px;
color: #67c23a;
} }
.more { .more {
position: absolute;
right: 38px;
top: -5px;
color: #fff;
float: right; float: right;
margin-right: 20px; margin-right: 20px;
cursor: pointer; cursor: pointer;
...@@ -254,15 +293,8 @@ export default { ...@@ -254,15 +293,8 @@ export default {
} }
} }
.bottom { .bottom {
.table-top { width: 680px;
// background-color: red; margin: 0 auto;
// display: flex;
// justify-content: space-between;
// div {
// width: 100%;
// text-align: center;
// }
}
} }
} }
.right { .right {
......
<template>
<div class="wrapper">
<!-- <img src="/static/img/rightWrapperBg.25536016.png" alt=""> -->
<div class="right">
<template v-for="(item, index) in list">
<div
class="right-content"
:class="{ three: index == 2 }"
:key="item.type"
>
<div class="text-icon">
<i
class="iconfont"
:class="[iconClass(item), { iconFontSize: item.type == 4 }]"
></i>
</div>
<div class="text">
<div class="top">{{ typeName[item.type] }}</div>
<div class="bottom">
{{ item.number }}{{ item.type == 99 ? "M" : "个" }}
</div>
</div>
</div>
</template>
</div>
</div>
</template>
<script>
import { listDeviceAlarm } from "@/api/dataMonitoring/deviceAlarm";
export default {
props: {
list: {
type: Array,
},
},
data() {
return {
timer: null,
repeatFinshed: false,
typeName: {
1: "调压箱",
2: "阀门井",
3: "流量计",
4: "压力表",
99: "管线长度",
},
iconList: {
1: "icon-tyxgs",
2: "icon-fmjgs",
3: "icon-lljgs",
4: "icon-ylbgs",
99: "icon-gdcd",
},
};
},
created() {},
methods: {
iconClass(item) {
return this.iconList[item.type];
},
},
};
</script>
<style lang="scss" scoped>
.wrapper {
width: 300px;
height: 800px;
position: absolute;
top: 40px;
right: 0;
overflow-x: hidden;
// right: 10px;
// top: 131px;
// background-image: url(/static/img/rightWrapperBg.25536016.png);
// background-position-x: -72px;
// background-position-y: center;
// background-size: 193% 137%;
// background-repeat: no-repeat;
img {
// width: 300px;
// height: 800px;
// position: absolute;
// top:0;
// left:0;
}
& > div {
}
.right {
position: absolute;
right: 10px;
top: 51px;
& > .right-content {
// background-color: #fff;
width: 247px;
height: 104px;
margin-bottom: 29px;
box-shadow: 2px 2px 5px rgba(0, 0, 0, 0.16);
background-image: url(../../../../assets/images/listBg.png);
margin-right: 10px;
display: flex;
&.three {
margin-right: 0px;
}
// align-items: center;
.text-icon {
line-height: 102px;
padding-left: 28px;
margin-right: 22px;
margin-left: 30px;
i {
color: #7bf8f4;
font-size: 60px;
}
}
.text {
font-size: 14px;
padding-top: 16px;
.top {
color: #fff;
margin-top: 7px;
margin-bottom: 10px;
font-weight: 600;
}
.bottom {
color: #7bf8f4;
}
}
}
}
// 单独调整下最后一个icon的大小
.iconFontSize {
font-size: 50px !important;
}
.fade-enter-to,
.fade-leave {
opacity: 1;
}
.fade-leave-active {
transition: opacity 0.5s;
}
.fade-enter-active {
transition: opacity 0s;
}
.fade-enter, .fade-leave-to /* .fade-leave-active below version 2.1.8 */ {
opacity: 0;
}
}
</style>
\ No newline at end of file
...@@ -65,11 +65,16 @@ ...@@ -65,11 +65,16 @@
</el-collapse-transition> </el-collapse-transition>
</div> </div>
</div> </div>
<Right
<RightBototmData v-show="rightDataShow"
:class="{ classShow: !rightDataShow }"
ref="Right"
:list="rightBototmData"
/>
<Bottom
v-show="bottomDataShow" v-show="bottomDataShow"
:class="{ classShow: !bottomDataShow }" :class="{ classShow: !bottomDataShow }"
ref="RightBototmData" ref="Bottom"
:list="rightBototmData" :list="rightBototmData"
/> />
<!-- 报警工单 --> <!-- 报警工单 -->
...@@ -162,12 +167,17 @@ ...@@ -162,12 +167,17 @@
</div> </div>
<div <div
class="deviceList" class="deviceList"
:class="{ topActive: index == 0 }"
v-for="(iten, index) in item.list" v-for="(iten, index) in item.list"
:class="{
topActive: index == 0,
textRed: iten.alarmState == 1,
}"
:key="iten.deviceId + `` + index" :key="iten.deviceId + `` + index"
@click.stop="panToo(iten, item)" @click.stop="panToo(iten, item)"
> >
<div class="no">{{ iten.no + 1 }}</div> <div class="no">
{{ iten.no + 1 }}
</div>
<div :title="iten.code" class="code"> <div :title="iten.code" class="code">
{{ iten.code }} {{ iten.code }}
</div> </div>
...@@ -273,16 +283,18 @@ import gaodeMap, { ...@@ -273,16 +283,18 @@ import gaodeMap, {
import { selectAlarmDevice } from "@/api/dataMonitoring/deviceAlarm.js"; import { selectAlarmDevice } from "@/api/dataMonitoring/deviceAlarm.js";
import { getAllDeviceInfo, countDeviceByType } from "@/api/device/deviceInfo"; import { getAllDeviceInfo, countDeviceByType } from "@/api/device/deviceInfo";
import { getMapHiddenTroublelist } from "@/api/riskManagement/hiddenTrouble"; import { getMapHiddenTroublelist } from "@/api/riskManagement/hiddenTrouble";
import RightBototmData from "./components/RightBototmData.vue"; import Bottom from "./components/Bottom.vue";
import Right from "./components/Right.vue";
import CreateWork from "./components/CreateWork.vue"; import CreateWork from "./components/CreateWork.vue";
import CreateWorkTrouble from "./components/CreateWorkTrouble.vue"; import CreateWorkTrouble from "./components/CreateWorkTrouble.vue";
import { getInspectorLocations } from "@/api/inspectorLocation/location"; import { getInspectorLocations } from "@/api/inspectorLocation/location";
export default { export default {
components: { components: {
RightBototmData, Bottom,
CreateWork, CreateWork,
CreateWorkTrouble, CreateWorkTrouble,
Right,
}, },
data() { data() {
return { return {
...@@ -372,6 +384,7 @@ export default { ...@@ -372,6 +384,7 @@ export default {
// 右下角的数据data // 右下角的数据data
rightBototmData: [], rightBototmData: [],
bottomDataShow: true, bottomDataShow: true,
rightDataShow: true,
// 是否显示生成工单弹框 // 是否显示生成工单弹框
createWorkOpen: false, createWorkOpen: false,
//隐患工单 //隐患工单
...@@ -404,11 +417,11 @@ export default { ...@@ -404,11 +417,11 @@ export default {
// }); // });
}, },
watch: { watch: {
changeBtnData: { // changeBtnData: {
handler(newName, oldName) {}, // handler(newName, oldName) {},
deep: true, // deep: true,
// immediate: true, // // immediate: true,
}, // },
}, },
methods: { methods: {
onResize() { onResize() {
...@@ -456,9 +469,11 @@ export default { ...@@ -456,9 +469,11 @@ export default {
.then((res) => { .then((res) => {
if (res == 200) { if (res == 200) {
// 所有设备上图结束之后,左边的抽屉加载数据 // 所有设备上图结束之后,左边的抽屉加载数据
this.pipeList(); this.pipeList().then((res) => {
console.log("开始报警准备");
this.getSelectAlarmDevice();
});
// 获取报警资源 // 获取报警资源
this.getSelectAlarmDevice();
} }
}); });
}, },
...@@ -536,7 +551,7 @@ export default { ...@@ -536,7 +551,7 @@ export default {
}, },
// 获取报警资源,并且改变图上的状态 // 获取报警资源,并且改变图上的状态
getSelectAlarmDevice() { getSelectAlarmDevice() {
selectAlarmDevice().then((res) => { return selectAlarmDevice().then((res) => {
if (res.length > 0) { if (res.length > 0) {
} }
console.log("报警设备", res); console.log("报警设备", res);
...@@ -565,8 +580,10 @@ export default { ...@@ -565,8 +580,10 @@ export default {
const pipeId = item.getExtData().lineData.pipeId; const pipeId = item.getExtData().lineData.pipeId;
return deviceId == pipeId; return deviceId == pipeId;
})[0]; })[0];
if (polyline) { if (polyline) {
let options = polyline.getExtData(); let options = polyline.getExtData();
// 增加一个报警状态 // 增加一个报警状态
// 如果有endtime说明状态已经不是报警状态了,要归位,所有东西都要变回来 // 如果有endtime说明状态已经不是报警状态了,要归位,所有东西都要变回来
options.lineData.view = this; options.lineData.view = this;
...@@ -590,6 +607,15 @@ export default { ...@@ -590,6 +607,15 @@ export default {
console.log("管道报警"); console.log("管道报警");
} }
polyline.setExtData(options); polyline.setExtData(options);
const myP = this.allList[0].filter((item) => {
console.log(item.selfData.alarmState);
return item.selfData.alarmState;
})[0];
// console.log("this.allList[0]", this.allList[0]);
// console.log("myP", myP);
// 改变左侧列表的状态(1报警,0,正常)
myP.alarmState = options.lineData.alarmState;
} }
}); });
} }
...@@ -628,6 +654,19 @@ export default { ...@@ -628,6 +654,19 @@ export default {
options.alarmValue = alarmValue; options.alarmValue = alarmValue;
} }
device.setExtData(options); device.setExtData(options);
// 找到是列表里的哪个,改变它的状态,让列表里的这个设备变成红色
const myDevice = this.allList.filter((item) => {
for (let i = 0; i < item.length; i++) {
const iten = item[i];
// 不是隐患也不是值班人员
if (!iten.troubleId && !iten.userId) {
return iten.deviceId == device.getExtData().deviceId;
}
}
})[0][0];
// console.log("myDevice", myDevice);
myDevice.alarmState = options.alarmState;
// const imageName = device.getExtData() // const imageName = device.getExtData()
// console.log(imageName) // console.log(imageName)
...@@ -866,7 +905,6 @@ export default { ...@@ -866,7 +905,6 @@ export default {
this.diveceInfoWindowShow(iten, lat, lng); this.diveceInfoWindowShow(iten, lat, lng);
} }
}, },
// 如果是线条飞过去出现infowindow // 如果是线条飞过去出现infowindow
polylineInfoWindowShow(iten, lat, lng) { polylineInfoWindowShow(iten, lat, lng) {
const target = this.gaoMap.polyLines.filter((item) => { const target = this.gaoMap.polyLines.filter((item) => {
...@@ -991,6 +1029,8 @@ export default { ...@@ -991,6 +1029,8 @@ export default {
deviceType: "0", deviceType: "0",
deviceName: item.pipeName, deviceName: item.pipeName,
code: item.pipeCode, code: item.pipeCode,
alarmState: item.alarmState ? item.alarmState : "0",
selfData: item,
}; };
}); });
this.allList[0] = pipeArr; this.allList[0] = pipeArr;
...@@ -1011,6 +1051,8 @@ export default { ...@@ -1011,6 +1051,8 @@ export default {
deviceType: item.deviceType, deviceType: item.deviceType,
deviceName: item.deviceName, deviceName: item.deviceName,
code: item.iotNo, code: item.iotNo,
alarmState: item.alarmState ? item.alarmState : "0",
selfData: item,
}; };
}); });
// 所有阀门井数据 // 所有阀门井数据
...@@ -1026,6 +1068,8 @@ export default { ...@@ -1026,6 +1068,8 @@ export default {
deviceType: item.deviceType, deviceType: item.deviceType,
deviceName: item.deviceName, deviceName: item.deviceName,
code: item.iotNo, code: item.iotNo,
alarmState: item.alarmState ? item.alarmState : "0",
selfData: item,
}; };
}); });
// 所有流量计数据 // 所有流量计数据
...@@ -1041,6 +1085,8 @@ export default { ...@@ -1041,6 +1085,8 @@ export default {
deviceType: item.deviceType, deviceType: item.deviceType,
deviceName: item.deviceName, deviceName: item.deviceName,
code: item.iotNo, code: item.iotNo,
alarmState: item.alarmState ? item.alarmState : "0",
selfData: item,
}; };
}); });
// 所有压力表数据 // 所有压力表数据
...@@ -1056,6 +1102,8 @@ export default { ...@@ -1056,6 +1102,8 @@ export default {
deviceType: item.deviceType, deviceType: item.deviceType,
deviceName: item.deviceName, deviceName: item.deviceName,
code: item.iotNo, code: item.iotNo,
alarmState: item.alarmState ? item.alarmState : "0",
selfData: item,
}; };
}); });
// console.log("设备", tyxArr, fmjArr, lljArr, ylbArr); // console.log("设备", tyxArr, fmjArr, lljArr, ylbArr);
...@@ -1093,7 +1141,7 @@ export default { ...@@ -1093,7 +1141,7 @@ export default {
this.allList[6] = workManArr; this.allList[6] = workManArr;
}, },
// 左边设备翻页 // 左边设备翻页
pipeList(pageNum) { async pipeList(pageNum) {
const num = pageNum ? pageNum : 10; const num = pageNum ? pageNum : 10;
// const { nowPage } = this.changeBtnData[0]; // const { nowPage } = this.changeBtnData[0];
// this.changeBtnData[0].list = this.allList[0].filter((item, index) => { // this.changeBtnData[0].list = this.allList[0].filter((item, index) => {
...@@ -1265,6 +1313,7 @@ export default { ...@@ -1265,6 +1313,7 @@ export default {
} else { } else {
// 左边全选 // 左边全选
this.leftBarNum = [1, 2, 3, 4, 7, 8, 9]; this.leftBarNum = [1, 2, 3, 4, 7, 8, 9];
// this.arrowRightNum=[];
// 右转箭头的样式active判定 // 右转箭头的样式active判定
// this.arrowRightNum = []; // this.arrowRightNum = [];
// 清空左边列表 // 清空左边列表
...@@ -1278,12 +1327,13 @@ export default { ...@@ -1278,12 +1327,13 @@ export default {
await this.getInspectorLocations({ userName: this.keyWord }); await this.getInspectorLocations({ userName: this.keyWord });
await this.getMapHiddenTroublelist({ troubleName: this.keyWord }); await this.getMapHiddenTroublelist({ troubleName: this.keyWord });
// 设备报警
this.getSelectAlarmDevice();
this.changeBtnData.forEach((item) => { this.changeBtnData.forEach((item) => {
item.nowPage = 1; item.nowPage = 1;
}); });
this.pipeList(); this.pipeList().then(() => {
// 设备报警
this.getSelectAlarmDevice();
});
} }
}, },
// 清空左边列表 // 清空左边列表
...@@ -1561,11 +1611,13 @@ input[type="radio"] { ...@@ -1561,11 +1611,13 @@ input[type="radio"] {
left: 0; left: 0;
width: 348px; width: 348px;
transition: 0.2s linear; transition: 0.2s linear;
background: #fff; // background: #fff;
// background: #061d3380;
background: rgba(6,29,51,0.8);
// background: red; // background: red;
opacity: 0; opacity: 0;
// 优化抽屉出来回去 // 优化抽屉出来回去
&.opacity { &.opacity {
opacity: 1; opacity: 1;
} }
&.back { &.back {
...@@ -1585,6 +1637,7 @@ input[type="radio"] { ...@@ -1585,6 +1637,7 @@ input[type="radio"] {
top: 14px; top: 14px;
left: 39px; left: 39px;
width: 236px; width: 236px;
// background-color: red !important;
.icon-search { .icon-search {
line-height: 28px; line-height: 28px;
cursor: pointer; cursor: pointer;
...@@ -1634,21 +1687,24 @@ input[type="radio"] { ...@@ -1634,21 +1687,24 @@ input[type="radio"] {
// border-right: 1px solid #cccccc; // border-right: 1px solid #cccccc;
box-sizing: border-box; box-sizing: border-box;
// padding-left: 5px; // padding-left: 5px;
color: #053b6a; // color: #053b6a;
color: #fff;
font-weight: 600; font-weight: 600;
} }
} }
.deviceList { .deviceList {
cursor: pointer; cursor: pointer;
margin-bottom: 2px; margin-bottom: 10px;
box-sizing: border-box; box-sizing: border-box;
border-bottom: 1px solid #053b6a00; border-bottom: 1px solid #053b6a00;
color: #1d1d1d; color: #1d1d1d;
&:hover { &:hover {
box-sizing: border-box; box-sizing: border-box;
border-bottom: 1px solid #053b6a; border-bottom: 1px solid #7fc0f8;
color: #053b6a;
font-weight: 600; font-weight: 600;
> div {
color: #7fc0f8;
}
} }
&.topActive { &.topActive {
// border-top: 1px solid #cccccc; // border-top: 1px solid #cccccc;
...@@ -1665,6 +1721,7 @@ input[type="radio"] { ...@@ -1665,6 +1721,7 @@ input[type="radio"] {
overflow: hidden; overflow: hidden;
text-overflow: ellipsis; text-overflow: ellipsis;
white-space: nowrap; white-space: nowrap;
color: #fff;
// border-right: 1px solid #cccccc; // border-right: 1px solid #cccccc;
} }
} }
...@@ -1682,20 +1739,36 @@ input[type="radio"] { ...@@ -1682,20 +1739,36 @@ input[type="radio"] {
width: 100px; width: 100px;
text-align: center; text-align: center;
} }
.textRed {
.no,
.name,
.code {
color: red;
}
&:hover {
border-bottom: 1px solid red;
.no,
.name,
.code {
color: red !important;
}
}
}
} }
.box { .box {
width: 348px; width: 348px;
height: 48px; height: 48px;
padding-left: 20px; padding-left: 20px;
display: flex; display: flex;
background-color: #ffffff; // background-color: #ffffff;
box-sizing: border-box; box-sizing: border-box;
border-bottom: 1px solid rgba(0, 0, 0, 0.1); // border-bottom: 1px solid rgba(0, 0, 0, 0.1);
border-bottom: 1px solid rgba(0, 0, 0, 0.5);
cursor: pointer; cursor: pointer;
position: relative; position: relative;
// box-sizing: border-box; // box-sizing: border-box;
&.firstbox { &.firstbox {
border-top: 1px solid rgba(0, 0, 0, 0.1); border-top: 1px solid rgba(0, 0, 0, 0.5);
// box-sizing: border-box; // box-sizing: border-box;
&:hover { &:hover {
border-top: 1px solid rgba(5, 59, 106, 0); border-top: 1px solid rgba(5, 59, 106, 0);
...@@ -1703,15 +1776,23 @@ input[type="radio"] { ...@@ -1703,15 +1776,23 @@ input[type="radio"] {
} }
&:hover { &:hover {
box-sizing: border-box; box-sizing: border-box;
background-color: rgba(5, 59, 106, 0.1); // background-color: rgba(5, 59, 106, 0.1);
background-color: #053b6a;
border-bottom: none !important; border-bottom: none !important;
.upPic {
color: #31eaea;
}
.left,
.right {
color: #31eaea !important;
}
} }
.upPic { .upPic {
display: inline-block; display: inline-block;
margin-left: 40px; margin-left: 40px;
line-height: 48px; line-height: 48px;
font-size: 16px; font-size: 16px;
color: #053b6a; color: #fff;
} }
> i.ju { > i.ju {
position: absolute; position: absolute;
...@@ -1735,6 +1816,7 @@ input[type="radio"] { ...@@ -1735,6 +1816,7 @@ input[type="radio"] {
color: #fff; color: #fff;
} }
> i.arrow-right { > i.arrow-right {
color: #fff !important;
position: absolute; position: absolute;
right: 32px; right: 32px;
top: 16px; top: 16px;
...@@ -1745,16 +1827,17 @@ input[type="radio"] { ...@@ -1745,16 +1827,17 @@ input[type="radio"] {
} }
&.active { &.active {
// background-color: #053b6a; // background-color: #053b6a;
.left, // .left,
.right { // .right {
color: #053b6a; // color: #fff;
} // }
> i { > i {
color: #053b6a; color: #31eaea;
font-weight: 600;
} }
} }
.left { .left {
color: #053b6a; color: #fff;
line-height: 48px; line-height: 48px;
margin-left: 28px; margin-left: 28px;
.iconfont { .iconfont {
...@@ -1762,7 +1845,7 @@ input[type="radio"] { ...@@ -1762,7 +1845,7 @@ input[type="radio"] {
} }
} }
.right { .right {
color: #1d1d1d; color: #fff;
line-height: 48px; line-height: 48px;
font-size: 16px; font-size: 16px;
margin-left: 4px; margin-left: 4px;
...@@ -1783,6 +1866,7 @@ input[type="radio"] { ...@@ -1783,6 +1866,7 @@ input[type="radio"] {
padding-bottom: 2px; padding-bottom: 2px;
.btn { .btn {
border-radius: 50%; border-radius: 50%;
background: none;
// width: 14px; // width: 14px;
// height: 14px; // height: 14px;
padding: 2px; padding: 2px;
...@@ -1791,6 +1875,7 @@ input[type="radio"] { ...@@ -1791,6 +1875,7 @@ input[type="radio"] {
display: inline-block; display: inline-block;
font-size: 14px; font-size: 14px;
padding: 0px 5px; padding: 0px 5px;
color: #fff;
} }
} }
} }
...@@ -1799,9 +1884,9 @@ input[type="radio"] { ...@@ -1799,9 +1884,9 @@ input[type="radio"] {
.switch { .switch {
position: absolute; position: absolute;
font-size: 30px; font-size: 30px;
right: -27px; right: -30px;
top: 50%; top: 50%;
margin-top: -30px; margin-top: -123px;
width: 40px; width: 40px;
border-radius: 40%; border-radius: 40%;
overflow: hidden; overflow: hidden;
......
...@@ -84,7 +84,7 @@ ...@@ -84,7 +84,7 @@
</el-table-column> </el-table-column>
<el-table-column label="图片" align="center" prop="pictureUrl" style="text-align:center;"> <el-table-column label="图片" align="center" prop="pictureUrl" style="text-align:center;">
<template slot-scope="scope"> <template slot-scope="scope">
<img :src="scope.row.pictureUrl" style="width: 20%;vertical-align:middle" @click="showPicture(scope.row)"/> <img :src="scope.row.pictureUrl" style="width: 20%;vertical-align:middle;cursor:pointer;" @click="showPicture(scope.row)"/>
<el-image :ref="'a'+scope.row.troubleId" :src="scope.row.pictureUrl" v-show="false" :preview-src-list="[scope.row.pictureUrl]" v-if="scope.row.pictureUrl != '' && scope.row.pictureUrl != null"></el-image> <el-image :ref="'a'+scope.row.troubleId" :src="scope.row.pictureUrl" v-show="false" :preview-src-list="[scope.row.pictureUrl]" v-if="scope.row.pictureUrl != '' && scope.row.pictureUrl != null"></el-image>
</template> </template>
</el-table-column> </el-table-column>
...@@ -148,7 +148,7 @@ ...@@ -148,7 +148,7 @@
/> />
<!-- 添加或修改隐患信息对话框 --> <!-- 添加或修改隐患信息对话框 -->
<el-dialog :title="title1" :visible.sync="open1" width="800px" append-to-body @close="cancel"> <el-dialog destroy-on-close :title="title1" :visible.sync="open1" width="800px" append-to-body @close="cancel">
<el-form ref="form1" :model="form1" :rules="rules" label-width="120px"> <el-form ref="form1" :model="form1" :rules="rules" label-width="120px">
<el-col :span="23"> <el-col :span="23">
<el-form-item label="隐患名称" prop="troubleName"> <el-form-item label="隐患名称" prop="troubleName">
...@@ -406,7 +406,7 @@ export default { ...@@ -406,7 +406,7 @@ export default {
{ required: true, message: "请输入地址", trigger: "blur" } { required: true, message: "请输入地址", trigger: "blur" }
], ],
pictureUrl: [ pictureUrl: [
{ required: true, message: "请上传图片", trigger: "blur" } { required: true, message: "请上传图片", trigger: ['blur', 'change'] }
], ],
longitude: [ longitude: [
{ required: true, message: "请输入经纬度", trigger: "blur" } { required: true, message: "请输入经纬度", trigger: "blur" }
...@@ -449,11 +449,14 @@ export default { ...@@ -449,11 +449,14 @@ export default {
}) })
}, },
getFileInfo(res){ getFileInfo(res){
console.log ("res",res )
this.form1.pictureUrl = res.url; this.form1.pictureUrl = res.url;
}, },
listRemove(e) { listRemove(e) {
this.form1.pictureUrl = ""; this.form1.pictureUrl = "";
this.fileList = []; this.fileList = [];
console.log("删除了")
}, },
confirmFun(res) { confirmFun(res) {
//确认选择经纬度 //确认选择经纬度
...@@ -588,6 +591,7 @@ export default { ...@@ -588,6 +591,7 @@ export default {
} }
this.open1 = true; this.open1 = true;
this.title1 = "修改隐患信息"; this.title1 = "修改隐患信息";
console.log("this.form1.pictureUrl",this.form1.pictureUrl)
if (this.form1.pictureUrl) { if (this.form1.pictureUrl) {
this.fileList.push({ this.fileList.push({
url: this.form1.pictureUrl, url: this.form1.pictureUrl,
......
...@@ -3,7 +3,7 @@ ...@@ -3,7 +3,7 @@
<!-- 巡检计划信息 --> <!-- 巡检计划信息 -->
<div style="padding-top: 10px;background: #fff;height: 100%;"> <div style="padding-top: 10px;background: #fff;height: 100%;">
<el-row> <el-row>
<el-col :span="24" style="padding-left: 15px;"> <el-col :span="24" style="padding-left: 15px;margin-bottom: -10px;">
<div style="height: 45px;" @click="$router.go(-1)"> <div style="height: 45px;" @click="$router.go(-1)">
<el-button size="medium" type="text" style="font-size: 18px; color: rgb(7, 63, 112);float: left;">返回 <el-button size="medium" type="text" style="font-size: 18px; color: rgb(7, 63, 112);float: left;">返回
</el-button> </el-button>
...@@ -11,9 +11,16 @@ ...@@ -11,9 +11,16 @@
</div> </div>
</el-col> </el-col>
</el-row> </el-row>
<el-row style="width: 100%;height: 40px;">
<el-col :span="24">
<div style="">
<ul><li style="list-style: none;font-weight: 900;font-size: 20px;color: #053b6a;">隐患管理详情</li></ul>
</div>
</el-col>
</el-row>
<el-divider></el-divider> <el-divider></el-divider>
<el-row style="width: 100%;"> <el-row style="width: 100%;margin-top: -15px;margin-bottom: -5px;">
<el-col :span="24"> <el-col :span="24">
<div style="color: #31EAEA;height: 25px;"> <div style="color: #31EAEA;height: 25px;">
<ul><li>详细信息</li></ul> <ul><li>详细信息</li></ul>
...@@ -21,10 +28,10 @@ ...@@ -21,10 +28,10 @@
</el-col> </el-col>
</el-row> </el-row>
<el-row style="width: 100%;padding: 10px;padding-left: 40px;"> <el-row style="width: 100%;padding: 10px;margin-bottom: -20px;">
<el-col :span="12"> <el-col :span="12">
<el-col :span="12"> <el-col :span="12">
<el-form ref="form" v-model="form" :rules="rules" label-width="100px" style="width: 100%;margin-left: 25px;margin-bottom: 25px;"> <el-form ref="form" v-model="form" label-width="100px" style="width: 100%;margin-bottom: 25px;">
<el-form-item label="隐患名称:" prop="troubleName"> <el-form-item label="隐患名称:" prop="troubleName">
<font>{{form.troubleName}}</font> <font>{{form.troubleName}}</font>
</el-form-item> </el-form-item>
...@@ -37,15 +44,13 @@ ...@@ -37,15 +44,13 @@
<font v-if="form.troubleLevel == 2">Ⅱ级</font> <font v-if="form.troubleLevel == 2">Ⅱ级</font>
<font v-if="form.troubleLevel == 3">Ⅲ级</font> <font v-if="form.troubleLevel == 3">Ⅲ级</font>
</el-form-item> </el-form-item>
<el-form-item label="隐患描述:" prop="remarks"> <el-form-item label="隐患描述:" prop="remarks" style="width: 170%;">
<div style="height: 90px;width: 200%; border: 1px solid rgb(187, 183, 183);margin-top: 10px;overflow-y: auto;padding: 5px;border-radius: 5px;">
<font>{{form.remarks}}</font> <font>{{form.remarks}}</font>
</div>
</el-form-item> </el-form-item>
</el-form> </el-form>
</el-col> </el-col>
<el-col :span="12"> <el-col :span="12">
<el-form ref="form" v-model="form" :rules="rules" label-width="100px" style="width: 100%;"> <el-form ref="form" v-model="form" label-width="100px" style="width: 100%;">
<el-form-item label="上报人:" prop="reportManName"> <el-form-item label="上报人:" prop="reportManName">
<font>{{form.reportManName}}</font> <font>{{form.reportManName}}</font>
</el-form-item> </el-form-item>
...@@ -73,44 +78,46 @@ ...@@ -73,44 +78,46 @@
</el-row> </el-row>
<!-- 接单信息 --> <!-- 接单信息 -->
<el-row v-if="form.orderId != null && form.orderId != ''"> <el-row v-if="form.orderId != null && form.orderId != ''" style="width: 100%;">
<el-divider></el-divider> <el-divider></el-divider>
<el-col :span="24"> <el-col :span="24" style="margin-top: -15px;margin-bottom: -10px;">
<div style="color: #31EAEA;width: 100%;height: 40px;"> <div style="color: #31EAEA;width: 100%;height: 40px;">
<ul><li>接单信息</li></ul> <ul><li>接单信息</li></ul>
</div> </div>
</el-col> </el-col>
<el-col :span="5" style="margin-left: 50px;"> <el-row style="width: 100%;padding-left: 10px;margin-bottom: 10px;">
<el-form ref="form" v-model="form" :rules="rules" label-width="100px" style="height: 30px;width: 100%;"> <el-col :span="5">
<el-form-item label="下发人员:" prop="appointInspectorName"> <el-form ref="form" v-model="form" :rules="rules" label-width="100px" style="height: 30px;width: 100%;">
<font>{{form.appointInspectorName}}</font> <el-form-item label="下发人员:" prop="appointInspectorName">
</el-form-item> <font>{{form.appointInspectorName}}</font>
</el-form> </el-form-item>
</el-col> </el-form>
<el-col :span="6"> </el-col>
<el-form ref="form" v-model="form" :rules="rules" label-width="100px" style="height: 30px;width: 100%;"> <el-col :span="6">
<el-form-item label="下发时间:" prop="allotTime"> <el-form ref="form" v-model="form" :rules="rules" label-width="100px" style="height: 30px;width: 100%;">
<font>{{form.allotTime}}</font> <el-form-item label="下发时间:" prop="allotTime">
</el-form-item> <font>{{form.allotTime}}</font>
</el-form> </el-form-item>
</el-col> </el-form>
<el-col :span="6"> </el-col>
<el-form ref="form" v-model="form" :rules="rules" label-width="100px" style="height: 30px;width: 100%;"> <el-col :span="6">
<el-form-item label="工单编号:" prop="orderId"> <el-form ref="form" v-model="form" :rules="rules" label-width="100px" style="height: 30px;width: 100%;">
<template slot-scope="scope"> <el-form-item label="工单编号:" prop="orderId">
<el-button type="text" @click="showDetail(form.orderId)">{{form.orderId}}</el-button> <template slot-scope="scope">
</template> <el-button type="text" @click="showDetail(form.orderId)">{{form.orderId}}</el-button>
</el-form-item> </template>
</el-form> </el-form-item>
</el-col> </el-form>
</el-col>
</el-row>
</el-row> </el-row>
<el-divider></el-divider>
<!-- 处置信息 --> <!-- 处置信息 -->
<div style="width: 100%;font-weight: 600;" v-if="form.feedbackList != null"> <div style="width: 100%;font-weight: 600;margin-top: -15px;" v-if="form.feedbackList != null">
<el-divider></el-divider>
<div style="color: #31EAEA;width: 100%;height: 40px;"> <div style="color: #31EAEA;width: 100%;height: 40px;">
<ul><li>处置信息</li></ul> <ul><li>处置信息</li></ul>
</div> </div>
<div class="block" style="width: 95%;margin-left: 2%;"> <div class="block" style="width: 95%;">
<el-timeline ref="timeline"> <el-timeline ref="timeline">
<el-timeline-item v-for="(activity, index) in form.feedbackList" v-show='index>1?false:true' :key="index" :timestamp="activity.feedbackTime"> <el-timeline-item v-for="(activity, index) in form.feedbackList" v-show='index>1?false:true' :key="index" :timestamp="activity.feedbackTime">
<el-card> <el-card>
...@@ -164,16 +171,16 @@ ...@@ -164,16 +171,16 @@
</el-timeline> </el-timeline>
</div> </div>
<div style="width: 95%;position: relative;" @click="changeDisplay(scope)"> <div style="width: 95%;position: relative;" @click="changeDisplay(scope)">
<i class="el-icon-arrow-down" v-if="isDisplay==false" style="margin-left: 100px;color: #909399;font-size: 14px;"> <i class="el-icon-arrow-down" v-if="isDisplay==false" style="margin-left: 100px;color: #909399;font-size: 14px;margin-bottom: 15px;">
<span style="text-decoration:underline">显示全部</span> <span style="text-decoration:underline;">显示全部</span>
</i> </i>
<i class="el-icon-arrow-up" v-else style="color: #909399;font-size: 14px;margin-left: 100px;"> <i class="el-icon-arrow-up" v-else style="color: #909399;font-size: 14px;margin-left: 100px;margin-bottom: 15px;">
<span style="text-decoration:underline">收起</span> <span style="text-decoration:underline;">收起</span>
</i> </i>
</div> </div>
</div> </div>
<div class="" style="width: 95%; height: 60px;margin-left: 50px;text-align: center;" v-if="form.orderId == '' || form.orderId == null"> <div class="" style="width: 95%; height: 60px;margin-left: 50px;text-align: center;margin-top: 20px;" v-if="form.orderId == '' || form.orderId == null">
<el-button <el-button
size="normal" size="normal"
type="primary" type="primary"
......
<template>
<div class="app-container">
<el-row :gutter="5" type="flex" justify="space-around">
<el-col :lg="4" :xl="4">
<div class="head-container">
<el-input
v-model="videoTree"
placeholder="请输入监控名称"
clearable
size="small"
prefix-icon="el-icon-search"
style="margin-bottom: 20px"
/>
</div>
<div class="head-container">
<el-tree
:data="treeData"
:props="treeProps"
:expand-on-click-node="false"
:filter-node-method="filterNode"
ref="tree"
default-expand-all
@node-click="nodeClick"
style="background-color: white; color: #606266"
>
<template slot-scope="{ node, data }" class="custom-tree-node">
<span>
<i class="iconfont" :class="[data.icon, 'tree-icon']" />
{{ node.label }}
</span>
</template>
</el-tree>
</div>
</el-col>
<el-col :lg="20" :xl="20">
<el-row class="row">
<div class="box" :class="[flag == 1 ? 'boxred' : 'boxblack']">
<div id="newplay1" style="width:100%; height:100%;" @click="chooseWindow(1)">
<span class="novideo">无信号</span>
</div>
</div>
<div class="box" :class="[flag == 2 ? 'boxred' : 'boxblack']">
<div id="newplay2" style="width:100%; height:100%;" @click="chooseWindow(2)">
<span class="novideo">无信号</span>
</div>
</div>
</el-row>
<el-row class="row">
<div class="box" :class="[flag == 3 ? 'boxred' : 'boxblack']">
<div id="newplay3" style="width:100%; height:100%;" @click="chooseWindow(3)">
<span class="novideo">无信号</span>
</div>
</div>
<div class="box" :class="[flag == 4 ? 'boxred' : 'boxblack']">
<div id="newplay4" style="width:100%; height:100%;" @click="chooseWindow(4)">
<span class="novideo">无信号</span>
</div>
</div>
</el-row>
</el-col>
</el-row>
</div>
</template>
<style lang="scss" scped>
.el-tree--highlight-current .el-tree-node.is-current > .el-tree-node__content {
background-color: white;
}
.el-tree--highlight-current .el-tree-node > .el-tree-node__content:hover {
background-color: white;
color: #454547;
}
main > div {
background: #ffffff;
height: calc(100vh - 110px) !important;
padding: 0px 0px 0px 10px !important;
}
.row{
display: flex;
.box{
width: 100%;
text-align: center;
background-color: black;
}
}
.boxred{
border: 1px solid red;
}
.boxblack{
border: 1px solid white;
}
.novideo{
/*padding: 147px 0px 147px 0px;
display: block;*/
line-height: calc((100vh - 130px)/2);
color: white;
}
.el-icon-video-camera{
background-repeat: no-repeat;
background-position: center;
background-image: url("../../../assets/images/video1.png");
background-size: 20px;
}
.el-icon-video-play{
background-repeat: no-repeat;
background-position: center;
background-image: url("../../../assets/images/video2.png");
background-size: 20px;
}
</style>
<script>
export default {
name: "Video",
components: {
},
data() {
return {
videoTree: undefined,
loading: false,
playerWindow: "newplay1",
flag: 1,
treeData: [
{
name: "企业视频监控",
level: 0,
icon: "el-icon-video-camera",
childList: []
}
],
treeProps: {
children: "childList",
label: "name"
},
treecheckedObj: {},
ideoController: {},
}
},
watch: {
// 根据名称筛选视频监控
videoTree(val) {
console.log("val", val)
this.$refs.tree.filter(val);
}
},
methods: {
getTreeData() {
let that = this;
that.treeData[0].childList = [
{
name: "视频监控1",
icon: "el-icon-video-play",
deviceCode: "34020000001110000003_0200000004",
},{
name: "视频监控2",
icon: "el-icon-video-play",
deviceCode: "34020000001110000003_0200000005",
},{
name: "视频监控3",
icon: "el-icon-video-play",
deviceCode: "stream_36_0",
},{
name: "视频监控4",
icon: "el-icon-video-play",
deviceCode: "stream_37_0",
}
];
},
// 筛选节点
filterNode(value, data) {
console.log(value, data)
if (!value) return true;
return data.name.indexOf(value) !== -1;
},
nodeClick(data, node, target) {
let that = this;
that.treecheckedObj = node.data;
if (node.level == "2") {
that.playerWindow = 'newplay' + that.flag;
var player = new WasmPlayer(null, that.playerWindow, null, {Height: true});
console.log(that.playerWindow, node.data.deviceCode)
player.play('http://27.128.189.137:18000/flv/hls/' + that.treecheckedObj.deviceCode + '.flv', 1);
if (that.flag < 4) {
that.flag++;
}
}
},
chooseWindow(data) {
this.flag = data;
this.playerWindow = 'newplay' + this.flag;
},
},
created() {
let that = this;
that.getTreeData();
}
}
</script>
<template> <template>
<div class="app-container detail" style="background-color: rgb(238, 241, 245);"> <div class="app-container detail" style="background-color: rgb(238, 241, 245);">
<!-- 工单信息 --> <!-- 工单信息 -->
<div style="padding-top: 10px;background: #fff;height: 100%;"> <div style="padding-top: 10px;background: #fff;height: 100%;">
<el-row> <el-row>
<el-col :span="24" style="padding-left: 15px;"> <el-col :span="24" style="padding-left: 15px;margin-bottom: -10px;">
<div style="height: 45px;" @click="$router.go(-1)"> <div style="height: 45px;" @click="$router.go(-1)">
<el-button size="medium" type="text" style="font-size: 18px; color: rgb(7, 63, 112);float: left;">返回 <el-button size="medium" type="text" style="font-size: 18px; color: rgb(7, 63, 112);float: left;">返回
</el-button> </el-button>
<div style="float: left;margin-top: 8px;margin-left: 5px;"><img src="../../../assets/logo/fanhui.png" style="width: 25px;" alt=""></div> <div style="float: left;margin-top: 8px;margin-left: 5px;"><img src="../../../assets/logo/fanhui.png"
style="width: 25px;" alt=""></div>
</div>
</el-col>
</el-row>
<el-row style="width: 100%;height: 40px;">
<el-col :span="24">
<div style="">
<ul>
<li style="list-style: none;font-weight: 900;font-size: 20px;color: #053b6a;">工单基础信息详情</li>
</ul>
</div>
</el-col>
</el-row>
<el-steps :active="active" finish-status="success" simple prop="orderStatus" style="margin-top: 5px">
<el-step title="未接收"></el-step>
<el-step title="已接收"></el-step>
<!-- <el-step title="进行中" ></el-step>-->
<el-step title="已反馈"></el-step>
<el-step title="已归档"></el-step>
</el-steps>
<el-divider></el-divider>
<el-row style="width: 100%;margin-top: -15px;">
<el-col :span="24">
<div style="color: #31EAEA;height: 25px;">
<ul>
<li>详细信息</li>
</ul>
</div>
</el-col>
</el-row>
<el-row style="width: 100%;padding: 10px;padding-left: 40px;margin-bottom: -10px;">
<el-col :span="6">
<el-form ref="form" v-model="form" :rules="rules" style="width: 100%;">
<el-form-item label="工单类型:" prop="orderType" style="margin-bottom: 0px;">
<font v-if="form.orderType == 1">巡检信息</font>
<font v-if="form.orderType == 2">隐患信息</font>
<font v-if="form.orderType == 3">报警信息</font>
</el-form-item>
<el-form-item label="工单编号:" prop="orderId" style="margin-bottom: 0px;">
<font>{{form.orderId}}</font>
</el-form-item>
<el-form-item label="工单名称:" prop="orderName" style="margin-bottom: 0px;">
<font>{{form.orderName}}</font>
</el-form-item>
<el-form-item label="工单状态:" prop="orderStatus" style="margin-bottom: 0px;">
<font v-if="form.orderStatus == 0">未接收</font>
<font v-if="form.orderStatus == 1">已接收</font>
<font v-if="form.orderStatus == 2">已反馈</font>
<font v-if="form.orderStatus == 3">已归档</font>
</el-form-item>
<el-form-item label="指定执行人员:" prop="appointInspectorName" style="margin-bottom: 0px;">
<font>{{form.appointInspectorName}}</font>
</el-form-item>
<el-form-item label="工单描述:" prop="remarks" style="margin-bottom: 0px;width: 170%;">
<font>{{form.remarks}}</font>
</el-form-item>
</el-form>
</el-col>
<el-col :span="6">
<el-form ref="form" v-model="form" :rules="rules" style="width: 100%;">
<el-form-item label="设备类型:" prop="deviceType" v-if="form.orderType != 1" style="margin-bottom: 0px;">
<font v-if="form.deviceType == 0">管道</font>
<font v-if="form.deviceType == 1">调压阀</font>
<font v-if="form.deviceType == 2">阀门井</font>
<font v-if="form.deviceType == 3">流量计</font>
<font v-if="form.deviceType == 4">压力表</font>
</el-form-item>
<el-form-item label="设备名称:" prop="deviceName" style="margin-bottom: 0px;">
<font v-if="form.orderType != 1">{{form.deviceName}}</font>
<el-tree style="margin-top: 5px;margin-left: 70px;" :data="deviceOptions" :props="defaultProps" :expand-on-click-node="false" ref="tree"
@node-click="handleNodeClick" v-if="form.orderType == 1" />
</el-form-item>
<el-form-item label="设备位置:" v-if="form.orderType != 1" style="margin-bottom: 0px;">
<font v-if="form.deviceType == 0">{{form.pipeList?form.pipeList[0].pipeAddr:"-"}}</font>
<font v-if="form.deviceType != 0">{{form.deviceInfoList?form.deviceInfoList[0].deviceAddr:"-"}}</font>
</el-form-item>
<el-form-item label="工单进度:" v-if="form.orderType == 1" style="margin-bottom: 0px;">
<font>{{form.finishNum}}/{{form.deviceNum}}</font>
</el-form-item>
<el-form-item label="下发时间:" prop="allotTime" style="margin-bottom: 0px;">
<font>{{form.allotTime}}</font>
</el-form-item>
</el-form>
</el-col>
<el-col :span="12">
<div id="marbox" style="width: 100%;height: 250px;margin-top: -35px; border: 1px solid rgb(218, 213, 213);">
<div style="width: 100%;height: 100%" id="container"></div>
</div>
</el-col>
</el-row>
<!-- 接单信息 -->
<div v-if="form.actualTime != '' && form.actualTime != null">
<el-divider></el-divider>
<el-col :span="24" style="margin-top: -15px;margin-bottom: -10px;">
<div style="color: #31EAEA;width: 100%;height: 40px;">
<ul>
<li>接单信息</li>
</ul>
</div> </div>
</el-col> </el-col>
</el-row> <el-row>
<el-col :span="6"style="margin-bottom: 15px;">
<el-steps :active="active" finish-status="success" simple prop="orderStatus" style="margin-top: 5px"> <el-form ref="form" v-model="form" :rules="rules" label-width="100px" style="height: 30px;width: 100%;">
<el-step title="未接收" ></el-step> <el-form-item label="接单人:" prop="actualInspectorName">
<el-step title="已接收" ></el-step> <font>{{form.actualInspectorName}}</font>
<!-- <el-step title="进行中" ></el-step>--> </el-form-item>
<el-step title="已反馈" ></el-step>
<el-step title="已归档" ></el-step>
</el-steps>
<el-divider></el-divider>
<el-row style="width: 100%;">
<el-col :span="24">
<div style="color: #31EAEA;height: 25px;">
<ul><li>详细信息</li></ul>
</div>
</el-col>
</el-row>
<el-row style="width: 100%;padding: 10px;padding-left: 40px;">
<el-col :span="6">
<el-form ref="form" v-model="form" :rules="rules" style="width: 100%;">
<el-form-item label="工单类型:" prop="orderType" style="margin-bottom: 0px;">
<font v-if="form.orderType == 1">巡检信息</font>
<font v-if="form.orderType == 2">隐患信息</font>
<font v-if="form.orderType == 3">报警信息</font>
</el-form-item>
<el-form-item label="工单编号:" prop="orderId" style="margin-bottom: 0px;">
<font>{{form.orderId}}</font>
</el-form-item>
<el-form-item label="工单名称:" prop="orderName" style="margin-bottom: 0px;">
<font>{{form.orderName}}</font>
</el-form-item>
<el-form-item label="工单状态:" prop="orderStatus" style="margin-bottom: 0px;">
<font v-if="form.orderStatus == 0">未接收</font>
<font v-if="form.orderStatus == 1">已接收</font>
<font v-if="form.orderStatus == 2">已反馈</font>
<font v-if="form.orderStatus == 3">已归档</font>
</el-form-item>
<el-form-item label="指定执行人员:" prop="appointInspectorName" style="margin-bottom: 0px;">
<font>{{form.appointInspectorName}}</font>
</el-form-item>
<el-form-item label="工单描述:" prop="remarks" style="margin-bottom: 0px;">
<font>{{form.remarks}}</font>
</el-form-item>
</el-form> </el-form>
</el-col> </el-col>
<el-col :span="6"> <el-col :span="6">
<el-form ref="form" v-model="form" :rules="rules" style="width: 100%;"> <el-form ref="form" v-model="form" :rules="rules" label-width="100px" style="height: 30px;width: 100%;">
<el-form-item label="设备类型:" prop="deviceType" v-if="form.orderType != 1" style="margin-bottom: 0px;"> <el-form-item label="接单时间:" prop="actualTime">
<font v-if="form.deviceType == 0">管道</font> <font>{{form.actualTime}}</font>
<font v-if="form.deviceType == 1">调压阀</font> </el-form-item>
<font v-if="form.deviceType == 2">阀门井</font>
<font v-if="form.deviceType == 3">流量计</font>
<font v-if="form.deviceType == 4">压力表</font>
</el-form-item>
<el-form-item label="设备名称:" prop="deviceName" style="margin-bottom: 0px;">
<font v-if="form.orderType != 1">{{form.deviceName}}</font>
<el-tree
:data="deviceOptions"
:props="defaultProps"
:expand-on-click-node="false"
ref="tree"
@node-click="handleNodeClick"
v-if="form.orderType == 1"
/>
</el-form-item>
<el-form-item label="设备位置:" v-if="form.orderType != 1" style="margin-bottom: 0px;">
<font v-if="form.deviceType == 0">{{form.pipeList?form.pipeList[0].pipeAddr:"-"}}</font>
<font v-if="form.deviceType != 0">{{form.deviceInfoList?form.deviceInfoList[0].deviceAddr:"-"}}</font>
</el-form-item>
<el-form-item label="工单进度:" v-if="form.orderType == 1" style="margin-bottom: 0px;">
<font>{{form.finishNum}}/{{form.deviceNum}}</font>
</el-form-item>
<el-form-item label="下发时间:" prop="allotTime" style="margin-bottom: 0px;">
<font>{{form.allotTime}}</font>
</el-form-item>
</el-form> </el-form>
</el-col> </el-col>
<el-col :span="12"> </el-row>
<div id="marbox" style="width: 100%;height: 250px;margin-top: -35px; border: 1px solid rgb(218, 213, 213);"> </div>
<div style="width: 100%;height: 100%" id="container"></div>
</div>
</el-col>
</el-row>
<!-- 接单信息 -->
<div v-if="form.actualTime != '' && form.actualTime != null">
<el-divider></el-divider>
<el-row>
<el-col :span="24">
<div style="color: #31EAEA;width: 100%;height: 40px;">
<ul><li>接单信息</li></ul>
</div>
</el-col>
</el-row>
<el-row>
<el-col :span="6">
<el-form ref="form" v-model="form" :rules="rules" label-width="100px" style="height: 30px;width: 100%;">
<el-form-item label="接单人:" prop="actualInspectorName">
<font>{{form.actualInspectorName}}</font>
</el-form-item>
</el-form>
</el-col>
<el-col :span="6">
<el-form ref="form" v-model="form" :rules="rules" label-width="100px" style="height: 30px;width: 100%;">
<el-form-item label="接单时间:" prop="actualTime">
<font>{{form.actualTime}}</font>
</el-form-item>
</el-form>
</el-col>
</el-row>
<el-divider></el-divider>
</div>
<!-- 反馈信息 --> <!-- 反馈信息 -->
<div style="width: 100%;font-weight: 600;" v-if="form.feedbackList != null"> <div style="width: 100%;font-weight: 600;" v-if="form.feedbackList != null">
<div style="color: #31EAEA;width: 100%;height: 40px;"> <el-divider></el-divider>
<ul><li>反馈信息</li></ul> <div style="color: #31EAEA;width: 100%;height: 40px;">
</div> <ul>
<div class="block" style="width: 95%;margin-left: 2%;"> <li>反馈信息</li>
<el-timeline ref="timeline"> </ul>
<el-timeline-item v-for="(activity, index) in form.feedbackList" v-show='index>1?false:true' :key="index" :timestamp="activity.feedbackTime">
<el-card>
<el-row>
<el-col :span="6">
<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>是否有隐患:
<span v-if="activity.isHiddenDanger == 1"></span>
<span v-if="activity.isHiddenDanger == 2"></span>
</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 style="width: 600px;">
<p>反馈信息:
<span>{{activity.contents}}</span>
</p>
</div>
</el-col>
<el-col :span="6">
<p>设备名称:{{activity.deviceName}}</p>
<p>反馈时间:{{activity.feedbackTime}}</p>
</el-col>
<el-col :span="12">
<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: 90px;"></el-image>
</div>
<div class="feedbackTime">
<el-image :src="activity.pictureUrl2" :preview-src-list="[activity.pictureUrl2]" v-if="activity.pictureUrl2 != null && activity.pictureUrl2 != ''" style="width: 90px;"></el-image>
</div>
<div class="feedbackTime">
<el-image :src="activity.pictureUrl3" :preview-src-list="[activity.pictureUrl3]" v-if="activity.pictureUrl3 != null && activity.pictureUrl3 != ''" style="width: 90px;"></el-image>
</div>
</div>
</el-col>
</el-row>
</el-card>
</el-timeline-item>
</el-timeline>
</div>
<div style="width: 95%;position: relative;" @click="changeDisplay(scope)">
<!-- <el-button type="primary"> -->
<i class="el-icon-arrow-down" v-if="isDisplay==false" style="margin-left: 100px;color: #909399;font-size: 14px;">
<span style="text-decoration:underline">显示全部</span>
</i>
<i class="el-icon-arrow-up" v-else style="color: #909399;font-size: 14px;margin-left: 100px;">
<span style="text-decoration:underline">收起</span>
</i>
<!-- </el-button> -->
</div>
</div> </div>
<div class="block" style="width: 95%;">
<el-timeline ref="timeline">
<el-timeline-item v-for="(activity, index) in form.feedbackList" v-show='index>1?false:true' :key="index"
:timestamp="activity.feedbackTime">
<el-card>
<el-row>
<el-col :span="6">
<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>是否有隐患:
<div v-if="form.orderStatus == 3"> <span v-if="activity.isHiddenDanger == 1"></span>
<el-divider></el-divider> <span v-if="activity.isHiddenDanger == 2"></span>
<el-row> </p>
<el-col :span="24"> <p v-if="activity.isHiddenDanger == 1">处理状态:
<div style="color: #31EAEA;width: 100%;height: 40px;"> <span v-if="activity.dealStatus == 1">不需要处理</span>
<ul><li>归档信息</li></ul> <span v-if="activity.dealStatus == 2">已处理完成</span>
</div> <span v-if="activity.dealStatus == 3">未处理完成</span>
</el-col> </p>
</el-row> <div style="width: 600px;">
<el-row style="padding-left: 40px;"> <p>反馈信息:
<el-col :span="6"> <span>{{activity.contents}}</span>
<el-form ref="form" v-model="form" :rules="rules" label-width="100px" style="height: 30px;width: 100%;"> </p>
<el-form-item label="归档信息:" prop="archiving"> </div>
<font>{{form.archiving}}</font> </el-col>
</el-form-item> <el-col :span="6">
</el-form> <p>设备名称:{{activity.deviceName}}</p>
</el-col> <p>反馈时间:{{activity.feedbackTime}}</p>
<el-col :span="6"> </el-col>
<el-form ref="form" v-model="form" :rules="rules" label-width="100px" style="height: 30px;width: 100%;"> <el-col :span="12">
<el-form-item label="归档时间:" prop="updateTime"> <div class="feedbackTime-div">
<font>{{form.updateTime}}</font> <div class="feedbackTime">
</el-form-item> <el-image :src="activity.pictureUrl1" :preview-src-list="[activity.pictureUrl1]"
</el-form> v-if="activity.pictureUrl1 != null && activity.pictureUrl1 != ''" style="width: 100%;">
</el-col> </el-image>
</el-row> </div>
<div class="feedbackTime">
<el-image :src="activity.pictureUrl2" :preview-src-list="[activity.pictureUrl2]"
v-if="activity.pictureUrl2 != null && activity.pictureUrl2 != ''" style="width: 100%;">
</el-image>
</div>
<div class="feedbackTime">
<el-image :src="activity.pictureUrl3" :preview-src-list="[activity.pictureUrl3]"
v-if="activity.pictureUrl3 != null && activity.pictureUrl3 != ''" style="width: 100%;">
</el-image>
</div>
</div>
</el-col>
</el-row>
</el-card>
</el-timeline-item>
</el-timeline>
</div> </div>
<div style="width: 95%;position: relative;" @click="changeDisplay(scope)">
<!-- <el-button type="primary"> -->
<i class="el-icon-arrow-down" v-if="isDisplay==false"
style="margin-left: 100px;color: #909399;font-size: 14px;">
<span style="text-decoration:underline">显示全部</span>
</i>
<i class="el-icon-arrow-up" v-else style="color: #909399;font-size: 14px;margin-left: 100px;">
<span style="text-decoration:underline">收起</span>
</i>
<!-- </el-button> -->
<!-- 归档 -->
<div class="" style="width: 95%; height: 60px;margin-left: 50px;text-align: center;">
<el-button
type="primary"
size="normal"
icon="el-icon-edit"
@click="handleUpdate(form.orderId)"
v-hasPermi="['workOrder:basicsInfo:edit']"
v-if="form.orderStatus == 0"
>修改</el-button>
<el-button
type="primary"
size="normal"
icon="el-icon-edit"
@click="handleFinish(form.orderId)"
v-hasPermi="['workOrder:basicsInfo:editStatus']"
v-if="form.orderStatus == 2"
>归档</el-button>
<el-dialog :title="title" :visible.sync="open" width="800px" append-to-body>
<el-form ref="form" :model="form" :rules="rules" label-width="100px">
<div v-if="this.title == '工单信息修改'">
<el-form-item label="工单名称" prop="orderName">
<el-input v-model="form.orderName" placeholder="请输入工单名称" />
</el-form-item>
<el-form-item label="指定执行人员" prop="appointInspector">
<el-select v-model="form.appointInspector" placeholder="请选择执行人员" filterable clearable size="small" @change="setUserId">
<el-option
v-for="item in inspector"
:key="item.userId"
:label="item.nickName"
:value="item.userId"
></el-option>
</el-select>
</el-form-item>
<el-form-item label="工单描述" prop="remarks">
<el-input v-model="form.remarks" type="textarea" placeholder="请输入工单描述" />
</el-form-item>
</div>
<div v-if="this.title == '工单信息归档'">
<el-form-item label="工单名称" prop="orderName">
<font>{{form.orderName}}</font>
</el-form-item>
<el-form-item label="工单类型" prop="orderType">
<span type="primary" v-if="form.orderType == 1">巡检信息</span>
<span type="primary" v-if="form.orderType == 2">隐患信息</span>
<span type="primary" v-if="form.orderType == 3">报警信息</span>
</el-form-item>
<el-form-item label="工单编号" prop="orderId">
<font>{{form.orderId}}</font>
</el-form-item>
<el-form-item label="归档信息" prop="archiving">
<el-input v-model="form.archiving" type="textarea" placeholder="请输入归档信息" />
</el-form-item>
</div>
</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>
</div> </div>
</div> </div>
<!-- 归档信息 -->
<div v-if="form.orderStatus == 3">
<el-divider></el-divider>
<el-row>
<el-col :span="24">
<div style="color: #31EAEA;width: 100%;height: 40px;">
<ul>
<li>归档信息</li>
</ul>
</div>
</el-col>
</el-row>
<el-row style="padding-left: 40px;">
<el-col :span="6">
<el-form ref="form" v-model="form" :rules="rules" label-width="100px" style="height: 30px;width: 100%;">
<el-form-item label="归档信息:" prop="archiving">
<font>{{form.archiving}}</font>
</el-form-item>
</el-form>
</el-col>
<el-col :span="6">
<el-form ref="form" v-model="form" :rules="rules" label-width="100px" style="height: 30px;width: 100%;">
<el-form-item label="归档时间:" prop="updateTime">
<font>{{form.updateTime}}</font>
</el-form-item>
</el-form>
</el-col>
</el-row>
</div>
<!-- 归档 -->
<div class="" style="width: 95%;margin-left: 50px;text-align: center;margin-top: 10px;">
<el-button style="margin-bottom: 15px;margin-top: 10px;" type="primary" size="normal" icon="el-icon-edit" @click="handleUpdate(form.orderId)"
v-hasPermi="['workOrder:basicsInfo:edit']" v-if="form.orderStatus == 0">修改</el-button>
<el-button style="margin-bottom: 15px;margin-top: 10px;" type="primary" size="normal" icon="el-icon-edit" @click="handleFinish(form.orderId)"
v-hasPermi="['workOrder:basicsInfo:editStatus']" v-if="form.orderStatus == 2">归档</el-button>
<el-dialog :title="title" :visible.sync="open" width="800px" append-to-body>
<el-form ref="form" :model="form" :rules="rules" label-width="100px">
<div v-if="this.title == '工单信息修改'">
<el-form-item label="工单名称" prop="orderName">
<el-input v-model="form.orderName" placeholder="请输入工单名称" />
</el-form-item>
<el-form-item label="指定执行人员" prop="appointInspector">
<el-select v-model="form.appointInspector" placeholder="请选择执行人员" filterable clearable size="small"
@change="setUserId">
<el-option v-for="item in inspector" :key="item.userId" :label="item.nickName" :value="item.userId">
</el-option>
</el-select>
</el-form-item>
<el-form-item label="工单描述" prop="remarks">
<el-input v-model="form.remarks" type="textarea" placeholder="请输入工单描述" />
</el-form-item>
</div>
<div v-if="this.title == '工单信息归档'">
<el-form-item label="工单名称" prop="orderName">
<font>{{form.orderName}}</font>
</el-form-item>
<el-form-item label="工单类型" prop="orderType">
<span type="primary" v-if="form.orderType == 1">巡检信息</span>
<span type="primary" v-if="form.orderType == 2">隐患信息</span>
<span type="primary" v-if="form.orderType == 3">报警信息</span>
</el-form-item>
<el-form-item label="工单编号" prop="orderId">
<font>{{form.orderId}}</font>
</el-form-item>
<el-form-item label="归档信息" prop="archiving">
<el-input v-model="form.archiving" type="textarea" placeholder="请输入归档信息" />
</el-form-item>
</div>
</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>
</div>
</div> </div>
</template> </div>
</template>
<script> <script>
import { listBasicsInfo, getBasicsInfo, delBasicsInfo, addBasicsInfo, updateBasicsInfo, updateOrderStatus, exportBasicsInfo } from "@/api/workOrder/basicsInfo"; import { listBasicsInfo, getBasicsInfo, delBasicsInfo, addBasicsInfo, updateBasicsInfo, updateOrderStatus, exportBasicsInfo } from "@/api/workOrder/basicsInfo";
import { deviceTree } from "@/api/device/deviceInfo"; import { deviceTree } from "@/api/device/deviceInfo";
import gaodeMap from "utils/gaodeMap.js"; import gaodeMap from "utils/gaodeMap.js";
import {map, DEVICE_TYPE} from "utils/gaodeMap.js"; import { map, DEVICE_TYPE } from "utils/gaodeMap.js";
import { inspectorList } from "@/api/system/user"; import { inspectorList } from "@/api/system/user";
export default { export default {
name: "BasicsInfo", name: "BasicsInfo",
components: { components: {
}, },
data() { data() {
return { return {
inspector: [], inspector: [],
isDisplay:false, isDisplay: false,
dialogImageUrl: '', dialogImageUrl: '',
dialogVisible: false, dialogVisible: false,
disabled: false, disabled: false,
...@@ -338,7 +340,7 @@ export default { ...@@ -338,7 +340,7 @@ export default {
open: false, open: false,
// 工单状态字典 // 工单状态字典
typeOptions: [], typeOptions: [],
pickerOptions:[], pickerOptions: [],
// 工单类型字典 // 工单类型字典
ordertypeOptions: [], ordertypeOptions: [],
// 设备树选项 // 设备树选项
...@@ -371,9 +373,9 @@ export default { ...@@ -371,9 +373,9 @@ export default {
// 表单校验 // 表单校验
rules: { rules: {
}, },
active : 0, active: 0,
orderId : "", orderId: "",
showAndHide : false showAndHide: false
}; };
}, },
created() { created() {
...@@ -387,15 +389,14 @@ export default { ...@@ -387,15 +389,14 @@ export default {
this.getDicts("t_order_type").then(response => { this.getDicts("t_order_type").then(response => {
this.ordertypeOptions = response.data; this.ordertypeOptions = response.data;
}); });
this.getBasicsInfo(); // this.getBasicsInfo();
}, },
mounted(){ mounted() {
let gaoMap = new gaodeMap("石家庄");
this.gaoMap = gaoMap;
this.getBasicsInfo(); this.getBasicsInfo();
}, },
methods: { methods: {
getInspectorList(){ getInspectorList() {
this.loading = true; this.loading = true;
inspectorList().then(response => { inspectorList().then(response => {
this.inspector = response.data; this.inspector = response.data;
...@@ -403,19 +404,19 @@ export default { ...@@ -403,19 +404,19 @@ export default {
}); });
}, },
// 点击按钮显示隐藏 // 点击按钮显示隐藏
changeDisplay(e){ changeDisplay(e) {
this.isDisplay = !this.isDisplay this.isDisplay = !this.isDisplay
let $timeline = this.$refs.timeline; let $timeline = this.$refs.timeline;
if(!this.showAndHide){ if (!this.showAndHide) {
for(let i = 0; i< $timeline.$children.length; i++){ for (let i = 0; i < $timeline.$children.length; i++) {
if(i>1){ if (i > 1) {
$timeline.$children[i].$el.style.display = "block"; $timeline.$children[i].$el.style.display = "block";
} }
} }
this.showAndHide = true; this.showAndHide = true;
}else{ } else {
for(let i = 0; i< $timeline.$children.length; i++){ for (let i = 0; i < $timeline.$children.length; i++) {
if(i>1){ if (i > 1) {
$timeline.$children[i].$el.style.display = "none"; $timeline.$children[i].$el.style.display = "none";
} }
} }
...@@ -446,32 +447,43 @@ export default { ...@@ -446,32 +447,43 @@ export default {
this.loading = false; this.loading = false;
}); });
}, },
getBasicsInfo (){ getBasicsInfo() {
getBasicsInfo(this.orderId).then(response =>{ !
getBasicsInfo(this.orderId).then(response => {
this.form = response.data; this.form = response.data;
console.log(this.form)
this.active = parseInt(response.data.orderStatus) + 1; this.active = parseInt(response.data.orderStatus) + 1;
if(this.form.deviceInfoList.length>0){ if (this.form.deviceInfoList.length > 0) {
console.log("this.form.deviceInfoList",this.form.deviceInfoList) console.log("this.form.deviceInfoList", this.form.deviceInfoList)
this.gaoMap.resetMapCenter([this.form.deviceInfoList[0].longitude,this.form.deviceInfoList[0].latitude]); let gaoMap = new gaodeMap("石家庄", [this.form.deviceInfoList[0].longitude, this.form.deviceInfoList[0].latitude]);
this.gaoMap = gaoMap;
// this.gaoMap.resetMapCenter([this.form.deviceInfoList[0].longitude, this.form.deviceInfoList[0].latitude]);
for (var i = 0; i < this.form.deviceInfoList.length; i++) {
let obj = this.form.deviceInfoList[i];
this.gaoMap.addMarker(DEVICE_TYPE.WORKORDER, obj);
} }
for(var i = 0; i < this.form.deviceInfoList.length; i++){
let obj = this.form.deviceInfoList[i];
this.gaoMap.addMarker(DEVICE_TYPE.WORKORDER, obj);
} }
if(this.form.pipeList != null){
for(var i = 0; i < this.form.pipeList.length; i++){ if (this.form.pipeList != null) {
console.log("this.form.pipeList",this.form.pipeList[0].coordinates)
const {coordinates} = this.form.pipeList[0];
const path1 = eval(coordinates)[0];
const path2 = eval(coordinates)[1];
const path3 = [(Number(path1[0]) + Number(path2[0])) / 2, (Number(path1[1]) + Number(path2[1])) / 2];
let gaoMap = new gaodeMap("石家庄",path3);
this.gaoMap = gaoMap;
for (var i = 0; i < this.form.pipeList.length; i++) {
let obj = this.form.pipeList[i]; let obj = this.form.pipeList[i];
this.gaoMap.onlyLine(obj); this.gaoMap.onlyLine(obj);
} }
} }
if(this.form.orderType == '1') { if (this.form.orderType == '1') {
// 获取设备列表树 // 获取设备列表树
let data = { let data = {
key1:this.form.deviceInfoList, key1: this.form.deviceInfoList,
key2:this.form.pipeList key2: this.form.pipeList
}; };
deviceTree(data).then(response => { deviceTree(data).then(response => {
this.deviceOptions[0].childList = response.data; this.deviceOptions[0].childList = response.data;
...@@ -488,7 +500,7 @@ export default { ...@@ -488,7 +500,7 @@ export default {
handleNodeClick(data) { handleNodeClick(data) {
}, },
setUserId(val){ setUserId(val) {
this.form.appointInspector = val; this.form.appointInspector = val;
}, },
// 取消按钮 // 取消按钮
...@@ -525,7 +537,7 @@ export default { ...@@ -525,7 +537,7 @@ export default {
// 多选框选中数据 // 多选框选中数据
handleSelectionChange(selection) { handleSelectionChange(selection) {
this.ids = selection.map(item => item.orderId) this.ids = selection.map(item => item.orderId)
this.single = selection.length!==1 this.single = selection.length !== 1
this.multiple = !selection.length this.multiple = !selection.length
}, },
/** 新增按钮操作 */ /** 新增按钮操作 */
...@@ -553,7 +565,7 @@ export default { ...@@ -553,7 +565,7 @@ export default {
this.title = "工单信息修改"; this.title = "工单信息修改";
}); });
}, },
/** 提交按钮 */ /** 提交按钮 */
submitForm() { submitForm() {
this.$refs["form"].validate(valid => { this.$refs["form"].validate(valid => {
if (valid) { if (valid) {
...@@ -563,7 +575,7 @@ export default { ...@@ -563,7 +575,7 @@ export default {
this.open = false; this.open = false;
location.reload(); location.reload();
}); });
} else if(this.form.orderStatus == '2'){ } else if (this.form.orderStatus == '2') {
updateOrderStatus(this.form).then(response => { updateOrderStatus(this.form).then(response => {
this.msgSuccess("操作成功"); this.msgSuccess("操作成功");
this.open = false; this.open = false;
...@@ -577,79 +589,84 @@ export default { ...@@ -577,79 +589,84 @@ export default {
handleDelete(row) { handleDelete(row) {
const orderIds = row.orderId || this.ids; const orderIds = row.orderId || this.ids;
this.$confirm('是否确认删除工单基础信息编号为"' + orderIds + '"的数据项?', "警告", { this.$confirm('是否确认删除工单基础信息编号为"' + orderIds + '"的数据项?', "警告", {
confirmButtonText: "确定", confirmButtonText: "确定",
cancelButtonText: "取消", cancelButtonText: "取消",
type: "warning" type: "warning"
}).then(function() { }).then(function () {
return delBasicsInfo(orderIds); return delBasicsInfo(orderIds);
}).then(() => { }).then(() => {
this.getList(); this.getList();
this.msgSuccess("删除成功"); this.msgSuccess("删除成功");
}).catch(() => {}); }).catch(() => { });
}, },
/** 导出按钮操作 */ /** 导出按钮操作 */
handleExport() { handleExport() {
const queryParams = this.queryParams; const queryParams = this.queryParams;
this.$confirm('是否确认导出所有工单基础信息数据项?', "警告", { this.$confirm('是否确认导出所有工单基础信息数据项?', "警告", {
confirmButtonText: "确定", confirmButtonText: "确定",
cancelButtonText: "取消", cancelButtonText: "取消",
type: "warning" type: "warning"
}).then(() => { }).then(() => {
this.exportLoading = true; this.exportLoading = true;
return exportBasicsInfo(queryParams); return exportBasicsInfo(queryParams);
}).then(response => { }).then(response => {
this.download(response.msg); this.download(response.msg);
this.exportLoading = false; this.exportLoading = false;
}).catch(() => {}); }).catch(() => { });
} }
} }
} }
</script> </script>
<style> <style>
.el-tree-node__content{ .el-tree-node__content {
width: 150px; width: 150px;
} }
.el-divider--horizontal {
display: block; .el-divider--horizontal {
height: 1px; display: block;
width: 100%; height: 1px;
margin: 20px 0; width: 100%;
} margin: 20px 0;
.feedbackTime-div{ }
float: left;margin-left: 150px;margin-top: 10px;
} .feedbackTime-div {
.feedbackTime{ width: 100%;
height: 120px; float: left;
width: 120px; margin-left: 150px;
float: left; margin-top: 10px;
margin-left: 15px; }
margin-top: 5px;
margin-bottom: 15px; .feedbackTime {
display: flex; width: 15%;
justify-content: center; float: left;
align-items: center; margin-left: 15px;
} margin-top: 5px;
.el-card__body { margin-bottom: 5px;
padding: 5px 20px 20px 20px; display: flex;
} justify-content: center;
.el-tree{ align-items: center;
margin-top: 5px; }
margin-left: 70px; .el-card__body {
} padding: 5px 20px 20px 20px;
.avatar-uploader{ }
width: 25%;
float: left; .avatar-uploader {
} width: 25%;
.avatar-uploader .el-upload { float: left;
}
.avatar-uploader .el-upload {
border: 1px dashed #d9d9d9; border: 1px dashed #d9d9d9;
border-radius: 6px; border-radius: 6px;
cursor: pointer; cursor: pointer;
position: relative; position: relative;
overflow: hidden; overflow: hidden;
} }
.avatar-uploader .el-upload:hover { .avatar-uploader .el-upload:hover {
border-color: #409EFF; border-color: #409EFF;
} }
.avatar-uploader-icon { .avatar-uploader-icon {
font-size: 28px; font-size: 28px;
color: #8c939d; color: #8c939d;
...@@ -658,13 +675,15 @@ export default { ...@@ -658,13 +675,15 @@ export default {
line-height: 178px; line-height: 178px;
text-align: center; text-align: center;
} }
.avatar { .avatar {
width: 178px; width: 178px;
height: 178px; height: 178px;
display: block; display: block;
} }
li{
li {
font-size: 15px; font-size: 15px;
font-weight: 900; font-weight: 900;
} }
</style> </style>
\ No newline at end of file
...@@ -3,13 +3,20 @@ ...@@ -3,13 +3,20 @@
<!-- 工单信息 --> <!-- 工单信息 -->
<div style="padding-top: 10px;background: #fff;height: 100%;"> <div style="padding-top: 10px;background: #fff;height: 100%;">
<el-row> <el-row>
<el-col :span="24" style="padding-left: 15px;"> <el-col :span="24" style="padding-left: 15px;margin-bottom: -10px;">
<div style="height: 45px;" @click="$router.go(-1)"> <div style="height: 45px;" @click="$router.go(-1)">
<el-button size="medium" type="text" style="font-size: 18px; color: rgb(7, 63, 112);float: left;">返回 <el-button size="medium" type="text" style="font-size: 18px; color: rgb(7, 63, 112);float: left;">返回
</el-button> </el-button>
<div style="float: left;margin-top: 8px;margin-left: 5px;"><img src="../../../assets/logo/fanhui.png" style="width: 25px;" alt=""></div> <div style="float: left;margin-top: 8px;margin-left: 5px;"><img src="../../../assets/logo/fanhui.png" style="width: 25px;" alt=""></div>
</div> </div>
</el-col> </el-col>
</el-row>
<el-row style="width: 100%;height: 40px;">
<el-col :span="24">
<div style="">
<ul><li style="list-style: none;font-weight: 900;font-size: 20px;color: #053b6a;">工单反馈详情</li></ul>
</div>
</el-col>
</el-row> </el-row>
<el-steps :active="active" finish-status="success" simple prop="orderStatus" style="margin-top: 5px"> <el-steps :active="active" finish-status="success" simple prop="orderStatus" style="margin-top: 5px">
<el-step title="未接收" ></el-step> <el-step title="未接收" ></el-step>
...@@ -20,14 +27,14 @@ ...@@ -20,14 +27,14 @@
</el-steps> </el-steps>
<el-divider></el-divider> <el-divider></el-divider>
<el-row style="width: 100%;"> <el-row style="width: 100%;margin-top: -15px;">
<el-col :span="24"> <el-col :span="24">
<div style="color: #31EAEA;height: 25px;"> <div style="color: #31EAEA;height: 25px;">
<ul><li>详细信息</li></ul> <ul><li>详细信息</li></ul>
</div> </div>
</el-col> </el-col>
</el-row> </el-row>
<el-row style="width: 100%;padding: 10px;padding-left: 40px;"> <el-row style="width: 100%;padding: 10px;padding-left: 40px;margin-bottom: -10px;">
<el-col :span="6"> <el-col :span="6">
<el-form ref="form" v-model="form" :rules="rules" label-width="100px" style="width: 100%;"> <el-form ref="form" v-model="form" :rules="rules" label-width="100px" style="width: 100%;">
<el-form-item label="工单类型:" prop="orderType"> <el-form-item label="工单类型:" prop="orderType">
...@@ -50,7 +57,7 @@ ...@@ -50,7 +57,7 @@
<el-form-item label="指定执行人员:" prop="appointInspectorName"> <el-form-item label="指定执行人员:" prop="appointInspectorName">
<font>{{form.appointInspectorName}}</font> <font>{{form.appointInspectorName}}</font>
</el-form-item> </el-form-item>
<el-form-item label="工单描述:" prop="remarks"> <el-form-item label="工单描述:" prop="remarks" style="width: 170%;">
<font>{{form.remarks}}</font> <font>{{form.remarks}}</font>
</el-form-item> </el-form-item>
</el-form> </el-form>
...@@ -101,7 +108,7 @@ ...@@ -101,7 +108,7 @@
<!-- 接单信息 --> <!-- 接单信息 -->
<div v-if="form.actualTime != '' && form.actualTime != null"> <div v-if="form.actualTime != '' && form.actualTime != null">
<el-divider></el-divider> <el-divider></el-divider>
<el-row> <el-row style="margin-top: -15px;">
<el-col :span="24"> <el-col :span="24">
<div style="color: #31EAEA;width: 100%;height: 40px;"> <div style="color: #31EAEA;width: 100%;height: 40px;">
<ul><li>接单信息</li></ul> <ul><li>接单信息</li></ul>
...@@ -125,13 +132,13 @@ ...@@ -125,13 +132,13 @@
</el-col> </el-col>
</el-row> </el-row>
</div> </div>
<el-divider></el-divider>
<!-- 反馈信息 --> <!-- 反馈信息 -->
<div style="width: 100%;font-weight: 600;" v-if="form.feedbackList != null"> <div style="width: 100%;font-weight: 600;" v-if="form.feedbackList != null">
<el-divider></el-divider>
<div style="color: #31EAEA;width: 100%;height: 40px;"> <div style="color: #31EAEA;width: 100%;height: 40px;">
<ul><li>反馈信息</li></ul> <ul><li>反馈信息</li></ul>
</div> </div>
<div class="block" style="width: 95%;margin-left: 2%;"> <div class="block" style="width: 95%;">
<el-timeline ref="timeline"> <el-timeline ref="timeline">
<el-timeline-item v-for="(activity, index) in form.feedbackList" v-show='index>1?false:true' :key="index" :timestamp="activity.feedbackTime"> <el-timeline-item v-for="(activity, index) in form.feedbackList" v-show='index>1?false:true' :key="index" :timestamp="activity.feedbackTime">
<el-card> <el-card>
...@@ -167,13 +174,13 @@ ...@@ -167,13 +174,13 @@
<el-col :span="12"> <el-col :span="12">
<div class="feedbackTime-div"> <div class="feedbackTime-div">
<div class="feedbackTime"> <div class="feedbackTime">
<el-image :src="activity.pictureUrl1" :preview-src-list="[activity.pictureUrl1]" v-if="activity.pictureUrl1 != null && activity.pictureUrl1 != ''" style="width: 90px;"></el-image> <el-image :src="activity.pictureUrl1" :preview-src-list="[activity.pictureUrl1]" v-if="activity.pictureUrl1 != null && activity.pictureUrl1 != ''" style="width: 100%;"></el-image>
</div> </div>
<div class="feedbackTime"> <div class="feedbackTime">
<el-image :src="activity.pictureUrl2" :preview-src-list="[activity.pictureUrl2]" v-if="activity.pictureUrl2 != null && activity.pictureUrl2 != ''" style="width: 90px;"></el-image> <el-image :src="activity.pictureUrl2" :preview-src-list="[activity.pictureUrl2]" v-if="activity.pictureUrl2 != null && activity.pictureUrl2 != ''" style="width: 100%;"></el-image>
</div> </div>
<div class="feedbackTime"> <div class="feedbackTime">
<el-image :src="activity.pictureUrl3" :preview-src-list="[activity.pictureUrl3]" v-if="activity.pictureUrl3 != null && activity.pictureUrl3 != ''" style="width: 90px;"></el-image> <el-image :src="activity.pictureUrl3" :preview-src-list="[activity.pictureUrl3]" v-if="activity.pictureUrl3 != null && activity.pictureUrl3 != ''" style="width: 100%;"></el-image>
</div> </div>
</div> </div>
</el-col> </el-col>
...@@ -194,11 +201,12 @@ ...@@ -194,11 +201,12 @@
<!-- 归档 --> <!-- 归档 -->
<div class="" style="width: 95%; height: 60px;margin-left: 50px;text-align: center;"> <div class="" style="width: 95%;margin-left: 50px;text-align: center;margin-top: 10px;">
<el-button <el-button
type="primary" type="primary"
size="normal" size="normal"
icon="el-icon-edit" icon="el-icon-edit"
style="margin-bottom: 15px;"
@click="handleFeedback(form.orderId)" @click="handleFeedback(form.orderId)"
v-hasPermi="['workOrder:basicsInfo:editStatus']" v-hasPermi="['workOrder:basicsInfo:editStatus']"
v-if="form.orderStatus == 1 || form.orderStatus == 2" v-if="form.orderStatus == 1 || form.orderStatus == 2"
...@@ -269,7 +277,7 @@ ...@@ -269,7 +277,7 @@
import FileUpload from '@/components/FileUpload'; import FileUpload from '@/components/FileUpload';
import Cookie from 'js-cookie'; import Cookie from 'js-cookie';
import { deviceTree } from "@/api/device/deviceInfo"; import { deviceTree } from "@/api/device/deviceInfo";
import gaodeMap from "utils/gaodeMap.js"; import c from "utils/gaodeMap.js";
import {map, DEVICE_TYPE} from "utils/gaodeMap.js"; import {map, DEVICE_TYPE} from "utils/gaodeMap.js";
import { inspectorList } from "@/api/system/user"; import { inspectorList } from "@/api/system/user";
...@@ -547,15 +555,17 @@ export default { ...@@ -547,15 +555,17 @@ export default {
margin: 20px 0; margin: 20px 0;
} }
.feedbackTime-div{ .feedbackTime-div{
float: left;margin-left: 150px;margin-top: 10px; width: 100%;
float: left;
margin-left: 150px;
margin-top: 10px;
} }
.feedbackTime{ .feedbackTime{
height: 120px; width: 15%;
width: 120px;
float: left; float: left;
margin-left: 15px; margin-left: 15px;
margin-top: 5px; margin-top: 5px;
margin-bottom: 15px; margin-bottom: 5px;
display: flex; display: flex;
justify-content: center; justify-content: center;
align-items: center; align-items: center;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment