Files
2026-01-16 02:20:32 +00:00

129 lines
5.7 KiB
JavaScript

import _typeof from "@babel/runtime/helpers/esm/typeof";
import _objectSpread from "@babel/runtime/helpers/esm/objectSpread2";
import { proFieldParsingValueEnumToArray } from '@ant-design/pro-field';
import { omitBoolean, omitUndefinedAndEmptyArr, runFunction } from '@ant-design/pro-utils';
import { Table } from 'antd';
import { columnRender, defaultOnFilter, renderColumnsTitle } from "./columnRender";
import { genColumnKey } from "./index";
/**
* 转化 columns 到 pro 的格式 主要是 render 方法的自行实现
*
* @param columns
* @param map
* @param columnEmptyText
*/
export 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 === Table.EXPAND_COLUMN) return columnProps;
if (columnProps === 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 = 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 _objectSpread({
index: columnsIndex
}, columnProps);
}
var config = counter.columnsMap[columnKey] || {
fixed: columnProps.fixed
};
var genOnFilter = function genOnFilter() {
if (onFilter === true) {
return function (value, row) {
return defaultOnFilter(value, row, dataIndex);
};
}
return 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 = _objectSpread(_objectSpread({
index: columnsIndex,
key: columnKey
}, columnProps), {}, {
title: renderColumnsTitle(columnProps),
valueEnum: valueEnum,
filters: filters === true ? proFieldParsingValueEnumToArray(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(_objectSpread(_objectSpread({}, params), {}, {
columns: (columnProps === null || columnProps === void 0 ? void 0 : columnProps.children) || []
}), _objectSpread(_objectSpread({}, columnProps), {}, {
key: columnKey
})) : undefined,
render: function render(text, rowData, index) {
if (typeof rowKey === 'function') {
keyName = rowKey(rowData, index);
}
var uniqueKey;
if (_typeof(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 columnRender(renderProps);
}
});
return omitUndefinedAndEmptyArr(tempColumns);
})) === null || _columns$map === void 0 ? void 0 : _columns$map.filter(function (item) {
return !item.hideInTable;
});
}