This commit is contained in:
郝大全
2018-07-03 00:38:31 +08:00
parent e6f96cd36c
commit b34de685b8
570 changed files with 33780 additions and 10 deletions

100
V2/views/admin/add.html Normal file
View File

@@ -0,0 +1,100 @@
<div class="layui-layout layui-layout-admin" style="padding-left: 40px;margin-top: 20px;">
<div style="margin: 10px 0px">
<blockquote class="layui-elem-quote">
说明新建管理员默认密码为:george518
</blockquote>
</div>
<form class="layui-form" action="" method="post" >
<div class="layui-form-item">
<label class="layui-form-label">登录账号</label>
<div class="layui-input-inline">
<input type="text" name="login_name" id="login_name" lay-verify="required" autocomplete="off" placeholder="登录账号" class="layui-input" value="">
</div>
<div class="layui-form-mid layui-word-aux">*英文数字或_,6位以上</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">真实姓名</label>
<div class="layui-input-inline">
<input type="text" name="real_name" id="real_name" lay-verify="required" autocomplete="off" placeholder="真实姓名" class="layui-input" value="">
</div>
<div class="layui-form-mid layui-word-aux">*</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">手机号码</label>
<div class="layui-input-inline">
<input type="text" name="phone" lay-verify="phone|required" autocomplete="off" placeholder="手机号码" class="layui-input" value="">
</div>
<div class="layui-form-mid layui-word-aux">*</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">电子邮箱</label>
<div class="layui-input-inline">
<input type="text" name="email" id="email" lay-verify="email" autocomplete="off" placeholder="电子邮箱" class="layui-input" value="">
</div>
<div class="layui-form-mid layui-word-aux">*</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">选择角色</label>
<div class="layui-input-block">
{{range $k, $v := .role}}
<input type="checkbox" name="role_ids" lay-filter="role_ids" title="{{$v.role_name}}" value="{{$v.id}}">
{{end}}
</div>
<div class="layui-form-mid layui-word-aux">*</div>
</div>
<input type="hidden" value="" id="roleids" name="roleids">
<div class="layui-form-item">
<div class="layui-input-block">
<button class="layui-btn" lay-submit="" lay-filter="sub">立即提交</button>
<button type="reset" class="layui-btn layui-btn-primary">重置</button>
</div>
</div>
</form>
</div>
<script>
var $;
layui.config({
base : "js/"
}).use(['form','element','layer','jquery'],function(){
var form = layui.form; //只有执行了这一步,部分表单元素才会自动修饰成功
var $ = layui.jquery;
var role_ids = [];
form.on('checkbox(role_ids)', function(data){
if(data.elem.checked==true){
role_ids.push(data.value)
}else{
$.each(role_ids,function(index,item){
// index是索引值即下标 item是每次遍历得到的值
if(item==data.value){
role_ids.splice(index,1);
}
});
}
$("#roleids").val(role_ids.join(","));
});
form.on('submit(sub)', function(data){
var form_data = $("form").serialize();
$.post('{{urlfor "AdminController.AjaxSave"}}', form_data, function (out) {
if (out.status == 0) {
layer.msg("操作成功",{icon: 1},function () {
window.location.reload()
})
} else {
layer.msg(out.message)
}
}, "json");
return false;
});
//但是如果你的HTML是动态生成的自动渲染就会失效
//因此你需要在相应的地方,执行下述方法来手动渲染,跟这类似的还有 element.init();
form.render();
});
</script>

109
V2/views/admin/edit.html Normal file
View File

@@ -0,0 +1,109 @@
<div class="layui-layout layui-layout-admin" style="padding-left: 40px;margin-top: 20px;">
<form class="layui-form" action="" method="post" >
<div class="layui-form-item">
<label class="layui-form-label">登录账号</label>
<div class="layui-input-inline">
<input type="text" name="login_name" readonly id="login_name" lay-verify="required" autocomplete="off" placeholder="登录账号" class="layui-input" value="{{.admin.login_name}}">
</div>
<div class="layui-form-mid layui-word-aux">*登录不允许修改</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">真实姓名</label>
<div class="layui-input-inline">
<input type="text" name="real_name" id="real_name" lay-verify="required" autocomplete="off" placeholder="真实姓名" class="layui-input" value="{{.admin.real_name}}">
</div>
<div class="layui-form-mid layui-word-aux">*</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">手机号码</label>
<div class="layui-input-inline">
<input type="text" name="phone" lay-verify="phone|required" autocomplete="off" placeholder="手机号码" class="layui-input" value="{{.admin.phone}}">
</div>
<div class="layui-form-mid layui-word-aux">*</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">电子邮箱</label>
<div class="layui-input-inline">
<input type="text" name="email" id="email" lay-verify="email" autocomplete="off" placeholder="电子邮箱" class="layui-input" value="{{.admin.email}}">
</div>
<div class="layui-form-mid layui-word-aux">*</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">重置密码</label>
<div class="layui-input-inline">
<input type="radio" name="reset_pwd" value="1" title="重置">
<input type="radio" name="reset_pwd" value="2" title="不重置" checked>
</div>
<div class="layui-form-mid layui-word-aux">默认密码:george518</div>
</div>
{{if ne .admin.id 1}}
<div class="layui-form-item">
<label class="layui-form-label">选择角色</label>
<div class="layui-input-block">
{{range $k, $v := .role}}
<input type="checkbox" name="role_ids" lay-filter="role_ids" title="{{$v.role_name}}" value="{{$v.id}}" {{if $v.checked}}checked{{end}}>
{{end}}
</div>
<div class="layui-form-mid layui-word-aux">*</div>
</div>
{{end}}
<input type="hidden" id="roleids" name="roleids" value="{{.admin.role_ids}}">
<input type="hidden" id="id" name="id" value="{{.admin.id}}">
<div class="layui-form-item">
<div class="layui-input-block">
<button class="layui-btn" lay-submit="" lay-filter="sub">立即提交</button>
<button type="reset" class="layui-btn layui-btn-primary">重置</button>
</div>
</div>
</form>
</div>
<script>
var $;
layui.config({
base : "js/"
}).use(['form','element','layer','jquery'],function(){
var form = layui.form; //只有执行了这一步,部分表单元素才会自动修饰成功
var $ = layui.jquery;
var role_ids_str = "{{.admin.role_ids}}"
var role_ids = role_ids_str.split(",");
form.on('checkbox(role_ids)', function(data){
if(data.elem.checked==true){
role_ids.push(data.value)
}else{
$.each(role_ids,function(index,item){
// index是索引值即下标 item是每次遍历得到的值
if(item==data.value){
role_ids.splice(index,1);
}
});
}
$("#roleids").val(role_ids.join(","));
});
form.on('submit(sub)', function(data){
var form_data = $("form").serialize();
$.post('{{urlfor "AdminController.AjaxSave"}}', form_data, function (out) {
if (out.status == 0) {
layer.msg("操作成功",{icon: 1},function () {
window.history.go(-1)
})
} else {
layer.msg(out.message)
}
}, "json");
return false;
});
//但是如果你的HTML是动态生成的自动渲染就会失效
//因此你需要在相应的地方,执行下述方法来手动渲染,跟这类似的还有 element.init();
form.render();
});
</script>

110
V2/views/admin/list.html Normal file
View File

@@ -0,0 +1,110 @@
<div class="layui-layout layui-layout-admin" style="padding-left: 20px;">
<div class="layui-row" style="margin-top: 20px;">
<div class="layui-col-xs6">
<a class="layui-btn" data-type="tabAdd" href="/admin/add">新增</a>
</div>
<div class="layui-col-xs6 search_text">
<form class="layui-form" action="" onsubmit="javascript:return false;">
<div class="demoTable">
<div class="layui-inline" style="width: 40%">
<input class="layui-input" name="realName" id="realName" autocomplete="off" placeholder="真实姓名" >
</div>
<button class="layui-btn" data-type="reload">查询</button>
</div>
</form>
</div>
</div>
<table class="layui-hide" id="table_list" lay-filter="table_filter">
</table>
<script type="text/html" id="bar">
<!-- <a class="layui-btn layui-btn-primary layui-btn-xs" lay-event="detail">查看</a> -->
<a class="layui-btn layui-btn-xs" lay-event="edit">编辑</a>
<a class="layui-btn layui-btn-danger layui-btn-xs" lay-event="status">|</a>
</script>
</div>
<script>
layui.use(['table','form','element'], function(){
var table = layui.table;
var form = layui.form;
var element = layui.element;
//方法级渲染
table.render({
elem: '#table_list'
,url: '/admin/table'
,cols: [[
// {checkbox: true, fixed: true},
{field:'id', title: 'ID', align:'center',sort: true, width:150}
,{field:'login_name',title: '登录账号'}
,{field:'real_name', title: '真实姓名'}
,{field:'phone', title: '联系电话'}
,{field:'email', title: '电子邮箱'}
,{field:'status_text', title: '状态'}
,{fixed: 'right', width:160, align:'center', toolbar: '#bar'}
]]
,id: 'listReload'
,page: true
,height: "full-130"
});
var $ = layui.$, active = {
reload: function(){
table.reload('listReload', {
where: {
realName: $('#realName').val(),
}
});
}
};
//监听工具条
table.on('tool(table_filter)', function(obj){
var data = obj.data;
if(obj.event === 'edit'){
window.location.href="/admin/edit?id="+data.id
} else if(obj.event === 'status'){
acts = "禁用";
status = "disable";
if (data.status === 0) {
acts = '启用';
status = "enable";
}
if (data.id==1 && obj.event === 'disable') {
layer.msg('超级管理员不允许操作');
return false;
}
layer.confirm('真的'+acts+'【'+data.login_name+'账号么', function(index){
var jsData = {'id':data.id,'status':status}
$.post('{{urlfor "AdminController.AjaxDel"}}', jsData, function (out) {
if (out.status == 0) {
layer.alert(out.message, {icon: 1},function(index){
layer.close(index);
window.location.reload();
});
} else {
layer.msg(out.message)
}
}, "json");
// obj.del();
layer.close(index);
})
}else{
layer.msg('操作不存在');
}
});
$('.demoTable .layui-btn').on('click', function(){
var type = $(this).data('type');
active[type] ? active[type].call(this) : '';
});
});
</script>

375
V2/views/auth/list.html Normal file
View File

