fix:用户信息界面搜索栏重置功能修复
This commit is contained in:
@@ -205,18 +205,13 @@ const handleSearch = () => {
|
|||||||
|
|
||||||
// 处理重置
|
// 处理重置
|
||||||
const handleReset = () => {
|
const handleReset = () => {
|
||||||
// 定义默认参数
|
const currentPageSize = searchParams.pageSize;
|
||||||
const defaultParams: SearchModel = {
|
|
||||||
pageNum: 1,
|
|
||||||
pageSize: 10,
|
|
||||||
username: undefined,
|
|
||||||
email: undefined
|
|
||||||
};
|
|
||||||
|
|
||||||
console.log('Resetting search params to:', defaultParams);
|
// 重置搜索参数
|
||||||
|
searchParams.username = '';
|
||||||
// 更新搜索参数到默认值
|
searchParams.email = '';
|
||||||
updateSearchParams(defaultParams);
|
searchParams.pageNum = 1;
|
||||||
|
searchParams.pageSize = currentPageSize;
|
||||||
|
|
||||||
// 重新获取数据
|
// 重新获取数据
|
||||||
getData();
|
getData();
|
||||||
|
|||||||
@@ -1,113 +1,77 @@
|
|||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
import { ref, computed } from 'vue';
|
import { Form as AForm, FormItem as AFormItem, Input as AInput, Button as AButton, Space as ASpace, Card as ACard } from 'ant-design-vue';
|
||||||
import type { FormInstance } from 'ant-design-vue';
|
|
||||||
import type { SearchModel } from '@/views/user-center/user/type';
|
|
||||||
import { useI18n } from 'vue-i18n';
|
import { useI18n } from 'vue-i18n';
|
||||||
|
import { computed } from 'vue';
|
||||||
|
|
||||||
const { t } = useI18n();
|
const { t } = useI18n();
|
||||||
const props = defineProps<{
|
|
||||||
model: SearchModel;
|
|
||||||
}>();
|
|
||||||
|
|
||||||
const emit = defineEmits<{
|
interface Props {
|
||||||
'updateModel': [value: SearchModel];
|
model: {
|
||||||
'reset': [];
|
username?: string;
|
||||||
'search': [];
|
email?: string;
|
||||||
}>();
|
pageNum: number;
|
||||||
|
pageSize: number;
|
||||||
|
};
|
||||||
|
loading?: boolean;
|
||||||
|
}
|
||||||
|
|
||||||
const formRef = ref<FormInstance>();
|
const props = withDefaults(defineProps<Props>(), {
|
||||||
|
loading: false
|
||||||
|
|
||||||
// 修改计算属性的实现
|
|
||||||
const formModel = computed({
|
|
||||||
get: () => ({
|
|
||||||
username: props.model.username ?? '',
|
|
||||||
email: props.model.email ?? ''
|
|
||||||
}),
|
|
||||||
set: (val: Partial<{ username: string; email: string }>) => {
|
|
||||||
emit('updateModel', {
|
|
||||||
...props.model,
|
|
||||||
username: val.username || undefined,
|
|
||||||
email: val.email || undefined
|
|
||||||
});
|
|
||||||
}
|
|
||||||
});
|
});
|
||||||
|
|
||||||
const handleReset = () => {
|
const emit = defineEmits(['update:model', 'search', 'reset']);
|
||||||
// 重置表单字段
|
|
||||||
formRef.value?.resetFields();
|
|
||||||
|
|
||||||
// 重置表单模型的值
|
// 使用计算属性来处理双向绑定
|
||||||
formModel.value = {
|
const formModel = computed({
|
||||||
username: '',
|
get: () => props.model,
|
||||||
email: ''
|
set: (val) => emit('update:model', val)
|
||||||
};
|
});
|
||||||
|
|
||||||
// 定义默认参数
|
const search = () => {
|
||||||
const defaultParams: SearchModel = {
|
emit('search');
|
||||||
pageNum: 1,
|
|
||||||
pageSize: 10,
|
|
||||||
username: undefined,
|
|
||||||
email: undefined
|
|
||||||
};
|
|
||||||
|
|
||||||
console.log('Emitting reset with params:', defaultParams);
|
|
||||||
|
|
||||||
// 发送更新事件
|
|
||||||
emit('updateModel', defaultParams);
|
|
||||||
// 发送重置事件
|
|
||||||
emit('reset');
|
|
||||||
};
|
};
|
||||||
|
|
||||||
const handleSearch = () => {
|
const reset = () => {
|
||||||
console.log('Search form values:', formModel.value);
|
// 只触发重置事件
|
||||||
|
emit('reset');
|
||||||
// 确保所有必要的字段都存在
|
|
||||||
const updatedParams: SearchModel = {
|
|
||||||
pageNum: props.model.pageNum || 1,
|
|
||||||
pageSize: props.model.pageSize || 10,
|
|
||||||
username: formModel.value.username || undefined,
|
|
||||||
email: formModel.value.email || undefined
|
|
||||||
};
|
|
||||||
|
|
||||||
console.log('Emitting updated params:', updatedParams);
|
|
||||||
|
|
||||||
emit('updateModel', updatedParams);
|
|
||||||
emit('search');
|
|
||||||
};
|
};
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<template>
|
<template>
|
||||||
<ACard :bordered="false">
|
<ACard :bordered="false" class="search-card">
|
||||||
<AForm
|
<AForm layout="inline">
|
||||||
ref="formRef"
|
<AFormItem :label="t('page.user.username')">
|
||||||
:model="formModel"
|
|
||||||
layout="inline"
|
|
||||||
class="flex flex-wrap gap-16px items-center"
|
|
||||||
>
|
|
||||||
<AFormItem :label="t('page.user.username')" name="username">
|
|
||||||
<AInput
|
<AInput
|
||||||
v-model:value="formModel.username"
|
v-model:value="formModel.username"
|
||||||
:placeholder="t('page.user.pleusername')"
|
:placeholder="t('page.user.pleusername')"
|
||||||
allow-clear
|
allow-clear
|
||||||
|
class="w-200px"
|
||||||
|
@pressEnter="search"
|
||||||
/>
|
/>
|
||||||
</AFormItem>
|
</AFormItem>
|
||||||
<AFormItem :label="t('page.user.email')" name="email">
|
<AFormItem :label="t('page.user.email')">
|
||||||
<AInput
|
<AInput
|
||||||
v-model:value="formModel.email"
|
v-model:value="formModel.email"
|
||||||
:placeholder="t('page.user.pleemail')"
|
:placeholder="t('page.user.pleemail')"
|
||||||
allow-clear
|
allow-clear
|
||||||
|
class="w-200px"
|
||||||
|
@pressEnter="search"
|
||||||
/>
|
/>
|
||||||
</AFormItem>
|
</AFormItem>
|
||||||
<AFormItem class="flex-1 justify-end mb-0">
|
<AFormItem>
|
||||||
<ASpace>
|
<ASpace>
|
||||||
<AButton type="primary" ghost @click="handleSearch">
|
<AButton type="primary" ghost :loading="loading" @click="search">
|
||||||
<template #icon>
|
<template #icon>
|
||||||
<icon-mdi-search />
|
<icon-mdi-search />
|
||||||
</template>{{ t('page.user.search') }}</AButton>
|
</template>
|
||||||
<AButton @click="handleReset">
|
{{ t('page.user.search') }}
|
||||||
|
</AButton>
|
||||||
|
<AButton @click="reset">
|
||||||
<template #icon>
|
<template #icon>
|
||||||
<icon-mdi-refresh />
|
<icon-mdi-refresh />
|
||||||
</template>{{ t('page.user.reset') }}</AButton>
|
</template>
|
||||||
|
{{ t('page.user.reset') }}
|
||||||
|
</AButton>
|
||||||
</ASpace>
|
</ASpace>
|
||||||
</AFormItem>
|
</AFormItem>
|
||||||
</AForm>
|
</AForm>
|
||||||
|
|||||||
Reference in New Issue
Block a user