用户绑定微信号

This commit is contained in:
2025-06-05 18:09:08 +08:00
parent e1e51c8c6f
commit 8072e65a69
6 changed files with 479 additions and 188 deletions
+189 -148
View File
@@ -10,7 +10,8 @@
<div class="layui-form-item">
<label class="layui-form-label">用户名</label>
<div class="layui-input-block">
<input type="text" name="name" value="{$user.name}" placeholder="请输入用户名" class="layui-input">
<input type="text" name="name" value="{$user.name}" placeholder="请输入用户名"
class="layui-input">
</div>
</div>
@@ -24,14 +25,27 @@
<div class="layui-form-item">
<label class="layui-form-label">QQ</label>
<div class="layui-input-block">
<input type="qq" name="qq" value="{$user.qq}" placeholder="请输入QQ号" class="layui-input">
<input type="text" name="qq" value="{$user.qq}" placeholder="请输入QQ号" class="layui-input">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">微信</label>
<div class="layui-input-block">
{if $user.wechat}
<input type="text" name="wechat" value="{$user.wechat}" placeholder="请输入微信号"
class="layui-input">
{else}
<button class="layui-btn" id="bindWechat">绑定微信号</button>
{/if}
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">手机号</label>
<div class="layui-input-block">
<input type="tel" name="phone" value="{$user.phone}" placeholder="请输入手机号" class="layui-input">
<input type="text" name="phone" value="{$user.phone}" placeholder="请输入手机号"
class="layui-input">
</div>
</div>
@@ -84,150 +98,6 @@
</div>
</div>
<style>
.basic-info {
max-width: 800px;
margin: 0 auto;
}
.section-title {
font-size: 20px;
font-weight: 600;
color: #333;
margin-bottom: 24px;
padding-bottom: 16px;
border-bottom: 1px solid #f0f0f0;
}
.layui-form-label {
width: 100px;
}
.layui-input-block {
margin-left: 130px;
}
.layui-form-item {
margin-bottom: 24px;
}
.layui-textarea {
min-height: 120px;
}
.avatar-section {
max-width: 800px;
margin: 0 auto;
}
.avatar-upload-container {
display: flex;
gap: 40px;
margin-bottom: 32px;
}
.current-avatar {
text-align: center;
}
.current-avatar img {
width: 160px;
height: 160px;
border-radius: 50%;
object-fit: cover;
border: 3px solid #f5f5f5;
}
.avatar-tip {
margin-top: 12px;
color: #666;
}
.upload-area {
flex: 1;
border: 2px dashed #d9d9d9;
border-radius: 8px;
padding: 40px;
text-align: center;
cursor: pointer;
transition: all 0.3s;
}
.upload-area:hover {
border-color: #1677ff;
}
.upload-area .layui-icon {
font-size: 48px;
color: #999;
margin-bottom: 16px;
}
.upload-area p {
margin: 8px 0;
color: #666;
}
.upload-tip {
font-size: 12px;
color: #999;
}
.avatar-preview {
margin-top: 32px;
padding-top: 32px;
border-top: 1px solid #f0f0f0;
}
.avatar-preview h3 {
font-size: 16px;
color: #333;
margin-bottom: 16px;
}
.preview-container {
text-align: center;
margin-bottom: 24px;
}
.preview-container img {
max-width: 200px;
max-height: 200px;
border-radius: 8px;
}
.preview-actions {
text-align: center;
}
.preview-actions .layui-btn {
margin: 0 8px;
}
@media (max-width: 768px) {
.layui-form-label {
width: 80px;
}
.layui-input-block {
margin-left: 110px;
}
.avatar-upload-container {
flex-direction: column;
gap: 24px;
}
.current-avatar img {
width: 120px;
height: 120px;
}
.upload-area {
padding: 24px;
}
}
</style>
<script>
layui.use(['form', 'layer', 'upload'], function () {
@@ -235,6 +105,31 @@
var layer = layui.layer;
var upload = layui.upload;
// 绑定微信号按钮点击事件
document.getElementById('bindWechat').addEventListener('click', function () {
// 发送 AJAX 请求调用 qrcode 接口
fetch('/index/user/qrcode')
.then(response => response.json())
.then(data => {
if (data.code === 0) {
// 二维码生成成功,这里可以添加显示二维码的逻辑,例如弹出一个窗口显示二维码
layer.open({
type: 1,
title: '微信绑定二维码',
content: `<img src="${data.data.qrcode_url}" alt="微信绑定二维码">`,
area: ['300px', '300px']
});
} else {
// 二维码生成失败,提示用户
layer.msg(data.msg, { icon: 2 });
}
})
.catch(error => {
// 请求出错,提示用户
layer.msg('请求出错,请稍后重试', { icon: 2 });
});
});
// 监听个人资料表单提交
form.on('submit(saveBasic)', function (data) {
// 发送AJAX请求保存数据
@@ -382,4 +277,150 @@
document.getElementById('avatarFile').dispatchEvent(event);
});
});
</script>
</script>
<style>
.basic-info {
max-width: 800px;
margin: 0 auto;
}
.section-title {
font-size: 20px;
font-weight: 600;
color: #333;
margin-bottom: 24px;
padding-bottom: 16px;
border-bottom: 1px solid #f0f0f0;
}
.layui-form-label {
width: 100px;
}
.layui-input-block {
margin-left: 130px;
}
.layui-form-item {
margin-bottom: 24px;
}
.layui-textarea {
min-height: 120px;
}
.avatar-section {
max-width: 800px;
margin: 0 auto;
}
.avatar-upload-container {
display: flex;
gap: 40px;
margin-bottom: 32px;
}
.current-avatar {
text-align: center;
}
.current-avatar img {
width: 160px;
height: 160px;
border-radius: 50%;
object-fit: cover;
border: 3px solid #f5f5f5;
}
.avatar-tip {
margin-top: 12px;
color: #666;
}
.upload-area {
flex: 1;
border: 2px dashed #d9d9d9;
border-radius: 8px;
padding: 40px;
text-align: center;
cursor: pointer;
transition: all 0.3s;
}
.upload-area:hover {
border-color: #1677ff;
}
.upload-area .layui-icon {
font-size: 48px;
color: #999;
margin-bottom: 16px;
}
.upload-area p {
margin: 8px 0;
color: #666;
}
.upload-tip {
font-size: 12px;
color: #999;
}
.avatar-preview {
margin-top: 32px;
padding-top: 32px;
border-top: 1px solid #f0f0f0;
}
.avatar-preview h3 {
font-size: 16px;
color: #333;
margin-bottom: 16px;
}
.preview-container {
text-align: center;
margin-bottom: 24px;
}
.preview-container img {
max-width: 200px;
max-height: 200px;
border-radius: 8px;
}
.preview-actions {
text-align: center;
}
.preview-actions .layui-btn {
margin: 0 8px;
}
@media (max-width: 768px) {
.layui-form-label {
width: 80px;
}
.layui-input-block {
margin-left: 110px;
}
.avatar-upload-container {
flex-direction: column;
gap: 24px;
}
.current-avatar img {
width: 120px;
height: 120px;
}
.upload-area {
padding: 24px;
}
}
</style>