当前位置: 首页 > article >正文

项目功能--套餐预约占比饼形图

一、需求分析

        会员可以通过移动端自助进行体检预约,在预约时需要选择预约的体检套餐。我们要通过饼形图直观的展示出会员预约的各个套餐占比情况。

二、代码实现

实现步骤:
步骤一:将echarts.js文件复制到工程的plugins目录下

步骤二:在页面引入echarts.js文件

<script src="../plugins/echarts/echarts.js"></script>


步骤三:参照官方实例导入折线图

<div class="box">
  <!-- 为 ECharts 准备一个具备大小(宽高)的 DOM -->
  <div id="chart1" style="height:600px;"></div>
</div>
    <script type="text/javascript">
        // 基于准备好的dom,初始化echarts实例
        var myChart1 = echarts.init(document.getElementById('chart1'));
        // 使用刚指定的配置项和数据显示图表。
        //myChart.setOption(option);
        axios.get("/report/getExaminationReport.do").then((res)=>{
            myChart1.setOption({
                title : {
                    text: '套餐预约占比',
                    subtext: '',
                    x:'center'
                },
                tooltip : {//提示框组件
                    trigger: 'item',//触发类型,在饼形图中为item
                    formatter: "{a} <br/>{b} : {c} ({d}%)"//提示内容格式
                },
                legend: {//图例
                    orient: 'vertical',
                    left: 'left',
                    data: res.data.data.setmealNames
                },
                series : [//数据系列
                    {
                        name: '套餐预约占比',
                        type: 'pie',//饼形图
                        radius : '55%',
                        center: ['50%', '60%'],
                        data:res.data.data.setmealCount,
                        itemStyle: {
                            emphasis: {
                                shadowBlur: 10,
                                shadowOffsetX: 0,
                                shadowColor: 'rgba(0, 0, 0, 0.5)'
                            }
                        }
                    }
                ]
            });
        });
    </script>

步骤四:根据饼形图对数据格式的要求,我们发送ajax请求,服务端需要返回如下格式的数据:

{
    "data":{
            "setmealNames":["套餐1","套餐2","套餐3"],
            "setmealCount":[
                            {"name":"套餐1","value":10},
                            {"name":"套餐2","value":30},
                            {"name":"套餐3","value":25}
                           ]
           },
    "flag":true,
    "message":"获取套餐统计数据成功"
}

步骤五:编写controller代码,编写测试数据 测试

 @RequestMapping("/getExaminationReport")
    public Result getExaminationReport(){
        //使用模拟数据测试
        Map<String,Object> data = new HashMap<>();

        List<String> setmealNames = new ArrayList<>();
        setmealNames.add("体检套餐");
        setmealNames.add("孕前检查套餐");
        data.put("setmealNames",setmealNames);

        List<Map<String,Object>> setmealCount = new ArrayList<>();

        Map map1 = new HashMap();
        map1.put("name","体检套餐");
        map1.put("value",200);

        Map map2 = new HashMap();
        map2.put("name","孕前检查套餐");
        map2.put("value",300);

        setmealCount.add(map1);
        setmealCount.add(map2);
        data.put("setmealCount",setmealCount);
        return new Result(true,MessageConstant.GET_SETMEAL_COUNT_REPORT_SUCCESS,data);

}

步骤六:编写代码,实现


http://www.kler.cn/a/389053.html

相关文章:

  • react 中 FC 模块作用
  • 【MySQL从入门到放弃】InnoDB磁盘结构(一)
  • SpringBoot(七)使用mapper注解编写sql操作数据库
  • F5全新报告揭示AI时代API安全面临严峻挑战
  • 大数据新视界 -- 大数据大厂之 Impala 性能优化:优化数据加载的实战技巧(下)(16/30)
  • linux,1.NFS和autofs,2.podman容器,3.http服务和虚拟web主机,4.内网DNS服务搭建
  • SQL注入(SQL Injection)详解
  • 十大经典排序算法-冒泡算法详解介绍
  • Linux下进程链接结构,命令行参数,环境变量
  • 【论文阅读】Learning dynamic alignment via meta-filter for few-shot learning
  • Django替换现有用户模型(auth_user)
  • 《潜行者2切尔诺贝利之心》游戏引擎介绍
  • Jest项目实战(2): 项目开发与测试
  • 鸿蒙next版开发:ArkTS组件快捷键事件详解
  • 密码学知识点整理二:常见的加密算法
  • c语言中的柔性数组
  • 【css flex 多行均分有间隙布局】
  • 小白学习之路:咖啡叶锈病分割
  • 105. UE5 GAS RPG 搭建主菜单
  • MySQL缓存参数如何优化与表结构如何优化才算是最大性能的优化
  • 6层板设计常用知识笔记
  • 鸿蒙开发基础入门
  • BP 神经网络学习 MATLAB 函数详解及应用
  • 【Istio】Istio原理
  • web安全漏洞之文件上传
  • 【JWT】Asp.Net Core中JWT刷新Token解决方案