| | |
| | | |
| | | const stepOptions = computed<StepOption[]>(() => { |
| | | const actual = new Map<string, StepOption>() |
| | | const actualAcrossCycles = new Map<number, StepOption>() |
| | | for (const record of props.records) { |
| | | const cycleNo = Number(record.cycleNo) |
| | | const stepNo = Number(record.stepNo) |
| | | if (!Number.isFinite(cycleNo) || !Number.isFinite(stepNo) || cycleNo <= 0 || stepNo <= 0) continue |
| | | const value = `actual:${cycleNo}:${stepNo}` |
| | | if (!actual.has(value)) actual.set(value, { value, label: `${cycleNo}-${stepNo} ${record.stepName || '-'}`, cycleNo, stepNo }) |
| | | if (!actualAcrossCycles.has(stepNo)) actualAcrossCycles.set(stepNo, { |
| | | value: `actual:all:${stepNo}`, |
| | | label: `全部循环-${stepNo} ${record.stepName || '-'}`, |
| | | cycleNo: 0, |
| | | stepNo, |
| | | }) |
| | | } |
| | | const logical: StepOption[] = [] |
| | | const logicalAcrossCycles: StepOption[] = [] |
| | | for (const cycleNo of cycleOptions.value) { |
| | | for (const mapping of props.logicStepMappings || []) { |
| | | logical.push({ value: `logical:${cycleNo}:${mapping.logicalNo}`, label: `${cycleNo}-逻辑${mapping.logicalNo} ${mapping.logicalName}`, cycleNo, logical: mapping }) |
| | | } |
| | | } |
| | | return [...actual.values(), ...logical] |
| | | for (const mapping of props.logicStepMappings || []) { |
| | | logicalAcrossCycles.push({ |
| | | value: `logical:all:${mapping.logicalNo}`, |
| | | label: `全部循环-逻辑${mapping.logicalNo} ${mapping.logicalName}`, |
| | | cycleNo: 0, |
| | | logical: mapping, |
| | | }) |
| | | } |
| | | return [...actualAcrossCycles.values(), ...actual.values(), ...logicalAcrossCycles, ...logical] |
| | | }) |
| | | |
| | | function ensureDetailFieldValues() { |
| | |
| | | function selectedRecords() { |
| | | const option = stepOptions.value.find(item => item.value === selectedStep.value) |
| | | if (!option) return [] |
| | | const cycle = selectedCycle.value ? Number(selectedCycle.value) : option.cycleNo |
| | | const cycle = selectedCycle.value ? Number(selectedCycle.value) : option.cycleNo > 0 ? option.cycleNo : null |
| | | return props.records.filter(record => { |
| | | if (Number(record.cycleNo) !== cycle) return false |
| | | if (cycle !== null && Number(record.cycleNo) !== cycle) return false |
| | | const stepNo = Number(record.stepNo) |
| | | if (option.logical) return stepNo >= option.logical.startStepNo && stepNo <= option.logical.endStepNo |
| | | return stepNo === option.stepNo |
| | |
| | | series: selectedCells.value.map((cell, index) => ({ |
| | | name: cell.no, |
| | | type: 'line', |
| | | smooth: true, |
| | | smooth: false, |
| | | showSymbol: false, |
| | | lineStyle: { width: 2 }, |
| | | data: timestamps.map(timestamp => { |