封装一个echarts的组件

news/2025/2/25 11:02:00

父组件页面

javascript"><yyjlchart
            v-if="showyyjl"
            chartId="yyjllLine"
            :sourceData="sourceDatayyjl"
            :options="optionsyyjl"
          ></yyjlchart>

javascript">components: {
    LineEcharts,
    yyjlchart: () => import("../yyjlchart"),
  },


data() {
    return {
		showyyjl: false,
      optionsyyjl: {
        grid: {
          left: "3%",
          right: "3%",
          bottom: "10%",
          top: "1%",
        },
      },
},
  methods: {

 async yyjlmap() {
      this.showyyjl = false;
      xxx调接口
数据返回后
				this.sourceDatayyjl.xdata = res.data.xData;
                this.sourceDatayyjl.ydata = res.data.medicateNames.reverse();
                this.sourceDatayyjl.result[0].data = res.data.yData.reverse();
                this.showyyjl = true;

      }

猪脚登场

javascript"><template>
  <div :id="chartId" class="box"></div>
</template>
<script>
export default {
  props: {
    // 品种下拉项
    chartId: {
      type: String,
      default: "",
    },
    // 数据源
    sourceData: {
      type: Object,
      default: () => {
        return {
          ydata: [],
          xdata: [],
          result: [],
        };
      },
    },
    // 特殊配置项
    options: {
      type: Object,
      default: () => {},
    },
    // 图表颜色
    colorList: {
      type: Array,
      default: () => [],
    },
    // 是否显示tooltip
    showTooltip: {
      type: Boolean,
      default: true,
    },
    // 是否显示X轴和Y轴
    showXorY: {
      type: Boolean,
      default: true,
    },
    xyLineColor: {
      type: Array,
      default: () => ["#E5E6E8", "#86909C"],
    },
  },
  data() {
    return {
      chartInstance: null,
    };
  },
  mounted() {
    this.initChart();
  },
  methods: {
    initChart(data) {
      this.chartInstance = this.$echarts.init(
        document.getElementById(this.chartId)
      );
      let that = this;

     
      var hours = this.sourceData.ydata
      var days = this.sourceData.xdata
      var data = []
      var data1 = []



      let option = {
      // 放你的option 
      };

     

      this.chartInstance.setOption(option);
      window.addEventListener("resize", () => {
        this.chartInstance.resize();
      });
      const chartObserver = new ResizeObserver(() => {
        this.chartInstance.resize();
      });
      // 监听当前图表容器大小变化的时候resize
      chartObserver.observe(document.getElementById(this.chartId));
    },
    fontSize(res) {
      let clientWidth =
        window.innerWidth ||
        document.documentElement.clientWidth ||
        document.body.clientWidth;
      if (!clientWidth) return;
      // 此处的1920 为设计稿的宽度
      let fontSize = clientWidth / 1920;
      return res * fontSize;
    },
  },
};
</script>

<style lang="scss" scoped>
.box {
  width: 100%;
  height: 100%;
}
</style>
javascript">option = {
  grid: {
    left: '3%',
    right: '4%',
    bottom: '3%',
    containLabel: true
  },
  xAxis: {
    type: 'category',
    data: ['10-11', '10-12', '10-13', '10-14', '10-15', '10-16', '10-17', '10-18', '10-19', '10-20', '10-21', '10-22', '10-23', '10-24', '10-25', '10-26'],
    boundaryGap: true  // 让点之间有间隙
  },
  yAxis: {
    type: 'category',
    data: ['三维散', '复合多维', '硅烷', '硅烷1', '硅烷2'],
  },
  visualMap: {
    orient: 'horizontal',
    left: 'center',
    bottom: '0%',
    type: "piecewise",
    textStyle: {
      color: '#86909C' // 设置文字颜色
    },
    itemWidth: 25,
    itemHeight: 15,
    symbol: "square",
    inRange: {
      symbol: 'rect', // 设置图例为方形
    },
    show: false, // 显示 visualMap
    min: 1,
    max: 50,
    // backgroundColor: function(params) {
    //     console.log(params);
    //       // 根据 y 轴类别来动态设置颜色
    //       if (params.value[1] === '三维散') return '#9b59b6';  // 紫色
    //       if (params.value[1] === '复合多维') return '#e67e22'; // 橙色
    //       if (params.value[1] === '硅烷') return '#1abc9c'; // 绿色
    //       return '#1abc9c';
    //     }
  },
  series: [{
    name: '热力图',
    type: 'heatmap',
    data: [
      // 数据格式 [x, y, value]
      [0, 0, 40], [1, 0, 70], [2, 0, 50], [3, 0, 30], [4, 0, 0], [5, 0, 80], [6, 0, 60], [7, 0, 40], [8, 0, 50], [9, 0, 70], [10, 0, 60], [11, 0, 80], [12, 0, 50], [13, 0, 70], [14, 0, 40], [15, 0, 60],
      [0, 1, 60], [1, 1, 40], [2, 1, 90], [3, 1, 80], [4, 1, 60], [5, 1, 70], [6, 1, 50], [7, 1, 40], [8, 1, 80], [9, 1, 50], [10, 1, 60], [11, 1, 40], [12, 1, 60], [13, 1, 90], [14, 1, 70], [15, 1, 80],
      [0, 2, 30], [1, 2, 50], [2, 2, 60], [3, 2, 40], [4, 2, 70], [5, 2, 60], [6, 2, 80], [7, 2, 50], [8, 2, 40], [9, 2, 90], [10, 2, 70], [11, 2, 50], [12, 2, 60], [13, 2, 80], [14, 2, 50], [15, 2, 30]
    ],
     
    label: {
      show: true,
      color: '#fff'
    },
    // emphasis: {
    //   itemStyle: {
    //     shadowBlur: 10,
    //     backgroundColor:'#000',
    //     shadowColor: function(params) {
    //       // 根据 y 轴类别来动态设置颜色
    //       if (params.value[1] === '三维散') return '#9b59b6';  // 紫色
    //       if (params.value[1] === '复合多维') return '#e67e22'; // 橙色
    //       if (params.value[1] === '硅烷') return '#1abc9c'; // 绿色
    //       return '#1abc9c';
    //     }
    //   }
    // },
    itemStyle: {
              
            normal: {
                   borderColor: "#ffffff",
              borderWidth: "5",
                color: function(params) {
                    var colorList = ["#3aa0ff", "#f44336", "#ffc107"];
                 console.log(params);
                    params.value[1]==0
                 
                 if (params.value[1] === 0) return '#9b59b6';  // 紫色
                 if (params.value[1] === 1) return '#e67e22'; // 橙色
                 if (params.value[1] === 2) return '#1abc9c'; // 绿色

                }
            }
        },
  }]
};


http://www.niftyadmin.cn/n/5865417.html

相关文章

陀螺匠·企业助手v1.8 产品介绍

陀螺匠企业助手是一套采用Laravel 9框架结合Swoole高性能协程服务与Vue.js前端技术栈构建的新型智慧企业管理与运营系统。该系统深度融合了客户管理、项目管理、审批流程自动化以及低代码开发平台&#xff0c;旨在为企业提供一站式、数字化转型的全方位解决方案&#xff0c;助力…

OpenCV给图像添加噪声

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 如果你已经有了一张干净的图像&#xff0c;并希望通过编程方式向其添加噪声&#xff0c;可以使用 OpenCV 来实现这一点。以下是一个简单的例子&a…

LCC并行光模块、PLCC并行光模块和POB并行光模块的区别

一、封装结构与材料差异 PLCC&#xff08;Plastic Leaded Chip Carrier&#xff09; 封装材料&#xff1a;采用塑料材质&#xff0c;引脚数量较多&#xff08;20-84个&#xff09;&#xff0c;引脚分布在四周12散热设计&#xff1a;通常通过PCB基板嵌装铜散热片提升散热性能8…

VMware17下Ubuntu22.04设置本地共享文件夹

VMware17下使用Ubuntu22.04设置共享文件夹 在日常的开发与学习中&#xff0c;我们常常需要在主机&#xff08;通常是Windows系统&#xff09;和虚拟机&#xff08;如Ubuntu 22.04&#xff09;之间进行文件交换。为了简化这一过程&#xff0c;VMware提供了共享文件夹的功能&…

小迪安全-24天-文件管理,显示上传,黑白名单,访问控制

上节课回顾&#xff0c;token问题 没有更新token值&#xff0c;造成了复用 加上这段代码就好了&#xff0c;就不会复用了 文件管理-文件上传 upload.html文件&#xff0c;找ai生成就行 uoload.php接受文件上传的信息 这里在写个临时文件存储换个地方 因为上面临时文件存在c盘…

EasyExcel 使用指南:基础操作与常见问题

文章目录 1. EasyExcel 简介2. 基础操作2.1. 写入 Excel &#x1f525;2.2. 读取 Excel ✅2.3. 使用模板 &#x1f3a8; 3. 常见问题与解决方案3.1. 处理日期格式 &#x1f4c5;3.2. 数据写入失败&#xff1a;占位符无法匹配 ❌3.3. 内存溢出&#xff1a;大数据量处理 ⚡3.4. 空…

抗干扰利器,光纤无人机技术详解

光纤无人机技术是将光纤通信技术与无人机技术相结合的创新技术&#xff0c;其在抗干扰方面展现出了显著的优势。以下是对光纤无人机技术的详细解析&#xff1a; 一、技术基础与原理 光纤无人机技术主要通过光纤作为高速、低延迟的数据传输媒介&#xff0c;实现无人机拍摄的高…

解锁健康密码,拥抱养生生活

在快节奏的现代生活中&#xff0c;人们愈发重视健康养生&#xff0c;追求身心的和谐与平衡。养生并非高深莫测的学问&#xff0c;而是融入日常生活的点滴智慧&#xff0c;从饮食、运动到心态&#xff0c;每一个选择都在为健康加分。 饮食是养生的基石。遵循 “五谷为养&#xf…