V2
This commit is contained in:
100
V2/views/admin/add.html
Normal file
100
V2/views/admin/add.html
Normal 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
109
V2/views/admin/edit.html
Normal 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
110
V2/views/admin/list.html
Normal 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
375
V2/views/auth/list.html
Normal 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
51
V2/views/ban/add.html
Normal 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
51
V2/views/ban/edit.html
Normal 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
122
V2/views/ban/list.html
Normal 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
56
V2/views/group/add.html
Normal 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
56
V2/views/group/edit.html
Normal 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
99
V2/views/group/list.html
Normal 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
3
V2/views/home/start.html
Normal file
@@ -0,0 +1,3 @@
|
||||
<div class="layui-row ml20">
|
||||
首页内容
|
||||
</div>
|
||||
56
V2/views/login/login.html
Normal file
56
V2/views/login/login.html
Normal 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>
|
||||
|
||||
|
||||
|
||||
45
V2/views/public/layout.html
Normal file
45
V2/views/public/layout.html
Normal 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
196
V2/views/public/main.html
Normal 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> <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="" data-title="{{$e.AuthName}}" class="pointer" data-id="{{$e.Id}}">
|
||||
<i class="fa {{$e.Icon}}"></i> <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
158
V2/views/role/add.html
Normal 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
174
V2/views/role/edit.html
Normal 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
89
V2/views/role/list.html
Normal 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
152
V2/views/server/add.html
Normal 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
152
V2/views/server/edit.html
Normal 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
99
V2/views/server/list.html
Normal 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>
|
||||
56
V2/views/servergroup/add.html
Normal file
56
V2/views/servergroup/add.html
Normal 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>
|
||||
56
V2/views/servergroup/edit.html
Normal file
56
V2/views/servergroup/edit.html
Normal 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>
|
||||
99
V2/views/servergroup/list.html
Normal file
99
V2/views/servergroup/list.html
Normal 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
130
V2/views/task/add.html
Normal 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>
|
||||
0
V2/views/task/detail.html
Normal file
0
V2/views/task/detail.html
Normal file
0
V2/views/task/edit.html
Normal file
0
V2/views/task/edit.html
Normal file
91
V2/views/task/list.html
Normal file
91
V2/views/task/list.html
Normal 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
112
V2/views/user/edit.html
Normal 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>
|
||||
Reference in New Issue
Block a user