生成系统通知表和我的消息表
This commit is contained in:
parent
efa390294d
commit
258a6743a9
8
app/index/model/SystemNotice.php
Normal file
8
app/index/model/SystemNotice.php
Normal file
@ -0,0 +1,8 @@
|
||||
<?php
|
||||
namespace app\index\model;
|
||||
|
||||
use think\Model;
|
||||
|
||||
class SystemNotice extends Model
|
||||
{
|
||||
}
|
||||
8
app/index/model/UserMessage.php
Normal file
8
app/index/model/UserMessage.php
Normal file
@ -0,0 +1,8 @@
|
||||
<?php
|
||||
namespace app\index\model;
|
||||
|
||||
use think\Model;
|
||||
|
||||
class UserMessage extends Model
|
||||
{
|
||||
}
|
||||
@ -1,111 +0,0 @@
|
||||
<div class="password-section">
|
||||
<h2 class="section-title">修改密码</h2>
|
||||
|
||||
<form class="layui-form" lay-filter="passwordForm">
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">当前密码</label>
|
||||
<div class="layui-input-block">
|
||||
<input type="password" name="oldPassword" placeholder="请输入当前密码" class="layui-input" required>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">新密码</label>
|
||||
<div class="layui-input-block">
|
||||
<input type="password" name="newPassword" placeholder="请输入新密码" class="layui-input" required>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">确认密码</label>
|
||||
<div class="layui-input-block">
|
||||
<input type="password" name="confirmPassword" placeholder="请再次输入新密码" class="layui-input" required>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item">
|
||||
<div class="layui-input-block">
|
||||
<button class="layui-btn" lay-submit lay-filter="savePassword">保存修改</button>
|
||||
<button type="reset" class="layui-btn layui-btn-primary">重置</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
|
||||
<style>
|
||||
.password-section {
|
||||
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;
|
||||
}
|
||||
|
||||
@media (max-width: 768px) {
|
||||
.layui-form-label {
|
||||
width: 80px;
|
||||
}
|
||||
|
||||
.layui-input-block {
|
||||
margin-left: 110px;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
|
||||
<script>
|
||||
layui.use(['form', 'layer'], function(){
|
||||
var form = layui.form;
|
||||
var layer = layui.layer;
|
||||
|
||||
// 监听表单提交
|
||||
form.on('submit(savePassword)', function(data){
|
||||
// 验证两次密码是否一致
|
||||
if(data.field.newPassword !== data.field.confirmPassword) {
|
||||
layer.msg('两次输入的密码不一致', {icon: 2});
|
||||
return false;
|
||||
}
|
||||
|
||||
// 发送AJAX请求修改密码
|
||||
fetch('/index/user/changePassword', {
|
||||
method: 'POST',
|
||||
headers: {
|
||||
'Content-Type': 'application/json'
|
||||
},
|
||||
body: JSON.stringify(data.field)
|
||||
})
|
||||
.then(response => response.json())
|
||||
.then(data => {
|
||||
if(data.code === 0) {
|
||||
layer.msg('密码修改成功', {icon: 1});
|
||||
// 清空表单
|
||||
document.querySelector('form').reset();
|
||||
} else {
|
||||
layer.msg(data.msg || '修改失败', {icon: 2});
|
||||
}
|
||||
})
|
||||
.catch(error => {
|
||||
layer.msg('修改失败,请重试', {icon: 2});
|
||||
});
|
||||
|
||||
return false;
|
||||
});
|
||||
});
|
||||
</script>
|
||||
@ -18,23 +18,7 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">邮箱绑定</label>
|
||||
<div class="layui-input-block">
|
||||
<div class="email-info">
|
||||
<span id="emailAddress">未绑定</span>
|
||||
<button type="button" class="layui-btn layui-btn-primary" onclick="bindEmail()">绑定邮箱</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">两步验证</label>
|
||||
<div class="layui-input-block">
|
||||
<input type="checkbox" name="twoFactor" lay-skin="switch" lay-text="开启|关闭">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</form>
|
||||
</div>
|
||||
|
||||
@ -85,11 +69,6 @@ layui.use(['form', 'layer'], function(){
|
||||
|
||||
// 加载用户安全信息
|
||||
loadSecurityInfo();
|
||||
|
||||
// 监听两步验证开关
|
||||
form.on('switch(twoFactor)', function(data){
|
||||
updateTwoFactor(data.elem.checked);
|
||||
});
|
||||
});
|
||||
|
||||
// 加载安全信息
|
||||
@ -99,11 +78,6 @@ function loadSecurityInfo() {
|
||||
.then(data => {
|
||||
if(data.code === 0) {
|
||||
document.getElementById('phoneNumber').textContent = data.data.phone || '未绑定';
|
||||
document.getElementById('emailAddress').textContent = data.data.email || '未绑定';
|
||||
// 设置两步验证开关状态
|
||||
layui.form.val('securityForm', {
|
||||
twoFactor: data.data.twoFactor
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
@ -127,44 +101,4 @@ function bindPhone() {
|
||||
content: '/index/user/component/bindPhone'
|
||||
});
|
||||
}
|
||||
|
||||
// 绑定邮箱
|
||||
function bindEmail() {
|
||||
layer.open({
|
||||
type: 2,
|
||||
title: '绑定邮箱',
|
||||
area: ['500px', '400px'],
|
||||
content: '/index/user/component/bindEmail'
|
||||
});
|
||||
}
|
||||
|
||||
// 更新两步验证状态
|
||||
function updateTwoFactor(enabled) {
|
||||
fetch('/index/user/updateTwoFactor', {
|
||||
method: 'POST',
|
||||
headers: {
|
||||
'Content-Type': 'application/json'
|
||||
},
|
||||
body: JSON.stringify({enabled: enabled})
|
||||
})
|
||||
.then(response => response.json())
|
||||
.then(data => {
|
||||
if(data.code === 0) {
|
||||
layer.msg(enabled ? '两步验证已开启' : '两步验证已关闭', {icon: 1});
|
||||
} else {
|
||||
layer.msg(data.msg || '操作失败', {icon: 2});
|
||||
// 恢复开关状态
|
||||
layui.form.val('securityForm', {
|
||||
twoFactor: !enabled
|
||||
});
|
||||
}
|
||||
})
|
||||
.catch(error => {
|
||||
layer.msg('操作失败,请重试', {icon: 2});
|
||||
// 恢复开关状态
|
||||
layui.form.val('securityForm', {
|
||||
twoFactor: !enabled
|
||||
});
|
||||
});
|
||||
}
|
||||
</script>
|
||||
|
||||
@ -1,109 +0,0 @@
|
||||
<div class="settings-section">
|
||||
<h2 class="section-title">基本设置</h2>
|
||||
|
||||
<form class="layui-form" lay-filter="settingsForm">
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">用户名</label>
|
||||
<div class="layui-input-block">
|
||||
<input type="text" name="username" value="{$user.username}" class="layui-input" lay-verify="required" placeholder="请输入用户名">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">邮箱</label>
|
||||
<div class="layui-input-block">
|
||||
<input type="email" name="email" value="{$user.email}" class="layui-input" lay-verify="required|email" placeholder="请输入邮箱">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">手机号</label>
|
||||
<div class="layui-input-block">
|
||||
<input type="text" name="phone" value="{$user.phone}" class="layui-input" lay-verify="phone" placeholder="请输入手机号">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">个人简介</label>
|
||||
<div class="layui-input-block">
|
||||
<textarea name="bio" placeholder="请输入个人简介" class="layui-textarea">{$user.bio}</textarea>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item">
|
||||
<div class="layui-input-block">
|
||||
<button class="layui-btn" lay-submit lay-filter="saveSettings">保存设置</button>
|
||||
<button type="reset" class="layui-btn layui-btn-primary">重置</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
|
||||
<style>
|
||||
.settings-section {
|
||||
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-item {
|
||||
margin-bottom: 24px;
|
||||
}
|
||||
|
||||
.layui-form-label {
|
||||
width: 100px;
|
||||
}
|
||||
|
||||
.layui-input-block {
|
||||
margin-left: 130px;
|
||||
}
|
||||
|
||||
@media (max-width: 768px) {
|
||||
.layui-form-label {
|
||||
width: 80px;
|
||||
}
|
||||
|
||||
.layui-input-block {
|
||||
margin-left: 110px;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
|
||||
<script>
|
||||
layui.use(['form', 'layer'], function(){
|
||||
var form = layui.form;
|
||||
var layer = layui.layer;
|
||||
|
||||
// 监听表单提交
|
||||
form.on('submit(saveSettings)', function(data){
|
||||
fetch('/index/user/updateSettings', {
|
||||
method: 'POST',
|
||||
headers: {
|
||||
'Content-Type': 'application/json'
|
||||
},
|
||||
body: JSON.stringify(data.field)
|
||||
})
|
||||
.then(response => response.json())
|
||||
.then(data => {
|
||||
if(data.code === 0) {
|
||||
layer.msg('设置保存成功', {icon: 1});
|
||||
} else {
|
||||
layer.msg(data.msg || '保存失败', {icon: 2});
|
||||
}
|
||||
})
|
||||
.catch(error => {
|
||||
layer.msg('保存失败,请重试', {icon: 2});
|
||||
});
|
||||
|
||||
return false;
|
||||
});
|
||||
});
|
||||
</script>
|
||||
@ -16,10 +16,6 @@
|
||||
<i class="icon">🖼️</i>
|
||||
<span>修改头像</span>
|
||||
</a>
|
||||
<a href="javascript:;" class="menu-item" data-target="profile-password">
|
||||
<i class="icon">🔒</i>
|
||||
<span>修改密码</span>
|
||||
</a>
|
||||
<a href="javascript:;" class="menu-item" data-target="profile-messages">
|
||||
<i class="icon">✉️</i>
|
||||
<span>我的消息</span>
|
||||
@ -28,10 +24,6 @@
|
||||
<i class="icon">🔔</i>
|
||||
<span>系统通知</span>
|
||||
</a>
|
||||
<a href="javascript:;" class="menu-item" data-target="profile-settings">
|
||||
<i class="icon">⚙️</i>
|
||||
<span>基本设置</span>
|
||||
</a>
|
||||
<a href="javascript:;" class="menu-item" data-target="profile-security">
|
||||
<i class="icon">🛡️</i>
|
||||
<span>安全设置</span>
|
||||
@ -54,6 +46,9 @@
|
||||
padding: 0 24px 24px;
|
||||
border-bottom: 1px solid #f0f0f0;
|
||||
margin-bottom: 24px;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
.avatar-wrapper {
|
||||
|
||||
@ -18,11 +18,6 @@
|
||||
{include file="user/component/avatar" /}
|
||||
</div>
|
||||
|
||||
<!-- 修改密码 -->
|
||||
<div id="profile-password" class="content-section">
|
||||
{include file="user/component/password" /}
|
||||
</div>
|
||||
|
||||
<!-- 我的消息 -->
|
||||
<div id="profile-messages" class="content-section">
|
||||
{include file="user/component/messages" /}
|
||||
@ -33,11 +28,6 @@
|
||||
{include file="user/component/notifications" /}
|
||||
</div>
|
||||
|
||||
<!-- 基本设置 -->
|
||||
<div id="profile-settings" class="content-section">
|
||||
{include file="user/component/settings" /}
|
||||
</div>
|
||||
|
||||
<!-- 安全设置 -->
|
||||
<div id="profile-security" class="content-section">
|
||||
{include file="user/component/security" /}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user