|
117 | 117 | <template #label> |
118 | 118 | <tooltip-label :title="$t('label.name')" :tooltip="apiParams.addUserToProject.username.description"/> |
119 | 119 | </template> |
120 | | - <a-select |
121 | | - show-search |
| 120 | + <a-auto-complete |
122 | 121 | v-model:value="form.username" |
123 | 122 | :placeholder="apiParams.addUserToProject.username.description" |
124 | | - v-focus="true" |
125 | | - :filterOption="false" |
126 | | - @search="fetchUsers" |
| 123 | + :filterOption="filterOption" |
| 124 | + :options="users" |
127 | 125 | > |
128 | 126 | <template v-if="load.users" #notFoundContent> |
129 | 127 | <a-spin size="small" /> |
130 | 128 | </template> |
131 | | - <template v-if="!load.users"> |
132 | | - <a-select-option v-for="user in users" :key="user.username" :value="user.username"> |
133 | | - <span v-if="user.icon"> |
134 | | - <resource-icon :image="user.icon.base64image" size="1x" style="margin-right: 5px"/> |
135 | | - </span> |
136 | | - <block-outlined v-else style="margin-right: 5px" /> |
137 | | - {{ user.firstname + ' ' + user.lastname + " (" + user.username + ")" }} |
138 | | - </a-select-option> |
| 129 | + <template v-if="!load.users" #option="item"> |
| 130 | + <span v-if="item.icon"> |
| 131 | + <resource-icon :image="item.icon.base64image" size="1x" style="margin-right: 5px"/> |
| 132 | + </span> |
| 133 | + <block-outlined v-else style="margin-right: 5px" /> |
| 134 | + {{ item.firstName + ' ' + item.lastName + " (" + item.value + ")" }} |
139 | 135 | </template> |
140 | | - </a-select> |
| 136 | + </a-auto-complete> |
141 | 137 | </a-form-item> |
142 | 138 | <a-form-item name="email" ref="email"> |
143 | 139 | <template #label> |
@@ -262,13 +258,27 @@ export default { |
262 | 258 | params.keyword = keyword |
263 | 259 | } |
264 | 260 | api('listUsers', params).then(response => { |
265 | | - this.users = response.listusersresponse.user ? response.listusersresponse.user : [] |
| 261 | + this.users = this.parseUsers(response?.listusersresponse?.user) |
266 | 262 | }).catch(error => { |
267 | 263 | this.$notifyError(error) |
268 | 264 | }).finally(() => { |
269 | 265 | this.load.users = false |
270 | 266 | }) |
271 | 267 | }, |
| 268 | + parseUsers (users) { |
| 269 | + if (!users) { |
| 270 | + return [] |
| 271 | + } |
| 272 | +
|
| 273 | + return users.map(user => { |
| 274 | + return { |
| 275 | + value: user.username, |
| 276 | + firstName: user.firstname, |
| 277 | + lastName: user.lastname, |
| 278 | + icon: user.icon |
| 279 | + } |
| 280 | + }) |
| 281 | + }, |
272 | 282 | fetchAccounts (keyword) { |
273 | 283 | this.load.accounts = true |
274 | 284 | const params = { domainid: this.resource.domainid, showicon: true } |
|
0 commit comments