@@ -47,7 +47,7 @@ const chartInstance: Ref<HTMLElement | null> = ref(null)
47
47
//属性
48
48
const props = withDefaults(defineProps<{
49
49
//echarts配置对象
50
- option: EChartsOption ,
50
+ option: any ,
51
51
//重置图表尺寸是否使用动画
52
52
resizeAnimation?: boolean,
53
53
//是否显示表格
@@ -78,17 +78,17 @@ const position = reactive({
78
78
//表格
79
79
const table: {
80
80
size: string,
81
- height: number | undefined
81
+ height: number
82
82
} = reactive({
83
83
size: 'small',
84
- height: undefined
84
+ height: 100
85
85
})
86
86
87
87
//在图表选项变化的时候更新图表
88
88
watch(
89
89
() => props.option,
90
90
() => {
91
- instance!.setOption(props.option, true)
91
+ instance!.setOption(props.option as EChartsOption , true)
92
92
},
93
93
{
94
94
deep: true
@@ -107,7 +107,7 @@ const tableColumns = computed(() => {
107
107
}
108
108
}
109
109
//如果序列里有饼图则最终以饼图出现的为最终列
110
- for (let series of <SeriesOption[]> option.series!) {
110
+ for (let series of option.series!) {
111
111
if (series.type === 'pie') {
112
112
return ['类型', '值']
113
113
}
@@ -122,7 +122,7 @@ const tableColumns = computed(() => {
122
122
const tableRows = computed(() => {
123
123
const option = props.option
124
124
const rows = []
125
- for (let series of <SeriesOption[]> option.series!) {
125
+ for (let series of option.series!) {
126
126
if (series.type === 'pie') {
127
127
const items = series.data as PieDataItemOption[]
128
128
items.forEach((item) => {
@@ -183,14 +183,16 @@ const observerResize = () => {
183
183
tableResize()
184
184
}
185
185
186
+ const {destroy,handler} = debounce(observerResize, 300)
187
+
186
188
defineExpose({
187
189
instance,
188
190
container,
189
191
downloadAsImage
190
192
})
191
193
192
194
onMounted(() => {
193
- container = <HTMLElement> chartContainer.value!.parentElement
195
+ container = chartContainer.value!.parentElement
194
196
if (!container) {
195
197
throw new Error('没有找到父元素')
196
198
}
@@ -209,14 +211,15 @@ onMounted(() => {
209
211
instance = echarts.init(chartInstance.value!)
210
212
instance!.setOption(props.option, true)
211
213
//监听尺寸变化以便重置图表尺寸
212
- observer = new ResizeObserver(debounce(observerResize,500) )
214
+ observer = new ResizeObserver(handler )
213
215
observer.observe(container!)
214
216
})
215
217
})
216
218
217
219
onUnmounted(() => {
218
220
observer?.disconnect()
219
221
instance?.dispose()
222
+ destroy()
220
223
})
221
224
</script>
222
225
0 commit comments