diff --git a/kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/java/com/cloud/kicc/system/controller/DeptController.java b/kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/java/com/cloud/kicc/system/controller/DeptController.java index 6a3b1540..112e1f6a 100644 --- a/kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/java/com/cloud/kicc/system/controller/DeptController.java +++ b/kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/java/com/cloud/kicc/system/controller/DeptController.java @@ -12,7 +12,6 @@ import com.cloud.kicc.system.api.entity.User; import com.cloud.kicc.system.service.DeptService; import com.cloud.kicc.system.service.UserService; import lombok.AllArgsConstructor; -import org.springframework.data.redis.core.RedisTemplate; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.web.bind.annotation.*; @@ -67,7 +66,7 @@ public class DeptController { deptService.updateById(dept); // 更新用户机构名称 new Thread(() -> { - List userList = userService.list(new QueryWrapper().eq("dept_id", dept.getDeptId())); + List userList = userService.list(new LambdaQueryWrapper().eq(User::getDeptId, dept.getDeptId())); for (User user : userList) { user.setDeptName(dept.getName()); userService.updateById(user); @@ -101,7 +100,7 @@ public class DeptController { /** 加载机构列表树 */ @GetMapping("/deptTree") public R deptTree() { - List deptList = deptService.list(new QueryWrapper().orderByAsc("sort")); + List deptList = deptService.list(new LambdaQueryWrapper().orderByAsc(Dept::getSort)); return R.ok(deptService.buildTree(deptList, "0")); } diff --git a/kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/java/com/cloud/kicc/system/mapper/DeptMapper.java b/kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/java/com/cloud/kicc/system/mapper/DeptMapper.java index 1322fd8b..cc9a2d9b 100644 --- a/kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/java/com/cloud/kicc/system/mapper/DeptMapper.java +++ b/kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/java/com/cloud/kicc/system/mapper/DeptMapper.java @@ -14,21 +14,5 @@ import java.util.List; * @Date: 2022/2/24 */ public interface DeptMapper extends BaseMapper { - /** - * 根据部门ID查询信息 - * - * @param deptId 部门ID - * @return 部门信息 - */ - Dept selectDeptById(String deptId); - /** - * 根据角色ID查询部门 - * - * @param roleId 角色ID - * @return 部门列表 - */ - List selectRoleDeptTree(String roleId); - - List selectAreaDeptTree(String areaId); } diff --git a/kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/resources/mapper/DeptMapper.xml b/kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/resources/mapper/DeptMapper.xml index 8552f40e..cc9db036 100644 --- a/kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/resources/mapper/DeptMapper.xml +++ b/kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/resources/mapper/DeptMapper.xml @@ -7,8 +7,6 @@ - - @@ -23,26 +21,4 @@ - - - - - diff --git a/kicc-ui/src/api/controller/system/dept.ts b/kicc-ui/src/api/controller/system/dept.ts index 0f3340f4..c8d8dbef 100644 --- a/kicc-ui/src/api/controller/system/dept.ts +++ b/kicc-ui/src/api/controller/system/dept.ts @@ -1,58 +1,31 @@ -import { DepartVO, DeptDto, Depart, DeptListItem, DeptListGetResultModel } from './model/deptModel'; -import { defHttp } from '/@/utils/http/axios'; -import {listToTree} from "/@/utils/helper/treeHelper"; -import {isDef} from "/@/utils/is"; +/** + * 提供api模板规范代码参考,请尽量保证编写代码风格跟模板规范代码一致 + * Copyright © 2020-2022 entfrm All rights reserved. + * author entfrm开发团队-王翔 + */ -const prefix = '/system_proxy/system'; +import { DeptDto, Dept } from './model/deptModel'; +import { defHttp } from '/@/utils/http/axios'; enum Api { - List = '/dept/list', - Save = '/dept/save', - Update = '/dept/update', - Remove = '/dept/remove', - DeptList = '/dept/deptTree', + list = '/system_proxy/system/dept/list', + add = '/system_proxy/system/dept/save', + get = '/system_proxy/system/dept', + edit = '/system_proxy/system/dept/update', + del = '/system_proxy/system/dept/remove', } -//获取部门根据id -export const getDeptById = (params: {id: string}) => - defHttp.get({url: prefix + `/dept/${params.id}` }) +// 查询部门列表 +export const listDept = (params?: Partial) => defHttp.get({ url: Api.list, params }); -//部门列表 -export const deptList = (params?: Partial) => defHttp.get({ url: prefix + Api.List, params }); - -// 部门树 -export const departTreeList = (params?: DepartVO) => { - return defHttp.get({ url: prefix + Api.List, params }).then(data => { - return listToTree(data, { - id: 'deptId', - children: 'children', - parentId: 'parentId', - }) as any[]; - }); -} +// 新增部门 +export const addDept = (params: Partial) => defHttp.post({ url: Api.add, data: params }); -export const departTreeHasTop = (params?: DepartVO) => { - return defHttp.get({ url: prefix + Api.List, params }).then(data => { - data.unshift({ deptId: '0', sort: 0, name: '顶级部门', children: [] }); - return listToTree(data, { - id: 'deptId', - children: 'children', - parentId: 'parentId', - }) as any[]; - }); -} - -export const departSet = (params: Depart) => { - if (isDef(params.id)){ - return defHttp.put({ url: prefix + Api.Update, params }); - }else { - return defHttp.post({ url: prefix + Api.Save, params }); - } -} +// 修改部门 +export const editDept = (params: Partial) => defHttp.put({ url: Api.edit, data: params }); -// 删除 -export const departRemove = (params: { id: String }) => - defHttp.delete({ url: prefix + Api.Remove + `/${params.id}` }); +// 查询部门详细 +export const getDept = (id: string) => defHttp.get({ url: `${Api.get}/${id}` }); -export const getDeptList = (params?: DeptListItem) => - defHttp.get({ url: prefix + Api.DeptList, params }); +// 删除部门 +export const delDept = (id: string) => defHttp.delete({ url: `${Api.del}/${id}` }); diff --git a/kicc-ui/src/api/controller/system/model/deptModel.ts b/kicc-ui/src/api/controller/system/model/deptModel.ts index 28c0a953..b5481e03 100644 --- a/kicc-ui/src/api/controller/system/model/deptModel.ts +++ b/kicc-ui/src/api/controller/system/model/deptModel.ts @@ -1,12 +1,6 @@ // 引入基础包 import { Page, R, CommonEntity } from '/@/api/model'; -// 定义查询参数 -export type DepartVO = Page & { - id?: string; - name?: string; -}; - // 查询参数 export type DeptDto = Page & Dept; @@ -22,26 +16,8 @@ export interface Dept extends CommonEntity { address: string; email: string; status: string; - children: Dept[]; -} - - -// 定义部门对象 -export interface Depart { - id: string; - name: string; - sort: string; - parentId: string; -} - -// 根据部门对象生成响应模型 -export type DepartDTO = R; - -export interface DeptListItem { - id: string; - createTime: string; - remark: string; - status: number; + [key: string]: any; } -export type DeptListGetResultModel = R; +// 响应模型 +export type DeptVo = R; diff --git a/kicc-ui/src/api/controller/system/model/userModel.ts b/kicc-ui/src/api/controller/system/model/userModel.ts index 4dd9619d..9c372a6f 100644 --- a/kicc-ui/src/api/controller/system/model/userModel.ts +++ b/kicc-ui/src/api/controller/system/model/userModel.ts @@ -21,6 +21,7 @@ export interface User extends CommonEntity { status: string; roleIds: string[]; permissions: string[]; + [key: string]: any; } // 响应模型 diff --git a/kicc-ui/src/views/system/dept/DeptModal.vue b/kicc-ui/src/views/system/dept/DeptModal.vue index cc70f494..8c92e50a 100644 --- a/kicc-ui/src/views/system/dept/DeptModal.vue +++ b/kicc-ui/src/views/system/dept/DeptModal.vue @@ -1,80 +1,89 @@ - diff --git a/kicc-ui/src/views/system/dept/dept.data.ts b/kicc-ui/src/views/system/dept/dept.data.ts index f2f32d77..1653d561 100644 --- a/kicc-ui/src/views/system/dept/dept.data.ts +++ b/kicc-ui/src/views/system/dept/dept.data.ts @@ -1,165 +1,192 @@ -import {BasicColumn} from '/@/components/Table'; -import {FormSchema} from '/@/components/Table'; -import {h} from 'vue'; -import {Tag} from 'ant-design-vue'; +/** + * @program: kicc-ui + * @description: 部门模块动态渲染配置 + * @author: entfrm开发团队-王翔 + * @create: 2022/4/21 + */ +import { BasicColumn } from '/@/components/Table'; +import { FormSchema } from '/@/components/Table'; +import { h } from 'vue'; +import { Tag } from 'ant-design-vue'; + +/** 表格列配置 */ export const columns: BasicColumn[] = [ - { - title: '部门名称', - dataIndex: 'name', - width: 160, - align: 'left', - }, - { - title: '部门编码', - dataIndex: 'code', - width: 160, - }, - { - title: '排序', - dataIndex: 'sort', - width: 50, - }, - { - title: '状态', - dataIndex: 'status', - width: 80, - customRender: ({record}) => { - const status = record.status; - const enable = ~~status === 0; - const color = enable ? 'green' : 'red'; - const text = enable ? '启用' : '停用'; - return h(Tag, {color: color}, () => text); - }, - }, - { - title: '创建时间', - dataIndex: 'createTime', - width: 180, - }, + { + title: '部门名称', + dataIndex: 'name', + align: 'left' + }, + { + title: '部门编码', + dataIndex: 'code' + }, + { + title: '排序', + dataIndex: 'sort', + width: 80 + }, + { + title: '状态', + dataIndex: 'status', + width: 80, + customRender: ({record}) => { + const status = record.status; + // 采用二进制~~取反,只要为null或者0等等一些其他的空元素都会转为0 + // 第一次取反会运算为-1,在后一次取反会运算为0 + const enable = ~~status === 0; + const color = enable ? 'green' : 'red'; + const text = enable ? '启用' : '停用'; + return h(Tag, { color: color }, () => text); + } + }, + { + title: '创建时间', + dataIndex: 'createTime' + } ]; +/** 搜索表单配置 */ export const searchFormSchema: FormSchema[] = [ - { - field: 'keyword', - label: '关键字', - component: 'Input', - componentProps: { - placeholder: '请输入名称/编码', - }, - colProps: {span: 8}, - }, - { - field: 'dateRange', - label: '创建时间', - component: 'RangePicker', - componentProps: { - style: { width:'100%' }, - valueFormat: 'YYYY-MM-DD', - placeholder: ['开始日期','结束日期'] - }, - colProps: { span: 8 } - } + { + field: 'name', + label: '部门名称', + component: 'Input', + componentProps: { + placeholder: '请输入部门名称' + }, + colProps: {span: 8} + }, + { + field: 'status', + label: '状态', + component: 'Select', + componentProps: { + options: [ + { label: '正常', value: '0' }, + { label: '停用', value: '1' } + ] + }, + colProps: { span: 7 } + }, + { + field: 'dateRange', + label: '创建时间', + component: 'RangePicker', + componentProps: { + style: { width:'100%' }, + valueFormat: 'YYYY-MM-DD', + placeholder: ['开始日期','结束日期'] + }, + colProps: { span: 8 } + } ]; +/** 表单配置 */ export const formSchema: FormSchema[] = [ - { - field: 'deptId', - label: 'ID', - component: 'Input', - show: false - }, - { - field: 'name', - label: '部门名称', - component: 'Input', - required: true - }, - { - field: 'parentId', - label: '上级部门', - component: 'TreeSelect', - componentProps: { - replaceFields: { - title: 'name', - key: 'deptId', - value: 'deptId', - }, - getPopupContainer: () => document.body, - }, - required: true, - colProps: { - span: 12 - } - }, - { - field: 'code', - label: '部门编码', - component: 'Input', - required: true, - colProps: { - span: 12 - } - }, - { - field: 'sort', - label: '排序', - component: 'Input', - required: true, - colProps: { - span: 12 - } - }, - { - field: 'contacts', - label: '联系人', - component: 'Input', - required: false, - colProps: { - span: 12 - } - }, - { - field: 'phone', - label: '联系人电话', - component: 'Input', - required: false, - colProps: { - span: 12 - } - }, - { - field: 'address', - label: '联系地址', - component: 'Input', - required: false, - colProps: { - span: 12 - } - }, - { - field: 'email', - label: '邮箱', - component: 'Input', - required: false, - colProps: { - span: 12 - } - }, - { - field: 'status', - label: '状态', - component: 'RadioButtonGroup', - defaultValue: '0', - componentProps: { - options: [ - {label: '启用', value: '0'}, - {label: '停用', value: '1'}, - ], - }, - required: true, - colProps: { - span: 12 - } - }, + { + field: 'deptId', + label: 'ID', + component: 'Input', + show: false + }, + { + field: 'parentId', + label: '上级部门', + component: 'TreeSelect', + defaultValue: '0', + componentProps: { + replaceFields: { + title: 'name', + key: 'deptId', + value: 'deptId', + }, + getPopupContainer: () => document.body, + } + }, + { + field: 'name', + label: '部门名称', + component: 'Input', + required: true, + colProps: { + span: 12 + } + }, + { + field: 'code', + label: '部门代码', + component: 'Input', + required: true, + colProps: { + span: 12 + } + }, + { + field: 'contacts', + label: '联系人', + component: 'Input', + colProps: { + span: 12 + } + }, + { + field: 'phone', + label: '联系人电话', + component: 'Input', + rules: [ + { + pattern: new RegExp('^1[3|4|5|6|7|8|9][0-9]\\d{8}$'), + message: '请输入正确的手机号码!', + validateTrigger: 'change' + } + ], + colProps: { + span: 12 + } + }, + { + field: 'sort', + label: '部门排序', + component: 'InputNumber', + componentProps: { + style: { width:'100%' }, + min: 0 + }, + required: true, + colProps: { + span: 12 + } + }, + { + field: 'email', + label: '邮箱', + component: 'Input', + rules: [ + { + type: 'email', + message: '请输入正确的邮箱地址!', + validateTrigger: 'change' + } + ], + colProps: { + span: 12 + } + }, + { + field: 'status', + label: '状态', + component: 'RadioGroup', + defaultValue: '0', + componentProps: { + options: [ + { label: '正常', value: '0' }, + { label: '停用', value: '1' } + ] + }, + required: true, + colProps: { + span: 12 + } + } ]; diff --git a/kicc-ui/src/views/system/dept/index.vue b/kicc-ui/src/views/system/dept/index.vue index a3eed0e3..529a46a4 100644 --- a/kicc-ui/src/views/system/dept/index.vue +++ b/kicc-ui/src/views/system/dept/index.vue @@ -2,111 +2,114 @@
- +
- diff --git a/kicc-ui/src/views/system/menu/MenuModal.vue b/kicc-ui/src/views/system/menu/MenuModal.vue index 586e6921..d8844b77 100644 --- a/kicc-ui/src/views/system/menu/MenuModal.vue +++ b/kicc-ui/src/views/system/menu/MenuModal.vue @@ -22,7 +22,7 @@ import { listToTree } from '/@/utils/helper/treeHelper'; /** 通用变量统一声明区域 */ - const tag = ref(''); + const tag = ref(''); /** https://v3.cn.vuejs.org/api/options-data.html#emits */ const emit = defineEmits(['success', 'register']); const [registerForm, { resetFields, setFieldsValue, updateSchema, validate, clearValidate }] = useForm({ diff --git a/kicc-ui/src/views/system/menu/index.vue b/kicc-ui/src/views/system/menu/index.vue index e3dfd98f..ba41e69f 100644 --- a/kicc-ui/src/views/system/menu/index.vue +++ b/kicc-ui/src/views/system/menu/index.vue @@ -70,7 +70,7 @@ labelWidth: 120, schemas: searchFormSchema, autoSubmitOnEnter: true, - fieldMapToTime: [['dateRange', ['beginTime', 'endTime'], 'YYYY-MM-DD']], + fieldMapToTime: [['dateRange', ['beginTime', 'endTime'], 'YYYY-MM-DD']] }, isTreeTable: true, pagination: false, diff --git a/kicc-ui/src/views/system/menu/menu.data.ts b/kicc-ui/src/views/system/menu/menu.data.ts index 397dab33..d9e9190f 100644 --- a/kicc-ui/src/views/system/menu/menu.data.ts +++ b/kicc-ui/src/views/system/menu/menu.data.ts @@ -73,7 +73,7 @@ export const columns: BasicColumn[] = [ export const searchFormSchema: FormSchema[] = [ { field: 'name', - label: '菜单名', + label: '菜单名称', component: 'Input', componentProps: { placeholder: '请输入菜单名称' @@ -105,6 +105,7 @@ export const searchFormSchema: FormSchema[] = [ } ]; +/** 表单配置 */ export const formSchema: FormSchema[] = [ { field: 'id', diff --git a/kicc-ui/src/views/system/role/role.data.ts b/kicc-ui/src/views/system/role/role.data.ts index 12a530b8..880b2746 100644 --- a/kicc-ui/src/views/system/role/role.data.ts +++ b/kicc-ui/src/views/system/role/role.data.ts @@ -101,7 +101,7 @@ export const searchFormSchema: FormSchema[] = [ } ]; -/** 用户表单配置 */ +/** 表单配置 */ export const formSchema: FormSchema[] = [ { field: 'id', diff --git a/kicc-ui/src/views/system/user/DeptTree.vue b/kicc-ui/src/views/system/user/DeptTree.vue index 0b7da6b3..cda942d2 100644 --- a/kicc-ui/src/views/system/user/DeptTree.vue +++ b/kicc-ui/src/views/system/user/DeptTree.vue @@ -19,7 +19,7 @@ */ import { defineComponent, onMounted, ref } from 'vue'; import { BasicTree, TreeItem } from '/@/components/Tree'; - import { deptList } from '/@/api/controller/system/dept'; + import { listDept } from '/@/api/controller/system/dept'; import { listToTree } from "/@/utils/helper/treeHelper"; export default defineComponent({ @@ -36,7 +36,7 @@ /** 处理获取树形数据 */ async function handleFetch() { - treeData.value = listToTree(await deptList()); + treeData.value = listToTree(await listDept()); } /** 处理树形选择 */ diff --git a/kicc-ui/src/views/system/user/UserModal.vue b/kicc-ui/src/views/system/user/UserModal.vue index 760dbe13..e4bcb028 100644 --- a/kicc-ui/src/views/system/user/UserModal.vue +++ b/kicc-ui/src/views/system/user/UserModal.vue @@ -18,7 +18,7 @@ import { BasicModal, useModalInner } from '/@/components/Modal'; import { BasicForm, useForm } from '/@/components/Form/index'; import { userFormSchema } from './user.data'; - import { deptList } from '/@/api/controller/system/dept'; + import { listDept } from '/@/api/controller/system/dept'; import { addUser, editUser, getUser } from '/@/api/controller/system/user'; import { listToTree } from "/@/utils/helper/treeHelper"; import { ModalProps } from "/@/components/Modal"; @@ -52,7 +52,7 @@ await clearValidate(); // 处理设置数据 state.tag = data._tag; - state.deptTree = listToTree(await deptList()); + state.deptTree = listToTree(await listDept()); const userId = data.record?.id; const props: Partial = { confirmLoading: false }; await updateSchema([ diff --git a/kicc-ui/src/views/system/user/index.vue b/kicc-ui/src/views/system/user/index.vue index de4991dd..c5aa45a1 100644 --- a/kicc-ui/src/views/system/user/index.vue +++ b/kicc-ui/src/views/system/user/index.vue @@ -109,7 +109,7 @@ labelWidth: 120, schemas: searchFormSchema, autoSubmitOnEnter: true, - fieldMapToTime: [['dateRange', ['beginTime', 'endTime'], 'YYYY-MM-DD']], + fieldMapToTime: [['dateRange', ['beginTime', 'endTime'], 'YYYY-MM-DD']] }, rowSelection: { type: 'checkbox' }, useSearchForm: true,