1 Commits

Author SHA1 Message Date
1e1e4167d4 数据权限 2022-12-30 09:32:39 +08:00
17 changed files with 371 additions and 43 deletions

View File

@@ -1,6 +1,7 @@
package org.nl.system.controller.permission; package org.nl.system.controller.permission;
import com.alibaba.fastjson.JSONObject;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
@@ -85,5 +86,26 @@ public class SysDataPermissionController {
return new ResponseEntity<>(dataPermissionService.getDataPermissionOption(),HttpStatus.OK); return new ResponseEntity<>(dataPermissionService.getDataPermissionOption(),HttpStatus.OK);
} }
@PostMapping("/saveDataPermission")
@Log("保存数据权限")
@ApiOperation("保存数据权限")
public ResponseEntity<Object> saveDataPermission(@RequestBody JSONObject datas){
dataPermissionService.savePermission(datas);
return new ResponseEntity<>(HttpStatus.CREATED);
}
@PostMapping("/dataShow")
@Log("查看数据权限")
@ApiOperation("查看数据权限")
public ResponseEntity<Object> getDataShow(@RequestBody String id){
return new ResponseEntity<>(dataPermissionService.getDataShow(id),HttpStatus.OK);
}
@PostMapping("/dataDetail")
@Log("查看数据明细")
@ApiOperation("查看数据明细")
public ResponseEntity<Object> getDataDetail(@RequestBody JSONObject data){
return new ResponseEntity<>(dataPermissionService.getDataDetail(data),HttpStatus.OK);
}
} }

View File

@@ -1,11 +1,14 @@
package org.nl.system.service.permission; package org.nl.system.service.permission;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import org.nl.common.domain.query.PageQuery; import org.nl.common.domain.query.PageQuery;
import org.nl.system.service.dict.dao.Dict; import org.nl.system.service.dict.dao.Dict;
import org.nl.system.service.permission.dao.SysDataPermission; import org.nl.system.service.permission.dao.SysDataPermission;
import com.baomidou.mybatisplus.extension.service.IService; import com.baomidou.mybatisplus.extension.service.IService;
import org.nl.system.service.permission.dao.SysDataScope;
import org.nl.system.service.permission.dto.SysDataPermissionQuery; import org.nl.system.service.permission.dto.SysDataPermissionQuery;
import org.nl.system.service.user.dto.UserDataPermissionDto;
import java.util.List; import java.util.List;
import java.util.Set; import java.util.Set;
@@ -56,5 +59,20 @@ public interface ISysDataPermissionService extends IService<SysDataPermission> {
* 获取数据权限下拉框 * 获取数据权限下拉框
* @return * @return
*/ */
Object getDataPermissionOption(); List<SysDataPermission> getDataPermissionOption();
List<UserDataPermissionDto> getDataShow(String id);
/**
* 保存数据权限
* @param datas
*/
void savePermission(JSONObject datas);
/**
* 数据展示
* @param data
* @return
*/
List<SysDataScope> getDataDetail(JSONObject data);
} }

View File

@@ -0,0 +1,44 @@
package org.nl.system.service.permission.dao;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;
import lombok.Data;
import lombok.EqualsAndHashCode;
/**
* <p>
* 数据权限规则表
* </p>
*
* @author generator
* @since 2022-12-27
*/
@Data
@EqualsAndHashCode(callSuper = false)
@TableName("sys_data_scope")
public class SysDataScope implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 当前用户
*/
private String selfUserId;
/**
* 数据权限类型
*/
private String permissionScopeType;
/**
* 部门权限列表
*/
private String deptId;
/**
* 用户权限列表
*/
private String userId;
}

View File

@@ -1,7 +1,11 @@
package org.nl.system.service.permission.dao.mapper; package org.nl.system.service.permission.dao.mapper;
import org.apache.ibatis.annotations.Param;
import org.nl.system.service.permission.dao.SysDataPermission; import org.nl.system.service.permission.dao.SysDataPermission;
import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.nl.system.service.permission.dao.SysDataScope;
import java.util.List;
/** /**
* <p> * <p>
@@ -13,4 +17,15 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
*/ */
public interface SysDataPermissionMapper extends BaseMapper<SysDataPermission> { public interface SysDataPermissionMapper extends BaseMapper<SysDataPermission> {
List<String> findDataScopeUserIdBySelfUserIdAndScopeType(String userId, String permissionScopeType);
List<String> findDataScopeDeptIdBySelfUserIdAndScopeType(String userId, String permissionScopeType);
void deleteScopeBySelfUserId(String userId);
void insertDataScope(@Param("dataScope") SysDataScope dataScope);
void insertDataScopes(@Param("dataScope") SysDataScope dataScope);
List<SysDataScope> getDataDetail(String selfUserId, String permissionScopeType);
} }

