123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566 |
- import axios from "axios";
- import XLSX from "xlsx";
- import { startLoading, endLoading } from "./loading";
- import { ElMessage } from "element-plus";
- import { useProgressBarStore } from "@/pinia/progress-bar-store";
- import env from "@/utils/setting";
- const apiUrl = env.VITE_BASE_URL;
- export function writeExcelFile(workSheet, fileName) {
- const workBook = XLSX.utils.book_new();
- XLSX.utils.book_append_sheet(workBook, workSheet, "sheet1");
- XLSX.writeFile(workBook, fileName);
- endLoading();
- }
- export function createWorkSheet(data, fields, titles) {
- const workSheet = XLSX.utils.json_to_sheet(data, { header: fields });
- const range = XLSX.utils.decode_range(workSheet["!ref"]);
- for (let c = range.s.c; c <= range.e.c; c++) {
- const header = XLSX.utils.encode_col(c) + "1";
- workSheet[header].v = titles[workSheet[header].v];
- }
- return workSheet;
- }
- const progressBarStore = useProgressBarStore();
- export function downloadExcel(data) {
- if (data.jdt) {
- progressBarStore.initialize({
- title: "正在导出 Excel",
- isOpen: true,
- closeButton: false,
- });
- } else {
- startLoading();
- }
- axios({
- method: data.method || "post",
- url: apiUrl + data.url,
- data: data.param,
- responseType: "blob",
- headers: {
- token: localStorage.token,
- },
- })
- .then(res => {
- const link = document.createElement("a");
- let blob = new Blob([res.data], { type: "application/vnd.ms-excel" });
- link.style.display = "none";
- link.href = URL.createObjectURL(blob);
- link.download = data.fileName; //下载的文件名
- document.body.appendChild(link);
- link.click();
- document.body.removeChild(link);
- endLoading();
- progressBarStore.closeProgressBar();
- })
- .catch(error => {
- ElMessage.error("网络连接错误", "错误");
- console.error(error);
- endLoading();
- progressBarStore.closeProgressBar();
- });
- }
|