feat(agent): 에이전트 정산 비율 페이지 작성

- 에이전트 정산 비율 API 추가 (목록/등록/수정/닉네임 검색)
- AgentSettlementRatio.vue 구현 — 목록 테이블, "에이전트 비율 추가" 버튼, 수정 버튼 및 등록/수정 공용 팝업 추가
- UX: 닉네임 검색(v-autocomplete), 숫자/범위(0~100) 검증, datetime-local 입력값 LocalDateTime 문자열 변환 처리
- 에러/로딩 상태 기본 처리 및 목록 새로고침 흐름 반영
This commit is contained in:
Yu Sung
2026-04-11 22:01:53 +09:00
parent 49de523552
commit 7608cefba1
2 changed files with 366 additions and 10 deletions

View File

@@ -7,6 +7,42 @@ async function getAgentList() {
return Vue.axios.get('/admin/partner/agent/list')
}
export {
getAgentList
// 에이전트 정산 비율 목록 조회
async function getAgentSettlementRatioList() {
return Vue.axios.get('/admin/partner/agent/ratio')
}
// 에이전트 정산 비율 등록
// payload: { memberId: number, settlementRatio: number, effectiveFrom: string(yyyy-MM-ddTHH:mm:ss) }
async function createAgentSettlementRatio(payload) {
return Vue.axios.post('/admin/partner/agent/ratio', payload)
}
// 에이전트 정산 비율 수정
// payload: { memberId: number, settlementRatio: number, effectiveFrom: string(yyyy-MM-ddTHH:mm:ss) }
async function updateAgentSettlementRatio(payload) {
return Vue.axios.post('/admin/partner/agent/ratio/update', payload)
}
// 에이전트 닉네임 검색
// 반환: [{ id, nickname }]
async function searchAgentByNickname(query) {
try {
const res = await Vue.axios.get('/admin/partner/agent/search-by-nickname', {
params: { nickname: query, search_word: query }
})
if (res && Array.isArray(res.data)) return res.data
if (res && res.data && Array.isArray(res.data.data)) return res.data.data
return []
} catch (e) {
return []
}
}
export {
getAgentList,
getAgentSettlementRatioList,
createAgentSettlementRatio,
updateAgentSettlementRatio,
searchAgentByNickname,
}