| | |
| | | } |
| | | |
| | | /** |
| | | * 检查网络状态 |
| | | */ |
| | | static checkOnlineState(callback) { |
| | | // 网页模式 |
| | | if (process.env.TARO_ENV === 'h5') { |
| | | // 网络已开启 |
| | | if (navigator.onLine) { |
| | | // 用图片资源测试网络状态 |
| | | const img = new Image(); |
| | | img.onload = () => { |
| | | img.onload = null; |
| | | callback && callback(true); |
| | | }; |
| | | img.onerror = () => { |
| | | img.onerror = null; |
| | | callback && callback(false); |
| | | }; |
| | | img.src = 'http://gz.zhiheiot.com/disp/download/buildArchive/online.png?t=' + Date.now(); |
| | | } |
| | | // 网络未开启 |
| | | else { |
| | | callback && callback(false); |
| | | } |
| | | } |
| | | // 补充:小程序模式用 getNetworkType |
| | | } |
| | | |
| | | /** |
| | | * 判断是否是数字 |
| | | * @param {*} data |
| | | * @return {Boolean} |
| | |
| | | } |
| | | |
| | | /** |
| | | * 数组元素交换位置 |
| | | * @param {array} arr 数组 |
| | | * @param {number} fromIndex 要交换项目的位置 |
| | | * @param {number} toIndex 被交换项目的位置 |
| | | */ |
| | | static swapArray(arr, fromIndex, toIndex) { |
| | | // 先在目标位置新增一个和当前元素一样的元素,再把当前元素删除掉 |
| | | arr.splice(toIndex, 0, arr[fromIndex]); |
| | | // 如果拖动元素上移动,当前元素下标为 fromIndex+1 |
| | | if (fromIndex > toIndex) { |
| | | arr.splice(fromIndex + 1, 1); |
| | | } |
| | | // 如果拖动元素下移,当前元素下标还是 fromIndex |
| | | else { |
| | | arr.splice(fromIndex, 1); |
| | | } |
| | | return arr; |
| | | } |
| | | |
| | | /** |
| | | * 使用 moment.js 格式化时间戳 |
| | | * @param {Number|String} timestamp |
| | | * @param {String} [type='date'] |
| | |
| | | } |
| | | } |
| | | } |
| | | // 转为数值的无连接符日期 |
| | | // 数值转换:8位整型日期 转 时间戳 |
| | | if (timestamp < 9 * 10e6) { |
| | | const timeStr = timestamp + ''; |
| | | const day = timeStr.substr(0, 4) + '-' + |
| | | timeStr.substr(4, 2) + '-' + timeStr.substr(6, 2); |
| | | timestamp = (new Date(day)).getTime(); |
| | | const dateStr = timeStr.slice(0, 4) + '-' + timeStr.slice(4, 6) + '-' + timeStr.slice(6); |
| | | if (type === 'date') { |
| | | return dateStr; |
| | | } |
| | | timestamp = (new Date(dateStr)).getTime(); |
| | | } |
| | | // 按秒时间戳 |
| | | // 数值转换:时间戳 秒 转 毫秒 |
| | | else if (timestamp < 9 * 10e8) { |
| | | timestamp *= 1000; |
| | | } |
| | | // 数值转换:14位整型日期 转 时间戳 |
| | | else if (/^2[012]\d{2}[01]\d[0123]\d[012]\d[0-5]\d[0-5]\d/.test(timestamp + '')) { |
| | | const timeStr = timestamp + ''; |
| | | const dateStr = timeStr.slice(0, 4) + '-' + timeStr.slice(4, 6) + '-' + timeStr.slice(6, 8) |
| | | + ' ' + timeStr.slice(8, 10) + ':' + timeStr.slice(10, 12) + ':' + timeStr.slice(12, 14); |
| | | if (type === 'dateTimeFull') { |
| | | return dateStr; |
| | | } |
| | | timestamp = (new Date(dateStr)).getTime(); |
| | | } |
| | | const curMoment = moment(timestamp); |
| | | if (type === 'date') { |
| | |
| | | /** |
| | | * 求小数点后的数据长度 |
| | | * @param {Number|String} num |
| | | * @private |
| | | * @return {Number} |
| | | */ |
| | | static getDecimalLength(num) { |
| | | let t = 0; |
| | |
| | | |
| | | /** |
| | | * 转换周数到日期 |
| | | * @param year |
| | | * @param week |
| | | * @param weekDay 需要输出星期几对应的日期 (1~7) |
| | | * @return {Date} |
| | | * @param {Number} year |
| | | * @param {Number} week |
| | | * @param {Number} weekDay 需要输出星期几对应的日期 (1~7) |
| | | * @return {String} |
| | | */ |
| | | static transWeekIndexToDate(year, week, weekDay) { |
| | | const yearStart = moment([year, 0, 1]); |