From e71b032180bba86675eed3db1d4fb12fe2e26197 Mon Sep 17 00:00:00 2001 From: Flow <958079825@qq.com> Date: Mon, 23 Jun 2025 10:48:50 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=9A=E5=91=98=E5=BC=80=E9=80=9A=E7=BB=AD?= =?UTF-8?q?=E8=B4=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/api/person/index.ts | 10 + src/views/vip/components/RechargeDialog.vue | 549 +++++++++++++++-- src/views/vip/components/becomvip.vue | 647 ++++++++++++++++++++ src/views/vip/index.vue | 72 ++- 4 files changed, 1183 insertions(+), 95 deletions(-) create mode 100644 src/views/vip/components/becomvip.vue diff --git a/src/api/person/index.ts b/src/api/person/index.ts index 624402d6a..c9132c6a6 100644 --- a/src/api/person/index.ts +++ b/src/api/person/index.ts @@ -98,5 +98,15 @@ export const PersonApi = { url: `/system/person/member-growth-data`, params: { orgid } }) + }, + + // 续费会员 + rechargePerson: async (userid: number, vipendtime: string) => { + return await request.put({ url: `/system/person/recharge?userid=` + userid + `&vipendtime=` + vipendtime }) + }, + + // 开通会员 + becomeVip: async (data: any) => { + return await request.put({ url: `/system/person/become-vip`, data }) } } diff --git a/src/views/vip/components/RechargeDialog.vue b/src/views/vip/components/RechargeDialog.vue index 3809cb9be..c92693498 100644 --- a/src/views/vip/components/RechargeDialog.vue +++ b/src/views/vip/components/RechargeDialog.vue @@ -1,31 +1,93 @@ \ No newline at end of file diff --git a/src/views/vip/components/becomvip.vue b/src/views/vip/components/becomvip.vue new file mode 100644 index 000000000..1aa92f724 --- /dev/null +++ b/src/views/vip/components/becomvip.vue @@ -0,0 +1,647 @@ + + + + + diff --git a/src/views/vip/index.vue b/src/views/vip/index.vue index 9bb4497f8..73c17f458 100644 --- a/src/views/vip/index.vue +++ b/src/views/vip/index.vue @@ -70,7 +70,7 @@
+ + + { if (res) { memberList.value = res.list total.value = res.total - console.log(memberList.value) } else { memberList.value = [] total.value = 0 @@ -223,18 +232,27 @@ const resetQuery = () => { // 续费/开通会员 const handleRecharge = (member) => { currentMember.value = member - rechargeDialogVisible.value = true + if (member.isvip === 0) { + // 未开通会员,打开开通会员弹窗 + becomeVipDialogVisible.value = true + } else { + // 已开通会员,打开续费弹窗 + rechargeDialogVisible.value = true + } } // 续费成功 const handleRechargeSuccess = (data) => { - const member = mockMembers.find(m => m.id === data.memberId) - if (member) { - member.vipStatus = true - member.vipExpireDate = data.expireDate - getList() - ElMessage.success('操作成功') - } + // 刷新会员列表数据 + getList() + ElMessage.success('续费成功') +} + +// 开通会员成功 +const handleBecomeVipSuccess = (data) => { + // 刷新会员列表数据 + getList() + ElMessage.success('会员开通成功') } // 取消会员 @@ -244,25 +262,21 @@ const handleCancel = (member) => { } // 密码验证成功 -const handlePasswordVerifySuccess = (password) => { - // TODO: 这里需要调用后端API验证密码并取消会员 - // 模拟API调用 - setTimeout(() => { - const index = mockMembers.findIndex(m => m.id === currentMember.value.id) - if (index !== -1) { - mockMembers[index] = { - ...currentMember.value, - vipStatus: false, - vipExpireDate: '' - } - getList() - ElMessage.success('已取消会员资格') - // 关闭密码验证弹窗 - passwordVerifyVisible.value = false - // 清空当前选中的会员 - currentMember.value = null - } - }, 500) +const handlePasswordVerifySuccess = async (password) => { + try { + // TODO: 这里需要调用后端API验证密码并取消会员 + // 暂时显示成功消息 + ElMessage.success('已取消会员资格') + // 关闭密码验证弹窗 + passwordVerifyVisible.value = false + // 清空当前选中的会员 + currentMember.value = null + // 刷新列表 + getList() + } catch (error) { + console.error('取消会员失败:', error) + ElMessage.error('取消会员失败,请重试') + } } onMounted(() => {