@@ -18,22 +18,35 @@ const memberForm = reactive<{ userIds: string[] }>({ userIds: [] })
1818/* 成员选项 */
1919const optionsLoading = ref (false )
2020const userOptions = ref <CommonUserOption []>([])
21+ const allUserOptions = ref <CommonUserOption []>([])
2122let searchTimer: ReturnType <typeof setTimeout > | null = null
22- function loadUserOptions(query ? : string ) {
23+ function loadUserOptions(query = ' ' ) {
24+ const keyword = query .trim ()
2325 optionsLoading .value = true
24- CommonSystemApi .getWorkspaceMembers (props .workspaceId , query ? { nick_name: query } : undefined )
26+ CommonSystemApi .getWorkspaceMembers (props .workspaceId , keyword ? { nick_name: keyword } : undefined )
2527 .then ((users ) => {
2628 userOptions .value = users
29+ if (! keyword ) allUserOptions .value = users
2730 })
2831 .finally (() => {
2932 optionsLoading .value = false
3033 })
3134}
3235
3336function handleRemoteSearch(query : string ) {
34- if (searchTimer ) clearTimeout (searchTimer )
37+ if (searchTimer ) {
38+ clearTimeout (searchTimer )
39+ searchTimer = null
40+ }
41+ const keyword = query .trim ()
42+ if (! keyword ) {
43+ // Select 聚焦会触发空关键词搜索,复用首次列表以避免加载态导致下拉浮层重绘。
44+ userOptions .value = allUserOptions .value
45+ return
46+ }
3547 searchTimer = setTimeout (() => {
36- loadUserOptions (query )
48+ searchTimer = null
49+ loadUserOptions (keyword )
3750 }, 300 )
3851}
3952
@@ -67,6 +80,7 @@ function resetData() {
6780 loading .value = false
6881 optionsLoading .value = false
6982 userOptions .value = []
83+ allUserOptions .value = []
7084 formRef .value ?.clearValidate ()
7185 if (searchTimer ) {
7286 clearTimeout (searchTimer )
0 commit comments