|
|
@ -95,7 +95,7 @@ export default defineComponent({ |
|
|
const baseInfo = ref<Record<string, any>>({}) |
|
|
const baseInfo = ref<Record<string, any>>({}) |
|
|
const modeRows = ref<ModeRow[]>([]) |
|
|
const modeRows = ref<ModeRow[]>([]) |
|
|
const pointRows = ref<AssessPointRow[]>([]) |
|
|
const pointRows = ref<AssessPointRow[]>([]) |
|
|
const assessRows = ref<AssessRow[]>([]) |
|
|
const assess = ref<AssessRow[]>([]) |
|
|
const assessResult = ref<AssessResultRow[]>(defaultAssessResult()) |
|
|
const assessResult = ref<AssessResultRow[]>(defaultAssessResult()) |
|
|
const cleanSummary = ref<AssessCleanSummary>() |
|
|
const cleanSummary = ref<AssessCleanSummary>() |
|
|
const cleanModalVisible = ref(false) |
|
|
const cleanModalVisible = ref(false) |
|
|
@ -308,7 +308,7 @@ export default defineComponent({ |
|
|
modelName.value = detail.modelName |
|
|
modelName.value = detail.modelName |
|
|
modeRows.value = detail.report.modeRows || [] |
|
|
modeRows.value = detail.report.modeRows || [] |
|
|
pointRows.value = (detail.report.pointRows || []).map((item, index) => normalizePointRow(item, index)) |
|
|
pointRows.value = (detail.report.pointRows || []).map((item, index) => normalizePointRow(item, index)) |
|
|
assessRows.value = (detail.report.assessRows || []).map((item, index) => hydrateAssessRow(item, index)) |
|
|
assess.value = (detail.report.assess || []).map((item, index) => hydrateAssessRow(item, index)) |
|
|
assessResult.value = detail.report.assessResult || defaultAssessResult() |
|
|
assessResult.value = detail.report.assessResult || defaultAssessResult() |
|
|
identifier.value = detail.report.identifier || identifier.value |
|
|
identifier.value = detail.report.identifier || identifier.value |
|
|
timestamp.value = detail.report.time || '' |
|
|
timestamp.value = detail.report.time || '' |
|
|
@ -327,7 +327,7 @@ export default defineComponent({ |
|
|
{ name: '样本类型', content: '训练样本' }, |
|
|
{ name: '样本类型', content: '训练样本' }, |
|
|
{ name: '样本数量', content: sampleCount ?? '--' }, |
|
|
{ name: '样本数量', content: sampleCount ?? '--' }, |
|
|
] |
|
|
] |
|
|
assessRows.value |
|
|
assess.value |
|
|
= pointRows.value |
|
|
= pointRows.value |
|
|
.filter(item => item.alarm) |
|
|
.filter(item => item.alarm) |
|
|
.map((item, index) => buildAssessRow({ ...item, index })) || [] |
|
|
.map((item, index) => buildAssessRow({ ...item, index })) || [] |
|
|
@ -354,13 +354,13 @@ export default defineComponent({ |
|
|
|
|
|
|
|
|
const toggleAlarm = (row: AssessPointRow, checked: boolean) => { |
|
|
const toggleAlarm = (row: AssessPointRow, checked: boolean) => { |
|
|
row.alarm = checked |
|
|
row.alarm = checked |
|
|
assessRows.value = assessRows.value.filter(item => item.pointId !== row.pointId) |
|
|
assess.value = assess.value.filter(item => item.pointId !== row.pointId) |
|
|
if (checked) |
|
|
if (checked) |
|
|
assessRows.value.push(buildAssessRow(row)) |
|
|
assess.value.push(buildAssessRow(row)) |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
const applyRound = () => { |
|
|
const applyRound = () => { |
|
|
assessRows.value = assessRows.value.map(item => ({ |
|
|
assess.value = assess.value.map(item => ({ |
|
|
...item, |
|
|
...item, |
|
|
amplitude: Math.round(Number(item.amplitude) || 0), |
|
|
amplitude: Math.round(Number(item.amplitude) || 0), |
|
|
})) |
|
|
})) |
|
|
@ -369,7 +369,7 @@ export default defineComponent({ |
|
|
const applyAbsoluteBias = () => { |
|
|
const applyAbsoluteBias = () => { |
|
|
if (biasForm.absolute === undefined) |
|
|
if (biasForm.absolute === undefined) |
|
|
return |
|
|
return |
|
|
assessRows.value = assessRows.value.map(item => ({ |
|
|
assess.value = assess.value.map(item => ({ |
|
|
...item, |
|
|
...item, |
|
|
amplitude: biasForm.absolute, |
|
|
amplitude: biasForm.absolute, |
|
|
})) |
|
|
})) |
|
|
@ -378,14 +378,14 @@ export default defineComponent({ |
|
|
const applyRelativeBias = () => { |
|
|
const applyRelativeBias = () => { |
|
|
if (biasForm.relative === undefined) |
|
|
if (biasForm.relative === undefined) |
|
|
return |
|
|
return |
|
|
assessRows.value = assessRows.value.map(item => ({ |
|
|
assess.value = assess.value.map(item => ({ |
|
|
...item, |
|
|
...item, |
|
|
amplitude: Number((Number(item.amplitude || 0) + biasForm.relative!).toFixed(2)), |
|
|
amplitude: Number((Number(item.amplitude || 0) + biasForm.relative!).toFixed(2)), |
|
|
})) |
|
|
})) |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
const applyPercentBias = () => { |
|
|
const applyPercentBias = () => { |
|
|
assessRows.value = assessRows.value.map((item) => { |
|
|
assess.value = assess.value.map((item) => { |
|
|
const point = pointRows.value.find(p => p.pointId === item.pointId) |
|
|
const point = pointRows.value.find(p => p.pointId === item.pointId) |
|
|
const delta = point ? Number(point.TMax || point.tMax || 0) - Number(point.TMin || point.tMin || 0) : 0 |
|
|
const delta = point ? Number(point.TMax || point.tMax || 0) - Number(point.TMin || point.tMin || 0) : 0 |
|
|
const amplitude = Number(((biasForm.percent / 100) * delta).toFixed(2)) |
|
|
const amplitude = Number(((biasForm.percent / 100) * delta).toFixed(2)) |
|
|
@ -413,7 +413,7 @@ export default defineComponent({ |
|
|
let backward = 0 |
|
|
let backward = 0 |
|
|
let forwardBase = 0 |
|
|
let forwardBase = 0 |
|
|
let backwardBase = 0 |
|
|
let backwardBase = 0 |
|
|
assessRows.value.forEach((item) => { |
|
|
assess.value.forEach((item) => { |
|
|
if (!item.fdr || !item.far) |
|
|
if (!item.fdr || !item.far) |
|
|
return |
|
|
return |
|
|
const fdr = item.fdr.split('/') |
|
|
const fdr = item.fdr.split('/') |
|
|
@ -430,7 +430,7 @@ export default defineComponent({ |
|
|
const forwardScore = forwardBase ? (forward / forwardBase) * 100 : 0 |
|
|
const forwardScore = forwardBase ? (forward / forwardBase) * 100 : 0 |
|
|
const backwardScore = backwardBase ? (backward / backwardBase) * 100 : 0 |
|
|
const backwardScore = backwardBase ? (backward / backwardBase) * 100 : 0 |
|
|
const avg = (forwardScore + backwardScore) / 2 |
|
|
const avg = (forwardScore + backwardScore) / 2 |
|
|
const beta = 1 / (1 + Math.exp(-((assessRows.value.length / 100) ** 2))) - 0.5 |
|
|
const beta = 1 / (1 + Math.exp(-((assess.value.length / 100) ** 2))) - 0.5 |
|
|
const finalScore = Number((avg + (100 - avg) * beta * 2).toFixed(2)) |
|
|
const finalScore = Number((avg + (100 - avg) * beta * 2).toFixed(2)) |
|
|
const bottom = bottomScore.value ?? 0 |
|
|
const bottom = bottomScore.value ?? 0 |
|
|
return { |
|
|
return { |
|
|
@ -467,7 +467,7 @@ export default defineComponent({ |
|
|
uplow.push(`${p.Lower ?? p.lower ?? null},${p.Upper ?? p.upper ?? null}`) |
|
|
uplow.push(`${p.Lower ?? p.lower ?? null},${p.Upper ?? p.upper ?? null}`) |
|
|
}) |
|
|
}) |
|
|
|
|
|
|
|
|
const selected = row ? [row] : assessRows.value |
|
|
const selected = row ? [row] : assess.value |
|
|
selected.forEach((item) => { |
|
|
selected.forEach((item) => { |
|
|
const idx = item.index ?? points.findIndex(p => p.pointId === item.pointId) |
|
|
const idx = item.index ?? points.findIndex(p => p.pointId === item.pointId) |
|
|
if (idx >= 0) |
|
|
if (idx >= 0) |
|
|
@ -515,7 +515,7 @@ export default defineComponent({ |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
const handleEvaluate = async (row?: AssessRow) => { |
|
|
const handleEvaluate = async (row?: AssessRow) => { |
|
|
if (!assessRows.value.length) { |
|
|
if (!assess.value.length) { |
|
|
createMessage.warning('请先选择参与预警的参数') |
|
|
createMessage.warning('请先选择参与预警的参数') |
|
|
return |
|
|
return |
|
|
} |
|
|
} |
|
|
@ -531,7 +531,7 @@ export default defineComponent({ |
|
|
const payload = { |
|
|
const payload = { |
|
|
modelId: modelId.value as string, |
|
|
modelId: modelId.value as string, |
|
|
version: formModel.version, |
|
|
version: formModel.version, |
|
|
assessRows: row ? [row] : assessRows.value, |
|
|
assess: row ? [row] : assess.value, |
|
|
pointRows: pointRows.value, |
|
|
pointRows: pointRows.value, |
|
|
timeRange: formModel.timeRange |
|
|
timeRange: formModel.timeRange |
|
|
? formModel.timeRange.map(t => dayjs(t).format('YYYY-MM-DD HH:mm:ss')) |
|
|
? formModel.timeRange.map(t => dayjs(t).format('YYYY-MM-DD HH:mm:ss')) |
|
|
@ -544,7 +544,7 @@ export default defineComponent({ |
|
|
const res = await evaluateAssess(payload) |
|
|
const res = await evaluateAssess(payload) |
|
|
if (res?.points) { |
|
|
if (res?.points) { |
|
|
res.points.forEach((result) => { |
|
|
res.points.forEach((result) => { |
|
|
assessRows.value = assessRows.value.map((item) => { |
|
|
assess.value = assess.value.map((item) => { |
|
|
const match = item.pointId === result.pointId || item.index === result.index |
|
|
const match = item.pointId === result.pointId || item.index === result.index |
|
|
if (!match) |
|
|
if (!match) |
|
|
return item |
|
|
return item |
|
|
@ -583,7 +583,7 @@ export default defineComponent({ |
|
|
createMessage.warning('验证人不能为空') |
|
|
createMessage.warning('验证人不能为空') |
|
|
return |
|
|
return |
|
|
} |
|
|
} |
|
|
if (!assessRows.value.length) { |
|
|
if (!assess.value.length) { |
|
|
createMessage.warning('请至少保留一个参与预警的参数') |
|
|
createMessage.warning('请至少保留一个参与预警的参数') |
|
|
return |
|
|
return |
|
|
} |
|
|
} |
|
|
@ -600,7 +600,7 @@ export default defineComponent({ |
|
|
report: { |
|
|
report: { |
|
|
pointRows: pointRows.value, |
|
|
pointRows: pointRows.value, |
|
|
modeRows: modeRows.value, |
|
|
modeRows: modeRows.value, |
|
|
assessRows: assessRows.value, |
|
|
assess: assess.value, |
|
|
assessResult: assessResult.value, |
|
|
assessResult: assessResult.value, |
|
|
identifier: identifier.value, |
|
|
identifier: identifier.value, |
|
|
time: timestamp.value || dayjs().format('YYYY-MM-DD HH:mm:ss'), |
|
|
time: timestamp.value || dayjs().format('YYYY-MM-DD HH:mm:ss'), |
|
|
@ -695,7 +695,7 @@ export default defineComponent({ |
|
|
return { |
|
|
return { |
|
|
assessColumns, |
|
|
assessColumns, |
|
|
assessResult, |
|
|
assessResult, |
|
|
assessRows, |
|
|
assess, |
|
|
applyAbsoluteBias, |
|
|
applyAbsoluteBias, |
|
|
applyPercentBias, |
|
|
applyPercentBias, |
|
|
applyRelativeBias, |
|
|
applyRelativeBias, |
|
|
@ -780,7 +780,7 @@ export default defineComponent({ |
|
|
</div> |
|
|
</div> |
|
|
</div> |
|
|
</div> |
|
|
<a-table |
|
|
<a-table |
|
|
:columns="assessColumns" :data-source="assessRows" row-key="pointId" size="small" bordered |
|
|
:columns="assessColumns" :data-source="assess" row-key="pointId" size="small" bordered |
|
|
:pagination="{ pageSize: 10 }" align="center" |
|
|
:pagination="{ pageSize: 10 }" align="center" |
|
|
/> |
|
|
/> |
|
|
</a-card> |
|
|
</a-card> |
|
|
|