VUE+elementUI横向表格

最近有个需求需要表格横向,双向表头,然后形成矩阵
查了一些资料后,都模棱两可,汇总了一下,用以下方法实现

中间单元格需要做一个交叉取值,所以定义了一个方法,通过横向的id到纵向数据里面取到对应的值 翻页的话,可以通过监控表格的滚动条实现,但是不太好使,我就加了个按钮通过点击按钮获取下一页内容

html代码

<div class="doubleThTable">
    <el-table :data="tableData.data"
              style="width: 100%;"
              fit=true
              ref="table"
              height="100%"
              border>
        <el-table-column
                label="我方"
                align="right"
                fixed="left"
                width="150">
            <el-table-column

                    prop="otherName"
                    label="对方"
                    width="160"
                    align="left"
            >
                <template slot-scope="scope">
                    <a @click="detail(scope.row.stnId,'',scope.row.stnName)"
                       style="color:#ffffff;cursor:pointer;font-size: 14px;display: block;width: 100%;height: 100%">
                        {{scope.row.stnName}}
                    </a>
                </template>
            </el-table-column>

        </el-table-column>

        <el-table-column v-for="(col,i) in columnList"
                         :key="i"
                         :label="col.stnName"
                         align="center" width="100%"

        >
            <template slot-scope="scope">
                <a @click="detail(scope.row.stnId,col.stnId,scope.row.stnName)"
                   style="color:#ffffff;cursor:pointer;font-size: 16px;display: block;width: 100%;height: 100%">
                    {{getItemValue(scope.row,col)}}
                </a>
            </template>
        </el-table-column>
    </el-table>
</div>

js代码

var rootVm = new Vue({
    el: '#domestic_coord',
    data() {
        return {
            dataForm: {
                pageNum: 1,
                pageSize: 50,
            },
            columnList: [],
            tableData: {
                data: [],
                total: 0
            },
        }
    },
    created: function () {
        this.loadTableData();
    },
    watch: {
        //因为左边第一列固定会造成,样式错乱,每次需要更新布局
        "tableData": {
            handler() {
                this.$nextTick(() => {
                    this.refs.table.doLayout();
                });
            }
        }
    },
    mounted: function () {


        

    },
    methods: {
       
        //初始化表格数据
        loadTableData() {
            let index = layer.load(1, {
                shade: [0.1, '#fff'] //0.1透明度的白色背景
            });
            axios.post('/xxxxx/loadData', this.dataForm)
                .then(function (response) {
                    if (response.data.stnList.length > 0) {
                        rootVm.columnList = response.data.otherStnList;
                        rootVm.tableData.data = response.data.stnList;
                    }
                    rootVm.$refs.table.doLayout();
                    layer.close(index);
                })
                .catch(function (error) {
                    console.log(error)
                    layer.close(index);
                });
        },
       //单元格数据
        getItemValue(row, col) {
                if (row[col.stnId] == undefined) {
                    return "--";
                }
                return row[col.stnId]
        }
        ,
    //加载更多数据
        loadMoreTableData() {
            rootVm.dataForm.pageNum = rootVm.dataForm.pageNum + 1;
            this.loadTableData();
            this.$refs.table.bodyWrapper.scrollLeft = 0;
        },
        
    }
})

响应数据

{
    "otherStnList": [
        
        {
            "dataId": "111112b",
            "stnType": null,
            "stnName": "FY-2B",
            "ntcType": null,
            "longNom": 86.5,
            
        },
        {
            "dataId": "5555-2bs",
            "stnType": null,
            "stnName": "F2323BS",
            "ntcType": null,
            "longNom": 86.5,
            
        },
        {
            "dataId": "344-a-86.5e",
            "stnType": null,
            "stnName": "FY4242141.5E",
            "ntcType": null,
            "longNom": 86.5,
            
        },
        {
            "dataId": "1213-a-99.5e",
            "stnType": null,
            "stnName": "FYGE424299.5E",
            "ntcType": null,
            "longNom": 99.5,
            
        },
        {
            "dataId": "32222-96e",
            "stnType": null,
            "stnName": "SIGN42T-96E",
            "ntcType": null,
            "longNom": 96.0,
            
        },
        {
            "dataId": "3232-96e_1",
            "stnType": null,
            "stnName": "SIGN4214196E_1",
            "ntcType": null,
            "longNom": 96.2,
            
        },
        {
            "dataId": "3132-3",
            "stnType": null,
            "stnName": "STA4141ME-3",
            "ntcType": null,
            "longNom": 89.8,
            
        }
    ],
    "stnList": [
        {
            "dataId": "32132",
            "stnName": "APSTAR-2",
            "longNom": 134.0,
            "111112b": "未知"
        }
    ]
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值