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

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 > 4) {
const moreAction = {
label: '更多',
openPermission: true,
name: 'more',
children: [...actions.splice(1)],
};
_actions.push(actions[0], moreAction);
return _actions;
}
}
return actions;
}
return { getColumnActionWidth, transformColumnAction };
}