实操记录之-----Ant Design of Vue 增强版动态合并单元格,自动根据数据进行合并,可自定义横纵向合并

前几天搞了个简易版的动态合并单元格

但是需求有变化,就只能稍微改改了~~

欢迎路过的各位大佬指出我代码的问题~~~~

另: 代码执行效率不是很高,如果需要大量渲染更多数据建议可以直接使用原生

<template>
  <page-view :title="title">
    <h1>第一種數據結構,前端渲染</h1>
    <div class="snall-table-spacing">
      <a-table
        :columns="columns"
        :dataSource="dataArr"
        row-key="id"
        :scroll="{x:5900, y: 500 }"
        bordered
        :pagination="false"
      >
        <template slot="name" slot-scope="text">
          <a href="javascript:;">{{ text }}</a>
        </template>
      </a-table>
    </div>
  </page-view>
</template>
<script>
import { PageView } from ‘@/layouts‘
export default {
  // name: ‘paaaaaaaTest‘,
  components: {
    PageView
  },
  data() {
    return {
      renderContent: function() {},
      countArr: [],
      dataArr: [
        {
          date: ‘2020/03/20‘,
          myaaaaaa: ‘aaaaaaaaa‘,
          floor: ‘bbbbb‘,
          myleeeeeee: ‘cccccc‘,
          ssssttt: ‘dddd‘,
          paaaaaaa: ‘paaaaaaa‘,
          um: ‘0.3um‘,
          lsl: ‘3000‘,
          usl: ‘4000‘,
          l_0: ‘27400‘,
          l_1: ‘27420‘,
          l_2: ‘2742300‘,
          l_3: ‘27r400‘,
          l_4: ‘27df400‘,
          l_5: ‘274f00‘,
          l_6: ‘274400‘,
          l_7: ‘27400‘,
          l_8: ‘273400‘,
          l_9: ‘27rt400‘,
          l_10: ‘27er400‘,
          l_11: ‘27400‘,
          l_12: ‘2765400‘,
          l_13: ‘2745400‘,
          l_14: ‘27400‘,
          l_15: ‘27400‘,
          l_16: ‘27400‘,
          l_17: ‘27400‘,
          l_18: ‘27400‘,
          l_19: ‘274500‘,
          l_20: ‘274400‘,
          l_21: ‘274400‘,
          l_22: ‘275400‘,
          l_23: ‘274600‘,
          l_24: ‘27400‘,
          l_25: ‘274500‘,
          l_26: ‘274500‘,
          l_27: ‘274500‘,
          l_28: ‘274500‘,
          l_29: ‘275400‘,
          l_30: ‘274500‘,
          l_31: ‘274500‘,
          l_32: ‘274500‘,
          l_33: ‘274500‘,
          l_34: ‘274400‘,
          l_35: ‘275400‘,
          l_36: ‘2744500‘,
          l_37: ‘27400‘,
          l_38: ‘27456400‘,
          l_39: ‘276546400‘,
          l_40: ‘27400‘,
          l_41: ‘27400‘,
          l_42: ‘27400‘,
          l_43: ‘27400‘,
          l_44: ‘2740540‘,
          l_45: ‘275400‘,
          l_46: ‘2754040‘,
          l_47: ‘274500‘,
          l_48: ‘274400‘
        },
        {
          date: ‘2020/03/20‘,
          myaaaaaa: ‘aaaaaaaaa‘,
          floor: ‘bbbbb‘,
          myleeeeeee: ‘cccccc‘,
          ssssttt: ‘dddd‘,
          paaaaaaa: ‘paaaaaaa‘,
          um: ‘0.5um‘,
          lsl: ‘3000‘,
          usl: ‘4000‘,
          l_0: ‘27400‘,
          l_1: ‘27420‘,
          l_2: ‘2742300‘,
          l_3: ‘27r400‘,
          l_4: ‘27df400‘,
          l_5: ‘274f00‘,
          l_6: ‘274400‘,
          l_7: ‘27400‘,
          l_8: ‘273400‘,
          l_9: ‘27rt400‘,
          l_10: ‘27er400‘,
          l_11: ‘27400‘,
          l_12: ‘2765400‘,
          l_13: ‘2745400‘,
          l_14: ‘27400‘,
          l_15: ‘27400‘,
          l_16: ‘27400‘,
          l_17: ‘27400‘,
          l_18: ‘27400‘,
          l_19: ‘274500‘,
          l_20: ‘274400‘,
          l_21: ‘274400‘,
          l_22: ‘275400‘,
          l_23: ‘274600‘,
          l_24: ‘27400‘,
          l_25: ‘274500‘,
          l_26: ‘274500‘,
          l_27: ‘274500‘,
          l_28: ‘274500‘,
          l_29: ‘275400‘,
          l_30: ‘274500‘,
          l_31: ‘274500‘,
          l_32: ‘274500‘,
          l_33: ‘274500‘,
          l_34: ‘274400‘,
          l_35: ‘275400‘,
          l_36: ‘2744500‘,
          l_37: ‘27400‘,
          l_38: ‘27456400‘,
          l_39: ‘276546400‘,
          l_40: ‘27400‘,
          l_41: ‘27400‘,
          l_42: ‘27400‘,
          l_43: ‘27400‘,
          l_44: ‘2740540‘,
          l_45: ‘275400‘,
          l_46: ‘2754040‘,
          l_47: ‘274500‘,
          l_48: ‘274400‘
        },
        {
          date: ‘2020/03/20‘,
          myaaaaaa: ‘aaaaaaaaa‘,
          floor: ‘bbbbb‘,
          myleeeeeee: ‘cccccc‘,
          ssssttt: ‘dddd‘,
          paaaaaaa: ‘paaaaaaa‘,
          um: ‘1.0um‘,
          lsl: ‘3000‘,
          usl: ‘4000‘,
          l_0: ‘27400‘,
          l_1: ‘27420‘,
          l_2: ‘2742300‘,
          l_3: ‘27r400‘,
          l_4: ‘27df400‘,
          l_5: ‘274f00‘,
          l_6: ‘274400‘,
          l_7: ‘27400‘,
          l_8: ‘273400‘,
          l_9: ‘27rt400‘,
          l_10: ‘27er400‘,
          l_11: ‘27400‘,
          l_12: ‘2765400‘,
          l_13: ‘2745400‘,
          l_14: ‘27400‘,
          l_15: ‘27400‘,
          l_16: ‘27400‘,
          l_17: ‘27400‘,
          l_18: ‘27400‘,
          l_19: ‘274500‘,
          l_20: ‘274400‘,
          l_21: ‘274400‘,
          l_22: ‘275400‘,
          l_23: ‘274600‘,
          l_24: ‘27400‘,
          l_25: ‘274500‘,
          l_26: ‘274500‘,
          l_27: ‘274500‘,
          l_28: ‘274500‘,
          l_29: ‘275400‘,
          l_30: ‘274500‘,
          l_31: ‘274500‘,
          l_32: ‘274500‘,
          l_33: ‘274500‘,
          l_34: ‘274400‘,
          l_35: ‘275400‘,
          l_36: ‘2744500‘,
          l_37: ‘27400‘,
          l_38: ‘27456400‘,
          l_39: ‘276546400‘,
          l_40: ‘27400‘,
          l_41: ‘27400‘,
          l_42: ‘27400‘,
          l_43: ‘27400‘,
          l_44: ‘2740540‘,
          l_45: ‘275400‘,
          l_46: ‘2754040‘,
          l_47: ‘274500‘,
          l_48: ‘274400‘
        },
        {
          date: ‘2020/03/20‘,
          myaaaaaa: ‘aaaaaaaaa‘,
          floor: ‘bbbbb‘,
          myleeeeeee: ‘cccccc‘,
          ssssttt: ‘dddd‘,
          paaaaaaa: ‘paaaaaaa‘,
          um: ‘5.0um‘,
          lsl: ‘3000‘,
          usl: ‘4000‘,
          l_0: ‘27400‘,
          l_1: ‘27420‘,
          l_2: ‘2742300‘,
          l_3: ‘27r400‘,
          l_4: ‘27df400‘,
          l_5: ‘274f00‘,
          l_6: ‘274400‘,
          l_7: ‘27400‘,
          l_8: ‘273400‘,
          l_9: ‘27rt400‘,
          l_10: ‘27er400‘,
          l_11: ‘27400‘,
          l_12: ‘2765400‘,
          l_13: ‘2745400‘,
          l_14: ‘27400‘,
          l_15: ‘27400‘,
          l_16: ‘27400‘,
          l_17: ‘27400‘,
          l_18: ‘27400‘,
          l_19: ‘274500‘,
          l_20: ‘274400‘,
          l_21: ‘274400‘,
          l_22: ‘275400‘,
          l_23: ‘274600‘,
          l_24: ‘27400‘,
          l_25: ‘274500‘,
          l_26: ‘274500‘,
          l_27: ‘274500‘,
          l_28: ‘274500‘,
          l_29: ‘275400‘,
          l_30: ‘274500‘,
          l_31: ‘274500‘,
          l_32: ‘274500‘,
          l_33: ‘274500‘,
          l_34: ‘274400‘,
          l_35: ‘275400‘,
          l_36: ‘2744500‘,
          l_37: ‘27400‘,
          l_38: ‘27456400‘,
          l_39: ‘276546400‘,
          l_40: ‘27400‘,
          l_41: ‘27400‘,
          l_42: ‘27400‘,
          l_43: ‘27400‘,
          l_44: ‘2740540‘,
          l_45: ‘275400‘,
          l_46: ‘2754040‘,
          l_47: ‘274500‘,
          l_48: ‘274400‘
        },
        {
          date: ‘2020/03/20‘,
          myaaaaaa: ‘aaaaaaaaa‘,
          floor: ‘bbbbb‘,
          myleeeeeee: ‘cccccc‘,
          ssssttt: ‘dddd‘,
          paaaaaaa: ‘tttttttt‘,
          um: ‘‘,
          lsl: ‘3000‘,
          usl: ‘4000‘,
          l_0: ‘27400‘,
          l_1: ‘27420‘,
          l_2: ‘2742300‘,
          l_3: ‘27r400‘,
          l_4: ‘27df400‘,
          l_5: ‘274f00‘,
          l_6: ‘274400‘,
          l_7: ‘27400‘,
          l_8: ‘273400‘,
          l_9: ‘27rt400‘,
          l_10: ‘27er400‘,
          l_11: ‘27400‘,
          l_12: ‘2765400‘,
          l_13: ‘2745400‘,
          l_14: ‘27400‘,
          l_15: ‘27400‘,
          l_16: ‘27400‘,
          l_17: ‘27400‘,
          l_18: ‘27400‘,
          l_19: ‘274500‘,
          l_20: ‘274400‘,
          l_21: ‘274400‘,
          l_22: ‘275400‘,
          l_23: ‘274600‘,
          l_24: ‘27400‘,
          l_25: ‘274500‘,
          l_26: ‘274500‘,
          l_27: ‘274500‘,
          l_28: ‘274500‘,
          l_29: ‘275400‘,
          l_30: ‘274500‘,
          l_31: ‘274500‘,
          l_32: ‘274500‘,
          l_33: ‘274500‘,
          l_34: ‘274400‘,
          l_35: ‘275400‘,
          l_36: ‘2744500‘,
          l_37: ‘27400‘,
          l_38: ‘27456400‘,
          l_39: ‘276546400‘,
          l_40: ‘27400‘,
          l_41: ‘27400‘,
          l_42: ‘27400‘,
          l_43: ‘27400‘,
          l_44: ‘2740540‘,
          l_45: ‘275400‘,
          l_46: ‘2754040‘,
          l_47: ‘274500‘,
          l_48: ‘274400‘
        },
        {
          date: ‘2020/03/20‘,
          myaaaaaa: ‘aaaaaaaaa‘,
          floor: ‘bbbbb‘,
          myleeeeeee: ‘cccccc‘,
          ssssttt: ‘dddd‘,
          paaaaaaa: ‘hehehehehe‘,
          um: ‘‘,
          lsl: ‘3000‘,
          usl: ‘4000‘,
          l_0: ‘27400‘,
          l_1: ‘27420‘,
          l_2: ‘2742300‘,
          l_3: ‘27r400‘,
          l_4: ‘27df400‘,
          l_5: ‘274f00‘,
          l_6: ‘274400‘,
          l_7: ‘27400‘,
          l_8: ‘273400‘,
          l_9: ‘27rt400‘,
          l_10: ‘27er400‘,
          l_11: ‘27400‘,
          l_12: ‘2765400‘,
          l_13: ‘2745400‘,
          l_14: ‘27400‘,
          l_15: ‘27400‘,
          l_16: ‘27400‘,
          l_17: ‘27400‘,
          l_18: ‘27400‘,
          l_19: ‘274500‘,
          l_20: ‘274400‘,
          l_21: ‘274400‘,
          l_22: ‘275400‘,
          l_23: ‘274600‘,
          l_24: ‘27400‘,
          l_25: ‘274500‘,
          l_26: ‘274500‘,
          l_27: ‘274500‘,
          l_28: ‘274500‘,
          l_29: ‘275400‘,
          l_30: ‘274500‘,
          l_31: ‘274500‘,
          l_32: ‘274500‘,
          l_33: ‘274500‘,
          l_34: ‘274400‘,
          l_35: ‘275400‘,
          l_36: ‘2744500‘,
          l_37: ‘27400‘,
          l_38: ‘27456400‘,
          l_39: ‘276546400‘,
          l_40: ‘27400‘,
          l_41: ‘27400‘,
          l_42: ‘27400‘,
          l_43: ‘27400‘,
          l_44: ‘2740540‘,
          l_45: ‘275400‘,
          l_46: ‘2754040‘,
          l_47: ‘274500‘,
          l_48: ‘274400‘
        },
        {
          date: ‘2020/03/20‘,
          myaaaaaa: ‘aaaaaaaaa‘,
          floor: ‘bbbbb‘,
          myleeeeeee: ‘cccccc‘,
          ssssttt: ‘wwwwwww‘,
          paaaaaaa: ‘paaaaaaa‘,
          um: ‘0.3um‘,
          lsl: ‘3000‘,
          usl: ‘4000‘,
          l_0: ‘27400‘,
          l_1: ‘27420‘,
          l_2: ‘2742300‘,
          l_3: ‘27r400‘,
          l_4: ‘27df400‘,
          l_5: ‘274f00‘,
          l_6: ‘274400‘,
          l_7: ‘27400‘,
          l_8: ‘273400‘,
          l_9: ‘27rt400‘,
          l_10: ‘27er400‘,
          l_11: ‘27400‘,
          l_12: ‘2765400‘,
          l_13: ‘2745400‘,
          l_14: ‘27400‘,
          l_15: ‘27400‘,
          l_16: ‘27400‘,
          l_17: ‘27400‘,
          l_18: ‘27400‘,
          l_19: ‘274500‘,
          l_20: ‘274400‘,
          l_21: ‘274400‘,
          l_22: ‘275400‘,
          l_23: ‘274600‘,
          l_24: ‘27400‘,
          l_25: ‘274500‘,
          l_26: ‘274500‘,
          l_27: ‘274500‘,
          l_28: ‘274500‘,
          l_29: ‘275400‘,
          l_30: ‘274500‘,
          l_31: ‘274500‘,
          l_32: ‘274500‘,
          l_33: ‘274500‘,
          l_34: ‘274400‘,
          l_35: ‘275400‘,
          l_36: ‘2744500‘,
          l_37: ‘27400‘,
          l_38: ‘27456400‘,
          l_39: ‘276546400‘,
          l_40: ‘27400‘,
          l_41: ‘27400‘,
          l_42: ‘27400‘,
          l_43: ‘27400‘,
          l_44: ‘2740540‘,
          l_45: ‘275400‘,
          l_46: ‘2754040‘,
          l_47: ‘274500‘,
          l_48: ‘274400‘
        },
        {
          date: ‘2020/03/20‘,
          myaaaaaa: ‘aaaaaaaaa‘,
          floor: ‘bbbbb‘,
          myleeeeeee: ‘cccccc‘,
          ssssttt: ‘wwwwwww‘,
          paaaaaaa: ‘paaaaaaa‘,
          um: ‘0.5um‘,
          lsl: ‘3000‘,
          usl: ‘4000‘,
          l_0: ‘27400‘,
          l_1: ‘27420‘,
          l_2: ‘2742300‘,
          l_3: ‘27r400‘,
          l_4: ‘27df400‘,
          l_5: ‘274f00‘,
          l_6: ‘274400‘,
          l_7: ‘27400‘,
          l_8: ‘273400‘,
          l_9: ‘27rt400‘,
          l_10: ‘27er400‘,
          l_11: ‘27400‘,
          l_12: ‘2765400‘,
          l_13: ‘2745400‘,
          l_14: ‘27400‘,
          l_15: ‘27400‘,
          l_16: ‘27400‘,
          l_17: ‘27400‘,
          l_18: ‘27400‘,
          l_19: ‘274500‘,
          l_20: ‘274400‘,
          l_21: ‘274400‘,
          l_22: ‘275400‘,
          l_23: ‘274600‘,
          l_24: ‘27400‘,
          l_25: ‘274500‘,
          l_26: ‘274500‘,
          l_27: ‘274500‘,
          l_28: ‘274500‘,
          l_29: ‘275400‘,
          l_30: ‘274500‘,
          l_31: ‘274500‘,
          l_32: ‘274500‘,
          l_33: ‘274500‘,
          l_34: ‘274400‘,
          l_35: ‘275400‘,
          l_36: ‘2744500‘,
          l_37: ‘27400‘,
          l_38: ‘27456400‘,
          l_39: ‘276546400‘,
          l_40: ‘27400‘,
          l_41: ‘27400‘,
          l_42: ‘27400‘,
          l_43: ‘27400‘,
          l_44: ‘2740540‘,
          l_45: ‘275400‘,
          l_46: ‘2754040‘,
          l_47: ‘274500‘,
          l_48: ‘274400‘
        },
        {
          date: ‘2020/03/20‘,
          myaaaaaa: ‘aaaaaaaaa‘,
          floor: ‘bbbbb‘,
          myleeeeeee: ‘cccccc‘,
          ssssttt: ‘wwwwwww‘,
          paaaaaaa: ‘paaaaaaa‘,
          um: ‘1.0um‘,
          lsl: ‘3000‘,
          usl: ‘4000‘,
          l_0: ‘27400‘,
          l_1: ‘27420‘,
          l_2: ‘2742300‘,
          l_3: ‘27r400‘,
          l_4: ‘27df400‘,
          l_5: ‘274f00‘,
          l_6: ‘274400‘,
          l_7: ‘27400‘,
          l_8: ‘273400‘,
          l_9: ‘27rt400‘,
          l_10: ‘27er400‘,
          l_11: ‘27400‘,
          l_12: ‘2765400‘,
          l_13: ‘2745400‘,
          l_14: ‘27400‘,
          l_15: ‘27400‘,
          l_16: ‘27400‘,
          l_17: ‘27400‘,
          l_18: ‘27400‘,
          l_19: ‘274500‘,
          l_20: ‘274400‘,
          l_21: ‘274400‘,
          l_22: ‘275400‘,
          l_23: ‘274600‘,
          l_24: ‘27400‘,
          l_25: ‘274500‘,
          l_26: ‘274500‘,
          l_27: ‘274500‘,
          l_28: ‘274500‘,
          l_29: ‘275400‘,
          l_30: ‘274500‘,
          l_31: ‘274500‘,
          l_32: ‘274500‘,
          l_33: ‘274500‘,
          l_34: ‘274400‘,
          l_35: ‘275400‘,
          l_36: ‘2744500‘,
          l_37: ‘27400‘,
          l_38: ‘27456400‘,
          l_39: ‘276546400‘,
          l_40: ‘27400‘,
          l_41: ‘27400‘,
          l_42: ‘27400‘,
          l_43: ‘27400‘,
          l_44: ‘2740540‘,
          l_45: ‘275400‘,
          l_46: ‘2754040‘,
          l_47: ‘274500‘,
          l_48: ‘274400‘
        },
        {
          date: ‘2020/03/20‘,
          myaaaaaa: ‘aaaaaaaaa‘,
          floor: ‘bbbbb‘,
          myleeeeeee: ‘cccccc‘,
          ssssttt: ‘wwwwwww‘,
          paaaaaaa: ‘paaaaaaa‘,
          um: ‘5.0um‘,
          lsl: ‘3000‘,
          usl: ‘4000‘,
          l_0: ‘27400‘,
          l_1: ‘27420‘,
          l_2: ‘2742300‘,
          l_3: ‘27r400‘,
          l_4: ‘27df400‘,
          l_5: ‘274f00‘,
          l_6: ‘274400‘,
          l_7: ‘27400‘,
          l_8: ‘273400‘,
          l_9: ‘27rt400‘,
          l_10: ‘27er400‘,
          l_11: ‘27400‘,
          l_12: ‘2765400‘,
          l_13: ‘2745400‘,
          l_14: ‘27400‘,
          l_15: ‘27400‘,
          l_16: ‘27400‘,
          l_17: ‘27400‘,
          l_18: ‘27400‘,
          l_19: ‘274500‘,
          l_20: ‘274400‘,
          l_21: ‘274400‘,
          l_22: ‘275400‘,
          l_23: ‘274600‘,
          l_24: ‘27400‘,
          l_25: ‘274500‘,
          l_26: ‘274500‘,
          l_27: ‘274500‘,
          l_28: ‘274500‘,
          l_29: ‘275400‘,
          l_30: ‘274500‘,
          l_31: ‘274500‘,
          l_32: ‘274500‘,
          l_33: ‘274500‘,
          l_34: ‘274400‘,
          l_35: ‘275400‘,
          l_36: ‘2744500‘,
          l_37: ‘27400‘,
          l_38: ‘27456400‘,
          l_39: ‘276546400‘,
          l_40: ‘27400‘,
          l_41: ‘27400‘,
          l_42: ‘27400‘,
          l_43: ‘27400‘,
          l_44: ‘2740540‘,
          l_45: ‘275400‘,
          l_46: ‘2754040‘,
          l_47: ‘274500‘,
          l_48: ‘274400‘
        },
        {
          date: ‘2020/03/20‘,
          myaaaaaa: ‘aaaaaaaaa‘,
          floor: ‘bbbbb‘,
          myleeeeeee: ‘cccccc‘,
          ssssttt: ‘wwwwwww‘,
          paaaaaaa: ‘tttttttt‘,
          um: ‘‘,
          lsl: ‘3000‘,
          usl: ‘4000‘,
          l_0: ‘27400‘,
          l_1: ‘27420‘,
          l_2: ‘2742300‘,
          l_3: ‘27r400‘,
          l_4: ‘27df400‘,
          l_5: ‘274f00‘,
          l_6: ‘274400‘,
          l_7: ‘27400‘,
          l_8: ‘273400‘,
          l_9: ‘27rt400‘,
          l_10: ‘27er400‘,
          l_11: ‘27400‘,
          l_12: ‘2765400‘,
          l_13: ‘2745400‘,
          l_14: ‘27400‘,
          l_15: ‘27400‘,
          l_16: ‘27400‘,
          l_17: ‘27400‘,
          l_18: ‘27400‘,
          l_19: ‘274500‘,
          l_20: ‘274400‘,
          l_21: ‘274400‘,
          l_22: ‘275400‘,
          l_23: ‘274600‘,
          l_24: ‘27400‘,
          l_25: ‘274500‘,
          l_26: ‘274500‘,
          l_27: ‘274500‘,
          l_28: ‘274500‘,
          l_29: ‘275400‘,
          l_30: ‘274500‘,
          l_31: ‘274500‘,
          l_32: ‘274500‘,
          l_33: ‘274500‘,
          l_34: ‘274400‘,
          l_35: ‘275400‘,
          l_36: ‘2744500‘,
          l_37: ‘27400‘,
          l_38: ‘27456400‘,
          l_39: ‘276546400‘,
          l_40: ‘27400‘,
          l_41: ‘27400‘,
          l_42: ‘27400‘,
          l_43: ‘27400‘,
          l_44: ‘2740540‘,
          l_45: ‘275400‘,
          l_46: ‘2754040‘,
          l_47: ‘274500‘,
          l_48: ‘274400‘
        },
        {
          date: ‘2020/03/20‘,
          myaaaaaa: ‘aaaaaaaaa‘,
          floor: ‘bbbbb‘,
          myleeeeeee: ‘cccccc‘,
          ssssttt: ‘wwwwwww‘,
          paaaaaaa: ‘hehehehehe‘,
          um: ‘‘,
          lsl: ‘3000‘,
          usl: ‘4000‘,
          l_0: ‘27400‘,
          l_1: ‘27420‘,
          l_2: ‘2742300‘,
          l_3: ‘27r400‘,
          l_4: ‘27df400‘,
          l_5: ‘274f00‘,
          l_6: ‘274400‘,
          l_7: ‘27400‘,
          l_8: ‘273400‘,
          l_9: ‘27rt400‘,
          l_10: ‘27er400‘,
          l_11: ‘27400‘,
          l_12: ‘2765400‘,
          l_13: ‘2745400‘,
          l_14: ‘27400‘,
          l_15: ‘27400‘,
          l_16: ‘27400‘,
          l_17: ‘27400‘,
          l_18: ‘27400‘,
          l_19: ‘274500‘,
          l_20: ‘274400‘,
          l_21: ‘274400‘,
          l_22: ‘275400‘,
          l_23: ‘274600‘,
          l_24: ‘27400‘,
          l_25: ‘274500‘,
          l_26: ‘274500‘,
          l_27: ‘274500‘,
          l_28: ‘274500‘,
          l_29: ‘275400‘,
          l_30: ‘274500‘,
          l_31: ‘274500‘,
          l_32: ‘274500‘,
          l_33: ‘274500‘,
          l_34: ‘274400‘,
          l_35: ‘275400‘,
          l_36: ‘2744500‘,
          l_37: ‘27400‘,
          l_38: ‘27456400‘,
          l_39: ‘276546400‘,
          l_40: ‘27400‘,
          l_41: ‘27400‘,
          l_42: ‘27400‘,
          l_43: ‘27400‘,
          l_44: ‘2740540‘,
          l_45: ‘275400‘,
          l_46: ‘2754040‘,
          l_47: ‘274500‘,
          l_48: ‘274400‘
        }
      ],
      columns: []
    }
  },
  methods: {
    // 這個函數作用是輸入表格內容data以及表頭裡的dataIndex,返回一個需要合併的數組,只是單個的列需要合併的1
    conutfun(dataIndex) {
      var dataArr1 = this.dataArr
      var myArray = new Array(dataArr1.length) // 聲明一個數組,每個對應保存的是rowspan的值
      // console.log(dataArr1)
      var myKeyName = ‘‘ // 保存上一個值
      var count = 0 // 保存相同的值出現的次數
      var startIndex = 0 // 保存第一次這個值出現的位置
      for (var i = 0; i < dataArr1.length; i++) {
        var val = dataArr1[i][dataIndex]
        if (i === 0) {
          myKeyName = val
          count = 1
          myArray[0] = 1
        } else {
          if (val === myKeyName) {
            count++
            myArray[startIndex] = count
            myArray[i] = 0
          } else {
            count = 1
            myKeyName = val
            startIndex = i
            myArray[i] = 1
          }
        }
      }
      // console.log(myArray)
      return myArray
    },
    // 這個函數作用是輸入表格內容data以及表頭裡的dataIndex,返回一個需要合併的數組,只是單個的列需要合併的2
    // 這個函數的作用是把表格的表頭部分輸入,然後生成一個大對象,對象的key是對應的表格內容列名,數組的value對應的表格合併的列1
    // Name: (8) [6, 0, 0, 0, 0, 0, 1, 1]
    // age: (8) [1, 1, 1, 1, 4, 0, 0, 0]
    // age3: (8) [6, 0, 0, 0, 0, 0, 2, 0]
    // age4: (8) [5, 0, 0, 0, 0, 3, 0, 0]
    // agetwo: (8) [8, 0, 0, 0, 0, 0, 0, 0]
    // oid: (8) [1, 1, 1, 1, 1, 1, 1, 1]
    countArrFun() {
      var myNewArray = {}
      for (var i = 0; i < this.columns.length; i++) {
        const _ = this.columns[i]
        const arr = this.conutfun(_.dataIndex)
        myNewArray[_.dataIndex] = arr
      }
      // console.log(myNewArray)
      return myNewArray
    },
    // 這個函數的作用是把表格的表頭部分輸入,然後生成一個數組,數組的key是對應的表格內容列名,數組的value對應的表格合併的列2
    setColumns() {
      // 聲明一個對象,key是表格的標題,value 是表格每列的寬度
      var myObj = {
        date: 200,
        myaaaaaa: 100,
        floor: 100,
        myleeeeeee: 100,
        ssssttt: 100,
        paaaaaaa: 100,
        um: 100,
        lsl: 100,
        usl: 100,
        l_0: 100,
        l_1: 100,
        l_2: 100,
        l_3: 100,
        l_4: 100,
        l_5: 100,
        l_6: 100,
        l_7: 100,
        l_8: 100,
        l_9: 100,
        l_10: 100,
        l_11: 100,
        l_12: 100,
        l_13: 100,
        l_14: 100,
        l_15: 100,
        l_16: 100,
        l_17: 100,
        l_18: 100,
        l_19: 100,
        l_20: 100,
        l_21: 100,
        l_22: 100,
        l_23: 100,
        l_24: 100,
        l_25: 100,
        l_26: 100,
        l_27: 100,
        l_28: 100,
        l_29: 100,
        l_30: 100,
        l_31: 100,
        l_32: 100,
        l_33: 100,
        l_34: 100,
        l_35: 100,
        l_36: 100,
        l_37: 100,
        l_38: 100,
        l_39: 100,
        l_40: 100,
        l_41: 100,
        l_42: 100,
        l_43: 100,
        l_44: 100,
        l_45: 100,
        l_46: 100,
        l_47: 100,
        l_48: 100
      }
      // 聲明一個新的數組,用來放新生成的colums
      var newarr = []
      Object.keys(myObj).forEach((_, i) => {
        // 如果表格標題不是這幾個字段的話,就設置不用合併單元格,正常
        if ([‘date‘, ‘myaaaaaa‘, ‘floor‘, ‘myleeeeeee‘, ‘ssssttt‘, ‘paaaaaaa‘, ‘um‘].indexOf(_) < 0) {
          newarr.push({
            title: _,
            dataIndex: _,
            width: myObj[_],
            customRender: (value, row, index) => {
              const obj = {
                children: value,
                attrs: {}
              }
              if (this.countArr[_]) {
                obj.attrs.rowSpan = 1
              }
              return obj
            }
          })
        } else if (_ === ‘paaaaaaa‘) {
          // 如果表格標題是paaaaaaa的話,就設置如果內容是hehehehehe或者tttttttt向右合併,
          // 並且如果有重複字段的話,向下合併
          newarr.push({
            title: _,
            dataIndex: _,
            width: myObj[_],
            customRender: (value, row, index) => {
              const obj = {
                children: value,
                attrs: {}
              }
              if (this.countArr[_]) {
                obj.attrs.rowSpan = this.countArr[_][index]
              }
              // 自定義需求,如果表內容是這幾個,就橫向合併一個單元格,需要設置兩列的內容
              if ([‘hehehehehe‘, ‘tttttttt‘].indexOf(value) !== -1) {
                obj.attrs.colSpan = 2
              }
              // 自定義需求,如果表內容是這幾個,就橫向合併一個單元格,需要設置兩列的內容
              return obj
            }
          })
        } else if (_ === ‘um‘) {
          // 如果表格標題是um的話,就設置如果內容為空,就向右合併為0需要配合上一個,
          // 並且如果有重複字段的話,向下合併
          newarr.push({
            title: _,
            dataIndex: _,
            width: myObj[_],
            customRender: (value, row, index) => {
              const obj = {
                children: value,
                attrs: {}
              }
              if (this.countArr[_]) {
                obj.attrs.rowSpan = this.countArr[_][index]
              }
              // 自定義需求,如果表內容是這幾個,就橫向合併一個單元格,需要設置兩列的內容
              if (!value) {
                obj.attrs.colSpan = 0
              }
              // 自定義需求,如果表內容是這幾個,就橫向合併一個單元格,需要設置兩列的內容
              return obj
            }
          })
        } else {
          // 並且如果有重複字段的話,向下合併
          newarr.push({
            title: _,
            dataIndex: _,
            width: myObj[_],
            customRender: (value, row, index) => {
              const obj = {
                children: value,
                attrs: {}
              }
              if (this.countArr[_]) {
                // 向下合併
                obj.attrs.rowSpan = this.countArr[_][index]
              }
              return obj
            }
          })
        }
      })
      this.columns = newarr
    }
  },
  mounted() {
    this.setColumns()
    this.countArr = this.countArrFun()
  },
  computed: {
    title() {
      return this.$route.meta.title
    }
  }
}
</script>
<style lang="less" scoped>
@import url(‘./common-assets/index.less‘);
</style>

