角色管理新增分配用户功能
This commit is contained in:
		
							parent
							
								
									ce6bea4ba0
								
							
						
					
					
						commit
						90c41d498c
					
				| 
						 | 
					@ -17,6 +17,7 @@ import com.ruoyi.common.constant.UserConstants;
 | 
				
			||||||
import com.ruoyi.common.core.controller.BaseController;
 | 
					import com.ruoyi.common.core.controller.BaseController;
 | 
				
			||||||
import com.ruoyi.common.core.domain.AjaxResult;
 | 
					import com.ruoyi.common.core.domain.AjaxResult;
 | 
				
			||||||
import com.ruoyi.common.core.domain.entity.SysRole;
 | 
					import com.ruoyi.common.core.domain.entity.SysRole;
 | 
				
			||||||
 | 
					import com.ruoyi.common.core.domain.entity.SysUser;
 | 
				
			||||||
import com.ruoyi.common.core.domain.model.LoginUser;
 | 
					import com.ruoyi.common.core.domain.model.LoginUser;
 | 
				
			||||||
import com.ruoyi.common.core.page.TableDataInfo;
 | 
					import com.ruoyi.common.core.page.TableDataInfo;
 | 
				
			||||||
import com.ruoyi.common.enums.BusinessType;
 | 
					import com.ruoyi.common.enums.BusinessType;
 | 
				
			||||||
| 
						 | 
					@ -26,6 +27,7 @@ import com.ruoyi.common.utils.StringUtils;
 | 
				
			||||||
import com.ruoyi.common.utils.poi.ExcelUtil;
 | 
					import com.ruoyi.common.utils.poi.ExcelUtil;
 | 
				
			||||||
import com.ruoyi.framework.web.service.SysPermissionService;
 | 
					import com.ruoyi.framework.web.service.SysPermissionService;
 | 
				
			||||||
import com.ruoyi.framework.web.service.TokenService;
 | 
					import com.ruoyi.framework.web.service.TokenService;
 | 
				
			||||||
 | 
					import com.ruoyi.system.domain.SysUserRole;
 | 
				
			||||||
import com.ruoyi.system.service.ISysRoleService;
 | 
					import com.ruoyi.system.service.ISysRoleService;
 | 
				
			||||||
