feat: Energy Calibration、Resolution Calibration、Spectrum Comments、Color Config、Data Processing Log、Config User Library 弹窗,3D Scatter图表、Beta-gamma接口修改的那部分对接
This commit is contained in:
parent
766b4f6c04
commit
ffed2cf2fa
|
@ -37,6 +37,7 @@
|
||||||
"viser-vue": "^2.4.8",
|
"viser-vue": "^2.4.8",
|
||||||
"vue": "^2.6.10",
|
"vue": "^2.6.10",
|
||||||
"vue-area-linkage": "^5.1.0",
|
"vue-area-linkage": "^5.1.0",
|
||||||
|
"vue-color": "^2.8.1",
|
||||||
"vue-cropper": "^0.5.4",
|
"vue-cropper": "^0.5.4",
|
||||||
"vue-i18n": "^8.7.0",
|
"vue-i18n": "^8.7.0",
|
||||||
"vue-loader": "^15.7.0",
|
"vue-loader": "^15.7.0",
|
||||||
|
|
81
src/components/ColorPicker/index.vue
Normal file
81
src/components/ColorPicker/index.vue
Normal file
|
@ -0,0 +1,81 @@
|
||||||
|
<template>
|
||||||
|
<div class="color-picker">
|
||||||
|
<div class="color-picker-toggle" @click="togglePanel">
|
||||||
|
<slot></slot>
|
||||||
|
</div>
|
||||||
|
<div class="color-picker-mask" :class="show ? 'show' : ''" @click="show = false">
|
||||||
|
<div class="color-picker-panel" :style="style" @click.stop>
|
||||||
|
<chrome v-model="color"></chrome>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import { Chrome } from 'vue-color'
|
||||||
|
export default {
|
||||||
|
props: {
|
||||||
|
value: {
|
||||||
|
type: Object,
|
||||||
|
default: () => ({ rgba: { r: 255, g: 255, b: 255, a: 1 } })
|
||||||
|
}
|
||||||
|
},
|
||||||
|
components: {
|
||||||
|
Chrome
|
||||||
|
},
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
style: {
|
||||||
|
top: 0,
|
||||||
|
left: 0
|
||||||
|
},
|
||||||
|
show: false
|
||||||
|
}
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
togglePanel(e) {
|
||||||
|
const { x, y, offsetX, offsetY, target } = e
|
||||||
|
this.style.top = y - offsetY + 'px'
|
||||||
|
this.style.left = x - offsetX + target.offsetWidth + 4 + 'px'
|
||||||
|
this.show = true
|
||||||
|
}
|
||||||
|
},
|
||||||
|
computed: {
|
||||||
|
color: {
|
||||||
|
set(val) {
|
||||||
|
this.$emit('input', val)
|
||||||
|
},
|
||||||
|
get() {
|
||||||
|
return this.value
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="less" scoped>
|
||||||
|
.color-picker {
|
||||||
|
&-mask {
|
||||||
|
display: none;
|
||||||
|
position: fixed;
|
||||||
|
top: 0;
|
||||||
|
right: 0;
|
||||||
|
bottom: 0;
|
||||||
|
left: 0;
|
||||||
|
background: transparent;
|
||||||
|
z-index: 99999999;
|
||||||
|
|
||||||
|
&.show {
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
&-toggle {
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
|
||||||
|
&-panel {
|
||||||
|
position: absolute;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
|
@ -4,6 +4,9 @@
|
||||||
<script>
|
<script>
|
||||||
import * as echarts from 'echarts'
|
import * as echarts from 'echarts'
|
||||||
import 'echarts-gl'
|
import 'echarts-gl'
|
||||||
|
|
||||||
|
const events = ['click']
|
||||||
|
const zrEvents = ['mousemove', 'mousedown', 'mouseup']
|
||||||
export default {
|
export default {
|
||||||
props: {
|
props: {
|
||||||
option: {
|
option: {
|
||||||
|
@ -19,26 +22,51 @@ export default {
|
||||||
return {}
|
return {}
|
||||||
},
|
},
|
||||||
mounted() {
|
mounted() {
|
||||||
this.chart = echarts.init(this.$refs.containerRef)
|
this._chart = echarts.init(this.$refs.containerRef)
|
||||||
this.chart.setOption(this.option)
|
this._chart.setOption(this.option)
|
||||||
|
this.initEventListener()
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
|
initEventListener() {
|
||||||
|
events.forEach(eventName => {
|
||||||
|
this._chart.on(eventName, params => {
|
||||||
|
this.$emit(eventName, params)
|
||||||
|
})
|
||||||
|
})
|
||||||
|
|
||||||
|
const zr = this.getZRender()
|
||||||
|
zrEvents.forEach(eventName => {
|
||||||
|
zr.on(eventName, params => {
|
||||||
|
this.$emit(`zr:${eventName}`, params)
|
||||||
|
})
|
||||||
|
})
|
||||||
|
},
|
||||||
|
|
||||||
resize() {
|
resize() {
|
||||||
this.chart && this.chart.resize()
|
this._chart && this._chart.resize()
|
||||||
|
},
|
||||||
|
|
||||||
|
// 获取echart实例
|
||||||
|
getChartInstance() {
|
||||||
|
return this._chart
|
||||||
|
},
|
||||||
|
|
||||||
|
getZRender() {
|
||||||
|
return this._chart.getZr()
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
watch: {
|
watch: {
|
||||||
option: {
|
option: {
|
||||||
handler() {
|
handler() {
|
||||||
if (this.chart) {
|
if (this._chart) {
|
||||||
this.chart.setOption(this.option)
|
this._chart.setOption(this.option)
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
deep: true
|
deep: true
|
||||||
},
|
},
|
||||||
height() {
|
height() {
|
||||||
this.$nextTick(() => {
|
this.$nextTick(() => {
|
||||||
this.chart && this.chart.resize()
|
this._chart && this._chart.resize()
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -7,6 +7,9 @@ export default {
|
||||||
computed: {
|
computed: {
|
||||||
visible: {
|
visible: {
|
||||||
get() {
|
get() {
|
||||||
|
if (this.value && this.beforeModalOpen && typeof this.beforeModalOpen == 'function') {
|
||||||
|
this.beforeModalOpen()
|
||||||
|
}
|
||||||
return this.value
|
return this.value
|
||||||
},
|
},
|
||||||
set(val) {
|
set(val) {
|
||||||
|
|
|
@ -12,7 +12,14 @@
|
||||||
</pop-over-with-icon>
|
</pop-over-with-icon>
|
||||||
<pop-over-with-icon placement="bottomLeft" style="width: 159px" v-model="spectraVisible">
|
<pop-over-with-icon placement="bottomLeft" style="width: 159px" v-model="spectraVisible">
|
||||||
Spectra
|
Spectra
|
||||||
<spectra slot="content" v-model="spectraType" @input="spectraVisible = false" />
|
<spectra
|
||||||
|
slot="content"
|
||||||
|
v-model="spectraType"
|
||||||
|
@input="
|
||||||
|
spectraVisible = false
|
||||||
|
changeChartByType($event)
|
||||||
|
"
|
||||||
|
/>
|
||||||
</pop-over-with-icon>
|
</pop-over-with-icon>
|
||||||
</div>
|
</div>
|
||||||
<!-- 二级交互栏结束 -->
|
<!-- 二级交互栏结束 -->
|
||||||
|
@ -26,7 +33,8 @@
|
||||||
</template>
|
</template>
|
||||||
<beta-gamma-spectrum-chart
|
<beta-gamma-spectrum-chart
|
||||||
ref="betaGammaChartRef"
|
ref="betaGammaChartRef"
|
||||||
:data="histogramDataList"
|
:histogramDataList="histogramDataList"
|
||||||
|
:histogramDataDList="histogramDataDList"
|
||||||
@positionChange="handlePositionChange"
|
@positionChange="handlePositionChange"
|
||||||
@rangeChange="handleRangeChange"
|
@rangeChange="handleRangeChange"
|
||||||
/>
|
/>
|
||||||
|
@ -47,6 +55,7 @@
|
||||||
<spectrum-line-chart
|
<spectrum-line-chart
|
||||||
ref="lineChart1Ref"
|
ref="lineChart1Ref"
|
||||||
:data="gammaOriginalData"
|
:data="gammaOriginalData"
|
||||||
|
:energy="gammaEnergyData"
|
||||||
@rangeChange="handleLineChartRangeChange($event, 'y')"
|
@rangeChange="handleLineChartRangeChange($event, 'y')"
|
||||||
/>
|
/>
|
||||||
</beta-gamma-chart-container>
|
</beta-gamma-chart-container>
|
||||||
|
@ -58,7 +67,8 @@
|
||||||
</template>
|
</template>
|
||||||
<spectrum-line-chart
|
<spectrum-line-chart
|
||||||
ref="lineChart2Ref"
|
ref="lineChart2Ref"
|
||||||
:data="betaProjectedData"
|
:data="gammaProjectedData"
|
||||||
|
:energy="gammaEnergyData"
|
||||||
@rangeChange="handleLineChartRangeChange($event, 'y')"
|
@rangeChange="handleLineChartRangeChange($event, 'y')"
|
||||||
/>
|
/>
|
||||||
</beta-gamma-chart-container>
|
</beta-gamma-chart-container>
|
||||||
|
@ -73,6 +83,7 @@
|
||||||
<spectrum-line-chart
|
<spectrum-line-chart
|
||||||
ref="lineChart3Ref"
|
ref="lineChart3Ref"
|
||||||
:data="betaOriginalData"
|
:data="betaOriginalData"
|
||||||
|
:energy="betaEnergyData"
|
||||||
title="Beta"
|
title="Beta"
|
||||||
color="#00ff1e"
|
color="#00ff1e"
|
||||||
@rangeChange="handleLineChartRangeChange($event, 'x')"
|
@rangeChange="handleLineChartRangeChange($event, 'x')"
|
||||||
|
@ -86,7 +97,8 @@
|
||||||
</template>
|
</template>
|
||||||
<spectrum-line-chart
|
<spectrum-line-chart
|
||||||
ref="lineChart4Ref"
|
ref="lineChart4Ref"
|
||||||
:data="gammaProjectedData"
|
:data="betaProjectedData"
|
||||||
|
:energy="betaEnergyData"
|
||||||
title="Beta"
|
title="Beta"
|
||||||
color="#00ff1e"
|
color="#00ff1e"
|
||||||
@rangeChange="handleLineChartRangeChange($event, 'x')"
|
@rangeChange="handleLineChartRangeChange($event, 'x')"
|
||||||
|
@ -119,6 +131,7 @@
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
|
import { getAction } from '../../api/manage'
|
||||||
import BetaGammaChartContainer from './components/BetaGammaChartContainer.vue'
|
import BetaGammaChartContainer from './components/BetaGammaChartContainer.vue'
|
||||||
import BetaGammaSpectrumChart from './components/BetaGammaSpectrumChart.vue'
|
import BetaGammaSpectrumChart from './components/BetaGammaSpectrumChart.vue'
|
||||||
import ComparisonModal from './components/Modals/ComparisonModal.vue'
|
import ComparisonModal from './components/Modals/ComparisonModal.vue'
|
||||||
|
@ -143,56 +156,79 @@ export default {
|
||||||
Spectra
|
Spectra
|
||||||
},
|
},
|
||||||
props: {
|
props: {
|
||||||
data: {
|
sample: {
|
||||||
type: Object
|
type: Object
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
spectraVisible: false,
|
spectraVisible: false,
|
||||||
spectraType: 'Sample Data',
|
spectraType: 'sample',
|
||||||
|
|
||||||
|
resultDisplay: [],
|
||||||
|
|
||||||
resultDisplay: [
|
|
||||||
{
|
|
||||||
id: 1,
|
|
||||||
isotope: 'Xe131m',
|
|
||||||
concentration: '0.03464',
|
|
||||||
uncertainty: '+/-0.01988',
|
|
||||||
mdc: '0.03464'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
id: 2,
|
|
||||||
isotope: 'Xe131m',
|
|
||||||
concentration: '0.03464',
|
|
||||||
uncertainty: '+/-0.01988',
|
|
||||||
mdc: '0.03464'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
id: 3,
|
|
||||||
isotope: 'Xe131m',
|
|
||||||
concentration: '0.03464',
|
|
||||||
uncertainty: '+/-0.01988',
|
|
||||||
mdc: '0.03464'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
id: 4,
|
|
||||||
isotope: 'Xe131m',
|
|
||||||
concentration: '0.03464',
|
|
||||||
uncertainty: '+/-0.01988',
|
|
||||||
mdc: '0.03464'
|
|
||||||
}
|
|
||||||
],
|
|
||||||
histogramDataList: [],
|
histogramDataList: [],
|
||||||
|
histogramDataDList: [],
|
||||||
|
|
||||||
gammaOriginalData: [],
|
gammaOriginalData: [],
|
||||||
|
gammaProjectedData: [],
|
||||||
|
|
||||||
betaOriginalData: [],
|
betaOriginalData: [],
|
||||||
betaProjectedData: [],
|
betaProjectedData: [],
|
||||||
gammaProjectedData: [],
|
|
||||||
|
gammaEnergyData: [],
|
||||||
|
betaEnergyData: [],
|
||||||
|
|
||||||
comparisonModalVisible: false
|
comparisonModalVisible: false
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
|
async getSampleDetail() {
|
||||||
|
this.spectraType = 'sample'
|
||||||
|
|
||||||
|
const { dbName, sampleId } = this.sample
|
||||||
|
const { success, result, message } = await getAction('/spectrumAnalysis/getDBSpectrumChart', {
|
||||||
|
dbName,
|
||||||
|
sampleId
|
||||||
|
})
|
||||||
|
if (success) {
|
||||||
|
this.sampleDetail = result
|
||||||
|
this.changeChartByType('sample')
|
||||||
|
} else {
|
||||||
|
this.$message.error(message)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
changeChartByType(type) {
|
||||||
|
const {
|
||||||
|
betaOriginalData,
|
||||||
|
betaProjectedData,
|
||||||
|
betaEnergyData,
|
||||||
|
|
||||||
|
gammaOriginalData,
|
||||||
|
gammaProjectedData,
|
||||||
|
gammaEnergyData,
|
||||||
|
|
||||||
|
histogramDataList, // 左侧 Beta-Gamma Spectrum: Sample 图表
|
||||||
|
histogramDataDList, // 左侧 Beta-Gamma Spectrum: Sample 图表的3D部分
|
||||||
|
XeData, // 右下角Result Display
|
||||||
|
spectrumData
|
||||||
|
} = this.sampleDetail[type]
|
||||||
|
|
||||||
|
this.histogramDataList = histogramDataList
|
||||||
|
this.histogramDataDList = histogramDataDList
|
||||||
|
|
||||||
|
this.gammaOriginalData = gammaOriginalData
|
||||||
|
this.gammaProjectedData = gammaProjectedData
|
||||||
|
this.gammaEnergyData = gammaEnergyData
|
||||||
|
|
||||||
|
this.betaOriginalData = betaOriginalData
|
||||||
|
this.betaProjectedData = betaProjectedData
|
||||||
|
this.betaEnergyData = betaEnergyData
|
||||||
|
|
||||||
|
this.resultDisplay = XeData
|
||||||
|
},
|
||||||
|
|
||||||
resize() {
|
resize() {
|
||||||
this.$refs.betaGammaChartRef && this.$refs.betaGammaChartRef.resize()
|
this.$refs.betaGammaChartRef && this.$refs.betaGammaChartRef.resize()
|
||||||
this.$refs.lineChart1Ref && this.$refs.lineChart1Ref.resize()
|
this.$refs.lineChart1Ref && this.$refs.lineChart1Ref.resize()
|
||||||
|
@ -241,27 +277,9 @@ export default {
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
watch: {
|
watch: {
|
||||||
data: {
|
sample: {
|
||||||
handler(newVal) {
|
handler() {
|
||||||
const {
|
this.getSampleDetail()
|
||||||
betaOriginalData,
|
|
||||||
betaProjectedData,
|
|
||||||
gammaOriginalData,
|
|
||||||
gammaProjectedData,
|
|
||||||
histogramDataList, // 左侧 Beta-Gamma Spectrum: Sample 图表
|
|
||||||
spectrumData
|
|
||||||
} = newVal
|
|
||||||
|
|
||||||
|
|
||||||
console.log('%c [ spectrumData ]-246', 'font-size:13px; background:pink; color:#bf2c9f;', spectrumData)
|
|
||||||
|
|
||||||
this.histogramDataList = histogramDataList
|
|
||||||
|
|
||||||
this.gammaOriginalData = gammaOriginalData
|
|
||||||
this.betaOriginalData = betaOriginalData
|
|
||||||
|
|
||||||
this.betaProjectedData = betaProjectedData
|
|
||||||
this.gammaProjectedData = gammaProjectedData
|
|
||||||
},
|
},
|
||||||
immediate: true
|
immediate: true
|
||||||
}
|
}
|
||||||
|
@ -280,11 +298,11 @@ export default {
|
||||||
}
|
}
|
||||||
|
|
||||||
.beta-gamma-spectrum-sample {
|
.beta-gamma-spectrum-sample {
|
||||||
width: calc(100% - 1078px);
|
width: calc(100% - 1111px);
|
||||||
}
|
}
|
||||||
|
|
||||||
.beta-and-gamma-spectrum {
|
.beta-and-gamma-spectrum {
|
||||||
width: 1048px;
|
width: 1081px;
|
||||||
margin-left: 30px;
|
margin-left: 30px;
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
|
|
||||||
|
|
|
@ -137,12 +137,20 @@ const twoDOption = {
|
||||||
//3D Surface 配置
|
//3D Surface 配置
|
||||||
|
|
||||||
const threeDSurfaceOption = {
|
const threeDSurfaceOption = {
|
||||||
|
tooltip: {
|
||||||
|
trigger: 'item',
|
||||||
|
formatter: ({ value: [x, y, z] }) => {
|
||||||
|
// 自定义 tooltip 的内容
|
||||||
|
return `Beta Channel:${x} Count:${z} Gamma Channel: ${y}`
|
||||||
|
}
|
||||||
|
},
|
||||||
visualMap: {
|
visualMap: {
|
||||||
show: false,
|
show: false,
|
||||||
dimension: 2,
|
|
||||||
min: 0,
|
min: 0,
|
||||||
max: 0,
|
max: 0,
|
||||||
inRange: ['#47C134', '#f00']
|
inRange: {
|
||||||
|
color: ['#0DCF38', '#B5475E']
|
||||||
|
}
|
||||||
},
|
},
|
||||||
grid3D: {
|
grid3D: {
|
||||||
axisLabel: {
|
axisLabel: {
|
||||||
|
@ -198,6 +206,21 @@ const threeDSurfaceOption = {
|
||||||
|
|
||||||
// 3D Scatter 配置
|
// 3D Scatter 配置
|
||||||
const threeDScatterOption = {
|
const threeDScatterOption = {
|
||||||
|
tooltip: {
|
||||||
|
trigger: 'item',
|
||||||
|
formatter: ({ value: [x, y, z] }) => {
|
||||||
|
// 自定义 tooltip 的内容
|
||||||
|
return `Beta Channel:${x} Count:${z} Gamma Channel: ${y}`
|
||||||
|
}
|
||||||
|
},
|
||||||
|
visualMap: {
|
||||||
|
show: false,
|
||||||
|
min: 0,
|
||||||
|
max: 0,
|
||||||
|
inRange: {
|
||||||
|
color: ['#0DCF38', '#B5475E']
|
||||||
|
}
|
||||||
|
},
|
||||||
grid3D: {
|
grid3D: {
|
||||||
axisLabel: {
|
axisLabel: {
|
||||||
color: '#C4E5A6'
|
color: '#C4E5A6'
|
||||||
|
@ -242,23 +265,27 @@ const threeDScatterOption = {
|
||||||
color: '#C4E5A6',
|
color: '#C4E5A6',
|
||||||
fontSize: 14
|
fontSize: 14
|
||||||
},
|
},
|
||||||
max: 6
|
max: 0
|
||||||
},
|
},
|
||||||
series: {
|
series: {
|
||||||
type: 'scatter3D',
|
type: 'scatter3D',
|
||||||
symbolSize: 2.5,
|
symbolSize: 5,
|
||||||
itemStyle: {
|
emphasis: {
|
||||||
color: '#a2d092'
|
label: {
|
||||||
|
show: false
|
||||||
|
}
|
||||||
},
|
},
|
||||||
data: new Array(512)
|
data: []
|
||||||
.fill(0)
|
|
||||||
.map(() => [parseInt(Math.random() * 256), parseInt(Math.random() * 256), 4.5 + Math.random() * 0.1])
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
props: {
|
props: {
|
||||||
data: {
|
histogramDataList: {
|
||||||
|
type: Array,
|
||||||
|
default: () => []
|
||||||
|
},
|
||||||
|
histogramDataDList: {
|
||||||
type: Array,
|
type: Array,
|
||||||
default: () => []
|
default: () => []
|
||||||
}
|
}
|
||||||
|
@ -408,13 +435,24 @@ export default {
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
watch: {
|
watch: {
|
||||||
data: {
|
histogramDataList: {
|
||||||
handler(newVal) {
|
handler(newVal) {
|
||||||
|
this.active = 0
|
||||||
this.twoDOption.series.data = newVal.filter(item => item.c).map(item => [item.b, item.g, item.c]) // 设置2D Scatter数据
|
this.twoDOption.series.data = newVal.filter(item => item.c).map(item => [item.b, item.g, item.c]) // 设置2D Scatter数据
|
||||||
|
},
|
||||||
|
immediate: true
|
||||||
|
},
|
||||||
|
|
||||||
const treeDSurfaceZMax = Math.max(...newVal.map(item => item.c))
|
histogramDataDList: {
|
||||||
this.threeDSurfaceOption.zAxis3D.max = Math.ceil(treeDSurfaceZMax * 1.2)
|
handler(newVal) {
|
||||||
|
const maxCount = Math.max(...newVal.map(item => item.c))
|
||||||
|
this.threeDSurfaceOption.zAxis3D.max = Math.ceil(maxCount * 1.2)
|
||||||
this.threeDSurfaceOption.series.data = newVal.map(item => [item.b, item.g, item.c]) // 设置3D surface数据
|
this.threeDSurfaceOption.series.data = newVal.map(item => [item.b, item.g, item.c]) // 设置3D surface数据
|
||||||
|
this.threeDSurfaceOption.visualMap.max = maxCount
|
||||||
|
|
||||||
|
this.threeDScatterOption.zAxis3D.max = Math.ceil(maxCount * 1.2)
|
||||||
|
this.threeDScatterOption.series.data = newVal.map(item => [item.b, item.g, item.c]) // 设置3D scatter数据
|
||||||
|
this.threeDScatterOption.visualMap.max = maxCount
|
||||||
},
|
},
|
||||||
immediate: true
|
immediate: true
|
||||||
},
|
},
|
||||||
|
|
|
@ -0,0 +1,122 @@
|
||||||
|
<template>
|
||||||
|
<custom-modal v-model="visible" :width="700" title="Color Config">
|
||||||
|
<div class="color-config">
|
||||||
|
<div class="color-config-item" v-for="(item, index) in configList" :key="index">
|
||||||
|
<div class="title">{{ item.title }}</div>
|
||||||
|
<color-picker v-model="config[item.key]">
|
||||||
|
<div class="color-picker-picker" :style="{ background: combineRGBA(config[item.key]) }"></div>
|
||||||
|
</color-picker>
|
||||||
|
|
||||||
|
<div class="desc">{{ item.desc }}</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</custom-modal>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import ModalMixin from '@/mixins/ModalMixin'
|
||||||
|
import ColorPicker from '@/components/ColorPicker/index.vue'
|
||||||
|
|
||||||
|
const configList = [
|
||||||
|
{
|
||||||
|
title: 'Spectrum Line',
|
||||||
|
key: 'spectrumLine',
|
||||||
|
desc: 'Color of the original spectrum line'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: 'Baseline',
|
||||||
|
key: 'baseline',
|
||||||
|
desc: 'Color of baseline'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: 'Lc Line',
|
||||||
|
key: 'lcLine',
|
||||||
|
desc: 'Color of lc line'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: 'Scac Line',
|
||||||
|
key: 'scacLine',
|
||||||
|
desc: 'Color of scac line'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: 'Peak Line',
|
||||||
|
key: 'peakLine',
|
||||||
|
desc: "Color of all peaks' curve"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: 'Compare Line',
|
||||||
|
key: 'compareLine',
|
||||||
|
desc: 'Color of another spectrum line which is used to compare with current spectrum'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: 'Spect Sum Line',
|
||||||
|
key: 'spectSumLine',
|
||||||
|
desc: 'Color of the line which is the sum of current spectrum and other spectrum Multiplied by a ratio'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: 'Spect Cut Line',
|
||||||
|
key: 'spectCutLine',
|
||||||
|
desc: 'Color of the line which is the difference of current spectrum and other spectrum Multiplied by a ratio'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: 'FitBase Line',
|
||||||
|
key: 'fitBaseLine',
|
||||||
|
desc: 'Color of the base line in edit state'
|
||||||
|
}
|
||||||
|
]
|
||||||
|
export default {
|
||||||
|
mixins: [ModalMixin],
|
||||||
|
components: {
|
||||||
|
ColorPicker
|
||||||
|
},
|
||||||
|
data() {
|
||||||
|
this.configList = configList
|
||||||
|
return {
|
||||||
|
config: {
|
||||||
|
spectrumLine: { rgba: { r: 255, g: 255, b: 0, a: 1 } },
|
||||||
|
baseline: { rgba: { r: 0, g: 246, b: 255, a: 1 } },
|
||||||
|
lcLine: { rgba: { r: 255, g: 0, b: 0, a: 1 } },
|
||||||
|
scacLine: { rgba: { r: 244, g: 112, b: 247, a: 1 } },
|
||||||
|
peakLine: { rgba: { r: 255, g: 127, b: 39, a: 1 } },
|
||||||
|
compareLine: { rgba: { r: 0, g: 255, b: 0, a: 1 } },
|
||||||
|
spectSumLine: { rgba: { r: 0, g: 0, b: 255, a: 1 } },
|
||||||
|
spectCutLine: { rgba: { r: 34, g: 90, b: 106, a: 1 } },
|
||||||
|
fitBaseLine: { rgba: { r: 255, g: 255, b: 255, a: 1 } }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
combineRGBA({ rgba: { r, g, b, a } }) {
|
||||||
|
return `rgba(${r}, ${g}, ${b}, ${a})`
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="less" scoped>
|
||||||
|
.color-config {
|
||||||
|
&-item {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
|
||||||
|
&:not(:first-child) {
|
||||||
|
margin-top: 15px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.title {
|
||||||
|
width: 100px;
|
||||||
|
margin-right: 20px;
|
||||||
|
flex-shrink: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.color-picker-picker {
|
||||||
|
width: 26px;
|
||||||
|
height: 26px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.desc {
|
||||||
|
margin-left: 10px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
|
@ -0,0 +1,72 @@
|
||||||
|
<template>
|
||||||
|
<custom-modal v-model="visible" :width="490" title="Config User Library" :footer="null">
|
||||||
|
<div class="config-user-library">
|
||||||
|
<a-transfer
|
||||||
|
:titles="['Total Nuclides', 'User Nuclides']"
|
||||||
|
:dataSource="list"
|
||||||
|
:list-style="{
|
||||||
|
width: '200px',
|
||||||
|
height: '400px'
|
||||||
|
}"
|
||||||
|
:target-keys="targetKeys"
|
||||||
|
:render="item => item.title"
|
||||||
|
:showSearch="true"
|
||||||
|
@change="handleChange"
|
||||||
|
></a-transfer>
|
||||||
|
|
||||||
|
<div class="config-user-library-btns">
|
||||||
|
<div>
|
||||||
|
<a-button type="primary">Default</a-button>
|
||||||
|
<a-button type="primary">Load</a-button>
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<a-button type="primary">Save</a-button>
|
||||||
|
<a-button type="primary">Apply</a-button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</custom-modal>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import ModalMixin from '@/mixins/ModalMixin'
|
||||||
|
export default {
|
||||||
|
mixins: [ModalMixin],
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
list: [
|
||||||
|
{
|
||||||
|
key: '1',
|
||||||
|
title: 'Ac228'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
key: '2',
|
||||||
|
title: 'Ag106M'
|
||||||
|
}
|
||||||
|
],
|
||||||
|
targetKeys: []
|
||||||
|
}
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
handleChange(targetKeys) {
|
||||||
|
this.targetKeys = targetKeys
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="less" scoped>
|
||||||
|
.config-user-library {
|
||||||
|
&-btns {
|
||||||
|
margin-top: 20px;
|
||||||
|
display: flex;
|
||||||
|
justify-content: space-between;
|
||||||
|
|
||||||
|
> div {
|
||||||
|
width: 200px;
|
||||||
|
display: flex;
|
||||||
|
justify-content: space-between;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
|
@ -0,0 +1,55 @@
|
||||||
|
<template>
|
||||||
|
<custom-modal v-model="visible" :width="1000" title="Data Processing Log">
|
||||||
|
<pre class="data-processing-log">{{ text }}</pre>
|
||||||
|
<div slot="custom-footer" style="text-align: center;">
|
||||||
|
<a-space :size="20">
|
||||||
|
<a-button type="primary">Export</a-button>
|
||||||
|
<a-button @click="visible = false">Cancel</a-button>
|
||||||
|
</a-space>
|
||||||
|
</div>
|
||||||
|
</custom-modal>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import ModalMixin from '@/mixins/ModalMixin'
|
||||||
|
export default {
|
||||||
|
mixins: [ModalMixin],
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
text: `-------------------------- SampleAnalyse Beginning at 2023-07-10 11:44:56 --------------------------
|
||||||
|
-------------------------- SampleAnalyse Beginning at 2023-07-10 11:44:56 --------------------------
|
||||||
|
-------------------------- SampleAnalyse Beginning at 2023-07-10 11:44:56 --------------------------
|
||||||
|
-------------------------- SampleAnalyse Beginning at 2023-07-10 11:44:56 --------------------------
|
||||||
|
-------------------------- SampleAnalyse Beginning at 2023-07-10 11:44:56 --------------------------
|
||||||
|
-------------------------- SampleAnalyse Beginning at 2023-07-10 11:44:56 --------------------------
|
||||||
|
-------------------------- SampleAnalyse Beginning at 2023-07-10 11:44:56 --------------------------
|
||||||
|
-------------------------- SampleAnalyse Beginning at 2023-07-10 11:44:56 --------------------------
|
||||||
|
-------------------------- SampleAnalyse Beginning at 2023-07-10 11:44:56 --------------------------
|
||||||
|
-------------------------- SampleAnalyse Beginning at 2023-07-10 11:44:56 --------------------------
|
||||||
|
-------------------------- SampleAnalyse Beginning at 2023-07-10 11:44:56 --------------------------
|
||||||
|
-------------------------- SampleAnalyse Beginning at 2023-07-10 11:44:56 --------------------------
|
||||||
|
-------------------------- SampleAnalyse Beginning at 2023-07-10 11:44:56 --------------------------
|
||||||
|
-------------------------- SampleAnalyse Beginning at 2023-07-10 11:44:56 --------------------------
|
||||||
|
-------------------------- SampleAnalyse Beginning at 2023-07-10 11:44:56 --------------------------
|
||||||
|
-------------------------- SampleAnalyse Beginning at 2023-07-10 11:44:56 --------------------------
|
||||||
|
-------------------------- SampleAnalyse Beginning at 2023-07-10 11:44:56 --------------------------
|
||||||
|
-------------------------- SampleAnalyse Beginning at 2023-07-10 11:44:56 --------------------------
|
||||||
|
-------------------------- SampleAnalyse Beginning at 2023-07-10 11:44:56 --------------------------
|
||||||
|
-------------------------- SampleAnalyse Beginning at 2023-07-10 11:44:56 --------------------------
|
||||||
|
-------------------------- SampleAnalyse Beginning at 2023-07-10 11:44:56 --------------------------
|
||||||
|
-------------------------- SampleAnalyse Beginning at 2023-07-10 11:44:56 --------------------------
|
||||||
|
-------------------------- SampleAnalyse Beginning at 2023-07-10 11:44:56 --------------------------
|
||||||
|
`
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="less" scoped>
|
||||||
|
.data-processing-log {
|
||||||
|
height: 450px;
|
||||||
|
padding: 5px;
|
||||||
|
overflow: auto;
|
||||||
|
background-color: #285367;
|
||||||
|
}
|
||||||
|
</style>
|
|
@ -174,15 +174,18 @@ const initialOption = {
|
||||||
series: [
|
series: [
|
||||||
{
|
{
|
||||||
type: 'line',
|
type: 'line',
|
||||||
|
symbol: 'square',
|
||||||
itemStyle: {
|
itemStyle: {
|
||||||
color: '#EDF005'
|
color: '#FF0000' // 设置符号的颜色
|
||||||
|
},
|
||||||
|
lineStyle: {
|
||||||
|
color: '#C2CC11' // 设置折线的颜色
|
||||||
},
|
},
|
||||||
data: [
|
data: [
|
||||||
[42, 0],
|
[42, 0],
|
||||||
[100, 0.2],
|
[100, 0.2],
|
||||||
[978, 0.1]
|
[978, 0.1]
|
||||||
],
|
]
|
||||||
color: 'red'
|
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
@ -290,7 +293,7 @@ export default {
|
||||||
}
|
}
|
||||||
|
|
||||||
.curve {
|
.curve {
|
||||||
height: 300px;
|
height: 400px;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,331 @@
|
||||||
|
<template>
|
||||||
|
<custom-modal v-model="visible" :width="1280" title="Energy Calibration" :footer="null">
|
||||||
|
<div class="energy-calibration">
|
||||||
|
<div class="left">
|
||||||
|
<!-- Calibration Data -->
|
||||||
|
<title-over-boarder title="Calibration Data">
|
||||||
|
<div class="calibration-data">
|
||||||
|
<a-form-model
|
||||||
|
:colon="false"
|
||||||
|
:labelCol="{
|
||||||
|
style: {
|
||||||
|
width: '70px',
|
||||||
|
textAlign: 'left',
|
||||||
|
flexShrink: 0
|
||||||
|
}
|
||||||
|
}"
|
||||||
|
:wrapperCol="{
|
||||||
|
style: {
|
||||||
|
flex: 1
|
||||||
|
}
|
||||||
|
}"
|
||||||
|
>
|
||||||
|
<a-form-model-item label="Channel">
|
||||||
|
<a-input></a-input>
|
||||||
|
</a-form-model-item>
|
||||||
|
<a-form-model-item label="Energy">
|
||||||
|
<a-input></a-input>
|
||||||
|
</a-form-model-item>
|
||||||
|
<a-form-model-item :label="' '">
|
||||||
|
<a-button type="primary">Insert</a-button>
|
||||||
|
</a-form-model-item>
|
||||||
|
<a-form-model-item :label="' '">
|
||||||
|
<a-button type="primary">Modify</a-button>
|
||||||
|
</a-form-model-item>
|
||||||
|
<a-form-model-item :label="' '">
|
||||||
|
<a-button type="primary">Delete</a-button>
|
||||||
|
</a-form-model-item>
|
||||||
|
</a-form-model>
|
||||||
|
<!-- 表格 -->
|
||||||
|
<a-table
|
||||||
|
:columns="columns"
|
||||||
|
:dataSource="list"
|
||||||
|
:pagination="false"
|
||||||
|
:class="list.length ? 'has-data' : ''"
|
||||||
|
:scroll="{ y: 182 }"
|
||||||
|
></a-table>
|
||||||
|
<!-- 表格结束 -->
|
||||||
|
<div class="operators">
|
||||||
|
<div>
|
||||||
|
<a-button type="primary">Call</a-button>
|
||||||
|
<a-button type="primary">Save</a-button>
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<a-button type="primary">Apply</a-button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</title-over-boarder>
|
||||||
|
<!-- Equation -->
|
||||||
|
<title-over-boarder class="mt-20" title="Equation">
|
||||||
|
<div class="equation">
|
||||||
|
Energy = -0.056137 + C * 0.334493 + C<sup>2</sup> * 3.10365e - 08 + C<sup>3</sup> * -4.05186e - 12
|
||||||
|
</div>
|
||||||
|
</title-over-boarder>
|
||||||
|
<!-- curve -->
|
||||||
|
<title-over-boarder class="mt-20" title="curve">
|
||||||
|
<div class="curve">
|
||||||
|
<custom-chart :option="option" />
|
||||||
|
</div>
|
||||||
|
</title-over-boarder>
|
||||||
|
</div>
|
||||||
|
<div class="right">
|
||||||
|
<title-over-boarder title="Data Source" style="height: 100%">
|
||||||
|
<div class="data-source">
|
||||||
|
<div class="data-source-main">
|
||||||
|
<div class="title">PHD</div>
|
||||||
|
<div class="content"></div>
|
||||||
|
</div>
|
||||||
|
<div class="footer mt-20">
|
||||||
|
<a-button type="primary">Set to Current</a-button>
|
||||||
|
<div class="mt-20">CallUpdate2</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</title-over-boarder>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</custom-modal>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import ModalMixin from '@/mixins/ModalMixin'
|
||||||
|
import TitleOverBoarder from '../TitleOverBoarder.vue'
|
||||||
|
import CustomChart from '@/components/CustomChart/index.vue'
|
||||||
|
|
||||||
|
const columns = [
|
||||||
|
{
|
||||||
|
title: 'Channel',
|
||||||
|
dataIndex: 'channel'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: 'Energy(keV)',
|
||||||
|
dataIndex: 'energy'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: 'Fit(keV)',
|
||||||
|
dataIndex: 'fit'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: 'Delta(%)',
|
||||||
|
dataIndex: 'delta'
|
||||||
|
}
|
||||||
|
]
|
||||||
|
|
||||||
|
const initialOption = {
|
||||||
|
grid: {
|
||||||
|
top: 20,
|
||||||
|
right: 20,
|
||||||
|
bottom: 50,
|
||||||
|
left: 70
|
||||||
|
},
|
||||||
|
title: {
|
||||||
|
text: 'Channel',
|
||||||
|
textStyle: {
|
||||||
|
color: '#8FD4F8',
|
||||||
|
fontSize: 14,
|
||||||
|
fontWeight: 'normal'
|
||||||
|
},
|
||||||
|
right: 10,
|
||||||
|
bottom: 0
|
||||||
|
},
|
||||||
|
xAxis: {
|
||||||
|
min: 42,
|
||||||
|
max: 2740,
|
||||||
|
axisLabel: {
|
||||||
|
color: '#fff'
|
||||||
|
},
|
||||||
|
axisLine: {
|
||||||
|
lineStyle: {
|
||||||
|
color: '#fff'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
splitLine: {
|
||||||
|
show: false
|
||||||
|
}
|
||||||
|
},
|
||||||
|
yAxis: {
|
||||||
|
axisLabel: {
|
||||||
|
color: '#fff'
|
||||||
|
},
|
||||||
|
axisTick: {
|
||||||
|
show: false
|
||||||
|
},
|
||||||
|
axisLine: {
|
||||||
|
lineStyle: {
|
||||||
|
color: '#fff'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
splitLine: {
|
||||||
|
show: false
|
||||||
|
},
|
||||||
|
name: 'keV',
|
||||||
|
nameLocation: 'center',
|
||||||
|
nameGap: 50,
|
||||||
|
nameTextStyle: {
|
||||||
|
color: '#8FD4F8',
|
||||||
|
fontSize: 14
|
||||||
|
}
|
||||||
|
},
|
||||||
|
series: [
|
||||||
|
{
|
||||||
|
type: 'line',
|
||||||
|
symbol: 'square',
|
||||||
|
itemStyle: {
|
||||||
|
color: '#FF0000' // 设置符号的颜色
|
||||||
|
},
|
||||||
|
lineStyle: {
|
||||||
|
color: '#C2CC11' // 设置折线的颜色
|
||||||
|
},
|
||||||
|
data: [
|
||||||
|
[42, 0],
|
||||||
|
[100, 0.2],
|
||||||
|
[978, 0.1]
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
|
||||||
|
export default {
|
||||||
|
components: { TitleOverBoarder, CustomChart },
|
||||||
|
mixins: [ModalMixin],
|
||||||
|
data() {
|
||||||
|
this.columns = columns
|
||||||
|
return {
|
||||||
|
list: [
|
||||||
|
{
|
||||||
|
energy: 'energy',
|
||||||
|
channel: 'channel',
|
||||||
|
fit: 'fit',
|
||||||
|
delta: 'delta'
|
||||||
|
}
|
||||||
|
],
|
||||||
|
option: initialOption
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="less" scoped>
|
||||||
|
.energy-calibration {
|
||||||
|
display: flex;
|
||||||
|
|
||||||
|
.left {
|
||||||
|
flex: 1;
|
||||||
|
|
||||||
|
.calibration-data {
|
||||||
|
display: flex;
|
||||||
|
gap: 20px;
|
||||||
|
|
||||||
|
.ant-form {
|
||||||
|
width: 25%;
|
||||||
|
|
||||||
|
::v-deep {
|
||||||
|
.ant-form-item {
|
||||||
|
margin-bottom: 15px;
|
||||||
|
|
||||||
|
&-label,
|
||||||
|
&-control {
|
||||||
|
line-height: 32px;
|
||||||
|
}
|
||||||
|
|
||||||
|
&:last-child {
|
||||||
|
margin-bottom: 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.ant-btn {
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.ant-table-wrapper {
|
||||||
|
width: 50%;
|
||||||
|
|
||||||
|
&.has-data {
|
||||||
|
::v-deep {
|
||||||
|
.ant-table-body {
|
||||||
|
height: 182px;
|
||||||
|
background-color: #06282a;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
::v-deep {
|
||||||
|
.ant-table-placeholder {
|
||||||
|
height: 183px;
|
||||||
|
display: flex;
|
||||||
|
justify-content: center;
|
||||||
|
align-items: center;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.operators {
|
||||||
|
width: 25%;
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
justify-content: space-between;
|
||||||
|
|
||||||
|
.ant-select {
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
.ant-btn {
|
||||||
|
width: 100%;
|
||||||
|
|
||||||
|
&:last-child {
|
||||||
|
margin-top: 10px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.equation {
|
||||||
|
height: 32px;
|
||||||
|
line-height: 32px;
|
||||||
|
text-align: center;
|
||||||
|
background-color: #1b5465;
|
||||||
|
}
|
||||||
|
|
||||||
|
.curve {
|
||||||
|
height: 400px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.right {
|
||||||
|
width: 20%;
|
||||||
|
margin-left: 20px;
|
||||||
|
|
||||||
|
.data-source {
|
||||||
|
.title {
|
||||||
|
height: 32px;
|
||||||
|
line-height: 32px;
|
||||||
|
background-color: #296d81;
|
||||||
|
padding: 0 5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.content {
|
||||||
|
height: 300px;
|
||||||
|
background-color: #275466;
|
||||||
|
}
|
||||||
|
|
||||||
|
.footer {
|
||||||
|
.ant-btn {
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
> div {
|
||||||
|
text-align: center;
|
||||||
|
height: 32px;
|
||||||
|
line-height: 32px;
|
||||||
|
background-color: #285367;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.mt-20 {
|
||||||
|
margin-top: 20px;
|
||||||
|
}
|
||||||
|
</style>
|
|
@ -0,0 +1,14 @@
|
||||||
|
<template>
|
||||||
|
<custom-modal v-model="visible" :width="700" title="Nuclide Library">
|
||||||
|
Nuclide Library
|
||||||
|
</custom-modal>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import ModalMixin from '@/mixins/ModalMixin'
|
||||||
|
export default {
|
||||||
|
mixins: [ModalMixin]
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style></style>
|
|
@ -0,0 +1,331 @@
|
||||||
|
<template>
|
||||||
|
<custom-modal v-model="visible" :width="1280" title="Resolution Calibration" :footer="null">
|
||||||
|
<div class="resolution-calibration">
|
||||||
|
<div class="left">
|
||||||
|
<!-- Calibration Data -->
|
||||||
|
<title-over-boarder title="Calibration Data">
|
||||||
|
<div class="calibration-data">
|
||||||
|
<a-form-model
|
||||||
|
:colon="false"
|
||||||
|
:labelCol="{
|
||||||
|
style: {
|
||||||
|
width: '70px',
|
||||||
|
textAlign: 'left',
|
||||||
|
flexShrink: 0
|
||||||
|
}
|
||||||
|
}"
|
||||||
|
:wrapperCol="{
|
||||||
|
style: {
|
||||||
|
flex: 1
|
||||||
|
}
|
||||||
|
}"
|
||||||
|
>
|
||||||
|
<a-form-model-item label="Energy ">
|
||||||
|
<a-input></a-input>
|
||||||
|
</a-form-model-item>
|
||||||
|
<a-form-model-item label="FWHM">
|
||||||
|
<a-input></a-input>
|
||||||
|
</a-form-model-item>
|
||||||
|
<a-form-model-item :label="' '">
|
||||||
|
<a-button type="primary">Insert</a-button>
|
||||||
|
</a-form-model-item>
|
||||||
|
<a-form-model-item :label="' '">
|
||||||
|
<a-button type="primary">Modify</a-button>
|
||||||
|
</a-form-model-item>
|
||||||
|
<a-form-model-item :label="' '">
|
||||||
|
<a-button type="primary">Delete</a-button>
|
||||||
|
</a-form-model-item>
|
||||||
|
</a-form-model>
|
||||||
|
<!-- 表格 -->
|
||||||
|
<a-table
|
||||||
|
:columns="columns"
|
||||||
|
:dataSource="list"
|
||||||
|
:pagination="false"
|
||||||
|
:class="list.length ? 'has-data' : ''"
|
||||||
|
:scroll="{ y: 182 }"
|
||||||
|
></a-table>
|
||||||
|
<!-- 表格结束 -->
|
||||||
|
<div class="operators">
|
||||||
|
<div>
|
||||||
|
<a-button type="primary">Call</a-button>
|
||||||
|
<a-button type="primary">Save</a-button>
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<a-button type="primary">Apply</a-button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</title-over-boarder>
|
||||||
|
<!-- Equation -->
|
||||||
|
<title-over-boarder class="mt-20" title="Equation">
|
||||||
|
<div class="equation">
|
||||||
|
FWHM = (0.514363 + E * 0/00281408)<sup>1/2</sup>
|
||||||
|
</div>
|
||||||
|
</title-over-boarder>
|
||||||
|
<!-- curve -->
|
||||||
|
<title-over-boarder class="mt-20" title="curve">
|
||||||
|
<div class="curve">
|
||||||
|
<custom-chart :option="option" />
|
||||||
|
</div>
|
||||||
|
</title-over-boarder>
|
||||||
|
</div>
|
||||||
|
<div class="right">
|
||||||
|
<title-over-boarder title="Data Source" style="height: 100%">
|
||||||
|
<div class="data-source">
|
||||||
|
<div class="data-source-main">
|
||||||
|
<div class="title">PHD</div>
|
||||||
|
<div class="content"></div>
|
||||||
|
</div>
|
||||||
|
<div class="footer mt-20">
|
||||||
|
<a-button type="primary">Set to Current</a-button>
|
||||||
|
<div class="mt-20">CalResUpdate</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</title-over-boarder>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</custom-modal>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import ModalMixin from '@/mixins/ModalMixin'
|
||||||
|
import TitleOverBoarder from '../TitleOverBoarder.vue'
|
||||||
|
import CustomChart from '@/components/CustomChart/index.vue'
|
||||||
|
|
||||||
|
const columns = [
|
||||||
|
{
|
||||||
|
title: 'Energy(keV)',
|
||||||
|
dataIndex: 'energy'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: 'FWHM(keV)',
|
||||||
|
dataIndex: 'fwhm'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: 'Fit(keV)',
|
||||||
|
dataIndex: 'fit'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: 'Delta(%)',
|
||||||
|
dataIndex: 'delta'
|
||||||
|
}
|
||||||
|
]
|
||||||
|
|
||||||
|
const initialOption = {
|
||||||
|
grid: {
|
||||||
|
top: 20,
|
||||||
|
right: 20,
|
||||||
|
bottom: 50,
|
||||||
|
left: 70
|
||||||
|
},
|
||||||
|
title: {
|
||||||
|
text: 'Channel',
|
||||||
|
textStyle: {
|
||||||
|
color: '#8FD4F8',
|
||||||
|
fontSize: 14,
|
||||||
|
fontWeight: 'normal'
|
||||||
|
},
|
||||||
|
right: 10,
|
||||||
|
bottom: 0
|
||||||
|
},
|
||||||
|
xAxis: {
|
||||||
|
min: 42,
|
||||||
|
max: 2740,
|
||||||
|
axisLabel: {
|
||||||
|
color: '#fff'
|
||||||
|
},
|
||||||
|
axisLine: {
|
||||||
|
lineStyle: {
|
||||||
|
color: '#fff'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
splitLine: {
|
||||||
|
show: false
|
||||||
|
}
|
||||||
|
},
|
||||||
|
yAxis: {
|
||||||
|
axisLabel: {
|
||||||
|
color: '#fff'
|
||||||
|
},
|
||||||
|
axisTick: {
|
||||||
|
show: false
|
||||||
|
},
|
||||||
|
axisLine: {
|
||||||
|
lineStyle: {
|
||||||
|
color: '#fff'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
splitLine: {
|
||||||
|
show: false
|
||||||
|
},
|
||||||
|
name: 'keV',
|
||||||
|
nameLocation: 'center',
|
||||||
|
nameGap: 50,
|
||||||
|
nameTextStyle: {
|
||||||
|
color: '#8FD4F8',
|
||||||
|
fontSize: 14
|
||||||
|
}
|
||||||
|
},
|
||||||
|
series: [
|
||||||
|
{
|
||||||
|
type: 'line',
|
||||||
|
symbol: 'square',
|
||||||
|
itemStyle: {
|
||||||
|
color: '#FF0000' // 设置符号的颜色
|
||||||
|
},
|
||||||
|
lineStyle: {
|
||||||
|
color: '#C2CC11' // 设置折线的颜色
|
||||||
|
},
|
||||||
|
data: [
|
||||||
|
[42, 0],
|
||||||
|
[100, 0.2],
|
||||||
|
[978, 0.1]
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
|
||||||
|
export default {
|
||||||
|
components: { TitleOverBoarder, CustomChart },
|
||||||
|
mixins: [ModalMixin],
|
||||||
|
data() {
|
||||||
|
this.columns = columns
|
||||||
|
return {
|
||||||
|
list: [
|
||||||
|
{
|
||||||
|
energy: 'energy',
|
||||||
|
fwhm: 'fwhm',
|
||||||
|
fit: 'fit',
|
||||||
|
delta: 'delta'
|
||||||
|
}
|
||||||
|
],
|
||||||
|
option: initialOption
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="less" scoped>
|
||||||
|
.resolution-calibration {
|
||||||
|
display: flex;
|
||||||
|
|
||||||
|
.left {
|
||||||
|
flex: 1;
|
||||||
|
|
||||||
|
.calibration-data {
|
||||||
|
display: flex;
|
||||||
|
gap: 20px;
|
||||||
|
|
||||||
|
.ant-form {
|
||||||
|
width: 25%;
|
||||||
|
|
||||||
|
::v-deep {
|
||||||
|
.ant-form-item {
|
||||||
|
margin-bottom: 15px;
|
||||||
|
|
||||||
|
&-label,
|
||||||
|
&-control {
|
||||||
|
line-height: 32px;
|
||||||
|
}
|
||||||
|
|
||||||
|
&:last-child {
|
||||||
|
margin-bottom: 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.ant-btn {
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.ant-table-wrapper {
|
||||||
|
width: 50%;
|
||||||
|
|
||||||
|
&.has-data {
|
||||||
|
::v-deep {
|
||||||
|
.ant-table-body {
|
||||||
|
height: 182px;
|
||||||
|
background-color: #06282a;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
::v-deep {
|
||||||
|
.ant-table-placeholder {
|
||||||
|
height: 183px;
|
||||||
|
display: flex;
|
||||||
|
justify-content: center;
|
||||||
|
align-items: center;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.operators {
|
||||||
|
width: 25%;
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
justify-content: space-between;
|
||||||
|
|
||||||
|
.ant-select {
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
.ant-btn {
|
||||||
|
width: 100%;
|
||||||
|
|
||||||
|
&:last-child {
|
||||||
|
margin-top: 10px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.equation {
|
||||||
|
height: 32px;
|
||||||
|
line-height: 32px;
|
||||||
|
text-align: center;
|
||||||
|
background-color: #1b5465;
|
||||||
|
}
|
||||||
|
|
||||||
|
.curve {
|
||||||
|
height: 400px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.right {
|
||||||
|
width: 20%;
|
||||||
|
margin-left: 20px;
|
||||||
|
|
||||||
|
.data-source {
|
||||||
|
.title {
|
||||||
|
height: 32px;
|
||||||
|
line-height: 32px;
|
||||||
|
background-color: #296d81;
|
||||||
|
padding: 0 5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.content {
|
||||||
|
height: 300px;
|
||||||
|
background-color: #275466;
|
||||||
|
}
|
||||||
|
|
||||||
|
.footer {
|
||||||
|
.ant-btn {
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
> div {
|
||||||
|
text-align: center;
|
||||||
|
height: 32px;
|
||||||
|
line-height: 32px;
|
||||||
|
background-color: #285367;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.mt-20 {
|
||||||
|
margin-top: 20px;
|
||||||
|
}
|
||||||
|
</style>
|
|
@ -0,0 +1,34 @@
|
||||||
|
<template>
|
||||||
|
<custom-modal v-model="visible" title="Spectrum Comments" :okHandler="handleOk" :footer="isAdd ? undefined : null">
|
||||||
|
<a-textarea v-model="comments" :rows="8" :disabled="!isAdd"></a-textarea>
|
||||||
|
</custom-modal>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import ModalMixin from '@/mixins/ModalMixin'
|
||||||
|
export default {
|
||||||
|
mixins: [ModalMixin],
|
||||||
|
props: {
|
||||||
|
isAdd: {
|
||||||
|
type: Boolean,
|
||||||
|
default: true
|
||||||
|
}
|
||||||
|
},
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
comments: ''
|
||||||
|
}
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
// ModalMixin 中的生命周期方法
|
||||||
|
beforeModalOpen() {
|
||||||
|
this.comments = ''
|
||||||
|
},
|
||||||
|
handleOk() {
|
||||||
|
console.log('%c [ ]-26', 'font-size:13px; background:pink; color:#bf2c9f;', this.comments)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style></style>
|
|
@ -126,6 +126,10 @@ export default {
|
||||||
data: {
|
data: {
|
||||||
type: Array,
|
type: Array,
|
||||||
default: () => []
|
default: () => []
|
||||||
|
},
|
||||||
|
energy: {
|
||||||
|
type: Array,
|
||||||
|
default: () => []
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
data() {
|
data() {
|
||||||
|
@ -160,6 +164,10 @@ export default {
|
||||||
if (find) {
|
if (find) {
|
||||||
this.summary.count = find.y
|
this.summary.count = find.y
|
||||||
}
|
}
|
||||||
|
const energy = this.energy[xAxis]
|
||||||
|
if(energy) {
|
||||||
|
this.summary.energy = energy[0].toFixed(2)
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
this.option.series.markLine.data = []
|
this.option.series.markLine.data = []
|
||||||
this.summary.channel = 0
|
this.summary.channel = 0
|
||||||
|
@ -252,7 +260,7 @@ export default {
|
||||||
handler(newVal) {
|
handler(newVal) {
|
||||||
this.option.series.data = newVal.map(({ x, y }) => [x, y])
|
this.option.series.data = newVal.map(({ x, y }) => [x, y])
|
||||||
|
|
||||||
const max = Math.max(...newVal.map(item => item.y))
|
const max = Math.max(...newVal.map(item => item.y)) * 1.1
|
||||||
this.option.yAxis.interval = Math.ceil(max / 4)
|
this.option.yAxis.interval = Math.ceil(max / 4)
|
||||||
this.option.yAxis.max = this.option.yAxis.interval * 4
|
this.option.yAxis.max = this.option.yAxis.interval * 4
|
||||||
},
|
},
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
<template>
|
<template>
|
||||||
<div class="spectra">
|
<div class="spectra">
|
||||||
<div
|
<div
|
||||||
:class="'spectra-item' + (item.title == innerValue ? ' active' : '')"
|
:class="'spectra-item' + (item.value == innerValue ? ' active' : '')"
|
||||||
v-for="(item, index) in list"
|
v-for="(item, index) in list"
|
||||||
:key="index"
|
:key="index"
|
||||||
@click="handleClick(item)"
|
@click="handleClick(item)"
|
||||||
|
@ -14,16 +14,20 @@
|
||||||
<script>
|
<script>
|
||||||
const list = [
|
const list = [
|
||||||
{
|
{
|
||||||
title: 'Sample Data'
|
title: 'Sample Data',
|
||||||
|
value: 'sample'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: 'GasBg Data'
|
title: 'GasBg Data',
|
||||||
|
value: 'gasbg'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: 'DetBg Data'
|
title: 'DetBg Data',
|
||||||
|
value: 'detbg'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: 'QC Data'
|
title: 'QC Data',
|
||||||
|
value: 'qc'
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
export default {
|
export default {
|
||||||
|
@ -39,7 +43,7 @@ export default {
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
handleClick(item) {
|
handleClick(item) {
|
||||||
this.innerValue = item.title
|
this.innerValue = item.value
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
computed: {
|
computed: {
|
||||||
|
|
|
@ -29,7 +29,7 @@
|
||||||
<beta-gamma-analysis
|
<beta-gamma-analysis
|
||||||
v-if="analysisType == ANALYZE_TYPE.BETA_GAMMA"
|
v-if="analysisType == ANALYZE_TYPE.BETA_GAMMA"
|
||||||
ref="betaGammaAnalysisRef"
|
ref="betaGammaAnalysisRef"
|
||||||
:data="analysisData"
|
:sample="sampleData"
|
||||||
/>
|
/>
|
||||||
<resize-observer @notify="handleResize" />
|
<resize-observer @notify="handleResize" />
|
||||||
</div>
|
</div>
|
||||||
|
@ -78,6 +78,34 @@
|
||||||
<!-- Efficiency Calibration 弹窗开始 -->
|
<!-- Efficiency Calibration 弹窗开始 -->
|
||||||
<efficiency-calibration-modal v-model="efficiencyCalibrationModalShow" />
|
<efficiency-calibration-modal v-model="efficiencyCalibrationModalShow" />
|
||||||
<!-- Efficiency Calibration 弹窗结束 -->
|
<!-- Efficiency Calibration 弹窗结束 -->
|
||||||
|
|
||||||
|
<!-- Energy Calibration 弹窗开始 -->
|
||||||
|
<energy-calibration-modal v-model="energyCalibrationModalShow" />
|
||||||
|
<!-- Energy Calibration 弹窗结束 -->
|
||||||
|
|
||||||
|
<!-- Resolution Calibration 弹窗开始 -->
|
||||||
|
<resolution-calibration-modal v-model="resolutionCalibrationModalShow" />
|
||||||
|
<!-- Resolution Calibration 弹窗结束 -->
|
||||||
|
|
||||||
|
<!-- SpectrumComments 弹窗开始 -->
|
||||||
|
<spectrum-comments-modal v-model="spectrumCommentsModalVisible" :isAdd="isSpectrumCommentsAdd" />
|
||||||
|
<!-- SpectrumComments 弹窗结束 -->
|
||||||
|
|
||||||
|
<!-- Color Config 弹窗开始 -->
|
||||||
|
<color-config-modal v-model="colorConfigModalVisible" />
|
||||||
|
<!-- Color Config 弹窗结束 -->
|
||||||
|
|
||||||
|
<!-- Data Processing Log 弹窗开始 -->
|
||||||
|
<data-processing-log-modal v-model="dataProcessingLogModalVisible" />
|
||||||
|
<!-- Data Processing Log 弹窗结束 -->
|
||||||
|
|
||||||
|
<!-- Config User Library 弹窗开始 -->
|
||||||
|
<config-user-library-modal v-model="configUserLibModalVisible" />
|
||||||
|
<!-- Config User Library 弹窗结束 -->
|
||||||
|
|
||||||
|
<!-- Config User Library 弹窗开始 -->
|
||||||
|
<nuclide-library-modal v-model="nuclideLibraryModalVisible" />
|
||||||
|
<!-- Config User Library 弹窗结束 -->
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
<script>
|
<script>
|
||||||
|
@ -92,11 +120,17 @@ import MultiLevelMenu from './components/MultiLevelMenu.vue'
|
||||||
import SaveSettingModal from './components/Modals/SaveSettingModal.vue'
|
import SaveSettingModal from './components/Modals/SaveSettingModal.vue'
|
||||||
import AnalyzeSettingModal from './components/Modals/AnalyzeSettingModal.vue'
|
import AnalyzeSettingModal from './components/Modals/AnalyzeSettingModal.vue'
|
||||||
import AnalyzeInteractiveToolModal from './components/Modals/AnalyzeInteractiveToolModal/index.vue'
|
import AnalyzeInteractiveToolModal from './components/Modals/AnalyzeInteractiveToolModal/index.vue'
|
||||||
import { getAction } from '../../api/manage'
|
|
||||||
import KorsumModal from './components/Modals/KorsumModal.vue'
|
import KorsumModal from './components/Modals/KorsumModal.vue'
|
||||||
import ReProcessingModal from './components/Modals/ReProcessingModal/index.vue'
|
import ReProcessingModal from './components/Modals/ReProcessingModal/index.vue'
|
||||||
import ZeroTimeModal from './components/Modals/ZeroTimeModal.vue'
|
import ZeroTimeModal from './components/Modals/ZeroTimeModal.vue'
|
||||||
import EfficiencyCalibrationModal from './components/Modals/EfficiencyCalibrationModal.vue'
|
import EfficiencyCalibrationModal from './components/Modals/EfficiencyCalibrationModal.vue'
|
||||||
|
import EnergyCalibrationModal from './components/Modals/EnergyCalibrationModal.vue'
|
||||||
|
import ResolutionCalibrationModal from './components/Modals/ResolutionCalibrationModal.vue'
|
||||||
|
import SpectrumCommentsModal from './components/Modals/SpectrumCommentsModal.vue'
|
||||||
|
import ColorConfigModal from './components/Modals/ColorConfigModal.vue'
|
||||||
|
import DataProcessingLogModal from './components/Modals/DataProcessingLogModal.vue'
|
||||||
|
import ConfigUserLibraryModal from './components/Modals/ConfigUserLibraryModal.vue'
|
||||||
|
import NuclideLibraryModal from './components/Modals/NuclideLibraryModal.vue'
|
||||||
|
|
||||||
// 分析类型
|
// 分析类型
|
||||||
const ANALYZE_TYPE = {
|
const ANALYZE_TYPE = {
|
||||||
|
@ -119,7 +153,14 @@ export default {
|
||||||
KorsumModal,
|
KorsumModal,
|
||||||
ReProcessingModal,
|
ReProcessingModal,
|
||||||
ZeroTimeModal,
|
ZeroTimeModal,
|
||||||
EfficiencyCalibrationModal
|
EfficiencyCalibrationModal,
|
||||||
|
EnergyCalibrationModal,
|
||||||
|
ResolutionCalibrationModal,
|
||||||
|
SpectrumCommentsModal,
|
||||||
|
ColorConfigModal,
|
||||||
|
DataProcessingLogModal,
|
||||||
|
ConfigUserLibraryModal,
|
||||||
|
NuclideLibraryModal
|
||||||
},
|
},
|
||||||
data() {
|
data() {
|
||||||
this.ANALYZE_TYPE = ANALYZE_TYPE
|
this.ANALYZE_TYPE = ANALYZE_TYPE
|
||||||
|
@ -132,7 +173,7 @@ export default {
|
||||||
loadFromDbModalVisible: false, // 从数据库加载弹窗
|
loadFromDbModalVisible: false, // 从数据库加载弹窗
|
||||||
loadFromFileModalVisible: false, // 从文件加载弹窗
|
loadFromFileModalVisible: false, // 从文件加载弹窗
|
||||||
|
|
||||||
analysisData: {}, // 要分析的谱数据
|
sampleData: {}, // 要分析的谱数据
|
||||||
|
|
||||||
peakInfomationModalVisible: false,
|
peakInfomationModalVisible: false,
|
||||||
|
|
||||||
|
@ -141,16 +182,24 @@ export default {
|
||||||
saveSettingModalVisible: false, // 保存设置弹窗
|
saveSettingModalVisible: false, // 保存设置弹窗
|
||||||
|
|
||||||
analyzeConfigureModalVisible: false, // 分析设置弹窗
|
analyzeConfigureModalVisible: false, // 分析设置弹窗
|
||||||
|
|
||||||
reprocessingModalVisible: false, // 重新分析弹窗
|
reprocessingModalVisible: false, // 重新分析弹窗
|
||||||
|
|
||||||
analyzeInteractiveToolModalVisible: false, // 分析工具弹窗
|
analyzeInteractiveToolModalVisible: false, // 分析工具弹窗
|
||||||
|
|
||||||
zeroTimeModalVisible: false, // Zero Time 弹窗
|
zeroTimeModalVisible: false, // Zero Time 弹窗
|
||||||
|
|
||||||
korsumModalShow: false, // Korsum 弹窗
|
korsumModalShow: false, // Korsum 弹窗
|
||||||
|
|
||||||
efficiencyCalibrationModalShow: false // Calibration -> efficiency弹窗
|
efficiencyCalibrationModalShow: false, // Calibration -> Efficiency 弹窗
|
||||||
|
energyCalibrationModalShow: false, // Calibration -> Energy 弹窗
|
||||||
|
resolutionCalibrationModalShow: false, // Calibration -> Resolution 弹窗
|
||||||
|
|
||||||
|
spectrumCommentsModalVisible: false, // Comments -> Spectrum Comments 弹窗
|
||||||
|
isSpectrumCommentsAdd: true, // Spectrum Comments 是否是新增
|
||||||
|
|
||||||
|
colorConfigModalVisible: false, // Help -> Color Config 弹窗
|
||||||
|
|
||||||
|
dataProcessingLogModalVisible: false, // Log -> Data Processing Log 弹窗
|
||||||
|
|
||||||
|
configUserLibModalVisible: false, // NuclideLibrary -> Config User Library 弹窗
|
||||||
|
nuclideLibraryModalVisible: true // NuclideLibrary -> Nuclide Library 弹窗
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
created() {
|
created() {
|
||||||
|
@ -162,40 +211,22 @@ export default {
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
// 从数据库加载
|
|
||||||
handleLoadFromDb() {
|
|
||||||
this.loadFromDbModalVisible = true
|
|
||||||
},
|
|
||||||
|
|
||||||
// 从数据库加载-选择完成
|
// 从数据库加载-选择完成
|
||||||
handleLoadSampleFromDB(sampleList) {
|
handleLoadSampleFromDB(sampleList) {
|
||||||
this.sampleList = sampleList
|
this.sampleList = sampleList
|
||||||
},
|
},
|
||||||
|
|
||||||
// 加载选中的样本
|
// 加载选中的样本
|
||||||
async loadSelectedSample({ dbName, sampleType, sampleId }) {
|
async loadSelectedSample(sample) {
|
||||||
// B是beta-gamma P G是gamma
|
// B是beta-gamma P G是gamma
|
||||||
if (sampleType == 'B') {
|
this.sampleData = sample
|
||||||
const { success, result, message } = await getAction('/spectrumAnalysis/getDBSpectrumChart', {
|
if (sample.sampleType == 'B') {
|
||||||
dbName,
|
|
||||||
sampleId: sampleId
|
|
||||||
})
|
|
||||||
if (success) {
|
|
||||||
this.analysisData = result.sample
|
|
||||||
this.analysisType = ANALYZE_TYPE.BETA_GAMMA
|
this.analysisType = ANALYZE_TYPE.BETA_GAMMA
|
||||||
} else {
|
|
||||||
this.$message.error(message)
|
|
||||||
}
|
|
||||||
} else {
|
} else {
|
||||||
// gamma
|
// gamma
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
// 从文件加载
|
|
||||||
handleLoadFromFile() {
|
|
||||||
this.loadFromFileModalVisible = true
|
|
||||||
},
|
|
||||||
|
|
||||||
// 清理全部
|
// 清理全部
|
||||||
handleCleanAll() {
|
handleCleanAll() {
|
||||||
this.sampleList = []
|
this.sampleList = []
|
||||||
|
@ -223,34 +254,10 @@ export default {
|
||||||
console.log('%c [ savePHDToFile ]-162', 'font-size:13px; background:pink; color:#bf2c9f;', type)
|
console.log('%c [ savePHDToFile ]-162', 'font-size:13px; background:pink; color:#bf2c9f;', type)
|
||||||
},
|
},
|
||||||
|
|
||||||
// 显示分析设置弹窗
|
|
||||||
handleShowConfigureModal() {
|
|
||||||
this.analyzeConfigureModalVisible = true
|
|
||||||
},
|
|
||||||
|
|
||||||
handleReprocessAll() {
|
handleReprocessAll() {
|
||||||
console.log('%c [ handleReprocessAll ]-216', 'font-size:13px; background:pink; color:#bf2c9f;')
|
console.log('%c [ handleReprocessAll ]-216', 'font-size:13px; background:pink; color:#bf2c9f;')
|
||||||
},
|
},
|
||||||
|
|
||||||
// 弹出能量刻度界面
|
|
||||||
handleEnergy() {
|
|
||||||
console.log('%c [ handleEnergy ]-163', 'font-size:13px; background:pink; color:#bf2c9f;')
|
|
||||||
},
|
|
||||||
|
|
||||||
// 弹出分辨率刻度界面
|
|
||||||
handleResolution() {
|
|
||||||
console.log('%c [ handleResolution ]-167', 'font-size:13px; background:pink; color:#bf2c9f;')
|
|
||||||
},
|
|
||||||
|
|
||||||
// 弹出 Nuclide Library 弹窗
|
|
||||||
handleNuclideLib() {
|
|
||||||
console.log('%c [ handleNuclideLib ]-178', 'font-size:13px; background:pink; color:#bf2c9f;')
|
|
||||||
},
|
|
||||||
|
|
||||||
handleConfigUserLib() {
|
|
||||||
console.log('%c [ handleConfigUserLib ]-182', 'font-size:13px; background:pink; color:#bf2c9f;')
|
|
||||||
},
|
|
||||||
|
|
||||||
// 查看自动处理报告
|
// 查看自动处理报告
|
||||||
handleViewARR() {
|
handleViewARR() {
|
||||||
console.log('%c [ handleViewARR ]-186', 'font-size:13px; background:pink; color:#bf2c9f;')
|
console.log('%c [ handleViewARR ]-186', 'font-size:13px; background:pink; color:#bf2c9f;')
|
||||||
|
@ -268,12 +275,14 @@ export default {
|
||||||
|
|
||||||
// 可浏览原始谱中台站操作员对样品采集和测量过程的注释信息;可以浏览分析人员对分析过程的注释信息
|
// 可浏览原始谱中台站操作员对样品采集和测量过程的注释信息;可以浏览分析人员对分析过程的注释信息
|
||||||
handleViewComments() {
|
handleViewComments() {
|
||||||
console.log('%c [ viewComments ]-162', 'font-size:13px; background:pink; color:#bf2c9f;')
|
this.spectrumCommentsModalVisible = true
|
||||||
|
this.isSpectrumCommentsAdd = false
|
||||||
},
|
},
|
||||||
|
|
||||||
// 可添加能谱分析注释
|
// 可添加能谱分析注释
|
||||||
handleAddComments() {
|
handleAddComments() {
|
||||||
console.log('%c [ handleAddComments ]-167', 'font-size:13px; background:pink; color:#bf2c9f;')
|
this.spectrumCommentsModalVisible = true
|
||||||
|
this.isSpectrumCommentsAdd = true
|
||||||
},
|
},
|
||||||
|
|
||||||
// 查看自动处理日志
|
// 查看自动处理日志
|
||||||
|
@ -281,21 +290,11 @@ export default {
|
||||||
console.log('%c [ handleAutoAnalysisLog ]-211', 'font-size:13px; background:pink; color:#bf2c9f;')
|
console.log('%c [ handleAutoAnalysisLog ]-211', 'font-size:13px; background:pink; color:#bf2c9f;')
|
||||||
},
|
},
|
||||||
|
|
||||||
// 查看交互分析日志
|
|
||||||
handleGammaViewerLog() {
|
|
||||||
console.log('%c [ handleGammaViewerLog ]-211', 'font-size:13px; background:pink; color:#bf2c9f;')
|
|
||||||
},
|
|
||||||
|
|
||||||
// 查看软件操作帮助文档
|
// 查看软件操作帮助文档
|
||||||
handleHelp() {
|
handleHelp() {
|
||||||
console.log('%c [ handleHelp ]-221', 'font-size:13px; background:pink; color:#bf2c9f;')
|
console.log('%c [ handleHelp ]-221', 'font-size:13px; background:pink; color:#bf2c9f;')
|
||||||
},
|
},
|
||||||
|
|
||||||
// 设置软件中主界面和交互分析界面中各曲线的颜色
|
|
||||||
handleLineColorConfig() {
|
|
||||||
console.log('%c [ handleLineColorConfig ]-225', 'font-size:13px; background:pink; color:#bf2c9f;')
|
|
||||||
},
|
|
||||||
|
|
||||||
handleResize() {
|
handleResize() {
|
||||||
this.$refs.gammaAnalysisRef && this.$refs.gammaAnalysisRef.resize()
|
this.$refs.gammaAnalysisRef && this.$refs.gammaAnalysisRef.resize()
|
||||||
this.$refs.betaGammaAnalysisRef && this.$refs.betaGammaAnalysisRef.resize()
|
this.$refs.betaGammaAnalysisRef && this.$refs.betaGammaAnalysisRef.resize()
|
||||||
|
@ -313,12 +312,12 @@ export default {
|
||||||
{
|
{
|
||||||
type: 'a-menu-item',
|
type: 'a-menu-item',
|
||||||
title: 'Load From DB',
|
title: 'Load From DB',
|
||||||
handler: this.handleLoadFromDb
|
handler: () => (this.loadFromDbModalVisible = true)
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
type: 'a-menu-item',
|
type: 'a-menu-item',
|
||||||
title: 'Load From File',
|
title: 'Load From File',
|
||||||
handler: this.handleLoadFromFile
|
handler: () => (this.loadFromFileModalVisible = true)
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
type: 'a-menu-item',
|
type: 'a-menu-item',
|
||||||
|
@ -415,14 +414,12 @@ export default {
|
||||||
{
|
{
|
||||||
type: 'a-menu-item',
|
type: 'a-menu-item',
|
||||||
title: 'Configure',
|
title: 'Configure',
|
||||||
handler: this.handleShowConfigureModal
|
handler: () => (this.analyzeConfigureModalVisible = true)
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
type: 'a-menu-item',
|
type: 'a-menu-item',
|
||||||
title: 'ReProcessing',
|
title: 'ReProcessing',
|
||||||
handler: () => {
|
handler: () => (this.reprocessingModalVisible = true)
|
||||||
this.reprocessingModalVisible = true
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
type: 'a-menu-item',
|
type: 'a-menu-item',
|
||||||
|
@ -432,23 +429,17 @@ export default {
|
||||||
{
|
{
|
||||||
type: 'a-menu-item',
|
type: 'a-menu-item',
|
||||||
title: 'Interactive Tool',
|
title: 'Interactive Tool',
|
||||||
handler: () => {
|
handler: () => (this.analyzeInteractiveToolModalVisible = true)
|
||||||
this.analyzeInteractiveToolModalVisible = true
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
type: 'a-menu-item',
|
type: 'a-menu-item',
|
||||||
title: 'Zero Time',
|
title: 'Zero Time',
|
||||||
handler: () => {
|
handler: () => (this.zeroTimeModalVisible = true)
|
||||||
this.zeroTimeModalVisible = true
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
type: 'a-menu-item',
|
type: 'a-menu-item',
|
||||||
title: 'Korsum',
|
title: 'Korsum',
|
||||||
handler: () => {
|
handler: () => (this.korsumModalShow = true)
|
||||||
this.korsumModalShow = true
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
@ -463,19 +454,17 @@ export default {
|
||||||
{
|
{
|
||||||
type: 'a-menu-item',
|
type: 'a-menu-item',
|
||||||
title: 'Energy',
|
title: 'Energy',
|
||||||
handler: this.handleEnergy
|
handler: () => (this.energyCalibrationModalShow = true)
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
type: 'a-menu-item',
|
type: 'a-menu-item',
|
||||||
title: 'Resolution',
|
title: 'Resolution',
|
||||||
handler: this.handleResolution
|
handler: () => (this.resolutionCalibrationModalShow = true)
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
type: 'a-menu-item',
|
type: 'a-menu-item',
|
||||||
title: 'Efficiency',
|
title: 'Efficiency',
|
||||||
handler: () => {
|
handler: () => (this.efficiencyCalibrationModalShow = true)
|
||||||
this.efficiencyCalibrationModalShow = true
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
@ -490,12 +479,12 @@ export default {
|
||||||
{
|
{
|
||||||
type: 'a-menu-item',
|
type: 'a-menu-item',
|
||||||
title: 'Nuclide Library',
|
title: 'Nuclide Library',
|
||||||
handler: this.handleNuclideLib
|
handler: () => (this.nuclideLibraryModalVisible = true)
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
type: 'a-menu-item',
|
type: 'a-menu-item',
|
||||||
title: 'Config User Library',
|
title: 'Config User Library',
|
||||||
handler: this.handleConfigUserLib
|
handler: () => (this.configUserLibModalVisible = true)
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
@ -560,7 +549,7 @@ export default {
|
||||||
{
|
{
|
||||||
type: 'a-menu-item',
|
type: 'a-menu-item',
|
||||||
title: 'GammaViewer Log',
|
title: 'GammaViewer Log',
|
||||||
handler: this.handleGammaViewerLog
|
handler: () => (this.dataProcessingLogModalVisible = true)
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
@ -579,8 +568,8 @@ export default {
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
type: 'a-menu-item',
|
type: 'a-menu-item',
|
||||||
title: 'Line Color Config',
|
title: 'Color Config',
|
||||||
handler: this.handleLineColorConfig
|
handler: () => (this.colorConfigModalVisible = true)
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue
Block a user