构建一个表格,能够实现一对多的数据形式(已自用于项目),形象而便于使用

本文介绍如何在Vue项目中利用iView组件库实现表格的一对多数据展示,通过处理行和列的关系,展示国家信息安全漏洞共享平台周度反馈情况。示例代码详细展示了模板字符串、数据处理和方法,确保按照这种方法可在实际项目中实现。附带了真实数据和操作方法。
摘要由CSDN通过智能技术生成

Code Is Never Die !

本功能测试依托于Vue渐进式框架、Iview组件库。

功能实战化

博主已在工作项目中亲身使用,确保只要按照这种方法肯定能使用,项目中使用,可以和后台提前沟通好数据格式,这样确保万无一失!
附录项目中真实数据和展现情况!

实现功能

构建一个表格,能够实现一对多的情况,例如国家信息安全漏洞共享平台总结周度漏洞反馈情况,一些实力较强的公司(启安信、启明星辰等)可能贡献颇多,在以表格形式列举报表时,需要一对多的展现形式:
实现结果示例

实现代码(详细)

模板字符串部分

<Table
   height="318"
   border
   // 关键处理行、列关系
   :span-method="handleSpan"
   align="center"
   // 表头
   :columns="columns1"
   :data="processList">
      <template slot-scope="{ row, index }" slot="view">
          <span class="alianjie" @click="getcourse(row)">{{row.process_name}}</span>
      </template>
</Table>

引入lodash工具

import _ from "lodash"; // 包含很多方法很实用!

data部分

processList: [],
// 表头内容
columns1: [
  { title: "应用名", key: "appname", align: "center" },
  { title: "进程名", slot: "view", align: "center" },
  { title: "pid", key: "pid", align: "center" },
],

created部分

// 初始化表格
created() {
  this.getExProcess();
},

methods部分

// 初始化数据并处理行列关系
getExProcess() {
	// 一对多的在同一个数组包裹中
    this.processList = [
        [{ appname: "应用1", process_name: "进程1", pid: 1 }],
        [{ appname: "应用2", process_name: "进程2", pid: 2 }],
        [
        { appname: "应用3", process_name: "进程3", pid: 3 },
        { appname: "应用3", process_name: "进程4", pid: 4 },
        ],
        [
        { appname: "应用4", process_name: "进程5", pid: 5 },
        { appname: "应用3", process_name: "进程6", pid: 6 },
        ],
        [
        { appname: "应用5", process_name: "进程7", pid: 7 },
        { appname: "应用3", process_name: "进程8", pid: 8 },
        ],
        [
        { appname: "应用6", process_name: "进程9", pid: 9 },
        { appname: "应用4", process_name: "进程10", pid: 10 },
        ],
    ];
    this.processList.forEach((Item) => {
        Item.forEach((item, index) => {
            if (index == 0) {
                Object.assign(item, { rowSpan: Item.length, colSpan: 1 });
            } else {
                Object.assign(item, { rowSpan: 0, colSpan: 0 });
            }
        });
    });
    this.processList = _.flattenDeep(this.processList);
    console.log(this.processList);
},
// 处理合并进程表格
handleSpan({ row, column, rowIndex, columnIndex }) {
    if (columnIndex === 0 && row) {
        return [row.rowSpan, row.colSpan];
    }
},
getcourse(row){
//对某项进行操作,可以拿到这一行信息
}

附录

目前后端只返回一个一对多数据
返回数据
系统展示

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

rainux.

生活最美——开心最大

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值