Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Contribute to GitLab
Sign in / Register
Toggle navigation
G
gassafety
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
耿迪迪
gassafety
Commits
30f5d6c6
Commit
30f5d6c6
authored
Jul 29, 2021
by
纪泽龙
Browse files
Options
Browse Files
Download
Plain Diff
合并jzl
parents
eb14dc93
5ef0a2b9
Show whitespace changes
Inline
Side-by-side
Showing
9 changed files
with
287 additions
and
159 deletions
+287
-159
gassafety.scss
gassafety-web/src/assets/styles/gassafety.scss
+6
-0
sidebar.scss
gassafety-web/src/assets/styles/sidebar.scss
+2
-2
index.vue
gassafety-web/src/components/MyFileUpload/index.vue
+12
-0
flowMeter.vue
gassafety-web/src/components/PopWindow/flowMeter.vue
+204
-118
index.vue
gassafety-web/src/components/TopNav/index.vue
+48
-34
SidebarItem.vue
gassafety-web/src/layout/components/Sidebar/SidebarItem.vue
+2
-1
index.vue
gassafety-web/src/layout/index.vue
+1
-1
gaodeMap.js
gassafety-web/src/utils/gaodeMap.js
+11
-3
index.vue
gassafety-web/src/views/enterprise/map/index.vue
+1
-0
No files found.
gassafety-web/src/assets/styles/gassafety.scss
View file @
30f5d6c6
...
...
@@ -266,3 +266,9 @@
position
:
relative
;
float
:
right
;
}
// 上传按钮
.hide
{
.el-upload--picture-card
{
display
:
none
;
}
}
gassafety-web/src/assets/styles/sidebar.scss
View file @
30f5d6c6
...
...
@@ -118,11 +118,11 @@
.hideSidebar
{
.sidebar-container
{
width
:
54px
!
important
;
//
width: 54px !important;
}
.main-container
{
margin-left
:
54px
;
//
margin-left: 54px;
}
.submenu-title-noDropdown
{
...
...
gassafety-web/src/components/MyFileUpload/index.vue
View file @
30f5d6c6
...
...
@@ -11,9 +11,11 @@
:on-success=
"handleUploadSuccess"
:on-remove=
"handleRemove"
:on-preview=
"handleFileClick"
:on-change=
"fileChange"
:show-file-list=
"true"
:headers=
"headers"
class=
"upload-file-uploader"
:class=
"
{hide:addShow}"
ref="upload"
>
<!-- 上传按钮 -->
...
...
@@ -78,6 +80,7 @@ export default {
type
:
Boolean
,
default
:
false
,
},
},
data
()
{
return
{
...
...
@@ -89,6 +92,7 @@ export default {
modal
:
false
,
dialogVisible
:
false
,
dialogImageUrl
:
""
,
addShow
:
true
,
};
},
computed
:
{
...
...
@@ -163,6 +167,7 @@ export default {
// 文件列表移除文件
handleRemove
(
file
,
fileList
)
{
console
.
log
(
"列表移除"
,
file
,
fileList
);
this
.
addShow
=
fileList
.
length
>
0
?
true
:
false
;
this
.
$emit
(
"remove"
,
file
);
},
// 删除文件
...
...
@@ -197,9 +202,15 @@ export default {
return
""
;
}
},
// 当改变列表改变时
fileChange
(
file
,
fileList
){
this
.
addShow
=
fileList
.
length
>
0
?
true
:
false
;
}
},
created
()
{
// this.fileList = this.list;
this
.
addShow
=
this
.
fileArr
.
length
>
0
?
true
:
false
;
},
};
</
script
>
...
...
@@ -223,4 +234,5 @@ export default {
.ele-upload-list__item-content-action
.el-link
{
margin-right
:
10px
;
}
</
style
>
gassafety-web/src/components/PopWindow/flowMeter.vue
View file @
30f5d6c6
...
...
@@ -3,36 +3,74 @@
:title=
"title"
:visible
.
sync=
"dialogVisible"
width=
"80%"
:before-close=
"handleClose"
>
:before-close=
"handleClose"
>
<el-row>
<el-form
ref=
"form"
:model=
"form"
:rules=
"rules"
label-width=
"135px"
>
<el-col
:span=
"22"
>
<el-form-item
label=
"所属管道"
prop=
"pipeCode"
>
<el-select
v-model=
"form.pipeCode"
placeholder=
"请选择所属管道"
>
<el-option
v-for=
"item in pipeList"
:key=
"item.pipeCode"
:label=
"item.pipeName"
:value=
"item.pipeCode"
>
:value=
"item.pipeCode"
>
</el-option>
</el-select>
</el-form-item>
</el-col>
<el-col
:span=
"11"
>
<el-form-item
label=
"设备名称"
prop=
"deviceName"
>
<el-input
v-model=
"form.deviceName"
placeholder=
"请输入设备名称"
/>
</el-form-item>
</el-col>
<el-col
:span=
"11"
>
<el-form-item
label=
"设备型号"
prop=
"deviceModel"
>
<el-input
v-model=
"form.deviceModel"
placeholder=
"请输入设备型号"
/>
</el-form-item>
</el-col>
<el-col
:span=
"11"
>
<el-form-item
label=
"所在地址"
prop=
"deviceAddr"
>
<el-input
v-model=
"form.deviceAddr"
placeholder=
"请输入所在地址"
/>
</el-form-item>
<el-form-item
label=
"设备型号"
prop=
"deviceModel"
>
<el-input
v-model=
"form.deviceModel"
placeholder=
"请输入设备型号"
/>
</el-col>
<el-col
:span=
"11"
>
<el-form-item
label=
"物联网编号"
prop=
"iotNo"
>
<el-input
v-model=
"form.iotNo"
placeholder=
"请输入物联网编号"
/>
</el-form-item>
<el-form-item
label=
"经度"
prop=
"longitude"
>
<el-input
v-model=
"form.longitude"
placeholder=
"请输入经度"
/>
</el-col>
<el-col
:span=
"22"
>
<el-form-item
label=
"经纬度坐标"
prop=
""
>
<el-card
class=
"box-card"
>
<div
v-text=
"`[[$
{form.longitude},${form.latitude}]]`">
</div>
</el-card>
</el-form-item>
</el-col>
<!--
<el-col>
<el-form-item
label=
"纬度"
prop=
"latitude"
>
<el-input
v-model=
"form.latitude"
placeholder=
"请输入纬度"
/>
</el-form-item>
<el-form-item
label=
"物联网编号"
prop=
"iotNo"
>
<el-input
v-model=
"form.iotNo"
placeholder=
"请输入物联网编号"
/>
</el-col>
-->
<el-col
:span=
"11"
>
<el-form-item
label=
"联系人"
prop=
"linkman"
>
<el-input
v-model=
"form.linkman"
placeholder=
"请输入联系人"
/>
</el-form-item>
</el-col>
<el-col
:span=
"11"
>
<el-form-item
label=
"联系电话"
prop=
"phone"
>
<el-input
v-model=
"form.phone"
placeholder=
"请输入联系电话"
/>
</el-form-item>
</el-col>
<el-col>
<el-form-item
label=
"设备图片上传"
prop=
"iconUrl"
>
<MyFileUpload
listType=
"picture-card"
...
...
@@ -40,25 +78,36 @@
@
remove=
"listRemove"
:fileArr=
"fileArr"
/>
<el-input
v-show=
"false"
disabled
v-model=
"form.iconUrl"
></el-input>
</el-form-item>
<el-form-item
label=
"联系人"
prop=
"linkman"
>
<el-input
v-model=
"form.linkman"
placeholder=
"请输入联系人"
/>
</el-form-item>
<el-form-item
label=
"电话"
prop=
"phone"
>
<el-input
v-model=
"form.phone"
placeholder=
"请输入电话"
/>
</el-form-item>
</el-col>
<el-col>
<el-form-item
label=
"安装时间"
prop=
"installationTime"
>
<el-date-picker
clearable
size=
"small"
<el-date-picker
clearable
size=
"small"
v-model=
"form.installationTime"
type=
"datetim
e"
type=
"dat
e"
value-format=
"yyyy-MM-dd HH:mm:ss"
placeholder=
"选择安装时间"
>
placeholder=
"选择安装时间"
>
</el-date-picker>
</el-form-item>
</el-col>
<el-col
:span=
"22"
>
<el-form-item
label=
"备注"
prop=
"remarks"
>
<el-input
v-model=
"form.remarks"
placeholder=
"请输入备注"
/>
<el-input
type=
"textarea"
v-model=
"form.remarks"
placeholder=
"请输入备注"
/>
</el-form-item>
</el-col>
</el-form>
</el-row>
<span
slot=
"footer"
class=
"dialog-footer"
>
<el-button
@
click=
"dialogVisible = false"
>
取 消
</el-button>
<el-button
type=
"primary"
@
click=
"submitForm"
>
确 定
</el-button>
...
...
@@ -67,54 +116,90 @@
</
template
>
<
script
>
import
{
getAllDeviceInfo
,
addDeviceInfo
,
updateDeviceInfo
,
}
from
"@/api/device/deviceInfo"
;
import
{
pipeAllInfoList
}
from
"@/api/device/pipe"
;
import
MyFileUpload
from
"@/components/MyFileUpload"
;
import
{
DEVICE_TYPE
}
from
"utils/gaodeMap.js"
;
import
{
getAllDeviceInfo
,
addDeviceInfo
,
updateDeviceInfo
}
from
"@/api/device/deviceInfo"
;
import
{
pipeAllInfoList
}
from
"@/api/device/pipe"
;
import
MyFileUpload
from
"@/components/MyFileUpload"
;
import
{
DEVICE_TYPE
}
from
"utils/gaodeMap.js"
;
export
default
{
export
default
{
props
:
{
title
:
{
type
:
String
}
title
:
{
type
:
String
},
},
data
()
{
data
()
{
return
{
form
:
{
deviceType
:
"3"
form
:
{
deviceType
:
"3"
,
},
dialogVisible
:
false
,
dialogVisible
:
false
,
fileList
:
[],
// 表单校验
rules
:
{},
map
:
null
,
obj
:
null
,
gaoMap
:
null
,
fileArr
:
[],
pipeList
:
[],
rules
:
{
pipeCode
:
[
{
required
:
true
,
message
:
"请选择所属管道"
,
trigger
:
"blur"
},
// { min: 3, max: 5, message: "长度在 3 到 5 个字符", trigger: "blur" },
],
deviceName
:
[
{
required
:
true
,
message
:
"请输入设备名称"
,
trigger
:
"blur"
},
],
deviceModel
:
[
{
required
:
true
,
message
:
"请输入设备型号"
,
trigger
:
"blur"
},
],
deviceAddr
:
[
{
required
:
true
,
message
:
"请输入所在地址"
,
trigger
:
"blur"
},
],
iotNo
:
[
{
required
:
true
,
message
:
"请输入物联网编号"
,
trigger
:
"blur"
},
],
linkman
:
[
{
required
:
true
,
message
:
"请输入联系人"
,
trigger
:
"blur"
},
],
phone
:
[
{
required
:
true
,
message
:
"请输入联系电话"
,
trigger
:
"blur"
},
],
iconUrl
:
[{
required
:
true
,
message
:
"请上传图片"
,
trigger
:
"change"
}],
installationTime
:
[
{
// type: "date",
required
:
true
,
message
:
"请选择日期"
,
trigger
:
"change"
,
},
map
:
null
,
obj
:
null
,
gaoMap
:
null
,
fileArr
:
[],
pipeList
:
[]
}
],
},
};
},
components
:
{
MyFileUpload
,
},
methods
:
{
show
()
{
show
()
{
this
.
dialogVisible
=
true
;
},
hide
()
{
this
.
remove
()
hide
()
{
this
.
remove
();
},
getFileInfo
(
res
)
{
getFileInfo
(
res
)
{
this
.
form
.
iconUrl
=
res
.
url
;
},
submitForm
()
{
this
.
$refs
[
"form"
].
validate
(
valid
=>
{
this
.
$refs
[
"form"
].
validate
((
valid
)
=>
{
if
(
valid
)
{
if
(
this
.
form
.
deviceId
!=
null
)
{
updateDeviceInfo
(
this
.
form
).
then
(
response
=>
{
updateDeviceInfo
(
this
.
form
).
then
((
response
)
=>
{
this
.
dialogVisible
=
false
;
this
.
map
.
remove
(
this
.
obj
);
this
.
gaoMap
.
addMarker
(
this
.
gaoMap
.
deviceType
,
this
.
form
);
this
.
gaoMap
.
addMarker
(
this
.
gaoMap
.
deviceType
,
this
.
form
);
this
.
msgSuccess
(
"修改成功"
);
});
}
else
{
...
...
@@ -133,7 +218,8 @@
});
}
}
});
}
);
},
handleClose
(
done
)
{
done
();
...
...
@@ -141,14 +227,14 @@
listRemove
(
e
)
{
this
.
form
.
url
=
""
;
this
.
fileArr
=
[];
}
},
mounted
(){
pipeAllInfoList
({}).
then
(
response
=>
{
},
mounted
()
{
pipeAllInfoList
({}).
then
((
response
)
=>
{
this
.
pipeList
=
response
.
data
;
});
}
}
},
};
</
script
>
gassafety-web/src/components/TopNav/index.vue
View file @
30f5d6c6
...
...
@@ -6,12 +6,17 @@
>
<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=
""
:index=
"item.path"
:key=
"index"
v-if=
"index
<
visibleNumber
"
>
<el-menu-item
:style=
""
:index=
"item.path"
:key=
"index"
v-if=
"index
<
visibleNumber
"
>
<!-- 导航栏左侧图标 -->
<!--
<svg-icon
:icon-class=
"item.meta.icon"
/>
-->
{{
item
.
meta
.
title
}}
</el-menu-item>
<div
class=
"menu-item-div"
></div>
{{
item
.
meta
.
title
}}
</el-menu-item>
<!--
<div
class=
"menu-item-div"
></div>
-->
</
template
>
<!-- 顶部菜单超出数量折叠 -->
...
...
@@ -32,7 +37,7 @@
<
script
>
import
{
constantRoutes
}
from
"@/router"
;
import
'../../common/font/font.css'
import
"../../common/font/font.css"
;
export
default
{
data
()
{
return
{
...
...
@@ -41,7 +46,7 @@ export default {
// 是否为首次加载
isFrist
:
false
,
// 当前激活菜单的 index
currentIndex
:
undefined
currentIndex
:
undefined
,
};
},
computed
:
{
...
...
@@ -73,11 +78,13 @@ export default {
this
.
routers
.
map
((
router
)
=>
{
for
(
var
item
in
router
.
children
)
{
if
(
router
.
children
[
item
].
parentPath
===
undefined
)
{
if
(
router
.
path
===
"/"
)
{
router
.
children
[
item
].
path
=
"/redirect/"
+
router
.
children
[
item
].
path
;
if
(
router
.
path
===
"/"
)
{
router
.
children
[
item
].
path
=
"/redirect/"
+
router
.
children
[
item
].
path
;
}
else
{
if
(
!
this
.
ishttp
(
router
.
children
[
item
].
path
))
{
router
.
children
[
item
].
path
=
router
.
path
+
"/"
+
router
.
children
[
item
].
path
;
if
(
!
this
.
ishttp
(
router
.
children
[
item
].
path
))
{
router
.
children
[
item
].
path
=
router
.
path
+
"/"
+
router
.
children
[
item
].
path
;
}
}
router
.
children
[
item
].
parentPath
=
router
.
path
;
...
...
@@ -103,17 +110,17 @@ export default {
}
var
routes
=
this
.
activeRoutes
(
activePath
);
if
(
routes
.
length
===
0
)
{
activePath
=
this
.
currentIndex
||
this
.
routers
[
0
].
path
activePath
=
this
.
currentIndex
||
this
.
routers
[
0
].
path
;
this
.
activeRoutes
(
activePath
);
}
return
activePath
;
},
},
beforeMount
()
{
window
.
addEventListener
(
'resize'
,
this
.
setVisibleNumber
)
window
.
addEventListener
(
"resize"
,
this
.
setVisibleNumber
);
},
beforeDestroy
()
{
window
.
removeEventListener
(
'resize'
,
this
.
setVisibleNumber
)
window
.
removeEventListener
(
"resize"
,
this
.
setVisibleNumber
);
},
mounted
()
{
this
.
setVisibleNumber
();
...
...
@@ -126,6 +133,7 @@ export default {
},
// 菜单选择事件
handleSelect
(
key
,
keyPath
)
{
console
.
log
(
key
)
this
.
currentIndex
=
key
;
if
(
this
.
ishttp
(
key
))
{
// http(s):// 路径新窗口打开
...
...
@@ -148,14 +156,14 @@ export default {
}
});
}
if
(
routes
.
length
>
0
)
{
if
(
routes
.
length
>
0
)
{
this
.
$store
.
commit
(
"SET_SIDEBAR_ROUTERS"
,
routes
);
}
return
routes
;
},
ishttp
(
url
)
{
return
url
.
indexOf
(
'http://'
)
!==
-
1
||
url
.
indexOf
(
'https://'
)
!==
-
1
}
return
url
.
indexOf
(
"http://"
)
!==
-
1
||
url
.
indexOf
(
"https://"
)
!==
-
1
;
}
,
},
};
</
script
>
...
...
@@ -176,9 +184,9 @@ export default {
}
.el-menu--horizontal
>
.el-menu-item.is-active
{
border-bottom
:
3px
solid
#{
'var(--theme)'
}
;
border-bottom
:
3px
solid
#{
"var(--theme)"
}
;
/* box-shadow: inset 2px 2px 20px #5CD9D4; */
color
:
#5
CD9D
4
;
color
:
#5
cd9d
4
;
}
/* submenu item */
...
...
@@ -186,19 +194,25 @@ export default {
height
:
50px
!
important
;
line-height
:
50px
!
important
;
}
.el-menu--horizontal
>
.el-menu-item
:not
(
.is-disabled
)
:hover
,
.el-menu--horizontal
>
.el-menu-item
:not
(
.is-disabled
)
:focus
{
.el-menu--horizontal
>
.el-menu-item
:not
(
.is-disabled
)
:hover
,
.el-menu--horizontal
>
.el-menu-item
:not
(
.is-disabled
)
:focus
{
background-color
:
rgba
(
0
,
0
,
0
,
0
);
/* opacity: 0; */
/* box-shadow: inset 2px 2px 20px #5CD9D4; */
color
:
#fff
;
}
.menu-item-div
{
.menu-item-div
{
width
:
2px
;
height
:
30px
;
margin-top
:
25px
;
background-color
:
rgb
(
190
,
189
,
189
);
float
:
left
;
background
:
linear-gradient
(
130deg
,
rgba
(
0
,
0
,
0
,
0
)
0%
,
rgba
(
255
,
255
,
255
,
0
.7
)
50%
,
rgba
(
0
,
0
,
0
,
0
)
100%
);
background
:
linear-gradient
(
130deg
,
rgba
(
0
,
0
,
0
,
0
)
0%
,
rgba
(
255
,
255
,
255
,
0
.7
)
50%
,
rgba
(
0
,
0
,
0
,
0
)
100%
);
&
:last-child
{
width
:
0px
;
...
...
gassafety-web/src/layout/components/Sidebar/SidebarItem.vue
View file @
30f5d6c6
...
...
@@ -4,7 +4,8 @@
<app-link
v-if=
"onlyOneChild.meta"
:to=
"resolvePath(onlyOneChild.path)"
>
<el-menu-item
:index=
"resolvePath(onlyOneChild.path)"
:class=
"
{'submenu-title-noDropdown':!isNest}">
<item
:icon=
"onlyOneChild.meta.icon||(item.meta&&item.meta.icon)"
/><br>
<item
:title=
"onlyOneChild.meta.title"
/>
<!--
<item
:title=
"onlyOneChild.meta.title"
/>
-->
{{
onlyOneChild
.
meta
.
title
}}
</el-menu-item>
</app-link>
</
template
>
...
...
gassafety-web/src/layout/index.vue
View file @
30f5d6c6
<
template
>
<div
:class=
"classObj"
class=
"app-wrapper"
:style=
"
{'--current-color': theme}">
<div
v-if=
"device==='mobile'&&sidebar.opened"
class=
"drawer-bg"
@
click=
"handleClickOutside"
/>
<
s
idebar
class=
"sidebar-container"
:style=
"
{ backgroundColor: sideTheme === 'theme-dark' ? variables.menuBg : variables.menuLightBg }" />
<
S
idebar
class=
"sidebar-container"
:style=
"
{ backgroundColor: sideTheme === 'theme-dark' ? variables.menuBg : variables.menuLightBg }" />
<div
:class=
"
{hasTagsView:needTagsView}" class="main-container">
<div
:class=
"
{'fixed-header':fixedHeader}">
<navbar
/>
...
...
gassafety-web/src/utils/gaodeMap.js
View file @
30f5d6c6
...
...
@@ -721,13 +721,21 @@ class gaodeMap {
that
.
markerOverlays
.
push
(
e
.
obj
);
}
if
(
e
.
obj
&&
e
.
obj
.
getExtData
().
type
==
"newLine"
)
{
console
.
log
(
"挂上事件"
);
that
.
newLineAddEvent
(
e
.
obj
);
// 记录这条线
// console.log(e.obj.getPath().length)
// 如果只有一个点,并没有连成线的时候就不close 大于一个点的时候才执行clse
console
.
log
(
that
.
lineType
)
if
(
e
.
obj
.
getPath
().
length
>
1
)
{
that
.
newLineObj
=
e
.
obj
;
// 关闭
that
.
mouseTool
.
close
();
}
else
{
// that.newLineObj = null;
}
// 关闭
// 创建一条新线,然后在点地图的时候删除原来的旧线
// that.createNewLine();
...
...
gassafety-web/src/views/enterprise/map/index.vue
View file @
30f5d6c6
...
...
@@ -233,6 +233,7 @@ export default {
this
.
gaoMap
.
lineType
=
1
;
}
else
{
this
.
gaoMap
.
lineType
=
0
;
this
.
gaoMap
.
mouseTool
.
close
();
}
// 关闭当前线条的infowindow
this
.
gaoMap
.
closeLineInfoWindow
();
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment