|
@@ -0,0 +1,91 @@
|
|
|
+import {
|
|
|
+ clone,
|
|
|
+ useDark,
|
|
|
+ useECharts,
|
|
|
+ type EchartOptions
|
|
|
+} from "@pureadmin/utils";
|
|
|
+import { tableDataDrag } from "../data";
|
|
|
+import { templateRef } from "@vueuse/core";
|
|
|
+import { ref, type Ref, computed } from "vue";
|
|
|
+import { message } from "@pureadmin/components";
|
|
|
+
|
|
|
+export function useColumns() {
|
|
|
+ const dataList = ref(clone(tableDataDrag, true).splice(0, 4));
|
|
|
+
|
|
|
+ const columns: TableColumnList = [
|
|
|
+ {
|
|
|
+ label: "ID",
|
|
|
+ prop: "id"
|
|
|
+ },
|
|
|
+ {
|
|
|
+ label: "姓名",
|
|
|
+ prop: "name"
|
|
|
+ },
|
|
|
+ {
|
|
|
+ label: "日期",
|
|
|
+ prop: "date"
|
|
|
+ },
|
|
|
+ {
|
|
|
+ label: "echarts图表",
|
|
|
+ slot: "echart"
|
|
|
+ }
|
|
|
+ ];
|
|
|
+
|
|
|
+ const { isDark } = useDark();
|
|
|
+
|
|
|
+ const theme: EchartOptions["theme"] = computed(() => {
|
|
|
+ return isDark.value ? "dark" : "light";
|
|
|
+ });
|
|
|
+
|
|
|
+ dataList.value.forEach((_, i) => {
|
|
|
+ const { setOptions } = useECharts(
|
|
|
+ templateRef(`PieChartRef${i}`) as Ref<HTMLDivElement>,
|
|
|
+ {
|
|
|
+ theme
|
|
|
+ }
|
|
|
+ );
|
|
|
+
|
|
|
+ // https://pure-admin-utils.netlify.app/hooks/useEcharts/useEcharts.html
|
|
|
+ setOptions(
|
|
|
+ {
|
|
|
+ tooltip: {
|
|
|
+ trigger: "item",
|
|
|
+ // 将 tooltip 控制在图表区域里
|
|
|
+ confine: true
|
|
|
+ },
|
|
|
+ series: [
|
|
|
+ {
|
|
|
+ name: "Github信息",
|
|
|
+ type: "pie",
|
|
|
+ // center: ["30%", "50%"],
|
|
|
+ data: [
|
|
|
+ { value: 1067, name: "watchers" },
|
|
|
+ { value: 4037, name: "star" },
|
|
|
+ { value: 859, name: "forks" }
|
|
|
+ ],
|
|
|
+ emphasis: {
|
|
|
+ itemStyle: {
|
|
|
+ shadowBlur: 10,
|
|
|
+ shadowOffsetX: 0,
|
|
|
+ shadowColor: "rgba(0, 0, 0, 0.5)"
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ ]
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: "click",
|
|
|
+ callback: ({ data: { name, value } }) => {
|
|
|
+ message.success(
|
|
|
+ `您点击了第 ${i + 1} 行,图表标题为${name},图表数据为:${value}`
|
|
|
+ );
|
|
|
+ }
|
|
|
+ }
|
|
|
+ );
|
|
|
+ });
|
|
|
+
|
|
|
+ return {
|
|
|
+ columns,
|
|
|
+ dataList
|
|
|
+ };
|
|
|
+}
|