@@ -0,0 +1,375 @@
<script type="text/javascript" src="/static/admin/js/jquery.min.js"></script>
<script type="text/javascript" src="/static/zTree3/js/jquery.ztree.core.js"></script>
<script type="text/javascript" src="/static/zTree3/js/jquery.ztree.excheck.js"></script>
<script type="text/javascript" src="/static/zTree3/js/jquery.ztree.exedit.js"></script>
<div class="layui-row">
<div style="margin: 10px 20px">
<blockquote class="layui-elem-quote">
说明新增权限请直接填写相关数据保存即可修改和删除请点击左侧权限树选择要修改的权限节点
</blockquote>
</div>
<div class="layui-col-md5 zTreeDemoBackground" style="margin-left: 20px;margin-right: 0px">
<ul id="treeDemo" class="ztree" style="height:320px; width: auto; margin-bottom: 10px;">
</ul>
</div>
<div class="layui-col-md7">
<div class="layui-layout layui-layout-admin" style="padding-left: 40px;margin-top: 20px;">
<form class="layui-form" action="" onsubmit="javascript:;" name="form" method="post">
<div class="layui-form-item">
<label class="layui-form-label">权限名称</label>
<div class="layui-input-inline">
<input type="text" name="auth_name" lay-verify="required" autocomplete="off" placeholder="请输入权限名称" class="layui-input">
</div>
<div class="layui-form-mid layui-word-aux"></div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">上级权限</label>
<div class="layui-input-inline" style="width: 210px;">
<input type="text" name="pname" lay-verify="required" autocomplete="off" placeholder="请选择" disabled value="所有权限" class="layui-input" id="pname">
</div>
<div class="layui-input-inline" style="width: 50px;">
<input type="text" name="pid" autocomplete="off" placeholder="0" id="pid" class="layui-input" readonly value="1">
</div>
<div class="layui-form-mid layui-word-aux">
<button id="menuBtn" type="button" class="layui-btn layui-btn-xs layui-btn-normal" >选择顶级分类</button>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">菜单地址</label>
<div class="layui-input-inline">
<input type="text" name="auth_url" lay-verify="required" autocomplete="off" placeholder="/home" class="layui-input" value="/">
</div>
<div class="layui-form-mid layui-word-aux"></div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">图标字体</label>
<div class="layui-input-inline">
<input type="text" name="icon" autocomplete="off" placeholder="fa-bar-chart-o" class="layui-input">
</div>
<div class="layui-form-mid layui-word-aux"><a href="http://fontawesome.dashgame.com" target="_blank">点击这里参考</a></div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">排序</label>
<div class="layui-input-inline">
<input type="text" name="sort" lay-verify="required" autocomplete="off" placeholder="999" class="layui-input">
</div>
<div class="layui-form-mid layui-word-aux"></div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">是否显示</label>
<div class="layui-input-inline">
<input type="radio" name="is_show" value="0" title="隐藏" checked>
<input type="radio" name="is_show" value="1" title="显示">
</div>
<div class="layui-form-mid layui-word-aux">是否左侧导航栏显示</div>
</div>
<input type="hidden" name="id" class="layui-input" id="id" value="0">
<div class="layui-form-item">
<div class="layui-input-block">
<button class="layui-btn" lay-submit="" lay-filter="add">新增</button>
<button class="layui-btn layui-btn-normal" lay-submit="" lay-filter="edit">修改</button>
<a class="layui-btn layui-btn-danger" href="javascript:;" id="del" lay-submit="">删除</a>
<button type="reset" class="layui-btn layui-btn-primary">重置</button>
</div>
</div>
</form>
</div>
</div>
</div>
<div id="menuContent" class="menuContent" style="display:none; position: absolute;">
<ul id="treeMenu" class="ztree" style="margin-top:0; width:200px; height: 200px"></ul>
</div>
<script>
var $,form;
layui.use(['form','element','layer'],function(){
form = layui.form; //只有执行了这一步,部分表单元素才会自动修饰成功
$ = layui.$;
form.on("submit",function(data) {
var sub_type = data.elem.getAttribute("lay-filter")
console.log(sub_type)
if(sub_type=="add"){
$("#id").val(0);
}else{
if($("#id").val()=="0"){
layer.msg("修改先请在左侧权限树选择节点")
return false
}
}
console.log($("form").serialize());
$.post('{{urlfor "AuthController.AjaxSave"}}', $("form").serialize(), function (out) {
if (out.status == 0) {
// layer.msg("操作成功")
layer.alert('你成功了', {icon: 1},function(index){
window.location.reload();
});
} else {
layer.msg(out.message)
}
}, "json");
return false;
});
form.render();
//但是如果你的HTML是动态生成的自动渲染就会失效
//因此你需要在相应的地方,执行下述方法来手动渲染,跟这类似的还有 element.init();
});
</script>
<script type="text/javascript">
var zNodes = [{ id:1, pId:0, name:"数据错误"}];
$(document).ready(function(){
// $("form[name=form]").parent().find("input[type=radio]").eq(1).attr("checked", true);
var setting = {
// edit: {
// enable: true
// },
data: {
simpleData: {
enable: true
}
},
callback: {
beforeDrag: beforeDrag,
onClick: editOnClick
}
};
function editOnClick(e, treeId, treeNode) {
var zTree = $.fn.zTree.getZTreeObj("treeDemo"),
nodes = zTree.getSelectedNodes();
if(nodes[0].id==1){
alert('不允许修改根节点');
return;
}
if(nodes[0].parentTId){
var parentInfo = zTree.getNodeByTId(nodes[0].parentTId);
pid = parentInfo.id;
pname = parentInfo.name;
}
var id = nodes[0].id;
$("#pid").val(nodes[0].pId);
$("#id").val(nodes[0].id);
$("#pname").val(pname);
$("form[name=form]").find("input[name=auth_name]").val(nodes[0].name);
$.ajax({
type: "POST",
url: "/auth/getnode",
data: {id:id},
dataType: 'json',
success: function(data) {
if(data.code==0){
$("form[name=form]").find("input[name=auth_url]").val(data.data.auth_url);
$("form[name=form]").find("input[name=icon]").val(data.data.icon);
$("form[name=form]").find("input[name=sort]").val(data.data.sort);
var is_show = data.data.is_show
$("form[name=form]").find("input[type=radio][value="+is_show+"]").attr("checked", true);
$("form[name=form]").find("input[type=radio][value="+is_show+"]").click();
form.render();
}
}
});
}
function beforeDrag(treeId, treeNodes) {
return false;
}
function setEdit() {
var zTree = $.fn.zTree.getZTreeObj("treeDemo");
}
// //增加节点
var newCount = 1;
var maxId = 0;
function add(e) {
var maxId = $('#max_id').val();
var zTree = $.fn.zTree.getZTreeObj("treeDemo"),
isParent = e.data.isParent,
nodes = zTree.getSelectedNodes(),
treeNode = nodes[0];
if (treeNode) {
treeNode = zTree.addNodes(treeNode, {id:(maxId -(-newCount)), pId:treeNode.id, isParent:isParent, name:"new node" + treeNode.id + (newCount++)});
} else {
treeNode = zTree.addNodes(null, {id:(maxId -(-newCount)), pId:0, isParent:isParent, name:"new node" + (newCount++)});
}
if (treeNode) {
zTree.editName(treeNode[0]);
} else {
alert("叶子节点被锁定,无法增加子节点");
}
};
function showCode(str) {
var code = $("#code");
code.empty();
for (var i=0, l=str.length; i<l; i++) {
code.append("<li>"+str[i]+"</li>");
}
}
//加载树
refresh_tree();
function refresh_tree()
{
var time = Date.parse(new Date());
$.ajax({
type: "POST",
url: "/auth/getnodes",
data: {time:time},
dataType: 'json',
success: function(data) {
if(data.code==0){
zNodes = data.data;
$.fn.zTree.init($("#treeDemo"), setting, zNodes);
$.fn.zTree.init($("#treeMenu"), menu, zNodes);
}
}
});
setEdit();
$("#remove").bind("change", setEdit);
$("#rename").bind("change", setEdit);
$("#removeTitle").bind("propertychange", setEdit)
.bind("input", setEdit);
$("#renameTitle").bind("propertychange", setEdit)
.bind("input", setEdit);
}
// //新增 type=1
// $('#submit_add_button').on('click',function(){
// var data = $('form[name=form_add]').serialize();
// ajaxRequest({'nodes':data,'type':1},'/auth/auth/save_auth','submit_add_button','POST',0);
// });
// //新增 type=2
// $('#submit_edit_button').on('click',function(){
// var data = $('form[name=form_add]').serialize();
// ajaxRequest({'nodes':data,'type':2},'/auth/auth/save_auth','submit_edit_button','POST',0);
// });
//删除
$('#del').on('click',function(){
var id = $("#id").val();
if (id==0) {
layer.msg('请在左侧权限树选择节点');
return false;
}
layer.confirm('确认要删除吗', {icon: 3, title:'提示'}, function(index){
$.post('{{urlfor "AuthController.AjaxDel"}}', {id:id}, function (out) {
if (out.status == 0) {
// layer.msg("操作成功")
layer.alert('你删除成功了', {icon: 1},function(index){
window.location.reload();
});
} else {
layer.msg(out.message)
}
}, "json");
});
return false;
});
// //清空
// $('#submit_cancel_button').on('click',function(){
// var fields = ['id','pid','pname','name','menu_url','sort'];
// $.each(fields,function(k,v) {
// $("form[name=form_add]").find("input[name="+v+"]").val('');
// });
// });
//以下是下拉选择框
var menu = {
view: {
dblClickExpand: false
},
data: {
simpleData: {
enable: true
}
},
callback: {
// beforeClick: beforeClick,
onClick: onClick
}
};
function beforeClick(treeId, treeNode) {
var check = (treeNode && !treeNode.isParent);
if (!check) alert("不能选择");
return check;
}
function onClick(e, treeId, treeNode) {
var zTree = $.fn.zTree.getZTreeObj("treeMenu"),
nodes = zTree.getSelectedNodes(),
v = "";
nodes.sort(function compare(a,b){return a.id-b.id;});
for (var i=0, l=nodes.length; i<l; i++) {
v += nodes[i].name + ",";
}
if (v.length > 0 ) v = v.substring(0, v.length-1);
var pid = $("#pid");
$("#pid").val(nodes[0].id);
$("#pname").val(v);
hideMenu()
}
$("#menuBtn").on("click",function(){
showMenu()
})
function showMenu() {
var pname = $("#pname");
var paOffset = $("#pname").offset();
// var sideOffset = $("#left_side").width();
// console.log(sideOffset.left)
$("#menuContent").css({left:(paOffset.left) + "px", top:(paOffset.top - pname.outerHeight()+70) + "px"}).slideDown("fast");
$("body").bind("mousedown", onBodyDown);
}
function hideMenu() {
$("#menuContent").fadeOut("fast");
$("body").unbind("mousedown", onBodyDown);
}
function onBodyDown(event) {
if (!(event.target.id == "menuBtn" || event.target.id == "menuContent" || $(event.target).parents("#menuContent").length>0)) {
hideMenu();
}
}
});
</script>

51
V2/views/ban/add.html Normal file
View File

@@ -0,0 +1,51 @@
<style>
.nav-title{
display: none;
}
</style>
<div class="layui-layout layui-layout-admin" style="padding-left: 40px;margin-top: 20px;">
<form class="layui-form" action="" method="post" >
<div class="layui-form-item">
<div class="layui-input-inline mw400">
<textarea name="code" id="code" placeholder="请输入禁用命令" class="layui-textarea"></textarea>
</div>
</div>
<input type="hidden" name="id" id="id" value="0">
<div class="layui-form-item">
<div class="layui-input-inline mw400">
<button class="layui-btn" lay-submit="" lay-filter="sub">立即提交</button>
<button type="reset" class="layui-btn layui-btn-primary">重置</button>
</div>
</div>
</form>
</div>
<script>
var $;
layui.use(['form','element','layer','jquery'],function(){
var form = layui.form; //只有执行了这一步,部分表单元素才会自动修饰成功
var $ = layui.jquery;
form.on('submit(sub)', function(data){
var form_data = data.field;
$.post('{{urlfor "BanController.AjaxSave"}}', form_data, function (out) {
if (out.status == 0) {
layer.msg("操作成功",{icon: 1},function () {
window.parent.layer.closeAll();
window.parent.location.reload();
})
} else {
layer.msg(out.message)
}
}, "json");
return false;
});
//但是如果你的HTML是动态生成的自动渲染就会失效
//因此你需要在相应的地方,执行下述方法来手动渲染,跟这类似的还有 element.init();
form.render();
});
</script>

