diff --git a/src/api/planet.js b/src/api/planet.js index dd99783..89af683 100644 --- a/src/api/planet.js +++ b/src/api/planet.js @@ -18,6 +18,12 @@ export const planetTaskPage = (params) => getRequest(`${PREFIX}/task/page`, para export const planetTaskSave = (params) => postBodyRequest(`${PREFIX}/task/save`, params); export const planetTaskDelete = (id) => postRequest(`${PREFIX}/task/delete`, { id }); +// ---------------- 拉新返现 ---------------- +export const planetInviteRewardConfigPage = (params) => getRequest(`${PREFIX}/inviteReward/page`, params); +export const planetInviteRewardConfigSave = (params) => postBodyRequest(`${PREFIX}/inviteReward/save`, params); +export const planetInviteRewardConfigDelete = (id) => postRequest(`${PREFIX}/inviteReward/delete`, { id }); +export const planetInviteRewardRecordPage = (params) => getRequest(`${PREFIX}/inviteReward/record/page`, params); + // ---------------- BUFF ---------------- export const planetBuffPage = (params) => getRequest(`${PREFIX}/buff/page`, params); export const planetBuffSave = (params) => postBodyRequest(`${PREFIX}/buff/save`, params); diff --git a/src/views/app/business/luckey/luckey.vue b/src/views/app/business/luckey/luckey.vue index 337f973..8b8e405 100644 --- a/src/views/app/business/luckey/luckey.vue +++ b/src/views/app/business/luckey/luckey.vue @@ -47,6 +47,23 @@ @on-change="p => changePage('task', p)" size="small" show-total> + + + +
+ + + +
+ + +
+ + + +
@@ -286,6 +303,22 @@ + + +
+ + + + + + +
+
+ + +
+
+
@@ -391,6 +424,7 @@ planetPoolPage, planetPoolSave, planetPoolDelete, planetRewardList, planetRewardSave, planetRewardDelete, planetTaskPage, planetTaskSave, planetTaskDelete, + planetInviteRewardConfigPage, planetInviteRewardConfigSave, planetInviteRewardConfigDelete, planetInviteRewardRecordPage, planetBuffPage, planetBuffSave, planetBuffDelete, planetNewsPage, planetNewsSave, planetNewsDelete, planetRankPage, planetHuntPage, planetDrawPage, planetWinnerPage, @@ -416,6 +450,8 @@ regionName:'', pool: { loading: false, data: [], total: 0, pageNumber: 1, pageSize: 10 }, task: { loading: false, data: [], total: 0, pageNumber: 1, pageSize: 10 }, + inviteReward: { loading: false, data: [], total: 0, pageNumber: 1, pageSize: 10 }, + inviteRewardRecord: { loading: false, data: [], total: 0, pageNumber: 1, pageSize: 10 }, buff: { loading: false, data: [], total: 0, pageNumber: 1, pageSize: 10 }, news: { loading: false, data: [], total: 0, pageNumber: 1, pageSize: 10 }, rank: { loading: false, data: [], total: 0, pageNumber: 1, pageSize: 10 }, @@ -445,6 +481,8 @@ rewardForm: {}, taskModal: false, taskForm: {}, + inviteRewardModal: false, + inviteRewardForm: {}, buffModal: false, buffForm: {}, newsModal: false, @@ -601,6 +639,38 @@ } ] }, + inviteRewardColumns() { + return [ + { title: '奖励金额', key: 'rewardAmount', minWidth: 100 }, + { title: '每日上限', key: 'dailyLimit', minWidth: 100 }, + { title: '总预算', key: 'totalBudget', minWidth: 100 }, + { title: '已发放', key: 'usedBudget', minWidth: 100 }, + { title: '启用', minWidth: 70, render: (h, p) => this.enabledTag(h, p.row.enabled) }, + { title: '备注', key: 'remark', minWidth: 180 }, + { + title: '操作', width: 150, align: 'center', render: (h, params) => { + return h('div', [ + h('Button', { props: { type: 'text', size: 'small' }, on: { click: () => this.openInviteReward(params.row) } }, '编辑'), + h('Button', { props: { type: 'text', size: 'small' }, style: { color: '#ed4014' }, on: { click: () => this.delInviteReward(params.row) } }, '删除') + ]) + } + } + ] + }, + inviteRewardRecordColumns() { + return [ + { title: '邀请人ID', key: 'inviterId', minWidth: 150 }, + { title: '新用户ID', key: 'invitedUserId', minWidth: 150 }, + { title: '新用户手机号', key: 'invitedMobile', minWidth: 120 }, + { title: '区域ID', key: 'regionId', minWidth: 130 }, + { title: '奖励金额', key: 'amount', minWidth: 100 }, + { title: '状态', minWidth: 90, render: (h, p) => this.inviteRewardStatusTag(h, p.row.status) }, + { title: '商户单号', key: 'outBillNo', minWidth: 180 }, + { title: '微信单号', key: 'transferBillNo', minWidth: 180 }, + { title: '失败原因', key: 'failReason', minWidth: 180 }, + { title: '时间', key: 'createTime', minWidth: 160 } + ] + }, buffColumns() { return [ { title: '类型', key: 'type', width: 100 }, @@ -832,6 +902,16 @@ enabledTag(h, enabled) { return h('Tag', { props: { color: enabled === 1 ? 'green' : 'default' } }, enabled === 1 ? '是' : '否') }, + inviteRewardStatusTag(h, status) { + const map = { + 0: { text: '处理中', color: 'blue' }, + 1: { text: '成功', color: 'green' }, + 2: { text: '失败', color: 'red' }, + 3: { text: '跳过', color: 'default' } + } + const item = map[Number(status)] || { text: status === undefined || status === null ? '-' : String(status), color: 'default' } + return h('Tag', { props: { color: item.color } }, item.text) + }, isPoolDrawn(row) { return Number(row && row.status) === 1 }, @@ -845,7 +925,7 @@ }, onTabChange(name) { const map = { - pool: this.loadPool, task: this.loadTask, buff: this.loadBuff, + pool: this.loadPool, task: this.loadTask, inviteReward: this.loadInviteReward, inviteRewardRecord: this.loadInviteRewardRecord, buff: this.loadBuff, news: this.loadNews, rank: this.loadRank, hunt: this.loadHunt, draw: this.loadDraw, winner: this.loadWinner, tree: this.loadTree, warehouse: this.loadWarehouse, tower: this.loadTower, @@ -900,6 +980,8 @@ // ---- 列表加载(白嫖星球全部功能均限定商圈,未选商圈不查询) ---- loadPool() { if (!this.guardRegion('pool')) return; this.pool.loading = true; planetPoolPage(this.baseParams('pool')).then(r => this.fill('pool', r)) }, loadTask() { if (!this.guardRegion('task')) return; this.task.loading = true; planetTaskPage(this.baseParams('task')).then(r => this.fill('task', r)) }, + loadInviteReward() { if (!this.guardRegion('inviteReward')) return; this.inviteReward.loading = true; planetInviteRewardConfigPage(this.baseParams('inviteReward')).then(r => this.fill('inviteReward', r)) }, + loadInviteRewardRecord() { if (!this.guardRegion('inviteRewardRecord')) return; this.inviteRewardRecord.loading = true; planetInviteRewardRecordPage(this.baseParams('inviteRewardRecord')).then(r => this.fill('inviteRewardRecord', r)) }, loadBuff() { if (!this.guardRegion('buff')) return; this.buff.loading = true; planetBuffPage(this.baseParams('buff')).then(r => this.fill('buff', r)) }, loadNews() { if (!this.guardRegion('news')) return; this.news.loading = true; planetNewsPage(this.baseParams('news')).then(r => this.fill('news', r)) }, loadRank() { if (!this.guardRegion('rank')) return; this.rank.loading = true; planetRankPage(this.baseParams('rank')).then(r => this.fill('rank', r)) }, @@ -1027,6 +1109,39 @@ delTask(row) { planetTaskDelete(row.id).then(() => { this.$Message.success('删除成功'); this.loadTask() }) }, + // ---- 拉新返现配置 ---- + openInviteReward(row) { + this.inviteRewardForm = row ? Object.assign({}, row) : { + regionId: this.regionId || '', + rewardAmount: 0, + dailyLimit: 0, + totalBudget: 0, + usedBudget: 0, + enabled: 1 + } + this.inviteRewardModal = true + }, + saveInviteReward() { + const form = Object.assign({}, this.inviteRewardForm, { + regionId: this.inviteRewardForm.regionId || this.regionId || '' + }) + planetInviteRewardConfigSave(form).then(r => { + if (r && r.success) { + this.$Message.success('保存成功') + this.inviteRewardModal = false + this.loadInviteReward() + } else { + this.$Message.error((r && r.message) || '保存失败') + } + }) + }, + delInviteReward(row) { + this.$Modal.confirm({ + title: '确认删除', + content: '确认删除该拉新返现配置?', + onOk: () => planetInviteRewardConfigDelete(row.id).then(() => { this.$Message.success('删除成功'); this.loadInviteReward() }) + }) + }, // ---- BUFF ---- openBuff(row) { this.buffForm = row ? Object.assign({}, row) : { regionId: this.regionId || '', type: 'double', costTickets: 5, durationHours: 24, effectValue: 0, sort: 0, enabled: 1 }