import JSEncrypt from "jsencrypt"
let vueObj = new Vue()
var temp = vueObj.TempParent
export default {}
1、返回当前fontsize
updateFontSize() {
let availWidth = window.screen.width
if (!availWidth) {
return 0
}
availWidth = availWidth < 1920 ? 1920 : availWidth
let fontSize = parseFloat(100 / 1920 * availWidth, 10).toFixed(2)
let root = document.documentElement || document.body
root.style.fontSize = fontSize + 'px'
return fontSize
},
2、返回当前url中想要获取的参数
GetQueryString: (name) => {
const param = window.location.href.split('?')[1] ? window.location.href.split('?')[1].split('#')[0] : ""
if (param) {
var reg = new RegExp('(^|&)' + name + '=([^&]*)(&|$)')
var r = param.match(reg)
if (r !== null) {
return unescape(r[2])
}
}
return null
},
3、格式化时间
/**
* @method TimeFormat()格式化时间
* @param {Date} time 需要格式化的时间 Date对象
* @param {String} format 需要格式化成的格式
*/
timeFormat: (time, format) => {
let [year, month, day, hour, minutes, seconds] = [
time.getFullYear(),
(time.getMonth() + 1) >= 10 ? (time.getMonth() + 1) : '0' + (time.getMonth() + 1),
time.getDate() >= 10 ? time.getDate() : '0' + time.getDate(),
time.getHours() >= 10 ? time.getHours() : '0' + time.getHours(),
time.getMinutes() >= 10 ? time.getMinutes() : '0' + time.getMinutes(),
time.getSeconds() >= 10 ? time.getSeconds() : '0' + time.getSeconds()
]
switch (format) {
case 'Y-M-D':
return `${year}-${month}-${day}`
case 'Y.M.D':
return `${year}.${month}.${day}`
case '年-月-日 H:M:S':
return `${parseInt(year, 10)}${temp.$t('Year')}${parseInt(month, 10)}${temp.$t('Month')}${parseInt(day, 10)}${temp.$t('day')} ${hour}:${minutes}:${seconds}`
case `年-月-日`:
return `${parseInt(year, 10)}${temp.$t('Year')}${parseInt(month, 10)}${temp.$t('Month')}${parseInt(day, 10)}${temp.$t('day')}`
case 'H:M:S':
return hour + ':' + minutes + ':' + seconds
default:
return `${year}-${month}-${day} ${hour}:${minutes}:${seconds}`
}
},
4、将鼠标相对屏幕的坐标,转化成canvas画布上的实际坐标
/**
* @method windowToCanvas() 将鼠标相对屏幕的坐标,转化成canvas画布上的实际坐标
* @param {Object} canvas 对象
* @param {Number} x 相对屏幕的横坐标
* @param {Number} y 相对屏幕的纵坐标
* @return {param} 返回实际坐标对象
*/
windowToCanvas: (canvas, x, y) => {
let rect = canvas.getBoundingClientRect()
return {
x: (x - rect.left) * (canvas.width / rect.width),
y: (y - rect.top) * (canvas.height / rect.height)
}
},
5、 base64图片转化成blob、file类型格式
/**
* @method toBlob() base64图片转化成blob、file类型格式
* @param {Object} base64Data base64数据
* @return
*/
toBlob(base64Data) {
let byteString = ''
if (base64Data.split(',')[0].indexOf('base64') >= 0)
byteString = atob(base64Data.split(',')[1])
else
byteString = unescape(base64Data.split(',')[1]);
let mimeString = base64Data.split(',')[0].split(':')[1].split(';')[0]
let ab = new ArrayBuffer(byteString.length)
let ia = new Uint8Array(ab)
for (var i = 0; i < byteString.length; i++) {
ia[i] = byteString.charCodeAt(i)
}
return new Blob([ia], {
type: mimeString
})
},
6、上传图片的格式转为base64
/**
* @method fileToDataURL() 上传图片的格式转为base64
* @param {file} imgFile 要转换的文件
*/
fileToDataURL(imgFile) {
// 选择的文件是图片
if (!imgFile || imgFile.type.indexOf('image') !== 0) {
return
}
return new Promise((resolve, reject) => {
// 压缩图片需要的一些元素和对象
var reader = new FileReader()
// 文件base64化,以便获知图片原始尺寸
reader.onload = function (e) {
resolve(e.target.result)
}
reader.onerror = function (e) {
reject(e)
}
// 选择的文件是图片
reader.readAsDataURL(imgFile)
})
},
7、计算base64图片大小
countBaseSize(base64url) {
//获取base64图片大小,返回MB数字
let str = base64url.replace('data:image/png;base64,', '')
let equalIndex = str.indexOf('=')
if (str.indexOf('=') > 0) {
str = str.substring(0, equalIndex);
}
let strLength = str.length
let fileLength = parseInt(strLength - (strLength / 8) * 2, 10)
// 由字节转换为MB
let size = ""
size = (fileLength / (1024 * 1024)).toFixed(2)
return size
},
8、普通图片转化成base64
getImageBase64(img, ext) {
let canvas = document.createElement("canvas")
canvas.width = img.width
canvas.height = img.height
let ctx = canvas.getContext("2d")
ctx.drawImage(img, 0, 0, img.width, img.height)
let dataURL = canvas.toDataURL("image/" + ext)
canvas = null
return dataURL
},
9、对于小于0的进行补零操作
addZero: (time) => {
let newTime = time > 9 ? time : '0' + time
return newTime
},
10、将秒转成时分秒
/**
* @method toStringBySecond 将秒转成时分秒
* @param {String} second 要转换的秒
* @param {String} typeStr = 'h:m:s' || '' ? 'h:m:s' : '时:分:秒'
*/
toStringBySecond(second, typeStr = 'h:m:s') {
const sec = second < 60 ? this.addZero(second) : this.addZero(second % 60)
const min = second < 60 ? '00' : second < 3600 ? this.addZero(parseInt(second / 60, 10)) : this.addZero(parseInt(second % 3600 / 60, 10))
const hour = this.addZero(parseInt(second / 3600, 10))
return typeStr === 'h:m:s' ? `${hour}:${min}:${sec}` : `${hour}${temp.$t('hour')}${min}${temp.$t('min')}${sec}${temp.$t('sec')}`
},
11、将秒转成分秒
/**
* @method toStringBySecond 将秒转成分秒
* @param {String} second 要转换的秒
* @param {String} typeStr = 'm:s' || '' ? 'm:s' : '分:秒'
*/
toStringBySeconds(second, typeStr = 'm:s') {
if (second === 0 || second === '') {
return ''
}
const sec = second < 60 ? this.addZero(second) : this.addZero(second % 60)
const min = second < 60 ? '00' : second < 3600 ? this.addZero(parseInt(second / 60, 10)) : this.addZero(parseInt(second % 3600 / 60, 10))
return typeStr === 'm:s' ? `${min}:${sec}` : `${min}${temp.$t('min')}${sec}${temp.$t('sec')}`
},
12、数组对象去重
/**
* @method arrHeavy() 数组对象去重
* @param sourceArr 原数组
* @param keyArray 所要以什么字段为参考的数组
*/
arrHeavy: (sourceArr, keyArray) => {
let obj = {}
let arr = []
sourceArr.forEach((d) => {
let str = ''
keyArray.forEach((key) => {
str += d[key] || d[key] === 0 ? d[key] + '$' : ''
})
if (!obj[str]) {
arr.push(d)
obj[str] = 1
}
})
return arr
},
//使用
13、从数组对象中获取某个属性,组成新的数组
/**
* @method getCodeFromArr() 从数组对象中获取某个属性,组成新的数组
* @param {Array} sourceArr 数组对象
* @param {Array} attr 希望从arr中获取的属性
*/
getCodeFromArr: (sourceArr, attr) => {
let arr = []
sourceArr.forEach((item) => {
let param = {}
attr.forEach((key) => {
param[key] = item[key]
})
arr.push(param)
})
return arr
},
//使用
14、guid() 生成uuid
/**
* @method guid() 生成uuid
*/
guid: () => {
function s4() {
return (((1 + Math.random()) * 0x10000) | 0).toString(16).substring(1)
}
return (s4() + s4() + "-" + s4() + "-" + s4() + "-" + s4() + "-" + s4() + s4() + s4())
},
15、getUTCTime()
getUTCTime: () => {
var currentTime = new Date()
return currentTime.getTime() + currentTime.getTimezoneOffset() * 60000
},