51
V2/views/ban/edit.html Normal file
View File

@@ -0,0 +1,51 @@
<style>
.nav-title{
display: none;
}
</style>
<div class="layui-layout layui-layout-admin" style="padding-left: 40px;margin-top: 20px;">
<form class="layui-form" action="" method="post" >
<div class="layui-form-item">
<div class="layui-input-inline mw400">
<textarea name="code" id="code" placeholder="请输入禁用命令" class="layui-textarea">{{.ban.code}}</textarea>
</div>
</div>
<input type="hidden" name="id" id="id" value="{{.ban.id}}">
<div class="layui-form-item">
<div class="layui-input-inline mw400">
<button class="layui-btn" lay-submit="" lay-filter="sub">立即提交</button>
<button type="reset" class="layui-btn layui-btn-primary">重置</button>
</div>
</div>
</form>
</div>
<script>
var $;
layui.use(['form','element','layer','jquery'],function(){
var form = layui.form; //只有执行了这一步,部分表单元素才会自动修饰成功
var $ = layui.jquery;
form.on('submit(sub)', function(data){
var form_data = data.field;
$.post('{{urlfor "BanController.AjaxSave"}}', form_data, function (out) {
if (out.status == 0) {
layer.msg("操作成功",{icon: 1},function () {
window.parent.layer.closeAll();
window.parent.location.reload();
})
} else {
layer.msg(out.message)
}
}, "json");
return false;
});
//但是如果你的HTML是动态生成的自动渲染就会失效
//因此你需要在相应的地方,执行下述方法来手动渲染,跟这类似的还有 element.init();
form.render();
});
</script>

122
V2/views/ban/list.html Normal file
View File

@@ -0,0 +1,122 @@
<div class="layui-layout layui-layout-admin" style="padding-left: 20px;">
<div class="layui-row" style="margin-top: 20px;">
<div class="layui-col-xs6">
<a class="layui-btn" data-type="tabAdd" id="tabAdd" href="javascript:void(0)">新增</a>
</div>
<div class="layui-col-xs6 search_text">
<form class="layui-form" action="" onsubmit="javascript:return false;">
<div class="demoTable">
<div class="layui-inline" style="width: 40%">
<input class="layui-input" name="code" id="code" autocomplete="off" placeholder="禁用命令" >
</div>
<button class="layui-btn" data-type="reload">查询</button>
</div>
</form>
</div>
</div>
<table class="layui-hide" id="table_list" lay-filter="table_filter">
</table>
<script type="text/html" id="bar">
<!-- <a class="layui-btn layui-btn-primary layui-btn-xs" lay-event="detail">查看</a> -->
<a class="layui-btn layui-btn-xs" lay-event="edit">编辑</a>
<a class="layui-btn layui-btn-danger layui-btn-xs" lay-event="del">删除</a>
</script>
</div>
<script>
layui.use(['table','form','element'], function(){
var table = layui.table;
var form = layui.form;
var element = layui.element;
//方法级渲染
table.render({
elem: '#table_list'
,url: '/ban/table'
,cols: [[
// {checkbox: true, fixed: true},
{field:'id', title: 'ID', align:'center',sort: true, width:150}
,{field:'code',title: '禁用命令'}
,{field:'create_time', title: '创建时间'}
,{fixed: 'right', width:160, align:'center', toolbar: '#bar'}
]]
,id: 'listReload'
,page: true
,height: "full-130"
});
var $ = layui.$, active = {
reload: function(){
table.reload('listReload', {
where: {
code: $('#code').val(),
}
});
}
};
$("#tabAdd").on("click",function() {
layer.open({
type: 2,
shade: 0.3,
id:1,
title:"新增禁用命令",
content: '/ban/add',
area:['500px','250px'],
cancel:function(){
window.location.reload();
layer.close(index);
}
});
})
//监听工具条
table.on('tool(table_filter)', function(obj){
var data = obj.data;
if(obj.event === 'edit'){
layer.open({
type: 2,
shade: 0.3,
id:1,
title:"编辑禁用命令",
content: '/ban/edit?id='+data.id,
area:['500px','250px'],
cancel:function(){
window.location.reload();
layer.close(index);
}
});
} else if(obj.event === 'del'){
layer.confirm('真的删除'+data.code+'命令么', function(index){
var jsData = {'id':data.id,'status':status}
$.post('{{urlfor "BanController.AjaxDel"}}', jsData, function (out) {
if (out.status == 0) {
layer.alert(out.message, {icon: 1},function(index){
layer.close(index);
window.location.reload();
});
} else {
layer.msg(out.message)
}
}, "json");
// obj.del();
layer.close(index);
})
}else{
layer.msg('操作不存在');
}
});
$('.demoTable .layui-btn').on('click', function(){
var type = $(this).data('type');
active[type] ? active[type].call(this) : '';
});
});
</script>

56
V2/views/group/add.html Normal file
View File

@@ -0,0 +1,56 @@
<div class="layui-layout layui-layout-admin" style="padding-left: 40px;margin-top: 20px;">
<div style="margin: 10px 0px">
<blockquote class="layui-elem-quote">
说明新建任务分组
</blockquote>
</div>
<form class="layui-form" action="" method="post" >
<div class="layui-form-item">
<label class="layui-form-label">分组名称</label>
<div class="layui-input-inline" style="min-width: 200px;">
<input type="text" name="group_name" id="group_name" lay-verify="required" autocomplete="off" placeholder="任务分组" class="layui-input" value="">
</div>
<div class="layui-form-mid layui-word-aux">*</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">分组说明</label>
<div class="layui-input-inline" style="min-width: 400px;">
<textarea name="description" id="description" placeholder="请输入内容" class="layui-textarea"></textarea>
</div>
</div>
<input type="hidden" id="id" value="0">
<div class="layui-form-item">
<div class="layui-input-block">
<button class="layui-btn" lay-submit="" lay-filter="sub">立即提交</button>
<button type="reset" class="layui-btn layui-btn-primary">重置</button>
</div>
</div>
</form>
</div>
<script>
var $;
layui.use(['form','element','layer','jquery'],function(){
var form = layui.form; //只有执行了这一步,部分表单元素才会自动修饰成功
var $ = layui.jquery;
form.on('submit(sub)', function(data){
var form_data = $("form").serialize();
$.post('{{urlfor "GroupController.AjaxSave"}}', form_data, function (out) {
if (out.status == 0) {
layer.msg("操作成功",{icon: 1},function () {
window.history.go(-1)
})
} else {
layer.msg(out.message)
}
}, "json");
return false;
});
//但是如果你的HTML是动态生成的自动渲染就会失效
//因此你需要在相应的地方,执行下述方法来手动渲染,跟这类似的还有 element.init();
form.render();
});
</script>

56
V2/views/group/edit.html Normal file
View File

@@ -0,0 +1,56 @@
<div class="layui-layout layui-layout-admin" style="padding-left: 40px;margin-top: 20px;">
<div style="margin: 10px 0px">
<blockquote class="layui-elem-quote">
说明编辑资源分组
</blockquote>
</div>
<form class="layui-form" action="" method="post" >
<div class="layui-form-item">
<label class="layui-form-label">分组名称</label>
<div class="layui-input-inline" style="min-width: 200px;">
<input type="text" value="{{.group.group_name}}" name="group_name" id="group_name" lay-verify="required" autocomplete="off" placeholder="任务分组" class="layui-input" >
</div>
<div class="layui-form-mid layui-word-aux">*</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">分组说明</label>
<div class="layui-input-inline" style="min-width: 400px;">
<textarea name="description" id="description" placeholder="请输入内容" class="layui-textarea">{{.group.description}}</textarea>
</div>
</div>
<input type="hidden" id="id" name="id" value="{{.group.id}}">
<div class="layui-form-item">
<div class="layui-input-block">
<button class="layui-btn" lay-submit="" lay-filter="sub">立即提交</button>
<button type="reset" class="layui-btn layui-btn-primary">重置</button>
</div>
</div>
</form>
</div>
<script>
var $;
layui.use(['form','element','layer','jquery'],function(){
var form = layui.form; //只有执行了这一步,部分表单元素才会自动修饰成功
var $ = layui.jquery;
form.on('submit(sub)', function(data){
var form_data = $("form").serialize();
$.post('{{urlfor "GroupController.AjaxSave"}}', form_data, function (out) {
if (out.status == 0) {
layer.msg("操作成功",{icon: 1},function () {
window.history.go(-1)
})
} else {
layer.msg(out.message)
}
}, "json");
return false;
});
//但是如果你的HTML是动态生成的自动渲染就会失效
//因此你需要在相应的地方,执行下述方法来手动渲染,跟这类似的还有 element.init();
form.render();
});
</script>

99
V2/views/group/list.html Normal file
View File

@@ -0,0 +1,99 @@
<div class="layui-layout layui-layout-admin" style="padding-left: 20px;">
<div class="layui-row" style="margin-top: 20px;">
<div class="layui-col-xs6">
<a class="layui-btn" data-type="tabAdd" href="/group/add">新增</a>
</div>
<div class="layui-col-xs6 search_text">
<form class="layui-form" action="" onsubmit="javascript:return false;">
<div class="demoTable">
<div class="layui-inline" style="width: 40%">
<input class="layui-input" name="groupName" id="groupName" autocomplete="off" placeholder="分组名称" >
</div>
<button class="layui-btn" data-type="reload">查询</button>
</div>
</form>
</div>
</div>
<table class="layui-hide" id="table_list" lay-filter="table_filter">
</table>
<script type="text/html" id="bar">
<!-- <a class="layui-btn layui-btn-primary layui-btn-xs" lay-event="detail">查看</a> -->
<a class="layui-btn layui-btn-xs" lay-event="edit">编辑</a>
<a class="layui-btn layui-btn-danger layui-btn-xs" lay-event="del">删除</a>
</script>
</div>
<script>
layui.use(['table','form','element'], function(){
var table = layui.table;
var form = layui.form;
var element = layui.element;
//方法级渲染
table.render({
elem: '#table_list'
,url: '/group/table'
,cols: [[
// {checkbox: true, fixed: true},
{field:'id', title: 'ID', align:'center',sort: true, width:150}
,{field:'group_name',title: '分组名称'}
,{field:'description', title: '分组说明'}
,{field:'create_time', title: '创建时间'}
,{field:'update_time', title: '更新时间'}
,{fixed: 'right', width:160, align:'center', toolbar: '#bar'}
]]
,id: 'listReload'
,page: true
,height: "full-130"
});
var $ = layui.$, active = {
reload: function(){
table.reload('listReload', {
where: {
groupName: $('#groupName').val(),
}
});
}
};
//监听工具条
table.on('tool(table_filter)', function(obj){
var data = obj.data;
if(obj.event === 'edit'){
window.location.href="/group/edit?id="+data.id
} else if(obj.event === 'del'){
layer.confirm('真的删除'+data.group_name+'分组么', function(index){
var jsData = {'id':data.id}
$.post('{{urlfor "GroupController.AjaxDel"}}', jsData, function (out) {
if (out.status == 0) {
layer.alert('删除成功了', {icon: 1},function(index){
layer.close(index);
window.location.reload();
});
} else {
layer.msg(out.message)
return
}
}, "json");
// obj.del();
layer.close(index);
})
}else{
layer.msg('操作不存在');
}
});
$('.demoTable .layui-btn').on('click', function(){
var type = $(this).data('type');
active[type] ? active[type].call(this) : '';
});
});
</script>