原文地址:https://www.cnblogs.com/sugartang/p/12540512.html

时间: 2024-11-07 23:23:55

实操记录之-----Ant Design of Vue 增强版动态合并单元格,自动根据数据进行合并,可自定义横纵向合并的相关文章

Ant Design of Vue —— setFieldsValue方法 动态操作Switch组件

在开发中经常使用Form组件管理表单,这次想通过form提供的setFieldsValue()方法动态改变Switch组件状态,却没有生效. 查阅官方文档之后,发现有如下说明:  加入valuePropName属性之后,就可以使用动态操作Switch组件了. 例如: 1 <a-switch 2 checkedChildren="开" 3 unCheckedChildren="关" 4 v-decorator="[ 5 'templateExempt'

vue中 表头 th 合并单元格,且表格列数不定的动态渲染方法

吐槽 今天,在vue中遇到 复杂表格的渲染 ,需要合并表头th的单元格,且合并单元格的那列的表头数据是动态数据,也就是不知道会有多少个表头列,而这几个表头列还分了好几个子表头. 这个需求在js里用Juicer模板很好做的,思路我是有的,但就是对于vue,我也算初学者,很多概念不是很懂,这就限制了思路. 在网上搜了很多合并单元格的都是简单的数据合并,也就是td合并, 不是我们的需求,就不贴了. 哎,废话不多说了,看代码吧: 代码示例 使用iviewui的table组件: 最初,直接使用项目中的iv

