tools.js 7.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317
  1. var tools = {
  2. // 导航到彩图奔跑APP内的某个页面或执行APP内部的某些功能
  3. appAction(url) {
  4. console.log("appAction", url);
  5. // console.log("getApp", getApp());
  6. // getApp().$audio.destroy();
  7. // getApp().$audio.pause();
  8. window.location.href = url;
  9. },
  10. // 秒数转换成时分秒
  11. convertSecondsToHMS(seconds) {
  12. var hours = Math.floor(seconds / 3600);
  13. var minutes = Math.floor((seconds % 3600) / 60);
  14. var remainingSeconds = seconds % 60;
  15. // return hours + ":" + minutes + ":" + remainingSeconds;
  16. return `${hours.toString().padStart(2, '0')}:${minutes.toString().padStart(2, '0')}:${remainingSeconds.toString().padStart(2, '0')}`;
  17. },
  18. // 计算(中英文混合)字符串长度
  19. calStrLen(str) {
  20. var length = 0;
  21. for (var i = 0; i < str.length; i++) {
  22. // 将字符转换为 Unicode 编码
  23. var charCode = str.charCodeAt(i);
  24. if (charCode >= 0 && charCode <= 128) {
  25. length++;
  26. } else {
  27. length += 2;
  28. }
  29. }
  30. return length;
  31. },
  32. // 集合对象去重
  33. unique(arr, field) {
  34. var map = {};
  35. var res = [];
  36. for (var i = 0; i < arr.length; i++) {
  37. if (!map[arr[i][field]]) {
  38. map[arr[i][field]] = 1;
  39. res.push(arr[i]);
  40. }
  41. }
  42. return res;
  43. },
  44. // 正则取出html标签
  45. repalceHtml(str) {
  46. var dd = str.replace(/<\/?.+?>/g, "");
  47. var dds = dd.replace(/ /g, ""); //dds为得到后的内容
  48. return dds;
  49. },
  50. // 判断身份证号
  51. isSfz(idcard) {
  52. var id =
  53. /^[1-9][0-9]{5}(19|20)[0-9]{2}((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|31)|(04|06|09|11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|[1-2][0-9]))[0-9]{3}([0-9]|x|X)$/
  54. if (idcard === '') {
  55. uni.showToast({
  56. title: '请输入身份证号',
  57. icon: 'none'
  58. })
  59. } else if (!id.test(idcard)) {
  60. uni.showToast({
  61. title: '身份证号格式不正确!',
  62. icon: 'none'
  63. })
  64. return false
  65. } else {
  66. return false
  67. }
  68. },
  69. // 判断是否是手机号
  70. isPhone(val) {
  71. var patrn = /^(((1[3456789][0-9]{1})|(15[0-9]{1}))+\d{8})$/
  72. if (!patrn.test(val) || val === '') {
  73. uni.showToast({
  74. title: '手机号格式不正确',
  75. icon: 'none'
  76. })
  77. return false
  78. } else {
  79. return true
  80. }
  81. },
  82. // 判断邮箱
  83. isEmail(email) {
  84. if (email.search(/^\w+((-\w+)|(\.\w+))*\@[A-Za-z0-9]+((\.|-)[A-Za-z0-9]+)*\.[A-Za-z0-9]+$/) != -1)
  85. return true;
  86. else
  87. return false;
  88. },
  89. //获取随机数
  90. getSuiji() {
  91. var Range = Max - Min;
  92. var Rand = Math.random();
  93. return (Min + Math.round(Rand * Range));
  94. },
  95. //计算多长时间前
  96. getDateDiff(dateTimeStamp) {
  97. var minute = 1000 * 60;
  98. var hour = minute * 60;
  99. var day = hour * 24;
  100. var halfamonth = day * 15;
  101. var month = day * 30;
  102. var year = day * 365;
  103. var now = new Date().getTime();
  104. var diffValue = now - dateTimeStamp;
  105. if (diffValue < 0) {
  106. return;
  107. }
  108. var yearC = diffValue / year;
  109. var monthC = diffValue / month;
  110. var weekC = diffValue / (7 * day);
  111. var dayC = diffValue / day;
  112. var hourC = diffValue / hour;
  113. var minC = diffValue / minute;
  114. if (yearC >= 1) {
  115. result = "" + parseInt(yearC) + "年前";
  116. }
  117. if (monthC >= 1) {
  118. result = "" + parseInt(monthC) + "月前";
  119. } else if (weekC >= 1) {
  120. result = "" + parseInt(weekC) + "周前";
  121. } else if (dayC >= 1) {
  122. result = "" + parseInt(dayC) + "天前";
  123. } else if (hourC >= 1) {
  124. result = "" + parseInt(hourC) + "小时前";
  125. } else if (minC >= 1) {
  126. result = "" + parseInt(minC) + "分钟前";
  127. } else
  128. result = "刚刚";
  129. return result;
  130. },
  131. // 时间戳转时间
  132. timestampToTime(timestamp, i) {
  133. var date = new Date(timestamp); //时间戳为10位需*1000,时间戳为13位的话不需乘1000
  134. // console.log(date, timestamp)
  135. var Y = date.getFullYear() + '-';
  136. var M = (date.getMonth() + 1 < 10 ? '0' + (date.getMonth() + 1) : date.getMonth() + 1) + '-';
  137. var D = (date.getDate() < 10 ? '0' + date.getDate() : date.getDate()) + ' ';
  138. var h = (date.getHours() < 10 ? '0' + date.getHours() : date.getHours()) + ':';
  139. var m = (date.getMinutes() < 10 ? '0' + date.getMinutes() : date.getMinutes()) + ':';
  140. var s = (date.getSeconds() < 10 ? '0' + date.getSeconds() : date.getSeconds());
  141. if (i == 1) {
  142. return Y + M + D;
  143. }
  144. return Y + M + D + h + m + s;
  145. },
  146. // 是否是汉字
  147. isHanzi(str) {
  148. let reg = /\p{Unified_Ideograph}/ug;
  149. return reg.test(str);
  150. },
  151. // 是否是字母数字
  152. isStringAndNumber(str) {
  153. let regNumber = new RegExp(/^[0-9A-Za-z]+$/);
  154. return regNumber.test(str)
  155. },
  156. // var arr3 = [30,10,111,35,1899,50,45];
  157. // 集合排序 元素数字
  158. listSort(list) {
  159. arr3.sort(function(a, b) {
  160. return a - b;
  161. })
  162. },
  163. // var arr5 = [{id:10},{id:5},{id:6},{id:9},{id:2},{id:3}];
  164. // 元素 对象
  165. listObjectSort(arr) {
  166. arr.sort(function(a, b) {
  167. return a.id - b.id
  168. })
  169. return arr;
  170. },
  171. /*
  172. * 忽略大小写判断字符串是否相同
  173. * @param str1
  174. * @param str2
  175. * @returns {Boolean}
  176. */
  177. isEqualsIgnorecase: function(str1, str2) {
  178. if (str1.toUpperCase() == str2.toUpperCase()) {
  179. return true;
  180. } else {
  181. return false;
  182. }
  183. },
  184. /**
  185. * 判断是否是数字
  186. * @param value
  187. * @returns {Boolean}
  188. */
  189. isNum: function(value) {
  190. if (value != null && value.length > 0 && isNaN(value) == false) {
  191. return true;
  192. } else {
  193. return false;
  194. }
  195. },
  196. /**
  197. * 判断是否是中文
  198. * @param str
  199. * @returns {Boolean}
  200. */
  201. isChine: function(str) {
  202. var reg = /^([u4E00-u9FA5]|[uFE30-uFFA0])*$/;
  203. if (reg.test(str)) {
  204. return false;
  205. }
  206. return true;
  207. },
  208. /*验证是否为图片*/
  209. tmCheckImage: function(fileName) {
  210. return /(gif|jpg|jpeg|png|GIF|JPG|PNG)$/ig.test(fileName);
  211. },
  212. /*验证是否为视频*/
  213. tmCheckVideo: function(fileName) {
  214. return /(mp4|mp3|flv|wav)$/ig.test(fileName);
  215. },
  216. /**
  217. * 去除字符串两边的空格
  218. * @param str
  219. * @returns {number|Number}
  220. * 调用方法:var str = utils.trim("abcd")
  221. */
  222. trim: function(str) {
  223. String.prototype.trim = function() {
  224. return str.replace(/(^\s*)|(\s*$)/g, "");
  225. }
  226. },
  227. // 判断密码是否符合 至少6位,包括大小写字母、数字、特殊字符
  228. isPassword(val) {
  229. var reg = /^(?![0-9]+$)(?![a-z]+$)(?![A-Z]+$)(?!([^(0-9a-zA-Z)])+$)^.{8,16}$/;
  230. if (val === '') {
  231. uni.showToast({
  232. title: '请输入密码',
  233. icon: 'none'
  234. })
  235. } else if (!reg.test(val)) {
  236. uni.showToast({
  237. title: '至少6位,包括大小写字母、数字、特殊字符',
  238. icon: 'none'
  239. })
  240. return false
  241. } else {
  242. return true
  243. }
  244. },
  245. // 电话匿名
  246. noPassByMobile(str) {
  247. if (null != str && str != undefined) {
  248. var pat = /(\d{3})\d*(\d{4})/;
  249. return str.replace(pat, '$1****$2');
  250. } else {
  251. return "";
  252. }
  253. },
  254. // 获取两点间的距离
  255. //进行经纬度转换为距离的计算
  256. Rad(d) {
  257. return d * Math.PI / 180.0; //经纬度转换成三角函数中度分表形式。
  258. },
  259. /*
  260. 计算距离,参数分别为第一点的纬度,经度;第二点的纬度,经度
  261. 默认单位km
  262. */
  263. getMapDistance(lat1, lat2, lng1, lng2) {
  264. lat1 = lat1 || 0;
  265. lng1 = lng1 || 0;
  266. lat2 = lat2 || 0;
  267. lng2 = lng2 || 0;
  268. var rad1 = lat1 * Math.PI / 180.0;
  269. var rad2 = lat2 * Math.PI / 180.0;
  270. var a = rad1 - rad2;
  271. var b = lng1 * Math.PI / 180.0 - lng2 * Math.PI / 180.0;
  272. var r = 6378137;
  273. var distance = r * 2 * Math.asin(Math.sqrt(Math.pow(Math.sin(a / 2), 2) + Math.cos(rad1) * Math.cos(rad2) *
  274. Math.pow(Math.sin(b / 2), 2)));
  275. console.log(lat1, lng1, lat2, lng2);
  276. console.log(distance);
  277. return Math.round(distance) / 1000;
  278. },
  279. // 预览图片
  280. yulanImg(item) {
  281. let arr = [item]
  282. uni.previewImage({
  283. urls: arr,
  284. });
  285. },
  286. }
  287. export default tools;