hookehuyr

refactor(PersonPickerField): 重构搜索逻辑并修复回车搜索处理

- 抽离核心搜索逻辑为可复用的 runSearch 函数
- 将回车触发事件从 keyup.enter 调整为 keydown.enter.prevent.stop,并新增专用处理函数
- 弹窗打开和清空搜索框时自动执行空关键词搜索
......@@ -44,7 +44,7 @@
class="search-input-field"
placeholder="请输入姓名、法名、手机号或证件号"
:border="false"
@keyup.enter="onSearch"
@keydown.enter.prevent.stop="onSearchEnter"
>
<template #button>
<div class="search-bar-actions">
......@@ -275,6 +275,9 @@ const openPopup = async () => {
draftPersons.value = _.cloneDeep(confirmedPersons.value);
resetSearchState();
showPopup.value = true;
await runSearch({
keyword: '',
});
};
const onCancelClick = () => {
......@@ -332,6 +335,9 @@ const onSearchResultChange = (checkedIds) => {
const onClearSearch = () => {
resetSearchState();
runSearch({
keyword: '',
});
};
/**
......@@ -420,13 +426,8 @@ const updateFinishedStatus = (pageData, total) => {
/**
* 执行一次新的搜索,并重置分页状态。
*/
const onSearch = async () => {
const keyword = searchKeyword.value.trim();
if (!keyword) {
showToast('请输入搜索关键词');
return;
}
const runSearch = async ({ keyword }) => {
searchKeyword.value = keyword;
searching.value = true;
hasSearched.value = true;
loading.value = true;
......@@ -448,6 +449,17 @@ const onSearch = async () => {
}
};
const onSearch = async () => {
const keyword = searchKeyword.value.trim();
await runSearch({
keyword,
});
};
const onSearchEnter = async () => {
await onSearch();
};
/**
* 加载下一页搜索结果。
*/
......