react-antd-table-rowspan
Version:
react+antd表格指定的列,连续的,行合并
60 lines (59 loc) • 1.96 kB
JavaScript
;
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;