实现需求:将客户一样拜访次数列合并成一行展示。如图

实现代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95
| <template> <div> <el-table :data="tableData" :span-method="objectSpanMethod" border style="width: 100%; margin-top: 20px" > <el-table-column prop="itme" label="拜访时间" width="180" /> <el-table-column prop="name" label="销售人员" /> <el-table-column prop="customer" label="客户" /> <el-table-column prop="keshi" label="拜访科室" /> <el-table-column prop="count" label="拜访次数" /> </el-table> </div> </template> <script> export default { data() { return { spanArr: [], pos: 0, tableData: [ { itme: '2022-6-6 11:23:47', name: '张三', customer: '湖北博远达生物科技有限公司', keshi: '生殖中心', count: 2 }, { itme: '2022-6-6 11:23:47', name: '李四', customer: '湖北博远达生物科技有限公司', keshi: '生殖中心', count: 2 }, { itme: '2022-6-6 11:23:47', name: '王五', customer: '中南大学湘雅三医院', keshi: '生殖中心', count: 2 }, { itme: '2022-6-6 11:23:47', name: '赵六', customer: '中南大学湘雅三医院', keshi: '生殖中心', count: 2 } ] } }, mounted() { this.getSpanArr(this.tableData) }, methods: { getSpanArr(data) { for (var i = 0; i < data.length; i++) { if (i === 0) { this.spanArr.push(1) this.pos = 0 } else { if (data[i].customer === data[i - 1].customer) { this.spanArr[this.pos] += 1 this.spanArr.push(0) } else { this.spanArr.push(1) this.pos = i } } } }, objectSpanMethod({ row, column, rowIndex, columnIndex }) { if (columnIndex === 4) { const _row = this.spanArr[rowIndex] const _col = _row > 0 ? 1 : 0 return { rowspan: _row, colspan: _col } } } } } </script>
|