Bar.vue 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. <script setup lang="ts">
  2. import { ref, computed, watch, type Ref } from "vue";
  3. import { useAppStoreHook } from "@/store/modules/app";
  4. import {
  5. delay,
  6. useDark,
  7. useECharts,
  8. type EchartOptions
  9. } from "@pureadmin/utils";
  10. const { isDark } = useDark();
  11. const theme: EchartOptions["theme"] = computed(() => {
  12. return isDark.value ? "dark" : "light";
  13. });
  14. const barChartRef = ref<HTMLDivElement | null>(null);
  15. const { setOptions, resize } = useECharts(barChartRef as Ref<HTMLDivElement>, {
  16. theme
  17. });
  18. setOptions(
  19. {
  20. tooltip: {
  21. trigger: "axis",
  22. axisPointer: {
  23. type: "shadow"
  24. }
  25. },
  26. grid: {
  27. containLabel: true,
  28. top: "10px",
  29. bottom: "0",
  30. left: "0",
  31. right: "0"
  32. },
  33. xAxis: [
  34. {
  35. type: "category",
  36. axisTick: {
  37. alignWithLabel: true
  38. },
  39. axisLabel: {
  40. interval: 0
  41. // width: "70",
  42. // overflow: "truncate"
  43. },
  44. data: ["open_issues", "forks", "watchers", "star"],
  45. triggerEvent: true
  46. }
  47. ],
  48. yAxis: [
  49. {
  50. type: "value",
  51. triggerEvent: true
  52. }
  53. ],
  54. series: [
  55. {
  56. name: "GitHub信息",
  57. type: "bar",
  58. data: [1000, 10000, 20000, 66666]
  59. }
  60. ],
  61. addTooltip: true
  62. },
  63. {
  64. name: "click",
  65. callback: params => {
  66. console.log("click", params);
  67. }
  68. }
  69. );
  70. watch(
  71. () => useAppStoreHook().getSidebarStatus,
  72. () => {
  73. delay(600).then(() => resize());
  74. }
  75. );
  76. </script>
  77. <template>
  78. <div ref="barChartRef" style="width: 100%; height: 35vh" />
  79. </template>