Save As
@@ -26,7 +26,7 @@ export default {
try {
this.isLoading = true
const { dbName, sampleId, sampleFileName, gasFileName, detFileName, qcFileName } = this.newSampleData
- const { success, result, message } = await getAction('/spectrumAnalysis/viewBGLogViewer', {
+ const result = await getAction('/spectrumAnalysis/viewBGLogViewer', {
dbName,
sampleId,
sampleFileName,
@@ -34,12 +34,7 @@ export default {
detFileName,
qcFileName,
})
- if (success) {
- console.log('%c [ ]-21', 'font-size:13px; background:pink; color:#bf2c9f;', result)
- this.content = 'test'
- } else {
- this.$message.error(message)
- }
+ this.content = result
} catch (error) {
console.error(error)
} finally {
@@ -60,8 +55,4 @@ export default {
\ No newline at end of file
diff --git a/src/views/spectrumAnalysis/components/Modals/BetaGammaModals/BetaGammaEnergyCalibrationModal/components/BetaDetectorCalibration.vue b/src/views/spectrumAnalysis/components/Modals/BetaGammaModals/BetaGammaEnergyCalibrationModal/components/BetaDetectorCalibration.vue
index 1e00d3a..3b53501 100644
--- a/src/views/spectrumAnalysis/components/Modals/BetaGammaModals/BetaGammaEnergyCalibrationModal/components/BetaDetectorCalibration.vue
+++ b/src/views/spectrumAnalysis/components/Modals/BetaGammaModals/BetaGammaEnergyCalibrationModal/components/BetaDetectorCalibration.vue
@@ -545,6 +545,12 @@ const newCalibrationFuncModel = {
export default {
mixins: [SampleDataMixin],
components: { CustomChart, TitleOverBorder },
+ props: {
+ isFirstFitting: {
+ type: Boolean,
+ required: false,
+ },
+ },
data() {
this.columns = columns
@@ -594,7 +600,7 @@ export default {
recalculateROICountsFor: [],
count: 0, //反算时需要传递的数值 非反算的情况下不需要传递 数值大小是 第一次调用接口时返回的tableWidgets 大小
- isFirstFitting: true,
+ // isFirstFitting: true,
isInverse: false, // 是否需要反算
betaIsFitting: false,
}
@@ -608,12 +614,14 @@ export default {
},
async getData() {
- const { sampleId = '', qcFileName } = this.newSampleData
+ // 增加sampleFileName参数 20231101:xiao
+ const { sampleId = '', qcFileName, sampleFileName = inputFileName } = this.newSampleData
try {
this.isLoading = true
const res = await getAction('/spectrumAnalysis/viewBetaDetectorCalibration', {
sampleId,
qcFileName,
+ sampleFileName
})
if (res.success) {
const { CToE, EToC, betaEnergy, gammaEnergy, gammaGatedBetaSpectrum, histogramData, oldScatterSeries } =
@@ -623,7 +631,7 @@ export default {
this.oldScatterSeries = oldScatterSeries
this.count = oldScatterSeries.length
- this.isFirstFitting = true
+ // this.isFirstFitting = true
this.betaGammaChartOption.series.data = histogramData.map(({ b, g, c }) => [b, g, c])
this.gammaEnergy = gammaEnergy
@@ -644,6 +652,13 @@ export default {
this.figureChartOption.series[0].markPoint.data = oldScatterSeries.map(({ x, y }) => ({ xAxis: x, yAxis: y }))
this.oldChartOption = cloneDeep(this.figureChartOption)
+
+ // 如果点击过reanalyze则渲染之前fitting的数据,如果没点Reanalyze,数据会在窗口关闭时删掉 20231101:xiao
+ // todo 现在能谱数据没有缓存,刷新页面时也会获取到fitting的数据
+ if(this.getCache("calibration-beta:"+this.newSampleData.inputFileName)) {
+ this.setFirringResult(this.getCache("calibration-beta:"+this.newSampleData.inputFileName))
+ return false;
+ }
} else {
this.$message.error(res.message)
}
@@ -861,6 +876,7 @@ export default {
// 点击Reset Button 重置
handleReset() {
+ this.removeCache("calibration-beta:"+this.newSampleData.inputFileName) // 删除fitting之后缓存的数据 20231101:xiao
this.newCalibrationFuncModel = cloneDeep(newCalibrationFuncModel)
this.list = []
this.newE2C = []
@@ -880,7 +896,9 @@ export default {
}
try {
const { success, result, message } = await postAction('/spectrumAnalysis/fitting', {
- ...this.newCalibrationFuncModel,
+ ...this.list.length <= 0 ? this.newCalibrationFuncModel : [], // 如果list有数据则不传 C to E 表单数据 20231101:xiao
+ sampleFileName: this.newSampleData.inputFileName,
+ tabName: "beta",
// 修改逻辑,如果列表中有数据 以列表的数据优先进行分析 20231028:Xiao
tempPoints: this.list.length > 0
? this.list.map((item) => ({ x: item.channel, y: item.energy }))
@@ -891,49 +909,15 @@ export default {
count: this.isFirstFitting || !this.isInverse ? undefined : this.count,
})
if (success) {
- this.isFirstFitting = false
+ // this.isFirstFitting = false
this.betaIsFitting = true
- this.$emit('isFitting', this.betaIsFitting)
+ this.$emit('isFitting', true) // 点击reAnalyze按钮,将isFirstFitting改为true 20231101:xiao
- const { EToC, newLineSeries, newScatterSeriesData, tableWidgets, CToE } = result
- this.newE2C = EToC
- this.newLineSeries = newLineSeries
+ this.setCache("calibration-beta:"+this.newSampleData.inputFileName, result) // 缓存数据,如果点击ReAnalyze需要回显数据 20231101:xiao
- if (tableWidgets) {
- this.list = tableWidgets
- }
- // 反算时重新设置C to E 的值
- if (CToE) {
- const [paramA, paramB, paramC] = CToE
- this.newCalibrationFuncModel = {
- paramA: Number(paramA).toPrecision(6),
- paramB: Number(paramB).toPrecision(6),
- paramC: Number(paramC).toPrecision(6),
- }
- }
+ this.setFirringResult(result)
- const energyValues = newLineSeries.map((item) => item.y)
- const { max: prevMax, min: prevMin } = this.oldChartOption.yAxis
-
- const energyMax = Math.max(Math.max(...energyValues), prevMax)
- const energyMin = Math.min(Math.min(...energyValues), prevMin)
-
- const { min, max, interval } = splitAxis(energyMax, energyMin, 4)
-
- this.figureChartOption.yAxis.max = max
- this.figureChartOption.yAxis.min = min
- this.figureChartOption.yAxis.interval = interval
-
- this.figureChartOption.series[1].data = newLineSeries.map(({ x, y }) => [x, y])
- if (newScatterSeriesData) {
- this.figureChartOption.series[1].markPoint.data = newScatterSeriesData.map(({ x, y }) => {
- return {
- xAxis: x,
- yAxis: y,
- }
- })
- }
} else {
this.$message.error(message)
}
@@ -942,6 +926,49 @@ export default {
}
},
+ // 封装 fitting后数据填充方法,如果点击ReAnalyze需要回显数据 20231101:xiao
+ setFirringResult(result){
+ const { EToC, newLineSeries, newScatterSeriesData, tableWidgets, CToE } = result
+ this.newE2C = EToC
+ this.newLineSeries = newLineSeries
+
+ if (tableWidgets) {
+ this.list = tableWidgets
+ }
+ // 反算时重新设置C to E 的值
+ if (CToE) {
+ const [paramA, paramB, paramC] = CToE
+ this.newCalibrationFuncModel = {
+ paramA: Number(paramA).toPrecision(6),
+ paramB: Number(paramB).toPrecision(6),
+ paramC: Number(paramC).toPrecision(6),
+ }
+ }
+
+ const energyValues = newLineSeries.map((item) => item.y)
+
+ const { max: prevMax, min: prevMin } = this.oldChartOption.yAxis
+
+ const energyMax = Math.max(Math.max(...energyValues), prevMax)
+ const energyMin = Math.min(Math.min(...energyValues), prevMin)
+
+ const { min, max, interval } = splitAxis(energyMax, energyMin, 4)
+
+ this.figureChartOption.yAxis.max = max
+ this.figureChartOption.yAxis.min = min
+ this.figureChartOption.yAxis.interval = interval
+
+ this.figureChartOption.series[1].data = newLineSeries.map(({ x, y }) => [x, y])
+ if (newScatterSeriesData) {
+ this.figureChartOption.series[1].markPoint.data = newScatterSeriesData.map(({ x, y }) => {
+ return {
+ xAxis: x,
+ yAxis: y,
+ }
+ })
+ }
+ },
+
// 获取Figure Chart 最大值 和 最小值
getFigureChartMaxAndMin() {
const [series0, series1] = this.figureChartOption.series
@@ -985,6 +1012,15 @@ export default {
}
return 0
},
+ getCache(name){
+ return this.$ls.get(name)
+ },
+ setCache(name, data){
+ this.$ls.set(name, data)
+ },
+ removeCache(name){
+ this.$ls.remove(name) // 删除fitting之后缓存的数据 20231101:xiao
+ }
},
computed: {
rectHeight() {
diff --git a/src/views/spectrumAnalysis/components/Modals/BetaGammaModals/BetaGammaEnergyCalibrationModal/components/GammaDetectorCalibration.vue b/src/views/spectrumAnalysis/components/Modals/BetaGammaModals/BetaGammaEnergyCalibrationModal/components/GammaDetectorCalibration.vue
index 6355345..58f6aa6 100644
--- a/src/views/spectrumAnalysis/components/Modals/BetaGammaModals/BetaGammaEnergyCalibrationModal/components/GammaDetectorCalibration.vue
+++ b/src/views/spectrumAnalysis/components/Modals/BetaGammaModals/BetaGammaEnergyCalibrationModal/components/GammaDetectorCalibration.vue
@@ -435,6 +435,12 @@ const newCalibrationFuncModel = {
export default {
mixins: [SampleDataMixin],
components: { CustomChart, TitleOverBorder },
+ props: {
+ isFirstFitting: {
+ type: Boolean,
+ required: false,
+ },
+ },
data() {
this.columns = columns
@@ -466,7 +472,7 @@ export default {
recalculateROICountsFor: [],
count: 0, //反算时需要传递的数值 非反算的情况下不需要传递 数值大小是 第一次调用接口时返回的tableWidgets 大小
- isFirstFitting: true,
+ // isFirstFitting: true,
isInverse: false, // 是否需要反算
gammaIsFitting: false,
}
@@ -480,12 +486,16 @@ export default {
},
async getData() {
- const { sampleId = '', qcFileName } = this.newSampleData
+ console.log("isFirstFitting>>>"+this.isFirstFitting);
+ // 增加sampleFileName参数 20231101:xiao
+ const { sampleId = '', qcFileName, sampleFileName = inputFileName } = this.newSampleData
+
try {
this.isLoading = true
const res = await getAction('/spectrumAnalysis/viewGammaDetectorCalibration', {
sampleId,
qcFileName,
+ sampleFileName
})
if (res.success) {
@@ -495,7 +505,7 @@ export default {
this.e2c = EToC
this.oldScatterSeries = oldScatterSeries
this.count = oldScatterSeries.length
- this.isFirstFitting = true
+ // this.isFirstFitting = true
const { max: _max, min: _min, interval: _interval } = splitAxis(max, min, 4)
@@ -519,6 +529,13 @@ export default {
this.figureChartOption.series[0].markPoint.data = oldScatterSeries.map(({ x, y }) => ({ xAxis: x, yAxis: y }))
this.oldChartOption = cloneDeep(this.figureChartOption)
+
+ // 如果点击过reanalyze则渲染之前fitting的数据,如果没点Reanalyze,数据会在窗口关闭时删掉 20231101:xiao
+ // todo 现在能谱数据没有缓存,刷新页面时也会获取到fitting的数据
+ if(this.getCache("calibration-gamma:"+this.newSampleData.inputFileName)) {
+ this.setFirringResult(this.getCache("calibration-gamma:"+this.newSampleData.inputFileName))
+ return false;
+ }
} else {
this.$message.error(res.message)
}
@@ -640,12 +657,13 @@ export default {
// 点击Reset Button 重置
handleReset() {
+ this.$ls.remove("calibration-gamma:"+this.newSampleData.inputFileName) // 删除fitting之后缓存的数据 20231101:xiao
this.newCalibrationFuncModel = cloneDeep(newCalibrationFuncModel)
this.list = []
this.newE2C = []
this.figureChartOption = cloneDeep(this.oldChartOption)
- this.isFirstFitting = true
+ this.isFirstFitting = false
this.isInverse = false
},
@@ -657,8 +675,10 @@ export default {
}
try {
const { success, result, message } = await postAction('/spectrumAnalysis/fitting', {
- ...this.newCalibrationFuncModel,
- // 修改逻辑,如果列表中有数据 以列表的数据优先进行分析 20231028:Xiao
+ ...this.list.length <= 0 ? this.newCalibrationFuncModel : [], // 如果list有数据则不传 C to E 表单数据 20231101:xiao
+ sampleFileName: this.newSampleData.inputFileName,
+ tabName: "gamma",
+ // 如果列表中有数据 以列表的数据优先进行分析 20231028:Xiao
tempPoints: this.list.length > 0
? this.list.map((item) => ({ x: item.channel, y: item.energy }))
: this.oldScatterSeries,
@@ -669,47 +689,14 @@ export default {
count: this.isFirstFitting || !this.isInverse ? undefined : this.count,
})
if (success) {
- this.isFirstFitting = false
+ // this.isFirstFitting = true
this.gammaIsFitting = false
- this.$emit('isFitting', this.gammaIsFitting)
+ this.$emit('isFitting', true) // 点击reAnalyze按钮,将isFirstFitting改为true 20231101:xiao
- const { EToC, newLineSeries, newScatterSeriesData, tableWidgets, CToE } = result
- this.newE2C = EToC
- this.newLineSeries = newLineSeries
+ this.setCache("calibration-gamma:"+this.newSampleData.inputFileName, result) // 缓存数据,如果点击ReAnalyze需要回显数据 20231101:xiao
- if (tableWidgets) {
- this.list = tableWidgets
- }
- // 反算时重新设置C to E 的值
- if (CToE) {
- const [paramA, paramB, paramC] = CToE
- this.newCalibrationFuncModel = {
- paramA: Number(paramA).toPrecision(6),
- paramB: Number(paramB).toPrecision(6),
- paramC: Number(paramC).toPrecision(6),
- }
- }
+ this.setFirringResult(result)
- const energyValues = newLineSeries.map((item) => item.y)
-
- const { max: prevMax, min: prevMin } = this.oldChartOption.yAxis
-
- const energyMax = Math.max(Math.max(...energyValues), prevMax)
- const energyMin = Math.min(Math.min(...energyValues), prevMin)
-
- const { min, max, interval } = splitAxis(energyMax, energyMin, 4)
-
- this.figureChartOption.yAxis.max = max
- this.figureChartOption.yAxis.min = min
- this.figureChartOption.yAxis.interval = interval
-
- this.figureChartOption.series[1].data = newLineSeries.map(({ x, y }) => [x, y])
- if (newScatterSeriesData) {
- this.figureChartOption.series[1].markPoint.data = newScatterSeriesData.map(({ x, y }) => ({
- xAxis: x,
- yAxis: y,
- }))
- }
} else {
this.$message.error(message)
}
@@ -718,6 +705,46 @@ export default {
}
},
+ // 封装 fitting后数据填充方法,如果点击ReAnalyze需要回显数据 20231101:xiao
+ setFirringResult(result){
+ const { EToC, newLineSeries, newScatterSeriesData, tableWidgets, CToE } = result
+ this.newE2C = EToC
+ this.newLineSeries = newLineSeries
+
+ if (tableWidgets) {
+ this.list = tableWidgets
+ }
+ // 反算时重新设置C to E 的值
+ if (CToE) {
+ const [paramA, paramB, paramC] = CToE
+ this.newCalibrationFuncModel = {
+ paramA: Number(paramA).toPrecision(6),
+ paramB: Number(paramB).toPrecision(6),
+ paramC: Number(paramC).toPrecision(6),
+ }
+ }
+ const energyValues = newLineSeries.map((item) => item.y)
+
+ const { max: prevMax, min: prevMin } = this.oldChartOption.yAxis
+
+ const energyMax = Math.max(Math.max(...energyValues), prevMax)
+ const energyMin = Math.min(Math.min(...energyValues), prevMin)
+
+ const { min, max, interval } = splitAxis(energyMax, energyMin, 4)
+
+ this.figureChartOption.yAxis.max = max
+ this.figureChartOption.yAxis.min = min
+ this.figureChartOption.yAxis.interval = interval
+
+ this.figureChartOption.series[1].data = newLineSeries.map(({ x, y }) => [x, y])
+ if (newScatterSeriesData) {
+ this.figureChartOption.series[1].markPoint.data = newScatterSeriesData.map(({ x, y }) => ({
+ xAxis: x,
+ yAxis: y,
+ }))
+ }
+ },
+
// 获取Figure Chart 最大值 和 最小值
getFigureChartMaxAndMin() {
const [series0, series1] = this.figureChartOption.series
@@ -761,6 +788,15 @@ export default {
}
return 0
},
+ getCache(name){
+ return this.$ls.get(name)
+ },
+ setCache(name, data){
+ this.$ls.set(name, data)
+ },
+ removeCache(name){
+ this.$ls.remove(name) // 删除fitting之后缓存的数据 20231101:xiao
+ }
},
}
diff --git a/src/views/spectrumAnalysis/components/Modals/BetaGammaModals/BetaGammaEnergyCalibrationModal/index.vue b/src/views/spectrumAnalysis/components/Modals/BetaGammaModals/BetaGammaEnergyCalibrationModal/index.vue
index 9dc33f8..04e6d31 100644
--- a/src/views/spectrumAnalysis/components/Modals/BetaGammaModals/BetaGammaEnergyCalibrationModal/index.vue
+++ b/src/views/spectrumAnalysis/components/Modals/BetaGammaModals/BetaGammaEnergyCalibrationModal/index.vue
@@ -6,10 +6,11 @@
class="beta-gamma-tool-of-calibration"
:footer="null"
destroy-on-close
+ @cancel="handleExit"
>
-
+
@@ -69,7 +70,8 @@ export default {
checkDet: false,
},
betaEnergyValid: false,
- gammaEnergyValid: true,
+ gammaEnergyValid: false,
+ isReanlyze: false
}
},
methods: {
@@ -88,9 +90,15 @@ export default {
this.betaEnergyValid = val
},
getFittingFlag_gamma(val) {
+ console.log("zhiqian>>>"+this.gammaEnergyValid);
this.gammaEnergyValid = val
+ console.log("zhihou>>>"+this.gammaEnergyValid);
},
handleReAnalyse() {
+ // todo 1.fitting之后才能点击; 2.isReAnalyze需要缓存
+ if(!this.gammaEnergyValid){
+ return false;
+ }
const regExp = /^([A-Z]{1,}\d{1,})_/
const regMatched = this.newSampleData.inputFileName.match(regExp)
const currStationName = regMatched[1]
@@ -140,13 +148,19 @@ export default {
})
this.$emit('sendXeData', res.result.XeData)
this.$message.success('Analyse Success!')
- this.visible = false
+ this.isReanlyze = true
+ this.handleExit()
} else {
this.$message.warning(res.message)
}
})
},
handleExit() {
+ this.gammaEnergyValid = this.isReanlyze
+ console.log("exit>>>this.isReanlyze>>>"+this.isReanlyze);
+ if(!this.isReanlyze && this.$ls.get("calibration-gamma:"+this.newSampleData.inputFileName)){
+ this.$ls.remove("calibration-gamma:"+this.newSampleData.inputFileName) // 如果没有点击ReANalyze,删除fitting之后缓存的数据 20231101:xiao
+ }
this.visible = false
},
},
diff --git a/src/views/spectrumAnalysis/components/Modals/BetaGammaModals/BetaGammaQCResultsModal.vue b/src/views/spectrumAnalysis/components/Modals/BetaGammaModals/BetaGammaQCResultsModal.vue
index 958cece..2504ef0 100644
--- a/src/views/spectrumAnalysis/components/Modals/BetaGammaModals/BetaGammaQCResultsModal.vue
+++ b/src/views/spectrumAnalysis/components/Modals/BetaGammaModals/BetaGammaQCResultsModal.vue
@@ -110,15 +110,15 @@ export default {
this.list.push({
qcFlags: 'Gas Bg',
- evaluationMetrics: result.gasBgValueAndStatus,
- value: result.gasBgValueAndStatus ? 'Match' : 'UnMatch',
+ evaluationMetrics: result.gasBgEvaluationMetrics,
+ value: result.gasBgValue,
status: result.gasBgValueAndStatus ? 'Pass' : 'Failed',
})
this.list.push({
qcFlags: 'Det Bg',
- evaluationMetrics: result.detBgValueAndStatus,
- value: result.detBgValueAndStatus ? 'Match' : 'UnMatch',
+ evaluationMetrics: result.detBgEvaluationMetrics,
+ value: result.detBgValue,
status: result.detBgValueAndStatus ? 'Pass' : 'Failed',
})
diff --git a/src/views/spectrumAnalysis/components/Modals/LoadFromDBModal.vue b/src/views/spectrumAnalysis/components/Modals/LoadFromDBModal.vue
index 857fa62..ae711a8 100644
--- a/src/views/spectrumAnalysis/components/Modals/LoadFromDBModal.vue
+++ b/src/views/spectrumAnalysis/components/Modals/LoadFromDBModal.vue
@@ -114,6 +114,7 @@ export default {
return {
queryParam: {
menuTypes: 'G,B',
+ sampleType: 'P',
startDate: moment().add(-7, 'd').format('YYYY-MM-DD'),
endDate: moment().format('YYYY-MM-DD'),
dbName: 'auto',
@@ -323,7 +324,16 @@ export default {
value: 'G',
},
]
- this.sampleTypeOption = event == 'B' ? arr_B : event == 'G' ? arr_G : arr_A
+ if (event == 'B') {
+ this.sampleTypeOption = arr_B
+ this.queryParam.sampleType = 'B'
+ } else if (event == 'G') {
+ this.sampleTypeOption = arr_G
+ this.queryParam.sampleType = 'P'
+ } else {
+ this.sampleTypeOption = arr_A
+ this.queryParam.sampleType = 'P'
+ }
this.getStationAndDetectorList(event)
},
},
diff --git a/src/views/spectrumAnalysis/components/Modals/ResolutionCalibrationModal.vue b/src/views/spectrumAnalysis/components/Modals/ResolutionCalibrationModal.vue
index 853b386..541a005 100644
--- a/src/views/spectrumAnalysis/components/Modals/ResolutionCalibrationModal.vue
+++ b/src/views/spectrumAnalysis/components/Modals/ResolutionCalibrationModal.vue
@@ -421,6 +421,7 @@ export default {
m_vCurReso: this.list.map((item) => item.fwhm),
m_vCurUncert: this.uncert,
m_curParam: this.param,
+ width: 922,
})
if (success) {
this.handleResult(result)
diff --git a/src/views/spectrumAnalysis/components/PeakInfomation.vue b/src/views/spectrumAnalysis/components/PeakInfomation.vue
index 62d4262..d94009c 100644
--- a/src/views/spectrumAnalysis/components/PeakInfomation.vue
+++ b/src/views/spectrumAnalysis/components/PeakInfomation.vue
@@ -86,6 +86,7 @@ const columns = [
{
title: 'Indentify',
dataIndex: 'indentify',
+ ellipsis: true,
},
]
export default {
diff --git a/src/views/spectrumAnalysis/gamma-analysis.vue b/src/views/spectrumAnalysis/gamma-analysis.vue
index 3d12eef..bdada8b 100644
--- a/src/views/spectrumAnalysis/gamma-analysis.vue
+++ b/src/views/spectrumAnalysis/gamma-analysis.vue
@@ -42,7 +42,7 @@
-
+
maxX) {
nextMaxX = maxX
@@ -351,30 +351,45 @@ export default {
if (markLineXAxis == maxX) {
return
}
- const nextAxis = markLineXAxis == -1 ? 1 : markLineXAxis + 1
- markLineData.xAxis = nextAxis
+ let rightAxis = -1
+ if (markLineXAxis == -1) {
+ rightAxis = this.xAxisMin
+ } else {
+ if (this.isEnergy) {
+ const channel = this.getChannelByEnergy(markLineXAxis)
+ rightAxis = this.getEnergyByChannel(channel + 1)
+ } else {
+ rightAxis = markLineXAxis + 1
+ }
+ }
+ markLineData.xAxis = rightAxis
const {
- channel: nextChannel,
- energy: nextEnergy,
- counts: nextCounts,
- } = this.getEnergyAndCountsByXAxis(nextAxis)
- this.setChartBottomTitle(nextChannel, nextEnergy, nextCounts)
-
- this.getSelPosNuclide(nextChannel)
+ channel: rightChannel,
+ energy: rightEnergy,
+ counts: rightCounts,
+ } = this.getEnergyAndCountsByXAxis(rightAxis)
+ this.setChartBottomTitle(rightChannel, rightEnergy, rightCounts)
+ this.getSelPosNuclide(rightChannel)
break
case 'ArrowLeft':
- if (markLineXAxis <= 1) {
+ if (markLineXAxis <= this.xAxisMin) {
return
}
- markLineData.xAxis = markLineXAxis - 1
+ let leftAxis = 0
+ if (this.isEnergy) {
+ const channel = this.getChannelByEnergy(markLineXAxis)
+ leftAxis = this.getEnergyByChannel(channel - 1)
+ } else {
+ leftAxis = markLineXAxis - 1
+ }
+ markLineData.xAxis = leftAxis
const {
- channel: prevChannel,
- energy: prevEnergy,
- counts: prevCounts,
- } = this.getEnergyAndCountsByXAxis(markLineXAxis - 1)
- this.setChartBottomTitle(prevChannel, prevEnergy, prevCounts)
-
- this.getSelPosNuclide(prevChannel)
+ channel: leftChannel,
+ energy: leftEnergy,
+ counts: leftCounts,
+ } = this.getEnergyAndCountsByXAxis(leftAxis)
+ this.setChartBottomTitle(leftChannel, leftEnergy, leftCounts)
+ this.getSelPosNuclide(leftChannel)
break
}
},
@@ -394,13 +409,7 @@ export default {
this.option.xAxis.max = maxX
this.option.yAxis.min = minY
this.option.yAxis.max = maxY
- if (this.isEnergy()) {
- const channel1 = this.getChannelByEnergy(minX)
- const channel2 = this.getChannelByEnergy(maxX)
- this.setThumbnailChartRect(channel1, maxY, channel2, minY)
- } else {
- this.setThumbnailChartRect(minX, maxY, maxX, minY)
- }
+ this.setThumbnailChartRect(minX, maxY, maxX, minY)
const thumbnailChart = this.getThumbnailChart()
const [, maxYPixel] = thumbnailChart.convertToPixel({ seriesIndex: 0 }, [0, minY]) // 方框的上下两条边的yAxis转为pix
@@ -556,7 +565,7 @@ export default {
peak,
BaseCtrls,
} = result
- if (flag && (flag == 'dab' || flag == 'file')) {
+ if (flag && (flag == 'db' || flag == 'file')) {
this.bAnalyed = result.bAnalyed
this.$emit('reAnalyed', this.bAnalyed)
this.checkBox_updateCal = result.checkBox_updateCal
@@ -570,7 +579,7 @@ export default {
this.peakList = peak
}
- if(BaseCtrls) {
+ if (BaseCtrls) {
this.baseCtrls = BaseCtrls
}
@@ -664,14 +673,13 @@ export default {
let energy = 0
const value = params[0].value[0]
- if (this.isEnergy()) {
+ if (this.isEnergy) {
energy = value.toFixed(2)
- channel = this.getChannelByEnergy(energy)
+ channel = this.getChannelByEnergy(value)
} else {
- const allPointList = this.energyData.all.pointlist
channel = parseInt(value.toFixed())
- energy = allPointList && allPointList[channel - 1]
- energy = energy ? energy.x.toFixed(2) : undefined
+ energy = this.getEnergyByChannel(channel)
+ energy = energy ? energy.toFixed(2) : undefined
}
return `Channel: ${channel}
@@ -729,8 +737,18 @@ export default {
}
this.option.xAxis.name = value
+ if (this.isEnergy) {
+ this.option.xAxis.axisLabel.formatter = (value) => {
+ return value.toFixed(2)
+ }
+ } else {
+ this.option.xAxis.axisLabel.formatter = (value) => {
+ return value
+ }
+ }
this.handleResetChart()
+ this.thumbnailOption.xAxis.min = this.xAxisMin
this.redrawLineBySeriesName(
'BaseLine',
@@ -812,7 +830,7 @@ export default {
// 根据seriesName重绘线
redrawLineBySeriesName(seriesName, energyData, channelData, isShow = true, color) {
if (isShow) {
- const data = this.isEnergy() ? energyData : channelData
+ const data = this.isEnergy ? energyData : channelData
this.setSeriesData(this.option.series, seriesName, this.transformPointListData(data.pointlist), color)
} else {
this.setSeriesData(this.option.series, seriesName, [])
@@ -822,7 +840,7 @@ export default {
// 重绘控制点
redrawCtrlPointBySeriesName() {
const series = findSeriesByName(this.option.series, 'BaseLine_Ctrl_Point')
- const data = this.isEnergy() ? this.energyData.baseLineCP : this.channelData.baseLineCP
+ const data = this.isEnergy ? this.energyData.baseLineCP : this.channelData.baseLineCP
series.data = data.map(({ size, color, point: { x, y } }) => {
return {
value: [x, y],
@@ -847,7 +865,7 @@ export default {
redrawPeakLine() {
this.clearPeakLine()
- const data = this.isEnergy() ? this.energyData.peakGroup : this.channelData.peakGroup
+ const data = this.isEnergy ? this.energyData.peakGroup : this.channelData.peakGroup
const peakLines = []
data.forEach((item, index) => {
peakLines.push(
@@ -863,7 +881,7 @@ export default {
// 重绘右上角的缩略图
redrawThumbnailChart() {
const series = findSeriesByName(this.thumbnailOption.series, 'Spectrum')
- const data = this.isEnergy() ? this.energyData.spectrumLine : this.channelData.spectrumLine
+ const data = this.isEnergy ? this.energyData.spectrumLine : this.channelData.spectrumLine
series.data = this.transformPointListData(data.pointlist)
},
@@ -875,7 +893,7 @@ export default {
if (point) {
const xAxis = point[0]
const spectrumLineSeries = findSeriesByName(this.option.series, 'Spectrum')
- spectrumLineSeries.markLine.data[0].xAxis = parseInt(xAxis.toFixed())
+ spectrumLineSeries.markLine.data[0].xAxis = xAxis
const { channel, energy, counts } = this.getEnergyAndCountsByXAxis(xAxis)
this.setChartBottomTitle(channel, energy, counts)
@@ -888,7 +906,7 @@ export default {
setChartBottomTitle(channel, energy, counts) {
const { index, find } = findNearPeak(channel, this.peakList)
- this.option.title.text = `{a|Channel:${channel}} {a|Energy:${energy || '0.00'}} {a|Counts:${
+ this.option.title.text = `{a|Channel:${channel}} {a|Energy:${energy.toFixed(2) || '0.00'}} {a|Counts:${
counts || '0.0'
}} {a|Significance:${find ? this.peakList[index].significance.toFixed(2) : '0.00'}}`
},
@@ -896,19 +914,19 @@ export default {
// 根据xAixs值找channel、energy和counts
getEnergyAndCountsByXAxis(xAxis) {
let channel, energy, counts
- if (this.isEnergy()) {
+ if (this.isEnergy) {
channel = this.getChannelByEnergy(xAxis)
- energy = xAxis.toFixed(2)
- counts = this.energyData.all.pointlist[channel - 1]
+ energy = xAxis
+ counts = this.energyData.all.pointlist[channel - 1].y
} else {
- channel = parseInt(xAxis.toFixed())
- energy = this.energyData.all.pointlist && this.energyData.all.pointlist[channel - 1].x.toFixed(2)
- counts = this.channelData.all.pointlist[channel - 1]
+ channel = Math.round(xAxis)
+ energy = this.getEnergyByChannel(channel)
+ counts = this.channelData.all.pointlist[channel - 1].y
}
return {
channel,
energy,
- counts: counts.y,
+ counts,
}
},
@@ -961,7 +979,7 @@ export default {
handleTogglePeak() {
const spectrumLineSeries = findSeriesByName(this.option.series, 'Spectrum')
const xAxis = spectrumLineSeries.markLine.data[0].xAxis
- const channel = this.isEnergy() ? this.getChannelByEnergy(xAxis) : parseInt(xAxis.toFixed())
+ const channel = this.isEnergy ? this.getChannelByEnergy(xAxis) : parseInt(xAxis.toFixed())
const index = this.channelData.peakGroup.findIndex((peakItem) => {
const allX = peakItem.pointlist.map((item) => item.x)
const max = Math.max(...allX)
@@ -1016,32 +1034,83 @@ export default {
const spectrumLineSeries = findSeriesByName(this.option.series, 'Spectrum')
const prevAxis = spectrumLineSeries.markLine.data[0].xAxis
- // 获取每一段 Channel 中的最大值
- const maxXAxises = this.channelData.peakGroup.map((item) => {
- const allY = item.pointlist.map((item) => item.y)
- const max = item.pointlist.find((point) => point.y == Math.max(...allY))
- return max.x
- })
+ const { channel: prevChannel } = this.getEnergyAndCountsByXAxis(prevAxis)
+
+ let i,
+ size = this.peakList.length
- let find = null
if (direction == 'right') {
- // 找到第一个比prevAxis大的xAxis
- find = maxXAxises.find((xAxis) => xAxis > prevAxis)
- if (find) {
- spectrumLineSeries.markLine.data[0].xAxis = find
+ for (i = 0; i < size; i++) {
+ const centroid = Math.round(this.peakList[i].peakCentroid)
+ if (centroid > prevChannel) {
+ const energy = this.getEnergyByChannel(centroid)
+ this.setMarkLineXAxis(this.isEnergy ? energy : centroid, i)
+ this.getSelPosNuclide(centroid)
+ const { counts } = this.getEnergyAndCountsByXAxis(this.isEnergy ? energy : centroid)
+ this.setChartBottomTitle(centroid, energy, counts)
+ return
+ }
}
} else if (direction == 'left') {
- // 找到第一个比prevAxis小的xAxis
- find = maxXAxises.reverse().find((xAxis) => xAxis < prevAxis)
- if (find) {
- spectrumLineSeries.markLine.data[0].xAxis = find
+ for (i = size - 1; i >= 0; i--) {
+ const centroid = Math.round(this.peakList[i].peakCentroid)
+ if (Math.round(centroid) < prevChannel) {
+ const energy = this.getEnergyByChannel(centroid)
+ this.setMarkLineXAxis(this.isEnergy ? energy : centroid, i)
+ this.getSelPosNuclide(centroid)
+ const { counts } = this.getEnergyAndCountsByXAxis(this.isEnergy ? energy : centroid)
+ this.setChartBottomTitle(centroid, energy, counts)
+ return
+ }
}
}
+ },
- if (find) {
- this.getSelPosNuclide(find)
- const { channel, energy, counts } = this.getEnergyAndCountsByXAxis(find)
- this.setChartBottomTitle(channel, energy, counts)
+ // 设置红色标记线的位置
+ setMarkLineXAxis(xAxis, index) {
+ const spectrumLineSeries = findSeriesByName(this.option.series, 'Spectrum')
+ const markLineOption = spectrumLineSeries.markLine.data[0]
+ markLineOption.xAxis = xAxis
+
+ const {
+ xAxis: { max: xAxisMax, min: xAxisMin },
+ yAxis: { max: yAxisMax, min: yAxisMin },
+ } = this.option
+
+ // 如果不在范围内
+ if (xAxis >= xAxisMax || xAxis <= xAxisMin) {
+ let nextMaxX = xAxisMax,
+ nextMinX = xAxisMin,
+ nextMaxY = yAxisMax,
+ nextMinY = yAxisMin
+
+ const halfDiff = (xAxisMax - xAxisMin) / 2
+
+ const dataSource = this.isEnergy ? this.energyData : this.channelData
+ const lastChannel = dataSource.spectrumLine.pointlist[dataSource.spectrumLine.pointlist.length - 1].x
+
+ const tmpNextMaxX = xAxis + halfDiff
+ const tmpNextMinX = xAxis - halfDiff
+
+ nextMaxX = tmpNextMaxX > lastChannel ? lastChannel : tmpNextMaxX
+ nextMinX = tmpNextMinX < this.xAxisMin ? this.xAxisMin : tmpNextMinX
+
+ const peak = this.channelData.peakGroup[index]
+ const peakCountMax = Math.max(...peak.pointlist.map(({ y }) => y))
+ const peakCountMin = Math.min(...peak.pointlist.map(({ y }) => y))
+
+ const chart = this.$refs.thumbnailChartRef.getChartInstance()
+ const yDataMax = getAxisMax(chart, 'yAxis')
+
+ if (yAxisMax !== 'dataMax' && peakCountMin >= yAxisMax) {
+ nextMaxY = yDataMax
+ }
+
+ if (peakCountMax <= yAxisMin) {
+ nextMinY = 1
+ }
+
+ this.setRectRange(nextMinX, nextMaxX, nextMinY, nextMaxY)
}
},
@@ -1118,13 +1187,7 @@ export default {
this.option.yAxis.min = y1
this.option.yAxis.max = y2
- if (this.isEnergy()) {
- const channel1 = this.getChannelByEnergy(x1)
- const channel2 = this.getChannelByEnergy(x2)
- this.setThumbnailChartRect(channel1, y2, channel2, y1)
- } else {
- this.setThumbnailChartRect(x1, y2, x2, y1)
- }
+ this.setThumbnailChartRect(x1, y2, x2, y1)
const thumbnailChart = this.getThumbnailChart()
const [, maxYPixel] = thumbnailChart.convertToPixel({ seriesIndex: 0 }, [0, y1]) // 方框的上下两条边的yAxis转为pix
@@ -1251,31 +1314,29 @@ export default {
const xAxisMax = getAxisMax(thumbnailChart, 'xAxis')
- const xAxisLimit = rangeNumber(1 + halfWidth, xAxisMax - halfWidth)
+ const xAxisLimit = rangeNumber(add(this.xAxisMin, halfWidth), subtract(xAxisMax, halfWidth))
const halfHeightPixel = this.halfHeightPixel
- const yAxisLimit = rangeNumber(maxYAxisPixel + halfHeightPixel, minYAxisPixel - halfHeightPixel)
+ const yAxisLimit = rangeNumber(add(maxYAxisPixel, halfHeightPixel), subtract(minYAxisPixel, halfHeightPixel))
xAxis = xAxisLimit(xAxis)
let { pixY: yAxisPixel } = this.convertToPixel(thumbnailChart, 0, yAxis)
yAxisPixel = yAxisLimit(yAxisPixel)
- const minYAxis = thumbnailChart.convertFromPixel({ seriesIndex: 0 }, [0, yAxisPixel + halfHeightPixel])[1] // 再把y轴最小值从pix转为yAxis
- const maxYAxis = thumbnailChart.convertFromPixel({ seriesIndex: 0 }, [0, yAxisPixel - halfHeightPixel])[1]
+ const minYAxis = thumbnailChart.convertFromPixel({ seriesIndex: 0 }, [0, add(yAxisPixel, halfHeightPixel)])[1] // 再把y轴最小值从pix转为yAxis
+ const maxYAxis = thumbnailChart.convertFromPixel({ seriesIndex: 0 }, [
+ 0,
+ subtract(yAxisPixel, halfHeightPixel),
+ ])[1]
- this.setThumbnailChartRect(xAxis - halfWidth, maxYAxis, xAxis + halfWidth, minYAxis)
+ const nextXAxisMin = subtract(xAxis, halfWidth)
+ const nextXAxisMax = add(xAxis, halfWidth)
- if (this.isEnergy()) {
- const x1 = parseInt(this.energyData.spectrumLine.pointlist[xAxis - halfWidth].x)
- const x2 = parseInt(this.energyData.spectrumLine.pointlist[xAxis + halfWidth].x)
+ this.setThumbnailChartRect(nextXAxisMin, maxYAxis, nextXAxisMax, minYAxis)
- this.option.xAxis.min = x1
- this.option.xAxis.max = x2
- } else {
- this.option.xAxis.min = xAxis - halfWidth
- this.option.xAxis.max = xAxis + halfWidth
- }
+ this.option.xAxis.min = nextXAxisMin
+ this.option.xAxis.max = nextXAxisMax
this.option.yAxis.min = minYAxis
this.option.yAxis.max = maxYAxis
@@ -1290,7 +1351,7 @@ export default {
* 重置图表
*/
handleResetChart() {
- this.option.xAxis.min = 1
+ this.option.xAxis.min = this.xAxisMin
this.option.xAxis.max = 'dataMax'
this.option.yAxis.min = 1
this.option.yAxis.max = 'dataMax'
@@ -1317,14 +1378,7 @@ export default {
// 分析工具Accept时刷新部分数据
handleAccept(data) {
- const {
- allData,
- peakSet,
- shadowChannelChart,
- shadowEnergyChart,
- shapeChannelData,
- shapeEnergyData,
- } = data
+ const { allData, peakSet, shadowChannelChart, shadowEnergyChart, shapeChannelData, shapeEnergyData } = data
const result = {
DetailedInformation: this.detailedInfomation,
@@ -1531,6 +1585,15 @@ export default {
return channel
},
+ /**
+ * 根据channel获取energy
+ * @param {number} channel
+ */
+ getEnergyByChannel(channel) {
+ const energyItem = this.energyData.all.pointlist ? this.energyData.all.pointlist[channel - 1] : {}
+ return energyItem ? energyItem.x : 0
+ },
+
/**
* 重置页面信息
*/
@@ -1621,10 +1684,6 @@ export default {
})
},
- isEnergy() {
- return this.graphAssistance.axisType == 'Energy'
- },
-
isScatter() {
return this.graphAssistance.spectrumType == 'Scatter'
},
@@ -1704,6 +1763,17 @@ export default {
immediate: true,
},
},
+ computed: {
+ // 是不是Energy
+ isEnergy() {
+ return this.graphAssistance.axisType == 'Energy'
+ },
+
+ // 获取x轴最小值
+ xAxisMin() {
+ return this.isEnergy ? 0.01 : 1
+ },
+ },
}
diff --git a/src/views/spectrumAnalysis/settings.js b/src/views/spectrumAnalysis/settings.js
index b9e3a5c..7f51687 100644
--- a/src/views/spectrumAnalysis/settings.js
+++ b/src/views/spectrumAnalysis/settings.js
@@ -63,16 +63,14 @@ export const GammaOptions = {
axisLabel: {
textStyle: {
color: '#ade6ee'
+ },
+ formatter: value => {
+ return parseInt(value)
}
},
min: 1,
max: 'dataMax',
- animation: false,
- axisLabel: {
- formatter: value => {
- return parseInt(value)
- }
- }
+ animation: false
},
yAxis: {
name: 'Counts',
@@ -96,16 +94,14 @@ export const GammaOptions = {
axisLabel: {
textStyle: {
color: '#ade6ee'
+ },
+ formatter: value => {
+ return value.toFixed(1)
}
},
min: 1,
max: 'dataMax',
- animation: false,
- axisLabel: {
- formatter: value => {
- return value.toFixed(1)
- }
- }
+ animation: false
},
series: [spectrumSeries, baseLineSeries, lcLineSeries, scacLineSeries, baseLineCtrlPoint, compareLineSeries],
brush: {}