mirror of
				https://github.com/continew-org/continew-admin.git
				synced 2025-10-31 10:57:13 +08:00 
			
		
		
		
	优化:角色新增类型字段,用于标识角色是系统内置或自定义
1.系统内置角色不允许禁用、删除、修改角色编码和角色数据权限 2.删除角色时,自动删除角色和菜单关联、自动删除角色和部门关联
This commit is contained in:
		| @@ -22,6 +22,7 @@ import com.baomidou.mybatisplus.annotation.TableName; | |||||||
|  |  | ||||||
| import top.charles7c.cnadmin.common.base.BaseDO; | import top.charles7c.cnadmin.common.base.BaseDO; | ||||||
| import top.charles7c.cnadmin.common.enums.DataScopeEnum; | import top.charles7c.cnadmin.common.enums.DataScopeEnum; | ||||||
|  | import top.charles7c.cnadmin.common.enums.DataTypeEnum; | ||||||
| import top.charles7c.cnadmin.common.enums.DisEnableStatusEnum; | import top.charles7c.cnadmin.common.enums.DisEnableStatusEnum; | ||||||
|  |  | ||||||
| /** | /** | ||||||
| @@ -65,4 +66,9 @@ public class RoleDO extends BaseDO { | |||||||
|      * 状态(1:启用,2:禁用) |      * 状态(1:启用,2:禁用) | ||||||
|      */ |      */ | ||||||
|     private DisEnableStatusEnum status; |     private DisEnableStatusEnum status; | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * 类型(1:系统内置,2:自定义) | ||||||
|  |      */ | ||||||
|  |     private DataTypeEnum type; | ||||||
| } | } | ||||||
|   | |||||||
| @@ -16,6 +16,7 @@ | |||||||
|  |  | ||||||
| package top.charles7c.cnadmin.system.model.request; | package top.charles7c.cnadmin.system.model.request; | ||||||
|  |  | ||||||
|  | import java.util.ArrayList; | ||||||
| import java.util.List; | import java.util.List; | ||||||
|  |  | ||||||
| import javax.validation.constraints.NotBlank; | import javax.validation.constraints.NotBlank; | ||||||
| @@ -74,7 +75,7 @@ public class RoleRequest extends BaseRequest { | |||||||
|      * 功能权限:菜单 ID 列表 |      * 功能权限:菜单 ID 列表 | ||||||
|      */ |      */ | ||||||
|     @Schema(description = "功能权限:菜单 ID 列表") |     @Schema(description = "功能权限:菜单 ID 列表") | ||||||
|     private List<Long> menuIds; |     private List<Long> menuIds = new ArrayList<>(); | ||||||
|  |  | ||||||
|     /** |     /** | ||||||
|      * 数据权限(1:全部数据权限,2:本部门及以下数据权限,3:本部门数据权限,4:仅本人数据权限,5:自定义数据权限) |      * 数据权限(1:全部数据权限,2:本部门及以下数据权限,3:本部门数据权限,4:仅本人数据权限,5:自定义数据权限) | ||||||
| @@ -87,7 +88,7 @@ public class RoleRequest extends BaseRequest { | |||||||
|      * 权限范围:部门 ID 列表 |      * 权限范围:部门 ID 列表 | ||||||
|      */ |      */ | ||||||
|     @Schema(description = "权限范围:部门 ID 列表") |     @Schema(description = "权限范围:部门 ID 列表") | ||||||
|     private List<Long> deptIds; |     private List<Long> deptIds = new ArrayList<>(); | ||||||
|  |  | ||||||
|     /** |     /** | ||||||
|      * 状态(1:启用,2:禁用) |      * 状态(1:启用,2:禁用) | ||||||
|   | |||||||
| @@ -28,6 +28,7 @@ import com.alibaba.excel.annotation.ExcelProperty; | |||||||
| import top.charles7c.cnadmin.common.base.BaseDetailVO; | import top.charles7c.cnadmin.common.base.BaseDetailVO; | ||||||
| import top.charles7c.cnadmin.common.config.easyexcel.ExcelBaseEnumConverter; | import top.charles7c.cnadmin.common.config.easyexcel.ExcelBaseEnumConverter; | ||||||
| import top.charles7c.cnadmin.common.enums.DataScopeEnum; | import top.charles7c.cnadmin.common.enums.DataScopeEnum; | ||||||
|  | import top.charles7c.cnadmin.common.enums.DataTypeEnum; | ||||||
| import top.charles7c.cnadmin.common.enums.DisEnableStatusEnum; | import top.charles7c.cnadmin.common.enums.DisEnableStatusEnum; | ||||||
|  |  | ||||||
| /** | /** | ||||||
| @@ -78,6 +79,13 @@ public class RoleDetailVO extends BaseDetailVO { | |||||||
|     @ExcelProperty(value = "状态", converter = ExcelBaseEnumConverter.class) |     @ExcelProperty(value = "状态", converter = ExcelBaseEnumConverter.class) | ||||||
|     private DisEnableStatusEnum status; |     private DisEnableStatusEnum status; | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * 类型(1:系统内置,2:自定义) | ||||||
|  |      */ | ||||||
|  |     @Schema(description = "类型(1:系统内置,2:自定义)") | ||||||
|  |     @ExcelProperty(value = "类型", converter = ExcelBaseEnumConverter.class) | ||||||
|  |     private DataTypeEnum type; | ||||||
|  |  | ||||||
|     /** |     /** | ||||||
|      * 描述 |      * 描述 | ||||||
|      */ |      */ | ||||||
| @@ -96,4 +104,9 @@ public class RoleDetailVO extends BaseDetailVO { | |||||||
|      */ |      */ | ||||||
|     @Schema(description = "权限范围:部门 ID 列表") |     @Schema(description = "权限范围:部门 ID 列表") | ||||||
|     private List<Long> deptIds; |     private List<Long> deptIds; | ||||||
|  |  | ||||||
|  |     @Override | ||||||
|  |     public Boolean getDisabled() { | ||||||
|  |         return DataTypeEnum.SYSTEM.equals(type); | ||||||
|  |     } | ||||||
| } | } | ||||||
|   | |||||||
| @@ -22,8 +22,8 @@ import lombok.experimental.Accessors; | |||||||
| import io.swagger.v3.oas.annotations.media.Schema; | import io.swagger.v3.oas.annotations.media.Schema; | ||||||
|  |  | ||||||
| import top.charles7c.cnadmin.common.base.BaseVO; | import top.charles7c.cnadmin.common.base.BaseVO; | ||||||
| import top.charles7c.cnadmin.common.constant.SysConsts; |  | ||||||
| import top.charles7c.cnadmin.common.enums.DataScopeEnum; | import top.charles7c.cnadmin.common.enums.DataScopeEnum; | ||||||
|  | import top.charles7c.cnadmin.common.enums.DataTypeEnum; | ||||||
| import top.charles7c.cnadmin.common.enums.DisEnableStatusEnum; | import top.charles7c.cnadmin.common.enums.DisEnableStatusEnum; | ||||||
|  |  | ||||||
| /** | /** | ||||||
| @@ -69,6 +69,12 @@ public class RoleVO extends BaseVO { | |||||||
|     @Schema(description = "状态(1:启用,2:禁用)") |     @Schema(description = "状态(1:启用,2:禁用)") | ||||||
|     private DisEnableStatusEnum status; |     private DisEnableStatusEnum status; | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * 类型(1:系统内置,2:自定义) | ||||||
|  |      */ | ||||||
|  |     @Schema(description = "类型(1:系统内置,2:自定义)") | ||||||
|  |     private DataTypeEnum type; | ||||||
|  |  | ||||||
|     /** |     /** | ||||||
|      * 描述 |      * 描述 | ||||||
|      */ |      */ | ||||||
| @@ -77,6 +83,6 @@ public class RoleVO extends BaseVO { | |||||||
|  |  | ||||||
|     @Override |     @Override | ||||||
|     public Boolean getDisabled() { |     public Boolean getDisabled() { | ||||||
|         return SysConsts.ADMIN_ROLE_CODE.equals(code); |         return DataTypeEnum.SYSTEM.equals(type); | ||||||
|     } |     } | ||||||
| } | } | ||||||
|   | |||||||
| @@ -52,4 +52,12 @@ public interface RoleDeptService { | |||||||
|      *            部门 ID 列表 |      *            部门 ID 列表 | ||||||
|      */ |      */ | ||||||
|     void deleteByDeptIds(List<Long> deptIds); |     void deleteByDeptIds(List<Long> deptIds); | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * 根据角色 ID 删除 | ||||||
|  |      * | ||||||
|  |      * @param roleIds | ||||||
|  |      *            角色 ID 列表 | ||||||
|  |      */ | ||||||
|  |     void deleteByRoleIds(List<Long> roleIds); | ||||||
| } | } | ||||||
| @@ -44,4 +44,12 @@ public interface RoleMenuService { | |||||||
|      * @return 菜单 ID 列表 |      * @return 菜单 ID 列表 | ||||||
|      */ |      */ | ||||||
|     List<Long> listMenuIdByRoleIds(List<Long> roleIds); |     List<Long> listMenuIdByRoleIds(List<Long> roleIds); | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * 根据角色 ID 删除 | ||||||
|  |      * | ||||||
|  |      * @param roleIds | ||||||
|  |      *            角色 ID 列表 | ||||||
|  |      */ | ||||||
|  |     void deleteByRoleIds(List<Long> roleIds); | ||||||
| } | } | ||||||
| @@ -23,8 +23,6 @@ import lombok.RequiredArgsConstructor; | |||||||
|  |  | ||||||
| import org.springframework.stereotype.Service; | import org.springframework.stereotype.Service; | ||||||
|  |  | ||||||
| import cn.hutool.core.collection.CollUtil; |  | ||||||
|  |  | ||||||
| import top.charles7c.cnadmin.system.mapper.RoleDeptMapper; | import top.charles7c.cnadmin.system.mapper.RoleDeptMapper; | ||||||
| import top.charles7c.cnadmin.system.model.entity.RoleDeptDO; | import top.charles7c.cnadmin.system.model.entity.RoleDeptDO; | ||||||
| import top.charles7c.cnadmin.system.service.RoleDeptService; | import top.charles7c.cnadmin.system.service.RoleDeptService; | ||||||
| @@ -43,9 +41,6 @@ public class RoleDeptServiceImpl implements RoleDeptService { | |||||||
|  |  | ||||||
|     @Override |     @Override | ||||||
|     public void save(List<Long> deptIds, Long roleId) { |     public void save(List<Long> deptIds, Long roleId) { | ||||||
|         if (CollUtil.isEmpty(deptIds)) { |  | ||||||
|             return; |  | ||||||
|         } |  | ||||||
|         // 删除原有关联 |         // 删除原有关联 | ||||||
|         roleDeptMapper.lambdaUpdate().eq(RoleDeptDO::getRoleId, roleId).remove(); |         roleDeptMapper.lambdaUpdate().eq(RoleDeptDO::getRoleId, roleId).remove(); | ||||||
|         // 保存最新关联 |         // 保存最新关联 | ||||||
| @@ -63,4 +58,9 @@ public class RoleDeptServiceImpl implements RoleDeptService { | |||||||
|     public void deleteByDeptIds(List<Long> deptIds) { |     public void deleteByDeptIds(List<Long> deptIds) { | ||||||
|         roleDeptMapper.lambdaUpdate().in(RoleDeptDO::getDeptId, deptIds).remove(); |         roleDeptMapper.lambdaUpdate().in(RoleDeptDO::getDeptId, deptIds).remove(); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|  |     @Override | ||||||
|  |     public void deleteByRoleIds(List<Long> roleIds) { | ||||||
|  |         roleDeptMapper.lambdaUpdate().in(RoleDeptDO::getRoleId, roleIds).remove(); | ||||||
|  |     } | ||||||
| } | } | ||||||
|   | |||||||
| @@ -44,9 +44,6 @@ public class RoleMenuServiceImpl implements RoleMenuService { | |||||||
|  |  | ||||||
|     @Override |     @Override | ||||||
|     public void save(List<Long> menuIds, Long roleId) { |     public void save(List<Long> menuIds, Long roleId) { | ||||||
|         if (CollUtil.isEmpty(menuIds)) { |  | ||||||
|             return; |  | ||||||
|         } |  | ||||||
|         // 删除原有关联 |         // 删除原有关联 | ||||||
|         roleMenuMapper.lambdaUpdate().eq(RoleMenuDO::getRoleId, roleId).remove(); |         roleMenuMapper.lambdaUpdate().eq(RoleMenuDO::getRoleId, roleId).remove(); | ||||||
|         // 保存最新关联 |         // 保存最新关联 | ||||||
| @@ -62,4 +59,9 @@ public class RoleMenuServiceImpl implements RoleMenuService { | |||||||
|         } |         } | ||||||
|         return roleMenuMapper.selectMenuIdByRoleIds(roleIds); |         return roleMenuMapper.selectMenuIdByRoleIds(roleIds); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|  |     @Override | ||||||
|  |     public void deleteByRoleIds(List<Long> roleIds) { | ||||||
|  |         roleMenuMapper.lambdaUpdate().in(RoleMenuDO::getRoleId, roleIds).remove(); | ||||||
|  |     } | ||||||
| } | } | ||||||
|   | |||||||
| @@ -16,10 +16,7 @@ | |||||||
|  |  | ||||||
| package top.charles7c.cnadmin.system.service.impl; | package top.charles7c.cnadmin.system.service.impl; | ||||||
|  |  | ||||||
| import java.util.ArrayList; | import java.util.*; | ||||||
| import java.util.HashSet; |  | ||||||
| import java.util.List; |  | ||||||
| import java.util.Set; |  | ||||||
| import java.util.stream.Collectors; | import java.util.stream.Collectors; | ||||||
|  |  | ||||||
| import lombok.RequiredArgsConstructor; | import lombok.RequiredArgsConstructor; | ||||||
| @@ -32,6 +29,7 @@ import cn.hutool.core.collection.CollUtil; | |||||||
|  |  | ||||||
| import top.charles7c.cnadmin.common.base.BaseServiceImpl; | import top.charles7c.cnadmin.common.base.BaseServiceImpl; | ||||||
| import top.charles7c.cnadmin.common.constant.SysConsts; | import top.charles7c.cnadmin.common.constant.SysConsts; | ||||||
|  | import top.charles7c.cnadmin.common.enums.DataTypeEnum; | ||||||
| import top.charles7c.cnadmin.common.enums.DisEnableStatusEnum; | import top.charles7c.cnadmin.common.enums.DisEnableStatusEnum; | ||||||
| import top.charles7c.cnadmin.common.model.dto.RoleDTO; | import top.charles7c.cnadmin.common.model.dto.RoleDTO; | ||||||
| import top.charles7c.cnadmin.common.model.vo.LabelValueVO; | import top.charles7c.cnadmin.common.model.vo.LabelValueVO; | ||||||
| @@ -86,20 +84,42 @@ public class RoleServiceImpl extends BaseServiceImpl<RoleMapper, RoleDO, RoleVO, | |||||||
|         CheckUtils.throwIf(() -> this.checkNameExists(name, id), String.format("修改失败,'%s'已存在", name)); |         CheckUtils.throwIf(() -> this.checkNameExists(name, id), String.format("修改失败,'%s'已存在", name)); | ||||||
|         String code = request.getCode(); |         String code = request.getCode(); | ||||||
|         CheckUtils.throwIf(() -> this.checkCodeExists(code, id), String.format("修改失败,'%s'已存在", code)); |         CheckUtils.throwIf(() -> this.checkCodeExists(code, id), String.format("修改失败,'%s'已存在", code)); | ||||||
|  |         RoleDO oldRole = this.getById(id); | ||||||
|  |         if (DataTypeEnum.SYSTEM.equals(oldRole.getType())) { | ||||||
|  |             CheckUtils.throwIf(() -> DisEnableStatusEnum.DISABLE.equals(request.getStatus()), | ||||||
|  |                 String.format("'%s' 是系统内置角色,不允许禁用", oldRole.getName())); | ||||||
|  |             CheckUtils.throwIfNotEqual(request.getCode(), oldRole.getCode(), | ||||||
|  |                 String.format("'%s' 是系统内置角色,不允许修改角色编码", oldRole.getName())); | ||||||
|  |             CheckUtils.throwIfNotEqual(request.getDataScope(), oldRole.getDataScope(), | ||||||
|  |                 String.format("'%s' 是系统内置角色,不允许修改角色数据权限", oldRole.getName())); | ||||||
|  |         } | ||||||
|  |  | ||||||
|         // 更新信息 |         // 更新信息 | ||||||
|         super.update(request, id); |         super.update(request, id); | ||||||
|  |         if (!SysConsts.ADMIN_ROLE_CODE.equals(oldRole.getCode())) { | ||||||
|             // 保存角色和菜单关联 |             // 保存角色和菜单关联 | ||||||
|             roleMenuService.save(request.getMenuIds(), id); |             roleMenuService.save(request.getMenuIds(), id); | ||||||
|             // 保存角色和部门关联 |             // 保存角色和部门关联 | ||||||
|             roleDeptService.save(request.getDeptIds(), id); |             roleDeptService.save(request.getDeptIds(), id); | ||||||
|         } |         } | ||||||
|  |     } | ||||||
|  |  | ||||||
|     @Override |     @Override | ||||||
|     @Transactional(rollbackFor = Exception.class) |     @Transactional(rollbackFor = Exception.class) | ||||||
|     public void delete(List<Long> ids) { |     public void delete(List<Long> ids) { | ||||||
|  |         List<RoleDO> list = | ||||||
|  |             baseMapper.lambdaQuery().select(RoleDO::getName, RoleDO::getType).in(RoleDO::getId, ids).list(); | ||||||
|  |         Optional<RoleDO> isSystemData = list.stream().filter(r -> DataTypeEnum.SYSTEM.equals(r.getType())).findFirst(); | ||||||
|  |         CheckUtils.throwIf(isSystemData::isPresent, | ||||||
|  |             String.format("所选角色 '%s' 是系统内置角色,不允许删除", isSystemData.orElseGet(RoleDO::new).getName())); | ||||||
|         CheckUtils.throwIf(() -> userRoleService.countByRoleIds(ids) > 0, "所选角色存在用户关联,请解除关联后重试"); |         CheckUtils.throwIf(() -> userRoleService.countByRoleIds(ids) > 0, "所选角色存在用户关联,请解除关联后重试"); | ||||||
|  |  | ||||||
|  |         // 删除角色 | ||||||
|         super.delete(ids); |         super.delete(ids); | ||||||
|  |         // 删除角色和菜单关联 | ||||||
|  |         roleMenuService.deleteByRoleIds(ids); | ||||||
|  |         // 删除角色和部门关联 | ||||||
|  |         roleDeptService.deleteByRoleIds(ids); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     @Override |     @Override | ||||||
|   | |||||||
| @@ -13,6 +13,7 @@ export interface RoleRecord { | |||||||
|   dataScope: number; |   dataScope: number; | ||||||
|   deptIds?: Array<string>; |   deptIds?: Array<string>; | ||||||
|   status?: number; |   status?: number; | ||||||
|  |   type?: number; | ||||||
|   createUserString?: string; |   createUserString?: string; | ||||||
|   createTime?: string; |   createTime?: string; | ||||||
|   updateUserString?: string; |   updateUserString?: string; | ||||||
|   | |||||||
| @@ -116,7 +116,7 @@ | |||||||
|       > |       > | ||||||
|         <template #columns> |         <template #columns> | ||||||
|           <a-table-column title="ID" data-index="id" /> |           <a-table-column title="ID" data-index="id" /> | ||||||
|           <a-table-column title="角色名称" data-index="name"> |           <a-table-column title="角色名称" data-index="name" :width="130"> | ||||||
|             <template #cell="{ record }"> |             <template #cell="{ record }"> | ||||||
|               <a-link @click="toDetail(record.id)">{{ |               <a-link @click="toDetail(record.id)">{{ | ||||||
|                 record.name |                 record.name | ||||||
| @@ -124,7 +124,7 @@ | |||||||
|             </template> |             </template> | ||||||
|           </a-table-column> |           </a-table-column> | ||||||
|           <a-table-column title="角色编码" data-index="code" /> |           <a-table-column title="角色编码" data-index="code" /> | ||||||
|           <a-table-column title="数据权限"> |           <a-table-column title="数据权限" :width="130"> | ||||||
|             <template #cell="{ record }"> |             <template #cell="{ record }"> | ||||||
|               <span v-if="record.dataScope === 1">全部数据权限</span> |               <span v-if="record.dataScope === 1">全部数据权限</span> | ||||||
|               <span v-else-if="record.dataScope === 2">本部门及以下数据权限</span> |               <span v-else-if="record.dataScope === 2">本部门及以下数据权限</span> | ||||||
| @@ -149,8 +149,13 @@ | |||||||
|               /> |               /> | ||||||
|             </template> |             </template> | ||||||
|           </a-table-column> |           </a-table-column> | ||||||
|           <a-table-column title="描述" data-index="description" /> |           <a-table-column title="类型" align="center"> | ||||||
|           <a-table-column title="创建人" data-index="createUserString" /> |             <template #cell="{ record }"> | ||||||
|  |               <a-tag v-if="record.type === 1" color="red">系统内置</a-tag> | ||||||
|  |               <a-tag v-else color="arcoblue">自定义</a-tag> | ||||||
|  |             </template> | ||||||
|  |           </a-table-column> | ||||||
|  |           <a-table-column title="描述" data-index="description" tooltip /> | ||||||
|           <a-table-column title="创建时间" data-index="createTime" /> |           <a-table-column title="创建时间" data-index="createTime" /> | ||||||
|           <a-table-column |           <a-table-column | ||||||
|             v-if="checkPermission(['system:role:update', 'system:role:delete'])" |             v-if="checkPermission(['system:role:update', 'system:role:delete'])" | ||||||
| @@ -163,7 +168,6 @@ | |||||||
|                 type="text" |                 type="text" | ||||||
|                 size="small" |                 size="small" | ||||||
|                 title="修改" |                 title="修改" | ||||||
|                 :disabled="record.disabled" |  | ||||||
|                 @click="toUpdate(record.id)" |                 @click="toUpdate(record.id)" | ||||||
|               > |               > | ||||||
|                 <template #icon><icon-edit /></template>修改 |                 <template #icon><icon-edit /></template>修改 | ||||||
| @@ -205,7 +209,7 @@ | |||||||
|             <a-form-item label="角色名称" field="name"> |             <a-form-item label="角色名称" field="name"> | ||||||
|               <a-input v-model="form.name" placeholder="请输入角色名称" /> |               <a-input v-model="form.name" placeholder="请输入角色名称" /> | ||||||
|             </a-form-item> |             </a-form-item> | ||||||
|             <a-form-item label="角色编码" field="code"> |             <a-form-item label="角色编码" field="code" :disabled="form.disabled"> | ||||||
|               <a-input v-model="form.code" placeholder="请输入角色编码" /> |               <a-input v-model="form.code" placeholder="请输入角色编码" /> | ||||||
|             </a-form-item> |             </a-form-item> | ||||||
|             <a-form-item label="角色排序" field="sort"> |             <a-form-item label="角色排序" field="sort"> | ||||||
| @@ -230,7 +234,7 @@ | |||||||
|           </fieldset> |           </fieldset> | ||||||
|           <fieldset> |           <fieldset> | ||||||
|             <legend>功能权限</legend> |             <legend>功能权限</legend> | ||||||
|             <a-form-item label="功能权限"> |             <a-form-item label="功能权限" :disabled="form.disabled"> | ||||||
|               <a-space style="margin-top: 2px"> |               <a-space style="margin-top: 2px"> | ||||||
|                 <a-checkbox v-model="menuExpandAll" @change="handleExpandAll('menu')">展开/折叠</a-checkbox> |                 <a-checkbox v-model="menuExpandAll" @change="handleExpandAll('menu')">展开/折叠</a-checkbox> | ||||||
|                 <a-checkbox v-model="menuCheckAll" @change="handleCheckAll('menu')">全选/全不选</a-checkbox> |                 <a-checkbox v-model="menuCheckAll" @change="handleCheckAll('menu')">全选/全不选</a-checkbox> | ||||||
| @@ -252,14 +256,14 @@ | |||||||
|           </fieldset> |           </fieldset> | ||||||
|           <fieldset> |           <fieldset> | ||||||
|             <legend>数据权限</legend> |             <legend>数据权限</legend> | ||||||
|             <a-form-item label="数据权限" field="dataScope"> |             <a-form-item label="数据权限" field="dataScope" :disabled="form.disabled"> | ||||||
|               <a-select |               <a-select | ||||||
|                 v-model="form.dataScope" |                 v-model="form.dataScope" | ||||||
|                 :options="DataScopeEnum" |                 :options="DataScopeEnum" | ||||||
|                 placeholder="请选择数据权限" |                 placeholder="请选择数据权限" | ||||||
|               /> |               /> | ||||||
|             </a-form-item> |             </a-form-item> | ||||||
|             <a-form-item v-if="form.dataScope === 5" label="权限范围"> |             <a-form-item v-if="form.dataScope === 5" label="权限范围" :disabled="form.disabled"> | ||||||
|               <a-space style="margin-top: 2px"> |               <a-space style="margin-top: 2px"> | ||||||
|                 <a-checkbox v-model="deptExpandAll" @change="handleExpandAll('dept')">展开/折叠</a-checkbox> |                 <a-checkbox v-model="deptExpandAll" @change="handleExpandAll('dept')">展开/折叠</a-checkbox> | ||||||
|                 <a-checkbox v-model="deptCheckAll" @change="handleCheckAll('dept')">全选/全不选</a-checkbox> |                 <a-checkbox v-model="deptCheckAll" @change="handleCheckAll('dept')">全选/全不选</a-checkbox> | ||||||
| @@ -565,6 +569,7 @@ | |||||||
|       status: 1, |       status: 1, | ||||||
|       menuIds: [], |       menuIds: [], | ||||||
|       deptIds: [], |       deptIds: [], | ||||||
|  |       disabled: false, | ||||||
|     }; |     }; | ||||||
|     proxy.$refs.formRef?.resetFields(); |     proxy.$refs.formRef?.resetFields(); | ||||||
|   }; |   }; | ||||||
|   | |||||||
| @@ -45,8 +45,8 @@ INSERT IGNORE INTO `sys_dept` VALUES (7, '研发一组', 3, '0,1,2,3', NULL, 1, | |||||||
| INSERT IGNORE INTO `sys_dept` VALUES (8, '研发二组', 3, '0,1,2,3', NULL, 2, 2, 2, 1, NOW(), 1, NOW()); | INSERT IGNORE INTO `sys_dept` VALUES (8, '研发二组', 3, '0,1,2,3', NULL, 2, 2, 2, 1, NOW(), 1, NOW()); | ||||||
|  |  | ||||||
| -- 初始化默认角色 | -- 初始化默认角色 | ||||||
| INSERT IGNORE INTO `sys_role` VALUES (1, '超级管理员', 'admin', 1, '系统初始角色', 1, 1, 1, NOW(), 1, NOW()); | INSERT IGNORE INTO `sys_role` VALUES (1, '超级管理员', 'admin', 1, '系统初始角色', 1, 1, 1, 1, NOW(), 1, NOW()); | ||||||
| INSERT IGNORE INTO `sys_role` VALUES (2, '测试人员', 'test', 5, '系统初始角色', 2, 1, 1, NOW(), 1, NOW()); | INSERT IGNORE INTO `sys_role` VALUES (2, '测试人员', 'test', 5, NULL, 2, 1, 2, 1, NOW(), 1, NOW()); | ||||||
|  |  | ||||||
| -- 初始化默认用户:admin/admin123;test/123456 | -- 初始化默认用户:admin/admin123;test/123456 | ||||||
| INSERT IGNORE INTO `sys_user` VALUES (1, 'admin', '超级管理员', '9802815bcc5baae7feb1ae0d0566baf2', 1, 'charles7c@126.com', '18888888888', NULL, '系统初始用户', 1, NOW(), 1, 1, NOW(), 1, NOW()); | INSERT IGNORE INTO `sys_user` VALUES (1, 'admin', '超级管理员', '9802815bcc5baae7feb1ae0d0566baf2', 1, 'charles7c@126.com', '18888888888', NULL, '系统初始用户', 1, NOW(), 1, 1, NOW(), 1, NOW()); | ||||||
|   | |||||||
| @@ -53,6 +53,7 @@ CREATE TABLE IF NOT EXISTS `sys_role` ( | |||||||
|     `description` varchar(512) DEFAULT NULL COMMENT '描述', |     `description` varchar(512) DEFAULT NULL COMMENT '描述', | ||||||
|     `sort` int(11) UNSIGNED DEFAULT 999 COMMENT '角色排序', |     `sort` int(11) UNSIGNED DEFAULT 999 COMMENT '角色排序', | ||||||
|     `status` tinyint(1) UNSIGNED DEFAULT 1 COMMENT '状态(1:启用,2:禁用)', |     `status` tinyint(1) UNSIGNED DEFAULT 1 COMMENT '状态(1:启用,2:禁用)', | ||||||
|  |     `type` tinyint(1) UNSIGNED DEFAULT 2 COMMENT '类型(1:系统内置,2:自定义)', | ||||||
|     `create_user` bigint(20) UNSIGNED NOT NULL COMMENT '创建人', |     `create_user` bigint(20) UNSIGNED NOT NULL COMMENT '创建人', | ||||||
|     `create_time` datetime NOT NULL COMMENT '创建时间', |     `create_time` datetime NOT NULL COMMENT '创建时间', | ||||||
|     `update_user` bigint(20) UNSIGNED NOT NULL COMMENT '修改人', |     `update_user` bigint(20) UNSIGNED NOT NULL COMMENT '修改人', | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user