From ddff485d409d406dd69eeb076a259caf196e5d63 Mon Sep 17 00:00:00 2001 From: fmm <1442620801@qq.com> Date: Sun, 28 Jul 2024 15:31:21 +0800 Subject: [PATCH 01/16] =?UTF-8?q?feat:=20=E6=96=B0=E5=A2=9E=E7=94=A8?= =?UTF-8?q?=E6=88=B7=E7=AE=A1=E7=90=86=E6=A8=A1=E5=9D=97-=E6=9F=A5?= =?UTF-8?q?=E7=9C=8B=E6=89=80=E6=9C=89=E7=94=A8=E6=88=B7&=E5=88=86?= =?UTF-8?q?=E9=A1=B5&=E5=88=A0=E9=99=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../pro/template/tinyvue/src/api/user.ts | 6 +- .../tinyvue/src/components/menu/index.vue | 21 ++ .../pro/template/tinyvue/src/locale/en-US.ts | 6 + .../pro/template/tinyvue/src/locale/zh-CN.ts | 7 + .../src/router/routes/modules/userManager.ts | 41 ++++ .../tinyvue/src/views/userManager/index.vue | 5 + .../userManager/info/components/info-tab.vue | 199 ++++++++++++++++ .../src/views/userManager/info/index.vue | 61 +++++ .../views/userManager/info/locale/en-US.ts | 11 + .../views/userManager/info/locale/zh-CN.ts | 11 + .../setting/components/set-from.vue | 216 ++++++++++++++++++ .../src/views/userManager/setting/index.vue | 134 +++++++++++ .../views/userManager/setting/locale/en-US.ts | 14 ++ .../views/userManager/setting/locale/zh-CN.ts | 14 ++ 14 files changed, 743 insertions(+), 3 deletions(-) create mode 100644 packages/toolkits/pro/template/tinyvue/src/router/routes/modules/userManager.ts create mode 100644 packages/toolkits/pro/template/tinyvue/src/views/userManager/index.vue create mode 100644 packages/toolkits/pro/template/tinyvue/src/views/userManager/info/components/info-tab.vue create mode 100644 packages/toolkits/pro/template/tinyvue/src/views/userManager/info/index.vue create mode 100644 packages/toolkits/pro/template/tinyvue/src/views/userManager/info/locale/en-US.ts create mode 100644 packages/toolkits/pro/template/tinyvue/src/views/userManager/info/locale/zh-CN.ts create mode 100644 packages/toolkits/pro/template/tinyvue/src/views/userManager/setting/components/set-from.vue create mode 100644 packages/toolkits/pro/template/tinyvue/src/views/userManager/setting/index.vue create mode 100644 packages/toolkits/pro/template/tinyvue/src/views/userManager/setting/locale/en-US.ts create mode 100644 packages/toolkits/pro/template/tinyvue/src/views/userManager/setting/locale/zh-CN.ts diff --git a/packages/toolkits/pro/template/tinyvue/src/api/user.ts b/packages/toolkits/pro/template/tinyvue/src/api/user.ts index 628e9eb7..5cd83e3c 100644 --- a/packages/toolkits/pro/template/tinyvue/src/api/user.ts +++ b/packages/toolkits/pro/template/tinyvue/src/api/user.ts @@ -50,8 +50,8 @@ export function logout(data: LogoutData) { } // 获取全部用户 -export function getAllUser() { - return axios.get(`/api/user`); +export function getAllUser(page?: number, limit?: number) { + return axios.get(`/api/user?page=${page}&limit=${limit}`); } // 获取单个用户 @@ -59,7 +59,7 @@ export function getUserInfo(email: string) { return axios.get(`/api/user/info/${email}`); } -export function delUser(email: string) { +export function deleteUser(email: string) { return axios.delete(`/api/user/${email}`); } diff --git a/packages/toolkits/pro/template/tinyvue/src/components/menu/index.vue b/packages/toolkits/pro/template/tinyvue/src/components/menu/index.vue index 8e166201..b69f844c 100644 --- a/packages/toolkits/pro/template/tinyvue/src/components/menu/index.vue +++ b/packages/toolkits/pro/template/tinyvue/src/components/menu/index.vue @@ -33,6 +33,7 @@ IconUser, IconFiletext, IconApplication, + IconGroup, } from '@opentiny/vue-icon'; import { TreeMenu as tinyTreeMenu } from '@opentiny/vue'; import router from '@/router'; @@ -48,6 +49,7 @@ const iconUser = IconUser(); const iconFiletext = IconFiletext(); const iconApplication = IconApplication(); + const iconGroup = IconGroup(); const tree = ref(); const expandeArr = ref(); const routerTitle = [ @@ -189,6 +191,24 @@ icon: null, bold: 'title', }, + { + value: 'UserManager', + name: 'menu.userManager', + icon: iconGroup, + bold: 'main-title', + }, + { + value: 'AllInfo', + name: 'menu.userManager.info', + icon: null, + bold: 'title', + }, + { + value: 'AllSetting', + name: 'menu.userManager.setting', + icon: null, + bold: 'title', + }, ]; // 获取路由数据 @@ -258,6 +278,7 @@ 'Result', 'User', 'Cloud', + 'UserManager', ]; if (filter.indexOf(data.id) === -1) { router.push({ name: data.id }); diff --git a/packages/toolkits/pro/template/tinyvue/src/locale/en-US.ts b/packages/toolkits/pro/template/tinyvue/src/locale/en-US.ts index 723c8bc9..bf2786d6 100644 --- a/packages/toolkits/pro/template/tinyvue/src/locale/en-US.ts +++ b/packages/toolkits/pro/template/tinyvue/src/locale/en-US.ts @@ -24,6 +24,8 @@ import localeHello from '@/views/cloud/hello/locale/en-US'; import localeContracts from '@/views/cloud/contracts/locale/en-US'; +import localeUserManager from '@/views/userManager/info/locale/en-US'; + import localeSettings from './en-US/settings'; import localeHttpError from './en-US/httpError'; @@ -40,6 +42,9 @@ export default { 'menu.profile.detail': 'Basic details page', 'menu.visualization': 'Data Visualization', 'menu.user': 'User Center', + 'menu.userManager': 'User Manager', + 'menu.userManager.info': 'All User Info', + 'menu.userManager.setting': 'All User Setting', 'navbar.docs': 'Docs', 'navbar.action.locale': 'Switch to English', 'messageBox.switchRoles': 'Switch Roles', @@ -65,4 +70,5 @@ export default { ...localeHello, ...localeContracts, ...localeHttpError, + ...localeUserManager, }; diff --git a/packages/toolkits/pro/template/tinyvue/src/locale/zh-CN.ts b/packages/toolkits/pro/template/tinyvue/src/locale/zh-CN.ts index 84b1d13f..f1895398 100644 --- a/packages/toolkits/pro/template/tinyvue/src/locale/zh-CN.ts +++ b/packages/toolkits/pro/template/tinyvue/src/locale/zh-CN.ts @@ -24,10 +24,13 @@ import localeHello from '@/views/cloud/hello/locale/zh-CN'; import localeContracts from '@/views/cloud/contracts/locale/zh-CN'; +import localeUserManager from '@/views/userManager/info/locale/zh-CN'; + import localeSettings from './zh-CN/settings'; import localeHttpError from './zh-CN/httpError'; + export default { 'menu.board': '看板', 'menu.home': '监控页', @@ -40,6 +43,9 @@ export default { 'menu.profile.detail': '基础详情页', 'menu.visualization': '数据可视化', 'menu.user': '个人中心', + 'menu.userManager': '用户管理', + 'menu.userManager.info': '所有用户', + 'menu.userManager.setting': '修改信息', 'navbar.docs': '文档中心', 'navbar.action.locale': '切换为中文', 'messageBox.switchRoles': '切换角色', @@ -65,4 +71,5 @@ export default { ...localeHello, ...localeContracts, ...localeHttpError, + ...localeUserManager, }; diff --git a/packages/toolkits/pro/template/tinyvue/src/router/routes/modules/userManager.ts b/packages/toolkits/pro/template/tinyvue/src/router/routes/modules/userManager.ts new file mode 100644 index 00000000..1a0e004b --- /dev/null +++ b/packages/toolkits/pro/template/tinyvue/src/router/routes/modules/userManager.ts @@ -0,0 +1,41 @@ +import { RoleType } from '@/types/roleType'; + +export default { + path: 'userManager', + name: 'UserManager', + id: 'UserManager', + label: 'UserManager', + component: () => import('@/views/userManager/index.vue'), + meta: { + locale: 'menu.userManager', + requiresAuth: true, + order: 9, + roles: [RoleType.admin], + }, + children: [ + { + path: 'allInfo', + name: 'AllInfo', + id: 'AllInfo', + label: 'AllInfo', + component: () => import('@/views/userManager/info/index.vue'), + meta: { + locale: 'menu.userManager.info', + requiresAuth: true, + roles: [RoleType.admin], + }, + }, + { + path: 'allSetting', + name: 'AllSetting', + id: 'AllSetting', + label: 'AllSetting', + component: () => import('@/views/userManager/setting/index.vue'), + meta: { + locale: 'menu.userManager.setting', + requiresAuth: true, + roles: [RoleType.admin], + }, + }, + ], +}; diff --git a/packages/toolkits/pro/template/tinyvue/src/views/userManager/index.vue b/packages/toolkits/pro/template/tinyvue/src/views/userManager/index.vue new file mode 100644 index 00000000..6c71efda --- /dev/null +++ b/packages/toolkits/pro/template/tinyvue/src/views/userManager/index.vue @@ -0,0 +1,5 @@ + + + diff --git a/packages/toolkits/pro/template/tinyvue/src/views/userManager/info/components/info-tab.vue b/packages/toolkits/pro/template/tinyvue/src/views/userManager/info/components/info-tab.vue new file mode 100644 index 00000000..74c3f646 --- /dev/null +++ b/packages/toolkits/pro/template/tinyvue/src/views/userManager/info/components/info-tab.vue @@ -0,0 +1,199 @@ + + + + + diff --git a/packages/toolkits/pro/template/tinyvue/src/views/userManager/info/index.vue b/packages/toolkits/pro/template/tinyvue/src/views/userManager/info/index.vue new file mode 100644 index 00000000..eb8d9663 --- /dev/null +++ b/packages/toolkits/pro/template/tinyvue/src/views/userManager/info/index.vue @@ -0,0 +1,61 @@ + + + + + diff --git a/packages/toolkits/pro/template/tinyvue/src/views/userManager/info/locale/en-US.ts b/packages/toolkits/pro/template/tinyvue/src/views/userManager/info/locale/en-US.ts new file mode 100644 index 00000000..d202fdf1 --- /dev/null +++ b/packages/toolkits/pro/template/tinyvue/src/views/userManager/info/locale/en-US.ts @@ -0,0 +1,11 @@ +export default { + 'menu.allUser.info': 'All User Info', + 'userInfo.table.id': 'ID', + 'userInfo.table.name': 'Name', + 'userInfo.table.email': 'Email', + 'userInfo.table.createTime': 'CreateTime', + 'userInfo.table.updateTime': 'UpdateTime', + 'userInfo.table.operations': 'Operation', + 'userInfo.table.operations.update': 'Update', + 'userInfo.table.operations.delete': 'Delete', +}; diff --git a/packages/toolkits/pro/template/tinyvue/src/views/userManager/info/locale/zh-CN.ts b/packages/toolkits/pro/template/tinyvue/src/views/userManager/info/locale/zh-CN.ts new file mode 100644 index 00000000..401062d5 --- /dev/null +++ b/packages/toolkits/pro/template/tinyvue/src/views/userManager/info/locale/zh-CN.ts @@ -0,0 +1,11 @@ +export default { + 'menu.allUser.info': '所有用户', + 'userInfo.table.id': 'ID', + 'userInfo.table.name': '名称', + 'userInfo.table.email': '邮箱', + 'userInfo.table.createTime': '创建时间', + 'userInfo.table.updateTime': '更新时间', + 'userInfo.table.operations': '操作', + 'userInfo.table.operations.update': '修改', + 'userInfo.table.operations.delete': '删除', +}; diff --git a/packages/toolkits/pro/template/tinyvue/src/views/userManager/setting/components/set-from.vue b/packages/toolkits/pro/template/tinyvue/src/views/userManager/setting/components/set-from.vue new file mode 100644 index 00000000..ef5f5ecd --- /dev/null +++ b/packages/toolkits/pro/template/tinyvue/src/views/userManager/setting/components/set-from.vue @@ -0,0 +1,216 @@ + + + + + diff --git a/packages/toolkits/pro/template/tinyvue/src/views/userManager/setting/index.vue b/packages/toolkits/pro/template/tinyvue/src/views/userManager/setting/index.vue new file mode 100644 index 00000000..ddde8694 --- /dev/null +++ b/packages/toolkits/pro/template/tinyvue/src/views/userManager/setting/index.vue @@ -0,0 +1,134 @@ + + + + + diff --git a/packages/toolkits/pro/template/tinyvue/src/views/userManager/setting/locale/en-US.ts b/packages/toolkits/pro/template/tinyvue/src/views/userManager/setting/locale/en-US.ts new file mode 100644 index 00000000..c7139253 --- /dev/null +++ b/packages/toolkits/pro/template/tinyvue/src/views/userManager/setting/locale/en-US.ts @@ -0,0 +1,14 @@ +export default { + 'menu.allUser.setting': 'User Setting', + 'userSetting.cancel': 'Cancel', + 'userSetting.reset': 'Reset', + 'userSetting.department': 'Department:', + 'userSetting.position': 'Position:', + 'userSetting.type': 'Recruitment Type:', + 'userSetting.date': 'Trial Start and End Date:', + 'userSetting.during': 'Probation Period:', + 'userSetting.startTime': 'Labor Contract Start Date:', + 'userSetting.endTime': 'Labor Contract End Date:', + 'userSetting.first': 'Start Time', + 'userSetting.last': 'End Time', +}; diff --git a/packages/toolkits/pro/template/tinyvue/src/views/userManager/setting/locale/zh-CN.ts b/packages/toolkits/pro/template/tinyvue/src/views/userManager/setting/locale/zh-CN.ts new file mode 100644 index 00000000..b49008ab --- /dev/null +++ b/packages/toolkits/pro/template/tinyvue/src/views/userManager/setting/locale/zh-CN.ts @@ -0,0 +1,14 @@ +export default { + 'menu.allUser.setting': '用户设置', + 'userSetting.save': '保存', + 'userSetting.cancel': '取消', + 'userSetting.department': '所属部门:', + 'userSetting.position': '职位:', + 'userSetting.type': '招聘类型:', + 'userSetting.date': '试用起止日期:', + 'userSetting.during': '试用期时长:', + 'userSetting.startTime': '劳动合同开始日期:', + 'userSetting.endTime': '劳动合同结束日期:', + 'userSetting.first': '开始时间', + 'userSetting.last': '结束时间', +}; From b198d25d58fdba9c61c4923dcc55480adf0fa076 Mon Sep 17 00:00:00 2001 From: fmm <1442620801@qq.com> Date: Sun, 28 Jul 2024 17:53:09 +0800 Subject: [PATCH 02/16] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D&=E5=A2=9E?= =?UTF-8?q?=E5=8A=A0=E7=94=A8=E6=88=B7=E4=BF=A1=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../userManager/info/components/info-tab.vue | 216 +++++++++++------- .../views/userManager/info/locale/en-US.ts | 12 + .../views/userManager/info/locale/zh-CN.ts | 12 + 3 files changed, 157 insertions(+), 83 deletions(-) diff --git a/packages/toolkits/pro/template/tinyvue/src/views/userManager/info/components/info-tab.vue b/packages/toolkits/pro/template/tinyvue/src/views/userManager/info/components/info-tab.vue index 74c3f646..94c4bddc 100644 --- a/packages/toolkits/pro/template/tinyvue/src/views/userManager/info/components/info-tab.vue +++ b/packages/toolkits/pro/template/tinyvue/src/views/userManager/info/components/info-tab.vue @@ -1,84 +1,132 @@ @@ -94,7 +142,7 @@ import { } from '@opentiny/vue'; import {IconChevronDown} from '@opentiny/vue-icon'; import {useUserStore} from '@/store'; -import { getAllUser, deleteUser } from '@/api/user'; +import {getAllUser, deleteUser} from '@/api/user'; // 加载效果 @@ -142,7 +190,7 @@ const fetchData = async ( background: 'rgba(0, 0, 0, 0.7)', }); try { - const {data} = await getAllUser(params.pageIndex,params.pageSize); + const {data} = await getAllUser(params.pageIndex, params.pageSize); const total = data.meta.totalItems; return { result: data.items, @@ -163,8 +211,8 @@ const fetchDataOption = reactive({ }, }); -const handleDelete = (email:string)=>{ - deleteUser(email).then((res)=>{ +const handleDelete = (email: string) => { + deleteUser(email).then((res) => { Modal.message({ message: '已删除', status: 'success', @@ -180,6 +228,7 @@ const handleDelete = (email:string)=>{ padding: 15px; overflow: hidden; } + .table { padding-bottom: 20px; background-color: #fff; @@ -190,6 +239,7 @@ const handleDelete = (email:string)=>{ &-delete { color: red; } + &-update { padding-right: 10px; color: #1890ff; diff --git a/packages/toolkits/pro/template/tinyvue/src/views/userManager/info/locale/en-US.ts b/packages/toolkits/pro/template/tinyvue/src/views/userManager/info/locale/en-US.ts index d202fdf1..419b3af8 100644 --- a/packages/toolkits/pro/template/tinyvue/src/views/userManager/info/locale/en-US.ts +++ b/packages/toolkits/pro/template/tinyvue/src/views/userManager/info/locale/en-US.ts @@ -3,6 +3,18 @@ export default { 'userInfo.table.id': 'ID', 'userInfo.table.name': 'Name', 'userInfo.table.email': 'Email', + 'userInfo.table.department': 'Department', + 'userInfo.table.employeeType': 'EmployeeType', + 'userInfo.table.job': 'Job', + 'userInfo.table.probation': 'Probation', + 'userInfo.table.probationStart': 'ProbationStart', + 'userInfo.table.probationEnd': 'ProbationEnd', + 'userInfo.table.probationDuration': 'ProbationDuration', + 'userInfo.table.protocol': 'Protocol', + 'userInfo.table.protocolStart': 'ProtocolStart', + 'userInfo.table.protocolEnd': 'ProtocolEnd', + 'userInfo.table.address': 'Address', + 'userInfo.table.status': 'Status', 'userInfo.table.createTime': 'CreateTime', 'userInfo.table.updateTime': 'UpdateTime', 'userInfo.table.operations': 'Operation', diff --git a/packages/toolkits/pro/template/tinyvue/src/views/userManager/info/locale/zh-CN.ts b/packages/toolkits/pro/template/tinyvue/src/views/userManager/info/locale/zh-CN.ts index 401062d5..78108aba 100644 --- a/packages/toolkits/pro/template/tinyvue/src/views/userManager/info/locale/zh-CN.ts +++ b/packages/toolkits/pro/template/tinyvue/src/views/userManager/info/locale/zh-CN.ts @@ -3,6 +3,18 @@ export default { 'userInfo.table.id': 'ID', 'userInfo.table.name': '名称', 'userInfo.table.email': '邮箱', + 'userInfo.table.department': '部门', + 'userInfo.table.employeeType': '招聘类型', + 'userInfo.table.job': '职位', + 'userInfo.table.probation': '试用期', + 'userInfo.table.probationStart': '试用期开始日期', + 'userInfo.table.probationEnd': '试用期结束日期', + 'userInfo.table.probationDuration': '试用期时长', + 'userInfo.table.protocol': '劳动合同', + 'userInfo.table.protocolStart': '劳动合同开始日期', + 'userInfo.table.protocolEnd': '劳动合同结束日期', + 'userInfo.table.address': '地址', + 'userInfo.table.status': '状态', 'userInfo.table.createTime': '创建时间', 'userInfo.table.updateTime': '更新时间', 'userInfo.table.operations': '操作', From 9f24466afc4c789da158358428f88ad1099ff602 Mon Sep 17 00:00:00 2001 From: fmm <1442620801@qq.com> Date: Sun, 28 Jul 2024 17:54:45 +0800 Subject: [PATCH 03/16] =?UTF-8?q?fix:=20=E5=90=8E=E7=AB=AF=E6=89=A9?= =?UTF-8?q?=E5=85=85=E7=94=A8=E6=88=B7=E4=BF=A1=E6=81=AF=E5=8F=8A=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../server/nestJs/libs/models/src/user.ts | 18 ++++++++++++++++++ .../nestJs/src/user/dto/create-user.dto.ts | 9 +++++++++ .../server/nestJs/src/user/user.service.ts | 18 ++++++++++++++++-- 3 files changed, 43 insertions(+), 2 deletions(-) diff --git a/packages/toolkits/pro/template/server/nestJs/libs/models/src/user.ts b/packages/toolkits/pro/template/server/nestJs/libs/models/src/user.ts index e7e0c235..4cd76425 100644 --- a/packages/toolkits/pro/template/server/nestJs/libs/models/src/user.ts +++ b/packages/toolkits/pro/template/server/nestJs/libs/models/src/user.ts @@ -29,6 +29,24 @@ export class User { @ManyToMany(() => Role) @JoinTable({ name: 'user_role' }) role: Role[]; + @Column({nullable: true}) + department: string; + @Column({nullable: true}) + employeeType: string; + @Column({type: 'timestamp',nullable: true}) + probationStart: Date; + @Column({type: 'timestamp',nullable: true}) + probationEnd: Date; + @Column({nullable: true}) + probationDuration: string; + @Column({type: 'timestamp',nullable: true}) + protocolStart: Date; + @Column({type: 'timestamp',nullable: true}) + protocolEnd: Date; + @Column({nullable: true}) + address: string; + @Column({nullable: true}) + status: number; @CreateDateColumn() createTime: Date; @UpdateDateColumn() diff --git a/packages/toolkits/pro/template/server/nestJs/src/user/dto/create-user.dto.ts b/packages/toolkits/pro/template/server/nestJs/src/user/dto/create-user.dto.ts index c4d34b34..f2ddae6d 100644 --- a/packages/toolkits/pro/template/server/nestJs/src/user/dto/create-user.dto.ts +++ b/packages/toolkits/pro/template/server/nestJs/src/user/dto/create-user.dto.ts @@ -14,4 +14,13 @@ export class CreateUserDto { }) password: string; roleIds: number[] = []; + department?: string; + employeeType?: string; + probationStart?: Date; + probationEnd?: Date; + probationDuration?: string; + protocolStart?: Date; + protocolEnd?: Date; + address?: string; + status?: number; } diff --git a/packages/toolkits/pro/template/server/nestJs/src/user/user.service.ts b/packages/toolkits/pro/template/server/nestJs/src/user/user.service.ts index eb0a064b..c87929a9 100644 --- a/packages/toolkits/pro/template/server/nestJs/src/user/user.service.ts +++ b/packages/toolkits/pro/template/server/nestJs/src/user/user.service.ts @@ -20,7 +20,9 @@ export class UserService { private readonly authService: AuthService ) {} async create(createUserDto: CreateUserDto, isInit: boolean) { - const { email, password, roleIds = [], username } = createUserDto; + const { email, password, roleIds = [], username, + department, employeeType, probationStart, probationEnd, probationDuration, + protocolStart,protocolEnd,address,status} = createUserDto; const userInfo = this.getUserInfo(email); if (isInit == true && (await userInfo)) { return userInfo; @@ -40,6 +42,15 @@ export class UserService { name: username, role: await roles, deleteAt: 0, + department: department, + employeeType: employeeType, + protocolStart: protocolStart, + protocolEnd: protocolEnd, + probationEnd: probationEnd, + probationStart: probationStart, + probationDuration: probationDuration, + address: address, + status: status, }); return this.userRep.save(user); } catch (err) { @@ -53,12 +64,15 @@ export class UserService { //获取所有用户信息 async getAllUser(paginationQuery: PaginationQueryDto): Promise { const { page, limit } = paginationQuery; // 从DTO获取分页参数 + const relations = ['role', 'role.permission'] return await paginate(this.userRep, { page: Number(page) || Number(process.env.PAGITION_PAGE), limit: Number(limit) || Number(process.env.PAGITION_LIMIT), },{ where: {deleteAt: 0}, - select: ['id', 'name', 'email', 'createTime', 'updateTime'], + select: ['id', 'name', 'email', 'department', 'employeeType', 'protocolStart', 'protocolEnd', + 'probationEnd', 'probationStart', 'probationDuration', 'address', 'status'], + relations, }); } From e4a34630fe947b6a8fda0bc186cda9698182b788 Mon Sep 17 00:00:00 2001 From: fmm <1442620801@qq.com> Date: Mon, 29 Jul 2024 16:30:38 +0800 Subject: [PATCH 04/16] =?UTF-8?q?fix:=20=E5=89=8D=E7=AB=AF=E8=A1=A5?= =?UTF-8?q?=E5=85=85=E8=A1=A8=E6=A0=BC=E5=86=85=E5=AE=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../userManager/info/components/info-tab.vue | 43 ++++++++++++++++--- 1 file changed, 36 insertions(+), 7 deletions(-) diff --git a/packages/toolkits/pro/template/tinyvue/src/views/userManager/info/components/info-tab.vue b/packages/toolkits/pro/template/tinyvue/src/views/userManager/info/components/info-tab.vue index 94c4bddc..2837e350 100644 --- a/packages/toolkits/pro/template/tinyvue/src/views/userManager/info/components/info-tab.vue +++ b/packages/toolkits/pro/template/tinyvue/src/views/userManager/info/components/info-tab.vue @@ -25,13 +25,43 @@ {{ $t(`${data.row.email}`) }}
  • - {{ $t('userInfo.table.createTime') }}: - {{ $t(`${data.row.createTime}`) }} + {{ $t('userInfo.table.department') }}: + {{ $t(`${data.row.department}`) }}
  • - {{ $t('userInfo.table.updateTime') }}: - {{ $t(`${data.row.updateTime}`) }} + {{ $t('userInfo.table.employeeType') }}: + {{ $t(`${data.row.employeeType}`) }}
  • +
  • + {{ $t('userInfo.table.job') }}: + {{ $t(`${data.row.role[0].name}`) }} +
  • +
  • + {{ $t('userInfo.table.probationStart') }}: + {{ $t(`${data.row.probationStart}`) }} +
  • +
  • + {{ $t('userInfo.table.probationEnd') }}: + {{ $t(`${data.row.probationEnd}`) }} +
  • +
  • + {{ $t('userInfo.table.probationDuration') }}: + {{ $t(`${data.row.probationDuration}`) }} +
  • +
  • + {{ $t('userInfo.table.protocolStart') }}: + {{ $t(`${data.row.protocolStart}`) }} +
  • + {{ $t('userInfo.table.protocolEnd') }}: + {{ $t(`${data.row.protocolEnd}`) }} +
  • + {{ $t('userInfo.table.address') }}: + {{ $t(`${data.row.address}`) }} +
  • + {{ $t('userInfo.table.status') }}: + 已启用 + 已禁用 +
  • @@ -103,13 +133,12 @@ Date: Mon, 29 Jul 2024 16:33:03 +0800 Subject: [PATCH 05/16] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=E6=97=A5?= =?UTF-8?q?=E6=9C=9F=E6=A0=BC=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../server/nestJs/libs/models/src/user.ts | 8 +- .../template/server/nestJs/src/app.module.ts | 1 + .../nestJs/src/user/dto/create-user.dto.ts | 8 +- .../server/nestJs/src/user/user.service.ts | 73 +++++++++++++------ 4 files changed, 59 insertions(+), 31 deletions(-) diff --git a/packages/toolkits/pro/template/server/nestJs/libs/models/src/user.ts b/packages/toolkits/pro/template/server/nestJs/libs/models/src/user.ts index 4cd76425..5e36db27 100644 --- a/packages/toolkits/pro/template/server/nestJs/libs/models/src/user.ts +++ b/packages/toolkits/pro/template/server/nestJs/libs/models/src/user.ts @@ -34,15 +34,15 @@ export class User { @Column({nullable: true}) employeeType: string; @Column({type: 'timestamp',nullable: true}) - probationStart: Date; + probationStart: string; @Column({type: 'timestamp',nullable: true}) - probationEnd: Date; + probationEnd: string; @Column({nullable: true}) probationDuration: string; @Column({type: 'timestamp',nullable: true}) - protocolStart: Date; + protocolStart: string; @Column({type: 'timestamp',nullable: true}) - protocolEnd: Date; + protocolEnd: string; @Column({nullable: true}) address: string; @Column({nullable: true}) diff --git a/packages/toolkits/pro/template/server/nestJs/src/app.module.ts b/packages/toolkits/pro/template/server/nestJs/src/app.module.ts index ffe940c1..26c181bf 100644 --- a/packages/toolkits/pro/template/server/nestJs/src/app.module.ts +++ b/packages/toolkits/pro/template/server/nestJs/src/app.module.ts @@ -112,6 +112,7 @@ export class AppModule implements OnModuleInit { password: 'admin', roleIds: [role.id], username: 'admin', + status: 1, }, isInit ); diff --git a/packages/toolkits/pro/template/server/nestJs/src/user/dto/create-user.dto.ts b/packages/toolkits/pro/template/server/nestJs/src/user/dto/create-user.dto.ts index f2ddae6d..75f20c00 100644 --- a/packages/toolkits/pro/template/server/nestJs/src/user/dto/create-user.dto.ts +++ b/packages/toolkits/pro/template/server/nestJs/src/user/dto/create-user.dto.ts @@ -16,11 +16,11 @@ export class CreateUserDto { roleIds: number[] = []; department?: string; employeeType?: string; - probationStart?: Date; - probationEnd?: Date; + probationStart?: string; + probationEnd?: string; probationDuration?: string; - protocolStart?: Date; - protocolEnd?: Date; + protocolStart?: string; + protocolEnd?: string; address?: string; status?: number; } diff --git a/packages/toolkits/pro/template/server/nestJs/src/user/user.service.ts b/packages/toolkits/pro/template/server/nestJs/src/user/user.service.ts index c87929a9..366207a0 100644 --- a/packages/toolkits/pro/template/server/nestJs/src/user/user.service.ts +++ b/packages/toolkits/pro/template/server/nestJs/src/user/user.service.ts @@ -1,13 +1,13 @@ -import { HttpException, HttpStatus, Injectable } from '@nestjs/common'; -import { CreateUserDto } from './dto/create-user.dto'; -import { UpdateUserDto } from './dto/update-user.dto'; -import { PaginationQueryDto } from "./dto/pagination-query.dto"; -import { InjectRepository } from '@nestjs/typeorm'; -import { Role, User } from '@app/models'; -import { In, Repository } from 'typeorm'; +import {HttpException, HttpStatus, Injectable} from '@nestjs/common'; +import {CreateUserDto} from './dto/create-user.dto'; +import {UpdateUserDto} from './dto/update-user.dto'; +import {PaginationQueryDto} from "./dto/pagination-query.dto"; +import {InjectRepository} from '@nestjs/typeorm'; +import {Role, User} from '@app/models'; +import {In, Repository} from 'typeorm'; import * as crypto from 'crypto'; -import { AuthService } from '../auth/auth.service'; -import { paginate, IPaginationOptions } from 'nestjs-typeorm-paginate'; +import {AuthService} from '../auth/auth.service'; +import {paginate, IPaginationOptions} from 'nestjs-typeorm-paginate'; import * as process from "process"; @Injectable() @@ -18,11 +18,15 @@ export class UserService { @InjectRepository(Role) private roleRep: Repository, private readonly authService: AuthService - ) {} + ) { + } + async create(createUserDto: CreateUserDto, isInit: boolean) { - const { email, password, roleIds = [], username, - department, employeeType, probationStart, probationEnd, probationDuration, - protocolStart,protocolEnd,address,status} = createUserDto; + const { + email, password, roleIds = [], username, + department, employeeType, probationStart, probationEnd, probationDuration, + protocolStart, protocolEnd, address, status + } = createUserDto; const userInfo = this.getUserInfo(email); if (isInit == true && (await userInfo)) { return userInfo; @@ -63,22 +67,44 @@ export class UserService { //获取所有用户信息 async getAllUser(paginationQuery: PaginationQueryDto): Promise { - const { page, limit } = paginationQuery; // 从DTO获取分页参数 + const {page, limit} = paginationQuery; // 从DTO获取分页参数 const relations = ['role', 'role.permission'] - return await paginate(this.userRep, { + const result = await paginate(this.userRep, { page: Number(page) || Number(process.env.PAGITION_PAGE), limit: Number(limit) || Number(process.env.PAGITION_LIMIT), - },{ + }, { where: {deleteAt: 0}, select: ['id', 'name', 'email', 'department', 'employeeType', 'protocolStart', 'protocolEnd', - 'probationEnd', 'probationStart', 'probationDuration', 'address', 'status'], + 'probationEnd', 'probationStart', 'probationDuration', 'address', 'status'], relations, }); + for (const user of result.items) { + if (user.probationStart !== null) { + user.probationStart = await this.formatDateToDay(new Date(user.probationStart)); + } + if (user.probationEnd !== null) { + user.probationEnd = await this.formatDateToDay(new Date(user.probationEnd)); + } + if (user.protocolStart !== null) { + user.protocolStart = await this.formatDateToDay(new Date(user.protocolStart)); + } + if (user.protocolEnd !== null) { + user.protocolEnd = await this.formatDateToDay(new Date(user.protocolEnd)); + } + } + return result; + } + + async formatDateToDay(date: { getFullYear: () => any; getMonth: () => number; getDate: () => any; }) { + const year = date.getFullYear(); + const month = String(date.getMonth() + 1).padStart(2, '0'); // 月份是从0开始的 + const day = String(date.getDate()).padStart(2, '0'); + return `${year}-${month}-${day}`; } async getUserInfo(email: string, relations: string[] = []) { return await this.userRep.findOne({ - where: { email, deleteAt: 0 }, + where: {email, deleteAt: 0}, select: [ 'id', 'name', @@ -93,11 +119,11 @@ export class UserService { } async getUserPermission(token: string, userInfo: User) { - const { email } = userInfo; - const { role } = (await this.getUserInfo(email, [ + const {email} = userInfo; + const {role} = (await this.getUserInfo(email, [ 'role', 'role.permission', - ])) ?? { role: [] as Role[] }; + ])) ?? {role: [] as Role[]}; const permission = role.flatMap((r) => r.permission); const permissionNames = permission.map((p) => p.name); return [...new Set([...permissionNames])]; @@ -110,6 +136,7 @@ export class UserService { .toString('hex'); return newHash === storedHash; } + //修改密码后加密 async encry(value: string, salt: string) { return crypto.pbkdf2Sync(value, salt, 1000, 18, 'sha256').toString('hex'); @@ -126,9 +153,9 @@ export class UserService { //修改密码 async updateUserPwd(updateUserDto: UpdateUserDto) { - const { email, newPassword, oldPassword } = updateUserDto; + const {email, newPassword, oldPassword} = updateUserDto; const user = this.userRep.findOne({ - where: { email, deleteAt: 0 }, + where: {email, deleteAt: 0}, select: [ 'id', 'name', From b9b1e0734cdb578d8f5fddc5f731ce4401e99549 Mon Sep 17 00:00:00 2001 From: fmm <1442620801@qq.com> Date: Tue, 30 Jul 2024 19:57:13 +0800 Subject: [PATCH 06/16] =?UTF-8?q?feat:=20=E6=96=B0=E5=A2=9E=E7=94=A8?= =?UTF-8?q?=E6=88=B7=E4=BF=A1=E6=81=AF=E4=BF=AE=E6=94=B9=E9=A1=B5=E9=9D=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../pro/template/tinyvue/src/api/role.ts | 7 + .../pro/template/tinyvue/src/api/user.ts | 4 +- .../pro/template/tinyvue/src/locale/en-US.ts | 3 + .../pro/template/tinyvue/src/locale/zh-CN.ts | 3 + .../tinyvue/src/store/modules/user/index.ts | 14 +- .../src/views/form/step/components/head.vue | 2 +- .../userManager/info/components/info-tab.vue | 29 +- .../userManager/setting/components/head.vue | 164 +++++++ .../setting/components/set-from.vue | 88 +++- .../src/views/userManager/setting/index.vue | 401 ++++++++++++++---- .../views/userManager/setting/locale/en-US.ts | 3 + .../views/userManager/setting/locale/zh-CN.ts | 3 + 12 files changed, 593 insertions(+), 128 deletions(-) create mode 100644 packages/toolkits/pro/template/tinyvue/src/api/role.ts create mode 100644 packages/toolkits/pro/template/tinyvue/src/views/userManager/setting/components/head.vue diff --git a/packages/toolkits/pro/template/tinyvue/src/api/role.ts b/packages/toolkits/pro/template/tinyvue/src/api/role.ts new file mode 100644 index 00000000..089039c5 --- /dev/null +++ b/packages/toolkits/pro/template/tinyvue/src/api/role.ts @@ -0,0 +1,7 @@ +import axios from "axios"; + + + +export function getRoles() { + return axios.get('/api/role'); +} diff --git a/packages/toolkits/pro/template/tinyvue/src/api/user.ts b/packages/toolkits/pro/template/tinyvue/src/api/user.ts index 5cd83e3c..963ac3ff 100644 --- a/packages/toolkits/pro/template/tinyvue/src/api/user.ts +++ b/packages/toolkits/pro/template/tinyvue/src/api/user.ts @@ -63,8 +63,8 @@ export function deleteUser(email: string) { return axios.delete(`/api/user/${email}`); } -export function updateUserInfo(data: UserInfo) { - return axios.put(`/api/user/userInfo`, data); +export function updateUserInfo(data: any) { + return axios.patch('/api/user/update', data); } export function getUserData(data?: UserData) { diff --git a/packages/toolkits/pro/template/tinyvue/src/locale/en-US.ts b/packages/toolkits/pro/template/tinyvue/src/locale/en-US.ts index bf2786d6..dbc6c7eb 100644 --- a/packages/toolkits/pro/template/tinyvue/src/locale/en-US.ts +++ b/packages/toolkits/pro/template/tinyvue/src/locale/en-US.ts @@ -26,6 +26,8 @@ import localeContracts from '@/views/cloud/contracts/locale/en-US'; import localeUserManager from '@/views/userManager/info/locale/en-US'; +import localeUserManagerSetting from '@/views/userManager/setting/locale/en-US'; + import localeSettings from './en-US/settings'; import localeHttpError from './en-US/httpError'; @@ -71,4 +73,5 @@ export default { ...localeContracts, ...localeHttpError, ...localeUserManager, + ...localeUserManagerSetting, }; diff --git a/packages/toolkits/pro/template/tinyvue/src/locale/zh-CN.ts b/packages/toolkits/pro/template/tinyvue/src/locale/zh-CN.ts index f1895398..6acf514d 100644 --- a/packages/toolkits/pro/template/tinyvue/src/locale/zh-CN.ts +++ b/packages/toolkits/pro/template/tinyvue/src/locale/zh-CN.ts @@ -26,6 +26,8 @@ import localeContracts from '@/views/cloud/contracts/locale/zh-CN'; import localeUserManager from '@/views/userManager/info/locale/zh-CN'; +import localeUserManagerSetting from '@/views/userManager/setting/locale/zh-CN'; + import localeSettings from './zh-CN/settings'; import localeHttpError from './zh-CN/httpError'; @@ -72,4 +74,5 @@ export default { ...localeContracts, ...localeHttpError, ...localeUserManager, + ...localeUserManagerSetting, }; diff --git a/packages/toolkits/pro/template/tinyvue/src/store/modules/user/index.ts b/packages/toolkits/pro/template/tinyvue/src/store/modules/user/index.ts index 2eae9d3a..78d16c5b 100644 --- a/packages/toolkits/pro/template/tinyvue/src/store/modules/user/index.ts +++ b/packages/toolkits/pro/template/tinyvue/src/store/modules/user/index.ts @@ -84,10 +84,18 @@ const useUserStore = defineStore('user', { const userInfo = { id: userRes.data.id, name:userRes.data.name, - role:userRes.data.role[0].name, - createTime:userRes.data.createTime, - updateTime:userRes.data.updateTime, email:userRes.data.email, + role:userRes.data.role[0].name, + department: userRes.data.department, + employeeType: userRes.data.employeeType, + job: userRes.data.role[0].name, + probationStart: userRes.data.probationStart, + probationEnd: userRes.data.probationEnd, + probationDuration: userRes.data.probationDuration, + protocolStart: userRes.data.protocolStart, + protocolEnd: userRes.data.protocolEnd, + address: userRes.data.address, + status: userRes.data.status, } this.setInfo(userInfo); } catch (err) { diff --git a/packages/toolkits/pro/template/tinyvue/src/views/form/step/components/head.vue b/packages/toolkits/pro/template/tinyvue/src/views/form/step/components/head.vue index b46e549b..08e585d6 100644 --- a/packages/toolkits/pro/template/tinyvue/src/views/form/step/components/head.vue +++ b/packages/toolkits/pro/template/tinyvue/src/views/form/step/components/head.vue @@ -3,7 +3,7 @@ user

    {{ $t('stepForm.head.admin') }}

    -

    {{ userStore.userInfo.username }}

    +

    {{ userStore.userInfo.name }}

    diff --git a/packages/toolkits/pro/template/tinyvue/src/views/userManager/info/components/info-tab.vue b/packages/toolkits/pro/template/tinyvue/src/views/userManager/info/components/info-tab.vue index 2837e350..65bcaf36 100644 --- a/packages/toolkits/pro/template/tinyvue/src/views/userManager/info/components/info-tab.vue +++ b/packages/toolkits/pro/template/tinyvue/src/views/userManager/info/components/info-tab.vue @@ -88,12 +88,12 @@
    @@ -103,32 +103,32 @@ @@ -146,7 +146,7 @@ align="center" > diff --git a/packages/toolkits/pro/template/tinyvue/src/views/userManager/setting/locale/en-US.ts b/packages/toolkits/pro/template/tinyvue/src/views/userManager/setting/locale/en-US.ts index c7139253..4d5d2626 100644 --- a/packages/toolkits/pro/template/tinyvue/src/views/userManager/setting/locale/en-US.ts +++ b/packages/toolkits/pro/template/tinyvue/src/views/userManager/setting/locale/en-US.ts @@ -11,4 +11,7 @@ export default { 'userSetting.endTime': 'Labor Contract End Date:', 'userSetting.first': 'Start Time', 'userSetting.last': 'End Time', + 'userSetting.name': 'UserName', + 'userSetting.address': 'Address', + 'userSetting.status': 'Status', }; diff --git a/packages/toolkits/pro/template/tinyvue/src/views/userManager/setting/locale/zh-CN.ts b/packages/toolkits/pro/template/tinyvue/src/views/userManager/setting/locale/zh-CN.ts index b49008ab..2823c288 100644 --- a/packages/toolkits/pro/template/tinyvue/src/views/userManager/setting/locale/zh-CN.ts +++ b/packages/toolkits/pro/template/tinyvue/src/views/userManager/setting/locale/zh-CN.ts @@ -11,4 +11,7 @@ export default { 'userSetting.endTime': '劳动合同结束日期:', 'userSetting.first': '开始时间', 'userSetting.last': '结束时间', + 'userSetting.name': '用户名', + 'userSetting.address': '地址', + 'userSetting.status': '状态', }; From b11d3fb3319326ee356a3eb37db2eb13aed3589c Mon Sep 17 00:00:00 2001 From: fmm <1442620801@qq.com> Date: Tue, 30 Jul 2024 19:58:22 +0800 Subject: [PATCH 07/16] =?UTF-8?q?feat:=20nest=E6=96=B0=E5=A2=9E=E7=94=A8?= =?UTF-8?q?=E6=88=B7=E4=BF=A1=E6=81=AF=E4=BF=AE=E6=94=B9=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../nestJs/src/user/dto/update-user.dto.ts | 18 +++-- .../server/nestJs/src/user/user.controller.ts | 2 +- .../server/nestJs/src/user/user.service.ts | 75 ++++++++++++------- 3 files changed, 62 insertions(+), 33 deletions(-) diff --git a/packages/toolkits/pro/template/server/nestJs/src/user/dto/update-user.dto.ts b/packages/toolkits/pro/template/server/nestJs/src/user/dto/update-user.dto.ts index dd83a3aa..d23d2b00 100644 --- a/packages/toolkits/pro/template/server/nestJs/src/user/dto/update-user.dto.ts +++ b/packages/toolkits/pro/template/server/nestJs/src/user/dto/update-user.dto.ts @@ -3,12 +3,18 @@ import { CreateUserDto } from './create-user.dto'; import { IsNotEmpty } from 'class-validator'; export class UpdateUserDto extends PartialType(CreateUserDto) { - @IsNotEmpty({ - message: '旧密码不能为空', - }) oldPassword: string; - @IsNotEmpty({ - message: '新密码不能为空', - }) newPassword: string; + email: string; + roleIds: number[] = []; + department?: string; + employeeType?: string; + probationStart?: string; + probationEnd?: string; + probationDuration?: string; + protocolStart?: string; + protocolEnd?: string; + address?: string; + status?: number; + name?: string; } diff --git a/packages/toolkits/pro/template/server/nestJs/src/user/user.controller.ts b/packages/toolkits/pro/template/server/nestJs/src/user/user.controller.ts index 6f325945..e4f507e3 100644 --- a/packages/toolkits/pro/template/server/nestJs/src/user/user.controller.ts +++ b/packages/toolkits/pro/template/server/nestJs/src/user/user.controller.ts @@ -35,7 +35,7 @@ export class UserController { @Patch('/update') @Permission('user::update') async UpdateUser(@Body() body: UpdateUserDto) { - return this.userService.updateUserPwd(body); + return this.userService.updateUserInfo(body); } @Get() @Permission('user::query') diff --git a/packages/toolkits/pro/template/server/nestJs/src/user/user.service.ts b/packages/toolkits/pro/template/server/nestJs/src/user/user.service.ts index 366207a0..9331f41a 100644 --- a/packages/toolkits/pro/template/server/nestJs/src/user/user.service.ts +++ b/packages/toolkits/pro/template/server/nestJs/src/user/user.service.ts @@ -95,7 +95,11 @@ export class UserService { return result; } - async formatDateToDay(date: { getFullYear: () => any; getMonth: () => number; getDate: () => any; }) { + async formatDateToDay(date: { + getFullYear: () => any; + getMonth: () => number; + getDate: () => any; + }) { const year = date.getFullYear(); const month = String(date.getMonth() + 1).padStart(2, '0'); // 月份是从0开始的 const day = String(date.getDate()).padStart(2, '0'); @@ -103,19 +107,27 @@ export class UserService { } async getUserInfo(email: string, relations: string[] = []) { - return await this.userRep.findOne({ + const user = await this.userRep.findOne({ where: {email, deleteAt: 0}, select: [ - 'id', - 'name', - 'email', - 'createTime', - 'updateTime', - 'role', - 'deleteAt', + 'id', 'name', 'email', 'department', 'employeeType', 'protocolStart', 'protocolEnd', + 'probationEnd', 'probationStart', 'probationDuration', 'address', 'status' ], relations, }); + if (user.probationStart !== null) { + user.probationStart = await this.formatDateToDay(new Date(user.probationStart)); + } + if (user.probationEnd !== null) { + user.probationEnd = await this.formatDateToDay(new Date(user.probationEnd)); + } + if (user.protocolStart !== null) { + user.protocolStart = await this.formatDateToDay(new Date(user.protocolStart)); + } + if (user.protocolEnd !== null) { + user.protocolEnd = await this.formatDateToDay(new Date(user.protocolEnd)); + } + return user; } async getUserPermission(token: string, userInfo: User) { @@ -169,29 +181,40 @@ export class UserService { ], }); if (user) { - if ( - !(await this.verifyPassword( - oldPassword, - ( - await user - ).password, - ( - await user - ).salt - )) - ) { + if (!(await this.verifyPassword(oldPassword, (await user).password, (await user).salt))) { throw new HttpException('旧密码错误', HttpStatus.BAD_REQUEST); } else { - (await user).password = await this.encry( - newPassword, - ( - await user - ).salt - ); + (await user).password = await this.encry(newPassword, (await user).salt); await this.userRep.save(await user); await this.authService.logout(email); return; } } } + + async updateUserInfo(updateUserDto: UpdateUserDto){ + const {email,roleIds,department,employeeType,probationStart,probationEnd, + probationDuration,protocolStart,protocolEnd,address,status,name} = updateUserDto; + const user = this.getUserInfo(email); + const roles = this.roleRep.find({ + where: { + id: In(roleIds), + }, + }); + if(user){ + (await user).name = name; + (await user).department = department; + (await user).employeeType = employeeType; + (await user).probationStart = probationStart; + (await user).probationEnd = probationEnd; + (await user).probationDuration =probationDuration; + (await user).protocolStart = protocolStart; + (await user).protocolEnd = protocolEnd; + (await user).address = address; + (await user).status = status; + (await user).role = await roles; + } + return await this.userRep.save(await user); + } + } From 0c1a369036ea11be1e87899c88b328d5da5cda68 Mon Sep 17 00:00:00 2001 From: fmm <1442620801@qq.com> Date: Tue, 30 Jul 2024 20:01:59 +0800 Subject: [PATCH 08/16] =?UTF-8?q?fix:=20=E6=A3=80=E8=A7=86=E6=84=8F?= =?UTF-8?q?=E8=A7=81=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/views/userManager/info/components/info-tab.vue | 1 - .../pro/template/tinyvue/src/views/userManager/info/index.vue | 4 ++-- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/packages/toolkits/pro/template/tinyvue/src/views/userManager/info/components/info-tab.vue b/packages/toolkits/pro/template/tinyvue/src/views/userManager/info/components/info-tab.vue index 65bcaf36..82a37922 100644 --- a/packages/toolkits/pro/template/tinyvue/src/views/userManager/info/components/info-tab.vue +++ b/packages/toolkits/pro/template/tinyvue/src/views/userManager/info/components/info-tab.vue @@ -1,7 +1,6 @@ diff --git a/packages/toolkits/pro/template/tinyvue/src/views/userManager/useradd/locale/en-US.ts b/packages/toolkits/pro/template/tinyvue/src/views/userManager/useradd/locale/en-US.ts new file mode 100644 index 00000000..134d37aa --- /dev/null +++ b/packages/toolkits/pro/template/tinyvue/src/views/userManager/useradd/locale/en-US.ts @@ -0,0 +1,19 @@ +export default { + 'menu.allUser.useradd': 'User Add', + 'userAdd.cancel': 'Cancel', + 'userAdd.save': 'Save', + 'userAdd.email': 'Email', + 'userAdd.password': 'Password', + 'userAdd.department': 'Department:', + 'userAdd.position': 'Position:', + 'userAdd.type': 'Recruitment Type:', + 'userAdd.date': 'Trial Start and End Date:', + 'userAdd.during': 'Probation Period:', + 'userAdd.startTime': 'Labor Contract Start Date:', + 'userAdd.endTime': 'Labor Contract End Date:', + 'userAdd.first': 'Start Time', + 'userAdd.last': 'End Time', + 'userAdd.name': 'UserName', + 'userAdd.address': 'Address', + 'userAdd.status': 'Status', +}; diff --git a/packages/toolkits/pro/template/tinyvue/src/views/userManager/useradd/locale/zh-CN.ts b/packages/toolkits/pro/template/tinyvue/src/views/userManager/useradd/locale/zh-CN.ts new file mode 100644 index 00000000..c5ab8033 --- /dev/null +++ b/packages/toolkits/pro/template/tinyvue/src/views/userManager/useradd/locale/zh-CN.ts @@ -0,0 +1,19 @@ +export default { + 'menu.allUser.useradd': '添加用户', + 'userAdd.save': '提交', + 'userAdd.cancel': '取消', + 'userAdd.email': '邮箱', + 'userAdd.password': '密码', + 'userAdd.department': '所属部门:', + 'userAdd.position': '职位:', + 'userAdd.type': '招聘类型:', + 'userAdd.date': '试用起止日期:', + 'userAdd.during': '试用期时长:', + 'userAdd.startTime': '劳动合同开始日期:', + 'userAdd.endTime': '劳动合同结束日期:', + 'userAdd.first': '开始时间', + 'userAdd.last': '结束时间', + 'userAdd.name': '用户名', + 'userAdd.address': '地址', + 'userAdd.status': '状态', +}; From 21febab20c3b0b6478480b409dd5a55cdffc2f0b Mon Sep 17 00:00:00 2001 From: fmm <1442620801@qq.com> Date: Wed, 31 Jul 2024 18:06:42 +0800 Subject: [PATCH 11/16] =?UTF-8?q?fix:=20=E6=B7=BB=E5=8A=A0=E7=94=A8?= =?UTF-8?q?=E6=88=B7=E9=80=82=E9=85=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../template/server/nestJs/src/app.module.ts | 2 +- .../nestJs/src/user/dto/create-user.dto.ts | 2 +- .../server/nestJs/src/user/user.service.ts | 40 ++++++++++--------- 3 files changed, 24 insertions(+), 20 deletions(-) diff --git a/packages/toolkits/pro/template/server/nestJs/src/app.module.ts b/packages/toolkits/pro/template/server/nestJs/src/app.module.ts index 26c181bf..755b153c 100644 --- a/packages/toolkits/pro/template/server/nestJs/src/app.module.ts +++ b/packages/toolkits/pro/template/server/nestJs/src/app.module.ts @@ -111,7 +111,7 @@ export class AppModule implements OnModuleInit { email: 'admin@no-reply.com', password: 'admin', roleIds: [role.id], - username: 'admin', + name: 'admin', status: 1, }, isInit diff --git a/packages/toolkits/pro/template/server/nestJs/src/user/dto/create-user.dto.ts b/packages/toolkits/pro/template/server/nestJs/src/user/dto/create-user.dto.ts index 75f20c00..f63cc3e0 100644 --- a/packages/toolkits/pro/template/server/nestJs/src/user/dto/create-user.dto.ts +++ b/packages/toolkits/pro/template/server/nestJs/src/user/dto/create-user.dto.ts @@ -4,7 +4,7 @@ export class CreateUserDto { @IsNotEmpty({ message: '用户名不能为空', }) - username: string; + name: string; @IsNotEmpty({ message: '邮箱不能为空', }) diff --git a/packages/toolkits/pro/template/server/nestJs/src/user/user.service.ts b/packages/toolkits/pro/template/server/nestJs/src/user/user.service.ts index 9331f41a..d13d6143 100644 --- a/packages/toolkits/pro/template/server/nestJs/src/user/user.service.ts +++ b/packages/toolkits/pro/template/server/nestJs/src/user/user.service.ts @@ -23,7 +23,7 @@ export class UserService { async create(createUserDto: CreateUserDto, isInit: boolean) { const { - email, password, roleIds = [], username, + email, password, roleIds = [], name, department, employeeType, probationStart, probationEnd, probationDuration, protocolStart, protocolEnd, address, status } = createUserDto; @@ -43,7 +43,7 @@ export class UserService { const user = this.userRep.create({ email, password, - name: username, + name: name, role: await roles, deleteAt: 0, department: department, @@ -115,17 +115,19 @@ export class UserService { ], relations, }); - if (user.probationStart !== null) { - user.probationStart = await this.formatDateToDay(new Date(user.probationStart)); - } - if (user.probationEnd !== null) { - user.probationEnd = await this.formatDateToDay(new Date(user.probationEnd)); - } - if (user.protocolStart !== null) { - user.protocolStart = await this.formatDateToDay(new Date(user.protocolStart)); - } - if (user.protocolEnd !== null) { - user.protocolEnd = await this.formatDateToDay(new Date(user.protocolEnd)); + if (user) { + if (user.probationStart !== null) { + user.probationStart = await this.formatDateToDay(new Date(user.probationStart)); + } + if (user.probationEnd !== null) { + user.probationEnd = await this.formatDateToDay(new Date(user.probationEnd)); + } + if (user.protocolStart !== null) { + user.protocolStart = await this.formatDateToDay(new Date(user.protocolStart)); + } + if (user.protocolEnd !== null) { + user.protocolEnd = await this.formatDateToDay(new Date(user.protocolEnd)); + } } return user; } @@ -192,22 +194,24 @@ export class UserService { } } - async updateUserInfo(updateUserDto: UpdateUserDto){ - const {email,roleIds,department,employeeType,probationStart,probationEnd, - probationDuration,protocolStart,protocolEnd,address,status,name} = updateUserDto; + async updateUserInfo(updateUserDto: UpdateUserDto) { + const { + email, roleIds, department, employeeType, probationStart, probationEnd, + probationDuration, protocolStart, protocolEnd, address, status, name + } = updateUserDto; const user = this.getUserInfo(email); const roles = this.roleRep.find({ where: { id: In(roleIds), }, }); - if(user){ + if (user) { (await user).name = name; (await user).department = department; (await user).employeeType = employeeType; (await user).probationStart = probationStart; (await user).probationEnd = probationEnd; - (await user).probationDuration =probationDuration; + (await user).probationDuration = probationDuration; (await user).protocolStart = protocolStart; (await user).protocolEnd = protocolEnd; (await user).address = address; From d43b2c6a7cb5e79f04d6bfa202fdbcd432896788 Mon Sep 17 00:00:00 2001 From: fmm <1442620801@qq.com> Date: Wed, 31 Jul 2024 18:41:10 +0800 Subject: [PATCH 12/16] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=E5=BF=85?= =?UTF-8?q?=E5=A1=AB=E6=98=BE=E7=A4=BA=E5=BC=82=E5=B8=B8=E9=97=AE=E9=A2=98?= =?UTF-8?q?&=E8=A1=A5=E5=85=85=E6=B7=BB=E5=8A=A0=E7=94=A8=E6=88=B7?= =?UTF-8?q?=E5=92=8C=E4=BF=AE=E6=94=B9=E7=94=A8=E6=88=B7=E9=94=99=E8=AF=AF?= =?UTF-8?q?=E6=8F=90=E7=A4=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/views/userManager/setting/index.vue | 21 ++++++++++------ .../src/views/userManager/useradd/index.vue | 25 +++++++++++++------ 2 files changed, 32 insertions(+), 14 deletions(-) diff --git a/packages/toolkits/pro/template/tinyvue/src/views/userManager/setting/index.vue b/packages/toolkits/pro/template/tinyvue/src/views/userManager/setting/index.vue index 4e4d8c50..9e28591a 100644 --- a/packages/toolkits/pro/template/tinyvue/src/views/userManager/setting/index.vue +++ b/packages/toolkits/pro/template/tinyvue/src/views/userManager/setting/index.vue @@ -10,7 +10,7 @@ { + + try { + await updateUserInfo(newTemp); Modal.message({ message: t('baseForm.form.submit.success'), status: 'success', }); - }); - - handleFormReset(); - + handleFormReset(); + } catch (error) { + if (error.response && error.response.data) { + const errorMessage = error.response.data.message || '未知错误'; + Modal.message({ + message: errorMessage[0], + status: 'error', + }); + } + } } async function fecthData() { @@ -295,7 +303,6 @@ async function fecthData() { } state.userData = data; state.userData.probationDate = [data.probationStart, data.probationEnd] - console.log(state.userData) } } diff --git a/packages/toolkits/pro/template/tinyvue/src/views/userManager/useradd/index.vue b/packages/toolkits/pro/template/tinyvue/src/views/userManager/useradd/index.vue index 65b975b2..98b0c394 100644 --- a/packages/toolkits/pro/template/tinyvue/src/views/userManager/useradd/index.vue +++ b/packages/toolkits/pro/template/tinyvue/src/views/userManager/useradd/index.vue @@ -179,7 +179,7 @@ import { } from '@opentiny/vue'; import {getSimpleDate} from '@/utils/time'; import {useRoute, useRouter} from 'vue-router'; -import { getUserInfo, registerUser} from '@/api/user' +import {getUserInfo, registerUser, updateUserInfo} from '@/api/user' import {getRoles} from '@/api/role' @@ -275,12 +275,23 @@ async function handleSubmit() { protocolEnd: getSimpleDate(data.protocolEnd), status: data.status, }; - await registerUser(newTemp); - Modal.message({ - message: t('baseForm.form.submit.success'), - status: 'success', - }); - state.userData = {} as any; + + try { + await registerUser(newTemp); + Modal.message({ + message: t('baseForm.form.submit.success'), + status: 'success', + }); + state.userData = {} as any; + } catch (error) { + if (error.response && error.response.data) { + const errorMessage = error.response.data.message || '未知错误'; + Modal.message({ + message: errorMessage[0], + status: 'error', + }); + } + } } async function fetchRole(){ From a74ef3ca8899d1b88d11f77bad387a2c7fc47fb8 Mon Sep 17 00:00:00 2001 From: fmm <1442620801@qq.com> Date: Wed, 31 Jul 2024 18:42:22 +0800 Subject: [PATCH 13/16] =?UTF-8?q?fix:=20=E8=A1=A5=E5=85=85=E6=9B=B4?= =?UTF-8?q?=E6=96=B0=E7=94=A8=E6=88=B7=E4=BF=A1=E6=81=AF=E9=9D=9E=E7=A9=BA?= =?UTF-8?q?=E9=A1=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../nestJs/src/user/dto/update-user.dto.ts | 56 +++++++++++++++---- 1 file changed, 46 insertions(+), 10 deletions(-) diff --git a/packages/toolkits/pro/template/server/nestJs/src/user/dto/update-user.dto.ts b/packages/toolkits/pro/template/server/nestJs/src/user/dto/update-user.dto.ts index d23d2b00..2667c320 100644 --- a/packages/toolkits/pro/template/server/nestJs/src/user/dto/update-user.dto.ts +++ b/packages/toolkits/pro/template/server/nestJs/src/user/dto/update-user.dto.ts @@ -5,16 +5,52 @@ import { IsNotEmpty } from 'class-validator'; export class UpdateUserDto extends PartialType(CreateUserDto) { oldPassword: string; newPassword: string; + @IsNotEmpty({ + message: '邮箱不能为空', + }) email: string; + @IsNotEmpty({ + message: '职业不能为空', + }) roleIds: number[] = []; - department?: string; - employeeType?: string; - probationStart?: string; - probationEnd?: string; - probationDuration?: string; - protocolStart?: string; - protocolEnd?: string; - address?: string; - status?: number; - name?: string; + @IsNotEmpty({ + message: '部门不能为空', + }) + department: string; + @IsNotEmpty({ + message: '招聘类型不能为空', + }) + employeeType: string; + @IsNotEmpty({ + message: '试用起始日期不能为空', + }) + probationStart: string; + @IsNotEmpty({ + message: '试用结束日期不能为空', + }) + probationEnd: string; + @IsNotEmpty({ + message: '试用期时长不能为空', + }) + probationDuration: string; + @IsNotEmpty({ + message: '合同起始日期不能为空', + }) + protocolStart: string; + @IsNotEmpty({ + message: '试用结束日期不能为空', + }) + protocolEnd: string; + @IsNotEmpty({ + message: '地址不能为空', + }) + address: string; + @IsNotEmpty({ + message: '状态不能为空', + }) + status: number; + @IsNotEmpty({ + message: '用户名不能为空', + }) + name: string; } From 6f47a0a006205a14df6f09b1c7b9023f40e5bd9f Mon Sep 17 00:00:00 2001 From: fmm <1442620801@qq.com> Date: Thu, 1 Aug 2024 18:04:25 +0800 Subject: [PATCH 14/16] =?UTF-8?q?feat:=20=E6=96=B0=E5=A2=9E=E7=AE=A1?= =?UTF-8?q?=E7=90=86=E5=91=98=E4=BF=AE=E6=94=B9=E6=89=80=E6=9C=89=E5=AF=86?= =?UTF-8?q?=E7=A0=81&=E7=94=A8=E6=88=B7=E4=BF=AE=E6=94=B9=E4=B8=AA?= =?UTF-8?q?=E4=BA=BA=E5=AF=86=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../pro/template/tinyvue/src/api/user.ts | 9 ++ .../tinyvue/src/components/navbar/index.vue | 153 +++++++++++++++++- .../pro/template/tinyvue/src/locale/en-US.ts | 1 + .../pro/template/tinyvue/src/locale/zh-CN.ts | 1 + .../userManager/info/components/info-tab.vue | 147 ++++++++++++++++- .../views/userManager/info/locale/en-US.ts | 9 +- .../views/userManager/info/locale/zh-CN.ts | 9 +- 7 files changed, 318 insertions(+), 11 deletions(-) diff --git a/packages/toolkits/pro/template/tinyvue/src/api/user.ts b/packages/toolkits/pro/template/tinyvue/src/api/user.ts index 36800bd6..8d502da5 100644 --- a/packages/toolkits/pro/template/tinyvue/src/api/user.ts +++ b/packages/toolkits/pro/template/tinyvue/src/api/user.ts @@ -74,3 +74,12 @@ export function getUserData(data?: UserData) { export function registerUser(data: any) { return axios.post('/api/user/reg', data); } + +export function updatePwdAdmin(data: any) { + return axios.patch('/api/user/admin/updatePwd', data); +} + +export function updatePwdUser(data: any) { + return axios.patch('/api/user/updatePwd', data); +} + diff --git a/packages/toolkits/pro/template/tinyvue/src/components/navbar/index.vue b/packages/toolkits/pro/template/tinyvue/src/components/navbar/index.vue index c828b224..3f07cd3e 100644 --- a/packages/toolkits/pro/template/tinyvue/src/components/navbar/index.vue +++ b/packages/toolkits/pro/template/tinyvue/src/components/navbar/index.vue @@ -62,35 +62,121 @@ + {{ $t(item.label) }} +
    + + + + +
    diff --git a/packages/toolkits/pro/template/tinyvue/src/views/userManager/info/locale/en-US.ts b/packages/toolkits/pro/template/tinyvue/src/views/userManager/info/locale/en-US.ts index 2efa4f3c..a31812ef 100644 --- a/packages/toolkits/pro/template/tinyvue/src/views/userManager/info/locale/en-US.ts +++ b/packages/toolkits/pro/template/tinyvue/src/views/userManager/info/locale/en-US.ts @@ -20,5 +20,12 @@ export default { 'userInfo.table.operations': 'Operation', 'userInfo.table.operations.update': 'Update', 'userInfo.table.operations.delete': 'Delete', - 'userInfo.day': 'Day' + 'userInfo.table.operations.pwdUpdate': 'Password', + 'userInfo.day': 'Day', + 'userInfo.modal.title.pwdUpdate': 'Update Password', + 'userInfo.modal.input.oldPassword': 'Old Password', + 'userInfo.modal.input.newPassword': 'New Password', + 'userInfo.modal.input.confirmNewPassword': 'Confirm New Password', + 'userInfo.modal.message.error': 'Confirm New Password Error', + 'userInfo.modal.message.notNull': 'Password Is Not Null', }; diff --git a/packages/toolkits/pro/template/tinyvue/src/views/userManager/info/locale/zh-CN.ts b/packages/toolkits/pro/template/tinyvue/src/views/userManager/info/locale/zh-CN.ts index 2df8f3c4..68de9abd 100644 --- a/packages/toolkits/pro/template/tinyvue/src/views/userManager/info/locale/zh-CN.ts +++ b/packages/toolkits/pro/template/tinyvue/src/views/userManager/info/locale/zh-CN.ts @@ -20,5 +20,12 @@ export default { 'userInfo.table.operations': '操作', 'userInfo.table.operations.update': '修改', 'userInfo.table.operations.delete': '删除', - 'userInfo.day': '天' + 'userInfo.table.operations.pwdUpdate': '密码', + 'userInfo.day': '天', + 'userInfo.modal.title.pwdUpdate': '修改密码', + 'userInfo.modal.input.oldPassword': '旧密码', + 'userInfo.modal.input.newPassword': '新密码', + 'userInfo.modal.input.confirmNewPassword': '确认新密码', + 'userInfo.modal.message.error': '确认新密码错误', + 'userInfo.modal.message.notNull': '密码不能为空', }; From 1f9a5327110e8fe8a83eb1caf0a0ee9c89bbf783 Mon Sep 17 00:00:00 2001 From: fmm <1442620801@qq.com> Date: Thu, 1 Aug 2024 18:06:08 +0800 Subject: [PATCH 15/16] =?UTF-8?q?feat:=20=E6=96=B0=E5=A2=9E=E7=AE=A1?= =?UTF-8?q?=E7=90=86=E5=91=98&=E7=94=A8=E6=88=B7=E4=BF=AE=E6=94=B9?= =?UTF-8?q?=E5=AF=86=E7=A0=81=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/user/dto/update-pwd-admin.dto.ts | 12 +++++++ .../src/user/dto/update-pwd-user.dto.ts | 16 ++++++++++ .../server/nestJs/src/user/user.controller.ts | 16 +++++++++- .../server/nestJs/src/user/user.service.ts | 32 ++++++++++++++----- 4 files changed, 67 insertions(+), 9 deletions(-) create mode 100644 packages/toolkits/pro/template/server/nestJs/src/user/dto/update-pwd-admin.dto.ts create mode 100644 packages/toolkits/pro/template/server/nestJs/src/user/dto/update-pwd-user.dto.ts diff --git a/packages/toolkits/pro/template/server/nestJs/src/user/dto/update-pwd-admin.dto.ts b/packages/toolkits/pro/template/server/nestJs/src/user/dto/update-pwd-admin.dto.ts new file mode 100644 index 00000000..c870eac0 --- /dev/null +++ b/packages/toolkits/pro/template/server/nestJs/src/user/dto/update-pwd-admin.dto.ts @@ -0,0 +1,12 @@ +import { PartialType } from '@nestjs/mapped-types'; +import { CreateUserDto } from './create-user.dto'; +import { IsNotEmpty } from 'class-validator'; + +export class UpdatePwdAdminDto extends PartialType(CreateUserDto) { + email: string; + @IsNotEmpty({ + message: '新密码不能为空', + }) + newPassword: string; + confirmNewPassword?: string; +} diff --git a/packages/toolkits/pro/template/server/nestJs/src/user/dto/update-pwd-user.dto.ts b/packages/toolkits/pro/template/server/nestJs/src/user/dto/update-pwd-user.dto.ts new file mode 100644 index 00000000..dd678f10 --- /dev/null +++ b/packages/toolkits/pro/template/server/nestJs/src/user/dto/update-pwd-user.dto.ts @@ -0,0 +1,16 @@ +import { PartialType } from '@nestjs/mapped-types'; +import { CreateUserDto } from './create-user.dto'; +import { IsNotEmpty } from 'class-validator'; + +export class UpdatePwdUserDto extends PartialType(CreateUserDto) { + email: string; + token: string; + @IsNotEmpty({ + message: '新密码不能为空', + }) + newPassword: string; + @IsNotEmpty({ + message: '旧密码不能为空', + }) + oldPassword?: string; +} diff --git a/packages/toolkits/pro/template/server/nestJs/src/user/user.controller.ts b/packages/toolkits/pro/template/server/nestJs/src/user/user.controller.ts index e4f507e3..89ca6f43 100644 --- a/packages/toolkits/pro/template/server/nestJs/src/user/user.controller.ts +++ b/packages/toolkits/pro/template/server/nestJs/src/user/user.controller.ts @@ -13,7 +13,9 @@ import { UserService } from './user.service'; import { CreateUserDto } from './dto/create-user.dto'; import { Permission } from '../public/permission.decorator'; import { UpdateUserDto } from './dto/update-user.dto'; -import { PaginationQueryDto } from './dto/pagination-query.dto' +import { PaginationQueryDto } from './dto/pagination-query.dto'; +import {UpdatePwdAdminDto} from "./dto/update-pwd-admin.dto"; +import {UpdatePwdUserDto} from "./dto/update-pwd-user.dto"; @Controller('user') export class UserController { @@ -44,4 +46,16 @@ export class UserController { ) { return this.userService.getAllUser(paginationQuery); } + + @Patch('/admin/updatePwd') + @Permission('user::update') + async updatePwdAdmin(@Body() body: UpdatePwdAdminDto) { + return this.userService.updatePwdAdmin(body); + } + + @Patch('/updatePwd') + @Permission('user::update') + async updatePwdUser(@Body() body: UpdatePwdUserDto) { + return this.userService.updatePwdUser(body); + } } diff --git a/packages/toolkits/pro/template/server/nestJs/src/user/user.service.ts b/packages/toolkits/pro/template/server/nestJs/src/user/user.service.ts index d13d6143..69dfeead 100644 --- a/packages/toolkits/pro/template/server/nestJs/src/user/user.service.ts +++ b/packages/toolkits/pro/template/server/nestJs/src/user/user.service.ts @@ -2,6 +2,8 @@ import {HttpException, HttpStatus, Injectable} from '@nestjs/common'; import {CreateUserDto} from './dto/create-user.dto'; import {UpdateUserDto} from './dto/update-user.dto'; import {PaginationQueryDto} from "./dto/pagination-query.dto"; +import {UpdatePwdAdminDto} from "./dto/update-pwd-admin.dto"; +import {UpdatePwdUserDto} from "./dto/update-pwd-user.dto"; import {InjectRepository} from '@nestjs/typeorm'; import {Role, User} from '@app/models'; import {In, Repository} from 'typeorm'; @@ -17,7 +19,7 @@ export class UserService { private userRep: Repository, @InjectRepository(Role) private roleRep: Repository, - private readonly authService: AuthService + private readonly authService: AuthService, ) { } @@ -166,8 +168,8 @@ export class UserService { } //修改密码 - async updateUserPwd(updateUserDto: UpdateUserDto) { - const {email, newPassword, oldPassword} = updateUserDto; + async updatePwdUser(data: UpdatePwdUserDto) { + const {email, newPassword, oldPassword,token} = data; const user = this.userRep.findOne({ where: {email, deleteAt: 0}, select: [ @@ -176,10 +178,6 @@ export class UserService { 'email', 'salt', 'password', - 'createTime', - 'updateTime', - 'role', - 'deleteAt', ], }); if (user) { @@ -188,12 +186,30 @@ export class UserService { } else { (await user).password = await this.encry(newPassword, (await user).salt); await this.userRep.save(await user); - await this.authService.logout(email); return; } } } + async updatePwdAdmin(data: UpdatePwdAdminDto){ + const {email, newPassword } = data; + const user = this.userRep.findOne({ + where: {email, deleteAt: 0}, + select: [ + 'id', + 'name', + 'email', + 'salt', + 'password', + ], + }); + if (user) { + (await user).password = await this.encry(newPassword, (await user).salt); + await this.userRep.save(await user); + return; + } + } + async updateUserInfo(updateUserDto: UpdateUserDto) { const { email, roleIds, department, employeeType, probationStart, probationEnd, From 342be334c3c9e86c57105f9f4bfd8286c2672902 Mon Sep 17 00:00:00 2001 From: fmm <1442620801@qq.com> Date: Thu, 1 Aug 2024 18:26:23 +0800 Subject: [PATCH 16/16] =?UTF-8?q?fix:=20=E6=9B=B4=E6=94=B9=E7=AE=A1?= =?UTF-8?q?=E7=90=86=E5=91=98=E4=BF=AE=E6=94=B9=E5=AF=86=E7=A0=81=E6=9D=83?= =?UTF-8?q?=E9=99=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../pro/template/server/nestJs/src/user/user.controller.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/toolkits/pro/template/server/nestJs/src/user/user.controller.ts b/packages/toolkits/pro/template/server/nestJs/src/user/user.controller.ts index 89ca6f43..297bd2bf 100644 --- a/packages/toolkits/pro/template/server/nestJs/src/user/user.controller.ts +++ b/packages/toolkits/pro/template/server/nestJs/src/user/user.controller.ts @@ -48,7 +48,7 @@ export class UserController { } @Patch('/admin/updatePwd') - @Permission('user::update') + @Permission('user::password::force-update') async updatePwdAdmin(@Body() body: UpdatePwdAdminDto) { return this.userService.updatePwdAdmin(body); }