mirror of
https://github.com/SECTL/SecScore.git
synced 2026-07-19 19:04:23 +08:00
fix: 加扣分模式按字段存在判断并将空值视为0
This commit is contained in:
@@ -71,6 +71,8 @@ interface BoardStudentCardData {
|
|||||||
score?: number
|
score?: number
|
||||||
addScore?: number
|
addScore?: number
|
||||||
deductScore?: number
|
deductScore?: number
|
||||||
|
hasAddScoreField?: boolean
|
||||||
|
hasDeductScoreField?: boolean
|
||||||
rewardPoints?: number
|
rewardPoints?: number
|
||||||
weekChange?: number
|
weekChange?: number
|
||||||
weekDeducted?: number
|
weekDeducted?: number
|
||||||
@@ -306,14 +308,36 @@ const toStudentCards = (rows: any[]): BoardStudentCardData[] => {
|
|||||||
if (!name) return
|
if (!name) return
|
||||||
|
|
||||||
const data = row as Record<string, unknown>
|
const data = row as Record<string, unknown>
|
||||||
|
const hasAddScoreField =
|
||||||
|
"add_score" in data || "addScore" in data || "plus_score" in data || "plusScore" in data
|
||||||
|
const hasDeductScoreField =
|
||||||
|
"deduct_score" in data ||
|
||||||
|
"deductScore" in data ||
|
||||||
|
"minus_score" in data ||
|
||||||
|
"minusScore" in data
|
||||||
|
|
||||||
|
const addScoreRaw = data.add_score ?? data.addScore ?? data.plus_score ?? data.plusScore
|
||||||
|
const deductScoreRaw =
|
||||||
|
data.deduct_score ?? data.deductScore ?? data.minus_score ?? data.minusScore
|
||||||
|
|
||||||
cards.push({
|
cards.push({
|
||||||
key: `${name}-${index}`,
|
key: `${name}-${index}`,
|
||||||
name,
|
name,
|
||||||
score: parseNumber(data.score),
|
score: parseNumber(data.score),
|
||||||
addScore: parseNumber(data.add_score ?? data.addScore ?? data.plus_score ?? data.plusScore),
|
addScore:
|
||||||
deductScore: parseNumber(
|
addScoreRaw === null || addScoreRaw === undefined
|
||||||
data.deduct_score ?? data.deductScore ?? data.minus_score ?? data.minusScore
|
? hasAddScoreField
|
||||||
),
|
? 0
|
||||||
|
: undefined
|
||||||
|
: parseNumber(addScoreRaw),
|
||||||
|
deductScore:
|
||||||
|
deductScoreRaw === null || deductScoreRaw === undefined
|
||||||
|
? hasDeductScoreField
|
||||||
|
? 0
|
||||||
|
: undefined
|
||||||
|
: parseNumber(deductScoreRaw),
|
||||||
|
hasAddScoreField,
|
||||||
|
hasDeductScoreField,
|
||||||
rewardPoints: parseNumber(data.reward_points ?? data.rewardPoints),
|
rewardPoints: parseNumber(data.reward_points ?? data.rewardPoints),
|
||||||
weekChange: parseNumber(data.week_change ?? data.range_change ?? data.change),
|
weekChange: parseNumber(data.week_change ?? data.range_change ?? data.change),
|
||||||
weekDeducted: parseNumber(data.week_deducted ?? data.deducted),
|
weekDeducted: parseNumber(data.week_deducted ?? data.deducted),
|
||||||
@@ -824,7 +848,7 @@ ORDER BY reward_points DESC, score DESC`,
|
|||||||
const avatarText = getAvatarText(item.name)
|
const avatarText = getAvatarText(item.name)
|
||||||
const rankBadge = index === 0 ? "🥇" : index === 1 ? "🥈" : index === 2 ? "🥉" : null
|
const rankBadge = index === 0 ? "🥇" : index === 1 ? "🥈" : index === 2 ? "🥉" : null
|
||||||
const useSplitScore = list.scoreDisplayMode === "split"
|
const useSplitScore = list.scoreDisplayMode === "split"
|
||||||
const hasSplitScore = item.addScore !== undefined || item.deductScore !== undefined
|
const hasSplitScore = Boolean(item.hasAddScoreField || item.hasDeductScoreField)
|
||||||
const primaryMetric = useSplitScore
|
const primaryMetric = useSplitScore
|
||||||
? item.addScore !== undefined
|
? item.addScore !== undefined
|
||||||
? { label: t("board.metrics.addScore"), value: item.addScore }
|
? { label: t("board.metrics.addScore"), value: item.addScore }
|
||||||
|
|||||||
Reference in New Issue
Block a user