添加项目文件。

This commit is contained in:
2026-10-12 16:22:04 +08:00
parent 7c68a0ca0a
commit aad11be43d
1000 changed files with 120807 additions and 0 deletions
@@ -0,0 +1,143 @@
<div class="layui-form" lay-filter="layuiadmin-form-admin" style="padding: 20px 30px 0 0;">
<div class="layui-form-item">
<label class="layui-form-label">登录名</label>
<div class="layui-input-inline">
<script type="text/html" template>
<input type="text" name="id" value="{{ d.params.id}}" class="layui-input" style="display:none">
</script>
<script type="text/html" template>
<input type="text" name="userName" value="{{ d.params.userName || '' }}" lay-verify="required" placeholder="请输入用户名" autocomplete="off" class="layui-input">
</script>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">名称</label>
<div class="layui-input-inline">
<script type="text/html" template>
<input type="text" name="displayName" value="{{ d.params.displayName || '' }}" lay-verify="required" placeholder="请输入号码" autocomplete="off" class="layui-input">
</script>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">头像</label>
<div class="layui-input-inline">
<script type="text/html" template>
<button type="button" class="layui-btn" id="layuiadmin-upload-admin">
<i class="layui-icon layui-icon-upload"></i> 图片上传
</button>
<div style="width: 132px;">
<div class="layui-upload-list">
<img class="layui-upload-img" id="ID-upload-demo-img" src="{{ d.params.icon || '' }}" style="width: 100%; height: 92px;">
<div id="ID-upload-demo-text"></div>
<input type="text" name="icon" id="ID-upload-demo-img-v" value="{{ d.params.icon || '' }}" style="display:none"/>
</div>
<div class="layui-progress layui-progress-big" lay-showPercent="yes" lay-filter="filter-demo">
<div class="layui-progress-bar" lay-percent=""></div>
</div>
</div>
</script>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">密码</label>
<div class="layui-input-inline">
<script type="text/html" template>
<input type="text" name="password" value="" lay-verify="" placeholder="请输入密码" autocomplete="off" class="layui-input">
</script>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">角色</label>
<div class="layui-input-inline">
<select name="systemRole" id="systemRole">
</select>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label"></label>
<div class="layui-input-inline">
<input type="button" lay-submit lay-filter="LAY-user-back-submit" value="确认" class="layui-btn">
</div>
</div>
</div>
<script>
layui.use(['admin', 'form', 'upload'], function () {
var $ = layui.$
, form = layui.form
, admin = layui.admin
, setter = layui.setter
, upload = layui.upload
,element = layui.element;
bindSelect();
function bindSelect() {
admin.req({
method: "get",
contentType: "application/json;charset=UTF-8",
dataType: "json",
headers: {
'token': layui.data(setter.tableName)[setter.request.tokenName]
},
url: setter.baseurl + "adminapi/System/role/list",//实际使用请改成服务端真实接口
async: false,
done: function (res) {
res.data.forEach(function (option) {
$('#systemRole').append("<option value='" + option.id + "'>" + option.roleName + "</option>");
});
form.render('select');
}
})
}
var uploadInst = upload.render({
elem: '#layuiadmin-upload-admin',
url: setter.baseurl + "adminapi/ImageUpload/upload/temp",
before: function (obj) {
obj.preview(function (index, file, result) {
$('#ID-upload-demo-img').attr('src', result); // 图片链接(base64)
});
element.progress('filter-demo', '0%'); // 进度条复位
layer.msg('上传中', { icon: 16, time: 0 });
},
done: function (res) {
// 若上传失败
if (res.code > 0) {
return layer.msg('上传失败');
}
console.log($('#ID-upload-demo-img-v').val())
// 上传成功的一些操作
$('#ID-upload-demo-img-v').val(setter.baseurl +res.path);
$('#ID-upload-demo-text').html(res.path); // 置空上传失败的状态
},
error: function () {
// 演示失败状态,并实现重传
var demoText = $('#ID-upload-demo-text');
demoText.html('<span style="color: #FF5722;">上传失败</span> <a class="layui-btn layui-btn-xs demo-reload">重试</a>');
demoText.find('.demo-reload').on('click', function () {
uploadInst.upload();
});
},
// 进度条
progress: function (n, elem, e) {
element.progress('filter-demo', n + '%'); // 可配合 layui 进度条元素使用
if (n == 100) {
layer.msg('上传完毕', { icon: 1 });
}
}
});
})
</script>
@@ -0,0 +1,207 @@
<div class="layui-form" lay-filter="layuiadmin-form-admin" style="padding: 20px 30px 0 0;">
<script type="text/html" lay-done="sendParams(d.params)" template>
</script>
<div class="layui-form-item">
<label class="layui-form-label">标题</label>
<div class="layui-input-inline">
<script type="text/html" template>
<input type="text" name="id" value="{{ d.params.id}}" class="layui-input" style="display:none">
</script>
<script type="text/html" template>
<input type="text" name="title" value="{{ d.params.title || '' }}" lay-verify="required" placeholder="请输入标题" autocomplete="off" class="layui-input">
</script>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">图片</label>
<div class="layui-input-inline">
<script type="text/html" template>
<button type="button" class="layui-btn" id="layuiadmin-upload-admin">
<i class="layui-icon layui-icon-upload"></i> 图片上传
</button>
<div style="width: 132px;">
<div class="layui-upload-list">
<img class="layui-upload-img" id="ID-upload-demo-img" src="{{ d.params.picUrl || '' }}" style="width: 100%; height: 92px;">
<div id="ID-upload-demo-text"></div>
<input type="text" name="picUrl" id="ID-upload-demo-img-v" value="{{ d.params.picUrl || '' }}" style="display:none" />
</div>
<div class="layui-progress layui-progress-big" lay-showPercent="yes" lay-filter="filter-demo">
<div class="layui-progress-bar" lay-percent=""></div>
</div>
</div>
</script>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">跳转地址</label>
<div class="layui-input-inline">
<script type="text/html" template>
<input type="text" name="url" value="{{ d.params.url || '' }}" lay-verify="required" placeholder="请输入号码" autocomplete="off" class="layui-input">
</script>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">时长(秒)</label>
<div class="layui-input-inline">
<script type="text/html" template>
<input type="number" name="times" value="{{d.params.times||0}}" lay-verify="required" placeholder="时长(秒)" autocomplete="off" step="1" class="layui-input">
</script>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">位置</label>
<div class="layui-input-inline">
<div id="positionSelect"></div>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label"></label>
<div class="layui-input-inline">
<input type="button" lay-submit lay-filter="LAY-user-back-submit" value="确认" class="layui-btn">
</div>
</div>
</div>
<script src="/layui/xm-select.js"></script>
<script>
var position = '';
var isLayUI = false;
function sendParams(params) {
position = params.position;
if (isLayUI) {
layuiLoad();
}
}
layuiLoad();
function layuiLoad() {
layui.use(['admin', 'form', 'upload'], function () {
var $ = layui.$
, form = layui.form
, admin = layui.admin
, setter = layui.setter
, upload = layui.upload
, element = layui.element;
var selctdata = [];
admin.req({
method: "get",
contentType: "application/json;charset=UTF-8",
dataType: "json",
headers: {
'token': layui.data(setter.tableName)[setter.request.tokenName]
},
url: setter.baseurl + "adminapi/System/dic/list/code?code=bannerposition",//实际使用请改成服务端真实接口
async: false,
done: function (res) {
layui.each(res.data, function (index, val) {
selctdata.push({ name: val.name, value: val.id });
})
}
})
var positionSelect = xmSelect.render({
el: '#positionSelect',
toolbar: { show: true },
data: selctdata
})
positionSelect.setValue(position.map(item => ({
value: item.value,
name: item.title // 将name属性映射为title
})));
//监听提交
form.on('submit(LAY-user-back-submit)', function (data) {
var selectArr = positionSelect.getValue();
const newArr = selectArr.map(item => ({
value: item.value,
title: item.name // 将name属性映射为title
}));
var param = {
id: data.field.id,
title: data.field.title,
url: data.field.url,
times: data.field.times,
picUrl: data.field.picUrl,
position: newArr
};
//提交数据
admin.req({
method: "post",
contentType: "application/json;charset=UTF-8",
dataType: "json",
headers: {
'token': layui.data(setter.tableName)[setter.request.tokenName]
},
url: setter.baseurl + "adminapi/banner/" +(param.id==""?"add":"update"),//实际使用请改成服务端真实接口
async: false,
data: JSON.stringify(param),
done: function (res) {
//$.ajax({});
layui.table.reload('LAY-user-back-manage'); //重载表格
layer.closeAll(); //执行关闭
}
})
//提交 Ajax 成功后,关闭当前弹层并重载表格
});
var uploadInst = upload.render({
elem: '#layuiadmin-upload-admin',
url: setter.baseurl + "adminapi/ImageUpload/upload/temp",
before: function (obj) {
obj.preview(function (index, file, result) {
$('#ID-upload-demo-img').attr('src', result); // 图片链接(base64)
});
element.progress('filter-demo', '0%'); // 进度条复位
layer.msg('上传中', { icon: 16, time: 0 });
},
done: function (res) {
// 若上传失败
if (res.code > 0) {
return layer.msg('上传失败');
}
console.log($('#ID-upload-demo-img-v').val())
// 上传成功的一些操作
$('#ID-upload-demo-img-v').val(setter.baseurl + res.path);
$('#ID-upload-demo-text').html(res.path); // 置空上传失败的状态
},
error: function () {
// 演示失败状态,并实现重传
var demoText = $('#ID-upload-demo-text');
demoText.html('<span style="color: #FF5722;">上传失败</span> <a class="layui-btn layui-btn-xs demo-reload">重试</a>');
demoText.find('.demo-reload').on('click', function () {
uploadInst.upload();
});
},
// 进度条
progress: function (n, elem, e) {
element.progress('filter-demo', n + '%'); // 可配合 layui 进度条元素使用
if (n == 100) {
layer.msg('上传完毕', { icon: 1 });
}
}
});
})
}
</script>
@@ -0,0 +1,96 @@
<title>广告位</title>
<div class="layui-card layadmin-header">
<div class="layui-breadcrumb" lay-filter="breadcrumb">
<a lay-href="">主页</a>
<a><cite>广告位</cite></a>
</div>
</div>
<div class="layui-fluid">
<div class="layui-card">
<div class="layui-form layui-card-header layuiadmin-card-header-auto" lay-filter="layadmin-banneradmin-formlist">
<div class="layui-form-item">
<div class="layui-inline">
<label class="layui-form-label">标题</label>
<div class="layui-input-block">
<input type="text" name="keyWord" placeholder="请输入" autocomplete="off" class="layui-input">
</div>
</div>
<div class="layui-inline">
<button class="layui-btn layuiadmin-btn-banneradmin" lay-submit lay-filter="LAY-user-front-search">
<i class="layui-icon layui-icon-search layuiadmin-button-btn"></i>
</button>
</div>
</div>
</div>
<div class="layui-card-body">
<div style="padding-bottom: 10px;">
<button class="layui-btn layuiadmin-btn-admin" data-type="add">添加</button>
</div>
<table id="LAY-user-back-manage" lay-filter="LAY-user-back-manage"></table>
<script type="text/html" id="table-banneradmin-admin">
<a class="layui-btn layui-btn-normal layui-btn-xs" lay-event="edit"><i class="layui-icon layui-icon-edit"></i>编辑</a>
<a class="layui-btn layui-btn-danger layui-btn-xs" lay-event="del"><i class="layui-icon layui-icon-delete"></i>删除</a>
</script>
</div>
</div>
</div>
<script>
layui.use('banneradmin', layui.factory('banneradmin')).use(['admin', 'banneradmin', 'table'], function () {
var $ = layui.$
, admin = layui.admin
, view = layui.view
, table = layui.table
, setter = layui.setter
, form = layui.form;
form.render(null, 'layadmin-userfront-formlist');
//监听搜索
form.on('submit(LAY-user-front-search)', function (data) {
var field = data.field;
//执行重载
table.reload('LAY-user-back-manage', {
where: field
});
});
//事件
var active = {
add: function () {
admin.popup({
title: '添加广告位'
, area: ["500px", "600px"]
, id: 'LAY-popup-user-add'
, success: function (layero, index) {
view(this.id).render('user/administrators/bannerform').done(function () {
form.render(null, 'layuiadmin-form-admin');
});
}
});
}
};
$('.layui-btn.layuiadmin-btn-admin').on('click', function () {
var type = $(this).data('type');
active[type] ? active[type].call(this) : '';
});
});
</script>
@@ -0,0 +1,233 @@
<title>字典管理</title>
<div class="layui-card layadmin-header">
<div class="layui-breadcrumb" lay-filter="breadcrumb">
<a lay-href="">主页</a>
<a><cite>用户</cite></a>
<a><cite>字典管理</cite></a>
</div>
</div>
<div class="layui-fluid">
<div class="layui-card">
<div class="layui-card-body">
<div style="padding-bottom: 10px;">
<button class="layui-btn layuiadmin-btn-dic" data-type="add">添加</button>
</div>
<table id="LAY-user-dic" lay-filter="LAY-user-dic"></table>
<script type="text/html" id="table-dic-admin-tools">
<div class="layui-btn-container">
<a class="layui-btn layui-btn-warm layui-btn-xs" lay-event="addChild">新增</a>
<a class="layui-btn layui-btn-primary layui-btn-xs" lay-event="edit">编辑</a>
<a class="layui-btn layui-btn-primary layui-btn-xs" lay-event="del">删除</a>
</div>
</script>
</div>
</div>
</div>
<script>
layui.use(['admin', "form", 'treeTable'], function () {
var setter = layui.setter;
var treeTable = layui.treeTable;
var layer = layui.layer;
var admin = layui.admin;
var form = layui.form;
var dropdown = layui.dropdown;
var view = layui.view;
var $ = layui.$;
// 渲染
var active = {
add: function () {
admin.popup({
title: '新增字典'
, area: ['550px', '550px']
, id: 'LAY-popup-content-add'
, success: function (e, i) {
view(this.id).render("user/administrators/dicform").done(function () {
form.render(null, "layuiadmin-form-dic"), form.on("submit(LAY-user-dic-submit)", function (e) {
//提交数据
admin.req({
method: "post",
contentType: "application/json;charset=UTF-8",
dataType: "json",
headers: {
'token': layui.data(setter.tableName)[setter.request.tokenName]
},
url: setter.baseurl + "adminapi/System/dic/add",//实际使用请改成服务端真实接口
async: false,
data: JSON.stringify(e.field),
done: function (res) {
inst.reloadData(),
layer.close(i)
}
})
})
})
}
});
}
};
$('.layui-btn.layuiadmin-btn-dic').on('click', function () {
var type = $(this).data('type');
active[type] ? active[type].call(this) : '';
});
var inst = treeTable.render({
elem: '#LAY-user-dic',
url: setter.baseurl + "adminapi/System/dic/list", // 此处为静态模拟数据,实际使用时需换成真实接口
headers: {
'token': layui.data(setter.tableName)[setter.request.tokenName]
},
tree: {
/*
// 异步加载子节点
async: {
enable: true,
url: '/static/json/2/treeTable/demo-async.json', // 此处为静态模拟数据,实际使用时需换成真实接口
autoParam: ["parentId=id"]
}
*/
},
maxHeight: '501px',
cols: [[
{ field: 'name', title: '名称',fixed: 'left' },
{ field: 'order', title: '序号', fixed: 'left' },
{ field: 'value', title: '值' },
{ field: 'code', title: '编码' },
{ field: 'remark', title: '备注' },
{ field: 'remark1', title: '备注1' },
{ fixed: "right", title: "操作", width: 190, align: "center", toolbar: "#table-dic-admin-tools" }
]],
page: false
});
// 表头工具栏工具事件
treeTable.on("toolbar(table-dic-admin)", function (obj) {
var config = obj.config;
var tableId = config.id;
var status = treeTable.checkStatus(tableId);
// 获取选中行
if (obj.event === "getChecked") {
if (!status.data.length) return layer.msg('无选中数据');
console.log(status);
layer.alert("当前数据选中已经输出到控制台,<br>您可按 F12 从控制台中查看结果。");
}
});
// 单元格工具事件
treeTable.on('tool(' + inst.config.id + ')', function (obj) {
var layEvent = obj.event; // 获得 lay-event 对应的值
var trElem = obj.tr;
var trData = obj.data;
var tableId = obj.config.id;
l = obj.data;
if (layEvent === "addChild") {
admin.popup({
title: '新增字典'
, area: ['550px', '550px']
, id: 'LAY-popup-content-add'
, success: function (e, i) {
view(this.id).render("user/administrators/dicform").done(function () {
form.render(null, "layuiadmin-form-dic"), form.on("submit(LAY-user-dic-submit)", function (e) {
e.field.parentId = l.id;
console.log(e.field);
//提交数据
admin.req({
method: "post",
contentType: "application/json;charset=UTF-8",
dataType: "json",
headers: {
'token': layui.data(setter.tableName)[setter.request.tokenName]
},
url: setter.baseurl + "adminapi/System/dic/add",//实际使用请改成服务端真实接口
async: false,
data: JSON.stringify(e.field),
done: function (res) {
inst.reloadData(),
layer.close(i)
}
})
})
})
}
});
}
if (layEvent === "edit") {
admin.popup({
title: '编辑字典'
, area: ['550px', '550px']
, id: 'LAY-popup-content-add'
, success: function (e, i) {
view(this.id).render("user/administrators/dicform", l).done(function () {
form.render(null, "layuiadmin-form-dic"), form.on("submit(LAY-user-dic-submit)", function (e) {
//提交数据
admin.req({
method: "post",
contentType: "application/json;charset=UTF-8",
dataType: "json",
headers: {
'token': layui.data(setter.tableName)[setter.request.tokenName]
},
url: setter.baseurl + "adminapi/System/dic/update",//实际使用请改成服务端真实接口
async: false,
data: JSON.stringify(e.field),
done: function (res) {
inst.reloadData(),
layer.close(i)
}
})
})
})
}
});
}
if (layEvent === "del") {
layer.confirm("确定删除此字典么?", function (i) {
//提交数据
admin.req({
method: "get",
url: setter.baseurl + "adminapi/System/dic/delete?id=" + l.id,//实际使用请改成服务端真实接口
async: true,
done: function (res) {
obj.del(),
layer.close(i)
}
})
})
}
});
});
</script>
@@ -0,0 +1,82 @@
<div class="layui-form" lay-filter="layuiadmin-form-dic" style="padding: 20px 30px 0 0;">
<div class="layui-form-item">
<label class="layui-form-label">名字</label>
<div class="layui-input-block">
<script type="text/html" template>
<input type="text" name="id" value="{{ d.params.id}}" class="layui-input" style="display:none">
<input type="text" name="parentId" value="{{ d.params.parentId}}" class="layui-input" style="display:none">
</script>
<script type="text/html" template>
<input type="text" name="name" value="{{ d.params.name || '' }}" lay-verify="required" placeholder="名字" autocomplete="off" class="layui-input">
</script>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">序号</label>
<div class="layui-input-block">
<script type="text/html" template>
<input type="number" name="order" value="{{ d.params.order || 0 }}" lay-verify="required" placeholder="序号" step="1" autocomplete="off" class="layui-input">
</script>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">编码</label>
<div class="layui-input-block">
<script type="text/html" template>
<input type="text" name="code" value="{{ d.params.code || '' }}" autocomplete="off" class="layui-input">
</script>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">值</label>
<div class="layui-input-block">
<script type="text/html" template>
<input type="text" name="value" value="{{ d.params.value || '' }}" autocomplete="off" class="layui-input">
</script>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">备注</label>
<div class="layui-input-block">
<script type="text/html" template>
<input type="text" name="remark" value="{{ d.params.remark || '' }}" autocomplete="off" class="layui-input">
</script>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">备注1</label>
<div class="layui-input-block">
<script type="text/html" template>
<input type="text" name="remark1" value="{{ d.params.remark1 || '' }}" autocomplete="off" class="layui-input">
</script>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label"></label>
<div class="layui-input-inline">
<input type="button" lay-submit lay-filter="LAY-user-dic-submit" value="确认" class="layui-btn">
</div>
</div>
</div>
<script>
layui.use(['admin', 'form','tree'], function(){
var $ = layui.$
, tree = layui.tree
, form = layui.form
, admin = layui.admin
, setter = layui.setter
,treedata = [];
});
</script>
@@ -0,0 +1,136 @@
<title>后台管理员</title>
<div class="layui-card layadmin-header">
<div class="layui-breadcrumb" lay-filter="breadcrumb">
<a lay-href="">主页</a>
<a><cite>用户</cite></a>
<a><cite>后台管理员</cite></a>
</div>
</div>
<div class="layui-fluid">
<div class="layui-card">
<div class="layui-form layui-card-header layuiadmin-card-header-auto" lay-filter="layadmin-useradmin-formlist">
<div class="layui-form-item">
<div class="layui-inline">
<label class="layui-form-label">用户名</label>
<div class="layui-input-block">
<input type="text" name="keyWord" placeholder="请输入" autocomplete="off" class="layui-input">
</div>
</div>
<div class="layui-inline">
<button class="layui-btn layuiadmin-btn-useradmin" lay-submit lay-filter="LAY-user-front-search">
<i class="layui-icon layui-icon-search layuiadmin-button-btn"></i>
</button>
</div>
</div>
</div>
<div class="layui-card-body">
<div style="padding-bottom: 10px;">
<button class="layui-btn layuiadmin-btn-admin" data-type="add">添加</button>
</div>
<table id="LAY-user-back-manage" lay-filter="LAY-user-back-manage"></table>
<script type="text/html" id="table-useradmin-admin">
<a class="layui-btn layui-btn-normal layui-btn-xs" lay-event="edit"><i class="layui-icon layui-icon-edit"></i>编辑</a>
<a class="layui-btn layui-btn-danger layui-btn-xs" lay-event="del"><i class="layui-icon layui-icon-delete"></i>删除</a>
</script>
</div>
</div>
</div>
<script>
layui.use('useradmin', layui.factory('useradmin')).use(['admin', 'useradmin', 'table'], function () {
var $ = layui.$
, admin = layui.admin
, view = layui.view
, table = layui.table
, setter = layui.setter
, form = layui.form;
form.render(null, 'layadmin-userfront-formlist');
//监听搜索
form.on('submit(LAY-user-front-search)', function (data) {
var field = data.field;
//执行重载
table.reload('LAY-user-back-manage', {
where: field
});
});
//事件
var active = {
add: function () {
admin.popup({
title: '添加管理员'
, area: ["500px", "600px"]
, id: 'LAY-popup-user-add'
, success: function (layero, index) {
view(this.id).render('user/administrators/adminform').done(function () {
form.render(null, 'layuiadmin-form-admin');
//监听提交 - 使用 off().on() 防止重复绑定
$(layero).find('[lay-filter="LAY-user-back-submit"]').off('click.adminsubmit').on('click.adminsubmit', function () {
// 手动获取表单数据
var userName = $(layero).find('input[name="userName"]').val();
var displayName = $(layero).find('input[name="displayName"]').val();
var icon = $(layero).find('input[name="icon"]').val();
var password = $(layero).find('input[name="password"]').val();
var systemRole = $(layero).find('select[name="systemRole"]').val();
var systemRoleText = $(layero).find('select[name="systemRole"] option:selected').text();
var param = {
userName: userName,
displayName: displayName,
icon: icon,
password: password,
systemRole: {
id: systemRole,
name: systemRoleText
}
};
//提交数据
admin.req({
method: "post",
contentType: "application/json;charset=UTF-8",
dataType: "json",
headers: {
'token': layui.data(setter.tableName)[setter.request.tokenName]
},
url: setter.baseurl + "adminapi/System/user/add",//实际使用请改成服务端真实接口
async: false,
data: JSON.stringify(param),
done: function (res) {
//$.ajax({});
layui.table.reload('LAY-user-back-manage'); //重载表格
layer.close(index); //执行关闭
}
});
return false; // 防止表单默认提交
});
});
}
});
}
};
$('.layui-btn.layuiadmin-btn-admin').on('click', function () {
var type = $(this).data('type');
active[type] ? active[type].call(this) : '';
});
});
</script>
@@ -0,0 +1,231 @@
<title>菜单管理</title>
<div class="layui-card layadmin-header">
<div class="layui-breadcrumb" lay-filter="breadcrumb">
<a lay-href="">主页</a>
<a><cite>用户</cite></a>
<a><cite>菜单管理</cite></a>
</div>
</div>
<div class="layui-fluid">
<div class="layui-card">
<div class="layui-card-body">
<div style="padding-bottom: 10px;">
<button class="layui-btn layuiadmin-btn-nav" data-type="add">添加</button>
</div>
<table id="LAY-user-nav" lay-filter="LAY-user-nav"></table>
<script type="text/html" id="table-nav-admin-tools">
<div class="layui-btn-container">
<a class="layui-btn layui-btn-warm layui-btn-xs" lay-event="addChild">新增</a>
<a class="layui-btn layui-btn-primary layui-btn-xs" lay-event="edit">编辑</a>
<a class="layui-btn layui-btn-primary layui-btn-xs" lay-event="del">删除</a>
</div>
</script>
</div>
</div>
</div>
<script>
layui.use(['admin', "form", 'treeTable'], function () {
var setter = layui.setter;
var treeTable = layui.treeTable;
var layer = layui.layer;
var admin = layui.admin;
var form = layui.form;
var dropdown = layui.dropdown;
var view = layui.view;
var $ = layui.$;
// 渲染
var active = {
add: function () {
admin.popup({
title: '新增菜单'
, area: ['550px', '550px']
, id: 'LAY-popup-content-add'
, success: function (e, i) {
view(this.id).render("user/administrators/navform").done(function () {
form.render(null, "layuiadmin-form-nav"), form.on("submit(LAY-user-nav-submit)", function (e) {
//提交数据
admin.req({
method: "post",
contentType: "application/json;charset=UTF-8",
dataType: "json",
headers: {
'token': layui.data(setter.tableName)[setter.request.tokenName]
},
url: setter.baseurl + "adminapi/System/nav/add",//实际使用请改成服务端真实接口
async: false,
data: JSON.stringify(e.field),
done: function (res) {
inst.reloadData(),
layer.close(i)
}
})
})
})
}
});
}
};
$('.layui-btn.layuiadmin-btn-nav').on('click', function () {
var type = $(this).data('type');
active[type] ? active[type].call(this) : '';
});
var inst = treeTable.render({
elem: '#LAY-user-nav',
url: setter.baseurl + "adminapi/System/nav/list", // 此处为静态模拟数据,实际使用时需换成真实接口
headers: {
'token': layui.data(setter.tableName)[setter.request.tokenName]
},
tree: {
/*
// 异步加载子节点
async: {
enable: true,
url: '/static/json/2/treeTable/demo-async.json', // 此处为静态模拟数据,实际使用时需换成真实接口
autoParam: ["parentId=id"]
}
*/
},
maxHeight: '501px',
cols: [[
{ field: 'name', title: '名称',fixed: 'left' },
{ field: 'order', title: '序号', fixed: 'left' },
{
field: 'url', title: '地址'},
{ fixed: "right", title: "操作", width: 190, align: "center", toolbar: "#table-nav-admin-tools" }
]],
page: false
});
// 表头工具栏工具事件
treeTable.on("toolbar(table-nav-admin)", function (obj) {
var config = obj.config;
var tableId = config.id;
var status = treeTable.checkStatus(tableId);
// 获取选中行
if (obj.event === "getChecked") {
if (!status.data.length) return layer.msg('无选中数据');
console.log(status);
layer.alert("当前数据选中已经输出到控制台,<br>您可按 F12 从控制台中查看结果。");
}
});
// 单元格工具事件
treeTable.on('tool(' + inst.config.id + ')', function (obj) {
var layEvent = obj.event; // 获得 lay-event 对应的值
var trElem = obj.tr;
var trData = obj.data;
var tableId = obj.config.id;
l = obj.data;
if (layEvent === "addChild") {
admin.popup({
title: '新增菜单'
, area: ['550px', '550px']
, id: 'LAY-popup-content-add'
, success: function (e, i) {
view(this.id).render("user/administrators/navform").done(function () {
form.render(null, "layuiadmin-form-nav"), form.on("submit(LAY-user-nav-submit)", function (e) {
e.field.parentId = l.id;
console.log(e.field);
//提交数据
admin.req({
method: "post",
contentType: "application/json;charset=UTF-8",
dataType: "json",
headers: {
'token': layui.data(setter.tableName)[setter.request.tokenName]
},
url: setter.baseurl + "adminapi/System/nav/add",//实际使用请改成服务端真实接口
async: false,
data: JSON.stringify(e.field),
done: function (res) {
inst.reloadData(),
layer.close(i)
}
})
})
})
}
});
}
if (layEvent === "edit") {
admin.popup({
title: '编辑菜单'
, area: ['550px', '550px']
, id: 'LAY-popup-content-add'
, success: function (e, i) {
view(this.id).render("user/administrators/navform", l).done(function () {
form.render(null, "layuiadmin-form-nav"), form.on("submit(LAY-user-nav-submit)", function (e) {
//提交数据
admin.req({
method: "post",
contentType: "application/json;charset=UTF-8",
dataType: "json",
headers: {
'token': layui.data(setter.tableName)[setter.request.tokenName]
},
url: setter.baseurl + "adminapi/System/nav/update",//实际使用请改成服务端真实接口
async: false,
data: JSON.stringify(e.field),
done: function (res) {
inst.reloadData(),
layer.close(i)
}
})
})
})
}
});
}
if (layEvent === "del") {
layer.confirm("确定删除此菜单么?", function (i) {
//提交数据
admin.req({
method: "get",
url: setter.baseurl + "adminapi/System/nav/delete?id=" + l.id,//实际使用请改成服务端真实接口
async: true,
done: function (res) {
obj.del(),
layer.close(i)
}
})
})
}
});
});
</script>
@@ -0,0 +1,56 @@
<div class="layui-form" lay-filter="layuiadmin-form-nav" style="padding: 20px 30px 0 0;">
<div class="layui-form-item">
<label class="layui-form-label">名字</label>
<div class="layui-input-block">
<script type="text/html" template>
<input type="text" name="id" value="{{ d.params.id}}" class="layui-input" style="display:none">
<input type="text" name="parentId" value="{{ d.params.parentId}}" class="layui-input" style="display:none">
</script>
<script type="text/html" template>
<input type="text" name="name" value="{{ d.params.name || '' }}" lay-verify="required" placeholder="名字" autocomplete="off" class="layui-input">
</script>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">序号</label>
<div class="layui-input-block">
<script type="text/html" template>
<input type="number" name="order" value="{{ d.params.order || 0 }}" lay-verify="required" placeholder="序号" step="1" autocomplete="off" class="layui-input">
</script>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">跳转地址</label>
<div class="layui-input-block">
<script type="text/html" template>
<input type="text" name="url" value="{{ d.params.url || '' }}" autocomplete="off" class="layui-input">
</script>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label"></label>
<div class="layui-input-inline">
<input type="button" lay-submit lay-filter="LAY-user-nav-submit" value="确认" class="layui-btn">
</div>
</div>
</div>
<script>
layui.use(['admin', 'form','tree'], function(){
var $ = layui.$
, tree = layui.tree
, form = layui.form
, admin = layui.admin
, setter = layui.setter
,treedata = [];
});
</script>
@@ -0,0 +1,90 @@
<title>角色管理</title>
<div class="layui-card layadmin-header">
<div class="layui-breadcrumb" lay-filter="breadcrumb">
<a lay-href="">主页</a>
<a><cite>用户</cite></a>
<a><cite>角色管理</cite></a>
</div>
</div>
<div class="layui-fluid">
<div class="layui-card">
<div class="layui-card-body">
<div style="padding-bottom: 10px;">
<button class="layui-btn layuiadmin-btn-role" data-type="add">添加</button>
</div>
<table id="LAY-user-back-role" lay-filter="LAY-user-back-role"></table>
<script type="text/html" id="table-useradmin-admin">
<a class="layui-btn layui-btn-normal layui-btn-xs" lay-event="role"><i class="layui-icon layui-icon-edit"></i>权限</a>
<a class="layui-btn layui-btn-normal layui-btn-xs" lay-event="edit"><i class="layui-icon layui-icon-edit"></i>编辑</a>
<a class="layui-btn layui-btn-danger layui-btn-xs" lay-event="del"><i class="layui-icon layui-icon-delete"></i>删除</a>
</script>
</div>
</div>
</div>
<script>
layui.use('useradmin', layui.factory('useradmin')).use(['admin', 'useradmin', 'table'], function(){
var $ = layui.$
,admin = layui.admin
,view = layui.view
, table = layui.table
, setter = layui.setter
,form = layui.form;
//事件
var active = {
add: function(){
admin.popup({
title: '添加新角色'
,area: ['500px', '480px']
,id: 'LAY-popup-user-add'
,success: function(layero, index){
view(this.id).render('user/administrators/roleform').done(function(){
form.render(null, 'layuiadmin-form-role');
//监听提交
form.on('submit(LAY-user-role-submit)', function(data){
var param = data.field
//提交数据
admin.req({
method: "post",
contentType: "application/json;charset=UTF-8",
dataType: "json",
headers: {
'token': layui.data(setter.tableName)[setter.request.tokenName]
},
url: setter.baseurl + "adminapi/System/role/add",//实际使用请改成服务端真实接口
async: false,
data: JSON.stringify(param),
done: function (res) {
layui.table.reload('LAY-user-back-role'); //重载表格
layer.close(index); //执行关闭
}
})
});
});
}
});
}
}
$('.layui-btn.layuiadmin-btn-role').on('click', function(){
var type = $(this).data('type');
console.log(type);
active[type] ? active[type].call(this) : '';
});
});
</script>
@@ -0,0 +1,42 @@
<div class="layui-form" lay-filter="layuiadmin-form-role" style="padding: 20px 30px 0 0;">
<div class="layui-form-item">
<label class="layui-form-label">角色</label>
<div class="layui-input-block">
<script type="text/html" template>
<input type="text" name="id" value="{{ d.params.id}}" class="layui-input" style="display:none">
</script>
<script type="text/html" template>
<input type="text" name="roleName" value="{{ d.params.roleName || '' }}" lay-verify="required" placeholder="请输入角色名称" autocomplete="off" class="layui-input">
</script>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">具体描述</label>
<div class="layui-input-block">
<script type="text/html" template>
<textarea type="text" name="description" lay-verify="required" autocomplete="off" class="layui-textarea">{{ d.params.description || '' }}</textarea>
</script>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label"></label>
<div class="layui-input-inline">
<input type="button" lay-submit lay-filter="LAY-user-role-submit" value="确认" class="layui-btn">
</div>
</div>
</div>
<script>
layui.use(['admin', 'form','tree'], function(){
var $ = layui.$
, tree = layui.tree
, form = layui.form
, admin = layui.admin
, setter = layui.setter
,treedata = [];
});
</script>
@@ -0,0 +1,155 @@
<div class="layui-form" lay-filter="layuiadmin-form-role-tree" style="padding: 20px 30px 0 0;">
<div class="layui-form-item">
<label class="layui-form-label">权限范围</label>
<div class="layui-input-block">
<ul id="navigationist"></ul>
<script type="text/html" lay-done="sendParams(d.params)" template>
</script>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label"></label>
<div class="layui-input-inline">
<input type="button" lay-submit lay-filter="LAY-user-front-submit" value="确认" class="layui-btn">
</div>
</div>
</div>
<script>
var id = '';
var isLayUI = false;
function sendParams(params) {
id = params.id;
if (isLayUI) {
layuiLoad();
}
}
layuiLoad();
function layuiLoad() {
layui.use(['admin', 'form', 'tree', 'user', 'laydate'], function () {
var $ = layui.$
, tree = layui.tree
, form = layui.form
, admin = layui.admin
, setter = layui.setter
, router = layui.router()
, user = layui.user
, laydate = layui.laydate
, treedata = [];
treedatas = [];
treeselecedIds = [];
form.on('submit(LAY-user-front-submit)', function (data) {
var checkData = tree.getChecked("navigatioid");
treeselecedIds = [];
gettreeSelectIds(checkData)
admin.req({
method: "post",
contentType: "application/json;charset=UTF-8",
dataType: "json",
headers: {
'token': layui.data(setter.tableName)[setter.request.tokenName]
},
url: setter.baseurl + "adminapi/System/role/updatenav",//实际使用请改成服务端真实接口
async: false,
data: JSON.stringify({ id: id, navIds: treeselecedIds }),
done: function (res) {
//关闭弹窗
layer.closeAll()
}
})
return false; //阻止表单跳转。如果需要表单跳转,去掉这段即可。
});
//提交数据
admin.req({
method: "get",
contentType: "application/json;charset=UTF-8",
dataType: "json",
headers: {
'token': layui.data(setter.tableName)[setter.request.tokenName]
},
url: setter.baseurl + "adminapi/System/nav/list",//实际使用请改成服务端真实接口
async: false,
done: function (res) {
treedata = gettreedata(res.data);
}
})
function gettreedata(arr) {
let arr1 = [];
layui.each(arr, function (index, val) {
if (val.children != null) {
val.children = gettreedata(val.children);
}
arr1.push({ title: val.name, id: val.id, children: val.children, spread: tree, checked: false });
})
return arr1;
}
function gettreeSelectIds(arr) {
layui.each(arr, function (index, val) {
if (val.children != null && val.children.length>0) {
val.children = gettreeSelectIds(val.children);
} else {
treeselecedIds.push(val.id);
}
})
}
treeRender();
if (id != null && id != "") {
admin.req({
method: "get",
contentType: "application/json;charset=UTF-8",
dataType: "json",
headers: {
'token': layui.data(setter.tableName)[setter.request.tokenName]
},
url: setter.baseurl + "adminapi/System/role/get?id=" + id,//实际使用请改成服务端真实接口
async: false,
done: function (res) {
tree.setChecked('navigatioid', res.data.navIds); //批量勾选 id 为 2、3 的节点
}
})
}
function treeRender() {
isLayUI = true;
tree.render({
elem: '#navigationist',
id: 'navigatioid',
data: treedata,
showCheckbox: true, // 这里可以设置为true来显示复选框,但LAYUI原生不支持多选逻辑
oncheck: function (node) {
}
});
}
});
}
</script>