diff --git a/src/api/point_policy.js b/src/api/point_policy.js index 2c03df5..1a7e485 100644 --- a/src/api/point_policy.js +++ b/src/api/point_policy.js @@ -1,7 +1,7 @@ import Vue from 'vue'; async function getPointPolicyList(page) { - return Vue.axios.get("/admin/point-policies?page=" + page + "&page_size=20") + return Vue.axios.get("/admin/point-policies?page=" + (page - 1) + "&page_size=20") } async function createPointPolicyList(request) { diff --git a/src/views/Promotion/PointPolicyView.vue b/src/views/Promotion/PointPolicyView.vue index 5ac9aed..7d74887 100644 --- a/src/views/Promotion/PointPolicyView.vue +++ b/src/views/Promotion/PointPolicyView.vue @@ -39,6 +39,10 @@ {{ item.title }} + + @@ -47,6 +51,10 @@ {{ item.threshold }} 번 + + @@ -101,6 +109,19 @@ required /> + + + + + + + + @@ -210,24 +238,51 @@ export default { show_write_dialog: false, action_type_list: [ - { - name: '회원가입', - value: 'SIGN_UP' - }, { name: '본인인증', value: 'USER_AUTHENTICATION' }, + { + name: '콘텐츠 댓글', + value: 'CONTENT_COMMENT' + }, + { + name: '구매한 콘텐츠 댓글', + value: 'ORDER_CONTENT_COMMENT' + }, + { + name: '라이브 연속 청취 30분', + value: 'LIVE_CONTINUOUS_LISTEN_30' + }, ], action_type_map: { - 'SIGN_UP': '회원가입', - 'USER_AUTHENTICATION': '본인인증' + 'USER_AUTHENTICATION': '본인인증', + 'CONTENT_COMMENT': '콘텐츠 댓글', + 'ORDER_CONTENT_COMMENT': '구매한 콘텐츠 댓글', + 'LIVE_CONTINUOUS_LISTEN_30': '라이브 연속 청취 30분', + }, + + policy_type_list: [ + { + name: '매일', + value: 'DAILY' + }, + { + name: '전체', + value: 'TOTAL' + }, + ], + policy_type_map: { + 'DAILY': '매일', + 'TOTAL': '전체', }, point_policy: { title: '', + policy_type: '', action_type: '', threshold: 0, + available_count: 0, point: 0, start_date: '', end_date: '' @@ -245,6 +300,12 @@ export default { sortable: false, value: 'title', }, + { + text: '지급유형', + align: 'center', + sortable: false, + value: 'policyType', + }, { text: '액션', align: 'center', @@ -257,6 +318,12 @@ export default { sortable: false, value: 'threshold', }, + { + text: '참여 가능 횟수', + align: 'center', + sortable: false, + value: 'availableCount', + }, { text: '기간', align: 'center', @@ -306,8 +373,10 @@ export default { this.selected_point_policy = item; this.point_policy = { title: item.title, + policy_type: item.policyType, action_type: item.actionType, threshold: item.threshold, + available_count: item.availableCount, point: item.pointAmount, start_date: item.startDate, end_date: item.endDate, @@ -322,18 +391,23 @@ export default { return } + if (this.point_policy.policy_type.trim() === '') { + this.notifyError('지급유형을 선택하세요') + return + } + if (this.point_policy.action_type.trim() === '') { this.notifyError('액션을 선택하세요') return } if (isNaN(this.point_policy.threshold)) { - this.notifyError('참여 횟수는 숫자만 입력 가능합니다.') + this.notifyError('참여 해야하는 횟수는 숫자만 입력 가능합니다.') return } if (this.point_policy.threshold <= 0) { - this.notifyError('참여 횟수는 1이상 입력 가능합니다.') + this.notifyError('참여 해야하는 횟수는 1이상 입력 가능합니다.') return } @@ -342,6 +416,16 @@ export default { return } + if (isNaN(this.point_policy.available_count)) { + this.notifyError('참여 가능 횟수는 숫자만 입력 가능합니다.') + return + } + + if (this.point_policy.available_count <= 0) { + this.notifyError('참여 가능 횟수는 1이상 입력 가능합니다.') + return + } + if (this.point_policy.start_date.trim() === '') { this.notifyError('정책 시작 날짜를 입력하세요') return @@ -351,33 +435,37 @@ export default { }, cancel() { - this.selected_charge_event = null; this.point_policy = { title: '', + policy_type: '', action_type: '', threshold: 0, + available_count: 0, point: 0, start_date: '', end_date: '' } this.show_write_dialog = false + this.selected_point_policy = null; }, async submit() { if (this.is_loading) return; - this.is_loading = true try { const request = { 'title': this.point_policy.title, + 'policyType': this.point_policy.policy_type, 'actionType': this.point_policy.action_type, 'threshold': this.point_policy.threshold, + 'availableCount': this.point_policy.available_count, 'pointAmount': this.point_policy.point, 'startDate': this.point_policy.start_date, 'endDate': this.point_policy.end_date } const res = await api.createPointPolicyList(request) + this.is_loading = false if (res.status === 200 && res.data.success === true) { this.cancel() @@ -392,12 +480,11 @@ export default { } catch (e) { this.notifyError("알 수 없는 오류가 발생했습니다. 다시 시도해 주세요.") } - - this.is_loading = false }, async modify() { if (this.is_loading) return; + this.is_loading = true try { const request = {} @@ -418,15 +505,13 @@ export default { request.isActive = this.point_policy.is_active } - console.log(request); - const res = await api.updatePointPolicyList(this.selected_point_policy.id, request) + this.is_loading = false if (res.status === 200 && res.data.success === true) { this.cancel() this.notifySuccess(res.data.message || '수정되었습니다.') - this.page = 1 this.point_policy_list = [] await this.getPointPolicyList() } else { @@ -435,8 +520,6 @@ export default { } catch (e) { this.notifyError("알 수 없는 오류가 발생했습니다. 다시 시도해 주세요.") } - - this.is_loading = false }, async getPointPolicyList() { @@ -444,7 +527,7 @@ export default { this.is_loading = true try { - const res = await api.getPointPolicyList(); + const res = await api.getPointPolicyList(this.page); if (res.status === 200 && res.data.success === true) { const data = res.data.data