185 lines
5.4 KiB
PHP
185 lines
5.4 KiB
PHP
{include file="public/header" /}
|
|
<form class="layui-form">
|
|
<input type="hidden" name="smid" value="{$lists.smid}">
|
|
<div class="layui-form-item">
|
|
<label class="layui-form-label">菜单名</label>
|
|
<div class="layui-input-block">
|
|
<input type="text" class="layui-input" name="label" placeholder="请输入菜单名" value="{$lists['label']}">
|
|
</div>
|
|
</div>
|
|
<div class="layui-form-item">
|
|
<label class="layui-form-label">图标</label>
|
|
<div class="layui-input-block" style="position:relative;">
|
|
<input type="text" readonly class="layui-input" name="icon_class" id="icon_class_input"
|
|
value="{$lists['icon_class']|default=''}" placeholder="请选择图标" autocomplete="off"
|
|
style="background:#fff;cursor:pointer;">
|
|
<div class="icon-dropdown" id="iconDropdown"
|
|
style="display:none;position:absolute;z-index:9999;width:400px;max-height:320px;overflow:auto;background:#fff;border:1px solid #eee;border-radius:6px;box-shadow:0 2px 8px rgba(0,0,0,0.08);padding:12px;">
|
|
<input type="text" class="layui-input" id="iconSearchInput" placeholder="搜索图标名称或class"
|
|
style="margin-bottom:10px;">
|
|
<div class="icon-card-list">
|
|
{foreach $iconfont as $icon_v}
|
|
<div class="icon-card{if($icon_v['icon_css'] == $lists['icon_class'])} selected{/if}"
|
|
data-icon="{$icon_v['icon_css']}" data-name="{$icon_v['icon_name']}"
|
|
data-css="{$icon_v['icon_css']}">
|
|
<i class="layui-icon {$icon_v['icon_css']}" style="font-size:24px;"></i>
|
|
<div class="icon-name">{$icon_v['icon_name']}</div>
|
|
</div>
|
|
{/foreach}
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="layui-form-item">
|
|
<label class="layui-form-label">排序</label>
|
|
<div class="layui-input-block">
|
|
<input type="number" class="layui-input" name="sort" placeholder="值越大越靠前" value="{$lists['sort']}">
|
|
</div>
|
|
</div>
|
|
<div class="layui-form-item">
|
|
<label class="layui-form-label">状态</label>
|
|
<div class="layui-input-block">
|
|
<input type="radio" name="status" value="1" title="开启" {$lists['status']==1?'checked':''}>
|
|
<input type="radio" name="status" value="0" title="禁用" {$lists['status']==0?'checked':''}>
|
|
</div>
|
|
</div>
|
|
</form>
|
|
<div class="layui-form-item" style="margin-top:10px;">
|
|
<div class="layui-input-block">
|
|
<button type="button" class="layui-btn" onclick="save()">保存</button>
|
|
</div>
|
|
</div>
|
|
<script>
|
|
layui.use(['form', 'jquery', 'layer'], function () {
|
|
var $ = layui.jquery;
|
|
var form = layui.form;
|
|
var layer = layui.layer;
|
|
var $input = $('#icon_class_input');
|
|
var $dropdown = $('#iconDropdown');
|
|
var $search = $('#iconSearchInput');
|
|
var $cards = $dropdown.find('.icon-card');
|
|
// 显示下拉
|
|
$input.on('focus click', function (e) {
|
|
var offset = $input.offset();
|
|
$dropdown.css({
|
|
left: '-15px',
|
|
top: '40px',
|
|
display: 'block'
|
|
});
|
|
$search.val('').trigger('input');
|
|
});
|
|
// 选中卡片
|
|
$dropdown.on('click', '.icon-card', function () {
|
|
$cards.removeClass('selected');
|
|
$(this).addClass('selected');
|
|
$input.val($(this).data('icon'));
|
|
$dropdown.hide();
|
|
});
|
|
// 搜索
|
|
$search.on('input', function () {
|
|
var val = $(this).val().toLowerCase();
|
|
$cards.each(function () {
|
|
var name = $(this).data('name').toLowerCase();
|
|
var css = $(this).data('css').toLowerCase();
|
|
if (name.indexOf(val) !== -1 || css.indexOf(val) !== -1) {
|
|
$(this).show();
|
|
} else {
|
|
$(this).hide();
|
|
}
|
|
});
|
|
});
|
|
// 点击外部关闭
|
|
$(document).on('mousedown', function (e) {
|
|
if (!$(e.target).closest('.icon-dropdown').length && !$(e.target).is($input)) {
|
|
$dropdown.hide();
|
|
}
|
|
});
|
|
// 回显
|
|
var selected = $input.val();
|
|
if (selected) {
|
|
$cards.each(function () {
|
|
if ($(this).data('icon') == selected) {
|
|
$(this).addClass('selected');
|
|
}
|
|
});
|
|
}
|
|
//保存
|
|
window.save = function () {
|
|
var data = {};
|
|
// 获取表单数据
|
|
data.smid = $('input[name="smid"]').val();
|
|
data.label = $('input[name="label"]').val();
|
|
data.icon_class = $('input[name="icon_class"]').val();
|
|
data.sort = $('input[name="sort"]').val();
|
|
data.status = $('input[name="status"]:checked').val();
|
|
|
|
// 简单校验
|
|
if (!data.label) {
|
|
layer.msg('菜单名不能为空', { icon: 2 });
|
|
return;
|
|
}
|
|
|
|
$.post(
|
|
'{$config["admin_route"]}yunzer/menuedit',
|
|
data,
|
|
function (res) {
|
|
if (res.code == 0) {
|
|
layer.msg(res.msg, { icon: 1 });
|
|
// 1秒后关闭弹窗并刷新父页面
|
|
setTimeout(function () {
|
|
var index = parent.layer.getFrameIndex(window.name);
|
|
parent.layer.close(index);
|
|
parent.location.reload();
|
|
}, 1000);
|
|
} else {
|
|
layer.alert(res.msg, { icon: 2 });
|
|
}
|
|
},
|
|
'json'
|
|
);
|
|
}
|
|
});
|
|
</script>
|
|
<style>
|
|
.icon-card-list {
|
|
display: flex;
|
|
flex-wrap: wrap;
|
|
gap: 12px;
|
|
}
|
|
|
|
.icon-card {
|
|
display: flex;
|
|
flex-direction: column;
|
|
align-items: center;
|
|
justify-content: center;
|
|
width: 52px;
|
|
height: 52px;
|
|
border: 1px solid #eee;
|
|
border-radius: 6px;
|
|
cursor: pointer;
|
|
transition: border 0.2s, box-shadow 0.2s;
|
|
background: #fafbfc;
|
|
font-size: 12px;
|
|
color: #666;
|
|
position: relative;
|
|
}
|
|
|
|
.icon-card.selected {
|
|
border: 2px solid #409eff;
|
|
box-shadow: 0 2px 8px rgba(64, 158, 255, 0.10);
|
|
color: #409eff;
|
|
}
|
|
|
|
.icon-card .icon-name {
|
|
margin-top: 4px;
|
|
font-size: 9px;
|
|
text-align: center;
|
|
word-break: break-all;
|
|
}
|
|
|
|
.icon-dropdown {
|
|
min-width: 320px;
|
|
max-width: 600px;
|
|
}
|
|
</style>
|
|
{include file="public/tail" /} |