681 lines
37 KiB
HTML
681 lines
37 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">
|
|||
|
|
<div class="layui-tab layui-tab-brief" lay-filter="roomfish-tab">
|
|||
|
|
<ul class="layui-tab-title">
|
|||
|
|
<li class="layui-this" lay-id="normal">出鱼配置</li>
|
|||
|
|
|
|||
|
|
</ul>
|
|||
|
|
<div class="layui-tab-content" style="padding: 10px 0 0 0;">
|
|||
|
|
<div class="layui-tab-item layui-show">
|
|||
|
|
<table id="table-roomfish" lay-filter="table-roomfish"></table>
|
|||
|
|
</div>
|
|||
|
|
<div class="layui-tab-item">
|
|||
|
|
<div class="layui-row">
|
|||
|
|
<div class="layui-col-md3">
|
|||
|
|
<div class="layui-card">
|
|||
|
|
<div class="layui-card-header">游戏类型选择</div>
|
|||
|
|
<div class="layui-card-body">
|
|||
|
|
<div class="layui-btn-container" id="game-type-btns">
|
|||
|
|
<button class="layui-btn layui-btn-sm layui-btn-primary" data-type="1">风雷之渊</button>
|
|||
|
|
<button class="layui-btn layui-btn-sm" data-type="2">永夜尸城</button>
|
|||
|
|
<button class="layui-btn layui-btn-sm" data-type="5">黑神话悟空</button>
|
|||
|
|
</div>
|
|||
|
|
</div>
|
|||
|
|
</div>
|
|||
|
|
</div>
|
|||
|
|
<div class="layui-col-md9">
|
|||
|
|
<table id="table-probability" lay-filter="table-probability"></table>
|
|||
|
|
</div>
|
|||
|
|
</div>
|
|||
|
|
</div>
|
|||
|
|
</div>
|
|||
|
|
</div>
|
|||
|
|
</div>
|
|||
|
|
</div>
|
|||
|
|
</div>
|
|||
|
|
|
|||
|
|
<script type="text/html" id="toolbar-roomfish">
|
|||
|
|
<div class="layui-btn-container">
|
|||
|
|
<button class="layui-btn layui-btn-sm layui-btn-normal" lay-filter="init-roomfish"><i class="layui-icon layui-icon-refresh"></i> 初始化配置</button>
|
|||
|
|
<button class="layui-btn layui-btn-sm" lay-filter="save-roomfish"><i class="layui-icon layui-icon-ok"></i> 保存配置</button>
|
|||
|
|
<button class="layui-btn layui-btn-sm layui-btn-warm" lay-filter="reload-roomfish"><i class="layui-icon layui-icon-refresh"></i> 刷新</button>
|
|||
|
|
<button class="layui-btn layui-btn-sm layui-btn-normal" onclick="saveSection('RoomFishConfigs')"><i class="layui-icon layui-icon-export"></i> 保存到初始化文件</button>
|
|||
|
|
</div>
|
|||
|
|
</script>
|
|||
|
|
|
|||
|
|
<script type="text/html" id="table-operate">
|
|||
|
|
<a class="layui-btn layui-btn-xs" lay-event="edit"><i class="layui-icon layui-icon-edit"></i>编辑</a>
|
|||
|
|
</script>
|
|||
|
|
|
|||
|
|
<script type="text/html" id="tpl-gameType">
|
|||
|
|
{{# var typeMap = {1:'风雷之渊',2:'永夜尸城',3:'中国象棋',4:'星际迷航',5:'黑神话悟空'}; }}
|
|||
|
|
{{= typeMap[d.gameType] || '未知(' + d.gameType + ')' }}
|
|||
|
|
</script>
|
|||
|
|
|
|||
|
|
<script>
|
|||
|
|
layui.use(['admin', 'table', 'form'], function () {
|
|||
|
|
var $ = layui.$,
|
|||
|
|
admin = layui.admin,
|
|||
|
|
table = layui.table,
|
|||
|
|
setter = layui.setter;
|
|||
|
|
|
|||
|
|
var gameConfig = null;
|
|||
|
|
|
|||
|
|
setTimeout(function() {
|
|||
|
|
if (window.parent && window.parent.$ && window.parent.layer) {
|
|||
|
|
window.parent.$('.layui-layer-shade').remove();
|
|||
|
|
window.parent.layer.closeAll();
|
|||
|
|
}
|
|||
|
|
$('.layui-layer-shade').remove();
|
|||
|
|
layer.closeAll();
|
|||
|
|
}, 100);
|
|||
|
|
|
|||
|
|
function loadConfig() {
|
|||
|
|
admin.req({
|
|||
|
|
method: "get",
|
|||
|
|
url: setter.baseurl + "adminapi/GameConfig",
|
|||
|
|
done: function (res) {
|
|||
|
|
if (res.code === 0 && res.data) {
|
|||
|
|
gameConfig = res.data;
|
|||
|
|
buildFishNameMap();
|
|||
|
|
renderTable();
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
});
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
var fishNameMap = {};
|
|||
|
|
var fishArrayNameMap = {};
|
|||
|
|
|
|||
|
|
function buildFishNameMap() {
|
|||
|
|
if (!gameConfig) return;
|
|||
|
|
fishNameMap = {};
|
|||
|
|
fishArrayNameMap = {};
|
|||
|
|
|
|||
|
|
var fishConfigs = gameConfig.fishTypeConfigs || [];
|
|||
|
|
fishConfigs.forEach(function(f) {
|
|||
|
|
fishNameMap[f.fishNumber] = f.fishName || f.fishNumber;
|
|||
|
|
});
|
|||
|
|
|
|||
|
|
var fishArrayConfigs = gameConfig.fishArrayConfigs || [];
|
|||
|
|
fishArrayConfigs.forEach(function(f) {
|
|||
|
|
fishArrayNameMap[f.fishArrayNumber] = f.name || f.fishArrayNumber;
|
|||
|
|
});
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
function buildRoomLevelNameMap(gameType) {
|
|||
|
|
var map = {};
|
|||
|
|
if (!gameConfig) return map;
|
|||
|
|
var roomConfigs = gameConfig.roomConfigs || [];
|
|||
|
|
roomConfigs.forEach(function(r) {
|
|||
|
|
if (r.gameType === gameType) {
|
|||
|
|
map[r.roomLevel] = r.roomLevel + ' ' + r.roomName;
|
|||
|
|
}
|
|||
|
|
});
|
|||
|
|
return map;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
function getRoomLevelDisplay(roomLevel, gameType) {
|
|||
|
|
var map = buildRoomLevelNameMap(gameType);
|
|||
|
|
return map[roomLevel] || roomLevel.toString();
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
function getFishDisplayName(fishNumber, type) {
|
|||
|
|
if (type === 2) {
|
|||
|
|
var name = fishArrayNameMap[fishNumber] || fishNumber;
|
|||
|
|
return name + ' (' + fishNumber + ')';
|
|||
|
|
} else {
|
|||
|
|
var name = fishNameMap[fishNumber] || fishNumber;
|
|||
|
|
return name + ' (' + fishNumber + ')';
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
function saveConfig() {
|
|||
|
|
admin.req({
|
|||
|
|
method: "post",
|
|||
|
|
contentType: "application/json;charset=UTF-8",
|
|||
|
|
url: setter.baseurl + "adminapi/GameConfig/Update",
|
|||
|
|
data: JSON.stringify(gameConfig),
|
|||
|
|
done: function (res) {
|
|||
|
|
if (res.code === 0 || res.code === 200) {
|
|||
|
|
layer.msg('保存成功');
|
|||
|
|
loadConfig();
|
|||
|
|
} else {
|
|||
|
|
layer.msg(res.info || '保存失败');
|
|||
|
|
}
|
|||
|
|
},
|
|||
|
|
fail: function(res) {
|
|||
|
|
layer.msg(res.info || '保存失败');
|
|||
|
|
}
|
|||
|
|
});
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
function initConfig() {
|
|||
|
|
layer.confirm('确定要初始化全部配置数据吗?此操作将清空现有数据!', function(idx) {
|
|||
|
|
layer.close(idx);
|
|||
|
|
admin.req({
|
|||
|
|
method: "get",
|
|||
|
|
url: setter.baseurl + "adminapi/GameConfig/InitSection/RoomFishConfigs",
|
|||
|
|
done: function (res) {
|
|||
|
|
if (res.code === 0 || res.code === 200) {
|
|||
|
|
layer.msg('初始化成功');
|
|||
|
|
loadConfig();
|
|||
|
|
} else {
|
|||
|
|
layer.msg(res.info || '初始化失败');
|
|||
|
|
}
|
|||
|
|
},
|
|||
|
|
fail: function(res) {
|
|||
|
|
layer.msg(res.info || '初始化失败');
|
|||
|
|
}
|
|||
|
|
});
|
|||
|
|
});
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
function renderTable() {
|
|||
|
|
var data = (gameConfig ? gameConfig.roomFishConfigs : []) || [];
|
|||
|
|
table.render({
|
|||
|
|
elem: '#table-roomfish',
|
|||
|
|
data: data,
|
|||
|
|
cols: [[
|
|||
|
|
{ type: 'checkbox', fixed: 'left' },
|
|||
|
|
{ field: "gameType", title: "游戏类型", width: 150, templet: '#tpl-gameType' },
|
|||
|
|
{ field: "normalFishList", title: "普通鱼配置", width: 120, templet: function(d) { return (d.normalFishList || []).length + ' 条'; } },
|
|||
|
|
{ field: "roomFishLevelList", title: "等级配置", width: 120, templet: function(d) { return (d.roomFishLevelList || []).length + ' 条'; } },
|
|||
|
|
{ title: "操作", width: 100, fixed: 'right', toolbar: '#table-operate' }
|
|||
|
|
]],
|
|||
|
|
toolbar: '#toolbar-roomfish',
|
|||
|
|
defaultToolbar: ['filter', 'exports', 'print']
|
|||
|
|
});
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
$(document).on('click', '[lay-filter="init-roomfish"]', function() {
|
|||
|
|
if (window.parent && window.parent.$ && window.parent.layer) {
|
|||
|
|
window.parent.$('.layui-layer-shade').remove();
|
|||
|
|
window.parent.layer.closeAll();
|
|||
|
|
}
|
|||
|
|
initConfig();
|
|||
|
|
});
|
|||
|
|
|
|||
|
|
$(document).on('click', '[lay-filter="reload-roomfish"]', function() {
|
|||
|
|
loadConfig();
|
|||
|
|
layer.msg('刷新成功');
|
|||
|
|
});
|
|||
|
|
|
|||
|
|
$(document).on('click', '[lay-filter="save-roomfish"]', function() {
|
|||
|
|
if (window.parent && window.parent.$ && window.parent.layer) {
|
|||
|
|
window.parent.$('.layui-layer-shade').remove();
|
|||
|
|
window.parent.layer.closeAll();
|
|||
|
|
}
|
|||
|
|
saveConfig();
|
|||
|
|
});
|
|||
|
|
|
|||
|
|
table.on('tool(table-roomfish)', function(obj) {
|
|||
|
|
var data = obj.data;
|
|||
|
|
var trIndex = obj.tr.index();
|
|||
|
|
if (trIndex < 0) trIndex = gameConfig.roomFishConfigs.findIndex(function(x) { return x.gameType === data.gameType; });
|
|||
|
|
if (obj.event === 'edit') {
|
|||
|
|
showEditDialog(data, trIndex);
|
|||
|
|
}
|
|||
|
|
});
|
|||
|
|
|
|||
|
|
function showEditDialog(data, itemIndex) {
|
|||
|
|
var typeMap = {1:'风雷之渊',2:'永夜尸城',3:'中国象棋',4:'星际迷航',5:'黑神话悟空'};
|
|||
|
|
var gameTypeName = typeMap[data.gameType] || '未知';
|
|||
|
|
|
|||
|
|
var html = '<div style="padding:15px;">' +
|
|||
|
|
'<div style="margin-bottom:10px;">' +
|
|||
|
|
'<span style="font-weight:bold;font-size:14px;">游戏类型:</span>' +
|
|||
|
|
'<span style="color:#1e88e5;">' + gameTypeName + '</span>' +
|
|||
|
|
'</div>' +
|
|||
|
|
'<div class="layui-tab layui-tab-brief" lay-filter="fish-config-tab">' +
|
|||
|
|
'<ul class="layui-tab-title">' +
|
|||
|
|
'<li class="layui-this" lay-id="normal">普通鱼配置 (' + ((data.normalFishList || []).length) + '条)</li>' +
|
|||
|
|
'<li lay-id="level1">初级房间配置 (' + ((data.roomFishLevelList || []).filter(function(x){return x.roomLevel===1;}).length) + '条)</li>' +
|
|||
|
|
'<li lay-id="level2">中级房间配置 (' + ((data.roomFishLevelList || []).filter(function(x){return x.roomLevel===2;}).length) + '条)</li>' +
|
|||
|
|
'<li lay-id="level3">高级房间配置 (' + ((data.roomFishLevelList || []).filter(function(x){return x.roomLevel===3;}).length) + '条)</li>' +
|
|||
|
|
'</ul>' +
|
|||
|
|
'<div class="layui-tab-content" style="padding:10px 0 0 0;">' +
|
|||
|
|
'<div class="layui-tab-item layui-show">' +
|
|||
|
|
'<div style="margin-bottom:10px;">' +
|
|||
|
|
'<button type="button" class="layui-btn layui-btn-sm" id="add-normal-fish-btn"><i class="layui-icon layui-icon-add-1"></i> 添加</button>' +
|
|||
|
|
'<button type="button" class="layui-btn layui-btn-sm layui-btn-danger" id="del-normal-fish-btn"><i class="layui-icon layui-icon-delete"></i> 批量删除</button>' +
|
|||
|
|
'</div>' +
|
|||
|
|
'<table id="table-normal-detail" lay-filter="table-normal-detail"></table>' +
|
|||
|
|
'</div>' +
|
|||
|
|
'<div class="layui-tab-item">' +
|
|||
|
|
'<div style="margin-bottom:10px;">' +
|
|||
|
|
'<button type="button" class="layui-btn layui-btn-sm" id="add-level1-fish-btn"><i class="layui-icon layui-icon-add-1"></i> 添加</button>' +
|
|||
|
|
'<button type="button" class="layui-btn layui-btn-sm layui-btn-danger" id="del-level1-fish-btn"><i class="layui-icon layui-icon-delete"></i> 批量删除</button>' +
|
|||
|
|
'</div>' +
|
|||
|
|
'<table id="table-level1-detail" lay-filter="table-level1-detail"></table>' +
|
|||
|
|
'</div>' +
|
|||
|
|
'<div class="layui-tab-item">' +
|
|||
|
|
'<div style="margin-bottom:10px;">' +
|
|||
|
|
'<button type="button" class="layui-btn layui-btn-sm" id="add-level2-fish-btn"><i class="layui-icon layui-icon-add-1"></i> 添加</button>' +
|
|||
|
|
'<button type="button" class="layui-btn layui-btn-sm layui-btn-danger" id="del-level2-fish-btn"><i class="layui-icon layui-icon-delete"></i> 批量删除</button>' +
|
|||
|
|
'</div>' +
|
|||
|
|
'<table id="table-level2-detail" lay-filter="table-level2-detail"></table>' +
|
|||
|
|
'</div>' +
|
|||
|
|
'<div class="layui-tab-item">' +
|
|||
|
|
'<div style="margin-bottom:10px;">' +
|
|||
|
|
'<button type="button" class="layui-btn layui-btn-sm" id="add-level3-fish-btn"><i class="layui-icon layui-icon-add-1"></i> 添加</button>' +
|
|||
|
|
'<button type="button" class="layui-btn layui-btn-sm layui-btn-danger" id="del-level3-fish-btn"><i class="layui-icon layui-icon-delete"></i> 批量删除</button>' +
|
|||
|
|
'</div>' +
|
|||
|
|
'<table id="table-level3-detail" lay-filter="table-level3-detail"></table>' +
|
|||
|
|
'</div>' +
|
|||
|
|
'</div>' +
|
|||
|
|
'</div>' +
|
|||
|
|
'</div>';
|
|||
|
|
|
|||
|
|
layer.open({
|
|||
|
|
type: 1,
|
|||
|
|
title: '编辑出鱼配置 - ' + gameTypeName,
|
|||
|
|
area: ['1000px', '600px'],
|
|||
|
|
content: html,
|
|||
|
|
btn: ['保存', '取消'],
|
|||
|
|
shadeClose: true,
|
|||
|
|
success: function(layero) {
|
|||
|
|
layui.element.init();
|
|||
|
|
|
|||
|
|
var normalTable = layui.table.render({
|
|||
|
|
elem: '#table-normal-detail',
|
|||
|
|
data: data.normalFishList || [],
|
|||
|
|
cols: [[
|
|||
|
|
{ type: 'checkbox', fixed: 'left' },
|
|||
|
|
{ field: "type", title: "类型", width: 80, templet: function(d) { return d.type === 1 ? '鱼' : '鱼阵'; } },
|
|||
|
|
{ field: "fishNumber", title: "鱼/鱼阵", minWidth: 180, templet: function(d) { return getFishDisplayName(d.fishNumber, d.type); } },
|
|||
|
|
{ field: "fishWeight", title: "权重", width: 80 },
|
|||
|
|
{ field: "fishFrequency", title: "频率(秒)", width: 100 },
|
|||
|
|
{ field: "maxCount", title: "最大数量", width: 100 },
|
|||
|
|
{ field: "times", title: "出场秒数", width: 100 },
|
|||
|
|
{ title: "操作", width: 80, fixed: 'right', toolbar: '#table-normal-operate' }
|
|||
|
|
]]
|
|||
|
|
});
|
|||
|
|
|
|||
|
|
var level1Data = (data.roomFishLevelList || []).filter(function(x){return x.roomLevel===1;});
|
|||
|
|
var level2Data = (data.roomFishLevelList || []).filter(function(x){return x.roomLevel===2;});
|
|||
|
|
var level3Data = (data.roomFishLevelList || []).filter(function(x){return x.roomLevel===3;});
|
|||
|
|
|
|||
|
|
layui.table.render({
|
|||
|
|
elem: '#table-level1-detail',
|
|||
|
|
data: level1Data,
|
|||
|
|
cols: [[
|
|||
|
|
{ type: 'checkbox', fixed: 'left' },
|
|||
|
|
{ field: "roomLevel", title: "房间等级", width: 120, templet: function(d) { return getRoomLevelDisplay(d.roomLevel, data.gameType); } },
|
|||
|
|
{ field: "type", title: "类型", width: 80, templet: function(d) { return d.type === 1 ? '鱼' : '鱼阵'; } },
|
|||
|
|
{ field: "fishNumber", title: "鱼/鱼阵", minWidth: 180, templet: function(d) { return getFishDisplayName(d.fishNumber, d.type); } },
|
|||
|
|
{ field: "fishWeight", title: "权重", width: 80 },
|
|||
|
|
{ field: "fishFrequency", title: "频率(秒)", width: 100 },
|
|||
|
|
{ field: "maxCount", title: "最大数量", width: 100 },
|
|||
|
|
{ field: "times", title: "出场秒数", width: 100 },
|
|||
|
|
{ title: "操作", width: 80, fixed: 'right', toolbar: '#table-level-operate' }
|
|||
|
|
]]
|
|||
|
|
});
|
|||
|
|
|
|||
|
|
layui.table.render({
|
|||
|
|
elem: '#table-level2-detail',
|
|||
|
|
data: level2Data,
|
|||
|
|
cols: [[
|
|||
|
|
{ type: 'checkbox', fixed: 'left' },
|
|||
|
|
{ field: "roomLevel", title: "房间等级", width: 120, templet: function(d) { return getRoomLevelDisplay(d.roomLevel, data.gameType); } },
|
|||
|
|
{ field: "type", title: "类型", width: 80, templet: function(d) { return d.type === 1 ? '鱼' : '鱼阵'; } },
|
|||
|
|
{ field: "fishNumber", title: "鱼/鱼阵", minWidth: 180, templet: function(d) { return getFishDisplayName(d.fishNumber, d.type); } },
|
|||
|
|
{ field: "fishWeight", title: "权重", width: 80 },
|
|||
|
|
{ field: "fishFrequency", title: "频率(秒)", width: 100 },
|
|||
|
|
{ field: "maxCount", title: "最大数量", width: 100 },
|
|||
|
|
{ field: "times", title: "出场秒数", width: 100 },
|
|||
|
|
{ title: "操作", width: 80, fixed: 'right', toolbar: '#table-level-operate' }
|
|||
|
|
]]
|
|||
|
|
});
|
|||
|
|
|
|||
|
|
layui.table.render({
|
|||
|
|
elem: '#table-level3-detail',
|
|||
|
|
data: level3Data,
|
|||
|
|
cols: [[
|
|||
|
|
{ type: 'checkbox', fixed: 'left' },
|
|||
|
|
{ field: "roomLevel", title: "房间等级", width: 120, templet: function(d) { return getRoomLevelDisplay(d.roomLevel, data.gameType); } },
|
|||
|
|
{ field: "type", title: "类型", width: 80, templet: function(d) { return d.type === 1 ? '鱼' : '鱼阵'; } },
|
|||
|
|
{ field: "fishNumber", title: "鱼/鱼阵", minWidth: 180, templet: function(d) { return getFishDisplayName(d.fishNumber, d.type); } },
|
|||
|
|
{ field: "fishWeight", title: "权重", width: 80 },
|
|||
|
|
{ field: "fishFrequency", title: "频率(秒)", width: 100 },
|
|||
|
|
{ field: "maxCount", title: "最大数量", width: 100 },
|
|||
|
|
{ field: "times", title: "出场秒数", width: 100 },
|
|||
|
|
{ title: "操作", width: 80, fixed: 'right', toolbar: '#table-level-operate' }
|
|||
|
|
]]
|
|||
|
|
});
|
|||
|
|
|
|||
|
|
layui.table.on('tool(table-normal-detail)', function(obj) {
|
|||
|
|
var d = obj.data;
|
|||
|
|
var idx = obj.tr.index();
|
|||
|
|
if (obj.event === 'edit') {
|
|||
|
|
showFishEditDialog(d, 'normal', data, idx, function(updated) {
|
|||
|
|
obj.update(updated);
|
|||
|
|
});
|
|||
|
|
}
|
|||
|
|
});
|
|||
|
|
|
|||
|
|
layui.table.on('tool(table-level1-detail)', function(obj) {
|
|||
|
|
var d = obj.data;
|
|||
|
|
var idx = obj.tr.index();
|
|||
|
|
if (obj.event === 'edit') {
|
|||
|
|
showFishEditDialog(d, 'level', data, idx, 1, function(updated) {
|
|||
|
|
obj.update(updated);
|
|||
|
|
});
|
|||
|
|
}
|
|||
|
|
});
|
|||
|
|
|
|||
|
|
layui.table.on('tool(table-level2-detail)', function(obj) {
|
|||
|
|
var d = obj.data;
|
|||
|
|
var idx = obj.tr.index();
|
|||
|
|
if (obj.event === 'edit') {
|
|||
|
|
showFishEditDialog(d, 'level', data, idx, 2, function(updated) {
|
|||
|
|
obj.update(updated);
|
|||
|
|
});
|
|||
|
|
}
|
|||
|
|
});
|
|||
|
|
|
|||
|
|
layui.table.on('tool(table-level3-detail)', function(obj) {
|
|||
|
|
var d = obj.data;
|
|||
|
|
var idx = obj.tr.index();
|
|||
|
|
if (obj.event === 'edit') {
|
|||
|
|
showFishEditDialog(d, 'level', data, idx, 3, function(updated) {
|
|||
|
|
obj.update(updated);
|
|||
|
|
});
|
|||
|
|
}
|
|||
|
|
});
|
|||
|
|
|
|||
|
|
$('#add-normal-fish-btn').on('click', function() {
|
|||
|
|
var newData = {type: 1, fishNumber: '', fishWeight: 0, fishFrequency: 5, maxCount: 1, times: 10};
|
|||
|
|
showFishEditDialog(newData, 'normal', data, -1, function(updated) {
|
|||
|
|
data.normalFishList = data.normalFishList || [];
|
|||
|
|
data.normalFishList.unshift(updated);
|
|||
|
|
layui.table.reload('table-normal-detail', { data: data.normalFishList });
|
|||
|
|
$('.layui-tab-title li[lay-id="normal"]').text('普通鱼配置 (' + data.normalFishList.length + '条)');
|
|||
|
|
});
|
|||
|
|
});
|
|||
|
|
|
|||
|
|
$('#add-level1-fish-btn').on('click', function() {
|
|||
|
|
var newData = {roomLevel: 1, type: 1, fishNumber: '', fishWeight: 0, fishFrequency: 5, maxCount: 1, times: 10};
|
|||
|
|
showFishEditDialog(newData, 'level', data, -1, 1, function(updated) {
|
|||
|
|
data.roomFishLevelList = data.roomFishLevelList || [];
|
|||
|
|
data.roomFishLevelList.unshift(updated);
|
|||
|
|
layui.table.reload('table-level1-detail', { data: (data.roomFishLevelList||[]).filter(function(x){return x.roomLevel===1;}) });
|
|||
|
|
$('.layui-tab-title li[lay-id="level1"]').text('初级房间配置 (' + (data.roomFishLevelList||[]).filter(function(x){return x.roomLevel===1;}).length + '条)');
|
|||
|
|
});
|
|||
|
|
});
|
|||
|
|
|
|||
|
|
$('#add-level2-fish-btn').on('click', function() {
|
|||
|
|
var newData = {roomLevel: 2, type: 1, fishNumber: '', fishWeight: 0, fishFrequency: 5, maxCount: 1, times: 10};
|
|||
|
|
showFishEditDialog(newData, 'level', data, -1, 2, function(updated) {
|
|||
|
|
data.roomFishLevelList = data.roomFishLevelList || [];
|
|||
|
|
data.roomFishLevelList.unshift(updated);
|
|||
|
|
layui.table.reload('table-level2-detail', { data: (data.roomFishLevelList||[]).filter(function(x){return x.roomLevel===2;}) });
|
|||
|
|
$('.layui-tab-title li[lay-id="level2"]').text('中级房间配置 (' + (data.roomFishLevelList||[]).filter(function(x){return x.roomLevel===2;}).length + '条)');
|
|||
|
|
});
|
|||
|
|
});
|
|||
|
|
|
|||
|
|
$('#add-level3-fish-btn').on('click', function() {
|
|||
|
|
var newData = {roomLevel: 3, type: 1, fishNumber: '', fishWeight: 0, fishFrequency: 5, maxCount: 1, times: 10};
|
|||
|
|
showFishEditDialog(newData, 'level', data, -1, 3, function(updated) {
|
|||
|
|
data.roomFishLevelList = data.roomFishLevelList || [];
|
|||
|
|
data.roomFishLevelList.unshift(updated);
|
|||
|
|
layui.table.reload('table-level3-detail', { data: (data.roomFishLevelList||[]).filter(function(x){return x.roomLevel===3;}) });
|
|||
|
|
$('.layui-tab-title li[lay-id="level3"]').text('高级房间配置 (' + (data.roomFishLevelList||[]).filter(function(x){return x.roomLevel===3;}).length + '条)');
|
|||
|
|
});
|
|||
|
|
});
|
|||
|
|
|
|||
|
|
$('#del-normal-fish-btn').on('click', function() {
|
|||
|
|
var checkStatus = layui.table.checkStatus('table-normal-detail');
|
|||
|
|
var checkData = checkStatus.data;
|
|||
|
|
if (checkData.length === 0) {
|
|||
|
|
layer.msg('请选择要删除的数据');
|
|||
|
|
return;
|
|||
|
|
}
|
|||
|
|
layer.confirm('确定删除选中的 ' + checkData.length + ' 条数据吗?', function(idx) {
|
|||
|
|
var ids = checkData.map(function(item) { return item.fishNumber + '_' + item.type; });
|
|||
|
|
data.normalFishList = (data.normalFishList || []).filter(function(item) {
|
|||
|
|
return !ids.includes(item.fishNumber + '_' + item.type);
|
|||
|
|
});
|
|||
|
|
layui.table.reload('table-normal-detail', { data: data.normalFishList });
|
|||
|
|
$('.layui-tab-title li[lay-id="normal"]').text('普通鱼配置 (' + data.normalFishList.length + '条)');
|
|||
|
|
layer.close(idx);
|
|||
|
|
});
|
|||
|
|
});
|
|||
|
|
|
|||
|
|
$('#del-level1-fish-btn').on('click', function() {
|
|||
|
|
var checkStatus = layui.table.checkStatus('table-level1-detail');
|
|||
|
|
var checkData = checkStatus.data;
|
|||
|
|
if (checkData.length === 0) {
|
|||
|
|
layer.msg('请选择要删除的数据');
|
|||
|
|
return;
|
|||
|
|
}
|
|||
|
|
layer.confirm('确定删除选中的 ' + checkData.length + ' 条数据吗?', function(idx) {
|
|||
|
|
var ids = checkData.map(function(item) { return item.roomLevel + '_' + item.fishNumber + '_' + item.type; });
|
|||
|
|
data.roomFishLevelList = (data.roomFishLevelList || []).filter(function(item) {
|
|||
|
|
return !ids.includes(item.roomLevel + '_' + item.fishNumber + '_' + item.type);
|
|||
|
|
});
|
|||
|
|
layui.table.reload('table-level1-detail', { data: (data.roomFishLevelList||[]).filter(function(x){return x.roomLevel===1;}) });
|
|||
|
|
$('.layui-tab-title li[lay-id="level1"]').text('初级房间配置 (' + (data.roomFishLevelList||[]).filter(function(x){return x.roomLevel===1;}).length + '条)');
|
|||
|
|
layer.close(idx);
|
|||
|
|
});
|
|||
|
|
});
|
|||
|
|
|
|||
|
|
$('#del-level2-fish-btn').on('click', function() {
|
|||
|
|
var checkStatus = layui.table.checkStatus('table-level2-detail');
|
|||
|
|
var checkData = checkStatus.data;
|
|||
|
|
if (checkData.length === 0) {
|
|||
|
|
layer.msg('请选择要删除的数据');
|
|||
|
|
return;
|
|||
|
|
}
|
|||
|
|
layer.confirm('确定删除选中的 ' + checkData.length + ' 条数据吗?', function(idx) {
|
|||
|
|
var ids = checkData.map(function(item) { return item.roomLevel + '_' + item.fishNumber + '_' + item.type; });
|
|||
|
|
data.roomFishLevelList = (data.roomFishLevelList || []).filter(function(item) {
|
|||
|
|
return !ids.includes(item.roomLevel + '_' + item.fishNumber + '_' + item.type);
|
|||
|
|
});
|
|||
|
|
layui.table.reload('table-level2-detail', { data: (data.roomFishLevelList||[]).filter(function(x){return x.roomLevel===2;}) });
|
|||
|
|
$('.layui-tab-title li[lay-id="level2"]').text('中级房间配置 (' + (data.roomFishLevelList||[]).filter(function(x){return x.roomLevel===2;}).length + '条)');
|
|||
|
|
layer.close(idx);
|
|||
|
|
});
|
|||
|
|
});
|
|||
|
|
|
|||
|
|
$('#del-level3-fish-btn').on('click', function() {
|
|||
|
|
var checkStatus = layui.table.checkStatus('table-level3-detail');
|
|||
|
|
var checkData = checkStatus.data;
|
|||
|
|
if (checkData.length === 0) {
|
|||
|
|
layer.msg('请选择要删除的数据');
|
|||
|
|
return;
|
|||
|
|
}
|
|||
|
|
layer.confirm('确定删除选中的 ' + checkData.length + ' 条数据吗?', function(idx) {
|
|||
|
|
var ids = checkData.map(function(item) { return item.roomLevel + '_' + item.fishNumber + '_' + item.type; });
|
|||
|
|
data.roomFishLevelList = (data.roomFishLevelList || []).filter(function(item) {
|
|||
|
|
return !ids.includes(item.roomLevel + '_' + item.fishNumber + '_' + item.type);
|
|||
|
|
});
|
|||
|
|
layui.table.reload('table-level3-detail', { data: (data.roomFishLevelList||[]).filter(function(x){return x.roomLevel===3;}) });
|
|||
|
|
$('.layui-tab-title li[lay-id="level3"]').text('高级房间配置 (' + (data.roomFishLevelList||[]).filter(function(x){return x.roomLevel===3;}).length + '条)');
|
|||
|
|
layer.close(idx);
|
|||
|
|
});
|
|||
|
|
});
|
|||
|
|
},
|
|||
|
|
yes: function(idx, layero) {
|
|||
|
|
if (itemIndex >= 0 && itemIndex < gameConfig.roomFishConfigs.length) {
|
|||
|
|
gameConfig.roomFishConfigs[itemIndex] = data;
|
|||
|
|
}
|
|||
|
|
layer.close(idx);
|
|||
|
|
renderTable();
|
|||
|
|
}
|
|||
|
|
});
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
function showFishEditDialog(data, type, configData, itemIndex, roomLevel, callback) {
|
|||
|
|
// 兼容普通鱼调用(不传 roomLevel,callback 在第5位)
|
|||
|
|
if (type !== 'level' && typeof roomLevel === 'function') {
|
|||
|
|
callback = roomLevel;
|
|||
|
|
roomLevel = undefined;
|
|||
|
|
}
|
|||
|
|
var isLevel = type === 'level';
|
|||
|
|
var title = isLevel ? '编辑房间等级出鱼配置' : '编辑普通鱼出鱼配置';
|
|||
|
|
var gameType = configData.gameType || data.gameType || 0;
|
|||
|
|
|
|||
|
|
var typeOptions = '<option value="1"' + (data.type === 1 ? ' selected' : '') + '>鱼</option>' +
|
|||
|
|
'<option value="2"' + (data.type === 2 ? ' selected' : '') + '>鱼阵</option>';
|
|||
|
|
|
|||
|
|
var fishConfigs = gameConfig.fishTypeConfigs || [];
|
|||
|
|
var fishArrayConfigs = gameConfig.fishArrayConfigs || [];
|
|||
|
|
var roomConfigs = gameConfig.roomConfigs || [];
|
|||
|
|
|
|||
|
|
var roomLevelOptions = '<option value="">请选择</option>';
|
|||
|
|
roomConfigs.forEach(function(r) {
|
|||
|
|
if (r.gameType === gameType) {
|
|||
|
|
roomLevelOptions += '<option value="' + r.roomLevel + '"' + (data.roomLevel === r.roomLevel ? ' selected' : '') + '>' + r.roomLevel + ' ' + r.roomName + '</option>';
|
|||
|
|
}
|
|||
|
|
});
|
|||
|
|
|
|||
|
|
var fishOptions = '<option value="">请选择</option>';
|
|||
|
|
fishConfigs.forEach(function(f) {
|
|||
|
|
fishOptions += '<option value="' + f.fishNumber + '"' + (data.fishNumber === f.fishNumber ? ' selected' : '') + '>' + (f.fishName || f.fishNumber) + ' (' + f.fishNumber + ')</option>';
|
|||
|
|
});
|
|||
|
|
|
|||
|
|
var fishArrayOptions = '<option value="">请选择</option>';
|
|||
|
|
fishArrayConfigs.forEach(function(f) {
|
|||
|
|
fishArrayOptions += '<option value="' + f.fishArrayNumber + '"' + (data.fishNumber === f.fishArrayNumber ? ' selected' : '') + '>' + (f.name || f.fishArrayNumber) + ' (' + f.fishArrayNumber + ')</option>';
|
|||
|
|
});
|
|||
|
|
|
|||
|
|
var html = '<div style="padding:15px 15px 5px 15px;">' +
|
|||
|
|
'<form class="layui-form" style="margin:0;">' +
|
|||
|
|
(isLevel ? '<div class="layui-form-item" style="margin-bottom:10px;">' +
|
|||
|
|
'<label class="layui-form-label" style="width:80px;">房间等级</label>' +
|
|||
|
|
'<div class="layui-input-inline" style="width:160px;">' +
|
|||
|
|
'<select name="roomLevel" id="room-level-select" lay-search>' + roomLevelOptions + '</select>' +
|
|||
|
|
'</div>' +
|
|||
|
|
'</div>' : '') +
|
|||
|
|
'<div class="layui-form-item" style="margin-bottom:10px;">' +
|
|||
|
|
'<label class="layui-form-label" style="width:80px;">类型</label>' +
|
|||
|
|
'<div class="layui-input-inline" style="width:100px;">' +
|
|||
|
|
'<select name="type" id="fish-type-select" lay-filter="fish-type-select">' + typeOptions + '</select>' +
|
|||
|
|
'</div>' +
|
|||
|
|
'</div>' +
|
|||
|
|
'<div class="layui-form-item" id="fish-select-item" style="margin-bottom:10px;">' +
|
|||
|
|
'<label class="layui-form-label" style="width:80px;">选择鱼</label>' +
|
|||
|
|
'<div class="layui-input-inline" style="width:280px;">' +
|
|||
|
|
'<select name="fishSelect" id="fish-select" lay-filter="fish-select" lay-search>' + fishOptions + '</select>' +
|
|||
|
|
'</div>' +
|
|||
|
|
'</div>' +
|
|||
|
|
'<div class="layui-form-item" id="fish-array-select-item" style="display:none;margin-bottom:10px;">' +
|
|||
|
|
'<label class="layui-form-label" style="width:80px;">选择鱼阵</label>' +
|
|||
|
|
'<div class="layui-input-inline" style="width:280px;">' +
|
|||
|
|
'<select name="fishArraySelect" id="fish-array-select" lay-filter="fish-array-select" lay-search>' + fishArrayOptions + '</select>' +
|
|||
|
|
'</div>' +
|
|||
|
|
'</div>' +
|
|||
|
|
'<input type="hidden" name="fishNumber" value="' + (data.fishNumber || '') + '">' +
|
|||
|
|
'<div class="layui-form-item" style="margin-bottom:10px;">' +
|
|||
|
|
'<label class="layui-form-label" style="width:80px;">权重</label>' +
|
|||
|
|
'<div class="layui-input-inline" style="width:100px;">' +
|
|||
|
|
'<input type="number" name="fishWeight" value="' + (data.fishWeight || 0) + '" class="layui-input">' +
|
|||
|
|
'</div>' +
|
|||
|
|
'<div class="layui-form-mid" style="color:#999;font-size:12px;">权重值越大,出鱼概率越高</div>' +
|
|||
|
|
'</div>' +
|
|||
|
|
'<div class="layui-form-item" style="margin-bottom:10px;">' +
|
|||
|
|
'<label class="layui-form-label" style="width:80px;">频率(秒)</label>' +
|
|||
|
|
'<div class="layui-input-inline" style="width:100px;">' +
|
|||
|
|
'<input type="number" name="fishFrequency" value="' + (data.fishFrequency || 0) + '" class="layui-input">' +
|
|||
|
|
'</div>' +
|
|||
|
|
'<div class="layui-form-mid" style="color:#999;font-size:12px;">下次出鱼间隔时间</div>' +
|
|||
|
|
'</div>' +
|
|||
|
|
'<div class="layui-form-item" style="margin-bottom:10px;">' +
|
|||
|
|
'<label class="layui-form-label" style="width:80px;">最大数量</label>' +
|
|||
|
|
'<div class="layui-input-inline" style="width:100px;">' +
|
|||
|
|
'<input type="number" name="maxCount" value="' + (data.maxCount || 0) + '" class="layui-input">' +
|
|||
|
|
'</div>' +
|
|||
|
|
'<div class="layui-form-mid" style="color:#999;font-size:12px;">屏幕中该鱼最大数量</div>' +
|
|||
|
|
'</div>' +
|
|||
|
|
'<div class="layui-form-item" style="margin-bottom:10px;">' +
|
|||
|
|
'<label class="layui-form-label" style="width:80px;">出场秒数</label>' +
|
|||
|
|
'<div class="layui-input-inline" style="width:100px;">' +
|
|||
|
|
'<input type="number" name="times" value="' + (data.times || 0) + '" class="layui-input">' +
|
|||
|
|
'</div>' +
|
|||
|
|
'<div class="layui-form-mid" style="color:#999;font-size:12px;">出场时间(秒)</div>' +
|
|||
|
|
'</div>' +
|
|||
|
|
'</form>' +
|
|||
|
|
'</div>';
|
|||
|
|
|
|||
|
|
layer.open({
|
|||
|
|
type: 1,
|
|||
|
|
title: title,
|
|||
|
|
area: ['800px', '500px'],
|
|||
|
|
content: html,
|
|||
|
|
btn: ['保存', '取消'],
|
|||
|
|
shadeClose: true,
|
|||
|
|
success: function(layero) {
|
|||
|
|
layui.form.render('select');
|
|||
|
|
|
|||
|
|
function updateFishSelect(type) {
|
|||
|
|
if (type === 1) {
|
|||
|
|
$('#fish-select-item', layero).show();
|
|||
|
|
$('#fish-array-select-item', layero).hide();
|
|||
|
|
} else {
|
|||
|
|
$('#fish-select-item', layero).hide();
|
|||
|
|
$('#fish-array-select-item', layero).show();
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
updateFishSelect(data.type);
|
|||
|
|
|
|||
|
|
layui.form.on('select(fish-type-select)', function(fdata) {
|
|||
|
|
var t = parseInt(fdata.value);
|
|||
|
|
updateFishSelect(t);
|
|||
|
|
});
|
|||
|
|
|
|||
|
|
layui.form.on('select(fish-select)', function(fdata) {
|
|||
|
|
$('input[name="fishNumber"]', layero).val(fdata.value);
|
|||
|
|
});
|
|||
|
|
|
|||
|
|
layui.form.on('select(fish-array-select)', function(fdata) {
|
|||
|
|
$('input[name="fishNumber"]', layero).val(fdata.value);
|
|||
|
|
});
|
|||
|
|
},
|
|||
|
|
yes: function(index, layero) {
|
|||
|
|
var updatedItem = {
|
|||
|
|
type: parseInt(layero.find('select[name="type"]').val()) || 1,
|
|||
|
|
fishNumber: layero.find('input[name="fishNumber"]').val(),
|
|||
|
|
fishWeight: parseInt(layero.find('input[name="fishWeight"]').val()) || 0,
|
|||
|
|
fishFrequency: parseInt(layero.find('input[name="fishFrequency"]').val()) || 0,
|
|||
|
|
maxCount: parseInt(layero.find('input[name="maxCount"]').val()) || 0,
|
|||
|
|
times: parseInt(layero.find('input[name="times"]').val()) || 0
|
|||
|
|
};
|
|||
|
|
|
|||
|
|
if (isLevel) {
|
|||
|
|
updatedItem.roomLevel = parseInt(layero.find('select[name="roomLevel"]').val()) || 0;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
callback(updatedItem);
|
|||
|
|
layer.close(index);
|
|||
|
|
}
|
|||
|
|
});
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
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>
|
|||
|
|
|
|||
|
|
<script type="text/html" id="table-normal-operate">
|
|||
|
|
<a class="layui-btn layui-btn-xs" lay-event="edit"><i class="layui-icon layui-icon-edit"></i>编辑</a>
|
|||
|
|
</script>
|
|||
|
|
|
|||
|
|
<script type="text/html" id="table-level-operate">
|
|||
|
|
<a class="layui-btn layui-btn-xs" lay-event="edit"><i class="layui-icon layui-icon-edit"></i>编辑</a>
|
|||
|
|
</script>
|