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..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 @@ -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: string; + @Column({type: 'timestamp',nullable: true}) + probationEnd: string; + @Column({nullable: true}) + probationDuration: string; + @Column({type: 'timestamp',nullable: true}) + protocolStart: string; + @Column({type: 'timestamp',nullable: true}) + protocolEnd: string; + @Column({nullable: true}) + address: string; + @Column({nullable: true}) + status: number; @CreateDateColumn() createTime: Date; @UpdateDateColumn() 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..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,8 @@ 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 c4d34b34..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: '邮箱不能为空', }) @@ -14,4 +14,13 @@ export class CreateUserDto { }) password: string; roleIds: number[] = []; + department?: string; + employeeType?: string; + probationStart?: string; + probationEnd?: string; + probationDuration?: string; + protocolStart?: string; + protocolEnd?: string; + address?: string; + status?: number; } 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/dto/update-user.dto.ts b/packages/toolkits/pro/template/server/nestJs/src/user/dto/update-user.dto.ts index dd83a3aa..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 @@ -3,12 +3,54 @@ import { CreateUserDto } from './create-user.dto'; import { IsNotEmpty } from 'class-validator'; export class UpdateUserDto extends PartialType(CreateUserDto) { + oldPassword: string; + newPassword: string; @IsNotEmpty({ - message: '旧密码不能为空', + message: '邮箱不能为空', }) - oldPassword: string; + email: string; @IsNotEmpty({ - message: '新密码不能为空', + message: '职业不能为空', }) - newPassword: string; + roleIds: number[] = []; + @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; } 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..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 @@ -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 { @@ -35,7 +37,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') @@ -44,4 +46,16 @@ export class UserController { ) { return this.userService.getAllUser(paginationQuery); } + + @Patch('/admin/updatePwd') + @Permission('user::password::force-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 eb0a064b..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 @@ -1,13 +1,15 @@ -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 {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'; 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() @@ -17,10 +19,16 @@ export class UserService { private userRep: Repository, @InjectRepository(Role) private roleRep: Repository, - private readonly authService: AuthService - ) {} + private readonly authService: AuthService, + ) { + } + async create(createUserDto: CreateUserDto, isInit: boolean) { - const { email, password, roleIds = [], username } = createUserDto; + const { + email, password, roleIds = [], name, + department, employeeType, probationStart, probationEnd, probationDuration, + protocolStart, protocolEnd, address, status + } = createUserDto; const userInfo = this.getUserInfo(email); if (isInit == true && (await userInfo)) { return userInfo; @@ -37,9 +45,18 @@ export class UserService { const user = this.userRep.create({ email, password, - name: username, + name: name, 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) { @@ -52,38 +69,77 @@ export class UserService { //获取所有用户信息 async getAllUser(paginationQuery: PaginationQueryDto): Promise { - const { page, limit } = paginationQuery; // 从DTO获取分页参数 - return await paginate(this.userRep, { + const {page, limit} = paginationQuery; // 从DTO获取分页参数 + const relations = ['role', 'role.permission'] + 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', 'createTime', 'updateTime'], + select: ['id', 'name', 'email', 'department', 'employeeType', 'protocolStart', 'protocolEnd', + '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 }, + 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) { + 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) { - 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])]; @@ -96,6 +152,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'); @@ -111,46 +168,73 @@ 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 }, + where: {email, deleteAt: 0}, select: [ 'id', 'name', 'email', 'salt', 'password', - 'createTime', - 'updateTime', - 'role', - 'deleteAt', ], }); 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 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, + 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); + } + } 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 628e9eb7..8d502da5 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,18 +59,27 @@ 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}`); } -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) { return axios.post('/api/user/data', data); } -export function registerUser(data: LoginData) { - return axios.post('/api/user/register', data); +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/menu/index.vue b/packages/toolkits/pro/template/tinyvue/src/components/menu/index.vue index 8e166201..a2fec5b2 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,30 @@ 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', + }, + { + value: 'UserAdd', + name: 'menu.userManager.useradd', + icon: null, + bold: 'title', + }, ]; // 获取路由数据 @@ -258,6 +284,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/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/index.vue b/packages/toolkits/pro/template/tinyvue/src/views/userManager/info/index.vue new file mode 100644 index 00000000..526942f3 --- /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..a31812ef --- /dev/null +++ b/packages/toolkits/pro/template/tinyvue/src/views/userManager/info/locale/en-US.ts @@ -0,0 +1,31 @@ +export default { + 'menu.allUser.info': 'All User Info', + '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', + 'userInfo.table.operations.update': 'Update', + 'userInfo.table.operations.delete': 'Delete', + '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 new file mode 100644 index 00000000..68de9abd --- /dev/null +++ b/packages/toolkits/pro/template/tinyvue/src/views/userManager/info/locale/zh-CN.ts @@ -0,0 +1,31 @@ +export default { + 'menu.allUser.info': '所有用户', + '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': '操作', + 'userInfo.table.operations.update': '修改', + 'userInfo.table.operations.delete': '删除', + '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': '密码不能为空', +}; diff --git a/packages/toolkits/pro/template/tinyvue/src/views/userManager/setting/components/head.vue b/packages/toolkits/pro/template/tinyvue/src/views/userManager/setting/components/head.vue new file mode 100644 index 00000000..0ecae7b0 --- /dev/null +++ b/packages/toolkits/pro/template/tinyvue/src/views/userManager/setting/components/head.vue @@ -0,0 +1,164 @@ + + + + + + + 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..122e6b8d --- /dev/null +++ b/packages/toolkits/pro/template/tinyvue/src/views/userManager/setting/components/set-from.vue @@ -0,0 +1,266 @@ + + + + + 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..9e28591a --- /dev/null +++ b/packages/toolkits/pro/template/tinyvue/src/views/userManager/setting/index.vue @@ -0,0 +1,378 @@ + + + + + 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..4d5d2626 --- /dev/null +++ b/packages/toolkits/pro/template/tinyvue/src/views/userManager/setting/locale/en-US.ts @@ -0,0 +1,17 @@ +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', + '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 new file mode 100644 index 00000000..2823c288 --- /dev/null +++ b/packages/toolkits/pro/template/tinyvue/src/views/userManager/setting/locale/zh-CN.ts @@ -0,0 +1,17 @@ +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': '结束时间', + 'userSetting.name': '用户名', + 'userSetting.address': '地址', + 'userSetting.status': '状态', +}; 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 new file mode 100644 index 00000000..98b0c394 --- /dev/null +++ b/packages/toolkits/pro/template/tinyvue/src/views/userManager/useradd/index.vue @@ -0,0 +1,379 @@ + + + + + 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': '状态', +};