This commit is contained in:
fuenmao
2026-09-23 18:19:47 +08:00
parent efd71f99f3
commit aecfd2a254
8 changed files with 491 additions and 282 deletions
+23 -10
View File
@@ -41,6 +41,11 @@ async function load() {
}
async function executeScene(scene: 'sleep' | 'all-off') {
if (scene === 'sleep' && !dashboard.value?.tcmResult?.hasCompleted) {
showToast('请先完成中医四诊,生成体质倾向')
router.push('/tcm-assessment')
return
}
sceneRunning.value = scene
try {
const result = scene === 'sleep'
@@ -82,7 +87,7 @@ onMounted(load)
<section class="hero-card">
<p class="eyebrow">今日健康建议</p>
<h2>{{ dashboard?.currentPlan?.title || '尚未完成健康评估' }}</h2>
<p>{{ dashboard?.currentPlan?.summary || '完成健康评估后,系统会自动生成个人健康方案与家居启动参数。' }}</p>
<p>{{ dashboard?.currentPlan?.summary || '完成健康评估后,系统会整理您的基本情况并生成日常健康建议。' }}</p>
<van-button
v-if="!dashboard?.currentPlan"
round
@@ -99,21 +104,26 @@ onMounted(load)
<div class="guide-badge">重要提醒</div>
<div class="guide-body">
<div class="guide-text">
<h3>先填写个人基本信息与身体评估</h3>
<p>尚未进行身体及睡眠质量、运动情况、饮食情况三大维度评估。完成评估后将为您专属定制全套智能家居启动参数!</p>
<h3>完善个人基本信息与健康评估</h3>
<p>尚未记录身体及睡眠质量、运动情况、饮食情况。健康评估仅用于了解基本情况;设备启动参数由中医四诊体质结果生成。</p>
</div>
<button class="guide-btn" type="button">去评估 &gt;</button>
</div>
</section>
<!-- 个性化智能家居启动参数概览 (已完成评估) -->
<section v-else class="section-card personalized-startup-card">
<!-- 智能家居启动参数仅来源于中医四诊体质结果 -->
<section class="section-card personalized-startup-card">
<div class="section-title">
<span>专属舒睡启动参数</span>
<span>体质专属舒睡启动参数</span>
</div>
<p class="startup-card-desc">依据您的体征评估与冷热、承托偏好,智能中枢已生成专属预设:</p>
<p class="startup-card-desc">
{{ dashboard?.tcmResult?.hasCompleted
? `依据${dashboard.tcmResult.constitutionName}倾向生成基础预设;床垫加热看重庆天气,软硬度看 BMI。`
: '先完成中医四诊并生成体质倾向,才可一键开启专属场景。' }}
<a v-if="!dashboard?.tcmResult?.hasCompleted" href="/tcm-assessment" @click.prevent="router.push('/tcm-assessment')">去完成四诊 ›</a>
</p>
<div class="startup-params-tags">
<div v-if="dashboard?.tcmResult?.hasCompleted" class="startup-params-tags">
<div class="startup-param-badge">
<span class="lbl">恒湿目标</span>
<strong>{{ dashboard?.sceneConfig?.targetHumidity || 55 }}% · {{ dashboard?.sceneConfig?.fanLevel || '1挡' }}</strong>
@@ -128,19 +138,22 @@ onMounted(load)
</div>
<div class="startup-param-badge">
<span class="lbl">8H 床垫</span>
<strong>左右加热 {{ dashboard?.sceneConfig?.mattressHeatingLevel ?? 1 }} 档 · {{ dashboard?.sceneConfig?.mattressMode || '智能适配' }}</strong>
<strong>左右加热 {{ dashboard?.mattressComfort?.heatingLevel ?? 0 }} 档 · 软硬度{{ dashboard?.mattressComfort?.firmness || '待填写 BMI' }}</strong>
</div>
<div class="startup-param-badge" v-if="dashboard?.sceneConfig?.enableUv">
<span class="lbl">除湿消杀</span>
<strong style="color: #7b42b5;">UV 深度消杀已开启</strong>
</div>
</div>
<p v-if="dashboard?.tcmResult?.hasCompleted" class="startup-card-desc">
{{ dashboard?.mattressComfort?.weatherReason }};{{ dashboard?.mattressComfort?.firmnessReason }}
</p>
<div class="startup-scene-actions">
<button
class="startup-action-primary"
type="button"
:disabled="!homeAssistant?.connected || sceneAvailable === 0 || !!sceneRunning"
:disabled="!dashboard?.tcmResult?.hasCompleted || !homeAssistant?.connected || sceneAvailable === 0 || !!sceneRunning"
@click="executeScene('sleep')"
>
{{ sceneRunning === 'sleep' ? '正在开启…' : '一键开启' }}