后端返回二进制文件流 前端导出

新建文件夹    '@/utils/formUtil'

export function addDate(date, days) {
    var d = new Date(date);
    d.setDate(d.getDate() + days);
    var month = d.getMonth() + 1;
    var day = d.getDate();
    if (month < 10) {
        month = "0" + month;
    }
    if (day < 10) {
        day = "0" + day;
    }
    var val = d.getFullYear() + "-" + month + "-" + day;
    return val;
}
export function formatEndDate(date) {
    return (
        new Date(date).getFullYear() +
        "-" +
        ("0" + (new Date(date).getMonth() + 1)).slice(-2) +
        "-" +
        ("0" + new Date(date).getDate()).slice(-2) +
        " " +
        ("0" + new Date(date).getHours()).slice(-2) +
        ":" +
        ("0" + new Date(date).getMinutes()).slice(-2) +
        ":" +
        ("0" + new Date(date).getSeconds()).slice(-2)
    );
}
export function formatEndDateYYYYMMDD(date) {
    return (
        new Date(date).getFullYear() +
        "-" +
        ("0" + (new Date(date).getMonth() + 1)).slice(-2) +
        "-" +
        ("0" + new Date(date).getDate()).slice(-2) +
        " " +
        ("00:00:00")
    );
}
export function mutilTextConvertArray(text) {
    let _array = [];
    if (!text) {
        return _array;
    }
    let _textArray = text.split(/[\n]+/);
    for (let i = 0; i < _textArray.length; i++) {
        let item = null;
        if (_textArray[i] && (item = _textArray[i].trim())) {
            _array.push(item);
        }
    }
    return _array;
}
export function elementUiGettingStartDate(dateRange) {
    if (dateRange && dateRange.length == 2) {
        let _date = dateRange[0];
        _date.setUTCHours(0);
        _date.setUTCMinutes(0);
        _date.setUTCSeconds(0);
        _date.setUTCMilliseconds(0);
        return _date;
    }
}
export function elementUiGettingStartDateAndTime(dateRange) {
    if (dateRange && dateRange.length == 2) {
        return dateRange[0];
    }
}
export function elementUiGettingEndDate(dateRange) {
    if (dateRange && dateRange.length == 2) {
        let _date = dateRange[1];
        _date.setUTCHours(23);
        _date.setUTCMinutes(59);
        _date.setUTCSeconds(59);
        _date.setUTCMilliseconds(999);
        return _date;
    }
}
export function elementUiGettingEndDateAndTime(dateRange) {
    if (dateRange && dateRange.length == 2) {
        return dateRange[1];
    }
}

export var pickerOptions = {
    shortcuts: [
        {
            text: "今天",
            onClick(picker) {
                const end = new Date();
                const start = new Date();
                picker.$emit("pick", [start, end]);
            }
        },
        {
            text: "最近一周",
            onClick(picker) {
                const end = new Date();
                const start = new Date();
                start.setTime(start.getTime() - 3600 * 1000 * 24 * 7);
                picker.$emit("pick", [start, end]);
            }
        },
        {
            text: "月初至今",
            onClick(picker) {
                const end = new Date();
                const start = new Date();
                start.setDate(1);
                picker.$emit("pick", [start, end]);
            }
        },
        {
            text: "上月",
            onClick(picker) {
                const now = new Date();
                let _year = now.getUTCFullYear();
                let _month = now.getUTCMonth() + 1;

                let _startYear = _month == 1 ? _year - 1 : _year;
                let _startMonth = _month == 1 ? 12 : _month - 1;
                let _startDay = 1;
                let _endDay = 31;
                switch (_startMonth) {
                    case 1:
                    case 3:
                    case 5:
                    case 7:
                    case 8:
                    case 10:
                    case 12:
                        break;
                    case 2: {
                        _endDay = _year % 4 == 0 ? 29 : 28;
                    } break;
                    default: { _endDay = 30 }
                }
                const start = new Date();
                start.setUTCFullYear(_startYear);
                start.setUTCMonth(_startMonth - 1);
                start.setUTCDate(_startDay)
                const end = new Date();
                end.setUTCFullYear(_startYear);
                end.setUTCMonth(_startMonth - 1);
                end.setUTCDate(_endDay)
                picker.$emit("pick", [start, end]);
            }
        },
        {
            text: "上月至今",
            onClick(picker) {
                const now = new Date();
                let _year = now.getUTCFullYear();
                let _month = now.getUTCMonth() + 1;

                let _startYear = _month == 1 ? _year - 1 : _year;
                let _startMonth = _month == 1 ? 12 : _month - 1;
                let _startDay = 1;
                let _endDay = 31;
                switch (_startMonth) {
                    case 1:
                    case 3:
                    case 5:
                    case 7:
                    case 8:
                    case 10:
                    case 12:
                        break;
                    case 2: {
                        _endDay = _year % 4 == 0 ? 29 : 28;
                    } break;
                    default: { _endDay = 30 }
                }
                const start = new Date();
                start.setUTCFullYear(_startYear);
                start.setUTCMonth(_startMonth - 1);
                start.setUTCDate(_startDay)
                const end = new Date();
                picker.$emit("pick", [start, end]);
            }
        },
        {
            text: "最近一个月",
            onClick(picker) {
                const end = new Date();
                const start = new Date();
                start.setTime(start.getTime() - 3600 * 1000 * 24 * 30);
                picker.$emit("pick", [start, end]);
            }
        },
        {
            text: "最近三个月",
            onClick(picker) {
                const end = new Date();
                const start = new Date();
                start.setTime(start.getTime() - 3600 * 1000 * 24 * 90);
                picker.$emit("pick", [start, end]);
            }
        }
    ]
}