View File

@@ -1,5 +1,61 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="org.nl.system.service.permission.dao.mapper.SysDataPermissionMapper"> <mapper namespace="org.nl.system.service.permission.dao.mapper.SysDataPermissionMapper">
<insert id="insertDataScope">
INSERT INTO sys_data_scope(self_user_id, permission_scope_type, user_id)
VALUES (#{dataScope.selfUserId}, #{dataScope.permissionScopeType}, #{dataScope.userId})
</insert>
<insert id="insertDataScopes">
INSERT INTO sys_data_scope(self_user_id, permission_scope_type, user_id, dept_id)
VALUES (#{dataScope.selfUserId}, #{dataScope.permissionScopeType}, #{dataScope.userId}, #{dataScope.deptId})
</insert>
<delete id="deleteScopeBySelfUserId">
DELETE FROM sys_data_scope WHERE self_user_id = #{userId}
</delete>
<select id="findDataScopeUserIdBySelfUserIdAndScopeType" resultType="java.lang.String">
SELECT user_id FROM sys_data_scope
<where>
<if test="userId != null and userId != ''">
self_user_id = #{userId}
</if>
<if test="permissionScopeType != null and permissionScopeType != ''">
AND permission_scope_type = #{permissionScopeType}
</if>
</where>
</select>
<select id="findDataScopeDeptIdBySelfUserIdAndScopeType" resultType="java.lang.String">
SELECT DISTINCT dept_id FROM sys_data_scope
<where>
<if test="userId != null and userId != ''">
self_user_id = #{userId}
</if>
<if test="permissionScopeType != null and permissionScopeType != ''">
AND permission_scope_type = #{permissionScopeType}
</if>
</where>
</select>
<select id="getDataDetail" resultType="org.nl.system.service.permission.dao.SysDataScope">
SELECT
scop.*,
dept.`name` as deptName,
user.person_name,
dp.`name` as permissionName,
permission.permission_id
FROM
`sys_data_scope` scop
LEFT JOIN sys_user_data_permission permission ON scop.permission_scope_type = permission.permission_scope_type AND permission.user_id = scop.self_user_id
LEFT JOIN sys_data_permission dp ON permission.permission_id = dp.permission_id
LEFT JOIN sys_dept dept ON scop.dept_id = dept.dept_id
LEFT JOIN sys_user user ON scop.user_id = user.user_id
<where>
<if test="selfUserId != null and selfUserId != ''">
scop.self_user_id = #{selfUserId}
</if>
<if test="permissionScopeType != null and permissionScopeType != ''">
AND scop.permission_scope_type = #{permissionScopeType}
</if>
</where>
ORDER BY scop.permission_scope_type, scop.dept_id, scop.user_id
</select>
</mapper> </mapper>

View File

@@ -0,0 +1,20 @@
package org.nl.system.service.permission.dto;
import lombok.AllArgsConstructor;
import lombok.Getter;
/**
* @Author: lyd
* @Description:
* @Date: 2022/12/27
*/
@Getter
@AllArgsConstructor
public enum DataScopeEnum {
USER("user", "用户数据权限"),
DEPT("dept", "部门数据权限"),
SELF("self", "自身数据权限");
private final String code;
private final String name;
}

View File

@@ -3,18 +3,23 @@ package org.nl.system.service.permission.impl;
import cn.hutool.core.date.DateUtil; import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.IdUtil; import cn.hutool.core.util.IdUtil;
import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.ObjectUtil;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import org.nl.common.domain.query.PageQuery; import org.nl.common.domain.query.PageQuery;
import org.nl.modules.common.exception.BadRequestException; import org.nl.modules.common.exception.BadRequestException;
import org.nl.modules.common.utils.SecurityUtils; import org.nl.modules.common.utils.SecurityUtils;
import org.nl.modules.wql.WQL;
import org.nl.system.service.dict.dao.Dict; import org.nl.system.service.dict.dao.Dict;
import org.nl.system.service.dict.dao.mapper.SysDictMapper; import org.nl.system.service.dict.dao.mapper.SysDictMapper;
import org.nl.system.service.permission.dao.SysDataPermission; import org.nl.system.service.permission.dao.SysDataPermission;
import org.nl.system.service.permission.dao.SysDataScope;
import org.nl.system.service.permission.dao.mapper.SysDataPermissionMapper; import org.nl.system.service.permission.dao.mapper.SysDataPermissionMapper;
import org.nl.system.service.permission.ISysDataPermissionService; import org.nl.system.service.permission.ISysDataPermissionService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.nl.system.service.permission.dto.DataScopeEnum;
import org.nl.system.service.permission.dto.SysDataPermissionQuery; import org.nl.system.service.permission.dto.SysDataPermissionQuery;
import org.nl.system.service.user.ISysUserService; import org.nl.system.service.user.ISysUserService;
import org.nl.system.service.user.dto.UserDataPermissionDto; import org.nl.system.service.user.dto.UserDataPermissionDto;
@@ -92,7 +97,82 @@ public class SysDataPermissionServiceImpl extends ServiceImpl<SysDataPermissionM
} }
@Override @Override
public Object getDataPermissionOption() { public List<SysDataPermission> getDataPermissionOption() {
return null; return this.list();
}
@Override
public List<UserDataPermissionDto> getDataShow(String userId) {
List<UserDataPermissionDto> userDataPermissionDtoList = userService.getUserDataPermissionByUserId(userId);
userDataPermissionDtoList.forEach(userDataPermissionDto -> {
SysDataPermission sysDataPermission = dataPermissionMapper.selectOne(new LambdaQueryWrapper<SysDataPermission>().eq(SysDataPermission::getPermissionId, userDataPermissionDto.getPermissionId()));
if (sysDataPermission.getCode().equals(DataScopeEnum.USER.getCode())) { // 用户权限
List<String> userIds = dataPermissionMapper.findDataScopeUserIdBySelfUserIdAndScopeType(userId, userDataPermissionDto.getPermissionScopeType());
if (ObjectUtil.isNotEmpty(userIds)) userDataPermissionDto.setUsers(userIds);
} else if (sysDataPermission.getCode().equals(DataScopeEnum.DEPT.getCode())) { // 部门权限
List<String> deptIds = dataPermissionMapper.findDataScopeDeptIdBySelfUserIdAndScopeType(userId, userDataPermissionDto.getPermissionScopeType());
if (ObjectUtil.isNotEmpty(deptIds)) userDataPermissionDto.setDepts(deptIds);
} else if (sysDataPermission.getCode().equals(DataScopeEnum.SELF.getCode())) { // 自身
List<String> userIds = dataPermissionMapper.findDataScopeUserIdBySelfUserIdAndScopeType(userId, userDataPermissionDto.getPermissionScopeType());
if (ObjectUtil.isNotEmpty(userIds)) userDataPermissionDto.setUsers(userIds);
}
// 其他不做处理
});
return userDataPermissionDtoList;
}
@Override
@Transactional(rollbackFor = Exception.class)
public void savePermission(JSONObject datas) {
String user_id = datas.getString("userId");
JSONArray data = datas.getJSONArray("datas");
if (ObjectUtil.isEmpty(user_id)) throw new BadRequestException("用户不能为空");
// 删除用户绑定的数据
userService.deleteDataPermissionById(user_id);
dataPermissionMapper.deleteScopeBySelfUserId(user_id);
for (int i = 0; i < data.size(); i++) {
JSONObject scopeObj = data.getJSONObject(i);
String permission_scope_type = scopeObj.getString("value");
String permission_id = scopeObj.getString("permissionId");
UserDataPermissionDto userDataPermissionDto = new UserDataPermissionDto();
userDataPermissionDto.setUserId(user_id);
userDataPermissionDto.setPermissionId(permission_id);
userDataPermissionDto.setPermissionScopeType(permission_scope_type);
// 保存用户数据权限
userService.insertDataPermission(userDataPermissionDto);
JSONArray users = scopeObj.getJSONArray("users");
if (ObjectUtil.isNotEmpty(users)) { // 如果是用户直接将用户的id绑定进去
for (int j = 0; j < users.size(); j++) {
JSONObject user = users.getJSONObject(j);
String userId = user.getString("userId");
SysDataScope dataScope = new SysDataScope();
dataScope.setUserId(userId);
dataScope.setSelfUserId(user_id);
dataScope.setPermissionScopeType(permission_scope_type);
dataPermissionMapper.insertDataScope(dataScope);
}
}
JSONArray depts = scopeObj.getJSONArray("depts");
if (ObjectUtil.isNotEmpty(depts)) { // 如果是部门先根据部门id求出所有的用户id
for (int j = 0; j < depts.size(); j++) {
JSONObject dept = depts.getJSONObject(j);
String deptId = dept.getString("deptId");
List<String> user_ids = userService.getUserIdByDeptId(deptId);
user_ids.forEach(id -> {
SysDataScope dataScope = new SysDataScope();
dataScope.setUserId(id);
dataScope.setDeptId(deptId);
dataScope.setSelfUserId(user_id);
dataScope.setPermissionScopeType(permission_scope_type);
dataPermissionMapper.insertDataScopes(dataScope);
});
}
}
}
}
@Override
public List<SysDataScope> getDataDetail(JSONObject data) {
return dataPermissionMapper.getDataDetail(data.getString("userId"), data.getString("permissionScopeType"));
} }
} }

