|
@@ -4,7 +4,7 @@ import { AreaLevel } from './area.entity';
|
|
|
|
|
|
|
|
// 省市区创建Schema
|
|
// 省市区创建Schema
|
|
|
export const createAreaSchema = z.object({
|
|
export const createAreaSchema = z.object({
|
|
|
- parentId: z.number().int().min(0, '父级ID不能为负数').default(0),
|
|
|
|
|
|
|
+ parentId: z.number().int().min(0, '父级ID不能为负数').nullable().default(null),
|
|
|
name: z.string().min(1, '区域名称不能为空').max(100, '区域名称不能超过100个字符'),
|
|
name: z.string().min(1, '区域名称不能为空').max(100, '区域名称不能超过100个字符'),
|
|
|
level: z.nativeEnum(AreaLevel, {
|
|
level: z.nativeEnum(AreaLevel, {
|
|
|
message: '层级必须是1(省/直辖市)、2(市)或3(区/县)'
|
|
message: '层级必须是1(省/直辖市)、2(市)或3(区/县)'
|
|
@@ -13,21 +13,21 @@ export const createAreaSchema = z.object({
|
|
|
isDisabled: z.nativeEnum(DisabledStatus).default(DisabledStatus.ENABLED),
|
|
isDisabled: z.nativeEnum(DisabledStatus).default(DisabledStatus.ENABLED),
|
|
|
}).refine((data) => {
|
|
}).refine((data) => {
|
|
|
// 验证层级和父级ID的关系
|
|
// 验证层级和父级ID的关系
|
|
|
- if (data.level === AreaLevel.PROVINCE && data.parentId !== 0) {
|
|
|
|
|
|
|
+ if (data.level === AreaLevel.PROVINCE && data.parentId !== null) {
|
|
|
return false;
|
|
return false;
|
|
|
}
|
|
}
|
|
|
- if (data.level !== AreaLevel.PROVINCE && data.parentId === 0) {
|
|
|
|
|
|
|
+ if (data.level !== AreaLevel.PROVINCE && data.parentId === null) {
|
|
|
return false;
|
|
return false;
|
|
|
}
|
|
}
|
|
|
return true;
|
|
return true;
|
|
|
}, {
|
|
}, {
|
|
|
- message: '层级和父级ID关系不正确:省/直辖市(parentId=0),市/区县(parentId>0)',
|
|
|
|
|
|
|
+ message: '层级和父级ID关系不正确:省/直辖市(parentId=null),市/区县(parentId>0)',
|
|
|
path: ['parentId'],
|
|
path: ['parentId'],
|
|
|
});
|
|
});
|
|
|
|
|
|
|
|
// 省市区更新Schema
|
|
// 省市区更新Schema
|
|
|
export const updateAreaSchema = z.object({
|
|
export const updateAreaSchema = z.object({
|
|
|
- parentId: z.number().int().min(0, '父级ID不能为负数').optional(),
|
|
|
|
|
|
|
+ parentId: z.number().int().min(0, '父级ID不能为负数').nullable().optional(),
|
|
|
name: z.string().min(1, '区域名称不能为空').max(100, '区域名称不能超过100个字符').optional(),
|
|
name: z.string().min(1, '区域名称不能为空').max(100, '区域名称不能超过100个字符').optional(),
|
|
|
level: z.nativeEnum(AreaLevel, {
|
|
level: z.nativeEnum(AreaLevel, {
|
|
|
message: '层级必须是1(省/直辖市)、2(市)或3(区/县)'
|
|
message: '层级必须是1(省/直辖市)、2(市)或3(区/县)'
|
|
@@ -37,16 +37,16 @@ export const updateAreaSchema = z.object({
|
|
|
}).refine((data) => {
|
|
}).refine((data) => {
|
|
|
// 验证层级和父级ID的关系
|
|
// 验证层级和父级ID的关系
|
|
|
if (data.level && data.parentId !== undefined) {
|
|
if (data.level && data.parentId !== undefined) {
|
|
|
- if (data.level === AreaLevel.PROVINCE && data.parentId !== 0) {
|
|
|
|
|
|
|
+ if (data.level === AreaLevel.PROVINCE && data.parentId !== null) {
|
|
|
return false;
|
|
return false;
|
|
|
}
|
|
}
|
|
|
- if (data.level !== AreaLevel.PROVINCE && data.parentId === 0) {
|
|
|
|
|
|
|
+ if (data.level !== AreaLevel.PROVINCE && data.parentId === null) {
|
|
|
return false;
|
|
return false;
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
return true;
|
|
return true;
|
|
|
}, {
|
|
}, {
|
|
|
- message: '层级和父级ID关系不正确:省/直辖市(parentId=0),市/区县(parentId>0)',
|
|
|
|
|
|
|
+ message: '层级和父级ID关系不正确:省/直辖市(parentId=null),市/区县(parentId>0)',
|
|
|
path: ['parentId'],
|
|
path: ['parentId'],
|
|
|
});
|
|
});
|
|
|
|
|
|