Просмотр исходного кода

HL-01 fix: 健康阅卷还原键名错配+memberId口径统一

Agnes Agent 5 дней назад
Родитель
Сommit
d32452f834
1 измененных файлов с 31 добавлено и 25 удалено
  1. 31 25
      cfc-frontend/pages/health/health-survey.vue

+ 31 - 25
cfc-frontend/pages/health/health-survey.vue

@@ -215,30 +215,31 @@ export default {
         self._loaded = true
       })
     },
-    // 健康阅卷(HL-01):加载最后一条 health_review 记录并预填 formSnapshot/dietSnapshot
+    // 健康阅卷(HL-01):先取家庭列表定位 isSelf 成员,再按提交侧同口径 memberId 查最后一条记录预填
     loadHealthReviewData: function() {
       var self = this
       self.loading = true
-      var tasks = [
-        getLastHealthReview({}).then(function(res) {
-          var d = (res && res.code === 200 && res.data) ? res.data : null
-          if (d && d.answersJson) {
-            self.applyHealthReviewJson(d.answersJson)
-          }
-        }).catch(function() {}),
-        getFamilyMemberList({}).then(function(res) {
-          var list = (res && res.code === 200 && res.data) ? res.data : []
-          var arr = list instanceof Array ? list : []
-          var found = null
-          for (var j = 0; j < arr.length; j++) {
-            if (arr[j].isSelf) { found = arr[j]; break }
-          }
-          if (found) {
-            self.memberProfile = { gender: found.gender || '', age: found.age != null ? found.age : '' }
-          }
-        }).catch(function() {})
-      ]
-      Promise.all(tasks).then(function() {
+      // 1) 家庭列表:isSelf 画像(memberProfile)+ familyMemberId 兜底(与 onSubmit 的 self.familyMemberId 同口径)
+      getFamilyMemberList({}).then(function(res) {
+        var list = (res && res.code === 200 && res.data) ? res.data : []
+        var arr = list instanceof Array ? list : []
+        var found = null
+        for (var j = 0; j < arr.length; j++) {
+          if (arr[j].isSelf) { found = arr[j]; break }
+        }
+        if (found) {
+          if (!self.familyMemberId) self.familyMemberId = found.memberId || found.id || ''
+          self.memberProfile = { gender: found.gender || '', age: found.age != null ? found.age : '' }
+        }
+      }).catch(function() {}).then(function() {
+        // 2) 与提交侧 submitSurvey({ memberId: self.familyMemberId }) 同口径:多次填写以最后一次为准,任何视角下都能取回
+        return getLastHealthReview({ memberId: self.familyMemberId })
+      }).then(function(res) {
+        var d = (res && res.code === 200 && res.data) ? res.data : null
+        if (d && d.answersJson) {
+          self.applyHealthReviewJson(d.answersJson)
+        }
+      }).catch(function() {}).then(function() {
         self.loading = false
         self._loaded = true
       })
@@ -260,10 +261,15 @@ export default {
       if (f.bloodPressure != null) self.$set(self.formSnapshot, 'bloodPressure', f.bloodPressure)
       if (f.bloodGlucose != null) self.$set(self.formSnapshot, 'bloodGlucose', f.bloodGlucose)
       if (f.notes != null) self.$set(self.formSnapshot, 'notes', f.notes)
-      if (f.lipidCholesterol != null) self.$set(self.formSnapshot, 'lipidCholesterol', f.lipidCholesterol)
-      if (Array.isArray(f.selectedDiseases)) self.$set(self.formSnapshot, 'selectedDiseases', f.selectedDiseases)
-      if (Array.isArray(f.medRows)) self.$set(self.formSnapshot, 'medRows', f.medRows)
-      if (f.noMedication != null) self.$set(self.formSnapshot, 'noMedication', !!f.noMedication)
+      // 血脂/病史/用药:与提交侧 hsPayload 键一致(bloodLipids/diseaseHistory/medications 为 JSON 字符串),反序列化还原
+      if (f.bloodLipids != null) self.$set(self.formSnapshot, 'lipidCholesterol', parseLipidCholesterol(f.bloodLipids))
+      if (f.diseaseHistory != null) self.$set(self.formSnapshot, 'selectedDiseases', parseDiseases(f.diseaseHistory))
+      if (f.medications != null) {
+        var restoredMeds = parseMeds(f.medications)
+        self.$set(self.formSnapshot, 'medRows', restoredMeds)
+        // 提交侧未存 noMedication:由 medications 反推——无用药记录即「无用药」勾选态
+        self.$set(self.formSnapshot, 'noMedication', restoredMeds.length === 0)
+      }
       if (f.lifestyle && typeof f.lifestyle === 'object') self.$set(self.formSnapshot, 'lifestyle', f.lifestyle)
       self.dietSnapshot = normalizeDiet(d)
     },