3
V2/views/home/start.html Normal file
View File

@@ -0,0 +1,3 @@
<div class="layui-row ml20">
首页内容
</div>

56
V2/views/login/login.html Normal file
View File

@@ -0,0 +1,56 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
<link rel="shortcut icon" href="/static/img/favicon.ico">
<meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
<title>{{.siteName}} 登录</title>
<link rel="stylesheet" href="/static/layui/css/layui.css?t=1504439386550" media="all">
<link rel="stylesheet" href="/static/login/css/login.css?t=1504439386551" media="all">
</head>
<body>
<div class="layui-carousel video_mask bg-img" id="login_carousel" >
<div class="login layui-anim layui-anim-up">
<h1>PPGo_Job管理后台</h1></p>
<form class="layui-form" action="javascript:void(0);" name="form" method="post">
<div class="layui-form-item">
<input type="text" name="username" lay-verify="required" placeholder="请输入账号" autocomplete="off" value="{{.username}}" class="layui-input">
</div>
<div class="layui-form-item">
<input type="password" name="password" lay-verify="required" placeholder="请输入密码" autocomplete="off" value="" class="layui-input">
</div>
<button class="layui-btn login_btn" lay-submit="" lay-filter="login">登陆系统</button>
</form>
</div>
</div>
<script src="/static/layui/layui.js?t=1504439386550" charset="utf-8"></script>
<!-- <script src="https://cdn.bootcss.com/jquery/1.8.3/jquery.js"></script>-->
<script type="text/javascript">
layui.use(['layer','form'], function(){
var $ = layui.$;
var form = layui.form;
form.on('submit(login)', function(data){
var form_data = $("form").serialize();
$.post('{{urlfor "LoginController.LoginIn"}}', form_data, function (out) {
if (out.status == 0) {
layer.msg("操作成功",{icon: 1},function () {
window.location.href="/home"
})
} else {
layer.msg(out.message)
}
}, "json");
return false;
});
})
</script>
</body>
</html>

View File

@@ -0,0 +1,45 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
<title>{{.siteName}}</title>
{{if .zTree}}
<link rel="stylesheet" href="/static/zTree3/css/demo.css?t=5" type="text/css">
<link rel="stylesheet" href="/static/zTree3/css/zTreeStyle/zTreeStyle.css" type="text/css">
{{end}}
<link rel="stylesheet" href="/static/layui/css/layui.css">
<link rel="stylesheet" href="/static/admin/css/app.css?t=2">
<link rel="stylesheet" href="/static/font-awesome/css/font-awesome.min.css" media="all">
</head>
<body>
<!-- 公共头部 start-->
<div class="nav-title">
<div class="tl fl">
{{.pageTitle}}
</div>
<div class="tr fr">
<button class="layui-btn layui-btn-radius layui-btn-primary layui-btn-xs" onclick="javascript:history.go(-1);"><i class="fa fa-arrow-left" aria-hidden="true"></i></button>
<button class="layui-btn layui-btn-radius layui-btn-primary layui-btn-xs" onclick="javascript:window.location.reload();"><i class="fa fa-refresh" aria-hidden="true"></i></button>
</div>
</div>
<!-- 公共头部 end-->
<script src="/static/layui/layui.js"></script>
{{.LayoutContent}}
<script>
layui.use(['table','form','element'], function(){
var table = layui.table;
var form = layui.form;
var element = layui.element;
});
</script>
</body>
</html>

196
V2/views/public/main.html Normal file
View File

@@ -0,0 +1,196 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
<title>{{.siteName}}</title>
<link rel="stylesheet" href="/static/layui/css/layui.css">
<link rel="stylesheet" href="/static/admin/css/main.css?t=10">
<link rel="stylesheet" href="/static/font-awesome/css/font-awesome.min.css" media="all">
</head>
<body class="layui-layout-body">
<div class="layui-layout layui-layout-admin">
<div class="layui-header">
<div class="layui-logo">{{.siteName}}</div>
<!-- 头部区域可配合layui已有的水平导航 -->
<ul class="layui-nav layui-layout-left">
</ul>
<ul class="layui-nav layui-layout-right pp-nav-item" >
<li class="layui-nav-item"><a href="/login_out">使用手册</a></li>
<li class="layui-nav-item pp-nav-item" >
<a href="javascript:;">
<img src="/static/admin/images/header.jpg" class="layui-nav-img"> {{.loginUserName}}
</a>
<dl class="layui-nav-child pp-nav-child">
{{/*<dd><a href="/user/edit">资料修改</a></dd>*/}}
<dd><a href="/login_out">华丽退出</a></dd>
</dl>
</li>
</ul>
</div>
<div class="layui-side layui-bg-black pp-side">
<div class="layui-side-scroll" style="width: 100%">
<div class="pp-side-fold"><i class="fa fa-navicon" aria-hidden="true"></i></div>
<!-- 左侧导航区域可配合layui已有的垂直导航 -->
<ul class="layui-nav layui-nav-tree" lay-filter="nav-side">
<li class="layui-nav-item layui-nav-itemed layui-this">
<a data-url="start.html" data-icon="fa-home" data-title="系统首页" data-id="0" class="pointer">
<i class="fa fa-home back_space1"></i><span>系统首页</span>
</a>
</li>
{{range $index, $elem := .SideMenu1}}
{{if $elem}}
<li class="layui-nav-item">
<a class="" href="javascript:;">
<i class="fa {{$elem.Icon}}"></i> &nbsp;&nbsp;<span>{{$elem.AuthName}}</span>
</a>
<dl class="layui-nav-child pp-nav-childs">
{{range $i, $e := $.SideMenu2}}
{{if eq $e.Pid $elem.Id}}
<dd>
<a data-url="{{$e.AuthUrl}}" data-icon="&#xe715;" data-title="{{$e.AuthName}}" class="pointer" data-id="{{$e.Id}}">
<i class="fa {{$e.Icon}}"></i> &nbsp;&nbsp;<span>{{$e.AuthName}}</span>
</a>
</dd>
{{end}}
{{end}}
</dl>
</li>
{{end}}
{{end}}
</ul>
</div>
</div>
<div class="layui-body" style="overflow: hidden;">
<!-- 内容主体区域 -->
<div class="layui-tab pp-tab" lay-filter="main_tab" lay-allowClose="true">
<ul class="layui-tab-title" style="background: #efefef">
<li class="pp-tab-li layui-this" id="default_tab" lay-id="0"><i class="fa fa-home back_space1"></i>系统首页</li>
</ul>
<div class="layui-tab-content" style="padding: 0px; ">
<div class="layui-tab-item layui-show" style="margin: 0px;overflow:hidden;">
<iframe src="/home/start" frameborder="0" scrolling="yes"></iframe>
</div>
</div>
</div>
</div>
<div class="layui-footer">
<!-- 底部固定区域 -->
© Power by <a href="http://www.haodaquan.com" target="_blank">PPGo_Job V2</a>
</div>
</div>
<script src="/static/layui/layui.js"></script>
<script>
//JavaScript代码区域
var $;
layui.use(['element','jquery','layer'], function(){
var element = layui.element;
$ = layui.jquery;
var layer = layui.layer;
var width,height;
//frame大小适应开始
resizeFrame();
window.onresize = function(){
resizeFrame();
}
function resizeFrame()
{
height = $(".layui-body").height()-40;
width = $(".layui-body").width();
$(".ayui-tab-content").width(width);
$(".ayui-tab-content").height(height);
$(".layui-tab-item").height(height);
$(".layui-tab-item").find("iframe").height(height);
$(".layui-tab-item").find("iframe").width(width);
}
//frame大小适应结束
//左侧菜单栏缩放
$('.pp-side-fold').on('click',function(){
var side_width = $(".layui-side").width();
if (side_width>50) {
$(".layui-side").width(50);
$(this).parent().find('span').hide();
$(".layui-body").addClass('pp-main');
$(".layui-footer").addClass('pp-main');
$(".layui-nav-child").find('dd').addClass('pp-ddsided');
$(".layui-nav-child").find('a').addClass('pp-pointer');
resizeFrame();
}else{
$(".layui-side").width(200);
$(this).parent().find('span').show();
$(".layui-body").removeClass('pp-main');
$(".layui-footer").removeClass('pp-main');
$(".layui-nav-child").find('dd').removeClass('pp-ddsided');
$(".layui-nav-child").find('a').removeClass('pp-pointer');
resizeFrame();
}
})
//添加标签
element.on('nav(nav-side)', function(elem){
var url = elem.attr('data-url');
var title = elem.attr('data-title');
var id = elem.attr('data-id');
var icon = elem.attr('data-icon');
if (!url || !title || !id) {
return;
}
//判断是否存在
var is_exist = 0;
$(".layui-tab-title").find("li").each(function(){
var nav_id = $(this).attr("lay-id");
if (nav_id==id) {
is_exist = 1
}
})
if (is_exist==1) {
element.tabChange("main_tab", id);
}else{
var content = '<iframe src="'+url+'" scrolling="yes" width="'+width+'" height="'+height+'" frameborder="0"></iframe>';
title = '<i class="fa '+icon+' back_space1"></i>'+title;
element.tabAdd('main_tab', {
title: title
,content: content //支持传入html
,id: id
});
element.tabChange("main_tab", id);
}
});
//tab标签选中菜单栏状态
$(".layui-tab-title").on("click","li",function(){
var id = $(this).attr('lay-id');
if (!id) {return;}
var sid = 0;
$(".layui-nav-item").find("a").each(function(){
sid = $(this).attr("data-id");
if (sid==id) {
$(this).click();
}
})
})
//tips
$(".pp-nav-childs").find('a').hover(function(){
layer.tips($(this).attr('data-title'), $(this),{time:1000});
});
element.render();
// $("#default_tab").html('<i class="fa fa-home back_space1"></i>系统首页');
});
</script>
</body>
</html>

158
V2/views/role/add.html Normal file
View File

