需要:同时合并表格的行和列?

自己在百度下面找了很久,貌似没有找到相干的合并办法,唯有本人写了一个,逻辑简略,很蠢笨,欢送大神来改良

<template>    <div class="">        <el-table ref="mutipleTable" border highlight-current-row :height="400" resizable :data="tableData" :span-method="objectSpanMethod">            <el-table-column label="序号" type="index" width="60"></el-table-column>            <el-table-column                v-for="(item, index) in tableLabel"                :key="index"                :prop="item.prop"                :sortable="item.sortable"                :width="item.width"                :label="item.label"                :show-overflow-tooltip="item.showOverTooltip"            >                <template slot-scope="scope">                    <span>{{ scope.row[scope.column.property] }}</span>                </template>            </el-table-column>        </el-table>    </div></template><script>export default {    name: '',    data() {        return {            kingObj1: {},            kingObj: {},            tableData: [],            // 表头的数据            tableLabel: [                { label: '负责人', width: '122', prop: 'name1', showOverTooltip: true, sortable: false, sortNo: 1 },                { label: '预计指标', width: '122', prop: 'name2', showOverTooltip: true, sortable: false, sortNo: 3 },                { label: '理论指标', width: '122', prop: 'name3', showOverTooltip: true, sortable: false, sortNo: 4 },                { label: '累计达成率', width: '122', prop: 'name4', showOverTooltip: true, sortable: false, sortNo: 5 },                { label: '工夫进度', width: '122', prop: 'name5', showOverTooltip: true, sortable: false, sortNo: 6 }            ]        };    },    mounted() {        this.getList();    },    updated() {        this.$nextTick(() => {            this.$refs.mutipleTable.doLayout();        });    },    methods: {        getList() {            let list = {                detailList: [                    {                        name1: '客户1',                        name2: '客户1',                        name3: '客户3',                        name4: '客户4',                        name5: '客户5'                    },                    {                        name1: '客户1',                        name2: '客户1',                        name3: '客户3',                        name4: '客户4',                        name5: '客户5'                    },                    {                        name1: '客户1',                        name2: '客户2',                        name3: '客户3',                        name4: '客户5',                        name5: '客户5'                    },                    {                        name1: '客户1',                        name2: '客户2',                        name3: '客户3',                        name4: '客户4',                        name5: '客户5'                    },                    {                        name1: '客户1',                        name2: '客户2',                        name3: '客户3',                        name4: '客户4',                        name5: '客户5'                    }                ],                total: {                    name1: '共计',                    name2: '共计',                    name3: '客户3',                    name4: '客户4',                    name5: '客户5'                }            };            let kingObj = {};            let kingObj1 = {};            list.detailList.forEach((item, index) => {                /*                 * param:1和2是代表存在和不存在,这个能够自定义,用下合并的时候,判断1所在的行数须要合并,2所在的行数不须要合并                */                if (item.name1 == item.name2) {                    if (!kingObj[item.name1]) {                        kingObj[item.name1] = {};                        kingObj[item.name1][item.name1 + '1'] = [];                        kingObj[item.name1][item.name1 + '2'] = [];                        kingObj[item.name1][item.name1 + '1'].push(index);                    } else {                        kingObj[item.name1][item.name1 + '2'].push(index);                    }                }                if (item.name4 == item.name5) {                    if (!kingObj1[item.name4]) {                        kingObj1[item.name4] = {};                        kingObj1[item.name4][item.name4 + '1'] = [];                        kingObj1[item.name4][item.name4 + '2'] = [];                        kingObj1[item.name4][item.name4 + '1'].push(index);                    } else {                        kingObj1[item.name4][item.name4 + '2'].push(index);                    }                }            });            this.kingObj = kingObj;            this.kingObj1 = kingObj1;            list.detailList.push(list.total);            this.tableData = list.detailList;        },        objectSpanMethod({ row, column, rowIndex, columnIndex }) {            for (let key in this.kingObj) {                // 如果rowIndex在须要合并的行中                if (this.kingObj[key][key + '1'].includes(rowIndex)) {                    /*                    *param:this.kingObj[key][key + '1']['length'] + this.kingObj[key][key + '2']['length']代表总共合并的行数                    */                    if (columnIndex === 1) {                        return [this.kingObj[key][key + '1']['length'] + this.kingObj[key][key + '2']['length'], 2];                    } else if (columnIndex === 2) {                        return [0, 0];                    }                } else if (this.kingObj[key][key + '2'].includes(rowIndex)) {                    if (columnIndex === 1) {                        return [0, 0];                    } else if (columnIndex === 2) {                        return [0, 0];                    }                }            }            for (let key in this.kingObj1) {                // 如果rowIndex在须要合并的行中                if (this.kingObj1[key][key + '1'].includes(rowIndex)) {                    if (columnIndex === 4) {                        return [this.kingObj1[key][key + '1']['length'] + this.kingObj1[key][key + '2']['length'], 2];                    } else if (columnIndex === 5) {                        return [0, 0];                    }                } else if (this.kingObj1[key][key + '2'].includes(rowIndex)) {                    if (columnIndex === 4) {                        return [0, 0];                    } else if (columnIndex === 5) {                        return [0, 0];                    }                }            }        }    }};</script><style></style>