Layui表格中嵌套echarts图表

本文介绍了如何在Layui表格中使用ECharts创建嵌套的柱状图,通过jQuery和layui插件实现动态数据绑定和图表显示。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Layui表格中嵌套echarts图表

<!DOCTYPE html>
<html lang="zh">
<head>
    <meta charset="UTF-8">
    <title>echart表格示例</title>
    <link rel="stylesheet" href="../../Plugins/layui/css/layui.css">
    <style>
        .layui-table-cell {
            height: auto;
        }
    </style>
</head>
<body>
    <div class="layui-container">
        <table id="demoTable" lay-filter="test"></table>
    </div>
    <script src="../../Plugins/layui/layui.js"></script>
    <script src="../../js/jquery-2.1.1.min.js"></script>
    <script src="../../js/echarts5.4.1min.js"></script>
    <script>
        $(document).ready(function () {
            // 假设的数据源,实际中从服务器获取
            var demoData = [
                { id: 1, name: '项目一', chartData: { values: [1, 2, 3, 4] } },
                { id: 2, name: '项目二', chartData: { values: [11, 12, 13, 14] } },
            ];
            layui.use(['table', 'laytpl',], function () {
                var table = layui.table;
                var laytpl = layui.laytpl;
                // 定义表格列
                var cols = [
                    [
                        { field: 'name', title: '项目名称' },
                        {
                            field: 'chartData',
                            title: '图表展示',
                            align: 'center',
                            width: 180,
                            templet: function (d) {
                                return '<div id="echart_' + d.id + '" style="height:100%;width:100%"></div>';
                            },
                            unresize: true
                        }
                    ]
                ];
                // 渲染表格
                table.render({
                    elem: '#demoTable',
                    data: demoData,
                    cols: cols,
                    done: function (res, curr, count) {
                        layui.each(res.data, function (index, item) {
                            var chartDomId = 'echart_' + item.id;
                            var chartDom = document.getElementById(chartDomId);
                            // 初始化并配置Echarts图表(这里假设为一个柱状图)
                            var myChart = echarts.init(chartDom);
                            var option = {
                                grid: {
                                    top: 15,
                                    bottom: 25,
                                    left: 25,
                                    right: 10,
                                    "containable": true,
                                },
                                xAxis: {
                                    data: ['衬衫', '羊毛衫', '雪纺衫', '裤子', '高跟鞋', '袜子']
                                },
                                yAxis: {},
                                series: [
                                    {
                                        name: '销量',
                                        type: 'bar',
                                        data: [5, 20, 36, 10, 10, 20]
                                    }
                                ]
                            };
                            myChart.setOption(option);
                        });
                    }
                });
            });
        })
    </script>
</body>
</html>

要在表格嵌套echarts,你可以使用Vue3的Composition API,将表格echarts分别封装为组件,然后在一个父组件中将它们组合起来。以下是一个简单的示例: 1. 首先,在main.js中引入echarts: ```javascript import * as echarts from 'echarts'; import { createApp } from 'vue'; import App from './App.vue'; const app = createApp(App); app.config.globalProperties.$echarts = echarts; app.mount('#app'); ``` 2. 创建一个Table组件和一个Echarts组件,分别用来展示表格图表: ```javascript // Table.vue <template> <table> <thead> <tr> <th v-for="header in headers">{{ header }}</th> </tr> </thead> <tbody> <tr v-for="(row, index) in rows" :key="index"> <td v-for="(cell, index) in row" :key="index">{{ cell }}</td> <td> <Echarts :data="chartData[index]" /> </td> </tr> </tbody> </table> </template> <script> import { ref } from 'vue'; import Echarts from './Echarts.vue'; export default { props: { headers: { type: Array, required: true, }, rows: { type: Array, required: true, }, chartData: { type: Array, required: true, }, }, components: { Echarts, }, }; </script> ``` ```javascript // Echarts.vue <template> <div ref="chart" style="width: 100%; height: 100%"></div> </template> <script> import { ref, onMounted, watch } from 'vue'; export default { props: { data: { type: Object, required: true, }, }, setup(props) { const chartRef = ref(null); onMounted(() => { const chart = props.$echarts.init(chartRef.value); chart.setOption(props.data); }); watch( () => props.data, () => { const chart = props.$echarts.getInstanceByDom(chartRef.value); chart.setOption(props.data); }, ); return { chartRef, }; }, }; </script> ``` 3. 最后,在父组件中引入Table和Echarts组件,并将它们组合起来: ```javascript <template> <div> <Table :headers="headers" :rows="rows" :chartData="chartData" /> </div> </template> <script> import { reactive } from 'vue'; import Table from './Table.vue'; export default { components: { Table, }, setup() { const headers = ['Name', 'Age', 'Gender']; const rows = [ ['Alice', 25, 'Female'], ['Bob', 30, 'Male'], ['Charlie', 35, 'Male'], ]; const chartData = reactive([ { xAxis: { type: 'category', data: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'], }, yAxis: { type: 'value', }, series: [ { data: [120, 200, 150, 80, 70, 110, 130, 90, 170, 240, 150, 200], type: 'line', }, ], }, { xAxis: { type: 'category', data: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'], }, yAxis: { type: 'value', }, series: [ { data: [50, 60, 70, 80, 90, 100, 110, 120, 130, 140, 150, 160], type: 'line', }, ], }, { xAxis: { type: 'category', data: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'], }, yAxis: { type: 'value', }, series: [ { data: [10, 20, 30, 40, 50, 60, 70, 80, 90, 100, 110, 120], type: 'line', }, ], }, ]); return { headers, rows, chartData, }; }, }; </script> ``` 这样,就可以在表格嵌套echarts了。你可以根据实际需求进行修改和调整。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值