diff --git a/src/utils/chartHelper.js b/src/utils/chartHelper.js
index e6cb5f0..ab1bc3e 100644
--- a/src/utils/chartHelper.js
+++ b/src/utils/chartHelper.js
@@ -99,6 +99,7 @@ export function findSeriesByName(series, seriesName) {
* 限定数字在一定范围
* @param {Number} min
* @param {Number} max
+ * @returns {(num: number) => number }
*/
export function rangeNumber(min, max) {
return num => {
diff --git a/src/views/spectrumAnalysis/gamma-analysis.vue b/src/views/spectrumAnalysis/gamma-analysis.vue
index 90d01f4..6e36352 100644
--- a/src/views/spectrumAnalysis/gamma-analysis.vue
+++ b/src/views/spectrumAnalysis/gamma-analysis.vue
@@ -119,154 +119,7 @@ import NuclideReviewModal from './components/Modals/AnalyzeInteractiveToolModal/
import CompareFileListModal from './components/Modals/CompareFileListModal.vue'
import ReProcessingModal from './components/Modals/ReProcessingModal/index.vue'
-// 初始配置
-const initialOption = {
- grid: {
- top: 40,
- left: 60,
- right: 50,
- containLabel: true,
- },
- title: {
- text: '',
- left: 'center',
- bottom: 10,
- textStyle: {
- color: '#8FD4F8',
- rich: {
- a: {
- padding: [0, 20, 0, 0],
- fontSize: 16,
- },
- },
- },
- },
- tooltip: {
- trigger: 'axis',
- axisPointer: {
- lineStyle: {
- color: '#3CAEBB',
- width: 1,
- type: 'solid',
- },
- },
- formatter: undefined,
- className: 'figure-chart-option-tooltip',
- },
- xAxis: {
- name: 'Channel',
- nameTextStyle: {
- color: '#8FD4F8',
- fontSize: 16,
- align: 'right',
- verticalAlign: 'top',
- padding: [30, 0, 0, 0],
- },
- axisLine: {
- lineStyle: {
- color: '#ade6ee',
- },
- },
- splitLine: {
- show: false,
- },
- axisLabel: {
- textStyle: {
- color: '#ade6ee',
- },
- },
- min: 1,
- max: 'dataMax',
- animation: false,
- axisLabel: {
- formatter: (value) => {
- return parseInt(value)
- },
- },
- },
- yAxis: {
- name: 'Counts',
- type: 'value',
- nameTextStyle: {
- color: '#8FD4F8',
- fontSize: 16,
- },
- axisLine: {
- show: true,
- lineStyle: {
- color: '#ade6ee',
- },
- },
- splitLine: {
- show: true,
- lineStyle: {
- color: 'rgba(173, 230, 238, .2)',
- },
- },
- axisLabel: {
- textStyle: {
- color: '#ade6ee',
- },
- },
- min: 1,
- max: 'dataMax',
- animation: false,
- axisLabel: {
- formatter: (value) => {
- return value.toFixed(1)
- },
- },
- },
- series: [],
- brush: {},
-}
-
-// 缩略图配置
-const thumbnailOption = {
- grid: {
- top: 0,
- left: 5,
- right: 5,
- bottom: 0,
- },
- xAxis: {
- type: 'category',
- axisLine: {
- show: false,
- },
- splitLine: {
- show: false,
- },
- axisLabel: {
- show: false,
- },
- min: 1,
- max: 'dataMax',
- },
- yAxis: {
- type: 'value',
- axisLine: {
- show: false,
- },
- splitLine: {
- show: false,
- },
- axisLabel: {
- show: false,
- },
- min: 1,
- max: 'dataMax',
- },
- series: [],
-}
-
-const graphAssistance = {
- axisType: 'Channel',
- spectrumType: 'Lines',
- Baseline: true,
- SCAC: true,
- Lc: true,
-}
+import { GammaOptions, graphAssistance } from './settings'
export default {
props: {
@@ -290,19 +143,35 @@ export default {
return {
isLoading: false,
isLoadingNuclide: false,
- option: cloneDeep(initialOption),
+ option: cloneDeep(GammaOptions.option),
opts: {
notMerge: false,
},
- thumbnailOption: cloneDeep(thumbnailOption),
+ thumbnailOption: cloneDeep(GammaOptions.thumbnailOption),
detailedInfomation: [],
qcFlags: [],
graphAssistance: cloneDeep(graphAssistance),
nuclideLibraryVisible: false,
- channelPeakGroup: [],
- energyPeakGroup: [],
+ channelData: {
+ peakGroup: [],
+ spectrumLine: null,
+ baseLine: null,
+ lcLine: null,
+ scacLine: null,
+ all: null,
+ baseLineCP: [],
+ },
+ energyData: {
+ peakGroup: [],
+ spectrumLine: null,
+ baseLine: null,
+ lcLine: null,
+ scacLine: null,
+ all: null,
+ baseLineCP: [],
+ },
nuclideLibraryList: [], // 当前鼠标点击选中的channel
peakInfomationTooltip: {
@@ -326,6 +195,8 @@ export default {
},
created() {
this.option.title.text = '{a|Channel:0} {a|Energy:0} {a|Counts:0} {a|Detectability:0}'
+ this.option.tooltip.formatter = this.tooltipFormatter
+
this.$bus.$on('colorChange', this.handleColorChange)
this.$bus.$on('gammaRefresh', this.handleRefresh)
this.$bus.$on('accept', this.handleAccept)
@@ -339,6 +210,7 @@ export default {
this.option.brush = { toolbox: [] }
},
methods: {
+ // 获取样品详情
async getSampleDetail() {
const { dbName, sampleId } = this.sample
try {
@@ -348,13 +220,7 @@ export default {
// const { success, result, message } = Response
- if (this._cancelToken && typeof this._cancelToken == 'function') {
- this._cancelToken()
- }
-
- const cancelToken = new axios.CancelToken((c) => {
- this._cancelToken = c
- })
+ const cancelToken = this.cancelLastRequest()
const { success, result, message } = await getAction(
'/gamma/gammaByDB',
@@ -381,9 +247,15 @@ export default {
this.isLoading = true
this.handleResetState()
// const { success, result, message } = Response
- const { success, result, message } = await getAction('/gamma/gammaByFile', {
- fileName,
- })
+ const cancelToken = this.cancelLastRequest()
+
+ const { success, result, message } = await getAction(
+ '/gamma/gammaByFile',
+ {
+ fileName,
+ },
+ cancelToken
+ )
console.log('%c [ result ]-243', 'font-size:13px; background:pink; color:#bf2c9f;', result)
if (success) {
this.dataProsess(result)
@@ -395,6 +267,16 @@ export default {
}
},
+ cancelLastRequest() {
+ if (this._cancelToken && typeof this._cancelToken == 'function') {
+ this._cancelToken()
+ }
+
+ return new axios.CancelToken((c) => {
+ this._cancelToken = c
+ })
+ },
+
dataProsess(result) {
this.isLoading = false
@@ -419,44 +301,40 @@ export default {
this.detailedInfomation = DetailedInformation
this.qcFlags = QCFlag
- const channelPeakGroup = allData.filter((item) => item.name == 'Peak' && item.group == 'channel')
- const energyPeakGroup = allData.filter((item) => item.name == 'Peak' && item.group == 'energy')
+ const channelPeakGroup = this.getLineData(allData, 'Peak', 'channel', true)
+ const energyPeakGroup = this.getLineData(allData, 'Peak', 'energy', true)
- const channelBaseLine = allData.find((item) => item.name == 'BaseLine' && item.group == 'channel') || {}
- const energyBaseLine = allData.find((item) => item.name == 'BaseLine' && item.group == 'energy')
+ const channelBaseLine = this.getLineData(allData, 'BaseLine', 'channel')
+ const energyBaseLine = this.getLineData(allData, 'BaseLine', 'energy')
- const channelLcLine = allData.find((item) => item.name == 'Lc' && item.group == 'channel') || {}
- const energyLcLine = allData.find((item) => item.name == 'Lc' && item.group == 'energy')
+ const channelLcLine = this.getLineData(allData, 'Lc', 'channel')
+ const energyLcLine = this.getLineData(allData, 'Lc', 'energy')
- const channelScacLine = allData.find((item) => item.name == 'Scac' && item.group == 'channel') || {}
- const energyScacLine = allData.find((item) => item.name == 'Scac' && item.group == 'energy')
+ const channelScacLine = this.getLineData(allData, 'Scac', 'channel')
+ const energyScacLine = this.getLineData(allData, 'Scac', 'energy')
- this.allEnergy = allData.find((item) => item.name == 'Energy' && item.group == 'energy') || {}
- this.allChannel = allData.find((item) => item.name == 'Count' && item.group == 'channel')
+ const allChannel = this.getLineData(allData, 'Count', 'channel')
+ const allEnergy = this.getLineData(allData, 'Energy', 'energy')
- // 保存Peak Line
- this.channelPeakGroup = channelPeakGroup
- this.energyPeakGroup = energyPeakGroup
+ this.channelData = {
+ peakGroup: channelPeakGroup,
+ spectrumLine: shadowChannelChart,
+ baseLine: channelBaseLine,
+ lcLine: channelLcLine,
+ scacLine: channelScacLine,
+ all: allChannel,
+ baseLineCP: shapeChannelData,
+ }
- // 保存 Spectrum Line
- this.shadowChannelChart = shadowChannelChart
- this.shadowEnergyChart = shadowEnergyChart
-
- // 保存基线
- this.channelBaseLine = channelBaseLine
- this.energyBaseLine = energyBaseLine
-
- // 保存Lc
- this.channelLcLine = channelLcLine
- this.energyLcLine = energyLcLine
-
- // 保存Scac
- this.channelScacLine = channelScacLine
- this.energyScacLine = energyScacLine
-
- // 保存 基线控制点
- this.shapeChannelData = shapeChannelData
- this.shapeEnergyData = shapeEnergyData
+ this.energyData = {
+ peakGroup: energyPeakGroup,
+ spectrumLine: shadowEnergyChart,
+ baseLine: energyBaseLine,
+ lcLine: energyLcLine,
+ scacLine: energyScacLine,
+ all: allEnergy,
+ baseLineCP: shapeEnergyData,
+ }
this.resetThumbnailChartDataMax()
const series = []
@@ -465,7 +343,7 @@ export default {
series.push(
buildLineSeries(
'Spectrum',
- shadowChannelChart.pointlist && shadowChannelChart.pointlist.map(({ x, y }) => [x, y]),
+ this.transformPointListData(shadowChannelChart.pointlist),
shadowChannelChart.color,
{
symbolSize: 2,
@@ -485,65 +363,33 @@ export default {
)
)
- // 右上角缩略图推入Spectrum Line
- this.thumbnailOption.series.push(
- buildLineSeries(
- 'Spectrum',
- shadowChannelChart.pointlist && shadowChannelChart.pointlist.map(({ x, y }) => [x, y]),
- shadowChannelChart.color,
- {
- silent: true,
- markLine: {
- silent: true,
- symbol: 'none',
- label: {
- show: false,
- },
- lineStyle: {
- type: 'solid',
- color: '#1397a3',
- width: 1,
- },
- data: [],
- },
- }
- )
+ // 右上角缩略图设置Spectrum Line 数据
+ this.setSeriesData(
+ this.thumbnailOption.series,
+ 'Spectrum',
+ this.transformPointListData(shadowChannelChart.pointlist),
+ shadowChannelChart.color
)
// 推入BaseLine
series.push(
- buildLineSeries(
- 'BaseLine',
- channelBaseLine.pointlist && channelBaseLine.pointlist.map(({ x, y }) => [x, y]),
- channelBaseLine.color,
- {
- zlevel: 2,
- }
- )
+ buildLineSeries('BaseLine', this.transformPointListData(channelBaseLine.pointlist), channelBaseLine.color, {
+ zlevel: 2,
+ })
)
// 推入LcLine线
series.push(
- buildLineSeries(
- 'LcLine',
- channelLcLine.pointlist && channelLcLine.pointlist.map(({ x, y }) => [x, y]),
- channelLcLine.color,
- {
- zlevel: 3,
- }
- )
+ buildLineSeries('LcLine', this.transformPointListData(channelLcLine.pointlist), channelLcLine.color, {
+ zlevel: 3,
+ })
)
// 推入Scac线
series.push(
- buildLineSeries(
- 'ScacLine',
- channelScacLine.pointlist && channelScacLine.pointlist.map(({ x, y }) => [x, y]),
- channelScacLine.color,
- {
- zlevel: 4,
- }
- )
+ buildLineSeries('ScacLine', this.transformPointListData(channelScacLine.pointlist), channelScacLine.color, {
+ zlevel: 4,
+ })
)
// 推入基线控制点
@@ -571,14 +417,9 @@ export default {
const peakLines = []
channelPeakGroup.forEach((item, index) => {
peakLines.push(
- buildLineSeries(
- `Peak_${index}`,
- item.pointlist.map(({ x, y }) => [x, y]),
- item.color,
- {
- zlevel: 6,
- }
- )
+ buildLineSeries(`Peak_${index}`, this.transformPointListData(item.pointlist), item.color, {
+ zlevel: 6,
+ })
)
})
series.push(...peakLines)
@@ -591,25 +432,26 @@ export default {
)
this.option.series = series
-
- this.option.tooltip.formatter = this.tooltipFormatter
},
+ // chart 的 tooltip
tooltipFormatter(params) {
- if (this.isEnergy()) {
- const energy = params[0].value[0]
- const channel = this.getChannelByEnergy(energy)
+ let channel = 0
+ let energy = 0
+ const value = params[0].value[0]
- return `
Channel: ${channel}
- Energy: ${energy.toFixed(2)}
`
+ if (this.isEnergy()) {
+ energy = value.toFixed(2)
+ channel = this.getChannelByEnergy(energy)
} else {
- const channel = parseInt(params[0].value[0].toFixed())
- const energy = this.allEnergy.pointlist && this.allEnergy.pointlist[channel - 1]
- return energy
- ? `Channel: ${channel}
- Energy: ${energy.x.toFixed(2)}
`
- : undefined
+ const allPointList = this.energyData.all.pointlist
+ channel = parseInt(value.toFixed())
+ energy = allPointList && allPointList[channel - 1]
+ energy = energy ? energy.x.toFixed(2) : undefined
}
+
+ return `Channel: ${channel}
+ Energy: ${energy}
`
},
// Graph Assistance 操作
@@ -640,19 +482,24 @@ export default {
this.redrawLineBySeriesName(
'BaseLine',
- this.energyBaseLine,
- this.channelBaseLine,
+ this.energyData.baseLine,
+ this.channelData.baseLine,
this.graphAssistance.Baseline
)
- this.redrawLineBySeriesName('LcLine', this.energyLcLine, this.channelLcLine, this.graphAssistance.Lc)
+ this.redrawLineBySeriesName(
+ 'LcLine',
+ this.energyData.lcLine,
+ this.channelData.lcLine,
+ this.graphAssistance.Lc
+ )
this.redrawLineBySeriesName(
'ScacLine',
- this.energyScacLine,
- this.channelScacLine,
+ this.energyData.scacLine,
+ this.channelData.scacLine,
this.graphAssistance.SCAC
)
- this.redrawLineBySeriesName('Spectrum', this.shadowEnergyChart, this.shadowChannelChart)
+ this.redrawLineBySeriesName('Spectrum', this.energyData.spectrumLine, this.channelData.spectrumLine)
this.redrawCtrlPointBySeriesName()
this.redrawPeakLine()
@@ -674,7 +521,7 @@ export default {
compareLineSeries.type = 'line'
compareLineSeries.symbol = 'none'
- this.redrawLineBySeriesName('Spectrum', this.shadowEnergyChart, this.shadowChannelChart)
+ this.redrawLineBySeriesName('Spectrum', this.energyData.spectrumLine, this.channelData.spectrumLine)
if (this.channelCompareLine) {
this.redrawLineBySeriesName('Compare', this.energyCompareLine, this.channelCompareLine)
@@ -712,13 +559,13 @@ export default {
}
break
case 'Baseline':
- this.redrawLineBySeriesName('BaseLine', this.energyBaseLine, this.channelBaseLine, value)
+ this.redrawLineBySeriesName('BaseLine', this.energyData.baseLine, this.channelData.baseLine, value)
break
case 'Lc':
- this.redrawLineBySeriesName('LcLine', this.energyLcLine, this.channelLcLine, value)
+ this.redrawLineBySeriesName('LcLine', this.energyData.lcLine, this.channelData.lcLine, value)
break
case 'SCAC':
- this.redrawLineBySeriesName('ScacLine', this.energyScacLine, this.channelScacLine, value)
+ this.redrawLineBySeriesName('ScacLine', this.energyData.scacLine, this.channelData.scacLine, value)
break
}
}
@@ -730,22 +577,18 @@ export default {
// 根据seriesName重绘线
redrawLineBySeriesName(seriesName, energyData, channelData, isShow = true, color) {
- const series = findSeriesByName(this.option.series, seriesName)
if (isShow) {
const data = this.isEnergy() ? energyData : channelData
- series.data = data.pointlist.map(({ x, y }) => [x, y])
+ this.setSeriesData(this.option.series, seriesName, this.transformPointListData(data.pointlist), color)
} else {
- series.data = []
- }
- if (color) {
- series.itemStyle.color = color
+ this.setSeriesData(this.option.series, seriesName, [])
}
},
// 重绘控制点
redrawCtrlPointBySeriesName() {
const series = findSeriesByName(this.option.series, 'BaseLine_Ctrl_Point')
- const data = this.isEnergy() ? this.shapeEnergyData : this.shapeChannelData
+ const data = this.isEnergy() ? this.energyData.baseLineCP : this.channelData.baseLineCP
series.data = data.map(({ size, color, point: { x, y } }) => {
return {
value: [x, y],
@@ -764,18 +607,13 @@ export default {
return !item.name.includes('Peak_')
})
- const data = this.isEnergy() ? this.energyPeakGroup : this.channelPeakGroup
+ const data = this.isEnergy() ? this.energyData.peakGroup : this.channelData.peakGroup
const peakLines = []
data.forEach((item, index) => {
peakLines.push(
- buildLineSeries(
- `Peak_${index}`,
- item.pointlist.map(({ x, y }) => [x, y]),
- item.color,
- {
- zlevel: 6,
- }
- )
+ buildLineSeries(`Peak_${index}`, this.transformPointListData(item.pointlist), item.color, {
+ zlevel: 6,
+ })
)
})
@@ -785,8 +623,8 @@ export default {
// 重绘右上角的缩略图
redrawThumbnailChart() {
const series = findSeriesByName(this.thumbnailOption.series, 'Spectrum')
- const data = this.isEnergy() ? this.shadowEnergyChart : this.shadowChannelChart
- series.data = data.pointlist.map(({ x, y }) => [x, y])
+ const data = this.isEnergy() ? this.energyData.spectrumLine : this.channelData.spectrumLine
+ series.data = this.transformPointListData(data.pointlist)
},
// 点击图表,设置红线
@@ -801,8 +639,10 @@ export default {
const channel = this.isEnergy() ? this.getChannelByEnergy(xAxis) : parseInt(xAxis.toFixed())
const energy = this.isEnergy()
? xAxis.toFixed(2)
- : this.allEnergy.pointlist && this.allEnergy.pointlist[channel - 1].x.toFixed(2)
- const counts = this.isEnergy() ? this.allEnergy.pointlist[channel - 1] : this.allChannel.pointlist[channel - 1]
+ : this.energyData.all.pointlist && this.energyData.all.pointlist[channel - 1].x.toFixed(2)
+ const counts = this.isEnergy()
+ ? this.energyData.all.pointlist[channel - 1]
+ : this.channelData.all.pointlist[channel - 1]
this.option.title.text = `{a|Channel:${channel}} {a|Energy:${energy}} {a|Counts:${counts.y}} {a|Detectability:0}`
this.getSelPosNuclide(channel)
@@ -864,7 +704,7 @@ export default {
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 index = this.channelPeakGroup.findIndex((peakItem) => {
+ const index = this.channelData.peakGroup.findIndex((peakItem) => {
const allX = peakItem.pointlist.map((item) => item.x)
const max = Math.max(...allX)
const min = Math.min(...allX)
@@ -887,7 +727,7 @@ export default {
})
if (success) {
const html = result.replaceAll('\n', '
')
- const currPeak = this.channelPeakGroup[index]
+ const currPeak = this.channelData.peakGroup[index]
const { x, y } = currPeak.pointlist.reduce((prev, curr) => {
return prev && prev.y > curr.y ? prev : curr
})
@@ -919,7 +759,7 @@ export default {
const prevAxis = spectrumLineSeries.markLine.data[0].xAxis
// 获取每一段 Channel 中的最大值
- const maxXAxises = this.channelPeakGroup.map((item) => {
+ 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
@@ -978,7 +818,6 @@ export default {
// 改为不可刷选状态
chart.dispatchAction({
type: 'takeGlobalCursor',
- brushOption: false
})
},
@@ -1058,16 +897,16 @@ export default {
const y2 = getAxisMax(chart, 'yAxis')
const channelSpectrumData = {
- ...this.shadowChannelChart,
+ ...this.channelData.spectrumLine,
pointlist: isReset
- ? this.pointlistLimitY(this.shadowChannelChart.pointlist)
- : this.pointlistLimit(this.shadowChannelChart.pointlist, x1, x2, y1, y2),
+ ? this.pointlistLimitY(this.channelData.spectrumLine.pointlist)
+ : this.pointlistLimit(this.channelData.spectrumLine.pointlist, x1, x2, y1, y2),
}
const energySpectrumData = {
- ...this.shadowEnergyChart,
+ ...this.energyData.spectrumLine,
pointlist: isReset
- ? this.pointlistLimitY(this.shadowEnergyChart.pointlist)
- : this.pointlistLimit(this.shadowEnergyChart.pointlist, x1, x2, y1, y2),
+ ? this.pointlistLimitY(this.energyData.spectrumLine.pointlist)
+ : this.pointlistLimit(this.energyData.spectrumLine.pointlist, x1, x2, y1, y2),
}
this.redrawLineBySeriesName('Spectrum', energySpectrumData, channelSpectrumData)
@@ -1171,8 +1010,8 @@ export default {
this.setThumbnailChartRect(xAxis - halfWidth, maxYAxis, xAxis + halfWidth, minYAxis)
if (this.isEnergy()) {
- const x1 = parseInt(this.shadowEnergyChart.pointlist[xAxis - halfWidth].x)
- const x2 = parseInt(this.shadowEnergyChart.pointlist[xAxis + halfWidth].x)
+ const x1 = parseInt(this.energyData.spectrumLine.pointlist[xAxis - halfWidth].x)
+ const x2 = parseInt(this.energyData.spectrumLine.pointlist[xAxis + halfWidth].x)
this.option.xAxis.min = x1
this.option.xAxis.max = x2
@@ -1190,7 +1029,9 @@ export default {
}
},
- // 重置
+ /**
+ * 重置图表
+ */
handleResetChart() {
this.option.xAxis.min = 1
this.option.xAxis.max = 'dataMax'
@@ -1291,12 +1132,16 @@ export default {
// this.reprocessingModalVisible = true
},
- // 重置缩略图表y轴最大值
+ /**
+ * 重置缩略图表y轴最大值
+ */
resetThumbnailChartDataMax() {
this.thumbnailOption.yAxis.max = 'dataMax'
},
- // 重置图表配置
+ /**
+ * 重置图表配置
+ */
resetChartOpts() {
this.opts.notMerge = false
this.option.brush = { toolbox: [] }
@@ -1318,12 +1163,17 @@ export default {
]
},
+ /**
+ * 根据energy获取channel
+ * @param {number} energy
+ */
getChannelByEnergy(energy) {
let channel = 0
- for (let index = 1; index < this.allEnergy.pointlist.length; index++) {
- const currEnergy = this.allEnergy.pointlist[index].x
+ const pointlist = this.energyData.all.pointlist
+ for (let index = 1; index < pointlist.length; index++) {
+ const currEnergy = pointlist[index].x
if (currEnergy >= energy) {
- const prevEnergy = this.allEnergy.pointlist[index - 1].x
+ const prevEnergy = pointlist[index - 1].x
if (currEnergy - energy > energy - prevEnergy.x) {
channel = index
} else {
@@ -1335,13 +1185,16 @@ export default {
return channel
},
- // 重置页面信息
+ /**
+ * 重置页面信息
+ */
handleResetState() {
+ this.handleResetChart()
+
this.selectedChannel = -1
this.nuclideLibraryList = []
this.closePeakInfomationTooltip()
this.option.series = []
- this.thumbnailOption.series = []
this.option.xAxis.name = 'Channel'
this.option.yAxis.type = 'value'
@@ -1352,14 +1205,17 @@ export default {
spectrumLineSeries.markLine.lineStyle.width = 2
}
- if (this.thumbnailOption.series.length) {
- const thumbnailSpectrumLineSeries = findSeriesByName(this.thumbnailOption.series, 'Spectrum')
- thumbnailSpectrumLineSeries.type = 'line'
- thumbnailSpectrumLineSeries.symbol = 'none'
- }
+ const thumbnailSpectrumLineSeries = findSeriesByName(this.thumbnailOption.series, 'Spectrum')
+ thumbnailSpectrumLineSeries.type = 'line'
+ thumbnailSpectrumLineSeries.symbol = 'none'
+
this.graphAssistance = cloneDeep(graphAssistance)
},
+ /**
+ * 颜色改变
+ * @param {*} colorConfig
+ */
handleColorChange(colorConfig) {
// 如果还没加载完,加载新的
if (this.isLoading) {
@@ -1376,22 +1232,22 @@ export default {
const { Color_Spec, Color_Peak, Color_Lc, Color_Base, Color_Scac, Color_Compare, Color_Strip, Color_Fitbase } =
colorConfig
- this.shadowChannelChart.color = Color_Spec
- this.shadowEnergyChart.color = Color_Spec
+ this.channelData.spectrumLine.color = Color_Spec
+ this.energyData.spectrumLine.color = Color_Spec
- for (let i = 0; i < this.channelPeakGroup.length; i++) {
- this.channelPeakGroup[i].color = Color_Peak
- this.energyPeakGroup[i].color = Color_Peak
+ for (let i = 0; i < this.channelData.peakGroup.length; i++) {
+ this.channelData.peakGroup[i].color = Color_Peak
+ this.energyData.peakGroup[i].color = Color_Peak
}
- this.channelLcLine.color = Color_Lc
- this.energyLcLine.color = Color_Lc
+ this.channelData.lcLine.color = Color_Lc
+ this.energyData.lcLine.color = Color_Lc
- this.channelBaseLine.color = Color_Base
- this.energyBaseLine.color = Color_Base
+ this.channelData.baseLine.color = Color_Base
+ this.energyData.baseLine.color = Color_Base
- this.channelScacLine.color = Color_Scac
- this.energyScacLine.color = Color_Scac
+ this.channelData.scacLine.color = Color_Scac
+ this.energyData.scacLine.color = Color_Scac
if (this.channelCompareLine) {
this.channelCompareLine.color = Color_Compare
@@ -1409,7 +1265,11 @@ export default {
thumbnailChartSeries.itemStyle.color = Color_Spec
},
- // 根据series名修改颜色
+ /**
+ * 根据series名修改颜色
+ * @param {*} seriesName
+ * @param {*} color
+ */
changeColorBySeriesName(seriesName, color) {
const series = findSeriesByName(this.option.series, seriesName)
series.itemStyle.color = color
@@ -1439,6 +1299,38 @@ export default {
getThumbnailChart() {
return this.$refs.thumbnailChartRef.getChartInstance()
},
+
+ /**
+ * 设置图表数据和颜色
+ */
+ setSeriesData(series, seriesName, data, color) {
+ const find = findSeriesByName(series, seriesName)
+ find.data = data
+ if (color) {
+ find.itemStyle.color = color
+ }
+ },
+
+ /**
+ * 转换pointlist类型数据到series的data可用的数据
+ */
+ transformPointListData(pointlist) {
+ if (!pointlist) {
+ return []
+ }
+ return pointlist.map(({ x, y }) => [x, y])
+ },
+
+ /**
+ * 在返回的allData中查找指定的数据
+ * @param {Array} allData
+ * @param {*} name
+ * @param {*} group
+ */
+ getLineData(allData, name, group, isList = false) {
+ const arrFunc = isList ? Array.prototype.filter : Array.prototype.find
+ return arrFunc.call(allData, (item) => item.name == name && item.group == group) || {}
+ },
},
watch: {
sample: {
diff --git a/src/views/spectrumAnalysis/index.vue b/src/views/spectrumAnalysis/index.vue
index ea7de82..a3ed212 100644
--- a/src/views/spectrumAnalysis/index.vue
+++ b/src/views/spectrumAnalysis/index.vue
@@ -432,7 +432,7 @@ export default {
})
arr.forEach((item) => {
item.dbName = ''
- item.sampleId = ''
+ item.sampleId = null
item.inputFileName = item.sampleFileName
item.sampleType = item.sampleSystemType
})
diff --git a/src/views/spectrumAnalysis/settings.js b/src/views/spectrumAnalysis/settings.js
new file mode 100644
index 0000000..3a89271
--- /dev/null
+++ b/src/views/spectrumAnalysis/settings.js
@@ -0,0 +1,167 @@
+import { buildLineSeries } from "@/utils/chartHelper"
+
+export const GammaOptions = {
+ option: {
+ grid: {
+ top: 40,
+ left: 60,
+ right: 50,
+ containLabel: true
+ },
+ title: {
+ text: '',
+ left: 'center',
+ bottom: 10,
+ textStyle: {
+ color: '#8FD4F8',
+ rich: {
+ a: {
+ padding: [0, 20, 0, 0],
+ fontSize: 16
+ }
+ }
+ }
+ },
+ tooltip: {
+ trigger: 'axis',
+ axisPointer: {
+ lineStyle: {
+ color: '#3CAEBB',
+ width: 1,
+ type: 'solid'
+ }
+ },
+ formatter: undefined,
+ className: 'figure-chart-option-tooltip'
+ },
+ xAxis: {
+ name: 'Channel',
+ nameTextStyle: {
+ color: '#8FD4F8',
+ fontSize: 16,
+ align: 'right',
+ verticalAlign: 'top',
+ padding: [30, 0, 0, 0]
+ },
+ axisLine: {
+ lineStyle: {
+ color: '#ade6ee'
+ }
+ },
+ splitLine: {
+ show: false
+ },
+ axisLabel: {
+ textStyle: {
+ color: '#ade6ee'
+ }
+ },
+ min: 1,
+ max: 'dataMax',
+ animation: false,
+ axisLabel: {
+ formatter: value => {
+ return parseInt(value)
+ }
+ }
+ },
+ yAxis: {
+ name: 'Counts',
+ type: 'value',
+ nameTextStyle: {
+ color: '#8FD4F8',
+ fontSize: 16
+ },
+ axisLine: {
+ show: true,
+ lineStyle: {
+ color: '#ade6ee'
+ }
+ },
+ splitLine: {
+ show: true,
+ lineStyle: {
+ color: 'rgba(173, 230, 238, .2)'
+ }
+ },
+ axisLabel: {
+ textStyle: {
+ color: '#ade6ee'
+ }
+ },
+ min: 1,
+ max: 'dataMax',
+ animation: false,
+ axisLabel: {
+ formatter: value => {
+ return value.toFixed(1)
+ }
+ }
+ },
+ series: [],
+ brush: {}
+ },
+ // 缩略图配置
+ thumbnailOption: {
+ grid: {
+ top: 0,
+ left: 5,
+ right: 5,
+ bottom: 0
+ },
+ xAxis: {
+ type: 'category',
+ axisLine: {
+ show: false
+ },
+ splitLine: {
+ show: false
+ },
+ axisLabel: {
+ show: false
+ },
+ min: 1,
+ max: 'dataMax'
+ },
+ yAxis: {
+ type: 'value',
+ axisLine: {
+ show: false
+ },
+ splitLine: {
+ show: false
+ },
+ axisLabel: {
+ show: false
+ },
+ min: 1,
+ max: 'dataMax'
+ },
+ series: [
+ buildLineSeries('Spectrum', [], '#fff', {
+ silent: true,
+ markLine: {
+ silent: true,
+ symbol: 'none',
+ label: {
+ show: false
+ },
+ lineStyle: {
+ type: 'solid',
+ color: '#1397a3',
+ width: 1
+ },
+ data: []
+ }
+ })
+ ]
+ }
+}
+
+export const graphAssistance = {
+ axisType: 'Channel',
+ spectrumType: 'Lines',
+ Baseline: true,
+ SCAC: true,
+ Lc: true,
+}
\ No newline at end of file