| | |
| | | <template> |
| | | <div class="report-location-box"> |
| | | <div class="report-location"> |
| | | <el-tabs v-model="activeName"> |
| | | <el-tab-pane label="点击定位" name="first"> |
| | | <div class="click-location"> |
| | | <el-row> |
| | | <el-input type="text" v-model="clickLocation" clearable @focus="focusLocation"></el-input> |
| | | </el-row> |
| | | <el-row> |
| | | <el-button type="primary" @click="confirm">确认</el-button> |
| | | </el-row> |
| | | <el-tabs v-model="activeName"> |
| | | <el-tab-pane label="搜索定位" name="first"> |
| | | <ReportLocationSearch></ReportLocationSearch> |
| | | </el-tab-pane> |
| | | <el-tab-pane label="管段定位" name="second"> |
| | | <ReportLocationSection></ReportLocationSection> |
| | | </el-tab-pane> |
| | | <el-tab-pane label="经纬度定位" name="third"> |
| | | <el-row class="place-box"> |
| | | <div class="place-left"> |
| | | <el-form :model="LongLatPos" label-width="90px"> |
| | | <el-form-item label="经度:"> |
| | | <el-input v-model="LongLatPos.longPos"></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="纬度:"> |
| | | <el-input v-model="LongLatPos.latPos"></el-input> |
| | | </el-form-item> |
| | | </el-form> |
| | | </div> |
| | | </el-tab-pane> |
| | | <el-tab-pane label="管段定位" name="second"> |
| | | <ReportLocationSection></ReportLocationSection> |
| | | </el-tab-pane> |
| | | <el-tab-pane label="经纬度定位" name="third"> |
| | | <el-row class="place-box"> |
| | | <div class="place-left"> |
| | | <el-form :model="LongLatPos" label-width="90px"> |
| | | <el-form-item label="经度:"> |
| | | <el-input v-model="LongLatPos.longPos"></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="纬度:"> |
| | | <el-input v-model="LongLatPos.latPos"></el-input> |
| | | </el-form-item> |
| | | </el-form> |
| | | </div> |
| | | <div class="place-right"> |
| | | <el-button type="primary" @click="mapPoints">定位</el-button> |
| | | </div> |
| | | </el-row> |
| | | <div class="place-bottom" style="text-align: center;margin: 10px"> |
| | | <el-button type="primary" @click="confirm">确认</el-button> |
| | | <div class="place-right"> |
| | | <el-button type="primary" size="small" @click="mapPoints">点击定位</el-button> |
| | | <el-button type="primary" size="small" @click="dataPoints">数据定位</el-button> |
| | | </div> |
| | | </el-tab-pane> |
| | | </el-tabs> |
| | | </div> |
| | | </el-row> |
| | | <div class="place-bottom" style="text-align: center;margin: 5px"> |
| | | <el-button type="primary" @click="confirm">确认</el-button> |
| | | </div> |
| | | </el-tab-pane> |
| | | </el-tabs> |
| | | </div> |
| | | </template> |
| | | |
| | |
| | | // import eventBus from '../../../../eventBus' |
| | | // 管段定位组件 |
| | | import ReportLocationSection from './ReportLocationSection' |
| | | import ReportLocationSearch from './ReportLocationSearch' |
| | | |
| | | import { pulseEffect } from '../../../../utils/utils' |
| | | |
| | | import iconUrl from '../../../../../public/assets/images/map/loc.png' |
| | | |
| | | export default { |
| | | name: 'ReportLocation', |
| | | components: { |
| | | ReportLocationSearch, |
| | | ReportLocationSection |
| | | }, |
| | | data () { |
| | | return { |
| | | // active tab切换 |
| | | activeName: 'first', |
| | | // 点击定位绑定数据 |
| | | clickLocation: '', |
| | | // 经纬度定位 |
| | | LongLatPos: { |
| | | longPos: '', |
| | |
| | | } |
| | | } |
| | | }, |
| | | // mounted () { |
| | | // // 接收规定 每次重新选择定位 都指定 选择第一个开始 |
| | | // eventBus.$on('tab-change', (obj) => { |
| | | // this.activeName = obj |
| | | // }) |
| | | // }, |
| | | methods: { |
| | | // 地图上点击 |
| | | selectPipeLine () { |
| | | window.map.on('click', this.selectClick) |
| | | // window.mapManager.clickDialogSwitch = false |
| | | }, |
| | | // 地图上点击回调 |
| | | selectClick (e) { |
| | | window.map.off('click', this.selectClick) |
| | | // const point = [e.latlng.lng, e.latlng.lat] |
| | | const pointX = e.latlng.lng |
| | | const pointY = e.latlng.lat |
| | | this.clickLocation = '\'' + pointX + '\'' + pointY + '' |
| | | this.mapPointResult(e) |
| | | }, |
| | | mapPointResult (e) { |
| | | console.log(e) |
| | | this.LongLatPos.longPos = e.latlng.lng |
| | | this.LongLatPos.latPos = e.latlng.lat |
| | | }, |
| | | // 获得焦点 进行定位 |
| | | focusLocation () { |
| | | this.selectPipeLine() |
| | | }, |
| | | // 经纬度定位 |
| | | // 点击定位 |
| | | mapPoints () { |
| | | this.selectPipeLine() |
| | | window.map.on('click', (e) => { |
| | | this.LongLatPos.longPos = parseFloat(e.latlng.lng).toFixed(6) |
| | | this.LongLatPos.latPos = parseFloat(e.latlng.lat).toFixed(6) |
| | | const as = [this.LongLatPos.latPos, this.LongLatPos.longPos] |
| | | // console.log(as) |
| | | window.map.setView(as, 17) |
| | | pulseEffect(as) |
| | | const marker = window.L.marker(as, { |
| | | icon: window.L.icon({ |
| | | iconUrl: iconUrl, |
| | | iconSize: [30, 30], |
| | | iconAnchor: [15, 15] |
| | | }) |
| | | }) |
| | | window.map.addLayer(marker) |
| | | window.map.off('click') |
| | | }) |
| | | }, |
| | | // 通过数据定位 |
| | | dataPoints () { |
| | | const as = [this.LongLatPos.latPos, this.LongLatPos.longPos] |
| | | // console.log(as) |
| | | window.map.setView(as, 17) |
| | | pulseEffect(as) |
| | | const marker = window.L.marker(as, { |
| | | icon: window.L.icon({ |
| | | iconUrl: iconUrl, |
| | | iconSize: [30, 30], |
| | | iconAnchor: [15, 15] |
| | | }) |
| | | }) |
| | | window.map.addLayer(marker) |
| | | this.LongLatPos.latPos = '' |
| | | this.LongLatPos.longPos = '' |
| | | }, |
| | | // 点击确认按钮事件 |
| | | confirm () { |
| | |
| | | align-items: center; |
| | | justify-content: space-around; |
| | | } |
| | | .click-location { |
| | | margin: 0 auto; |
| | | text-align: center; |
| | | |
| | | .el-input { |
| | | width: 80%; |
| | | margin: 15px auto; |
| | | } |
| | | |
| | | .el-button { |
| | | margin: 15px auto; |
| | | } |
| | | } |
| | | .place { |
| | | text-align: center; |
| | | |