UNPKG

react-antd-table-rowspan

Version:

react+antd表格指定的列,连续的,行合并

60 lines (59 loc) 1.96 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); /** * antd的表格合并,需要配合rendercell使用 * @param origin 原始数组 * @param filters 条件数组,name合并的字段,symbol条件,>=,<=,=,!= * @description symbol条件为字符串的时候是单一条件,可以是对象表示多个条件,key是字段名 value是>=,<=,=,!= * @date 2021年9月24日09:52:19 * */ function changeData(origin, filters) { if (!Array.isArray(filters)) throw new Error(''); function mySwich(oldItem, newItem, c) { switch (typeof c.symbol) { case 'string': switch (c.symbol) { case '=': return oldItem[c.name] == newItem[c.name]; default: break; } case 'object': var f = true; for (var key in c.symbol) { switch (c.symbol[key]) { case '=': f = oldItem[key] == newItem[key]; break; default: } if (!f) return false; } return true; default: break; } } filters.forEach(function (c) { var index = 0; var n = 0; while (index < origin.length) { for (var j = index; j < origin.length; j++) { var o = origin[j]; if (mySwich(origin[index], o, c)) { n++; } else { break; } origin[index][c.name + 'rowSpan'] = n; } index += n || 1; n = 0; } }); return origin; } exports.default = changeData;