Browse Source

🎟 构建平台业务模块

master
wangxiang 3 years ago
parent
commit
dce35040c5
  1. 15
      kicc-platform/kicc-platform-api/kicc-system-api/src/main/java/com/cloud/kicc/system/api/entity/Role.java
  2. 22
      kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/java/com/cloud/kicc/system/controller/RoleController.java
  3. 1
      kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/java/com/cloud/kicc/system/mapper/RoleMapper.java
  4. 15
      kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/java/com/cloud/kicc/system/service/RoleService.java
  5. 97
      kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/java/com/cloud/kicc/system/service/impl/RoleServiceImpl.java
  6. 2
      kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/java/com/cloud/kicc/system/service/impl/UserServiceImpl.java
  7. 40
      kicc-ui/src/api/model/baseModel.ts
  8. 6
      kicc-ui/src/api/system/menu.ts
  9. 4
      kicc-ui/src/api/system/model/menuModel.ts
  10. 11
      kicc-ui/src/api/system/model/roleModel.ts
  11. 10
      kicc-ui/src/api/system/role.ts
  12. 4
      kicc-ui/src/views/system/menu/MenuModal.vue
  13. 2
      kicc-ui/src/views/system/menu/menu.data.ts
  14. 90
      kicc-ui/src/views/system/role/RoleDrawer.vue
  15. 108
      kicc-ui/src/views/system/role/role.data.ts
  16. 4
      kicc-ui/src/views/system/user/user.data.ts

15
kicc-platform/kicc-platform-api/kicc-system-api/src/main/java/com/cloud/kicc/system/api/entity/Role.java

@ -52,23 +52,8 @@ public class Role extends CommonEntity {
*/ */
private String status; private String status;
/** 用户是否存在此角色标识 默认不存在 */
@TableField(exist = false)
private boolean flag = false;
@TableField(exist = false)
private List<Role> roles;
/** 角色组 */
@TableField(exist = false)
private String[] roleIds;
/** 菜单组 */ /** 菜单组 */
@TableField(exist = false) @TableField(exist = false)
private String[] menuIds; private String[] menuIds;
/** 机构(数据权限) */
@TableField(exist = false)
private String[] deptIds;
} }

22
kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/java/com/cloud/kicc/system/controller/RoleController.java