@@ -0,0 +1,158 @@
<script type="text/javascript" src="/static/admin/js/jquery.min.js"></script>
<script type="text/javascript" src="/static/zTree3/js/jquery.ztree.core.js"></script>
<script type="text/javascript" src="/static/zTree3/js/jquery.ztree.excheck.js"></script>
<script type="text/javascript" src="/static/zTree3/js/jquery.ztree.exedit.js"></script>
<div class="layui-row">
<div style="margin: 10px 20px">
<blockquote class="layui-elem-quote">
说明新增角色请勾选左侧权限树
</blockquote>
</div>
<div class="layui-col-md5 zTreeDemoBackground" style="margin-left: 20px;margin-right: 0px">
<ul id="treeDemo" class="ztree" style="height:320px; width: auto; margin-bottom: 10px;">
</ul>
</div>
<div class="layui-col-md7">
<div class="layui-layout layui-layout-admin" style="padding-left: 40px;margin-top: 20px;">
<form class="layui-form" action="" onsubmit="javascript:;" name="form" method="post">
<div class="layui-form-item">
<label class="layui-form-label">角色名称</label>
<div class="layui-input-inline">
<input type="text" name="role_name" id="role_name" lay-verify="required" autocomplete="off" placeholder="请输入角色名称" class="layui-input">
</div>
<div class="layui-form-mid layui-word-aux"></div>
</div>
<div class="layui-form-item layui-form-text">
<label class="layui-form-label">备注</label>
<div class="layui-input-block">
<textarea name="detail" id="detail" placeholder="请输入内容" class="layui-textarea"></textarea>
</div>
</div>
<div class="layui-form-item">
<div class="layui-input-block">
<button class="layui-btn" lay-submit="" lay-filter="save">保存</button>
<button type="reset" class="layui-btn layui-btn-primary">重置</button>
</div>
</div>
</form>
</div>
</div>
</div>
<script>
var $,form;
layui.config({
base : "js/"
}).use(['form','element','layer','jquery'],function(){
form = layui.form; //只有执行了这一步,部分表单元素才会自动修饰成功
$ = layui.jquery;
// layer = layui.layer
$("form").submit(function () {
var role_name = $("#role_name").val();
if(!role_name){
layer.msg('请填写角色名称');
return false;
}
var detail = $("#detail").val();
var treeObj = $.fn.zTree.getZTreeObj("treeDemo");
var nodes = treeObj.getCheckedNodes(true);
var nodes_data = nodes_select_data(nodes,{});
var data = {'role_name':role_name,'detail':detail,'nodes_data':nodes_data}
console.log(data)
$.post('{{urlfor "RoleController.AjaxSave"}}', data, function (out) {
if (out.status == 0) {
layer.alert('保存成功了', {icon: 1},function(index){
window.history.go(-1)
});
} else {
layer.msg(out.message)
}
}, "json");
return false;
});
form.render();
//但是如果你的HTML是动态生成的自动渲染就会失效
//因此你需要在相应的地方,执行下述方法来手动渲染,跟这类似的还有 element.init();
});
</script>
<script type="text/javascript">
var zNodes = [{ id:1, pId:0, name:"数据错误"}];
// $(document).ready(function(){
var setting = {
check: {
enable: true
},
data: {
simpleData: {
enable: true
}
}
};
//加载树
refresh_tree();
function refresh_tree()
{
var time = Date.parse(new Date());
$.ajax({
type: "POST",
url: "/auth/getnodes",
data: {time:time},
dataType: 'json',
success: function(data) {
if(data.code==0){
zNodes = data.data;
$.fn.zTree.init($("#treeDemo"), setting, zNodes);
}
}
});
setCheck();
$("#py").bind("change", setCheck);
$("#sy").bind("change", setCheck);
$("#pn").bind("change", setCheck);
$("#sn").bind("change", setCheck);
}
function nodes_select_data(obj,nodes)
{
var nodes_str = '';
$.each(obj,function(k,v){
if(!v['name']) return nodes;
node_id = v["id"]
var i = 0;
for (var j in nodes) { i++}
nodes_str += v['id']+","
});
return nodes_str;
}
function setCheck() {
type = { "Y" : "ps", "N" : "ps" };
setting.check.chkboxType = type;
}
function showCode(str) {
var code = $("#code");
code.empty();
for (var i=0, l=str.length; i<l; i++) {
code.append("<li>"+str[i]+"</li>");
}
}
function formSubmit() {
}
// });
</script>

174
V2/views/role/edit.html Normal file
View File

@@ -0,0 +1,174 @@
<script type="text/javascript" src="/static/admin/js/jquery.min.js"></script>
<script type="text/javascript" src="/static/zTree3/js/jquery.ztree.core.js"></script>
<script type="text/javascript" src="/static/zTree3/js/jquery.ztree.excheck.js"></script>
<script type="text/javascript" src="/static/zTree3/js/jquery.ztree.exedit.js"></script>
<div class="layui-row">
<div style="margin: 10px 20px">
<blockquote class="layui-elem-quote">
修改角色以及角色权限
</blockquote>
</div>
<div class="layui-col-md5 zTreeDemoBackground" style="margin-left: 20px;margin-right: 0px">
<ul id="treeDemo" class="ztree" style="height:320px; width: auto; margin-bottom: 10px;">
</ul>
</div>
<div class="layui-col-md7">
<div class="layui-layout layui-layout-admin" style="padding-left: 40px;margin-top: 20px;">
<form class="layui-form" action="" onsubmit="javascript:;" name="form" method="post">
<div class="layui-form-item">
<label class="layui-form-label">角色名称</label>
<div class="layui-input-inline">
<input type="text" name="role_name" id="role_name" lay-verify="required" autocomplete="off" placeholder="请输入角色名称" class="layui-input" value="{{.role.role_name}}">
</div>
<div class="layui-form-mid layui-word-aux"></div>
</div>
<div class="layui-form-item layui-form-text">
<label class="layui-form-label">备注</label>
<div class="layui-input-block">
<textarea name="detail" id="detail" placeholder="请输入内容" class="layui-textarea">{{.role.detail}}</textarea>
</div>
</div>
<input type="hidden" value="{{.role.id}}" name="id" id="id">
<div class="layui-form-item">
<div class="layui-input-block">
<button class="layui-btn" lay-submit="" lay-filter="save">保存</button>
<button type="reset" class="layui-btn layui-btn-primary">重置</button>
</div>
</div>
</form>
</div>
</div>
</div>
<script>
var $,form;
layui.config({
base : "js/"
}).use(['form','element','layer','jquery'],function(){
form = layui.form; //只有执行了这一步,部分表单元素才会自动修饰成功
$ = layui.jquery;
// layer = layui.layer
$("form").submit(function () {
var role_name = $("#role_name").val();
if(!role_name){
layer.msg('请填写角色名称');
return false;
}
var id = $("#id").val()
var detail = $("#detail").val();
var treeObj = $.fn.zTree.getZTreeObj("treeDemo");
var nodes = treeObj.getCheckedNodes(true);
var nodes_data = nodes_select_data(nodes,{});
var data = {'role_name':role_name,'id':id,'detail':detail,'nodes_data':nodes_data}
console.log(data)
$.post('{{urlfor "RoleController.AjaxSave"}}', data, function (out) {
if (out.status == 0) {
layer.alert('保存成功了', {icon: 1},function(index){
layer.close(index);
window.history.go(-1)
});
} else {
layer.msg(out.message)
}
}, "json");
return false;
});
form.render();
//但是如果你的HTML是动态生成的自动渲染就会失效
//因此你需要在相应的地方,执行下述方法来手动渲染,跟这类似的还有 element.init();
});
</script>
<script type="text/javascript">
var zNodes = [{ id:1, pId:0, name:"数据错误"}];
var checked = {{.auth}}
console.log(checked)
// $(document).ready(function(){
var setting = {
check: {
enable: true
},
data: {
simpleData: {
enable: true
}
}
};
//加载树
refresh_tree();
function refresh_tree()
{
var time = Date.parse(new Date());
$.ajax({
type: "POST",
url: "/auth/getnodes",
data: {time:time},
dataType: 'json',
success: function(data) {
if(data.code==0){
zNodes = init_checked(data.data);
$.fn.zTree.init($("#treeDemo"), setting, zNodes);
}
}
});
setCheck();
$("#py").bind("change", setCheck);
$("#sy").bind("change", setCheck);
$("#pn").bind("change", setCheck);
$("#sn").bind("change", setCheck);
}
function init_checked(zNodes) {
$.each(zNodes,function(k,v){
if($.inArray(v.id,checked)>=0){
v.checked = true;
}
});
return zNodes;
}
function nodes_select_data(obj,nodes)
{
var nodes_str = '';
$.each(obj,function(k,v){
if(!v['name']) return nodes;
node_id = v["id"]
var i = 0;
for (var j in nodes) { i++}
nodes_str += v['id']+","
});
return nodes_str;
}
function setCheck() {
type = { "Y" : "ps", "N" : "ps" };
setting.check.chkboxType = type;
}
function showCode(str) {
var code = $("#code");
code.empty();
for (var i=0, l=str.length; i<l; i++) {
code.append("<li>"+str[i]+"</li>");
}
}
function formSubmit() {
}
// });
</script>

89
V2/views/role/list.html Normal file
View File

@@ -0,0 +1,89 @@
<div class="layui-layout layui-layout-admin" style="padding-left: 20px;">
<div class="layui-row" style="margin-top: 20px;">
<div class="layui-col-xs6">
<a class="layui-btn" data-type="tabAdd" href="/role/add">新增</a>
</div>
<div class="layui-col-xs6 search_text">
<form class="layui-form" action="" onsubmit="javascript:return false;">
<div class="demoTable">
<div class="layui-inline" style="width: 40%">
<input class="layui-input" name="roleName" id="roleName" autocomplete="off" placeholder="角色名称" >
</div>
<button class="layui-btn" data-type="reload">查询</button>
</div>
</form>
</div>
</div>
<table class="layui-hide" id="table_list" lay-filter="table_filter">
</table>
<script type="text/html" id="bar">
<a class="layui-btn layui-btn-xs" lay-event="edit">编辑</a>
<a class="layui-btn layui-btn-danger layui-btn-xs" lay-event="del">删除</a>
</script>
</div>
<script>
layui.use(['table','form','element'], function(){
var table = layui.table;
var form = layui.form;
var element = layui.element;
//方法级渲染
table.render({
elem: '#table_list'
,url: '/role/table'
,cols: [[
// {checkbox: true, fixed: true},
{field:'id', title: 'ID', align:'center',sort: true, width:150}
,{field:'role_name',title: '角色名称'}
,{field:'detail', title: '备注'}
,{fixed: 'right', width:160, align:'center', toolbar: '#bar'}
]]
,id: 'listReload'
,page: true
,height: "full-130"
});
var $ = layui.$, active = {
reload: function(){
table.reload('listReload', {
where: {
roleName: $('#roleName').val(),
}
});
}
};
$('.demoTable .layui-btn').on('click', function(){
var type = $(this).data('type');
active[type] ? active[type].call(this) : '';
});
//监听工具条
table.on('tool(table_filter)', function(obj){
var data = obj.data;
if(obj.event === 'detail'){
//layer.msg('ID'+ data.id + ' 的查看操作');
} else if(obj.event === 'del'){
layer.confirm('真的删除'+data.role_name+'角色么', function(index){
var jsData = {'id':data.id}
$.post('{{urlfor "RoleController.AjaxDel"}}', jsData, function (out) {
if (out.status == 0) {
layer.alert('删除成功了', {icon: 1},function(index){
layer.close(index);
window.location.reload();
});
} else {
layer.msg(out.message)
}
}, "json");
obj.del();
layer.close(index);
});
} else if(obj.event === 'edit'){
window.location.href="/role/edit?id="+data.id
}
});
});
</script>

