util.js 19 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735
  1. /* eslint-disable */
  2. //常用方法集合
  3. export default {
  4. countDownClock(time) {
  5. let times = Math.floor(time / 1000);
  6. let secondNum = times % 60;
  7. let minuteNum = Math.floor((times / 60) % 60);
  8. let hourNum = Math.floor((times / (60 * 60)) % 24);
  9. let dayNum = Math.floor(times / (60 * 60 * 24));
  10. let str;
  11. if (dayNum > 0) {
  12. str = dayNum + '天 ' + (hourNum > 9 ? hourNum : '0' + hourNum) + ':' + (minuteNum > 9 ? minuteNum : '0' +
  13. minuteNum) + ':' + (secondNum > 9 ? secondNum : '0' + secondNum);
  14. // console.log(str,1)
  15. return str
  16. } else if (hourNum > 0) {
  17. str = (hourNum > 9 ? hourNum : '0' + hourNum) + ':' + (minuteNum > 9 ? minuteNum : '0' + minuteNum) + ':' +
  18. (secondNum > 9 ? secondNum : '0' + secondNum)
  19. // console.log(str,2)
  20. return str;
  21. } else if (minuteNum > 0) {
  22. str = '00:' + (minuteNum > 9 ? minuteNum : '0' + minuteNum) + ':' + (secondNum > 9 ? secondNum : '0' +
  23. secondNum);
  24. // console.log(minuteNum,str,3)
  25. return str
  26. } else if (secondNum > 0) {
  27. str = '00:00:' + (secondNum > 9 ? secondNum : '0' + secondNum);
  28. // console.log(secondNum,4)
  29. return str
  30. } else {
  31. return '00:00:00'
  32. }
  33. },
  34. formatRichText(html) {
  35. //控制小程序中图片大小
  36. if (!html) {
  37. return "";
  38. }
  39. let newContent = html.replace(/<img[^>]*>/gi, function(match, capture) {
  40. match = match.replace(/style="[^"]+"/gi, '').replace(/style='[^']+'/gi, '');
  41. match = match.replace(/width="[^"]+"/gi, '').replace(/width='[^']+'/gi, '');
  42. match = match.replace(/height="[^"]+"/gi, '').replace(/height='[^']+'/gi, '');
  43. return match;
  44. });
  45. newContent = newContent.replace(/style="[^"]+"/gi, function(match, capture) {
  46. match = match.replace(/width:[^;]+;/gi, 'max-width:100%;').replace(/width:[^;]+;/gi,
  47. 'max-width:100%;');
  48. return match;
  49. });
  50. // newContent = newContent.replace(/<br[^>]*\/>/gi, '');
  51. newContent = newContent.replace(/\<img/gi,
  52. '<img style="max-width:100%;height:auto;display:block;margin-top:10rpx;font-size:0;"');
  53. return newContent;
  54. },
  55. /**
  56. * 时间处理
  57. */
  58. patTime(val) {
  59. var beginTime = new Date()
  60. var time = val - beginTime
  61. var days = Math.floor(time / (24 * 3600 * 1000))
  62. var leave1 = time % (24 * 3600 * 1000) //计算天数后剩余的毫秒数
  63. var hours = Math.floor(leave1 / (3600 * 1000))
  64. //计算相差分钟数
  65. var leave2 = leave1 % (3600 * 1000) //计算小时数后剩余的毫秒数
  66. var minutes = Math.floor(leave2 / (60 * 1000))
  67. //计算相差秒数
  68. var leave3 = leave2 % (60 * 1000) //计算分钟数后剩余的毫秒数
  69. var seconds = Math.round(leave3 / 1000)
  70. if (days > 0) {
  71. return days + '天' + hours + ':' + minutes + ':' + seconds
  72. } else {
  73. if (hours > 0) {
  74. return hours + ':' + minutes + ':' + seconds
  75. } else {
  76. if (minutes > 0) {
  77. return minutes + ':' + seconds
  78. } else {
  79. if (seconds > 0) {
  80. return seconds + '秒'
  81. } else {
  82. return '00:00'
  83. }
  84. }
  85. }
  86. }
  87. },
  88. /**
  89. * 金额保留两位小数点后,大小
  90. */
  91. priceBigSmall(value = 0, boolean = true) {
  92. // let val = (Math.floor((value || 0) * 100) / 100).toFixed(2);
  93. let val = this.precisionTrue(value, 2)
  94. let splitPrice = val.split(".");
  95. let price =
  96. `<span style="font-size:11px;font-weight: normal;">¥</span>${splitPrice[0]}.<span style="font-size:11px;font-weight: normal;">${splitPrice[1]}</span>`;
  97. // 若boolean 为 false,则不带单位 ¥
  98. if (boolean == false) {
  99. price = price.replace(/¥/g, '')
  100. }
  101. return price
  102. },
  103. priceBigSmallTwo(value = 0) {
  104. // let val = (Math.floor((value || 0) * 100) / 100).toFixed(2);
  105. let val = this.precisionTrue(value, 2)
  106. let splitPrice = val.split(".");
  107. let price =
  108. `<span >¥</span>${splitPrice[0]}.<span style="font-size:11px;font-weight: normal;">${splitPrice[1]}</span>`;
  109. return price
  110. },
  111. // 进度正确
  112. precisionTrue(num, n) {
  113. if (n != undefined && (isNaN(n) || Number(n) > 17 || Number(n) < 0)) {
  114. throw new Error("输入正确的精度范围");
  115. }
  116. // 拆分小数点整数和小数
  117. // var num = this;
  118. var f = '';
  119. num = Number(num)
  120. if (Number(num) < 0) {
  121. num = -Number(num);
  122. f = '-';
  123. }
  124. var numList = num.toString().split(".");
  125. // 整数
  126. var iN = numList[0];
  127. // 小数
  128. var dN = numList[1];
  129. n = parseInt(n);
  130. if (isNaN(n) || Number(n) === 0) {
  131. // 0或者不填的时候,按0来处理
  132. if (dN === undefined) {
  133. return num + '';
  134. }
  135. var idN = Number(dN.toString().substr(0, 1));
  136. if (idN >= 5) {
  137. if (Number(iN) < 0) {
  138. iN = Number(iN) - 1
  139. } else {
  140. iN = Number(iN) + 1
  141. }
  142. }
  143. return iN + '';
  144. } else {
  145. var dNL = dN === undefined ? 0 : dN.length;
  146. if (dNL < n) {
  147. // 如果小数位不够的话,那就补全
  148. var oldN = num.toString().indexOf('.') > -1 ? num : num + '.';
  149. var a = Number(n) - dNL;
  150. while (a > 0) {
  151. oldN += '0';
  152. a--;
  153. }
  154. return oldN;
  155. }
  156. // 正常
  157. var olddN = dN.toString().substring(0, n);
  158. var dN1 = Number(dN.toString().substring(0, n));
  159. var dN2 = Number(dN.toString().substring(n, n + 1));
  160. if (dN2 >= 5) {
  161. dN1 += 1;
  162. if (olddN.length - dN1.toString().length > 0) {
  163. var olddNL = olddN.length - dN1.toString().length
  164. while (olddNL > 0) {
  165. dN1 = '0' + dN1
  166. olddNL--;
  167. }
  168. }
  169. if (dN1.toString().length > n) {
  170. if (Number(iN) < 0) {
  171. iN = Number(iN) - 1
  172. } else {
  173. iN = Number(iN) + 1
  174. }
  175. dN1 = '0';
  176. while (n > 1) {
  177. dN1 += '0'
  178. n--;
  179. }
  180. }
  181. } else {
  182. dN1 = olddN
  183. }
  184. return f + iN + '.' + dN1;
  185. }
  186. },
  187. priceBigSmallTherr(value) {
  188. let val = (Math.floor((value || 0) * 100) / 100).toFixed(2);
  189. let splitPrice = val.split(".");
  190. let price = `<span >¥</span>${splitPrice[0]}.<span>${splitPrice[1]}</span>`;
  191. return price
  192. },
  193. /**
  194. * 金额保留两位小数点
  195. */
  196. priceDecimals(value) {
  197. let val = (Math.floor((value || 0) * 100) / 100).toFixed(2);
  198. return val
  199. },
  200. /**
  201. * toast提示
  202. */
  203. toast(title, duration = 3000, mask = false, icon = 'none') {
  204. if (Boolean(title) === false) {
  205. return;
  206. }
  207. uni.showToast({
  208. title,
  209. duration,
  210. mask,
  211. icon
  212. });
  213. },
  214. getPrevPage() {
  215. var pages = getCurrentPages(); // 获取页面栈
  216. var prevPage = pages[pages.length - 2]; // 上一个页面
  217. return prevPage;
  218. },
  219. // 获取当前页面栈
  220. getCurrentPageFun(url) {
  221. let currentPage = getCurrentPages()
  222. uni.setStorageSync('toUrl', currentPage[currentPage.length - 1].route)
  223. uni.navigateTo({
  224. url: url
  225. })
  226. },
  227. // 清除当前页面栈路由缓存
  228. removeCurrenPage() {
  229. let currentPage = getCurrentPages()
  230. let toUrl = uni.getStorageSync('toUrl')
  231. let backNum = 0
  232. currentPage.map((item, index) => {
  233. if (item.route == toUrl) {
  234. backNum = index
  235. }
  236. })
  237. uni.navigateBack({
  238. delta: currentPage.length - backNum - 1
  239. })
  240. uni.removeStorageSync('toUrl')
  241. },
  242. /**
  243. * 开发环境全局打印日志
  244. * @param {Object} title
  245. */
  246. log(title) {
  247. if (process.env.NODE_ENV === 'development' && Boolean(title) === true) {
  248. console.log(JSON.stringify(title));
  249. }
  250. },
  251. /**
  252. * 异步获取设备信息
  253. */
  254. getInfoAsync() {
  255. return new Promise((resolve, reject) => {
  256. plus.device.getInfo({
  257. success(e) {
  258. resolve(e);
  259. },
  260. fail(e) {
  261. reject(e.message);
  262. }
  263. });
  264. });
  265. },
  266. /**
  267. * 安卓10不支持IMEI,则获取OAID
  268. */
  269. getOaidAsync() {
  270. return new Promise((resolve, reject) => {
  271. plus.device.getOAID({
  272. success(e) {
  273. resolve(e);
  274. },
  275. fail(e) {
  276. reject(e.message);
  277. }
  278. });
  279. });
  280. },
  281. /**
  282. * 获取一个随机数
  283. * @param {Object} min
  284. * @param {Object} max
  285. */
  286. random(min, max) {
  287. switch (arguments.length) {
  288. case 1:
  289. return parseInt(Math.random() * min + 1, 10);
  290. break;
  291. case 2:
  292. return parseInt(Math.random() * (max - min + 1) + min, 10);
  293. break;
  294. default:
  295. return 0;
  296. break;
  297. }
  298. },
  299. /**
  300. * 获取ios的IDFA
  301. */
  302. getIdfa() {
  303. let idfa = '';
  304. try {
  305. if ('iOS' == plus.os.name) {
  306. let manager = plus.ios.invoke('ASIdentifierManager', 'sharedManager');
  307. if (plus.ios.invoke(manager, 'isAdvertisingTrackingEnabled')) {
  308. let identifier = plus.ios.invoke(manager, 'advertisingIdentifier');
  309. idfa = plus.ios.invoke(identifier, 'UUIDString');
  310. plus.ios.deleteObject(identifier);
  311. }
  312. plus.ios.deleteObject(manager);
  313. }
  314. } catch (e) {
  315. console.error('获取idfa失败');
  316. }
  317. return idfa;
  318. },
  319. /*
  320. * obj 转 params字符串参数
  321. * 例子:{a:1,b:2} => a=1&b=2
  322. */
  323. objParseParam(obj) {
  324. let paramsStr = '';
  325. if (obj instanceof Array) return paramsStr;
  326. if (!(obj instanceof Object)) return paramsStr;
  327. for (let key in obj) {
  328. paramsStr += `${key}=${obj[key]}&`;
  329. }
  330. return paramsStr.substring(0, paramsStr.length - 1);
  331. },
  332. /*
  333. * obj 转 路由地址带参数
  334. * 例子:{a:1,b:2} => /pages/research/homepage/index?a=1&b=2
  335. */
  336. objParseUrlAndParam(path, obj) {
  337. let url = path || '/';
  338. let paramsStr = '';
  339. if (obj instanceof Array) return url;
  340. if (!(obj instanceof Object)) return url;
  341. paramsStr = this.objParseParam(obj);
  342. paramsStr && (url += '?');
  343. url += paramsStr;
  344. return url;
  345. },
  346. /*
  347. * 获取url字符串参数
  348. */
  349. getRequestParameters(locationhref) {
  350. let href = locationhref || '';
  351. let theRequest = new Object();
  352. let str = href.split('?')[1];
  353. if (str != undefined) {
  354. let strs = str.split('&');
  355. for (let i = 0; i < strs.length; i++) {
  356. theRequest[strs[i].split('=')[0]] = strs[i].split('=')[1];
  357. }
  358. }
  359. return theRequest;
  360. },
  361. /**
  362. * 加密字符串
  363. */
  364. strEncode(str) {
  365. const key = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ';
  366. let l = key.length;
  367. let a = key.split('');
  368. let s = '',
  369. b,
  370. b1,
  371. b2,
  372. b3;
  373. for (let i = 0; i < str.length; i++) {
  374. b = str.charCodeAt(i);
  375. b1 = b % l;
  376. b = (b - b1) / l;
  377. b2 = b % l;
  378. b = (b - b2) / l;
  379. b3 = b % l;
  380. s += a[b3] + a[b2] + a[b1];
  381. }
  382. return s;
  383. },
  384. /**
  385. * 解密字符串
  386. */
  387. strDecode(str) {
  388. const key = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ';
  389. let l = key.length;
  390. let b,
  391. b1,
  392. b2,
  393. b3,
  394. d = 0,
  395. s;
  396. s = new Array(Math.floor(str.length / 3));
  397. b = s.length;
  398. for (let i = 0; i < b; i++) {
  399. b1 = key.indexOf(str.charAt(d));
  400. d++;
  401. b2 = key.indexOf(str.charAt(d));
  402. d++;
  403. b3 = key.indexOf(str.charAt(d));
  404. d++;
  405. s[i] = b1 * l * l + b2 * l + b3;
  406. }
  407. b = eval('String.fromCharCode(' + s.join(',') + ')');
  408. return b;
  409. },
  410. /**
  411. * 比较版本号
  412. */
  413. compareVersion(reqV, curV) {
  414. if (curV && reqV) {
  415. let arr1 = curV.split('.'),
  416. arr2 = reqV.split('.');
  417. let minLength = Math.min(arr1.length, arr2.length),
  418. position = 0,
  419. diff = 0;
  420. while (
  421. position < minLength &&
  422. (diff = parseInt(arr1[position]) - parseInt(arr2[position])) == 0
  423. ) {
  424. position++;
  425. }
  426. diff = diff != 0 ? diff : arr1.length - arr2.length;
  427. if (diff > 0) {
  428. if (position == minLength - 1) {
  429. return 1;
  430. } else {
  431. return 2;
  432. }
  433. } else {
  434. return 0;
  435. }
  436. } else {
  437. return 0;
  438. }
  439. },
  440. /**
  441. * H5复制
  442. */
  443. h5Copy(content) {
  444. let textarea = document.createElement('textarea');
  445. textarea.value = content;
  446. textarea.readOnly = 'readOnly';
  447. document.body.appendChild(textarea);
  448. textarea.select(); // 选择对象
  449. textarea.setSelectionRange(0, content.length); //核心
  450. let result = document.execCommand('Copy'); // 执行浏览器复制命令
  451. textarea.remove();
  452. const msg = result ? '复制成功' : '复制失败';
  453. this.toast(msg);
  454. },
  455. /**
  456. * app分享
  457. */
  458. handleAppShare(shareUrl, shareTitle, shareContent, shareImg) {
  459. let shareData = {
  460. shareUrl,
  461. shareTitle,
  462. shareContent,
  463. shareImg
  464. };
  465. appShare(shareData, res => {});
  466. },
  467. async handleWxH5Share(title, desc, link, imgUrl) {
  468. // #ifdef H5
  469. if ($mPayment.isWechat()) {
  470. if (uni.getSystemInfoSync().platform === 'android') {
  471. await $mPayment.wxConfigH5(link);
  472. }
  473. jweixin.ready(function() {
  474. // eslint-disable-next-line
  475. jweixin.updateAppMessageShareData({
  476. title, // 分享标题
  477. desc, // 分享描述
  478. link, // 分享链接,该链接域名或路径必须与当前页面对应的公众号JS安全域名一致
  479. imgUrl, // 分享图标
  480. success: function() {
  481. // 用户确认分享后执行的回调函数
  482. },
  483. cancel: function() {
  484. // 用户取消分享后执行的回调函数
  485. }
  486. });
  487. // eslint-disable-next-line
  488. jweixin.updateTimelineShareData({
  489. title, // 分享标题
  490. desc, // 分享描述
  491. link, // 分享链接,该链接域名或路径必须与当前页面对应的公众号JS安全域名一致
  492. imgUrl, // 分享图标
  493. success: function() {
  494. // 用户确认分享后执行的回调函数
  495. },
  496. cancel: function() {
  497. // 用户取消分享后执行的回调函数
  498. }
  499. });
  500. });
  501. }
  502. // #endif
  503. },
  504. //截取后四位数
  505. cutOut(value) {
  506. if (!value) {
  507. return '';
  508. }
  509. return value.substring(value.length - 4)
  510. },
  511. // 去掉字符串中的空格
  512. trim(str) {
  513. if (!str) {
  514. return '';
  515. }
  516. return str.replace(/\s*/g, '');
  517. },
  518. // 判断两个对象是否相同
  519. isObjectValueEqual(x, y) {
  520. // 指向同一内存时
  521. if (x === y) {
  522. return true;
  523. } else if (
  524. typeof x == 'object' &&
  525. x != null &&
  526. typeof y == 'object' && y != null
  527. ) {
  528. if (Object.keys(x).length != Object.keys(y).length) return false;
  529. for (var prop in x) {
  530. if (y.hasOwnProperty(prop)) {
  531. if (!this.isObjectValueEqual(x[prop], y[prop])) return false;
  532. } else return false;
  533. }
  534. return true;
  535. } else return false;
  536. },
  537. platformGroupFilter() {
  538. let platformGroup = 'tinyShop';
  539. // #ifdef H5
  540. if ($mPayment.isWechat()) {
  541. platformGroup = 'tinyShopWechat';
  542. } else {
  543. platformGroup = 'tinyShopH5';
  544. }
  545. // #endif
  546. // #ifdef MP-QQ
  547. platformGroup = 'tinyShopQqMp';
  548. // #endif
  549. // #ifdef MP-WEIXIN
  550. platformGroup = 'tinyShopWechatMp';
  551. // #endif
  552. // #ifdef MP-ALIPAY
  553. platformGroup = 'tinyShopAliMp';
  554. // #endif
  555. // #ifdef MP-QQ
  556. platformGroup = 'tinyShopQqMp';
  557. // #endif
  558. // #ifdef MP-BAIDU
  559. platformGroup = 'tinyShopBaiduMp';
  560. // #endif
  561. // #ifdef APP-PLUS
  562. switch (uni.getSystemInfoSync().platform) {
  563. case 'android':
  564. platformGroup = 'tinyShopAndroid';
  565. break;
  566. case 'ios':
  567. platformGroup = 'tinyShopIos';
  568. break;
  569. }
  570. // #endif
  571. return platformGroup;
  572. },
  573. countDown(ft, ct) {
  574. var ctime = ct || Math.floor(new Date().getTime())
  575. var time = ft * 1000 - ctime
  576. var days = Math.floor(time / (24 * 3600 * 1000))
  577. var leave1 = time % (24 * 3600 * 1000) //计算天数后剩余的毫秒数
  578. var hours = Math.floor(leave1 / (3600 * 1000))
  579. //计算相差分钟数
  580. var leave2 = leave1 % (3600 * 1000) //计算小时数后剩余的毫秒数
  581. var minutes = Math.floor(leave2 / (60 * 1000))
  582. //计算相差秒数
  583. var leave3 = leave2 % (60 * 1000) //计算分钟数后剩余的毫秒数
  584. var seconds = Math.round(leave3 / 1000)
  585. console.log(days + ':' + hours + ':' + minutes + ':' + seconds)
  586. return days + ':' + hours + ':' + minutes + ':' + seconds
  587. // if(days >0){
  588. // return days+'天'+hours+':'+minutes+':'+seconds
  589. // }else{
  590. // if(hours >0){
  591. // return hours+':'+minutes+':'+seconds
  592. // }else{
  593. // if(minutes >0){
  594. // return minutes+':'+seconds
  595. // }else{
  596. // if(seconds>0){
  597. // return seconds+'秒'
  598. // }else{
  599. // return '00:00'
  600. // }
  601. // }
  602. // }
  603. // }
  604. },
  605. // 保留8位小数
  606. isToFixed(value, num) {
  607. if (value) {
  608. let val = this.precisionTrue(value, num)
  609. let splitPrice = val.split(".");
  610. let price =
  611. `<span style="font-size:16px;font-weight: bold;color:#FF6600">${splitPrice[0]}.</span><span style="font-size:11px;font-weight: normal;color:#FF6600">${splitPrice[1]}</span> 贡献值`;
  612. return price
  613. } else {
  614. return `<span style="font-size:16px;font-weight: bold;color:#FF6600">0.</span><span style="font-size:11px;font-weight: normal;color:#FF6600">00</span> 贡献值`;
  615. }
  616. },
  617. isToFixedNum(value, num) {
  618. if (value) {
  619. let val = this.precisionTrue(value, num)
  620. return val
  621. } else {
  622. return 0
  623. }
  624. },
  625. // 电话隐私保护
  626. phoneChange(tel) {
  627. if (tel) {
  628. let result = tel.replace(/(\d{3})\d{4}(\d{4})/, "$1****$2");
  629. return result
  630. } else {
  631. return tel
  632. }
  633. },
  634. // 打电话
  635. callup(mobile) {
  636. uni.makePhoneCall({
  637. phoneNumber: mobile //仅为示例
  638. });
  639. },
  640. // 导航
  641. jumpLocation(latitude, longitude) {
  642. uni.getLocation({
  643. type: 'gcj02', //返回可以用于uni.openLocation的经纬度
  644. success: function(res) {
  645. uni.openLocation({
  646. latitude: Number(latitude),
  647. longitude: Number(longitude),
  648. success: function() {
  649. console.log('success');
  650. }
  651. });
  652. }
  653. });
  654. },
  655. // banner跳转
  656. imgLink(type, id, url, shopid) {
  657. if (type == "goods") {
  658. uni.navigateTo({
  659. url: "/pages/product/goods/goods?id=" + id + "&shopid=" + shopid,
  660. });
  661. } else if (type == "service") {
  662. // uni.navigateTo({
  663. // url: "/pages/product/goods/serviceGood?id=" + id
  664. // });
  665. } else if (type == "point_goods") {
  666. // uni.navigateTo({
  667. // url: "/pages/product/goods/IntegralGood?id=" + id
  668. // });
  669. } else if (type == "url") {
  670. if (/^http/.test(url)) {
  671. uni.navigateTo({
  672. url: "/pages/index/webView?linkUrl=" + url,
  673. });
  674. } else {
  675. uni.navigateTo({
  676. url
  677. });
  678. }
  679. } else if (type == 'inner_url') {
  680. uni.navigateTo({
  681. url
  682. });
  683. }
  684. },
  685. // 一行卡号脱敏
  686. bankAccount(value) {
  687. if (value) {
  688. let reg = /^(.{4})(?:\d+)(.{4})$/
  689. let str = value.replace(reg, "$1 **** **** $2")
  690. return str
  691. } else {
  692. return value
  693. }
  694. },
  695. // 列表分页
  696. pagination(total, currentPageNum, currentPageSize) {
  697. let totalPage = 0
  698. if (total / currentPageSize > parseInt(total / currentPageSize)) {
  699. totalPage = parseInt(total / currentPageSize) + 1
  700. } else {
  701. totalPage = parseInt(total / currentPageSize);
  702. }
  703. if (currentPageNum < totalPage) {
  704. return 'more'
  705. }
  706. return 'noMore'
  707. }
  708. };