Sin descripción

helper.js 7.1KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336
  1. /* eslint-disable */
  2. import mRouter from '@/utils/router';
  3. import mStore from '@/store';
  4. import appShare from '@/utils/share';
  5. import { http } from '@/utils/request';
  6. export default {
  7. /**
  8. * toast提示
  9. */
  10. toast(title, duration = 3000, mask = false, icon = 'none') {
  11. if (Boolean(title) === false) {
  12. return;
  13. }
  14. uni.showToast({
  15. title,
  16. duration,
  17. mask,
  18. icon
  19. });
  20. },
  21. //获取当前时间
  22. CurentTime() {
  23. const now = new Date();
  24. const year = now.getFullYear(); //年
  25. const month = now.getMonth() + 1; //月 .toString().padstart(2,0)
  26. const day = now.getDate().toString().padStart(2,0); //日
  27. const hh = now.getHours().toString().padStart(2,0); //时
  28. const mm = now.getMinutes().toString().padStart(2,0); //分
  29. const ss = now.getSeconds().toString().padStart(2,0); //秒
  30. return year + "-" + month.toString().padStart(2,0) + "-" + day + " " + hh + ":" + mm + ":" + ss ;
  31. },
  32. /**
  33. * 返回上一页携带参数
  34. */
  35. prePage(index) {
  36. let pages = getCurrentPages();
  37. let prePage = pages[pages.length - (index || 2)];
  38. // #ifdef H5
  39. return prePage;
  40. // #endif
  41. return prePage.$vm;
  42. },
  43. /**
  44. * 开发环境全局打印日志
  45. * @param {Object} title
  46. */
  47. log(title) {
  48. if (process.env.NODE_ENV === 'development' && Boolean(title) === true) {
  49. console.log(JSON.stringify(title));
  50. }
  51. },
  52. /**
  53. * 异步获取设备信息
  54. */
  55. getInfoAsync() {
  56. return new Promise((resolve, reject) => {
  57. plus.device.getInfo({
  58. success(e) {
  59. resolve(e);
  60. },
  61. fail(e) {
  62. reject(e.message);
  63. }
  64. });
  65. });
  66. },
  67. /**
  68. * 安卓10不支持IMEI,则获取OAID
  69. */
  70. getOaidAsync() {
  71. return new Promise((resolve, reject) => {
  72. plus.device.getOAID({
  73. success(e) {
  74. resolve(e);
  75. },
  76. fail(e) {
  77. reject(e.message);
  78. }
  79. });
  80. });
  81. },
  82. /**
  83. * 获取一个随机数
  84. * @param {Object} min
  85. * @param {Object} max
  86. */
  87. random(min, max) {
  88. switch (arguments.length) {
  89. case 1:
  90. return parseInt(Math.random() * min + 1, 10);
  91. break;
  92. case 2:
  93. return parseInt(Math.random() * (max - min + 1) + min, 10);
  94. break;
  95. default:
  96. return 0;
  97. break;
  98. }
  99. },
  100. /**
  101. * 获取ios的IDFA
  102. */
  103. getIdfa() {
  104. let idfa = '';
  105. try {
  106. if ('iOS' == plus.os.name) {
  107. let manager = plus.ios.invoke('ASIdentifierManager', 'sharedManager');
  108. if (plus.ios.invoke(manager, 'isAdvertisingTrackingEnabled')) {
  109. let identifier = plus.ios.invoke(manager, 'advertisingIdentifier');
  110. idfa = plus.ios.invoke(identifier, 'UUIDString');
  111. plus.ios.deleteObject(identifier);
  112. }
  113. plus.ios.deleteObject(manager);
  114. }
  115. } catch (e) {
  116. console.error('获取idfa失败');
  117. }
  118. return idfa;
  119. },
  120. /*
  121. * obj 转 params字符串参数
  122. * 例子:{a:1,b:2} => a=1&b=2
  123. */
  124. objParseParam(obj) {
  125. let paramsStr = '';
  126. if (obj instanceof Array) return paramsStr;
  127. if (!(obj instanceof Object)) return paramsStr;
  128. for (let key in obj) {
  129. paramsStr += `${key}=${obj[key]}&`;
  130. }
  131. return paramsStr.substring(0, paramsStr.length - 1);
  132. },
  133. /*
  134. * obj 转 路由地址带参数
  135. * 例子:{a:1,b:2} => /pages/index/index?a=1&b=2
  136. */
  137. objParseUrlAndParam(path, obj) {
  138. let url = path || '/';
  139. let paramsStr = '';
  140. if (obj instanceof Array) return url;
  141. if (!(obj instanceof Object)) return url;
  142. paramsStr = this.objParseParam(obj);
  143. paramsStr && (url += '?');
  144. url += paramsStr;
  145. return url;
  146. },
  147. /*
  148. * 获取url字符串参数
  149. */
  150. getRequestParameters(locationhref) {
  151. let href = locationhref || '';
  152. let theRequest = new Object();
  153. let str = href.split('?')[1];
  154. if (str != undefined) {
  155. let strs = str.split('&');
  156. for (let i = 0; i < strs.length; i++) {
  157. theRequest[strs[i].split('=')[0]] = strs[i].split('=')[1];
  158. }
  159. }
  160. return theRequest;
  161. },
  162. /**
  163. * 加密字符串
  164. */
  165. strEncode(str) {
  166. const key = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ';
  167. let l = key.length;
  168. let a = key.split('');
  169. let s = '',
  170. b,
  171. b1,
  172. b2,
  173. b3;
  174. for (let i = 0; i < str.length; i++) {
  175. b = str.charCodeAt(i);
  176. b1 = b % l;
  177. b = (b - b1) / l;
  178. b2 = b % l;
  179. b = (b - b2) / l;
  180. b3 = b % l;
  181. s += a[b3] + a[b2] + a[b1];
  182. }
  183. return s;
  184. },
  185. /**
  186. * 解密字符串
  187. */
  188. strDecode(str) {
  189. const key = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ';
  190. let l = key.length;
  191. let b,
  192. b1,
  193. b2,
  194. b3,
  195. d = 0,
  196. s;
  197. s = new Array(Math.floor(str.length / 3));
  198. b = s.length;
  199. for (let i = 0; i < b; i++) {
  200. b1 = key.indexOf(str.charAt(d));
  201. d++;
  202. b2 = key.indexOf(str.charAt(d));
  203. d++;
  204. b3 = key.indexOf(str.charAt(d));
  205. d++;
  206. s[i] = b1 * l * l + b2 * l + b3;
  207. }
  208. b = eval('String.fromCharCode(' + s.join(',') + ')');
  209. return b;
  210. },
  211. /**
  212. * 比较版本号
  213. */
  214. compareVersion(reqV, curV) {
  215. if (curV && reqV) {
  216. let arr1 = curV.split('.'),
  217. arr2 = reqV.split('.');
  218. let minLength = Math.min(arr1.length, arr2.length),
  219. position = 0,
  220. diff = 0;
  221. while (
  222. position < minLength &&
  223. (diff = parseInt(arr1[position]) - parseInt(arr2[position])) == 0
  224. ) {
  225. position++;
  226. }
  227. diff = diff != 0 ? diff : arr1.length - arr2.length;
  228. if (diff > 0) {
  229. if (position == minLength - 1) {
  230. return 1;
  231. } else {
  232. return 2;
  233. }
  234. } else {
  235. return 0;
  236. }
  237. } else {
  238. return 0;
  239. }
  240. },
  241. /**
  242. * H5复制
  243. */
  244. h5Copy(content) {
  245. let textarea = document.createElement('textarea');
  246. textarea.value = content;
  247. textarea.readOnly = 'readOnly';
  248. document.body.appendChild(textarea);
  249. textarea.select(); // 选择对象
  250. textarea.setSelectionRange(0, content.length); //核心
  251. let result = document.execCommand('Copy'); // 执行浏览器复制命令
  252. textarea.remove();
  253. const msg = result ? '复制成功' : '复制失败';
  254. this.toast(msg);
  255. },
  256. /**
  257. * app分享
  258. */
  259. handleAppShare(shareUrl, shareTitle, shareContent, shareImg) {
  260. let shareData = {
  261. shareUrl,
  262. shareTitle,
  263. shareContent,
  264. shareImg
  265. };
  266. appShare(shareData, res => {});
  267. },
  268. // 去掉字符串中的空格
  269. trim(str){
  270. if (!str) {
  271. return '';
  272. }
  273. return str.replace(/\s*/g,'');
  274. },
  275. // 判断两个对象是否相同
  276. isObjectValueEqual(x, y) {
  277. // 指向同一内存时
  278. if (x === y) {
  279. return true;
  280. } else if (
  281. typeof x == 'object' &&
  282. x != null &&
  283. typeof y == 'object' && y != null
  284. ) {
  285. if (Object.keys(x).length != Object.keys(y).length) return false;
  286. for (var prop in x) {
  287. if (y.hasOwnProperty(prop)) {
  288. if (!this.isObjectValueEqual(x[prop], y[prop])) return false;
  289. } else return false;
  290. }
  291. return true;
  292. } else return false;
  293. },
  294. platformGroupFilter () {
  295. let platformGroup = 'wechat';
  296. // #ifdef H5
  297. platformGroup = 'h5';
  298. // #endif
  299. // #ifdef MP-QQ
  300. platformGroup = 'qqMp';
  301. // #endif
  302. // #ifdef MP-WEIXIN
  303. platformGroup = 'wechatMp';
  304. // #endif
  305. // #ifdef MP-ALIPAY
  306. platformGroup = 'aliMp';
  307. // #endif
  308. // #ifdef MP-QQ
  309. platformGroup = 'qqMp';
  310. // #endif
  311. // #ifdef MP-BAIDU
  312. platformGroup = 'baiduMp';
  313. // #endif
  314. // #ifdef APP-PLUS
  315. switch(uni.getSystemInfoSync().platform){
  316. case 'android':
  317. platformGroup = 'android';
  318. break;
  319. case 'ios':
  320. platformGroup = 'ios';
  321. break;
  322. }
  323. // #endif
  324. return platformGroup;
  325. }
  326. };