zoukankan      html  css  js  c++  java
  • element 动态合并表格

    <!DOCTYPE html>
    <html lang="en">
    
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>Document</title>
    </head>
    <div id="app">
        <el-table style="421px" :data="historyData" :span-method="objectSpanMethod" :border="true">
            <el-table-column prop="checkRoom" label="科室" align="center" width="140">
            </el-table-column>
            <el-table-column prop="checkProject" label="检查项目" align="center" width="140">
            </el-table-column>
            <el-table-column prop="attention" label="注意事项" align="center" width="140">
            </el-table-column>
        </el-table>
    </div>
    
    <body>
        <script src="https://cdn.staticfile.org/vue/2.4.2/vue.min.js"></script>
        <!-- 引入样式 -->
        <link rel="stylesheet" href="https://unpkg.com/element-ui/lib/theme-chalk/index.css">
        <!-- 引入组件库 -->
        <script src="https://unpkg.com/element-ui/lib/index.js"></script>
        <script>
            new Vue({
                el: '#app',
                data: function () {
                    return {
                        historyData: [],
                    }
                },
                mounted() {
                    let dataArr = [{
                        checkRoom: 'CTROOM',
                        checkProject: '颈椎MRICT',
                        attention: '检查前空腹',
                    }, {
                        checkRoom: 'CTROOM',
                        checkProject: '颈椎MRICT1',
                        attention: '检查前空腹',
                    }, {
                        checkRoom: 'CTROOM',
                        checkProject: '颈椎MRICT1',
                        attention: '检查前空腹',
                    }, {
                        checkRoom: 'CTROOM',
                        checkProject: '颈椎MRICT1',
                        attention: '检查前空腹',
                    }, {
                        checkRoom: 'CTROOM',
                        checkProject: '颈椎MRICT3',
                        attention: '检查前空腹',
                    }, {
                        checkRoom: 'DR',
                        checkProject: '鼻骨',
                        attention: '检查前空腹',
                    }, {
                        checkRoom: 'DR',
                        checkProject: '鼻骨',
                        attention: '检查前空腹',
                    }, {
                        checkRoom: 'DR',
                        checkProject: '头骨',
                        attention: '检查前空腹',
                    }];
                    let dataSolve = this.mergeTableRow(dataArr, ["checkRoom", "checkProject"])
                    this.historyData = dataArr;
                },
                methods: {
                    // 合并表格函数
                    mergeTableRow(data, merge) {
                        if (!merge || merge.length === 0) {
                            return data;
                        }
                        merge.forEach((m) => {
                            const mList = {};
                            data = data.map((v, index) => {
                                const rowVal = v[m];
                                if (mList[rowVal] && mList[rowVal].newIndex === index) {
                                    mList[rowVal]["num"]++;
                                    mList[rowVal]["newIndex"]++;
                                    data[mList[rowVal]["index"]][m + "-span"].rowspan++;
                                    v[m + "-span"] = {
                                        rowspan: 0,
                                        colspan: 0,
                                    };
                                } else {
                                    mList[rowVal] = {
                                        num: 1,
                                        index: index,
                                        newIndex: index + 1,
                                    };
                                    v[m + "-span"] = {
                                        rowspan: 1,
                                        colspan: 1,
                                    };
                                }
                                return v;
                            });
                        });
                        return data;
                    },
                    objectSpanMethod({ row, column, rowIndex, columnIndex }) {
                        const span = column["property"] + "-span";
                        if (row[span]) {
                            return row[span];
                        }
                    },
                }
            })
        </script>
    </body>
    
    </html>
    

      

  • 相关阅读:
    Mac下使用SSH连接远程Linux服务器
    Kafka 中文文档
    计算器如何使用取模功能,调出程序员功能,35171799%15的结果是9
    pm2好用的node进程管理工具,监控进程开机自启动,java进程配置,安装Nodejs环境
    vuejs Mac环境下npm run serve 提示 node_modules/.bin/vue-cli-service: Permission denied问题解决方案
    0day相关信息安全技术
    零基础如何学习Web安全?
    余弦的渗透利器
    知道创宇研发技能表v3.1
    Redis主从复制、哨兵、Cluster三种模式
  • 原文地址:https://www.cnblogs.com/Jansens520/p/15142946.html
Copyright © 2011-2022 走看看