2. 扩展患者手术与材料模型,更新种子数据 3. 新增字典模块,增强设备植入目录管理能力 4. 重构患者后台服务与表单链路,统一权限与参数校验 5. 管理台新增字典页面并改造患者/设备页面与路由权限 6. 补充字典及相关领域 e2e 测试并更新文档"
59 lines
1.7 KiB
TypeScript
59 lines
1.7 KiB
TypeScript
import { ApiPropertyOptional } from '@nestjs/swagger';
|
||
import { Type } from 'class-transformer';
|
||
import { EmptyStringToUndefined } from '../../common/transforms/empty-string-to-undefined.transform.js';
|
||
import { IsInt, IsOptional, IsString, Max, Min } from 'class-validator';
|
||
|
||
/**
|
||
* 组织查询 DTO:用于医院/科室/小组列表筛选与分页。
|
||
*/
|
||
export class OrganizationQueryDto {
|
||
@ApiPropertyOptional({
|
||
description: '关键词(按名称模糊匹配)',
|
||
example: '神经',
|
||
})
|
||
@IsOptional()
|
||
@IsString({ message: 'keyword 必须是字符串' })
|
||
keyword?: string;
|
||
|
||
@ApiPropertyOptional({ description: '医院 ID', example: 1 })
|
||
@IsOptional()
|
||
@EmptyStringToUndefined()
|
||
@Type(() => Number)
|
||
@IsInt({ message: 'hospitalId 必须是整数' })
|
||
@Min(1, { message: 'hospitalId 必须大于 0' })
|
||
hospitalId?: number;
|
||
|
||
@ApiPropertyOptional({ description: '科室 ID', example: 1 })
|
||
@IsOptional()
|
||
@EmptyStringToUndefined()
|
||
@Type(() => Number)
|
||
@IsInt({ message: 'departmentId 必须是整数' })
|
||
@Min(1, { message: 'departmentId 必须大于 0' })
|
||
departmentId?: number;
|
||
|
||
@ApiPropertyOptional({
|
||
description: '页码(默认 1)',
|
||
example: 1,
|
||
default: 1,
|
||
})
|
||
@IsOptional()
|
||
@EmptyStringToUndefined()
|
||
@Type(() => Number)
|
||
@IsInt({ message: 'page 必须是整数' })
|
||
@Min(1, { message: 'page 最小为 1' })
|
||
page?: number = 1;
|
||
|
||
@ApiPropertyOptional({
|
||
description: '每页数量(默认 20,最大 100)',
|
||
example: 20,
|
||
default: 20,
|
||
})
|
||
@IsOptional()
|
||
@EmptyStringToUndefined()
|
||
@Type(() => Number)
|
||
@IsInt({ message: 'pageSize 必须是整数' })
|
||
@Min(1, { message: 'pageSize 最小为 1' })
|
||
@Max(100, { message: 'pageSize 最大为 100' })
|
||
pageSize?: number = 20;
|
||
}
|