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

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>