diff --git a/dist.zip b/dist.zip deleted file mode 100644 index af49cac..0000000 Binary files a/dist.zip and /dev/null differ diff --git a/src/api/auth.js b/src/api/auth.js index 60eea71..071ee5c 100644 --- a/src/api/auth.js +++ b/src/api/auth.js @@ -4,24 +4,6 @@ import api from './index.js'; * 授权登录相关接口 */ export const authApi = { - /** - * 微信小程序授权登录 - * @param {Object} params 登录参数 - * @param {string} params.code 参数信息 - * @param {string} params.encryptedData 解密 - * @param {string} params.headimgurl 用户头像 - * @param {string} params.id 标识 - * @param {string} params.iv 解密标签 - * @param {string} params.nickName 用户姓名 - * @param {string} params.openid 用户唯一标识 - * @param {string} params.session_key 会话密钥 - * @param {string} params.shareId 邀请者销售标识 - * @param {string} params.state 类型 - * @param {string} params.vid 参数信息 - */ - appletLogin(params) { - return api.get('/all_login/appletLogin', { params }); - }, /** * pc端手机号码验证码登录 @@ -34,13 +16,12 @@ export const authApi = { }, /** - * 绑定手机号码 - * @param {string} code 授权码 + * 发送手机验证码 + * @param {Object} params 参数 + * @param {string} params.phone 手机号 */ - bindPhone(code) { - return api.get('/all_login/bindPhone', { - params: { code } - }); + phoneSendCode(params) { + return api.get('/all_login/phoneSendCode', { params }); }, /** diff --git a/src/api/user.js b/src/api/user.js index a1f64eb..edf01cf 100644 --- a/src/api/user.js +++ b/src/api/user.js @@ -4,356 +4,306 @@ import api from './index.js'; * 我的-流水相关接口 */ export const moneyApi = { - /** - * 获取我的流水列表带分页 - * @param {Object} params 查询参数 - * @param {number} params.pageNo 当前页 - * @param {number} params.pageSize 显示条数 - * @param {number} params.status 状态 - */ - getMyMoneyLogPage(params) { - return api.get('/all_money/getMyMoneyLogPage', { params }); - }, - - /** - * 获取我的可用积分数 - */ - getMyMoneyNum() { - return api.get('/all_money/getMyMoneyNum'); - } + /** + * 获取我的流水列表带分页 + * @param {Object} params 查询参数 + * @param {number} params.pageNo 当前页 + * @param {number} params.pageSize 显示条数 + * @param {number} params.status 状态 + */ + getMyMoneyLogPage(params) { + return api.get('/all_money/getMyMoneyLogPage', { params }); + }, + + /** + * 获取我的可用积分数 + */ + getMyMoneyNum() { + return api.get('/all_money/getMyMoneyNum'); + } }; /** * 我的-评论相关接口 */ export const commentApi = { - /** - * 删除评论信息 - * @param {string} commentId 评论ID - */ - deleteComment(commentId) { - return api.get('/my_comment/deleteComment', { - params: { commentId } - }); - }, - - /** - * 获取评论详情 - * @param {string} commentId 评论ID - */ - getCommentDetail(commentId) { - return api.post('/my_comment/getCommentDetail', null, { - params: { commentId } - }); - }, - - /** - * 根据书籍标识查询评论信息列表带分页 - * @param {Object} params 查询参数 - * @param {string} params.bookId 书籍ID - * @param {number} params.pageNo 当前页 - * @param {number} params.pageSize 显示条数 - */ - getCommentList(params) { - return api.get('/my_comment/getCommentList', { params }); - }, - - /** - * 获取我的评论列表 - * @param {Object} params 分页参数 - * @param {number} params.pageNo 当前页 - * @param {number} params.pageSize 显示条数 - * @param {string} params.type 类型 - */ - getMyCommentList(params) { - return api.get('/my_comment/getMyCommentList', { params }); - }, - - /** - * 获取我的评论数 - */ - getMyCommentNum() { - return api.get('/my_comment/getMyCommentNum'); - }, - - /** - * 获取回复我的评论列表 - * @param {Object} params 分页参数 - * @param {number} params.pageNo 当前页 - * @param {number} params.pageSize 显示条数 - * @param {string} params.type 类型 N-未读 Y-已读 - */ - getMyReplyCommentList(params) { - return api.get('/my_comment/getMyReplyCommentList', { params }); - }, - - /** - * 回复评论信息 - * @param {Object} params 回复参数 - * @param {string} params.commentId 评论ID - * @param {string} params.content 回复内容 - */ - replyComment(params) { - return api.post('/my_comment/replyComment', null, { params }); - }, - - /** - * 保存评论信息 - * @param {Object} params 评论参数 - * @param {string} params.bookId 书籍ID - * @param {string} params.content 评论内容 - */ - saveComment(params) { - return api.post('/my_comment/saveComment', null, { params }); - }, - - /** - * 更新评论已读状态 - * @param {string} commentId 评论ID - */ - updateCommentRead() { - return api.post('/my_comment/updateCommentRead'); - } + /** + * 删除评论信息 + * @param {string} commentId 评论ID + */ + deleteComment(commentId) { + return api.get('/my_comment/deleteComment', { + params: { commentId } + }); + }, + + /** + * 获取评论详情 + * @param {string} commentId 评论ID + */ + getCommentDetail(commentId) { + return api.post('/my_comment/getCommentDetail', null, { + params: { commentId } + }); + }, + + /** + * 根据书籍标识查询评论信息列表带分页 + * @param {Object} params 查询参数 + * @param {string} params.bookId 书籍ID + * @param {number} params.pageNo 当前页 + * @param {number} params.pageSize 显示条数 + */ + getCommentList(params) { + return api.get('/my_comment/getCommentList', { params }); + }, + + /** + * 获取我的评论列表 + * @param {Object} params 分页参数 + * @param {number} params.pageNo 当前页 + * @param {number} params.pageSize 显示条数 + * @param {string} params.type 类型 + */ + getMyCommentList(params) { + return api.get('/my_comment/getMyCommentList', { params }); + }, + + /** + * 获取我的评论数 + */ + getMyCommentNum() { + return api.get('/my_comment/getMyCommentNum'); + }, + + /** + * 获取回复我的评论列表 + * @param {Object} params 分页参数 + * @param {number} params.pageNo 当前页 + * @param {number} params.pageSize 显示条数 + * @param {string} params.type 类型 N-未读 Y-已读 + */ + getMyReplyCommentList(params) { + return api.get('/my_comment/getMyReplyCommentList', { params }); + }, + + /** + * 回复评论信息 + * @param {Object} params 回复参数 + * @param {string} params.commentId 评论ID + * @param {string} params.content 回复内容 + */ + replyComment(params) { + return api.post('/my_comment/replyComment', null, { params }); + }, + + /** + * 保存评论信息 + * @param {Object} params 评论参数 + * @param {string} params.bookId 书籍ID + * @param {string} params.content 评论内容 + */ + saveComment(params) { + return api.post('/my_comment/saveComment', null, { params }); + }, + + /** + * 更新评论已读状态 + * @param {string} commentId 评论ID + */ + updateCommentRead() { + return api.post('/my_comment/updateCommentRead'); + } }; /** * 我的-任务中心相关接口 */ export const taskApi = { - /** - * 点击更多任务 - * @param {string} taskId 任务ID - */ - clickMoreTask(taskId) { - return api.post('/my_task/clickMoreTask', null, { - params: { taskId } - }); - }, - - /** - * 点击签到任务 - * @param {string} taskId 任务ID - */ - clickSignTask(taskId) { - return api.get('/my_task/clickSignTask', { - params: { taskId } - }); - }, - - /** - * 获取更多任务列表 - * @param {string} token token - */ - getMoreTaskList(token) { - return api.get('/my_task/getMoreTaskList', { - params: { token } - }); - }, - - /** - * 获取更多任务记录列表 - * @param {Object} params 分页参数 - * @param {number} params.pageNo 当前页 - * @param {number} params.pageSize 显示条数 - */ - getMoreTaskRecordPage(params) { - return api.get('/my_task/getMoreTaskRecordPage', { params }); - }, - - /** - * 获取我的推荐票数 - */ - getMyRecommendTicketNum() { - return api.get('/my_task/getMyRecommendTicketNum'); - }, - - /** - * 获取我的推荐任务列表 - * @param {string} token token - */ - getSignTaskList(token) { - return api.get('/my_task/getSignTaskList', { - params: { token } - }); - }, - - /** - * 获取我的推荐任务记录列表 - * @param {Object} params 分页参数 - * @param {number} params.pageNo 当前页 - * @param {number} params.pageSize 显示条数 - */ - getSignTaskRecordPage(params) { - return api.get('/my_task/getSignTaskRecordPage', { params }); - }, - - /** - * 获取我当天是否已经签到 - */ - getSignTaskToday() { - return api.get('/my_task/getSignTaskToday'); - } + /** + * 点击更多任务 + * @param {string} taskId 任务ID + */ + clickMoreTask(taskId) { + return api.post('/my_task/clickMoreTask', null, { + params: { taskId } + }); + }, + + /** + * 点击签到任务 + * @param {string} taskId 任务ID + */ + clickSignTask(taskId) { + return api.get('/my_task/clickSignTask', { + params: { taskId } + }); + }, + + /** + * 获取更多任务列表 + * @param {string} token token + */ + getMoreTaskList(token) { + return api.get('/my_task/getMoreTaskList', { + params: { token } + }); + }, + + /** + * 获取更多任务记录列表 + * @param {Object} params 分页参数 + * @param {number} params.pageNo 当前页 + * @param {number} params.pageSize 显示条数 + */ + getMoreTaskRecordPage(params) { + return api.get('/my_task/getMoreTaskRecordPage', { params }); + }, + + /** + * 获取我的推荐票数 + */ + getMyRecommendTicketNum() { + return api.get('/my_task/getMyRecommendTicketNum'); + }, + + /** + * 获取我的推荐任务列表 + * @param {string} token token + */ + getSignTaskList(token) { + return api.get('/my_task/getSignTaskList', { + params: { token } + }); + }, + + /** + * 获取我的推荐任务记录列表 + * @param {Object} params 分页参数 + * @param {number} params.pageNo 当前页 + * @param {number} params.pageSize 显示条数 + */ + getSignTaskRecordPage(params) { + return api.get('/my_task/getSignTaskRecordPage', { params }); + }, + + /** + * 获取我当天是否已经签到 + */ + getSignTaskToday() { + return api.get('/my_task/getSignTaskToday'); + } }; /** * 我的-申请成为作家相关接口 */ export const writerApi = { - /** - * 查询我的笔名以及简介 - */ - getMyWriter() { - return api.get('/my_writer/getMyWriter'); - }, - - /** - * 填写或修改笔名以及简介成为作家 - * @param {Object} params 作家信息 - * @param {string} params.details 简介 - * @param {string} params.penName 笔名 - */ - saveOrUpdateWriter(params) { - return api.post('/my_writer/saveOrUpdateWriter', null, { params }); - } + /** + * 查询我的笔名以及简介 + */ + getMyWriter() { + return api.get('/my_writer/getMyWriter'); + }, + + /** + * 填写或修改笔名以及简介成为作家 + * @param {Object} params 作家信息 + * @param {string} params.details 简介 + * @param {string} params.penName 笔名 + */ + saveOrUpdateWriter(params) { + return api.post('/my_writer/saveOrUpdateWriter', null, { params }); + } }; /** * 我的-礼物订阅接口 */ export const orderApi = { - /** - * 创建订单 - * @param {Object} params 订单参数 - * @param {string} params.giftId 礼物ID - * @param {number} params.num 数量 - * @param {string} params.token token - */ - createOrder(params) { - return api.post('/my_order/createOrder', null, { params }); - }, - - /** - * 查询礼物详情 - * @param {string} giftId 礼物ID - */ - getGiftDetail(giftId) { - return api.get('/my_order/getGiftDetail', { - params: { giftId } - }); - }, - - /** - * 查询互动打赏礼物信息列表 - * @param {Object} params 分页参数 - * @param {number} params.pageNo 当前页 - * @param {number} params.pageSize 显示条数 - */ - getInteractionGiftList(params) { - return api.get('/my_order/getInteractionGiftList', { params }); - }, - - /** - * 查询我的礼物包订单列表 - * @param {Object} params 查询参数 - * @param {number} params.pageNo 当前页 - * @param {number} params.pageSize 显示条数 - * @param {string} params.token token - */ - getMyGiftList(params) { - return api.get('/my_order/getMyGiftList', { params }); - }, - - /** - * 支付订单 - * @param {Object} params 支付参数 - * @param {string} params.orderId 订单ID - * @param {string} params.token token - */ - payOrder(params) { - return api.post('/my_order/payOrder', null, { params }); - }, - /** - * 支付成功 - * @param {string} orderId 订单ID - */ - paySuccess(orderId) { - return api.post('/my_order/paySuccess', null, { - params: { orderId } - }); - }, - - /** - * 购买章节 - * @param {Object} params 购买参数 - * @param {string} params.bookId 书籍ID - * @param {string} params.novelId 章节ID - */ - buyNovel(params) { - return api.post('/my_order/buyNovel', null, { params }); - }, - - /** - * 创建支付套餐订单 - * @param {string} packageId 套餐ID - */ - createPayPackageOrder(params) { - return api.post('/my_order/createPayPackageOrder', null, { - params - }); - }, - - /** - * 充值套餐列表 - */ - getPayPackageList() { - return api.get('/my_order/getPayPackageList'); - }, - - /** - * 根据书籍id,礼物id赠送礼物 - * @param {Object} params 赠送参数 - * @param {string} params.bookId 书籍ID - * @param {string} params.giftId 礼物ID - * @param {number} params.num 数量 - */ - giveGift(params) { - return api.post('/my_order/giveGift', null, { params }); - } + /** + * 查询礼物详情 + * @param {string} giftId 礼物ID + */ + getGiftDetail(giftId) { + return api.get('/my_order/getGiftDetail', { + params: { giftId } + }); + }, + + /** + * 查询互动打赏礼物信息列表 + * @param {Object} params 分页参数 + * @param {number} params.pageNo 当前页 + * @param {number} params.pageSize 显示条数 + */ + getInteractionGiftList(params) { + return api.get('/my_order/getInteractionGiftList', { params }); + }, + + /** + * 查询我的礼物包订单列表 + * @param {Object} params 查询参数 + * @param {number} params.pageNo 当前页 + * @param {number} params.pageSize 显示条数 + * @param {string} params.token token + */ + getMyGiftList(params) { + return api.get('/my_order/getMyGiftList', { params }); + }, + + + /** + * 购买章节 + * @param {Object} params 购买参数 + * @param {string} params.bookId 书籍ID + * @param {string} params.novelId 章节ID + */ + buyNovel(params) { + return api.post('/my_order/buyNovel', null, { params }); + }, + + /** + * 创建支付套餐订单 + * @param {string} packageId 套餐ID + */ + createPayPackageOrder(params) { + return api.post('/my_order/createPayPackageOrder', null, { + params + }); + }, + + /** + * 充值套餐列表 + */ + getPayPackageList() { + return api.get('/my_order/getPayPackageList'); + }, + + /** + * 根据书籍id,礼物id赠送礼物 + * @param {Object} params 赠送参数 + * @param {string} params.bookId 书籍ID + * @param {string} params.giftId 礼物ID + * @param {number} params.num 数量 + */ + giveGift(params) { + return api.post('/my_order/giveGift', null, { params }); + } }; /** * 微信支付相关接口 */ export const wechatPayApi = { - /** - * 创建微信支付订单 - * @param {Object} params 支付参数 - * @param {string} params.orderId 订单ID - * @param {number} params.totalFee 支付金额(分) - * @param {string} params.body 商品描述 - */ - createWechatPayOrder(params) { - return api.post('/wechat_pay/createOrder', null, { params }); - }, - - /** - * 查询微信支付订单状态 - * @param {string} outTradeNo 商户订单号 - */ - queryWechatPayStatus(outTradeNo) { - return api.get('/wechat_pay/queryOrder', { - params: { outTradeNo } - }); - }, - - /** - * 取消微信支付订单 - * @param {string} outTradeNo 商户订单号 - */ - cancelWechatPayOrder(outTradeNo) { - return api.post('/wechat_pay/cancelOrder', null, { - params: { outTradeNo } - }); - } + /** + * 查询微信支付订单状态 + * @param {string} outTradeNo 商户订单号 + */ + queryWechatPayStatus(outTradeNo) { + return api.get('/my_order/queryOrder', { + params: { outTradeNo } + }); + }, }; \ No newline at end of file diff --git a/src/components/auth/LoginRegisterModal.vue b/src/components/auth/LoginRegisterModal.vue index 8f0290b..11f7ba7 100644 --- a/src/components/auth/LoginRegisterModal.vue +++ b/src/components/auth/LoginRegisterModal.vue @@ -6,9 +6,9 @@
- +
@@ -44,6 +44,7 @@ import { ref, computed } from 'vue'; import { ElMessage } from 'element-plus'; import { useMainStore } from '@/store'; +import { authApi } from '@/api/auth'; export default { name: 'LoginRegisterModal', @@ -92,51 +93,83 @@ export default { return true; }; - const sendVerificationCode = () => { + const sendVerificationCode = async () => { if (!phone.value) { ElMessage.error('请输入手机号'); return; } - // 模拟发送验证码,实际项目中这里应该调用后端API - ElMessage.success(`验证码已发送至 ${countryCode.value}${phone.value}`); + // 简单的手机号格式验证 + const phoneRegex = /^1[3-9]\d{9}$/; + if (!phoneRegex.test(phone.value)) { + ElMessage.error('请输入正确的手机号格式'); + return; + } - // 开始倒计时 - countdownActive.value = true; - countdown.value = 60; + try { + // 调用发送验证码接口 + const response = await authApi.phoneSendCode({ + phone: phone.value + }); - const timer = setInterval(() => { - countdown.value--; - if (countdown.value <= 0) { - clearInterval(timer); - countdownActive.value = false; + if (response.success) { + ElMessage.success(`验证码已发送至 ${countryCode.value}${phone.value}`); + + // 开始倒计时 + countdownActive.value = true; + countdown.value = 60; + + const timer = setInterval(() => { + countdown.value--; + if (countdown.value <= 0) { + clearInterval(timer); + countdownActive.value = false; + } + }, 1000); + } else { + ElMessage.error(response.message || '发送验证码失败,请稍后重试'); } - }, 1000); + } catch (error) { + console.error('发送验证码失败:', error); + ElMessage.error('发送验证码失败,请稍后重试'); + } }; const handleSubmit = async () => { if (!validateForm()) return; try { - // 模拟API调用,实际项目中这里应该调用后端API if (isLogin.value) { - // 登录逻辑 - await store.login({ + // 登录逻辑 - 调用真实API + const response = await authApi.phoneLogin({ phone: phone.value, code: verificationCode.value }); - emit('login-success'); - ElMessage.success('登录成功'); + if (response.success && response.result) { + // 使用store的login方法处理登录成功后的逻辑 + await store.handleLoginSuccess(response.result); + + emit('login-success'); + ElMessage.success('登录成功'); + } else { + throw new Error(response.message || '登录失败'); + } } else { - // 注册逻辑 - await store.register({ + // 注册逻辑 - 目前使用登录接口,如果后端有单独注册接口可以替换 + const response = await authApi.phoneLogin({ phone: phone.value, code: verificationCode.value }); - emit('register-success'); - ElMessage.success('注册成功'); + if (response.success && response.result) { + await store.handleLoginSuccess(response.result); + + emit('register-success'); + ElMessage.success('注册成功'); + } else { + throw new Error(response.message || '注册失败'); + } } // 关闭弹窗 @@ -145,6 +178,7 @@ export default { // 重置表单 resetForm(); } catch (error) { + console.error('登录/注册失败:', error); ElMessage.error(error.message || '操作失败,请稍后重试'); } }; diff --git a/src/components/common/WechatPayment.vue b/src/components/common/WechatPayment.vue index faef0fa..699bfd4 100644 --- a/src/components/common/WechatPayment.vue +++ b/src/components/common/WechatPayment.vue @@ -7,7 +7,6 @@ width="400px" :close-on-click-modal="false" :close-on-press-escape="false" - @close="handleCancel" >
@@ -24,6 +23,7 @@
+
正在加载支付二维码...
@@ -103,7 +103,7 @@