소스 검색

fix(frontend): activity 详情/列表封面拼接 API_BASE_URL

FileStorageService 存储的是相对路径(/uploads/...),页面直接用作 image src
导致封面加载失败。统一走 getImageUrl() 拼接 config.API_BASE_URL。
asus 1 개월 전
부모
커밋
28e5cb2309
2개의 변경된 파일18개의 추가작업 그리고 6개의 파일을 삭제
  1. 8 2
      cfc-frontend/pages/activity/activity-detail/activity-detail.vue
  2. 10 4
      cfc-frontend/pages/activity/index.vue

+ 8 - 2
cfc-frontend/pages/activity/activity-detail/activity-detail.vue

@@ -19,7 +19,7 @@
       <image
         v-if="activity.coverImage"
         class="cover"
-        :src="activity.coverImage"
+        :src="getImageUrl(activity.coverImage)"
         mode="widthFix"
       />
       <image v-else class="cover placeholder-cover" src="/static/default-activity.png" mode="aspectFill" />
@@ -254,7 +254,7 @@
     <ContentSharePoster
       :show="showPoster"
       :title="activity && activity.title"
-      :coverImage="activity && activity.coverImage"
+      :coverImage="activity && getImageUrl(activity.coverImage)"
       :qrCodeBase64="posterQrCode"
       typeLabel="活动推荐"
       :dimensionCode="activity && activity.dimensionCode"
@@ -268,6 +268,7 @@
 
 <script>
 import { getActivityDetail, activityCheckin, cancelActivityRegistration, createActivityOrder, submitActivityFeedback, getActivityFeedbackList, getMyActivityFeedback, getFamilyMembers, getShareQrCode, getMyMembership } from '@/utils/api.js'
+import config from '@/config.js'
 import shareMixin from '../../../components/share-mixin.js'
 import MpHtml from '@/components/mp-html/mp-html.vue'
 import ContentSharePoster from '@/components/ContentSharePoster.vue'
@@ -328,6 +329,11 @@ export default {
   },
   methods: {
     // ===== 工具方法 =====
+    getImageUrl: function(path) {
+      if (!path) return ''
+      if (path.indexOf('http://') === 0 || path.indexOf('https://') === 0) return path
+      return config.API_BASE_URL + path
+    },
     checkMemberStatus: function() {
       var that = this
       getMyMembership().then(function(res) {

+ 10 - 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">
@@ -131,7 +131,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">
@@ -195,7 +195,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">
@@ -273,7 +273,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">
@@ -308,6 +308,7 @@
 
 <script>
 import { getActivityList, getMyActivityRegistrations, activityCheckin, cancelActivityRegistration, adminListMyActivities, adminPublishActivity, submitActivityForReview } from '@/utils/api.js'
+import config from '@/config.js'
 
 export default {
   computed: {
@@ -373,6 +374,11 @@ export default {
     }
   },
   methods: {
+    getImageUrl: function(path) {
+      if (!path) return ''
+      if (path.indexOf('http://') === 0 || path.indexOf('https://') === 0) return path
+      return config.API_BASE_URL + path
+    },
     onTabChange: function(key) {
       this.currentTab = key
       this.hasMore = true