You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
431 lines
20 KiB
431 lines
20 KiB
<!DOCTYPE html>
|
|
<html lang="zh" xmlns:th="http://www.thymeleaf.org" >
|
|
<head>
|
|
<th:block th:include="include :: header('新增用户')" />
|
|
<th:block th:include="include :: select2-css" />
|
|
<th:block th:include="include :: datetimepicker-css" />
|
|
<th:block th:include="include :: jasny-bootstrap-css" />
|
|
</head>
|
|
<body>
|
|
<div class="main-content">
|
|
<form id="form-user-add" class="form-horizontal">
|
|
<input name="deptId" type="hidden" id="treeId"/>
|
|
<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 is-required">人员姓名:</label>
|
|
<div class="col-sm-8">
|
|
<input name="userName" placeholder="请输入用户名称" class="form-control" type="text" maxlength="30" required>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="col-sm-6">
|
|
<div class="form-group">
|
|
<label class="col-sm-4 control-label is-required" >所属单位:</label>
|
|
<div class="col-sm-8">
|
|
<div class="input-group">
|
|
<input name="deptName" required onclick="selectDeptTree()" id="treeName" type="text" placeholder="请选择所属单位" class="form-control">
|
|
<span class="input-group-addon"><i class="fa fa-search"></i></span>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="row">
|
|
<div class="col-sm-6">
|
|
<div class="form-group">
|
|
<label class="col-sm-4 control-label is-required">手机号码:</label>
|
|
<div class="col-sm-8">
|
|
<div class="input-group">
|
|
<input id="phonenumber" required name="phonenumber" placeholder="请输入手机号码" class="form-control" type="text" maxlength="11">
|
|
<span class="input-group-addon"><i class="fa fa-mobile"></i></span>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="col-sm-6">
|
|
<div class="form-group">
|
|
<label class="col-sm-4 control-label is-required">邮箱:</label>
|
|
<div class="col-sm-8">
|
|
<div class="input-group">
|
|
<input id="email" name="email" required class="form-control email" type="text" maxlength="50" placeholder="请输入邮箱">
|
|
<span class="input-group-addon"><i class="fa fa-envelope"></i></span>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="row">
|
|
<div class="col-sm-6">
|
|
<div class="form-group">
|
|
<label class="col-sm-4 control-label is-required">登录账号:</label>
|
|
<div class="col-sm-8">
|
|
<input id="loginName" name="loginName" placeholder="请输入登录账号" class="form-control" type="text" maxlength="30" required>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="col-sm-6">
|
|
<div class="form-group">
|
|
<label class="col-sm-4 control-label is-required">登录密码:</label>
|
|
<div class="col-sm-8">
|
|
<div class="input-group">
|
|
<input id="password" name="password" placeholder="请输入登录密码" class="form-control" type="password" th:value="${@config.getKey('sys.user.initPassword')}" required>
|
|
<span class="input-group-addon" title="登录密码,鼠标按下显示密码"
|
|
onmousedown="$('#password').attr('type','text')"
|
|
onmouseup="$('#password').attr('type','password')"><i class="fa fa-key"></i></span>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="row">
|
|
<div class="col-sm-6">
|
|
<div class="form-group">
|
|
<label class="col-sm-4 control-label is-required">用户性别:</label>
|
|
<div class="col-sm-8">
|
|
<select name="sex" required class="form-control m-b" th:with="type=${@dict.getType('sys_user_sex')}">
|
|
<option value="">---请选择---</option>
|
|
<option th:each="dict : ${type}" th:text="${dict.dictLabel}" th:value="${dict.dictValue}"></option>
|
|
</select>
|
|
</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">
|
|
<input name="helthy" class="form-control" type="text">
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<input type="hidden" id="status">
|
|
</div>
|
|
<div class="row">
|
|
<div class="col-sm-6">
|
|
<div class="form-group">
|
|
<label class="col-sm-4 control-label is-required">岗位:</label>
|
|
<div class="col-sm-8">
|
|
<select id="post" class="form-control select2-multiple" required multiple>
|
|
<option th:each="post:${posts}" th:value="${post.postId}" th:text="${post.postName}" th:disabled="${post.status == '1'}"></option>
|
|
</select>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="col-sm-6">
|
|
<div class="form-group">
|
|
<label class="col-sm-4 control-label is-required">角色:</label>
|
|
<div class="col-sm-8">
|
|
<label th:each="role:${roles}" class="check-box">
|
|
<input name="role" type="checkbox" th:value="${role.roleId}" th:text="${role.roleName}" th:disabled="${role.status == '1'}" >
|
|
</label>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="row">
|
|
<div class="col-sm-6">
|
|
<div class="form-group">
|
|
<label class="col-sm-4 control-label is-required">用户地区:</label>
|
|
<div class="col-sm-8">
|
|
<input name="userarea" required class="form-control" type="text">
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="col-sm-6">
|
|
<div class="form-group">
|
|
<label class="col-sm-4 control-label is-required">民族:</label>
|
|
<div class="col-sm-8">
|
|
<select name="nation" required class="form-control m-b" th:with="type=${@dict.getType('sys_user_nation')}">
|
|
<option value="">---请选择---</option>
|
|
<option th:each="dict : ${type}" th:text="${dict.dictLabel}" th:value="${dict.dictValue}"></option>
|
|
</select>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="row">
|
|
<div class="col-sm-6">
|
|
<div class="form-group">
|
|
<label class="col-sm-4 control-label is-required">出生年月:</label>
|
|
<div class="col-sm-8">
|
|
<div class="input-group date">
|
|
<input name="birthday" required class="form-control" placeholder="yyyy-MM-dd" type="text">
|
|
<span class="input-group-addon"><i class="fa fa-calendar"></i></span>
|
|
</div>
|
|
</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">
|
|
<select name="politics" class="form-control m-b" th:with="type=${@dict.getType('sys_user_politics')}">
|
|
<option value="">---请选择---</option>
|
|
<option th:each="dict : ${type}" th:text="${dict.dictLabel}" th:value="${dict.dictValue}"></option>
|
|
</select>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="row">
|
|
<div class="col-sm-6">
|
|
<div class="form-group">
|
|
<label class="col-sm-4 control-label is-required">是否持有护照或港澳通行证:</label>
|
|
<div class="col-sm-8">
|
|
<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}">
|
|
<label th:for="${dict.dictCode}" th:text="${dict.dictLabel}"></label>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="col-sm-6">
|
|
<div class="form-group">
|
|
<label class="col-sm-4 control-label is-required">是否具有出入境备案:</label>
|
|
<div class="col-sm-8">
|
|
<div class="radio-box" th:each="dict : ${@dict.getType('sys_user_passport')}">
|
|
<input type="radio" required th:id="${dict.dictCode}" name="entryexitFiling" th:value="${dict.dictValue}" th:checked="${dict.default}">
|
|
<label th:for="${dict.dictCode}" th:text="${dict.dictLabel}"></label>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="row">
|
|
<div class="col-sm-6">
|
|
<div class="form-group">
|
|
<label class="col-sm-4 control-label is-required">涉密程度:</label>
|
|
<div class="col-sm-8">
|
|
<select name="shemichengdu" required class="form-control m-b" th:with="type=${@dict.getType('sys_user_shemi')}">
|
|
<option value="">---请选择---</option>
|
|
<option th:each="dict : ${type}" th:text="${dict.dictLabel}" th:value="${dict.dictValue}"></option>
|
|
</select>
|
|
</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">
|
|
<input name="graduate" class="form-control" type="text">
|
|
</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">
|
|
<input name="startdate" readonly class="form-control" type="text">
|
|
</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">
|
|
<input name="enddate" readonly class="form-control" value="2050-12-31" type="text">
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="row">
|
|
<div class="col-sm-12">
|
|
<div class="form-group">
|
|
<label class="col-sm-2 control-label is-required">保密协议签订书:</label>
|
|
<div class="fileinput fileinput-new col-sm-10" data-provides="fileinput">
|
|
<span class="btn btn-white btn-file">
|
|
<span class="fileinput-new">选择文件</span>
|
|
<span class="fileinput-exists">更改</span>
|
|
<input type="file" id="fileUrlId" name="..." required>
|
|
<input type="hidden" id="fileUrl" name="confAgreement">
|
|
<input type="hidden" id="fileName" name="confName">
|
|
</span>
|
|
<span class="fileinput-filename"></span>
|
|
<a href="#" class="close fileinput-exists" data-dismiss="fileinput" style="float: none">×</a>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
|
|
|
|
|
|
<h4 class="form-header h4">其他信息</h4>
|
|
<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">
|
|
<textarea name="remark" maxlength="500" class="form-control" rows="3"></textarea>
|
|
</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>
|
|
<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" />
|
|
<th:block th:include="include :: select2-js" />
|
|
<th:block th:include="include :: datetimepicker-js" />
|
|
<th:block th:include="include :: jasny-bootstrap-js" />
|
|
<script>
|
|
var prefix = ctx + "system/user";
|
|
|
|
$("#form-user-add").validate({
|
|
onkeyup: false,
|
|
rules:{
|
|
loginName:{
|
|
minlength: 2,
|
|
maxlength: 20,
|
|
remote: {
|
|
url: prefix + "/checkLoginNameUnique",
|
|
type: "post",
|
|
dataType: "json",
|
|
data: {
|
|
"loginName": function() {
|
|
return $.common.trim($("#loginName").val());
|
|
}
|
|
}
|
|
}
|
|
},
|
|
password:{
|
|
minlength: 5,
|
|
maxlength: 20
|
|
},
|
|
email:{
|
|
email:true,
|
|
remote: {
|
|
url: prefix + "/checkEmailUnique",
|
|
type: "post",
|
|
dataType: "json",
|
|
data: {
|
|
"email": function () {
|
|
return $.common.trim($("#email").val());
|
|
}
|
|
}
|
|
}
|
|
},
|
|
phonenumber:{
|
|
isPhone:true,
|
|
remote: {
|
|
url: prefix + "/checkPhoneUnique",
|
|
type: "post",
|
|
dataType: "json",
|
|
data: {
|
|
"phonenumber": function () {
|
|
return $.common.trim($("#phonenumber").val());
|
|
}
|
|
}
|
|
}
|
|
},
|
|
},
|
|
messages: {
|
|
"loginName": {
|
|
remote: "用户已经存在"
|
|
},
|
|
"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 password = $("#password").val();
|
|
if ($.validate.form() && checkpwd(chrtype, password)) {
|
|
var data = $("#form-user-add").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 + "/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);
|
|
}
|
|
|
|
$(function() {
|
|
$('#post').select2({
|
|
placeholder: "请选择岗位",
|
|
allowClear: true
|
|
});
|
|
})
|
|
|
|
//文件上传
|
|
$('#fileUrlId').on('change.bs.fileinput ', function (e) {
|
|
debugger
|
|
// 处理自己的业务
|
|
var file = e.target.files[0];
|
|
var data = new FormData();
|
|
data.append("file", file);
|
|
$.ajax({
|
|
type: "POST",
|
|
url: ctx + "common/upload",
|
|
data: data,
|
|
cache: false,
|
|
contentType: false,
|
|
processData: false,
|
|
dataType: 'json',
|
|
success: function(result) {
|
|
if (result.code == web_status.SUCCESS) {
|
|
$("#fileUrl").val(result.url);
|
|
$("#fileName").val(result.originalFilename);
|
|
} else {
|
|
$("#fileUrl").val("");
|
|
$("#fileName").val("");
|
|
}
|
|
},
|
|
error: function(error) {
|
|
$.modal.alertWarning("文件上传失败。");
|
|
}
|
|
});
|
|
|
|
});
|
|
|
|
</script>
|
|
|
|
</body>
|
|
</html>
|