iview表格Table表头动态化实现

业务逻辑:根据日期,时间筛选跨度固定为3个月,获取数据,表格动态按月份展示,看图
在这里插入图片描述
在这里插入图片描述
表格还是这么简单

        <Col span="8"> 时 间:
          <Date-picker type="month" format="yyyy-MM" :clearable='false' :editable='false' :options="startOption" v-model="searchParams.sDate" style="width: 200px"></Date-picker>&emsp;至&emsp;
          <Date-picker type="month" format="yyyy-MM" :clearable='false' :editable='false' :options="endOption" v-model="searchParams.eDate" style="width: 200px"></Date-picker>
        </Col>
        <Table stripe :columns="tableColumns" :data="tableData"></Table>
    

思路:固定时间跨度监听解决不赘述,搜索获取数据后,对tableColumns,进行处理,(push,splice,uhshift…都可以)引起DOM刷新,
处理tableColumns的函数
this.$utils.time.formatTime为封装好的时间处理函数,moment.js

    // 初始化表头
    columsInit () {
      let timeStr1 = this.$utils.time.formatTime(this.searchParams.sDate, 'YYYY-MM')
      let startMonth = timeStr1 + '月维护企业数'
      let timeStr2 = this.$utils.time.formatAddTime(this.searchParams.sDate, 'YYYY-MM', 1, 'months')
      let midMonth = timeStr2 + '月维护企业数'
      let timeStr3 = this.$utils.time.formatTime(this.searchParams.eDate, 'YYYY-MM')
      let endMonth = timeStr3 + '月维护企业数'
      this.tableColumns.splice(3, 4,
        {
          title: startMonth,
          align: 'center',
          render: (h, params) => {
          //下面业务逻辑直接不用看
            // console.log(timeStr1)
         /*   let arr = params.row.historyDataListDto || [];
            let obj = null
            arr.forEach((item, index) => { //有些人员,有些月份的数据没有
              if (item.month == timeStr1) {
                obj = arr[index]
              }
            })
            if (obj) {
              return h('a', {
                on: {
                  click: () => {
                    this.toDetail(params.row.uId, params.row.class2Id, obj.month, obj.month, obj.dirId)
                  }
                }
              }, obj.whsNum)
            } else {
              return h('span', '--')
            }
         */业务逻辑
          }
        },
        {
          title: midMonth,
          align: 'center',
          render: (h, params) => {
          
          }
        },
        {
          title: endMonth,
          align: 'center',
          render: (h, params) => {
            
          }
        },
        {
          title: '平均',
          align: 'center',
          key: 'avgNum'
        }
      )
    },
  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值