feat:人员管理修改

new-rd20250506
wangxy 4 months ago
parent 069641def4
commit 9028d9dc54

@ -80,7 +80,7 @@ public class SysUsernumController extends BaseController {
List<SysDept> sysDepts = deptService.selectDeptList(dept); List<SysDept> sysDepts = deptService.selectDeptList(dept);
for (SysDept sysDept : sysDepts) { for (SysDept sysDept : sysDepts) {
for (SysUser user1 : list) { for (SysUser user1 : list) {
if (sysDept.getDeptName().equals(user1.getDept().getDeptName())) { if (sysDept.getDeptId().equals(user1.getDept().getDeptId())) {
sysuser.add(user1); sysuser.add(user1);
} }
} }
@ -111,7 +111,7 @@ public class SysUsernumController extends BaseController {
@GetMapping("/print/{deptId}") @GetMapping("/print/{deptId}")
public String print(@PathVariable("deptId") Long deptId, SysUser user, ModelMap mmap) { public String print(@PathVariable("deptId") Long deptId, SysUser user, ModelMap mmap) {
List<SysUser> list = userService.lambdaQuery().eq(SysUser::getDeptId, deptId) List<SysUser> list = userService.lambdaQuery().eq(SysUser::getDeptId, deptId)
.eq(SysUser::getDelFlag, 0) .eq(SysUser::getDelFlag, '0')
.ne(SysUser::getUserId, 1) .ne(SysUser::getUserId, 1)
.list(); .list();
list.forEach(sysuser -> { list.forEach(sysuser -> {
@ -130,7 +130,7 @@ public class SysUsernumController extends BaseController {
} }
private List<String> sharType = Arrays.asList("已登记", "已申报", "已审核", "已离职","已离岗"); private List<String> sharType = Arrays.asList("已登记", "已审查", "已定岗", "已离职","已离岗");
private List<String> smType = Arrays.asList("一般涉密人员", "重要涉密人员", "核心涉密人员"); private List<String> smType = Arrays.asList("一般涉密人员", "重要涉密人员", "核心涉密人员");
@ -159,7 +159,7 @@ public class SysUsernumController extends BaseController {
} }
/** /**
* *
* *
* @return com.ruoyi.common.core.domain.AjaxResult * @return com.ruoyi.common.core.domain.AjaxResult
*/ */
@ -172,10 +172,10 @@ public class SysUsernumController extends BaseController {
AtomicReference<Object> value = new AtomicReference<>(0L); AtomicReference<Object> value = new AtomicReference<>(0L);
if("已登记".equals(name)){ if("已登记".equals(name)){
value.set(userCountDTO.getYdj()); value.set(userCountDTO.getYdj());
}else if("已申报".equals(name)){ }else if("已审查".equals(name)){
value.set(userCountDTO.getYsb()); value.set(userCountDTO.getYsc());
}else if("已审核".equals(name)){ }else if("已定岗".equals(name)){
value.set(userCountDTO.getYsh()); value.set(userCountDTO.getYdg());
}else if("已离职".equals(name)){ }else if("已离职".equals(name)){
value.set(userCountDTO.getYlz()); value.set(userCountDTO.getYlz());
}else{ }else{
@ -214,8 +214,8 @@ public class SysUsernumController extends BaseController {
Integer count = new LambdaQueryChainWrapper<>(userService.getBaseMapper()) Integer count = new LambdaQueryChainWrapper<>(userService.getBaseMapper())
.ge(SysUser::getCreateTime, minDayTime) .ge(SysUser::getCreateTime, minDayTime)
.le(SysUser::getCreateTime, maxDayTime) .le(SysUser::getCreateTime, maxDayTime)
.eq(SysUser::getExamine,2) .eq(SysUser::getExamine,'2')
.eq(SysUser::getDelFlag,0) .eq(SysUser::getDelFlag,'0')
.count(); .count();
if(Objects.isNull(count)){ if(Objects.isNull(count)){
count = 0; count = 0;

@ -1,17 +1,26 @@
package com.ruoyi.web.controller.system.system; package com.ruoyi.web.controller.system.system;
import cn.hutool.core.convert.Convert;
import com.ruoyi.common.annotation.Log;
import com.ruoyi.common.core.controller.BaseController; import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.AjaxResult; import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.core.domain.entity.SysRole; import com.ruoyi.common.core.domain.entity.SysRole;
import com.ruoyi.common.core.domain.entity.SysUser; import com.ruoyi.common.core.domain.entity.SysUser;
import com.ruoyi.common.core.domain.entity.SysUserVo;
import com.ruoyi.common.core.page.TableDataInfo; import com.ruoyi.common.core.page.TableDataInfo;
import com.ruoyi.common.enums.BusinessType;
import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.framework.shiro.util.AuthorizationUtils;
import com.ruoyi.system.domain.record.SysUserAfter;
import com.ruoyi.system.service.ISysPostService; import com.ruoyi.system.service.ISysPostService;
import com.ruoyi.system.service.ISysRoleService; import com.ruoyi.system.service.ISysRoleService;
import com.ruoyi.system.service.ISysUserService; import com.ruoyi.system.service.ISysUserService;
import com.ruoyi.web.controller.manager.UserRecordManager;
import org.apache.shiro.authz.annotation.RequiresPermissions; import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller; import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap; import org.springframework.ui.ModelMap;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import java.util.List; import java.util.List;
@ -39,6 +48,9 @@ public class SysUserApplyController extends BaseController {
@Autowired @Autowired
private ISysPostService postService; private ISysPostService postService;
@Autowired
private UserRecordManager userRecordManager;
private String prefix = "system/user/userApply"; private String prefix = "system/user/userApply";
@ -60,9 +72,11 @@ public class SysUserApplyController extends BaseController {
@ResponseBody @ResponseBody
public TableDataInfo list(SysUser user) { public TableDataInfo list(SysUser user) {
startPage(); startPage();
user.setExamine("2"); user.setExamine("0");
List<SysUser> list = userService.selectUserList(user); List<SysUser> list = userService.selectUserList(user);
return getDataTable(list); List<SysUser> userList = list.stream()
.filter(u -> !"admin".equals(u.getLoginName())).collect(Collectors.toList());
return getDataTable(userList);
} }
@ -81,15 +95,27 @@ public class SysUserApplyController extends BaseController {
} }
@GetMapping("/submit/{userId}") @GetMapping("/submit2/{userId}")
@ResponseBody @ResponseBody
public AjaxResult submit(@PathVariable("userId") Long userId) { public AjaxResult submit2(@PathVariable("userId") Long userId) {
boolean update = userService.lambdaUpdate() boolean update = userService.lambdaUpdate()
.eq(SysUser::getUserId, userId) .eq(SysUser::getUserId, userId)
.set(SysUser::getExamine, "3").update(); .set(SysUser::getExamine, "3").update();
return toAjax(update); return toAjax(update);
} }
/**
*
*/
@Log(title = "用户定岗", businessType = BusinessType.UPDATE)
@PostMapping("/submit")
@ResponseBody
public AjaxResult submit(@Validated SysUserVo userVo) {
SysUser user = Convert.convert(SysUser.class, userVo);
user.setExamine("3");
userRecordManager.saveOrUpdate(user);
return toAjax(userService.updateUser(user));
}
} }

@ -364,8 +364,11 @@ public class SysUserController extends BaseController {
@PostMapping("/userList") @PostMapping("/userList")
@ResponseBody @ResponseBody
public AjaxResult userList() { public AjaxResult userList() {
return AjaxResult.success(userService.lambdaQuery(). List<SysUser> list = userService.lambdaQuery().
select(SysUser::getUserId,SysUser::getUserName).list()); select(SysUser::getUserId, SysUser::getUserName).list();
List<SysUser> userList = list.stream()
.filter(u -> !"admin".equals(u.getUserName())).collect(Collectors.toList());
return AjaxResult.success(userList);
} }

@ -53,9 +53,11 @@ public class SysUserExamineController extends BaseController {
public TableDataInfo list(SysUser user) public TableDataInfo list(SysUser user)
{ {
startPage(); startPage();
user.setExamine("3"); user.setExamine("2");
List<SysUser> list = userService.selectUserList(user); List<SysUser> list = userService.selectUserList(user);
return getDataTable(list); List<SysUser> userList = list.stream()
.filter(u -> !"admin".equals(u.getLoginName())).collect(Collectors.toList());
return getDataTable(userList);
} }
/** /**
@ -70,7 +72,9 @@ public class SysUserExamineController extends BaseController {
startPage(); startPage();
user.setExamine("0"); user.setExamine("0");
List<SysUser> list = userService.selectUserList(user); List<SysUser> list = userService.selectUserList(user);
return getDataTable(list); List<SysUser> userList = list.stream()
.filter(u -> !"admin".equals(u.getLoginName())).collect(Collectors.toList());
return getDataTable(userList);
} }
/** /**

@ -176,4 +176,17 @@ public class TdLeaveController extends BaseController
mmap.put("posts", postService.selectPostsByUserIds(userId)); mmap.put("posts", postService.selectPostsByUserIds(userId));
return prefix + "/leaveprint"; return prefix + "/leaveprint";
} }
/**
*
* @param userId
* @return
*/
public Boolean userUpdate(Long userId) {
return userService.lambdaUpdate()
.eq(SysUser::getUserId, userId)
.set(SysUser::getStatus, "1")
.update();
}
} }

@ -6,112 +6,112 @@
<th:block th:include="include :: datetimepicker-css" /> <th:block th:include="include :: datetimepicker-css" />
</head> </head>
<body class="white-bg"> <body class="white-bg">
<div class="wrapper wrapper-content animated fadeInRight ibox-content"> <div class="wrapper wrapper-content animated fadeInRight ibox-content">
<form class="form-horizontal m" id="form-leave-add" th:object="${addleave}"> <form class="form-horizontal m" id="form-leave-add" th:object="${addleave}">
<input name="userId" type="hidden" th:value="*{userId}" id="userId"/> <input name="userId" type="hidden" th:value="*{userId}" id="userId"/>
<input name="deptId" type="hidden" id="treeId"/> <input name="deptId" type="hidden" id="treeId"/>
<div class="form-group"> <div class="form-group">
<label class="col-sm-3 control-label is-required">人员姓名:</label> <label class="col-sm-3 control-label is-required">人员姓名:</label>
<div class="col-sm-8"> <div class="col-sm-8">
<input name="userName" id="username" class="form-control" placeholder="请输入人员姓名" type="text"> <input name="userName" id="username" class="form-control" placeholder="请输入人员姓名" th:value="*{userName}" type="text">
</div>
</div> </div>
<div class="form-group"> </div>
<label class="col-sm-3 control-label is-required">地区:</label> <div class="form-group">
<div class="col-sm-8"> <label class="col-sm-3 control-label is-required">地区:</label>
<input name="areaname" placeholder="请输入地区" class="form-control" type="text"> <div class="col-sm-8">
</div> <input name="areaname" placeholder="请输入地区" class="form-control" type="text">
</div> </div>
<div class="form-group"> </div>
<label class="col-sm-3 control-label is-required">离职离岗原因:</label> <div class="form-group">
<div class="col-sm-8"> <label class="col-sm-3 control-label is-required">离职离岗原因:</label>
<textarea name="leavereason" placeholder="请输入离职或离岗原因" class="form-control"></textarea> <div class="col-sm-8">
</div> <textarea name="leavereason" placeholder="请输入离职或离岗原因" class="form-control"></textarea>
</div> </div>
<div class="form-group"> </div>
<label class="col-sm-3 control-label is-required">所属单位:</label> <div class="form-group">
<div class="col-sm-8"> <label class="col-sm-3 control-label is-required">所属单位:</label>
<div class="input-group"> <div class="col-sm-8">
<input name="depart" onclick="selectDeptTree()" id="treeName" type="text" placeholder="请选择单位" class="form-control" > <div class="input-group">
<span class="input-group-addon"><i class="fa fa-search"></i></span> <input name="depart" onclick="selectDeptTree()" id="treeName" type="text" placeholder="请选择单位" class="form-control" >
</div> <span class="input-group-addon"><i class="fa fa-search"></i></span>
</div> </div>
</div> </div>
<div class="form-group"> </div>
<label class="col-sm-3 control-label is-required">离职离岗时间:</label> <div class="form-group">
<div class="col-sm-8"> <label class="col-sm-3 control-label is-required">离职离岗时间:</label>
<div class="input-group date"> <div class="col-sm-8">
<input name="leavedate" class="form-control" placeholder="yyyy-MM-dd" type="text"> <div class="input-group date">
<span class="input-group-addon"><i class="fa fa-calendar"></i></span> <input name="leavedate" class="form-control" placeholder="yyyy-MM-dd" type="text">
</div> <span class="input-group-addon"><i class="fa fa-calendar"></i></span>
</div> </div>
</div> </div>
</div>
<div class="form-group"> <div class="form-group">
<label class="col-sm-3 control-label is-required">工作交接:</label> <label class="col-sm-3 control-label is-required">工作交接:</label>
<div class="col-sm-8"> <div class="col-sm-8">
<select name="workstate" required class="form-control m-b" th:with="type=${@dict.getType('sys_user_work')}"> <select name="workstate" required class="form-control m-b" th:with="type=${@dict.getType('sys_user_work')}">
<option value="">---请选择---</option> <option value="">---请选择---</option>
<option th:each="dict : ${type}" th:text="${dict.dictLabel}" th:value="${dict.dictValue}"></option> <option th:each="dict : ${type}" th:text="${dict.dictLabel}" th:value="${dict.dictValue}"></option>
</select> </select>
</div>
</div> </div>
</div>
</form> </form>
</div> </div>
<th:block th:include="include :: footer" /> <th:block th:include="include :: footer" />
<th:block th:include="include :: select2-js" /> <th:block th:include="include :: select2-js" />
<th:block th:include="include :: datetimepicker-js" /> <th:block th:include="include :: datetimepicker-js" />
<script th:inline="javascript"> <script th:inline="javascript">
var prefix = ctx + "system/leave" var prefix = ctx + "system/leave"
$("#form-leave-add").validate({ $("#form-leave-add").validate({
focusCleanup: true focusCleanup: true
}); });
function submitHandler() { function submitHandler() {
if ($.validate.form()) { if ($.validate.form()) {
var data = $("#form-leave-add").serializeArray(); var data = $("#form-leave-add").serializeArray();
$.operate.save(prefix + "/add",data); $.operate.save(prefix + "/add",data);
}
}
/* 用户管理-新增-选择部门树 */
function selectDeptTree() {
var treeId = $("#treeId").val();
var deptId = $.common.isEmpty(treeId) ? "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);
} }
$("input[name='leavedate']").datetimepicker({ }
format: "yyyy-mm-dd", /* 用户管理-新增-选择部门树 */
minView: "month", function selectDeptTree() {
autoclose: true var treeId = $("#treeId").val();
}); var deptId = $.common.isEmpty(treeId) ? "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);
}
$("input[name='leavedate']").datetimepicker({
format: "yyyy-mm-dd",
minView: "month",
autoclose: true
});
$("input[name='examinedate']").datetimepicker({ $("input[name='examinedate']").datetimepicker({
format: "yyyy-mm-dd", format: "yyyy-mm-dd",
minView: "month", minView: "month",
autoclose: true autoclose: true
}); });
$(function() { $(function() {
var deptId = [[${addleave.deptId}]]; var deptId = [[${addleave.deptId}]];
var deptName = [[${addleave.dept.deptName}]]; var deptName = [[${addleave.dept.deptName}]];
$("#treeId").val(deptId); $("#treeId").val(deptId);
$("#treeName").val(deptName); $("#treeName").val(deptName);
}); });
</script> </script>
</body> </body>
</html> </html>

@ -1,242 +1,242 @@
<!DOCTYPE html> <!DOCTYPE html>
<html lang="zh" xmlns:th="http://www.thymeleaf.org" > <html lang="zh" xmlns:th="http://www.thymeleaf.org" >
<head> <head>
<th:block th:include="include :: header('新增用户')" /> <th:block th:include="include :: header('新增用户')" />
<th:block th:include="include :: select2-css" /> <th:block th:include="include :: select2-css" />
<th:block th:include="include :: datetimepicker-css" /> <th:block th:include="include :: datetimepicker-css" />
<th:block th:include="include :: jasny-bootstrap-css" /> <th:block th:include="include :: jasny-bootstrap-css" />
</head> </head>
<body> <body>
<div class="main-content"> <div class="main-content">
<form id="form-user-add" class="form-horizontal"> <form id="form-user-add" class="form-horizontal">
<input name="deptId" type="hidden" id="treeId"/> <input name="deptId" type="hidden" id="treeId"/>
<h4 class="form-header h4">基本信息</h4> <h4 class="form-header h4">基本信息</h4>
<div class="row"> <div class="row">
<div class="col-sm-6"> <div class="col-sm-6">
<div class="form-group"> <div class="form-group">
<label class="col-sm-4 control-label is-required">人员姓名:</label> <label class="col-sm-4 control-label is-required">人员姓名:</label>
<div class="col-sm-8"> <div class="col-sm-8">
<input name="userName" id="userName" placeholder="请输入用户名称" class="form-control" type="text" maxlength="30" required> <input name="userName" id="userName" placeholder="请输入用户名称" class="form-control" type="text" maxlength="30" required>
</div>
</div> </div>
</div> </div>
<div class="col-sm-6"> </div>
<div class="form-group"> <div class="col-sm-6">
<label class="col-sm-4 control-label is-required" >所属单位:</label> <div class="form-group">
<div class="col-sm-8"> <label class="col-sm-4 control-label is-required" >所属单位:</label>
<div class="input-group"> <div class="col-sm-8">
<input name="deptName" required onclick="selectDeptTree()" id="treeName" type="text" placeholder="请选择所属单位" class="form-control"> <div class="input-group">
<span class="input-group-addon"><i class="fa fa-search"></i></span> <input name="deptName" required onclick="selectDeptTree()" id="treeName" type="text" placeholder="请选择所属单位" class="form-control">
</div> <span class="input-group-addon"><i class="fa fa-search"></i></span>
</div> </div>
</div> </div>
</div> </div>
</div> </div>
<div class="row"> </div>
<div class="col-sm-6"> <div class="row">
<div class="form-group"> <div class="col-sm-6">
<label class="col-sm-4 control-label is-required">登录账号:</label> <div class="form-group">
<div class="col-sm-8"> <label class="col-sm-4 control-label is-required">登录账号:</label>
<input id="loginName" name="loginName" placeholder="请输入登录账号" class="form-control" type="text" maxlength="30" required> <div class="col-sm-8">
</div> <input id="loginName" name="loginName" placeholder="请输入登录账号" class="form-control" type="text" maxlength="30" required>
</div> </div>
</div> </div>
<div class="col-sm-6"> </div>
<div class="form-group"> <div class="col-sm-6">
<label class="col-sm-4 control-label is-required">登录密码:</label> <div class="form-group">
<div class="col-sm-8"> <label class="col-sm-4 control-label is-required">登录密码:</label>
<div class="input-group"> <div class="col-sm-8">
<input id="password" name="password" placeholder="请输入登录密码" class="form-control" type="password" th:value="${@config.getKey('sys.user.initPassword')}" required> <div class="input-group">
<span class="input-group-addon" title="登录密码,鼠标按下显示密码" <input id="password" name="password" placeholder="请输入登录密码" class="form-control" type="password" th:value="${@config.getKey('sys.user.initPassword')}" required>
onmousedown="$('#password').attr('type','text')" <span class="input-group-addon" title="登录密码,鼠标按下显示密码"
onmouseup="$('#password').attr('type','password')"><i class="fa fa-key"></i></span> onmousedown="$('#password').attr('type','text')"
</div> onmouseup="$('#password').attr('type','password')"><i class="fa fa-key"></i></span>
</div> </div>
</div> </div>
</div> </div>
</div> </div>
<div class="row"> </div>
<div class="col-sm-6"> <div class="row">
<div class="form-group"> <div class="col-sm-6">
<label class="col-sm-4 control-label is-required">用户性别:</label> <div class="form-group">
<div class="col-sm-8"> <label class="col-sm-4 control-label is-required">用户性别:</label>
<select name="sex" required class="form-control m-b" th:with="type=${@dict.getType('sys_user_sex')}"> <div class="col-sm-8">
<option value="">---请选择---</option> <select name="sex" required class="form-control m-b" th:with="type=${@dict.getType('sys_user_sex')}">
<option th:each="dict : ${type}" th:text="${dict.dictLabel}" th:value="${dict.dictValue}"></option> <option value="">---请选择---</option>
</select> <option th:each="dict : ${type}" th:text="${dict.dictLabel}" th:value="${dict.dictValue}"></option>
</div> </select>
</div> </div>
</div> </div>
<div class="col-sm-6"> </div>
<div class="form-group"> <div class="col-sm-6">
<label class="col-sm-4 control-label is-required">身份证号码:</label> <div class="form-group">
<div class="col-sm-8"> <label class="col-sm-4 control-label is-required">身份证号码:</label>
<input name="cerno" placeholder="请输入身份证号码" class="form-control" type="text" maxlength="30" required> <div class="col-sm-8">
</div> <input name="cerno" placeholder="请输入身份证号码" class="form-control" type="text" maxlength="30" required>
</div> </div>
</div> </div>
</div> </div>
<div class="row"> </div>
<div class="col-sm-6"> <div class="row">
<div class="form-group"> <div class="col-sm-6">
<label class="col-sm-4 control-label is-required">岗位:</label> <div class="form-group">
<div class="col-sm-8"> <label class="col-sm-4 control-label">岗位:</label>
<select id="post" class="form-control select2-multiple" required multiple> <div class="col-sm-8">
<option th:each="post:${posts}" th:value="${post.postId}" th:text="${post.postName}" th:disabled="${post.status == '1'}"></option> <select id="post" class="form-control select2-multiple" multiple>
</select> <option th:each="post:${posts}" th:value="${post.postId}" th:text="${post.postName}" th:disabled="${post.status == '1'}"></option>
</div> </select>
</div> </div>
</div> </div>
<div class="col-sm-6"> </div>
<div class="form-group"> <div class="col-sm-6">
<label class="col-sm-4 control-label is-required">角色:</label> <div class="form-group">
<div class="col-sm-8"> <label class="col-sm-4 control-label is-required">角色:</label>
<label th:each="role:${roles}" class="check-box"> <div class="col-sm-8">
<input name="role" type="radio" th:value="${role.roleId}" th:text="${role.roleName}" th:disabled="${role.status == '1'}"> <label th:each="role:${roles}" class="check-box">
</label> <input name="role" type="radio" th:value="${role.roleId}" th:text="${role.roleName}" th:disabled="${role.status == '1'}">
</div> </label>
</div> </div>
</div> </div>
</div> </div>
<div class="row"> </div>
<div class="col-sm-6"> <div class="row">
<div class="form-group"> <div class="col-sm-6">
<label class="col-sm-4 control-label is-required">籍贯:</label> <div class="form-group">
<div class="col-sm-8"> <label class="col-sm-4 control-label is-required">籍贯:</label>
<input name="userarea" required class="form-control" placeholder="请输入籍贯" type="text"> <div class="col-sm-8">
</div> <input name="userarea" required class="form-control" placeholder="请输入籍贯" type="text">
</div> </div>
</div> </div>
<div class="col-sm-6"> </div>
<div class="form-group"> <div class="col-sm-6">
<label class="col-sm-4 control-label ">民族:</label> <div class="form-group">
<div class="col-sm-8"> <label class="col-sm-4 control-label ">民族:</label>
<select name="nation" class="form-control m-b" th:with="type=${@dict.getType('sys_user_nation')}"> <div class="col-sm-8">
<option value="">---请选择---</option> <select name="nation" class="form-control m-b" th:with="type=${@dict.getType('sys_user_nation')}">
<option th:each="dict : ${type}" th:text="${dict.dictLabel}" th:value="${dict.dictValue}"></option> <option value="">---请选择---</option>
</select> <option th:each="dict : ${type}" th:text="${dict.dictLabel}" th:value="${dict.dictValue}"></option>
</div> </select>
</div> </div>
</div> </div>
</div> </div>
<div class="row"> </div>
<div class="col-sm-6"> <div class="row">
<div class="form-group"> <div class="col-sm-6">
<label class="col-sm-4 control-label">手机号码:</label> <div class="form-group">
<div class="col-sm-8"> <label class="col-sm-4 control-label">手机号码:</label>
<div class="input-group"> <div class="col-sm-8">
<input id="phonenumber" name="phonenumber" placeholder="请输入手机号码" class="form-control" type="text" maxlength="11"> <div class="input-group">
<span class="input-group-addon"><i class="fa fa-mobile"></i></span> <input id="phonenumber" name="phonenumber" placeholder="请输入手机号码" class="form-control" type="text" maxlength="11">
</div> <span class="input-group-addon"><i class="fa fa-mobile"></i></span>
</div> </div>
</div> </div>
</div> </div>
<div class="col-sm-6"> </div>
<div class="form-group"> <div class="col-sm-6">
<label class="col-sm-4 control-label">邮箱:</label> <div class="form-group">
<div class="col-sm-8"> <label class="col-sm-4 control-label">邮箱:</label>
<div class="input-group"> <div class="col-sm-8">
<input id="email" name="email" class="form-control email" type="text" maxlength="50" placeholder="请输入邮箱"> <div class="input-group">
<span class="input-group-addon"><i class="fa fa-envelope"></i></span> <input id="email" name="email" class="form-control email" type="text" maxlength="50" placeholder="请输入邮箱">
</div> <span class="input-group-addon"><i class="fa fa-envelope"></i></span>
</div> </div>
</div> </div>
</div> </div>
</div> </div>
<div class="row"> </div>
<div class="col-sm-6"> <div class="row">
<div class="form-group"> <div class="col-sm-6">
<label class="col-sm-4 control-label">出生年月:</label> <div class="form-group">
<div class="col-sm-8"> <label class="col-sm-4 control-label">出生年月:</label>
<div class="input-group date"> <div class="col-sm-8">
<input name="birthday" class="form-control" placeholder="yyyy-MM-dd" type="text"> <div class="input-group date">
<span class="input-group-addon"><i class="fa fa-calendar"></i></span> <input name="birthday" class="form-control" placeholder="yyyy-MM-dd" type="text">
</div> <span class="input-group-addon"><i class="fa fa-calendar"></i></span>
</div> </div>
</div> </div>
</div> </div>
<div class="col-sm-6"> </div>
<div class="form-group"> <div class="col-sm-6">
<label class="col-sm-4 control-label">政治面貌:</label> <div class="form-group">
<div class="col-sm-8"> <label class="col-sm-4 control-label">政治面貌:</label>
<select name="politics" class="form-control m-b" th:with="type=${@dict.getType('sys_user_politics')}"> <div class="col-sm-8">
<option value="">---请选择---</option> <select name="politics" class="form-control m-b" th:with="type=${@dict.getType('sys_user_politics')}">
<option th:each="dict : ${type}" th:text="${dict.dictLabel}" th:value="${dict.dictValue}"></option> <option value="">---请选择---</option>
</select> <option th:each="dict : ${type}" th:text="${dict.dictLabel}" th:value="${dict.dictValue}"></option>
</div> </select>
</div> </div>
</div> </div>
</div> </div>
</div>
<div class="row"> <div class="row">
<div class="col-sm-6"> <div class="col-sm-6">
<div class="form-group"> <div class="form-group">
<label class="col-sm-4 control-label is-required">是否持有护照或港澳通行证:</label> <label class="col-sm-4 control-label is-required">是否持有护照或港澳通行证:</label>
<div class="col-sm-8"> <div class="col-sm-8">
<div class="radio-box" th:each="dict : ${@dict.getType('sys_user_passport')}"> <div class="radio-box" th:each="dict : ${@dict.getType('sys_user_passport')}">
<input type="radio" required th:id="${dict.dictCode}" name="havePassport" th:value="${dict.dictValue}" th:checked="${dict.default}"> <input type="radio" required th:id="${dict.dictCode}" name="havePassport" th:value="${dict.dictValue}" th:checked="${dict.default}">
<label th:for="${dict.dictCode}" th:text="${dict.dictLabel}"></label> <label th:for="${dict.dictCode}" th:text="${dict.dictLabel}"></label>
</div>
</div> </div>
</div> </div>
</div> </div>
<div class="col-sm-6"> </div>
<div class="form-group"> <div class="col-sm-6">
<label class="col-sm-4 control-label is-required">是否具有出入境备案:</label> <div class="form-group">
<div class="col-sm-8"> <label class="col-sm-4 control-label is-required">是否具有出入境备案:</label>
<div class="radio-box" th:each="dict : ${@dict.getType('sys_user_passport')}"> <div class="col-sm-8">
<input type="radio" required th:id="${dict.dictCode}" name="entryexitFiling" th:value="${dict.dictValue}" th:checked="${dict.default}"> <div class="radio-box" th:each="dict : ${@dict.getType('sys_user_passport')}">
<label th:for="${dict.dictCode}" th:text="${dict.dictLabel}"></label> <input type="radio" required th:id="${dict.dictCode}" name="entryexitFiling" th:value="${dict.dictValue}" th:checked="${dict.default}">
</div> <label th:for="${dict.dictCode}" th:text="${dict.dictLabel}"></label>
</div> </div>
</div> </div>
</div> </div>
</div> </div>
</div>
<div class="row"> <div class="row">
<div class="col-sm-6"> <div class="col-sm-6">
<div class="form-group"> <div class="form-group">
<label class="col-sm-4 control-label is-required">涉密程度:</label> <label class="col-sm-4 control-label">涉密程度:</label>
<div class="col-sm-8"> <div class="col-sm-8">
<select name="shemichengdu" required class="form-control m-b" th:with="type=${@dict.getType('sys_user_shemi')}"> <select name="shemichengdu" class="form-control m-b" th:with="type=${@dict.getType('sys_user_shemi')}">
<option value="">---请选择---</option> <option value="">---请选择---</option>
<option th:each="dict : ${type}" th:text="${dict.dictLabel}" th:value="${dict.dictValue}"></option> <option th:each="dict : ${type}" th:text="${dict.dictLabel}" th:value="${dict.dictValue}"></option>
</select> </select>
</div>
</div> </div>
</div> </div>
<div class="col-sm-6"> </div>
<div class="form-group"> <div class="col-sm-6">
<label class="col-sm-4 control-label">学历:</label> <div class="form-group">
<div class="col-sm-8"> <label class="col-sm-4 control-label">学历:</label>
<input name="graduate" class="form-control" placeholder="请输入学历" type="text"> <div class="col-sm-8">
</div> <input name="graduate" class="form-control" placeholder="请输入学历" type="text">
</div> </div>
</div> </div>
</div> </div>
<div class="row"> </div>
<div class="col-sm-6"> <div class="row">
<div class="form-group"> <div class="col-sm-6">
<label class="col-sm-4 control-label">生效时间:</label> <div class="form-group">
<div class="col-sm-8"> <label class="col-sm-4 control-label">生效时间:</label>
<input name="startdate" readonly class="form-control" type="text"> <div class="col-sm-8">
</div> <input name="startdate" readonly class="form-control" type="text">
</div> </div>
</div> </div>
<div class="col-sm-6"> </div>
<div class="form-group"> <div class="col-sm-6">
<label class="col-sm-4 control-label">失效时间:</label> <div class="form-group">
<div class="col-sm-8"> <label class="col-sm-4 control-label">失效时间:</label>
<input name="enddate" readonly class="form-control" value="2050-12-31" type="text"> <div class="col-sm-8">
</div> <input name="enddate" readonly class="form-control" value="2050-12-31" type="text">
</div> </div>
</div> </div>
</div> </div>
<div class="row"> </div>
<div class="col-sm-6"> <div class="row">
<div class="form-group"> <div class="col-sm-6">
<label class="col-sm-4 control-label is-required">保密协议签订书:</label> <div class="form-group">
<div class="fileinput fileinput-new col-sm-8" data-provides="fileinput"> <label class="col-sm-4 control-label is-required">保密协议签订书:</label>
<div class="fileinput fileinput-new col-sm-8" data-provides="fileinput">
<span class="btn btn-white btn-file" style="overflow: visible"> <span class="btn btn-white btn-file" style="overflow: visible">
<span class="fileinput-new">选择文件</span> <span class="fileinput-new">选择文件</span>
<span class="fileinput-exists">更改</span> <span class="fileinput-exists">更改</span>
@ -244,213 +244,213 @@
<input type="hidden" id="fileUrl" name="confAgreement" required> <input type="hidden" id="fileUrl" name="confAgreement" required>
<input type="hidden" id="fileName" name="confName" required> <input type="hidden" id="fileName" name="confName" required>
</span> </span>
<span class="fileinput-filename"></span> <span class="fileinput-filename"></span>
<a href="#" class="close fileinput-exists" data-dismiss="fileinput" style="float: none">&times;</a> <a href="#" class="close fileinput-exists" data-dismiss="fileinput" style="float: none">&times;</a>
</div>
</div> </div>
</div> </div>
<div class="col-sm-6"> </div>
<div class="form-group"> <div class="col-sm-6">
<label class="col-sm-4 control-label">健康状况:</label> <div class="form-group">
<div class="col-sm-8"> <label class="col-sm-4 control-label">健康状况:</label>
<input name="helthy" class="form-control" placeholder="请输入健康状况" type="text"> <div class="col-sm-8">
</div> <input name="helthy" class="form-control" placeholder="请输入健康状况" type="text">
</div> </div>
</div> </div>
<input type="hidden" id="status">
</div> </div>
<h4 class="form-header h4">其他信息</h4> <input type="hidden" id="status">
<div class="row"> </div>
<div class="col-sm-12"> <h4 class="form-header h4">其他信息</h4>
<div class="form-group"> <div class="row">
<label class="col-xs-2 control-label">备注:</label> <div class="col-sm-12">
<div class="col-xs-10"> <div class="form-group">
<textarea name="remark" maxlength="500" class="form-control" rows="3"></textarea> <label class="col-xs-2 control-label">备注:</label>
</div> <div class="col-xs-10">
<textarea name="remark" maxlength="500" class="form-control" rows="3"></textarea>
</div> </div>
</div> </div>
</div> </div>
</form>
</div>
<div class="row">
<div class="col-sm-offset-5 col-sm-10">
<button type="button" class="btn btn-sm btn-primary" onclick="submitHandler()"><i class="fa fa-check"></i>保 存</button>&nbsp;
<button type="button" class="btn btn-sm btn-danger" onclick="closeItem()"><i class="fa fa-reply-all"></i>关 闭 </button>
</div> </div>
</form>
</div>
<div class="row">
<div class="col-sm-offset-5 col-sm-10">
<button type="button" class="btn btn-sm btn-primary" onclick="submitHandler()"><i class="fa fa-check"></i>保 存</button>&nbsp;
<button type="button" class="btn btn-sm btn-danger" onclick="closeItem()"><i class="fa fa-reply-all"></i>关 闭 </button>
</div> </div>
<th:block th:include="include :: footer" /> </div>
<th:block th:include="include :: select2-js" /> <th:block th:include="include :: footer" />
<th:block th:include="include :: datetimepicker-js" /> <th:block th:include="include :: select2-js" />
<th:block th:include="include :: jasny-bootstrap-js" /> <th:block th:include="include :: datetimepicker-js" />
<script> <th:block th:include="include :: jasny-bootstrap-js" />
var prefix = ctx + "system/user"; <script>
var prefix = ctx + "system/user";
$("#form-user-add").validate({ $("#form-user-add").validate({
onkeyup: false, onkeyup: false,
rules:{ rules:{
loginName:{ loginName:{
minlength: 2, minlength: 2,
maxlength: 20, maxlength: 20,
remote: { remote: {
url: prefix + "/checkLoginNameUnique", url: prefix + "/checkLoginNameUnique",
type: "post", type: "post",
dataType: "json", dataType: "json",
data: { data: {
"loginName": function() { "loginName": function() {
return $.common.trim($("#loginName").val()); return $.common.trim($("#loginName").val());
}
} }
} }
}, }
password:{ },
minlength: 5, password:{
maxlength: 20 minlength: 5,
}, maxlength: 20
email:{ },
email:true, email:{
remote: { email:true,
url: prefix + "/checkEmailUnique", remote: {
type: "post", url: prefix + "/checkEmailUnique",
dataType: "json", type: "post",
data: { dataType: "json",
"email": function () { data: {
return $.common.trim($("#email").val()); "email": function () {
} return $.common.trim($("#email").val());
} }
} }
}, }
phonenumber:{ },
isPhone:true, phonenumber:{
remote: { isPhone:true,
url: prefix + "/checkPhoneUnique", remote: {
type: "post", url: prefix + "/checkPhoneUnique",
dataType: "json", type: "post",
data: { dataType: "json",
"phonenumber": function () { data: {
return $.common.trim($("#phonenumber").val()); "phonenumber": function () {
} return $.common.trim($("#phonenumber").val());
} }
} }
}, }
cerno:{
isIdentity18:true,
},
},
messages: {
"loginName": {
remote: "用户已经存在"
},
"email": {
remote: "Email已经存在"
},
"phonenumber":{
remote: "手机号码已经存在"
}
}, },
focusCleanup: true cerno:{
}); isIdentity18:true,
$("input[name='birthday']").datetimepicker({ },
format: "yyyy-mm-dd", },
minView: "month", messages: {
autoclose: true "loginName": {
}); remote: "用户已经存在"
$("input[name='startdate']").val(new Date().toLocaleDateString().replace(/\//g, '-')); },
function submitHandler() { "email": {
remote: "Email已经存在"
},
"phonenumber":{
remote: "手机号码已经存在"
}
},
focusCleanup: true
});
$("input[name='birthday']").datetimepicker({
format: "yyyy-mm-dd",
minView: "month",
autoclose: true
});
$("input[name='startdate']").val(new Date().toLocaleDateString().replace(/\//g, '-'));
function submitHandler() {
var chrtype = [[${#strings.defaultString(@config.getKey('sys.account.chrtype'), 0)}]]; var chrtype = [[${#strings.defaultString(@config.getKey('sys.account.chrtype'), 0)}]];
var password = $("#password").val(); var password = $("#password").val();
if ($.validate.form() && checkpwd(chrtype, password)) { if ($.validate.form() && checkpwd(chrtype, password)) {
var data = $("#form-user-add").serializeArray(); var data = $("#form-user-add").serializeArray();
var status = $("input[id='status']").is(':checked') == true ? 0 : 1; var status = $("input[id='status']").is(':checked') == true ? 0 : 1;
var roleIds = $.form.radioCheckeds("role"); var roleIds = $.form.radioCheckeds("role");
var postIds = $.form.selectSelects("post"); var postIds = $.form.selectSelects("post");
data.push({"name": "status", "value": status}); data.push({"name": "status", "value": status});
data.push({"name": "roleIds", "value": roleIds}); data.push({"name": "roleIds", "value": roleIds});
data.push({"name": "postIds", "value": postIds}); data.push({"name": "postIds", "value": postIds});
$.operate.saveTab(prefix + "/add", data); $.operate.saveTab(prefix + "/add", data);
} }
} }
/* 用户管理-新增-选择部门树 */ /* 用户管理-新增-选择部门树 */
function selectDeptTree() { function selectDeptTree() {
var treeId = $("#treeId").val(); var treeId = $("#treeId").val();
var deptId = $.common.isEmpty(treeId) ? "100" : $("#treeId").val(); var deptId = $.common.isEmpty(treeId) ? "100" : $("#treeId").val();
var url = ctx + "system/user/selectDeptTree/" + deptId; var url = ctx + "system/user/selectDeptTree/" + deptId;
var options = { var options = {
title: '选择部门', title: '选择部门',
width: "380", width: "380",
url: url, url: url,
callBack: doSubmit callBack: doSubmit
}; };
$.modal.openOptions(options); $.modal.openOptions(options);
} }
function doSubmit(index, layero){ function doSubmit(index, layero){
var body = $.modal.getChildFrame(index); var body = $.modal.getChildFrame(index);
$("#treeId").val(body.find('#treeId').val()); $("#treeId").val(body.find('#treeId').val());
$("#treeName").val(body.find('#treeName').val()); $("#treeName").val(body.find('#treeName').val());
$.modal.close(index); $.modal.close(index);
} }
$(function() { $(function() {
$('#post').select2({ $('#post').select2({
placeholder: "请选择岗位", placeholder: "请选择岗位",
allowClear: true allowClear: true
}); });
}) })
//文件上传 //文件上传
$('#fileUrlId').on('change.bs.fileinput ', function (e) { $('#fileUrlId').on('change.bs.fileinput ', function (e) {
// 处理自己的业务 // 处理自己的业务
var file = e.target.files[0]; var file = e.target.files[0];
var data = new FormData(); var data = new FormData();
data.append("file", file); data.append("file", file);
$.ajax({ $.ajax({
type: "POST", type: "POST",
url: ctx + "common/upload", url: ctx + "common/upload",
data: data, data: data,
cache: false, cache: false,
contentType: false, contentType: false,
processData: false, processData: false,
dataType: 'json', dataType: 'json',
success: function(result) { success: function(result) {
if (result.code == web_status.SUCCESS) { if (result.code == web_status.SUCCESS) {
$("#fileUrl").val(result.url); $("#fileUrl").val(result.url);
$("#fileName").val(result.originalFilename); $("#fileName").val(result.originalFilename);
} else { } else {
$("#fileUrl").val(""); $("#fileUrl").val("");
$("#fileName").val(""); $("#fileName").val("");
}
},
error: function(error) {
$.modal.alertWarning("文件上传失败。");
} }
}); },
error: function(error) {
$.modal.alertWarning("文件上传失败。");
}
}); });
$(document).ready(function(){
$("#userName").blur(function(e){ });
var text = $(this).val(); $(document).ready(function(){
if (text && text.trim() !== ''){ $("#userName").blur(function(e){
$.ajax({ var text = $(this).val();
type: "GET", if (text && text.trim() !== ''){
url: ctx + "system/user/getPinyin", $.ajax({
data: {name: text}, type: "GET",
dataType: 'json', url: ctx + "system/user/getPinyin",
success: function(res) { data: {name: text},
if (res.code == web_status.SUCCESS) { dataType: 'json',
$("#loginName").val(res.msg); success: function(res) {
} if (res.code == web_status.SUCCESS) {
}, $("#loginName").val(res.msg);
error: function(error) {
$.modal.alertWarning(error);
} }
}); },
} error: function(error) {
}); $.modal.alertWarning(error);
}
});
}
}); });
</script> });
</script>
</body> </body>
</html> </html>

@ -1,220 +1,219 @@
<!DOCTYPE html> <!DOCTYPE html>
<html lang="zh" xmlns:th="http://www.thymeleaf.org" > <html lang="zh" xmlns:th="http://www.thymeleaf.org" >
<head> <head>
<th:block th:include="include :: header('修改用户')" /> <th:block th:include="include :: header('修改用户')" />
<th:block th:include="include :: select2-css" /> <th:block th:include="include :: select2-css" />
<th:block th:include="include :: datetimepicker-css" /> <th:block th:include="include :: datetimepicker-css" />
<th:block th:include="include :: jasny-bootstrap-css" /> <th:block th:include="include :: jasny-bootstrap-css" />
</head> </head>
<body> <body>
<div class="main-content"> <div class="main-content">
<form class="form-horizontal" id="form-user-edit" th:object="${user}"> <form class="form-horizontal" id="form-user-edit" th:object="${user}">
<input name="userId" type="hidden" th:field="*{userId}" /> <input name="userId" type="hidden" th:field="*{userId}" />
<input name="deptId" type="hidden" th:field="*{deptId}" id="treeId"/> <input name="deptId" type="hidden" th:field="*{deptId}" id="treeId"/>
<h4 class="form-header h4">基本信息</h4> <h4 class="form-header h4">基本信息</h4>
<div class="row"> <div class="row">
<div class="col-sm-6"> <div class="col-sm-6">
<div class="form-group"> <div class="form-group">
<label class="col-sm-4 control-label is-required">人员姓名:</label> <label class="col-sm-4 control-label is-required">人员姓名:</label>
<div class="col-sm-8"> <div class="col-sm-8">
<input name="userName" placeholder="请输入用户名称" class="form-control" type="text" maxlength="30" th:field="*{userName}" required> <input name="userName" placeholder="请输入用户名称" class="form-control" type="text" maxlength="30" th:field="*{userName}" required>
</div>
</div> </div>
</div> </div>
<div class="col-sm-6"> </div>
<div class="form-group"> <div class="col-sm-6">
<label class="col-sm-4 control-label is-required">所属单位:</label> <div class="form-group">
<div class="col-sm-8"> <label class="col-sm-4 control-label is-required">所属单位:</label>
<div class="input-group"> <div class="col-sm-8">
<input class="form-control" required type="text" name="deptName" onclick="selectDeptTree()" id="treeName" th:field="*{dept.deptName}"> <div class="input-group">
<span class="input-group-addon"><i class="fa fa-search"></i></span> <input class="form-control" required type="text" name="deptName" onclick="selectDeptTree()" id="treeName" th:field="*{dept.deptName}">
</div> <span class="input-group-addon"><i class="fa fa-search"></i></span>
</div> </div>
</div> </div>
</div> </div>
</div> </div>
<div class="row"> </div>
<div class="col-sm-6"> <div class="row">
<div class="form-group"> <div class="col-sm-6">
<label class="col-sm-4 control-label is-required">登录账号:</label> <div class="form-group">
<div class="col-sm-8"> <label class="col-sm-4 control-label is-required">登录账号:</label>
<input class="form-control" required type="text" th:field="*{loginName}"/> <div class="col-sm-8">
</div> <input class="form-control" required type="text" th:field="*{loginName}"/>
</div> </div>
</div> </div>
<div class="col-sm-6"> </div>
<div class="form-group"> <div class="col-sm-6">
<label class="col-sm-4 control-label is-required">身份证号码:</label> <div class="form-group">
<div class="col-sm-8"> <label class="col-sm-4 control-label is-required">身份证号码:</label>
<input name="cerno" placeholder="请输入身份证号码" class="form-control" type="text" maxlength="30" th:field="*{cerno}" required> <div class="col-sm-8">
</div> <input name="cerno" placeholder="请输入身份证号码" class="form-control" type="text" maxlength="30" th:field="*{cerno}" required>
</div> </div>
</div> </div>
<input type="hidden" id="status" name="status" th:field="*{status}">
</div> </div>
<div class="row"> <input type="hidden" id="status" name="status" th:field="*{status}">
<div class="col-sm-6"> </div>
<div class="form-group"> <div class="row">
<label class="col-sm-4 control-label is-required">岗位:</label> <div class="col-sm-6">
<div class="col-sm-8"> <div class="form-group">
<select id="post" required class="form-control select2-multiple" multiple> <label class="col-sm-4 control-label">岗位:</label>
<option th:each="post:${posts}" th:value="${post.postId}" th:text="${post.postName}" th:selected="${post.flag}" th:disabled="${post.status == '1'}"></option> <div class="col-sm-8">
</select> <select id="post" class="form-control select2-multiple" multiple>
</div> <option th:each="post:${posts}" th:value="${post.postId}" th:text="${post.postName}" th:selected="${post.flag}" th:disabled="${post.status == '1'}"></option>
</select>
</div> </div>
</div> </div>
<div class="col-sm-6"> </div>
<div class="form-group"> <div class="col-sm-6">
<label class="col-sm-4 control-label is-required">用户性别:</label> <div class="form-group">
<div class="col-sm-8"> <label class="col-sm-4 control-label is-required">用户性别:</label>
<select name="sex" required class="form-control m-b" th:with="type=${@dict.getType('sys_user_sex')}"> <div class="col-sm-8">
<option value="">---请选择---</option> <select name="sex" required class="form-control m-b" th:with="type=${@dict.getType('sys_user_sex')}">
<option th:each="dict : ${type}" th:text="${dict.dictLabel}" th:value="${dict.dictValue}" th:field="*{sex}"></option> <option value="">---请选择---</option>
</select> <option th:each="dict : ${type}" th:text="${dict.dictLabel}" th:value="${dict.dictValue}" th:field="*{sex}"></option>
</div> </select>
</div> </div>
</div> </div>
</div> </div>
<div class="row"> </div>
<div class="col-sm-6"> <div class="row">
<div class="form-group"> <div class="col-sm-6">
<label class="col-sm-4 control-label is-required">角色:</label> <div class="form-group">
<div class="col-sm-8"> <label class="col-sm-4 control-label is-required">角色:</label>
<label th:each="role:${roles}" required class="check-box"> <div class="col-sm-8">
<input name="role" type="radio" th:value="${role.roleId}" th:text="${role.roleName}" th:checked="${role.flag}" th:disabled="${role.status == '1'}"> <label th:each="role:${roles}" required class="check-box">
<input name="role" type="radio" th:value="${role.roleId}" th:text="${role.roleName}" th:checked="${role.flag}" th:disabled="${role.status == '1'}">
</label> </label>
</div>
</div> </div>
</div> </div>
<div class="col-sm-6"> </div>
<div class="form-group"> <div class="col-sm-6">
<label class="col-sm-4 control-label">健康状况:</label> <div class="form-group">
<div class="col-sm-8"> <label class="col-sm-4 control-label">健康状况:</label>
<input name="helthy" class="form-control" placeholder="请输入健康状况" th:field="*{helthy}" type="text"> <div class="col-sm-8">
</div> <input name="helthy" class="form-control" placeholder="请输入健康状况" th:field="*{helthy}" type="text">
</div> </div>
</div> </div>
</div> </div>
<div class="row"> </div>
<div class="col-sm-6"> <div class="row">
<div class="form-group"> <div class="col-sm-6">
<label class="col-sm-4 control-label is-required">籍贯:</label> <div class="form-group">
<div class="col-sm-8"> <label class="col-sm-4 control-label is-required">籍贯:</label>
<input name="userarea" required class="form-control" th:field="*{userarea}" type="text"> <div class="col-sm-8">
</div> <input name="userarea" required class="form-control" th:field="*{userarea}" type="text">
</div> </div>
</div> </div>
<div class="col-sm-6"> </div>
<div class="form-group"> <div class="col-sm-6">
<label class="col-sm-4 control-label">民族:</label> <div class="form-group">
<div class="col-sm-8"> <label class="col-sm-4 control-label">民族:</label>
<select name="nation" class="form-control m-b" th:with="type=${@dict.getType('sys_user_nation')}"> <div class="col-sm-8">
<option value="">---请选择---</option> <select name="nation" class="form-control m-b" th:with="type=${@dict.getType('sys_user_nation')}">
<option th:each="dict : ${type}" th:text="${dict.dictLabel}" th:value="${dict.dictValue}" th:field="*{nation}"></option> <option value="">---请选择---</option>
</select> <option th:each="dict : ${type}" th:text="${dict.dictLabel}" th:value="${dict.dictValue}" th:field="*{nation}"></option>
</div> </select>
</div> </div>
</div> </div>
</div> </div>
<div class="row"> </div>
<div class="col-sm-6"> <div class="row">
<div class="form-group"> <div class="col-sm-6">
<label class="col-sm-4 control-label">手机号码:</label> <div class="form-group">
<div class="col-sm-8"> <label class="col-sm-4 control-label">手机号码:</label>
<div class="input-group"> <div class="col-sm-8">
<input name="phonenumber" placeholder="请输入手机号码" class="form-control" type="text" maxlength="11" th:field="*{phonenumber}"> <div class="input-group">
<span class="input-group-addon"><i class="fa fa-mobile"></i></span> <input name="phonenumber" placeholder="请输入手机号码" class="form-control" type="text" maxlength="11" th:field="*{phonenumber}">
</div> <span class="input-group-addon"><i class="fa fa-mobile"></i></span>
</div> </div>
</div> </div>
</div> </div>
<div class="col-sm-6"> </div>
<div class="form-group"> <div class="col-sm-6">
<label class="col-sm-4 control-label">邮箱:</label> <div class="form-group">
<div class="col-sm-8"> <label class="col-sm-4 control-label">邮箱:</label>
<div class="input-group"> <div class="col-sm-8">
<input name="email" class="form-control email" type="text" maxlength="50" placeholder="请输入邮箱" th:field="*{email}"> <div class="input-group">
<span class="input-group-addon"><i class="fa fa-envelope"></i></span> <input name="email" class="form-control email" type="text" maxlength="50" placeholder="请输入邮箱" th:field="*{email}">
</div> <span class="input-group-addon"><i class="fa fa-envelope"></i></span>
</div> </div>
</div> </div>
</div> </div>
</div> </div>
<div class="row"> </div>
<div class="col-sm-6"> <div class="row">
<div class="form-group"> <div class="col-sm-6">
<label class="col-sm-4 control-label">出生年月:</label> <div class="form-group">
<div class="col-sm-8"> <label class="col-sm-4 control-label">出生年月:</label>
<div class="input-group date"> <div class="col-sm-8">
<input name="birthday" th:value="${#dates.format(user.birthday, 'yyyy-MM-dd')}" class="form-control" placeholder="yyyy-MM-dd" type="text"> <div class="input-group date">
<span class="input-group-addon"><i class="fa fa-calendar"></i></span> <input name="birthday" th:value="${#dates.format(user.birthday, 'yyyy-MM-dd')}" class="form-control" placeholder="yyyy-MM-dd" type="text">
</div> <span class="input-group-addon"><i class="fa fa-calendar"></i></span>
</div> </div>
</div> </div>
</div> </div>
<div class="col-sm-6"> </div>
<div class="form-group"> <div class="col-sm-6">
<label class="col-sm-4 control-label">政治面貌:</label> <div class="form-group">
<div class="col-sm-8"> <label class="col-sm-4 control-label">政治面貌:</label>
<select name="politics" class="form-control m-b" th:with="type=${@dict.getType('sys_user_politics')}"> <div class="col-sm-8">
<option value="">---请选择---</option> <select name="politics" class="form-control m-b" th:with="type=${@dict.getType('sys_user_politics')}">
<option th:each="dict : ${type}" th:text="${dict.dictLabel}" th:value="${dict.dictValue}" th:field="*{politics}"></option> <option value="">---请选择---</option>
</select> <option th:each="dict : ${type}" th:text="${dict.dictLabel}" th:value="${dict.dictValue}" th:field="*{politics}"></option>
</div> </select>
</div> </div>
</div> </div>
</div> </div>
<div class="row"> </div>
<div class="col-sm-6"> <div class="row">
<div class="form-group"> <div class="col-sm-6">
<label class="col-sm-4 control-label is-required">是否持有护照或港澳通行证:</label> <div class="form-group">
<div class="col-sm-8"> <label class="col-sm-4 control-label is-required">是否持有护照或港澳通行证:</label>
<div class="radio-box" th:each="dict : ${@dict.getType('sys_user_passport')}"> <div class="col-sm-8">
<input type="radio" required th:id="${dict.dictCode}" name="havePassport" th:value="${dict.dictValue}" th:field="*{havePassport}"> <div class="radio-box" th:each="dict : ${@dict.getType('sys_user_passport')}">
<label th:for="${dict.dictCode}" th:text="${dict.dictLabel}"></label> <input type="radio" required th:id="${dict.dictCode}" name="havePassport" th:value="${dict.dictValue}" th:field="*{havePassport}">
</div> <label th:for="${dict.dictCode}" th:text="${dict.dictLabel}"></label>
</div> </div>
</div> </div>
</div> </div>
<div class="col-sm-6"> </div>
<div class="form-group"> <div class="col-sm-6">
<label class="col-sm-4 control-label is-required">是否具有出入境备案:</label> <div class="form-group">
<div class="col-sm-8"> <label class="col-sm-4 control-label is-required">是否具有出入境备案:</label>
<div class="radio-box" th:each="dict : ${@dict.getType('sys_user_passport')}"> <div class="col-sm-8">
<input type="radio" required th:id="${dict.dictCode}" name="entryexitFiling" th:value="${dict.dictValue}" th:field="*{entryexitFiling}"> <div class="radio-box" th:each="dict : ${@dict.getType('sys_user_passport')}">
<label th:for="${dict.dictCode}" th:text="${dict.dictLabel}"></label> <input type="radio" required th:id="${dict.dictCode}" name="entryexitFiling" th:value="${dict.dictValue}" th:field="*{entryexitFiling}">
</div> <label th:for="${dict.dictCode}" th:text="${dict.dictLabel}"></label>
</div> </div>
</div> </div>
</div> </div>
</div> </div>
<div class="row"> </div>
<div class="col-sm-6"> <div class="row">
<div class="form-group"> <div class="col-sm-6">
<label class="col-sm-4 control-label is-required">涉密程度:</label> <div class="form-group">
<div class="col-sm-8"> <label class="col-sm-4 control-label">涉密程度:</label>
<select name="shemichengdu" required class="form-control m-b" th:with="type=${@dict.getType('sys_user_shemi')}"> <div class="col-sm-8">
<option value="">---请选择---</option> <select name="shemichengdu" class="form-control m-b" th:with="type=${@dict.getType('sys_user_shemi')}">
<option th:each="dict : ${type}" th:text="${dict.dictLabel}" th:value="${dict.dictValue}" th:field="*{shemichengdu}"></option> <option value="">---请选择---</option>
</select> <option th:each="dict : ${type}" th:text="${dict.dictLabel}" th:value="${dict.dictValue}" th:field="*{shemichengdu}"></option>
</div> </select>
</div> </div>
</div> </div>
<div class="col-sm-6"> </div>
<div class="form-group"> <div class="col-sm-6">
<label class="col-sm-4 control-label">学历:</label> <div class="form-group">
<div class="col-sm-8"> <label class="col-sm-4 control-label">学历:</label>
<input name="graduate" th:field="*{graduate}" placeholder="请输入学历" class="form-control" type="text"> <div class="col-sm-8">
</div> <input name="graduate" th:field="*{graduate}" placeholder="请输入学历" class="form-control" type="text">
</div> </div>
</div> </div>
</div> </div>
<div class="row"> </div>
<div class="form-group"> <div class="row">
<label class="col-sm-2 control-label is-required">保密协议签订书:</label> <div class="form-group">
<br/> <label class="col-sm-2 control-label is-required">保密协议签订书:</label>
<div class="fileinput fileinput-new" data-provides="fileinput"> <br/>
<div class="fileinput fileinput-new" data-provides="fileinput">
<span class="btn btn-white btn-file"> <span class="btn btn-white btn-file">
<span class="fileinput-new">选择文件</span> <span class="fileinput-new">选择文件</span>
<span class="fileinput-exists">更改</span> <span class="fileinput-exists">更改</span>
@ -222,164 +221,164 @@
<input type="hidden" id="fileUrl" name="confAgreement" th:field="*{confAgreement}" > <input type="hidden" id="fileUrl" name="confAgreement" th:field="*{confAgreement}" >
<input type="hidden" id="fileName" name="confName" th:field="*{confName}"> <input type="hidden" id="fileName" name="confName" th:field="*{confName}">
</span> </span>
<span class="fileinput-filename">[[*{confName}]]</span> <span class="fileinput-filename">[[*{confName}]]</span>
<a href="#" class="close fileinput-exists" data-dismiss="fileinput" style="float: none">&times;</a> <a href="#" class="close fileinput-exists" data-dismiss="fileinput" style="float: none">&times;</a>
</div>
</div> </div>
</div> </div>
</div>
<h4 class="form-header h4">其他信息</h4> <h4 class="form-header h4">其他信息</h4>
<div class="row"> <div class="row">
<div class="col-sm-12"> <div class="col-sm-12">
<div class="form-group"> <div class="form-group">
<label class="col-xs-2 control-label">备注:</label> <label class="col-xs-2 control-label">备注:</label>
<div class="col-xs-10"> <div class="col-xs-10">
<textarea name="remark" maxlength="500" class="form-control" rows="3">[[*{remark}]]</textarea> <textarea name="remark" maxlength="500" class="form-control" rows="3">[[*{remark}]]</textarea>
</div>
</div> </div>
</div> </div>
</div> </div>
</form>
</div>
<div class="row">
<div class="col-sm-offset-5 col-sm-10">
<button type="button" class="btn btn-sm btn-primary" onclick="submitHandler()"><i class="fa fa-check"></i>保 存</button>&nbsp;
<button type="button" class="btn btn-sm btn-danger" onclick="closeItem()"><i class="fa fa-reply-all"></i>关 闭 </button>
</div> </div>
</form>
</div>
<div class="row">
<div class="col-sm-offset-5 col-sm-10">
<button type="button" class="btn btn-sm btn-primary" onclick="submitHandler()"><i class="fa fa-check"></i>保 存</button>&nbsp;
<button type="button" class="btn btn-sm btn-danger" onclick="closeItem()"><i class="fa fa-reply-all"></i>关 闭 </button>
</div> </div>
<th:block th:include="include :: footer" /> </div>
<th:block th:include="include :: select2-js" /> <th:block th:include="include :: footer" />
<th:block th:include="include :: datetimepicker-js" /> <th:block th:include="include :: select2-js" />
<th:block th:include="include :: jasny-bootstrap-js" /> <th:block th:include="include :: datetimepicker-js" />
<script type="text/javascript"> <th:block th:include="include :: jasny-bootstrap-js" />
var prefix = ctx + "system/user"; <script type="text/javascript">
var prefix = ctx + "system/user";
$("#form-user-edit").validate({ $("#form-user-edit").validate({
onkeyup: false, onkeyup: false,
rules:{ rules:{
email:{ email:{
email:true, email:true,
remote: { remote: {
url: prefix + "/checkEmailUnique", url: prefix + "/checkEmailUnique",
type: "post", type: "post",
dataType: "json", dataType: "json",
data: { data: {
"userId": function() { "userId": function() {
return $("#userId").val(); return $("#userId").val();
}, },
"email": function() { "email": function() {
return $.common.trim($("#email").val()); return $.common.trim($("#email").val());
}
} }
} }
}, }
phonenumber:{ },
isPhone:true, phonenumber:{
remote: { isPhone:true,
url: prefix + "/checkPhoneUnique", remote: {
type: "post", url: prefix + "/checkPhoneUnique",
dataType: "json", type: "post",
data: { dataType: "json",
"userId": function() { data: {
return $("#userId").val(); "userId": function() {
}, return $("#userId").val();
"phonenumber": function() { },
return $.common.trim($("#phonenumber").val()); "phonenumber": function() {
} return $.common.trim($("#phonenumber").val());
} }
} }
}, }
cerno:{
isIdentity18:true,
},
},
messages: {
"email": {
remote: "Email已经存在"
},
"phonenumber":{
remote: "手机号码已经存在"
}
}, },
focusCleanup: true cerno:{
}); isIdentity18:true,
},
},
messages: {
"email": {
remote: "Email已经存在"
},
"phonenumber":{
remote: "手机号码已经存在"
}
},
focusCleanup: true
});
function submitHandler() { function submitHandler() {
if ($.validate.form()) { if ($.validate.form()) {
var data = $("#form-user-edit").serializeArray(); var data = $("#form-user-edit").serializeArray();
/*var status = $("input[id='status']").is(':checked') == true ? 0 : 1;*/ /*var status = $("input[id='status']").is(':checked') == true ? 0 : 1;*/
var roleIds = $.form.radioCheckeds("role"); var roleIds = $.form.radioCheckeds("role");
var postIds = $.form.selectSelects("post"); var postIds = $.form.selectSelects("post");
/*data.push({"name": "status", "value": status});*/ /*data.push({"name": "status", "value": status});*/
data.push({"name": "roleIds", "value": roleIds}); data.push({"name": "roleIds", "value": roleIds});
data.push({"name": "postIds", "value": postIds}); data.push({"name": "postIds", "value": postIds});
$.operate.saveTab(prefix + "/edit", data); $.operate.saveTab(prefix + "/edit", data);
} }
} }
/* 用户管理-修改-选择部门树 */ /* 用户管理-修改-选择部门树 */
function selectDeptTree() { function selectDeptTree() {
var deptId = $.common.isEmpty($("#treeId").val()) ? "100" : $("#treeId").val(); var deptId = $.common.isEmpty($("#treeId").val()) ? "100" : $("#treeId").val();
var url = ctx + "system/user/selectDeptTree/" + deptId; var url = ctx + "system/user/selectDeptTree/" + deptId;
var options = { var options = {
title: '选择部门', title: '选择部门',
width: "380", width: "380",
url: url, url: url,
callBack: doSubmit callBack: doSubmit
}; };
$.modal.openOptions(options); $.modal.openOptions(options);
} }
function doSubmit(index, layero){ function doSubmit(index, layero){
var body = $.modal.getChildFrame(index); var body = $.modal.getChildFrame(index);
$("#treeId").val(body.find('#treeId').val()); $("#treeId").val(body.find('#treeId').val());
$("#treeName").val(body.find('#treeName').val()); $("#treeName").val(body.find('#treeName').val());
$.modal.close(index); $.modal.close(index);
} }
$("input[name='birthday']").datetimepicker({ $("input[name='birthday']").datetimepicker({
format: "yyyy-mm-dd", format: "yyyy-mm-dd",
minView: "month", minView: "month",
autoclose: true autoclose: true
}); });
$(function() { $(function() {
$('#post').select2({ $('#post').select2({
placeholder: "请选择岗位", placeholder: "请选择岗位",
allowClear: true allowClear: true
}); });
}) })
//文件上传 //文件上传
$('#fileUrlId').on('change.bs.fileinput ', function (e) { $('#fileUrlId').on('change.bs.fileinput ', function (e) {
// 处理自己的业务 // 处理自己的业务
var file = e.target.files[0]; var file = e.target.files[0];
var data = new FormData(); var data = new FormData();
data.append("file", file); data.append("file", file);
$.ajax({ $.ajax({
type: "POST", type: "POST",
url: ctx + "common/upload", url: ctx + "common/upload",
data: data, data: data,
cache: false, cache: false,
contentType: false, contentType: false,
processData: false, processData: false,
dataType: 'json', dataType: 'json',
success: function(result) { success: function(result) {
if (result.code == web_status.SUCCESS) { if (result.code == web_status.SUCCESS) {
$("#fileUrl").val(result.url); $("#fileUrl").val(result.url);
$("#fileName").val(result.originalFilename); $("#fileName").val(result.originalFilename);
} else { } else {
$("#fileUrl").val(""); $("#fileUrl").val("");
$("#fileName").val(""); $("#fileName").val("");
}
},
error: function(error) {
$.modal.alertWarning("文件上传失败。");
} }
}); },
error: function(error) {
$.modal.alertWarning("文件上传失败。");
}
}); });
</script>
});
</script>
</body> </body>
</html> </html>

@ -93,9 +93,9 @@
<div class="row"> <div class="row">
<div class="col-sm-6"> <div class="col-sm-6">
<div class="form-group"> <div class="form-group">
<label class="col-sm-4 control-label">岗位:</label> <label class="col-sm-4 control-label is-required">岗位:</label>
<div class="col-sm-8"> <div class="col-sm-8">
<select id="post" disabled class="form-control select2-multiple" multiple> <select id="post" required class="form-control select2-multiple" multiple>
<option th:each="post:${posts}" th:value="${post.postId}" th:text="${post.postName}" th:selected="${post.flag}" th:disabled="${post.status == '1'}"></option> <option th:each="post:${posts}" th:value="${post.postId}" th:text="${post.postName}" th:selected="${post.flag}" th:disabled="${post.status == '1'}"></option>
</select> </select>
</div> </div>
@ -118,7 +118,7 @@
<label class="col-sm-4 control-label">角色:</label> <label class="col-sm-4 control-label">角色:</label>
<div class="col-sm-8"> <div class="col-sm-8">
<label th:each="role:${roles}" class="check-box"> <label th:each="role:${roles}" class="check-box">
<input name="role" disabled type="radio" th:value="${role.roleId}" th:text="${role.roleName}" th:checked="${role.flag}"> <input name="role" type="radio" th:value="${role.roleId}" th:text="${role.roleName}" th:checked="${role.flag}">
</label> </label>
</div> </div>
</div> </div>
@ -202,10 +202,11 @@
<div class="row"> <div class="row">
<div class="col-sm-6"> <div class="col-sm-6">
<div class="form-group"> <div class="form-group">
<label class="col-sm-4 control-label">涉密程度:</label> <label class="col-sm-4 control-label is-required">涉密程度:</label>
<div class="col-sm-8"> <div class="col-sm-8">
<select name="shemichengdu" disabled class="form-control m-b" th:with="type=${@dict.getType('sys_user_shemi')}"> <select name="shemichengdu" required class="form-control m-b" th:with="type=${@dict.getType('sys_user_shemi')}">
<option th:each="dict : ${type}" th:text="${dict.dictLabel}" th:value="${dict.dictValue}"></option> <option value="">---请选择---</option>
<option th:each="dict : ${type}" th:text="${dict.dictLabel}" th:value="${dict.dictValue}" th:field="*{shemichengdu}"></option>
</select> </select>
</div> </div>
</div> </div>
@ -263,20 +264,20 @@
window.location.href = ctx + "common/download/resource?resource=" + encodeURI(fileUrl) ; window.location.href = ctx + "common/download/resource?resource=" + encodeURI(fileUrl) ;
} }
var prefix = ctx + "system/userApply"; var prefix = ctx + "system/userApply";
function pass(){
let id = $("input[name='userId']").val() function pass() {
$.ajax({ if ($.validate.form()) {
type : "GET", var data = $("#form-user-edit").serializeArray();
url : prefix + '/submit/' + id, /*var status = $("input[id='status']").is(':checked') == true ? 0 : 1;*/
async : false, var roleIds = $.form.radioCheckeds("role");
beforeSend: function () { var postIds = $.form.selectSelects("post");
$.modal.loading("正在处理中,请稍候..."); /*data.push({"name": "status", "value": status});*/
}, data.push({"name": "roleIds", "value": roleIds});
success: function(result) { data.push({"name": "postIds", "value": postIds});
$.operate.successTabCallback(result); $.operate.saveTab(prefix + "/submit", data);
} }
});
} }
document.addEventListener('DOMContentLoaded', function () { document.addEventListener('DOMContentLoaded', function () {
// 获取所有name为role的radio按钮 // 获取所有name为role的radio按钮
var radios = document.querySelectorAll('input[type="radio"]'); var radios = document.querySelectorAll('input[type="radio"]');

@ -30,9 +30,7 @@
<th:block th:include="include :: footer" /> <th:block th:include="include :: footer" />
<script th:inline="javascript"> <script th:inline="javascript">
var examineFlag = [[${@permission.hasPermi('system:userApply:apply')}]]; var examineFlag = [[${@permission.hasPermi('system:userApply:apply')}]];
var downloadFlag = [[${@permission.hasPermi('system:userexamine:examine')}]];
var userStatus = [[${@dict.getType('sys_normal_disable')}]]; var userStatus = [[${@dict.getType('sys_normal_disable')}]];
var userPolitics = [[${@dict.getType('sys_user_politics')}]];
var examineState = [[${@dict.getType('sys_user_examine')}]]; var examineState = [[${@dict.getType('sys_user_examine')}]];
var prefix = ctx + "system/userApply"; var prefix = ctx + "system/userApply";
@ -55,7 +53,7 @@
}, },
{ {
field: 'examine', field: 'examine',
title: '状态', title: '审核状态',
formatter: function(value, row, index) { formatter: function(value, row, index) {
return $.table.selectDictLabel(examineState, value); return $.table.selectDictLabel(examineState, value);
} }
@ -65,7 +63,7 @@
align: 'center', align: 'center',
formatter: function(value, row, index) { formatter: function(value, row, index) {
var actions = []; var actions = [];
actions.push('<a class="btn btn-success btn-xs ' + examineFlag + '" href="javascript:void(0)" onclick="examinedetail(\'' + row.userId + '\')"><i class="fa fa-edit"></i>申报</a> '); actions.push('<a class="btn btn-success btn-xs ' + examineFlag + '" href="javascript:void(0)" onclick="examinedetail(\'' + row.userId + '\')"><i class="fa fa-edit"></i>定岗</a> ');
return actions.join(''); return actions.join('');
} }
}] }]
@ -74,7 +72,7 @@
}); });
function examinedetail(id) { function examinedetail(id) {
var url =prefix + '/apply/' + id; var url =prefix + '/apply/' + id;
$.modal.openTab("涉密人员申请", url); $.modal.openTab("涉密人员定岗", url);
} }
</script> </script>
</body> </body>

@ -205,7 +205,8 @@
<label class="col-sm-4 control-label">涉密程度:</label> <label class="col-sm-4 control-label">涉密程度:</label>
<div class="col-sm-8"> <div class="col-sm-8">
<select name="shemichengdu" disabled class="form-control m-b" th:with="type=${@dict.getType('sys_user_shemi')}"> <select name="shemichengdu" disabled class="form-control m-b" th:with="type=${@dict.getType('sys_user_shemi')}">
<option th:each="dict : ${type}" th:text="${dict.dictLabel}" th:value="${dict.dictValue}"></option> <option value="">---请选择---</option>
<option th:each="dict : ${type}" th:text="${dict.dictLabel}" th:value="${dict.dictValue}" th:field="*{shemichengdu}"></option>
</select> </select>
</div> </div>
</div> </div>
@ -228,8 +229,8 @@
<span class="fileinput-filename" onclick="downloadFile()">文件下载</span> <span class="fileinput-filename" onclick="downloadFile()">文件下载</span>
<input type="hidden" id="fileUrl" name="confAgreement" th:field="*{confAgreement}" > <input type="hidden" id="fileUrl" name="confAgreement" th:field="*{confAgreement}" >
</span> </span>
<span class="fileinput-filename">[[*{confName}]]</span> <span class="fileinput-filename">[[*{confName}]]</span>
<a href="#" class="close fileinput-exists" data-dismiss="fileinput" style="float: none"> </a> <a href="#" class="close fileinput-exists" data-dismiss="fileinput" style="float: none"> </a>
</div> </div>
</div> </div>
</div> </div>

@ -24,7 +24,7 @@
</div> </div>
<div class="btn-group-sm" id="toolbar" role="group"> <div class="btn-group-sm" id="toolbar" role="group">
<a class="btn btn-success" id="toggleButton" @click="changeExamine()"> <a class="btn btn-success" id="toggleButton" @click="changeExamine()">
<i class="fa fa-exchange"></i> 待审核/已审核 <i class="fa fa-exchange"></i> 待审查/已审查
</a> </a>
</div> </div>
<div class="col-sm-12 select-table table-striped"> <div class="col-sm-12 select-table table-striped">
@ -101,7 +101,7 @@
align: 'center', align: 'center',
formatter: function(value, row, index) { formatter: function(value, row, index) {
var actions = []; var actions = [];
actions.push('<a class="btn btn-success btn-xs ' + examineFlag + '" href="javascript:void(0)" onclick="examinedetail(\'' + row.userId + '\')"><i class="fa fa-edit"></i></a> '); actions.push('<a class="btn btn-success btn-xs ' + examineFlag + '" href="javascript:void(0)" onclick="examinedetail(\'' + row.userId + '\')"><i class="fa fa-edit"></i></a> ');
return actions.join(''); return actions.join('');
} }
}] }]

@ -24,110 +24,110 @@
} }
</style> </style>
<body class="gray-bg"> <body class="gray-bg">
<div class="ui-layout-center" id="app"> <div class="ui-layout-center" id="app">
<div class="container-div"> <div class="container-div">
<div class="row"> <div class="row">
<div class="echart"> <div class="echart">
<div class="children_echarts left_echarts"> <div class="children_echarts left_echarts">
<div id="leftMain" style="width: 420px;height:330px"></div> <div id="leftMain" style="width: 420px;height:330px"></div>
</div>
<div class="children_echarts center_echarts">
<div id="centerMain" style="width: 650px;height:330px"></div>
</div>
<div class="children_echarts right_echarts">
<div id="rightMain" style="width: 400px;height:330px"></div>
</div>
</div> </div>
<div class="col-sm-12 search-collapse"> <div class="children_echarts center_echarts">
<form id="user-form"> <div id="centerMain" style="width: 630px;height:330px"></div>
<input type="hidden" id="deptId" name="deptId">
<input type="hidden" id="parentId" name="parentId">
<div class="select-list">
<ul>
<li>
<label>单位名称:</label>
<input type="text" name="deptName"/>
</li>
<li>
<label>所属市州:</label>
<select id="City" name="framework" @change="getAreaList()" v-model="City">
<option value="">请选择</option>
<option v-for="option in CityList" :value="option.id" :key="option.id">
{{ option.name }}
</option>
</select>
</li>
<li>
<label>所属区县:</label>
<select id="Area" name="area" v-model="Area">
<option value="">请选择</option>
<option v-for="option in AreaList" :value="option.id" :key="option.id">
{{ option.name }}
</option>
</select>
</li>
<li>
<a class="btn btn-primary btn-rounded btn-sm" onclick="$.table.search()"><i class="fa fa-search"></i>&nbsp;搜索</a>
<a class="btn btn-warning btn-rounded btn-sm" onclick="resetPre()"><i class="fa fa-refresh"></i>&nbsp;重置</a>
</li>
</ul>
</div>
</form>
</div> </div>
<div class="col-sm-12 select-table table-striped" style="min-height: 44%;"> <div class="children_echarts right_echarts">
<table id="bootstrap-table"></table> <div id="rightMain" style="width: 430px;height:330px"></div>
</div> </div>
</div> </div>
<div class="col-sm-12 search-collapse">
<form id="user-form">
<input type="hidden" id="deptId" name="deptId">
<input type="hidden" id="parentId" name="parentId">
<div class="select-list">
<ul>
<li>
<label>单位名称:</label>
<input type="text" name="deptName"/>
</li>
<li>
<label>所属市州:</label>
<select id="City" name="framework" @change="getAreaList()" v-model="City">
<option value="">请选择</option>
<option v-for="option in CityList" :value="option.id" :key="option.id">
{{ option.name }}
</option>
</select>
</li>
<li>
<label>所属区县:</label>
<select id="Area" name="area" v-model="Area">
<option value="">请选择</option>
<option v-for="option in AreaList" :value="option.id" :key="option.id">
{{ option.name }}
</option>
</select>
</li>
<li>
<a class="btn btn-primary btn-rounded btn-sm" onclick="$.table.search()"><i class="fa fa-search"></i>&nbsp;搜索</a>
<a class="btn btn-warning btn-rounded btn-sm" onclick="resetPre()"><i class="fa fa-refresh"></i>&nbsp;重置</a>
</li>
</ul>
</div>
</form>
</div>
<div class="col-sm-12 select-table table-striped" style="min-height: 44%;">
<table id="bootstrap-table"></table>
</div>
</div> </div>
</div> </div>
</div>
<th:block th:include="include :: footer" /> <th:block th:include="include :: footer" />
<th:block th:include="include :: layout-latest-js" /> <th:block th:include="include :: layout-latest-js" />
<th:block th:include="include :: ztree-js" /> <th:block th:include="include :: ztree-js" />
<th:block th:include="include :: echarts-js" /> <th:block th:include="include :: echarts-js" />
<script th:inline="javascript"> <script th:inline="javascript">
var detailFlag = [[${@permission.hasPermi('system:usernum:detail')}]]; var detailFlag = [[${@permission.hasPermi('system:usernum:detail')}]];
var politics = [[${@dict.getType('sys_user_politics')}]]; var politics = [[${@dict.getType('sys_user_politics')}]];
var shemichengdu = [[${@dict.getType('sys_user_shemi')}]]; var shemichengdu = [[${@dict.getType('sys_user_shemi')}]];
var examineState = [[${@dict.getType('sys_examine_state')}]]; var examineState = [[${@dict.getType('sys_examine_state')}]];
var prefix = ctx + "system/usernum"; var prefix = ctx + "system/usernum";
let datas = [] let datas = []
$.ajax({ $.ajax({
url: ctx + "system/area/getAllList", url: ctx + "system/area/getAllList",
type: 'GET', type: 'GET',
data:{parentId:''} , data:{parentId:''} ,
success:((res)=>{ success:((res)=>{
datas = res.data datas = res.data
}) , }) ,
}); });
$(function() { $(function() {
var panehHidden = false; var panehHidden = false;
if ($(this).width() < 769) { if ($(this).width() < 769) {
panehHidden = true; panehHidden = true;
} }
$('body').layout({ initClosed: panehHidden, west__size: 185 }); $('body').layout({ initClosed: panehHidden, west__size: 185 });
// 回到顶部绑定 // 回到顶部绑定
if ($.fn.toTop !== undefined) { if ($.fn.toTop !== undefined) {
var opt = { var opt = {
win:$('.ui-layout-center'), win:$('.ui-layout-center'),
doc:$('.ui-layout-center') doc:$('.ui-layout-center')
}; };
$('#scroll-up').toTop(opt); $('#scroll-up').toTop(opt);
} }
queryUserList(); queryUserList();
}); });
function queryUserList() { function queryUserList() {
var options = { var options = {
url: prefix + "/list", url: prefix + "/list",
createUrl: prefix + "/add", createUrl: prefix + "/add",
detail: prefix + "/detail/{id}", detail: prefix + "/detail/{id}",
print: prefix + "/print/{id}", print: prefix + "/print/{id}",
removeUrl: prefix + "/remove", removeUrl: prefix + "/remove",
exportUrl: prefix + "/export", exportUrl: prefix + "/export",
modalName: "用户", modalName: "用户",
pageSize:'5', pageSize:'5',
columns: [ columns: [
{ {
field : 'dept.deptid', field : 'dept.deptid',
title : '编号', title : '编号',
@ -150,167 +150,170 @@
{ {
field: 'dept.deptName', field: 'dept.deptName',
title: '所在单位' title: '所在单位'
}, },
{ {
title: '操作', title: '操作',
align: 'center', align: 'center',
formatter: function(value, row, index) { formatter: function(value, row, index) {
var actions = []; var actions = [];
actions.push('<a class="btn btn-info btn-xs ' + detailFlag + '" href="javascript:void(0)" onclick="print(\'' + row.deptId + '\')"><i class="fa fa-download"></i>打印</a> '); actions.push('<a class="btn btn-info btn-xs ' + detailFlag + '" href="javascript:void(0)" onclick="print(\'' + row.deptId + '\')"><i class="fa fa-download"></i>打印</a> ');
return actions.join(''); } return actions.join(''); }
}] }]
}; };
$.table.init(options); $.table.init(options);
} }
/* 自定义重置-表单重置/隐藏框/树节点选择色/搜索 */ /* 自定义重置-表单重置/隐藏框/树节点选择色/搜索 */
function resetPre() { function resetPre() {
resetDate(); resetDate();
$("#user-form")[0].reset(); $("#user-form")[0].reset();
$("#deptId").val(""); $("#deptId").val("");
$("#parentId").val(""); $("#parentId").val("");
$(".curSelectedNode").removeClass("curSelectedNode"); $(".curSelectedNode").removeClass("curSelectedNode");
$.table.search(); $.table.search();
} }
var app = new Vue({ var app = new Vue({
el: '#app', el: '#app',
data: { data: {
CityList: [], CityList: [],
AreaList:[], AreaList:[],
City:'', City:'',
Area:'', Area:'',
params:{ params:{
parentId:'', parentId:'',
} }
}, },
mounted(){ mounted(){
// 初始化地市列表 // 初始化地市列表
this.getCityList(); this.getCityList();
if (this.City){ if (this.City){
this.getAreaList() this.getAreaList()
} }
},
methods:{
getCityList(){
$.ajax({
url: ctx + "system/area/getSysAreaList",
type: 'GET',
data:this.params ,
success:((res)=>{
this.CityList = res.data
}) ,
});
}, },
methods:{ getAreaList(){
getCityList(){ this.params.parentId = this.City
$.ajax({ $.ajax({
url: ctx + "system/area/getSysAreaList", url: ctx + "system/area/getSysAreaList",
type: 'GET', type: 'GET',
data:this.params , data:this.params,
success:((res)=>{ success:((res)=>{
this.CityList = res.data.filter(obj => obj.id === '36625') this.AreaList = res.data
}) , }) ,
}); });
},
getAreaList(){
this.params.parentId = this.City
$.ajax({
url: ctx + "system/area/getSysAreaList",
type: 'GET',
data:this.params,
success:((res)=>{
this.AreaList = res.data
}) ,
});
}
} }
})
/* 用户管理-部门 */
function dept() {
var url = ctx + "system/dept";
$.modal.openTab("部门管理", url);
} }
function print(deptId) { })
var url = prefix + '/print/' + deptId; /* 用户管理-部门 */
$.modal.openTab("打印界面", url); function dept() {
} var url = ctx + "system/dept";
var myChart = echarts.init(document.getElementById('leftMain')); $.modal.openTab("部门管理", url);
axios.post(prefix + '/countSm').then(response => { }
if (response.data.code == web_status.SUCCESS){ function print(deptId) {
myChart.setOption({ var url = prefix + '/print/' + deptId;
title: { $.modal.openTab("打印界面", url);
text: '人员涉密程度统计' }
}, var myChart = echarts.init(document.getElementById('leftMain'));
tooltip: {}, axios.post(prefix + '/countSm').then(response => {
legend: { if (response.data.code == web_status.SUCCESS){
data:['人数'] myChart.setOption({
}, title: {
xAxis: { text: '人员涉密程度统计'
data: response.data.data.xAxisData },
}, tooltip: {},
yAxis: { legend: {
data:['人数']
},
xAxis: {
data: response.data.data.xAxisData
},
yAxis: {
}, },
series: [ series: [
{ {
name: '人数', name: '人数',
type: 'bar', type: 'bar',
data: response.data.data.yAxisData, data: response.data.data.yAxisData,
itemStyle: { itemStyle: {
color: '#5470C6' color: '#5470C6'
}
} }
] }
}); ]
console.log(response.data.data) });
} console.log(response.data.data)
}) }
var centerChart = echarts.init(document.getElementById('centerMain')); })
axios.post(prefix + '/countCheckMonth').then(response => { var centerChart = echarts.init(document.getElementById('centerMain'));
if (response.data.code == web_status.SUCCESS){ axios.post(prefix + '/countCheckMonth').then(response => {
centerChart.setOption({ if (response.data.code == web_status.SUCCESS){
title: { centerChart.setOption({
text: '已登记统计' title: {
}, text: '已登记统计'
tooltip: {}, },
legend: { tooltip: {},
data:['人数'] legend: {
}, data:['人数']
xAxis: { },
data: response.data.data.xAxisData, xAxis: {
axisLabel: { data: response.data.data.xAxisData,
rotate: 45, // 旋转标签的角度 axisLabel: {
margin: 10, // 标签与坐标轴的间距 rotate: 45, // 旋转标签的角度
}, margin: 10, // 标签与坐标轴的间距
}, },
yAxis: { },
yAxis: {
}, },
series: [ series: [
{ {
name: '人数', name: '人数',
type: 'bar', type: 'bar',
data: response.data.data.yAxisData, data: response.data.data.yAxisData,
itemStyle: { itemStyle: {
color: '#2ee37b' color: '#2ee37b'
}
}
]
});
console.log(response.data.data)
}
})
var rightMain = echarts.init(document.getElementById('rightMain'));
axios.post(prefix + '/countUser').then(response => {
if (response.data.code == web_status.SUCCESS){
rightMain.setOption({
title: {
text: '人员状态统计'
},
tooltip: {},
legend: {
orient: 'vertical',
x: 'right',
data: ['已登记', '已申报', '已审核', '已离职', '已离岗']
},
series: [
{
type: 'pie',
data: response.data.data
} }
] }
}); ]
} });
}) console.log(response.data.data)
</script> }
})
var rightMain = echarts.init(document.getElementById('rightMain'));
axios.post(prefix + '/countUser').then(response => {
if (response.data.code == web_status.SUCCESS){
rightMain.setOption({
title: {
text: '人员状态统计'
},
tooltip: {},
legend: {
orient: 'vertical',
x: 'right',
data: ['已登记', '已审查', '已定岗', '已离职', '已离岗'],
top: '60%',
left: '81%'
},
series: [
{
type: 'pie',
data: response.data.data,
center: ['43%', '55%']
}
]
});
}
})
</script>
</body> </body>
</html> </html>

@ -0,0 +1,47 @@
package com.ruoyi.common.core.domain.entity;
import com.baomidou.mybatisplus.annotation.TableField;
import lombok.*;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
/**
* sys_user
*
* @author ruoyi
*/
@Data
public class SysUserVo implements Serializable {
private static final long serialVersionUID = 1L;
/** 用户ID */
private Long userId;
/** 涉密程度 */
@NotBlank(message = "涉密程度不能为空")
private String shemichengdu;
/** 帐号状态0正常 1停用 */
private String status;
/** 删除标志0代表存在 2代表删除 */
private String delFlag;
/** 审核状态 */
private String examine;
/** 角色组 */
@TableField(exist=false)
private Long[] roleIds;
/** 岗位组 */
@NotNull(message = "岗位不能为空")
@TableField(exist=false)
private Long[] postIds;
}

@ -22,11 +22,11 @@ public class UserCountDTO implements Serializable {
@ApiModelProperty(value = "已登记") @ApiModelProperty(value = "已登记")
private Integer ydj; private Integer ydj;
@ApiModelProperty(value = "已申报") @ApiModelProperty(value = "已审查")
private Integer ysb; private Integer ysc;
@ApiModelProperty(value = "已审核") @ApiModelProperty(value = "已定岗")
private Integer ysh; private Integer ydg;
@ApiModelProperty(value = "已离职") @ApiModelProperty(value = "已离职")
private Integer ylz; private Integer ylz;

@ -314,15 +314,14 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
) )
</insert> </insert>
<select id="selectCountUser" resultType="com.ruoyi.system.domain.count.UserCountDTO"> <select id="selectCountUser" resultType="com.ruoyi.system.domain.count.UserCountDTO">
SELECT SELECT
SUM (CASE WHEN examine = 2 THEN 1 ELSE 0 END) AS ydj, SUM (CASE WHEN examine = '2' THEN 1 ELSE 0 END) AS ydj,
SUM (CASE WHEN examine = 3 THEN 1 ELSE 0 END) AS ysb, SUM (CASE WHEN examine = '3' THEN 1 ELSE 0 END) AS ydg,
SUM (CASE WHEN examine = 0 THEN 1 ELSE 0 END) AS ysh, SUM (CASE WHEN examine = '0' THEN 1 ELSE 0 END) AS ysc,
(SELECT SUM (CASE WHEN leavestate = 1 THEN 1 ELSE 0 END) (SELECT SUM (CASE WHEN leavestate = '1' THEN 1 ELSE 0 END)
FROM td_leave t) as ylz, FROM td_leave t) as ylz,
(SELECT SUM (CASE WHEN leavestate = 2 THEN 1 ELSE 0 END) (SELECT SUM (CASE WHEN leavestate = '2' THEN 1 ELSE 0 END)
FROM td_leave t) as ylg FROM td_leave t) as ylg
FROM ${prefix}sys_user s FROM ${prefix}sys_user s
</select> </select>

Loading…
Cancel
Save