|
@@ -251,15 +251,8 @@
|
|
|
<text class="plan-title">📋 健康方案</text>
|
|
<text class="plan-title">📋 健康方案</text>
|
|
|
<button class="plan-btn" @click="goPlanSummary">{{ lastPlan ? '查看方案' : '生成新方案' }}</button>
|
|
<button class="plan-btn" @click="goPlanSummary">{{ lastPlan ? '查看方案' : '生成新方案' }}</button>
|
|
|
</view>
|
|
</view>
|
|
|
- <FamilyMemberStrip
|
|
|
|
|
- v-if="familyMembers.length > 0"
|
|
|
|
|
- :members="familyMembers"
|
|
|
|
|
- :selectedMemberId="planMemberId"
|
|
|
|
|
- :isParent="true"
|
|
|
|
|
- @select="onPlanMemberSelect"
|
|
|
|
|
- />
|
|
|
|
|
<text v-if="lastPlan" class="plan-goal">{{ lastPlan }}</text>
|
|
<text v-if="lastPlan" class="plan-goal">{{ lastPlan }}</text>
|
|
|
- <text v-else class="plan-hint">{{ planEmptyHint }}</text>
|
|
|
|
|
|
|
+ <text v-else class="plan-hint">选维度 + 选成员 + 设定目标 → 生成</text>
|
|
|
</view>
|
|
</view>
|
|
|
</view>
|
|
</view>
|
|
|
|
|
|
|
@@ -273,20 +266,16 @@ import LoginGuideCard from '../../components/LoginGuideCard.vue'
|
|
|
import RadarChart from '../../components/RadarChart.vue'
|
|
import RadarChart from '../../components/RadarChart.vue'
|
|
|
import ArticleBookshelf from '../../components/ArticleBookshelf.vue'
|
|
import ArticleBookshelf from '../../components/ArticleBookshelf.vue'
|
|
|
import ReportUploadCard from '../../components/report-upload-card.vue'
|
|
import ReportUploadCard from '../../components/report-upload-card.vue'
|
|
|
-import FamilyMemberStrip from '../../components/FamilyMemberStrip.vue'
|
|
|
|
|
import { parseDate } from '../../utils/format.js'
|
|
import { parseDate } from '../../utils/format.js'
|
|
|
|
|
|
|
|
export default {
|
|
export default {
|
|
|
- components: { LoginGuideCard, RadarChart, ArticleBookshelf, ReportUploadCard, FamilyMemberStrip },
|
|
|
|
|
|
|
+ components: { LoginGuideCard, RadarChart, ArticleBookshelf, ReportUploadCard },
|
|
|
data() {
|
|
data() {
|
|
|
return {
|
|
return {
|
|
|
isLoggedIn: false,
|
|
isLoggedIn: false,
|
|
|
currentTab: 'body',
|
|
currentTab: 'body',
|
|
|
selectedMemberName: '',
|
|
selectedMemberName: '',
|
|
|
selectedMemberId: '',
|
|
selectedMemberId: '',
|
|
|
- planMemberId: null,
|
|
|
|
|
- familyMembers: [],
|
|
|
|
|
- allPlans: [],
|
|
|
|
|
reports: [],
|
|
reports: [],
|
|
|
lastPlan: '',
|
|
lastPlan: '',
|
|
|
lastPlanId: null,
|
|
lastPlanId: null,
|
|
@@ -336,12 +325,6 @@ export default {
|
|
|
}
|
|
}
|
|
|
},
|
|
},
|
|
|
computed: {
|
|
computed: {
|
|
|
- planEmptyHint: function() {
|
|
|
|
|
- if (this.planMemberId) {
|
|
|
|
|
- return '该成员暂无健康方案,点击「生成新方案」开始'
|
|
|
|
|
- }
|
|
|
|
|
- return '选维度 + 选成员 + 设定目标 → 生成'
|
|
|
|
|
- },
|
|
|
|
|
currentTabLabel: function() {
|
|
currentTabLabel: function() {
|
|
|
var tab = this.tabs.filter(function(t) { return t.code === this.currentTab }.bind(this))[0]
|
|
var tab = this.tabs.filter(function(t) { return t.code === this.currentTab }.bind(this))[0]
|
|
|
return tab ? tab.label : ''
|
|
return tab ? tab.label : ''
|
|
@@ -480,12 +463,8 @@ export default {
|
|
|
var n = parseInt(stored, 10)
|
|
var n = parseInt(stored, 10)
|
|
|
this.selectedMemberId = isNaN(n) ? stored : n
|
|
this.selectedMemberId = isNaN(n) ? stored : n
|
|
|
this.selectedMemberName = uni.getStorageSync('currentChildName') || '成员'
|
|
this.selectedMemberName = uni.getStorageSync('currentChildName') || '成员'
|
|
|
- if (this.planMemberId == null) {
|
|
|
|
|
- this.planMemberId = isNaN(n) ? null : n
|
|
|
|
|
- }
|
|
|
|
|
}
|
|
}
|
|
|
this.loadHealthData()
|
|
this.loadHealthData()
|
|
|
- this.loadFamilyMembersForPlan()
|
|
|
|
|
this.loadPlanList()
|
|
this.loadPlanList()
|
|
|
this.loadPendingSurveys()
|
|
this.loadPendingSurveys()
|
|
|
} else {
|
|
} else {
|
|
@@ -493,71 +472,6 @@ export default {
|
|
|
}
|
|
}
|
|
|
},
|
|
},
|
|
|
methods: {
|
|
methods: {
|
|
|
- onPlanMemberSelect: function(member) {
|
|
|
|
|
- if (!member || member.id == null) return
|
|
|
|
|
- var id = typeof member.id === 'number' ? member.id : parseInt(member.id, 10)
|
|
|
|
|
- if (isNaN(id)) id = member.id
|
|
|
|
|
- if (this.planMemberId === id) return
|
|
|
|
|
- this.planMemberId = id
|
|
|
|
|
- this.selectedMemberId = id
|
|
|
|
|
- this.selectedMemberName = member.nickname || '成员'
|
|
|
|
|
- uni.setStorageSync('currentMemberId', id)
|
|
|
|
|
- uni.setStorageSync('currentChildId', id)
|
|
|
|
|
- this.applyPlanForMember()
|
|
|
|
|
- },
|
|
|
|
|
- loadFamilyMembersForPlan: function() {
|
|
|
|
|
- var self = this
|
|
|
|
|
- var api = require('../../utils/api.js')
|
|
|
|
|
- api.getFamilyMemberList({ visibleOnly: true }).then(function(res) {
|
|
|
|
|
- var list = (res && res.code === 200 && res.data) ? res.data : []
|
|
|
|
|
- self.familyMembers = Array.isArray(list) ? list : []
|
|
|
|
|
- if (self.planMemberId == null && self.familyMembers.length > 0) {
|
|
|
|
|
- var first = self.familyMembers[0]
|
|
|
|
|
- var fid = first && first.id != null ? first.id : null
|
|
|
|
|
- if (fid != null) {
|
|
|
|
|
- var pn = parseInt(fid, 10)
|
|
|
|
|
- self.planMemberId = isNaN(pn) ? fid : pn
|
|
|
|
|
- }
|
|
|
|
|
- }
|
|
|
|
|
- self.applyPlanForMember()
|
|
|
|
|
- }).catch(function() {
|
|
|
|
|
- self.familyMembers = []
|
|
|
|
|
- })
|
|
|
|
|
- },
|
|
|
|
|
- /** memberIds 可能是 "1020" 或 "1020,1021",按成员匹配方案 */
|
|
|
|
|
- planMatchesMember: function(plan, memberId) {
|
|
|
|
|
- if (!plan || memberId == null) return false
|
|
|
|
|
- var ids = String(plan.memberIds || '')
|
|
|
|
|
- if (!ids) return false
|
|
|
|
|
- var target = String(memberId)
|
|
|
|
|
- var parts = ids.split(',')
|
|
|
|
|
- for (var i = 0; i < parts.length; i++) {
|
|
|
|
|
- if (String(parts[i]).trim() === target) return true
|
|
|
|
|
- }
|
|
|
|
|
- return false
|
|
|
|
|
- },
|
|
|
|
|
- applyPlanForMember: function() {
|
|
|
|
|
- var list = this.allPlans || []
|
|
|
|
|
- var memberId = this.planMemberId
|
|
|
|
|
- var matched = null
|
|
|
|
|
- if (memberId != null) {
|
|
|
|
|
- for (var i = 0; i < list.length; i++) {
|
|
|
|
|
- if (this.planMatchesMember(list[i], memberId)) {
|
|
|
|
|
- matched = list[i]
|
|
|
|
|
- break
|
|
|
|
|
- }
|
|
|
|
|
- }
|
|
|
|
|
- } else if (list.length > 0) {
|
|
|
|
|
- matched = list[0]
|
|
|
|
|
- }
|
|
|
|
|
- if (matched) {
|
|
|
|
|
- this.lastPlan = matched.goal || matched.memberName || '已有健康方案'
|
|
|
|
|
- this.lastPlanId = matched.id || null
|
|
|
|
|
- } else {
|
|
|
|
|
- this.lastPlan = ''
|
|
|
|
|
- this.lastPlanId = null
|
|
|
|
|
- }
|
|
|
|
|
- },
|
|
|
|
|
_cognitiveScore: function(key) {
|
|
_cognitiveScore: function(key) {
|
|
|
if (!this.cognitiveData) return 0
|
|
if (!this.cognitiveData) return 0
|
|
|
var v = this.cognitiveData[key]
|
|
var v = this.cognitiveData[key]
|
|
@@ -655,7 +569,7 @@ export default {
|
|
|
if (this.lastPlanId) {
|
|
if (this.lastPlanId) {
|
|
|
url += '?planId=' + this.lastPlanId
|
|
url += '?planId=' + this.lastPlanId
|
|
|
}
|
|
}
|
|
|
- var mid = this.planMemberId || this.selectedMemberId
|
|
|
|
|
|
|
+ var mid = this.selectedMemberId
|
|
|
if (mid) {
|
|
if (mid) {
|
|
|
url += (url.indexOf('?') >= 0 ? '&' : '?') + 'memberId=' + mid
|
|
url += (url.indexOf('?') >= 0 ? '&' : '?') + 'memberId=' + mid
|
|
|
}
|
|
}
|
|
@@ -727,14 +641,21 @@ export default {
|
|
|
api.getHealthPlanList({}).then(function(res) {
|
|
api.getHealthPlanList({}).then(function(res) {
|
|
|
if (res && res.code === 200 && res.data) {
|
|
if (res && res.code === 200 && res.data) {
|
|
|
var list = res.data.list || res.data
|
|
var list = res.data.list || res.data
|
|
|
- self.allPlans = Array.isArray(list) ? list : []
|
|
|
|
|
|
|
+ var plans = Array.isArray(list) ? list : []
|
|
|
|
|
+ if (plans.length > 0) {
|
|
|
|
|
+ self.lastPlan = plans[0].goal || plans[0].memberName || '已有健康方案'
|
|
|
|
|
+ self.lastPlanId = plans[0].id || null
|
|
|
|
|
+ } else {
|
|
|
|
|
+ self.lastPlan = ''
|
|
|
|
|
+ self.lastPlanId = null
|
|
|
|
|
+ }
|
|
|
} else {
|
|
} else {
|
|
|
- self.allPlans = []
|
|
|
|
|
|
|
+ self.lastPlan = ''
|
|
|
|
|
+ self.lastPlanId = null
|
|
|
}
|
|
}
|
|
|
- self.applyPlanForMember()
|
|
|
|
|
}).catch(function() {
|
|
}).catch(function() {
|
|
|
- self.allPlans = []
|
|
|
|
|
- self.applyPlanForMember()
|
|
|
|
|
|
|
+ self.lastPlan = ''
|
|
|
|
|
+ self.lastPlanId = null
|
|
|
})
|
|
})
|
|
|
},
|
|
},
|
|
|
goArticleDetail: function(article) {
|
|
goArticleDetail: function(article) {
|