123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263 |
- <template>
- <Card title="成交占比" :loading="loading">
- <div ref="chartRef" :style="{ width, height }"></div>
- </Card>
- </template>
- <script lang="ts" setup>
- import { Ref, ref, watch } from 'vue';
- import { Card } from 'ant-design-vue';
- import { useECharts } from '/@/hooks/web/useECharts';
- const props = defineProps({
- loading: Boolean,
- width: {
- type: String as PropType<string>,
- default: '100%',
- },
- height: {
- type: String as PropType<string>,
- default: '300px',
- },
- });
- const chartRef = ref<HTMLDivElement | null>(null);
- const { setOptions } = useECharts(chartRef as Ref<HTMLDivElement>);
- watch(
- () => props.loading,
- () => {
- if (props.loading) {
- return;
- }
- setOptions({
- tooltip: {
- trigger: 'item',
- },
- series: [
- {
- name: '访问来源',
- type: 'pie',
- radius: '80%',
- center: ['50%', '50%'],
- color: ['#5ab1ef', '#b6a2de', '#67e0e3', '#2ec7c9'],
- data: [
- { value: 500, name: '电子产品' },
- { value: 310, name: '服装' },
- { value: 274, name: '化妆品' },
- { value: 400, name: '家居' },
- ].sort(function (a, b) {
- return a.value - b.value;
- }),
- roseType: 'radius',
- animationType: 'scale',
- animationEasing: 'exponentialInOut',
- animationDelay: function () {
- return Math.random() * 400;
- },
- },
- ],
- });
- },
- { immediate: true }
- );
- </script>
|