更新角色列表,新增,修改功能

pull/64/head
fengshuonan 2021-01-08 21:54:19 +08:00
parent fd3def6602
commit f6556c0637
11 changed files with 190 additions and 181 deletions

View File

@ -28,23 +28,23 @@ public class AppViewController {
}
/**
*
*
*
* @author fengshuonan
* @date 2021/1/6 13:37
*/
@GetResource(name = "新增角色界面", path = "/view/app/add")
@GetResource(name = "新增应用界面", path = "/view/app/add")
public String appAdd() {
return "/modular/auth/app/app_add.html";
}
/**
*
*
*
* @author fengshuonan
* @date 2021/1/6 13:37
*/
@GetResource(name = "编辑角色界面", path = "/view/app/edit")
@GetResource(name = "编辑应用界面", path = "/view/app/edit")
public String appEdit() {
return "/modular/auth/app/app_edit.html";
}

View File

@ -0,0 +1,52 @@
package cn.stylefeng.guns.modular.role;
import cn.stylefeng.roses.kernel.resource.api.annotation.ApiResource;
import cn.stylefeng.roses.kernel.resource.api.annotation.GetResource;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Controller;
/**
*
*
* @author fengshuonan
* @date 2021/1/8 20:55
*/
@Controller
@Slf4j
@ApiResource(name = "角色管理界面")
public class RoleViewController {
/**
*
*
* @author fengshuonan
* @date 2021/1/8 20:55
*/
@GetResource(name = "应用管理首页", path = "/view/role")
public String roleIndex() {
return "/modular/auth/role/role.html";
}
/**
*
*
* @author fengshuonan
* @date 2021/1/8 20:57
*/
@GetResource(name = "新增角色界面", path = "/view/role/add")
public String roleAdd() {
return "/modular/auth/role/role_add.html";
}
/**
*
*
* @author fengshuonan
* @date 2021/1/8 20:57
*/
@GetResource(name = "编辑角色界面", path = "/view/role/edit")
public String roleEdit() {
return "/modular/auth/role/role_edit.html";
}
}

View File

