# 05-体质辨识页面 ## 目标 实现中医体质辨识问卷页面,包括问卷填写和结果展示。 --- ## UI 设计参考 > 参考设计稿:`files/ui/体质页.png`、`files/ui/体质检测.png`、`files/ui/体质分析.png` ### 体质首页布局 | 区域 | 设计要点 | |------|----------| | 顶部卡片 | 绿色渐变背景,"中医体质自测" 标题 + 介绍文案 | | 测试说明 | 白色卡片,3步骤(绿色序号圆圈 + 说明文字) | | 按钮 | 绿色全宽圆角按钮 "开始测试",圆角 24px | ### 问卷页面布局 | 区域 | 设计要点 | |------|----------| | 导航栏 | 返回箭头 + "中医体质辨识自测" + 进度 "1/65" | | 进度条 | 绿色细条 `#10B981`,高度 4px | | 问题标签 | 绿色背景 `#DCFCE7`,文字 `#10B981`,"问题N" | | 问题文字 | 字号 18px,颜色 `#1F2937` | | 选项按钮 | 白色背景,边框 `#E5E7EB`,圆角 12px,选中高亮绿色 | | 底部提示 | 浅绿色背景 `#ECFDF5`,带 info 图标 | ### 结果页面布局 | 区域 | 设计要点 | |------|----------| | 顶部 | 绿色渐变背景 + 人体轮廓图 + 分享按钮 | | 体质名称 | 大字体 32px,白色 | | 分数徽章 | 绿色背景圆角标签 "85分" | | 雷达图 | 白色卡片,九种体质得分可视化,颜色 `#10B981` | | 体质特征 | 图标 + 描述文字 | | 调理建议 | 2×2 网格布局 | ### 调理建议卡片配色 | 类型 | 图标背景 | 图标颜色 | |------|----------|----------| | 起居 | `#EDE9FE` | `#8B5CF6` | | 饮食 | `#CCFBF1` | `#14B8A6` | | 运动 | `#EDE9FE` | `#8B5CF6` | | 情志 | `#FCE7F3` | `#EC4899` | --- ## 前置要求 - 健康调查页面完成 - 后端体质接口可用 --- ## 实施步骤 ### 步骤 1:创建体质 API 创建 `src/api/constitution.ts`: ```typescript import request from './request' import type { Question, ConstitutionResult } from '@/types' export const getQuestions = (): Promise => { return request.get('/constitution/questions') } export const submitAssessment = (answers: { question_id: number; score: number }[]): Promise => { return request.post('/constitution/submit', { answers }) } export const getLatestResult = (): Promise => { return request.get('/constitution/result') } export const getAssessmentHistory = () => { return request.get('/constitution/history') } ``` ### 步骤 2:创建体质测评主页面 创建 `src/views/constitution/Index.vue`: ```vue ``` ### 步骤 3:创建结果展示页面 创建 `src/views/constitution/Result.vue`: ```vue ``` --- ## 需要创建的文件清单 | 文件路径 | 说明 | |----------|------| | `src/api/constitution.ts` | 体质 API | | `src/views/constitution/Index.vue` | 测评主页面 | | `src/views/constitution/Result.vue` | 结果展示页面 | --- ## 验收标准 - [ ] 问卷题目正确加载 - [ ] 答题进度显示正常 - [ ] 提交后跳转结果页 - [ ] 雷达图正确显示 - [ ] 调养建议展示完整 --- ## 预计耗时 35-40 分钟 --- ## 下一步 完成后进入 `03-Web前端开发/06-AI对话页面.md`