diff --git a/src/views/Can/CanCharge.vue b/src/views/Can/CanCharge.vue index 97c8a94..79c5fa4 100644 --- a/src/views/Can/CanCharge.vue +++ b/src/views/Can/CanCharge.vue @@ -10,7 +10,7 @@ @@ -140,6 +142,23 @@ export default { names.push(...manualIds.map(String)) } return names + }, + // 검색 결과 목록에 현재 선택된 사용자들을 항상 포함시켜 + // 선택 chip이 사라지지 않도록 보장 + displaySearchItems() { + const map = new Map() + ;(this.selectedMembers || []).forEach(m => { + if (m && (m.id !== undefined && m.id !== null)) { + map.set(String(m.id), m) + } + }) + ;(this.searchItems || []).forEach(m => { + if (m && (m.id !== undefined && m.id !== null)) { + const key = String(m.id) + if (!map.has(key)) map.set(key, m) + } + }) + return Array.from(map.values()) } }, @@ -159,6 +178,16 @@ export default { this.$dialog.notify.success(message) }, + // v-autocomplete의 선택 비교를 id 기준으로 수행 + compareMember(a, b) { + if (a === b) return true + if (!a || !b) return false + const aid = typeof a === 'object' ? a.id : a + const bid = typeof b === 'object' ? b.id : b + if (aid === undefined || bid === undefined || aid === null || bid === null) return false + return String(aid) === String(bid) + }, + onSearch(val) { this.searchQuery = val