作者 zhuzhaoping

合并分支 'master_dev' 到 'master'

Master dev



查看合并请求 !16
@@ -23,3 +23,5 @@ export const DoneTask = params => { return http.post(`${baseServiceURL}/map/loca @@ -23,3 +23,5 @@ export const DoneTask = params => { return http.post(`${baseServiceURL}/map/loca
23 //根据用户查询所属出勤车辆 23 //根据用户查询所属出勤车辆
24 export const selectNameList = params => { return axios.get(`${baseServiceURL}/map/location/selectNameList`, { params: params }); }; 24 export const selectNameList = params => { return axios.get(`${baseServiceURL}/map/location/selectNameList`, { params: params }); };
25 25
  26 +//多车定位
  27 +export const queryMulVel = params => { return axios.get(`${baseServiceURL}/map/location/queryMulVel`, { params: params }); };
@@ -4,7 +4,7 @@ let baseUrl = '/cloud-user-center/user' @@ -4,7 +4,7 @@ let baseUrl = '/cloud-user-center/user'
4 const serviceName = '/cloud-user-center' 4 const serviceName = '/cloud-user-center'
5 // let baseUrl = '/cloud-kako-user-center/user' 5 // let baseUrl = '/cloud-kako-user-center/user'
6 // let baseCode = '/cloud-kako-user-center/randCode' 6 // let baseCode = '/cloud-kako-user-center/randCode'
7 -export const getUserList = params => { return http.get(`${baseUrl}/list`, params); }; 7 +export const getUserList = params => { return http.post(`${serviceName}/crm/list`, params) };
8 8
9 export const getRandCode = params => { return http.get(`/cloud-user-center/anonymous/randCode`, params); }; 9 export const getRandCode = params => { return http.get(`/cloud-user-center/anonymous/randCode`, params); };
10 10
  1 +<template>
  2 + <div id="mapContainer"></div>
  3 +</template>
  4 +
  5 +<script>
  6 + import AMapLoader from '@amap/amap-jsapi-loader';
  7 + import {queryMulVel} from '../../api/consigner/vehicle';
  8 +
  9 + export default {
  10 + data() {
  11 + return {
  12 + mapInstance: null,
  13 + markers:[]
  14 + };
  15 + },
  16 + methods: {
  17 + fetchDataAndUpdateMap() {
  18 + // 请求后端数据
  19 + queryMulVel().then((response) => {
  20 + const res = response.data;
  21 + const firstVcl = res.data.data.firstVcl; // 获取首个车辆信息
  22 + const others = res.data.data.others; // 获取其他车辆信息
  23 +
  24 + // 清除之前的标记
  25 + this.markers.forEach(marker => {
  26 + marker.setMap(null);
  27 + });
  28 + this.markers = [];
  29 +
  30 + // 添加首个车辆标记
  31 + if (firstVcl && firstVcl.lon && firstVcl.lat) {
  32 + const marker = new AMap.Marker({
  33 + position: [firstVcl.lon / 600000.0, firstVcl.lat / 600000.0],
  34 + map: this.mapInstance,
  35 + title: firstVcl.vno,
  36 + label: {
  37 + content: firstVcl.vno,
  38 + offset: new AMap.Pixel(0, -20) // 偏移量,使标题显示在标记的上方
  39 + }
  40 + });
  41 + this.markers.push(marker);
  42 + }
  43 + if (others) {
  44 + others.forEach(vehicle => {
  45 + if (vehicle.lon && vehicle.lat) {
  46 + const marker = new AMap.Marker({
  47 + position: [vehicle.lon / 600000.0, vehicle.lat / 600000.0],
  48 + map: this.mapInstance,
  49 + title: vehicle.vno,
  50 + label: {
  51 + content: vehicle.vno,
  52 + offset: new AMap.Pixel(0, -20) // 偏移量,使标题显示在标记的上方
  53 + }
  54 + });
  55 + this.markers.push(marker);
  56 + }
  57 + });
  58 + }
  59 + // 自动调整地图视野,确保所有标记都可见
  60 + /*if (this.markers.length > 0) {
  61 + const bounds = new AMap.Bounds();
  62 + this.markers.forEach(marker => {
  63 + bounds.extend(marker.getPosition());
  64 + });
  65 + this.mapInstance.setBounds(bounds);
  66 + }*/
  67 + if(firstVcl && firstVcl.lon && firstVcl.lat){
  68 + this.mapInstance.setCenter([firstVcl.lon / 600000.0,firstVcl.lat / 600000.0])
  69 + }
  70 + }).catch(error => {
  71 + console.error('Failed to fetch data:', error);
  72 + });
  73 + }
  74 + },
  75 + mounted() {
  76 + AMapLoader.load({
  77 + key: 'fdb27c13681d084e85ff8457b5cbe540',
  78 + version: '2.0',
  79 + plugins: [],
  80 + }).then((AMap) => {
  81 + this.mapInstance = new AMap.Map('mapContainer', {
  82 + zoom: 5,
  83 + center: [116.397428, 39.90923], // 默认中心点位置
  84 + //viewMode: '3D', // 使用3D视图
  85 + //showIndoorMap: false,
  86 + //showLabel: false,
  87 + // mapStyle: 'amap://styles/dark',
  88 + //mapStyle: 'amap://styles/fresh',
  89 + });
  90 +
  91 + // 首次加载数据并更新地图
  92 + this.fetchDataAndUpdateMap();
  93 +
  94 + // 启动定时器,每10分钟刷新一次数据并更新地图
  95 + setInterval(() => {
  96 + this.fetchDataAndUpdateMap();
  97 + }, 10 * 60 * 1000);
  98 + }).catch((err) => {
  99 + console.error('Failed to load AMap:', err);
  100 + });
  101 + },
  102 + };
  103 +</script>
  104 +<style>
  105 + #mapContainer {
  106 + width: 100%;
  107 + height: 100vh;
  108 + }
  109 +</style>
@@ -306,9 +306,9 @@ @@ -306,9 +306,9 @@
306 :loading="loading" clearable placeholder="请选择"> 306 :loading="loading" clearable placeholder="请选择">
307 <el-option 307 <el-option
308 v-for="item in usernames" 308 v-for="item in usernames"
309 - :key="item.username"  
310 - :label="item.username"  
311 - :value="item.username" 309 + :key="item.departmentid"
  310 + :label="item.departmentid"
  311 + :value="item.departmentid"
312 :disabled="item.disabled"> 312 :disabled="item.disabled">
313 </el-option> 313 </el-option>
314 </el-select> 314 </el-select>
@@ -514,12 +514,10 @@ @@ -514,12 +514,10 @@
514 }, 514 },
515 //获取用户名 515 //获取用户名
516 getUsers:function() { 516 getUsers:function() {
517 - let para = {}; 517 + let para = {pageSize:1,pageNum:10000};
518 this.listLoading = true; 518 this.listLoading = true;
519 getUserList(para).then((res) => { 519 getUserList(para).then((res) => {
520 - let response = res.data.data;  
521 - console.log(response)  
522 - this.usernames=res.data.data.list; 520 + this.usernames = res.data.data.list;
523 }).catch((error) => { 521 }).catch((error) => {
524 this.$message.error(error.toString()); 522 this.$message.error(error.toString());
525 }); 523 });