فهرست منبع

区分用户和员工菜单

hfy 4 ماه پیش
والد
کامیت
8247f3e6ba

+ 121 - 1
src/main/java/com/jeesite/modules/mes/web/EmpUserCustomController.java

@@ -1,12 +1,16 @@
 package com.jeesite.modules.mes.web;
 
 import com.jeesite.common.config.Global;
+import com.jeesite.common.entity.Page;
 import com.jeesite.common.lang.StringUtils;
 import com.jeesite.common.web.BaseController;
 import com.jeesite.modules.sys.entity.EmpUser;
 import com.jeesite.modules.sys.entity.EmployeeOffice;
+import com.jeesite.modules.sys.entity.Post;
 import com.jeesite.modules.sys.entity.Role;
 import com.jeesite.modules.sys.service.EmpUserService;
+import com.jeesite.modules.sys.service.PostService;
+import com.jeesite.modules.sys.service.RoleService;
 import com.jeesite.modules.sys.web.user.EmpUserController;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Controller;
@@ -17,6 +21,7 @@ import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.ResponseBody;
 
 import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
 import java.util.ArrayList;
 import java.util.List;
 
@@ -30,11 +35,62 @@ public class EmpUserCustomController extends BaseController {
     @Autowired
     private EmpUserService empUserService;
 
+    @Autowired
+    private RoleService roleService;
+
     @ModelAttribute
     public EmpUser get(String userCode, boolean isNewRecord) {
         return empUserService.get(userCode, isNewRecord);
     }
+    @RequestMapping(value = {"formEmpoyee", "formEmployee"})
+    public String formEmpoyee(EmpUser empUser, String op, Model model) {
+        model.addAttribute("roleUserType", "employee");
+        if ("copy".equals(op)) {
+            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) {
+                            eo.setIsNewRecord(true);
+                            eo.setId(null);
+                        }
+                    }
+                }
+
+                List<Role> roleList = fullUser.getRoleList();
+                if (roleList != null && !roleList.isEmpty()) {
+                    List<String> roleCodes = new ArrayList<>();
+                    for (Role role : roleList) {
+                        roleCodes.add(role.getRoleCode());
+                    }
+                    fullUser.setUserRoleString(StringUtils.join(roleCodes, ","));
+                }
 
+                model.addAttribute("empUser", fullUser);
+                model.addAttribute("roleList", roleList);
+                model.addAttribute("op", "add");
+            }
+
+            return "modules/sys/user/empUserForm";
+        }
+
+        if ("add".equals(op) || "edit".equals(op)) {
+            empUser.setUserType("employee");
+            empUserController.form(empUser, op, model);
+            return "modules/sys/user/empUserForm";
+        }
+
+        return empUserController.form(empUser, op, model);
+    }
     @RequestMapping(value = "form")
     public String form(EmpUser empUser, String op, Model model) {
         if ("copy".equals(op)) {
@@ -82,6 +138,70 @@ public class EmpUserCustomController extends BaseController {
         
         return empUserController.form(empUser, op, model);
     }
+    @Autowired
+    private PostService postService;
+
+/*
+    @RequestMapping(value = "empUserList")
+    public String empUserList(EmpUser empUser, Model model) {
+        Role role = new Role();
+        role.setUserType("employee");
+        model.addAttribute("roleList", roleService.findList(role));
+        model.addAttribute("postList", postService.findList(new Post()));
+        empUser.setUserType("none");
+        model.addAttribute("empUser", empUser);
+        model.addAttribute("ctrlPermi", Global.getConfig("user.adminCtrlPermi", "2"));
+        return "modules/sys/user/empUserList";
+    }
+*/
+
+    @RequestMapping(value = "employeeList")
+    public String employeeList(EmpUser empUser, Model model) {
+        Role role = new Role();
+        role.setUserType("employee");
+        model.addAttribute("roleList", roleService.findList(role));
+        model.addAttribute("postList", postService.findList(new Post()));
+        model.addAttribute("empUser", empUser);
+        model.addAttribute("ctrlPermi", Global.getConfig("user.adminCtrlPermi", "2"));
+        return "modules/sys/user/employeeList";
+    }
+
+    @RequestMapping(value = "listData")
+    @ResponseBody
+    public Page<EmpUser> listData(EmpUser empUser, Boolean isAll, String roleCode, String fixedRoleName,
+                                  HttpServletRequest request, HttpServletResponse response) {
+        roleCode = setFixedRole(empUser, roleCode, fixedRoleName);
+        return empUserController.listData(empUser, isAll, roleCode, request, response);
+    }
+
+    @RequestMapping(value = "exportData")
+    public void exportData(EmpUser empUser, Boolean isAll, String roleCode, String fixedRoleName,
+                           HttpServletResponse response) {
+        roleCode = setFixedRole(empUser, roleCode, fixedRoleName);
+        empUserController.exportData(empUser, isAll, roleCode, response);
+    }
+
+    private String setFixedRole(EmpUser empUser, String roleCode, String fixedRoleName) {
+        String fixedRoleCode = getRoleCodeByName(fixedRoleName);
+        if (StringUtils.isBlank(fixedRoleCode) && StringUtils.isNotBlank(fixedRoleName)) {
+            fixedRoleCode = "__none__";
+        }
+        if (StringUtils.isNotBlank(fixedRoleCode)) {
+            empUser.setRoleCode(fixedRoleCode);
+            return fixedRoleCode;
+        }
+        return roleCode;
+    }
+
+    private String getRoleCodeByName(String roleName) {
+        if (StringUtils.isBlank(roleName)) {
+            return "";
+        }
+        Role role = new Role();
+        role.setRoleName(roleName);
+        role = roleService.getByRoleName(role);
+        return role != null ? role.getRoleCode() : "";
+    }
 
     @RequestMapping(value = "save")
     @ResponseBody
@@ -104,4 +224,4 @@ public class EmpUserCustomController extends BaseController {
         
         return empUserController.save(empUser, oldLoginCode, request);
     }
-}
+}

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

