From 7608cefba11c5a760188d04b20b5515fd1a152c9 Mon Sep 17 00:00:00 2001 From: Yu Sung Date: Sat, 11 Apr 2026 22:01:53 +0900 Subject: [PATCH] =?UTF-8?q?feat(agent):=20=EC=97=90=EC=9D=B4=EC=A0=84?= =?UTF-8?q?=ED=8A=B8=20=EC=A0=95=EC=82=B0=20=EB=B9=84=EC=9C=A8=20=ED=8E=98?= =?UTF-8?q?=EC=9D=B4=EC=A7=80=20=EC=9E=91=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 에이전트 정산 비율 API 추가 (목록/등록/수정/닉네임 검색) - AgentSettlementRatio.vue 구현 — 목록 테이블, "에이전트 비율 추가" 버튼, 수정 버튼 및 등록/수정 공용 팝업 추가 - UX: 닉네임 검색(v-autocomplete), 숫자/범위(0~100) 검증, datetime-local 입력값 LocalDateTime 문자열 변환 처리 - 에러/로딩 상태 기본 처리 및 목록 새로고침 흐름 반영 --- src/api/agent.js | 40 ++- src/views/Agent/AgentSettlementRatio.vue | 336 ++++++++++++++++++++++- 2 files changed, 366 insertions(+), 10 deletions(-) diff --git a/src/api/agent.js b/src/api/agent.js index e6b1b5b..b14de7c 100644 --- a/src/api/agent.js +++ b/src/api/agent.js @@ -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, } diff --git a/src/views/Agent/AgentSettlementRatio.vue b/src/views/Agent/AgentSettlementRatio.vue index b6201f3..d8c678a 100644 --- a/src/views/Agent/AgentSettlementRatio.vue +++ b/src/views/Agent/AgentSettlementRatio.vue @@ -1,19 +1,339 @@