141 lines
3.5 KiB
JavaScript
141 lines
3.5 KiB
JavaScript
|
|
const isEmail = (email)=>{
|
||
|
|
let reg = /^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/
|
||
|
|
let result = reg.test(email)
|
||
|
|
return result
|
||
|
|
}
|
||
|
|
|
||
|
|
const getUploadUrl = () =>{
|
||
|
|
let url = process.env.VUE_APP_BASE_URL || ''
|
||
|
|
return url
|
||
|
|
}
|
||
|
|
|
||
|
|
function dataURLtoBlob(dataurl) {
|
||
|
|
var arr = dataurl.split(',');
|
||
|
|
var mime = arr[0].match(/:(.*?);/)[1];
|
||
|
|
var bstr =atob(arr[1]);
|
||
|
|
var n = bstr.length;
|
||
|
|
var u8arr =new Uint8Array(n);
|
||
|
|
while (n--) {
|
||
|
|
u8arr[n] = bstr.charCodeAt(n);
|
||
|
|
}
|
||
|
|
return new Blob([u8arr], {type: mime });
|
||
|
|
}
|
||
|
|
|
||
|
|
function blobToFile(blob, fileName){
|
||
|
|
blob.lastModifiedDate =new Date();
|
||
|
|
blob.name = fileName;
|
||
|
|
return blob;
|
||
|
|
}
|
||
|
|
|
||
|
|
function dataURLtoFile(dataurl, filename){
|
||
|
|
var arr = dataurl.split(','), mime = arr[0].match(/:(.*?);/)[1],
|
||
|
|
bstr = atob(arr[1]), n = bstr.length, u8arr = new Uint8Array(n);
|
||
|
|
while(n--){
|
||
|
|
u8arr[n] = bstr.charCodeAt(n);
|
||
|
|
}
|
||
|
|
var blob = dataURLtoBlob(dataurl);
|
||
|
|
return blobToFile(blob, filename);
|
||
|
|
}
|
||
|
|
|
||
|
|
const base64toFile = (dataurl, filename = 'file') => {
|
||
|
|
let arr = dataurl.split(',')
|
||
|
|
let mime = arr[0].match(/:(.*?);/)[1]
|
||
|
|
let suffix = mime.split('/')[1]
|
||
|
|
let bstr = atob(arr[1])
|
||
|
|
let n = bstr.length
|
||
|
|
let u8arr = new Uint8Array(n)
|
||
|
|
while (n--) {
|
||
|
|
u8arr[n] = bstr.charCodeAt(n)
|
||
|
|
}
|
||
|
|
return new File([u8arr], `${filename}.${suffix}`, {
|
||
|
|
type: mime
|
||
|
|
})
|
||
|
|
|
||
|
|
}
|
||
|
|
|
||
|
|
function rgbToHsv([R, G, B]) {
|
||
|
|
R /= 255
|
||
|
|
G /= 255
|
||
|
|
B /= 255
|
||
|
|
const max = Math.max(R, G, B)
|
||
|
|
const min = Math.min(R, G, B)
|
||
|
|
const range = max - min
|
||
|
|
let V = max
|
||
|
|
let S = V === 0 ? 0 : range / V
|
||
|
|
let H = 0
|
||
|
|
if (R === V) H = (60 * (G - B)) / range
|
||
|
|
if (G === V) H = 120 + (60 * (B - R)) / range
|
||
|
|
if (B === V) H = 240 + (60 * (R - G)) / range
|
||
|
|
|
||
|
|
if (range === 0) H = 0
|
||
|
|
if (H < 0) H += 360
|
||
|
|
H = (H / 2) * (256 / 180)
|
||
|
|
S *= 255
|
||
|
|
V *= 255
|
||
|
|
|
||
|
|
H = parseInt(H)
|
||
|
|
S = parseInt(S)
|
||
|
|
V = parseInt(V)
|
||
|
|
return [H, S, V]
|
||
|
|
}
|
||
|
|
|
||
|
|
const formatTime = (timestamp, fmt) =>{
|
||
|
|
// date = new Date(), fmt = 'MM/dd/yyyy';
|
||
|
|
let date = new Date();
|
||
|
|
date.setTime(timestamp * 1000);
|
||
|
|
|
||
|
|
if (!fmt) {
|
||
|
|
formatRule ? (fmt = formatRule) : (fmt = "YYYY-MM-DD hh:mm:ss");
|
||
|
|
}
|
||
|
|
// console.log(formatRule)
|
||
|
|
let o = {
|
||
|
|
'M+': date.getMonth() + 1, // 月份
|
||
|
|
'D+': date.getDate(), // 日
|
||
|
|
'h+': date.getHours(), // 小时
|
||
|
|
'm+': date.getMinutes(), // 分
|
||
|
|
's+': date.getSeconds(), // 秒
|
||
|
|
'q+': Math.floor((date.getMonth() + 3) / 3), // 季度
|
||
|
|
'S+': date.getMilliseconds(), // 毫秒
|
||
|
|
'a': date.getHours() > 12
|
||
|
|
? 'PM'
|
||
|
|
: 'AM' // 上午还是下午
|
||
|
|
};
|
||
|
|
if (/(Y+)/.test(fmt)) {
|
||
|
|
fmt = fmt.replace(RegExp.$1, (date.getFullYear() + '').substr(4 - RegExp.$1.length));
|
||
|
|
}
|
||
|
|
if(/(a)/.test(fmt)&&o['h+']>12){
|
||
|
|
o['h+'] = o['h+'] - 12
|
||
|
|
}
|
||
|
|
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;
|
||
|
|
}
|
||
|
|
|
||
|
|
const isMoible = () => {
|
||
|
|
let is_mobile = navigator.userAgent.toLowerCase().match(/(ipad|ipod|iphone|android|coolpad|mmp|smartphone|midp|wap|xoom|symbian|j2me|blackberry|wince)/i) != null;
|
||
|
|
if(is_mobile){
|
||
|
|
return true
|
||
|
|
}else{
|
||
|
|
return false
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
|
||
|
|
|
||
|
|
export{
|
||
|
|
isEmail,
|
||
|
|
getUploadUrl,
|
||
|
|
dataURLtoFile,
|
||
|
|
blobToFile,
|
||
|
|
base64toFile,
|
||
|
|
rgbToHsv,
|
||
|
|
formatTime,
|
||
|
|
dataURLtoBlob,
|
||
|
|
isMoible,
|
||
|
|
}
|