@@ -251,7 +251,7 @@ $("#empOfficeGrid").dataGrid({
 var roleGrid = $("#roleGrid").dataGrid({
 	url: '${ctx}/sys/role/treeData',
 	postData: [
-		{name:'userType',value:'employee'},
+		{name:'userType',value:"${roleUserType!'user'}"},
 		{name:'ctrlPermi',value:'${ctrlPermi}'}
 	],
 	columnModel: [

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

@@ -26,9 +26,10 @@
 			</div>
 		</div>
 		<div class="box-body">
-			<#form:form id="searchForm" model="${empUser}" action="${ctx}/sys/empUser/listData" method="post" class="form-inline "
+			<#form:form id="searchForm" model="${empUser}" action="${ctx}/sys/user/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')}"/>
+				<#form:hidden name="userType" value="user"/>
 				<div class="form-group">
 					<label class="control-label">${text('账号')}:</label>
 					<div class="control-inline">
@@ -239,4 +240,4 @@ $('#btnImport').click(function(){
 		</div>
 	</div>
 </form>
-//--></script>
+//--></script>

+ 243 - 0
src/main/resources/views/modules/sys/user/employeeList.html

@@ -0,0 +1,243 @@
+<% layout('/layouts/default.html', {title: '员工管理', libs: ['dataGrid']}){ %>
+<div class="main-content">
+	<div class="box box-main">
+		<div class="box-header">
+			<div class="box-title">
+				<i class="fa icon-user"></i> ${text('员工管理')}
+			</div>
+			<div class="box-tools pull-right">
+				<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/formEmpoyee?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">
+					<a href="javascript:" class="btn btn-default dropdown-toggle" data-toggle="dropdown">
+						<i class="fa fa-navicon"></i> <span class="caret"></span>
+					</a>
+					<ul class="dropdown-menu">
+						<li><a href="javascript:" id="btnExport"><i class="glyphicon glyphicon-export"></i> ${text('导出')}</a></li>
+						<li><a href="javascript:" id="btnImport"><i class="glyphicon glyphicon-import"></i> ${text('导入')}</a></li>
+						<li><a href="javascript:" id="btnSetting"><i class="fa fa-navicon"></i> ${text('设置')}</a></li>
+					</ul>
+				</div> -->
+			</div>
+		</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')}"/>
+				<#form:hidden name="userType" value="employee"/>
+				<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 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>
+					</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/formEmpoyee?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/formEmpoyee?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/formEmpoyee?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;');
+
+				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')){ %>
+					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
+	});
+});
+$('#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();
+				}
+				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"
+	class="form-horizontal mt20 mb10" style="overflow:auto;max-height:200px;">
+	<div class="row">
+		<div class="col-xs-12 col-xs-offset-1">
+			<input type="file" id="file" name="file" class="form-file"/>
+			<div class="mt10 pt5">
+				<#form:checkbox name="updateSupport" label="${text('是否更新已经存在的用户数据')}" class="form-control"
+					title="${text('如果用户编码已经存在,更新这条数据。')}"/> &nbsp;
+				<a href="${ctx}/sys/empUser/importTemplate" class="btn btn-default btn-xs"><i class="fa fa-file-excel-o"></i> ${text('下载模板')}</a>
+			</div>
+			<font color="red" class="pull-left mt10">
+				${text('提示:仅允许导入“xls”或“xlsx”格式文件!')}
+			</font>
+		</div>
+	</div>
+</form>
+//--></script>