siteList.vue 5.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167
  1. <template>
  2. <view class="site-item">
  3. <view class="site-name">{{info.locationName}}</view>
  4. <view class="site-info">
  5. <view class="site-left">
  6. <!-- class="one-row" -->
  7. <text class="one-row">{{`${info.provinceName}${info.cityName}${info.areaName}${info.address}`}}</text>
  8. <text class="one-row">距离{{getDistance(info.distance)}}</text>
  9. </view>
  10. <view class="site-right">
  11. <view class="site-btn" @click.stop="getPhoneCall(info.outerPhone)">
  12. <view class="site-icon">
  13. <svg t="1733972888261" class="icon" viewBox="0 0 1024 1024" version="1.1"
  14. xmlns="http://www.w3.org/2000/svg" p-id="4331" xmlns:xlink="http://www.w3.org/1999/xlink">
  15. <path
  16. d="M575.7 647.1l69.4-69.2 13.3 2.3c1.7 0.3 4.9 0.9 9.4 1.7 7.4 1.3 15.7 2.9 24.6 4.5 25.5 4.8 50.9 9.8 74.8 14.9 17.3 3.7 33.1 7.3 47 10.7 27.6 6.8 47.3 12.9 59.1 18.6 43 20.8 60 65.5 53.4 122-9.7 81.3-97 174.3-204.4 175.4-121 1.2-291.4-87.7-411.9-214.7C165.3 560.4 81.8 406.9 98 278.3c8.5-67.1 40.2-115.9 87.8-147.2 32.4-21.3 69.4-32.5 97.9-34.6 38.2-2.8 69.6 9.6 92.5 38 9.7 12 19.7 36.1 32.2 73.3 3.6 10.9 7.4 22.8 11.3 35.4 7 23 14.1 47.6 20.9 72.2 2.4 8.6 4.5 16.6 6.4 23.7 1.1 4.3 2 7.4 2.4 9.1l3.7 14.2-80.4 81.8c44.5 89 122.6 169.8 203 202.9z m13.5 60l-15.3-5.1c-105.4-35.6-205.4-139.4-256.3-252.3l-7.3-16.2 85-86.4c-1.5-5.6-3.1-11.6-4.9-17.9-6.6-24.1-13.5-48.2-20.4-70.7-3.8-12.3-7.4-23.7-10.9-34.2-10.2-30.5-19.1-52-23.3-57.2-11.8-14.6-26.4-20.4-48.2-18.8-20.2 1.5-48.7 10.1-73.1 26.2-35.2 23.2-58.3 58.6-64.8 110.3-13.8 108.7 63.1 250.2 198.4 392.7C459.5 794.9 617 877 721.8 876c79.2-0.8 146.4-72.5 153.2-129.4 4.3-36.6-4.3-59.4-24.4-69.1-7.5-3.6-24.7-8.9-48.9-14.9-13.4-3.3-28.6-6.8-45.4-10.4-23.3-5-48.4-10-73.5-14.7-7.2-1.3-13.9-2.6-20.1-3.7l-73.5 73.3z"
  17. p-id="4332">
  18. </path>
  19. </svg>
  20. </view>
  21. <text class="site-text">电话</text>
  22. </view>
  23. <view class="site-btn" @click.stop="openLocation(info)">
  24. <view class="site-icon">
  25. <svg t="1733972953937" class="icon" viewBox="0 0 1024 1024" version="1.1"
  26. xmlns="http://www.w3.org/2000/svg" p-id="8440" xmlns:xlink="http://www.w3.org/1999/xlink">
  27. <path
  28. d="M894.185422 128.023792 129.814578 445.743994 445.99982 577.744353 571.860343 893.929596Z"
  29. p-id="8441"></path>
  30. </svg>
  31. </view>
  32. <text class="site-text">导航</text>
  33. </view>
  34. </view>
  35. </view>
  36. <view class="site-time">
  37. <text>办公时间</text>
  38. <text>{{info.workTimeRemark}}</text>
  39. </view>
  40. </view>
  41. </template>
  42. <script type="text/javascript" src="https://webapi.amap.com/maps?v=2.0&key=427c1b3b7b0aaa258221992c860859f7"></script>
  43. <script>
  44. import { distanceCalculate, PhoneCall, getMapLocation } from "@/utils/tool.js";
  45. import { openMap } from "@/utils/openApp.js"
  46. export default {
  47. props: {
  48. info: {
  49. type: Object,
  50. require: true,
  51. default: () => {}
  52. }
  53. },
  54. data() {
  55. return {
  56. // outerPhone
  57. }
  58. },
  59. mounted() {
  60. setTimeout(function() {
  61. var gps = [116.3, 39.9]; //需要转换的gps类型的坐标
  62. //参数说明:需要转换的坐标或者坐标组,需要转换的坐标类型,转换成功后的回调函数
  63. AMap.convertFrom(gps, "gps", function (status, result) {
  64. //status:complete 表示查询成功,no_data 为查询无结果,error 代表查询错误
  65. //查询成功时,result.locations 即为转换后的高德坐标系
  66. if (status === "complete" && result.info === "ok") {
  67. var lnglats = result.locations; //转换后的高德坐标 Array.<LngLat>
  68. console.log("lnglatslnglats = " ,result );
  69. }
  70. });
  71. }, 5000);
  72. },
  73. methods: {
  74. getDistance(num) {
  75. return distanceCalculate(num)
  76. },
  77. getPhoneCall(tel) {
  78. PhoneCall(tel)
  79. },
  80. openLocation(info) {
  81. const name = `${info.provinceName}${info.cityName}${info.areaName}${info.address}`;
  82. const latitude = info.latitude;
  83. const longitude = info.longitude;
  84. // latitude, longitude, name, detailedAddress
  85. // getMapLocation({ name, latitude, longitude, detailedAddress })
  86. openMap({ longitude, latitude, name, mapApp: "baidu" })
  87. // openMap(116.404, 39.915, "目的地", "baidu");
  88. }
  89. }
  90. }
  91. </script>
  92. <style lang="scss" scoped>
  93. .site-item {
  94. width: 100%;
  95. padding-bottom: 20rpx;
  96. // background-color: #ccc;
  97. .site-name {
  98. font-size: 30rpx;
  99. background-color: #fff;
  100. }
  101. .site-info {
  102. background-color: #fff;
  103. display: flex;
  104. justify-content: space-between;
  105. align-items: center;
  106. .site-left {
  107. width: 1px;
  108. flex: 1;
  109. display: flex;
  110. flex-direction: column;
  111. font-size: 28rpx;
  112. }
  113. .site-right {
  114. flex-shrink: 0;
  115. display: flex;
  116. align-items: center;
  117. .site-btn {
  118. margin-left: 10rpx;
  119. display: flex;
  120. flex-direction: column;
  121. align-items: center;
  122. .site-icon {
  123. width: 50rpx;
  124. height: 50rpx;
  125. line-height: 1;
  126. border-radius: 50%;
  127. background-color: #3291F8;
  128. display: flex;
  129. align-items: center;
  130. justify-content: center;
  131. }
  132. .icon {
  133. width: 30rpx;
  134. height: 30rpx;
  135. path {
  136. fill: #fff;
  137. }
  138. }
  139. .site-text {
  140. font-size: 28rpx;
  141. }
  142. }
  143. }
  144. }
  145. .site-time {
  146. background-color: #fff;
  147. border-top: 1rpx solid #F0F0F0;
  148. padding: 10rpx 0;
  149. display: flex;
  150. justify-content: space-between;
  151. font-size: 28rpx;
  152. color: #7D7D7D;
  153. }
  154. }
  155. </style>