사용자-약국 매핑 시스템 개선 및 UI 업데이트
- 자동 매핑 버그 수정: 이름만으로 자동 연결되던 문제 해결 - 매핑되지 않은 약국 목록 API 추가 (/api/pharmacies/available) - 사용자 연결 드롭다운에서 매핑 가능한 약국만 표시하도록 개선 - 기존 잘못된 매핑 초기화하여 명시적 링크만 허용 - UI 텍스트 업데이트: "Headscale 사용자 목록" → "PQON 사용자 목록" - UI 텍스트 업데이트: "Headscale 네트워크 사용자" → "PharmQ-ON 사용자" - 사이드 메뉴 링크 변경: "Headplane UI" → "Medivault" (https://medivault.co.kr/) - SQLAlchemy or_ import 추가하여 복합 조건 쿼리 지원 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
@@ -20,7 +20,7 @@
|
||||
<i class="fas fa-users text-primary"></i>
|
||||
사용자 관리
|
||||
</h1>
|
||||
<p class="text-muted">Headscale 네트워크 사용자 및 약국 매칭 관리</p>
|
||||
<p class="text-muted">PharmQ-ON 사용자 및 약국 매칭 관리</p>
|
||||
</div>
|
||||
<div class="d-flex gap-2">
|
||||
<button class="btn btn-outline-secondary" onclick="refreshUserList()">
|
||||
@@ -87,7 +87,7 @@
|
||||
<div class="card">
|
||||
<div class="card-header">
|
||||
<h5 class="mb-0">
|
||||
<i class="fas fa-list"></i> Headscale 사용자 목록
|
||||
<i class="fas fa-list"></i> PQON 사용자 목록
|
||||
</h5>
|
||||
</div>
|
||||
<div class="card-body" id="usersTableContainer">
|
||||
@@ -420,13 +420,33 @@ function showLinkPharmacyModal(userName) {
|
||||
document.getElementById('linkUserName').textContent = userName;
|
||||
selectedUserId = userName;
|
||||
|
||||
// 약국 목록을 셀렉트 박스에 추가
|
||||
// 매핑 가능한 약국 목록을 API에서 가져오기
|
||||
const select = document.getElementById('pharmacySelect');
|
||||
select.innerHTML = '<option value="">약국을 선택하세요</option>';
|
||||
select.innerHTML = '<option value="">로딩 중...</option>';
|
||||
|
||||
currentPharmacies.forEach(pharmacy => {
|
||||
select.innerHTML += `<option value="${pharmacy.id}">${pharmacy.pharmacy_name} (${pharmacy.manager_name})</option>`;
|
||||
});
|
||||
fetch('/api/pharmacies/available')
|
||||
.then(response => response.json())
|
||||
.then(data => {
|
||||
if (data.success) {
|
||||
select.innerHTML = '<option value="">약국을 선택하세요</option>';
|
||||
|
||||
if (data.pharmacies.length === 0) {
|
||||
select.innerHTML = '<option value="">매핑 가능한 약국이 없습니다</option>';
|
||||
} else {
|
||||
data.pharmacies.forEach(pharmacy => {
|
||||
select.innerHTML += `<option value="${pharmacy.id}">${pharmacy.pharmacy_name} (${pharmacy.manager_name})</option>`;
|
||||
});
|
||||
}
|
||||
} else {
|
||||
select.innerHTML = '<option value="">약국 목록 로드 실패</option>';
|
||||
showToast('약국 목록을 불러오는데 실패했습니다.', 'error');
|
||||
}
|
||||
})
|
||||
.catch(error => {
|
||||
console.error('약국 목록 로드 오류:', error);
|
||||
select.innerHTML = '<option value="">약국 목록 로드 실패</option>';
|
||||
showToast('약국 목록을 불러오는데 실패했습니다.', 'error');
|
||||
});
|
||||
|
||||
const modal = new bootstrap.Modal(document.getElementById('linkPharmacyModal'));
|
||||
modal.show();
|
||||
|
||||
Reference in New Issue
Block a user