增加极验验证开关设置

This commit is contained in:
李志强 2025-06-05 16:21:29 +08:00
parent ebffdf180e
commit d4017014f5
3 changed files with 272 additions and 148 deletions

View File

@ -413,6 +413,25 @@ class YunzerController extends Base
Log::record('更新配置值', 0, '数据不能为空', '系统配置'); Log::record('更新配置值', 0, '数据不能为空', '系统配置');
$this->returnCode(1, '数据不能为空'); $this->returnCode(1, '数据不能为空');
} }
// 获取所有配置项,检查 config_type 为 4 的项
$allConfigs = AdminConfig::order('config_sort DESC,config_id')->select();
foreach ($allConfigs as $config) {
if ($config['config_type'] == 4) {
$checkboxName = $config['config_name'] . '_checkbox';
$configName = $config['config_name'];
if (!isset($post[$checkboxName])) {
// 复选框未选中,手动添加对应的值为 0
$post[$configName] = 0;
} else {
// 复选框选中,确保值为 1
$post[$configName] = 1;
}
// 移除 checkbox 字段
unset($post[$checkboxName]);
}
}
$oConfig = new YzAdminConfig(); $oConfig = new YzAdminConfig();
$updateAll = $oConfig->updateAll($post); $updateAll = $oConfig->updateAll($post);
if (empty($updateAll)) { if (empty($updateAll)) {

View File

@ -6,6 +6,7 @@
border-radius: 8px; border-radius: 8px;
/* box-shadow: 0 2px 10px rgba(0, 0, 0, 0.08); */ /* box-shadow: 0 2px 10px rgba(0, 0, 0, 0.08); */
} }
.config-header { .config-header {
display: flex; display: flex;
align-items: center; align-items: center;
@ -13,15 +14,18 @@
padding-bottom: 15px; padding-bottom: 15px;
border-bottom: 1px solid #eee; border-bottom: 1px solid #eee;
} }
.config-header span { .config-header span {
font-size: 18px; font-size: 18px;
color: #2c3e50; color: #2c3e50;
font-weight: 500; font-weight: 500;
margin-right: 20px; margin-right: 20px;
} }
.config-header a { .config-header a {
text-decoration: none; text-decoration: none;
} }
.config-header a span { .config-header a span {
padding: 6px 15px; padding: 6px 15px;
background: #f8f9fa; background: #f8f9fa;
@ -30,56 +34,70 @@
font-size: 14px; font-size: 14px;
transition: all 0.3s; transition: all 0.3s;
} }
.config-header a span:hover { .config-header a span:hover {
background: #e9ecef; background: #e9ecef;
color: #409EFF; color: #409EFF;
} }
.layui-form-item { .layui-form-item {
margin-bottom: 25px; margin-bottom: 25px;
} }
.layui-form-label { .layui-form-label {
color: #606266; color: #606266;
font-weight: 500; font-weight: 500;
} }
.layui-input { .layui-input {
border-radius: 4px; border-radius: 4px;
} }
.layui-input:focus { .layui-input:focus {
border-color: #409EFF; border-color: #409EFF;
} }
.layui-textarea { .layui-textarea {
border-radius: 4px; border-radius: 4px;
min-height: 100px; min-height: 100px;
} }
.layui-word-aux { .layui-word-aux {
color: #909399; color: #909399;
} }
.layui-btn { .layui-btn {
border-radius: 4px; border-radius: 4px;
box-shadow: 0 2px 5px rgba(0, 0, 0, 0.1); box-shadow: 0 2px 5px rgba(0, 0, 0, 0.1);
transition: all 0.3s; transition: all 0.3s;
} }
.layui-btn:hover { .layui-btn:hover {
transform: translateY(-1px); transform: translateY(-1px);
box-shadow: 0 4px 8px rgba(0, 0, 0, 0.15); box-shadow: 0 4px 8px rgba(0, 0, 0, 0.15);
} }
.upload-preview { .upload-preview {
margin-top: 10px; margin-top: 10px;
} }
.upload-preview img { .upload-preview img {
border-radius: 4px; border-radius: 4px;
box-shadow: 0 2px 5px rgba(0, 0, 0, 0.1); box-shadow: 0 2px 5px rgba(0, 0, 0, 0.1);
transition: all 0.3s; transition: all 0.3s;
} }
.upload-preview img:hover { .upload-preview img:hover {
transform: scale(1.02); transform: scale(1.02);
} }
.save-button-container { .save-button-container {
text-align: center; text-align: center;
margin-top: 40px; margin-top: 40px;
padding-top: 20px; padding-top: 20px;
border-top: 1px solid #eee; border-top: 1px solid #eee;
} }
.save-button-container .layui-btn { .save-button-container .layui-btn {
padding: 0 50px; padding: 0 50px;
height: 40px; height: 40px;
@ -102,7 +120,8 @@
<div class="layui-form-item"> <div class="layui-form-item">
<label class="layui-form-label">{$lists_v['config_info']}</label> <label class="layui-form-label">{$lists_v['config_info']}</label>
<div class="layui-input-inline" style="width: 350px;"> <div class="layui-input-inline" style="width: 350px;">
<input type="text" class="layui-input" id="{$lists_v['config_name']}" name="{$lists_v['config_name']}" placeholder="{$lists_v['config_desc']}" value="{$lists_v['config_value']}"> <input type="text" class="layui-input" id="{$lists_v['config_name']}" name="{$lists_v['config_name']}"
placeholder="{$lists_v['config_desc']}" value="{$lists_v['config_value']}">
</div> </div>
<div class="layui-form-mid layui-word-aux">{$lists_v['config_desc']}</div> <div class="layui-form-mid layui-word-aux">{$lists_v['config_desc']}</div>
</div> </div>
@ -122,7 +141,9 @@
<div class="layui-upload-list upload-preview" id="yulan_{$lists_v['config_name']}" style="width:90%;"> <div class="layui-upload-list upload-preview" id="yulan_{$lists_v['config_name']}" style="width:90%;">
{if !empty($lists_v['config_value'])} {if !empty($lists_v['config_value'])}
<div class="upload_pic_li" style="position:relative;width:120px;margin:0 10px 10px 0"> <div class="upload_pic_li" style="position:relative;width:120px;margin:0 10px 10px 0">
<img style="background-color: #efefef;height:120px;object-fit:cover;" src="{$lists_v['config_value']}" class="layui-upload-img" onmouseover="show_img(this)" onmouseleave="hide_img()"> <img style="background-color: #efefef;height:120px;object-fit:cover;"
src="{$lists_v['config_value']}" class="layui-upload-img" onmouseover="show_img(this)"
onmouseleave="hide_img()">
<input type="hidden" name="{$lists_v['config_name']}" value="{$lists_v['config_value']}" /> <input type="hidden" name="{$lists_v['config_name']}" value="{$lists_v['config_value']}" />
</div> </div>
{/if} {/if}
@ -154,9 +175,21 @@
<div class="layui-form-item"> <div class="layui-form-item">
<label class="layui-form-label">{$lists_v['config_info']}</label> <label class="layui-form-label">{$lists_v['config_info']}</label>
<div class="layui-input-block"> <div class="layui-input-block">
<textarea class="layui-textarea" id="{$lists_v['config_name']}" name="{$lists_v['config_name']}" placeholder="{$lists_v['config_desc']}">{$lists_v['config_value']}</textarea> <textarea class="layui-textarea" id="{$lists_v['config_name']}" name="{$lists_v['config_name']}"
placeholder="{$lists_v['config_desc']}">{$lists_v['config_value']}</textarea>
</div> </div>
</div> </div>
{elseif($lists_v['config_type'] == 4)/}
<div class="layui-form-item">
<label class="layui-form-label">{$lists_v['config_info']}</label>
<div class="layui-input-inline">
<input type="checkbox" name="{$lists_v['config_name']}_checkbox" lay-skin="switch" lay-text="开启|关闭" {if
$lists_v['config_value']=='1' }checked{/if}>
<input type="hidden" name="{$lists_v['config_name']}"
value="{if $lists_v['config_value'] == '1'}1{else}0{/if}">
</div>
<div class="layui-form-mid layui-word-aux">{$lists_v['config_desc']}</div>
</div>
{/if} {/if}
{/foreach} {/foreach}
</form> </form>

View File

@ -156,7 +156,7 @@
<div class="layui-tab"> <div class="layui-tab">
<ul class="layui-tab-title"> <ul class="layui-tab-title">
<li class="layui-this" lay-id="account">账密登录</li> <li class="layui-this" lay-id="account">账密登录</li>
<li lay-id="phone">手机验证码</li> <!-- <li lay-id="phone">手机验证码</li> -->
<li lay-id="wechat">微信登录</li> <li lay-id="wechat">微信登录</li>
</ul> </ul>
<div class="layui-tab-content"> <div class="layui-tab-content">
@ -189,7 +189,7 @@
</div> </div>
</form> </form>
</div> </div>
<div class="layui-tab-item" id="phone"> <!-- <div class="layui-tab-item" id="phone">
<form action="#" method="post" class="layui-form login-form"> <form action="#" method="post" class="layui-form login-form">
<div class="layui-form-item"> <div class="layui-form-item">
<div class="layui-input-block" style="margin-left: 0;"> <div class="layui-input-block" style="margin-left: 0;">
@ -217,7 +217,7 @@
</div> </div>
</div> </div>
</form> </form>
</div> </div> -->
<div class="layui-tab-item" id="wechat"> <div class="layui-tab-item" id="wechat">
<div class="wechat-login"> <div class="wechat-login">
<img src="" alt="微信登录" class="layui-img"> <img src="" alt="微信登录" class="layui-img">
@ -233,6 +233,8 @@
var element = layui.element; var element = layui.element;
var $ = layui.jquery; var $ = layui.jquery;
// 检查极验验证是否开启
<?php if ($config['geetest_open'] == 1): ?>
// 初始化极验验证 // 初始化极验验证
var handler = function (captchaObj) { var handler = function (captchaObj) {
// 将验证码渲染到指定容器 // 将验证码渲染到指定容器
@ -350,6 +352,76 @@
time: 2000 time: 2000
}); });
}); });
<?php else: ?>
// 极验验证关闭,移除验证码容器
$('#gt-captcha').remove();
// 移除表单提交时的验证码验证逻辑
form.on('submit(accountLogin)', function (data) {
$.ajax({
url: '{:url("index/user/login")}',
type: 'POST',
data: data.field,
dataType: 'json',
success: function (res) {
if (res.code === 0) {
// 存储登录数据设置7天过期
var expireTime = new Date().getTime() + 7 * 24 * 60 * 60 * 1000;
localStorage.setItem('user_account', data.field.account);
localStorage.setItem('user_password', btoa(data.field.password));
localStorage.setItem('expire_time', expireTime);
// 添加登录状态标记
localStorage.setItem('is_auto_login', 'true');
layer.msg('登录成功', {
icon: 1,
time: 2000,
shade: 0.3
}, function () {
window.location.href = '{:url("/")}';
});
} else {
layer.msg(res.msg, {
icon: 2,
time: 2000
});
}
}
});
return false;
});
form.on('submit(phoneLogin)', function (data) {
$.ajax({
url: '{:url("index/user/login")}',
type: 'POST',
data: data.field,
dataType: 'json',
success: function (res) {
if (res.code === 0) {
layer.msg('登录成功', {
icon: 1,
time: 2000,
shade: 0.3
}, function () {
window.location.href = '{:url("/")}';
});
} else {
layer.msg(res.msg, {
icon: 2,
time: 2000
});
}
}
});
return false;
});
// 移除获取验证码按钮的验证码验证逻辑
document.getElementById('getCode').addEventListener('click', function () {
console.log('获取验证码');
});
<?php endif; ?>
// 页面加载时检查是否有保存的登录数据 // 页面加载时检查是否有保存的登录数据
$(function () { $(function () {