kongdeqiang
2 天以前 6ac0e6669f3a8ea18c7ac90b37405c65313a1c5f
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
<template>
  <div>
    <div style="padding-top:10px;"></div>
    <table border="1" class="dataframe">
      <thead>
        <tr style="text-align: right;">
          <th>停车场</th>
          <th>车位总数</th>
          <th>剩余</th>
          <th>导航</th>
        </tr>
      </thead>
      <tbody>
        <tr v-for="(item, index) in tableData" :key="item.id">
          <td style="text-align: left;">{{ item.name }}</td>
          <td>{{ item.num }}</td>
          <td>{{ Math.floor(Number(item.num) - Number(item.carNum)) }}</td>
          <td style="text-align: left;"><a @click="goPark(item.name)">打开导航</a></td>
        </tr>
      </tbody>
    </table>
  </div>
</template>
 
<script>
export default {
  data() {
    return {
      tableData: [],
      urlPath: this.$systemconfig.basePath + '/ffzf/park/',
    }
  },
 
  created() {
    this.getTableData()
  },
 
  methods: {
    getTableData() {
      this.$byutil.postData4(this, this.urlPath + 'findPage', { size: 50 }, res => {
        this.tableData = res.data.records
      });
    },
 
    goPark(name) {
      // console.log('name=', name);
      this.openMap('114.23123', '36.43123', name, "baidu");
    },
 
    // ---------------------------------
    openMap(longitude, latitude, name, mapApp) {
      let url;
      switch (mapApp) {
        case 'baidu':
          url = `baidumap://map/marker?location=${latitude},${longitude}&title=${encodeURIComponent(name)}&content=${encodeURIComponent(name)}&src=webapp`;
          break;
        case 'gaode':
          url = `iosamap://navi?sourceApplication=webapp&backScheme=myapp://&lat=${latitude}&lon=${longitude}&name=${encodeURIComponent(name)}&dev=0`;
          break;
        case 'tencent':
          url = `qqmap://map/rgeo?location=${latitude},${longitude}&name=${encodeURIComponent(name)}&coord_type=1&policy=0`;
          break;
        default:
          console.error('不支持的地图类型');
          return;
      }
 
      // 使用iframe打开URL Scheme,避免直接跳转导致页面卡死
      const iframe = document.createElement('iframe');
      iframe.style.display = 'none';
      iframe.src = url;
      document.body.appendChild(iframe);
      setTimeout(() => {
        document.body.removeChild(iframe);
      }, 1000);
 
 
      // 定时器检测是否唤起成功,如果失败则跳转到网页版地图
      let timer = setTimeout(() => {
        window.location.href = `https://uri.amap.com/marker?position=${longitude},${latitude}&name=${encodeURIComponent(name)}&src=mypage&coordinate=gaode&callnative=0`; // 默认跳转高德网页版
      }, 2000);
 
      window.addEventListener('blur', () => {
        clearTimeout(timer)
      });
 
    }
  },
}
</script>
 
<style scoped>
table {
  width: 100%;
  border-collapse: collapse;
}
 
th,
td {
  border: 1px solid #ddd;
  padding: 8px;
  text-align: center;
}
 
th {
  background-color: #f2f2f2;
}
 
@media (max-width: 600px) {
  table {
    font-size: 14px;
  }
}
</style>