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

fix(frontend): activity/guide pages use API_BASE_URL for uploaded cover images

Convert relative activity cover image paths to absolute URLs via config.API_BASE_URL in activity pages and guide activity management pages.

Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
Xiaogang Liao 3 месяцев назад
Родитель
Сommit
9f5b46cf6d

+ 8 - 4
cfc-frontend/pages/activity/index.vue

@@ -57,7 +57,7 @@
           >
             <image
               class="card-cover"
-              :src="act.coverImage || '/static/default-activity.png'"
+              :src="getImageUrl(act.coverImage) || '/static/default-activity.png'"
               mode="aspectFill"
             />
             <view class="card-info">
@@ -133,7 +133,7 @@
           >
             <image
               class="card-cover"
-              :src="act.coverImage || '/static/default-activity.png'"
+              :src="getImageUrl(act.coverImage) || '/static/default-activity.png'"
               mode="aspectFill"
             />
             <view class="card-info">
@@ -185,7 +185,7 @@
           >
             <image
               class="card-cover"
-              :src="act.coverImage || '/static/default-activity.png'"
+              :src="getImageUrl(act.coverImage) || '/static/default-activity.png'"
               mode="aspectFill"
             />
             <view class="card-info">
@@ -263,7 +263,7 @@
           >
             <image
               class="card-cover"
-              :src="act.coverImage || '/static/default-activity.png'"
+              :src="getImageUrl(act.coverImage) || '/static/default-activity.png'"
               mode="aspectFill"
             />
             <view class="card-info">
@@ -298,6 +298,7 @@
 
 <script>
 import { getActivityList, getMyActivityRegistrations, activityCheckin, cancelActivityRegistration, adminListMyActivities, adminPublishActivity, adminEndActivity } from '@/utils/api.js'
+import config from '@/config.js'
 
 export default {
   computed: {
@@ -764,6 +765,9 @@ export default {
           }
         }
       })
+    },
+    getImageUrl: function(path) {
+      return config.API_BASE_URL + path
     }
   }
 }

+ 6 - 2
cfc-frontend/pages/guide/activities/detail.vue

@@ -45,7 +45,7 @@
           <text class="form-label">封面图片URL</text>
           <input class="form-input" v-model="form.coverImage" placeholder="输入图片URL" />
           <view class="cover-preview" v-if="form.coverImage">
-            <image class="preview-img" :src="form.coverImage" mode="aspectFill" @error="onImgError" />
+            <image class="preview-img" :src="getImageUrl(form.coverImage)" mode="aspectFill" @error="onImgError" />
           </view>
         </view>
 
@@ -68,7 +68,7 @@
     <!-- 只读模式(已发布/已取消/已完成) -->
     <view class="detail-section" v-else>
       <view class="detail-cover" v-if="form.coverImage">
-        <image class="cover-img" :src="form.coverImage" mode="aspectFill" />
+        <image class="cover-img" :src="getImageUrl(form.coverImage)" mode="aspectFill" />
       </view>
       <view class="detail-cover placeholder" v-else>
         <text class="placeholder-icon">{{ categoryIcon(form.category) }}</text>
@@ -125,6 +125,7 @@
 
 <script>
 import { getGuideActivityDetail, createActivity, updateActivity, publishActivity } from '../../../utils/api.js'
+import config from '@/config.js'
 
 export default {
   data() {
@@ -314,6 +315,9 @@ export default {
       var h = ('0' + d.getHours()).slice(-2)
       var mi = ('0' + d.getMinutes()).slice(-2)
       return y + '-' + m + '-' + day + ' ' + h + ':' + mi
+    },
+    getImageUrl: function(path) {
+      return config.API_BASE_URL + path
     }
   }
 }

+ 5 - 1
cfc-frontend/pages/guide/activities/index.vue

@@ -24,7 +24,7 @@
       <view class="activity-card" v-for="act in activities" :key="act.id"
         @click="goToDetail(act.id)">
         <view class="act-cover" v-if="act.coverImage">
-          <image class="cover-img" :src="act.coverImage" mode="aspectFill" />
+          <image class="cover-img" :src="getImageUrl(act.coverImage)" mode="aspectFill" />
         </view>
         <view class="act-cover placeholder" v-else>
           <text class="cover-placeholder-text">{{ categoryIcon(act.category) }}</text>
@@ -83,6 +83,7 @@
 
 <script>
 import { getActivityList, publishActivity, cancelActivity, deleteActivity } from '../../../utils/api.js'
+import config from '@/config.js'
 
 export default {
   data() {
@@ -204,6 +205,9 @@ export default {
       var h = ('0' + d.getHours()).slice(-2)
       var mi = ('0' + d.getMinutes()).slice(-2)
       return y + '-' + m + '-' + day + ' ' + h + ':' + mi
+    },
+    getImageUrl: function(path) {
+      return config.API_BASE_URL + path
     }
   }
 }