mirror of https://gitee.com/y_project/RuoYi.git
用户列表新增抽屉效果详细信息
parent
40835fa733
commit
09b41e8b24
|
@ -162,6 +162,20 @@ public class SysUserController extends BaseController
|
|||
return prefix + "/edit";
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询用户详细
|
||||
*/
|
||||
@RequiresPermissions("system:user:list")
|
||||
@GetMapping("/view/{userId}")
|
||||
public String view(@PathVariable("userId") Long userId, ModelMap mmap)
|
||||
{
|
||||
userService.checkUserDataScope(userId);
|
||||
mmap.put("user", userService.selectUserById(userId));
|
||||
mmap.put("roleGroup", userService.selectUserRoleGroup(userId));
|
||||
mmap.put("postGroup", userService.selectUserPostGroup(userId));
|
||||
return prefix + "/view";
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改保存用户
|
||||
*/
|
||||
|
|
|
@ -1008,6 +1008,37 @@ table.rc-table-resizing thead > th > a {
|
|||
padding-bottom:5px
|
||||
}
|
||||
|
||||
.form-control-plaintext {
|
||||
display: block;
|
||||
width: 100%;
|
||||
padding-top: .286rem;
|
||||
padding-bottom: .286rem;
|
||||
margin-bottom: 0;
|
||||
line-height: 1.57142857;
|
||||
color: #212529;
|
||||
background-color: transparent;
|
||||
border: solid transparent;
|
||||
border-width: 1px 0;
|
||||
font-weight: 500;
|
||||
border-bottom: 1px dashed #ccd5db;
|
||||
min-height: 25px
|
||||
}
|
||||
|
||||
.form-control-plaintext-no-content {
|
||||
display: block;
|
||||
width: 100%;
|
||||
padding-top: .286rem;
|
||||
padding-bottom: .286rem;
|
||||
margin-bottom: 0;
|
||||
line-height: 1.57142857;
|
||||
color: #ddd !important;
|
||||
background-color: transparent;
|
||||
border: solid transparent;
|
||||
border-width: 1px 0;
|
||||
border-bottom: 1px dashed #ccd5db;
|
||||
min-height: 25px
|
||||
}
|
||||
|
||||
.main-content {
|
||||
background-color: #ffffff;
|
||||
color: inherit;
|
||||
|
|
|
@ -989,6 +989,26 @@ var table = {
|
|||
createMenuItem(url, title);
|
||||
closeItem(dataId);
|
||||
},
|
||||
// 右侧弹出窗口打开
|
||||
popupRight: function(title, url){
|
||||
var width = 150;
|
||||
if (top.location !== self.location) {
|
||||
if ($(top.window).outerWidth() < 400) {
|
||||
width = 50;
|
||||
}
|
||||
}
|
||||
top.layer.open({
|
||||
type: 2,
|
||||
offset: 'r',
|
||||
anim: 'slideLeft',
|
||||
move: false,
|
||||
title: title,
|
||||
shade: 0.3,
|
||||
shadeClose: true,
|
||||
area: [($(window).outerWidth() - width) + 'px', '100%'],
|
||||
content: url
|
||||
});
|
||||
},
|
||||
// 关闭选项卡
|
||||
closeTab: function (dataId) {
|
||||
closeItem(dataId);
|
||||
|
@ -1195,6 +1215,12 @@ var table = {
|
|||
}
|
||||
return url;
|
||||
},
|
||||
// 右侧弹出详情
|
||||
view: function(id){
|
||||
table.set();
|
||||
var url = table.options.viewUrl.replace("{id}", id);
|
||||
$.modal.popupRight(table.options.modalName + "信息详情", url);
|
||||
},
|
||||
// 保存信息 刷新表格
|
||||
save: function(url, data, callback) {
|
||||
var config = {
|
||||
|
|
|
@ -116,6 +116,7 @@
|
|||
function queryUserList() {
|
||||
var options = {
|
||||
url: prefix + "/list",
|
||||
viewUrl: prefix + "/view/{id}",
|
||||
createUrl: prefix + "/add",
|
||||
updateUrl: prefix + "/edit/{id}",
|
||||
removeUrl: prefix + "/remove",
|
||||
|
@ -135,7 +136,10 @@
|
|||
{
|
||||
field: 'loginName',
|
||||
title: '登录名称',
|
||||
sortable: true
|
||||
sortable: true,
|
||||
formatter: function (value, row, index) {
|
||||
return '<a href="javascript:void(0)" onclick="$.operate.view(\'' + row.userId + '\')">' + value + '</a>';
|
||||
}
|
||||
},
|
||||
{
|
||||
field: 'userName',
|
||||
|
|
|
@ -0,0 +1,252 @@
|
|||
<!DOCTYPE html>
|
||||
<html lang="zh" xmlns:th="http://www.thymeleaf.org" >
|
||||
<head>
|
||||
<th:block th:include="include :: header('修改用户')" />
|
||||
</head>
|
||||
<body>
|
||||
<div class="main-content">
|
||||
<form class="form-horizontal" id="form-user-edit" th:object="${user}">
|
||||
<h4 class="form-header h4">基本信息</h4>
|
||||
<div class="row">
|
||||
<div class="col-sm-6">
|
||||
<div class="form-group">
|
||||
<label class="col-sm-4 control-label">用户名称:</label>
|
||||
<div class="col-sm-8">
|
||||
<p class="form-control-plaintext" th:text="*{userName}"></p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-sm-6">
|
||||
<div class="form-group">
|
||||
<label class="col-sm-4 control-label">归属部门:</label>
|
||||
<div class="col-sm-8">
|
||||
<p class="form-control-plaintext" th:text="*{dept.deptName}"></p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-sm-6">
|
||||
<div class="form-group">
|
||||
<label class="col-sm-4 control-label">手机号码:</label>
|
||||
<div class="col-sm-8">
|
||||
<p class="form-control-plaintext" th:text="*{phonenumber}"></p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-sm-6">
|
||||
<div class="form-group">
|
||||
<label class="col-sm-4 control-label">邮箱:</label>
|
||||
<div class="col-sm-8">
|
||||
<p class="form-control-plaintext" th:text="*{email}"></p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-sm-6">
|
||||
<div class="form-group">
|
||||
<label class="col-sm-4 control-label">登录账号:</label>
|
||||
<div class="col-sm-8">
|
||||
<p class="form-control-plaintext" th:text="*{loginName}"></p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-sm-6">
|
||||
<div class="form-group">
|
||||
<label class="col-sm-4 control-label">用户状态:</label>
|
||||
<div class="col-sm-8">
|
||||
<p class="form-control-plaintext" th:text="*{status == '0' ? '正常' : '停用'}"></p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-sm-6">
|
||||
<div class="form-group">
|
||||
<label class="col-sm-4 control-label">岗位:</label>
|
||||
<div class="col-sm-8">
|
||||
<p class="form-control-plaintext">[[${#strings.defaultString(postGroup, '无岗位')}]]</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-sm-6">
|
||||
<div class="form-group">
|
||||
<label class="col-sm-4 control-label">用户性别:</label>
|
||||
<div class="col-sm-8">
|
||||
<p class="form-control-plaintext" th:text="*{@dict.getLabel('sys_user_sex', sex)}"></p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-sm-12">
|
||||
<div class="form-group">
|
||||
<label class="col-xs-2 control-label">角色:</label>
|
||||
<div class="col-xs-10">
|
||||
<p class="form-control-plaintext">[[${#strings.defaultString(roleGroup, '无角色')}]]</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<h4 class="form-header h4">其他信息</h4>
|
||||
<div class="row">
|
||||
<div class="col-sm-6">
|
||||
<div class="form-group">
|
||||
<label class="col-sm-4 control-label">创建者:</label>
|
||||
<div class="col-sm-8">
|
||||
<p class="form-control-plaintext" th:text="*{createBy}"></p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-sm-6">
|
||||
<div class="form-group">
|
||||
<label class="col-sm-4 control-label">创建时间:</label>
|
||||
<div class="col-sm-8">
|
||||
<p class="form-control-plaintext" th:text="*{#dates.format(createTime, 'yyyy-MM-dd HH:mm:ss')}"></p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-sm-6">
|
||||
<div class="form-group">
|
||||
<label class="col-sm-4 control-label">更新者:</label>
|
||||
<div class="col-sm-8">
|
||||
<p class="form-control-plaintext" th:text="*{updateBy}"></p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-sm-6">
|
||||
<div class="form-group">
|
||||
<label class="col-sm-4 control-label">更新时间:</label>
|
||||
<div class="col-sm-8">
|
||||
<p class="form-control-plaintext" th:text="*{#dates.format(updateTime, 'yyyy-MM-dd HH:mm:ss')}"></p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-sm-6">
|
||||
<div class="form-group">
|
||||
<label class="col-sm-4 control-label">最后登录IP:</label>
|
||||
<div class="col-sm-8">
|
||||
<p class="form-control-plaintext" th:text="*{loginIp}"></p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-sm-6">
|
||||
<div class="form-group">
|
||||
<label class="col-sm-4 control-label">最后登录时间:</label>
|
||||
<div class="col-sm-8">
|
||||
<p class="form-control-plaintext" th:text="*{#dates.format(loginDate, 'yyyy-MM-dd HH:mm:ss')}"></p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-sm-12">
|
||||
<div class="form-group">
|
||||
<label class="col-xs-2 control-label">备注:</label>
|
||||
<div class="col-xs-10">
|
||||
<p class="form-control-plaintext" th:text="*{remark}"></p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
<th:block th:include="include :: footer" />
|
||||
<th:block th:include="include :: select2-js" />
|
||||
<script type="text/javascript">
|
||||
var prefix = ctx + "system/user";
|
||||
|
||||
$("#form-user-edit").validate({
|
||||
onkeyup: false,
|
||||
rules:{
|
||||
email:{
|
||||
email:true,
|
||||
remote: {
|
||||
url: prefix + "/checkEmailUnique",
|
||||
type: "post",
|
||||
dataType: "json",
|
||||
data: {
|
||||
"userId": function() {
|
||||
return $("#userId").val();
|
||||
},
|
||||
"email": function() {
|
||||
return $.common.trim($("#email").val());
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
phonenumber:{
|
||||
isPhone:true,
|
||||
remote: {
|
||||
url: prefix + "/checkPhoneUnique",
|
||||
type: "post",
|
||||
dataType: "json",
|
||||
data: {
|
||||
"userId": function() {
|
||||
return $("#userId").val();
|
||||
},
|
||||
"phonenumber": function() {
|
||||
return $.common.trim($("#phonenumber").val());
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
},
|
||||
messages: {
|
||||
"email": {
|
||||
remote: "Email已经存在"
|
||||
},
|
||||
"phonenumber":{
|
||||
remote: "手机号码已经存在"
|
||||
}
|
||||
},
|
||||
focusCleanup: true
|
||||
});
|
||||
|
||||
function submitHandler() {
|
||||
if ($.validate.form()) {
|
||||
var data = $("#form-user-edit").serializeArray();
|
||||
var status = $("input[id='status']").is(':checked') == true ? 0 : 1;
|
||||
var roleIds = $.form.selectCheckeds("role");
|
||||
var postIds = $.form.selectSelects("post");
|
||||
data.push({"name": "status", "value": status});
|
||||
data.push({"name": "roleIds", "value": roleIds});
|
||||
data.push({"name": "postIds", "value": postIds});
|
||||
$.operate.saveTab(prefix + "/edit", data);
|
||||
}
|
||||
}
|
||||
|
||||
/* 用户管理-修改-选择部门树 */
|
||||
function selectDeptTree() {
|
||||
var deptId = $.common.isEmpty($("#treeId").val()) ? "100" : $("#treeId").val();
|
||||
var url = ctx + "system/user/selectDeptTree/" + deptId;
|
||||
var options = {
|
||||
title: '选择部门',
|
||||
width: "380",
|
||||
url: url,
|
||||
callBack: doSubmit
|
||||
};
|
||||
$.modal.openOptions(options);
|
||||
}
|
||||
|
||||
function doSubmit(index, layero){
|
||||
var body = $.modal.getChildFrame(index);
|
||||
$("#treeId").val(body.find('#treeId').val());
|
||||
$("#treeName").val(body.find('#treeName').val());
|
||||
$.modal.close(index);
|
||||
}
|
||||
|
||||
$(function() {
|
||||
$('#post').select2({
|
||||
placeholder: "请选择岗位",
|
||||
allowClear: true
|
||||
});
|
||||
})
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
|
@ -50,7 +50,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||
</resultMap>
|
||||
|
||||
<sql id="selectUserVo">
|
||||
select u.user_id, u.dept_id, u.login_name, u.user_name, u.user_type, u.email, u.avatar, u.phonenumber, u.sex, u.password, u.salt, u.status, u.del_flag, u.login_ip, u.login_date, u.pwd_update_date, u.create_time, u.remark,
|
||||
select u.user_id, u.dept_id, u.login_name, u.user_name, u.user_type, u.email, u.avatar, u.phonenumber, u.sex, u.password, u.salt, u.status, u.del_flag, u.login_ip, u.login_date, u.pwd_update_date, u.create_by, u.create_time, u.update_by, u.update_time, u.remark,
|
||||
d.dept_id, d.parent_id, d.ancestors, d.dept_name, d.order_num, d.leader, d.status as dept_status,
|
||||
r.role_id, r.role_name, r.role_key, r.role_sort, r.data_scope, r.status as role_status
|
||||
from sys_user u
|
||||
|
|
Loading…
Reference in New Issue