columns.tsx 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. import { ref } from "vue";
  2. import { utils, writeFile } from "xlsx";
  3. import { tableDataDrag } from "../data";
  4. import { clone } from "@pureadmin/utils";
  5. import { message } from "@/utils/message";
  6. export function useColumns() {
  7. const dataList = ref(clone(tableDataDrag, true));
  8. const columns: TableColumnList = [
  9. {
  10. label: "ID",
  11. prop: "id"
  12. },
  13. {
  14. label: "日期",
  15. prop: "date"
  16. },
  17. {
  18. label: "姓名",
  19. prop: "name"
  20. }
  21. ];
  22. const exportExcel = () => {
  23. const res = dataList.value.map(item => {
  24. const arr = [];
  25. columns.forEach(column => {
  26. arr.push(item[column.prop as string]);
  27. });
  28. return arr;
  29. });
  30. const titleList = [];
  31. columns.forEach(column => {
  32. titleList.push(column.label);
  33. });
  34. res.unshift(titleList);
  35. const workSheet = utils.aoa_to_sheet(res);
  36. const workBook = utils.book_new();
  37. utils.book_append_sheet(workBook, workSheet, "数据报表");
  38. writeFile(workBook, "pure-admin-table.xlsx");
  39. message("导出成功", {
  40. type: "success"
  41. });
  42. };
  43. return {
  44. columns,
  45. dataList,
  46. exportExcel
  47. };
  48. }