180 lines
4.0 KiB
JavaScript
180 lines
4.0 KiB
JavaScript
// z-paging
|
||
// github地址:https://github.com/SmileZXLee/uni-z-paging
|
||
// dcloud地址:https://ext.dcloud.net.cn/plugin?id=3935
|
||
// 反馈QQ群:790460711
|
||
// z-paging工具类
|
||
|
||
import zI18n from './z-paging-i18n'
|
||
|
||
const storageKey = 'Z-PAGING-REFRESHER-TIME-STORAGE-KEY'
|
||
|
||
//判断两个数组是否相等
|
||
function arrayIsEqual(arr1, arr2) {
|
||
if (arr1 === arr2) {
|
||
return true;
|
||
}
|
||
if (arr1.length !== arr2.length) {
|
||
return false;
|
||
}
|
||
for (let i = 0; i < arr1.length; i++) {
|
||
if (arr1[i] !== arr2[i]) {
|
||
return false;
|
||
}
|
||
}
|
||
return true;
|
||
}
|
||
|
||
//获取最终的touch位置
|
||
function getCommonTouch(e) {
|
||
let touch = null;
|
||
if (e.touches && e.touches.length) {
|
||
touch = e.touches[0];
|
||
} else if (e.changedTouches && e.changedTouches.length) {
|
||
touch = e.changedTouches[0];
|
||
} else if (e.datail && e.datail !== {}) {
|
||
touch = e.datail;
|
||
} else {
|
||
return {
|
||
touchX: 0,
|
||
touchY: 0
|
||
}
|
||
}
|
||
return {
|
||
touchX: touch.clientX,
|
||
touchY: touch.clientY
|
||
};
|
||
}
|
||
|
||
//判断当前手势是否在z-paging内触发
|
||
function getTouchFromZPaging(target) {
|
||
if (target && target.tagName && target.tagName !== 'BODY' && target.tagName !== 'UNI-PAGE-BODY') {
|
||
var classList = target.classList;
|
||
if (classList && classList.contains('zp-paging-touch-view')) {
|
||
return true;
|
||
} else {
|
||
return getTouchFromZPaging(target.parentNode);
|
||
}
|
||
} else {
|
||
return false;
|
||
}
|
||
}
|
||
|
||
//获取z-paging所在的parent
|
||
function getParent(parent) {
|
||
if (!parent) {
|
||
return null;
|
||
}
|
||
if (parent.$refs.paging) {
|
||
return parent;
|
||
}
|
||
return getParent(parent.$parent);
|
||
}
|
||
|
||
//打印错误信息
|
||
function consoleErr(err) {
|
||
console.error(`[z-paging]${err}`);
|
||
}
|
||
|
||
//打印警告信息
|
||
function consoleWarn(warn) {
|
||
console.warn(`[z-paging]${warn}`);
|
||
}
|
||
|
||
//设置下拉刷新时间
|
||
function setRefesrherTime(time, key) {
|
||
try {
|
||
let datas = getRefesrherTime();
|
||
if (!datas) {
|
||
datas = {};
|
||
}
|
||
datas[key] = time;
|
||
uni.setStorageSync(storageKey, datas);
|
||
} catch {}
|
||
}
|
||
|
||
//获取下拉刷新时间
|
||
function getRefesrherTime() {
|
||
try {
|
||
const datas = uni.getStorageSync(storageKey);
|
||
return datas;
|
||
} catch {
|
||
return null;
|
||
}
|
||
}
|
||
|
||
//通过下拉刷新标识key获取下拉刷新时间
|
||
function getRefesrherTimeByKey(key) {
|
||
const datas = getRefesrherTime();
|
||
if (datas) {
|
||
const data = datas[key];
|
||
if (data) {
|
||
return data;
|
||
}
|
||
}
|
||
return null;
|
||
}
|
||
|
||
//通过下拉刷新标识key获取下拉刷新时间(格式化之后)
|
||
function getRefesrherFormatTimeByKey(key) {
|
||
const time = getRefesrherTimeByKey(key);
|
||
let timeText = zI18n['refresherUpdateTimeNoneText'][zI18n.getLanguage()];
|
||
if (time) {
|
||
timeText = _timeFormat(time);
|
||
}
|
||
return `${zI18n['refresherUpdateTimeText'][zI18n.getLanguage()]}${timeText}`;
|
||
}
|
||
|
||
function _timeFormat(time) {
|
||
const date = new Date(time);
|
||
const currentDate = new Date();
|
||
const dateDay = new Date(time).setHours(0, 0, 0, 0);
|
||
const currentDateDay = new Date().setHours(0, 0, 0, 0);
|
||
const disTime = dateDay - currentDateDay;
|
||
let dayStr = '';
|
||
const timeStr = _dateTimeFormat(date);
|
||
if (disTime === 0) {
|
||
dayStr = zI18n['refresherUpdateTimeTodayText'][zI18n.getLanguage()];
|
||
} else if (disTime === -86400000) {
|
||
dayStr = zI18n['refresherUpdateTimeYesterdayText'][zI18n.getLanguage()];
|
||
} else {
|
||
dayStr = _dateDayFormat(date, date.getFullYear() !== currentDate.getFullYear());
|
||
}
|
||
return `${dayStr} ${timeStr}`;
|
||
}
|
||
|
||
function _dateDayFormat(date, showYear = true) {
|
||
const year = date.getFullYear();
|
||
const month = date.getMonth() + 1;
|
||
const day = date.getDate();
|
||
if (showYear) {
|
||
return `${year}-${_fullZeroToTwo(month)}-${_fullZeroToTwo(day)}`;
|
||
} else {
|
||
return `${_fullZeroToTwo(month)}-${_fullZeroToTwo(day)}`;
|
||
}
|
||
}
|
||
|
||
function _dateTimeFormat(date) {
|
||
const hour = date.getHours();
|
||
const minute = date.getMinutes();
|
||
return `${_fullZeroToTwo(hour)}:${_fullZeroToTwo(minute)}`;
|
||
}
|
||
|
||
function _fullZeroToTwo(str) {
|
||
str = str.toString();
|
||
if (str.length === 1) {
|
||
return '0' + str;
|
||
}
|
||
return str;
|
||
}
|
||
|
||
module.exports = {
|
||
setRefesrherTime,
|
||
getRefesrherFormatTimeByKey,
|
||
arrayIsEqual,
|
||
getCommonTouch,
|
||
getTouchFromZPaging,
|
||
getParent,
|
||
consoleErr,
|
||
consoleWarn
|
||
};
|