// import router from '@/router'; import router from '@/router'; // 是否为空 const isEmpty = val => { if (val instanceof Array) { if (val.length === 0) return true; } else if (val instanceof Object) { if (!Object.keys(val).length) return true; } else { if ( val === 'null' || val === null || val === 'undefined' || val === undefined || val === '' ) return true; return false; } return false; }; const getShortUrl = url => { if (isEmpty(url)) return ''; let startIndex = url.indexOf('/uploads'); let endIndex = url.indexOf('_small'); let urlArr = url.split('.'); return url.substring(startIndex, endIndex) + '.' + urlArr[urlArr.length - 1]; }; /** * 深拷贝对象 * @param {要拷贝对象} obj */ const copyObject = obj => { let str, newobj = Array.isArray(obj) === true ? [] : {}; if (typeof obj !== "object") { return; } else if (JSON) { (str = JSON.stringify(obj)), //系列化对象 (newobj = JSON.parse(str)); //还原 } else { for (let i in obj) { newobj[i] = typeof obj[i] === "object" ? copyObject(obj[i]) : obj[i]; } } return newobj; }; /** * * 全局公共按钮跳转 * @parmas item.funtion 为可执行函数 * @parmas item.url 为跳转的路径 * @parmas item.query 为跳转携带的参数 * @parmas item.type 为跳转调用的函数 1为navigateTo, 2为redirectTo, 3为reLaunch, 4为switchTab */ export const pageTo = item => { if (isNumber(item)) { // uni.navigateBack({ // delta: item // }) } if (isString(item)) { router.push({ path: item }); return false; } if (item.funtion) { item.funtion(); } if (item.url) { let query = item.query ? parse(item.query) : ''; let allUrl = `${item.url}${query}`; if (item.type == 2) { router.replace({ path: allUrl }); } else if (item.type == 3) { // uni.reLaunch({ // url: allUrl // }); } else if (item.type == 4) { // uni.switchTab({ // url: allUrl // }); } else { router.push({ path: allUrl }); } } }; // 是否为数组 const isArray = arr => { return typeof arr == 'object' && arr.constructor == Array; }; // 是否为字符串 const isString = str => { return typeof str == 'string' && str.constructor == String; }; // 是否为对象 const isObject = obj => { return typeof obj == 'object' && obj.constructor == Object; }; // 是否为数字 const isNumber = num => { return typeof num == 'number' && num.constructor == Number; }; // 是否为日期类型 const isDate = date => { return typeof date == 'object' && date.constructor == Date; }; // 是否为函数 const isFunction = obj => { return typeof obj == 'object' && obj.constructor == Function; }; /** * * 对象参数转为url参数 * @parmas query 拼接得参数对象 * @parmas isFrist 为true时开头为& */ export const parse = (query, isFrist = false) => { let str = Object.keys(query) .filter(key => !isEmpty(query[key])) .reduce((result, key) => { const value = query[key]; // in查询特殊处理 if (Array.isArray(value) && !isEmpty(value)) { return `${result}&${value.reduce( (val, cVal) => `${val ? `${val}&` : val}${key}=${cVal}`, '' )}`; } // between查询做特殊处理 if (typeof value === 'object' && !isEmpty(value)) { const [start, end] = value; return `${result}&${key}[]=${start}&${key}[]=${end}`; } return `${result}&${key}=${value}`; }, ''); return isFrist ? str : str.replace(/^&/, '?'); }; const $checkName = str => { return /^[\u4E00-\u9FA5A-Za-z\s]+(·[\u4E00-\u9FA5A-Za-z]+)*$/.test(str); }; /** * * 全局时间转换 * @parmas num 时间戳默认为11位时间戳 * @parmas fmt 默认转换的时间格式 * @parmas all 为true时time为13位时间戳 */ export const $formatDate = (num, fmt = 'YYYY-MM-DD HH:mm', all) => { num = all ? num : num * 1000; let date = new Date(); date.setTime(num); let o = { 'M+': date.getMonth() + 1, 'D+': date.getDate(), 'h+': date.getHours() % 12 === 0 ? 12 : date.getHours() % 12, 'H+': date.getHours(), 'm+': date.getMinutes(), 's+': date.getSeconds(), 'q+': Math.floor((date.getMonth() + 3) / 3), S: date.getMilliseconds() }; let week = { '0': '\u65e5', '1': '\u4e00', '2': '\u4e8c', '3': '\u4e09', '4': '\u56db', '5': '\u4e94', '6': '\u516d' }; if (/(Y+)/.test(fmt)) { fmt = fmt.replace(RegExp.$1, (date.getFullYear() + '').substr(4 - RegExp.$1.length)); } if (/(E+)/.test(fmt)) { fmt = fmt.replace( RegExp.$1, (RegExp.$1.length > 1 ? (RegExp.$1.length > 2 ? '\u661f\u671f' : '\u5468') : '') + week[date.getDay() + ''] ); } for (let k in o) { if (new RegExp('(' + k + ')').test(fmt)) { fmt = fmt.replace( RegExp.$1, RegExp.$1.length === 1 ? o[k] : ('00' + o[k]).substr(('' + o[k]).length) ); } } return fmt; }; export function checkPhone(val) { return (/^1(3|4|5|6|7|8|9)\d{9}$/.test(val)); } export default { isEmpty, copyObject, parse, pageTo, $checkName, $formatDate, getShortUrl, checkPhone };