Procházet zdrojové kódy

feat(frontend): ScoringEditView 优先消费 selfItems(fallback commentsJson)

wangkangyjy před 1 týdnem
rodič
revize
eba93bbc13
1 změnil soubory, kde provedl 25 přidání a 3 odebrání
  1. 25 3
      frontend/src/views/scoring/ScoringEditView.vue

+ 25 - 3
frontend/src/views/scoring/ScoringEditView.vue

@@ -219,14 +219,36 @@ const previewGradeDot = computed(() => {
   return 'status-dot--danger'
 })
 
-// Parse self-assessment from commentsJson
+// Parse self-assessment from structured selfItems (preferred) or commentsJson (fallback)
 const selfData = computed(() => {
   if (!data.value.selfScore?.commentsJson) return null
   try { return JSON.parse(data.value.selfScore.commentsJson) } catch { return null }
 })
 
-const selfKrScores = computed(() => selfData.value?.krScores || [])
-const selfDimensions = computed(() => selfData.value?.dimensions || [])
+const selfKrScores = computed(() => {
+  const items = data.value.selfItems
+  if (items && items.length) {
+    return items.filter(i => i.itemType === 'KR').map(i => ({
+      krId: i.referenceId,
+      title: i.name,
+      score: i.score
+    }))
+  }
+  return selfData.value?.krScores || []
+})
+const selfDimensions = computed(() => {
+  const items = data.value.selfItems
+  if (items && items.length) {
+    return items.filter(i => i.itemType === 'DIMENSION').map(i => ({
+      id: i.referenceId,
+      dimensionId: i.referenceId,
+      name: i.name,
+      maxScore: i.maxScore,
+      score: i.score
+    }))
+  }
+  return selfData.value?.dimensions || []
+})
 const selfRemark = computed(() => selfData.value?.remark || '')
 
 const selfOkrTotal = computed(() => {