import { formatMessage } from '@/utils/localeUtils.js';
|
import { ref } from 'vue';
|
|
export default function useTableSearch() {
|
const searchText = ref('');
|
const searchedColumn = ref('');
|
|
const handleSearch = (selectedKeys, confirm, dataIndex) => {
|
confirm();
|
searchText.value = selectedKeys[0];
|
searchedColumn.value = dataIndex;
|
};
|
|
const handleReset = (clearFilters) => {
|
clearFilters({
|
confirm: true,
|
});
|
searchText.value = '';
|
};
|
|
function handleResizeColumn(w, col) {
|
col.width = w;
|
}
|
|
const getColumnSearchProps = (dataIndex) => ({
|
filterDropdown: ({ setSelectedKeys, selectedKeys, confirm, clearFilters }) => (
|
<div style="padding: 8px">
|
<a-input
|
v-model:value={selectedKeys[0]}
|
placeholder={formatMessage('common.search.placeholder','请搜索')}
|
style="width: 188px; margin-bottom: 8px; display: block;"
|
onChange={(e) => setSelectedKeys(e.target.value ? [e.target.value] : [])}
|
onPressEnter={() => handleSearch(selectedKeys, confirm, dataIndex)}
|
/>
|
<a-button
|
type="primary"
|
onClick={() => handleSearch(selectedKeys, confirm, dataIndex)}
|
size="small"
|
style="width: 90px; margin-right: 8px"
|
>
|
{formatMessage('common.search','搜索')}
|
</a-button>
|
<a-button onClick={() => handleReset(clearFilters)} size="small" style="width: 90px">
|
{formatMessage('common.reset','重置')}
|
</a-button>
|
</div>
|
),
|
onFilter: (value, record) =>
|
record[dataIndex]
|
? record[dataIndex].toString().toLowerCase().includes(value.toLowerCase())
|
: '',
|
resizable: true,
|
});
|
|
return {
|
searchText,
|
searchedColumn,
|
getColumnSearchProps,
|
handleResizeColumn,
|
};
|
}
|