import { ApiProperty, ApiPropertyOptional } from '@nestjs/swagger'; import { IsIn, IsInt, IsNotEmpty, IsOptional, IsString } from 'class-validator'; import { CommonStatus } from '../common/enums.js'; /** 标签色(对应前端 TagType)。 */ const COLOR_TYPES = ['primary', 'success', 'warning', 'danger', 'info'] as const; export class CreateDictTypeDto { @ApiProperty({ description: '字典类型编码' }) @IsString() @IsNotEmpty() code!: string; @ApiProperty({ description: '字典类型名称' }) @IsString() @IsNotEmpty() name!: string; @ApiPropertyOptional({ description: '备注' }) @IsOptional() @IsString() remark?: string; } export class UpdateDictTypeDto { @ApiPropertyOptional({ description: '字典类型名称' }) @IsOptional() @IsString() name?: string; @ApiPropertyOptional({ description: '状态:enabled/disabled' }) @IsOptional() @IsIn(Object.values(CommonStatus)) status?: string; @ApiPropertyOptional({ description: '备注' }) @IsOptional() @IsString() remark?: string; } export class CreateDictItemDto { @ApiProperty({ description: '所属字典类型 code' }) @IsString() @IsNotEmpty() dictTypeCode!: string; @ApiProperty({ description: '标签(显示名)' }) @IsString() @IsNotEmpty() label!: string; @ApiProperty({ description: '值' }) @IsString() @IsNotEmpty() value!: string; @ApiPropertyOptional({ description: '排序', default: 0 }) @IsOptional() @IsInt() sort?: number; @ApiPropertyOptional({ description: '标签色:primary/success/warning/danger/info' }) @IsOptional() @IsIn(COLOR_TYPES) colorType?: string; } export class UpdateDictItemDto { @ApiPropertyOptional({ description: '标签' }) @IsOptional() @IsString() label?: string; @ApiPropertyOptional({ description: '值' }) @IsOptional() @IsString() value?: string; @ApiPropertyOptional({ description: '排序' }) @IsOptional() @IsInt() sort?: number; @ApiPropertyOptional({ description: '状态:enabled/disabled' }) @IsOptional() @IsIn(Object.values(CommonStatus)) status?: string; @ApiPropertyOptional({ description: '标签色:primary/success/warning/danger/info' }) @IsOptional() @IsIn(COLOR_TYPES) colorType?: string; }