diff --git a/src/api/calculate.js b/src/api/calculate.js
index 96632c4..8cd7573 100644
--- a/src/api/calculate.js
+++ b/src/api/calculate.js
@@ -24,7 +24,7 @@ async function getCalculateCommunityPost(startDate, endDate, page, size) {
}
async function getSettlementRatio(page) {
- return Vue.axios.get('/admin/calculate/ratio?page=' + (page - 1) + "&size=20'");
+ return Vue.axios.get('/admin/calculate/ratio?page=' + (page - 1) + "&size=20");
}
async function createCreatorSettlementRatio(creatorSettlementRatio) {
@@ -57,6 +57,21 @@ async function getCalculateCommunityByCreator(startDate, endDate, page, size) {
)
}
+async function updateCreatorSettlementRatio(creatorSettlementRatio) {
+ const request = {
+ memberId: creatorSettlementRatio.creator_id,
+ subsidy: creatorSettlementRatio.subsidy,
+ liveSettlementRatio: creatorSettlementRatio.liveSettlementRatio,
+ contentSettlementRatio: creatorSettlementRatio.contentSettlementRatio,
+ communitySettlementRatio: creatorSettlementRatio.communitySettlementRatio
+ };
+ return Vue.axios.post('/admin/calculate/ratio/update', request);
+}
+
+async function deleteCreatorSettlementRatio(memberId) {
+ return Vue.axios.post('/admin/calculate/ratio/delete/' + memberId);
+}
+
export {
getCalculateLive,
getCalculateContent,
@@ -65,6 +80,8 @@ export {
getCalculateCommunityPost,
getSettlementRatio,
createCreatorSettlementRatio,
+ updateCreatorSettlementRatio,
+ deleteCreatorSettlementRatio,
getCalculateLiveByCreator,
getCalculateContentByCreator,
getCalculateCommunityByCreator
diff --git a/src/views/Creator/CreatorSettlementRatio.vue b/src/views/Creator/CreatorSettlementRatio.vue
index 56f0fc2..41fcf09 100644
--- a/src/views/Creator/CreatorSettlementRatio.vue
+++ b/src/views/Creator/CreatorSettlementRatio.vue
@@ -53,6 +53,24 @@
{{ item.communitySettlementRatio }}%
+
+
+ 수정
+
+
+ 삭제
+
+
@@ -73,13 +91,19 @@
persistent
>
- 크리에이터 정산비율
-
+ {{ is_edit ? '크리에이터 정산비율 수정' : '크리에이터 정산비율' }}
+
+
+
+
- 등록하기
+ {{ is_edit ? '수정하기' : '등록하기' }}
@@ -142,6 +166,8 @@ export default {
items: [],
creator_settlement_ratio: {},
show_write_dialog: false,
+ is_edit: false,
+ editing_item_id: null,
headers: [
{
text: '닉네임',
@@ -173,6 +199,12 @@ export default {
sortable: false,
value: 'communitySettlementRatio',
},
+ {
+ text: '관리',
+ align: 'center',
+ sortable: false,
+ value: 'actions',
+ },
],
}
},
@@ -191,11 +223,16 @@ export default {
},
showWriteDialog() {
+ this.is_edit = false
+ this.editing_item_id = null
+ this.creator_settlement_ratio = {}
this.show_write_dialog = true
},
cancel() {
this.creator_settlement_ratio = {}
+ this.is_edit = false
+ this.editing_item_id = null
this.show_write_dialog = false
},
@@ -225,7 +262,11 @@ export default {
return
}
- this.createCreatorSettlementRatio();
+ if (this.is_edit) {
+ this.updateCreatorSettlementRatio();
+ } else {
+ this.createCreatorSettlementRatio();
+ }
},
async createCreatorSettlementRatio() {
@@ -253,6 +294,70 @@ export default {
this.is_loading = false
},
+ async updateCreatorSettlementRatio() {
+ if (this.is_loading) return;
+ this.is_loading = true
+ try {
+ // 수정은 생성과 동일한 파라미터를 전송 (memberId 기준)
+ const payload = { ...this.creator_settlement_ratio }
+ const res = await api.updateCreatorSettlementRatio(payload)
+ if (res.status === 200 && res.data.success === true) {
+ this.cancel()
+ this.notifySuccess(res.data.message || '수정되었습니다.')
+ this.items = []
+ await this.getSettlementRatio()
+ } else {
+ this.notifyError(res.data.message || '알 수 없는 오류가 발생했습니다. 다시 시도해 주세요.')
+ }
+ } catch (e) {
+ this.notifyError('알 수 없는 오류가 발생했습니다. 다시 시도해 주세요.')
+ } finally {
+ this.is_loading = false
+ }
+ },
+
+ openEdit(item) {
+ this.is_edit = true
+ this.editing_item_id = null
+ this.creator_settlement_ratio = {
+ creator_id: item.memberId,
+ subsidy: item.subsidy,
+ liveSettlementRatio: item.liveSettlementRatio,
+ contentSettlementRatio: item.contentSettlementRatio,
+ communitySettlementRatio: item.communitySettlementRatio,
+ }
+ this.show_write_dialog = true
+ },
+
+ async confirmDelete(item) {
+ try {
+ const ok = await this.$dialog.confirm({ text: '삭제하시겠습니까?', title: '확인', actions: { false: '취소', true: '삭제' } })
+ if (!ok) return
+ } catch (e) {
+ // 일부 구현체는 confirm이 boolean이 아닌 경우가 있음
+ }
+ this.deleteCreatorSettlementRatio(item)
+ },
+
+ async deleteCreatorSettlementRatio(item) {
+ if (this.is_loading) return;
+ this.is_loading = true
+ try {
+ const memberId = item.memberId
+ const res = await api.deleteCreatorSettlementRatio(memberId)
+ if (res.status === 200 && res.data.success === true) {
+ this.notifySuccess(res.data.message || '삭제되었습니다.')
+ this.items = this.items.filter(x => (x.memberId) !== memberId)
+ } else {
+ this.notifyError(res.data.message || '알 수 없는 오류가 발생했습니다. 다시 시도해 주세요.')
+ }
+ } catch (e) {
+ this.notifyError('알 수 없는 오류가 발생했습니다. 다시 시도해 주세요.')
+ } finally {
+ this.is_loading = false
+ }
+ },
+
async getSettlementRatio() {
this.is_loading = true
@@ -279,10 +384,6 @@ export default {
},
async next() {
- if (this.search_word.length < 2) {
- this.search_word = ''
- }
-
await this.getSettlementRatio()
},
},