180 lines
9.1 KiB
HTML
180 lines
9.1 KiB
HTML
<title>Boss道具掉落配置</title>
|
|
|
|
<div class="layui-card layadmin-header">
|
|
<div class="layui-breadcrumb" lay-filter="breadcrumb">
|
|
<a lay-href="">主页</a>
|
|
<a><cite>游戏管理</cite></a>
|
|
<a><cite>Boss道具掉落配置</cite></a>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="layui-fluid">
|
|
<div class="layui-card">
|
|
<div class="layui-card-header">
|
|
<div class="layui-btn-container">
|
|
<button class="layui-btn layui-btn-sm layui-btn-normal" lay-filter="init-bossdrop"><i class="layui-icon layui-icon-refresh"></i> 初始化配置</button>
|
|
<button class="layui-btn layui-btn-sm" lay-filter="save-bossdrop"><i class="layui-icon layui-icon-ok"></i> 保存配置</button>
|
|
<button class="layui-btn layui-btn-sm layui-btn-warm" lay-filter="reload-bossdrop"><i class="layui-icon layui-icon-refresh"></i> 刷新</button>
|
|
<button class="layui-btn layui-btn-sm layui-btn-normal" onclick="saveSection('BossDropConfig')"><i class="layui-icon layui-icon-export"></i> 保存到初始化文件</button>
|
|
</div>
|
|
</div>
|
|
<div class="layui-card-body">
|
|
<form class="layui-form" lay-filter="bd-form">
|
|
<div class="layui-form-item">
|
|
<label class="layui-form-label">不掉落权重</label>
|
|
<div class="layui-input-inline" style="width:200px;">
|
|
<input type="number" name="noDropWeight" class="layui-input" placeholder="不掉落权重(值越大越难掉落)">
|
|
</div>
|
|
<div class="layui-form-mid layui-word-aux">总权重 = 不掉落权重 + 各掉落项权重之和</div>
|
|
</div>
|
|
<div class="layui-form-item">
|
|
<div class="layui-input-block">
|
|
<button class="layui-btn" lay-submit lay-filter="save-base">保存基础配置</button>
|
|
</div>
|
|
</div>
|
|
</form>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="layui-card">
|
|
<div class="layui-card-header">掉落道具列表(所有Boss通用)</div>
|
|
<div class="layui-card-body">
|
|
<div class="layui-btn-container" style="margin-bottom:10px;">
|
|
<button class="layui-btn layui-btn-sm" lay-filter="add-item"><i class="layui-icon layui-icon-add-1"></i> 添加掉落项</button>
|
|
<button class="layui-btn layui-btn-sm" lay-filter="save-items"><i class="layui-icon layui-icon-ok"></i> 保存</button>
|
|
</div>
|
|
<table id="table-items" lay-filter="table-items"></table>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<script type="text/html" id="bar-item">
|
|
<a class="layui-btn layui-btn-xs" lay-event="edit"><i class="layui-icon layui-icon-edit"></i>编辑</a>
|
|
<a class="layui-btn layui-btn-danger layui-btn-xs" lay-event="del"><i class="layui-icon layui-icon-delete"></i>删除</a>
|
|
</script>
|
|
|
|
<script>
|
|
layui.use(['admin', 'table', 'form', 'layer'], function () {
|
|
var $ = layui.$, admin = layui.admin, table = layui.table, form = layui.form, layer = layui.layer, setter = layui.setter;
|
|
var gameConfig = null, propList = [];
|
|
|
|
setTimeout(function() { $('.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;
|
|
if (!gameConfig.bossDropConfig) gameConfig.bossDropConfig = { noDropWeight: 5000, dropItems: [] };
|
|
propList = (gameConfig.propConfig || []).filter(function(p){ return p.isSale; }).map(function(p){ return { number: p.number, name: p.name }; });
|
|
initForm();
|
|
renderTable();
|
|
}
|
|
}
|
|
});
|
|
}
|
|
|
|
function bd() { return gameConfig.bossDropConfig; }
|
|
|
|
function initForm() {
|
|
var cfg = bd();
|
|
$('input[name="noDropWeight"]').val(cfg.noDropWeight || 5000);
|
|
form.render();
|
|
}
|
|
|
|
function saveBase() {
|
|
var cfg = bd();
|
|
cfg.noDropWeight = parseInt($('input[name="noDropWeight"]').val()) || 5000;
|
|
save();
|
|
}
|
|
|
|
function save() {
|
|
admin.req({
|
|
method: "post", contentType: "application/json;charset=UTF-8",
|
|
url: setter.baseurl + "adminapi/GameConfig/UpdateBossDrop",
|
|
data: JSON.stringify(bd()),
|
|
done: function (r) {
|
|
r.code === 0 ? (layer.msg('保存成功'), loadConfig()) : layer.msg(r.info || '保存失败');
|
|
}
|
|
});
|
|
}
|
|
|
|
function renderTable() {
|
|
var items = bd().dropItems || [];
|
|
table.render({ elem: '#table-items', data: items, page: false,
|
|
cols: [[
|
|
{ type: 'numbers', title: '序号', width: 60 },
|
|
{ field: 'propName', title: '道具名称', width: 150 },
|
|
{ field: 'count', title: '数量', width: 80 },
|
|
{ field: 'weight', title: '权重', width: 80 },
|
|
{ title: '操作', width: 160, fixed: 'right', toolbar: '#bar-item' }
|
|
]]
|
|
});
|
|
}
|
|
|
|
form.on('submit(save-base)', function() { saveBase(); return false; });
|
|
|
|
function showItemEdit(data, idx) {
|
|
var items = bd().dropItems || [];
|
|
var opts = '<option value="">请选择道具</option>';
|
|
(gameConfig.propConfig || []).forEach(function(p) { opts += '<option value="'+p.number+'"'+(p.number===data.propNumber?' selected':'')+'>'+p.number+' - '+p.name+'</option>'; });
|
|
var html = '<div style="padding:20px;"><form class="layui-form">' +
|
|
'<div class="layui-form-item"><label class="layui-form-label">道具</label><div class="layui-input-block"><select id="dlg-prop" lay-search>'+opts+'</select></div></div>' +
|
|
'<div class="layui-form-item"><label class="layui-form-label">数量</label><div class="layui-input-block"><input type="number" id="dlg-count" value="'+(data.count||1)+'" class="layui-input"></div></div>' +
|
|
'<div class="layui-form-item"><label class="layui-form-label">权重</label><div class="layui-input-block"><input type="number" id="dlg-weight" value="'+(data.weight||100)+'" class="layui-input"></div></div>' +
|
|
'</form></div>';
|
|
layer.open({ type:1, title: idx < 0 ? '添加掉落项' : '编辑掉落项', area:['420px','320px'], content:html, btn:['保存','取消'],
|
|
success:function(l){ form.render('select'); },
|
|
yes:function(i,l){
|
|
var item = {
|
|
propNumber: l.find('#dlg-prop').val() || '',
|
|
propName: l.find('#dlg-prop option:selected').text().replace(/^[^-]+ - /, ''),
|
|
count: parseInt(l.find('#dlg-count').val()) || 1,
|
|
weight: parseInt(l.find('#dlg-weight').val()) || 0
|
|
};
|
|
if (idx < 0) items.push(item); else items[idx] = item;
|
|
layer.close(i); renderTable(); save();
|
|
}
|
|
});
|
|
}
|
|
|
|
$(document).on('click', '[lay-filter="add-item"]', function() { showItemEdit({ propNumber:'', propName:'', count:1, weight:100 }, -1); });
|
|
$(document).on('click', '[lay-filter="save-items"]', function() { save(); });
|
|
|
|
table.on('tool(table-items)', function(obj) {
|
|
var items = bd().dropItems || [];
|
|
if (obj.event === 'del') {
|
|
layer.confirm('确定删除?', function(i) { items.splice(items.indexOf(obj.data), 1); layer.close(i); renderTable(); save(); });
|
|
} else if (obj.event === 'edit') {
|
|
var idx = items.indexOf(obj.data);
|
|
showItemEdit(obj.data, idx);
|
|
}
|
|
});
|
|
|
|
$(document).on('click', '[lay-filter="init-bossdrop"]', function() {
|
|
layer.confirm('确定要从配置文件还原Boss掉落配置吗?', function(i) {
|
|
layer.close(i);
|
|
admin.req({
|
|
method: 'get',
|
|
url: setter.baseurl + 'adminapi/GameConfig/InitSection/BossDropConfig',
|
|
done: function(r) {
|
|
if (r.code === 0 || r.code === 200) {
|
|
layer.msg('初始化成功');
|
|
loadConfig();
|
|
} else {
|
|
layer.msg(r.info || '初始化失败');
|
|
}
|
|
}
|
|
});
|
|
});
|
|
});
|
|
|
|
$(document).on('click', '[lay-filter="reload-bossdrop"]', 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>
|