diff --git a/src/main/java/cn/palmte/work/controller/backend/AccountController.java b/src/main/java/cn/palmte/work/controller/backend/AccountController.java index 7644cd7..78669a6 100644 --- a/src/main/java/cn/palmte/work/controller/backend/AccountController.java +++ b/src/main/java/cn/palmte/work/controller/backend/AccountController.java @@ -3,12 +3,22 @@ package cn.palmte.work.controller.backend; import cn.palmte.work.bean.ResponseMsg; import cn.palmte.work.config.Constant; import cn.palmte.work.model.Admin; +import cn.palmte.work.model.DeptRepository; +import cn.palmte.work.model.UserPositionRepository; import cn.palmte.work.pojo.ModifyPasswordRequest; import cn.palmte.work.service.AccountService; import cn.palmte.work.service.AdminService; import cn.palmte.work.service.SysRoleService; import cn.palmte.work.utils.InterfaceUtil; +import cn.palmte.work.utils.Utils; +import cn.palmte.work.utils.excel.ExcelLogs; +import cn.palmte.work.utils.excel.ExcelUtil; +import cn.palmte.work.utils.excel.ExportUtils; +import com.alibaba.fastjson.JSON; import org.apache.commons.lang.StringUtils; +import org.apache.poi.EncryptedDocumentException; +import org.apache.poi.openxml4j.exceptions.InvalidFormatException; +import org.apache.poi.poifs.filesystem.OfficeXmlFileException; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; @@ -16,11 +26,14 @@ import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.ResponseBody; +import org.springframework.web.multipart.MultipartFile; import top.jfunc.common.crypto.symmetric.DESAS; import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; import java.io.IOException; +import java.util.Collection; import java.util.Map; import java.util.concurrent.ConcurrentHashMap; @@ -38,6 +51,12 @@ public class AccountController extends BaseController { @Autowired private SysRoleService sysRoleService; + @Autowired + private DeptRepository deptRepository; + + @Autowired + private UserPositionRepository userPositionRepository; + @RequestMapping(value = "/updatePassword") @ResponseBody public ResponseMsg updatePassword(HttpServletRequest request, ModifyPasswordRequest modifyPasswordRequest){ @@ -65,10 +84,40 @@ public class AccountController extends BaseController { setModel(keywords, model); ConcurrentHashMap searchInfo = getSearchInfo(keywords, model); model.put("roleList", sysRoleService.getAllEnableSysRole()); + model.put("deptList", deptRepository.findAll()); + model.put("positionList", userPositionRepository.findAll()); model.put("pager", accountService.getAdminList(searchInfo, pageSize, pageNumber)); return "/admin/account_list"; } + /** + * 跳转到新增页面 + */ + @RequestMapping("/add") + public String add(HttpServletRequest request, Map model) { + genRSAKeyPair(request, model); + model.put("userId", -1); + model.put("account", new Admin()); + model.put("roleList", sysRoleService.getAllEnableSysRole()); + model.put("deptList", deptRepository.findAll()); + model.put("positionList", userPositionRepository.findAll()); + return "/admin/account_input"; + } + + /** + * 跳转编辑页面 + */ + @RequestMapping("/edit") + public String edit(@RequestParam("userId") int userId, Map model) { + Admin admin = accountService.findUserById(userId); + model.put("account", admin); + model.put("userId", userId); + model.put("roleList", sysRoleService.getAllEnableSysRole()); + model.put("deptList", deptRepository.findAll()); + model.put("positionList", userPositionRepository.findAll()); + return "/admin/account_input"; + } + /** * 保存或更新用户 */ @@ -97,19 +146,6 @@ public class AccountController extends BaseController { return "redirect:/account/list"; } - /** - * 跳转到新增页面 - */ - @RequestMapping("/add") - public String add(HttpServletRequest request, Map model) { - genRSAKeyPair(request, model); - model.put("userId", -1); - model.put("account", new Admin()); - //获取所有角色 - model.put("roleList", sysRoleService.getAllEnableSysRole()); - return "/admin/account_input"; - } - /** * 启用、禁用用户 */ @@ -123,26 +159,6 @@ public class AccountController extends BaseController { } } - /** - * 根据ID查询用户信息编辑 - */ - @RequestMapping("/edit") - public String edit(@RequestParam("userId") int userId, Map model) { - model.put("userId", userId); - Admin admin = accountService.findUserById(userId); - model.put("roleId", String.valueOf(admin.getRoleId())); - model.put("roleType", admin.getRoleType()); - model.put("roleLevel", admin.getRoleLevel()); - model.put("realName", admin.getRealName()); - model.put("userName", admin.getUserName()); - model.put("telephone", admin.getTelephone()); - model.put("regionId", admin.getRegionId()); - model.put("account", admin); - //获取所有角色 - model.put("roleList", sysRoleService.getAllEnableSysRole()); - return "/admin/account_input"; - } - /** * 根据删除用户 */ @@ -197,7 +213,6 @@ public class AccountController extends BaseController { model.put("SysUser", admin); genRSAKeyPair(request,model); return "/admin/account_password"; - } private void setModel(@RequestParam(value = "keywords", required = false) String keywords, Map model) { @@ -205,6 +220,52 @@ public class AccountController extends BaseController { model.put("keywords", keywords); } + /** + * 导出 + * @param keywords + * @param model + * @param response + * @throws IOException + */ + @RequestMapping("/export") + public void export(@RequestParam(value = "keywords",required = false) String keywords,Map model, + HttpServletResponse response) throws IOException { + // 初始化参数 + ConcurrentHashMap searchInfo = getSearchInfo(keywords,model); + downloadHeader(response , Utils.generateExcelName("人员信息")); + accountService.exportExcel(response,searchInfo); + } + /** + * 模板下载 + */ + @RequestMapping("/template") + public void template(HttpServletResponse response) throws Exception{ + + String[] headers = new String[]{"工号", "手机号码", "姓名", "常驻地", "一级部门", "直接主管", "职位", "所属角色", "公司邮件地址"}; + downloadHeader(response , Utils.generateExcelName("人员信息批量导入模板")); + ExportUtils exportUtils = new ExportUtils(headers); + exportUtils.write(response.getOutputStream()); + } + + /** + * 批量导入 + */ + @RequestMapping("/batchImport") + @ResponseBody + public String batchImport(MultipartFile file) { + try { + ExcelLogs logs = new ExcelLogs(); + Collection maps = ExcelUtil.importExcel(Map.class, file.getInputStream(), + "yyyy/MM/dd HH:mm:ss", logs, 0); + synchronized (this) { + return JSON.toJSONString(accountService.check(maps)); + } + } catch (OfficeXmlFileException | EncryptedDocumentException | InvalidFormatException e) { + return JSON.toJSONString(ResponseMsg.buildFailedMsg("格式错误,请上传excel 2003/2007格式文件")); + } catch (Exception e) { + return JSON.toJSONString(ResponseMsg.buildFailedMsg("导入数据失败,请联系管理员")); + } + } } diff --git a/src/main/java/cn/palmte/work/controller/backend/BaseController.java b/src/main/java/cn/palmte/work/controller/backend/BaseController.java index 422db18..4d9accc 100644 --- a/src/main/java/cn/palmte/work/controller/backend/BaseController.java +++ b/src/main/java/cn/palmte/work/controller/backend/BaseController.java @@ -55,6 +55,10 @@ public class BaseController { return getRequest().getSession(); } + protected void downloadHeader(HttpServletResponse response, String fileName) { + downloadHeader(response, fileName, "application/octet-stream"); + } + /** * 处理下载文件的http header * diff --git a/src/main/java/cn/palmte/work/model/Admin.java b/src/main/java/cn/palmte/work/model/Admin.java index 75d0204..6acca03 100644 --- a/src/main/java/cn/palmte/work/model/Admin.java +++ b/src/main/java/cn/palmte/work/model/Admin.java @@ -31,6 +31,8 @@ public class Admin implements Serializable{ @Column(name = "user_name") private String userName; private String password; + @Column(name = "emp_code") + private String empCode; private String salt; @Column(name = "real_name") private String realName; @@ -58,19 +60,100 @@ public class Admin implements Serializable{ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") private Date lastUpdatedTime; - @Column(name = "region_id") - private int regionId; - @Column(name = "region_name") - private String regionName; + @Column(name = "role_id") + private int roleId; + @Column(name = "role_name") + private String roleName; @Column(name = "updated__password_time") @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") private Date updatedPasswordTime; - @Transient - private int roleId; - @Transient - private String roleName; + @Column(name = "work_location") + private String workLocation; + + @Column(name = "dept_id") + private int deptId; + + @Column(name = "dept_name") + private String deptName; + + @Column(name = "direct_manager") + private String directManager; + + @Column(name = "position_id") + private int positionId; + + @Column(name = "position_name") + private String positionName; + + @Column(name = "company_email") + private String companyEmail; + + public String getEmpCode() { + return empCode; + } + + public void setEmpCode(String empCode) { + this.empCode = empCode; + } + + public String getWorkLocation() { + return workLocation; + } + + public void setWorkLocation(String workLocation) { + this.workLocation = workLocation; + } + + public int getDeptId() { + return deptId; + } + + public void setDeptId(int deptId) { + this.deptId = deptId; + } + + public String getDeptName() { + return deptName; + } + + public void setDeptName(String deptName) { + this.deptName = deptName; + } + + public String getDirectManager() { + return directManager; + } + + public void setDirectManager(String directManager) { + this.directManager = directManager; + } + + public int getPositionId() { + return positionId; + } + + public void setPositionId(int positionId) { + this.positionId = positionId; + } + + public String getPositionName() { + return positionName; + } + + public void setPositionName(String positionName) { + this.positionName = positionName; + } + + public String getCompanyEmail() { + return companyEmail; + } + + public void setCompanyEmail(String companyEmail) { + this.companyEmail = companyEmail; + } + @Transient private int roleType; @Transient @@ -262,21 +345,7 @@ public class Admin implements Serializable{ this.roleTypeName = roleTypeName; } - public int getRegionId() { - return regionId; - } - public void setRegionId(int regionId) { - this.regionId = regionId; - } - - public String getRegionName() { - return regionName; - } - - public void setRegionName(String regionName) { - this.regionName = regionName; - } } diff --git a/src/main/java/cn/palmte/work/model/AdminRepositoryImpl.java b/src/main/java/cn/palmte/work/model/AdminRepositoryImpl.java index 4c84bbf..3534054 100644 --- a/src/main/java/cn/palmte/work/model/AdminRepositoryImpl.java +++ b/src/main/java/cn/palmte/work/model/AdminRepositoryImpl.java @@ -116,8 +116,8 @@ public class AdminRepositoryImpl implements AdminRepositoryCustom { } @Override - public Page getAdminList(ConcurrentHashMap searchInfo, int pageSize, int pageNum) { - Page page = new Page(pageNum, pageSize); + public Page getAdminList(ConcurrentHashMap searchInfo, int pageSize, int pageNum) { + Page page = new Page(pageNum, pageSize); int thisPage = (pageNum - 1) * pageSize; String sql = getSelect() + getSqlExceptSelect(searchInfo) + " limit " + thisPage + "," + pageSize; String countSql = " SELECT COUNT(*) FROM(" + getSelect() + getSqlExceptSelect(searchInfo) + ") count_table"; @@ -135,6 +135,13 @@ public class AdminRepositoryImpl implements AdminRepositoryCustom { admin.setRealName(ObjectKit.toString(objects[2])); admin.setTelephone(ObjectKit.toString(objects[7])); admin.setRoleName(ObjectKit.toString(objects[6])); + + admin.setWorkLocation(ObjectKit.toString(objects[10])); + admin.setEmpCode(ObjectKit.toString(objects[9])); + admin.setDeptName(ObjectKit.toString(objects[11])); + admin.setPositionName(ObjectKit.toString(objects[13])); + admin.setDirectManager(ObjectKit.toString(objects[12])); + admin.setCompanyEmail(ObjectKit.toString(objects[14])); try { admin.setCreatedTime(ObjectKit.toDate(objects[3])); } catch (ParseException e) { @@ -147,7 +154,7 @@ public class AdminRepositoryImpl implements AdminRepositoryCustom { } public String getSelect() { - String select = " select u.id,u.user_name,u.real_name,u.created_time,u.enabled,r.type,r.name,u.telephone,u.region_name"; + String select = " select u.id,u.user_name,u.real_name,u.created_time,u.enabled,r.type,r.name,u.telephone,u.role_name,u.emp_code,u.work_location,u.dept_name,u.direct_manager,u.position_name,u.company_email"; return select; } @@ -168,13 +175,21 @@ public class AdminRepositoryImpl implements AdminRepositoryCustom { private String buildQuery(Map.Entry item) { String sql = ""; - if (item.getKey().equals("userName")) { - sql += " and u.user_name like '%" + item.getValue() + "%' "; + if (item.getKey().equals("realName")) { + sql += " and u.real_name like '%" + item.getValue() + "%' "; } else if (item.getKey().equals("telephone")) { sql += " and u.telephone= " + item.getValue(); - } else if (item.getKey().equals("regionId")) { + } else if (item.getKey().equals("empCode")) { + sql += " and u.emp_code= " + item.getValue(); + } else if (item.getKey().equals("workLocation")) { + sql += " and u.work_location= " + item.getValue(); + } else if (item.getKey().equals("startTime")) { + sql += " and u.created_time >= " + item.getValue() + " 00:00:00"; + } else if (item.getKey().equals("endTime")) { + sql += " and u.created_time <= " + item.getValue() + " 23:59:59"; + } else if (item.getKey().equals("deptId")) { if (!item.getValue().equals("-1")) { - sql += " and u.region_id= " + item.getValue(); + sql += " and u.dept_id= " + item.getValue(); } } else if (item.getKey().equals("roleId")) { if (!item.getValue().equals("-1")) { @@ -219,7 +234,6 @@ public class AdminRepositoryImpl implements AdminRepositoryCustom { admin.setRoleType(ObjectKit.toInt(objects[3])); admin.setRoleId(ObjectKit.toInt(objects[4])); admin.setTelephone(ObjectKit.toString(objects[5])); - admin.setRegionId(ObjectKit.toInt(objects[6])); admin.setRoleLevel(ObjectKit.toInt(objects[7])); } } diff --git a/src/main/java/cn/palmte/work/model/UserPosition.java b/src/main/java/cn/palmte/work/model/UserPosition.java new file mode 100644 index 0000000..a8548e4 --- /dev/null +++ b/src/main/java/cn/palmte/work/model/UserPosition.java @@ -0,0 +1,40 @@ +package cn.palmte.work.model; + +import org.hibernate.annotations.GenericGenerator; + +import javax.persistence.*; + +/** + * 职位 + */ +@Entity +@Table(name = "user_position") +public class UserPosition { + + /** + * id + */ + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + @GenericGenerator(name = "persistenceGenerator", strategy = "increment") + private Integer id; + + @Column(name = "position_name") + private String positionName; + + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + } + + public String getPositionName() { + return positionName; + } + + public void setPositionName(String positionName) { + this.positionName = positionName; + } +} \ No newline at end of file diff --git a/src/main/java/cn/palmte/work/model/UserPositionRepository.java b/src/main/java/cn/palmte/work/model/UserPositionRepository.java new file mode 100644 index 0000000..81deccb --- /dev/null +++ b/src/main/java/cn/palmte/work/model/UserPositionRepository.java @@ -0,0 +1,7 @@ +package cn.palmte.work.model; + +import org.springframework.data.jpa.repository.JpaRepository; + +public interface UserPositionRepository extends JpaRepository { + +} diff --git a/src/main/java/cn/palmte/work/service/AccountService.java b/src/main/java/cn/palmte/work/service/AccountService.java index 0949fcf..cfa3725 100644 --- a/src/main/java/cn/palmte/work/service/AccountService.java +++ b/src/main/java/cn/palmte/work/service/AccountService.java @@ -1,14 +1,17 @@ package cn.palmte.work.service; import cn.palmte.work.bean.RegexConstant; +import cn.palmte.work.bean.ResponseMsg; import cn.palmte.work.model.*; import cn.palmte.work.utils.DESCrypto; import cn.palmte.work.utils.InterfaceUtil; import cn.palmte.work.utils.StrKit; +import cn.palmte.work.utils.excel.ExportUtils; import org.apache.commons.lang.RandomStringUtils; import org.apache.commons.lang.StringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -16,8 +19,12 @@ import top.jfunc.common.db.QueryHelper; import top.jfunc.common.db.bean.Page; import top.jfunc.common.db.utils.Pagination; +import javax.servlet.http.HttpServletResponse; import java.beans.Transient; +import java.io.IOException; +import java.util.Collection; import java.util.Date; +import java.util.Map; import java.util.concurrent.ConcurrentHashMap; /** @@ -37,13 +44,20 @@ public class AccountService { public SysUserRoleRepository sysUserRoleRepository; @Autowired - Pagination pagination; + private Pagination pagination; @Autowired private SysRoleRepository sysRoleRepository; - public Page getAdminList(ConcurrentHashMap searchInfo, int pageSize, int pageNum) { - return adminRepositoryImpl.getAdminList(searchInfo, pageSize, pageNum); + @Autowired + private DeptRepository deptRepository; + + @Autowired + private UserPositionRepository userPositionRepository; + + public Page getAdminList(ConcurrentHashMap searchInfo, int pageSize, int pageNum) { + Page adminList = adminRepositoryImpl.getAdminList(searchInfo, pageSize, pageNum); + return adminList; } public Page list(ConcurrentHashMap searchInfo, int pageNumber, int pageSize) { @@ -77,11 +91,7 @@ public class AccountService { } public Admin findUserById(int userId) { - Admin admin = adminRepositoryImpl.findAdminById(userId); - SysRole sysRole = sysRoleRepository.findOne(admin.getRoleId()); - if(null != sysRole){ - admin.setRoleName(sysRole.getName()); - } + Admin admin = adminRepository.findOne(userId); return admin; } @@ -89,30 +99,45 @@ public class AccountService { public void saveOrUpdateAccount(int userId, int roleId, Admin admin, String privateKey) { int createAdminId = InterfaceUtil.getAdminId(); Admin oldAdmin = adminRepository.findOne(userId); + Dept dept = deptRepository.findOne(admin.getDeptId()); + SysRole sysRole = sysRoleRepository.findOne(admin.getRoleId()); + UserPosition userPosition = userPositionRepository.findOne(admin.getPositionId()); if (oldAdmin == null) { oldAdmin = new Admin(); String userName = admin.getUserName(); oldAdmin.setUserName(userName); String salt = RandomStringUtils.randomAlphanumeric(6).toUpperCase(); - String newPassword = decEncPassword(admin.getTelephone().substring(5), salt, privateKey); + + BeanUtils.copyProperties(admin, oldAdmin); + + oldAdmin.setRealName(sysRole.getName()); + oldAdmin.setDeptName(dept.getName()); + oldAdmin.setPositionName(userPosition.getPositionName()); oldAdmin.setPassword(newPassword); oldAdmin.setSalt(salt); oldAdmin.setEnabled(1); - oldAdmin.setRealName(admin.getRealName()); oldAdmin.setCreatedBy(createAdminId); oldAdmin.setTelephone(admin.getTelephone()); oldAdmin.setCreatedTime(new Date()); + } else { String userName = admin.getUserName(); + oldAdmin.setDeptId(admin.getDeptId()); + oldAdmin.setPositionId(admin.getPositionId()); + oldAdmin.setRealName(sysRole.getName()); + oldAdmin.setDeptName(dept.getName()); + oldAdmin.setPositionName(userPosition.getPositionName()); + oldAdmin.setEmpCode(admin.getEmpCode()); + oldAdmin.setWorkLocation(admin.getWorkLocation()); + oldAdmin.setDirectManager(admin.getDirectManager()); + oldAdmin.setCompanyEmail(admin.getCompanyEmail()); oldAdmin.setUserName(userName); oldAdmin.setRealName(admin.getRealName()); oldAdmin.setTelephone(admin.getTelephone()); oldAdmin.setLastUpdatedBy(createAdminId); oldAdmin.setLastUpdatedTime(new Date()); } - oldAdmin.setRegionId(admin.getRegionId()); - oldAdmin.setRoleId(admin.getRoleId()); SysRole one = sysRoleRepository.findOne(admin.getRoleId()); if (null != one) { @@ -129,7 +154,6 @@ public class AccountService { sysUserRole.setCreatedBy(createAdminId); sysUserRole.setCreatedTime(new Date()); sysUserRoleRepository.save(sysUserRole); - } /** @@ -231,4 +255,16 @@ public class AccountService { return false; } + public void exportExcel(HttpServletResponse response, ConcurrentHashMap searchInfo) throws IOException { + String[] headers = {"工号", "手机号码", "姓名", "常驻地", "一级部门", "直接主管", "职位", "所属角色", "公司邮件地址"}; + String[] exportColumns = {"empCode", "telephone", "workLocation", "deptName", "directManager", "positionName", "roleName", "companyEmail"}; + ExportUtils.exportToExcel(headers, exportColumns, 1, 5000, + response.getOutputStream(), (pN, pS) -> getAdminList(searchInfo, pN, pS).getList()); + } + + public ResponseMsg check(Collection maps) { + + + return null; + } } diff --git a/src/main/java/cn/palmte/work/utils/InterfaceUtil.java b/src/main/java/cn/palmte/work/utils/InterfaceUtil.java index 740482e..fe57131 100644 --- a/src/main/java/cn/palmte/work/utils/InterfaceUtil.java +++ b/src/main/java/cn/palmte/work/utils/InterfaceUtil.java @@ -43,8 +43,8 @@ public class InterfaceUtil { return principal.getAdmin(); } - public static int getRegionId() { + /*public static int getRegionId() { return Optional.ofNullable(getAdmin()).map(Admin::getRegionId).orElse(0); - } + }*/ } diff --git a/src/main/resources/templates/admin/account_input.ftl b/src/main/resources/templates/admin/account_input.ftl index bb2e07b..4c127a5 100644 --- a/src/main/resources/templates/admin/account_input.ftl +++ b/src/main/resources/templates/admin/account_input.ftl @@ -6,8 +6,8 @@
-
账号管理 / - <#if userId!=-1>编辑<#else>新增后端账号 +
人员管理 / + <#if userId!=-1>编辑<#else>新增人员账号
@@ -15,60 +15,25 @@
- <#-- - - <#if userId!=-1>--> - <#--
style="display:none;" > -
- * - 账号角色 -
-
- -
-
-
--> -
-
- * - 登录名称 -
-
- readonly - placeholder="请输入登录名称(20字符以内)"/> -
-
-
* - 姓名 + 工号
- + readonly + placeholder="请输入工号"/>
@@ -84,13 +49,112 @@ onkeyup="value=value.replace(/[^\d]/g,'')" type="text" id="telephone" value="${account.telephone!}" minlength="11" maxlength="11" - required <#if userId!=-1>readonly + required placeholder="请输入正确格式手机号码!" onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^\d]/g,''))"/>
+
+
+ * + 登录名称 +
+
+ readonly + placeholder="请输入登录名称(20字符以内)"/> +
+
+
+ +
+
+ * + 姓名 +
+
+ readonly + required placeholder="请输入账户名称(20字符以内)"/> +
+
+
+ +
+
+ * + 常驻地 +
+
+ +
+
+
+ +
+
+ * + 一级部门 +
+
+ +
+
+ +
+
+ * + 直接主管 +
+
+ readonly + required placeholder="请输入直接主管"/> +
+
+
+ +
+
+ * + 职位 +
+
+ +
+
+
* @@ -110,6 +174,20 @@
+
+
+ * + 公司邮件地址 +
+
+ +
+
+
@@ -142,63 +220,10 @@ -<#macro bpTree nodes> - <#list nodes as node> - - type="file" - <#else> - type="folder" - - > - - - - <#if (!node.hasLeafNode) && node.subNodes?? && node.subNodes?size gt 0> - <@bpTree nodes=node.subNodes /> - - - - - diff --git a/src/main/resources/templates/admin/account_list.ftl b/src/main/resources/templates/admin/account_list.ftl index 48958ae..362e1d5 100644 --- a/src/main/resources/templates/admin/account_list.ftl +++ b/src/main/resources/templates/admin/account_list.ftl @@ -5,8 +5,8 @@
-
系统管理 / - 后端账号管理 +
人员管理 / + 人员列表
@@ -16,11 +16,39 @@ - + + + + + + + + + @@ -36,37 +64,41 @@ - - - + - - + + @@ -85,6 +117,21 @@ +
+
+ + +
+ +
@@ -95,22 +142,30 @@
登录名称姓名
- + +
+
手机号 +
+ +
+
工号 +
+ +
+
一级部门 +
+
账号角色
手机号常驻地
- -
-
所属区域 -
- +
创建时间 +
+
+
+ + +
+
+
+ + +
+
+
+
+
- - - - - + + + + + + + + + - <#list pager.list as list> + <#list pager.list as list> - - + + + + + + - +
登录名称账号名称手机号账号角色创建时间工号手机号码姓名常驻地一级部门直接主管职位所属角色公司邮件地址 操作
${list.userName!}${list.realName!}${list.empCode!} ${list.telephone!}${list.realName!}${list.workLocation!}${list.deptName!}${list.directManager!}${list.positionName!} ${list.roleName!}<#if list.createdTime??>${list.createdTime?datetime}${list.companyEmail!}
@@ -128,16 +183,6 @@ class="am-icon-pencil-square-o">密码重置 - <@shiro.hasPermission name="ACCOUNT_BINDING"> - <#if (list.roleName) = "工地巡查员"> - - -
@@ -188,6 +233,12 @@
+ + + + + +