utils.js 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177
  1. import { Linking } from "react-native";
  2. import { showLocation } from 'react-native-map-link'
  3. /**
  4. * 工具集
  5. * @邠心vbe on 2021/04/20
  6. */
  7. const formatNumber = (n) => {
  8. n = n.toString()
  9. return n[1] ? n : '0' + n
  10. }
  11. export default {
  12. getDistance(dis) {
  13. if (dis) {
  14. if (dis > 1000) {
  15. return Number((dis / 1000).toFixed(1)) + 'km';
  16. } else {
  17. return dis + 'm';
  18. }
  19. } else {
  20. return 'NA';
  21. }
  22. },
  23. directMaps(lat, lng, address) {
  24. if (isIOS) {
  25. showLocation({
  26. latitude: lat,
  27. longitude: lng,
  28. title: address
  29. }).catch(err => {
  30. console.warn("directMaps", err);
  31. });
  32. } else {
  33. var uri = "geo:" + lat + "," + lng + "?q=" + address;
  34. Linking.openURL(uri).catch(err => {
  35. console.warn("directMaps", err);
  36. });
  37. }
  38. },
  39. getSiteInfo(obj) {
  40. if (obj) {
  41. const acRates = [], dcRates = [];
  42. obj?.rates.forEach((item) => {
  43. if (item.type?.indexOf('AC') >= 0) {
  44. acRates.push(item)
  45. } else {
  46. dcRates.push(item)
  47. }
  48. })
  49. return {
  50. id: obj.sitePk,
  51. name: obj.siteName,
  52. address: obj.siteAddress,
  53. latitude: obj.locationLatitude,
  54. longitude: obj.locationLongitude,
  55. acConnector: obj.acConnector,
  56. allConnector: obj.allConnector,
  57. dcConnector: obj.dcConnector,
  58. distance: this.getDistance(obj.distance),
  59. acRates: acRates,
  60. dcRates: dcRates,
  61. rateList: obj.rates,
  62. siteType: obj.siteType,
  63. parkingFee: obj.parkingFee,
  64. parkingFeeFree: obj.free,
  65. operatingHours: obj.operatingHours,
  66. additionalNotes: obj.additionalNotes,
  67. endlessService: obj.endlessService,
  68. serviceProvider: obj.serviceProvider,
  69. enableReservation: obj.enableReservation
  70. }
  71. } else {
  72. return {id: 0}
  73. }
  74. },
  75. getNowHHmm() {
  76. const now = new Date();
  77. var month = now.getHours();
  78. var minute = now.getMinutes();
  79. return [month, minute].map(formatNumber).join(':');
  80. },
  81. getYYMMdd(date) {
  82. var year = date.getFullYear()
  83. var month = date.getMonth() + 1
  84. var day = date.getDate()
  85. //var hour = date.getHours()
  86. //var minute = date.getMinutes()
  87. //var second = date.getSeconds()
  88. return [year, month, day].map(formatNumber).join('/')
  89. },
  90. formatYYMM(date) {
  91. var year = date.getFullYear()
  92. var month = date.getMonth() + 1
  93. return [year, month].map(formatNumber).join('-')
  94. },
  95. hour2HHmm(hour) {
  96. if (hour) {
  97. if (hour > 0) {
  98. const h = parseInt(hour);
  99. const m = (hour - h) * 60;
  100. return h + ' hr ' + parseInt(m) + 'min';
  101. } else {
  102. const m = hour * 60;
  103. return parseInt(m) + 'min';
  104. }
  105. } else {
  106. return '0 min';
  107. }
  108. },
  109. minutes2HHmm(minutes) {
  110. if (minutes) {
  111. if (minutes > 60) {
  112. const m = parseInt(minutes);
  113. const h = m / 60;
  114. const mm = m % 60;
  115. return h + ' hr ' + parseInt(mm) + 'min';
  116. } else {
  117. return parseInt(minutes) + 'min';
  118. }
  119. } else {
  120. return '0 min';
  121. }
  122. },
  123. isEmpty(str, encNo=false) {
  124. if (typeof str == 'number') {
  125. if (encNo) {
  126. return str === 0;
  127. } else {
  128. return false;
  129. }
  130. } else if (str) {
  131. if (typeof str == 'object') {
  132. return Object.keys(str).length == 0;
  133. } else if (Array.isArray(str)) {
  134. return str.length == 0;
  135. } else {
  136. if (str == undefined || str == null || str == "")
  137. return true;
  138. return false;
  139. }
  140. } else {
  141. return true;
  142. }
  143. },
  144. isNotEmpty(str, encNo) {
  145. return !this.isEmpty(str, encNo);
  146. },
  147. getParamsFromUrl(url) {
  148. var params = {}
  149. const list = url.split('&');
  150. for (let item of list) {
  151. if (item.indexOf('=') > 0) {
  152. const param = item.split('=');
  153. if (param.length == 2)
  154. params[param[0]] = param[1];
  155. }
  156. }
  157. return params;
  158. },
  159. join(arrays=[], spect="") {
  160. let str = ''
  161. if (arrays) {
  162. arrays.forEach((item, index) => {
  163. if (index == 0) {
  164. str += item;
  165. } else {
  166. str += spect + item;
  167. }
  168. });
  169. }
  170. return str;
  171. }
  172. }