vue echart3个饼图

news2024/11/13 11:07:12

概览:根据UI设计需要做3个饼图且之间有关联,并且处理后端返回的数据。

参考链接:

echart 官网的一个案例,3个饼图

实现思路:

根据案例,把数据处理成对应的。

参考代码:

1.处理后端数据:

/**
 * 处理接口数据
 * 注意:echart是在渲染的时候就传递数据
 */
const getMetarialCondition = () => {
  api.getMetarialList.post({ shipGuid: data.shipGuid }).then((res) => {
    if (res.data.code == 200) {
      // 返回data是否为空
      if (res.data.data.length !== 0) {
        // //库存总数
        let totalHouseNum = res.data.data?.map((item, index) => {
          return item.num
        }).reduce((preValue, curValue) => {
          return preValue += curValue
        })
        //库存入库
        let putHouseNum = res.data.data?.map((item, index) => {
          return item.putNum
        }).reduce((preValue, curValue) => {
          return preValue += curValue
        })
        //库存出库
        let outHouseNum = res.data.data?.map((item, index) => {
          return item.outNum
        }).reduce((preValue, curValue) => {
          return preValue += curValue
        })
        /**
         * 优化数据
         */
        //库存余量
        let myModifyTotalNum = res.data.data?.map((item, index) => {
          return [item.name, item.num, '库存余量']
        })
        //库存入库
        let myModifyPutNum = res.data.data?.map((item, index) => {
          return [item.name, item.putNum, '库存入库']
        })
        //库存出库
        let myModifyOutNum = res.data.data?.map((item, index) => {
          return [item.name, item.outNum, '库存出库']
        })
        let myModifyData = [...myModifyTotalNum, ...myModifyPutNum, ...myModifyOutNum]
        /**
         * 更新状态
         */
        metarialData.totalHouseNum = totalHouseNum
        metarialData.putHouseNum = putHouseNum
        metarialData.outHouseNum = outHouseNum
        reDrawChartMetarial(myModifyData)
      } else {
        let nullData = []
        reDrawChartMetarial(nullData)
      }

    }
  })
};

2.ecahrt渲染的参数:

/**
 * 渲染echart的方法
 * @param {[]} value 传参
 */
const reDrawChartMetarial = (value) => {
  const mySource = [
    ['name', 'value', 'myTag'],
    ...value
  ]
  let metarialOption = {
    tooltip: {
      trigger: 'item',
      position: 'right',  //提示框浮层的位置
    },
    grid: {
      left: "3%",
      right: "4%",
      bottom: "3%",
      width: "820px",
      height: "320px",
      containLabel: true
    },
    legend: {
      orient: 'horizontal',
      left: 'center',
      textStyle: {
        color: '#000',
        fontSize: fontSize(14),
      },
      formatter: function (a) {
        if (a.length > 5) {
          a = a.slice(0, 5) + "...";   //截断拼接省略号    
        }
        return a;
      }
    },
    dataset: [
      {
        source: mySource,
      },
      {
        transform: {
          type: 'filter',
          config: { dimension: 'myTag', value: '库存余量' }
        }
      },
      {
        transform: {
          type: 'filter',
          config: { dimension: 'myTag', value: '库存入库' }
        }
      },
      {
        transform: {
          type: 'filter',
          config: { dimension: 'myTag', value: '库存出库' }
        }
      }
    ],
    series: [
      {
        type: 'pie',
        radius: 50,
        top: 100,
        left: -100,
        center: ['10%', '50%'],
        datasetIndex: 1,
        textStyle: {
          color: "#000",
          align: "right",
          fontSize: fontSize(16),
        },
        label: {
          formatter: function (a) {
            if (a.name) {
              a = a.name.slice(0, 12) + "...";   //截断拼接省略号    
            }
            return a;
          },
        }
      },
      {
        type: 'pie',
        radius: 50,
        top: 100,
        center: ['50%', '50%'],
        datasetIndex: 2,
        label: {
          normal: {
            formatter: function (a) {
              if (a.name) {
                a = a.name.slice(0, 12) + "...";   //截断拼接省略号    
              }
              return a;
            },
          }
        }
      },
      {
        type: 'pie',
        radius: 50,
        top: 100,
        left: 300,
        center: ['90%', '50%'],
        datasetIndex: 3,
        label: {
          normal: {
            formatter: function (a) {
              if (a.name) {
                a = a.name.slice(0, 5) + "...";   //截断拼接省略号    
              }
              return a;
            },
          }
        }
      }
    ],
    media: [
      {
        query: { minAspectRatio: 1 },
        option: {
          series: [
            { center: ['25%', '50%'] },
            { center: ['50%', '50%'] },
            { center: ['75%', '50%'] }
          ]
        }
      },
      {
        option: {
          series: [
            { center: ['50%', '25%'] },
            { center: ['50%', '50%'] },
            { center: ['50%', '75%'] }
          ]
        }
      }
    ]
  };
  metarialOption && dataEcharts.metaChart.setOption(metarialOption, true);
}

