@@ -72,10 +72,6 @@ | |||
margin-left: 2px!important; | |||
} | |||
.el-dialog { | |||
width: 500px!important; | |||
} | |||
.el-form--inline .el-form-item{ | |||
margin-bottom: 10px!important; | |||
} |
@@ -1,7 +1,7 @@ | |||
<template> | |||
<div class="date-left"> | |||
<div> | |||
<img src="../../assets/img/command/head-date.png"/> | |||
<img src="../../../assets/img/command/head-date.png"/> | |||
</div> | |||
<div> | |||
@@ -9,7 +9,7 @@ | |||
<div>巡检问题处理情况统计</div> | |||
</div> | |||
<div> | |||
<img src="../../assets/img/main/line.png"/> | |||
<img src="../../../assets/img/main/line.png"/> | |||
<div> | |||
<el-progress | |||
:width="1.38,fontSize | filterPx" | |||
@@ -175,7 +175,7 @@ | |||
margin-left: 0.12rem; | |||
background-position: center center; | |||
background-size: cover; | |||
background-image: url(../../assets/img/main/table.png); | |||
background-image: url(../../../assets/img/main/table.png); | |||
display: flex; | |||
align-items: center; | |||
justify-content: center; | |||
@@ -195,7 +195,7 @@ | |||
height: 0.8rem; | |||
background-position: center center; | |||
background-size: cover; | |||
background-image: url(../../assets/img/command/bg.png); | |||
background-image: url(../../../assets/img/command/bg.png); | |||
> div { | |||
position: relative; |
@@ -3,7 +3,7 @@ | |||
</template> | |||
<script> | |||
import { Chart } from "@antv/g2"; | |||
import G2 from "@antv/g2"; | |||
import { mapGetters } from "vuex"; | |||
export default { |
@@ -1,11 +1,11 @@ | |||
<template> | |||
<div v-loading="loading" class="command-index" style="position: relative"> | |||
<div style="display:none;"> | |||
<mapInfoWindow @closeInfoWindow="closeInfoWindow" ref="infowindow"></mapInfoWindow> | |||
<problemDetailWin @closeInfoWindow="closeInfoWindow" ref="problemDetailWin"></problemDetailWin> | |||
</div> | |||
<div class="index-map" id="indexMap"></div> | |||
<img class="head-img" src="../../assets/img/command/nav.png"/> | |||
<div :style="{right:(activeType=='problem'||activeType=='ask')?'1.7rem':'5.3rem'}" class="map-type"> | |||
<div :style="{right:(activeType=='problem'||activeType=='ask')?'1.2rem':'5.3rem'}" class="map-type"> | |||
<div @click="mapTypeClick(1)" :class="mapType==1?'map-type-check':''"> | |||
<div></div> | |||
<div>GIS地图</div> | |||
@@ -93,19 +93,19 @@ | |||
<script> | |||
import AMap from "AMap"; | |||
import njBround from "static/nj.json"; | |||
import dateLeft from './dateLeft' | |||
import dateRight from './dateRight' | |||
import problemLeft from './problemLeft' | |||
import dateLeft from './date/dateLeft' | |||
import dateRight from './date/dateRight' | |||
import problemLeft from './problem/problemLeft' | |||
import {mapGetters} from "vuex"; | |||
import api from '@/api/main/index' | |||
import driver from 'static/driver.json' | |||
import mapInfoWindow from './infoWindow' | |||
import problemDetailWin from './problem/problemDetailWin' | |||
export default { | |||
name: "command-container", | |||
data() { | |||
return { | |||
infoWindow: null, | |||
InfoWindow: null, | |||
mapType: 1, | |||
loading: false, | |||
activeType: "problem", | |||
@@ -130,11 +130,11 @@ | |||
this.center = new AMap.LngLat(118.750078, 31.983115) | |||
this.map.on("complete", function () { | |||
me.finshMap = true | |||
me.infoWindow = new AMap.InfoWindow({ | |||
me.InfoWindow = new AMap.InfoWindow({ | |||
zIndex: 14, | |||
autoMove: true, | |||
content: me.$refs.infowindow.$el, | |||
offset: new AMap.Pixel(4, -25) | |||
content: me.$refs.problemDetailWin.$el, | |||
offset: new AMap.Pixel(0, -25) | |||
}); | |||
me.addBound(); | |||
me.map.setFitView(this.polygonList) | |||
@@ -145,7 +145,7 @@ | |||
computed: { | |||
...mapGetters(["fontSize"]) | |||
}, | |||
components: {dateLeft, dateRight, problemLeft, mapInfoWindow}, | |||
components: {dateLeft, dateRight, problemLeft, problemDetailWin}, | |||
methods: { | |||
hideMarker() { | |||
this.markerList.map(item => { | |||
@@ -158,8 +158,8 @@ | |||
}) | |||
}, | |||
closeInfoWin() { | |||
if (this.infoWindow) { | |||
this.infoWindow.close() | |||
if (this.InfoWindow) { | |||
this.InfoWindow.close() | |||
} | |||
}, | |||
clearMarker() { | |||
@@ -203,18 +203,18 @@ | |||
} | |||
let icon = new AMap.Icon({ | |||
// 图标尺寸 | |||
size: new AMap.Size(24, 24), | |||
size: new AMap.Size(40, 40), | |||
// 图标的取图地址 | |||
image: image, | |||
// 图标所用图片大小 | |||
imageSize: new AMap.Size(24, 24), | |||
imageSize: new AMap.Size(40, 40), | |||
}); | |||
let marker = new AMap.Marker({ | |||
zIndex: 12, | |||
animation: 'AMAP_ANIMATION_DROP', | |||
position: point, | |||
icon: icon, | |||
offset: new AMap.Pixel(-9, -22) | |||
offset: new AMap.Pixel(-20, -20) | |||
}); | |||
marker.setDraggable(true) | |||
marker.childData = item | |||
@@ -250,13 +250,13 @@ | |||
setTimeout(function () { | |||
let marker = me.markerList.find(item=>item.childData.id==child.id) | |||
if(marker){ | |||
me.infoWindow.open(me.map, marker.getPosition()); | |||
me.InfoWindow.open(me.map, marker.getPosition()); | |||
} | |||
me.checkDriver(child.dirverId) | |||
},500) | |||
}, | |||
getMarkerDetail(marker) { | |||
this.infoWindow.open(this.map, marker.getPosition()); | |||
this.InfoWindow.open(this.map, marker.getPosition()); | |||
this.checkDriver(marker.childData.dirverId) | |||
}, | |||
getDriver() { | |||
@@ -653,6 +653,7 @@ | |||
} | |||
.el-date-editor .el-range__icon { | |||
display: none; | |||
font-size: 0.12rem; | |||
line-height: 0.3rem; | |||
} |
@@ -0,0 +1,166 @@ | |||
<template> | |||
<el-dialog :before-close="dialogClose" class="assignmentDialog" title="任务派遣" :visible.sync="visible"> | |||
<img src="../../../assets/img/command/dialog-task.png"> | |||
<el-form ref="form" :model="ruleForm" :label-width="formLabelWidth+'px'"> | |||
<el-form-item label="人员派遣:"> | |||
<el-select :class="ruleForm.user?'check-select':void(0)" clearable v-model="ruleForm.user" placeholder=""> | |||
<el-option | |||
v-for="item in userList" | |||
:key="item.value" | |||
:label="item.label" | |||
:value="item.value"> | |||
</el-option> | |||
</el-select> | |||
</el-form-item> | |||
<el-form-item label="联系方式:"> | |||
<el-input clearable v-model="ruleForm.tel"></el-input> | |||
</el-form-item> | |||
<el-form-item label="备注信息:"> | |||
<el-input | |||
type="textarea" | |||
:rows="4" | |||
placeholder="" | |||
v-model="ruleForm.remark"> | |||
</el-input> | |||
</el-form-item> | |||
</el-form> | |||
<div class="foot-btn"> | |||
<div @click="dialogClose">取消</div> | |||
<div @click="submit"> | |||
<span v-show="!submitLoading">指派任务</span> | |||
<i v-show="submitLoading" class="el-icon-loading"></i> | |||
</div> | |||
</div> | |||
</el-dialog> | |||
</template> | |||
<script> | |||
import {mapGetters} from "vuex"; | |||
export default { | |||
name: "assignmentDialog", | |||
data() { | |||
return { | |||
submitLoading:false, | |||
userList: [ | |||
{value: 1, label: '未处理'}, | |||
{value: 2, label: '处理中'}, | |||
{value: 3, label: '已完成'}, | |||
], | |||
ruleForm: {}, | |||
formLabelWidth: this.$root.$options.filters.filterPx(0.83, this.fontSize), | |||
} | |||
}, | |||
props: { | |||
visible: { | |||
type: Boolean, | |||
default() { | |||
return false | |||
} | |||
} | |||
}, | |||
computed: { | |||
...mapGetters(["fontSize"]) | |||
}, | |||
methods: { | |||
dialogClose() { | |||
this.$emit('dialogClose') | |||
}, | |||
submit(){ | |||
this.submitLoading=true | |||
let me=this | |||
setTimeout(function () { | |||
me.submitLoading=false | |||
me.dialogClose() | |||
},2000) | |||
} | |||
} | |||
} | |||
</script> | |||
<style lang="less"> | |||
.assignmentDialog { | |||
.el-dialog { | |||
background-color: inherit; | |||
width: 5.6rem; | |||
.el-dialog__header { | |||
display: none; | |||
} | |||
.el-dialog__body { | |||
padding: 0.423rem 0.75rem 0.39rem 0.735rem; | |||
background-position: center center; | |||
background-size: cover; | |||
background-image: url(../../../assets/img/command/assignment-popup.png); | |||
text-align: left; | |||
.check-select{ | |||
.el-input__inner { | |||
background: rgba(46,156,152,0.61); | |||
border: 1px solid #009F9A; | |||
} | |||
} | |||
.foot-btn { | |||
margin-top: 0.098rem; | |||
padding: 0 0.4rem; | |||
display: flex; | |||
justify-content: space-between; | |||
>div{ | |||
cursor: pointer; | |||
display: flex; | |||
justify-content: center; | |||
align-items: center; | |||
width: 1.5rem; | |||
height: 0.4rem; | |||
font-family: PingFangSC-Regular; | |||
font-size: 0.14rem; | |||
color: #FFFFFF; | |||
background: rgba(86,244,248,0.70); | |||
} | |||
>div:first-child{ | |||
opacity: 0.62; | |||
background: rgba(86,244,248,0.50) | |||
} | |||
} | |||
> img { | |||
height: 0.31rem; | |||
margin-bottom: 0.391rem; | |||
} | |||
.el-input__inner { | |||
padding-left: 0.1rem; | |||
background-color:inherit; | |||
border: 0.01rem solid #36B8B3; | |||
} | |||
.el-textarea__inner { | |||
padding: 0.1rem; | |||
opacity: 0.8; | |||
line-height: 0.2rem; | |||
font-family: PingFangSC-Regular; | |||
font-size: 0.14rem; | |||
color: #FFFFFF; | |||
background-color: inherit; | |||
border: 0.01rem solid #36B8B3; | |||
border-radius: 0; | |||
} | |||
.el-form-item { | |||
margin-bottom: 0.2rem; | |||
} | |||
.driver-name { | |||
font-family: PingFangSC-Medium; | |||
font-size: 0.2rem; | |||
color: #FFFFFF; | |||
line-height: 0.28rem; | |||
} | |||
} | |||
} | |||
} | |||
</style> |
@@ -1,8 +1,8 @@ | |||
<template> | |||
<div class="mapInfoWindow"> | |||
<div class="problemDetailWin"> | |||
<div class="info-header"> | |||
<img src="../../assets/img/command/details.png"/> | |||
<img @click="closeInfoWindow" src="../../assets/img/command/close.png"> | |||
<img src="../../../assets/img/command/details.png"/> | |||
<img @click="closeInfoWindow" src="../../../assets/img/command/close.png"> | |||
</div> | |||
<el-timeline> | |||
<el-timeline-item timestamp="问题情报" placement="top"> | |||
@@ -55,7 +55,7 @@ | |||
<div> | |||
<div>问题图片:</div> | |||
<viewer> | |||
<img src='../../assets/img/login.jpg'> | |||
<img src='../../../assets/img/login.jpg'> | |||
</viewer> | |||
</div> | |||
</div> | |||
@@ -64,7 +64,7 @@ | |||
<script> | |||
export default { | |||
name: "mapInfoWindow", | |||
name: "problemDetailWin", | |||
props: {}, | |||
methods: { | |||
closeInfoWindow() { | |||
@@ -75,12 +75,12 @@ | |||
</script> | |||
<style lang="less"> | |||
.mapInfoWindow { | |||
.problemDetailWin { | |||
width: 5.66rem; | |||
min-height: 5.68rem; | |||
background-position: center center; | |||
background-size: cover; | |||
background-image: url(../../assets/img/command/popup.png); | |||
background-image: url(../../../assets/img/command/popup.png); | |||
.info-detail { | |||
padding-left: 0.743rem; |
@@ -1,12 +1,13 @@ | |||
<template> | |||
<div class="problem-left"> | |||
<div> | |||
<img src="../../assets/img/command/head-problem.png"/> | |||
<img src="../../../assets/img/command/head-problem.png"/> | |||
</div> | |||
<div> | |||
<el-form ref="form" :model="ruleForm" :label-width="formLabelWidth+'px'"> | |||
<el-form-item label="时间范围:"> | |||
<el-date-picker | |||
clearable | |||
v-model="ruleForm.date" | |||
type="daterange" | |||
range-separator="-" | |||
@@ -15,7 +16,7 @@ | |||
</el-date-picker> | |||
</el-form-item> | |||
<el-form-item label="所属区域:"> | |||
<el-select v-model="ruleForm.driver" placeholder=""> | |||
<el-select v-model="ruleForm.driver" placeholder="" clearable> | |||
<el-option | |||
v-for="item in driverList" | |||
:key="item.value" | |||
@@ -25,7 +26,7 @@ | |||
</el-select> | |||
</el-form-item> | |||
<el-form-item label="河湖名称:"> | |||
<el-select v-model="ruleForm.hu" placeholder=""> | |||
<el-select v-model="ruleForm.hu" placeholder="" clearable> | |||
<el-option | |||
v-for="item in huList" | |||
:key="item.value" | |||
@@ -35,7 +36,7 @@ | |||
</el-select> | |||
</el-form-item> | |||
<el-form-item label="处理状态:"> | |||
<el-select v-model="ruleForm.status" placeholder=""> | |||
<el-select v-model="ruleForm.status" placeholder="" clearable> | |||
<el-option | |||
v-for="item in statusList" | |||
:key="item.value" | |||
@@ -52,7 +53,7 @@ | |||
</div> | |||
<div> | |||
<div :key="index" v-for="(item,index) in dataList"> | |||
<img src="../../assets/img/login.jpg"/> | |||
<img src="../../../assets/img/login.jpg"/> | |||
<div> | |||
<div> | |||
<div> | |||
@@ -66,7 +67,7 @@ | |||
<div title="河流漂浮物">河流漂浮物河流漂浮物河流漂浮物河流漂浮物河流漂浮物</div> | |||
</div> | |||
<div> | |||
<div>派遣人员</div> | |||
<div @click="assignment">派遣人员</div> | |||
<div @click="showProblemDetail(item)">产看详情</div> | |||
</div> | |||
</div> | |||
@@ -80,18 +81,19 @@ | |||
:total="100"> | |||
</el-pagination> | |||
</div> | |||
<assignmentDialog v-if="visible" @dialogClose="visible=false" :visible="visible"></assignmentDialog> | |||
</div> | |||
</template> | |||
<script> | |||
import assignmentDialog from './assignmentDialog' | |||
import {mapGetters} from "vuex"; | |||
import overBar from './overBar' | |||
import transverseBar from './transverseBar' | |||
export default { | |||
name: "problem-left", | |||
data() { | |||
return { | |||
visible:false, | |||
searchLoading:false, | |||
ruleForm: { | |||
date: '', | |||
@@ -111,11 +113,14 @@ | |||
computed: { | |||
...mapGetters(["fontSize"]) | |||
}, | |||
components: {overBar, transverseBar}, | |||
components: {assignmentDialog}, | |||
mounted(){ | |||
this.search() | |||
}, | |||
methods: { | |||
assignment(){ | |||
this.visible=true | |||
}, | |||
showProblemDetail(item){ | |||
this.$emit('showProblemDetail',{id:1,driverId:27}) | |||
}, |