Jelajahi Sumber

✨ feat(stock): 完善案例表单验证和数据处理

- 前端表单添加案例类型必填验证规则
- 后端将交易日期字段改为coerce.date类型,支持字符串自动转换为日期
- 案例描述字段设为可选,允许为空值
yourname 5 bulan lalu
induk
melakukan
378e87e46d

+ 4 - 1
src/client/admin/pages/StockXunlianCodesPage.tsx

@@ -320,7 +320,10 @@ export const StockXunlianCodesPage: React.FC = () => {
           <Form.Item
             name="type"
             label="案例类型"
-            rules={[{ max: 255, message: '案例类型不能超过255个字符' }]}
+            rules={[
+              { required: true, message: '请输入案例类型' },
+              { max: 255, message: '案例类型不能超过255个字符' }
+            ]}
           >
             <Input placeholder="请输入案例类型(如:技术分析、基本面分析)" />
           </Form.Item>

+ 3 - 3
src/server/modules/stock/stock-xunlian-codes.entity.ts

@@ -48,8 +48,8 @@ export const CreateStockXunlianCodesDto = z.object({
   stockName: z.string().max(255).openapi({ description: '股票名称', example: 'test01' }),
   name: z.string().max(255).openapi({ description: '案例名称', example: 'test222' }),
   type: z.string().max(255).nullable().openapi({ description: '案例类型', example: '技术分析' }),
-  description: z.string().max(255).nullable().openapi({ description: '案例描述', example: '这是一个测试案例' }),
-  tradeDate: z.date().openapi({ description: '交易日期', example: '2025-05-21T08:00:00Z' })
+  description: z.string().max(255).nullable().optional().openapi({ description: '案例描述', example: '这是一个测试案例' }),
+  tradeDate: z.coerce.date().openapi({ description: '交易日期', example: '2025-05-21T08:00:00Z' })
 });
 
 export const UpdateStockXunlianCodesDto = z.object({
@@ -58,5 +58,5 @@ export const UpdateStockXunlianCodesDto = z.object({
   name: z.string().max(255).optional().openapi({ description: '案例名称', example: 'test222' }),
   type: z.string().max(255).nullable().optional().openapi({ description: '案例类型', example: '技术分析' }),
   description: z.string().max(255).nullable().optional().openapi({ description: '案例描述', example: '这是一个测试案例' }),
-  tradeDate: z.date().optional().openapi({ description: '交易日期', example: '2025-05-21T08:00:00Z' })
+  tradeDate: z.coerce.date().optional().openapi({ description: '交易日期', example: '2025-05-21T08:00:00Z' })
 });