152
V2/views/server/add.html Normal file
View File

@@ -0,0 +1,152 @@
<div class="layui-layout layui-layout-admin" style="padding-left: 40px;margin-top: 20px;">
{{/*<div style="margin: 10px 0px">*/}}
{{/*<blockquote class="layui-elem-quote">*/}}
{{/*说明:创建新的服务器资源*/}}
{{/*</blockquote>*/}}
{{/*</div>*/}}
<form class="layui-form" action="" method="post" >
<div class="layui-form-item">
<label class="layui-form-label mw200">所属分组</label>
<div class="layui-input-inline">
<select name="group_id" lay-verify="required">
{{range $k, $v := .serverGroup}}
<option value="{{$k}}">{{$v}}</option>
{{end}}
</select>
</div>
<div class="layui-form-mid layui-word-aux"></div>
</div>
<div class="layui-form-item">
<label class="layui-form-label mw200">服务器名称</label>
<div class="layui-input-inline mw400">
<input type="text" name="server_name" id="server_name" lay-verify="required" autocomplete="off" placeholder="服务器名称" class="layui-input" value="">
</div>
<div class="layui-form-mid layui-word-aux"></div>
</div>
<div class="layui-form-item">
<label class="layui-form-label mw200">登录账号</label>
<div class="layui-input-inline mw400">
<input type="text" name="server_account" id="server_account" lay-verify="required" autocomplete="off" placeholder="root" class="layui-input" value="">
</div>
<div class="layui-form-mid layui-word-aux"></div>
</div>
<div class="layui-form-item">
<label class="layui-form-label mw200">内网IP</label>
<div class="layui-input-inline mw400">
<input type="text" name="server_ip" id="server_ip" lay-verify="required" autocomplete="off" placeholder="192.168.1.12" class="layui-input" value="">
</div>
<div class="layui-form-mid layui-word-aux"></div>
</div>
<div class="layui-form-item">
<label class="layui-form-label mw200">外网IP</label>
<div class="layui-input-inline mw400">
<input type="text" name="server_outer_ip" id="server_outer_ip" lay-verify="required" autocomplete="off" placeholder="200.200.200.12" class="layui-input" value="">
</div>
<div class="layui-form-mid layui-word-aux"></div>
</div>
<div class="layui-form-item">
<label class="layui-form-label mw200">端口号</label>
<div class="layui-input-inline mw400">
<input type="text" name="port" id="port" lay-verify="required" autocomplete="off" placeholder="22" class="layui-input" value="">
</div>
<div class="layui-form-mid layui-word-aux"></div>
</div>
<div class="layui-form-item">
<label class="layui-form-label mw200">验证登录类型</label>
<div class="layui-input-inline mw400">
<input type="radio" name="type" lay-verify="type" value="0" title="密码" checked>
<input type="radio" name="type" lay-verify="type" value="1" title="密钥" >
</div>
<div class="layui-form-mid layui-word-aux"></div>
</div>
<div class="layui-form-item password">
<label class="layui-form-label mw200">密码</label>
<div class="layui-input-inline mw400">
<input type="text" name="password" id="password" lay-verify="" autocomplete="off" placeholder="服务器登录密码" class="layui-input" value="">
</div>
<div class="layui-form-mid layui-word-aux"></div>
</div>
<div class="layui-form-item key" style="display:none;">
<label class="layui-form-label mw200">公钥地址</label>
<div class="layui-input-inline mw400">
<input type="text" name="public_key_src" id="public_key_src" lay-verify="" autocomplete="off" placeholder="/Users/haodaquan/.ssh/pp_rsa.pub" class="layui-input" value="">
</div>
<div class="layui-form-mid layui-word-aux"><span id="des" style="cursor: pointer">说明</span></div>
</div>
<div class="layui-form-item key" style="display:none;">
<label class="layui-form-label mw200">私钥地址</label>
<div class="layui-input-inline mw400">
<input type="text" name="private_key_src" id="private_key_src" lay-verify="" autocomplete="off" placeholder="/Users/haodaquan/.ssh/pp_rsa" class="layui-input" value="">
</div>
<div class="layui-form-mid layui-word-aux"></div>
</div>
<div class="layui-form-item">
<label class="layui-form-label mw200">资源说明</label>
<div class="layui-input-inline mw400">
<textarea name="detail" id="detail" placeholder="请输入内容" class="layui-textarea"></textarea>
</div>
</div>
<input type="hidden" name="id" id="id" value="0">
<div class="layui-form-item">
<label class="layui-form-label mw200"></label>
<div class="layui-input-inline mw400">
<button class="layui-btn" lay-submit="" lay-filter="sub">立即提交</button>
<button type="reset" class="layui-btn layui-btn-primary">重置</button>
</div>
</div>
</form>
</div>
<script>
var $;
layui.use(['form','element','layer','jquery'],function(){
var form = layui.form; //只有执行了这一步,部分表单元素才会自动修饰成功
var $ = layui.jquery;
form.on('radio', function(data){
if(data.value==1){
$(".key").show();
$(".password").hide();
}else{
$(".password").show();
$(".key").hide();
}
});
$("#des").on('click',function () {
layer.tips('公钥和私钥地址请在本地服务器生成,命令ssh-keygen -t rsa -f pp_rsa', '#des', {
tips: [1, '#0FA6D8'] //还可配置颜色
});
})
form.on('submit(sub)', function(data){
var form_data = $("form").serialize();
$.post('{{urlfor "ServerController.AjaxSave"}}', form_data, function (out) {
if (out.status == 0) {
layer.msg("操作成功",{icon: 1},function () {
window.history.go(-1)
})
} else {
layer.msg(out.message)
}
}, "json");
return false;
});
//但是如果你的HTML是动态生成的自动渲染就会失效
//因此你需要在相应的地方,执行下述方法来手动渲染,跟这类似的还有 element.init();
form.render();
});
</script>

152
V2/views/server/edit.html Normal file
View File

@@ -0,0 +1,152 @@
<div class="layui-layout layui-layout-admin" style="padding-left: 40px;margin-top: 20px;">
{{/*<div style="margin: 10px 0px">*/}}
{{/*<blockquote class="layui-elem-quote">*/}}
{{/*说明:创建新的服务器资源*/}}
{{/*</blockquote>*/}}
{{/*</div>*/}}
<form class="layui-form" action="" method="post" >
<div class="layui-form-item">
<label class="layui-form-label mw200">所属分组</label>
<div class="layui-input-inline">
<select name="group_id" lay-verify="required">
{{range $k, $v := .serverGroup}}
<option value="{{$k}}" {{if eq $.server.group_id $k}} selected {{end}}>{{$v}}</option>
{{end}}
</select>
</div>
<div class="layui-form-mid layui-word-aux"></div>
</div>
<div class="layui-form-item">
<label class="layui-form-label mw200">服务器名称</label>
<div class="layui-input-inline mw400">
<input type="text" name="server_name" id="server_name" lay-verify="required" autocomplete="off" placeholder="服务器名称" class="layui-input" value="{{.server.server_name}}">
</div>
<div class="layui-form-mid layui-word-aux"></div>
</div>
<div class="layui-form-item">
<label class="layui-form-label mw200">登录账号</label>
<div class="layui-input-inline mw400">
<input type="text" name="server_account" id="server_account" lay-verify="required" autocomplete="off" placeholder="root" class="layui-input" value="{{.server.server_account}}">
</div>
<div class="layui-form-mid layui-word-aux"></div>
</div>
<div class="layui-form-item">
<label class="layui-form-label mw200">内网IP</label>
<div class="layui-input-inline mw400">
<input type="text" name="server_ip" id="server_ip" lay-verify="required" autocomplete="off" placeholder="192.168.1.12" class="layui-input" value="{{.server.server_ip}}">
</div>
<div class="layui-form-mid layui-word-aux"></div>
</div>
<div class="layui-form-item">
<label class="layui-form-label mw200">外网IP</label>
<div class="layui-input-inline mw400">
<input type="text" name="server_outer_ip" id="server_outer_ip" lay-verify="required" autocomplete="off" placeholder="200.200.200.12" class="layui-input" value="{{.server.server_outer_ip}}">
</div>
<div class="layui-form-mid layui-word-aux"></div>
</div>
<div class="layui-form-item">
<label class="layui-form-label mw200">端口号</label>
<div class="layui-input-inline mw400">
<input type="text" name="port" id="port" lay-verify="required" autocomplete="off" placeholder="22" class="layui-input" value="{{.server.port}}">
</div>
<div class="layui-form-mid layui-word-aux"></div>
</div>
<div class="layui-form-item">
<label class="layui-form-label mw200">验证登录类型</label>
<div class="layui-input-inline mw400">
<input type="radio" name="type" lay-verify="type" value="0" title="密码" {{if eq .server.type 0}}checked{{end}}>
<input type="radio" name="type" lay-verify="type" value="1" title="密钥" {{if eq .server.type 1}}checked{{end}}>
</div>
<div class="layui-form-mid layui-word-aux"></div>
</div>
<div class="layui-form-item password" style="{{if eq .server.type 1}}display:none{{end}}">
<label class="layui-form-label mw200">密码</label>
<div class="layui-input-inline mw400">
<input type="text" name="password" id="password" lay-verify="" autocomplete="off" placeholder="服务器登录密码" class="layui-input" value="{{.server.password}}">
</div>
<div class="layui-form-mid layui-word-aux"></div>
</div>
<div class="layui-form-item key" style="{{if eq .server.type 0}}display:none{{end}}">
<label class="layui-form-label mw200">公钥地址</label>
<div class="layui-input-inline mw400">
<input type="text" name="public_key_src" id="public_key_src" lay-verify="" autocomplete="off" placeholder="/Users/haodaquan/.ssh/pp_rsa.pub" class="layui-input" value="{{.server.public_key_src}}">
</div>
<div class="layui-form-mid layui-word-aux"><span id="des" style="cursor: pointer">说明</span></div>
</div>
<div class="layui-form-item key" style="{{if eq .server.type 0}}display:none{{end}}">
<label class="layui-form-label mw200">私钥地址</label>
<div class="layui-input-inline mw400">
<input type="text" name="private_key_src" id="private_key_src" lay-verify="" autocomplete="off" placeholder="/Users/haodaquan/.ssh/pp_rsa" class="layui-input" value="{{.server.private_key_src}}">
</div>
<div class="layui-form-mid layui-word-aux"></div>
</div>
<div class="layui-form-item">
<label class="layui-form-label mw200">资源说明</label>
<div class="layui-input-inline mw400">
<textarea name="detail" id="detail" placeholder="请输入内容" class="layui-textarea">{{.server.detail}}</textarea>
</div>
</div>
<input type="hidden" name="id" id="id" value="{{.server.id}}">
<div class="layui-form-item">
<label class="layui-form-label mw200"></label>
<div class="layui-input-inline mw400">
<button class="layui-btn" lay-submit="" lay-filter="sub">立即提交</button>
<button type="reset" class="layui-btn layui-btn-primary">重置</button>
</div>
</div>
</form>
</div>
<script>
var $;
layui.use(['form','element','layer','jquery'],function(){
var form = layui.form; //只有执行了这一步,部分表单元素才会自动修饰成功
var $ = layui.jquery;
form.on('radio', function(data){
if(data.value==1){
$(".key").show();
$(".password").hide();
}else{
$(".password").show();
$(".key").hide();
}
});
$("#des").on('click',function () {
layer.tips('公钥和私钥地址请在本地服务器生成,命令ssh-keygen -t rsa -f pp_rsa', '#des', {
tips: [1, '#0FA6D8'] //还可配置颜色
});
})
form.on('submit(sub)', function(data){
var form_data = $("form").serialize();
$.post('{{urlfor "ServerController.AjaxSave"}}', form_data, function (out) {
if (out.status == 0) {
layer.msg("操作成功",{icon: 1},function () {
window.history.go(-1)
})
} else {
layer.msg(out.message)
}
}, "json");
return false;
});
//但是如果你的HTML是动态生成的自动渲染就会失效
//因此你需要在相应的地方,执行下述方法来手动渲染,跟这类似的还有 element.init();
form.render();
});
</script>

