Przeglądaj źródła

feat(membership): 补全9.9体验会员功能 + 升级流程优化
- upgrade.vue: 添加体验会员(BASIC) compare 表列 + 基本功能描述
- upgrade.vue: 默认 selectedLevel 升级至下一级(FAMILY→PREMIUM)
- upgrade.vue: 按钮显示 '续费' 而非 '下一步' 于 renew 当前等级

Sisyphus 4 dni temu
rodzic
commit
559827407a
1 zmienionych plików z 31 dodań i 10 usunięć
  1. 31 10
      cfc-frontend/pages/membership/upgrade.vue

+ 31 - 10
cfc-frontend/pages/membership/upgrade.vue

@@ -52,7 +52,7 @@
             <text class="period-original" v-if="showOriginalPrice(p.key)">¥{{ getOriginalPriceForPeriod(p.key) / 100 }}</text>
           </view>
         </view>
-        <button class="btn-upgrade" @click="goNext">下一步</button>
+        <button class="btn-upgrade" @click="goNext">{{ isRenew ? '续费' : '下一步' }}</button>
       </view>
 
       <!-- 权益对比表 -->
@@ -62,12 +62,14 @@
           <view class="compare-row header-row">
             <text class="compare-cell cell-feature">权益项</text>
             <text class="compare-cell cell-free">免费</text>
+            <text class="compare-cell cell-basic" :class="selectedLevel === 'BASIC' ? 'active' : ''">体验会员</text>
             <text class="compare-cell cell-family" :class="selectedLevel === 'FAMILY' ? 'active' : ''">家庭会员</text>
             <text class="compare-cell cell-premium" :class="selectedLevel === 'PREMIUM' ? 'active' : ''">高级会员</text>
           </view>
           <view class="compare-row" v-for="(item, idx) in compareData" :key="idx">
             <text class="compare-cell cell-feature">{{ item.name }}</text>
             <text class="compare-cell cell-free">{{ item.free }}</text>
+            <text class="compare-cell cell-basic" :class="selectedLevel === 'BASIC' ? 'active' : ''">{{ item.basic }}</text>
             <text class="compare-cell cell-family" :class="selectedLevel === 'FAMILY' ? 'active' : ''">{{ item.family }}</text>
             <text class="compare-cell cell-premium" :class="selectedLevel === 'PREMIUM' ? 'active' : ''">{{ item.premium }}</text>
           </view>
@@ -111,13 +113,17 @@ export default {
       isFree: true,
       currentLevelName: '免费用户',
       compareData: [
-        { name: '商品折扣', free: '普通价格', family: '会员折扣', premium: '会员折扣', lifetime: '会员折扣' },
-        { name: '家庭管理', free: '基础功能', family: '全部功能', premium: '全部功能+优先响应', lifetime: '全部功能+专属管家' },
-        { name: '管家服务', free: '—', family: '—', premium: '每周一次', lifetime: '专属管家7×24h' },
-        { name: '推荐佣金', free: '不可参与', family: '可参与', premium: '可参与', lifetime: '可参与' },
-        { name: '专属活动', free: '部分参与', family: '全部参与', premium: '优先参与', lifetime: 'VIP专属+定制活动' },
-        { name: '成长报告', free: '月度', family: '每周+深度', premium: '每日+深度+专家解读', lifetime: '实时+专家深度解读' },
-        { name: '任务配额', free: '每日5个', family: '不限量', premium: '不限量+优先审核', lifetime: '不限量+专属通道' }
+        { name: '商品折扣', free: '普通价格', basic: '会员折扣', family: '会员折扣', premium: '会员折扣', lifetime: '会员折扣' },
+        { name: '家庭管理', free: '基础功能', basic: '3个孩子', family: '10个孩子', premium: '20个孩子', lifetime: '全部功能+专属管家' },
+        { name: 'AI健康顾问', free: '—', basic: '3次/月', family: '不限', premium: '不限', lifetime: '不限' },
+        { name: '报告解读', free: '—', basic: '1次/月', family: '每周+深度', premium: '每日+深度+专家解读', lifetime: '实时+专家深度解读' },
+        { name: '健康报告上传', free: '—', basic: '2份/月', family: '不限', premium: '不限', lifetime: '不限' },
+        { name: '测评预约', free: '仅查看', basic: '1次/月', family: '不限', premium: '优先', lifetime: '优先' },
+        { name: '管家服务', free: '—', basic: '—', family: '月1次', premium: '每周一次', lifetime: '专属管家7×24h' },
+        { name: '推荐佣金', free: '不可参与', basic: '可参与', family: '可参与', premium: '可参与', lifetime: '可参与' },
+        { name: '专属活动', free: '部分参与', basic: '部分参与', family: '全部参与', premium: '优先参与', lifetime: 'VIP专属+定制活动' },
+        { name: '成长报告', free: '月度', basic: '基础模板', family: '每周+深度', premium: '每日+深度+专家解读', lifetime: '实时+专家深度解读' },
+        { name: '任务配额', free: '每日5个', basic: '每日3个', family: '不限量', premium: '不限量+优先审核', lifetime: '不限量+专属通道' }
       ],
       periods: [
         { key: 'monthly', label: '月度', unit: '/月' },
@@ -136,6 +142,11 @@ export default {
         return lv.levelCode !== 'FREE' && lv.levelCode !== 'LIFETIME' && lv.levelCode !== 'PROVIDER'
       })
     },
+    isRenew() {
+      var current = this.membership && this.membership.memberLevel
+      if (current && current !== 'FREE' && this.selectedLevel === current) return true
+      return false
+    },
     visiblePeriods() {
       var self = this
       return this.periods.filter(function(p) {
@@ -206,11 +217,9 @@ export default {
         if (this.membership && this.membership.memberLevel && this.membership.memberLevel !== 'FREE') {
           this.isFree = false
           this.currentLevelName = this.membership.levelName || '家庭会员'
-          this.selectedLevel = this.membership.memberLevel
         } else {
           this.isFree = true
           this.currentLevelName = '免费用户'
-          this.selectedLevel = 'FAMILY'
         }
       } catch (e) {
         console.error('加载会员信息失败', e)
@@ -218,6 +227,7 @@ export default {
       try {
         const levelsRes = await getMembershipPlans()
         this.levels = levelsRes.data || []
+        this.applyDefaultLevel()
       } catch (e) {
         console.error('加载会员等级失败', e)
       }
@@ -248,6 +258,17 @@ export default {
     selectPeriod: function(key) {
       this.selectedPeriod = key
     },
+    applyDefaultLevel: function() {
+      var current = this.membership && this.membership.memberLevel ? this.membership.memberLevel : 'FREE'
+      var rank = { 'FREE': 0, 'BASIC': 1, 'FAMILY': 2, 'PREMIUM': 3 }
+      var currentRank = rank[current] !== undefined ? rank[current] : 0
+      var target = null
+      for (var i = 0; i < this.buyableLevels.length; i++) {
+        var r = rank[this.buyableLevels[i].levelCode]
+        if (r !== undefined && r > currentRank) { target = this.buyableLevels[i].levelCode; break }
+      }
+      this.selectedLevel = target || current
+    },
     getPriceForPeriod: function(periodKey) {
       var plan = null
       for (var i = 0; i < this.levels.length; i++) {