const tool = {
? // 獲取網(wǎng)頁地址參數(shù)
? getQueryString: (name) => {
? ? const search = window.location.search;
? ? const matched = search
? ? ? .slice(1)
? ? ? .match(new RegExp("(^|&)" + name + "=([^&]*)(&|$)", "i"));
? ? return search.length ? matched && matched[2] : null;
? },
? /**
? * 切除字符串,當(dāng)字符串大于最大長度時瞭空,截取字符串拼接'...'
? */
? getSliceStr: (str, maxLength) => {
? ? if (str) {
? ? ? if (str.length > maxLength) {
? ? ? ? str = str.slice(0, maxLength) + "...";
? ? ? }
? ? }
? ? return str;
? },
? /**獲取字符串長度躺涝,1個中文字符算2個長度 */
? getStrLength: (str) => {
? ? if (str) {
? ? ? var count = str.length;
? ? ? for (var i = 0; i < str.length; i++) {
? ? ? ? if (str.charCodeAt(i) > 255) {
? ? ? ? ? count++;
? ? ? ? }
? ? ? }
? ? ? return count;
? ? }
? ? console.error("獲取字符串長度失敗,字符串不存在R省燃异!請檢查!继蜡!----->");
? ? return null;
? },
? /**鼠標(biāo)點(diǎn)擊延遲回俐,name:節(jié)點(diǎn)的類名逛腿,delay:延遲時間(ms) */
? clickDelay: (name, delay = 1200) => {
? ? let nodeArr;
? ? nodeArr = document.getElementsByClassName(name);
? ? if (!nodeArr || nodeArr.length <= 0) {
? ? ? console.warn("鼠標(biāo)點(diǎn)擊延遲添加失敗,節(jié)點(diǎn)不存在=銎摹5ツ!灵莲!請查看----->");
? ? ? return;
? ? }
? ? for (let i = 0; i < nodeArr.length; i++) {
? ? ? let node = nodeArr[i];
? ? ? node.style.pointerEvents = "none";
? ? ? setTimeout(() => {
? ? ? ? if (node) node.style.pointerEvents = "";
? ? ? }, delay);
? ? }
? },
? /**禁用點(diǎn)擊事件 */
? disableClick: (name) => {
? ? let node;
? ? node = document.getElementsByClassName(name)[0];
? ? node.style.pointerEvents = "none";
? },
? /**啟用點(diǎn)擊事件 */
? enableClick: (name) => {
? ? let node;
? ? node = document.getElementsByClassName(name)[0];
? ? node.style.pointerEvents = "";
? },
? /**
? * 在一個數(shù)組中尋找對應(yīng)值的元素
? * @param {尋找的值} value
? * @param {數(shù)組列表} list
? * @param {尋找的值對應(yīng)的鍵值} key
? */
? findData(value, list, key) {
? ? const result = list.filter((i) => i[key] == value);
? ? if (!result || result.length == 0)
? ? ? throw new Error(`不存在key=${key}的任務(wù)雕凹,請檢查接口`);
? ? return result[0];
? },
? /**
? * 獲取日期-日-月
? * @param {2020-08-13} date
? *
? * return 08月13日
? */
? getDateToDayMonth: (date) => {
? ? let dateStrs = date.split("-");
? ? return dateStrs[1] + "月" + dateStrs[2] + "日";
? },
? /**根據(jù)時間戳獲取日期-月-日 */
? getDateDayMonthByTime: (time) => {
? ? let date = new Date(time);
? ? let year = date.getFullYear();
? ? let month = date.getMonth() + 1;
? ? let day = date.getDate();
? ? let hour = date.getHours();
? ? let minutes = date.getMinutes();
? ? let seconds = date.getSeconds();
? ? month = month < 10 ? "0" + month : month;
? ? day = day < 10 ? "0" + day : day;
? ? hour = hour < 10 ? "0" + hour : hour;
? ? minutes = minutes < 10 ? "0" + minutes : minutes;
? ? // date = year + '/' + month + '/' + day + ' ' + hour + ':' + minutes;
? ? let data = {
? ? ? year: year,
? ? ? month: month,
? ? ? day: day,
? ? ? hours: hour,
? ? ? minutes: minutes,
? ? ? seconds: seconds,
? ? };
? ? console.log("計(jì)算的時間", data);
? ? return data;
? },
? /**通過秒數(shù)獲取日期 */
? getDateBySeconds: (value) => {
? ? var seconds = parseInt(value); // 秒
? ? var minutes = 0; // 分
? ? var hour = 0; // 小時
? ? if (seconds > 60) {
? ? ? minutes = parseInt(seconds / 60);
? ? ? seconds = parseInt(seconds % 60);
? ? ? if (minutes > 60) {
? ? ? ? hour = parseInt(minutes / 60);
? ? ? ? minutes = parseInt(minutes % 60);
? ? ? }
? ? }
? ? let data = {
? ? ? hours: hour,
? ? ? minutes: minutes,
? ? ? seconds: seconds,
? ? };
? ? // console.log('time-=--->',value,data)
? ? return data;
? },
? isArray: (o) => {
? ? return Object.prototype.toString.call(o) == "[object Array]";
? },
? // 二次貝塞爾,用于做曲線運(yùn)動
? bezier: (t, p0, p1, p2) => {
? ? // (1-t)^2 P0 + 2(1-t)tP1+ t^2P2
? ? return Math.pow(1 - t, 2) * p0 + 2 * (1 - t) * t * p1 + Math.pow(t, 2) * p2;
? },
? /**計(jì)算兩個時間戳相差的時間,小時政冻,分枚抵,秒 */
? compareTime: (startTime, endTime) => {
? ? let between = (endTime - startTime) / 1000;
? ? let hours = Math.floor((between % (24 * 36000)) / 3600);
? ? let minutes = Math.floor((between % 3600) / 60);
? ? let seconds = Math.floor((between % 60) / 60);
? ? let date;
? ? date = {
? ? ? hours: hours,
? ? ? minutes: minutes,
? ? ? seconds: seconds,
? ? };
? ? return date;
? },
? //計(jì)算時間多少天時分秒
? intervalOneTime: (time) => {
? ? var date3 = time; //時間差的毫秒數(shù)
? ? //計(jì)算出相差天數(shù)
? ? var days = Math.floor(date3 / (24 * 3600 * 1000));
? ? //計(jì)算出小時數(shù)
? ? var leave1 = date3 % (24 * 3600 * 1000); //計(jì)算天數(shù)后剩余的毫秒數(shù)
? ? var hours = Math.floor(leave1 / (3600 * 1000));
? ? //計(jì)算相差分鐘數(shù)
? ? var leave2 = leave1 % (3600 * 1000); //計(jì)算小時數(shù)后剩余的毫秒數(shù)
? ? var minutes = Math.floor(leave2 / (60 * 1000));
? ? //計(jì)算相差秒數(shù)
? ? var leave3 = leave2 % (60 * 1000); //計(jì)算分鐘數(shù)后剩余的毫秒數(shù)
? ? var seconds = Math.floor(leave3 / 1000);
? ? let result1 = {
? ? ? days: days,
? ? ? hours: hours,
? ? ? minutes: minutes,
? ? ? seconds: seconds,
? ? };
? ? console.log("單個時間計(jì)算的時間");
? ? return result1;
? },
? /**判斷是否是微信環(huán)境 */
? isWX() {
? ? var ua = window.navigator.userAgent.toLowerCase();
? ? return ua.match(/MicroMessenger/i) == "micromessenger";
? },
? /**獲取渠道參數(shù) */
? getChannel() {
? ? return tool.getQueryString("channel");
? },
? /**
? * 數(shù)字補(bǔ)0 例:(num = 2, length = 2) -> 02
? * @param num 數(shù)字
? * @param length 位數(shù)
? * @private
? */
? prefixInteger: (num, length) => {
? ? return (Array(length).join("0") + num).slice(-length);
? },
? /**
? * 隨機(jī)獲取數(shù)組中六個值
? */
? getRandomArrayElements: (arr, count) => {
? ? var shuffled = arr.slice(0),
? ? ? i = arr.length,
? ? ? min = i - count,
? ? ? temp,
? ? ? index;
? ? while (i-- > min) {
? ? ? index = Math.floor((i + 1) * Math.random());
? ? ? temp = shuffled[index];
? ? ? shuffled[index] = shuffled[i];
? ? ? shuffled[i] = temp;
? ? }
? ? return shuffled.slice(min);
? },
? /**
? * 格式化時間 format Time - type 01
? * @param {Number} time
? */
? formatTime: (time, type = "") => {
? ? time = parseInt(time);
? ? if (!time) return null;
? ? const yy = new Date(time).getFullYear();
? ? const mm = new Date(time).getMonth() + 1;
? ? const dd = new Date(time).getDate();
? ? let t2 = new Date(time).getHours() + ""; //獲取時
? ? let t3 = new Date(time).getMinutes() + ""; //獲取分
? ? let t1;
? ? if (type === "s") {
? ? ? t1 = `${yy}年${mm}月${dd}日${t2}時${t3}秒`;
? ? } else if (type === "h") {
? ? ? t1 = `${yy}年${mm}月${dd}日${t2}時`;
? ? } else {
? ? ? t1 = `${yy}年${mm}月${dd}日`;
? ? }
? ? // console.log(new Date(time).toLocaleDateString())
? ? // const t1 = new Date(time).toLocaleDateString() + ''//獲取年月日
? ? // const t4 = new Date(time).getMilliseconds() + ''//獲取秒
? ? // if (parseInt(t2) < 10) t2 = '0'+t2
? ? // if (parseInt(t3) < 10) t3 = '0'+t3
? ? // time = t1 + ' ' + t2 + ':' + t3
? ? time = t1;
? ? // console.log('time', time, t1 + ' ' + t2 + ':' + t3)
? ? return time;
? },
? throttle: (fun, delay = 2000) => {
? ? let last, deferTimer;
? ? return function () {
? ? ? let now = +new Date();
? ? ? if (last && now < last + delay) {
? ? ? ? clearTimeout(deferTimer);
? ? ? ? deferTimer = setTimeout(() => {
? ? ? ? ? last = now;
? ? ? ? }, delay);
? ? ? } else {
? ? ? ? last = now;
? ? ? ? fun.apply(this, arguments);
? ? ? }
? ? };
? },
};
export default tool;