Ver código fonte

✨ feat(activity-select): add area name display in activity selection page

- pass startAreaName and endAreaName as URL parameters from home page to activity selection page
- decode and use area names from URL parameters in ActivitySelectPage
- optimize area name retrieval logic: prioritize route parameters, then route data, finally default values
yourname 3 meses atrás
pai
commit
fff4ef5117

+ 6 - 0
mini/src/pages/home/index.tsx

@@ -125,11 +125,17 @@ const HomePage: React.FC = () => {
       return
     }
 
+    // 获取地区显示文本
+    const startAreaName = getAreaDisplayText(searchParams.startAreaIds)
+    const endAreaName = getAreaDisplayText(searchParams.endAreaIds)
+
     // 导航到活动选择页面
     navigateTo({
       url: `/pages/select-activity/ActivitySelectPage?` +
         `startAreaIds=${JSON.stringify(searchParams.startAreaIds)}&` +
         `endAreaIds=${JSON.stringify(searchParams.endAreaIds)}&` +
+        `startAreaName=${encodeURIComponent(startAreaName)}&` +
+        `endAreaName=${encodeURIComponent(endAreaName)}&` +
         `date=${searchParams.date}&` +
         `vehicleType=${searchParams.vehicleType}&` +
         `travelMode=${searchParams.travelMode}`

+ 19 - 4
mini/src/pages/select-activity/ActivitySelectPage.tsx

@@ -82,6 +82,8 @@ const ActivitySelectPage: React.FC = () => {
   const searchParams = {
     startAreaIds: router.params.startAreaIds ? JSON.parse(router.params.startAreaIds) as number[] : [],
     endAreaIds: router.params.endAreaIds ? JSON.parse(router.params.endAreaIds) as number[] : [],
+    startAreaName: router.params.startAreaName ? decodeURIComponent(router.params.startAreaName) : '',
+    endAreaName: router.params.endAreaName ? decodeURIComponent(router.params.endAreaName) : '',
     date: router.params.date || new Date().toISOString().split('T')[0],
     vehicleType: router.params.vehicleType || 'bus',
     travelMode: router.params.travelMode || 'carpool'
@@ -112,10 +114,23 @@ const ActivitySelectPage: React.FC = () => {
 
   const activities = routeData?.activities || []
 
-  // 从路线数据中获取地区名称
+  // 获取地区名称(优先使用路由参数传递的名称,其次从路线数据获取)
   const getAreaNames = () => {
+    // 如果路由参数中已经有地区名称,直接使用
+    if (searchParams.startAreaName && searchParams.startAreaName !== '请选择地区' &&
+        searchParams.endAreaName && searchParams.endAreaName !== '请选择地区') {
+      return {
+        startAreaName: searchParams.startAreaName,
+        endAreaName: searchParams.endAreaName
+      }
+    }
+
+    // 如果没有路线数据,使用默认值
     if (!routeData?.routes || routeData.routes.length === 0) {
-      return { startAreaName: '出发地', endAreaName: '目的地' }
+      return {
+        startAreaName: searchParams.startAreaName || '出发地',
+        endAreaName: searchParams.endAreaName || '目的地'
+      }
     }
 
     // 从第一条路线中获取出发地和目的地的地区信息
@@ -147,8 +162,8 @@ const ActivitySelectPage: React.FC = () => {
     }
 
     return {
-      startAreaName: getAreaDisplayName(startLocation) || '出发地',
-      endAreaName: getAreaDisplayName(endLocation) || '目的地'
+      startAreaName: getAreaDisplayName(startLocation) || searchParams.startAreaName || '出发地',
+      endAreaName: getAreaDisplayName(endLocation) || searchParams.endAreaName || '目的地'
     }
   }