fix: table action

pull/160/MERGE
xingyu4j 2025-06-27 23:14:17 +08:00
parent d0210be4cd
commit 74d95b8db4
1 changed files with 11 additions and 11 deletions

View File

@ -244,28 +244,24 @@ function handleMenuClick(e: any) {
action.onClick(); action.onClick();
} }
} }
/** 生成稳定的 key */
function getActionKey(action: ActionItem, index: number) {
return `${action.label || ''}-${action.type || ''}-${index}`;
}
</script> </script>
<template> <template>
<div class="table-actions"> <div class="table-actions">
<Space :size="spaceSize"> <Space :size="spaceSize">
<template <template v-for="(action, index) in getActions">
v-for="(action, index) in getActions"
:key="getActionKey(action, index)"
>
<Popconfirm <Popconfirm
v-if="action.popConfirm" v-if="action.popConfirm"
v-bind="getPopConfirmProps(action.popConfirm)" v-bind="getPopConfirmProps(action.popConfirm)"
:key="getActionKey(action, index)"
> >
<template v-if="action.popConfirm.icon" #icon> <template v-if="action.popConfirm.icon" #icon>
<IconifyIcon :icon="action.popConfirm.icon" /> <IconifyIcon :icon="action.popConfirm.icon" />
</template> </template>
<Tooltip v-bind="getTooltipProps(action.tooltip)"> <Tooltip
v-bind="getTooltipProps(action.tooltip)"
:key="getActionKey(action, index)"
>
<Button v-bind="getButtonProps(action)"> <Button v-bind="getButtonProps(action)">
<template v-if="action.icon" #icon> <template v-if="action.icon" #icon>
<IconifyIcon :icon="action.icon" /> <IconifyIcon :icon="action.icon" />
@ -274,7 +270,11 @@ function getActionKey(action: ActionItem, index: number) {
</Button> </Button>
</Tooltip> </Tooltip>
</Popconfirm> </Popconfirm>
<Tooltip v-else v-bind="getTooltipProps(action.tooltip)"> <Tooltip
v-else
v-bind="getTooltipProps(action.tooltip)"
:key="`tooltip-${getActionKey(action, index)}`"
>
<Button v-bind="getButtonProps(action)" @click="action.onClick"> <Button v-bind="getButtonProps(action)" @click="action.onClick">
<template v-if="action.icon" #icon> <template v-if="action.icon" #icon>
<IconifyIcon :icon="action.icon" /> <IconifyIcon :icon="action.icon" />