diff --git a/src/views/model/AssessReport.vue b/src/views/model/AssessReport.vue index 5dff27e..73826e1 100644 --- a/src/views/model/AssessReport.vue +++ b/src/views/model/AssessReport.vue @@ -95,7 +95,7 @@ export default defineComponent({ const baseInfo = ref>({}) const modeRows = ref([]) const pointRows = ref([]) - const assessRows = ref([]) + const assess = ref([]) const assessResult = ref(defaultAssessResult()) const cleanSummary = ref() const cleanModalVisible = ref(false) @@ -308,7 +308,7 @@ export default defineComponent({ modelName.value = detail.modelName modeRows.value = detail.report.modeRows || [] 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() identifier.value = detail.report.identifier || identifier.value timestamp.value = detail.report.time || '' @@ -327,7 +327,7 @@ export default defineComponent({ { name: '样本类型', content: '训练样本' }, { name: '样本数量', content: sampleCount ?? '--' }, ] - assessRows.value + assess.value = pointRows.value .filter(item => item.alarm) .map((item, index) => buildAssessRow({ ...item, index })) || [] @@ -354,13 +354,13 @@ export default defineComponent({ const toggleAlarm = (row: AssessPointRow, checked: boolean) => { 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) - assessRows.value.push(buildAssessRow(row)) + assess.value.push(buildAssessRow(row)) } const applyRound = () => { - assessRows.value = assessRows.value.map(item => ({ + assess.value = assess.value.map(item => ({ ...item, amplitude: Math.round(Number(item.amplitude) || 0), })) @@ -369,7 +369,7 @@ export default defineComponent({ const applyAbsoluteBias = () => { if (biasForm.absolute === undefined) return - assessRows.value = assessRows.value.map(item => ({ + assess.value = assess.value.map(item => ({ ...item, amplitude: biasForm.absolute, })) @@ -378,14 +378,14 @@ export default defineComponent({ const applyRelativeBias = () => { if (biasForm.relative === undefined) return - assessRows.value = assessRows.value.map(item => ({ + assess.value = assess.value.map(item => ({ ...item, amplitude: Number((Number(item.amplitude || 0) + biasForm.relative!).toFixed(2)), })) } 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 delta = point ? Number(point.TMax || point.tMax || 0) - Number(point.TMin || point.tMin || 0) : 0 const amplitude = Number(((biasForm.percent / 100) * delta).toFixed(2)) @@ -413,7 +413,7 @@ export default defineComponent({ let backward = 0 let forwardBase = 0 let backwardBase = 0 - assessRows.value.forEach((item) => { + assess.value.forEach((item) => { if (!item.fdr || !item.far) return const fdr = item.fdr.split('/') @@ -430,7 +430,7 @@ export default defineComponent({ const forwardScore = forwardBase ? (forward / forwardBase) * 100 : 0 const backwardScore = backwardBase ? (backward / backwardBase) * 100 : 0 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 bottom = bottomScore.value ?? 0 return { @@ -467,7 +467,7 @@ export default defineComponent({ 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) => { const idx = item.index ?? points.findIndex(p => p.pointId === item.pointId) if (idx >= 0) @@ -515,7 +515,7 @@ export default defineComponent({ } const handleEvaluate = async (row?: AssessRow) => { - if (!assessRows.value.length) { + if (!assess.value.length) { createMessage.warning('请先选择参与预警的参数') return } @@ -531,7 +531,7 @@ export default defineComponent({ const payload = { modelId: modelId.value as string, version: formModel.version, - assessRows: row ? [row] : assessRows.value, + assess: row ? [row] : assess.value, pointRows: pointRows.value, timeRange: formModel.timeRange ? 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) if (res?.points) { 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 if (!match) return item @@ -583,7 +583,7 @@ export default defineComponent({ createMessage.warning('验证人不能为空') return } - if (!assessRows.value.length) { + if (!assess.value.length) { createMessage.warning('请至少保留一个参与预警的参数') return } @@ -600,7 +600,7 @@ export default defineComponent({ report: { pointRows: pointRows.value, modeRows: modeRows.value, - assessRows: assessRows.value, + assess: assess.value, assessResult: assessResult.value, identifier: identifier.value, time: timestamp.value || dayjs().format('YYYY-MM-DD HH:mm:ss'), @@ -695,7 +695,7 @@ export default defineComponent({ return { assessColumns, assessResult, - assessRows, + assess, applyAbsoluteBias, applyPercentBias, applyRelativeBias, @@ -780,7 +780,7 @@ export default defineComponent({ diff --git a/src/views/model/train/index.vue b/src/views/model/train/index.vue index f9b09b0..14fe63a 100644 --- a/src/views/model/train/index.vue +++ b/src/views/model/train/index.vue @@ -310,6 +310,17 @@ export default defineComponent({ const color = ['blue', '#ff6f00', 'red'] const yIndex = [0, 0, 1] const option = { + tooltip: { + trigger: 'axis', + confine: true, + formatter(params: any) { + if (!Array.isArray(params) || !params.length) + return '' + const time = dayjs(params[0].value?.[0]).format('YYYY-MM-DD HH:mm:ss') + const lines = params.map((p: any) => `${p.marker}${p.seriesName || name[p.seriesIndex] || ''}:${p.value?.[1] ?? '-'}`) + return [`时间:${time}`, ...lines].join('
') + }, + }, xAxis: { type: 'time', axisLabel: {