manghe/app/admin/view/Config/systemconfig.html
2025-03-23 09:21:41 +00:00

596 lines
31 KiB
HTML
Executable File
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

{include file="Public:header2"/}
<body>
<h2 style="text-align: center;margin-top: 20px;">系统设置</h2>
<div class="layui-fluid">
<div class="layui-row layui-col-space15">
<div class="layui-col-md12">
<div class="layui-card">
<div class="layui-card-header">项目配置</div>
<div class="layui-card-body">
<form class="layui-form" action="" lay-filter="app-setting-form">
<input type="hidden" name="key" value="app_setting">
<div class="layui-form-item">
<label class="layui-form-label">项目名称</label>
<div class="layui-input-block">
<input type="text" name="app_name" value="{$app_setting.app_name|default=''}"
autocomplete="off" class="layui-input" placeholder="请输入项目名称">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">购买弹窗</label>
<div class="layui-input-block">
<input type="radio" name="purchase_popup" value="0" title="弹出一次" {if
!isset($app_setting.purchase_popup) ||
$app_setting.purchase_popup==0}checked{/if}>
<input type="radio" name="purchase_popup" value="1" title="每天显示" {if
isset($app_setting.purchase_popup) &&
$app_setting.purchase_popup==1}checked{/if}>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">商城兑换次数</label>
<div class="layui-input-block">
<input type="number" name="exchange_times"
value="{$app_setting.exchange_times|default=0}" autocomplete="off"
class="layui-input" min="0">
<div class="layui-form-mid layui-word-aux">每天允许兑换几次0不限次数</div>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">余额名称</label>
<div class="layui-input-inline">
<input type="text" name="balance_name"
value="{$app_setting.balance_name|default=''}" autocomplete="off"
class="layui-input" placeholder="请输入余额名称">
</div>
<label class="layui-form-label">余额图标</label>
<div class="layui-input-inline">
<input type="text" name="balance_icon"
value="{$app_setting.balance_icon|default=''}" autocomplete="off"
class="layui-input" placeholder="请输入余额图标地址">
</div>
<button type="button" class="layui-btn upload-icon" data-input="balance_icon">
<i class="layui-icon">&#xe67c;</i>上传图片
</button>
<div class="icon-preview" id="balance_icon_preview">
{if !empty($app_setting.balance_icon)}
<img src="{$app_setting.balance_icon}"
style="height:38px;max-width:100px;margin-left:10px;">
{/if}
</div>
<div class="icon-preview">
人民币单位,只能充值,可以抽赏
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">货币1名称</label>
<div class="layui-input-inline">
<input type="text" name="currency1_name"
value="{$app_setting.currency1_name|default=''}" autocomplete="off"
class="layui-input" placeholder="请输入货币1名称">
</div>
<label class="layui-form-label">货币1图片</label>
<div class="layui-input-inline">
<input type="text" name="currency1_icon"
value="{$app_setting.currency1_icon|default=''}" autocomplete="off"
class="layui-input" placeholder="请输入货币1图片地址">
</div>
<button type="button" class="layui-btn upload-icon" data-input="currency1_icon">
<i class="layui-icon">&#xe67c;</i>上传图片
</button>
<div class="icon-preview" id="currency1_icon_preview">
{if !empty($app_setting.currency1_icon)}
<img src="{$app_setting.currency1_icon}"
style="height:38px;max-width:100px;margin-left:10px;">
{/if}
</div>
<div class="icon-preview">
道具币,活动获得,签到等,不计入消费额度,可以抽赏
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">货币2名称</label>
<div class="layui-input-inline">
<input type="text" name="currency2_name"
value="{$app_setting.currency2_name|default=''}" autocomplete="off"
class="layui-input" placeholder="请输入货币2名称">
</div>
<label class="layui-form-label">货币2图片</label>
<div class="layui-input-inline">
<input type="text" name="currency2_icon"
value="{$app_setting.currency2_icon|default=''}" autocomplete="off"
class="layui-input" placeholder="请输入货币2图片地址">
</div>
<button type="button" class="layui-btn upload-icon" data-input="currency2_icon">
<i class="layui-icon">&#xe67c;</i>上传图片
</button>
<div class="icon-preview" id="currency2_icon_preview">
{if !empty($app_setting.currency2_icon)}
<img src="{$app_setting.currency2_icon}"
style="height:38px;max-width:100px;margin-left:10px;">
{/if}
</div>
<div class="icon-preview">
兑换获得,可以抽赏,可以去商城兑换,不计入消费额度
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">中奖音频</label>
<div class="layui-input-inline" style="width: 450px;">
<input type="text" name="win_audio" value="{$app_setting.win_audio|default=''}"
autocomplete="off" class="layui-input" placeholder="请输入中奖音频文件地址">
</div>
<button type="button" class="layui-btn upload-audio" data-input="win_audio">
<i class="layui-icon">&#xe67c;</i>选择文件
</button>
<div class="audio-preview" id="win_audio_preview">
{if !empty($app_setting.win_audio)}
<audio controls style="height:38px;margin-left:10px;">
<source src="{$app_setting.win_audio}" type="audio/mpeg">
您的浏览器不支持音频播放
</audio>
{/if}
</div>
</div>
<div class="layui-form-item">
<div class="layui-input-block">
<button class="layui-btn" lay-submit lay-filter="app-setting-form">保存</button>
</div>
</div>
</form>
</div>
</div>
</div>
<div class="layui-col-md12">
<div class="layui-card">
<div class="layui-card-header">用户UID设置</div>
<div class="layui-card-body">
<form class="layui-form" action="" lay-filter="user-uid-form">
<input type="hidden" name="key" value="user_config">
<div class="layui-form-item">
<label class="layui-form-label">UID类型</label>
<div class="layui-input-block">
<input type="radio" lay-filter="uid_type" name="uid_type" value="0" title="真实ID" {if
isset($user_config.uid_type) && $user_config.uid_type==0}checked{/if}>
<input type="radio" lay-filter="uid_type" name="uid_type" value="1" title="数字ID" {if
isset($user_config.uid_type) && $user_config.uid_type==1}checked{/if}>
<input type="radio" lay-filter="uid_type" name="uid_type" value="2" title="随机字符和数字"
{if isset($user_config.uid_type) && $user_config.uid_type==2}checked{/if}>
</div>
<div class="layui-form-mid layui-word-aux">改变生成规则后新用户UID会发生变化请谨慎操作uid为空的会在登录后显示真实ID
</div>
</div>
<div class="layui-form-item" id="uid-length-container" {if !isset($user_config.uid_type) ||
$user_config.uid_type==0}style="display:none" {/if}>
<label class="layui-form-label">UID长度</label>
<div class="layui-input-block">
<input type="number" name="uid_length" value="{$user_config.uid_length|default=6}"
autocomplete="off" class="layui-input" min="4" max="16">
<div class="layui-form-mid layui-word-aux">数字ID长度推荐6位随机字符和数字长度推荐8位</div>
</div>
</div>
<div class="layui-form-item">
<div class="layui-input-block">
<button class="layui-btn" lay-submit lay-filter="user-uid-form">保存</button>
</div>
</div>
</form>
</div>
</div>
</div>
<div class="layui-col-md12">
<div class="layui-card">
<div class="layui-card-header">微信设置</div>
<div class="layui-card-body">
<form class="layui-form" action="" lay-filter="wechat-setting-form">
<input type="hidden" name="key" value="wechat_setting">
<div class="layui-form-item">
<label class="layui-form-label">Appid</label>
<div class="layui-input-block">
<input type="text" name="appid" value="{$wechat_setting.appid|default=''}"
autocomplete="off" class="layui-input" placeholder="请输入微信AppID">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">AppSecret</label>
<div class="layui-input-block">
<input type="text" name="appSecret" value="{$wechat_setting.appSecret|default=''}"
autocomplete="off" class="layui-input" placeholder="请输入微信AppSecret">
</div>
</div>
<div class="layui-form-item">
<div class="layui-input-block">
<button class="layui-btn" lay-submit lay-filter="wechat-setting-form">保存</button>
</div>
</div>
</form>
</div>
</div>
</div>
<div class="layui-col-md12">
<div class="layui-card">
<div class="layui-card-header">盒子同步地址</div>
<div class="layui-card-body">
<form class="layui-form" action="" lay-filter="component-form-element">
<input type="hidden" name="key" value="{$key}">
<div class="layui-form-item">
<label class="layui-form-label">盒子同步地址</label>
<div class="layui-input-block">
<div id="sync-addresses">
{if isset($data.sync_address) && is_array($data.sync_address)}
{foreach $data.sync_address as $index => $address}
<div class="sync-address-item">
<div class="layui-input-inline" style="width: 200px; margin-right: 10px;">
<input type="text" name="sync_address_names[]"
value="{$address.name|default=''}" autocomplete="off"
class="layui-input" placeholder="地址名称">
</div>
<div class="layui-input-inline" style="width: 450px; margin-right: 10px;">
<input type="text" name="sync_address_urls[]"
value="{$address.sync_address|default=''}" autocomplete="off"
class="layui-input" placeholder="请输入同步地址URL">
</div>
<button type="button"
class="layui-btn layui-btn-danger remove-address">删除</button>
</div>
{/foreach}
{else}
<div class="sync-address-item">
<div class="layui-input-inline" style="width: 200px; margin-right: 10px;">
<input type="text" name="sync_address_names[]" value=""
autocomplete="off" class="layui-input" placeholder="地址名称">
</div>
<div class="layui-input-inline" style="width: 450px; margin-right: 10px;">
<input type="text" name="sync_address_urls[]" value=""
autocomplete="off" class="layui-input" placeholder="请输入同步地址URL">
</div>
<button type="button"
class="layui-btn layui-btn-danger remove-address">删除</button>
</div>
{/if}
</div>
<div style="margin-top: 10px;">
<button type="button" class="layui-btn layui-btn-normal"
id="add-address">添加地址</button>
<button class="layui-btn" lay-submit
lay-filter="component-form-element">保存</button>
</div>
</div>
</div>
</form>
</div>
</div>
</div>
<div class="layui-col-md12">
<div class="layui-card">
<div class="layui-card-header">微信公众号设置</div>
<div class="layui-card-body">
<form class="layui-form" action="" lay-filter="wechatofficialaccount-setting-form">
<input type="hidden" name="key" value="wechatofficialaccount_setting">
<div class="layui-form-item">
<label class="layui-form-label">Appid</label>
<div class="layui-input-block">
<input type="text" name="appid"
value="{$wechatofficialaccount_setting.appid|default=''}" autocomplete="off"
class="layui-input" placeholder="请输入微信公众号AppID">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">AppSecret</label>
<div class="layui-input-block">
<input type="text" name="appSecret"
value="{$wechatofficialaccount_setting.appSecret|default=''}" autocomplete="off"
class="layui-input" placeholder="请输入微信公众号AppSecret">
</div>
</div>
<div class="layui-form-item">
<div class="layui-input-block">
<button class="layui-btn" lay-submit
lay-filter="wechatofficialaccount-setting-form">保存</button>
</div>
</div>
</form>
</div>
</div>
</div>
</div>
</div>
{include file="Public:footer"/}
<script>
layui.use(['form', 'layer', 'upload'], function () {
var form = layui.form;
var layer = layui.layer;
var upload = layui.upload;
// 图标上传功能
$('.upload-icon').each(function () {
var inputName = $(this).data('input');
upload.render({
elem: this,
url: '{:url("/admin/picture")}',
data: {
dir: 'app/icons' // 指定存储目录为icons
},
accept: 'images',
acceptMime: 'image/*',
exts: 'jpg|png|jpeg|gif',
size: 2048, // 最大2MB
before: function (obj) {
layer.load(); // 显示等待框
},
done: function (res) {
layer.closeAll('loading'); // 关闭等待框
if (res.status) {
// 设置输入框的值
$('input[name="' + inputName + '"]').val(res.data.path);
// 更新预览图
$('#' + inputName + '_preview').html('<img src="' + res.data.path + '" style="height:38px;max-width:100px;margin-left:10px;">');
layer.msg('上传成功');
} else {
layer.msg(res.msg || '上传失败', { icon: 2 });
}
},
error: function () {
layer.closeAll('loading');
layer.msg('上传失败', { icon: 2 });
}
});
});
// 音频上传功能
$('.upload-audio').each(function () {
var inputName = $(this).data('input');
upload.render({
elem: this,
url: '{:url("/admin/picture")}',
data: {
dir: 'app' // 指定存储目录为app
},
accept: 'audio',
acceptMime: 'audio/*',
exts: 'mp3|wav|ogg',
size: 5120, // 最大5MB
before: function (obj) {
layer.load(); // 显示等待框
},
done: function (res) {
layer.closeAll('loading'); // 关闭等待框
if (res.status) {
// 设置输入框的值
$('input[name="' + inputName + '"]').val(res.data.path);
// 更新音频预览
$('#' + inputName + '_preview').html('<audio controls style="height:38px;margin-left:10px;"><source src="' + res.data.path + '" type="audio/mpeg">您的浏览器不支持音频播放</audio>');
layer.msg('上传成功');
} else {
layer.msg(res.msg || '上传失败', { icon: 2 });
}
},
error: function () {
layer.closeAll('loading');
layer.msg('上传失败', { icon: 2 });
}
});
});
// 添加地址按钮点击事件
$('#add-address').on('click', function () {
var newItem = '<div class="sync-address-item">' +
'<div class="layui-input-inline" style="width: 200px; margin-right: 10px;">' +
'<input type="text" name="sync_address_names[]" value="" autocomplete="off" class="layui-input" placeholder="地址名称">' +
'</div>' +
'<div class="layui-input-inline" style="width: 450px; margin-right: 10px;">' +
'<input type="text" name="sync_address_urls[]" value="" autocomplete="off" class="layui-input" placeholder="请输入同步地址URL">' +
'</div>' +
'<button type="button" class="layui-btn layui-btn-danger remove-address">删除</button>' +
'</div>';
$('#sync-addresses').append(newItem);
});
// 删除地址按钮点击事件(使用事件委托)
$(document).on('click', '.remove-address', function () {
// 如果只有一个地址项,则清空而不是删除
if ($('.sync-address-item').length <= 1) {
$(this).closest('.sync-address-item').find('input').val('');
} else {
$(this).closest('.sync-address-item').remove();
}
return false; // 阻止表单提交
});
// 表单提交 - 不再在前端处理数据转换,交给后端处理
form.on('submit(component-form-element)', function (data) {
var field = data.field;
// 检查并移除空的file字段
if ('file' in field && !field.file) {
delete field.file;
}
// 提交到后台
$.ajax({
url: '{:url("/admin/update")}',
type: 'post',
data: field,
success: function (res) {
if (res.status) {
layer.msg(res.msg, { icon: 1 });
} else {
layer.msg(res.msg, { icon: 2 });
}
}
});
return false;
});
// UID设置表单提交
form.on('submit(user-uid-form)', function (data) {
var field = data.field;
// 检查并移除空的file字段
if ('file' in field && !field.file) {
delete field.file;
}
// 提交到后台
$.ajax({
url: '{:url("/admin/update")}',
type: 'post',
data: field,
success: function (res) {
if (res.status) {
layer.msg(res.msg, { icon: 1 });
} else {
layer.msg(res.msg, { icon: 2 });
}
}
});
return false;
});
// 微信设置表单提交
form.on('submit(wechat-setting-form)', function (data) {
var field = data.field;
// 检查并移除空的file字段
if ('file' in field && !field.file) {
delete field.file;
}
// 提交到后台
$.ajax({
url: '{:url("/admin/update")}',
type: 'post',
data: field,
success: function (res) {
if (res.status) {
layer.msg(res.msg, { icon: 1 });
} else {
layer.msg(res.msg, { icon: 2 });
}
}
});
return false;
});
// 微信公众号设置表单提交
form.on('submit(wechatofficialaccount-setting-form)', function (data) {
var field = data.field;
// 检查并移除空的file字段
if ('file' in field && !field.file) {
delete field.file;
}
// 提交到后台
$.ajax({
url: '{:url("/admin/update")}',
type: 'post',
data: field,
success: function (res) {
if (res.status) {
layer.msg(res.msg, { icon: 1 });
} else {
layer.msg(res.msg, { icon: 2 });
}
}
});
return false;
});
// 项目配置表单提交
form.on('submit(app-setting-form)', function (data) {
var field = data.field;
// 检查并移除空的file字段
if ('file' in field && !field.file) {
delete field.file;
}
// 提交到后台
$.ajax({
url: '{:url("/admin/update")}',
type: 'post',
data: field,
success: function (res) {
if (res.status) {
layer.msg(res.msg, { icon: 1 });
} else {
layer.msg(res.msg, { icon: 2 });
}
}
});
return false;
});
// UID类型切换事件
form.on('radio(uid_type)', function (data) {
var value = this.value;
if (value == '0') {
$('#uid-length-container').hide();
} else {
$('#uid-length-container').show();
}
});
// 初始化事件绑定
$('input[name="uid_type"]').on('click', function () {
var value = $(this).val();
if (value == '0') {
$('#uid-length-container').hide();
} else {
$('#uid-length-container').show();
}
});
});
</script>
<style>
.sync-address-item {
display: flex;
align-items: center;
margin-bottom: 10px;
}
.layui-form-label {
width: 120px;
}
.layui-input-block {
margin-left: 150px;
}
.icon-preview {
display: inline-block;
vertical-align: middle;
}
.upload-icon {
display: inline-block;
vertical-align: middle;
margin-right: 10px;
}
.audio-preview {
display: inline-block;
vertical-align: middle;
}
.upload-audio {
display: inline-block;
vertical-align: middle;
margin-right: 10px;
}
</style>
</body>
</html>