2
0
Эх сурвалжийг харах

🐛 fix(location): 修复经纬度输入框显示和类型问题

- 为zod number类型添加显式泛型定义,增强类型安全性
- 修复经纬度输入框在值为null时的显示问题,确保空值正确显示为空字符串
yourname 4 сар өмнө
parent
commit
0c68be873d

+ 5 - 5
src/client/admin/components/LocationForm.tsx

@@ -12,9 +12,9 @@ import { DialogFooter } from '@/client/components/ui/dialog';
 const locationFormSchema = z.object({
   name: z.string().min(1, '地点名称不能为空').max(100, '地点名称不能超过100个字符'),
   address: z.string().min(1, '地址不能为空').max(200, '地址不能超过200个字符'),
-  areaId: z.coerce.number().int().positive('请选择所属区域'),
-  latitude: z.coerce.number().optional(),
-  longitude: z.coerce.number().optional(),
+  areaId: z.coerce.number<number>().int().positive('请选择所属区域'),
+  latitude: z.coerce.number<number>().optional(),
+  longitude: z.coerce.number<number>().optional(),
 });
 
 type LocationFormValues = z.infer<typeof locationFormSchema>;
@@ -149,7 +149,7 @@ export const LocationForm = ({
                       step="any"
                       placeholder="例如:39.9042"
                       {...field}
-                      value={field.value === undefined ? '' : field.value}
+                      value={field.value === undefined || field.value === null ? '' : field.value}
                       onChange={(e) => {
                         const value = e.target.value === '' ? undefined : parseFloat(e.target.value);
                         field.onChange(value);
@@ -176,7 +176,7 @@ export const LocationForm = ({
                       step="any"
                       placeholder="例如:116.4074"
                       {...field}
-                      value={field.value === undefined ? '' : field.value}
+                      value={field.value === undefined || field.value === null ? '' : field.value}
                       onChange={(e) => {
                         const value = e.target.value === '' ? undefined : parseFloat(e.target.value);
                         field.onChange(value);