mirror of
https://gitee.com/liuxioabin/fengketrade.git
synced 2026-04-17 21:03:17 +08:00
6.3 KiB
6.3 KiB
前端修改说明
📝 修改文件清单
✅ 已修改的文件(3个):
frontend/
├── pages/order/confirm.vue # 订单确认页(+40行)
├── pages/commission/components/
│ └── commission-info.vue # 分销中心个人信息(+30行)
└── sheep/api/
├── invite.js # 新增邀请码API(新建)
└── index.js # 注册邀请码API(+2行)
🎯 功能说明
1. 订单确认页 - 邀请码输入框
位置: 订单备注下方
功能:
- ✅ 仅未绑定上级的用户显示(
v-if="!userInfo.parent_user_id") - ✅ 非必填,6位大写字母+数字
- ✅ 失焦自动验证(调用
/invite/validate接口) - ✅ 验证成功显示绿色勾号
- ✅ 提交订单时自动携带
invite_code参数
代码片段:
<uni-easyinput
maxlength="6"
placeholder="选填(6位大写字母+数字)"
v-model="state.inviteCode"
@blur="onValidateInvite"
/>
验证逻辑:
async function onValidateInvite() {
const code = state.inviteCode.trim().toUpperCase();
if (code.length !== 6) {
sheep.$helper.toast('邀请码格式错误');
return;
}
const { code: resCode } = await sheep.$api.invite.validate({ invite_code: code });
if (resCode === 1) {
state.inviteValidated = true;
sheep.$helper.toast('邀请码验证成功');
}
}
提交订单:
if (state.inviteValidated && state.inviteCode) {
state.orderPayload.invite_code = state.inviteCode;
}
const { code, data } = await sheep.$api.order.create(state.orderPayload);
2. 个人中心 - 显示邀请码
位置: 分销中心个人信息卡片,等级标签下方
功能:
- ✅ 自动获取邀请码(
/invite/myCode) - ✅ 点击复制邀请码到剪贴板
- ✅ 复制成功提示
代码片段:
<view class="invite-code-box" @tap="onCopyCode">
<text class="invite-label">我的邀请码:</text>
<text class="invite-code">{{ state.inviteCode }}</text>
<text class="ss-iconfont uicon-copy"></text>
</view>
逻辑:
// 页面加载时获取邀请码
async function getInviteCode() {
const { code, data } = await sheep.$api.invite.myCode();
if (code === 1) {
state.inviteCode = data.invite_code;
}
}
// 复制邀请码
function onCopyCode() {
sheep.$helper.copyText(state.inviteCode);
sheep.$helper.toast('邀请码已复制');
}
onMounted(() => {
getInviteCode();
});
🔌 API 接口
新增 sheep.$api.invite 模块
// 1. 获取我的邀请码
sheep.$api.invite.myCode()
// 响应: { code: 1, data: { invite_code: "ABC123", invite_count: 5 } }
// 2. 验证邀请码
sheep.$api.invite.validate({ invite_code: "ABC123" })
// 响应: { code: 1, msg: "邀请码有效", data: { ... } }
// 3. 我邀请的用户列表
sheep.$api.invite.myInvites({ page: 1 })
// 响应: { code: 1, data: { total: 10, data: [...] } }
🎨 样式调整
订单确认页样式
.invite-input-box {
position: relative;
.validate-tag {
margin-left: 10rpx;
font-size: 32rpx;
}
}
个人中心样式
.invite-code-box {
margin-top: 12rpx;
padding: 4rpx 12rpx;
background: rgba(255, 255, 255, 0.2);
border-radius: 20rpx;
border: 1rpx solid rgba(255, 255, 255, 0.3);
.invite-code {
font-size: 26rpx;
font-weight: bold;
color: #fff;
letter-spacing: 2rpx;
}
}
🧪 测试步骤
测试1: 订单页邀请码输入
# 1. 登录建行生活用户(未绑定上级)
# 2. 加入购物车,进入订单确认页
# 3. 查看是否显示"邀请码"输入框
# 4. 输入邀请码(如:ABC123)
# 5. 失焦后查看是否显示验证成功图标
# 6. 提交订单
# 7. 后台检查是否绑定成功:
SELECT parent_user_id, invite_code_used FROM user WHERE id = 新用户ID;
测试2: 个人中心显示邀请码
# 1. 进入分销中心页面
# 2. 查看个人信息卡片,等级标签下方
# 3. 确认显示"我的邀请码: XXXXXX"
# 4. 点击邀请码
# 5. 确认提示"邀请码已复制"
# 6. 粘贴验证是否成功复制
测试3: 已绑定用户不显示输入框
# 1. 登录已有上级的用户
# 2. 进入订单确认页
# 3. 确认不显示"邀请码"输入框
🐛 常见问题
问题1: 邀请码输入框不显示
检查:
// 确认用户是否已绑定
console.log(userInfo.parent_user_id); // 应为 null
问题2: 验证失败
检查:
# 查看API响应
curl -X POST http://your-domain/invite/validate -d "invite_code=ABC123"
# 查看后端日志
tail -f runtime/log/$(date +%Y%m)/$(date +%d).log | grep "邀请码"
问题3: 个人中心不显示邀请码
检查:
// 检查API是否成功
const res = await sheep.$api.invite.myCode();
console.log(res);
// 检查用户是否有邀请码
SELECT invite_code FROM user WHERE id = 你的用户ID;
📱 界面预览
订单确认页
┌────────────────────────────────┐
│ 商品信息 │
├────────────────────────────────┤
│ 订单备注 [建议留言前先与商家沟通]│
├────────────────────────────────┤
│ 邀请码 [选填(6位大写字母+数字)] ✓│ ← 新增
└────────────────────────────────┘
个人中心
┌────────────────────────────────┐
│ 👤 张三 │
│ 🏷️ 分销商等级 │
│ 📋 我的邀请码: ABC123 📋 │ ← 新增
└────────────────────────────────┘
✅ 完成检查清单
- 订单页显示邀请码输入框
- 邀请码验证功能正常
- 订单提交携带邀请码参数
- 个人中心显示邀请码
- 点击复制邀请码功能正常
- 已绑定用户不显示输入框
- API接口注册成功
最后更新: 2024-01-15 维护人员: Billy