Vben
2021-04-07 5b8eb4a49a097a47caf491c44df427522ab58daa
提交 | 用户 | age
8a1406 1 <template>
V 2   <Card title="转化率" :loading="loading">
3     <div ref="chartRef" :style="{ width, height }"></div>
4   </Card>
5 </template>
6 <script lang="ts">
7   import { defineComponent, Ref, ref, watch } from 'vue';
8
9   import { Card } from 'ant-design-vue';
10   import { useECharts } from '/@/hooks/web/useECharts';
11
12   export default defineComponent({
13     components: { Card },
14     props: {
15       loading: Boolean,
16       width: {
17         type: String as PropType<string>,
18         default: '100%',
19       },
20       height: {
21         type: String as PropType<string>,
22         default: '300px',
23       },
24     },
25     setup(props) {
26       const chartRef = ref<HTMLDivElement | null>(null);
27       const { setOptions } = useECharts(chartRef as Ref<HTMLDivElement>);
28       watch(
29         () => props.loading,
30         () => {
31           if (props.loading) {
32             return;
33           }
34           setOptions({
35             legend: {
36               bottom: 0,
37               data: ['访问', '购买'],
38             },
39             tooltip: {},
40             radar: {
41               radius: '60%',
42               splitNumber: 8,
43               indicator: [
44                 {
45                   text: '电脑',
46                   max: 100,
47                 },
48                 {
49                   text: '充电器',
50                   max: 100,
51                 },
52                 {
53                   text: '耳机',
54                   max: 100,
55                 },
56                 {
57                   text: '手机',
58                   max: 100,
59                 },
60                 {
61                   text: 'Ipad',
62                   max: 100,
63                 },
64                 {
65                   text: '耳机',
66                   max: 100,
67                 },
68               ],
69             },
70             series: [
71               {
72                 type: 'radar',
73                 symbolSize: 0,
74                 areaStyle: {
75                   shadowBlur: 0,
76                   shadowColor: 'rgba(0,0,0,.2)',
77                   shadowOffsetX: 0,
78                   shadowOffsetY: 10,
79                   opacity: 1,
80                 },
81                 data: [
82                   {
83                     value: [90, 50, 86, 40, 50, 20],
84                     name: '访问',
85                     itemStyle: {
86                       color: '#b6a2de',
87                     },
88                   },
89                   {
90                     value: [70, 75, 70, 76, 20, 85],
91                     name: '购买',
92                     itemStyle: {
93                       color: '#5ab1ef',
94                     },
95                   },
96                 ],
97               },
98             ],
99           });
100         },
101         { immediate: true }
102       );
103       return { chartRef };
104     },
105   });
106 </script>