打印,导出,下载后台传输文件,防抖节流,金额强制两位小数,获取url参数

打印

   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
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值