| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605 |
- // 比较微信版本v1:用户当前版本;v2:当前程序所需要求兼容的版本
- function compareVersion(v1, v2) {
- v1 = v1.split('.')
- v2 = v2.split('.')
- const len = Math.max(v1.length, v2.length)
- while (v1.length < len) {
- v1.push('0')
- }
- while (v2.length < len) {
- v2.push('0')
- }
- for (let i = 0; i < len; i++) {
- const num1 = parseInt(v1[i])
- const num2 = parseInt(v2[i])
- if (num1 > num2) {
- return 1
- } else if (num1 < num2) {
- return -1
- }
- }
- return 0
- }
- /* 系统当前日期+时间 */
- function formatTime(date) {
- var year = date.getFullYear()
- var month = date.getMonth() + 1
- var day = date.getDate()
- var hour = date.getHours()
- var minute = date.getMinutes()
- var second = date.getSeconds()
- return [year, month, day].map(formatNumber).join('/') + ' ' + [hour, minute, second].map(formatNumber).join(':')
- }
- function formatTime2(date) {
- var year = date.getFullYear()
- var month = date.getMonth() + 1
- var day = date.getDate()
- return [year, month, day].map(formatNumber).join('-')
- }
- function formatTime3(number, format) {
- var formateArr = ['Y', 'M', 'D', 'h', 'm', 's'];
- var returnArr = [];
- var date = new Date(number * 1000);
- returnArr.push(date.getFullYear());
- returnArr.push(formatNumber(date.getMonth() + 1));
- returnArr.push(formatNumber(date.getDate()));
- returnArr.push(formatNumber(date.getHours()));
- returnArr.push(formatNumber(date.getMinutes()));
- returnArr.push(formatNumber(date.getSeconds()));
- for (var i in returnArr) {
- format = format.replace(formateArr[i], returnArr[i]);
- }
- return format;
- }
- function formatNumber(n) {
- n = n.toString()
- return n[1] ? n : '0' + n
- }
- /* 日期转时间戳 */
- function timeToUnix(stringTime) {
- if (stringTime) {
- var timestamp = Date.parse(new Date(stringTime));
- } else {
- var timestamp = Date.parse(new Date());
- }
- timestamp = timestamp / 1000;
- return timestamp;
- }
- /* 倒计时:时+分+秒 */
- function changeTimeStamp(timeStamp, hasTimeRemaining) {
- var distancetime;
- if(hasTimeRemaining){
- distancetime = timeStamp;
- }else{
- var curTimeStamp = timeToUnix();
- distancetime = parseInt(timeStamp) - curTimeStamp;
- }
-
- if (distancetime > 0) {
- //如果大于0.说明尚未到达截止时间
- var day = Math.floor(distancetime / (60 * 60 * 24));
- var hour = Math.floor(distancetime / (60 * 60)) - (day * 24);
- var minute = Math.floor(distancetime / 60) - (day * 24 * 60) - (hour * 60);
- var second = Math.floor(distancetime) - (day * 24 * 60 * 60) - (hour * 60 * 60) - (minute * 60);
- hour = parseInt(hour) + parseInt(day) * 24;
- if (hour < 10) {
- hour = "0" + hour;
- }
- if (minute < 10) {
- minute = "0" + minute;
- }
- if (second < 10) {
- second = "0" + second;
- }
- return [hour, minute, second];
- } else {
- return false
- }
- }
- // md5
- function md5(string) {
- var x = Array();
- var k, AA, BB, CC, DD, a, b, c, d;
- var S11 = 7,
- S12 = 12,
- S13 = 17,
- S14 = 22;
- var S21 = 5,
- S22 = 9,
- S23 = 14,
- S24 = 20;
- var S31 = 4,
- S32 = 11,
- S33 = 16,
- S34 = 23;
- var S41 = 6,
- S42 = 10,
- S43 = 15,
- S44 = 21;
- string = Utf8Encode(string);
- x = ConvertToWordArray(string);
- a = 0x67452301;
- b = 0xEFCDAB89;
- c = 0x98BADCFE;
- d = 0x10325476;
- for (k = 0; k < x.length; k += 16) {
- AA = a;
- BB = b;
- CC = c;
- DD = d;
- a = FF(a, b, c, d, x[k + 0], S11, 0xD76AA478);
- d = FF(d, a, b, c, x[k + 1], S12, 0xE8C7B756);
- c = FF(c, d, a, b, x[k + 2], S13, 0x242070DB);
- b = FF(b, c, d, a, x[k + 3], S14, 0xC1BDCEEE);
- a = FF(a, b, c, d, x[k + 4], S11, 0xF57C0FAF);
- d = FF(d, a, b, c, x[k + 5], S12, 0x4787C62A);
- c = FF(c, d, a, b, x[k + 6], S13, 0xA8304613);
- b = FF(b, c, d, a, x[k + 7], S14, 0xFD469501);
- a = FF(a, b, c, d, x[k + 8], S11, 0x698098D8);
- d = FF(d, a, b, c, x[k + 9], S12, 0x8B44F7AF);
- c = FF(c, d, a, b, x[k + 10], S13, 0xFFFF5BB1);
- b = FF(b, c, d, a, x[k + 11], S14, 0x895CD7BE);
- a = FF(a, b, c, d, x[k + 12], S11, 0x6B901122);
- d = FF(d, a, b, c, x[k + 13], S12, 0xFD987193);
- c = FF(c, d, a, b, x[k + 14], S13, 0xA679438E);
- b = FF(b, c, d, a, x[k + 15], S14, 0x49B40821);
- a = GG(a, b, c, d, x[k + 1], S21, 0xF61E2562);
- d = GG(d, a, b, c, x[k + 6], S22, 0xC040B340);
- c = GG(c, d, a, b, x[k + 11], S23, 0x265E5A51);
- b = GG(b, c, d, a, x[k + 0], S24, 0xE9B6C7AA);
- a = GG(a, b, c, d, x[k + 5], S21, 0xD62F105D);
- d = GG(d, a, b, c, x[k + 10], S22, 0x2441453);
- c = GG(c, d, a, b, x[k + 15], S23, 0xD8A1E681);
- b = GG(b, c, d, a, x[k + 4], S24, 0xE7D3FBC8);
- a = GG(a, b, c, d, x[k + 9], S21, 0x21E1CDE6);
- d = GG(d, a, b, c, x[k + 14], S22, 0xC33707D6);
- c = GG(c, d, a, b, x[k + 3], S23, 0xF4D50D87);
- b = GG(b, c, d, a, x[k + 8], S24, 0x455A14ED);
- a = GG(a, b, c, d, x[k + 13], S21, 0xA9E3E905);
- d = GG(d, a, b, c, x[k + 2], S22, 0xFCEFA3F8);
- c = GG(c, d, a, b, x[k + 7], S23, 0x676F02D9);
- b = GG(b, c, d, a, x[k + 12], S24, 0x8D2A4C8A);
- a = HH(a, b, c, d, x[k + 5], S31, 0xFFFA3942);
- d = HH(d, a, b, c, x[k + 8], S32, 0x8771F681);
- c = HH(c, d, a, b, x[k + 11], S33, 0x6D9D6122);
- b = HH(b, c, d, a, x[k + 14], S34, 0xFDE5380C);
- a = HH(a, b, c, d, x[k + 1], S31, 0xA4BEEA44);
- d = HH(d, a, b, c, x[k + 4], S32, 0x4BDECFA9);
- c = HH(c, d, a, b, x[k + 7], S33, 0xF6BB4B60);
- b = HH(b, c, d, a, x[k + 10], S34, 0xBEBFBC70);
- a = HH(a, b, c, d, x[k + 13], S31, 0x289B7EC6);
- d = HH(d, a, b, c, x[k + 0], S32, 0xEAA127FA);
- c = HH(c, d, a, b, x[k + 3], S33, 0xD4EF3085);
- b = HH(b, c, d, a, x[k + 6], S34, 0x4881D05);
- a = HH(a, b, c, d, x[k + 9], S31, 0xD9D4D039);
- d = HH(d, a, b, c, x[k + 12], S32, 0xE6DB99E5);
- c = HH(c, d, a, b, x[k + 15], S33, 0x1FA27CF8);
- b = HH(b, c, d, a, x[k + 2], S34, 0xC4AC5665);
- a = II(a, b, c, d, x[k + 0], S41, 0xF4292244);
- d = II(d, a, b, c, x[k + 7], S42, 0x432AFF97);
- c = II(c, d, a, b, x[k + 14], S43, 0xAB9423A7);
- b = II(b, c, d, a, x[k + 5], S44, 0xFC93A039);
- a = II(a, b, c, d, x[k + 12], S41, 0x655B59C3);
- d = II(d, a, b, c, x[k + 3], S42, 0x8F0CCC92);
- c = II(c, d, a, b, x[k + 10], S43, 0xFFEFF47D);
- b = II(b, c, d, a, x[k + 1], S44, 0x85845DD1);
- a = II(a, b, c, d, x[k + 8], S41, 0x6FA87E4F);
- d = II(d, a, b, c, x[k + 15], S42, 0xFE2CE6E0);
- c = II(c, d, a, b, x[k + 6], S43, 0xA3014314);
- b = II(b, c, d, a, x[k + 13], S44, 0x4E0811A1);
- a = II(a, b, c, d, x[k + 4], S41, 0xF7537E82);
- d = II(d, a, b, c, x[k + 11], S42, 0xBD3AF235);
- c = II(c, d, a, b, x[k + 2], S43, 0x2AD7D2BB);
- b = II(b, c, d, a, x[k + 9], S44, 0xEB86D391);
- a = AddUnsigned(a, AA);
- b = AddUnsigned(b, BB);
- c = AddUnsigned(c, CC);
- d = AddUnsigned(d, DD);
- }
- var temp = WordToHex(a) + WordToHex(b) + WordToHex(c) + WordToHex(d);
- return temp.toUpperCase();
- }
- function RotateLeft(lValue, iShiftBits) {
- return (lValue << iShiftBits) | (lValue >>> (32 - iShiftBits));
- }
- function AddUnsigned(lX, lY) {
- var lX4, lY4, lX8, lY8, lResult;
- lX8 = (lX & 0x80000000);
- lY8 = (lY & 0x80000000);
- lX4 = (lX & 0x40000000);
- lY4 = (lY & 0x40000000);
- lResult = (lX & 0x3FFFFFFF) + (lY & 0x3FFFFFFF);
- if (lX4 & lY4) {
- return (lResult ^ 0x80000000 ^ lX8 ^ lY8);
- }
- if (lX4 | lY4) {
- if (lResult & 0x40000000) {
- return (lResult ^ 0xC0000000 ^ lX8 ^ lY8);
- } else {
- return (lResult ^ 0x40000000 ^ lX8 ^ lY8);
- }
- } else {
- return (lResult ^ lX8 ^ lY8);
- }
- }
- function F(x, y, z) {
- return (x & y) | ((~x) & z);
- }
- function G(x, y, z) {
- return (x & z) | (y & (~z));
- }
- function H(x, y, z) {
- return (x ^ y ^ z);
- }
- function I(x, y, z) {
- return (y ^ (x | (~z)));
- }
- function FF(a, b, c, d, x, s, ac) {
- a = AddUnsigned(a, AddUnsigned(AddUnsigned(F(b, c, d), x), ac));
- return AddUnsigned(RotateLeft(a, s), b);
- }
- function GG(a, b, c, d, x, s, ac) {
- a = AddUnsigned(a, AddUnsigned(AddUnsigned(G(b, c, d), x), ac));
- return AddUnsigned(RotateLeft(a, s), b);
- }
- function HH(a, b, c, d, x, s, ac) {
- a = AddUnsigned(a, AddUnsigned(AddUnsigned(H(b, c, d), x), ac));
- return AddUnsigned(RotateLeft(a, s), b);
- }
- function II(a, b, c, d, x, s, ac) {
- a = AddUnsigned(a, AddUnsigned(AddUnsigned(I(b, c, d), x), ac));
- return AddUnsigned(RotateLeft(a, s), b);
- }
- function ConvertToWordArray(string) {
- var lWordCount;
- var lMessageLength = string.length;
- var lNumberOfWords_temp1 = lMessageLength + 8;
- var lNumberOfWords_temp2 = (lNumberOfWords_temp1 - (lNumberOfWords_temp1 % 64)) / 64;
- var lNumberOfWords = (lNumberOfWords_temp2 + 1) * 16;
- var lWordArray = Array(lNumberOfWords - 1);
- var lBytePosition = 0;
- var lByteCount = 0;
- while (lByteCount < lMessageLength) {
- lWordCount = (lByteCount - (lByteCount % 4)) / 4;
- lBytePosition = (lByteCount % 4) * 8;
- lWordArray[lWordCount] = (lWordArray[lWordCount] | (string.charCodeAt(lByteCount) << lBytePosition));
- lByteCount++;
- }
- lWordCount = (lByteCount - (lByteCount % 4)) / 4;
- lBytePosition = (lByteCount % 4) * 8;
- lWordArray[lWordCount] = lWordArray[lWordCount] | (0x80 << lBytePosition);
- lWordArray[lNumberOfWords - 2] = lMessageLength << 3;
- lWordArray[lNumberOfWords - 1] = lMessageLength >>> 29;
- return lWordArray;
- }
- function WordToHex(lValue) {
- var WordToHexValue = "",
- WordToHexValue_temp = "",
- lByte, lCount;
- for (lCount = 0; lCount <= 3; lCount++) {
- lByte = (lValue >>> (lCount * 8)) & 255;
- WordToHexValue_temp = "0" + lByte.toString(16);
- WordToHexValue = WordToHexValue + WordToHexValue_temp.substr(WordToHexValue_temp.length - 2, 2);
- }
- return WordToHexValue;
- }
- function Utf8Encode(string) {
- var utftext = "";
- for (var n = 0; n < string.length; n++) {
- var c = string.charCodeAt(n);
- if (c < 128) {
- utftext += String.fromCharCode(c);
- } else if ((c > 127) && (c < 2048)) {
- utftext += String.fromCharCode((c >> 6) | 192);
- utftext += String.fromCharCode((c & 63) | 128);
- } else {
- utftext += String.fromCharCode((c >> 12) | 224);
- utftext += String.fromCharCode(((c >> 6) & 63) | 128);
- utftext += String.fromCharCode((c & 63) | 128);
- }
- }
- return utftext;
- }
- // md5 end
- // base64_encode
- function base64_encode(str) { // 编码,配合encodeURIComponent使用
- var c1, c2, c3;
- var base64EncodeChars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";
- var i = 0,
- len = str.length,
- strin = '';
- while (i < len) {
- c1 = str.charCodeAt(i++) & 0xff;
- if (i == len) {
- strin += base64EncodeChars.charAt(c1 >> 2);
- strin += base64EncodeChars.charAt((c1 & 0x3) << 4);
- strin += "==";
- break;
- }
- c2 = str.charCodeAt(i++);
- if (i == len) {
- strin += base64EncodeChars.charAt(c1 >> 2);
- strin += base64EncodeChars.charAt(((c1 & 0x3) << 4) | ((c2 & 0xF0) >> 4));
- strin += base64EncodeChars.charAt((c2 & 0xF) << 2);
- strin += "=";
- break;
- }
- c3 = str.charCodeAt(i++);
- strin += base64EncodeChars.charAt(c1 >> 2);
- strin += base64EncodeChars.charAt(((c1 & 0x3) << 4) | ((c2 & 0xF0) >> 4));
- strin += base64EncodeChars.charAt(((c2 & 0xF) << 2) | ((c3 & 0xC0) >> 6));
- strin += base64EncodeChars.charAt(c3 & 0x3F)
- }
- return strin
- }
- function base64_decode(input) { // 解码,配合decodeURIComponent使用
- var base64EncodeChars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";
- var output = "";
- var chr1, chr2, chr3;
- var enc1, enc2, enc3, enc4;
- var i = 0;
- input = input.replace(/[^A-Za-z0-9\+\/\=]/g, "");
- while (i < input.length) {
- enc1 = base64EncodeChars.indexOf(input.charAt(i++));
- enc2 = base64EncodeChars.indexOf(input.charAt(i++));
- enc3 = base64EncodeChars.indexOf(input.charAt(i++));
- enc4 = base64EncodeChars.indexOf(input.charAt(i++));
- chr1 = (enc1 << 2) | (enc2 >> 4);
- chr2 = ((enc2 & 15) << 4) | (enc3 >> 2);
- chr3 = ((enc3 & 3) << 6) | enc4;
- output = output + String.fromCharCode(chr1);
- if (enc3 != 64) {
- output = output + String.fromCharCode(chr2);
- }
- if (enc4 != 64) {
- output = output + String.fromCharCode(chr3);
- }
- }
- return utf8_decode(output);
- }
- function utf8_decode(utftext) { // utf-8解码
- var string = '';
- let i = 0;
- let c = 0;
- let c1 = 0;
- let c2 = 0;
- while (i < utftext.length) {
- c = utftext.charCodeAt(i);
- if (c < 128) {
- string += String.fromCharCode(c);
- i++;
- } else if ((c > 191) && (c < 224)) {
- c1 = utftext.charCodeAt(i + 1);
- string += String.fromCharCode(((c & 31) << 6) | (c1 & 63));
- i += 2;
- } else {
- c1 = utftext.charCodeAt(i + 1);
- c2 = utftext.charCodeAt(i + 2);
- string += String.fromCharCode(((c & 15) << 12) | ((c1 & 63) << 6) | (c2 & 63));
- i += 3;
- }
- }
- return string;
- }
- // base64_encode end
- // emoji图片表情转表情字符串
- function emoji_utf16toEntities(str='') {
- var patt = /[\ud800-\udbff][\udc00-\udfff]/g; // 检测utf16字符正则
- str = str.replace(patt, function (char) {
- var H, L, code;
- if (char.length === 2) {
- H = char.charCodeAt(0); // 取出高位
- L = char.charCodeAt(1); // 取出低位
- code = (H - 0xD800) * 0x400 + 0x10000 + L - 0xDC00; // 转换算法
- return "&#" + code + ";";
- } else {
- return char;
- }
- });
- return str;
- }
- // 表情字符串转emoji图片表情
- function emoji_uncodeUtf16(str='') {
- var reg = /\&#.*?;/g;
- var result = str.replace(reg, function (char) {
- var H, L, code;
- if (char.length == 9) {
- code = parseInt(char.match(/[0-9]+/g));
- H = Math.floor((code - 0x10000) / 0x400) + 0xD800;
- L = (code - 0x10000) % 0x400 + 0xDC00;
- return unescape("%u" + H.toString(16) + "%u" + L.toString(16));
- } else {
- return char;
- }
- });
- return result;
- }
- // 时间戳转日期
- function formatDateTime(timeStamp, type = 'datetime', delimiter = '-') {
- var date = new Date();
- // date.setTime(timeStamp / 1000);
- date.setTime(timeStamp);
- var y = date.getFullYear();
- var m = date.getMonth() + 1;
- m = m < 10 ? ('0' + m) : m;
- var d = date.getDate();
- d = d < 10 ? ('0' + d) : d;
- var h = date.getHours();
- h = h < 10 ? ('0' + h) : h;
- var minute = date.getMinutes();
- var second = date.getSeconds();
- minute = minute < 10 ? ('0' + minute) : minute;
- second = second < 10 ? ('0' + second) : second;
- if (type == 'date') {
- return y + delimiter + m + delimiter + d;
- }
- if (type == 'datehm') {
- return y + delimiter + m + delimiter + d + ' ' + h + ':' + minute;
- }
- if (type == 'hz') {
- return y + "年" + m + "月" + d + '日 ' + h + '时' + minute + '分' + second + '秒';
- }
- if (type == 'hzhm') {
- return y + "年" + m + "月" + d + '日 ' + h + '时' + minute + '分';
- }
- return y + delimiter + m + delimiter + d + ' ' + h + ':' + minute + ':' + second;
- };
- /**
- * canvas绘图相关,把文字转化成只能行数,多余显示省略号
- * ctx: 当前的canvas
- * text: 文本
- * contentWidth: 文本最大宽度
- * lineNumber: 显示几行
- */
- function transformContentToMultiLineText(ctx, text='', contentWidth, lineNumber) {
- var textArray = text.split(""); // 分割成字符串数组
- var temp = "";
- var row = [];
- for (var i = 0; i < textArray.length; i++) {
- if (ctx.measureText(temp).width < contentWidth) {
- temp += textArray[i];
- } else {
- i--; // 这里添加i--是为了防止字符丢失
- row.push(temp);
- temp = "";
- }
- }
- row.push(temp);
- // 如果数组长度大于2,则截取前两个
- if (row.length > lineNumber) {
- var rowCut = row.slice(0, lineNumber);
- var rowPart = rowCut[lineNumber-1];
- var test = "";
- var empty = [];
- for (var a = 0; a < rowPart.length; a++) {
- if (ctx.measureText(test).width < contentWidth) {
- test += rowPart[a];
- } else {
- break;
- }
- }
- empty.push(test); // 处理后面加省略号
- var group = empty[0] + '...'
- rowCut.splice(lineNumber - 1, 1, group);
- row = rowCut;
- }
-
- return row;
- }
- /* 保留两位小数 */
- function getTwoFloat(num = 0) {
- return (Math.round(num * 100) / 100).toFixed(2);
- }
- //验证手机号码
- function checkPhoneNum(str){
- if (!str || str == '') {
- return false;
- }
- var phoneTest = /(^1[3|4|5|6|7|8|9][0-9]{9}$)/;
- return phoneTest.test(str);
- }
- class ToPayOpre {
- // 支付
- toPay(info = appEv.parameter("info"), callback) {
- var that = this;
- uni.requestPayment({
- ...info,
- success: function (res) {
- that.payReturn(false, callback);
- },
- fail: function (res) {
- that.payReturn(true, callback);
- }
- })
- }
- payReturn(isFail, callback) {
- uni.hideLoading();
- // 支付失败
- if (isFail) {
- appEv.errTips('支付失败', 3000);
- } else {
- // 支付成功
- uni.showToast({
- title: '支付成功',
- icon: 'success',
- duration: 1200,
- mask: true
- })
- }
-
- // 跳转订单列表
- setTimeout(function () {
- if (callback) {
- callback(isFail);
- } else {
- uni.redirectTo({
- url: '/pages/chengbei-order-list/index'
- })
- }
- }, 1200);
- }
- }
- module.exports = {
- compareVersion: compareVersion,
- formatTime: formatTime,
- formatTime2: formatTime2,
- formatTime3: formatTime3,
- unxiNum: timeToUnix,
- changeTimeStamp: changeTimeStamp,
- md5: md5,
- base64_encode,
- base64_decode,
- utf8_decode,
- emoji_utf16toEntities,
- emoji_uncodeUtf16,
- formatDateTime,
- transformContentToMultiLineText,
- getTwoFloat,
- ToPayOpre
- }
|