You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
51 lines
1.6 KiB
51 lines
1.6 KiB
import { isNumber } from 'lodash-es';
|
|
|
|
export function useTableColumn({ columnActions }: any) {
|
|
const { autoCalcWidth, autoMergeAction, textNumber, actionNumber } = columnActions;
|
|
function getColumnActionWidth(actions: []) {
|
|
const ACTION_NUM = 2; //显示几列操作
|
|
if (autoCalcWidth === true) {
|
|
let labelWidth = 0;
|
|
let actionsLength: number = actionNumber || actions.length; // 更多时候 边距为修改为3
|
|
//设置了字数则按字数计算
|
|
if (isNumber(textNumber) && textNumber > 0) {
|
|
actionsLength = textNumber;
|
|
} else {
|
|
if (actionsLength <= ACTION_NUM || autoMergeAction === false) {
|
|
for (let i = 0; i < actionsLength; i++) {
|
|
labelWidth += actions[i].label.length;
|
|
}
|
|
} else {
|
|
for (let i = 0; i < ACTION_NUM - 1; i++) {
|
|
labelWidth += actions[i].label.length;
|
|
}
|
|
labelWidth += ACTION_NUM; // 更多
|
|
actionsLength = ACTION_NUM; //合并为更多
|
|
}
|
|
labelWidth <= ACTION_NUM && (labelWidth = ACTION_NUM);
|
|
}
|
|
return 14 * (labelWidth + actionsLength) + 10 + 12;
|
|
}
|
|
return 100;
|
|
}
|
|
|
|
function transformColumnAction(actions: []) {
|
|
if (autoMergeAction) {
|
|
const _actions = [];
|
|
const actionsLength = actions.length;
|
|
if (actionsLength > 2) {
|
|
const moreAction = {
|
|
label: '更多',
|
|
openPermission: true,
|
|
name: 'more',
|
|
children: [...actions.splice(1)],
|
|
};
|
|
_actions.push(actions[0], moreAction);
|
|
return _actions;
|
|
}
|
|
}
|
|
return actions;
|
|
}
|
|
|
|
return { getColumnActionWidth, transformColumnAction };
|
|
}
|
|
|