echarts柱图前后端代码SpringCloud+Vue3

简介: echarts柱图前后端代码SpringCloud+Vue3

 ♥️作者:小宋1021

🤵‍♂️个人主页:小宋1021主页

♥️坚持分析平时学习到的项目以及学习到的软件开发知识,和大家一起努力呀!!!

🎈🎈加油! 加油! 加油! 加油

🎈欢迎评论 💬点赞👍🏻 收藏 📂加关注+!


展示:

image.gif 编辑

前端:

//top5柱状图
    var chartDom1 = document.getElementById('barsEchart1')
    var myChart1 = echarts.init(chartDom1)
  var option1
  option1 = {
    title: {
    text: '教师成绩Top5',
  }, 
  tooltip: {
    trigger: 'axis',
    axisPointer: {
      type: 'shadow'
    }
  },
  xAxis: {
    type: 'category',
    data: listTOP5.value.teacherNames
  },
  yAxis: {
    type: 'value'
  },
  series: [
    {
      data:listTOP5.value.teacherScores,
      type: 'bar'
    }
  ]
};
  option1 && myChart1.setOption(option1)
  window.addEventListener('resize', function() {
    myChart1.resize();
});

image.gif

赋值语句:

const dataKPI = await TeacherMonthExamApi.teacherExamAnalysisKPI(queryParams)
listKPI.value = dataKPI.list[0]

image.gif

自适应语句(放到图表结束后):

window.addEventListener('resize', function () {
      myChart1.resize()
    })

image.gif

后端向前端返回的数据类型:

image.gif 编辑

一个是字符串的数组、一个是数字的数组

image.gif 编辑

需要与echarts官网的数据类型一致。

后端:

XML(可忽略):

