工具类

import FileSaver from ‘file-saver’
import moment from ‘moment’
// 字节单位转换
const getfilesize = (size) => {
if (!size) { return ‘’ }
var num = 1024.00 // byte
if (size < num) { return size + ‘B’ }
if (size < Math.pow(num, 2)) { return (size / num).toFixed(2) + ‘KB’ } // kb
if (size < Math.pow(num, 3)) { return (size / Math.pow(num, 2)).toFixed(2) + ‘MB’ } // M
if (size < Math.pow(num, 4)) { return (size / Math.pow(num, 3)).toFixed(2) + ‘GB’ } // G
return (size / Math.pow(num, 4)).toFixed(2) + ‘TB’ // T
}

// Math.pow(x,y) //返回 x 的 y 次幂的值
// NumberObject.toFixed(num) //可把 Number 四舍五入为指定小数位数的数字

// 时间戳转时间
const getdate = (val, type) => {
// let date = new Date(val)
// let Y = date.getFullYear()
// let M = (date.getMonth() + 1 < 10 ? ‘0’ + (date.getMonth() + 1) : date.getMonth() + 1)
// let D = (date.getDate() + 1 < 10 ? ‘0’ + date.getDate() : date.getDate())
// let h = (date.getHours() + 1 < 10 ? ‘0’ + date.getHours() : date.getHours())
// let m = (date.getMinutes() + 1 < 10 ? ‘0’ + date.getMinutes() : date.getMinutes())
// let s = (date.getSeconds() + 1 < 10 ? ‘0’ + date.getSeconds() : date.getSeconds())
// return Y + ‘-’ + M + ‘-’ + D + ’ ’ + h + ‘:’ + m + ‘:’ + s
if (!val) return ‘’
// 兼容ie
return moment(val).format(‘YYYY-MM-DD HH:mm:ss’)
}
// 秒转时分秒
const formatSeconds = (value) => {
// var secondTime = parseInt(value)// 秒
var secondTime = value // 秒
var minuteTime = 0// 分
var hourTime = 0// 小时
if (secondTime > 60) { // 如果秒数大于60,将秒数转换成整数
// 获取分钟,除以60取整数,得到整数分钟
minuteTime = parseInt(secondTime / 60)
// 获取秒数,秒数取佘,得到整数秒数
// secondTime = parseInt(secondTime % 60)
secondTime = secondTime % 60
// 如果分钟大于60,将分钟转换成小时
if (minuteTime > 60) {
// 获取小时,获取分钟除以60,得到整数小时
hourTime = parseInt(minuteTime / 60)
// 获取小时后取佘的分,获取分钟除以60取佘的分
minuteTime = parseInt(minuteTime % 60)
}
}
var result = ‘’ + secondTime + ‘秒’
let result2 = ‘’ + parseInt(secondTime) + ‘秒’
if (minuteTime > 0) {
result = ‘’ + parseInt(minuteTime) + ‘分’ + result2
}
if (hourTime > 0) {
result = ‘’ + parseInt(hourTime) + ‘小时’ + result2
}
return result
}
// 转树形结构
const getTree = (rsdata) => {
const getChilds = (menuPid) => {
const childArr = []
rsdata.forEach((item) => {
if (item.menuPid === menuPid) {
childArr.push(item)
item.children = getChilds(item.id)
}
})
if (childArr.length === 0) return null
return childArr
}
return getChilds(0)
}

