AnalysisSystemForRadionucli.../src/views/statistics/detail.vue

1019 lines
32 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<template>
<a-card :bordered="false" style="margin-left: 20px;height: 100%;">
<div class="detail-top">
<div class="top-back" @click="handleback">
<img class="icon-back" src="../../assets/images/web-statistics/return.png" alt="">
<span style="margin-left: 10px;">return</span>
</div>
<div class="top-actions">
<div class="right-btn" @click="downloadFile(zipSrc)">
<!-- <a :href="zipSrc" :download="type"> -->
<img class="icon-download" src="../../assets/images/web-statistics/download.png" alt="">
<span style="margin-left: 10px;">
ZIP
</span>
<!-- </a> -->
</div>
<div class="right-btn" @click="downloadFile(fileSrc)">
<!-- <a :href="fileSrc" :download="type"> -->
<img class="icon-download" src="../../assets/images/web-statistics/download.png" alt="">
<span style="margin-left: 10px;">
TXT
</span>
<!-- </a> -->
</div>
<div class="right-btn" @click="viewFile">
<!-- <a :href="fileSrc" target="_blank"> -->
<img class="icon-view" src="../../assets/images/web-statistics/view.png" alt="">
<span style="margin-left: 10px;">
View Report
</span>
<!-- </a> -->
</div>
</div>
</div>
<a-tabs default-active-key="info" @change="handleTabChange">
<a-tab-pane key="info" tab="INFO" v-if="allData.headerBlock===null?false:true">
<template>
<div class="pane-title">GENERAL INFORMATION</div>
<a-row>
<a-col :span="12" class="info-key">Site Code:</a-col>
<a-col :span="12" class="info-val">{{ allData.headerBlock.siteCode }}</a-col>
</a-row>
<a-row>
<a-col :span="12" class="info-key">Detector Code:</a-col>
<a-col :span="12" class="info-val">{{ allData.headerBlock.detectorCode }}</a-col>
</a-row>
<a-row>
<a-col :span="12" class="info-key">System Type:</a-col>
<a-col :span="12" class="info-val">{{ allData.headerBlock.systemType }}</a-col>
</a-row>
<a-row>
<a-col :span="12" class="info-key">Sample Geometry:</a-col>
<a-col :span="12" class="info-val">{{ allData.headerBlock.sampleGeometry }}</a-col>
</a-row>
<a-row>
<a-col :span="12" class="info-key">Spectrum Qualifier:</a-col>
<a-col :span="12" class="info-val">{{ allData.headerBlock.spectrumQualifier }}</a-col>
</a-row>
<a-row>
<a-col :span="12" class="info-key">Sample Reference Identification:</a-col>
<a-col :span="12" class="info-val">{{ allData.headerBlock.sampleReferenceIdentification }}</a-col>
</a-row>
<a-row>
<a-col :span="12" class="info-key">Measurement Identification:</a-col>
<a-col :span="12" class="info-val">{{ allData.headerBlock.measurementIdentification }}</a-col>
</a-row>
<a-row>
<a-col :span="12" class="info-key">Detector Background Measurement Identification:</a-col>
<a-col :span="12" class="info-val">{{ allData.headerBlock.detectorBackgroundMeasurementId }}</a-col>
</a-row>
<a-row>
<a-col :span="12" class="info-key">Gas Background Measurement Identification:</a-col>
<a-col :span="12" class="info-val">{{ allData.headerBlock.gasBackgroundMeasurementId }}</a-col>
</a-row>
<a-row>
<a-col :span="12" class="info-key">Transmit Time:</a-col>
<a-col :span="12" class="info-val">{{ allData.headerBlock.transmitDate }}</a-col>
</a-row>
</template>
<template v-if="allData.commentBlock && allData.commentBlock.text">
<div class="pane-title">COMMENT</div>
<a-row style="height: auto;">
<a-col class="comment-block" :span="24" v-html="commentText"></a-col>
</a-row>
</template>
<template v-if="allData.acquisitionBlock">
<div class="pane-title">ACQUISITION</div>
<a-row>
<a-col :span="12" class="info-key">Acquisition Time:</a-col>
<a-col :span="12" class="info-val">{{ allData.acquisitionBlock.acquisitionStartDate }}</a-col>
</a-row>
<a-row>
<a-col :span="12" class="info-key">Acquisition Real Time:</a-col>
<a-col :span="12" class="info-val">{{ allData.acquisitionBlock.acquisitionRealTime }}</a-col>
</a-row>
<a-row>
<a-col :span="12" class="info-key">Acquisition Live Time:</a-col>
<a-col :span="12" class="info-val">{{ allData.acquisitionBlock.acquisitionLiveTime }}</a-col>
</a-row>
</template>
<template v-if="allData.calibrationBlock">
<div class="pane-title">CALIBRATION</div>
<a-row>
<a-col :span="12" class="info-key">Date of Last Calibration</a-col>
<a-col :span="12" class="info-val">{{ allData.calibrationBlock.dateOfLastCalibration }}</a-col>
</a-row>
</template>
</a-tab-pane>
<a-tab-pane key="energy" tab="ENERGY" v-if="allData.genergyBlock===null?false:true" forceRender>
<div class="pane-title" style="margin-bottom: 15px;">G ENERGY</div>
<custom-table
size="middle"
:rowKey="getUid()"
:columns="columnsEnergy_G"
:list="dataSourceEnergy_G"
:pagination="false"
:canSelect="false"
>
</custom-table>
<template v-if="allData.benergyBlock===null?false:true">
<div class="pane-title" style="margin: 15px 0;">B ENERGY</div>
<custom-table
size="middle"
:rowKey="getUid()"
:columns="columnsEnergy_B"
:list="dataSourceEnergy_B"
:pagination="false"
:canSelect="false"
>
</custom-table>
</template>
</a-tab-pane>
<a-tab-pane key="resulution" tab="RESOLUTION" v-if="allData.gresolutionBlock===null?false:true" forceRender>
<div class="pane-title" style="margin-bottom: 15px;">G RESOLUTION</div>
<custom-table
size="middle"
:rowKey="getUid()"
:columns="columnsResulution_G"
:list="dataSourceResulution_G"
:pagination="false"
:canSelect="false"
>
</custom-table>
<template v-if="allData.bresolutionBlock===null?false:true">
<div class="pane-title" style="margin: 15px 0;">B RESOLUTION</div>
<custom-table
size="middle"
:rowKey="getUid()"
:columns="columnsResulution_B"
:list="dataSourceResulution_B"
:pagination="false"
:canSelect="false"
>
</custom-table>
</template>
</a-tab-pane>
<a-tab-pane key="efficiency" tab="EFFICIENCY" v-if="allData.gefficiencyBlock===null?false:true" forceRender>
<div class="pane-title" style="margin-bottom: 15px;">GAMMA EFFICIENCY</div>
<custom-table
size="middle"
:rowKey="getUid()"
:columns="columnsEfficiency_G"
:list="dataSourceEfficiency_G"
:pagination="false"
:canSelect="false"
>
</custom-table>
<template v-if="allData.bgEfficiencyBlock===null?false:true">
<div class="pane-title" style="margin: 15px 0;">BETA-GAMMA EFFICIENCY</div>
<custom-table
size="middle"
:rowKey="getUid()"
:columns="columnsEfficiency_BG"
:list="dataSourceEfficiency_BG"
:pagination="false"
:canSelect="false"
>
</custom-table>
</template>
</a-tab-pane>
<a-tab-pane key="roi" tab="ROI" v-if="allData.roiLimitsBlock===null?false:true" forceRender>
<div class="pane-title" style="margin-bottom: 15px;">ROI LIMITS</div>
<custom-table
size="middle"
:rowKey="getUid()"
:columns="columnsRoiLimits"
:list="dataSourceRoiLimits"
:pagination="false"
:canSelect="false"
>
</custom-table>
</a-tab-pane>
<a-tab-pane key="ratios" tab="RATIOS" v-if="allData.ratiosBlock===null?false:true" forceRender>
<div class="pane-title" style="margin-bottom: 15px;">RATIOS</div>
<custom-table
size="middle"
:rowKey="getUid()"
:columns="columnsRatios"
:list="dataSourceRatios"
:pagination="false"
:canSelect="false"
>
</custom-table>
</a-tab-pane>
<a-tab-pane key="gamma-spectrum" tab="GAMMA SPECTRUM" v-if="allData.gspectrumBlock===null?false:true">
<div class="pane-title" style="margin-bottom: 15px;">GAMMA SPECTRUM</div>
<div class="gamma-spectrum-row">
<div>
<span class="span-key">Number of Channels</span><span class="row-val">{{ allData.gspectrumBlock.numberGChannels }}</span>
<span class="span-key" style="margin-left: 35px;">Energy Span</span><span class="row-val">{{ allData.gspectrumBlock.energySpan }}</span>
</div>
<div>
<a-checkbox style="margin-right: 15px;" @change="e=>yLogChange(e,'G')">Y log scale</a-checkbox>
<a-button class="row-btn" @click="resetZoom('G')">Reset Zoom</a-button>
</div>
</div>
<div class="gamma-spectrum-chart" id="spectrumChartRef_G"></div>
</a-tab-pane>
<a-tab-pane key="beta-spectrum" tab="BETA SPECTRUM" v-if="allData.bspectrumBlock===null?false:true">
<div class="pane-title" style="margin-bottom: 15px;">BETA SPECTRUM</div>
<div class="gamma-spectrum-row">
<div>
<span class="span-key">Number of Channels</span><span class="row-val">{{ allData.bspectrumBlock.numberBChannels }}</span>
<span class="span-key" style="margin-left: 35px;">Energy Span</span><span class="row-val">{{ allData.bspectrumBlock.energySpan }}</span>
</div>
<div>
<a-checkbox style="margin-right: 15px;" @change="e=>yLogChange(e,'B')">Y log scale</a-checkbox>
<a-button class="row-btn" @click="resetZoom('B')">Reset Zoom</a-button>
</div>
</div>
<div class="gamma-spectrum-chart" id="spectrumChartRef_B"></div>
</a-tab-pane>
<a-tab-pane key="histogram" tab="HISTOGRAM" v-if="allData.bspectrumBlock===null?false:true">
<div class="pane-title" style="margin-bottom: 15px;">HISTOGRAM</div>
<div class="gamma-spectrum-row">
<div>
<span class="span-key">Number of B Channels</span><span class="row-val">{{ allData.histogramBlock.bchannels }}</span>
<span class="span-key" style="margin-left: 35px;">B Energy Span</span><span class="row-val">{{ allData.histogramBlock.benergySpan }}</span>
<span class="span-key" style="margin-left: 35px;">Number of G Channels</span><span class="row-val">{{ allData.histogramBlock.gchannels }}</span>
<span class="span-key" style="margin-left: 35px;">G Energy Span</span><span class="row-val">{{ allData.histogramBlock.genergySpan }}</span>
</div>
</div>
<div class="gamma-spectrum-chart" id="histogramChartRef"></div>
</a-tab-pane>
<a-tab-pane key="certificate" tab="CERTIFICATE" v-if="allData.certificateBlock===null?false:true" forceRender>
<div class="pane-title" style="margin-bottom: 15px;">CERTIFICATE</div>
<div class="certificate-row">
<span class="span-key">Total Source Activity [ Bq ]</span><span class="row-val">{{ allData.certificateBlock.totalSourceActivity }}</span>
<span class="span-key" style="margin-left: 35px;">Assay Date</span><span class="row-val">{{ allData.certificateBlock.assayDate }}</span>
<span class="span-key" style="margin-left: 35px;">Units of Activity</span><span class="row-val">{{ allData.certificateBlock.unitsOfActivity }}</span>
</div>
<custom-table
size="middle"
:rowKey="getUid()"
:columns="columnsCertificate"
:list="dataSourceCertificate"
:pagination="false"
:canSelect="false"
>
</custom-table>
</a-tab-pane>
</a-tabs>
</a-card>
</template>
<script>
import { getAction } from '../../api/manage'
const colorList=["#0D5fff","#287D3C","#DF1512","#F3BF24","#D3D4DE","#000000"]
import * as echarts from 'echarts'
export default {
props: {
allData: {
type: Object,
default: ()=>{}
},
sampleId: {
type: String,
default:""
},
type: {
type: String,
default:""
}
},
watch: {
allData: {
handler(val) {
console.log(val);
},
deep: true,
immediate:true
}
},
data() {
return {
yAxisType_g:"value",
yAxisType_b:"value",
spectrumChart_G:null,
spectrumChart_B:null,
histogramChart:null,
loading:true,
myChart:null,
commentText: "",
columnsEnergy_G: [
{
title: 'G-Energy [keV]',
align: 'left',
dataIndex: 'energy'
},
{
title: 'Centroid channel',
align: 'left',
dataIndex: 'centroid'
},
{
title: 'Uncertainty (channels)',
align: 'left',
dataIndex: 'uncertainty'
},
],
columnsEnergy_B: [
{
title: 'Electron energy [keV]',
align: 'left',
dataIndex: 'electronEnergy'
},
{
title: 'Decay mode descriptor',
align: 'left',
dataIndex: 'decayModeDescriptor'
},
{
title: 'Maximum channel / centroid channel of CE',
align: 'left',
dataIndex: 'maximumChannel'
},
{
title: 'Uncertainty',
align: 'left',
dataIndex: 'uncertainty'
},
],
dataSourceEnergy_G:[],
dataSourceEnergy_B:[],
columnsResulution_G: [
{
title: 'G-Energy [keV]',
align: 'left',
dataIndex: 'energy'
},
{
title: 'FWHM [keV]',
align: 'left',
dataIndex: 'fwhm'
},
{
title: 'Uncertainty [keV]',
align: 'left',
dataIndex: 'uncertainty'
},
],
columnsResulution_B: [
{
title: 'Electron energy [keV]',
align: 'left',
dataIndex: 'electronEnergy'
},
{
title: 'FWHM [keV]',
align: 'left',
dataIndex: 'fwhm'
},
{
title: 'Uncertainty [keV]',
align: 'left',
dataIndex: 'uncertainty'
},
],
dataSourceResulution_G:[],
dataSourceResulution_B:[],
columnsEfficiency_G: [
{
title: 'Energy',
align: 'left',
dataIndex: 'energy'
},
{
title: 'Efficiency',
align: 'left',
dataIndex: 'efficiency'
},
{
title: 'Uncertainty',
align: 'left',
dataIndex: 'uncertainty'
},
],
columnsEfficiency_BG: [
{
title: 'Nuclide name',
align: 'left',
dataIndex: 'nuclideName'
},
{
title: 'ROI number',
align: 'left',
dataIndex: 'roiNumber'
},
{
title: 'Coincidence efficiency',
align: 'left',
dataIndex: 'coincidenceEfficiency'
},
{
title: 'ROI range start',
align: 'left',
dataIndex: 'roiGRangeStart'
},
{
title: 'Uncertainty',
align: 'left',
dataIndex: 'uncertainty'
},
],
dataSourceEfficiency_G: [],
dataSourceEfficiency_BG: [],
columnsRoiLimits: [
{
title: 'ROI number',
align: 'left',
dataIndex: 'roiNumber'
},
{
title: '2-D B-range start',
align: 'left',
dataIndex: 'roiBRangeStart'
},
{
title: '2-D B-range stop',
align: 'left',
dataIndex: 'roiBRangeStop'
},
{
title: '2-D G-range start',
align: 'left',
dataIndex: 'roiGRangeStart'
},
{
title: '2-D G-range stop',
align: 'left',
dataIndex: 'roiGRangeStop'
}
],
dataSourceRoiLimits: [],
columnsRatios: [
{
title: 'Ratio identifier',
align: 'left',
dataIndex: 'ratioId'
},
{
title: 'ROI number for higher G-energy',
align: 'left',
dataIndex: 'roiNumberHigherEnergy'
},
{
title: 'ROI number for lower G-energy',
align: 'left',
dataIndex: 'roiNumberLowerEnergy'
},
{
title: 'Count ratio',
align: 'left',
dataIndex: 'countRatio'
},
{
title: 'Count ratio uncertainty',
align: 'left',
dataIndex: 'countRatioUncertainty'
},
],
dataSourceRatios:[],
columnsCertificate: [
{
title: 'Nuclide name',
align: 'left',
dataIndex: 'nuclideName'
},
{
title: 'Half-life',
align: 'left',
dataIndex: 'halfLife'
},
{
title: 'Activity',
align: 'left',
dataIndex: 'nuclideActivity'
},
{
title: 'Uncertainty',
align: 'left',
dataIndex: 'uncertainty'
},
{
title: 'Energy',
align: 'left',
dataIndex: 'Genergy'
},
{
title: 'Intensity',
align: 'left',
dataIndex: 'intensity'
},
{
title: 'Electron decay',
align: 'left',
dataIndex: 'electronDecayModeDescriptor'
},
{
title: 'Maximum',
align: 'left',
dataIndex: 'maxBParticleEnergy'
},
{
title: 'Particle B intensity',
align: 'left',
dataIndex: 'particleBIntensity'
}
],
dataSourceCertificate: [],
dataSourceSpectrum_G: [],
dataSourceSpectrumX_G: [],
dataSourceSpectrum_B: [],
dataSourceSpectrumX_B: [],
// HISTOGRAM
dataSourceHistogray: {
level_1:[],
level_2:[],
level_3:[],
level_4:[],
level_5:[],
level_6:[]
},
fileSrc: "",
zipSrc:""
}
},
mounted() {
this.getFildBlob()
this.commentText = this.allData.commentBlock && this.allData.commentBlock.text?this.allData.commentBlock.text.replace(/\n/g, "<br />"):""
this.dataSourceEnergy_G=this.allData.genergyBlock
this.dataSourceEnergy_B=this.allData.benergyBlock
this.dataSourceResulution_G=this.allData.gresolutionBlock
this.dataSourceResulution_B=this.allData.bresolutionBlock
this.dataSourceEfficiency_G = this.allData.gefficiencyBlock
this.dataSourceEfficiency_BG = this.allData.bgEfficiencyBlock
this.dataSourceRoiLimits = this.allData.roiLimitsBlock
this.dataSourceRatios = this.allData.ratiosBlock
this.dataSourceSpectrum_G = this.allData.gspectrumBlock&&this.allData.gspectrumBlock.gspectrumSubBlock
this.dataSourceSpectrumX_G = this.allData.gspectrumBlock&&this.allData.gspectrumBlock.gspectrumSubBlock.map((item, index) => {
return index
})
this.dataSourceSpectrum_B = this.allData.bspectrumBlock&&this.allData.bspectrumBlock.bspectrumSubBlock
this.dataSourceSpectrumX_B = this.allData.bspectrumBlock&&this.allData.bspectrumBlock.bspectrumSubBlock.map((item, index) => {
return index
})
this.allData.histogramBlock.histogramSubBlock.forEach(item => {
if (item.c === 1) {
this.dataSourceHistogray.level_1.push(item)
} else if (item.c <= 5 && item.c > 1) {
this.dataSourceHistogray.level_2.push(item)
} else if (item.c <= 10 && item.c > 5) {
this.dataSourceHistogray.level_3.push(item)
} else if (item.c <= 50 && item.c > 10) {
this.dataSourceHistogray.level_4.push(item)
} else if (item.c <= 100 && item.c > 50) {
this.dataSourceHistogray.level_5.push(item)
} else if (item.c > 100) {
this.dataSourceHistogray.level_6.push(item)
}
});
this.dataSourceCertificate = this.allData.certificateBlock ? this.allData.certificateBlock.certificateSubBlock : []
// this.getFildBlob()
},
methods: {
getFildBlob() {
console.log("afsdfasdfasdfasdfasdf");
let _this = this
let params = {
sampleId: this.sampleId,
// sampleId:"1523651"
}
let url = "/webStatistics/radionuclideFile"
getAction(url, params).then((res) => {
const blob = new Blob([res], { type: 'text/plain' })
const blobZip = new Blob([res], { type: 'application/zip' })
_this.fileSrc = window.URL.createObjectURL(blob)
_this.zipSrc = window.URL.createObjectURL(blobZip)
})
},
downloadFile(src) {
if (src) {
let link = document.createElement('a')
link.href = src
link.target = '_blank'
link.download = this.type
document.body.appendChild(link)
link.click()
document.body.removeChild(link)
} else {
this.$message.info("File download failed")
}
},
viewFile() {
if (this.fileSrc) {
let link = document.createElement('a')
link.href = this.fileSrc
link.target = '_blank'
document.body.appendChild(link)
link.click()
document.body.removeChild(link)
} else {
this.$message.info("File preview failed")
}
},
getUid() {
return (Math.random()+new Date().getTime()).toString(32).slice(0,8)
},
yLogChange(e,str) {
let yAxisType = e.target.checked ? "log" : "value"
str==="G"?this.yAxisType_g = yAxisType:this.yAxisType_b = yAxisType
let options = {
yAxis: {
type: str==="G"?this.yAxisType_g:this.yAxisType_b,
splitLine: {
show: true,
lineStyle: {
color: "rgbA(64, 105, 121, 0.2)"
}
}
},
}
if (str === "G") {
this.spectrumChart_G.setOption(options)
} else {
this.spectrumChart_B.setOption(options)
}
},
resetZoom(str) {
let options = {
dataZoom: [
{
start: 0,
end: 100
}
],
}
if (str === "G") {
this.spectrumChart_G.setOption(options)
} else {
this.spectrumChart_B.setOption(options)
}
},
handleback() {
this.$emit("back",false)
},
handleTabChange(key) {
if (key === "gamma-spectrum") {
this.$nextTick(() => {
this.drawSpectrumChart_G()
})
} else if (key === "beta-spectrum") {
this.$nextTick(() => {
this.drawSpectrumChart_B()
})
} else if (key === "histogram"){
this.$nextTick(() => {
this.drawHistogramChart()
})
}
},
getOptions(str) {
return {
tooltip: {
trigger: 'axis',
formatter: function (params) {
return `<div>${params[0].axisValueLabel}</div>
<div style="color:#0656ff">value${params[0].value}</div>
`
}
},
xAxis: {
// type:"value",
scale: false,
splitLine: {
show: true,
lineStyle: {
color: "rgbA(64, 105, 121, 0.2)"
},
},
boundaryGap:false,
interval: 25,
max:str==="G"?this.allData.gspectrumBlock.numberGChannels:this.allData.bspectrumBlock.numberBChannels,
data: str === "G" ? this.dataSourceSpectrumX_G : this.dataSourceSpectrumX_B
},
grid: {
left: '3%',
right: '4%',
bottom: '10%',
containLabel: true
},
yAxis: {
type: str==="G"?this.yAxisType_g:this.yAxisType_b,
splitLine: {
show: true,
lineStyle: {
color: "rgbA(64, 105, 121, 0.2)"
}
},
scale: false
},
dataZoom: [
{
start: 0,
end: 255
}
],
series: [
{
type: 'line',
itemStyle: { normal: { color: '#0656ff' } },
data: str==="G"?this.dataSourceSpectrum_G:this.dataSourceSpectrum_B
}
]
}
},
drawSpectrumChart_G() {
this.spectrumChart_G = echarts.init(document.getElementById("spectrumChartRef_G"))
this.spectrumChart_G.setOption(this.getOptions("G"))
window.addEventListener("resize", function () {
spectrumChart_G.resize();
});
},
drawSpectrumChart_B() {
this.spectrumChart_B = echarts.init(document.getElementById("spectrumChartRef_B"))
this.spectrumChart_B.setOption(this.getOptions("B"))
window.addEventListener("resize", function () {
spectrumChart_B.resize();
});
},
drawHistogramChart() {
let dataset=[],series=[]
for (const key in this.dataSourceHistogray) {
if (Object.hasOwnProperty.call(this.dataSourceHistogray, key)) {
if (this.dataSourceHistogray[key].length>0) {
dataset.push({
source: this.dataSourceHistogray[key]
})
}
}
}
series = dataset.map((item,index) => {
return {
type: 'scatter',
dimensions: ["b", "g"],
datasetIndex: index,
itemStyle: {
color:colorList[index]
}
}
})
this.histogramChart = echarts.init(document.getElementById("histogramChartRef"))
this.histogramChart.setOption({
dataset,
xAxis: {
scale: false,
splitLine: {
show: true,
lineStyle: {
color: "rgbA(64, 105, 121, 0.2)"
},
},
interval:65,
max:260
},
yAxis: {
scale: false,
splitLine: {
show: true,
lineStyle: {
color: "rgbA(64, 105, 121, 0.2)"
},
},
interval:65,
max:260
},
tooltip: {
trigger: "item",
formatter: function (params) {
return `<div>Beta${params.value.b}</div>
<div>Gamma${params.value.g}</div>
<div>Count${params.value.c}</div>`
}
},
grid: {
left: '3%',
right: '4%',
bottom: '10%',
containLabel: true
},
series
})
window.addEventListener("resize", function () {
histogramChart.resize();
});
}
}
}
</script>
<style lang="less" scoped>
.detail-top{
width: 100%;
height: 50px;
padding: 0 10px;
background-color: rgba(12, 235, 201, 0.05);
border-top: 1px solid rgba(12, 235, 201, 0.3);
border-bottom: 1px solid rgba(12, 235, 201, 0.3);
display: flex;
align-items: center;
justify-content: space-between;
margin-bottom: 16px;
.top-back{
font-family: MicrosoftYaHei;
font-size: 16px;
font-weight: normal;
font-stretch: normal;
letter-spacing: 0px;
color: #69a19f;
cursor: pointer;
.icon-back{
width: 28px;
height: 24px;
}
}
.top-actions{
.right-btn{
display: inline-block;
height: 32px;
line-height: 32px;
padding: 0 12px;
margin-left: 20px;
background-color: #1397a3;
.icon-download{
width: 16px;
height: 19px;
}
.icon-view{
width: 15px;
height: 16px;
}
a{
color: white;
}
}
}
}
::v-deep {
.ant-tabs{
height: calc(100% - 66px);
.ant-tabs-top-content{
height: calc(100% - 56px);
.ant-tabs-tabpane{
height: 100%;
overflow: auto;
background-color: #02282b;
}
}
}
.ant-tabs-bar{
width: 100%;
height: 40px;
background-color: rgba(12, 235, 201, 0.05);
border-top: 1px solid rgba(12, 235, 201, 0.3);
border-bottom: 1px solid rgba(12, 235, 201, 0.3);
}
.ant-tabs-nav .ant-tabs-tab{
height: 30px;
line-height: 30px;
background-color: rgba(58, 236, 240, 0.22);
font-family: BookmanOldStyle;
font-size: 16px;
font-weight: bold;
font-stretch: normal;
letter-spacing: 2px;
color: #c9f6f6;
margin: 0 0 0 10px;
padding: 0 23px;
position: relative;
&::before{
content: "";
position: absolute;
top: 0;
left: 0;
width: 7px;
height: 29px;
color: rgba(58, 236, 240, 0.22);
border: 1px solid #569e9e;
border-right: none;
border-radius: 0;
}
&::after{
content: "";
position: absolute;
top: 0;
right: 0;
width: 7px;
height: 29px;
color: rgba(58, 236, 240, 0.22);
border: 1px solid #569e9e;
border-left: none;
}
&-active{
&::before,
&::after {
border-color: #0cecca !important;
}
}
}
.ant-tabs-ink-bar{
display: none !important
}
.ant-tabs-nav .ant-tabs-tab-active{
color: #2affdf;
}
.ant-tabs-tabpane{
width: 100%;
height: calc(100% - 122px);
border: solid 1px #416f7f;
padding: 15px 20px;
}
.ant-tabs .ant-tabs-top-content > .ant-tabs-tabpane-inactive{
padding: 15px 20px !important
}
.ant-row{
height: 36px;
line-height: 36px;
}
.ant-tabs-tab-prev, .ant-tabs-tab-next{
color: #c9f6f6;
}
.ant-tabs-tab-prev:hover, .ant-tabs-tab-next:hover{
color: #2affdf;
}
}
.pane-title{
height: 40px;
background-color: rgba(12, 235, 201, 0.05);
line-height: 40px;
font-family: ArialMT;
font-size: 18px;
font-weight: bold;
font-stretch: normal;
letter-spacing: 1px;
color: #0cebc9;
padding: 0 0 0 18px;
}
.info-key{
font-family: ArialMT;
font-size: 16px;
font-weight: bold;
color: #ffffff;
}
.info-val{
font-family: ArialMT;
font-size: 16px;
color: #ade6ee;
}
.span-key{
font-family: MicrosoftYaHei;
font-size: 16px;
color: #ffffff;
}
.comment-block{
background-color: #0d6d76;
margin: 10px 0;
padding: 20px;
line-height: 24px;
border-radius: 4px;
}
.gamma-spectrum-row{
display: flex;
align-items: center;
justify-content: space-between;
.row-val{
font-family: MicrosoftYaHei;
font-size: 16px;
color: #ade6ee;
}
.row-btn{
height: 26px;
background-color: #406979;
line-height: 26px;
border: none;
}
}
.gamma-spectrum-chart{
width: 100%;
height: calc(100% - 81px);
}
.certificate-row{
height: 30px;
display: flex;
align-items: center;
font-family: MicrosoftYaHei;
color: #ade6ee;
margin-bottom: 10px;
}
</style>