99
V2/views/server/list.html Normal file
View File

@@ -0,0 +1,99 @@
<div class="layui-layout layui-layout-admin" style="padding-left: 20px;">
<div class="layui-row" style="margin-top: 20px;">
<div class="layui-col-xs6">
<a class="layui-btn" data-type="tabAdd" href="/server/add">新增</a>
</div>
<div class="layui-col-xs6 search_text">
<form class="layui-form" action="" onsubmit="javascript:return false;">
<div class="demoTable">
<div class="layui-inline" style="width: 40%">
<input class="layui-input" name="serverName" id="serverName" autocomplete="off" placeholder="资源名称" >
</div>
<button class="layui-btn" data-type="reload">查询</button>
</div>
</form>
</div>
</div>
<table class="layui-hide" id="table_list" lay-filter="table_filter">
</table>
<script type="text/html" id="bar">
<!-- <a class="layui-btn layui-btn-primary layui-btn-xs" lay-event="detail">查看</a> -->
<a class="layui-btn layui-btn-xs" lay-event="edit">编辑</a>
<a class="layui-btn layui-btn-danger layui-btn-xs" lay-event="del">删除</a>
</script>
</div>
<script>
layui.use(['table','form','element'], function(){
var table = layui.table;
var form = layui.form;
var element = layui.element;
//方法级渲染
table.render({
elem: '#table_list'
,url: '/server/table'
,cols: [[
// {checkbox: true, fixed: true},
{field:'id', title: 'ID', align:'center',sort: true, width:150}
,{field:'server_name',title: '资源名称'}
,{field:'group_name',title: '分组名称'}
,{field:'type', title: '登录类型'}
,{field:'detail', title: '备注'}
// ,{field:'status_text', title: '状态'}
,{fixed: 'right', width:160, align:'center', toolbar: '#bar'}
]]
,id: 'listReload'
,page: true
,height: "full-130"
});
var $ = layui.$, active = {
reload: function(){
table.reload('listReload', {
where: {
serverName: $('#serverName').val(),
}
});
}
};
//监听工具条
table.on('tool(table_filter)', function(obj){
var data = obj.data;
if(obj.event === 'edit'){
window.location.href="/server/edit?id="+data.id
} else if(obj.event === 'del'){
layer.confirm('真的删除'+data.server_name+'服务器资源么', function(index){
var jsData = {'id':data.id}
$.post('{{urlfor "ServerController.AjaxDel"}}', jsData, function (out) {
if (out.status == 0) {
layer.alert(out.message, {icon: 1},function(index){
layer.close(index);
window.location.reload();
});
} else {
layer.msg(out.message)
}
}, "json");
// obj.del();
layer.close(index);
})
}else{
layer.msg('操作不存在');
}
});
$('.demoTable .layui-btn').on('click', function(){
var type = $(this).data('type');
active[type] ? active[type].call(this) : '';
});
});
</script>

View File

@@ -0,0 +1,56 @@
<div class="layui-layout layui-layout-admin" style="padding-left: 40px;margin-top: 20px;">
<div style="margin: 10px 0px">
<blockquote class="layui-elem-quote">
说明新建资源分组
</blockquote>
</div>
<form class="layui-form" action="" method="post" >
<div class="layui-form-item">
<label class="layui-form-label">分组名称</label>
<div class="layui-input-inline" style="min-width: 200px;">
<input type="text" name="group_name" id="group_name" lay-verify="required" autocomplete="off" placeholder="资源分组" class="layui-input" value="">
</div>
<div class="layui-form-mid layui-word-aux">*</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">分组说明</label>
<div class="layui-input-inline" style="min-width: 400px;">
<textarea name="description" id="description" placeholder="请输入内容" class="layui-textarea"></textarea>
</div>
</div>
<input type="hidden" id="id" value="0">
<div class="layui-form-item">
<div class="layui-input-block">
<button class="layui-btn" lay-submit="" lay-filter="sub">立即提交</button>
<button type="reset" class="layui-btn layui-btn-primary">重置</button>
</div>
</div>
</form>
</div>
<script>
var $;
layui.use(['form','element','layer','jquery'],function(){
var form = layui.form; //只有执行了这一步,部分表单元素才会自动修饰成功
var $ = layui.jquery;
form.on('submit(sub)', function(data){
var form_data = $("form").serialize();
$.post('{{urlfor "ServerGroupController.AjaxSave"}}', form_data, function (out) {
if (out.status == 0) {
layer.msg("操作成功",{icon: 1},function () {
window.history.go(-1)
})
} else {
layer.msg(out.message)
}
}, "json");
return false;
});
//但是如果你的HTML是动态生成的自动渲染就会失效
//因此你需要在相应的地方,执行下述方法来手动渲染,跟这类似的还有 element.init();
form.render();
});
</script>

View File

@@ -0,0 +1,56 @@
<div class="layui-layout layui-layout-admin" style="padding-left: 40px;margin-top: 20px;">
<div style="margin: 10px 0px">
<blockquote class="layui-elem-quote">
说明新建资源分组
</blockquote>
</div>
<form class="layui-form" action="" method="post" >
<div class="layui-form-item">
<label class="layui-form-label">分组名称</label>
<div class="layui-input-inline" style="min-width: 200px;">
<input type="text" value="{{.group.group_name}}" name="group_name" id="group_name" lay-verify="required" autocomplete="off" placeholder="资源分组" class="layui-input" >
</div>
<div class="layui-form-mid layui-word-aux">*</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">分组说明</label>
<div class="layui-input-inline" style="min-width: 400px;">
<textarea name="description" id="description" placeholder="请输入内容" class="layui-textarea">{{.group.description}}</textarea>
</div>
</div>
<input type="hidden" id="id" name="id" value="{{.group.id}}">
<div class="layui-form-item">
<div class="layui-input-block">
<button class="layui-btn" lay-submit="" lay-filter="sub">立即提交</button>
<button type="reset" class="layui-btn layui-btn-primary">重置</button>
</div>
</div>
</form>
</div>
<script>
var $;
layui.use(['form','element','layer','jquery'],function(){
var form = layui.form; //只有执行了这一步,部分表单元素才会自动修饰成功
var $ = layui.jquery;
form.on('submit(sub)', function(data){
var form_data = $("form").serialize();
$.post('{{urlfor "ServerGroupController.AjaxSave"}}', form_data, function (out) {
if (out.status == 0) {
layer.msg("操作成功",{icon: 1},function () {
window.history.go(-1)
})
} else {
layer.msg(out.message)
}
}, "json");
return false;
});
//但是如果你的HTML是动态生成的自动渲染就会失效
//因此你需要在相应的地方,执行下述方法来手动渲染,跟这类似的还有 element.init();
form.render();
});
</script>

View File

@@ -0,0 +1,99 @@
<div class="layui-layout layui-layout-admin" style="padding-left: 20px;">
<div class="layui-row" style="margin-top: 20px;">
<div class="layui-col-xs6">
<a class="layui-btn" data-type="tabAdd" href="/servergroup/add">新增</a>
</div>
<div class="layui-col-xs6 search_text">
<form class="layui-form" action="" onsubmit="javascript:return false;">
<div class="demoTable">
<div class="layui-inline" style="width: 40%">
<input class="layui-input" name="groupName" id="groupName" autocomplete="off" placeholder="分组名称" >
</div>
<button class="layui-btn" data-type="reload">查询</button>
</div>
</form>
</div>
</div>
<table class="layui-hide" id="table_list" lay-filter="table_filter">
</table>
<script type="text/html" id="bar">
<!-- <a class="layui-btn layui-btn-primary layui-btn-xs" lay-event="detail">查看</a> -->
<a class="layui-btn layui-btn-xs" lay-event="edit">编辑</a>
<a class="layui-btn layui-btn-danger layui-btn-xs" lay-event="del">删除</a>
</script>
</div>
<script>
layui.use(['table','form','element'], function(){
var table = layui.table;
var form = layui.form;
var element = layui.element;
//方法级渲染
table.render({
elem: '#table_list'
,url: '/servergroup/table'
,cols: [[
// {checkbox: true, fixed: true},
{field:'id', title: 'ID', align:'center',sort: true, width:150}
,{field:'group_name',title: '分组名称'}
,{field:'description', title: '分组说明'}
,{field:'create_time', title: '创建时间'}
,{field:'update_time', title: '更新时间'}
,{fixed: 'right', width:160, align:'center', toolbar: '#bar'}
]]
,id: 'listReload'
,page: true
,height: "full-130"
});
var $ = layui.$, active = {
reload: function(){
table.reload('listReload', {
where: {
groupName: $('#groupName').val(),
}
});
}
};
//监听工具条
table.on('tool(table_filter)', function(obj){
var data = obj.data;
if(obj.event === 'edit'){
window.location.href="/servergroup/edit?id="+data.id
} else if(obj.event === 'del'){
layer.confirm('真的删除'+data.group_name+'分组么', function(index){
var jsData = {'id':data.id}
$.post('{{urlfor "ServerGroupController.AjaxDel"}}', jsData, function (out) {
if (out.status == 0) {
layer.alert('删除成功了', {icon: 1},function(index){
layer.close(index);
window.location.reload();
});
} else {
layer.msg(out.message)
return
}
}, "json");
// obj.del();
layer.close(index);
})
}else{
layer.msg('操作不存在');
}
});
$('.demoTable .layui-btn').on('click', function(){
var type = $(this).data('type');
active[type] ? active[type].call(this) : '';
});
});
</script>

130
V2/views/task/add.html Normal file
View File

