manghe/app/admin/view/Config/systemconfig.html
2025-04-06 20:26:07 +00:00

697 lines
36 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">
<label class="layui-form-label">小程序版本号</label>
<div class="layui-input-block">
<input type="text" name="applet_version" value="{$app_setting.applet_version|default=''}"
autocomplete="off" class="layui-input" placeholder="请输入小程序版本号如v1.0.0">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">签到消费门槛</label>
<div class="layui-input-block">
<input type="number" name="sign_in_spend_limit"
value="{$app_setting.sign_in_spend_limit|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">
<div class="layui-input-block">
<button class="layui-btn" lay-submit lay-filter="app-setting-form">保存</button>
<button type="button" class="layui-btn layui-btn-normal" id="copy-download-json">复制并下载json格式</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="infinite-multiple-form">
<input type="hidden" name="key" value="infinite_multiple">
<div class="layui-form-item">
<label class="layui-form-label">抽奖倍数</label>
<div class="layui-input-block">
<input type="radio" name="multiple" value="1000" title="1000" {if !isset($infinite_multiple.multiple) || $infinite_multiple.multiple==1000}checked{/if}>
<input type="radio" name="multiple" value="10000" title="10000" {if isset($infinite_multiple.multiple) && $infinite_multiple.multiple==10000}checked{/if}>
<input type="radio" name="multiple" value="100000" title="100000" {if isset($infinite_multiple.multiple) && $infinite_multiple.multiple==100000}checked{/if}>
</div>
</div>
<div class="layui-form-item">
<div class="layui-input-block">
<button class="layui-btn" lay-submit lay-filter="infinite-multiple-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(infinite-multiple-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;
});
// 复制并下载JSON格式按钮点击事件
$('#copy-download-json').on('click', function () {
// 获取app-setting-form表单的所有值
var formData = form.val('app-setting-form');
// 创建包含当前时间戳的JSON对象
var jsonData = Object.assign({}, formData);
jsonData.update_time = Math.floor(Date.now() / 1000); // 添加时间戳(秒)
// 格式化为JSON字符串
var jsonString = JSON.stringify(jsonData, null, 2);
// 复制到剪贴板
var textArea = document.createElement("textarea");
textArea.value = jsonString;
document.body.appendChild(textArea);
textArea.select();
document.execCommand('copy');
document.body.removeChild(textArea);
// 创建并下载JSON文件
var blob = new Blob([jsonString], { type: 'application/json' });
var link = document.createElement('a');
link.href = URL.createObjectURL(blob);
link.download = 'app_setting_' + jsonData.update_time + '.json';
document.body.appendChild(link);
link.click();
document.body.removeChild(link);
// 提示用户
layer.msg('已复制到剪贴板并下载JSON文件', { icon: 1 });
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>