2025-03-28 17:51:34 +08:00

302 lines
11 KiB
Cheetah
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

{{template "header"}}
<script type="text/html" id="toolbar">
{{ genBtn .AuthorizeMenus "add" "refresh" "rebuild_parent_path"}}
<button type="button" lay-event="search" lay-on="search" class="layui-btn layui-btn-primary layui-btn-sm">
<i class="layui-icon layui-icon-search"></i>
</button>
</script>
<script type="text/html" id="actionBox">
{{ genLink .AuthorizeMenus "add_children" "edit"}}
</script>
<div class="search-layer" id="search-layer" style="display: none;">
<input type="hidden" id="parentId" name="parentId" value="0" />
<div class="layui-form layui-row">
<div class="layui-col-xs12 layui-col-sm12 layui-col-md4">
<div class="layui-form-column">
<label class="tips">状态</label>
<select id="status">
<option value="0">正常</option>
<option value="-1">删除</option>
<option value="9999">全部</option>
</select>
</div>
</div>
<div class="layui-col-xs12 layui-col-sm12 layui-col-md4">
<div class="layui-form-column">
<label class="tips">编号</label>
<input type="text" id="id" placeholder="请输入编号" class="layui-input">
</div>
</div>
<div class="layui-col-xs12 layui-col-sm12 layui-col-md4">
<div class="layui-form-column">
<label class="tips">标题</label>
<input type="text" id="name" placeholder="请输入标题" class="layui-input">
</div>
</div>
</div>
</div>
<div class="layui-row h-all">
<div class="layui-col-md2 h-all">
<div class="own-left-pannel">
<div id="departmentTree" class="own-tree"></div>
</div>
</div>
<div class="layui-col-md10">
<div class="own-pannel">
<table id="tablelist" lay-filter="tablelist"></table>
</div>
</div>
</div>
{{define "css"}}
<style>
.layui-table-view {
border: 0 !important;
}
</style>
{{end}}
{{define "js"}}
<script>
layui.use(['jquery', 'table', 'form', 'tree', 'util'], function () {
let $ = layui.jquery;
let table = layui.table;
let form = layui.form;
let tree = layui.tree;
let util = layui.util;
getDepartmentTree();
// 加载列表
table.render({
elem: '#tablelist',
url: '/system/department/list',
method: 'post',
headers: { 'X-CSRF-Token': $('#csrf_token').val() },
where: getQueryParams(),
height: function () {
return $(window).height() - 22;
},
page: true,
limit: 15,
limits: [15, 30, 45, 60, 75, 90],
cols: [[
{ field: 'id', title: '编号', width: 60, fixed: 'left' },
{ field: 'name', title: '名称', width: 240, fixed: 'left' },
{
field: 'status', title: '状态', width: 60, align: 'center', templet: function (d) {
if (d.id === 0) { return ''; }
switch (d.status) {
case 0: return '<span style="color: green">正常</span>';
case -1: return '<span style="color: red">删除</span>';
default: return '其它';
}
return '';
}
},
{ field: 'created_at', title: '创建时间', width: 160, align: 'center', templet: function (d) { return (!d.created_at || d.id === 0) ? '' : util.toDateString(d.created_at) } },
{ field: 'updated_at', title: '更新时间', width: 160, align: 'center', templet: function (d) { return !d.updated_at ? '' : util.toDateString(d.updated_at) } },
{ title: '操作', toolbar: '#actionBox', align: 'center', width: 200, fixed: 'right' },
]],
skin: 'grid',
toolbar: '#toolbar',
defaultToolbar: [{
title: '刷新',
layEvent: 'refresh',
icon: 'layui-icon-refresh',
}, 'filter', 'exports'],
request: {
pageName: 'page',
limitName: 'rows'
}
});
// 工具栏
table.on('toolbar(tablelist)', function (obj) {
switch (obj.event) {
case 'add': add(); break;
case 'refresh': refresh(); break;
case 'rebuild_parent_path': rebuildParentPath(); break;
case 'search': search(); break;
}
});
function add() {
layer.open({
type: 2,
title: '新增部门',
shade: 0.1,
area: ['99%', '98%'],
content: "/system/department/add"
});
}
function refresh() {
layer.confirm('确定要刷新部门数据吗?', { title: '提示' }, function (index, layero) {
$.ajax({
url: '/system/department/refresh',
type: 'post',
headers: { 'X-CSRF-Token': $('#csrf_token').val() },
dataType: 'json',
success: function (result) {
if (result.success) {
layer.msg(result.msg, { icon: 1, time: 2000 });
search_btn();
} else {
layer.msg(result.msg, { icon: 2 })
}
}
});
layer.close(index); // 关闭弹窗
}, function (index, layero) {
layer.close(index); // 关闭弹窗
});
}
function rebuildParentPath() {
layer.confirm('确定要重建父路径吗?', { title: '提示' }, function (index, layero) {
$.ajax({
url: '/system/department/rebuild_parent_path',
type: 'post',
headers: { 'X-CSRF-Token': $('#csrf_token').val() },
dataType: 'json',
success: function (result) {
if (result.success) {
layer.msg(result.msg, { icon: 1, time: 2000 });
search_btn();
} else {
layer.msg(result.msg, { icon: 2 })
}
}
});
layer.close(index); // 关闭弹窗
}, function (index, layero) {
layer.close(index); // 关闭弹窗
});
}
function search() {
layer.open({
type: 1,
offset: '20px',
title: '搜索',
content: $('#search-layer'), // 捕获的元素
shade: 0.1,
shadeClose: false,
scrollbar: false,
resize: false,
move: false,
skin: 'search-layer-open',
area: ['50%', '350px'],
btn: ['搜索', '重置'],
btn1: function (index, layero) {
search_btn();
layer.close(index);
},
btn2: function (index, layero) {
$('#status').val(0);
$('#id').val('');
$('#name').val('');
$('#parentId').val(0);
form.render('select');
return false;
}
});
}
// 表格项操作按钮
table.on('tool(tablelist)', function (obj) {
switch (obj.event) {
case 'add_children': addChildren(obj); break;
case 'edit': edit(obj); break;
}
});
function addChildren(obj) {
layer.open({
type: 2,
title: '为 ' + obj.data['Name'] + ' 新增子级',
shade: 0.1,
area: ['99%', '98%'],
content: "/system/department/add_children?parentID=" + obj.data['id']
});
}
function edit(obj) {
layer.open({
type: 2,
title: '修改',
shade: 0.1,
area: ['99%', '98%'],
content: "/system/department/edit?id=" + obj.data['id']
});
}
// 搜索条件
function getQueryParams() {
return {
status: $('#status').val(),
name: $('#name').val(),
id: $('#id').val(),
parentId: $('#parentId').val()
};
}
// 搜索
function search_btn() {
table.reload('tablelist', {
where: getQueryParams(),
page: {
curr: 1
}
})
}
form.on('submit(btn-query)', function (data) {
table.reload('tablelist', {
where: getQueryParams(),
page: {
curr: 1
}
})
return false;
});
function getDepartmentTree() {
$.ajax({
url: "/system/department/tree",
type: 'post',
dataType: 'json',
headers: { 'X-CSRF-Token': $('#csrf_token').val() },
success: function (res) {
tree.render({
elem: '#departmentTree',
data: res,
onlyIconControl: true, // 是否仅允许节点左侧图标控制展开收缩
showLine: true,
click: function (obj) {
// console.log(obj.data); // 得到当前点击的节点数据
// console.log(obj.state); // 得到当前节点的展开状态open、close、normal
// console.log(obj.elem); // 得到当前节点元素
// console.log(obj.data.children); // 当前节点下是否有子节点
$('#parentId').val(obj.data.id);
search_btn();
}
});
},
error: function (err) {
// 处理请求错误
console.log('请求出错:', err);
}
});
}
});
</script>
{{end}}
{{template "footer" .}}