UNPKG

kc-aui

Version:

后台业务组件集合

247 lines (231 loc) 6.13 kB
/** * Created by jiachenpan on 16/11/18. */ export function parseTime(time, cFormat) { if (arguments.length === 0) { return null } const format = cFormat || '{y}-{m}-{d} {h}:{i}:{s}' let date if (typeof time === 'object') { date = time } else { if (('' + time).length === 10) time = parseInt(time) * 1000 date = new Date(time) } const formatObj = { y: date.getFullYear(), m: date.getMonth() + 1, d: date.getDate(), h: date.getHours(), i: date.getMinutes(), s: date.getSeconds(), a: date.getDay() } const time_str = format.replace(/{(y|m|d|h|i|s|a)+}/g, (result, key) => { let value = formatObj[key] // Note: getDay() returns 0 on Sunday if (key === 'a') { return ['日', '一', '二', '三', '四', '五', '六'][value ] } if (result.length > 0 && value < 10) { value = '0' + value } return value || 0 }) return time_str } export function formatTime(time, option) { time = +time * 1000 const d = new Date(time) const now = Date.now() const diff = (now - d) / 1000 if (diff < 30) { return '刚刚' } else if (diff < 3600) { // less 1 hour return Math.ceil(diff / 60) + '分钟前' } else if (diff < 3600 * 24) { return Math.ceil(diff / 3600) + '小时前' } else if (diff < 3600 * 24 * 2) { return '1天前' } if (option) { return parseTime(time, option) } else { return ( d.getMonth() + 1 + '月' + d.getDate() + '日' + d.getHours() + '时' + d.getMinutes() + '分' ) } } export function isExternal(path) { return /^(https?:|mailto:|tel:)/.test(path) } /* * unix 转换成时间 * type 1 显示yyyy-mm-dd hh:mm * 2 显示yyyy-mm-dd */ export function unixToTime (timestamp, type) { let Time = new Date(timestamp) let TimeArr = [ Time.getFullYear(), padZero(Time.getMonth() + 1), padZero(Time.getDate()), padZero(Time.getHours()), padZero(Time.getMinutes()), padZero(Time.getSeconds()) ] if (type === 2) { return TimeArr.slice(0, 3).join('/') } else { return TimeArr.slice(0, 3).join('/') + ' ' + TimeArr.slice(3, 5).join(':') } } // 小于十补0 export function padZero (num) { return Number(num) < 10 ? '0' + num : num } // obj转url export function objToUrl (param) { if (param === null) return '' var tempArr = [] for (var key in param) { if (param.hasOwnProperty(key) && param[key] !== undefined && param[key] !== null) { tempArr.push(key + '=' + param[key]) } } if (tempArr.length) { // var pre = location.href.indexOf('?') < 0 ? '?' : '&'; return '?' + tempArr.join('&'); } return ''; } // url中query的部分转obj export function urlToObj (url) { if (url === null || url.indexOf('?') < 0) return {} var query = location.href.split('?')[1] var tempObj = {} query.split('&').forEach(function (item) { var key = item.split('=')[0] tempObj[key] = decodeURI(item.split('=')[1]) }) return tempObj } /** * 获取url中参数 * @param {String} query 要获取的参数,对大小写敏感 * @return {String} 要获取的参数对应的值,为获取则为空字符串 */ export function getQuery (query) { if (!query) return '' const _query = window.location.href.split('?')[1] if (_query) { const _eachQuery = _query.split('&') let i = 0 while (i < _eachQuery.length) { let _keyValue = _eachQuery[i].split('=') if (_keyValue[0] === query) { return _keyValue[1] } i++ } } return '' } /** * 删除url中参数 * @param {String} query 要删除的query * @param {String} url 要删除的url * @return {String} 返回删除后的url */ export function delQuery (query, url = window.location.href) { let urlArr = url.split('?') if (urlArr.length > 1 && urlArr[1].indexOf(query) > -1) { let _search = urlArr[1] let obj = {} let arr = _search.split('&') for (let i = 0; i < arr.length; i++) { arr[i] = arr[i].split('=') obj[arr[i][0]] = arr[i][1] } delete obj[query] let urlte = JSON.stringify(obj).length === 2 ? `${urlArr[0]}` : `${urlArr[0]}?${JSON.stringify(obj).replace(/["{}]/g, '').replace(/:/g, '=').replace(/,/g, '&')}` return urlte } else { return url || window.location.href } } /** * 替换url中query值 * @param url * @param query * @param value * @returns {string} */ export function replaceQuery (url = window.location.href, query, value) { let urlArr = url.split('?') if (urlArr.length > 1 && urlArr[1].indexOf(query) > -1) { let _search = urlArr[1] let obj = {} let arr = _search.split('&') for (let i = 0; i < arr.length; i++) { arr[i] = arr[i].split('=') obj[arr[i][0]] = arr[i][1] } obj[query] = encodeURI(value) let resQuery = urlArr[0] + '?' Object.keys(obj).forEach((item, index, array) => { resQuery += (item + '=' + obj[item] + (index < array.length - 1 ? '&' : '')) }) return resQuery } else { return url || window.location.href } } export function randomString (len) { len = len || 32 var chars = 'ABCDEFGHJKMNPQRSTWXYZabcdefhijkmnprstwxyz2345678' var maxPos = chars.length var pwd = '' for (let i = 0; i < len; i++) { pwd += chars.charAt(Math.floor(Math.random() * maxPos)) } return pwd } // 获取host export function getAdminHost() { var tempHost = window.location.host; var tempMap = { rd: 'http://kcadmin.rdtest.xuanke.com', qa: 'https://admin.qatest.xuanke.com', sandbox: 'http://pre-admin.kaochong.com', online: 'http://admin.kaochong.com' }; if (/rdtest|localhost|127\.0\.0\.1/.test(tempHost)) { return tempMap.rd; } else if (/qatest/.test(tempHost)) { return tempMap.qa; } else if (/pre-/.test(tempHost)) { return tempMap.sandbox; } else { return tempMap.online; } } // 加密手机号中间部分 export function encryptTel(tel) { if (tel) { let transTel = String(tel); return transTel.slice(0,3) + '****' + transTel.slice(-4); } }