SFUD+FAL+EasyFlash典型场景需求分析,并记一次实操记录

SFUD+FAL+EasyFlash典型场景需求分析:用整个flash存储数据,上千条数据,读取得时候用easyflash很慢,估计要检索整个flash太慢了. 改进方法:分区检索. 1存数据时,根据数据特征进行划分,划分到特定的某个区,分区存储这些数据. 2检索数据时,首先根据待检索数据的特征,获取具体需要检索哪个分区.然后在该分区内使用easyflash提供的kv查询接口进行检索. /***********************************************下面开始实操 

exchange 2010 新建角色实操记录

环境:windows server 2008 r2 企业版64位, exchange2010sp2 需求:设立exchange日常操作员角色,仅做新用户邮箱的创建和更改配置,关闭代理发送.管理完全访问权限等其他所有权限. 问题:系统内置的recipient management角色组包含角色太多,如下: Recipient Management分配的角色: Distribution Groups Mail Enabled Public Folders Mail Recipient Creatio

华硕主板搭配pike 2008阵列卡实操记录

说来惭愧,我这个做运维的人员,对于服务器还不是很了解,软硬件都不是很了解: 生命在于折腾,成功在于实践! 环境:华硕z9pr主板,pike 2008阵列卡,4块使用了10年的SATA口500G 7200转机械硬盘: 搭建教程可以参考这个:https://zhidao.baidu.com/question/366202204853583852.html 如果实在不行,我个人建议就是不怕死,就直接干,出现了Ctrl+c或者其他提示的时候不要犹豫,按就是了.然后看不懂英文没关系,有道翻译App你值得拥

递归转迭代实操记录

针对那些经典的像素游戏设计的自动切图工具里用到种子填充算法的实现. 一开始是用递归实现的,后来遇到一些头像之类的比较大一点的图素,运行的时候经常占满C#默认的1M线程栈内存而崩溃.尝试使用各种多线方式改造并没有成功,于是干脆改成迭代形式,创建一个Stack自己完全精确控制其中的数据操作. 这里截取一段改成迭代后的代码,这是窗体的事件处理用cs代码.因为只是个小工具,没有完全把界面和逻辑分离. //堆栈最大深度 private const int MaxStackFrames = 640 * 48

Ant Design of Vue —— Table表格组件 —— 设置动态表头

Column配置 比如:操作列 { key: 'action', scopedSlots: { customRender: 'action', title: '变量名' }, align: 'center' } 代码段 <template slot="变量名">{{动态表头名称}}</template> 原文地址:https://www.cnblogs.com/duoer/p/12096895.html

使用React+Umi+Ant Design Pro实现生产环境动态切换主题,支持暗黑主题

投入前端开发也有1年的时间了,我还是很菜.在开发中还是很多技巧以及经验不够,写文章也是文笔不行,不过好在写的内容意思大概都能看懂.这次就来介绍一下我在开发过程中遇到的一些问题以及处理技巧. 两月前刚开始试用umi这个React的框架,使用AntD Pro创建好项目后,着实熟悉了几天,不过熟悉这个框架后,就觉得阿里的大佬还是牛.佩服. 事情是这样的,我们能够在AndD Pro的在线预览上看到能够动态切换主题.而实际拉下来的模板中却没有这个功能.我就开始了对比源码. 算了,先上一下项目目录结构吧,不

【记录】解析具有合并单元格的Excel

最近公司让做各种数据表格的导入导出,就涉及到电子表格的解析,做了这么多天总结一下心得. 工具:NOPI 语言:C# 目的:因为涉及到导入到数据库,具有合并单元格的多行必然要拆分,而NPOI自动解析的时候拆分单元格除第一个单元格外其余值都是空,对于列头有合并项目的,数据库设计一般才有合并单元格下面的最小列单元作为数据库字段.于是希望达到这样一个效果.于是有了一个思路就是把读入的Excel复制到新建的Excel,然后再去读新的Excel.总体思路就是把合并单元格所包含的所有最小单元格的值都设置成合并