mirror of https://github.com/1099438829/apeblog
247 lines
10 KiB
HTML
247 lines
10 KiB
HTML
<!DOCTYPE html>
|
|
<html lang="zh">
|
|
<head>
|
|
<title>分类管理- {:system_config('title')}后台管理系统</title>
|
|
{include file="public/header" /}
|
|
</head>
|
|
|
|
<body>
|
|
<div class="container-fluid p-t-15">
|
|
<div class="row">
|
|
<div class="col-lg-12">
|
|
<div class="card">
|
|
<div class="card-header"><h4>搜索</h4></div>
|
|
<div class="card-body">
|
|
<form class="form-inline searchForm" onsubmit="return false;">
|
|
<div class="form-group">
|
|
<label for="title">分类名称</label>
|
|
<div class="input-group">
|
|
<div class="input-group">
|
|
<input type="text" class="form-control" id="title" value="" name="title"
|
|
placeholder="请输入分类名称或者ID">
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="form-group">
|
|
<label for="status">状态</label>
|
|
<select name="status" id="status" class="form-control">
|
|
<option value="">所有</option>
|
|
<option value="1">启用</option>
|
|
<option value="0">禁用</option>
|
|
</select>
|
|
</div>
|
|
<button type="submit" class="btn btn-success" style="margin: -10px 0 0 10px;" id="search">搜索
|
|
</button>
|
|
</form>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="col-lg-12">
|
|
<div class="card">
|
|
<div class="card-header">
|
|
<h4>分类管理</h4>
|
|
</div>
|
|
<div class="card-body">
|
|
<div id="toolbar2" class="toolbar-btn-action">
|
|
<a type="button" href="/admin/category/add" class="btn btn-primary m-r-5"><span
|
|
class="mdi mdi-plus" aria-hidden="true"></span>新增</a>
|
|
</div>
|
|
<table id="tree-table"></table>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
{include file="public/footer"/}
|
|
<!--以下是tree-grid的使用示例-->
|
|
<link href="__ADMIN_PATH__js/jquery-treegrid/jquery.treegrid.min.css" rel="stylesheet">
|
|
<script type="text/javascript" src="__ADMIN_PATH__js/jquery-treegrid/jquery.treegrid.min.js"></script>
|
|
<script type="text/javascript"
|
|
src="__ADMIN_PATH__js/bootstrap-table/extensions/treegrid/bootstrap-table-treegrid.min.js"></script>
|
|
<script type="text/javascript">
|
|
// tree-grid使用
|
|
var $treeTable = $('#tree-table');
|
|
$treeTable.bootstrapTable({
|
|
url: '/admin/category/lst',
|
|
method: 'post',
|
|
responseHandler: function (res) {
|
|
return {
|
|
"rows": res.data,
|
|
};
|
|
},
|
|
queryParams: function (params) {
|
|
var temp = toArrayList($(".searchForm").serializeArray());
|
|
return temp;
|
|
},
|
|
idField: 'id',
|
|
uniqueId: 'id',
|
|
dataType: 'json',
|
|
toolbar: '#toolbar2',
|
|
showColumns: true, // 是否显示所有的列
|
|
showRefresh: true, // 是否显示刷新按钮
|
|
columns: [
|
|
{
|
|
field: 'id',
|
|
title: 'ID',
|
|
},
|
|
{
|
|
field: 'title',
|
|
title: '名称',
|
|
},
|
|
{
|
|
field: 'status',
|
|
title: '是否可见',
|
|
formatter: function (value, row, index) {
|
|
if (value == 0) {
|
|
is_checked = '';
|
|
} else if (value == 1) {
|
|
is_checked = 'checked="checked"';
|
|
}
|
|
var field = "status";
|
|
result = '<label class="lyear-switch switch-primary switch-solid lyear-status"><input type="checkbox" ' + is_checked + '><span onClick="updateStatus(' + row.id + ', ' + value + ', \'' + field + '\')"></span></label>';
|
|
return result;
|
|
},
|
|
},
|
|
{
|
|
field: 'sort',
|
|
title: '排序',
|
|
sortable: true,
|
|
},
|
|
{
|
|
field: 'operate',
|
|
title: '操作',
|
|
align: 'center',
|
|
events: {
|
|
'click .category-add': function (e, value, row, index) {
|
|
location.href = '/admin/category/add?pid=' + row.id;
|
|
},
|
|
'click .article-add': function (e, value, row, index) {
|
|
location.href = '/admin/article/add?category_id=' + row.id;
|
|
},
|
|
'click .category-delete': function (e, value, row, index) {
|
|
$.alert({
|
|
title: '系统提示',
|
|
content: '删除提醒',
|
|
buttons: {
|
|
confirm: {
|
|
text: '确认',
|
|
btnClass: 'btn-primary',
|
|
action: function () {
|
|
$.post(url = "/admin/category/del", data = {"id": row.id}, function (res) {
|
|
if (res.code == 200) {
|
|
parent.lightyear.notify('删除成功', 'success', 3000, 'mdi mdi-emoticon-happy', 'top', 'center');
|
|
$("#tree-table").bootstrapTable('refresh');
|
|
} else parent.lightyear.notify('删除失败', 'danger', 3000, 'mdi mdi-emoticon-happy', 'top', 'center');
|
|
});
|
|
}
|
|
},
|
|
cancel: {
|
|
text: '取消'
|
|
}
|
|
}
|
|
});
|
|
},
|
|
'click .category-edit': function (e, value, row, index) {
|
|
location.href = '/admin/category/edit?id=' + row.id;
|
|
}
|
|
},
|
|
formatter: operateFormatter
|
|
}
|
|
],
|
|
treeShowField: 'title',
|
|
parentIdField: 'pid',
|
|
|
|
onResetView: function (data) {
|
|
$treeTable.treegrid({
|
|
initialState: 'collapsed', // 所有节点都折叠
|
|
treeColumn: 1,
|
|
//expanderExpandedClass: 'mdi mdi-folder-open', // 可自定义图标样式
|
|
//expanderCollapsedClass: 'mdi mdi-folder',
|
|
onChange: function () {
|
|
$treeTable.bootstrapTable('resetWidth');
|
|
}
|
|
});
|
|
|
|
// 只展开树形的第一集节点
|
|
$treeTable.treegrid('getRootNodes').treegrid('expand');
|
|
},
|
|
onCheck: function (row) {
|
|
var datas = $treeTable.bootstrapTable('getData');
|
|
|
|
selectChilds(datas, row, 'id', 'pid', true); // 选择子类
|
|
|
|
selectParentChecked(datas, row, 'id', 'pid'); // 选择父类
|
|
|
|
$treeTable.bootstrapTable('load', datas);
|
|
},
|
|
|
|
onUncheck: function (row) {
|
|
var datas = $treeTable.bootstrapTable('getData');
|
|
selectChilds(datas, row, 'id', 'pid', false);
|
|
$treeTable.bootstrapTable('load', datas);
|
|
},
|
|
});
|
|
|
|
// 操作按钮
|
|
function operateFormatter(value, row, index) {
|
|
return [
|
|
'<a type="button" class="category-add btn btn-xs btn-default m-r-5" title="添加子分类" data-toggle="tooltip"><i class="mdi mdi-plus"></i></a>',
|
|
'<a type="button" class="category-edit btn btn-xs btn-default m-r-5" title="编辑" data-toggle="tooltip"><i class="mdi mdi-pencil"></i></a>',
|
|
'<a type="button" class="category-delete btn btn-xs btn-default" title="删除" data-toggle="tooltip"><i class="mdi mdi-delete"></i></a>',
|
|
'<a type="button" class="article-add btn btn-xs btn-default m-r-5" title="添加文章" data-toggle="tooltip"><i class="mdi mdi-pencil-box"></i></a>',
|
|
].join('');
|
|
}
|
|
|
|
/**
|
|
* 选中父项时,同时选中子项
|
|
* @param datas 所有的数据
|
|
* @param row 当前数据
|
|
* @param id id 字段名
|
|
* @param pid 父id字段名
|
|
*/
|
|
function selectChilds(datas, row, id, pid, checked) {
|
|
for (var i in datas) {
|
|
if (datas[i][pid] == row[id]) {
|
|
datas[i].check = checked;
|
|
selectChilds(datas, datas[i], id, pid, checked);
|
|
}
|
|
;
|
|
}
|
|
}
|
|
|
|
function selectParentChecked(datas, row, id, pid) {
|
|
for (var i in datas) {
|
|
if (datas[i][id] == row[pid]) {
|
|
datas[i].check = true;
|
|
selectParentChecked(datas, datas[i], id, pid);
|
|
}
|
|
;
|
|
}
|
|
}
|
|
|
|
function updateStatus(id, value, field) {
|
|
var newstate = (value == 1) ? 0 : 1; // 发送参数值跟当前参数值相反
|
|
$.ajax({
|
|
type: "post",
|
|
url: "/admin/category/field?id=" + id,
|
|
data: {field: field, value: newstate},
|
|
dataType: 'json',
|
|
success: function (res) {
|
|
if (res.code == 200) {
|
|
parent.lightyear.notify('修改成功', 'success', 3000, 'mdi mdi-emoticon-happy', 'top', 'center');
|
|
$("#tree-table").bootstrapTable('refresh');
|
|
} else parent.lightyear.notify('修改失败', 'danger', 3000, 'mdi mdi-emoticon-happy', 'top', 'center');
|
|
},
|
|
error: function () {
|
|
parent.lightyear.notify('修改失败', 'danger', 3000, 'mdi mdi-emoticon-happy', 'top', 'center');
|
|
}
|
|
});
|
|
}
|
|
|
|
$("#search").click(function () {
|
|
$treeTable.bootstrapTable('refresh', {});
|
|
});
|
|
</script>
|
|
</body>
|
|
</html> |