@ -1,17 +1,14 @@
layui.use(['layer', 'form', 'table', 'admin', 'ax', 'func'], function () {
layui.use(['layer', 'form', 'table', 'admin', 'HttpRequest', 'func'], function () {
var $ = layui.$;
var layer = layui.layer;
var form = layui.form;
var table = layui.table;
var $ax = layui.ax;
var admin = layui.admin;
var HttpRequest = layui.HttpRequest;
var func = layui.func;
/**
* 系统管理--角色管理
*/
var Role = {
tableId: "roleTable", //表格id
tableId: "roleTable",
condition: {
roleName: ""
}
@ -24,10 +21,42 @@ layui.use(['layer', 'form', 'table', 'admin', 'ax', 'func'], function () {
return [[
{type: 'checkbox'},
{field: 'roleId', hide: true, sort: true, title: '角色id'},
{field: 'name', align: "center", sort: true, title: '名称'},
{field: 'pName', align: "center", sort: true, title: '上级角色'},
{field: 'description', align: "center", sort: true, title: '别名'},
{align: 'center', toolbar: '#tableBar', title: '操作', minWidth: 200}
{field: 'roleName', align: "center", sort: true, title: '角色名称'},
{field: 'roleCode', align: "center", sort: true, title: '角色编码'},
{field: 'roleSort', align: "center", sort: true, title: '排序'},
{
field: 'dataScopeType', align: "center", sort: true, title: '数据范围类型', templet: function (data) {
if (data.dataScopeType === 10) {
return "仅本人数据";
}
if (data.dataScopeType === 20) {
return "本部门数据";
}
if (data.dataScopeType === 30) {
return "本部门及以下数据";
}
if (data.dataScopeType === 40) {
return "指定部门数据";
}
if (data.dataScopeType === 50) {
return "全部数据";
}
return "未知";
}
},
{
field: 'statusFlag', align: "center", sort: true, title: '状态', templet: function (data) {
if (data.statusFlag === 1) {
return "启用";
}
if (data.statusFlag === 2) {
return "禁用";
}
return "未知";
}
},
{field: 'remark', align: "center", sort: true, title: '备注'},
{align: 'center', toolbar: '#tableBar', title: '操作', minWidth: 300}
]];
};
@ -49,7 +78,7 @@ layui.use(['layer', 'form', 'table', 'admin', 'ax', 'func'], function () {
func.open({
height: 470,
title: '添加角色',
content: Feng.ctxPath + '/role/role_add',
content: Feng.ctxPath + '/view/role/add',
tableId: Role.tableId
});
};
@ -63,23 +92,11 @@ layui.use(['layer', 'form', 'table', 'admin', 'ax', 'func'], function () {
func.open({
height: 470,
title: '修改角色',
content: Feng.ctxPath + "/role/role_edit?roleId=" + data.roleId,
content: Feng.ctxPath + "/view/role/edit?roleId=" + data.roleId,
tableId: Role.tableId
});
};
/**
* 导出excel按钮
*/
Role.exportExcel = function () {
var checkRows = table.checkStatus(Role.tableId);
if (checkRows.data.length === 0) {
Feng.error("请选择要导出的数据");
} else {
table.exportFile(tableResult.config.id, checkRows.data, 'xls');
}
};
/**
* 点击删除角色
*
@ -87,16 +104,16 @@ layui.use(['layer', 'form', 'table', 'admin', 'ax', 'func'], function () {
*/
Role.onDeleteRole = function (data) {
var operation = function () {
var ajax = new $ax(Feng.ctxPath + "/role/remove", function () {
var request = new HttpRequest(Feng.ctxPath + "/sysRole/delete", 'post', function () {
Feng.success("删除成功!");
table.reload(Role.tableId);
}, function (data) {
Feng.error("删除失败!" + data.responseJSON.message + "!");
Feng.error("删除失败!" + data.message + "!");
});
ajax.set("roleId", data.roleId);
ajax.start();
request.set("roleId", data.roleId);
request.start(true);
};
Feng.confirm("是否删除角色 " + data.name + "?", operation);
Feng.confirm("是否删除角色 " + data.roleName + "?", operation);
};
/**
@ -121,10 +138,12 @@ layui.use(['layer', 'form', 'table', 'admin', 'ax', 'func'], function () {
// 渲染表格
var tableResult = table.render({
elem: '#' + Role.tableId,
url: Feng.ctxPath + '/role/list',
url: Feng.ctxPath + '/sysRole/page',
page: true,
height: "full-98",
cellMinWidth: 100,
request: {pageName: 'pageNo', limitName: 'pageSize'},
parseData: Feng.parseData,
cols: Role.initColumn()
});

View File

@ -0,0 +1,30 @@
/**
* 角色详情对话框
*/
layui.use(['form', 'admin', 'HttpRequest'], function () {
var HttpRequest = layui.HttpRequest;
var form = layui.form;
var admin = layui.admin;
// 表单提交事件
form.on('submit(btnSubmit)', function (data) {
var request = new HttpRequest(Feng.ctxPath + "/sysRole/add", 'post', function (data) {
Feng.success("添加成功!");
//传给上个页面刷新table用
admin.putTempData('formOk', true);
//关掉对话框
admin.closeThisDialog();
}, function (data) {
Feng.error("添加失败!" + data.message)
});
request.set(data.field);
request.start(true);
//添加 return false 可成功跳转页面
return false;
});
});

View File

@ -0,0 +1,35 @@
/**
* 角色详情对话框
*/
layui.use(['form', 'admin', 'HttpRequest'], function () {
var HttpRequest = layui.HttpRequest;
var form = layui.form;
var admin = layui.admin;
//初始化角色的详情数据
var detailRequest = new HttpRequest(Feng.ctxPath + "/sysRole/detail?roleId=" + Feng.getUrlParam("roleId"), 'get');
var result = detailRequest.start();
form.val('roleForm', result.data);
// 表单提交事件
form.on('submit(btnSubmit)', function (data) {
var request = new HttpRequest(Feng.ctxPath + "/sysRole/edit", 'post', function (data) {
Feng.success("修改成功!");
//传给上个页面刷新table用
admin.putTempData('formOk', true);
//关掉对话框
admin.closeThisDialog();
}, function (data) {
Feng.error("修改失败!" + data.message + "!");
});
request.set(data.field);
request.start(true);
//添加 return false 可成功跳转页面
return false;
});
});

View File

@ -1,56 +0,0 @@
/**
* 角色详情对话框
*/
var RoleInfoDlg = {
data: {
pid: "",
pName: ""
}
};
layui.use(['layer', 'form', 'admin', 'ax'], function () {
var $ = layui.jquery;
var $ax = layui.ax;
var form = layui.form;
var admin = layui.admin;
var layer = layui.layer;
// 点击上级角色时
$('#pName').click(function () {
var formName = encodeURIComponent("parent.RoleInfoDlg.data.pName");
var formId = encodeURIComponent("parent.RoleInfoDlg.data.pid");
var treeUrl = encodeURIComponent("/role/roleTreeList");
layer.open({
type: 2,
title: '父级角色选择',
area: ['300px', '400px'],
content: Feng.ctxPath + '/system/commonTree?formName=' + formName + "&formId=" + formId + "&treeUrl=" + treeUrl,
end: function () {
$("#pid").val(RoleInfoDlg.data.pid);
$("#pName").val(RoleInfoDlg.data.pName);
}
});
});
// 表单提交事件
form.on('submit(btnSubmit)', function (data) {
var ajax = new $ax(Feng.ctxPath + "/role/add", function (data) {
Feng.success("添加成功!");
//传给上个页面刷新table用
admin.putTempData('formOk', true);
//关掉对话框
admin.closeThisDialog();
}, function (data) {
Feng.error("添加失败!" + data.responseJSON.message)
});
ajax.set(data.field);
ajax.start();
//添加 return false 可成功跳转页面
return false;
});
});

View File

@ -1,61 +0,0 @@
/**
* 角色详情对话框
*/
var RoleInfoDlg = {
data: {
pid: "",
pName: ""
}
};
layui.use(['layer', 'form', 'admin', 'ax'], function () {
var $ = layui.jquery;
var $ax = layui.ax;
var form = layui.form;
var admin = layui.admin;
var layer = layui.layer;
//初始化角色的详情数据
var ajax = new $ax(Feng.ctxPath + "/role/view/" + Feng.getUrlParam("roleId"));
var result = ajax.start();
form.val('roleForm',result.data);
// 点击上级角色时
$('#pName').click(function () {
var formName = encodeURIComponent("parent.RoleInfoDlg.data.pName");
var formId = encodeURIComponent("parent.RoleInfoDlg.data.pid");
var treeUrl = encodeURIComponent("/role/roleTreeList");
layer.open({
type: 2,
title: '父级角色选择',
area: ['300px', '400px'],
content: Feng.ctxPath + '/system/commonTree?formName=' + formName + "&formId=" + formId + "&treeUrl=" + treeUrl,
end: function () {
$("#pid").val(RoleInfoDlg.data.pid);
$("#pName").val(RoleInfoDlg.data.pName);
}
});
});
// 表单提交事件
form.on('submit(btnSubmit)', function (data) {
var ajax = new $ax(Feng.ctxPath + "/role/edit", function (data) {
Feng.success("修改成功!");
//传给上个页面刷新table用
admin.putTempData('formOk', true);
//关掉对话框
admin.closeThisDialog();
}, function (data) {
Feng.error("修改失败!" + data.responseJSON.message + "!");
});
ajax.set(data.field);
ajax.start();
//添加 return false 可成功跳转页面
return false;
});
});

View File

@ -1,4 +1,4 @@
@layout("/layout/_container.html",{js:["/assets/modular/system/role/role.js"]}){
@layout("/layout/_container.html",{js:["/assets/modular/auth/role/role.js"]}){
<div class="layui-body-header">
<span class="layui-body-header-title">角色管理</span>
@ -16,10 +16,7 @@
</div>
<div class="layui-inline">
<button id="btnSearch" class="layui-btn icon-btn"><i class="layui-icon">&#xe615;</i>搜索</button>
@if(shiro.hasPermission("/role/add")){
<button id="btnAdd" class="layui-btn icon-btn"><i class="layui-icon">&#xe654;</i>添加</button>
@}
<button id="btnExp" class="layui-btn icon-btn"><i class="layui-icon">&#xe67d;</i>导出</button>
</div>
</div>
</div>
@ -31,14 +28,9 @@
</div>
<script type="text/html" id="tableBar">
@if(shiro.hasPermission("/role/edit")){
<a class="layui-btn layui-btn-primary layui-btn-xs" lay-event="edit">修改</a>
@}
@if(shiro.hasPermission("/role/remove")){
<a class="layui-btn layui-btn-danger layui-btn-xs" lay-event="delete">删除</a>
@}
@if(shiro.hasPermission("/role/setAuthority")){
<a class="layui-btn layui-btn-normal layui-btn-xs" lay-event="roleAssign">权限配置</a>
@}
<a class="layui-btn layui-btn-normal layui-btn-xs" lay-event="assignMenu">分配菜单</a>
<a class="layui-btn layui-btn-normal layui-btn-xs" lay-event="assignApi">分配接口</a>
</script>
@}
@}

View File

@ -1,4 +1,4 @@
@layout("/layout/_form.html",{js:["/assets/modular/system/role/role_add.js"]}){
@layout("/layout/_form.html",{js:["/assets/modular/auth/role/role_add.js"]}){
<form class="layui-form" id="roleForm" lay-filter="roleForm">
<div class="layui-fluid" style="padding-bottom: 75px;">
@ -10,26 +10,25 @@
<div class="layui-inline layui-col-md12">
<label class="layui-form-label">角色名称<span style="color: red;">*</span></label>
<div class="layui-input-block">
<input name="name" placeholder="请输入角色名称" type="text" class="layui-input" lay-verify="required" required/>
<input name="roleName" placeholder="请输入角色名称" type="text" class="layui-input" lay-verify="required" required autocomplete="off"/>
</div>
</div>
<div class="layui-inline layui-col-md12">
<label class="layui-form-label">上级名称<span style="color: red;">*</span></label>
<label class="layui-form-label">角色编码<span style="color: red;">*</span></label>
<div class="layui-input-block">
<input id="pid" name="pid" type="hidden">
<input id="pName" name="pName" placeholder="请输入上级名称" type="text" class="layui-input" lay-verify="required" required autocomplete="off"/>
<input name="roleCode" placeholder="角色编码" type="text" class="layui-input" lay-verify="required" required autocomplete="off"/>
</div>
</div>
<div class="layui-inline layui-col-md12">
<label class="layui-form-label">别名<span style="color: red;">*</span></label>
<label class="layui-form-label">排序<span style="color: red;">*</span></label>
<div class="layui-input-block">
<input id="description" name="description" placeholder="请输入别名" type="text" class="layui-input" lay-verify="required" required autocomplete="off"/>
<input name="roleSort" placeholder="排序" type="text" class="layui-input" lay-verify="required" required autocomplete="off"/>
</div>
</div>
<div class="layui-inline layui-col-md12">
<label class="layui-form-label">排序</label>
<label class="layui-form-label">备注</label>
<div class="layui-input-block">
<input name="sort" placeholder="请输入排序" type="text" class="layui-input"/>
<input name="remark" placeholder="请填写备注" type="text" class="layui-input" autocomplete="off"/>
</div>
</div>
</div>

View File

@ -1,4 +1,4 @@
@layout("/layout/_form.html",{js:["/assets/modular/system/role/role_edit.js"]}){
@layout("/layout/_form.html",{js:["/assets/modular/auth/role/role_edit.js"]}){
<form class="layui-form" id="roleForm" lay-filter="roleForm">
<div class="layui-fluid" style="padding-bottom: 75px;">
@ -10,26 +10,25 @@
<div class="layui-inline layui-col-md12">
<label class="layui-form-label">角色名称<span style="color: red;">*</span></label>
<div class="layui-input-block">
<input name="name" placeholder="请输入角色名称" type="text" class="layui-input" lay-verify="required" required/>
<input name="roleName" placeholder="请输入角色名称" type="text" class="layui-input" lay-verify="required" required autocomplete="off"/>
</div>
</div>
<div class="layui-inline layui-col-md12">
<label class="layui-form-label">上级名称<span style="color: red;">*</span></label>
<label class="layui-form-label">角色编码<span style="color: red;">*</span></label>
<div class="layui-input-block">
<input id="pid" name="pid" type="hidden">
<input id="pName" name="pName" placeholder="请输入上级名称" type="text" class="layui-input" lay-verify="required" required autocomplete="off"/>
<input name="roleCode" placeholder="角色编码" type="text" class="layui-input layui-disabled" lay-verify="required" disabled="disabled" required autocomplete="off"/>
</div>
</div>
<div class="layui-inline layui-col-md12">
<label class="layui-form-label">别名<span style="color: red;">*</span></label>
<label class="layui-form-label">排序<span style="color: red;">*</span></label>
<div class="layui-input-block">
<input id="description" name="description" placeholder="请输入别名" type="text" class="layui-input" lay-verify="required" required autocomplete="off"/>
<input name="roleSort" placeholder="排序" type="text" class="layui-input" lay-verify="required" required autocomplete="off"/>
</div>
</div>
<div class="layui-inline layui-col-md12">
<label class="layui-form-label">排序</label>
<label class="layui-form-label">备注</label>
<div class="layui-input-block">
<input name="sort" placeholder="请输入排序" type="text" class="layui-input"/>
<input name="remark" placeholder="请填写备注" type="text" class="layui-input" autocomplete="off"/>
</div>
</div>
</div>