打印
var printHTML = document.getElementById('print').innerHTML;// 获取要打印的内容
printHTML += "<style> .el-table{display:block} .cell{text-align:center;width:120px} .el-table__body-wrapper{border-bottom:1px solid #000;border-left:1px solid #000} .el-table__header-wrapper{border-left:1px solid #000} td,th{width:120px;border:1px solid #000;border-bottom:none;border-left:none}</style>";
var page = window.open('', '_blank');// 打开一个新窗口,用于打印
page.document.write(printHTML);// 写入打印页面的内容
page.print();// 打印
var userAgent = navigator.userAgent;
if ((userAgent.indexOf('compatible') > -1 && userAgent.indexOf('MSIE') > -1) || (userAgent.indexOf("Edge") > -1) || (userAgent.indexOf('Trident') > -1 && userAgent.indexOf("rv:11.0") > -1)) {
// IE浏览器
page.document.execCommand('print');
} else {
console.log('not IE');
}
page.close();// 关闭打印窗口
// this.$print(this.$refs.print)
导出:
if(this.tableDatas.length>0){
/* generate workbook object from table */
var wb = XLSX.utils.table_to_book(document.querySelector('#out-table'))
/* get binary string as output */
var wbout = XLSX.write(wb, { bookType: 'xlsx', bookSST: true, type: 'array' })
try {
FileSaver.saveAs(new Blob([wbout], { type: 'application/octet-stream' }), '合同.xlsx')
} catch (e) { if (typeof console !== 'undefined') console.log(e, wbout) }
return wbout
}else{
this.$message('没有数据可供导出')
}
下载:
1,a标签 href 链接下载地址 点击a标签触发
2,window.location.href = urls; // 本窗口打开下载
window.open(urls, ‘_blank’); // 新开窗口下载
3 请求到的是个流,,转成blob,创建个a点击触发
axios.post(’/Api/xxxxxxx/downloadFile’,{
filePath:item.file_path
}, {responseType: ‘blob’}).then(res=>{
let aTag = document.createElement(‘a’);
let blob = new Blob([res.data]); // 这个content是下载的文件内容,自己修改 {responseType: ‘blob’}
aTag.download = item.file_name; // 下载的文件名
aTag.href = URL.createObjectURL(blob);
aTag.click();
URL.revokeObjectURL(blob);
}).catch(err=>{
this.$message.error(‘下载异常,请稍后再试’)
})
4 标签的download指示浏览器下载而不是打开一个url
this.content = content
this.filename = filename
const blob = new Blob([this.content])
if (window.navigator.msSaveOrOpenBlob) {
// 兼容IE10
navigator.msSaveBlob(blob, this.filename)
} else {
// chrome/firefox
let aTag = document.createElement(‘a’)
aTag.download = this.filename
aTag.href = URL.createObjectURL(blob)
aTag.click()
URL.revokeObjectURL(aTag.href)
}
防抖:
export function debounce(fn, delay) {
var delay = delay || 200;
var timer;
return function () {
var th = this;
var args = arguments;
if (timer) {
clearTimeout(timer);
}
timer = setTimeout(function () {
timer = null;
fn.apply(th, args);
}, delay);
};
}
使用:getinfo:debounce(fn,delay)
节流:
export function throttle(fn, interval) {
var last;
var timer;
var interval = interval || 200;
return function () {
var th = this;
var args = arguments;
var now = +new Date();
if (last && now - last < interval) {
clearTimeout(timer);
timer = setTimeout(function () {
last = now;
fn.apply(th, args);
}, interval);
} else {
last = now;
fn.apply(th, args);
}
}
}
使用:getinfo:throttle(fn,delay)
强制千分位 保留两位小数:
export const getThousands = (number) => {
var f = parseFloat(number) // 转为小数
if (isNaN(f)) return '0.00' // 非数字返回
var fstr=false
if(f<0){
fstr=true
f=f*(-1)
}
// var ff = Math.round(number * 100) / 100 // 四舍五入
var ff = Math.round(f * 100) / 100 // 四舍五入
var s = ff.toString()
var rs = s.indexOf('.')
if (rs < 0) {
rs = s.length
s += '.'
}
while (s.length < (rs + 1) + 2) {
s += '0'
}
// 每三位用一个逗号隔开
var leftNum = s.split('.')[0]
var rightNum = '.' + s.split('.')[1]
var result
// 定义数组记录截取后的价格
var resultArray = new Array()
if (leftNum.length > 3) {
var i = true
while (i) {
resultArray.push(leftNum.slice(-3))
leftNum = leftNum.slice(0, leftNum.length - 3)
if (leftNum.length < 4) {
i = false
}
}
// 由于从后向前截取,所以从最后一个开始遍历并存到一个新的数组,顺序调换
var sortArray = new Array()
for (var index = resultArray.length - 1; index >= 0; index--) {
sortArray.push(resultArray[index])
}
result = leftNum + ',' + sortArray.join(',') + rightNum
} else {
result = s
}
if(fstr){
result=`-${result}`
}
return result
}
路由参数
export const getParam = (paraName) => {
var url = document.location.toString()
var arrObj = url.split('?')
if (arrObj.length > 1) {
var arrPara = arrObj[1].split('&')
var arr
for (var i = 0; i < arrPara.length; i++) {
arr = arrPara[i].split('=')
if (arr != null && arr[0] == paraName) {
return arr[1]
}
}
return ''
} else {
return ''
}
}
实时控制金额输入框的处理
该方法在change是使用或者watch;失去焦点时候最后一位是小数点的话需要绑定一个blur的方法把最后一个是小数点的小数点截掉
export const getNumber = (val, oldval, l) => {
// val 新值 oldval 旧值 l 要控制的金额小数点长度
var reg2 = /^\d+(\.\d{0,2})?$/
let mum = val
let nmb = l + 1
if (!reg2.test(val)) {
mum = parseFloat(val)
}
if (val[0] === '0' && val[1] !== '.' && val.toString().length > 1) {
mum = val.replace(/^0+/, '')
}
if (val[0] === '0' && val[1] === '0' && val.toString().length > 1) {
mum = 0
}
let i = val.toString().indexOf('.')
if (val.toString().indexOf('.') > 0 && val.toString().length > (val.toString().indexOf('.') + 2)) {
mum = val.toString().substring(0, i + nmb)
}
if (isNaN(val)) {
mum = oldval
}
if (val === '' || val == null) {
mum = ''
}
return mum
}