Przeglądaj źródła

优化员工管理

jingbo 4 miesięcy temu
rodzic
commit
48a68780aa

+ 22 - 0
src/main/java/com/jeesite/modules/mes/entity/MesEmployee.java

@@ -19,6 +19,8 @@ import javax.validation.constraints.Size;
 		@Column(name="office_name", attrName="officeName", label="机构名称", queryType=QueryType.LIKE),
 		@Column(name="company_code", attrName="companyCode", label="公司编码"),
 		@Column(name="company_name", attrName="companyName", label="公司名称"),
+		@Column(name="post_code", attrName="postCode", label="岗位编码"),
+		@Column(name="post_name", attrName="postName", label="岗位名称", queryType=QueryType.LIKE),
 		@Column(name="status", attrName="status", label="状态", isUpdate=false),
 		@Column(name="create_by", attrName="createBy", label="创建者", isUpdate=false, isQuery=false),
 		@Column(name="create_date", attrName="createDate", label="创建时间", isUpdate=false, isQuery=false, isUpdateForce=true),
@@ -49,6 +51,8 @@ public class MesEmployee extends DataEntity<MesEmployee> {
 	private String officeName;
 	private String companyCode;
 	private String companyName;
+	private String postCode;
+	private String postName;
 	private String userCode;
 	private String loginCode;
 	private String userStatus;
@@ -138,6 +142,24 @@ public class MesEmployee extends DataEntity<MesEmployee> {
 		this.companyName = companyName;
 	}
 
+	@Size(min=0, max=64, message="岗位编码长度不能超过 64 个字符")
+	public String getPostCode() {
+		return postCode;
+	}
+
+	public void setPostCode(String postCode) {
+		this.postCode = postCode;
+	}
+
+	@Size(min=0, max=100, message="岗位名称长度不能超过 100 个字符")
+	public String getPostName() {
+		return postName;
+	}
+
+	public void setPostName(String postName) {
+		this.postName = postName;
+	}
+
 	public String getUserCode() {
 		return userCode;
 	}

+ 9 - 0
src/main/java/com/jeesite/modules/mes/web/EmpUserCustomController.java

@@ -118,6 +118,15 @@ public class EmpUserCustomController extends BaseController {
         if (StringUtils.isBlank(loginCode)) {
             return renderResult(Global.FALSE, "保存用户失败,登录账号不能为空。");
         }
+        if (loginCode.length() < 2) {
+            return renderResult(Global.FALSE, "保存用户失败,登录账号至少输入 2 个字符。");
+        }
+        if (empUser.getEmployee() == null || StringUtils.isBlank(empUser.getEmployee().getEmpNo())) {
+            return renderResult(Global.FALSE, "保存用户失败,员工工号不能为空。");
+        }
+        if (empUser.getEmployee() == null || StringUtils.isBlank(empUser.getEmployee().getEmpName())) {
+            return renderResult(Global.FALSE, "保存用户失败,员工姓名不能为空。");
+        }
         EmpUser existUser = new EmpUser();
         existUser.setLoginCode(loginCode);
         List<EmpUser> uList = empUserService.findList(existUser);

+ 11 - 0
src/main/resources/views/modules/mes/mesEmployeeForm.html

@@ -43,6 +43,17 @@
 					</div>
 					<div class="col-xs-6">
 						<div class="form-group">
+							<label class="control-label col-sm-4">${text('岗位')}:</label>
+							<div class="col-sm-8">
+								<#form:treeselect id="post" title="${text('岗位选择')}"
+									path="postCode" labelPath="postName"
+									url="${ctx}/sys/post/treeData"
+									allowClear="true" canSelectParent="true"/>
+							</div>
+						</div>
+					</div>
+					<div class="col-xs-6">
+						<div class="form-group">
 							<label class="control-label col-sm-4">${text('状态')}:</label>
 							<div class="col-sm-8">
 								<#form:radiobuttons path="status" dictType="sys_search_status" class="required"/>

+ 7 - 0
src/main/resources/views/modules/mes/mesEmployeeList.html

@@ -35,6 +35,12 @@
 					</div>
 				</div>
 				<div class="form-group">
+					<label class="control-label">${text('岗位')}:</label>
+					<div class="control-inline">
+						<#form:input path="postName" maxlength="100" class="form-control width-120"/>
+					</div>
+				</div>
+				<div class="form-group">
 					<label class="control-label">${text('状态')}:</label>
 					<div class="control-inline width-120">
 						<#form:select path="status" dictType="sys_search_status" blankOption="true" class="form-control isQuick"/>
@@ -60,6 +66,7 @@ $('#dataGrid').dataGrid({
 		}},
 		{header:'${text("员工工号")}', name:'empNo', index:'a.emp_no', width:120, align:"center"},
 		{header:'${text("所属机构")}', name:'officeName', index:'a.office_name', width:160, align:"center"},
+		{header:'${text("岗位")}', name:'postName', index:'a.post_name', width:120, align:"center"},
 		{header:'${text("登录账号")}', name:'loginCode', index:'u.login_code', width:120, align:"center", formatter: function(val){
 			return val || '<span class="text-muted">未开通</span>';
 		}},

+ 2 - 0
src/main/resources/views/modules/mes/mesEmployeeSelect.html

@@ -27,9 +27,11 @@ $('#employeeSelectGrid').dataGrid({
 	columnModel: [
 		{header:'empCode', name:'empCode', index:'a.emp_code', hidden:true},
 		{header:'officeCode', name:'officeCode', index:'a.office_code', hidden:true},
+		{header:'postCode', name:'postCode', index:'a.post_code', hidden:true},
 		{header:'${text("员工姓名")}', name:'empName', index:'a.emp_name', width:120, align:"center"},
 		{header:'${text("员工工号")}', name:'empNo', index:'a.emp_no', width:120, align:"center"},
 		{header:'${text("所属机构")}', name:'officeName', index:'a.office_name', width:150, align:"center"},
+		{header:'${text("岗位")}', name:'postName', index:'a.post_name', width:120, align:"center"},
 		{header:'${text("登录账号")}', name:'loginCode', index:'u.login_code', width:120, align:"center"},
 		{header:'操作', name:'actions', width:80, formatter: function(val, obj, row){
 			employeeSelectRows[obj.rowId] = row;

+ 23 - 30
src/main/resources/views/modules/sys/user/empUserForm.html

@@ -40,8 +40,8 @@
 							<span class="required ">*</span> ${text('登录账号')}:<i class="fa icon-question hide"></i></label>
 						<div class="col-sm-8">
 							<#form:hidden name="oldLoginCode" value="${empUser.loginCode}"/>
-							<#form:input path="loginCode" minlength="4" maxlength="20" readonly="${op=='auth'}"
-							class="form-control required userName"
+							<#form:input path="loginCode" minlength="2" maxlength="20" readonly="${op=='auth'}"
+							class="form-control required"
 							remote="${ctx}/sys/user/checkLoginCode?oldLoginCode=${empUser.loginCode}"
 							data-msg-remote="${text('登录账号已存在')}"/>
 						</div>
@@ -112,20 +112,18 @@
 				<div class="col-xs-6">
 					<div class="form-group">
 						<label class="control-label col-sm-4" title="">
-							<span class="required hide">*</span> ${text('员工工号')}:<i class="fa icon-question hide"></i></label>
+							<span class="required ">*</span> ${text('员工工号')}:<i class="fa icon-question hide"></i></label>
 						<div class="col-sm-8">
-							<#form:input path="employee.empNo" maxlength="32" class="form-control userName"
-							remote="${ctx}/sys/empUser/checkEmpNo?oldEmpNo=${empUser.employee.empNo}"
-							data-msg-remote="${text('员工工号已存在')}"/>
+							<#form:input path="employee.empNo" maxlength="32" class="form-control required"/>
 						</div>
 					</div>
 				</div>
 				<div class="col-xs-6">
 					<div class="form-group">
 						<label class="control-label col-sm-4" title="">
-							<span class="required hide">*</span> ${text('员工姓名')}:<i class="fa icon-question hide"></i></label>
+							<span class="required ">*</span> ${text('员工姓名')}:<i class="fa icon-question hide"></i></label>
 						<div class="col-sm-8">
-							<#form:input path="employee.empName" maxlength="32" class="form-control "/>
+							<#form:input path="employee.empName" maxlength="32" class="form-control required"/>
 							<span class="help-block selected-employee-tip hide"></span>
 						</div>
 					</div>
@@ -141,6 +139,19 @@
 						</div>
 					</div>
 				</div>
+				<div class="col-xs-6">
+					<div class="form-group">
+						<label class="control-label col-sm-4" title="">
+							<span class="required hide">*</span> ${text('岗位')}:<i class="fa icon-question hide"></i></label>
+						<div class="col-sm-8">
+							<#form:treeselect id="post" title="${text('岗位选择')}"
+							name="employee.postCode" value="${empUser.employee.postCode!}"
+							labelName="employeePostName" labelValue=""
+							url="${ctx}/sys/post/treeData"
+							allowClear="true" canSelectParent="true"/>
+						</div>
+					</div>
+				</div>
 			</div>
 			<div class="row">
 				<div class="col-xs-12">
@@ -267,7 +278,6 @@
 	//<% } %>
 	var empUserSubmitting = false;
 	var employeeSearchOpening = false;
-	var empNoRemoteUrl = '${ctx}/sys/empUser/checkEmpNo?oldEmpNo=${empUser.employee.empNo}';
 	$("#inputForm").validate({
 		submitHandler: function(form){
 			if (empUserSubmitting) {
@@ -314,8 +324,9 @@
 		var lastKeyword = '';
 		$('[name="employee.empName"]').on('input', function(){
 			$('[name="employee.empCode"]').val('');
+			$('[name="employee.postCode"]').val('');
+			$('[name="employeePostName"]').val('');
 			$('.selected-employee-tip').addClass('hide').text('');
-			toggleEmpNoRemoteValidation(false);
 			lastKeyword = '';
 		});
 		$('[name="employee.empName"]').on('blur', function(){
@@ -335,29 +346,11 @@
 		$('[name="userName"]').val(row.empName || '');
 		$('[name="employee.office.officeCode"]').val(row.officeCode || '');
 		$('[name="employee.office.officeName"]').val(row.officeName || '');
+		$('[name="employee.postCode"]').val(row.postCode || '');
+		$('[name="employeePostName"]').val(row.postName || '');
 		$('.selected-employee-tip').removeClass('hide').text('已选择员工:' + (row.empName || '') + (row.empNo ? '(' + row.empNo + ')' : ''));
-		toggleEmpNoRemoteValidation(true);
 	};
 
-	function toggleEmpNoRemoteValidation(selectedEmployee){
-		var empNoInput = $('#employee_empNo');
-		if (!empNoInput.length || !empNoInput.rules) {
-			return;
-		}
-		if (selectedEmployee) {
-			empNoInput.rules('remove', 'remote');
-			empNoInput.removeData('previousValue');
-		} else if (!empNoInput.rules().remote) {
-			empNoInput.rules('add', {
-				remote: empNoRemoteUrl,
-				messages: {
-					remote: empNoInput.attr('data-msg-remote')
-				}
-			});
-		}
-		empNoInput.resetValid();
-	}
-
 	function openEmployeeSearchByKeyword(keyword, showEmptyMessage){
 		keyword = $.trim(keyword || '');
 		if ('${op}' != 'add' || keyword.length < 1 || $('[name="employee.empCode"]').val()) {