localhost_oa_based/src/modules/system/menu/menu.dto.ts

89 lines
2.1 KiB
TypeScript
Raw Normal View History

2024-02-28 08:32:35 +08:00
import { ApiProperty, PartialType } from '@nestjs/swagger'
import {
IsBoolean,
IsIn,
IsInt,
IsOptional,
IsString,
Min,
MinLength,
ValidateIf,
} from 'class-validator'
export class MenuDto {
@ApiProperty({ description: '菜单类型' })
@IsIn([0, 1, 2])
type: number
@ApiProperty({ description: '父级菜单' })
@IsOptional()
parentId: number
@ApiProperty({ description: '菜单或权限名称' })
@IsString()
@MinLength(2)
name: string
@ApiProperty({ description: '排序' })
@IsInt()
@Min(0)
orderNo: number
@ApiProperty({ description: '前端路由地址' })
// @Matches(/^[/]$/)
@ValidateIf(o => o.type !== 2)
path: string
@ApiProperty({ description: '是否外链', default: false })
@ValidateIf(o => o.type !== 2)
@IsBoolean()
isExt: boolean
@ApiProperty({ description: '外链打开方式', default: 1 })
@ValidateIf((o: MenuDto) => o.isExt)
@IsIn([1, 2])
extOpenMode: number
@ApiProperty({ description: '菜单是否显示', default: 1 })
@ValidateIf((o: MenuDto) => o.type !== 2)
@IsIn([0, 1])
show: number
@ApiProperty({ description: '设置当前路由高亮的菜单项,一般用于详情页' })
@ValidateIf((o: MenuDto) => o.type !== 2 && o.show === 0)
@IsString()
@IsOptional()
activeMenu?: string
@ApiProperty({ description: '是否开启页面缓存', default: 1 })
@ValidateIf((o: MenuDto) => o.type === 1)
@IsIn([0, 1])
keepAlive: number
@ApiProperty({ description: '状态', default: 1 })
@IsIn([0, 1])
status: number
@ApiProperty({ description: '菜单图标' })
@IsOptional()
@ValidateIf((o: MenuDto) => o.type !== 2)
@IsString()
icon?: string
@ApiProperty({ description: '对应权限' })
@ValidateIf((o: MenuDto) => o.type === 2)
@IsString()
@IsOptional()
permission: string
@ApiProperty({ description: '菜单路由路径或外链' })
@ValidateIf((o: MenuDto) => o.type !== 2)
@IsString()
@IsOptional()
component?: string
}
export class MenuUpdateDto extends PartialType(MenuDto) {}
export class MenuQueryDto extends PartialType(MenuDto) {}