hfy пре 4 месеци
родитељ
комит
0460414ab0

+ 33 - 15
src/main/java/com/jeesite/modules/mes/web/EmpUserCustomController.java

@@ -38,17 +38,20 @@ public class EmpUserCustomController extends BaseController {
     @RequestMapping(value = "form")
     public String form(EmpUser empUser, String op, Model model) {
         if ("copy".equals(op)) {
+            // 借用原生的 form 方法,获取全量数据(包括岗位、机构、角色)
             String view = empUserController.form(empUser, "edit", model);
-            
+
             EmpUser fullUser = (EmpUser) model.asMap().get("empUser");
             if (fullUser != null) {
+                // 将原记录转化为新记录
                 fullUser.setIsNewRecord(true);
                 fullUser.setUserCode(null);
-                
+
+                // 转换员工及附属机构的主键
                 if (fullUser.getEmployee() != null) {
                     fullUser.getEmployee().setIsNewRecord(true);
                     fullUser.getEmployee().setEmpCode(null);
-                    
+
                     List<EmployeeOffice> officeList = fullUser.getEmployee().getEmployeeOfficeList();
                     if (officeList != null && !officeList.isEmpty()) {
                         for (EmployeeOffice eo : officeList) {
@@ -57,7 +60,8 @@ public class EmpUserCustomController extends BaseController {
                         }
                     }
                 }
-                
+
+                // 处理角色回显
                 List<Role> roleList = fullUser.getRoleList();
                 if (roleList != null && !roleList.isEmpty()) {
                     List<String> roleCodes = new ArrayList<>();
@@ -66,20 +70,34 @@ public class EmpUserCustomController extends BaseController {
                     }
                     fullUser.setUserRoleString(StringUtils.join(roleCodes, ","));
                 }
-                
+
+                // 覆盖 Model 中的对象并注入角色列表和操作标识
                 model.addAttribute("empUser", fullUser);
                 model.addAttribute("roleList", roleList);
                 model.addAttribute("op", "add");
             }
-            
-            return "modules/sys/user/empUserForm";
-        }
-        
-        if ("add".equals(op) || "edit".equals(op)) {
-            empUserController.form(empUser, op, model);
-            return "modules/sys/user/empUserForm";
+
+            // 注入自定义保存脚本,修改表单 action 为我们自己的 save
+            String customSaveScript = "<script>" +
+                    "$(function(){" +
+                    "  var overrideAction = function() {" +
+                    "      var form = $('#inputForm');" +
+                    "      if(form.length > 0 && form.attr('action').indexOf('/mes/empUserCustom/save') === -1) {" +
+                    "          form.attr('action', '" + Global.getAdminPath() + "/mes/empUserCustom/save');" +
+                    "      }" +
+                    "  };" +
+                    "  overrideAction();" +
+                    "  setInterval(overrideAction, 500);" +
+                    "});" +
+                    "</script>";
+            model.addAttribute("customSaveScript", customSaveScript);
+
+            // 为了防止 customSaveScript 没有被模板渲染,我们利用 extend 字段进行 XSS 注入(JeeSite 中扩展字段常用于透传)
+            // 或者更安全的做法,只需 model 传参。这里保留之前的做法。
+
+            return view;
         }
-        
+
         return empUserController.form(empUser, op, model);
     }
 
@@ -92,7 +110,7 @@ public class EmpUserCustomController extends BaseController {
         if (uList != null && !uList.isEmpty()) {
             return renderResult(Global.FALSE, "保存用户失败,登录账号已存在(不能与原账号相同),请修改登录账号!");
         }
-        
+
         if (StringUtils.isNotBlank(empUser.getUserName())) {
             EmpUser where = new EmpUser();
             where.setUserName(empUser.getUserName());
@@ -101,7 +119,7 @@ public class EmpUserCustomController extends BaseController {
                 return renderResult(Global.FALSE, "保存用户失败,用户昵称已存在(不能与原昵称相同),请修改用户昵称!");
             }
         }
-        
+
         return empUserController.save(empUser, oldLoginCode, request);
     }
 }

+ 247 - 226
src/main/resources/views/modules/sys/user/empUserForm.html

@@ -9,190 +9,208 @@
 				<button type="button" class="btn btn-box-tool" data-widget="collapse"><i class="fa fa-minus"></i></button>
 			</div>
 		</div>
-		<#form:form id="inputForm" model="${empUser}" action="${ctx}/mes/empUserCustom/save" method="post" class="form-horizontal">
-			<#form:hidden name="op" value="${op}"/>
-			<#form:hidden name="userType" value="employee"/>
-			<#form:hidden path="userCode"/>
-			<div class="box-body">
-				<% if(op=='auth'){ %><br/><% } %>
-				<% if(op == 'add' || op == 'edit') { %>
-				<div class="form-unit">${text('基本信息')}</div>
-				<div class="row">
-					<div class="col-xs-6">
-						<div class="form-group">
-							<label class="control-label col-sm-4" title="">
-								<span class="required ">*</span> ${text('归属机构')}:<i class="fa icon-question hide"></i></label>
-							<div class="col-sm-8">
-								<#form:treeselect id="office" title="${text('机构选择')}"
-									path="employee.office.officeCode" labelPath="employee.office.officeName"
-									url="${ctx}/sys/office/treeData?ctrlPermi=${ctrlPermi}"
-									class="required" allowClear="false" canSelectRoot="true" canSelectParent="true"/>
-							</div>
+		<#form:form id="inputForm" model="${empUser}" action="${ctx}/sys/empUser/save" method="post" class="form-horizontal">
+		<#form:hidden name="op" value="${op}"/>
+		<#form:hidden name="userType" value="employee"/>
+		<#form:hidden path="userCode"/>
+		<div class="box-body">
+			<% if(op=='auth'){ %><br/><% } %>
+			<% if(op == 'add' || op == 'edit') { %>
+			<div class="form-unit">${text('基本信息')}</div>
+			<div class="row">
+				<div class="col-xs-6">
+					<div class="form-group">
+						<label class="control-label col-sm-4" title="">
+							<span class="required ">*</span> ${text('归属机构')}:<i class="fa icon-question hide"></i></label>
+						<div class="col-sm-8">
+							<#form:treeselect id="office" title="${text('机构选择')}"
+							path="employee.office.officeCode" labelPath="employee.office.officeName"
+							url="${ctx}/sys/office/treeData?ctrlPermi=${ctrlPermi}"
+							class="required" allowClear="false" canSelectRoot="true" canSelectParent="true"/>
 						</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="company" title="${text('公司选择')}"
-									path="employee.company.companyCode" labelPath="employee.company.companyName"
-									url="${ctx}/sys/company/treeData?ctrlPermi=${ctrlPermi}"
-									btnClass="" allowClear="true" canSelectRoot="true" canSelectParent="true"/>
-							</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="company" title="${text('公司选择')}"
+							path="employee.company.companyCode" labelPath="employee.company.companyName"
+							url="${ctx}/sys/company/treeData?ctrlPermi=${ctrlPermi}"
+							btnClass="" allowClear="true" canSelectRoot="true" canSelectParent="true"/>
 						</div>
 					</div>
 				</div>
-				<% } %>
-				<div class="row">
-					<div class="col-xs-6">
-						<div class="form-group">
-							<label class="control-label col-sm-4" title="">
-								<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="0" maxlength="20" readonly="${op=='auth'}"
-									class="form-control required"
-									remote="${ctx}/sys/user/checkLoginCode?oldLoginCode=${empUser.loginCode}"
-									data-msg-remote="${text('登录账号已存在')}"/>
-							</div>
+			</div>
+			<% } %>
+			<div class="row">
+				<div class="col-xs-6">
+					<div class="form-group">
+						<label class="control-label col-sm-4" title="">
+							<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"
+							remote="${ctx}/sys/user/checkLoginCode?oldLoginCode=${empUser.loginCode}"
+							data-msg-remote="${text('登录账号已存在')}"/>
 						</div>
 					</div>
-					<div class="col-xs-6">
-						<div class="form-group">
-							<label class="control-label col-sm-4" title="">
-								<span class="required ">*</span> ${text('用户昵称')}:<i class="fa icon-question hide"></i></label>
-							<div class="col-sm-8">
-								<#form:input path="userName" maxlength="32" readonly="${op=='auth'}" class="form-control required "/>
-							</div>
+				</div>
+				<div class="col-xs-6">
+					<div class="form-group">
+						<label class="control-label col-sm-4" title="">
+							<span class="required ">*</span> ${text('用户昵称')}:<i class="fa icon-question hide"></i></label>
+						<div class="col-sm-8">
+							<#form:input path="userName" maxlength="32" readonly="${op=='auth'}" class="form-control required "/>
 						</div>
 					</div>
 				</div>
-				<% if(op == 'add' || op == 'edit') { %>
-				<div class="row">
-					<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">
-								<div class="input-group">
-									<#form:input path="email" maxlength="300" class="form-control email"/>
-									<span class="input-group-addon"><i class="fa fa-fw fa-envelope"></i></span>
-								</div>
+			</div>
+			<% if(op == 'add' || op == 'edit') { %>
+			<div class="row">
+				<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">
+							<div class="input-group">
+								<#form:input path="email" maxlength="300" class="form-control email"/>
+								<span class="input-group-addon"><i class="fa fa-fw fa-envelope"></i></span>
 							</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">
-								<div class="input-group">
-									<#form:input path="mobile" maxlength="100" class="form-control mobile"/>
-									<span class="input-group-addon"><i class="fa fa-fw fa-mobile"></i></span>
-								</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">
+							<div class="input-group">
+								<#form:input path="mobile" maxlength="100" class="form-control mobile"/>
+								<span class="input-group-addon"><i class="fa fa-fw fa-mobile"></i></span>
 							</div>
 						</div>
 					</div>
 				</div>
-				<div class="row">
-					<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">
-								<div class="input-group">
-									<#form:input path="phone" maxlength="100" class="form-control phone"/>
-									<span class="input-group-addon"><i class="fa fa-fw fa-phone"></i></span>
-								</div>
+			</div>
+			<div class="row">
+				<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">
+							<div class="input-group">
+								<#form:input path="phone" maxlength="100" class="form-control phone"/>
+								<span class="input-group-addon"><i class="fa fa-fw fa-phone"></i></span>
 							</div>
 						</div>
 					</div>
 				</div>
-				<div class="form-unit">${text('详细信息')}</div>
-				<div class="row">
-					<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:input path="employee.empNo" maxlength="32" class="form-control"
-									remote="${ctx}/sys/empUser/checkEmpNo?oldEmpNo=${empUser.employee.empNo}"
-									data-msg-remote="${text('员工工号已存在')}"/>
-							</div>
+				<div class="col-xs-6 hide">
+					<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:input path="userWeight" value="0" maxlength="8" class="form-control digits" placeholder="${text('权重越大排名越靠前,请填写数字。')}"/>
 						</div>
 					</div>
-					<div class="col-xs-6">
-						<div class="form-group">
-							<label class="control-label col-sm-4" title="">
-								<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 "/>
-							</div>
+				</div>
+			</div>
+			<div class="form-unit">${text('详细信息')}</div>
+			<div class="row">
+				<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:input path="employee.empNo" maxlength="32" class="form-control userName"
+							remote="${ctx}/sys/empUser/checkEmpNo?oldEmpNo=${empUser.employee.empNo}"
+							data-msg-remote="${text('员工工号已存在')}"/>
 						</div>
 					</div>
 				</div>
-				<div class="row">
-					<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:select multiple="true" path="employee.employeePosts" items="${postList}"
-									itemLabel="postName" itemValue="postCode" class="form-control"/>
-							</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:input path="employee.empName" maxlength="32" class="form-control "/>
 						</div>
 					</div>
 				</div>
-				<div class="row">
-					<div class="col-xs-12">
-						<div class="form-group">
-							<label class="control-label col-sm-2" title="">
-								<span class="required hide">*</span> ${text('附属机构')}:<i class="fa icon-question hide"></i></label>
-							<div class="col-sm-10 table-form">
-								<table id="empOfficeGrid"></table>
-								<% if (hasPermi('sys:empUser:edit')){ %>
-									<a href="#" id="empOfficeGridAddRowBtn" class="btn btn-primary btn-sm mt10 mb10"><i class="fa fa-plus"></i> ${text('增行')}</a>
-								<% } %>
-							</div>
+			</div>
+			<div class="row">
+				<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:select multiple="true" path="employee.employeePosts" items="${postList}"
+							itemLabel="postName" itemValue="postCode" class="form-control"/>
 						</div>
 					</div>
 				</div>
-				<div class="row">
-					<div class="col-xs-12">
-						<div class="form-group">
-							<label class="control-label col-sm-2" title="">
-								<span class="required hide">*</span> ${text('备注信息')}:<i class="fa icon-question hide"></i></label>
-							<div class="col-sm-10">
-								<#form:textarea path="remarks" rows="4" maxlength="500" class="form-control "/>
-							</div>
+				<div class="col-xs-6 hide">
+					<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:input path="employee.empNameEn" value="moren" maxlength="32" class="form-control "/>
 						</div>
 					</div>
 				</div>
-				<% } %>
-				<% if(hasPermi('sys:empUser:authRole') && (op == 'add' || op == 'auth')) { %>
-				<div class="form-unit">${text('分配角色')}</div>
-				<div class="pl10 pb20">
-					<table id="roleGrid"></table>
-					<#form:hidden name="userRoleString"/>
+			</div>
+			<div class="row">
+				<div class="col-xs-12">
+					<div class="form-group">
+						<label class="control-label col-sm-2" title="">
+							<span class="required hide">*</span> ${text('附属机构')}:<i class="fa icon-question hide"></i></label>
+						<div class="col-sm-10 table-form">
+							<table id="empOfficeGrid"></table>
+							<% if (hasPermi('sys:empUser:edit')){ %>
+							<a href="#" id="empOfficeGridAddRowBtn" class="btn btn-primary btn-sm mt10 mb10"><i class="fa fa-plus"></i> ${text('增行')}</a>
+							<% } %>
+						</div>
+					</div>
 				</div>
-				<% } %>
-				<% if(op == 'add' || op == 'edit') { %>
-				<#form:extend collapsed="true" />
-				<% } %>
 			</div>
-			<div class="box-footer">
-				<div class="row">
-					<div class="col-sm-offset-2 col-sm-10">
-						<% if (hasPermi('sys:empUser:edit,sys:empUser:authRole', 'or')){ %>
-							<button type="submit" class="btn btn-sm btn-primary" id="btnSubmit"><i class="fa fa-check"></i> ${text('保 存')}</button>&nbsp;
-						<% } %>
-						<button type="button" class="btn btn-sm btn-default" id="btnCancel" onclick="js.closeCurrentTabPage()"><i class="fa fa-reply-all"></i> ${text('关 闭')}</button>
+			<div class="row">
+				<div class="col-xs-12">
+					<div class="form-group">
+						<label class="control-label col-sm-2" title="">
+							<span class="required hide">*</span> ${text('备注信息')}:<i class="fa icon-question hide"></i></label>
+						<div class="col-sm-10">
+							<#form:textarea path="remarks" rows="4" maxlength="500" class="form-control "/>
+						</div>
 					</div>
 				</div>
 			</div>
-		</#form:form>
-	</div>
+			<% } %>
+			<% if(hasPermi('sys:empUser:authRole') && (op == 'add' || op == 'auth')) { %>
+			<div class="form-unit">${text('分配角色')}</div>
+			<div class="pl10 pb20">
+				<table id="roleGrid"></table>
+				<#form:hidden name="userRoleString"/>
+			</div>
+			<% } %>
+			<% if(op == 'add' || op == 'edit') { %>
+			<#form:extend collapsed="true" />
+			<% } %>
+		</div>
+		<div class="box-footer">
+			<div class="row">
+				<div class="col-sm-offset-2 col-sm-10">
+					<% if (hasPermi('sys:empUser:edit,sys:empUser:authRole', 'or')){ %>
+					<button type="submit" class="btn btn-sm btn-primary" id="btnSubmit"><i class="fa fa-check"></i> ${text('保 存')}</button>&nbsp;
+					<% } %>
+					<button type="button" class="btn btn-sm btn-default" id="btnCancel" onclick="js.closeCurrentTabPage()"><i class="fa fa-reply-all"></i> ${text('关 闭')}</button>
+				</div>
+			</div>
+		</div>
+	</#form:form>
+</div>
 </div>
 <% } %>
 <script id="treeselectTpl" type="text/template">//<!--<div>
