Echarts 封装通用组件

server/2025/2/3 8:11:27/

目录结构

相关文件可以去我的 gitee 下载:https://gitee.com/hao-xiugong/management-vue-ts

在这里插入图片描述

index.ts

import BaseEcharts from "@/components/page-echarts/src/base-echarts.vue";
import LineEcharts from "@/components/page-echarts/src/line-echarts.vue";
import RoseEcharts from "@/components/page-echarts/src/rose-echarts.vue";
import BarEcharts from "@/components/page-echarts/src/bar-echarts.vue";
import MapEcharts from "@/components/page-echarts/src/map-echarts.vue";
import PieEcharts from "@/components/page-echarts/src/pie-echarts.vue";export default BaseEcharts;
export { PieEcharts, LineEcharts, RoseEcharts, BarEcharts, MapEcharts };

组件封装

base-echarts.vue

<script setup lang="ts">
import * as echarts from "echarts";
import { onMounted, useTemplateRef, watchEffect } from "vue";
import type { EChartsOption } from "echarts";interface IProps {option: EChartsOption;
}// 注册map
import chinaJSON from "../data/china.json";echarts.registerMap("china", chinaJSON as any);const echartsRef = useTemplateRef<HTMLElement>("echartsRef");const props = defineProps<IProps>();onMounted(() => {const echartsInstance = echarts.init(echartsRef.value!, "light", {renderer: "canvas"});// 第一次进入setOption 监听option变化watchEffect(() => echartsInstance.setOption(props.option));// 监听window的缩放window.addEventListener("resize", () => {echartsInstance.resize();});
});
</script><template><div class="base-echarts"><div class="echarts" ref="echartsRef"></div></div>
</template><style scoped>
.base-echarts {.echarts {height: 300px;}
}
</style>

然后二次封装,以 map-echarts.vue 为例:

<script setup lang="ts">
import { computed } from 'vue'
import type { EChartsOption } from 'echarts'
import type { IEchartsValueType } from '../types'
import { convertData } from '../utils/convert-data'interface IMapProps {showCitiesGoodsCount: IEchartsValueType[]
}
const props = defineProps<IMapProps>()
const option = computed<EChartsOption>((): any => {return {title: {},tooltip: {trigger: 'item',formatter: function (params: any) {return params.name + ':' + params.value[2]}},legend: {},visualMap: {min: 0,max: 60000,left: 20,bottom: 20,calculabel: true,text: ['高', '低'],inRange: {color: ['rgb(70,240,252)', 'rgb(255,220,46)', 'rgb(245,38,186)']},textStyle: {color: '#fff'}},geo: {map: 'china',roam: 'scale',emphasis: {areaColor: '#f4cccc',borderColor: 'rgb(9,54,95)',itemStyle: {areaColor: 'f4cccc'}}},series: [{name: '',type: 'scatter',coordinateSystem: 'geo',map: 'china',data: convertData(props.showCitiesGoodsCount),symbolSize: 12,emphasis: {itemStyle: {shadowBlur: 10,shadowOffsetX: 0,shadowColor: 'rgba(0, 0, 0, 0.5)'}}}]}
})
</script>
<template><div class="map-echarts"><base-echarts :option="option"></base-echarts></div>
</template>
<style scoped lang="less"></style>

在这里插入图片描述


http://www.ppmy.cn/server/164562.html

相关文章

计算机网络 应用层 笔记 (电子邮件系统,SMTP,POP3,MIME,IMAP,万维网,HTTP,html)

电子邮件系统&#xff1a; SMTP协议 基本概念 工作原理 连接建立&#xff1a; 命令交互 客户端发送命令&#xff1a; 服务器响应&#xff1a; 邮件传输&#xff1a; 连接关闭&#xff1a; 主要命令 邮件发送流程 SMTP的缺点: MIME&#xff1a; POP3协议 基本概念…

聚簇索引、哈希索引、覆盖索引、索引分类、最左前缀原则、判断索引使用情况、索引失效条件、优化查询性能

聚簇索引 聚簇索引像一本按目录排版的书&#xff0c;用空间换时间&#xff0c;适合读多写少的场景。设计数据库时&#xff0c;主键的选择&#xff08;如自增ID vs 随机UUID&#xff09;会直接影响聚簇索引的性能。 什么是聚簇索引&#xff1f; 数据即索引&#xff1a;聚簇索引…

三天急速通关JavaWeb基础知识:Day 3 依赖管理项目构建工具Maven

三天急速通关JavaWeb基础知识&#xff1a;Day 3 依赖管理项目构建工具Maven 0 文章说明1 介绍2 安装与配置2.1 安装2.2 手动配置 3 创建Maven工程4 Maven构建工程5 Maven依赖管理6 Maven工程Build构建配置7 Maven依赖传递与依赖冲突7.1 依赖传递7.1 依赖冲突 8 Maven工程继承和…

【计算机网络】公有和私有 IP 地址

私有 IP 地址&#xff1a;私有 IP 地址&#xff1a; 定义 私有 IP 地址是专门为内部网络保留的 IP 地址范围&#xff0c;这些地址在互联网上不会被直接路由&#xff0c;仅用于内部网络中的设备之间的通信。私有 IP 地址范围如下&#xff1a; Class A&#xff1a;10.0.0.0 至 …

基础IO的学习

1. 理解文件 文件在磁盘里&#xff08;磁盘本身是外设&#xff09; 磁盘是永久性存储介质&#xff0c;文件在磁盘上的存储是永久的 磁盘是的文件 本质是对文件的所有操作&#xff0c;都是对外设的输入和输出 简称IO 对文件的操作本质是进程对文件的操作 磁盘的管理者是操作…

Lesson 127 A famous actress

Lesson 127 A famous actress 词汇 famous a. 著名的 相关&#xff1a;fame n. 名誉 -ous形容词后缀&#xff1a;delicious         dangerous         famous 例句&#xff1a;他的新书很著名。    His new book is very famous. 用法&#xff1a;be fam…

自定义数据集使用框架的线性回归方法对其进行拟合

代码 import torch import numpy as np import torch.nn as nncriterion nn.MSELoss()data np.array([[-0.5, 7.7],[1.8, 98.5],[0.9, 57.8],[0.4, 39.2],[-1.4, -15.7],[-1.4, -37.3],[-1.8, -49.1],[1.5, 75.6],[0.4, 34.0],[0.8, 62.3]])x_data data[:, 0] y_data data…

区块链 智能合约安全 | 回滚攻击

视频教程在我主页简介和专栏里 目录&#xff1a; 智能合约安全 回滚攻击 总结 智能合约安全 回滚攻击 回滚攻击的本质是”耍赖” 举一个简单的例子,两个人玩石头剪刀布,输了的给对方10块钱,现在A输了,A说这把不算,重来 放在Solidity中,require()函数会检测其中的条件是否满…