修复资源分类pages

This commit is contained in:
李志强 2025-06-19 16:44:36 +08:00
parent c39d6cda3e
commit 8e96995e1c
2 changed files with 124 additions and 33 deletions

View File

@ -9,13 +9,25 @@
</div>
<div class="layui-form-item">
<label class="layui-form-label">图标</label>
<div class="layui-input-block">
<select name="icon_class" lay-verify="required" lay-search="">
<option value="">请输入layui图标</option>
{foreach($iconfont as $icon_v)}
<option value="{$icon_v['icon_css']}" {if($icon_v['icon_css'] == $lists['icon_class'])}selected{/if}>{$icon_v['icon_css']} {$icon_v['icon_name']}</option>
{/foreach}
</select>
<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">
@ -37,22 +49,100 @@
<button type="button" class="layui-btn" onclick="save()">保存</button>
</div>
</div>
<script type="text/javascript">
layui.use(['layer','form'],function(){
form = layui.form;
layer = layui.layer;
$ = layui.jquery;
});
function save(){
$.post('{$config["admin_route"]}yunzer/menuedit',$('form').serialize(),function(res){
if(res.code>0){
layer.msg(res.msg,{'icon':2});
}else{
layer.msg(res.msg,{'icon':1});
setTimeout(function(){parent.window.location.reload();},1000);
<script>
layui.use(['jquery'], function () {
var $ = layui.jquery;
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();
}
},'json');
}
});
// 回显
var selected = $input.val();
if (selected) {
$cards.each(function () {
if ($(this).data('icon') == selected) {
$(this).addClass('selected');
}
});
}
});
</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" /}

View File

@ -38,7 +38,7 @@ class ResourcesController extends BaseController
->where('status', 1)
->order('sort', 'asc')
->select();
// 获取每个顶级分类下的子分类
$categories = [];
foreach ($parentCategories as $parent) {
@ -46,23 +46,23 @@ class ResourcesController extends BaseController
->where('status', 1)
->order('sort', 'asc')
->select();
// 获取每个子分类下的资源数量
foreach ($subCategories as &$subCategory) {
$subCategory['resource_count'] = Resources::where('cate', $subCategory->id)
->where('status', 1)
->count();
}
$categories[] = [
'parent' => $parent,
'subCategories' => $subCategories
];
}
// 将数据传递给视图
View::assign('categories', $categories);
return View::fetch();
}
@ -71,16 +71,16 @@ class ResourcesController extends BaseController
{
$cid = input('cid/d', 0);
$page = input('page/d', 1);
// 获取分类信息
$category = ResourcesCategory::where('id', $cid)
->where('status', 1)
->find();
if (!$category) {
$this->error('分类不存在');
}
// 获取该分类下的资源,带分页
$resources = Resources::where('cate', $cid)
->where('status', 1)
@ -90,11 +90,12 @@ class ResourcesController extends BaseController
'page' => $page,
'query' => Request::instance()->param()
]);
// 将数据传递给视图
View::assign('category', $category);
View::assign('data', $resources);
View::assign('page', $resources->render()); // 新增这一行
return View::fetch('list');
}