|
|
|
|
@ -1,7 +1,10 @@
|
|
|
|
|
<script lang="ts" setup>
|
|
|
|
|
import type { VbenFormProps } from '@vben-core/form-ui';
|
|
|
|
|
import type {
|
|
|
|
|
VxeGridDefines,
|
|
|
|
|
VxeGridInstance,
|
|
|
|
|
VxeGridListeners,
|
|
|
|
|
VxeGridPropTypes,
|
|
|
|
|
VxeGridProps as VxeTableGridProps,
|
|
|
|
|
} from 'vxe-table';
|
|
|
|
|
|
|
|
|
|
@ -57,6 +60,7 @@ const {
|
|
|
|
|
formOptions,
|
|
|
|
|
tableTitle,
|
|
|
|
|
tableTitleHelp,
|
|
|
|
|
showSearchForm,
|
|
|
|
|
} = usePriorityValues(props, state);
|
|
|
|
|
|
|
|
|
|
const { isMobile } = usePreferences();
|
|
|
|
|
@ -103,21 +107,37 @@ const toolbarOptions = computed(() => {
|
|
|
|
|
const slotActions = slots[TOOLBAR_ACTIONS]?.();
|
|
|
|
|
const slotTools = slots[TOOLBAR_TOOLS]?.();
|
|
|
|
|
|
|
|
|
|
const toolbarConfig: VxeGridPropTypes.ToolbarConfig = {
|
|
|
|
|
tools:
|
|
|
|
|
gridOptions.value?.toolbarConfig?.search && !!formOptions.value
|
|
|
|
|
? [
|
|
|
|
|
{
|
|
|
|
|
code: 'search',
|
|
|
|
|
icon: 'vxe-icon--search',
|
|
|
|
|
circle: true,
|
|
|
|
|
status: showSearchForm.value ? 'primary' : undefined,
|
|
|
|
|
title: $t('common.search'),
|
|
|
|
|
},
|
|
|
|
|
]
|
|
|
|
|
: [],
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
if (!showToolbar.value) {
|
|
|
|
|
return {};
|
|
|
|
|
return { toolbarConfig };
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// if (gridOptions.value?.toolbarConfig?.search) {
|
|
|
|
|
// }
|
|
|
|
|
// 强制使用固定的toolbar配置,不允许用户自定义
|
|
|
|
|
// 减少配置的复杂度,以及后续维护的成本
|
|
|
|
|
return {
|
|
|
|
|
toolbarConfig: {
|
|
|
|
|
slots: {
|
|
|
|
|
...(slotActions || showTableTitle.value
|
|
|
|
|
? { buttons: TOOLBAR_ACTIONS }
|
|
|
|
|
: {}),
|
|
|
|
|
...(slotTools ? { tools: TOOLBAR_TOOLS } : {}),
|
|
|
|
|
},
|
|
|
|
|
},
|
|
|
|
|
toolbarConfig.slots = {
|
|
|
|
|
...(slotActions || showTableTitle.value
|
|
|
|
|
? { buttons: TOOLBAR_ACTIONS }
|
|
|
|
|
: {}),
|
|
|
|
|
...(slotTools ? { tools: TOOLBAR_TOOLS } : {}),
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
return { toolbarConfig };
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
const options = computed(() => {
|
|
|
|
|
@ -173,9 +193,19 @@ const options = computed(() => {
|
|
|
|
|
return mergedOptions;
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
function onToolbarToolClick(event: VxeGridDefines.ToolbarToolClickEventParams) {
|
|
|
|
|
if (event.code === 'search') {
|
|
|
|
|
props.api?.toggleSearchForm?.();
|
|
|
|
|
}
|
|
|
|
|
(
|
|
|
|
|
gridEvents.value?.toolbarToolClick as VxeGridListeners['toolbarToolClick']
|
|
|
|
|
)?.(event);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
const events = computed(() => {
|
|
|
|
|
return {
|
|
|
|
|
...gridEvents.value,
|
|
|
|
|
toolbarToolClick: onToolbarToolClick,
|
|
|
|
|
};
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
@ -304,7 +334,11 @@ onUnmounted(() => {
|
|
|
|
|
|
|
|
|
|
<!-- form表单 -->
|
|
|
|
|
<template #form>
|
|
|
|
|
<div v-if="formOptions" class="relative rounded py-3 pb-4">
|
|
|
|
|
<div
|
|
|
|
|
v-if="formOptions"
|
|
|
|
|
v-show="showSearchForm !== false"
|
|
|
|
|
class="relative rounded py-3 pb-4"
|
|
|
|
|
>
|
|
|
|
|
<slot name="form">
|
|
|
|
|
<Form>
|
|
|
|
|
<template
|
|
|
|
|
|