fix(purchase): 모바일 네비 수정 + 권한 자동허용 + 장바구니 다중 품목 신청

- sideNav: TBM 패턴(hidden lg:flex + mobile-open) 적용, 회색 오버레이 버그 수정
- 권한: NAV_MENU 기반 publicPageKeys 추출, admin이 아닌 페이지는 비관리자 자동 접근 허용
- 장바구니: 검색→품목 추가→계속 검색→추가, 동일 품목 수량 합산, 품목별 메모
- bulk API: POST /purchase-requests/bulk (트랜잭션, is_new 품목 마스터 등록 포함)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
Hyungi Ahn
2026-04-01 10:21:16 +09:00
parent 41bb755181
commit 5832755475
7 changed files with 323 additions and 208 deletions

View File

@@ -215,6 +215,75 @@
}
.pm-search-register:active { background: #fff7ed; }
/* 장바구니 */
.pm-cart-header {
display: flex;
justify-content: space-between;
align-items: center;
margin-bottom: 8px;
}
.pm-cart-title { font-size: 14px; font-weight: 600; color: #374151; }
.pm-cart-count { font-size: 12px; color: #ea580c; font-weight: 600; }
.pm-cart-item {
display: flex;
align-items: flex-start;
gap: 8px;
padding: 10px;
background: #fff7ed;
border: 1px solid #fed7aa;
border-radius: 8px;
margin-bottom: 6px;
}
.pm-cart-item-info { flex: 1; min-width: 0; }
.pm-cart-item-name { font-size: 13px; font-weight: 600; color: #1f2937; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.pm-cart-item-meta { font-size: 11px; color: #9ca3af; margin-top: 2px; }
.pm-cart-item-new { font-size: 10px; color: #ea580c; }
.pm-cart-qty {
width: 48px;
padding: 4px 6px;
border: 1px solid #e5e7eb;
border-radius: 6px;
font-size: 14px;
text-align: center;
flex-shrink: 0;
}
.pm-cart-memo {
width: 80px;
padding: 4px 6px;
border: 1px solid #e5e7eb;
border-radius: 6px;
font-size: 12px;
flex-shrink: 0;
}
.pm-cart-remove {
width: 24px;
height: 24px;
border: none;
background: #fecaca;
color: #dc2626;
border-radius: 50%;
font-size: 14px;
cursor: pointer;
flex-shrink: 0;
display: flex;
align-items: center;
justify-content: center;
line-height: 1;
}
/* 신규 품목 인라인 필드 */
.pm-cart-new-fields {
display: flex;
gap: 4px;
margin-top: 4px;
}
.pm-cart-new-fields input, .pm-cart-new-fields select {
padding: 3px 6px;
border: 1px solid #e5e7eb;
border-radius: 4px;
font-size: 11px;
width: 100%;
}
/* 폼 필드 */
.pm-field { margin-bottom: 12px; }
.pm-label { display: block; font-size: 12px; font-weight: 600; color: #6b7280; margin-bottom: 4px; }