效果展示:

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/815872.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

LangChain+ChatGLM大模型应用落地实践(一)

LLMs的落地框架(LangChain),给LLMs套上一层盔甲,快速构建自己的新一代人工智能产品。 一、简介二、Lanchain源码三、租用云服务器实例四、部署实例 一、简介 LangChain是一个近期非常活跃的开源代码库,目前也还在快速…

SOLIDWORKS Utilities应用

在实际的生产设计制造中,经常会遇到同一个零件多个版本,有可能再次调用零件的时间已经是很长时间之后,对于版本之间的区别就不会那么清楚,碰到简单明显的零件还可以轻松的找到区别,但是复杂的零件区别的查找可能会造成…

Jenkins 节点该如何管理?

Jenkins 拥有分布式构建(在 Jenkins 的配置中叫做节点),分布式构建能够让同一套代码在不同的环境(如:Windows 和 Linux 系统)中编译、测试等 Jenkins 的任务可以分布在不同的节点上运行 节点上需要配置 Java 运行时环境,JDK 版本大于 1.5 节…

Echarts常见图表展示

一、折线图 1.1 堆叠折线图 const option {title: {text: 折线图,},tooltip: {trigger: axis},legend: {data: [张三, 李四, 王五],bottom: 10,},grid: {left: 3%,right: 4%,bottom: 10%,containLabel: true},xAxis: {type: category,boundaryGap: false,data: [Mon, Tue, We…

layui框架学习(35:数据表格_列参数设置)

Layui中的table数据表格模块支持对表格及列进行基础参数设置以提高数据的可视化及可操作性,本文学习并记录与列相关的主要基础参数的用法及效果。   基础参数field设置待显示到列中的数据的字段名,主要针对数据表格url属性中返回的数据集合或data属性设…

如何使用fiddler进行抓包

首先需要下载fiddler,推荐使用bing搜索引擎搜索(百度搜狗一般搜这种工具展示的前几个全都是广告),直接搜索fiddler,搜出来第一个fiddler官网 然后直接点击download下载 进入下载页面后,正确填写一个邮箱&a…

【LeetCode|编译原理】剑指 Offer 20. 表示数值的字符串

文章目录 题目链接标签步骤实现代码&#xff08;C&#xff09; 题目链接 剑指 Offer 20. 表示数值的字符串 标签 有限状态自动机(FA) 步骤 Step1. 去除字符串左、右空格&#xff1b; string strip(string str) {int start -1;for (int i 0; i < str.length(); i) {i…

一个CSS渐变下划线效果的实用技巧

下划线它只用到了CSS的渐变背景、背景大小调整、位置设置、鼠标hover 过渡等基本属性和技巧。 分析与实现 我们先看一下基本的结构。 <h2 class"title"><span>你好啊&#xff0c;嘴巴嘟嘟</span></h2>然后我们给span 元素添加一个线性渐变…

如何在Windows11中备份指定文件夹?

在现代的信息化时代&#xff0c;无论工作场所还是日常生活&#xff0c;文件的使用频率已经越来越高。对于那些经常操作特定文件夹的用户&#xff0c;他们可能会经常进行文件的修改、新增以及删除操作。为了防止文件丢失导致的困扰&#xff0c;定期备份指定文件夹显得尤为关键。…

java医院电子病历系统源码:云端SaaS服务 前后端分离模式开发和部署

电子病历系统是什么&#xff1f; 电子病历是指医务人员在医疗活动过程中,使用医疗机构信息系统生成的文字、符号、图表、图形、数据、影像等数字化信息,并能实现存储、管理、传输和重现的医疗记录,是病历的一种记录形式。 医院通过电子病历以电子化方式记录患者就诊的信息&…

晋级榜单揭晓!华秋第九届硬创大赛-华南分赛区路演成功举办

7月21日&#xff0c;第十五届深创赛福田预选赛区暨华秋第九届硬创大赛华南分赛区决赛路演活动在深圳华强科创广场成功举办。活动由深圳华秋电子有限公司&#xff08;以下简称 华秋 &#xff09;、深圳市福田区新一代信息技术产业链党委、深圳新一代产业园、微纳研究院、华强科创…

关于运发的知识点123(个人笔记 持续更新)

前言&#xff1a;作为一个物联网的小辣鸡&#xff0c;硬件设计水平不能说没有&#xff0c;只能说一点点。 正好要做新项目&#xff0c;自己学着去处理信号&#xff0c;滤波&#xff0c;在这里做一点笔记。 参考书一&#xff1a;杨建国老师《新概念模拟电路》.pdf 参考书二&…

如何卸载华为手机内置app

作者&#xff1a;朱金灿 来源&#xff1a;clever101的专栏 为什么大多数人学不会人工智能编程&#xff1f;>>> 最近自用的华为手机的存储空间快满了&#xff0c;想把手机内置的app清理一下。然后到网上搜索解决方案&#xff0c;大致弄明白了步骤。主要是通过华为手机…

23款奔驰GLE450豪华型升级AMG直瀑式中网,战斗感立马提升了一个档次

奔驰GLE450豪华型升级AMG竖杠中网前进气格栅&#xff0c;AMG中网竖杠格栅&#xff0c;镀铬饰条呈圆弧状&#xff0c;色泽均衡&#xff0c;质感顺滑&#xff0c;极富冲击力。AMG专属字标&#xff0c;与中网卡扣装配紧密&#xff0c;凸显AMG的身份象征&#xff0c;点睛之笔又不显…

HC32F448-小华MCU

由于要开发和学习使用低成本MCU&#xff0c;这里记录下小华半导体HC32F448的手册参数 芯片官网&#xff08;HC32F448MCTI-LQFP80&#xff09; 小华半导体有限公司 (xhsc.com.cn) HC32F448 系列MCU是32位的ARM Cortex-M4微控制器。最高工作频率 200MHz&#xff0c;最大 256KB 的…

中小学分班查询系统0成本制作方法公布了,人人可用

传统的学生分班查询平台通常需要进行专业的技术开发&#xff0c;以实现学生查询和查看分班信息的功能。这个过程涉及到软件开发、数据库设计、系统集成等多个环节&#xff0c;需要有一支专业的技术团队来完成。 然而&#xff0c;这样的技术开发和维护过程需要耗费大量的经济成…

微信小程序+web数据库的开发实践

前言 生活中使用微信小程序的场景越来越多&#xff0c;它实现了用户对于应用“触手可及、用完即走”的理想需求。微信小程序的开发难度也低于APP的开发制作&#xff0c;使用它会更便利、低成本、高经济效益。 但是要完成一个小程序涉及到的技术栈比较多&#xff0c;要开发的模…

RTT(RT-Thread)线程管理(1.2W字详细讲解)

目录 RTT线程管理 线程管理特点 线程工作机制 线程控制块 线程属性 线程状态之间切换 线程相关操作 创建和删除线程 创建线程 删除线程 动态创建线程实例 启动线程 初始化和脱离线程 初始化线程 脱离线程 静态创建线程实例 线程辅助函数 获得当前线程 让出处…

redisson分布式锁学习

什么是分布式锁? 当有多个线程并发访问同一共享数据时,如果多个线程同时都去修改这个共享数据,且修改操作不是原子操作,就很有可能出现线程安全问题&#xff0c;而产生线程安全问题的根本原因是缺乏对共享数据访问的同步和互斥。 为了解决这个问题&#xff0c;通常我们的做法…

pgsql 查看某个表建立了那些索引sql

执行以下sql&#xff1a; SELECTns.nspname as schema_name,tab.relname as table_name,cls.relname as index_name,am.amname as index_type,idx.indisprimary as is_primary,idx.indisunique as is_unique FROMpg_index idx INNER JOIN pg_class cls ON cls.oididx.indexrel…