有个需要是这样的,表格第一列须要合并行,后边的数据是通过接口获取,效果图如下:

首先,列中的工夫是前端生成的,尖峰、顶峰、低谷是每行数据都会有的,能够写死,具体代码如下:

// 表格:

<el-table          :data="tableData"          :span-method="arraySpanMethod"          border          size="mini"        >          <el-table-column label prop="company">            <template slot-scope="scope">{{ scope.row.company }}</template>          </el-table-column>          <el-table-column label="工夫" prop="symbolType" width="120px">            <template slot-scope="scope">{{ scope.row.symbolType }}</template>          </el-table-column>          <el-table-column            v-for="(item, index) in timeData"            :key="index"            :prop="item.label"            :label="item.time"          >            <template slot-scope="scope">{{ scope.row[item.label] }}</template>          </el-table-column>        </el-table>

// data数据如下:

data() {    return {       companyArr: [],       companyPos: 0,       typeArr: [],       typePos: [],       // 假数据,前期是通过接口获取       tableData: [        {company: "xxxx1",type:1,symbolType: "尖峰",m1: "1",m2:"1",m3: "",m4: "",m5:"",m6: "",m7:"",m8:"",m9:"","m10":"",m11:"",m12:""},        {company: "xxxx1",type:1,symbolType: "顶峰",m1: "",m2:"1",m3: "1",m4: "",m5:"",m6: "",m7:"",m8:"",m9:"","m10":"",m11:"",m12:""},        {company: "xxxx1",type:1,symbolType: "低谷",m1: "",m2:"",m3: "1",m4: "1",m5:"",m6: "",m7:"",m8:"",m9:"","m10":"",m11:"",m12:""},        {company: "xxxx2",type:2,symbolType: "尖峰",m1: "",m2:"2",m3: "2",m4: "",m5:"",m6: "",m7:"",m8:"",m9:"","m10":"",m11:"",m12:""},        {company: "xxxx2",type:2,symbolType: "顶峰",m1: "",m2:"",m3: "2",m4: "2",m5:"",m6: "",m7:"",m8:"",m9:"","m10":"",m11:"",m12:""},        {company: "xxxx2",type:2,symbolType: "低谷",m1: "",m2:"",m3: "",m4: "2",m5:"2",m6: "",m7:"",m8:"",m9:"","m10":"",m11:"",m12:""},        {company: "xxxx3",type:3,symbolType: "尖峰",m1: "",m2:"",m3: "3",m4: "3",m5:"",m6: "",m7:"",m8:"",m9:"","m10":"",m11:"",m12:""},        {company: "xxxx3",type:3,symbolType: "顶峰",m1: "",m2:"",m3: "",m4: "3",m5:"3",m6: "",m7:"",m8:"",m9:"","m10":"",m11:"",m12:""},        {company: "xxxx3",type:3,symbolType: "低谷",m1: "",m2:"",m3: "",m4: "",m5:"3",m6: "3",m7:"",m8:"",m9:"","m10":"",m11:"",m12:""},       ],    }}

// timeData:

computed: {    timeData() {      let year = new Date().getFullYear();      let obj = {};      let arr = [];      for (let i = 1; i <= 12; i++) {        obj = {          time: year + "年" + i + "月",          label: "m" + i, // 这块是和后端确认的每个月的字段名        };        arr.push(obj);      }      return arr;    },  },

// 对tableData数据处理

created() {   this.consolidation()}

// methods中的办法

// 依据type计算出要合并的行数    consolidation() {      this.companyArr = [];      this.companyPos = 0;      this.typeArr = [];      this.typePos = 0;      for (var i = 0; i < this.tableData.length; i++) {        if (i === 0) {          //第一行必须存在          this.companyArr.push(1);          this.companyPos = 0;          this.typeArr.push(1);          this.typePos = 0;        } else {          // 判断以后元素与上一个元素是否雷同 this.companyPos是companyArr内容的序号          if (this.tableData[i].type === this.tableData[i - 1].type) {            this.companyArr[this.companyPos] += 1;            this.companyArr.push(0);          } else {            this.companyArr.push(1);            this.companyPos = i;          }          if (            this.tableData[i].symbolType === this.tableData[i - 1].symbolType &&            this.tableData[i].type === this.tableData[i - 1].type          ) {            this.typeArr[this.typePos] += 1;            this.typeArr.push(0);          } else {            this.typeArr.push(1);            this.typePos = i;          }        }      }    },

// 合并行办法

arraySpanMethod({ row, column, rowIndex, columnIndex }) {      if (columnIndex === 0) {        const _row_1 = this.companyArr[rowIndex];        const _col_1 = _row_1 > 0 ? 1 : 0; //如果被合并了_row=0则它这个列须要勾销        return {          rowspan: _row_1,          colspan: _col_1,        };      } else if (columnIndex === 1) {        const _row_2 = this.typeArr[rowIndex];        const _col_2 = _row_2 > 0 ? 1 : 0;        return {          rowspan: _row_2,          colspan: _col_2,        };      }    },

完满解决,前期table数据从接口获取,改装成tableData中的数据结构就能够间接应用了。