Files
aiot-platform-ui/apps/web-antd/src/components/table-toolbar/table-toolbar.vue

82 lines
2.2 KiB
Vue
Raw Normal View History

2025-05-06 22:32:09 +08:00
<!-- add by puhui999vxe table 工具栏二次封装提供给 vxe 原生列表使用 -->
<script setup lang="ts">
import type { VxeToolbarInstance } from '#/adapter/vxe-table';
import { ref } from 'vue';
import { useContentMaximize, useRefresh } from '@vben/hooks';
2025-06-17 20:22:24 +08:00
import { IconifyIcon } from '@vben/icons';
2025-05-09 15:47:36 +08:00
import { Button, Tooltip } from 'ant-design-vue';
import { VxeToolbar } from '#/adapter/vxe-table';
/** 列表工具栏封装 */
defineOptions({ name: 'TableToolbar' });
const props = defineProps<{
hiddenSearch: boolean;
}>();
const emits = defineEmits(['update:hiddenSearch']);
const toolbarRef = ref<VxeToolbarInstance>();
2025-05-09 15:47:36 +08:00
const { toggleMaximizeAndTabbarHidden, contentIsMaximize } =
useContentMaximize();
const { refresh } = useRefresh();
/** 隐藏搜索栏 */
function onHiddenSearchBar() {
emits('update:hiddenSearch', !props.hiddenSearch);
}
defineExpose({
getToolbarRef: () => toolbarRef.value,
});
</script>
<template>
<VxeToolbar ref="toolbarRef" custom>
<template #toolPrefix>
<slot></slot>
2025-05-09 15:47:36 +08:00
<Tooltip placement="bottom">
<template #title>
2025-06-17 20:22:24 +08:00
<div class="max-w-52">搜索</div>
2025-05-09 15:47:36 +08:00
</template>
<Button
2025-06-17 20:22:24 +08:00
class="ml-2 font-normal"
2025-05-09 15:47:36 +08:00
shape="circle"
@click="onHiddenSearchBar"
>
2025-06-17 20:22:24 +08:00
<IconifyIcon icon="lucide:search" :size="15" />
2025-05-09 15:47:36 +08:00
</Button>
</Tooltip>
<Tooltip placement="bottom">
<template #title>
2025-06-17 20:22:24 +08:00
<div class="max-w-52">刷新</div>
2025-05-09 15:47:36 +08:00
</template>
2025-06-17 20:22:24 +08:00
<Button class="ml-2 font-medium" shape="circle" @click="refresh">
<IconifyIcon icon="lucide:refresh-cw" :size="15" />
2025-05-09 15:47:36 +08:00
</Button>
</Tooltip>
<Tooltip placement="bottom">
<template #title>
2025-06-17 20:22:24 +08:00
<div class="max-w-52">
2025-05-09 15:47:36 +08:00
{{ contentIsMaximize ? '还原' : '全屏' }}
</div>
</template>
<Button
2025-06-17 20:22:24 +08:00
class="ml-2 font-medium"
2025-05-09 15:47:36 +08:00
shape="circle"
@click="toggleMaximizeAndTabbarHidden"
>
2025-06-17 20:22:24 +08:00
<IconifyIcon
:icon="contentIsMaximize ? 'lucide:minimize' : 'lucide:maximize'"
:size="15"
/>
2025-05-09 15:47:36 +08:00
</Button>
</Tooltip>
</template>
</VxeToolbar>
</template>