|
@@ -43,6 +43,7 @@
|
|
|
|
|
|
<el-table-column label="操作" align="center" width="80" class-name="small-padding fixed-width" fixed="right">
|
|
|
<template slot-scope="{row}">
|
|
|
+ <el-button v-if="isRoleEdit" class="miniSuccess" icon="el-icon-edit-outline" @click="handleRunning_trajectory(row)" />
|
|
|
<el-button v-if="isRoleEdit" class="miniSuccess" icon="el-icon-edit-outline" @click="handleUpdate(row)" />
|
|
|
<el-button v-if="isRoleEdit" class="miniDanger" icon="el-icon-delete" @click="handleRowDelete(row)" />
|
|
|
</template>
|
|
@@ -112,6 +113,25 @@
|
|
|
</div>
|
|
|
</el-dialog>
|
|
|
|
|
|
+ <el-dialog :visible.sync="run.dialogFormVisible" :close-on-click-modal="false" width="50%">
|
|
|
+ <template slot="title">
|
|
|
+ <div class="avue-crud__dialog__header">
|
|
|
+ <span class="el-dialog__title">
|
|
|
+ <span style="display:inline-block;width:3px;height:20px;margin-right:5px; float: left;margin-top:2px" />
|
|
|
+ 运行轨迹
|
|
|
+ </span>
|
|
|
+ <div class="avue-crud__dialog__menu" @click="dialogFull? dialogFull=false: dialogFull=true">
|
|
|
+ <svg-icon v-if="dialogFull" icon-class="exit-fullscreen" />
|
|
|
+ <svg-icon v-else icon-class="fullscreen" />
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </template>
|
|
|
+ <div ref="map" class="map-container"></div>
|
|
|
+ <div slot="footer" class="dialog-footer">
|
|
|
+ <el-button class="cancelClose1" @click="run.dialogFormVisible = false;getList()">关闭</el-button>
|
|
|
+ </div>
|
|
|
+ </el-dialog>
|
|
|
+
|
|
|
</div>
|
|
|
</template>
|
|
|
|
|
@@ -122,7 +142,11 @@ import { MessageBox } from 'element-ui'
|
|
|
import Cookies from 'js-cookie'
|
|
|
import axios from 'axios'
|
|
|
import { getToken } from '@/utils/auth'
|
|
|
-
|
|
|
+import { createApp } from 'vue';
|
|
|
+import AMapLoader from '@amap/amap-jsapi-loader';
|
|
|
+window._AMapSecurityConfig = {
|
|
|
+ securityJsCode: '0133db0118e961029dc45a2d5039cbb1' // '「申请的安全密钥」',
|
|
|
+}
|
|
|
export default {
|
|
|
name: 'PushMaterialPlan',
|
|
|
data() {
|
|
@@ -150,6 +174,10 @@ export default {
|
|
|
enable: [{ required: true, message: '必填', trigger: 'blur' }]
|
|
|
}
|
|
|
},
|
|
|
+ run: {
|
|
|
+ dialogFormVisible: false,
|
|
|
+ dialogStatus: '',
|
|
|
+ },
|
|
|
dialogFull: false,
|
|
|
tmrList:[],
|
|
|
barList:[],
|
|
@@ -159,8 +187,19 @@ export default {
|
|
|
rowStyle: { maxHeight: 30 + 'px', height: 30 + 'px' },
|
|
|
cellStyle: { padding: 0 + 'px' },
|
|
|
myHeight: document.documentElement.clientHeight - 85- 150,
|
|
|
+ map: null,
|
|
|
+ path: [
|
|
|
+ [116.405285, 39.904989], // 示例轨迹点1
|
|
|
+ [116.407516, 39.904717], // 示例轨迹点2
|
|
|
+ [116.407366, 39.91344], // 示例轨迹点3
|
|
|
+ // 添加更多轨迹点
|
|
|
+ ],
|
|
|
+ index: 0,
|
|
|
}
|
|
|
},
|
|
|
+ mounted() {
|
|
|
+ // this.initMap();
|
|
|
+ },
|
|
|
created() {
|
|
|
this.getButtons()
|
|
|
this.getTMR_barList()
|
|
@@ -331,11 +370,77 @@ export default {
|
|
|
handleRefresh(){
|
|
|
this.table.parammaps.date = ''
|
|
|
this.table.parammaps.eqCode = ''
|
|
|
+ },
|
|
|
+ handleRunning_trajectory(row){
|
|
|
+ console.log('点击了运行轨迹')
|
|
|
+ this.run.dialogStatus = 'run'
|
|
|
+ this.run.dialogFormVisible = true
|
|
|
+ this.initMap();
|
|
|
+ },
|
|
|
+ async initMap() {
|
|
|
+ await AMapLoader.load({
|
|
|
+ key: 'fb6a0e88dbad4931d96a121bcf7c4442', // 替换为你的高德地图API Key
|
|
|
+ version: '2.0',
|
|
|
+ plugins: [],
|
|
|
+ });
|
|
|
+
|
|
|
+ this.map = new window.AMap.Map(this.$refs.map, {
|
|
|
+ zoom: 13,
|
|
|
+ center: this.path[0],
|
|
|
+ });
|
|
|
+
|
|
|
+ this.drawPath();
|
|
|
+ this.drawDrop();
|
|
|
+ // this.startLoop();
|
|
|
+ },
|
|
|
+ drawPath() {
|
|
|
+ const polyline = new window.AMap.Polyline({
|
|
|
+ path: this.path,
|
|
|
+ strokeStyle: 'red',
|
|
|
+ strokeColor: '#3366FF',
|
|
|
+ strokeOpacity: 1,
|
|
|
+ strokeWeight: 3,
|
|
|
+ map: this.map,
|
|
|
+ dirArrowStyle: true
|
|
|
+ });
|
|
|
+ // 调整地图视图以适应轨迹
|
|
|
+ this.map.setFitView();
|
|
|
+ },
|
|
|
+ drawDrop(){
|
|
|
+ var that = this
|
|
|
+ that.path.forEach(function(coord, index) {
|
|
|
+ var marker = new AMap.Marker({
|
|
|
+ position: coord, // 对应点的经/纬度
|
|
|
+ map: that.map, // 显示在地图上
|
|
|
+ icon: new AMap.Icon({
|
|
|
+ // size: new AMap.Size(36, 36), // 图标尺寸
|
|
|
+ image: 'http://webapi.amap.com/theme/v1.3/markers/n/mark_b'+ (index + 1) +'.png', // 自定义图标
|
|
|
+ // imageSize: new AMap.Size(36, 36), // 图标尺寸
|
|
|
+ }),
|
|
|
+ offset: new AMap.Pixel(-10, -30) // 调整图标的偏移,使图标中心显示在点位置
|
|
|
+ });
|
|
|
+ // var label = new AMap.Text({
|
|
|
+ // text: (index + 1).toString(), // 显示的数字
|
|
|
+ // position: coord, // 标签位置与点位置相同
|
|
|
+ // offset: new AMap.Pixel(-10, -20), // 调整标签的偏移,使数字显示在点的正上方
|
|
|
+ // map: that.map // 显示在地图上
|
|
|
+ // });
|
|
|
+ // 添加信息窗体
|
|
|
+ marker.on('click', function() {
|
|
|
+ var infoWindow = new AMap.InfoWindow({
|
|
|
+ content: '经度:' + coord[0] + '<br>纬度:' + coord[1]
|
|
|
+ });
|
|
|
+ infoWindow.open(that.map, marker.getPosition());
|
|
|
+ });
|
|
|
+ });
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
</script>
|
|
|
<style lang="scss" scoped>
|
|
|
+ .map-container {
|
|
|
+ height: 400px;
|
|
|
+ }
|
|
|
.search {
|
|
|
clear: both;
|
|
|
}
|