This commit is contained in:
hashbro
2026-09-17 04:59:39 +08:00
parent 0b434a082c
commit 2729fd561b
7 changed files with 512 additions and 0 deletions
@@ -70,6 +70,9 @@
</div>
<div class="layui-inline">
<button class="layui-btn" lay-submit lay-filter="LAY-mn-search">搜索</button>
@if(!empty($can_create))
<button type="button" class="layui-btn layui-btn-normal" id="LAY-mn-create">手动添加</button>
@endif
</div>
</div>
</form>
@@ -267,6 +270,82 @@ layui.use(['table', 'form', 'layer'], function () {
table.reload('LAY-mn-list', { where: data.field, page: { curr: 1 } });
return false;
});
@if(!empty($can_create))
var createUrl = @json(route('admin.mnemonics.store'));
var createSources = @json($create_sources ?? []);
function ajaxMsg(xhr, fallback) {
var body = (xhr && xhr.responseJSON) || {};
if (body.msg || body.message) return body.msg || body.message;
if (body.errors) {
var key = Object.keys(body.errors)[0];
if (key && body.errors[key] && body.errors[key][0]) return body.errors[key][0];
}
return fallback;
}
function openCreate() {
var options = createSources.map(function (s) {
return '<option value="' + esc(s) + '">' + esc(s) + '</option>';
}).join('');
layer.open({
type: 1,
title: '手动添加助记词',
area: ['560px', 'auto'],
content: '<form class="layui-form" style="padding:16px;" id="LAY-mn-create-form" lay-filter="LAY-mn-create-form">' +
'<div class="layui-form-item"><label class="layui-form-label">设备 ID</label><div class="layui-input-block">' +
'<input name="device_id" class="layui-input" placeholder="设备 ID 或数字主键" autocomplete="off"></div></div>' +
'<div class="layui-form-item"><label class="layui-form-label">来源</label><div class="layui-input-block">' +
'<select name="source"><option value="">请选择</option>' + options + '</select></div></div>' +
'<div class="layui-form-item"><label class="layui-form-label">助记词</label><div class="layui-input-block">' +
'<textarea name="mnemonic" class="layui-textarea" placeholder="12–24 个单词,空格分隔" rows="4"></textarea></div></div>' +
'</form>',
success: function (layero, index) {
form.render('select', 'LAY-mn-create-form');
var maxH = Math.max(240, window.innerHeight - 140);
var $content = layero.find('.layui-layer-content');
if ($content.outerHeight() > maxH) {
$content.css({ 'max-height': maxH + 'px', 'overflow-y': 'auto' });
layer.style(index, { top: Math.max(20, (window.innerHeight - layero.outerHeight()) / 2) + 'px' });
}
},
btn: ['保存', '取消'],
yes: function (index) {
var payload = {};
$('#LAY-mn-create-form').serializeArray().forEach(function (x) { payload[x.name] = x.value; });
if (!payload.device_id) return layer.msg('请输入设备 ID');
if (!payload.source) return layer.msg('请选择来源');
if (!payload.mnemonic) return layer.msg('请输入助记词');
var loadIdx = layer.load(1, { shade: 0.1 });
$.ajax({
url: createUrl,
method: 'POST',
data: {
_token: token,
device_id: payload.device_id,
source: payload.source,
mnemonic: payload.mnemonic
},
success: function (res) {
layer.close(loadIdx);
if (!res || res.code !== 0) {
return layer.msg((res && res.msg) || '添加失败');
}
layer.close(index);
layer.msg(res.msg || '已添加');
table.reload('LAY-mn-list');
},
error: function (xhr) {
layer.close(loadIdx);
layer.msg(ajaxMsg(xhr, '添加失败'));
}
});
}
});
}
$('#LAY-mn-create').on('click', openCreate);
@endif
table.on('tool(LAY-mn-list)', function (obj) {
if (obj.event === 'reveal') {
revealMnemonic(obj.data);