import com.ruoyi.system.service.ISysUserService;
 | 
					import com.ruoyi.system.service.ISysUserService;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -179,4 +181,59 @@ public class SysRoleController extends BaseController
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        return AjaxResult.success(roleService.selectRoleAll());
 | 
					        return AjaxResult.success(roleService.selectRoleAll());
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * 查询已分配用户角色列表
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    @PreAuthorize("@ss.hasPermi('system:role:list')")
 | 
				
			||||||
 | 
					    @GetMapping("/authUser/allocatedList")
 | 
				
			||||||
 | 
					    public TableDataInfo allocatedList(SysUser user)
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        startPage();
 | 
				
			||||||
 | 
					        List<SysUser> list = userService.selectAllocatedList(user);
 | 
				
			||||||
 | 
					        return getDataTable(list);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * 查询未分配用户角色列表
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    @PreAuthorize("@ss.hasPermi('system:role:list')")
 | 
				
			||||||
 | 
					    @GetMapping("/authUser/unallocatedList")
 | 
				
			||||||
 | 
					    public TableDataInfo unallocatedList(SysUser user)
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        startPage();
 | 
				
			||||||
 | 
					        List<SysUser> list = userService.selectUnallocatedList(user);
 | 
				
			||||||
 | 
					        return getDataTable(list);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * 取消授权用户
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    @PreAuthorize("@ss.hasPermi('system:role:edit')")
 | 
				
			||||||
 | 
					    @Log(title = "角色管理", businessType = BusinessType.GRANT)
 | 
				
			||||||
 | 
					    @PutMapping("/authUser/cancel")
 | 
				
			||||||
 | 
					    public AjaxResult cancelAuthUser(@RequestBody SysUserRole userRole)
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        return toAjax(roleService.deleteAuthUser(userRole));
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * 批量取消授权用户
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    @Log(title = "角色管理", businessType = BusinessType.GRANT)
 | 
				
			||||||
 | 
					    @PutMapping("/authUser/cancelAll")
 | 
				
			||||||
 | 
					    public AjaxResult cancelAuthUserAll(Long roleId, Long[] userIds)
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        return toAjax(roleService.deleteAuthUsers(roleId, userIds));
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * 批量选择用户授权
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    @Log(title = "角色管理", businessType = BusinessType.GRANT)
 | 
				
			||||||
 | 
					    @PutMapping("/authUser/selectAll")
 | 
				
			||||||
 | 
					    public AjaxResult selectAuthUserAll(Long roleId, Long[] userIds)
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        return toAjax(roleService.insertAuthUsers(roleId, userIds));
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -92,6 +92,9 @@ public class SysUser extends BaseEntity
 | 
				
			||||||
    /** 岗位组 */
 | 
					    /** 岗位组 */
 | 
				
			||||||
    private Long[] postIds;
 | 
					    private Long[] postIds;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /** 角色ID */
 | 
				
			||||||
 | 
					    private Long roleId;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public SysUser()
 | 
					    public SysUser()
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -300,6 +303,16 @@ public class SysUser extends BaseEntity
 | 
				
			||||||
        this.postIds = postIds;
 | 
					        this.postIds = postIds;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public Long getRoleId()
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        return roleId;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public void setRoleId(Long roleId)
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        this.roleId = roleId;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @Override
 | 
					    @Override
 | 
				
			||||||
    public String toString() {
 | 
					    public String toString() {
 | 
				
			||||||
        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
 | 
					        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -19,6 +19,22 @@ public interface SysUserMapper
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
    public List<SysUser> selectUserList(SysUser sysUser);
 | 
					    public List<SysUser> selectUserList(SysUser sysUser);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * 根据条件分页查询未已配用户角色列表
 | 
				
			||||||
 | 
					     * 
 | 
				
			||||||
 | 
					     * @param user 用户信息
 | 
				
			||||||
 | 
					     * @return 用户信息集合信息
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    public List<SysUser> selectAllocatedList(SysUser user);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * 根据条件分页查询未分配用户角色列表
 | 
				
			||||||
 | 
					     * 
 | 
				
			||||||
 | 
					     * @param user 用户信息
 | 
				
			||||||
 | 
					     * @return 用户信息集合信息
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    public List<SysUser> selectUnallocatedList(SysUser user);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
     * 通过用户名查询用户
 | 
					     * 通过用户名查询用户
 | 
				
			||||||
     * 
 | 
					     * 
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -3,6 +3,7 @@ package com.ruoyi.system.service;
 | 
				
			||||||
import java.util.List;
 | 
					import java.util.List;
 | 
				
			||||||
import java.util.Set;
 | 
					import java.util.Set;
 | 
				
			||||||
import com.ruoyi.common.core.domain.entity.SysRole;
 | 
					import com.ruoyi.common.core.domain.entity.SysRole;
 | 
				
			||||||
 | 
					import com.ruoyi.system.domain.SysUserRole;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
 * 角色业务层
 | 
					 * 角色业务层
 | 
				
			||||||
| 
						 | 
					@ -136,4 +137,30 @@ public interface ISysRoleService
 | 
				
			||||||
     * @return 结果
 | 
					     * @return 结果
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
    public int deleteRoleByIds(Long[] roleIds);
 | 
					    public int deleteRoleByIds(Long[] roleIds);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * 取消授权用户角色
 | 
				
			||||||
 | 
					     * 
 | 
				
			||||||
 | 
					     * @param userRole 用户和角色关联信息
 | 
				
			||||||
 | 
					     * @return 结果
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    public int deleteAuthUser(SysUserRole userRole);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * 批量取消授权用户角色
 | 
				
			||||||
 | 
					     * 
 | 
				
			||||||
 | 
					     * @param roleId 角色ID
 | 
				
			||||||
 | 
					     * @param userIds 需要取消授权的用户数据ID
 | 
				
			||||||
 | 
					     * @return 结果
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    public int deleteAuthUsers(Long roleId, Long[] userIds);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * 批量选择授权用户角色
 | 
				
			||||||
 | 
					     * 
 | 
				
			||||||
 | 
					     * @param roleId 角色ID
 | 
				
			||||||
 | 
					     * @param userIds 需要删除的用户数据ID
 | 
				
			||||||
 | 
					     * @return 结果
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    public int insertAuthUsers(Long roleId, Long[] userIds);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -18,6 +18,22 @@ public interface ISysUserService
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
    public List<SysUser> selectUserList(SysUser user);
 | 
					    public List<SysUser> selectUserList(SysUser user);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * 根据条件分页查询已分配用户角色列表
 | 
				
			||||||
 | 
					     * 
 | 
				
			||||||
 | 
					     * @param user 用户信息
 | 
				
			||||||
 | 
					     * @return 用户信息集合信息
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    public List<SysUser> selectAllocatedList(SysUser user);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * 根据条件分页查询未分配用户角色列表
 | 
				
			||||||
 | 
					     * 
 | 
				
			||||||
 | 
					     * @param user 用户信息
 | 
				
			||||||
 | 
					     * @return 用户信息集合信息
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    public List<SysUser> selectUnallocatedList(SysUser user);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
     * 通过用户名查询用户
 | 
					     * 通过用户名查询用户
 | 
				
			||||||
     * 
 | 
					     * 
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -16,6 +16,7 @@ import com.ruoyi.common.utils.StringUtils;
 | 
				
			||||||
import com.ruoyi.common.utils.spring.SpringUtils;
 | 
					import com.ruoyi.common.utils.spring.SpringUtils;
 | 
				
			||||||
import com.ruoyi.system.domain.SysRoleDept;
 | 
					import com.ruoyi.system.domain.SysRoleDept;
 | 
				
			||||||
import com.ruoyi.system.domain.SysRoleMenu;
 | 
					import com.ruoyi.system.domain.SysRoleMenu;
 | 
				
			||||||
 | 
					import com.ruoyi.system.domain.SysUserRole;
 | 
				
			||||||
import com.ruoyi.system.mapper.SysRoleDeptMapper;
 | 
					import com.ruoyi.system.mapper.SysRoleDeptMapper;
 | 
				
			||||||
import com.ruoyi.system.mapper.SysRoleMapper;
 | 
					import com.ruoyi.system.mapper.SysRoleMapper;
 | 
				
			||||||
import com.ruoyi.system.mapper.SysRoleMenuMapper;
 | 
					import com.ruoyi.system.mapper.SysRoleMenuMapper;
 | 
				
			||||||
| 
						 | 
					@ -350,4 +351,51 @@ public class SysRoleServiceImpl implements ISysRoleService
 | 
				
			||||||
        roleDeptMapper.deleteRoleDept(roleIds);
 | 
					        roleDeptMapper.deleteRoleDept(roleIds);
 | 
				
			||||||
        return roleMapper.deleteRoleByIds(roleIds);
 | 
					        return roleMapper.deleteRoleByIds(roleIds);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * 取消授权用户角色
 | 
				
			||||||
 | 
					     * 
 | 
				
			||||||
 | 
					     * @param userRole 用户和角色关联信息
 | 
				
			||||||
 | 
					     * @return 结果
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    @Override
 | 
				
			||||||
 | 
					    public int deleteAuthUser(SysUserRole userRole)
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        return userRoleMapper.deleteUserRoleInfo(userRole);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * 批量取消授权用户角色
 | 
				
			||||||
 | 
					     * 
 | 
				
			||||||
 | 
					     * @param roleId 角色ID
 | 
				
			||||||
 | 
					     * @param userIds 需要取消授权的用户数据ID
 | 
				
			||||||
 | 
					     * @return 结果
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    @Override
 | 
				
			||||||
 | 
					    public int deleteAuthUsers(Long roleId, Long[] userIds)
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        return userRoleMapper.deleteUserRoleInfos(roleId, userIds);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * 批量选择授权用户角色
 | 
				
			||||||
 | 
					     * 
 | 
				
			||||||
 | 
					     * @param roleId 角色ID
 | 
				
			||||||
 | 
					     * @param userIds 需要删除的用户数据ID
 | 
				
			||||||
 | 
					     * @return 结果
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    @Override
 | 
				
			||||||
 | 
					    public int insertAuthUsers(Long roleId, Long[] userIds)
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        // 新增用户与角色管理
 | 
				
			||||||
 | 
					        List<SysUserRole> list = new ArrayList<SysUserRole>();
 | 
				
			||||||
 | 
					        for (Long userId : userIds)
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            SysUserRole ur = new SysUserRole();
 | 
				
			||||||
 | 
					            ur.setUserId(userId);
 | 
				
			||||||
 | 
					            ur.setRoleId(roleId);
 | 
				
			||||||
 | 
					            list.add(ur);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        return userRoleMapper.batchUserRole(list);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -66,6 +66,32 @@ public class SysUserServiceImpl implements ISysUserService
 | 
				
			||||||
        return userMapper.selectUserList(user);
 | 
					        return userMapper.selectUserList(user);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * 根据条件分页查询已分配用户角色列表
 | 
				
			||||||
 | 
					     * 
 | 
				
			||||||
 | 
					     * @param user 用户信息
 | 
				
			||||||
 | 
					     * @return 用户信息集合信息
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    @Override
 | 
				
			||||||
 | 
					    @DataScope(deptAlias = "d", userAlias = "u")
 | 
				
			||||||
 | 
					    public List<SysUser> selectAllocatedList(SysUser user)
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        return userMapper.selectAllocatedList(user);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * 根据条件分页查询未分配用户角色列表
 | 
				
			||||||
 | 
					     * 
 | 
				
			||||||
 | 
					     * @param user 用户信息
 | 
				
			||||||
 | 
					     * @return 用户信息集合信息
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    @Override
 | 
				
			||||||
 | 
					    @DataScope(deptAlias = "d", userAlias = "u")
 | 
				
			||||||
 | 
					    public List<SysUser> selectUnallocatedList(SysUser user)
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        return userMapper.selectUnallocatedList(user);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
     * 通过用户名查询用户
 | 
					     * 通过用户名查询用户
 | 
				
			||||||
     * 
 | 
					     * 
 | 
				
			||||||
| 
						 | 
					@ -248,6 +274,7 @@ public class SysUserServiceImpl implements ISysUserService
 | 
				
			||||||
     * @param userId 用户ID
 | 
					     * @param userId 用户ID
 | 
				
			||||||
     * @param roleIds 角色组
 | 
					     * @param roleIds 角色组
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
 | 
					    @Override
 | 
				
			||||||
    public void insertUserAuth(Long userId, Long[] roleIds)
 | 
					    public void insertUserAuth(Long userId, Long[] roleIds)
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        userRoleMapper.deleteUserRoleByUserId(userId);
 | 
					        userRoleMapper.deleteUserRoleByUserId(userId);
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -81,6 +81,41 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 | 
				
			||||||
		${params.dataScope}
 | 
							${params.dataScope}
 | 
				
			||||||
	</select>
 | 
						</select>
 | 
				
			||||||
	
 | 
						
 | 
				
			||||||
 | 
						<select id="selectAllocatedList" parameterType="SysUser" resultMap="SysUserResult">
 | 
				
			||||||
 | 
						    select distinct u.user_id, u.dept_id, u.user_name, u.nick_name, u.email, u.phonenumber, u.status, u.create_time
 | 
				
			||||||
 | 
						    from sys_user u
 | 
				
			||||||
 | 
								 left join sys_dept d on u.dept_id = d.dept_id
 | 
				
			||||||
 | 
								 left join sys_user_role ur on u.user_id = ur.user_id
 | 
				
			||||||
 | 
								 left join sys_role r on r.role_id = ur.role_id
 | 
				
			||||||
 | 
						    where u.del_flag = '0' and r.role_id = #{roleId}
 | 
				
			||||||
 | 
						    <if test="userName != null and userName != ''">
 | 
				
			||||||
 | 
								AND u.user_name like concat('%', #{userName}, '%')
 | 
				
			||||||
 | 
							</if>
 | 
				
			||||||
 | 
							<if test="phonenumber != null and phonenumber != ''">
 | 
				
			||||||
 | 
								AND u.phonenumber like concat('%', #{phonenumber}, '%')
 | 
				
			||||||
 | 
							</if>
 | 
				
			||||||
 | 
							<!-- 数据范围过滤 -->
 | 
				
			||||||
 | 
							${params.dataScope}
 | 
				
			||||||
 | 
						</select>
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
						<select id="selectUnallocatedList" parameterType="SysUser" resultMap="SysUserResult">
 | 
				
			||||||
 | 
						    select distinct u.user_id, u.dept_id, u.user_name, u.nick_name, u.email, u.phonenumber, u.status, u.create_time
 | 
				
			||||||
 | 
						    from sys_user u
 | 
				
			||||||
 | 
								 left join sys_dept d on u.dept_id = d.dept_id
 | 
				
			||||||
 | 
								 left join sys_user_role ur on u.user_id = ur.user_id
 | 
				
			||||||
 | 
								 left join sys_role r on r.role_id = ur.role_id
 | 
				
			||||||
 | 
						    where u.del_flag = '0' and (r.role_id != #{roleId} or r.role_id IS NULL)
 | 
				
			||||||
 | 
						    and u.user_id not in (select u.user_id from sys_user u inner join sys_user_role ur on u.user_id = ur.user_id and ur.role_id = #{roleId})
 | 
				
			||||||
 | 
						    <if test="userName != null and userName != ''">
 | 
				
			||||||
 | 
								AND u.user_name like concat('%', #{userName}, '%')
 | 
				
			||||||
 | 
							</if>
 | 
				
			||||||
 | 
							<if test="phonenumber != null and phonenumber != ''">
 | 
				
			||||||
 | 
								AND u.phonenumber like concat('%', #{phonenumber}, '%')
 | 
				
			||||||
 | 
							</if>
 | 
				
			||||||
 | 
							<!-- 数据范围过滤 -->
 | 
				
			||||||
 | 
							${params.dataScope}
 | 
				
			||||||
 | 
						</select>
 | 
				
			||||||
 | 
						
 | 
				
			||||||
	<select id="selectUserByUserName" parameterType="String" resultMap="SysUserResult">
 | 
						<select id="selectUserByUserName" parameterType="String" resultMap="SysUserResult">
 | 
				
			||||||
	    <include refid="selectUserVo"/>
 | 
						    <include refid="selectUserVo"/>
 | 
				
			||||||
		where u.user_name = #{userName}
 | 
							where u.user_name = #{userName}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -73,3 +73,48 @@ export function exportRole(query) {
 | 
				
			||||||
    params: query
 | 
					    params: query
 | 
				
			||||||
  })
 | 
					  })
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// 查询角色已授权用户列表
 | 
				
			||||||
 | 
					export function allocatedUserList(query) {
 | 
				
			||||||
 | 
					  return request({
 | 
				
			||||||
 | 
					    url: '/system/role/authUser/allocatedList',
 | 
				
			||||||
 | 
					    method: 'get',
 | 
				
			||||||
 | 
					    params: query
 | 
				
			||||||
 | 
					  })
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// 查询角色未授权用户列表
 | 
				
			||||||
 | 
					export function unallocatedUserList(query) {
 | 
				
			||||||
 | 
					  return request({
 | 
				
			||||||
 | 
					    url: '/system/role/authUser/unallocatedList',
 | 
				
			||||||
 | 
					    method: 'get',
 | 
				
			||||||
 | 
					    params: query
 | 
				
			||||||
 | 
					  })
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// 取消用户授权角色
 | 
				
			||||||
 | 
					export function authUserCancel(data) {
 | 
				
			||||||
 | 
					  return request({
 | 
				
			||||||
 | 
					    url: '/system/role/authUser/cancel',
 | 
				
			||||||
 | 
					    method: 'put',
 | 
				
			||||||
 | 
					    data: data
 | 
				
			||||||
 | 
					  })
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// 批量取消用户授权角色
 | 
				
			||||||
 | 
					export function authUserCancelAll(data) {
 | 
				
			||||||
 | 
					  return request({
 | 
				
			||||||
 | 
					    url: '/system/role/authUser/cancelAll',
 | 
				
			||||||
 | 
					    method: 'put',
 | 
				
			||||||
 | 
					    params: data
 | 
				
			||||||
 | 
					  })
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// 授权用户选择
 | 
				
			||||||
 | 
					export function authUserSelectAll(data) {
 | 
				
			||||||
 | 
					  return request({
 | 
				
			||||||
 | 
					    url: '/system/role/authUser/selectAll',
 | 
				
			||||||
 | 
					    method: 'put',
 | 
				
			||||||
 | 
					    params: data
 | 
				
			||||||
 | 
					  })
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
| 
						 | 
					@ -93,6 +93,19 @@ export const constantRoutes = [
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
    ]
 | 
					    ]
 | 
				
			||||||
  },
 | 
					  },
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
 | 
					    path: '/auth',
 | 
				
			||||||
 | 
					    component: Layout,
 | 
				
			||||||
 | 
					    hidden: true,
 | 
				
			||||||
 | 
					    children: [
 | 
				
			||||||
 | 
					      {
 | 
				
			||||||
 | 
					        path: 'user/:roleId(\\d+)',
 | 
				
			||||||
 | 
					        component: (resolve) => require(['@/views/system/role/authUser'], resolve),
 | 
				
			||||||
 | 
					        name: 'AuthUser',
 | 
				
			||||||
 | 
					        meta: { title: '分配用户'}
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    ]
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
  {
 | 
					  {
 | 
				
			||||||
    path: '/dict',
 | 
					    path: '/dict',
 | 
				
			||||||
    component: Layout,
 | 
					    component: Layout,
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,213 @@
 | 
				
			||||||
 | 
					<template>
 | 
				
			||||||
 | 
					  <div class="app-container">
 | 
				
			||||||
 | 
					     <el-form :model="queryParams" ref="queryForm" v-show="showSearch" :inline="true">
 | 
				
			||||||
 | 
					      <el-form-item label="用户名称" prop="userName">
 | 
				
			||||||
 | 
					        <el-input
 | 
				
			||||||
 | 
					          v-model="queryParams.userName"
 | 
				
			||||||
 | 
					          placeholder="请输入用户名称"
 | 
				
			||||||
 | 
					          clearable
 | 
				
			||||||
 | 
					          size="small"
 | 
				
			||||||
 | 
					          style="width: 240px"
 | 
				
			||||||
 | 
					          @keyup.enter.native="handleQuery"
 | 
				
			||||||
 | 
					        />
 | 
				
			||||||
 | 
					      </el-form-item>
 | 
				
			||||||
 | 
					      <el-form-item label="手机号码" prop="phonenumber">
 | 
				
			||||||
 | 
					        <el-input
 | 
				
			||||||
 | 
					          v-model="queryParams.phonenumber"
 | 
				
			||||||
 | 
					          placeholder="请输入手机号码"
 | 
				
			||||||
 | 
					          clearable
 | 
				
			||||||
 | 
					          size="small"
 | 
				
			||||||
 | 
					          style="width: 240px"
 | 
				
			||||||
 | 
					          @keyup.enter.native="handleQuery"
 | 
				
			||||||
 | 
					        />
 | 
				
			||||||
 | 
					      </el-form-item>
 | 
				
			||||||
 | 
					      <el-form-item>
 | 
				
			||||||
 | 
					        <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
 | 
				
			||||||
 | 
					        <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
 | 
				
			||||||
 | 
					      </el-form-item>
 | 
				
			||||||
 | 
					    </el-form>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    <el-row :gutter="10" class="mb8">
 | 
				
			||||||
 | 
					      <el-col :span="1.5">
 | 
				
			||||||
 | 
					        <el-button
 | 
				
			||||||
 | 
					          type="primary"
 | 
				
			||||||
 | 
					          plain
 | 
				
			||||||
 | 
					          icon="el-icon-plus"
 | 
				
			||||||
 | 
					          size="mini"
 | 
				
			||||||
 | 
					          @click="openSelectUser"
 | 
				
			||||||
 | 
					          v-hasPermi="['system:role:add']"
 | 
				
			||||||
 | 
					        >添加用户</el-button>
 | 
				
			||||||
 | 
					      </el-col>
 | 
				
			||||||
 | 
					      <el-col :span="1.5">
 | 
				
			||||||
 | 
					        <el-button
 | 
				
			||||||
 | 
					          type="danger"
 | 
				
			||||||
 | 
					          plain
 | 
				
			||||||
 | 
					          icon="el-icon-circle-close"
 | 
				
			||||||
 | 
					          size="mini"
 | 
				
			||||||
 | 
					          :disabled="multiple"
 | 
				
			||||||
 | 
					          @click="cancelAuthUserAll"
 | 
				
			||||||
 | 
					          v-hasPermi="['system:role:remove']"
 | 
				
			||||||
 | 
					        >批量取消授权</el-button>
 | 
				
			||||||
 | 
					      </el-col>
 | 
				
			||||||
 | 
					      <el-col :span="1.5">
 | 
				
			||||||
 | 
					        <el-button
 | 
				
			||||||
 | 
					          type="warning"
 | 
				
			||||||
 | 
					          plain
 | 
				
			||||||
 | 
					          icon="el-icon-close"
 | 
				
			||||||
 | 
					          size="mini"
 | 
				
			||||||
 | 
					          @click="handleClose"
 | 
				
			||||||
 | 
					        >关闭</el-button>
 | 
				
			||||||
 | 
					      </el-col>
 | 
				
			||||||
 | 
					      <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
 | 
				
			||||||
 | 
					    </el-row>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    <el-table v-loading="loading" :data="userList" @selection-change="handleSelectionChange">
 | 
				
			||||||
 | 
					      <el-table-column type="selection" width="55" align="center" />
 | 
				
			||||||
 | 
					      <el-table-column label="用户名称" prop="userName" :show-overflow-tooltip="true" />
 | 
				
			||||||
 | 
					      <el-table-column label="用户昵称" prop="nickName" :show-overflow-tooltip="true" />
 | 
				
			||||||
 | 
					      <el-table-column label="邮箱" prop="email" :show-overflow-tooltip="true" />
 | 
				
			||||||
 | 
					      <el-table-column label="手机" prop="phonenumber" :show-overflow-tooltip="true" />
 | 
				
			||||||
 | 
					      <el-table-column label="状态" align="center" prop="status">
 | 
				
			||||||
 | 
					        <template slot-scope="scope">
 | 
				
			||||||
 | 
					          <dict-tag :options="statusOptions" :value="scope.row.status"/>
 | 
				
			||||||
 | 
					        </template>
 | 
				
			||||||
 | 
					      </el-table-column>
 | 
				
			||||||
 | 
					      <el-table-column label="创建时间" align="center" prop="createTime" width="180">
 | 
				
			||||||
 | 
					        <template slot-scope="scope">
 | 
				
			||||||
 | 
					          <span>{{ parseTime(scope.row.createTime) }}</span>
 | 
				
			||||||
 | 
					        </template>
 | 
				
			||||||
 | 
					      </el-table-column>
 | 
				
			||||||
 | 
					      <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
 | 
				
			||||||
 | 
					        <template slot-scope="scope">
 | 
				
			||||||
 | 
					          <el-button
 | 
				
			||||||
 | 
					            size="mini"
 | 
				
			||||||
 | 
					            type="text"
 | 
				
			||||||
 | 
					            icon="el-icon-circle-close"
 | 
				
			||||||
 | 
					            @click="cancelAuthUser(scope.row)"
 | 
				
			||||||
 | 
					            v-hasPermi="['system:role:remove']"
 | 
				
			||||||
 | 
					          >取消授权</el-button>
 | 
				
			||||||
 | 
					        </template>
 | 
				
			||||||
 | 
					      </el-table-column>
 | 
				
			||||||
 | 
					    </el-table>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    <pagination
 | 
				
			||||||
 | 
					      v-show="total>0"
 | 
				
			||||||
 | 
					      :total="total"
 | 
				
			||||||
 | 
					      :page.sync="queryParams.pageNum"
 | 
				
			||||||
 | 
					      :limit.sync="queryParams.pageSize"
 | 
				
			||||||
 | 
					      @pagination="getList"
 | 
				
			||||||
 | 
					    />
 | 
				
			||||||
 | 
					    <select-user ref="select" :roleId="queryParams.roleId" @ok="handleQuery" />
 | 
				
			||||||
 | 
					  </div>
 | 
				
			||||||
 | 
					</template>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					<script>
 | 
				
			||||||
 | 
					import { allocatedUserList, authUserCancel, authUserCancelAll } from "@/api/system/role";
 | 
				
			||||||
 | 
					import selectUser from "./selectUser";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					export default {
 | 
				
			||||||
 | 
					  name: "AuthUser",
 | 
				
			||||||
 | 
					  components: { selectUser },
 | 
				
			||||||
 | 
					  data() {
 | 
				
			||||||
 | 
					    return {
 | 
				
			||||||
 | 
					      // 遮罩层
 | 
				
			||||||
 | 
					      loading: true,
 | 
				
			||||||
 | 
					      // 选中用户组
 | 
				
			||||||
 | 
					      userIds: [],
 | 
				
			||||||
 | 
					      // 非多个禁用
 | 
				
			||||||
 | 
					      multiple: true,
 | 
				
			||||||
 | 
					      // 显示搜索条件
 | 
				
			||||||
 | 
					      showSearch: true,
 | 
				
			||||||
 | 
					      // 总条数
 | 
				
			||||||
 | 
					      total: 0,
 | 
				
			||||||
 | 
					      // 用户表格数据
 | 
				
			||||||
 | 
					      userList: [],
 | 
				
			||||||
 | 
					      // 状态数据字典
 | 
				
			||||||
 | 
					      statusOptions: [],
 | 
				
			||||||
 | 
					      // 查询参数
 | 
				
			||||||
 | 
					      queryParams: {
 | 
				
			||||||
 | 
					        pageNum: 1,
 | 
				
			||||||
 | 
					        pageSize: 10,
 | 
				
			||||||
 | 
					        roleId: undefined,
 | 
				
			||||||
 | 
					        userName: undefined,
 | 
				
			||||||
 | 
					        phonenumber: undefined
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    };
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
 | 
					  created() {
 | 
				
			||||||
 | 
					    const roleId = this.$route.params && this.$route.params.roleId;
 | 
				
			||||||
 | 
					    if (roleId) {
 | 
				
			||||||
 | 
					      this.queryParams.roleId = roleId;
 | 
				
			||||||
 | 
					      this.getList();
 | 
				
			||||||
 | 
					      this.getDicts("sys_normal_disable").then(response => {
 | 
				
			||||||
 | 
					        this.statusOptions = response.data;
 | 
				
			||||||
 | 
					      });
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
 | 
					  methods: {
 | 
				
			||||||
 | 
					    /** 查询授权用户列表 */
 | 
				
			||||||
 | 
					    getList() {
 | 
				
			||||||
 | 
					      this.loading = true;
 | 
				
			||||||
 | 
					      allocatedUserList(this.queryParams).then(response => {
 | 
				
			||||||
 | 
					          this.userList = response.rows;
 | 
				
			||||||
 | 
					          this.total = response.total;
 | 
				
			||||||
 | 
					          this.loading = false;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					      );
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    // 返回按钮
 | 
				
			||||||
 | 
					    handleClose() {
 | 
				
			||||||
 | 
					      this.$store.dispatch("tagsView/delView", this.$route);
 | 
				
			||||||
 | 
					      this.$router.push({ path: "/system/role" });
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    /** 搜索按钮操作 */
 | 
				
			||||||
 | 
					    handleQuery() {
 | 
				
			||||||
 | 
					      this.queryParams.pageNum = 1;
 | 
				
			||||||
 | 
					      this.getList();
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    /** 重置按钮操作 */
 | 
				
			||||||
 | 
					    resetQuery() {
 | 
				
			||||||
 | 
					      this.resetForm("queryForm");
 | 
				
			||||||
 | 
					      this.handleQuery();
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    // 多选框选中数据
 | 
				
			||||||
 | 
					    handleSelectionChange(selection) {
 | 
				
			||||||
 | 
					      this.userIds = selection.map(item => item.userId)
 | 
				
			||||||
 | 
					      this.multiple = !selection.length
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    /** 打开授权用户表弹窗 */
 | 
				
			||||||
 | 
					    openSelectUser() {
 | 
				
			||||||
 | 
					      this.$refs.select.show();
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    /** 取消授权按钮操作 */
 | 
				
			||||||
 | 
					    cancelAuthUser(row) {
 | 
				
			||||||
 | 
					      const roleId = this.queryParams.roleId;
 | 
				
			||||||
 | 
					      this.$confirm('确认要取消该用户"' + row.userName + '"角色吗?', "警告", {
 | 
				
			||||||
 | 
					        confirmButtonText: "确定",
 | 
				
			||||||
 | 
					        cancelButtonText: "取消",
 | 
				
			||||||
 | 
					        type: "warning"
 | 
				
			||||||
 | 
					      }).then(function() {
 | 
				
			||||||
 | 
					        return authUserCancel({ userId: row.userId, roleId: roleId });
 | 
				
			||||||
 | 
					      }).then(() => {
 | 
				
			||||||
 | 
					        this.getList();
 | 
				
			||||||
 | 
					        this.msgSuccess("取消授权成功");
 | 
				
			||||||
 | 
					      }).catch(() => {});
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    /** 批量取消授权按钮操作 */
 | 
				
			||||||
 | 
					    cancelAuthUserAll(row) {
 | 
				
			||||||
 | 
					      const roleId = this.queryParams.roleId;
 | 
				
			||||||
 | 
					      const userIds = this.userIds.join(",");
 | 
				
			||||||
 | 
					      this.$confirm('是否取消选中用户授权数据项?', "警告", {
 | 
				
			||||||
 | 
					          confirmButtonText: "确定",
 | 
				
			||||||
 | 
					          cancelButtonText: "取消",
 | 
				
			||||||
 | 
					          type: "warning"
 | 
				
			||||||
 | 
					      }).then(() => {
 | 
				
			||||||
 | 
					          return authUserCancelAll({ roleId: roleId, userIds: userIds });
 | 
				
			||||||
 | 
					      }).then(() => {
 | 
				
			||||||
 | 
					        this.getList();
 | 
				
			||||||
 | 
					        this.msgSuccess("取消授权成功");
 | 
				
			||||||
 | 
					      }).catch(() => {});
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					</script>
 | 
				
			||||||
| 
						 | 
					@ -132,13 +132,6 @@
 | 
				
			||||||
            @click="handleUpdate(scope.row)"
 | 
					            @click="handleUpdate(scope.row)"
 | 
				
			||||||
            v-hasPermi="['system:role:edit']"
 | 
					            v-hasPermi="['system:role:edit']"
 | 
				
			||||||
          >修改</el-button>
 | 
					          >修改</el-button>
 | 
				
			||||||
          <el-button
 | 
					 | 
				
			||||||
            size="mini"
 | 
					 | 
				
			||||||
            type="text"
 | 
					 | 
				
			||||||
            icon="el-icon-circle-check"
 | 
					 | 
				
			||||||
            @click="handleDataScope(scope.row)"
 | 
					 | 
				
			||||||
            v-hasPermi="['system:role:edit']"
 | 
					 | 
				
			||||||
          >数据权限</el-button>
 | 
					 | 
				
			||||||
          <el-button
 | 
					          <el-button
 | 
				
			||||||
            size="mini"
 | 
					            size="mini"
 | 
				
			||||||
            type="text"
 | 
					            type="text"
 | 
				
			||||||
| 
						 | 
					@ -146,6 +139,17 @@
 | 
				
			||||||
            @click="handleDelete(scope.row)"
 | 
					            @click="handleDelete(scope.row)"
 | 
				
			||||||
            v-hasPermi="['system:role:remove']"
 | 
					            v-hasPermi="['system:role:remove']"
 | 
				
			||||||
          >删除</el-button>
 | 
					          >删除</el-button>
 | 
				
			||||||
 | 
					          <el-dropdown size="mini" @command="(command) => handleCommand(command, scope.row)">
 | 
				
			||||||
 | 
					            <span class="el-dropdown-link">
 | 
				
			||||||
 | 
					              <i class="el-icon-d-arrow-right el-icon--right"></i>更多
 | 
				
			||||||
 | 
					            </span>
 | 
				
			||||||
 | 
					            <el-dropdown-menu slot="dropdown">
 | 
				
			||||||
 | 
					              <el-dropdown-item command="handleDataScope" icon="el-icon-circle-check"
 | 
				
			||||||
 | 
					                v-hasPermi="['system:role:edit']">数据权限</el-dropdown-item>
 | 
				
			||||||
 | 
					              <el-dropdown-item command="handleAuthUser" icon="el-icon-user"
 | 
				
			||||||
 | 
					                v-hasPermi="['system:role:edit']">分配用户</el-dropdown-item>
 | 
				
			||||||
 | 
					            </el-dropdown-menu>
 | 
				
			||||||
 | 
					          </el-dropdown>
 | 
				
			||||||
        </template>
 | 
					        </template>
 | 
				
			||||||
      </el-table-column>
 | 
					      </el-table-column>
 | 
				
			||||||
    </el-table>
 | 
					    </el-table>
 | 
				
			||||||
| 
						 | 
					@ -469,6 +473,19 @@ export default {
 | 
				
			||||||
      this.single = selection.length!=1
 | 
					      this.single = selection.length!=1
 | 
				
			||||||
      this.multiple = !selection.length
 | 
					      this.multiple = !selection.length
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
 | 
					    // 更多操作触发
 | 
				
			||||||
 | 
					    handleCommand(command, row) {
 | 
				
			||||||
 | 
					      switch (command) {
 | 
				
			||||||
 | 
					        case "handleDataScope":
 | 
				
			||||||
 | 
					          this.handleDataScope(row);
 | 
				
			||||||
 | 
					          break;
 | 
				
			||||||
 | 
					        case "handleAuthUser":
 | 
				
			||||||
 | 
					          this.handleAuthUser(row);
 | 
				
			||||||
 | 
					          break;
 | 
				
			||||||
 | 
					        default:
 | 
				
			||||||
 | 
					          break;
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
    // 树权限(展开/折叠)
 | 
					    // 树权限(展开/折叠)
 | 
				
			||||||
    handleCheckedTreeExpand(value, type) {
 | 
					    handleCheckedTreeExpand(value, type) {
 | 
				
			||||||
      if (type == 'menu') {
 | 
					      if (type == 'menu') {
 | 
				
			||||||
| 
						 | 
					@ -548,6 +565,11 @@ export default {
 | 
				
			||||||
        this.title = "分配数据权限";
 | 
					        this.title = "分配数据权限";
 | 
				
			||||||
      });
 | 
					      });
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
 | 
					    /** 分配用户操作 */
 | 
				
			||||||
 | 
					    handleAuthUser: function(row) {
 | 
				
			||||||
 | 
					      const roleId = row.roleId;
 | 
				
			||||||
 | 
					      this.$router.push("/auth/user/" + roleId);
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
    /** 提交按钮 */
 | 
					    /** 提交按钮 */
 | 
				
			||||||
    submitForm: function() {
 | 
					    submitForm: function() {
 | 
				
			||||||
      this.$refs["form"].validate(valid => {
 | 
					      this.$refs["form"].validate(valid => {
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,142 @@
 | 
				
			||||||
 | 
					<template>
 | 
				
			||||||
 | 
					  <!-- 授权用户 -->
 | 
				
			||||||
 | 
					  <el-dialog title="选择用户" :visible.sync="visible" width="800px" top="5vh" append-to-body>
 | 
				
			||||||
 | 
					    <el-form :model="queryParams" ref="queryForm" :inline="true">
 | 
				
			||||||
 | 
					      <el-form-item label="用户名称" prop="userName">
 | 
				
			||||||
 | 
					        <el-input
 | 
				
			||||||
 | 
					          v-model="queryParams.userName"
 | 
				
			||||||
 | 
					          placeholder="请输入用户名称"
 | 
				
			||||||
 | 
					          clearable
 | 
				
			||||||
 | 
					          size="small"
 | 
				
			||||||
 | 
					          @keyup.enter.native="handleQuery"
 | 
				
			||||||
 | 
					        />
 | 
				
			||||||
 | 
					      </el-form-item>
 | 
				
			||||||
 | 
					      <el-form-item label="手机号码" prop="phonenumber">
 | 
				
			||||||
 | 
					        <el-input
 | 
				
			||||||
 | 
					          v-model="queryParams.phonenumber"
 | 
				
			||||||
 | 
					          placeholder="请输入手机号码"
 | 
				
			||||||
 | 
					          clearable
 | 
				
			||||||
 | 
					          size="small"
 | 
				
			||||||
 | 
					          @keyup.enter.native="handleQuery"
 | 
				
			||||||
 | 
					        />
 | 
				
			||||||
 | 
					      </el-form-item>
 | 
				
			||||||
 | 
					      <el-form-item>
 | 
				
			||||||
 | 
					        <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
 | 
				
			||||||
 | 
					        <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
 | 
				
			||||||
 | 
					      </el-form-item>
 | 
				
			||||||
 | 
					    </el-form>
 | 
				
			||||||
 | 
					    <el-row>
 | 
				
			||||||
 | 
					      <el-table @row-click="clickRow" ref="table" :data="userList" @selection-change="handleSelectionChange" height="260px">
 | 
				
			||||||
 | 
					        <el-table-column type="selection" width="55"></el-table-column>
 | 
				
			||||||
 | 
					        <el-table-column label="用户名称" prop="userName" :show-overflow-tooltip="true" />
 | 
				
			||||||
 | 
					        <el-table-column label="用户昵称" prop="nickName" :show-overflow-tooltip="true" />
 | 
				
			||||||
 | 
					        <el-table-column label="邮箱" prop="email" :show-overflow-tooltip="true" />
 | 
				
			||||||
 | 
					        <el-table-column label="手机" prop="phonenumber" :show-overflow-tooltip="true" />
 | 
				
			||||||
 | 
					        <el-table-column label="状态" align="center" prop="status">
 | 
				
			||||||
 | 
					          <template slot-scope="scope">
 | 
				
			||||||
 | 
					            <dict-tag :options="statusOptions" :value="scope.row.status"/>
 | 
				
			||||||
 | 
					          </template>
 | 
				
			||||||
 | 
					        </el-table-column>
 | 
				
			||||||
 | 
					        <el-table-column label="创建时间" align="center" prop="createTime" width="180">
 | 
				
			||||||
 | 
					          <template slot-scope="scope">
 | 
				
			||||||
 | 
					            <span>{{ parseTime(scope.row.createTime) }}</span>
 | 
				
			||||||
 | 
					          </template>
 | 
				
			||||||
 | 
					        </el-table-column>
 | 
				
			||||||
 | 
					      </el-table>
 | 
				
			||||||
 | 
					      <pagination
 | 
				
			||||||
 | 
					        v-show="total>0"
 | 
				
			||||||
 | 
					        :total="total"
 | 
				
			||||||
 | 
					        :page.sync="queryParams.pageNum"
 | 
				
			||||||
 | 
					        :limit.sync="queryParams.pageSize"
 | 
				
			||||||
 | 
					        @pagination="getList"
 | 
				
			||||||
 | 
					      />
 | 
				
			||||||
 | 
					    </el-row>
 | 
				
			||||||
 | 
					    <div slot="footer" class="dialog-footer">
 | 
				
			||||||
 | 
					      <el-button type="primary" @click="handleSelectUser">确 定</el-button>
 | 
				
			||||||
 | 
					      <el-button @click="visible = false">取 消</el-button>
 | 
				
			||||||
 | 
					    </div>
 | 
				
			||||||
 | 
					  </el-dialog>
 | 
				
			||||||
 | 
					</template>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					<script>
 | 
				
			||||||
 | 
					import { unallocatedUserList, authUserSelectAll } from "@/api/system/role";
 | 
				
			||||||
 | 
					export default {
 | 
				
			||||||
 | 
					  props: {
 | 
				
			||||||
 | 
					    // 角色编号
 | 
				
			||||||
 | 
					    roleId: {
 | 
				
			||||||
 | 
					      type: Number
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
 | 
					  data() {
 | 
				
			||||||
 | 
					    return {
 | 
				
			||||||
 | 
					      // 遮罩层
 | 
				
			||||||
 | 
					      visible: false,
 | 
				
			||||||
 | 
					      // 选中数组值
 | 
				
			||||||
 | 
					      userIds: [],
 | 
				
			||||||
 | 
					      // 总条数
 | 
				
			||||||
 | 
					      total: 0,
 | 
				
			||||||
 | 
					      // 未授权用户数据
 | 
				
			||||||
 | 
					      userList: [],
 | 
				
			||||||
 | 
					      // 状态数据字典
 | 
				
			||||||
 | 
					      statusOptions: [],
 | 
				
			||||||
 | 
					      // 查询参数
 | 
				
			||||||
 | 
					      queryParams: {
 | 
				
			||||||
 | 
					        pageNum: 1,
 | 
				
			||||||
 | 
					        pageSize: 10,
 | 
				
			||||||
 | 
					        roleId: undefined,
 | 
				
			||||||
 | 
					        userName: undefined,
 | 
				
			||||||
 | 
					        phonenumber: undefined
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    };
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
 | 
					  created() {
 | 
				
			||||||
 | 
					    this.getDicts("sys_normal_disable").then(response => {
 | 
				
			||||||
 | 
					      this.statusOptions = response.data;
 | 
				
			||||||
 | 
					    });
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
 | 
					  methods: {
 | 
				
			||||||
 | 
					    // 显示弹框
 | 
				
			||||||
 | 
					    show() {
 | 
				
			||||||
 | 
					      this.queryParams.roleId = this.roleId;
 | 
				
			||||||
 | 
					      this.getList();
 | 
				
			||||||
 | 
					      this.visible = true;
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    clickRow(row) {
 | 
				
			||||||
 | 
					      this.$refs.table.toggleRowSelection(row);
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    // 多选框选中数据
 | 
				
			||||||
 | 
					    handleSelectionChange(selection) {
 | 
				
			||||||
 | 
					      this.userIds = selection.map(item => item.userId);
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    // 查询表数据
 | 
				
			||||||
 | 
					    getList() {
 | 
				
			||||||
 | 
					      unallocatedUserList(this.queryParams).then(res => {
 | 
				
			||||||
 | 
					        this.userList = res.rows;
 | 
				
			||||||
 | 
					        this.total = res.total;
 | 
				
			||||||
 | 
					      });
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    /** 搜索按钮操作 */
 | 
				
			||||||
 | 
					    handleQuery() {
 | 
				
			||||||
 | 
					      this.queryParams.pageNum = 1;
 | 
				
			||||||
 | 
					      this.getList();
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    /** 重置按钮操作 */
 | 
				
			||||||
 | 
					    resetQuery() {
 | 
				
			||||||
 | 
					      this.resetForm("queryForm");
 | 
				
			||||||
 | 
					      this.handleQuery();
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    /** 选择授权用户操作 */
 | 
				
			||||||
 | 
					    handleSelectUser() {
 | 
				
			||||||
 | 
					      const roleId = this.queryParams.roleId;
 | 
				
			||||||
 | 
					      const userIds = this.userIds.join(",");
 | 
				
			||||||
 | 
					      authUserSelectAll({ roleId: roleId, userIds: userIds }).then(res => {
 | 
				
			||||||
 | 
					        this.msgSuccess(res.msg);
 | 
				
			||||||
 | 
					        if (res.code === 200) {
 | 
				
			||||||
 | 
					          this.visible = false;
 | 
				
			||||||
 | 
					          this.$emit("ok");
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					      });
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					</script>
 | 
				
			||||||
		Loading…
	
		Reference in New Issue