// base64转字节数组
export function base64ToUint8Array(base64String) {
  const padding = '='.repeat((4 - base64String.length % 4) % 4)
  const base64 = (base64String + padding).replace(/\-/g, '+').replace(/_/g, '/')
  const rawData = window.atob(base64)
  const outputArray = new Uint8Array(rawData.length)
  for (let i = 0; i < rawData.length; ++i) {
      outputArray[i] = rawData.charCodeAt(i)
  }
  return outputArray
}

export function dateFormat(date, fmt) {
  var o = {
    "M+": date.getMonth() + 1, //月份
    "d+": date.getDate(), //日
    "h+": date.getHours() % 12 == 0 ? 12 : date.getHours() % 12, //小时
    "H+": date.getHours(), //小时
    "m+": date.getMinutes(), //分
    "s+": date.getSeconds(), //秒
    "q+": Math.floor((date.getMonth() + 3) / 3), //季度
    S: date.getMilliseconds() //毫秒
  };
  var week = {
    "0": "/u65e5",
    "1": "/u4e00",
    "2": "/u4e8c",
    "3": "/u4e09",
    "4": "/u56db",
    "5": "/u4e94",
    "6": "/u516d"
  };
  if (/(y+)/.test(fmt)) {
    fmt = fmt.replace(
      RegExp.$1,
      (date.getFullYear() + "").substr(4 - RegExp.$1.length)
    );
  }
  if (/(E+)/.test(fmt)) {
    fmt = fmt.replace(
      RegExp.$1,
      (RegExp.$1.length > 1
        ? RegExp.$1.length > 2
          ? "/u661f/u671f"
          : "/u5468"
        : "") + week[date.getDay() + ""]
    );
  }
  for (var 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;
}

使用   



import { pickerOptions, base64ToUint8Array, dateFormat } from '@/utils/formUtil'

import { tmsOrderExportInvoice } from '@/api/orderManagement'

<el-dropdown-item type="text" @click.native="exportData(row)"> 导出发票 </el-dropdown-item>


    // 导出发票
    exportData (row) {
      tmsOrderExportInvoice(row.orderId).then((res) => {
        if (res.success) {
          const link = document.createElement('a')
          let array = base64ToUint8Array(res.data)
          let blob = new Blob([array])
          link.style.display = 'none'
          link.href = URL.createObjectURL(blob)
          link.setAttribute('download', `发票${row.orderNumber}.xlsx`)
          document.body.appendChild(link)
          link.click()
          document.body.removeChild(link)
        } else {
          this.$message.error('下载失败:' + res.data.message)
        }
      })
    }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值