Files
BuYuHouDuan/AdminSrc/AdminHost/wwwroot/admin/dist/views/gameconfig/chessconfig.html
T
2026-10-12 16:22:04 +08:00

221 lines
10 KiB
HTML

<title>游戏房间配置</title>
<div class="layui-card layadmin-header">
<div class="layui-breadcrumb" lay-filter="breadcrumb">
<a lay-href="">主页</a>
<a><cite>游戏管理</cite></a>
<a><cite>游戏房间配置</cite></a>
</div>
</div>
<div class="layui-fluid">
<div class="layui-card">
<div class="layui-card-header" style="font-weight:bold;">中国象棋 - 开房权限</div>
<div class="layui-card-body" style="padding-top:10px;">
<form class="layui-form" lay-filter="chess-form">
<div class="layui-form-item">
<label class="layui-form-label">开房权限</label>
<div class="layui-input-block" id="createRoomLimit">
<input type="checkbox" name="createRoomLimit" value="1" title="VIP" lay-filter="createRoomLimitVip">
<input type="checkbox" name="createRoomLimit" value="2" title="代理商">
<input type="checkbox" name="createRoomLimit" value="3" title="普通用户">
</div>
</div>
<div class="layui-form-item" id="createRoomVipLevelsRow" style="display:none;">
<label class="layui-form-label">VIP等级范围</label>
<div class="layui-input-block" id="createRoomVipLevels">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">最小下注</label>
<div class="layui-input-block">
<input type="number" name="minBetGold" class="layui-input" style="width:300px">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">下注档位</label>
<div class="layui-input-block">
<input type="text" name="betGoldLimits" placeholder="多个值用逗号分隔" class="layui-input" style="width:300px">
</div>
</div>
</form>
</div>
</div>
<div class="layui-card">
<div class="layui-card-header" style="font-weight:bold;">捕鱼 - 手动选座权限</div>
<div class="layui-card-body" style="padding-top:10px;">
<form class="layui-form" lay-filter="fish-form">
<div class="layui-form-item">
<label class="layui-form-label">手动选座</label>
<div class="layui-input-block" id="seatSelectLimit">
<input type="checkbox" name="seatSelectLimit" value="1" title="VIP" lay-filter="seatSelectLimitVip">
<input type="checkbox" name="seatSelectLimit" value="2" title="代理商">
<input type="checkbox" name="seatSelectLimit" value="3" title="普通用户">
</div>
</div>
<div class="layui-form-item" id="seatSelectVipLevelsRow" style="display:none;">
<label class="layui-form-label">VIP等级范围</label>
<div class="layui-input-block" id="seatSelectVipLevels">
</div>
</div>
</form>
</div>
</div>
<div class="layui-card">
<div class="layui-card-body" style="padding-top:10px;">
<button class="layui-btn" lay-submit lay-filter="save-all"><i class="layui-icon layui-icon-ok"></i> 保存配置</button>
<button class="layui-btn layui-btn-warm" type="button" lay-filter="reload-all"><i class="layui-icon layui-icon-refresh"></i> 刷新</button>
<button class="layui-btn layui-btn-sm layui-btn-normal" onclick="saveSection('ChessConfig')"><i class="layui-icon layui-icon-export"></i> 保存到初始化文件</button>
</div>
</div>
</div>
<script>
layui.use(['admin', 'form'], function () {
var $ = layui.$,
admin = layui.admin,
form = layui.form,
setter = layui.setter;
setTimeout(function() {
$('.layui-layer-shade').remove();
layer.closeAll();
}, 100);
function buildVipCheckboxHtml(selectedVipLevels) {
var html = '';
for (var i = 1; i <= 10; i++) {
var checked = selectedVipLevels && selectedVipLevels.indexOf(i) !== -1 ? 'checked' : '';
html += '<input type="checkbox" name="vipLevels" value="' + i + '" title="VIP' + i + '" ' + checked + ' lay-skin="primary">';
}
return html;
}
function toggleVipLevelsRow() {
var createVipChecked = $('input[name="createRoomLimit"][value="1"]').is(':checked');
$('#createRoomVipLevelsRow').toggle(createVipChecked);
var seatVipChecked = $('input[name="seatSelectLimit"][value="1"]').is(':checked');
$('#seatSelectVipLevelsRow').toggle(seatVipChecked);
}
form.on('checkbox(createRoomLimitVip)', function() {
toggleVipLevelsRow();
});
form.on('checkbox(seatSelectLimitVip)', function() {
toggleVipLevelsRow();
});
function loadConfig() {
admin.req({
method: "get",
url: setter.baseurl + "adminapi/GameConfig",
done: function (res) {
if (res.code === 0 && res.data) {
var cc = res.data.chessConfig || {};
var fc = res.data.fishRoomConfig || {};
$('#createRoomVipLevels').html(buildVipCheckboxHtml(cc.createRoomVipLevels || []));
$('#seatSelectVipLevels').html(buildVipCheckboxHtml(fc.seatSelectVipLevels || []));
$('input[name="createRoomLimit"]').prop('checked', false);
if (cc.createRoomLimit && Array.isArray(cc.createRoomLimit)) {
cc.createRoomLimit.forEach(function(v) {
$('input[name="createRoomLimit"][value="' + v + '"]').prop('checked', true);
});
}
$('input[name="seatSelectLimit"]').prop('checked', false);
if (fc.seatSelectLimit && Array.isArray(fc.seatSelectLimit)) {
fc.seatSelectLimit.forEach(function(v) {
$('input[name="seatSelectLimit"][value="' + v + '"]').prop('checked', true);
});
}
$('input[name="minBetGold"]').val(cc.minBetGold || 0);
var betStr = '';
if (cc.betGoldLimits && Array.isArray(cc.betGoldLimits)) {
betStr = cc.betGoldLimits.join(',');
}
$('input[name="betGoldLimits"]').val(betStr);
form.render('checkbox');
toggleVipLevelsRow();
}
}
});
}
function collectVipLevels(containerId) {
var levels = [];
$('#' + containerId + ' input[name="vipLevels"]:checked').each(function() {
levels.push(parseInt($(this).val()));
});
return levels;
}
$(document).on('click', '[lay-filter="save-all"]', function() {
var createRoomChecked = [];
$('input[name="createRoomLimit"]:checked').each(function() {
createRoomChecked.push(parseInt($(this).val()));
});
var seatChecked = [];
$('input[name="seatSelectLimit"]:checked').each(function() {
seatChecked.push(parseInt($(this).val()));
});
var betStr = $('input[name="betGoldLimits"]').val() || '';
var betList = [];
if (betStr.trim()) {
betList = betStr.split(',').map(function(x) { return parseInt(x.trim()); }).filter(function(x) { return !isNaN(x); });
}
admin.req({
method: "get",
url: setter.baseurl + "adminapi/GameConfig",
done: function (res) {
if (res.code === 0 && res.data) {
res.data.chessConfig = {
createRoomLimit: createRoomChecked,
createRoomVipLevels: collectVipLevels('createRoomVipLevels'),
minBetGold: parseInt($('input[name="minBetGold"]').val()) || 0,
betGoldLimits: betList
};
res.data.fishRoomConfig = {
seatSelectLimit: seatChecked,
seatSelectVipLevels: collectVipLevels('seatSelectVipLevels')
};
admin.req({
method: "post",
contentType: "application/json;charset=UTF-8",
url: setter.baseurl + "adminapi/GameConfig/Update",
data: JSON.stringify(res.data),
done: function (r) {
if (r.code === 0 || r.code === 200) {
layer.msg('保存成功');
} else {
layer.msg(r.info || '保存失败');
}
}
});
}
}
});
return false;
});
$(document).on('click', '[lay-filter="reload-all"]', function() {
loadConfig();
layer.msg('刷新成功');
});
window.saveSection=function(n){layui.admin.req({method:'get',url:(layui.setter.baseurl||'/')+'adminapi/GameConfig/SaveSection/'+n,done:function(r){layui.layer.msg(r.info||(r.code===0?'保存成功':'保存失败'))}})}
loadConfig();
});
</script>