diff --git a/xinli-ui/src/views/psychology/permission/user.vue b/xinli-ui/src/views/psychology/permission/user.vue index 8b188bd9..073c1b01 100644 --- a/xinli-ui/src/views/psychology/permission/user.vue +++ b/xinli-ui/src/views/psychology/permission/user.vue @@ -8,25 +8,65 @@ - - - - - 刷新当前 +
+ + + + + + + + + + 刷新当前 +
+ + + + + + + + + + + + + +
+ 提示:点击表格行或"选择"按钮即可选择该用户 +
+
+ @@ -71,7 +111,11 @@ export default { scaleList: [], selectedScaleIds: [], userOptions: [], - userSearchLoading: false + userSearchLoading: false, + // 搜索相关 + searchKeyword: "", + searchResults: [], + searchLoading: false }; }, created() { @@ -132,19 +176,37 @@ export default { /** 搜索可切换的用户 */ searchUsers(keyword) { this.userSearchLoading = true; - listUser({ + const queryParams = { pageNum: 1, - pageSize: 20, - status: '0', - userName: keyword, - nickName: keyword - }).then(response => { + pageSize: 10000, // 增加页面大小以获取更多用户 + status: '0' + }; + + // 如果有搜索关键词,添加搜索条件 + if (keyword && keyword.trim()) { + queryParams.userName = keyword.trim(); + queryParams.nickName = keyword.trim(); + } + + listUser(queryParams).then(response => { const rows = response.rows || []; - this.userOptions = rows.map(item => ({ + // 合并新搜索到的用户,避免重复 + const newUsers = rows.map(item => ({ userId: item.userId, userName: item.userName, nickName: item.nickName })); + + // 合并用户列表,去重 + const existingUserIds = new Set(this.userOptions.map(u => u.userId)); + newUsers.forEach(user => { + if (!existingUserIds.has(user.userId)) { + this.userOptions.push(user); + } + }); + }).catch(error => { + console.error('搜索用户失败:', error); + this.$modal.msgError("搜索用户失败"); }).finally(() => { this.userSearchLoading = false; }); @@ -202,6 +264,90 @@ export default { /** 选择变化 */ handleChange(value, direction, movedKeys) { // 可以在这里添加额外的逻辑 + }, + /** 下拉框获得焦点时,如果没有用户列表,则加载所有用户 */ + handleSelectFocus() { + if (this.userOptions.length === 0) { + this.loadAllUsers(); + } + }, + /** 加载所有用户 */ + loadAllUsers() { + this.userSearchLoading = true; + listUser({ + pageNum: 1, + pageSize: 1000, // 加载更多用户 + status: '0' + }).then(response => { + const rows = response.rows || []; + this.userOptions = rows.map(item => ({ + userId: item.userId, + userName: item.userName, + nickName: item.nickName + })); + this.$modal.msgSuccess(`已加载 ${this.userOptions.length} 个用户`); + }).catch(error => { + console.error('加载用户列表失败:', error); + this.$modal.msgError("加载用户列表失败"); + }).finally(() => { + this.userSearchLoading = false; + }); + }, + /** 搜索用户 */ + handleSearch() { + if (!this.searchKeyword || !this.searchKeyword.trim()) { + this.$modal.msgWarning("请输入搜索关键词"); + return; + } + + this.searchLoading = true; + this.searchResults = []; + const keyword = this.searchKeyword.trim(); + + // 支持按姓名、账号、手机号搜索 + listUser({ + pageNum: 1, + pageSize: 100, + status: '0', + userName: keyword, + nickName: keyword, + phonenumber: keyword + }).then(response => { + const rows = response.rows || []; + this.searchResults = rows.map(item => ({ + userId: item.userId, + userName: item.userName, + nickName: item.nickName, + phonenumber: item.phonenumber || '-', + email: item.email || '-' + })); + + if (this.searchResults.length === 0) { + this.$modal.msgWarning("未找到匹配的用户"); + } else { + this.$modal.msgSuccess(`找到 ${this.searchResults.length} 个用户`); + } + }).catch(error => { + console.error('搜索用户失败:', error); + this.$modal.msgError("搜索用户失败"); + }).finally(() => { + this.searchLoading = false; + }); + }, + /** 清空搜索结果 */ + handleSearchClear() { + this.searchResults = []; + this.searchKeyword = ""; + }, + /** 选择搜索结果中的用户 */ + handleSelectSearchUser(row) { + if (!row || !row.userId) { + return; + } + this.userId = row.userId; + this.initializeUserData(row.userId); + this.searchResults = []; // 选择后清空搜索结果 + this.$modal.msgSuccess(`已选择用户:${row.nickName || row.userName}`); } } };