生成系统通知表和我的消息表

This commit is contained in:
李志强 2025-05-27 11:57:02 +08:00
parent efa390294d
commit 258a6743a9
7 changed files with 20 additions and 305 deletions

View File

@ -0,0 +1,8 @@
<?php
namespace app\index\model;
use think\Model;
class SystemNotice extends Model
{
}

View File

@ -0,0 +1,8 @@
<?php
namespace app\index\model;
use think\Model;
class UserMessage extends Model
{
}

View File

@ -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>

View File

@ -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>

View File

@ -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>

View File

@ -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 {

View File

@ -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" /}