| | |
| | | import { ref } from 'vue' |
| | | import { listSpliceReports, createSpliceReport, editSpliceReport, deleteSpliceReport } from '@/api/spliceReports' |
| | | export type SpliceTestSelection = { id:number; name:string; type:string; durationMinutes:number } |
| | | export type SpliceTestSelection = { id:number; testBatteryId?:number; name:string; type:string; durationMinutes:number } |
| | | export interface SpliceReportRecord { id:number; name:string; creator:string; createdAt:string; experimentName:string; batteryGroup:string; samples:string[]; tests:SpliceTestSelection[]; batteryFields:string[]; specialFields:string[]; detailFieldValues:Record<string,Record<string,string>>; metrics:string[]; seriesColors:string[] } |
| | | export type SpliceReportPayload = Omit<SpliceReportRecord,'id'|'createdAt'> |
| | | const records=ref<SpliceReportRecord[]>([]) |
| | | export function useSpliceReports(){ |
| | | async function load(){ records.value=(await listSpliceReports()).map(item=>({...item,createdAt:String(item.createdAt)}) as unknown as SpliceReportRecord) } |
| | | async function createReport(data:SpliceReportPayload){await createSpliceReport(data as unknown as Record<string, unknown>);await load()} |
| | | async function createReport(data:SpliceReportPayload){ |
| | | const selections = data.tests.map(item => ({ testId: item.id, testBatteryId: item.testBatteryId })) |
| | | if (selections.some(item => !item.testBatteryId)) throw new Error('拼接来源缺少电池身份') |
| | | await createSpliceReport({ name: data.name, description: data.experimentName, selections, settings: { batteryFields: data.batteryFields, specialFields: data.specialFields, detailFieldValues: data.detailFieldValues, metrics: data.metrics, seriesColors: data.seriesColors } }) |
| | | await load() |
| | | } |
| | | async function updateReport(id:number,data:SpliceReportPayload){await editSpliceReport(id,data as unknown as Record<string, unknown>);await load();return true} |
| | | async function removeReport(id:number){await deleteSpliceReport(id);await load()} |
| | | return {records,load,createReport,updateReport,removeReport} |