新建文件夹 '@/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)
}
})
}