用户列表新增抽屉效果详细信息

pull/478/head
RuoYi 2023-11-22 09:20:42 +08:00
parent 40835fa733
commit 09b41e8b24
6 changed files with 329 additions and 2 deletions

View File

@ -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";
}
/**
*
*/

View File

@ -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;

View File

@ -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 = {

View File

@ -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',

View File

@ -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>

View File

@ -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