Просмотр исходного кода

✨ feat(route): 添加车型和出行方式文本转换工具函数

- 新增getVehicleTypeText函数用于将车型枚举转换为中文显示
- 新增getTravelModeText函数用于将出行方式枚举转换为中文显示
- 创建vehicleTypeMap和travelModeMap映射表统一管理文本转换规则
- 优化RoutesPage中车型筛选标签和表格显示,使用新工具函数替代硬编码文本

♻️ refactor(routes-page): 使用工具函数优化车型显示逻辑

- 替换车型筛选标签中的硬编码条件判断为getVehicleTypeText调用
- 优化路由表格中车型显示,使用工具函数统一处理文本转换
- 移除重复的车型文本转换逻辑,提高代码可维护性
yourname 3 месяцев назад
Родитель
Сommit
7431229c0d
2 измененных файлов с 28 добавлено и 3 удалено
  1. 3 2
      web/src/client/admin/pages/Routes.tsx
  2. 25 1
      web/src/share/route.types.ts

+ 3 - 2
web/src/client/admin/pages/Routes.tsx

@@ -15,6 +15,7 @@ import { Dialog, DialogContent, DialogDescription, DialogHeader, DialogTitle } f
 import { RouteForm } from '../components/RouteForm';
 import type { CreateRouteInput, UpdateRouteInput } from '@d8d/server/modules/routes/route.schema';
 import { LocationSelect } from '../components/LocationSelect';
+import { getVehicleTypeText } from '@/share/route.types';
 
 // 类型提取规范
 type RouteResponse = InferResponseType<typeof routeClient.$get, 200>['data'][0];
@@ -305,7 +306,7 @@ export const RoutesPage: React.FC = () => {
               )}
               {vehicleTypeFilter !== 'all' && (
                 <Badge variant="secondary" className="flex items-center gap-1">
-                  车型: {vehicleTypeFilter === 'bus' ? '大巴' : vehicleTypeFilter === 'minibus' ? '中巴' : '小车'}
+                  车型: {getVehicleTypeText(vehicleTypeFilter)}
                   <button
                     onClick={() => setVehicleTypeFilter('all')}
                     className="ml-1 hover:text-red-500"
@@ -385,7 +386,7 @@ export const RoutesPage: React.FC = () => {
                       </TableCell>
                       <TableCell>
                         <span className="px-2 py-1 rounded-full text-xs bg-blue-100 text-blue-800">
-                          {route.vehicleType}
+                          {getVehicleTypeText(route.vehicleType)}
                         </span>
                       </TableCell>
                       <TableCell>

+ 25 - 1
web/src/share/route.types.ts

@@ -89,4 +89,28 @@ export interface RouteSearchParams {
   pageSize?: number;
   sortBy?: string;
   sortOrder?: 'ASC' | 'DESC';
-}
+}
+
+// 车辆型号枚举到中文的映射
+export const vehicleTypeMap = {
+  'bus': '大巴',
+  'minibus': '中巴',
+  'car': '小车',
+  'business': '商务车'
+} as const;
+
+// 获取车辆型号的中文显示
+export const getVehicleTypeText = (vehicleType: string) => {
+  return vehicleTypeMap[vehicleType as keyof typeof vehicleTypeMap] || vehicleType || '未知车型';
+};
+
+// 出行方式枚举到中文的映射
+export const travelModeMap = {
+  'carpool': '拼车',
+  'charter': '包车'
+} as const;
+
+// 获取出行方式的中文显示
+export const getTravelModeText = (travelMode: string) => {
+  return travelModeMap[travelMode as keyof typeof travelModeMap] || travelMode || '未知出行方式';
+};