util.js 5.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219
  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. number = parseFloat(number).toFixed(percent)
  68. number = Math.abs(number);
  69. let flag = number < 0 ? '-' : '';
  70. let arr = number.toString().split(".");
  71. if(arr.length > 1 && arr[1].length === 2) return number;
  72. if(arr.length === 1) arr.push('00')
  73. if(arr.length > 1 && arr[1].length < 2) arr[1] = arr[1].padEnd(percent,'0')
  74. return flag+arr.join(".");
  75. }
  76. const objectToUrlParams = function (obj, urlencode) {
  77. let str = "";
  78. for (let key in obj) {
  79. str += "&" + key + "=" + (urlencode ? encodeURIComponent(obj[key]) : obj[key]);
  80. }
  81. return str.substr(1);
  82. }
  83. const shareMessage = user => {
  84. let args = {
  85. path: '/pages/index/index',
  86. params: {
  87. user_id : user.id,
  88. },
  89. title: '桥架计算和公示表永久使用',
  90. desc: '做桥架不求人,让你秒变大师!',
  91. imageUrl: $site.root+"assets/images/formula/formula-cover.png"
  92. };
  93. return args ;
  94. }
  95. /**
  96. * WXSceneSession 分享到聊天界面
  97. * WXSenceTimeline 分享到朋友圈
  98. * WXSceneFavorite 分享到微信收藏
  99. * @param user
  100. * @param scene
  101. */
  102. const share = (user,scene = "WXSenceTimeline") => {
  103. uni.share({
  104. provider: "weixin",
  105. scene: scene,
  106. type: 5, // 小程序
  107. miniProgram: {
  108. id: 'gh_cdaf361f6966',
  109. path:'/pages/index/index?user_id='+user.id,
  110. },
  111. title: '桥架计算和公示表永久使用',
  112. summary: "做桥架不求人,让你秒变大师!",
  113. imageUrl: $site.root+"assets/images/formula/formula-cover.png",
  114. success: function (res) {
  115. console.log("success:" + JSON.stringify(res));
  116. },
  117. fail: function (err) {
  118. console.error("fail:" + JSON.stringify(err));
  119. }
  120. });
  121. }
  122. const login = () => {
  123. let page = getCurrentPages()[0]
  124. let route = page.route;
  125. let arr = [];
  126. for (const key in page.options) {
  127. arr.push(`${key}=${page.options[key]}`)
  128. }
  129. uni.reLaunch({
  130. url: `/pages/login/login?redirect=${route}&${arr.join("&")}`,
  131. });
  132. }
  133. const saveImage = url => {
  134. return new Promise((resolve, reject) => {
  135. uni.downloadFile({
  136. url: url,
  137. success: (res) => {
  138. if (res.statusCode === 200) {
  139. console.log('下载成功');
  140. uni.authorize({
  141. scope: 'scope.writePhotosAlbum',
  142. success() {
  143. uni.saveImageToPhotosAlbum({
  144. filePath: res.tempFilePath,
  145. success: function(red) {
  146. uni.$u.toast(`保存成功`)
  147. //uni.$u.toast(`保存路径:${red.savedFilePath}`)
  148. resolve()
  149. },
  150. fail: function() {
  151. uni.$u.toast(`保存失败`)
  152. reject()
  153. }
  154. });
  155. },
  156. fail: err => {
  157. uni.$u.toast(`授权失败`+JSON.stringify(err))
  158. reject()
  159. }
  160. })
  161. }else{
  162. uni.$u.toast(`保存失败`)
  163. reject()
  164. }
  165. },
  166. fail: err => {
  167. uni.$u.toast(`保存失败`+JSON.stringify(err))
  168. reject()
  169. }
  170. });
  171. })
  172. }
  173. const copyText = text => {
  174. uni.setClipboardData({
  175. data: text,
  176. success: function () {
  177. uni.hideLoading();
  178. uni.$u.toast(`复制成功`)
  179. }
  180. });
  181. }
  182. export {
  183. ksort,
  184. checkNullObj,
  185. checkArrayNotNullNumber,
  186. tan,
  187. cot,
  188. cos,
  189. csc,
  190. sin,
  191. sec,
  192. asin,
  193. acos,
  194. atan,
  195. checkTriangle,
  196. round,
  197. objectToUrlParams,
  198. shareMessage,
  199. share,
  200. login,
  201. saveImage,
  202. copyText
  203. }