Преглед изворни кода

D(index-home): 移除五维能量状态带 + 我的任务/家庭任务计数徽标

需求 D — 小程序首页 index-home 调整
(仅改 cfc-frontend/pages/index-home/index.vue)

改动摘要:
- 删除模板 .dim-band 整块(健康指数 + 五行状态行 + 未解锁空态)
- 删除仅被该块使用的 computed dimBandHealthIndex / dimBandRows,
  以及 methods _dimMeta / _dimDetail / _dimStatusText / _dimStatusCss
- 删除对应样式 .dim-band* / .dim-row* / .chip-* 整块,并从
  reduced-motion 规则中剔除 .dim-row
- 任务区标题改为「我的任务(pendingTasks.length)」,右侧新增
  「家庭任务(familyTodoCount)」计数徽标,点击跳 /pages/tasks/tasks;
  任务列表保留 v-if="hasPendingTasks",无任务时隐藏列表、标题计数仍显示
- 护栏:components/wuxing-sandbox.vue 未改动(颜色保持原状);
  沙盘区 GateLock / WuxingSandbox / totalHealthIndex 传递与逻辑不变

验证:
- npm run build:mp-weixin 通过(exit 0,DONE Build complete;仅存量 warning)
- node scripts/audit-mp-antipatterns.js:ERROR 0
- node scripts/verify-vue-compile.js:模板/样式通过(脚本段为存量 Node ESM
  环境限制,基线 origin/cfclub 同文件同样失败)
Sisyphus Agent пре 1 недеља
родитељ
комит
f07eea2bfc
1 измењених фајлова са 25 додато и 206 уклоњено
  1. 25 206
      cfc-frontend/pages/index-home/index.vue

+ 25 - 206
cfc-frontend/pages/index-home/index.vue

@@ -74,38 +74,6 @@
       </view>
     </view>
 
-    <!-- ⓪.c 五维能量状态带 — 健康指数 + 五行状态行(线性序 身→智→富→行→心,设计稿 §3) -->
-    <view class="dim-band" :class="{ 'dim-band--locked': sandboxLocked }">
-      <view class="dim-band-head">
-        <text class="dim-band-kicker">浠艾福能量沙盘</text>
-        <text class="dim-band-index">
-          <text class="dim-band-index-num">{{ dimBandHealthIndex }}</text>
-          <text class="dim-band-index-label">健康指数</text>
-        </text>
-      </view>
-      <view v-if="!sandboxLocked && dimBandRows.length > 0" class="dim-band-rows">
-        <view
-          v-for="row in dimBandRows"
-          :key="row._key"
-          class="dim-row"
-          :class="'dim-row--' + row.code">
-          <image class="dim-row-icon" :src="row.icon" mode="aspectFit" />
-          <view class="dim-row-main">
-            <view class="dim-row-line">
-              <text class="dim-row-name">{{ row.name }}</text>
-              <text v-if="row.value !== null" class="dim-row-value">{{ row.value }}</text>
-            </view>
-            <text class="dim-row-detail">{{ row.detail }}</text>
-          </view>
-          <text class="dim-row-chip" :class="'chip-' + row.statusCss">{{ row.statusText }}</text>
-        </view>
-      </view>
-      <view v-else class="dim-band-empty" @click="goSelfTest">
-        <text class="dim-band-empty-title">{{ sandboxLocked ? '尚未完成健康自检' : '正在获取能量数据…' }}</text>
-        <text class="dim-band-empty-sub">{{ sandboxLocked ? '完成 4 步问卷,解锁全家能量报告' : '请稍候刷新' }}</text>
-      </view>
-    </view>
-
     <!-- ① 了解区 — 自测大卡(首屏,引导"从了解开始") -->
     <view class="self-test-card" @click="goSelfTest">
       <view class="self-test-head">
@@ -197,12 +165,15 @@
 
     <!-- ④ 内容区 — 家庭动态 -->
 
-    <view v-if="hasPendingTasks" class="section">
+    <view class="section">
       <view class="section-header">
-        <text class="section-title">📝 我的任务</text>
-        <text class="section-more" @click="navTo('/pages/tasks/tasks')">全部 ›</text>
+        <text class="section-title">📝 我的任务({{ pendingTasks.length }})</text>
+        <view class="section-header-extra">
+          <text class="task-family-count" @click="navTo('/pages/tasks/tasks')">家庭任务({{ familyTodoCount }})</text>
+          <text class="section-more" @click="navTo('/pages/tasks/tasks')">全部 ›</text>
+        </view>
       </view>
-      <view class="task-quick-list">
+      <view v-if="hasPendingTasks" class="task-quick-list">
         <view
           v-for="task in pendingTasks"
           :key="task.id"
