|
...
|
...
|
@@ -5,10 +5,11 @@ |
|
5
|
5
|
/></div>
|
|
6
|
6
|
</template>
|
|
7
|
7
|
<script lang="ts">
|
|
8
|
|
- import { defineComponent, PropType, ref, Ref, onMounted, toRefs } from 'vue';
|
|
|
8
|
+ import { defineComponent, PropType, ref, Ref, onMounted, toRefs, computed, watch } from 'vue';
|
|
9
|
9
|
import { useECharts } from '/@/hooks/web/useECharts';
|
|
10
|
10
|
import { Empty } from 'ant-design-vue';
|
|
11
|
11
|
import { seriesDataT } from './props';
|
|
|
12
|
+ import { useAppStore } from '/@/store/modules/app';
|
|
12
|
13
|
|
|
13
|
14
|
export default defineComponent({
|
|
14
|
15
|
components: { Empty },
|
|
...
|
...
|
@@ -35,23 +36,22 @@ |
|
35
|
36
|
},
|
|
36
|
37
|
},
|
|
37
|
38
|
setup(props) {
|
|
|
39
|
+ const appStore = useAppStore();
|
|
38
|
40
|
const { legendData, seriesData } = toRefs(props);
|
|
39
|
41
|
const dataSeries: Ref<seriesDataT[]> = ref([]);
|
|
40
|
42
|
const legendDatas: Ref<seriesDataT[]> = ref([]);
|
|
41
|
43
|
dataSeries.value = seriesData.value as unknown as seriesDataT[];
|
|
42
|
44
|
legendDatas.value = legendData.value as unknown as seriesDataT[];
|
|
43
|
|
-
|
|
|
45
|
+ const skinName = computed(() => {
|
|
|
46
|
+ return appStore.getDarkMode === 'light' ? '#ffffff' : '#151515';
|
|
|
47
|
+ });
|
|
44
|
48
|
const chartRef = ref<HTMLDivElement | null>(null);
|
|
|
49
|
+
|
|
45
|
50
|
const { setOptions, resize } = useECharts(chartRef as Ref<HTMLDivElement>);
|
|
46
|
|
- const labelLine = {
|
|
47
|
|
- normal: {
|
|
48
|
|
- show: true,
|
|
49
|
|
- length2: 1,
|
|
50
|
|
- },
|
|
51
|
|
- } as any;
|
|
52
|
|
- onMounted(() => {
|
|
53
|
|
- setOptions({
|
|
54
|
|
- backgroundColor: '#ffffff',
|
|
|
51
|
+
|
|
|
52
|
+ const getOptions: any = () => {
|
|
|
53
|
+ return {
|
|
|
54
|
+ backgroundColor: skinName.value,
|
|
55
|
55
|
tooltip: {
|
|
56
|
56
|
trigger: 'item',
|
|
57
|
57
|
formatter: '{b} {d}%',
|
|
...
|
...
|
@@ -72,7 +72,29 @@ |
|
72
|
72
|
labelLine,
|
|
73
|
73
|
},
|
|
74
|
74
|
],
|
|
75
|
|
- });
|
|
|
75
|
+ };
|
|
|
76
|
+ };
|
|
|
77
|
+
|
|
|
78
|
+ watch(
|
|
|
79
|
+ () => appStore.getDarkMode,
|
|
|
80
|
+ (target) => {
|
|
|
81
|
+ const backgroundColor = target === 'light' ? '#ffffff' : '#151515';
|
|
|
82
|
+ setOptions &&
|
|
|
83
|
+ setOptions({
|
|
|
84
|
+ ...getOptions(),
|
|
|
85
|
+ backgroundColor,
|
|
|
86
|
+ });
|
|
|
87
|
+ }
|
|
|
88
|
+ );
|
|
|
89
|
+
|
|
|
90
|
+ const labelLine = {
|
|
|
91
|
+ normal: {
|
|
|
92
|
+ show: true,
|
|
|
93
|
+ length2: 1,
|
|
|
94
|
+ },
|
|
|
95
|
+ } as any;
|
|
|
96
|
+ onMounted(() => {
|
|
|
97
|
+ setOptions(getOptions());
|
|
76
|
98
|
//自适应
|
|
77
|
99
|
window.addEventListener('resize', () => resize());
|
|
78
|
100
|
});
|
...
|
...
|
|