优化:角色新增类型字段,用于标识角色是系统内置或自定义
1.系统内置角色不允许禁用、删除、修改角色编码和角色数据权限 2.删除角色时,自动删除角色和菜单关联、自动删除角色和部门关联
This commit is contained in:
parent
b345e4450d
commit
ff24f3ba78
@ -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 '修改人',
|
||||||
|
Loading…
Reference in New Issue
Block a user