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

fix: intent-quiz入口移到首页,修改IntentPicker组件支持跳过提醒

- IntentPicker组件:跳过按钮调用/api/user-intent/skip记录skipCount
- 删除错误的pages/health/intent-quiz.vue页面
- 从health-main移除intent-reminder相关代码
- pages.json移除intent-quiz路由注册
iwt 2 месяцев назад
Родитель
Сommit
bacb411feb

+ 23 - 3
cfc-frontend/components/intent-picker.vue

@@ -61,7 +61,7 @@
 </template>
 
 <script>
-import { getProblemDomainList } from '../utils/api.js'
+import { getProblemDomainList, skipUserIntent } from '../utils/api.js'
 
 export default {
   name: 'IntentPicker',
@@ -77,7 +77,8 @@ export default {
       domains: [],
       selectedCode: '',
       selectedName: '',
-      loading: false
+      loading: false,
+      skipping: false
     }
   },
   watch: {
@@ -133,7 +134,26 @@ export default {
       this.$emit('select', { intentType: intentType })
     },
     onSkip() {
-      this.$emit('close')
+      var self = this
+      if (self.skipping) return
+      self.skipping = true
+      skipUserIntent().then(function(res) {
+        self.skipping = false
+        if (res.code === 200 && res.data) {
+          var skipCount = res.data.skipCount || 0
+          if (skipCount >= 3) {
+            uni.setStorageSync('intent_skip_max', '1')
+          }
+          uni.setStorageSync('intent_skipped_at', Date.now())
+          uni.showToast({ title: '好的,下次再来', icon: 'none' })
+          setTimeout(function() { self.$emit('close') }, 600)
+        } else {
+          self.$emit('close')
+        }
+      }).catch(function() {
+        self.skipping = false
+        self.$emit('close')
+      })
     }
   }
 }

+ 0 - 1
cfc-frontend/pages.json

@@ -928,7 +928,6 @@
         {
           }
         {
-          "path": "intent-quiz",
           "style": {
             "navigationBarTitleText": "选择开始方式"
           }

+ 0 - 31
cfc-frontend/pages/health-main/index.vue

@@ -58,24 +58,6 @@
           </view>
           <text class="ai-q-arrow">›</text>
         </view>
-      </view>
-
-      <!-- 意图问卷提醒(跳过过但还没做问卷的用户) -->
-      <view v-if="showIntentReminder" class="intent-reminder" @click="goIntentQuiz">
-        <view class="reminder-icon">💡</view>
-        <view class="reminder-body">
-          <text class="reminder-text">还没完成健康问卷?</text>
-          <text class="reminder-sub">花1分钟回答几道题,系统为你推荐最合适的五维方向</text>
-        </view>
-        <text class="reminder-arrow">›</text>
-      </view>
-      <!-- 数据预览(示例) -->
-      <view class="demo-section">
-        <view class="demo-section-head">
-          <text class="demo-section-title">登录后 · 看懂这些数据</text>
-          <text class="demo-section-sub">示例数据 · 上传报告 / 完成测评后展示真实结果</text>
-        </view>
-        <view class="demo-chart-title-row">
           <text class="demo-chart-name">🟠 身体七维</text>
           <text class="demo-chart-tag">示例</text>
         </view>
@@ -297,8 +279,6 @@ export default {
       reports: [],
       lastPlan: '',
       healthArticles: [],
-      intentData: null,
-      showIntentReminder: false,
       tabs: [
         { code: 'body', label: '健康', icon: '🟠', color: '#FF8C42' },
         { code: 'cognitive', label: '认知', icon: '🧠', color: '#6366F1' },
@@ -532,7 +512,6 @@ export default {
     },
     goSelfTest: function() { uni.navigateTo({ url: '/pages/health/survey-questionnaire?dim=all' }) },
     goAiQuestionnaire: function() { uni.navigateTo({ url: '/pages/health/ai-questionnaire' }) },
-    goIntentQuiz: function() { uni.navigateTo({ url: '/pages/health/intent-quiz' }) },
     goPlanSummary: function() {
       var url = '/pages/health/health-plan-summary'
       if (this.selectedMemberId) url += '?memberId=' + this.selectedMemberId
@@ -543,14 +522,6 @@ export default {
       try {
         var api = require('../../utils/api.js')
         var memberId = uni.getStorageSync('currentChildId') || uni.getStorageSync('currentMemberId') || uni.getStorageSync('userId') || ''
-        // 检查意图状态
-        api.getUserIntent().then(function(res) {
-          if (res.code === 200 && res.data) {
-            self.intentData = res.data
-            var skipCount = res.data.skipCount || 0
-            self.showIntentReminder = !res.data.intentType && skipCount > 0 && skipCount < 3
-          }
-        }).catch(function() {})
         // 健康报告(memberId 为空时不调用,避免后端 400)
         if (memberId) {
           api.getReportList(memberId).then(function(res) {
@@ -707,8 +678,6 @@ export default {
 .self-test-title { font-size: 28rpx; font-weight: bold; color: #fff; display: block; }
 .self-test-sub { font-size: 22rpx; color: rgba(255,255,255,0.8); display: block; margin-top: 4rpx; }
 .ai-q-entry { margin: 0 24rpx 16rpx; background: linear-gradient(135deg, #F97316, #F59E0B); border-radius: 20rpx; padding: 24rpx 28rpx; }
-.intent-reminder { margin: 0 24rpx 16rpx; background: #fff; border-radius: 20rpx; padding: 24rpx 28rpx; display: flex; align-items: center; box-shadow: 0 2rpx 12rpx rgba(0,0,0,0.06); }
-.intent-reminder:active { opacity: 0.85; }
 .reminder-icon { font-size: 40rpx; margin-right: 16rpx; flex-shrink: 0; }
 .reminder-body { flex: 1; min-width: 0; }
 .reminder-text { font-size: 26rpx; font-weight: 600; color: #333; display: block; }