@ -3,16 +3,17 @@ package com.cloud.kicc.system.controller;
import cn.hutool.core.util.ArrayUtil; import cn.hutool.core.util.ArrayUtil;
import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil; import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.cloud.kicc.system.api.entity.Role;
import com.cloud.kicc.system.service.RoleService;
import com.cloud.kicc.common.core.api.R; import com.cloud.kicc.common.core.api.R;
import com.cloud.kicc.common.core.constant.AppConstants; import com.cloud.kicc.common.core.constant.AppConstants;
import com.cloud.kicc.common.core.util.PinyinUtil; import com.cloud.kicc.common.core.util.PinyinUtil;
import com.cloud.kicc.common.log.annotation.SysLog; import com.cloud.kicc.common.log.annotation.SysLog;
import com.cloud.kicc.system.api.entity.Role;
import com.cloud.kicc.system.service.RoleService;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
@ -34,10 +35,10 @@ public class RoleController {
private final RoleService roleService; private final RoleService roleService;
private QueryWrapper<Role> getQueryWrapper(Role role) { private LambdaQueryWrapper<Role> getQueryWrapper(Role role) {
return new QueryWrapper<Role>() return new LambdaQueryWrapper<Role>()
.like(StrUtil.isNotBlank(role.getName()), "name", role.getName()) .like(StrUtil.isNotBlank(role.getName()), Role::getName, role.getName())
.eq(StrUtil.isNotBlank(role.getCode()), "code", role.getCode()); .eq(StrUtil.isNotBlank(role.getCode()), Role::getCode, role.getCode());
} }
@GetMapping("/list") @GetMapping("/list")
@ -75,7 +76,9 @@ public class RoleController {
@PutMapping("/changeStatus") @PutMapping("/changeStatus")
@PreAuthorize("@pms.hasPermission('role_edit')") @PreAuthorize("@pms.hasPermission('role_edit')")
public R changeStatus(@RequestBody Role role) { public R changeStatus(@RequestBody Role role) {
roleService.update(new UpdateWrapper<Role>().eq("id", role.getId()).set("status", role.getStatus())); roleService.update(new LambdaUpdateWrapper<Role>()
.eq(Role::getId, role.getId())
.set(Role::getStatus, role.getStatus()));
return R.ok(); return R.ok();
} }
@ -83,7 +86,8 @@ public class RoleController {
@DeleteMapping("/remove/{id:[\\w,]+}") @DeleteMapping("/remove/{id:[\\w,]+}")
@PreAuthorize("@pms.hasPermission('role_del')") @PreAuthorize("@pms.hasPermission('role_del')")
public R remove(@PathVariable String[] id) { public R remove(@PathVariable String[] id) {
if(ArrayUtil.contains(id, "1")){ // todo: 防止管理员角色删除,暂时处理手段
if(ArrayUtil.contains(id, "1510536230140129280")){
return R.error("不允许删除管理员角色"); return R.error("不允许删除管理员角色");
} }
roleService.removeByIds(Arrays.asList(id)); roleService.removeByIds(Arrays.asList(id));

1
kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/java/com/cloud/kicc/system/mapper/RoleMapper.java

@ -14,6 +14,7 @@ import java.util.List;
* @Date: 2022/2/24 * @Date: 2022/2/24
*/ */
public interface RoleMapper extends BaseMapper<Role> { public interface RoleMapper extends BaseMapper<Role> {
/** /**
* 根据用户ID查询角色 * 根据用户ID查询角色
* *

15
kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/java/com/cloud/kicc/system/service/RoleService.java

@ -23,14 +23,6 @@ public interface RoleService extends IService<Role> {
*/ */
boolean insertRole(Role role); boolean insertRole(Role role);
/**
* 修改数据权限信息
*
* @param role 角色信息
* @return 结果
*/
boolean updatePerms(Role role);
/** /**
* 修改角色信息 * 修改角色信息
* *
@ -47,11 +39,4 @@ public interface RoleService extends IService<Role> {
*/ */
List<Role> selectMyRolesByUserId(String userId); List<Role> selectMyRolesByUserId(String userId);
/**
* 根据用户ID查询角色
*
* @param userId 用户ID
* @return 角色列表
*/
List<Role> selectRolesByUserId(String userId);
} }

97
kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/java/com/cloud/kicc/system/service/impl/RoleServiceImpl.java

@ -1,6 +1,7 @@
package com.cloud.kicc.system.service.impl; package com.cloud.kicc.system.service.impl;
import cn.hutool.core.util.StrUtil; import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.cloud.kicc.system.api.entity.Dept; import com.cloud.kicc.system.api.entity.Dept;
@ -31,89 +32,29 @@ import java.util.List;
@AllArgsConstructor @AllArgsConstructor
public class RoleServiceImpl extends ServiceImpl<RoleMapper, Role> implements RoleService { public class RoleServiceImpl extends ServiceImpl<RoleMapper, Role> implements RoleService {
private final RoleDeptService roleDeptService;
private final RoleMenuService roleMenuService; private final RoleMenuService roleMenuService;
private final DeptService deptService;
/**
* 新增保存角色信息
*
* @param role 角色信息
* @return 结果
*/
@Override @Override
@Transactional @Transactional(rollbackFor = Exception.class)
public boolean insertRole(Role role) { public boolean insertRole(Role role) {
// 新增角色信息 // 新增角色信息
baseMapper.insert(role); baseMapper.insert(role);
return insertRoleMenu(role); return insertRoleMenu(role);
} }
/**
* 修改数据权限信息
*
* @param role 角色信息
* @return 结果
*/
@Override
public boolean updatePerms(Role role) {
// 修改角色信息
baseMapper.updateById(role);
// 删除角色与部门关联
roleDeptService.remove(new QueryWrapper<RoleDept>().eq("role_id", role.getId()));
// 新增角色和部门信息(数据权限)
return insertRoleDept(role);
}
/**
* 新增角色部门信息(数据权限)
*
* @param role 角色对象
*/
public boolean insertRoleDept(Role role) {
boolean rows = true;
// 新增角色与部门(数据权限)管理
List<RoleDept> list = new ArrayList<RoleDept>();
for (String deptId : role.getDeptIds()) {
Dept dept = deptService.getById(deptId);
if (dept != null) {
RoleDept rd = new RoleDept();
rd.setRoleId(role.getId());
rd.setDeptId(deptId);
list.add(rd);
}
}
if (list.size() > 0) {
rows = roleDeptService.saveBatch(list);
}
return rows;
}
/**
* 修改保存角色信息
*
* @param role 角色信息
* @return 结果
*/
@Override @Override
public boolean updateRoleMenu(Role role) { public boolean updateRoleMenu(Role role) {
// 修改角色信息 // 修改角色信息
baseMapper.updateById(role); baseMapper.updateById(role);
// 删除角色与菜单关联 // 删除角色与菜单关联
roleMenuService.remove(new QueryWrapper<RoleMenu>().eq("role_id", role.getId())); roleMenuService.remove(new LambdaQueryWrapper<RoleMenu>().eq(RoleMenu::getRoleId, role.getId()));
return insertRoleMenu(role); return insertRoleMenu(role);
} }
/**
* 新增角色菜单信息
*
* @param role 角色对象
*/
public boolean insertRoleMenu(Role role) { public boolean insertRoleMenu(Role role) {
boolean rows = true; boolean rows = true;
// 新增用户与角色管理 // 新增用户与角色管理
List<RoleMenu> list = new ArrayList<RoleMenu>(); List<RoleMenu> list = new ArrayList();
for (String menuId : role.getMenuIds()) { for (String menuId : role.getMenuIds()) {
RoleMenu rm = new RoleMenu(); RoleMenu rm = new RoleMenu();
rm.setRoleId(role.getId()); rm.setRoleId(role.getId());
@ -126,39 +67,9 @@ public class RoleServiceImpl extends ServiceImpl<RoleMapper, Role> implements Ro
return rows; return rows;
} }
/**
* 根据用户ID查询角色
*
* @param userId 用户ID
* @return 角色列表
*/
@Override @Override
public List<Role> selectMyRolesByUserId(String userId) { public List<Role> selectMyRolesByUserId(String userId) {
return baseMapper.selectRolesByUserId(userId); return baseMapper.selectRolesByUserId(userId);
} }
/**
* 根据用户ID查询角色
*
* @param userId 用户ID
* @return 角色列表
*/
@Override
public List<Role> selectRolesByUserId(String userId) {
List<Role> roles = baseMapper.selectList(new QueryWrapper<>());
if (StrUtil.isEmptyIfStr(userId)) {
return roles;
} else {
List<Role> userRoles = baseMapper.selectRolesByUserId(userId);
for (Role role : roles) {
for (Role userRole : userRoles) {
if (role.getId() == userRole.getId()) {
role.setFlag(true);
break;
}
}
}
return roles;
}
}
} }

2
kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/java/com/cloud/kicc/system/service/impl/UserServiceImpl.java

@ -64,7 +64,7 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements Us
@Override @Override
public User getUserAuthority(User user) { public User getUserAuthority(User user) {
// 设置角色列表 // 设置角色列表
List<Role> roleList = roleService.selectRolesByUserId(user.getId()); List<Role> roleList = roleService.selectMyRolesByUserId(user.getId());
// 设置角色列表 (ID) // 设置角色列表 (ID)
List<String> roleIds = roleList.stream().map(Role::getId).collect(Collectors.toList()); List<String> roleIds = roleList.stream().map(Role::getId).collect(Collectors.toList());
user.setRoleIds(ArrayUtil.toArray(roleIds, String.class)); user.setRoleIds(ArrayUtil.toArray(roleIds, String.class));

40
kicc-ui/src/api/model/baseModel.ts

@ -1,5 +1,5 @@
/** 对应后端的Page */ /** 分页模型 */
export interface Page { export interface Page {
size: number; size: number;
current: number; current: number;
@ -7,10 +7,46 @@ export interface Page {
[key: string]: any; [key: string]: any;
} }
/** 对应后端的R */ /** 响应信息主体 */
export interface R<T extends any> { export interface R<T extends any> {
code: number; code: number;
msg: string; msg: string;
total: number; total: number;
data: T; data: T;
} }
/** 扩展安全框架用户信息 */
export interface KiccUser {
tenantId: string;
id: string;
deptId: string;
phone: string;
[key: string]: any;
}
/** 基础模型 */
export interface BaseEntity {
tenantId: string;
currentUser: KiccUser;
sqlFilter: string;
}
/** 通用模型 */
export interface CommonEntity {
createById: string;
createByName: string;
createTime: string;
updateById: string;
updateByName: string;
updateTime: string;
remarks: string;
}
/** 树结构模型 */
export interface TreeEntity<T extends any> {
parentId: string;
name: string;
sort: number;
children: T[]
}

6
kicc-ui/src/api/system/menu.ts

@ -10,13 +10,13 @@ enum Api {
} }
// 查询菜单列表 // 查询菜单列表
export const listMenu = (params?: MenuDto) => defHttp.get({ url: Api.list, params }); export const listMenu = (params?: Partial<MenuDto>) => defHttp.get({ url: Api.list, params });
// 新增菜单 // 新增菜单
export const addMenu = (params: Menu) => defHttp.post({ url: Api.add, data: params }); export const addMenu = (params: Partial<Menu>) => defHttp.post({ url: Api.add, data: params });
// 修改菜单 // 修改菜单
export const editMenu = (params: Menu) => defHttp.put({ url: Api.edit, data: params }); export const editMenu = (params: Partial<Menu>) => defHttp.put({ url: Api.edit, data: params });
// 查询菜单详细 // 查询菜单详细
export const getMenu = (params: { id: String }) => defHttp.get<Menu>({ url: `${Api.get}/${params.id}` }); export const getMenu = (params: { id: String }) => defHttp.get<Menu>({ url: `${Api.get}/${params.id}` });

4
kicc-ui/src/api/system/model/menuModel.ts

@ -1,11 +1,11 @@
// 引入基础包 // 引入基础包
import { Page, R } from '/@/api/model/baseModel'; import { Page, R, CommonEntity } from '/@/api/model/baseModel';
// 查询参数 // 查询参数
export type MenuDto = Page & Menu; export type MenuDto = Page & Menu;
// 菜单对象 // 菜单对象
export interface Menu { export interface Menu extends CommonEntity {
id: string; id: string;
name: string; name: string;
parentId: string; parentId: string;

11
kicc-ui/src/api/system/model/roleModel.ts

@ -1,23 +1,16 @@
// 引入基础包 // 引入基础包
import { Page, R } from '/@/api/model/baseModel'; import { CommonEntity, Page, R } from '/@/api/model/baseModel';
// 查询参数 // 查询参数
export type RoleDto = Page & Role; export type RoleDto = Page & Role;
// 角色对象 // 角色对象
export interface Role { export interface Role extends CommonEntity {
id: string; id: string;
name: string; name: string;
code: string; code: string;
sort: string; sort: string;
status: string; status: string;
createById: string;
createByName: string;
createTime: string;
updateById: string;
updateByName: string;
updateTime: string;
remarks: string;
[key: string]: any; [key: string]: any;
} }

10
kicc-ui/src/api/system/role.ts

@ -1,4 +1,4 @@
import { Role, RoleVo, RoleDto } from './model/roleModel'; import { Role, RoleDto } from './model/roleModel';
import { defHttp } from '/@/utils/http/axios'; import { defHttp } from '/@/utils/http/axios';
enum Api { enum Api {
@ -11,13 +11,13 @@ enum Api {
} }
// 查询角色列表 // 查询角色列表
export const listRole = (params?: RoleDto) => defHttp.get<RoleVo>({ url: Api.list, params }); export const listRole = (params?: Partial<RoleDto>) => defHttp.get({ url: Api.list, params });
// 新增角色 // 新增角色
export const addRole = (params: Role) => defHttp.post({ url: Api.add, data: params }); export const addRole = (params: Partial<Role>) => defHttp.post({ url: Api.add, data: params });
// 修改角色 // 修改角色
export const editRole = (params: Role) => defHttp.put({ url: Api.edit, data: params }); export const editRole = (params: Partial<Role>) => defHttp.put({ url: Api.edit, data: params });
// 查询角色详细 // 查询角色详细
export const getRole = (params: { id: String }) => defHttp.get<Role>({ url: `${Api.get}/${params.id}` }); export const getRole = (params: { id: String }) => defHttp.get<Role>({ url: `${Api.get}/${params.id}` });
@ -26,4 +26,4 @@ export const getRole = (params: { id: String }) => defHttp.get<Role>({ url: `${A
export const delRole = (params: { id: String }) => defHttp.delete({ url: `${Api.del}/${params.id}` }); export const delRole = (params: { id: String }) => defHttp.delete({ url: `${Api.del}/${params.id}` });
// 修改角色状态 // 修改角色状态
export const roleSetStatus = (params: Role) => defHttp.post({ url: Api.changeStatus, data: params }); export const changeStatus = (params: Partial<Role>) => defHttp.post({ url: Api.changeStatus, data: params });

4
kicc-ui/src/views/system/menu/MenuModal.vue

@ -1,6 +1,6 @@
<template> <template>
<BasicModal width="720px" <BasicModal v-bind="$attrs"
v-bind="$attrs" width="720px"
@ok="handleSubmit" @ok="handleSubmit"
@register="registerModal" @register="registerModal"
> >

2
kicc-ui/src/views/system/menu/menu.data.ts

@ -186,7 +186,7 @@ export const formSchema: FormSchema[] = [
}, },
{ {
field: 'sort', field: 'sort',
label: '显示排序', label: '菜单排序',
component: 'InputNumber', component: 'InputNumber',
componentProps: { componentProps: {
style: { width:'100%' }, style: { width:'100%' },

90
kicc-ui/src/views/system/role/RoleDrawer.vue

@ -1,21 +1,18 @@
<template> <template>
<BasicDrawer <BasicDrawer v-bind="$attrs"
v-bind="$attrs" width="500px"
@register="registerDrawer" showFooter
showFooter @ok="handleSubmit"
:title="getTitle" @register="registerDrawer"
width="500px"
@ok="handleSubmit"
> >
<BasicForm @register="registerForm"> <BasicForm @register="registerForm">
<template #menu="{ model, field }"> <template #menu="{ model, field }">
<BasicTree <BasicTree v-model:value="model[field]"
v-model:value="model[field]" title="菜单分配"
:treeData="treeData" toolbar
:replaceFields="{ title: 'name', key: 'id' }" checkable
checkable :treeData="state.menuTree"
toolbar :replaceFields="{ title: 'name', key: 'id' }"
title="菜单分配"
/> />
</template> </template>
</BasicForm> </BasicForm>
@ -26,20 +23,21 @@
* Copyright © 2020-2022 <a href="http://www.entfrm.com/">entfrm</a> All rights reserved. * Copyright © 2020-2022 <a href="http://www.entfrm.com/">entfrm</a> All rights reserved.
* author entfrm开发团队-王翔 * author entfrm开发团队-王翔
*/ */
import {defineComponent, ref, computed, unref, reactive} from 'vue'; import { unref, reactive } from 'vue';
import { BasicForm, useForm } from '/@/components/Form/index'; import { BasicForm, useForm } from '/@/components/Form/index';
import { formSchema } from './role.data'; import { formSchema } from './role.data';
import { BasicDrawer, useDrawerInner } from '/@/components/Drawer'; import { BasicDrawer, DrawerProps, useDrawerInner } from '/@/components/Drawer';
import { BasicTree, TreeItem } from '/@/components/Tree'; import { BasicTree, TreeItem } from '/@/components/Tree';
import { listMenu } from '/@/api/system/menu'; import { listMenu } from '/@/api/system/menu';
import { addRole, editRole, delRole } from '/@/api/system/role'; import { addRole, editRole, getRole } from '/@/api/system/role';
import { listToTree } from "/@/utils/helper/treeHelper";
/** https://v3.cn.vuejs.org/api/options-data.html#emits */ /** https://v3.cn.vuejs.org/api/options-data.html#emits */
const emit = defineEmits(['success', 'register']); const emit = defineEmits(['success', 'register']);
const state = reactive({ const state = reactive({
// //
tag: [], tag: '',
// //
menuTree: [] as TreeItem[], menuTree: [] as TreeItem[],
}); });
@ -51,34 +49,42 @@
baseColProps: { span: 24 } baseColProps: { span: 24 }
}); });
const [registerDrawer, { setDrawerProps, closeDrawer }] = useDrawerInner(async (data) => { const [registerDrawer, { setDrawerProps, closeDrawer }] = useDrawerInner(async (data: WindowInnerData = { _tag: '' }) => {
resetFields(); await resetFields();
setDrawerProps({ confirmLoading: false }); await clearValidate();
// setFieldsValuetreeDataTreekey not exist state.menuTree = listToTree(await listMenu());
if (unref(treeData).length === 0) { state.tag = data._tag;
treeData.value = (await getMenuList()) as any as TreeItem[]; const roleId = data.record?.id;
} const props: Partial<DrawerProps> = { confirmLoading: false };
isUpdate.value = !!data?.isUpdate; switch (unref(state.tag)) {
case 'add':
if (unref(isUpdate)) { props.title = '新增角色';
setFieldsValue({ break;
...data.record, case 'edit':
}); props.title = '编辑角色';
await setFieldsValue(await getRole({ id: roleId }) || {});
break;
} }
setDrawerProps(props);
}); });
const getTitle = computed(() => (!unref(isUpdate) ? '新增角色' : '编辑角色')); async function handleSubmit() {
try {
async function handleSubmit() { const formData = await validate();
try { setDrawerProps({ confirmLoading: true });
const values = await validate(); switch (unref(state.tag)) {
setDrawerProps({ confirmLoading: true }); case 'add':
await roleSet(values); await addRole(formData);
closeDrawer(); break;
emit('success'); case 'edit':
} finally { await editRole(formData);
setDrawerProps({ confirmLoading: false }); break;
} }
closeDrawer();
emit('success');
} finally {
setDrawerProps({ confirmLoading: false });
} }
}
</script> </script>

108
kicc-ui/src/views/system/role/role.data.ts

@ -1,23 +1,26 @@
/**
* @program: kicc-ui
* @description:
* @author: entfrm开发团队-
* @create: 2022/4/21
*/
import { BasicColumn } from '/@/components/Table'; import { BasicColumn } from '/@/components/Table';
import { FormSchema } from '/@/components/Table'; import { FormSchema } from '/@/components/Table';
import { h } from 'vue'; import { h } from 'vue';
import { Switch } from 'ant-design-vue'; import { Switch } from 'ant-design-vue';
import { roleSetStatus } from '/@/api/system/role'; import { changeStatus } from '/@/api/system/role';
import { useMessage } from '/@/hooks/web/useMessage'; import { useMessage } from '/@/hooks/web/useMessage';
const { createConfirm } = useMessage();
export const columns: BasicColumn[] = [ export const columns: BasicColumn[] = [
{ {
title: '角色名称', title: '角色名称',
dataIndex: 'roleName', dataIndex: 'name',
width: 200, width: 200,
}, },
{ {
title: '角色值', title: '显示顺序',
dataIndex: 'roleCode',
width: 180,
},
{
title: '排序',
dataIndex: 'sort', dataIndex: 'sort',
width: 50, width: 50,
}, },
@ -26,6 +29,7 @@ export const columns: BasicColumn[] = [
dataIndex: 'status', dataIndex: 'status',
width: 120, width: 120,
customRender: ({ record }) => { customRender: ({ record }) => {
// 设置请求加载状态标识
if (!Reflect.has(record, 'pendingStatus')) { if (!Reflect.has(record, 'pendingStatus')) {
record.pendingStatus = false; record.pendingStatus = false;
} }
@ -35,27 +39,32 @@ export const columns: BasicColumn[] = [
unCheckedChildren: '已禁用', unCheckedChildren: '已禁用',
loading: record.pendingStatus, loading: record.pendingStatus,
onChange(checked: boolean) { onChange(checked: boolean) {
record.pendingStatus = true; const text = checked ? "启用" : "停用";
const newStatus = checked ? '0' : '1'; createConfirm({
const { createMessage } = useMessage(); iconType: 'warning',
roleSetStatus(record.id, newStatus) title: '警告',
.then(() => { content: `确认要"${text}${record.name}角色吗?`,
record.status = newStatus; onOk: async () => {
createMessage.success(`已成功修改角色状态`); record.pendingStatus = true;
}) const newStatus = checked ? '0' : '1';
.catch(() => { const { createMessage } = useMessage();
createMessage.error('修改角色状态失败'); changeStatus({ id: record.id, status: newStatus }).then(() => {
}) record.status = newStatus;
.finally(() => { createMessage.success(`${text}成功`);
record.pendingStatus = false; }).catch(() => {
}); createMessage.error(`${text}失败`);
}, }).finally(() => {
record.pendingStatus = false;
});
}
});
}
}); });
}, }
}, },
{ {
title: '备注', title: '备注',
dataIndex: 'description', dataIndex: 'remarks',
}, },
{ {
title: '创建时间', title: '创建时间',
@ -66,26 +75,26 @@ export const columns: BasicColumn[] = [
export const searchFormSchema: FormSchema[] = [ export const searchFormSchema: FormSchema[] = [
{ {
field: 'keyword', field: 'name',
label: '关键字', label: '角色名称',
component: 'Input', component: 'Input',
componentProps: { componentProps: {
placeholder: '请输入名称/编码', placeholder: '请输入角色名称',
}, },
colProps: { span: 8 }, colProps: { span: 8 },
}, },
{ {
field: 'startDate', field: 'status',
label: '起始时间', label: '状态',
component: 'DatePicker', component: 'Select',
colProps: { span: 8 }, componentProps: {
}, options: [
{ { label: '启动', value: '0' },
field: 'endDate', { label: '停用', value: '1' }
label: '截止时间', ]
component: 'DatePicker', },
colProps: { span: 8 }, colProps: { span: 7 }
}, }
]; ];
export const formSchema: FormSchema[] = [ export const formSchema: FormSchema[] = [
@ -93,19 +102,26 @@ export const formSchema: FormSchema[] = [
field: 'id', field: 'id',
label: 'ID', label: 'ID',
component: 'Input', component: 'Input',
show: false, show: false
}, },
{ {
field: 'roleName', field: 'name',
label: '角色名称', label: '角色名称',
required: true, required: true,
component: 'Input', component: 'Input',
}, },
{ {
field: 'roleCode', field: 'sort',
label: '角色值', label: '角色排序',
component: 'InputNumber',
componentProps: {
style: { width:'100%' },
min: 0
},
required: true, required: true,
component: 'Input', colProps: {
span: 12
}
}, },
{ {
field: 'status', field: 'status',
@ -121,7 +137,7 @@ export const formSchema: FormSchema[] = [
}, },
{ {
label: '备注', label: '备注',
field: 'description', field: 'remarks',
component: 'InputTextArea', component: 'InputTextArea',
}, },
{ {
@ -129,5 +145,5 @@ export const formSchema: FormSchema[] = [
field: 'menu', field: 'menu',
slot: 'menu', slot: 'menu',
component: 'Input', component: 'Input',
}, }
]; ];

4
kicc-ui/src/views/system/user/user.data.ts

@ -1,4 +1,4 @@
import { roleAllList } from './../../../api/system/role'; // import { roleAllList } from './../../../api/system/role';
import { BasicColumn } from '/@/components/Table'; import { BasicColumn } from '/@/components/Table';
import { FormSchema } from '/@/components/Table'; import { FormSchema } from '/@/components/Table';
import { h } from 'vue'; import { h } from 'vue';
@ -105,7 +105,7 @@ export const accountFormSchema: FormSchema[] = [
field: 'roleId', field: 'roleId',
component: 'ApiSelect', component: 'ApiSelect',
componentProps: { componentProps: {
api: roleAllList, // api: roleAllList,
resultField: 'list', resultField: 'list',
labelField: 'roleName', labelField: 'roleName',
valueField: 'id', valueField: 'id',

Loading…
Cancel
Save