Browse Source

🎟 框架升级

master
wangxiang 3 years ago
parent
commit
2825a02cd8
  1. 1
      docker-cloud/redis/docker-compose.yml
  2. 13
      kicc-platform/kicc-platform-api/kicc-system-api/src/main/java/com/cloud/kicc/system/api/entity/Dept.java
  3. 36
      kicc-platform/kicc-platform-api/kicc-system-api/src/main/java/com/cloud/kicc/system/api/entity/User.java
  4. 21
      kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/java/com/cloud/kicc/system/controller/DeptController.java
  5. 12
      kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/java/com/cloud/kicc/system/controller/UserController.java
  6. 5
      kicc-ui/.env.production
  7. 2
      kicc-ui/package.json
  8. 9
      kicc-ui/src/api/system/dept.ts
  9. 2
      kicc-ui/src/api/system/menu.ts
  10. 21
      kicc-ui/src/api/system/model/deptModel.ts
  11. 43
      kicc-ui/src/api/system/model/userModel.ts
  12. 36
      kicc-ui/src/api/system/user.ts
  13. 2
      kicc-ui/src/views/system/depart/DeptModal.vue
  14. 2
      kicc-ui/src/views/system/depart/index.vue
  15. 2
      kicc-ui/src/views/system/menu/MenuModal.vue
  16. 2
      kicc-ui/src/views/system/menu/index.vue
  17. 23
      kicc-ui/src/views/system/user/DeptTree.vue
  18. 2
      kicc-ui/src/views/system/user/PasswordModal.vue
  19. 4
      kicc-ui/src/views/system/user/UserModal.vue
  20. 14
      kicc-ui/src/views/system/user/index.vue
  21. 1
      kicc-ui/vite.config.ts
  22. 1034
      kicc-ui/yarn.lock

1
docker-cloud/redis/docker-compose.yml

@ -14,6 +14,7 @@ services:
restart: always restart: always
ports: ports:
- 6379:6379 - 6379:6379
command: redis-server --requirepass kanglai@2022
volumes: volumes:
- redis:/data - redis:/data
- /usr/software/dockerDatabase/redis/redis.conf:/usr/local/etc/redis/redis.conf - /usr/software/dockerDatabase/redis/redis.conf:/usr/local/etc/redis/redis.conf

13
kicc-platform/kicc-platform-api/kicc-system-api/src/main/java/com/cloud/kicc/system/api/entity/Dept.java