@@ -0,0 +1,130 @@
<div class="layui-layout layui-layout-admin" style="padding-left: 40px;margin-top: 20px;">
{{/*<div style="margin: 10px 0px">*/}}
{{/*<blockquote class="layui-elem-quote">*/}}
{{/*说明:创建新的服务器资源*/}}
{{/*</blockquote>*/}}
{{/*</div>*/}}
<form class="layui-form" action="" method="post" >
<div class="layui-form-item">
<label class="layui-form-label mw200">任务名称</label>
<div class="layui-input-inline mw400">
<input type="text" name="task_name" id="task_name" lay-verify="required" autocomplete="off" placeholder="任务名称" class="layui-input" value="">
</div>
<div class="layui-form-mid layui-word-aux"></div>
</div>
<div class="layui-form-item">
<label class="layui-form-label mw200">所属分组</label>
<div class="layui-input-inline">
<select name="group_id" lay-verify="required">
{{range $k, $v := .taskGroup}}
<option value="{{$k}}">{{$v}}</option>
{{end}}
</select>
</div>
<div class="layui-form-mid layui-word-aux"></div>
</div>
<div class="layui-form-item">
<label class="layui-form-label mw200">服务分组</label>
<div class="layui-input-inline">
<select name="group_id" lay-verify="required">
{{range $k, $v := .serverGroup}}
<option value="{{$k}}">{{$v}}</option>
{{end}}
</select>
</div>
<div class="layui-form-mid layui-word-aux"></div>
</div>
<div class="layui-form-item">
<label class="layui-form-label mw200">任务说明</label>
<div class="layui-input-inline mw400">
<textarea name="description" id="description" rows="2" placeholder="请输入内容" class="layui-textarea"></textarea>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label mw200">是否单例</label>
<div class="layui-input-inline mw400">
<input type="radio" name="concurrent" lay-verify="concurrent" value="0" title="是" checked>
<input type="radio" name="concurrent" lay-verify="concurrent" value="1" title="否" >
</div>
<div class="layui-form-mid layui-word-aux">设为的话如果该任务在上一个时间点还没执行完则略过不执行</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label mw200">时间表达式</label>
<div class="layui-input-inline mw400">
<input type="text" name="cron_spec" id="cron_spec" lay-verify="required" autocomplete="off" placeholder="时间表达式" class="layui-input" value="">
</div>
<div class="layui-form-mid layui-word-aux"><a href="/help" target="_blank"><i style="font-size: 12px">支持秒级定时详见参见使用帮助</i></a></div>
</div>
<div class="layui-form-item">
<label class="layui-form-label mw200">命令脚本</label>
<div class="layui-input-inline mw400">
<textarea name="command" id="command" rows="10" placeholder="请输入内容" class="layui-textarea"></textarea>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label mw200">超时设置</label>
<div class="layui-input-inline mw400">
<input type="text" name="timeout" id="timeout" lay-verify="required" autocomplete="off" placeholder="单位:秒,默认一天" class="layui-input" value="">
</div>
<div class="layui-form-mid layui-word-aux">单位默认一天</div>
</div>
<input type="hidden" name="id" id="id" value="0">
<div class="layui-form-item">
<label class="layui-form-label mw200"></label>
<div class="layui-input-inline mw400">
<button class="layui-btn" lay-submit="" lay-filter="sub">立即提交</button>
<button type="reset" class="layui-btn layui-btn-primary">重置</button>
</div>
</div>
</form>
</div>
<script>
var $;
layui.use(['form','element','layer','jquery'],function(){
var form = layui.form; //只有执行了这一步,部分表单元素才会自动修饰成功
var $ = layui.jquery;
form.on('radio', function(data){
if(data.value==1){
$(".key").show();
$(".password").hide();
}else{
$(".password").show();
$(".key").hide();
}
});
$("#des").on('click',function () {
layer.tips('公钥和私钥地址请在本地服务器生成,命令ssh-keygen -t rsa -f pp_rsa', '#des', {
tips: [1, '#0FA6D8'] //还可配置颜色
});
})
form.on('submit(sub)', function(data){
var form_data = $("form").serialize();
$.post('{{urlfor "ServerController.AjaxSave"}}', form_data, function (out) {
if (out.status == 0) {
layer.msg("操作成功",{icon: 1},function () {
window.history.go(-1)
})
} else {
layer.msg(out.message)
}
}, "json");
return false;
});
//但是如果你的HTML是动态生成的自动渲染就会失效
//因此你需要在相应的地方,执行下述方法来手动渲染,跟这类似的还有 element.init();
form.render();
});
</script>

View File

0
V2/views/task/edit.html Normal file
View File

91
V2/views/task/list.html Normal file
View File

@@ -0,0 +1,91 @@
<div class="layui-layout layui-layout-admin" style="padding-left: 20px;">
<div class="layui-row" style="margin-top: 20px;">
<div class="layui-col-xs6">
<a class="layui-btn" data-type="tabAdd" href="/task/add">新增</a>
</div>
<div class="layui-col-xs6 search_text">
<form class="layui-form" action="" onsubmit="javascript:return false;">
<div class="demoTable">
<div class="layui-inline" style="width: 40%">
<input class="layui-input" name="taskName" id="taskName" autocomplete="off" placeholder="任务名称" >
</div>
<button class="layui-btn" data-type="reload">查询</button>
</div>
</form>
</div>
</div>
<table class="layui-hide" id="table_list" lay-filter="table_filter">
</table>
<script type="text/html" id="bar">
<a class="layui-btn layui-btn-danger layui-btn-xs" lay-event="status">|</a>
<a class="layui-btn layui-btn-xs" lay-event="edit">编辑</a>
<a class="layui-btn layui-btn-xs layui-btn-primary" lay-event="detail">查看</a>
<a class="layui-btn layui-btn-warm layui-btn-xs" lay-event="run">执行</a>
<a class="layui-btn layui-btn-normal layui-btn-xs" lay-event="log">日志</a>
</script>
</div>
<script>
layui.use(['table','form','element'], function(){
var table = layui.table;
var form = layui.form;
var element = layui.element;
//方法级渲染
table.render({
elem: '#table_list'
,url: '/task/table'
,cols: [[
{checkbox: true, fixed: true},
{field:'id', title: 'ID', align:'center',sort: true, width:50}
,{field:'task_name',title: '任务名称',width:150}
,{field:'description',width:160,title: '任务说明'}
,{field:'group_name',width:100, title: '所属分组'}
,{field:'next_time', width:170,title: '下次执行时间'}
,{field:'pre_time', width:170,title: '上次执行时间'}
,{field:'execute_times', width:70,title: '次数'}
,{fixed: 'right', width:260, align:'center', toolbar: '#bar'}
]]
,id: 'listReload'
,page: true
,height: "full-130"
});
var $ = layui.$, active = {
reload: function(){
table.reload('listReload', {
where: {
groupName: $('#groupName').val(),
}
});
}
};
//监听工具条
table.on('tool(table_filter)', function(obj){
var data = obj.data;
if(obj.event === 'edit'){
window.location.href="/task/edit?id="+data.id
} else if(obj.event === 'log'){
window.location.href="/log/list?task_id="+data.id;
}else if (obj.event==='detail'){
window.location.href='/task/detail?id='+data.id;
}else if (obj.event==='run'){
layer.msg("执行")
}else if (obj.event==='status'){
layer.msg("状态")
}else{
layer.msg('操作不存在')
}
});
$('.demoTable .layui-btn').on('click', function(){
var type = $(this).data('type');
active[type] ? active[type].call(this) : '';
});
});
</script>

112
V2/views/user/edit.html Normal file
View File

@@ -0,0 +1,112 @@
<div class="layui-layout layui-layout-admin" style="padding-left: 40px;margin-top: 20px;">
<form class="layui-form" action="" method="post" >
<div class="layui-form-item">
<label class="layui-form-label">登录账号</label>
<div class="layui-input-inline">
<input type="text" name="login_name" readonly id="login_name" lay-verify="required" autocomplete="off" placeholder="登录账号" class="layui-input" value="{{.admin.login_name}}">
</div>
<div class="layui-form-mid layui-word-aux">*登录不允许修改</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">真实姓名</label>
<div class="layui-input-inline">
<input type="text" name="real_name" id="real_name" lay-verify="required" autocomplete="off" placeholder="真实姓名" class="layui-input" value="{{.admin.real_name}}">
</div>
<div class="layui-form-mid layui-word-aux">*</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">手机号码</label>
<div class="layui-input-inline">
<input type="text" name="phone" lay-verify="phone|required" autocomplete="off" placeholder="手机号码" class="layui-input" value="{{.admin.phone}}">
</div>
<div class="layui-form-mid layui-word-aux">*</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">电子邮箱</label>
<div class="layui-input-inline">
<input type="text" name="email" id="email" lay-verify="email" autocomplete="off" placeholder="电子邮箱" class="layui-input" value="{{.admin.email}}">
</div>
<div class="layui-form-mid layui-word-aux">*</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">是否修改</label>
<div class="layui-input-inline">
<input type="radio" name="reset_pwd" lay-verify="reset_pwd" value="1" title="是">
<input type="radio" name="reset_pwd" lay-verify="reset_pwd" value="2" title="否" checked>
</div>
<div class="layui-form-mid layui-word-aux"></div>
</div>
<div class="layui-form-item password" style="display:none;">
<label class="layui-form-label">旧密码</label>
<div class="layui-input-inline">
<input type="password" name="password_old" id="password_old" lay-verify="" autocomplete="off" placeholder="旧密码" class="layui-input" value="">
</div>
<div class="layui-form-mid layui-word-aux"></div>
</div>
<div class="layui-form-item password" style="display:none;">
<label class="layui-form-label">设置密码</label>
<div class="layui-input-inline">
<input type="password" name="password_new1" id="password_new1" lay-verify="" autocomplete="off" placeholder="新密码" class="layui-input" value="">
</div>
<div class="layui-form-mid layui-word-aux"></div>
</div>
<div class="layui-form-item password" style="display:none;">
<label class="layui-form-label">重复密码</label>
<div class="layui-input-inline">
<input type="password" name="password_new2" id="password_new2" lay-verify="" autocomplete="off" placeholder="新密码" class="layui-input" value="">
</div>
<div class="layui-form-mid layui-word-aux"></div>
</div>
<input type="hidden" id="id" name="id" value="{{.admin.id}}">
<div class="layui-form-item">
<div class="layui-input-block">
<button class="layui-btn" lay-submit="" lay-filter="sub">立即提交</button>
<button type="reset" class="layui-btn layui-btn-primary">重置</button>
</div>
</div>
</form>
</div>
<script>
var $;
layui.config({
base : "js/"
}).use(['form','element','layer','jquery'],function(){
var form = layui.form; //只有执行了这一步,部分表单元素才会自动修饰成功
var $ = layui.jquery;
form.on('radio', function(data){
if(data.value==1){
$(".password").show()
}else{
$(".password").hide()
}
});
form.on('submit(sub)', function(data){
var form_data = $("form").serialize();
$.post('{{urlfor "UserController.AjaxSave"}}', form_data, function (out) {
if (out.status == 0) {
layer.msg("操作成功,请重新登录",{icon: 1},function () {
top.location.href="/login_out"
})
} else {
layer.msg(out.message)
}
}, "json");
return false;
});
//但是如果你的HTML是动态生成的自动渲染就会失效
//因此你需要在相应的地方,执行下述方法来手动渲染,跟这类似的还有 element.init();
form.render();
});
</script>