111 lines
2.6 KiB
JavaScript
111 lines
2.6 KiB
JavaScript
class Utils {
|
|
query(name) {
|
|
var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)");
|
|
var r = window.location.search.substr(1).match(reg);
|
|
if (r != null)
|
|
return decodeURIComponent(r[2]);
|
|
return null;
|
|
}
|
|
|
|
setItem(key, value) {
|
|
localStorage.setItem(
|
|
key,
|
|
value.constructor == Object || value.constructor == Array
|
|
? JSON.stringify(value)
|
|
: value
|
|
)
|
|
}
|
|
|
|
getItem(key) {
|
|
return localStorage.getItem(key) == null ? false : JSON.parse(localStorage.getItem(key))
|
|
}
|
|
|
|
initSocket() {
|
|
window.sc = io(config.socketBaseUrl);
|
|
}
|
|
|
|
timestamp() {
|
|
return new Date().getTime()
|
|
}
|
|
|
|
format(fmt, time) {
|
|
time = new Date(time)
|
|
var o = {
|
|
"M+": time.getMonth() + 1, //月份
|
|
"d+": time.getDate(), //日
|
|
"h+": time.getHours(), //小时
|
|
"m+": time.getMinutes(), //分
|
|
"s+": time.getSeconds(), //秒
|
|
"q+": Math.floor((time.getMonth() + 3) / 3), //季度
|
|
"S": time.getMilliseconds() //毫秒
|
|
};
|
|
|
|
if (/(y+)/.test(fmt)) {
|
|
fmt = fmt.replace(RegExp.$1, (time.getFullYear() + "").substr(4 - RegExp.$1.length));
|
|
}
|
|
|
|
for (var 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;
|
|
}
|
|
|
|
async imgToBase64(url) {
|
|
var file = await getFileFromUrl(url);
|
|
var reader = new FileReader();
|
|
return new Promise((resolve, reject) => {
|
|
reader.addEventListener("load", function () {
|
|
var base64gif = reader.result;
|
|
resolve(base64gif)
|
|
}, false);
|
|
|
|
if (file) {
|
|
reader.readAsDataURL(file);
|
|
}
|
|
})
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
getFileFromUrl(url) {
|
|
let fileName = url.substr(url.lastIndexOf(".") -1 )
|
|
let type = url.match(/\.(\w+)$/)[1]
|
|
console.log(type);
|
|
|
|
return new Promise((resolve, reject) => {
|
|
var blob = null;
|
|
var xhr = new XMLHttpRequest();
|
|
xhr.open("GET", url);
|
|
xhr.setRequestHeader('Accept', `image/${type}`);
|
|
xhr.responseType = "blob";
|
|
// 加载时处理
|
|
xhr.onload = () => {
|
|
// 获取返回结果
|
|
blob = xhr.response;
|
|
let file = new File([blob], fileName, { type: `image/${type}` });
|
|
// 返回结果
|
|
resolve(file);
|
|
};
|
|
xhr.onerror = (e) => {
|
|
reject(e)
|
|
};
|
|
// 发送
|
|
xhr.send();
|
|
});
|
|
}
|
|
}
|
|
|
|
let {
|
|
query, setItem, getItem, initSocket, timestamp, format,
|
|
imgToBase64, getFileFromUrl
|
|
} = new Utils()
|
|
|
|
initSocket()
|
|
|