columns.tsx 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. import { tableData } from "../data";
  2. import { clone, delay } from "@pureadmin/utils";
  3. import { ref, onMounted, reactive, watchEffect } from "vue";
  4. import type { PaginationProps, LoadingConfig, Align } from "@pureadmin/table";
  5. export function useColumns() {
  6. const dataList = ref([]);
  7. const loading = ref(true);
  8. const paginationAlign = ref("right");
  9. const columns: TableColumnList = [
  10. {
  11. label: "日期",
  12. prop: "date"
  13. },
  14. {
  15. label: "姓名",
  16. prop: "name"
  17. },
  18. {
  19. label: "地址",
  20. prop: "address"
  21. }
  22. ];
  23. /** 分页配置 */
  24. const pagination = reactive<PaginationProps>({
  25. pageSize: 10,
  26. currentPage: 1,
  27. pageSizes: [10, 15, 20],
  28. total: 0,
  29. align: "right",
  30. background: true
  31. });
  32. /** 加载动画配置 */
  33. const loadingConfig = reactive<LoadingConfig>({
  34. text: "正在加载第一页...",
  35. viewBox: "-10, -10, 50, 50",
  36. spinner: `
  37. <path class="path" d="
  38. M 30 15
  39. L 28 17
  40. M 25.61 25.61
  41. A 15 15, 0, 0, 1, 15 30
  42. A 15 15, 0, 1, 1, 27.99 7.5
  43. L 15 15
  44. " style="stroke-width: 4px; fill: rgba(0, 0, 0, 0)"/>
  45. `
  46. // svg: "",
  47. // background: rgba()
  48. });
  49. function onSizeChange(val) {
  50. console.log("onSizeChange", val);
  51. }
  52. function onCurrentChange(val) {
  53. loadingConfig.text = `正在加载第${val}页...`;
  54. loading.value = true;
  55. delay(600).then(() => {
  56. loading.value = false;
  57. });
  58. }
  59. watchEffect(() => {
  60. pagination.align = paginationAlign.value as Align;
  61. });
  62. onMounted(() => {
  63. delay(600).then(() => {
  64. const newList = [];
  65. Array.from({ length: 6 }).forEach(() => {
  66. newList.push(clone(tableData, true));
  67. });
  68. dataList.value = newList.flat(Infinity);
  69. pagination.total = dataList.value.length;
  70. loading.value = false;
  71. });
  72. });
  73. return {
  74. loading,
  75. columns,
  76. dataList,
  77. pagination,
  78. loadingConfig,
  79. paginationAlign,
  80. onSizeChange,
  81. onCurrentChange
  82. };
  83. }