columns.tsx 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. import { ref, computed } from "vue";
  2. import { tableDataDrag } from "../data";
  3. import { message } from "@/utils/message";
  4. import { templateRef } from "@vueuse/core";
  5. import { clone, useDark, useECharts } from "@pureadmin/utils";
  6. export function useColumns() {
  7. const dataList = ref(clone(tableDataDrag, true).splice(0, 4));
  8. const columns: TableColumnList = [
  9. {
  10. label: "ID",
  11. prop: "id"
  12. },
  13. {
  14. label: "姓名",
  15. prop: "name"
  16. },
  17. {
  18. label: "日期",
  19. prop: "date"
  20. },
  21. {
  22. label: "echarts图表",
  23. slot: "echart"
  24. }
  25. ];
  26. const { isDark } = useDark();
  27. const theme = computed(() => (isDark.value ? "dark" : "light"));
  28. dataList.value.forEach((_, i) => {
  29. const { setOptions } = useECharts(templateRef(`PieChartRef${i}`), {
  30. theme
  31. });
  32. setOptions(
  33. {
  34. tooltip: {
  35. trigger: "item",
  36. // 将 tooltip 控制在图表区域里
  37. confine: true
  38. },
  39. series: [
  40. {
  41. name: "Github信息",
  42. type: "pie",
  43. // center: ["30%", "50%"],
  44. data: [
  45. { value: 1067, name: "watchers" },
  46. { value: 4037, name: "star" },
  47. { value: 859, name: "forks" }
  48. ],
  49. emphasis: {
  50. itemStyle: {
  51. shadowBlur: 10,
  52. shadowOffsetX: 0,
  53. shadowColor: "rgba(0, 0, 0, 0.5)"
  54. }
  55. }
  56. }
  57. ]
  58. },
  59. {
  60. name: "click",
  61. callback: ({ data: { name, value } }) => {
  62. message(
  63. `您点击了第 ${i + 1} 行,图表标题为${name},图表数据为:${value}`,
  64. {
  65. type: "success"
  66. }
  67. );
  68. }
  69. }
  70. );
  71. });
  72. return {
  73. columns,
  74. dataList
  75. };
  76. }