|
|
@@ -29,7 +29,7 @@
|
|
|
|
|
|
<!-- Q1: 饮食结构 -->
|
|
|
<view class="question-card">
|
|
|
- <text class="q-number">1/12</text>
|
|
|
+ <text class="q-number">1/15</text>
|
|
|
<text class="q-title">孩子平时的饮食结构是怎样的?</text>
|
|
|
<view class="q-options">
|
|
|
<view class="q-option" :class="{ 'q-selected': survey.diet === 'balanced' }" @click="survey.diet = 'balanced'">
|
|
|
@@ -51,9 +51,85 @@
|
|
|
</view>
|
|
|
</view>
|
|
|
|
|
|
+ <!-- Q1b: 绝对忌口(必填) -->
|
|
|
+ <view class="question-card">
|
|
|
+ <text class="q-number">1b/15</text>
|
|
|
+ <text class="q-title">孩子有哪些绝对不能吃/喝的食物?(必填,含过敏原)</text>
|
|
|
+ <view class="q-options multi">
|
|
|
+ <view class="q-option" :class="{ 'q-selected': survey.absoluteAvoid.indexOf('牛奶') !== -1 }" @click="toggleAbsAvoid('牛奶')">
|
|
|
+ <text class="q-text">牛奶/乳制品</text>
|
|
|
+ </view>
|
|
|
+ <view class="q-option" :class="{ 'q-selected': survey.absoluteAvoid.indexOf('鸡蛋') !== -1 }" @click="toggleAbsAvoid('鸡蛋')">
|
|
|
+ <text class="q-text">鸡蛋</text>
|
|
|
+ </view>
|
|
|
+ <view class="q-option" :class="{ 'q-selected': survey.absoluteAvoid.indexOf('海鲜') !== -1 }" @click="toggleAbsAvoid('海鲜')">
|
|
|
+ <text class="q-text">海鲜/虾蟹</text>
|
|
|
+ </view>
|
|
|
+ <view class="q-option" :class="{ 'q-selected': survey.absoluteAvoid.indexOf('花生') !== -1 }" @click="toggleAbsAvoid('花生')">
|
|
|
+ <text class="q-text">花生/坚果</text>
|
|
|
+ </view>
|
|
|
+ <view class="q-option" :class="{ 'q-selected': survey.absoluteAvoid.indexOf('麸质') !== -1 }" @click="toggleAbsAvoid('麸质')">
|
|
|
+ <text class="q-text">麸质/小麦</text>
|
|
|
+ </view>
|
|
|
+ <view class="q-option" :class="{ 'q-selected': survey.absoluteAvoid.length === 0 }" @click="survey.absoluteAvoid = []">
|
|
|
+ <text class="q-text">无</text>
|
|
|
+ </view>
|
|
|
+ </view>
|
|
|
+ <view class="extra-input-row">
|
|
|
+ <input class="extra-input" placeholder="或其他忌口,回车添加..." v-model="absAvoidInput" @confirm="addAbsAvoidInput" />
|
|
|
+ </view>
|
|
|
+ </view>
|
|
|
+
|
|
|
+ <!-- Q1c: 必须要吃 -->
|
|
|
+ <view class="question-card">
|
|
|
+ <text class="q-number">1c/15</text>
|
|
|
+ <text class="q-title">有什么一定要保证摄入的食物?(可选)</text>
|
|
|
+ <view class="q-options multi">
|
|
|
+ <view class="q-option" :class="{ 'q-selected': survey.mustEat.indexOf('蔬菜') !== -1 }" @click="toggleMustEat('蔬菜')">
|
|
|
+ <text class="q-text">🥬 蔬菜</text>
|
|
|
+ </view>
|
|
|
+ <view class="q-option" :class="{ 'q-selected': survey.mustEat.indexOf('水果') !== -1 }" @click="toggleMustEat('水果')">
|
|
|
+ <text class="q-text">🍎 水果</text>
|
|
|
+ </view>
|
|
|
+ <view class="q-option" :class="{ 'q-selected': survey.mustEat.indexOf('蛋白质') !== -1 }" @click="toggleMustEat('蛋白质')">
|
|
|
+ <text class="q-text">🥚 蛋白质</text>
|
|
|
+ </view>
|
|
|
+ <view class="q-option" :class="{ 'q-selected': survey.mustEat.indexOf('益生菌') !== -1 }" @click="toggleMustEat('益生菌')">
|
|
|
+ <text class="q-text">🥛 益生菌/酸奶</text>
|
|
|
+ </view>
|
|
|
+ </view>
|
|
|
+ <view class="extra-input-row">
|
|
|
+ <input class="extra-input" placeholder="或其他,回车添加..." v-model="mustEatInput" @confirm="addMustEatInput" />
|
|
|
+ </view>
|
|
|
+ </view>
|
|
|
+
|
|
|
+ <!-- Q1d: 宗教饮食 -->
|
|
|
+ <view class="question-card">
|
|
|
+ <text class="q-number">1d/15</text>
|
|
|
+ <text class="q-title">是否有宗教或特殊饮食要求?(可选)</text>
|
|
|
+ <view class="q-options">
|
|
|
+ <view class="q-option" :class="{ 'q-selected': survey.religiousDiet === 'none' }" @click="survey.religiousDiet = 'none'">
|
|
|
+ <text class="q-icon">✅</text>
|
|
|
+ <text class="q-text">无限制</text>
|
|
|
+ </view>
|
|
|
+ <view class="q-option" :class="{ 'q-selected': survey.religiousDiet === 'halal' }" @click="survey.religiousDiet = 'halal'">
|
|
|
+ <text class="q-icon">☪️</text>
|
|
|
+ <text class="q-text">清真(Halal)</text>
|
|
|
+ </view>
|
|
|
+ <view class="q-option" :class="{ 'q-selected': survey.religiousDiet === 'vegetarian' }" @click="survey.religiousDiet = 'vegetarian'">
|
|
|
+ <text class="q-icon">🥬</text>
|
|
|
+ <text class="q-text">素食</text>
|
|
|
+ </view>
|
|
|
+ <view class="q-option" :class="{ 'q-selected': survey.religiousDiet === 'vegan' }" @click="survey.religiousDiet = 'vegan'">
|
|
|
+ <text class="q-icon">🌱</text>
|
|
|
+ <text class="q-text">纯素(不含任何动物制品)</text>
|
|
|
+ </view>
|
|
|
+ </view>
|
|
|
+ </view>
|
|
|
+
|
|
|
<!-- Q2: 消化状况 -->
|
|
|
<view class="question-card">
|
|
|
- <text class="q-number">2/12</text>
|
|
|
+ <text class="q-number">2/15</text>
|
|
|
<text class="q-title">孩子近期消化状况如何?</text>
|
|
|
<view class="q-options">
|
|
|
<view class="q-option" :class="{ 'q-selected': survey.digestion === 'good' }" @click="survey.digestion = 'good'">
|
|
|
@@ -77,7 +153,7 @@
|
|
|
|
|
|
<!-- Q3: 睡眠质量 -->
|
|
|
<view class="question-card">
|
|
|
- <text class="q-number">3/12</text>
|
|
|
+ <text class="q-number">3/15</text>
|
|
|
<text class="q-title">孩子近期的睡眠质量如何?</text>
|
|
|
<view class="q-options">
|
|
|
<view class="q-option" :class="{ 'q-selected': survey.sleep === 'good' }" @click="survey.sleep = 'good'">
|
|
|
@@ -101,7 +177,7 @@
|
|
|
|
|
|
<!-- Q4: 运动习惯 -->
|
|
|
<view class="question-card">
|
|
|
- <text class="q-number">4/12</text>
|
|
|
+ <text class="q-number">4/15</text>
|
|
|
<text class="q-title">孩子每周运动情况?</text>
|
|
|
<view class="q-options">
|
|
|
<view class="q-option" :class="{ 'q-selected': survey.exercise === 'frequent' }" @click="survey.exercise = 'frequent'">
|
|
|
@@ -121,7 +197,7 @@
|
|
|
|
|
|
<!-- Q5: 饮水习惯 -->
|
|
|
<view class="question-card">
|
|
|
- <text class="q-number">5/12</text>
|
|
|
+ <text class="q-number">5/15</text>
|
|
|
<text class="q-title">孩子每日饮水量如何?</text>
|
|
|
<view class="q-options">
|
|
|
<view class="q-option" :class="{ 'q-selected': survey.water === 'enough' }" @click="survey.water = 'enough'">
|
|
|
@@ -141,7 +217,7 @@
|
|
|
|
|
|
<!-- Q6: 用药情况 -->
|
|
|
<view class="question-card">
|
|
|
- <text class="q-number">6/12</text>
|
|
|
+ <text class="q-number">6/15</text>
|
|
|
<text class="q-title">孩子近期是否有以下用药情况?(可多选)</text>
|
|
|
<view class="q-options multi">
|
|
|
<view class="q-option" :class="{ 'q-selected': hasMedication('antibiotic') }" @click="toggleMedication('antibiotic')">
|
|
|
@@ -170,7 +246,7 @@
|
|
|
|
|
|
<!-- Q7: 慢性病/系统性疾病 -->
|
|
|
<view class="question-card">
|
|
|
- <text class="q-number">7/12</text>
|
|
|
+ <text class="q-number">7/15</text>
|
|
|
<text class="q-title">孩子是否有以下慢性或系统性疾病?(可多选)</text>
|
|
|
<view class="q-options multi">
|
|
|
<view class="q-option" :class="{ 'q-selected': hasChronic('none') }" @click="toggleChronic('none')">
|
|
|
@@ -207,7 +283,7 @@
|
|
|
|
|
|
<!-- Q8: 过敏史 -->
|
|
|
<view class="question-card">
|
|
|
- <text class="q-number">8/12</text>
|
|
|
+ <text class="q-number">8/15</text>
|
|
|
<text class="q-title">孩子是否有以下过敏情况?(可多选)</text>
|
|
|
<view class="q-options multi">
|
|
|
<view class="q-option" :class="{ 'q-selected': survey.allergies.indexOf('none') !== -1 }" @click="toggleAllergy('none')">
|
|
|
@@ -232,7 +308,7 @@
|
|
|
|
|
|
<!-- Q9: 手术/住院史 -->
|
|
|
<view class="question-card">
|
|
|
- <text class="q-number">9/12</text>
|
|
|
+ <text class="q-number">9/15</text>
|
|
|
<text class="q-title">孩子是否有手术或住院史?</text>
|
|
|
<view class="q-options">
|
|
|
<view class="q-option" :class="{ 'q-selected': survey.surgery === 'none' }" @click="survey.surgery = 'none'">
|
|
|
@@ -253,7 +329,7 @@
|
|
|
|
|
|
<!-- Q10: 家族病史 -->
|
|
|
<view class="question-card">
|
|
|
- <text class="q-number">10/12</text>
|
|
|
+ <text class="q-number">10/15</text>
|
|
|
<text class="q-title">直系亲属是否有以下疾病史?(可多选)</text>
|
|
|
<view class="family-grid">
|
|
|
<view class="family-col">
|
|
|
@@ -303,7 +379,7 @@
|
|
|
|
|
|
<!-- Q11: 祖父母病史 -->
|
|
|
<view class="question-card">
|
|
|
- <text class="q-number">11/12</text>
|
|
|
+ <text class="q-number">11/15</text>
|
|
|
<text class="q-title">祖父母/外祖父母是否有以下疾病史?(可多选)</text>
|
|
|
<view class="q-options multi">
|
|
|
<view class="q-option" :class="{ 'q-selected': survey.grandparentHistory.indexOf('unknown') !== -1 }" @click="toggleGrandparent('unknown')">
|
|
|
@@ -341,7 +417,7 @@
|
|
|
|
|
|
<!-- Q12: 健康目标 -->
|
|
|
<view class="question-card">
|
|
|
- <text class="q-number">12/12</text>
|
|
|
+ <text class="q-number">12/15</text>
|
|
|
<text class="q-title">您希望通过本次健康管理改善什么?(可多选)</text>
|
|
|
<view class="q-options multi">
|
|
|
<view class="q-option" :class="{ 'q-selected': survey.goals.indexOf('immunity') !== -1 }" @click="toggleGoal('immunity')">
|
|
|
@@ -402,6 +478,9 @@ export default {
|
|
|
survey: {
|
|
|
// 生活习惯
|
|
|
diet: '',
|
|
|
+ absoluteAvoid: [], // 绝对忌口(必填)
|
|
|
+ mustEat: [], // 必须要吃(可选)
|
|
|
+ religiousDiet: 'none', // none/清真/halal/素食/vegan
|
|
|
digestion: '',
|
|
|
sleep: '',
|
|
|
exercise: '',
|
|
|
@@ -414,6 +493,8 @@ export default {
|
|
|
},
|
|
|
allergies: [],
|
|
|
allergyDetail: '',
|
|
|
+ absAvoidInput: '',
|
|
|
+ mustEatInput: '',
|
|
|
surgery: '',
|
|
|
surgeryDetail: '',
|
|
|
// 家族史
|
|
|
@@ -444,8 +525,11 @@ export default {
|
|
|
computed: {
|
|
|
progressPercent: function() {
|
|
|
var answered = 0
|
|
|
- var total = 12
|
|
|
+ var total = 15
|
|
|
if (this.survey.diet) answered++
|
|
|
+ if (this.survey.absoluteAvoid.length > 0) answered++
|
|
|
+ if (this.survey.mustEat.length > 0 || true) answered++
|
|
|
+ if (this.survey.religiousDiet && this.survey.religiousDiet !== 'none') answered++
|
|
|
if (this.survey.digestion) answered++
|
|
|
if (this.survey.sleep) answered++
|
|
|
if (this.survey.exercise) answered++
|
|
|
@@ -454,7 +538,6 @@ export default {
|
|
|
if (this.survey.diseaseHistory.chronic.length > 0) answered++
|
|
|
if (this.survey.allergies.length > 0) answered++
|
|
|
if (this.survey.surgery) answered++
|
|
|
- // 家族史:至少填了父亲或母亲或兄弟姐妹或祖父母之一
|
|
|
if (this.survey.familyHistory.father.length > 0
|
|
|
|| this.survey.familyHistory.mother.length > 0
|
|
|
|| this.survey.familyHistory.sibling.length > 0) answered++
|
|
|
@@ -463,7 +546,8 @@ export default {
|
|
|
return Math.round((answered / total) * 100)
|
|
|
},
|
|
|
canSubmit: function() {
|
|
|
- return this.survey.diet && this.survey.sleep && this.survey.exercise
|
|
|
+ return this.survey.diet && this.survey.absoluteAvoid.length > 0
|
|
|
+ && this.survey.sleep && this.survey.exercise
|
|
|
&& this.survey.diseaseHistory.chronic.length > 0
|
|
|
&& this.survey.allergies.length > 0
|
|
|
&& this.survey.goals.length > 0
|
|
|
@@ -608,6 +692,26 @@ export default {
|
|
|
this.survey.goals.splice(idx, 1)
|
|
|
}
|
|
|
},
|
|
|
+ toggleAbsAvoid: function(item) {
|
|
|
+ var idx = this.survey.absoluteAvoid.indexOf(item)
|
|
|
+ if (idx >= 0) this.survey.absoluteAvoid.splice(idx, 1)
|
|
|
+ else this.survey.absoluteAvoid.push(item)
|
|
|
+ },
|
|
|
+ addAbsAvoidInput: function() {
|
|
|
+ var v = this.absAvoidInput.trim()
|
|
|
+ if (v && this.survey.absoluteAvoid.indexOf(v) === -1) this.survey.absoluteAvoid.push(v)
|
|
|
+ this.absAvoidInput = ''
|
|
|
+ },
|
|
|
+ toggleMustEat: function(item) {
|
|
|
+ var idx = this.survey.mustEat.indexOf(item)
|
|
|
+ if (idx >= 0) this.survey.mustEat.splice(idx, 1)
|
|
|
+ else this.survey.mustEat.push(item)
|
|
|
+ },
|
|
|
+ addMustEatInput: function() {
|
|
|
+ var v = this.mustEatInput.trim()
|
|
|
+ if (v && this.survey.mustEat.indexOf(v) === -1) this.survey.mustEat.push(v)
|
|
|
+ this.mustEatInput = ''
|
|
|
+ },
|
|
|
goBack: function() {
|
|
|
uni.navigateBack()
|
|
|
},
|