View File

@@ -31,4 +31,11 @@ public interface ISysUserService extends IService<SysUser> {
void update(Map userDetail); void update(Map userDetail);
List<UserDataPermissionDto> getUserDataPermissionByPermissionId(String permissionId); List<UserDataPermissionDto> getUserDataPermissionByPermissionId(String permissionId);
List<UserDataPermissionDto> getUserDataPermissionByUserId(String userId);
void deleteDataPermissionById(String userId);
void insertDataPermission(UserDataPermissionDto userDataPermissionDto);
List<String> getUserIdByDeptId(String deptId);
} }

View File

@@ -27,4 +27,12 @@ public interface SysUserMapper extends BaseMapper<SysUser> {
List<Map<String,Object>> getDetailForMap(@Param("query") UserQuery query, @Param("page")PageQuery page); List<Map<String,Object>> getDetailForMap(@Param("query") UserQuery query, @Param("page")PageQuery page);
List<UserDataPermissionDto> getUserDataPermissionByPermissionId(String permissionId); List<UserDataPermissionDto> getUserDataPermissionByPermissionId(String permissionId);
List<UserDataPermissionDto> getUserDataPermissionByUserId(String userId);
void deleteDataPermissionById(String userId);
void insertDataPermission(@Param("dataPermission") UserDataPermissionDto dataPermission);
List<String> getUserIdByDeptId(String deptId);
} }