@ -48,17 +48,6 @@ public class Dept extends CommonEntity {
*/ */
private String parentId; private String parentId;
/**
* 父部门名称
*/
@TableField(exist = false)
private String parentName;
/**
* 祖级列表
*/
private String ancestors;
/** /**
* 显示顺序 * 显示顺序
*/ */
@ -80,7 +69,7 @@ public class Dept extends CommonEntity {
private String address; private String address;
/** /**
* 邮箱 * 联系邮箱
*/ */
private String email; private String email;

36
kicc-platform/kicc-platform-api/kicc-system-api/src/main/java/com/cloud/kicc/system/api/entity/User.java

@ -39,11 +39,6 @@ public class User extends CommonEntity {
@ExcelProperty("用户名") @ExcelProperty("用户名")
private String userName; private String userName;
/**
* 密码
*/
private String password;
/** /**
* 昵称 * 昵称
*/ */
@ -51,21 +46,20 @@ public class User extends CommonEntity {
private String nickName; private String nickName;
/** /**
* 手机号 *
*/ */
@ExcelProperty("手机号码") private String password;
private String phone;
/** /**
* 用户性别0男 1女 2未知 * 机构ID
*/ */
@ExcelProperty("性别") private String deptId;
private String sex;
/** /**
* 头像路径 * 机构名称
*/ */
private String avatar; @ExcelProperty("机构名称")
private String deptName;
/** /**
* 用户邮箱 * 用户邮箱
@ -74,15 +68,21 @@ public class User extends CommonEntity {
private String email; private String email;
/** /**
* 机构ID * 手机号码
*/ */
private String deptId; @ExcelProperty("手机号码")
private String phone;
/** /**
* 机构名称 * 用户性别0男 1女 2未知
*/ */
@ExcelProperty("机构名称") @ExcelProperty("性别")
private String deptName; private String sex;
/**
* 头像路径
*/
private String avatar;
/** /**
* 最后登陆IP * 最后登陆IP

21
kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/java/com/cloud/kicc/system/controller/DeptController.java

@ -48,13 +48,6 @@ public class DeptController {
@PreAuthorize("@pms.hasPermission('dept_view')") @PreAuthorize("@pms.hasPermission('dept_view')")
public R list(Dept dept) { public R list(Dept dept) {
List<Dept> deptList = deptService.list(getQueryWrapper(dept)); List<Dept> deptList = deptService.list(getQueryWrapper(dept));
if (deptList.size() > 0) {
for (Dept dept1 : deptList) {
if (StrUtil.isNotBlank(dept.getName()) || StrUtil.isNotBlank(dept.getCode())) {
dept1.setParentId("0");
}
}
}
return R.ok(deptList, deptList.size()); return R.ok(deptList, deptList.size());
} }
@ -67,13 +60,6 @@ public class DeptController {
@PostMapping("/save") @PostMapping("/save")
@PreAuthorize("@pms.hasPermission('dept_add')") @PreAuthorize("@pms.hasPermission('dept_add')")
public R save(@RequestBody Dept dept) { public R save(@RequestBody Dept dept) {
Dept info;
if (!StrUtil.equals(dept.getParentId(),"0")) {
info = deptService.getById(dept.getParentId());
dept.setAncestors(info.getAncestors() + "," + dept.getParentId());
} else {
dept.setAncestors("0");
}
deptService.save(dept); deptService.save(dept);
return R.ok(); return R.ok();
} }
@ -82,13 +68,6 @@ public class DeptController {
@PutMapping("/update") @PutMapping("/update")
@PreAuthorize("@pms.hasPermission('dept_edit')") @PreAuthorize("@pms.hasPermission('dept_edit')")
public R update(@RequestBody Dept dept) { public R update(@RequestBody Dept dept) {
Dept info;
if (!StrUtil.equals(dept.getParentId(),"0")) {
info = deptService.getById(dept.getParentId());
dept.setAncestors(info.getAncestors() + "," + dept.getParentId());
} else {
dept.setAncestors("0");
}
deptService.updateById(dept); deptService.updateById(dept);
//更新用户机构名称 //更新用户机构名称
new Thread(() -> { new Thread(() -> {

12
kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/java/com/cloud/kicc/system/controller/UserController.java

@ -3,6 +3,7 @@ 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.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
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;
@ -54,13 +55,10 @@ public class UserController {
private final FileService fileService; private final FileService fileService;
private static final PasswordEncoder ENCODER = new BCryptPasswordEncoder(); private static final PasswordEncoder ENCODER = new BCryptPasswordEncoder();
private QueryWrapper<User> getQueryWrapper(User user) { private LambdaQueryWrapper<User> getQueryWrapper(User user) {
return new QueryWrapper<User>() return new LambdaQueryWrapper<User>()
.like(StrUtil.isNotBlank(user.getUserName()), "user_name", user.getUserName()) .like(StrUtil.isNotBlank(user.getUserName()), User::getUserName, user.getUserName())
.like(StrUtil.isNotBlank(user.getNickName()), "nick_name", user.getNickName()) .eq(StrUtil.isNotBlank(user.getStatus()), User::getStatus, user.getStatus());
.eq(StrUtil.isNotBlank(user.getStatus()), "status", user.getStatus())
.apply(StrUtil.isNotBlank(user.getSqlFilter()), user.getSqlFilter())
.eq(ObjectUtil.isNotNull(user.getDeptId()), "dept_id", user.getDeptId());
} }
@GetMapping("/list") @GetMapping("/list")

5
kicc-ui/.env.production

@ -1,6 +1,11 @@
# 资源公共路径,需要以 /开头和结尾 # 资源公共路径,需要以 /开头和结尾
VITE_PUBLIC_PATH = / VITE_PUBLIC_PATH = /
# 本地开发代理,可以解决跨域及多地址代理
# 如果接口地址匹配到,则会转发到http://localhost:3000,防止本地出现跨域问题
# 可以有多个,注意多个不能换行,否则代理将会失效
VITE_PROXY = [["/prod-api","http://localhost:9999"],["/prod-upload","http://localhost:3300/upload"]]
# 是否删除console.log # 是否删除console.log
VITE_DROP_CONSOLE = true VITE_DROP_CONSOLE = true

2
kicc-ui/package.json

@ -80,7 +80,7 @@
"rimraf": "^3.0.2", "rimraf": "^3.0.2",
"rollup-plugin-visualizer": "5.5.2", "rollup-plugin-visualizer": "5.5.2",
"typescript": "4.4.2", "typescript": "4.4.2",
"vite": "^2.5.8", "vite": "^2.5.10",
"vite-plugin-compression": "^0.3.5", "vite-plugin-compression": "^0.3.5",
"vite-plugin-html": "^2.1.0", "vite-plugin-html": "^2.1.0",
"vite-plugin-imagemin": "^0.4.5", "vite-plugin-imagemin": "^0.4.5",

9
kicc-ui/src/api/system/depart.ts → kicc-ui/src/api/system/dept.ts

@ -1,7 +1,8 @@
import { DepartVO, DepartDTO, Depart, DeptListItem, DeptListGetResultModel } from './model/departModel'; import { DepartVO, DeptDto, Depart, DeptListItem, DeptListGetResultModel } from './model/deptModel';
import { defHttp } from '/@/utils/http/axios'; import { defHttp } from '/@/utils/http/axios';
enum Api { enum Api {
list = '/system_proxy/system/dept/list',
List = '/mate-system/depart/list', List = '/mate-system/depart/list',
Set = '/mate-system/depart/set', Set = '/mate-system/depart/set',
Del = '/mate-system/depart/del', Del = '/mate-system/depart/del',
@ -18,5 +19,7 @@ export const departSet = (params: Depart) => defHttp.post<Depart>({ url: Api.Set
export const departDel = (params: { ids: String }) => export const departDel = (params: { ids: String }) =>
defHttp.post<boolean>({ url: Api.Del + `?ids=${params.ids}` }); defHttp.post<boolean>({ url: Api.Del + `?ids=${params.ids}` });
export const getDeptList = (params?: DeptListItem) => export const getDeptList = (params?: DeptListItem) => defHttp.get<DeptListGetResultModel>({ url: Api.DeptList, params });
defHttp.get<DeptListGetResultModel>({ url: Api.DeptList, params });
// 查询部门列表
export const deptList = (params?: Partial<DeptDto>) => defHttp.get({ url: Api.list, params });

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

@ -27,4 +27,4 @@ export const getMenu = (id: string) => defHttp.get<Menu>({ url: `${Api.get}/${id
export const delMenu = (id: string) => defHttp.delete({ url: `${Api.del}/${id}` }); export const delMenu = (id: string) => defHttp.delete({ url: `${Api.del}/${id}` });
// 通过角色编号查询菜单编号 // 通过角色编号查询菜单编号
export const getRoleMenuIds = (roleId : string) => defHttp.get<ResultVo>({ url: `${Api.roleMenuIds}/${roleId}`}); export const getRoleMenuIds = (roleId : string) => defHttp.get<ResultVo<any>>({ url: `${Api.roleMenuIds}/${roleId}`});

21
kicc-ui/src/api/system/model/departModel.ts → kicc-ui/src/api/system/model/deptModel.ts

@ -1,5 +1,5 @@
// 引入基础包 // 引入基础包
import { Page, R } from '/@/api/model'; import { Page, R, CommonEntity } from '/@/api/model';
// 定义查询参数 // 定义查询参数
export type DepartVO = Page & { export type DepartVO = Page & {
@ -7,6 +7,25 @@ export type DepartVO = Page & {
name?: string; name?: string;
}; };
// 查询参数
export type DeptDto = Page & Dept;
// 部门对象
export interface Dept extends CommonEntity {
deptId: string;
code: string;
name: string;
parentId: string;
sort: number;
contacts: string;
phone: string;
address: string;
email: string;
status: string;
children: Dept[];
}
// 定义部门对象 // 定义部门对象
export interface Depart { export interface Depart {
id: string; id: string;

43
kicc-ui/src/api/system/model/userModel.ts

@ -1,30 +1,27 @@
// 引入基础包 // 引入基础包
import { Page, R } from '/@/api/model'; import { CommonEntity, Page, R } from '/@/api/model';
// 定义查询参数 // 查询参数
export type UserVO = Page & { export type UserDto = Page & User;
name?: string;
path?: string;
};
// 定义用户对象 // 用户对象
export interface User { export interface User extends CommonEntity {
id: string; id: string;
account: string; userName: string;
password?: string; nickName: string;
name: string; password: string;
realName: string; deptId: string;
avatar: string; deptName: string;
email: string; email: string;
telephone: string; phone: string;
birthday: string; sex: string;
sex: number; avatar: string;
roleId: string | number; loginIp: string;
departId: string | number; loginTime: string;
status: number; status: string;
departName: string; roleIds: string[];
roleName: string; permissions: string[];
} }
// 根据用户对象生成响应模型 // 响应模型
export type UserDTO = R<User>; export type UserVo = R<User[]>;

36
kicc-ui/src/api/system/user.ts

@ -1,23 +1,29 @@
import { User, UserVO, UserDTO } from './model/userModel'; import { User, UserDto } from './model/userModel';
import { defHttp } from '/@/utils/http/axios'; import { defHttp } from '/@/utils/http/axios';
enum Api { enum Api {
Page = '/mate-system/user/page', list = '/system_proxy/system/user/list',
Set = '/mate-system/user/set', add = '/system_proxy/system/user/save',
Del = '/mate-system/user/del', get = '/system_proxy/system/user',
SetPassword = '/mate-system/user/set-password', edit = '/system_proxy/system/user/update',
del = '/system_proxy/system/user/remove',
updatePwd = '/system_proxy/system/user/updatePwd'
} }
// 菜单树 // 查询用户列表
export const page = (params?: UserVO) => defHttp.get<UserDTO>({ url: Api.Page, params }); export const listUser = (params?: Partial<UserDto>) => defHttp.get({ url: Api.list, params });
// 保存 // 新增用户
export const set = (params: User) => defHttp.post<User>({ url: Api.Set, params }); export const addUser = (params: Partial<User>) => defHttp.post({ url: Api.add, data: params });
// 删除 // 修改用户
export const del = (params: { ids: String }) => export const editUser = (params: Partial<User>) => defHttp.put({ url: Api.edit, data: params });
defHttp.post<boolean>({ url: Api.Del + `?ids=${params.ids}` });
// 设置密码 // 查询用户详细
export const userSetPassword = (params?: User) => export const getUser = (id: string) => defHttp.get<User>({ url: `${Api.get}/${id}` });
defHttp.post<boolean>({ url: Api.SetPassword, params });
// 删除用户
export const delUser = (id: string) => defHttp.delete({ url: `${Api.del}/${id}` });
// 更新密码
export const updatePwd = (params: Partial<User>) => defHttp.put({ url: Api.updatePwd, params });

2
kicc-ui/src/views/system/depart/DeptModal.vue

@ -8,7 +8,7 @@
import { BasicModal, useModalInner } from '/@/components/Modal'; import { BasicModal, useModalInner } from '/@/components/Modal';
import { BasicForm, useForm } from '/@/components/Form/index'; import { BasicForm, useForm } from '/@/components/Form/index';
import { formSchema } from './dept.data'; import { formSchema } from './dept.data';
import { departList, departSet } from '/@/api/system/depart'; import { departList, departSet } from '/@/api/system/dept';
export default defineComponent({ export default defineComponent({
name: 'DeptModal', name: 'DeptModal',

2
kicc-ui/src/views/system/depart/index.vue

@ -32,7 +32,7 @@
import { useModal } from '/@/components/Modal'; import { useModal } from '/@/components/Modal';
import DeptModal from './DeptModal.vue'; import DeptModal from './DeptModal.vue';
import { columns, searchFormSchema } from './dept.data'; import { columns, searchFormSchema } from './dept.data';
import { departDel, departList } from '/@/api/system/depart'; import { departDel, departList } from '/@/api/system/dept';
import { useMessage } from '/@/hooks/web/useMessage'; import { useMessage } from '/@/hooks/web/useMessage';
const { createMessage } = useMessage(); const { createMessage } = useMessage();

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

@ -52,7 +52,7 @@
break; break;
case 'edit': case 'edit':
props.title = '编辑菜单'; props.title = '编辑菜单';
await setFieldsValue(await getMenu({ id: menuId }) || {}); await setFieldsValue(await getMenu(menuId) || {});
break; break;
} }
setModalProps(props); setModalProps(props);

2
kicc-ui/src/views/system/menu/index.vue

@ -98,7 +98,7 @@
/** 删除按钮操作,行内删除 */ /** 删除按钮操作,行内删除 */
async function handleDel(record: Recordable) { async function handleDel(record: Recordable) {
await delMenu({ id: record.id }); await delMenu(record.id);
createMessage.success('删除成功!'); createMessage.success('删除成功!');
handleSuccess(); handleSuccess();
} }

23
kicc-ui/src/views/system/user/DeptTree.vue

@ -1,31 +1,30 @@
<template> <template>
<div class="bg-white m-4 mr-0 overflow-hidden"> <div class="bg-white m-4 mr-0 overflow-hidden">
<BasicTree <BasicTree title="部门列表"
title="部门列表" toolbar
toolbar search
search :clickRowToExpand="false"
:clickRowToExpand="false" :treeData="treeData"
:treeData="treeData" :replaceFields="{ key: 'id', title: 'name' }"
:replaceFields="{ key: 'id', title: 'name' }" @select="handleSelect"
@select="handleSelect"
/> />
</div> </div>
</template> </template>
<script lang="ts"> <script lang="ts">
import { defineComponent, onMounted, ref } from 'vue'; import { defineComponent, onMounted, ref } from 'vue';
import { BasicTree, TreeItem } from '/@/components/Tree'; import { BasicTree, TreeItem } from '/@/components/Tree';
import { getDeptList } from '/@/api/system/depart'; import { deptList } from '/@/api/system/dept';
import {listToTree} from "/@/utils/helper/treeHelper";
export default defineComponent({ export default defineComponent({
name: 'DeptTree', name: 'DeptTree',
components: { BasicTree }, components: { BasicTree },
emits: ['select'], emits: ['select'],
setup(_, { emit }) { setup(props, { emit }) {
const treeData = ref<TreeItem[]>([]); const treeData = ref<TreeItem[]>([]);
async function fetch() { async function fetch() {
treeData.value = (await getDeptList()) as unknown as TreeItem[]; treeData.value = listToTree(await deptList());
} }
function handleSelect(keys: string, e) { function handleSelect(keys: string, e) {

2
kicc-ui/src/views/system/user/PasswordModal.vue

@ -9,7 +9,7 @@
import { BasicModal, useModalInner } from '/@/components/Modal'; import { BasicModal, useModalInner } from '/@/components/Modal';
import { BasicForm, useForm } from '/@/components/Form/index'; import { BasicForm, useForm } from '/@/components/Form/index';
import { passwordFormSchema } from './user.data'; import { passwordFormSchema } from './user.data';
import { userSetPassword } from '/@/api/system/user'; //import { userSetPassword } from '/@/api/system/user';
export default defineComponent({ export default defineComponent({
name: 'AccountModal', name: 'AccountModal',

4
kicc-ui/src/views/system/user/UserModal.vue

@ -8,8 +8,8 @@
import { BasicModal, useModalInner } from '/@/components/Modal'; import { BasicModal, useModalInner } from '/@/components/Modal';
import { BasicForm, useForm } from '/@/components/Form/index'; import { BasicForm, useForm } from '/@/components/Form/index';
import { accountFormSchema } from './user.data'; import { accountFormSchema } from './user.data';
import { departList } from '/@/api/system/depart'; import { departList } from '/@/api/system/dept';
import { set } from '/@/api/system/user'; //import { set } from '/@/api/system/user';
export default defineComponent({ export default defineComponent({
name: 'UserModal', name: 'UserModal',

14
kicc-ui/src/views/system/user/index.vue

@ -1,9 +1,19 @@
<template> <template>
<PageWrapper dense contentFullHeight fixedHeight contentClass="flex"> <PageWrapper dense contentFullHeight fixedHeight contentClass="flex">
<DeptTree class="w-1/4 xl:w-1/5" @select="handleSelect" /> <DeptTree class="w-1/4 xl:w-1/5" @select="handleSelect"/>
<BasicTable @register="registerTable" class="w-3/4 xl:w-4/5" :searchInfo="searchInfo"> <BasicTable @register="registerTable" class="w-3/4 xl:w-4/5" :searchInfo="searchInfo">
<template #toolbar> <template #toolbar>
<a-button type="primary" @click="handleCreate">新增用户</a-button> <a-button type="primary" @click="handleCreate">新增用户</a-button>
<a-button v-auth="['role_edit']"
type="primary"
:disabled="state.single"
@click="handleEdit()"
>修改用户</a-button>
<a-button v-auth="['role_del']"
type="primary"
:disabled="state.multiple"
@click="handleDel()"
>删除用户</a-button>
</template> </template>
<template #action="{ record }"> <template #action="{ record }">
<TableAction <TableAction
@ -38,7 +48,7 @@
<script lang="ts"> <script lang="ts">
import { defineComponent, reactive } from 'vue'; import { defineComponent, reactive } from 'vue';
import { BasicTable, useTable, TableAction } from '/@/components/Table'; import { BasicTable, useTable, TableAction } from '/@/components/Table';
import { del, page } from '/@/api/system/user'; //import { del, page } from '/@/api/system/user';
import { PageWrapper } from '/@/components/Page'; import { PageWrapper } from '/@/components/Page';
import DeptTree from './DeptTree.vue'; import DeptTree from './DeptTree.vue';
import { useModal } from '/@/components/Modal'; import { useModal } from '/@/components/Modal';

1
kicc-ui/vite.config.ts

@ -75,6 +75,7 @@ export default ({ command, mode }: ConfigEnv): UserConfig => {
proxy: createProxy(VITE_PROXY), proxy: createProxy(VITE_PROXY),
}, },
build: { build: {
minify: 'terser',
// 设置最终构建的浏览器兼容目标 // 设置最终构建的浏览器兼容目标
target: 'es2015', target: 'es2015',
// 指定输出路径 // 指定输出路径

1034
kicc-ui/yarn.lock

File diff suppressed because it is too large Load Diff
Loading…
Cancel
Save