<!--    教师成绩分析表柱状图-->
    <select id="teacherExamAnalysisTOP5" resultType="java.util.Map">
        SELECT
        STRING_AGG(subquery.teacher_name, ', ') AS teachers_names,
        STRING_AGG(subquery.exam_score::TEXT, ', ') AS teachers_scores
        FROM (
        SELECT
        htm.teacher_name,
        htme.exam_score::INTEGER AS exam_score
        FROM
        hr_teacher_month_exam htme
        JOIN
        hr_teacher_manage htm ON htm.id = htme.teacher_id
        WHERE
        htme.deleted = 0
        AND htm.deleted = 0
        <if test=" dataPageReqVO.years != null ">
            AND EXTRACT(YEAR FROM (htme.exam_date)) =  CAST(#{dataPageReqVO.years} AS numeric)
        </if>
        <if test=" dataPageReqVO.months != null ">
            AND EXTRACT(MONTH FROM (htme.exam_date)) =  CAST(#{dataPageReqVO.months} AS numeric)
        </if>
        ORDER BY
        htme.exam_score::INTEGER DESC,
        htm.teacher_name ASC
        LIMIT 5
        ) AS subquery;
    </select>

image.gif

Mapper:

//教师成绩TOP5
    IPage<Map> teacherExamAnalysisTOP5(IPage page,@Param("dataPageReqVO") DataPageReqVO dataPageReqVO);

image.gif

Service

//教师成绩TOP5
    PageResult<Map> teacherExamAnalysisTOP5(DataPageReqVO dataPageReqVO);

image.gif

实现类:

//教师成绩分析表TOP5
    @Override
    public PageResult<Map> teacherExamAnalysisTOP5(DataPageReqVO dataPageReqVO) {
        IPage<Map> page = new Page<>(dataPageReqVO.getPageNo(), dataPageReqVO.getPageSize());
        if (dataPageReqVO.getYears() != null && !dataPageReqVO.getYears().isEmpty()) {
            dataPageReqVO.setYears(dataPageReqVO.getYears().substring(0, 4));
        }
        if (dataPageReqVO.getMonths() != null && !dataPageReqVO.getMonths().isEmpty() ){
            dataPageReqVO.setMonths(dataPageReqVO.getMonths().substring(6, 7));
        }
        dataMapper.teacherExamAnalysisTOP5(page,dataPageReqVO);
        // 获取查询结果的记录
        List<Map> records = page.getRecords();
        // 对每条记录进行操作
        for (Map<String, Object> record : records) {
            // 拿到老师姓名字符串转换成字符串数组
            String[] teacherNames = record.get("teachers_names").toString().split(",");
            String[] scores =  record.get("teachers_scores").toString().split(",");
            // 创建一个整数数组,长度与字符串数组相同
            Integer[] scores2 = new Integer[scores.length];
            // 循环遍历字符串数组,并将每个字符串转换为整数
            for (int i = 0; i < scores.length; i++) {
                scores2[i] = Integer.parseInt(scores[i].trim()); // 使用 trim() 去除可能的前后空白字符
            }
            record.put("teacherNames", teacherNames);
            record.put("teacherScores", scores2);
        }
        return new PageResult<>(page.getRecords(), page.getTotal());
    }

image.gif

controller:

@GetMapping("/sale-audition/teacherExamAnalysisTOP5")
    @Operation(summary = "教师成绩分析表TOP5")
    public CommonResult teacherExamAnalysisTOP5(@Valid DataPageReqVO pageReqVO) {
        return success(dataService.teacherExamAnalysisTOP5(pageReqVO));
    }

image.gif


目录
相关文章
|
6月前
|
存储 JavaScript 数据可视化
vue3+echarts应用——深度遍历html的dom结构并用树图进行可视化
vue3+echarts应用——深度遍历html的dom结构并用树图进行可视化
164 1
|
3月前
|
数据可视化 Apache 索引
Vue3使用echarts仪表盘(gauge)
Apache ECharts 是一款强大的数据可视化库,其仪表盘图表(`gauge`)可用于展示度量数据。主要属性包括仪表盘数据源 `gaugeData`(必填)、容器宽度 `width`(默认 100%)及高度 `height`(默认 100%)。数据项需指定名称 `name` 和值 `value`,并支持额外属性。
184 2
Vue3使用echarts仪表盘(gauge)
|
3月前
|
资源调度 Apache 容器
Vue3使用echarts树图(tree)
本文介绍了如何在 Vue2 项目中使用 Echarts 实现树图(tree)功能。通过按需引入 Echarts 组件和相关依赖,文章详细展示了如何创建一个可自定义配置的树图组件 `TreeChart.vue`,包括树图数据源、容器尺寸、主题色等属性。此外,还提供了在线预览效果及代码示例,帮助读者快速实现树图功能。适用于需要展示层次结构数据的场景。
119 1
Vue3使用echarts树图(tree)
|
3月前
|
存储 JSON 前端开发
SpringCloud+Vue3一个字段多个存储以及回显
SpringCloud+Vue3一个字段多个存储以及回显
63 2
|
3月前
|
XML 前端开发 数据库
SpringCloud+Vue3主子表插入数据
SpringCloud+Vue3主子表插入数据
49 0
|
3月前
|
前端开发 数据可视化 JavaScript
【揭秘神器】如何用Pyecharts轻松召唤出Echarts?只需几行Python代码,让你的数据瞬间生动起来!
【8月更文挑战第21天】Pyecharts是一款基于Python的图表生成库,利用Echarts强大的JavaScript可视化能力,让开发者无需编写前端代码即可在Python环境中创建美观图表。本文通过实例演示如何安装Pyecharts并生成一个展示城市气温分布的柱状图,包括基本图表生成及自定义样式设置,如颜色调整、图例显示等,最终将图表嵌入HTML文件展示,适合各水平开发者快速掌握数据可视化技能。
50 0
|
3月前
|
XML 前端开发 数据库
SpringCloud+Vue3主子表插入数据
SpringCloud+Vue3主子表插入数据
30 0
|
6月前
|
数据采集 数据可视化 小程序
vue3+echarts可视化——记录我的2023编程之旅
vue3+echarts可视化——记录我的2023编程之旅
105 1
|
6月前
|
前端开发 JavaScript 定位技术
Docusaurus框架——react+antd+echarts自定义mdx生成图表代码解释文档
Docusaurus框架——react+antd+echarts自定义mdx生成图表代码解释文档
675 0
|
6月前
|
存储
vue2、vue3分别配置echarts多图表的同步缩放(二)
vue2、vue3分别配置echarts多图表的同步缩放
238 0