@@ -800,38 +771,6 @@ title: '添加家庭成员',
       }
       return n
     },
-    // ===== ⓪.c 五维能量状态带(设计稿 §3,线性序 身→智→富→行→心)=====
-    dimBandHealthIndex: function() {
-      if (this.sandboxLocked) return '--'
-      var v = this.totalHealthIndex || 0
-      return v > 0 ? String(v) : '--'
-    },
-    dimBandRows: function() {
-      if (this.sandboxLocked) return []
-      // 线性顺序(与沙盘星图环形序不同,B1 明确 身→智→富→行→心)
-      var order = ['body', 'wisdom', 'wealth', 'action', 'mind']
-      var scores = this.familySandboxScores || {}
-      var members = this.familySandboxMembers || []
-      var self = this
-      var rows = []
-      for (var i = 0; i < order.length; i++) {
-        var code = order[i]
-        var meta = self._dimMeta(code)
-        var val = scores[code]
-        var hasVal = (typeof val === 'number' && val > 0)
-        rows.push({
-          _key: 'db-' + code,
-          code: code,
-          name: meta.name,
-          icon: meta.icon,
-          value: hasVal ? val : null,
-          detail: self._dimDetail(code, val, members),
-          statusCss: hasVal ? self._dimStatusCss(val) : 'muted',
-          statusText: hasVal ? self._dimStatusText(val) : '未记录'
-        })
-      }
-      return rows
-    },
     // ===== 首页动态提醒列表(含具体值)=====
     // 顺序:今日能量/积分/CF 变更(带数值)→ 家庭动态(通知/公告/任务完成)
     feedItems: function() {
@@ -1857,46 +1796,6 @@ title: '添加家庭成员',
     goNotifications: function() {
       uni.navigateTo({ url: '/pages/teacher/messages' })
     },
-    // ===== ⓪.c 五维能量状态带辅助方法 =====
-    // 维度元信息(图标为静态 SVG 资源;小程序不支持模板内联 svg)
-    _dimMeta: function(code) {
-      var map = {
-        body: { name: '身', icon: '/static/icons/dim-body.svg' },
-        wisdom: { name: '智', icon: '/static/icons/dim-wisdom.svg' },
-        wealth: { name: '富', icon: '/static/icons/dim-wealth.svg' },
-        action: { name: '行', icon: '/static/icons/dim-action.svg' },
-        mind: { name: '心', icon: '/static/icons/dim-mind.svg' }
-      }
-      return map[code] || { name: '', icon: '' }
-    },
-    // 详情文案:优先取该维度贡献最高的成员昵称,落到一句可读状态
-    _dimDetail: function(code, val, members) {
-      var list = members || []
-      var pick = null
-      for (var i = 0; i < list.length; i++) {
-        var m = list[i] || {}
-        var v = m[code + 'Score']
-        if (typeof v === 'number' && v > 0) {
-          if (!pick || v > pick.v) pick = { v: v, name: m.nickname || m.name || '成员' }
-        }
-      }
-      if (!pick) return '暂无数据'
-      var level = this._dimStatusText(val)
-      return pick.name + ' · ' + level
-    },
-    // 状态标签:平稳 / 略偏 / 需关注(阈值与沙盘读数口径一致)
-    _dimStatusText: function(val) {
-      if (typeof val !== 'number' || val <= 0) return '未记录'
-      if (val >= 80) return '平稳'
-      if (val >= 60) return '略偏'
-      return '需关注'
-    },
-    _dimStatusCss: function(val) {
-      if (typeof val !== 'number' || val <= 0) return 'muted'
-      if (val >= 80) return 'ok'
-      if (val >= 60) return 'warn'
-      return 'danger'
-    },
     // ===== Next Best Action 引导条点击 =====
     onGuideTap: function(action) {
       if (!action) return
@@ -2690,6 +2589,22 @@ $c-warm-tint:     #FFF3E7;
   font-size: calc(24rpx * var(--font-scale, 1));
   color: $brand-primary;
 }
+/* 区块标题右侧计数徽标(家庭任务数) */
+.section-header-extra {
+  display: flex;
+  flex-direction: row;
+  align-items: center;
+}
+.task-family-count {
+  margin-right: 16rpx;
+  padding: 4rpx 16rpx;
+  border-radius: $radius-full;
+  background: rgba($brand-primary, 0.08);
+  color: $brand-primary;
+  font-size: calc(22rpx * var(--font-scale, 1));
+  font-weight: 600;
+  line-height: 1.5;
+}
 .empty-state {
   display: flex;
   justify-content: center;
@@ -3090,102 +3005,6 @@ $c-warm-tint:     #FFF3E7;
   font-weight: 600;
 }
 
-/* ===== ⓪.c 五维能量状态带(设计稿 §3,线性序 身→智→富→行→心) ===== */
-.dim-band {
-  margin: 0 $uni-space-lg 16rpx;
-  background: $app-surface;
-  border-radius: $radius-lg;
-  padding: 24rpx 28rpx;
-  border: 1rpx solid rgba($brand-primary, 0.1);
-  box-shadow: 0 2rpx 8rpx rgba(0,0,0,0.03);
-}
-.dim-band--locked { opacity: 0.9; }
-.dim-band-head {
-  display: flex;
-  flex-direction: row;
-  align-items: center;
-  justify-content: space-between;
-  margin-bottom: 20rpx;
-}
-.dim-band-kicker {
-  font-size: calc(26rpx * var(--font-scale, 1));
-  font-weight: 600;
-  color: $brand-primary-deep;
-}
-.dim-band-index { display: flex; flex-direction: row; align-items: baseline; }
-.dim-band-index-num {
-  font-size: calc(48rpx * var(--font-scale, 1));
-  font-weight: bold;
-  color: $c-brand-ink;
-  margin-right: 8rpx;
-}
-.dim-band-index-label {
-  font-size: calc(22rpx * var(--font-scale, 1));
-  color: $ink-subtle;
-}
-.dim-band-rows { display: flex; flex-direction: column; }
-.dim-row {
-  display: flex;
-  flex-direction: row;
-  align-items: center;
-  min-height: 88rpx;
-  padding: 12rpx 0;
-}
-.dim-row-icon {
-  width: 44rpx;
-  height: 44rpx;
-  margin-right: 16rpx;
-  flex-shrink: 0;
-}
-.dim-row-main { flex: 1; min-width: 0; }
-.dim-row-line { display: flex; flex-direction: row; align-items: baseline; }
-.dim-row-name {
-  font-size: calc(28rpx * var(--font-scale, 1));
-  font-weight: 600;
-  color: $ink-main;
-  margin-right: 12rpx;
-}
-.dim-row-value {
-  font-size: calc(28rpx * var(--font-scale, 1));
-  font-weight: bold;
-  color: $c-brand-ink;
-}
-.dim-row-detail {
-  display: block;
-  font-size: calc(22rpx * var(--font-scale, 1));
-  color: $ink-subtle;
-  margin-top: 4rpx;
-}
-.dim-row-chip {
-  flex-shrink: 0;
-  min-width: 88rpx;
-  text-align: center;
-  padding: 8rpx 16rpx;
-  border-radius: $radius-full;
-  font-size: calc(22rpx * var(--font-scale, 1));
-  font-weight: 600;
-}
-.chip-ok     { background: $status-ok-tint;     color: $status-ok-bg; }
-.chip-warn   { background: $status-warn-tint;   color: $status-warn-bg; }
-.chip-danger { background: $status-danger-tint; color: $status-danger-bg; }
-.chip-muted  { background: $status-neutral-tint; color: $status-neutral-bg; }
-.dim-band-empty {
-  padding: 32rpx 0;
-  text-align: center;
-}
-.dim-band-empty-title {
-  display: block;
-  font-size: calc(28rpx * var(--font-scale, 1));
-  font-weight: 600;
-  color: $ink-main;
-}
-.dim-band-empty-sub {
-  display: block;
-  font-size: calc(22rpx * var(--font-scale, 1));
-  color: $ink-subtle;
-  margin-top: 8rpx;
-}
-
 /* ===== 按钮八态(设计稿 §4:默认/悬停/焦点/按下/加载中/出错/成功白字;禁用=暖灰底+深字) ===== */
 .btn {
   min-height: 88rpx;
@@ -3208,9 +3027,9 @@ $c-warm-tint:     #FFF3E7;
 .btn--disabled { background: $btn-disabled-bg; color: $btn-disabled-ink; opacity: 1; }
 /* 触控目标 ≥44px(88rpx 基准),禁用态不降透明度 */
 .btn--disabled, .btn--disabled:active { opacity: 1; }
-/* 降低动效偏好:按钮/状态带/问候条过渡全局降级 */
+/* 降低动效偏好:按钮/问候条过渡全局降级 */
 @media (prefers-reduced-motion: reduce) {
-  .btn, .dim-row, .greet-bar { transition-duration: 0.01ms !important; }
+  .btn, .greet-bar { transition-duration: 0.01ms !important; }
 }
 
 /* ===== ① 了解区 — 自测大卡(引导"从了解开始") ===== */