util.js 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182
  1. import $site from "./site";
  2. const ksort = obj => {
  3. let keys = Object.keys(obj).sort()
  4. , sortedObj = {};
  5. for (let i in keys) {
  6. sortedObj[keys[i]] = obj[keys[i]];
  7. }
  8. return sortedObj;
  9. }
  10. const checkNullObj = (obj) => {
  11. if (Object.keys(obj).length === 0) {
  12. return false
  13. }
  14. return true
  15. }
  16. const checkArrayNotNullNumber = (array,notNullNumber = 2) => {
  17. let num = 0
  18. for (const item in array) {
  19. if(array[item]) num++;
  20. }
  21. return num >= notNullNumber;
  22. }
  23. // 正切
  24. const tan = angle => {
  25. return Math.tan(angle * Math.PI / 180)
  26. }
  27. // 余切
  28. const cot = angle => {
  29. return 1 / tan(angle)
  30. }
  31. // 余弦
  32. const cos = angle => {
  33. return Math.cos(angle * Math.PI / 180)
  34. }
  35. // 余割
  36. const csc = angle => {
  37. return 1 / sin(angle)
  38. }
  39. // 正弦
  40. const sin = angle => {
  41. return Math.sin(angle * Math.PI / 180)
  42. }
  43. // 正割
  44. const sec = angle => {
  45. return 1 / cos(angle)
  46. }
  47. // 反正弦
  48. const asin = value => {
  49. return Math.asin(value) * 180 / Math.PI;
  50. }
  51. // 反余弦
  52. const acos = value => {
  53. return Math.acos(value) * 180 / Math.PI;
  54. }
  55. // 反正切
  56. const atan = value => {
  57. return Math.atan(value) * 180 / Math.PI;
  58. }
  59. const checkTriangle = (a,b,c) => {
  60. a = parseInt(a);
  61. b= parseInt(b);
  62. c = parseInt(c);
  63. return a + b > c && a + c > b && b + c > a;
  64. }
  65. const round = (number,percent) => {
  66. if(!number) return number
  67. let flag = number < 0 ? '-' : '';
  68. let arr = number.toString().split(".");
  69. if(arr.length > 1 && arr[1].length === 2) return number
  70. let i = Number('1'.padEnd(percent+1,'0'))
  71. number = Math.floor(Math.abs(Number(number)) * i) / i
  72. if(arr.length > 1 ){
  73. let str = arr[1]
  74. if(str.length > 2 && str[2] >= 5){
  75. number = Math.ceil(number * i)
  76. number += 1;
  77. number = number / i;
  78. }
  79. }
  80. if(number.toString().indexOf(".") === -1) number += ".0"
  81. arr = number.toString().split(".");
  82. arr[1] = arr[1].toString().padEnd(2,'0')
  83. number = arr.join(".")
  84. return flag+number;
  85. }
  86. const objectToUrlParams = function (obj, urlencode) {
  87. let str = "";
  88. for (let key in obj) {
  89. str += "&" + key + "=" + (urlencode ? encodeURIComponent(obj[key]) : obj[key]);
  90. }
  91. return str.substr(1);
  92. }
  93. const shareMessage = user => {
  94. let args = {
  95. path: '/pages/index/index',
  96. params: {
  97. user_id : user.id,
  98. },
  99. title: '桥架计算和公示表永久使用',
  100. desc: '做桥架不求人,让你秒变大师!',
  101. imageUrl: $site.root+"assets/images/formula/formula-cover.png"
  102. };
  103. return args ;
  104. }
  105. /**
  106. * WXSceneSession 分享到聊天界面
  107. * WXSenceTimeline 分享到朋友圈
  108. * WXSceneFavorite 分享到微信收藏
  109. * @param user
  110. * @param scene
  111. */
  112. const share = (user,scene = "WXSenceTimeline") => {
  113. uni.share({
  114. provider: 'weixin',
  115. scene: "WXSceneSession",
  116. type: 5,
  117. imageUrl: 'https://bjetxgzv.cdn.bspapp.com/VKCEYUGU-uni-app-doc/962fc340-4f2c-11eb-bdc1-8bd33eb6adaa.png',
  118. title: '欢迎体验uniapp',
  119. miniProgram: {
  120. id: 'gh_abcdefg',
  121. path: 'pages/index/index',
  122. type: 0,
  123. webUrl: 'http://uniapp.dcloud.io'
  124. },
  125. success: ret => {
  126. console.log(JSON.stringify(ret));
  127. },
  128. fail: err => {
  129. console.error("fail:" + JSON.stringify(err));
  130. }
  131. });
  132. /*uni.share({
  133. provider: "weixin",
  134. scene: scene,
  135. type: 5, // 小程序
  136. miniProgram: {
  137. id: 'gh_cdaf361f6966',
  138. path:'/pages/index/index?user_id='+user.id,
  139. },
  140. title: '桥架计算和公示表永久使用',
  141. summary: "做桥架不求人,让你秒变大师!",
  142. imageUrl: $site.root+"assets/images/formula/formula-cover.png",
  143. success: function (res) {
  144. console.log("success:" + JSON.stringify(res));
  145. },
  146. fail: function (err) {
  147. console.error("fail:" + JSON.stringify(err));
  148. }
  149. });*/
  150. }
  151. export {
  152. ksort,
  153. checkNullObj,
  154. checkArrayNotNullNumber,
  155. tan,
  156. cot,
  157. cos,
  158. csc,
  159. sin,
  160. sec,
  161. asin,
  162. acos,
  163. atan,
  164. checkTriangle,
  165. round,
  166. objectToUrlParams,
  167. shareMessage,
  168. share
  169. }