index.vue 743 B

123456789101112131415161718192021222324252627282930313233343536373839
  1. <template>
  2. <div ref="chartElement" class="app-echarts" :style="{ width, height }"></div>
  3. </template>
  4. <script lang="ts" setup>
  5. import { PropType, watch } from 'vue'
  6. import { ECOption } from './core'
  7. import { useEcharts } from './index'
  8. const props = defineProps({
  9. // 图表宽度
  10. width: {
  11. type: String,
  12. default: '100%',
  13. },
  14. // 图表高度
  15. height: {
  16. type: String,
  17. default: '100%',
  18. },
  19. // 图表配置项
  20. option: {
  21. type: Object as PropType<ECOption>,
  22. default: () => ({}),
  23. },
  24. dataIndex: {
  25. type: Number,
  26. default: 0,
  27. },
  28. })
  29. const { chartElement, setOptions } = useEcharts();
  30. watch(() => props.option, (val) => setOptions(val));
  31. </script>
  32. <style lang="less">
  33. @import './index.less';
  34. </style>