@@ -201,94 +219,97 @@
 	class="{{d.cssClass}}" btnClass="btn-sm" allowClear="true"/>
 </div>//--></script>
 <script>
-$("#empOfficeGrid").dataGrid({
-	data: ${toJson(empUser.employee.employeeOfficeList)},
-	datatype: "local",
-	columnModel: [
-		{header:'${text("附属机构")}', name:'officeName', sortable:false, width:100,
-			formatter: function(val, obj, row, act){
-				return js.val(row, 'officeCode')+'|'+js.val(row, 'officeName');
-			}, editable: true, edittype: "custom", editoptions: {
-				custom_element: function(val, editOptions) {
-					return js.template('treeselectTpl', {
-						id: 'office_'+editOptions.id, title: '机构选择',
-						name: 'officeCode', value: val.split('|')[0],
-						labelName: 'officeName', labelValue: val.split('|')[1],
-						url: '${ctx}/sys/office/treeData', cssClass: 'required'
-					});
+	$("#empOfficeGrid").dataGrid({
+		data: ${toJson(empUser.employee.employeeOfficeList)},
+		datatype: "local", // 设置本地数据
+		columnModel: [
+			{header:'${text("附属机构")}', name:'officeName', sortable:false, width:100,
+				formatter: function(val, obj, row, act){
+					return js.val(row, 'officeCode')+'|'+js.val(row, 'officeName');
+				}, editable: true, edittype: "custom", editoptions: {
+					custom_element: function(val, editOptions) {
+						return js.template('treeselectTpl', {
+							id: 'office_'+editOptions.id, title: '机构选择',
+							name: 'officeCode', value: val.split('|')[0],
+							labelName: 'officeName', labelValue: val.split('|')[1],
+							url: '${ctx}/sys/office/treeData', cssClass: 'required'
+						});
+					}
 				}
-			}
-		},
-		{header:'${text("附属岗位")}', name:'postCode', sortable:false, width:100,
-			editable:true, edittype:'select', editoptions:{'class':'form-control',
-				items: $.merge([{postName:'&nbsp;',postCode:''}], ${toJson(postList)}),
-				itemLabel: 'postName', itemValue: 'postCode', dataInit: function(element){
-					js.select2(element).on("change",function(){$(this).resetValid()});
+			},
+			{header:'${text("附属岗位")}', name:'postCode', sortable:false, width:100,
+				editable:true, edittype:'select', editoptions:{'class':'form-control',
+					items: $.merge([{postName:'&nbsp;',postCode:''}], ${toJson(postList)}),
+					itemLabel: 'postName', itemValue: 'postCode', dataInit: function(element){
+						js.select2(element).on("change",function(){$(this).resetValid()});
+					}
 				}
-			}
-		},
-		{header:'${text("操作")}', name:'actions', width:80, sortable:false, fixed:true, formatter: function(val, obj, row, act){
-			var actions = [];
-			actions.push('<a href="#" onclick="js.confirm(\'${text("你确认要删除这条数据吗?")}\', function(){$(\'#empOfficeGrid\').dataGrid(\'delRowData\',\''+obj.rowId+'\')});return false;"><i class="fa fa-trash-o"></i></a>&nbsp;');
-			return actions.join('');
-		}, editoptions: {defaultValue: 'new'}}
-	],
-	autoGridHeight: function(){return 'auto'},
+			},
+			{header:'${text("操作")}', name:'actions', width:80, sortable:false, fixed:true, formatter: function(val, obj, row, act){
+					var actions = [];
+					actions.push('<a href="#" onclick="js.confirm(\'${text("你确认要删除这条数据吗?")}\', function(){$(\'#empOfficeGrid\').dataGrid(\'delRowData\',\''+obj.rowId+'\')});return false;"><i class="fa fa-trash-o"></i></a>&nbsp;');
+					return actions.join('');
+				}, editoptions: {defaultValue: 'new'}}
+		],
+		autoGridHeight: function(){return 'auto'}, // 设置自动高度
 
-	editGrid: true,
-	editGridInitRowNum: 0,
-	editGridAddRowBtn: $('#empOfficeGridAddRowBtn'),
-	editGridAddRowInitData: {id: '', status: Global.STATUS_NORMAL},
+		// 编辑表格参数
+		editGrid: true,				// 是否是编辑表格
+		editGridInitRowNum: 0,		// 编辑表格的初始化新增行数
+		editGridAddRowBtn: $('#empOfficeGridAddRowBtn'),	// 子表增行按钮
+		editGridAddRowInitData: {id: '', status: Global.STATUS_NORMAL},	// 新增行的时候初始化的数据
 
-	editGridInputFormListName: 'employee.employeeOfficeList',
-	editGridInputFormListAttrs: 'officeCode,officeName,postCode,postName,',
+		// 编辑表格的提交数据参数
+		editGridInputFormListName: 'employee.employeeOfficeList', // 提交的数据列表名
+		editGridInputFormListAttrs: 'officeCode,officeName,postCode,postName,', // 提交数据列表的属性字段
 
-	ajaxSuccess: function(){
+		ajaxSuccess: function(){
 
-	}
-});
-//<% if(hasPermi('sys:empUser:authRole') && (op == 'add' || op == 'auth')) { %>
-var roleGrid = $("#roleGrid").dataGrid({
-	url: '${ctx}/sys/role/treeData',
-	postData: [
-		{name:'userType',value:'employee'},
-		{name:'ctrlPermi',value:'${ctrlPermi}'}
-	],
-	columnModel: [
-		{header:'${text("角色名称")}', name:'name', sortable:false, width:100, align:"center"},
-		{header:'${text("角色编码")}', name:'id', sortable:false, width:100, align:"center"}
-	],
-	showCheckbox: true,
-	autoGridHeight: function(){
-		return 'auto';
-	},
-	autoGridWidth: function(){
-		return $('#inputForm .box-body').width()-20;
-	},
-	ajaxSuccess: function(){
-		//<% for (role in roleList!){ %>
-		roleGrid.dataGrid('setSelectRow', '${role.roleCode}');
-		//<% } %>
-	}
-});
-//<% } %>
-$("#inputForm").validate({
-	submitHandler: function(form){
-		//<% if(hasPermi('sys:empUser:authRole') && (op == 'add' || op == 'auth')) { %>
-		$("#userRoleString").val(roleGrid.dataGrid('getSelectRows').join(','));
-		//<% } %>
-		var empNo = $('#employee_empNo').val();
-		if (empNo == ''){
-			$('#employee_empNo').val($('#loginCode').val());
 		}
-		js.ajaxSubmitForm($(form), function(data){
-			js.showMessage(data.message);
-			if(data.result == Global.TRUE){
-				js.closeCurrentTabPage(function(contentWindow){
-					contentWindow.page();
-				});
+	});
+	//<% if(hasPermi('sys:empUser:authRole') && (op == 'add' || op == 'auth')) { %>
+	// 加载角色列表
+	var roleGrid = $("#roleGrid").dataGrid({
+		url: '${ctx}/sys/role/treeData',
+		postData: [
+			{name:'userType',value:'employee'},
+			{name:'ctrlPermi',value:'${ctrlPermi}'}
+		],
+		columnModel: [
+			{header:'${text("角色名称")}', name:'name', sortable:false, width:100, align:"center"},
+			{header:'${text("角色编码")}', name:'id', sortable:false, width:100, align:"center"}
+		],
+		showCheckbox: true,
+		autoGridHeight: function(){
+			return 'auto';
+		},
+		autoGridWidth: function(){
+			return $('#inputForm .box-body').width()-20;
+		},
+		ajaxSuccess: function(){
+			//<% for (role in roleList!){ %>
+			roleGrid.dataGrid('setSelectRow', '${role.roleCode}');
+			//<% } %>
+		}
+	});
+	//<% } %>
+	$("#inputForm").validate({
+		submitHandler: function(form){
+			//<% if(hasPermi('sys:empUser:authRole') && (op == 'add' || op == 'auth')) { %>
+			$("#userRoleString").val(roleGrid.dataGrid('getSelectRows').join(','));
+			//<% } %>
+			var empNo = $('#employee_empNo').val();
+			if (empNo == ''){
+				$('#employee_empNo').val($('#loginCode').val());
 			}
-		}, "json");
-    }
-});
+			js.ajaxSubmitForm($(form), function(data){
+				js.showMessage(data.message);
+				if(data.result == Global.TRUE){
+					js.closeCurrentTabPage(function(contentWindow){
+						contentWindow.page();
+					});
+				}
+			}, "json");
+		}
+	});
 </script>

+ 163 - 163
src/main/resources/views/modules/sys/user/empUserList.html

@@ -9,8 +9,8 @@
 				<a href="#" class="btn btn-default" id="btnSearch" title="${text('查询')}"><i class="fa fa-filter"></i> ${text('查询')}</a>
 				<a href="#" class="btn btn-default" id="btnExport"><i class="glyphicon glyphicon-export"></i> ${text('导出')}</a>
 				<% if(hasPermi('sys:empUser:edit')){ %>
-					<a href="#" class="btn btn-default" id="btnImport"><i class="glyphicon glyphicon-import"></i> ${text('导入')}</a>
-					<a href="${ctx}/mes/empUserCustom/form?op=add" class="btn btn-default btnTool" title="${text('新增用户')}"><i class="fa fa-plus"></i> ${text('新增')}</a>
+				<a href="#" class="btn btn-default" id="btnImport"><i class="glyphicon glyphicon-import"></i> ${text('导入')}</a>
+				<a href="${ctx}/sys/empUser/form?op=add" class="btn btn-default btnTool" title="${text('新增用户')}"><i class="fa fa-plus"></i> ${text('新增')}</a>
 				<% } %>
 				<a href="#" class="btn btn-default" id="btnSetting" title="${text('设置')}"><i class="fa fa-navicon"></i></a>
 				<!-- <div class="btn-group">
@@ -27,200 +27,200 @@
 		</div>
 		<div class="box-body">
 			<#form:form id="searchForm" model="${empUser}" action="${ctx}/sys/empUser/listData" method="post" class="form-inline "
-					data-page-no="${parameter.pageNo}" data-page-size="${parameter.pageSize}" data-order-by="${parameter.orderBy}">
-				<#form:hidden name="ctrlPermi" value="${@Global.getConfig('user.adminCtrlPermi', '2')}"/>
+			data-page-no="${parameter.pageNo}" data-page-size="${parameter.pageSize}" data-order-by="${parameter.orderBy}">
+			<#form:hidden name="ctrlPermi" value="${@Global.getConfig('user.adminCtrlPermi', '2')}"/>
+			<div class="form-group">
+				<label class="control-label">${text('账号')}:</label>
+				<div class="control-inline">
+					<#form:input path="loginCode" maxlength="100" class="form-control width-90"/>
+				</div>
+			</div>
+			<div class="form-group">
+				<label class="control-label">${text('昵称')}:</label>
+				<div class="control-inline">
+					<#form:input path="userName" maxlength="100" class="form-control width-90"/>
+				</div>
+			</div>
+			<div class="form-group">
+				<label class="control-label">${text('姓名')}:</label>
+				<div class="control-inline">
+					<#form:input path="refName" maxlength="100" class="form-control width-90"/>
+				</div>
+			</div>
+			<div class="form-group">
+				<label class="control-label">${text('手机')}:</label>
+				<div class="control-inline">
+					<#form:input path="mobile" maxlength="100" class="form-control width-90"/>
+				</div>
+			</div>
+			<div class="form-group">
+				<label class="control-label">${text('状态')}:</label>
+				<div class="control-inline width-90">
+					<#form:select path="status" dictType="sys_user_status" blankOption="true" class="form-control isQuick"/>
+				</div>
+			</div>
+			<!-- <div class="form-row"></div> -->
+			<div class="form-group">
+				<button type="submit" class="btn btn-primary btn-sm">${text('查询')}</button>
+				<button type="reset" class="btn btn-default btn-sm">${text('重置')}</button>
+				<button type="button" class="btn btn-default btn-sm btnFormMore">${text('更多')}<i class="fa fa-angle-double-down"></i></button>
+			</div>
+			<div class="form-more">
 				<div class="form-group">
-					<label class="control-label">${text('账号')}:</label>
-					<div class="control-inline">
-						<#form:input path="loginCode" maxlength="100" class="form-control width-90"/>
+					<label class="control-label">${text('机构')}:</label>
+					<div class="control-inline width-90">
+						<#form:treeselect id="office" title="${text('机构选择')}"
+						path="employee.office.officeCode" labelPath="employee.office.officeName"
+						url="${ctx}/sys/office/treeData?ctrlPermi=${@Global.getConfig('user.adminCtrlPermi', '2')}"
+						btnClass="btn-sm" allowClear="true" canSelectRoot="true" canSelectParent="true"/>
 					</div>
 				</div>
 				<div class="form-group">
-					<label class="control-label">${text('昵称')}:</label>
-					<div class="control-inline">
-						<#form:input path="userName" maxlength="100" class="form-control width-90"/>
+					<label class="control-label">${text('公司')}:</label>
+					<div class="control-inline width-90">
+						<#form:treeselect id="company" title="${text('公司选择')}"
+						path="employee.company.companyCode" labelPath="employee.company.companyName"
+						url="${ctx}/sys/company/treeData?ctrlPermi=${@Global.getConfig('user.adminCtrlPermi', '2')}"
+						btnClass="btn-sm" allowClear="true" canSelectRoot="true" canSelectParent="true"/>
 					</div>
 				</div>
 				<div class="form-group">
-					<label class="control-label">${text('姓名')}:</label>
+					<label class="control-label">${text('邮箱')}:</label>
 					<div class="control-inline">
-						<#form:input path="refName" maxlength="100" class="form-control width-90"/>
+						<#form:input path="email" maxlength="300" class="form-control width-90"/>
 					</div>
 				</div>
 				<div class="form-group">
-					<label class="control-label">${text('手机')}:</label>
+					<label class="control-label">${text('电话')}:</label>
 					<div class="control-inline">
-						<#form:input path="mobile" maxlength="100" class="form-control width-90"/>
+						<#form:input path="phone" maxlength="100" class="form-control width-90"/>
 					</div>
 				</div>
 				<div class="form-group">
-					<label class="control-label">${text('状态')}:</label>
+					<label class="control-label">${text('岗位')}:</label>
 					<div class="control-inline width-90">
-						<#form:select path="status" dictType="sys_user_status" blankOption="true" class="form-control isQuick"/>
+						<#form:select name="employee.postCode" items="${postList}"
+						itemLabel="postName" itemValue="postCode" blankOption="true" class="form-control isQuick"/>
 					</div>
 				</div>
-				<!-- <div class="form-row"></div> -->
 				<div class="form-group">
-					<button type="submit" class="btn btn-primary btn-sm">${text('查询')}</button>
-					<button type="reset" class="btn btn-default btn-sm">${text('重置')}</button>
-					<button type="button" class="btn btn-default btn-sm btnFormMore">${text('更多')}<i class="fa fa-angle-double-down"></i></button>
-				</div>
-				<div class="form-more">
-					<div class="form-group">
-						<label class="control-label">${text('机构')}:</label>
-						<div class="control-inline width-90">
-							<#form:treeselect id="office" title="${text('机构选择')}"
-									path="employee.office.officeCode" labelPath="employee.office.officeName" 
-									url="${ctx}/sys/office/treeData?ctrlPermi=${@Global.getConfig('user.adminCtrlPermi', '2')}"
-									btnClass="btn-sm" allowClear="true" canSelectRoot="true" canSelectParent="true"/>
-						</div>
-					</div>
-					<div class="form-group">
-						<label class="control-label">${text('公司')}:</label>
-						<div class="control-inline width-90">
-							<#form:treeselect id="company" title="${text('公司选择')}"
-									path="employee.company.companyCode" labelPath="employee.company.companyName" 
-									url="${ctx}/sys/company/treeData?ctrlPermi=${@Global.getConfig('user.adminCtrlPermi', '2')}"
-									btnClass="btn-sm" allowClear="true" canSelectRoot="true" canSelectParent="true"/>
-						</div>
-					</div>
-					<div class="form-group">
-						<label class="control-label">${text('邮箱')}:</label>
-						<div class="control-inline">
-							<#form:input path="email" maxlength="300" class="form-control width-90"/>
-						</div>
-					</div>
-					<div class="form-group">
-						<label class="control-label">${text('电话')}:</label>
-						<div class="control-inline">
-							<#form:input path="phone" maxlength="100" class="form-control width-90"/>
-						</div>
-					</div>
-					<div class="form-group">
-						<label class="control-label">${text('岗位')}:</label>
-						<div class="control-inline width-90">
-							<#form:select name="employee.postCode" items="${postList}"
-								itemLabel="postName" itemValue="postCode" blankOption="true" class="form-control isQuick"/>
-						</div>
-					</div>
-					<div class="form-group">
-						<label class="control-label">${text('角色')}:</label>
-						<div class="control-inline width-120">
-							<#form:select name="roleCode" items="${roleList}"
-								itemLabel="roleName" itemValue="roleCode" blankOption="true" class="form-control isQuick"/>
-						</div>
+					<label class="control-label">${text('角色')}:</label>
+					<div class="control-inline width-120">
+						<#form:select name="roleCode" items="${roleList}"
+						itemLabel="roleName" itemValue="roleCode" blankOption="true" class="form-control isQuick"/>
 					</div>
 				</div>
-			</#form:form>
-			<table id="dataGrid"></table>
-			<div id="dataGridPage"></div>
-		</div>
+			</div>
+		</#form:form>
+		<table id="dataGrid"></table>
+		<div id="dataGridPage"></div>
 	</div>
 </div>
+</div>
 <% } %>
 <script>
-// 初始化DataGrid对象
-$('#dataGrid').dataGrid({
-	searchForm: $("#searchForm"),
-	columnModel: [
-		{header:'${text("登录账号")}', name:'loginCode', index:'a.login_code', width:125, align:"center", frozen:true, formatter: function(val, obj, row, act){
-			return '<a href="${ctx}/mes/empUserCustom/form?userCode='+row.userCode+'&op=edit" class="btnList" data-title="${text("编辑用户")}">'+(val||row.id)+'</a>';
-		}},
-		{header:'${text("用户昵称")}', name:'userName', index:'a.user_name', width:125, align:"center"},
-		{header:'${text("员工姓名")}', name:'refName', index:'a.ref_name', width:125, align:"center"},
-		{header:'${text("归属机构")}', name:'employee.office.officeName', index:'o.office_name', width:135, align:"center"},
-		{header:'${text("归属公司")}', name:'employee.company.companyName', index:'c.company_name', width:135, align:"center"},
-		{header:'${text("电子邮箱")}', name:'email', index:'a.email', width:120, align:"center"},
-		{header:'${text("手机号码")}', name:'mobile', index:'a.mobile', width:120, align:"center"},
-		{header:'${text("办公电话")}', name:'phone', index:'a.phone', width:120, align:"center"},
-		{header:'${text("更新时间")}', name:'updateDate', index:'a.update_date', width:125, align:"center", frozen:true},
-		{header:'${text("状态")}', name:'status', index:'a.status', width:60, align:"center", frozen:true, formatter: function(val, obj, row, act){
-			return js.getDictLabel(${@DictUtils.getDictListJson('sys_status')}, val, '未知', true);
-		}},
-		{header:'${text("操作")}', name:'actions', width:120, formatter: function(val, obj, row, act){
-			var actions = [];
-			//<% if(hasPermi('sys:empUser:edit')){ %>
-				actions.push('<a href="${ctx}/mes/empUserCustom/form?userCode='+row.userCode+'&op=edit" class="btnList" title="${text("编辑用户")}"><i class="fa fa-pencil"></i></a>&nbsp;');
-			//<% } %>
-			//<% if(hasPermi('sys:empUser:updateStatus')){ %>
-				if (row.status == Global.STATUS_NORMAL){
-					actions.push('<a href="${ctx}/sys/empUser/disable?userCode='+row.userCode+'" class="btnList" title="${text("停用用户")}" data-confirm="${text("确认要停用该用户吗?")}"><i class="glyphicon glyphicon-ban-circle"></i></a>&nbsp;');
-				}else if (row.status == Global.STATUS_DISABLE || row.status == Global.STATUS_FREEZE || row.status == Global.STATUS_AUDIT){
-					actions.push('<a href="${ctx}/sys/empUser/enable?userCode='+row.userCode+'" class="btnList" title="${text("启用用户")}" data-confirm="${text("确认要启用该用户吗?")}"><i class="glyphicon glyphicon-ok-circle"></i></a>&nbsp;');
-				}
-			//<% } %>
-			//<% if(hasPermi('sys:empUser:edit')){ %>
-				actions.push('<a href="${ctx}/sys/empUser/delete?userCode='+row.userCode+'" class="btnList" title="${text("删除用户")}" data-confirm="${text("确认要删除该用户吗?")}"><i class="fa fa-trash-o"></i></a>&nbsp;');
-				actions.push('<a href="${ctx}/mes/empUserCustom/form?userCode='+row.userCode+'&op=copy" class="btnList" title="${text("复制用户")}"><i class="fa fa-copy"></i></a>&nbsp;');
-			//<% } %>
-			//<% if(hasPermi('sys:empUser:authRole,sys:empUser:authDataScope,sys:empUser:resetpwd', 'or')){ %>
-				actions.push('<a href="javascript:" class="btnMore" title="${text("更多操作")}"><i class="fa fa-chevron-circle-right"></i></a>&nbsp;');
-				actions.push('<div class="moreItems">');
-				//<% if(hasPermi('sys:empUser:authRole')){ %>
+	// 初始化DataGrid对象
+	$('#dataGrid').dataGrid({
+		searchForm: $("#searchForm"),
+		columnModel: [
+			{header:'${text("登录账号")}', name:'loginCode', index:'a.login_code', width:125, align:"center", frozen:true, formatter: function(val, obj, row, act){
+					return '<a href="${ctx}/sys/empUser/form?userCode='+row.userCode+'&op=edit" class="btnList" data-title="${text("编辑用户")}">'+(val||row.id)+'</a>';
+				}},
+			{header:'${text("用户昵称")}', name:'userName', index:'a.user_name', width:125, align:"center"},
+			{header:'${text("员工姓名")}', name:'refName', index:'a.ref_name', width:125, align:"center"},
+			{header:'${text("归属机构")}', name:'employee.office.officeName', index:'o.office_name', width:135, align:"center"},
+			{header:'${text("归属公司")}', name:'employee.company.companyName', index:'c.company_name', width:135, align:"center"},
+			{header:'${text("电子邮箱")}', name:'email', index:'a.email', width:120, align:"center"},
+			{header:'${text("手机号码")}', name:'mobile', index:'a.mobile', width:120, align:"center"},
+			{header:'${text("办公电话")}', name:'phone', index:'a.phone', width:120, align:"center"},
+			{header:'${text("更新时间")}', name:'updateDate', index:'a.update_date', width:125, align:"center", frozen:true},
+			{header:'${text("状态")}', name:'status', index:'a.status', width:60, align:"center", frozen:true, formatter: function(val, obj, row, act){
+					return js.getDictLabel(${@DictUtils.getDictListJson('sys_status')}, val, '未知', true);
+				}},
+			{header:'${text("操作")}', name:'actions', width:120, formatter: function(val, obj, row, act){
+					var actions = [];
+					//<% if(hasPermi('sys:empUser:edit')){ %>
+					actions.push('<a href="${ctx}/sys/empUser/form?userCode='+row.userCode+'&op=edit" class="btnList" title="${text("编辑用户")}"><i class="fa fa-pencil"></i></a>&nbsp;');
+					//<% } %>
+					//<% if(hasPermi('sys:empUser:updateStatus')){ %>
+					if (row.status == Global.STATUS_NORMAL){
+						actions.push('<a href="${ctx}/sys/empUser/disable?userCode='+row.userCode+'" class="btnList" title="${text("停用用户")}" data-confirm="${text("确认要停用该用户吗?")}"><i class="glyphicon glyphicon-ban-circle"></i></a>&nbsp;');
+					}else if (row.status == Global.STATUS_DISABLE || row.status == Global.STATUS_FREEZE || row.status == Global.STATUS_AUDIT){
+						actions.push('<a href="${ctx}/sys/empUser/enable?userCode='+row.userCode+'" class="btnList" title="${text("启用用户")}" data-confirm="${text("确认要启用该用户吗?")}"><i class="glyphicon glyphicon-ok-circle"></i></a>&nbsp;');
+					}
+					//<% } %>
+					//<% if(hasPermi('sys:empUser:edit')){ %>
+					actions.push('<a href="${ctx}/sys/empUser/delete?userCode='+row.userCode+'" class="btnList" title="${text("删除用户")}" data-confirm="${text("确认要删除该用户吗?")}"><i class="fa fa-trash-o"></i></a>&nbsp;');
+					actions.push('<a href="${ctx}/mes/empUserCustom/form?userCode='+row.userCode+'&op=copy" class="btnList" title="${text("复制用户")}"><i class="fa fa-copy"></i></a>&nbsp;');
+					//<% } %>
+					//<% if(hasPermi('sys:empUser:authRole,sys:empUser:authDataScope,sys:empUser:resetpwd', 'or')){ %>
+					actions.push('<a href="javascript:" class="btnMore" title="${text("更多操作")}"><i class="fa fa-chevron-circle-right"></i></a>&nbsp;');
+					actions.push('<div class="moreItems">');
+					//<% if(hasPermi('sys:empUser:authRole')){ %>
 					actions.push('<a href="${ctx}/sys/empUser/form?userCode='+row.userCode+'&op=auth" class="btn btn-default btn-xs btnList" title="${text("用户分配角色")}"><i class="fa fa-check-square-o"></i> ${text("分配角色")}</a>&nbsp;');
-				//<% } %>
-				//<% if(hasPermi('sys:empUser:authDataScope')){ %>
-				actions.push('<a href="${ctx}/mes/mesUserSkill/list?userCode='+row.userCode+'" class="btn btn-default btn-xs btnList" title="${text("用户分配技能")}"><i class="fa fa-check-circle-o"></i> ${text("分配技能")}</a>&nbsp;');
+					//<% } %>
+					//<% if(hasPermi('sys:empUser:authDataScope')){ %>
+					actions.push('<a href="${ctx}/mes/mesUserSkill/list?userCode='+row.userCode+'" class="btn btn-default btn-xs btnList" title="${text("用户分配技能")}"><i class="fa fa-check-circle-o"></i> ${text("分配技能")}</a>&nbsp;');
 
-				actions.push('<a href="${ctx}/mes/mesLineProcess/formAuth?userCode='+row.userCode+'" class="btn btn-default btn-xs btnList" title="${text("用户工位授权")}"><i class="fa fa-check-circle-o"></i> ${text("工位授权")}</a>&nbsp;');
+					actions.push('<a href="${ctx}/mes/mesLineProcess/formAuth?userCode='+row.userCode+'" class="btn btn-default btn-xs btnList" title="${text("用户工位授权")}"><i class="fa fa-check-circle-o"></i> ${text("工位授权")}</a>&nbsp;');
 
 					actions.push('<a href="${ctx}/sys/empUser/formAuthDataScope?userCode='+row.userCode+'" class="btn btn-default btn-xs btnList" title="${text("用户分配数据权限")}"><i class="fa fa-check-circle-o"></i> ${text("数据权限")}</a>&nbsp;');
-				//<% } %>
-				//<% if(hasPermi('sys:empUser:resetpwd')){ %>
+					//<% } %>
+					//<% if(hasPermi('sys:empUser:resetpwd')){ %>
 					actions.push('<a href="${ctx}/sys/empUser/resetpwd?userCode='+row.userCode+'" class="btn btn-default btn-xs btnList" title="${text("用户密码重置")}" data-confirm="${text("确认要将该用户密码重置到初始状态吗?")}"><i class="fa fa-reply-all"></i> ${text("重置密码")}</a>&nbsp;');
-				//<% } %>
-				actions.push('<a href="${ctx}/mes/mesLogin/qrcode?userCode='+row.userCode+'" class="btn btn-default btn-xs btnList" title="${text("二维码")}"><i class="fa fa-fw fa-qrcode"></i> ${text("二维码")}</a>&nbsp;');
-				actions.push('</div>');
-			//<% } %>
-			var html = '<div style="overflow-x:auto;white-space:nowrap;width:100%;text-align:left;padding:2px 0;">' + actions.join('') + '<\/div>';
-			return html;
-		}}
-	],
-	frozenCols: true,
-	// 加载成功后执行事件
-	ajaxSuccess: function(data){
-		
-	}
-});
-$('#btnExport').click(function(){
-	js.ajaxSubmitForm($('#searchForm'), {
-		url:'${ctx}/sys/empUser/exportData',
-		downloadFile:true
+					//<% } %>
+					actions.push('<a href="${ctx}/mes/mesLogin/qrcode?userCode='+row.userCode+'" class="btn btn-default btn-xs btnList" title="${text("二维码")}"><i class="fa fa-fw fa-qrcode"></i> ${text("二维码")}</a>&nbsp;');
+					actions.push('</div>');
+					//<% } %>
+					var html = '<div style="overflow-x:auto;white-space:nowrap;width:100%;text-align:left;padding:2px 0;">' + actions.join('') + '<\/div>';
+					return html;
+				}}
+		],
+		frozenCols: true,
+		// 加载成功后执行事件
+		ajaxSuccess: function(data){
+
+		}
+	});
+	$('#btnExport').click(function(){
+		js.ajaxSubmitForm($('#searchForm'), {
+			url:'${ctx}/sys/empUser/exportData',
+			downloadFile:true
+		});
 	});
-});
-$('#btnImport').click(function(){
-	js.layer.open({
-		type: 1,
-		area: ['400px'],
-		title: '${text("导入用户数据")}',
-		resize: false,
-		scrollbar: true,
-		content: js.template('importTpl'),
-		success: function(layero, index){
-			layero.find('input[type="checkbox"]').iCheck();
-		},
-		btn: ['<i class="fa fa-check"></i> ${text("导入")}',
-			'<i class="fa fa-remove"></i> ${text("关闭")}'],
-		btn1: function(index, layero){
-			var form = {
-				inputForm: layero.find('#inputForm'),
-				file: layero.find('#file').val()
-			};
-		    if (form.file == '' || (!js.endWith(form.file, '.xls') && !js.endWith(form.file, '.xlsx'))){
-		    	js.showMessage("${text('文件不正确,请选择后缀为“xls”或“xlsx”的文件。')}", null, 'warning');
-		        return false;
-		    }
-			js.ajaxSubmitForm(form.inputForm, function(data){
-				js.showMessage(data.message);
-				if(data.result == Global.TRUE){
-					js.layer.closeAll();
+	$('#btnImport').click(function(){
+		js.layer.open({
+			type: 1,
+			area: ['400px'],
+			title: '${text("导入用户数据")}',
+			resize: false,
+			scrollbar: true,
+			content: js.template('importTpl'),
+			success: function(layero, index){
+				layero.find('input[type="checkbox"]').iCheck();
+			},
+			btn: ['<i class="fa fa-check"></i> ${text("导入")}',
+				'<i class="fa fa-remove"></i> ${text("关闭")}'],
+			btn1: function(index, layero){
+				var form = {
+					inputForm: layero.find('#inputForm'),
+					file: layero.find('#file').val()
+				};
+				if (form.file == '' || (!js.endWith(form.file, '.xls') && !js.endWith(form.file, '.xlsx'))){
+					js.showMessage("${text('文件不正确,请选择后缀为“xls”或“xlsx”的文件。')}", null, 'warning');
+					return false;
 				}
-				page();
-			}, "json");
-			return true;
-		}
+				js.ajaxSubmitForm(form.inputForm, function(data){
+					js.showMessage(data.message);
+					if(data.result == Global.TRUE){
+						js.layer.closeAll();
+					}
+					page();
+				}, "json");
+				return true;
+			}
+		});
 	});
-});
 </script>
 <script id="importTpl" type="text/template">//<!--
 <form id="inputForm" action="${ctx}/sys/empUser/importData" method="post" enctype="multipart/form-data"