// 数组和对象去掉无效值
const removeEmptyField = obj => {
let newObj = {}
if (Array.prototype.isPrototypeOf(obj)) {
// 去掉数组中元素为数字0、false、null、undefined、NaN、’‘的情况,不排除元素’0’,’ ’
newObj = []
obj.forEach(item => {
if (item) {
newObj.push(item)
}
})
} else if (obj instanceof Object) {
// 去掉对象中值为’’、null、undefined的情况,不排除值为’0’,’ ‘, NaN, false
for (var attr in obj) {
if (obj.hasOwnProperty(attr) && obj[attr] !== ‘’ && obj[attr] !== null && obj[attr] !== undefined) {
if (obj[attr] instanceof Object) {
newObj[attr] = removeEmptyField(obj[attr])
} else if (typeof obj[attr] === ‘string’ && ((obj[attr].indexOf(’{’) > -1 && obj[attr].indexOf(’}’) > -1) || (obj[attr].indexOf(’[’) > -1 && obj[attr].indexOf(’]’) > -1))) {
try {
var attrObj = JSON.parse(obj[attr])
if (attrObj instanceof Object) {
newObj[attr] = removeEmptyField(attrObj)
}
} catch (e) {
newObj[attr] = obj[attr]
}
} else {
newObj[attr] = obj[attr]
}
}
}
}
return newObj
}
// 数组去重 [1, 1, 2, 2, 2, 3] ===> [1,2,3]
const unique = (arr) => {
var x = new Set(arr)
return […x]
}
/**

  • 文件下载,minxin方式
    */
    const downloadFile = {
    methods: {
    downloadGet (url) {
    const self = this
    const el = document.getElementById(‘fileIframe’)
    if (el) {
    document.body.removeChild(el)
    }
    const iframe = document.createElement(‘iframe’)
    iframe.style.display = ‘none’
    iframe.src = url
    iframe.setAttribute(‘id’, ‘down-file-iframe’)
    iframe.onload = function () {
    const ele = iframe.contentWindow.document.body
    if (ele) {
    try {
    const data = JSON.parse(ele.innerText)
    if (data && data.code) {
    self.KaTeX parse error: Expected 'EOF', got '}' at position 55: …存在!') }̲ } catch…message.error(‘您要下载的文件不存在!’)
    }
    }
    document.body.removeChild(iframe)
    }
    document.body.appendChild(iframe)
    },
    downloadPost (fileName, content) {
    // 处理下载错误
    if (content.type === ‘application/json’) {
    const fr = new FileReader()
    fr.readAsText(content)
    fr.addEventListener(‘loadend’, () => {
    try {
    const errRes = JSON.parse(fr.result)
    if (errRes && errRes.message) {
    this.KaTeX parse error: Expected 'EOF', got '}' at position 117: … }) }̲ } catch…messageBig({
    message: ‘下载文件失败!!!’,
    type: ‘error’
    })
    }
    })
    return
    }

    // 下载文件
    if (‘msSaveBlob’ in navigator) { // 对IE和Edge的兼容
    window.navigator.msSaveBlob(content, fileName)
    } else {
    // eslint-disable-next-line standard/object-curly-even-spacing
    const blob = new Blob([content], { type: ‘text/plain;charset=utf-8’ })
    FileSaver.saveAs(blob, fileName)
    }
    },
    downloadByLink (url, fileName) {
    const a = document.createElement(‘a’)
    a.style = ‘display: none’
    a.href = url
    if (fileName) {
    a.download = fileName
    }
    document.body.appendChild(a)
    a.click()
    setTimeout(() => {
    document.body.removeChild(a)
    }, 5)
    },
    downloadByForm (url = ‘’, method = ‘get’, params = null) {
    const $body = document.getElementsByTagName(‘body’)[0]
    const form = document.createElement(‘form’)
    form.action = url
    form.method = method
    Object.keys(params).forEach((key) => {
    const input = document.createElement(‘input’)
    input.type = ‘hidden’
    input.name = key
    input.value = params[key]
    form.appendChild(input)
    })
    $body.appendChild(form)
    form.submit()
    }
    }
    }

const isIE = () => {
// const navigatorName = ‘Microsoft Internet Explorer’
let flag = false
if (!!window.ActiveXObject || ‘ActiveXObject’ in window) {
flag = true
}
return flag
}

/**

  • 判断浏览器是否支持某一个CSS3属性
  • @param {String} 属性名称
  • @return {Boolean} true/false
    */

function supportCss3 (style) {
var prefix = [‘webkit’, ‘Moz’, ‘ms’, ‘o’]
var i
var humpString = []
var htmlStyle = document.documentElement.style
var _toHumb = function (string) {
return string.replace(/-(\w)/g, function ($0, $1) {
return $1.toUpperCase()
})
}

for (i in prefix) { humpString.push(_toHumb(prefix[i] + ‘-’ + style)) }

humpString.push(_toHumb(style))

for (i in humpString) { if (humpString[i] in htmlStyle) return true }

return false
}

// 判断是否小于ie10
const isLessThanIE10 = () => {
let flag = false
// const d = document.documentElement.style
// if ((‘flexWrap’ in d) || (‘WebkitFlexWrap’ in d) || (‘msFlexWrap’ in d)) {
// flag = false
// }
flag = supportCss3(‘flex’)
return !flag
}

// 判断接口请求数据是否成功
const judgeCode = (data, successFn, returnDefault = [], errorFn, defaultCode = 0) => {
if (!data) {
if (errorFn) {
errorFn()
}
console.warn(‘数据接口异常’, data)
return returnDefault
}
if (data.code === defaultCode) {
return successFn ? successFn(data) : data
} else {
console.warn(‘数据接口异常’, data)
if (errorFn) {
errorFn(data.message)
}
}
return returnDefault
}

/**

  • @desc 防止小数点越位
  • @params num: 需要修正的小数
  • @params len: 需要保留位数最大值为12
  • @return 返回字符串类型的小数
    */

const fixLen = (num, len) => {
let newLen = len ? len > 12 ? 12 : len : 2
let numArr = num.toString().split(’.’)
if (newLen > 0) {
let sencondPart = numArr[1] ? numArr[1].split(’’).slice(0, newLen) : [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0].slice(0, newLen)
return numArr[0] + ‘.’ + sencondPart.join(’’)
} else {
return numArr[0]
}
}

export {
getdate, formatSeconds, getTree, removeEmptyField, unique, downloadFile, isIE, isLessThanIE10, getfilesize, judgeCode, fixLen
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值