common.ts 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. // -防抖
  2. export function debounce(fn: Function, wait: number) {
  3. let delay = wait || 500
  4. let timer: any = null;
  5. return function () {
  6. let args = arguments;
  7. if (timer) {
  8. clearTimeout(timer)
  9. console.log('debounce')
  10. }
  11. let callNow = !timer
  12. timer = setTimeout(() => {
  13. console.log('debounce send')
  14. timer = null
  15. }, delay)
  16. if (callNow) fn.apply(null, args)
  17. }
  18. }
  19. // -节流
  20. export function throttle(fn: Function, wait: number) {
  21. let delay = wait || 500
  22. let timer: any = null;
  23. return function () {
  24. if (timer) {
  25. console.log('throttle');
  26. return
  27. }
  28. timer = setTimeout(() => {
  29. console.log('throttle send');
  30. fn.apply(null, arguments)
  31. timer = null
  32. }, delay)
  33. }
  34. }
  35. //计算坐标距离
  36. export function calcMapDistance(lat1: number, lng1: number, lat2: number, lng2: number) {
  37. let radLat1 = (lat1 * Math.PI) / 180.0;
  38. let radLat2 = (lat2 * Math.PI) / 180.0;
  39. let a = radLat1 - radLat2;
  40. let b = (lng1 * Math.PI) / 180.0 - (lng2 * Math.PI) / 180.0;
  41. let s =
  42. 2 *
  43. Math.asin(
  44. Math.sqrt(
  45. Math.pow(Math.sin(a / 2), 2) +
  46. Math.cos(radLat1) * Math.cos(radLat2) * Math.pow(Math.sin(b / 2), 2)
  47. )
  48. );
  49. s = s * 6378.137; // EARTH_RADIUS;
  50. s = Math.round(s * 10000) / 10000;
  51. return s.toFixed(2);
  52. }
  53. export function groupByKey(elements: Array<any>, key: string) {
  54. return elements.reduce((groups, item) => {
  55. const groupKey = item[key];
  56. if (!groups[groupKey]) {
  57. groups[groupKey] = [];
  58. }
  59. groups[groupKey].push(item);
  60. return groups;
  61. }, {});
  62. }
  63. export function getDictName(code:string, value: string) {
  64. let dictStorage:any = uni.getStorageSync('dict');
  65. console.log(dictStorage)
  66. if(!dictStorage){
  67. return value;
  68. }
  69. let elements = dictStorage[code];
  70. if(elements){
  71. let ele = elements.find((k: any)=>k.value===value);
  72. if(ele){
  73. return ele.name;
  74. }
  75. }
  76. return value;
  77. }