View File

@@ -24,6 +24,12 @@
sys_user.extperson_id as extpersonId, sys_user.extperson_id as extpersonId,
sys_user.extuser_id as extuserId sys_user.extuser_id as extuserId
</sql> </sql>
<insert id="insertDataPermission">
INSERT INTO sys_user_data_permission(user_id, permission_scope_type, permission_id) VALUES (#{dataPermission.userId}, #{dataPermission.permissionScopeType}, #{dataPermission.permissionId})
</insert>
<delete id="deleteDataPermissionById">
DELETE FROM sys_user_data_permission WHERE user_id = #{userId}
</delete>
<resultMap id="UserDetail" type="org.nl.system.service.user.dto.SysUserDetail" > <resultMap id="UserDetail" type="org.nl.system.service.user.dto.SysUserDetail" >
<id column="userId" property="userId" /> <id column="userId" property="userId" />
<result column="username" property="username" /> <result column="username" property="username" />
@@ -119,4 +125,19 @@
resultType="org.nl.system.service.user.dto.UserDataPermissionDto"> resultType="org.nl.system.service.user.dto.UserDataPermissionDto">
SELECT * FROM sys_user_data_permission WHERE permission_id = #{permissionId} SELECT * FROM sys_user_data_permission WHERE permission_id = #{permissionId}
</select> </select>
<select id="getUserDataPermissionByUserId"
resultType="org.nl.system.service.user.dto.UserDataPermissionDto">
SELECT * FROM sys_user_data_permission WHERE user_id = #{userId}
</select>
<select id="getUserIdByDeptId" resultType="java.lang.String">
SELECT
DISTINCT user_id
FROM
sys_user_dept
<where>
<if test="deptId != null and deptId != ''">
dept_id = #{deptId}
</if>
</where>
</select>
</mapper> </mapper>

View File

@@ -1,6 +1,12 @@
package org.nl.system.service.user.dto; package org.nl.system.service.user.dto;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data; import lombok.Data;
import lombok.EqualsAndHashCode;
import java.io.Serializable;
import java.util.List;
/** /**
* @Author: lyd * @Author: lyd
@@ -8,10 +14,18 @@ import lombok.Data;
* @Date: 2022/12/20 * @Date: 2022/12/20
*/ */
@Data @Data
public class UserDataPermissionDto { @EqualsAndHashCode(callSuper = false)
@TableName("sys_user_data_permission")
public class UserDataPermissionDto implements Serializable {
private String userId; private String userId;
private String permissionScopeType; private String permissionScopeType;
private String permissionId; private String permissionId;
@TableField(exist = false)
private List<String> users;
@TableField(exist = false)
private List<String> depts;
} }

View File

@@ -150,4 +150,24 @@ public class ISysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> imp
public List<UserDataPermissionDto> getUserDataPermissionByPermissionId(String permissionId) { public List<UserDataPermissionDto> getUserDataPermissionByPermissionId(String permissionId) {
return sysUserMapper.getUserDataPermissionByPermissionId(permissionId); return sysUserMapper.getUserDataPermissionByPermissionId(permissionId);
} }
@Override
public List<UserDataPermissionDto> getUserDataPermissionByUserId(String userId) {
return sysUserMapper.getUserDataPermissionByUserId(userId);
}
@Override
public void deleteDataPermissionById(String userId) {
sysUserMapper.deleteDataPermissionById(userId);
}
@Override
public void insertDataPermission(UserDataPermissionDto userDataPermissionDto) {
sysUserMapper.insertDataPermission(userDataPermissionDto);
}
@Override
public List<String> getUserIdByDeptId(String deptId) {
return sysUserMapper.getUserIdByDeptId(deptId);
}
} }

