Pārlūkot izejas kodu

♻️ refactor(passenger): 优化乘客管理相关代码结构

- 重构证件类型枚举IdType,从共享目录移至passenger模块内维护
- 修复手机号输入框maxLength属性为标准的maxlength
- 统一表单输入onChange事件处理方式,直接使用value参数
- 调整类型导入路径,使用更规范的相对路径引用

📦 build(config): 优化项目路径配置

- 为server包添加share目录的exports配置,便于其他项目引用
- 调整tsconfig.json中的路径映射,添加@d8d/server/*指向server源码目录

🔧 chore(types): 同步证件类型枚举定义

- 在mini项目中创建passenger.types.ts,同步IdType枚举定义
- 更新web项目中api类型导入路径,使用@d8d/server/api明确导入
yourname 3 mēneši atpakaļ
vecāks
revīzija
ca2d4aecf6

+ 4 - 4
mini/src/pages/passengers/add-passenger.tsx

@@ -145,7 +145,7 @@ const AddPassengerPage: React.FC = () => {
                 id="name"
                 placeholder="请输入姓名"
                 value={formData.name}
-                onChange={(e) => setFormData({ ...formData, name: e.target.value })}
+                onChange={(value) => setFormData({ ...formData, name: value })}
                 className="w-full"
               />
             </View>
@@ -177,7 +177,7 @@ const AddPassengerPage: React.FC = () => {
                 id="idNumber"
                 placeholder="请输入证件号码"
                 value={formData.idNumber}
-                onChange={(e) => setFormData({ ...formData, idNumber: e.target.value })}
+                onChange={(value) => setFormData({ ...formData, idNumber: value })}
                 className="w-full"
               />
             </View>
@@ -189,9 +189,9 @@ const AddPassengerPage: React.FC = () => {
                 id="phone"
                 placeholder="请输入手机号"
                 value={formData.phone}
-                onChange={(e) => setFormData({ ...formData, phone: e.target.value })}
+                onChange={(value) => setFormData({ ...formData, phone: value })}
                 type="number"
-                maxLength={11}
+                maxlength={11}
                 className="w-full"
               />
             </View>

+ 1 - 1
mini/src/pages/passengers/passengers.tsx

@@ -12,7 +12,7 @@ import { Label } from '@/components/ui/label'
 import { useAuth } from '@/utils/auth'
 import { passengerClient } from '@/api'
 import type { InferResponseType } from 'hono/client'
-import { IdType } from '@d8d/server/src/share/passenger.types'
+import { IdType } from '@/types/passenger.types'
 
 // 使用RPC方式提取类型
 type Passenger = InferResponseType<typeof passengerClient.$get, 200>['data'][0]

+ 8 - 0
mini/src/types/passenger.types.ts

@@ -0,0 +1,8 @@
+// 证件类型枚举
+export enum IdType {
+  ID_CARD = '身份证',        // 身份证
+  HONG_KONG_MACAO_PASS = '港澳通行证',     // 港澳通行证
+  TAIWAN_PASS = '台湾通行证', // 台湾通行证
+  PASSPORT = '护照',            // 护照
+  OTHER = '其他证件'           // 其他证件
+}

+ 2 - 1
mini/tsconfig.json

@@ -21,7 +21,8 @@
       "node_modules/@types"
     ],
     "paths": {
-      "@/*": ["./src/*"]
+      "@/*": ["./src/*"],
+      "@d8d/server/*": ["../packages/server/src/*"]
     }
   },
   "include": ["./src", "./types", "./config"],

+ 5 - 0
packages/server/package.json

@@ -15,6 +15,11 @@
       "import": "./src/modules/*",
       "require": "./src/modules/*",
       "types": "./src/modules/*"
+    },
+    "./share/*": {
+      "import": "./src/share/*",
+      "require": "./src/share/*",
+      "types": "./src/share/*"
     }
   },
   "scripts": {

+ 1 - 1
packages/server/src/modules/passengers/passenger.entity.ts

@@ -1,6 +1,6 @@
 import { Entity, PrimaryGeneratedColumn, Column, CreateDateColumn, UpdateDateColumn, ManyToOne, JoinColumn, ObjectLiteral } from 'typeorm';
 import { UserEntity } from '../users/user.entity';
-import { IdType } from '../../share/passenger.types';
+import { IdType } from './passenger.schema';
 
 @Entity('passengers')
 export class Passenger implements ObjectLiteral {

+ 8 - 2
packages/server/src/modules/passengers/passenger.schema.ts

@@ -1,7 +1,13 @@
-import { IdType } from '../../share/passenger.types';
 import { z } from 'zod';
 
-export { IdType }
+// 证件类型枚举
+export enum IdType {
+  ID_CARD = '身份证',        // 身份证
+  HONG_KONG_MACAO_PASS = '港澳通行证',     // 港澳通行证
+  TAIWAN_PASS = '台湾通行证', // 台湾通行证
+  PASSPORT = '护照',            // 护照
+  OTHER = '其他证件'           // 其他证件
+}
 
 // 证件类型枚举schema
 export const IdTypeSchema = z.nativeEnum(IdType);

+ 1 - 1
web/src/client/api.ts

@@ -5,7 +5,7 @@ import type {
   FileRoutes, AdminActivitiesRoutes, AdminRoutesRoutes,
   AdminAreasRoutes, AdminLocationsRoutes, RoutesRoutes,
   AdminPassengersRoutes
-} from '@d8d/server';
+} from '@d8d/server/api';
 
 // 创建 axios 适配器
 const axiosFetch = async (url: RequestInfo | URL, init?: RequestInit) => {