Files
2026-01-09 14:52:46 +00:00

136 lines
6.1 KiB
JavaScript

"use strict";
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.genProColumnToColumn = genProColumnToColumn;
var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof"));
var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
var _proField = require("@ant-design/pro-field");
var _proUtils = require("@ant-design/pro-utils");
var _antd = require("antd");
var _columnRender = require("./columnRender");
var _index = require("./index");
/**
* 转化 columns 到 pro 的格式 主要是 render 方法的自行实现
*
* @param columns
* @param map
* @param columnEmptyText
*/
function genProColumnToColumn(params, parents) {
var _columns$map;
var columns = params.columns,
counter = params.counter,
columnEmptyText = params.columnEmptyText,
type = params.type,
editableUtils = params.editableUtils,
marginSM = params.marginSM,
_params$rowKey = params.rowKey,
rowKey = _params$rowKey === void 0 ? 'id' : _params$rowKey,
_params$childrenColum = params.childrenColumnName,
childrenColumnName = _params$childrenColum === void 0 ? 'children' : _params$childrenColum,
_params$proFilter = params.proFilter,
proFilter = _params$proFilter === void 0 ? {} : _params$proFilter,
proSort = params.proSort;
var subNameRecord = new Map();
return columns === null || columns === void 0 || (_columns$map = columns.map(function (columnProps, columnsIndex) {
if (columnProps === _antd.Table.EXPAND_COLUMN) return columnProps;
if (columnProps === _antd.Table.SELECTION_COLUMN) return columnProps;
var _ref = columnProps,
key = _ref.key,
dataIndex = _ref.dataIndex,
valueEnum = _ref.valueEnum,
_ref$valueType = _ref.valueType,
valueType = _ref$valueType === void 0 ? 'text' : _ref$valueType,
children = _ref.children,
onFilter = _ref.onFilter,
_ref$filters = _ref.filters,
filters = _ref$filters === void 0 ? [] : _ref$filters,
sorter = _ref.sorter,
columnFilteredValue = _ref.filteredValue;
var columnKey = (0, _index.genColumnKey)(key || (dataIndex === null || dataIndex === void 0 ? void 0 : dataIndex.toString()), [parents === null || parents === void 0 ? void 0 : parents.key, columnsIndex].filter(Boolean).join('-'));
// 这些都没有,说明是普通的表格不需要 pro 管理
var noNeedPro = !valueEnum && !valueType && !children;
if (noNeedPro) {
return (0, _objectSpread2.default)({
index: columnsIndex
}, columnProps);
}
var config = counter.columnsMap[columnKey] || {
fixed: columnProps.fixed
};
var genOnFilter = function genOnFilter() {
if (onFilter === true) {
return function (value, row) {
return (0, _columnRender.defaultOnFilter)(value, row, dataIndex);
};
}
return (0, _proUtils.omitBoolean)(onFilter);
};
// 对应筛选值,用作双向绑定
var filteredValue = columnKey && (proFilter === null || proFilter === void 0 ? void 0 : proFilter[columnKey]) !== undefined ? proFilter === null || proFilter === void 0 ? void 0 : proFilter[columnKey] : null;
// 对应排序值,用作双向绑定
var sortOrder = columnKey && proSort[columnKey] !== undefined ? proSort[columnKey] : null;
var keyName = rowKey;
var tempColumns = (0, _objectSpread2.default)((0, _objectSpread2.default)({
index: columnsIndex,
key: columnKey
}, columnProps), {}, {
title: (0, _columnRender.renderColumnsTitle)(columnProps),
valueEnum: valueEnum,
filters: filters === true ? (0, _proField.proFieldParsingValueEnumToArray)((0, _proUtils.runFunction)(valueEnum, undefined)).filter(function (valueItem) {
return valueItem && valueItem.value !== 'all';
}) : filters,
onFilter: genOnFilter(),
filteredValue:
// 优先使用用户明确设置的 filteredValue
columnFilteredValue !== undefined ? columnFilteredValue :
// 否则,只有在服务端筛选时才使用计算的 filteredValue
filters && genOnFilter() == null ? filteredValue : undefined,
sortOrder: sorter === true ? sortOrder : undefined,
fixed: config.fixed,
width: columnProps.width || (columnProps.fixed ? 200 : undefined),
children: columnProps.children ? genProColumnToColumn((0, _objectSpread2.default)((0, _objectSpread2.default)({}, params), {}, {
columns: (columnProps === null || columnProps === void 0 ? void 0 : columnProps.children) || []
}), (0, _objectSpread2.default)((0, _objectSpread2.default)({}, columnProps), {}, {
key: columnKey
})) : undefined,
render: function render(text, rowData, index) {
if (typeof rowKey === 'function') {
keyName = rowKey(rowData, index);
}
var uniqueKey;
if ((0, _typeof2.default)(rowData) === 'object' && rowData !== null && Reflect.has(rowData, keyName)) {
var _childrenColumnName;
uniqueKey = rowData[keyName];
var parentInfo = subNameRecord.get(uniqueKey) || [];
(_childrenColumnName = rowData[childrenColumnName]) === null || _childrenColumnName === void 0 || _childrenColumnName.forEach(function (item) {
var itemUniqueKey = item[keyName];
if (!subNameRecord.has(itemUniqueKey)) {
subNameRecord.set(itemUniqueKey, parentInfo.concat([index, childrenColumnName]));
}
});
}
var renderProps = {
columnProps: columnProps,
text: text,
rowData: rowData,
index: index,
columnEmptyText: columnEmptyText,
counter: counter,
type: type,
marginSM: marginSM,
subName: subNameRecord.get(uniqueKey),
editableUtils: editableUtils
};
return (0, _columnRender.columnRender)(renderProps);
}
});
return (0, _proUtils.omitUndefinedAndEmptyArr)(tempColumns);
})) === null || _columns$map === void 0 ? void 0 : _columns$map.filter(function (item) {
return !item.hideInTable;
});
}