View File

@@ -32,7 +32,6 @@
end-placeholder="结束日期" end-placeholder="结束日期"
align="right" align="right"
@change="queryData" @change="queryData"
@blur="queryData"
/> />
</el-form-item> </el-form-item>
<el-form-item v-show="showOptions" label="时间段"> <el-form-item v-show="showOptions" label="时间段">

View File

@@ -53,8 +53,8 @@
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="名称" prop="name" /> <el-table-column label="名称" prop="name" />
<el-table-column label="排序" prop="dept_sort" /> <el-table-column label="排序" prop="deptSort" />
<el-table-column prop="create_time" label="创建日期" /> <el-table-column prop="createTime" label="创建日期" />
</el-table> </el-table>
<!--分页组件--> <!--分页组件-->
<pagination /> <pagination />
@@ -76,7 +76,7 @@ export default {
name: 'RelevanceDeptDialog', name: 'RelevanceDeptDialog',
components: { rrOperation, pagination }, components: { rrOperation, pagination },
cruds() { cruds() {
return CRUD({ title: '部门', idField: 'dept_id', url: 'api/dept/vo', crudMethod: { ...crudDept }, query: { is_used: '1' }}) return CRUD({ title: '部门', idField: 'deptId', url: 'api/dept/vo', crudMethod: { ...crudDept }, query: { isUsed: '1' }})
}, },
mixins: [presenter(), header()], mixins: [presenter(), header()],
dicts: ['product_series'], dicts: ['product_series'],
@@ -119,7 +119,7 @@ export default {
this.$nextTick(function() { this.$nextTick(function() {
for (var k = 0; k < this.depts.length; k++) { for (var k = 0; k < this.depts.length; k++) {
for (var i = 0; i < this.crud.data.length; i++) { for (var i = 0; i < this.crud.data.length; i++) {
if (this.crud.data[i].dept_id == this.depts[k].dept_id) { if (this.crud.data[i].deptId == this.depts[k].deptId) {
this.$refs.table.toggleRowSelection(this.crud.data[i], true) this.$refs.table.toggleRowSelection(this.crud.data[i], true)
break break
} }
@@ -160,7 +160,7 @@ export default {
// console.log(this.rows) // console.log(this.rows)
}, },
getDeptDatas(tree, treeNode, resolve) { getDeptDatas(tree, treeNode, resolve) {
const params = { pid: tree.dept_id } const params = { pid: tree.deptId }
setTimeout(() => { setTimeout(() => {
crudDept.getDeptvo(params).then(res => { crudDept.getDeptvo(params).then(res => {
resolve(res.content) resolve(res.content)

View File

@@ -47,14 +47,14 @@
</el-table-column> </el-table-column>
<el-table-column prop="username" label="用户名" :min-width="flexWidth('username',crud.data,'用户名')" /> <el-table-column prop="username" label="用户名" :min-width="flexWidth('username',crud.data,'用户名')" />
<el-table-column <el-table-column
prop="person_name" prop="personName"
label="姓名" label="姓名"
:min-width="flexWidth('person_name',crud.data,'姓名')" :min-width="flexWidth('personName',crud.data,'姓名')"
/> />
<el-table-column show-overflow-tooltip prop="deptnames" label="部门" /> <el-table-column show-overflow-tooltip prop="deptnames" label="部门" />
<el-table-column label="状态" align="center" prop="enabled"> <el-table-column label="状态" align="center" prop="enabled">
<template slot-scope="scope"> <template slot-scope="scope">
{{scope.row.is_used==1?'启用':'禁用'}} {{scope.row.isUsed==1?'启用':'禁用'}}
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
@@ -78,7 +78,7 @@ export default {
name: 'RelevanceUserDialog', name: 'RelevanceUserDialog',
components: { rrOperation, pagination }, components: { rrOperation, pagination },
cruds() { cruds() {
return CRUD({ title: '用户', idField: 'user_id', url: 'api/users', crudMethod: { ...crudUser }, query: {is_used: '1'}}) return CRUD({ title: '用户', idField: 'userId', url: 'api/users', crudMethod: { ...crudUser }, query: {isUsed: '1'}})
}, },
mixins: [presenter(), header()], mixins: [presenter(), header()],
dicts: ['product_series'], dicts: ['product_series'],
@@ -118,9 +118,10 @@ export default {
}, },
open() { open() {
this.$nextTick(function() { this.$nextTick(function() {
console.log(this.crud.data)
for (var k = 0; k < this.users.length; k++) { for (var k = 0; k < this.users.length; k++) {
for (var i = 0; i < this.crud.data.length; i++) { for (var i = 0; i < this.crud.data.length; i++) {
if (this.crud.data[i].user_id == this.users[k].user_id) { if (this.crud.data[i].userId == this.users[k].userId) {
this.$refs.table.toggleRowSelection(this.crud.data[i], true) this.$refs.table.toggleRowSelection(this.crud.data[i], true)
break break
} }

View File

@@ -42,7 +42,7 @@ export default {
name: 'ShowDataPermissionDialog', name: 'ShowDataPermissionDialog',
components: { rrOperation, pagination }, components: { rrOperation, pagination },
cruds() { cruds() {
return CRUD({ title: '权限明细', idField: 'user_id', url: 'api/dataPermission/dataDetail'}) return CRUD({ title: '权限明细', idField: 'userId', url: 'api/dataPermission/dataDetail'})
}, },
mixins: [presenter(), header()], mixins: [presenter(), header()],
dicts: ['product_series'], dicts: ['product_series'],

View File

@@ -249,7 +249,7 @@
<el-form-item label="用户名" prop="username"> <el-form-item label="用户名" prop="username">
<el-input v-model="dataDialog.username" disabled style="width: 200px;" /> <el-input v-model="dataDialog.username" disabled style="width: 200px;" />
</el-form-item> </el-form-item>
<el-form-item label="姓名" prop="preson_name"> <el-form-item label="姓名" prop="presonName">
<el-input v-model="dataDialog.personName" disabled style="width: 200px;" /> <el-input v-model="dataDialog.personName" disabled style="width: 200px;" />
</el-form-item> </el-form-item>
<el-table <el-table
@@ -263,15 +263,15 @@
<el-table-column label="数据权限"> <el-table-column label="数据权限">
<template slot-scope="scope"> <template slot-scope="scope">
<el-select <el-select
v-model="scope.row.permission_id" v-model="scope.row.permissionId"
placeholder="请选择" placeholder="请选择"
@change="openRelevance(scope.row, scope.$index)" @change="openRelevance(scope.row, scope.$index)"
> >
<el-option <el-option
v-for="item in permissions" v-for="item in permissions"
:key="item.permission_id" :key="item.permissionId"
:label="item.name" :label="item.name"
:value="item.permission_id" :value="item.permissionId"
/> />
</el-select> </el-select>
</template> </template>
@@ -306,11 +306,11 @@
> >
<el-table-column prop="permission_scope_type" label="权限类型" min-width="100" show-overflow-tooltip> <el-table-column prop="permission_scope_type" label="权限类型" min-width="100" show-overflow-tooltip>
<template slot-scope="scope"> <template slot-scope="scope">
{{ dict.label.permission_scope_type[scope.row.permission_scope_type] }} {{ dict.label.permissionScopeType[scope.row.permissionScopeType] }}
</template> </template>
</el-table-column> </el-table-column>
<el-table-column prop="permission_name" label="权限范围" min-width="100" show-overflow-tooltip /> <el-table-column prop="permissionName" label="权限范围" min-width="100" show-overflow-tooltip />
<el-table-column prop="dept_name" label="部门名称" min-width="100" show-overflow-tooltip /> <el-table-column prop="deptName" label="部门名称" min-width="100" show-overflow-tooltip />
<el-table-column prop="personName" label="用户名称" min-width="100" show-overflow-tooltip /> <el-table-column prop="personName" label="用户名称" min-width="100" show-overflow-tooltip />
</el-table> </el-table>
</el-dialog> </el-dialog>
@@ -393,7 +393,7 @@ export default {
dataPerm: false, dataPerm: false,
dataDialog: {}, dataDialog: {},
permissions: [], permissions: [],
permission_id: '', permissionId: '',
multipleSelection: [], // 选中 multipleSelection: [], // 选中
relevanceUser: false, // 关联用户 relevanceUser: false, // 关联用户
rowData: {}, // 当行数据 rowData: {}, // 当行数据
@@ -686,19 +686,20 @@ export default {
this.dataDialog.dataScopeType = res this.dataDialog.dataScopeType = res
// permissions // permissions
crudDataPermission.getDataPermissionOption().then(res => { crudDataPermission.getDataPermissionOption().then(res => {
// console.log(res)
this.permissions = res this.permissions = res
this.dataDialog.personName = row.personName this.dataDialog.personName = row.personName
this.dataDialog.username = row.username this.dataDialog.username = row.username
this.dataDialog.user_id = row.user_id this.dataDialog.userId = row.userId
this.dataPermissionTitle = '[' + row.personName + '] 数据权限' this.dataPermissionTitle = '[' + row.personName + '] 数据权限'
this.dataPerm = true this.dataPerm = true
// 回显数据 // 回显数据
crudDataPermission.getDataShow(row.user_id).then(res => { crudDataPermission.getDataShow(row.userId).then(res => {
this.$nextTick(function() { this.$nextTick(function() {
for (var index = 0; index < res.length; index++) { for (var index = 0; index < res.length; index++) {
for (var i = 0; i < this.dataDialog.dataScopeType.length; i++) { for (var i = 0; i < this.dataDialog.dataScopeType.length; i++) {
if (this.dataDialog.dataScopeType[i].value == res[index].permission_scope_type) { if (this.dataDialog.dataScopeType[i].value == res[index].permissionScopeType) {
this.dataDialog.dataScopeType[i].permission_id = res[index].permission_id this.dataDialog.dataScopeType[i].permissionId = res[index].permissionId
if (res[index].users) this.dataDialog.dataScopeType[i].users = res[index].users if (res[index].users) this.dataDialog.dataScopeType[i].users = res[index].users
if (res[index].depts) this.dataDialog.dataScopeType[i].depts = res[index].depts if (res[index].depts) this.dataDialog.dataScopeType[i].depts = res[index].depts
// 选中 // 选中
@@ -717,25 +718,26 @@ export default {
}, },
openRelevance(row, index) { openRelevance(row, index) {
for (var i = 0; i < this.permissions.length; i++) { for (var i = 0; i < this.permissions.length; i++) {
if (this.permissions[i].permission_id != undefined && this.permissions[i].permission_id && this.permissions[i].permission_id != row.permission_id) { if (this.permissions[i].permissionId != undefined && this.permissions[i].permissionId && this.permissions[i].permissionId != row.permissionId) {
this.$delete(this.dataDialog.dataScopeType[index], this.permissions[i].permission_id.toString()) this.$delete(this.dataDialog.dataScopeType[index], this.permissions[i].permissionId.toString())
} }
} }
this.$set(this.dataDialog.dataScopeType[index], this.dataDialog.dataScopeType[index].permission_id, row.permission_id) this.$set(this.dataDialog.dataScopeType[index], this.dataDialog.dataScopeType[index].permissionId, row.permissionId)
this.rowData = {} this.rowData = {}
this.deptIds = [] this.deptIds = []
this.userIds = [] this.userIds = []
if (row.permission_id == '1601040560293023744') { // 选择用户 console.log(row)
if (row.permissionId == '1605129738328870912') { // 选择用户
this.userIds = this.dataDialog.dataScopeType[index].users this.userIds = this.dataDialog.dataScopeType[index].users
this.rowData = row this.rowData = row
this.relevanceUser = true this.relevanceUser = true
} else if (row.permission_id == '1601040621190123520') { // 选择部门 } else if (row.permissionId == '1605129882164137984') { // 选择部门
this.deptIds = this.dataDialog.dataScopeType[index].depts this.deptIds = this.dataDialog.dataScopeType[index].depts
this.rowData = row this.rowData = row
this.relevanceDept = true this.relevanceDept = true
} else if (row.permission_id == '1601038030326599680') { // 自身 } else if (row.permissionId == '1605128919449735168') { // 自身
const param = { const param = {
user_id: this.dataDialog.user_id userId: this.dataDialog.userId
} }
this.dataDialog.dataScopeType[index].users = [] this.dataDialog.dataScopeType[index].users = []
this.dataDialog.dataScopeType[index].users.push(param) this.dataDialog.dataScopeType[index].users.push(param)
@@ -746,7 +748,7 @@ export default {
}, },
selectUsers(row) { // row对话框传来的数据 selectUsers(row) { // row对话框传来的数据
for (var i = 0; i < this.dataDialog.dataScopeType.length; i++) { for (var i = 0; i < this.dataDialog.dataScopeType.length; i++) {
if (this.dataDialog.dataScopeType[i].dict_id == this.rowData.dict_id) { if (this.dataDialog.dataScopeType[i].dictId == this.rowData.dictId) {
if (this.dataDialog.dataScopeType[i].depts != undefined && this.dataDialog.dataScopeType[i].depts.length > 0) this.dataDialog.dataScopeType[i].depts = [] if (this.dataDialog.dataScopeType[i].depts != undefined && this.dataDialog.dataScopeType[i].depts.length > 0) this.dataDialog.dataScopeType[i].depts = []
this.dataDialog.dataScopeType[i].users = row this.dataDialog.dataScopeType[i].users = row
break break
@@ -756,7 +758,7 @@ export default {
}, },
selectDepts(row) { selectDepts(row) {
for (var i = 0; i < this.dataDialog.dataScopeType.length; i++) { for (var i = 0; i < this.dataDialog.dataScopeType.length; i++) {
if (this.dataDialog.dataScopeType[i].dict_id == this.rowData.dict_id) { if (this.dataDialog.dataScopeType[i].dictId == this.rowData.dictId) {
if (this.dataDialog.dataScopeType[i].users != undefined && this.dataDialog.dataScopeType[i].users.length > 0) this.dataDialog.dataScopeType[i].users = [] if (this.dataDialog.dataScopeType[i].users != undefined && this.dataDialog.dataScopeType[i].users.length > 0) this.dataDialog.dataScopeType[i].users = []
this.dataDialog.dataScopeType[i].depts = row this.dataDialog.dataScopeType[i].depts = row
break break
@@ -769,9 +771,10 @@ export default {
}, },
savePermise() { savePermise() {
const param = { const param = {
user_id: this.dataDialog.user_id, userId: this.dataDialog.userId,
datas: this.multipleSelection datas: this.multipleSelection
} }
console.log('param', param)
crudDataPermission.saveDataPermission(param).then(res => { crudDataPermission.saveDataPermission(param).then(res => {
this.dataPerm = false this.dataPerm = false
this.crud.notify('添加数据权限成功', CRUD.NOTIFICATION_TYPE.SUCCESS) this.crud.notify('添加数据权限成功', CRUD.NOTIFICATION_TYPE.SUCCESS)
@@ -861,12 +864,12 @@ export default {
}, },
showDatas(row) { showDatas(row) {
const param = { const param = {
user_id: this.dataDialog.user_id, userId: this.dataDialog.userId,
permission_scope_type: row.value permissionScopeType: row.value
} }
// crudDataPermission.getDataDetail(param).then(res => { crudDataPermission.getDataDetail(param).then(res => {
// this.dataPermissions = res this.dataPermissions = res
// }) })
this.showData = true this.showData = true
} }
} }