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 }}
+
+ {{ policy_type_map[item.policyType] }}
+
+
{{ action_type_map[item.actionType] }}
@@ -47,6 +51,10 @@
{{ item.threshold }} 번
+
+ {{ item.availableCount }} 번
+
+
{{ item.startDate }} ~ {{ item.endDate }}
@@ -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