feat: 完成Korsum、ReProcessing、 Zero Time、EfficiencyCalibration弹窗,和NuclideReview中图表的逻辑
This commit is contained in:
parent
8fb0089be1
commit
766b4f6c04
17
src/mixins/ModalMixin.js
Normal file
17
src/mixins/ModalMixin.js
Normal file
|
@ -0,0 +1,17 @@
|
||||||
|
export default {
|
||||||
|
props: {
|
||||||
|
value: {
|
||||||
|
type: Boolean
|
||||||
|
}
|
||||||
|
},
|
||||||
|
computed: {
|
||||||
|
visible: {
|
||||||
|
get() {
|
||||||
|
return this.value
|
||||||
|
},
|
||||||
|
set(val) {
|
||||||
|
this.$emit('input', val)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -308,6 +308,41 @@ body {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 时间选择器
|
||||||
|
@time-picker-selected-bg: @primary-color;
|
||||||
|
@item-hover-bg: @primary-color;
|
||||||
|
.ant-time-picker {
|
||||||
|
&-input {
|
||||||
|
background: @modalBg;
|
||||||
|
border-radius: 0;
|
||||||
|
&::placeholder {
|
||||||
|
color: #fff;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
&-clear,
|
||||||
|
&-clock-icon {
|
||||||
|
background-color: @modalBg !important;
|
||||||
|
color: #01B6E3 !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
&-panel {
|
||||||
|
&-input {
|
||||||
|
background-color: transparent;
|
||||||
|
}
|
||||||
|
|
||||||
|
&-inner {
|
||||||
|
background-color: @modalBg;
|
||||||
|
border: 1px solid @formInputBorderColor;
|
||||||
|
border-radius: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
&-select li:focus {
|
||||||
|
color: #fff;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// 输入框样式
|
// 输入框样式
|
||||||
.ant-input {
|
.ant-input {
|
||||||
background-color: @formInputBgColor !important;
|
background-color: @formInputBgColor !important;
|
||||||
|
|
|
@ -2,38 +2,123 @@
|
||||||
<custom-chart :option="option" />
|
<custom-chart :option="option" />
|
||||||
</template>
|
</template>
|
||||||
<script>
|
<script>
|
||||||
|
import CustomChart from '@/components/CustomChart/index.vue'
|
||||||
const initialOption = {
|
const initialOption = {
|
||||||
|
grid: {
|
||||||
|
top: 40,
|
||||||
|
bottom: 50,
|
||||||
|
right: 30
|
||||||
|
},
|
||||||
|
title: {
|
||||||
|
text: 'Energy',
|
||||||
|
textStyle: {
|
||||||
|
color: '#8FD4F8',
|
||||||
|
fontSize: 14,
|
||||||
|
fontWeight: 'normal'
|
||||||
|
},
|
||||||
|
right: 10,
|
||||||
|
bottom: 5
|
||||||
|
},
|
||||||
xAxis: {
|
xAxis: {
|
||||||
|
min: 620.68,
|
||||||
|
max: 629.16,
|
||||||
|
splitNumber: 3,
|
||||||
|
axisLine: {
|
||||||
|
lineStyle: {
|
||||||
|
color: '#fff'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
splitLine: {
|
||||||
|
show: false
|
||||||
|
},
|
||||||
axisLabel: {
|
axisLabel: {
|
||||||
color: '#fff'
|
color: '#fff'
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
yAxis: {
|
yAxis: {
|
||||||
min: 2030.0,
|
min: 417,
|
||||||
max: 2427.6,
|
max: 327,
|
||||||
splitNumber: 1,
|
interval: 90,
|
||||||
|
axisLine: {
|
||||||
|
lineStyle: {
|
||||||
|
color: '#fff'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
splitLine: {
|
||||||
|
show: false
|
||||||
|
},
|
||||||
axisLabel: {
|
axisLabel: {
|
||||||
color: '#fff'
|
color: '#fff'
|
||||||
|
},
|
||||||
|
axisTick: {
|
||||||
|
show: false
|
||||||
|
},
|
||||||
|
name: 'Counts',
|
||||||
|
nameTextStyle: {
|
||||||
|
color: '#8FD4F8',
|
||||||
|
fontSize: 14
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
series: [
|
series: [
|
||||||
{
|
{
|
||||||
type: 'line',
|
type: 'line',
|
||||||
data: [],
|
data: [
|
||||||
|
[620.68, 410],
|
||||||
|
[621.98, 390],
|
||||||
|
[622.12, 337],
|
||||||
|
[623.53, 400],
|
||||||
|
[624.37, 410],
|
||||||
|
[625.37, 410],
|
||||||
|
[626.37, 410],
|
||||||
|
[627.37, 410],
|
||||||
|
[628.37, 410]
|
||||||
|
],
|
||||||
itemStyle: {
|
itemStyle: {
|
||||||
color: '#8BB93C'
|
color: '#8BB93C'
|
||||||
|
},
|
||||||
|
symbol: 'none',
|
||||||
|
markLine: {
|
||||||
|
data: [
|
||||||
|
{
|
||||||
|
xAxis: 625.14,
|
||||||
|
label: {
|
||||||
|
formatter: '{c} keV',
|
||||||
|
color: '#f00',
|
||||||
|
fontWeight: 'bold',
|
||||||
|
fontSize: 14
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
symbol: 'none',
|
||||||
|
lineStyle: {
|
||||||
|
color: '#f00'
|
||||||
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
type: 'line',
|
type: 'line',
|
||||||
data: [],
|
data: [
|
||||||
|
[620.68, 367],
|
||||||
|
[622, 367],
|
||||||
|
[623, 367],
|
||||||
|
[624, 367],
|
||||||
|
[625, 367],
|
||||||
|
[626, 367],
|
||||||
|
[627, 367],
|
||||||
|
[628, 367],
|
||||||
|
[629, 367]
|
||||||
|
],
|
||||||
itemStyle: {
|
itemStyle: {
|
||||||
color: '#03DBE6'
|
color: '#8FD4F8'
|
||||||
}
|
},
|
||||||
|
symbol: 'none'
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
export default {
|
export default {
|
||||||
|
components: {
|
||||||
|
CustomChart
|
||||||
|
},
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
option: initialOption
|
option: initialOption
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
<template>
|
<template>
|
||||||
<custom-modal v-model="visible" :width="1200" title="Nuclide Review" :footer="null">
|
<custom-modal v-model="visible" :width="1200" title="Nuclide Review" :footer="null">
|
||||||
<div class="nuclide-review-search">
|
<div class="nuclide-review-search">
|
||||||
<span><</span>
|
<span @click="handleNuclideChange('prev')"><</span>
|
||||||
<a-form-model layout="inline">
|
<a-form-model layout="inline">
|
||||||
<a-form-model-item label="Energy">
|
<a-form-model-item label="Energy">
|
||||||
<a-input-number></a-input-number>
|
<a-input-number></a-input-number>
|
||||||
|
@ -11,7 +11,7 @@
|
||||||
</a-form-model-item>
|
</a-form-model-item>
|
||||||
<a-button type="primary">Search</a-button>
|
<a-button type="primary">Search</a-button>
|
||||||
</a-form-model>
|
</a-form-model>
|
||||||
<span>></span>
|
<span @click="handleNuclideChange('next')">></span>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!-- 以下是表格部分 -->
|
<!-- 以下是表格部分 -->
|
||||||
|
@ -22,9 +22,9 @@
|
||||||
<div
|
<div
|
||||||
class="nuclide-review-table-nuclide-item"
|
class="nuclide-review-table-nuclide-item"
|
||||||
:class="currNuclide == item ? 'active' : ''"
|
:class="currNuclide == item ? 'active' : ''"
|
||||||
v-for="item in nuclideList"
|
v-for="(item, index) in nuclideList"
|
||||||
:key="item.id"
|
:key="item.id"
|
||||||
@click="handleNuclideClick(item)"
|
@click="handleNuclideClick(index)"
|
||||||
>
|
>
|
||||||
{{ item.title }}
|
{{ item.title }}
|
||||||
</div>
|
</div>
|
||||||
|
@ -36,7 +36,7 @@
|
||||||
<a-row>
|
<a-row>
|
||||||
<a-col :span="6">
|
<a-col :span="6">
|
||||||
<a-form-model-item label="Name">
|
<a-form-model-item label="Name">
|
||||||
1
|
{{ currNuclide.title }}
|
||||||
</a-form-model-item>
|
</a-form-model-item>
|
||||||
</a-col>
|
</a-col>
|
||||||
<a-col :span="6">
|
<a-col :span="6">
|
||||||
|
@ -71,20 +71,32 @@
|
||||||
|
|
||||||
<!-- 以下是图表部分 -->
|
<!-- 以下是图表部分 -->
|
||||||
<div class="nuclide-review-chart">
|
<div class="nuclide-review-chart">
|
||||||
<a-row>
|
<div class="nuclide-review-chart-prev">
|
||||||
<a-col :span="8"></a-col>
|
<span @click="handleChangeChart('prev')">
|
||||||
<a-col :span="8"></a-col>
|
<
|
||||||
<a-col :span="8"></a-col>
|
</span>
|
||||||
|
</div>
|
||||||
|
<a-row class="nuclide-review-chart-list">
|
||||||
|
<a-col class="nuclide-review-chart-item" :span="8" v-for="(chartItem, index) in currChartList" :key="index">
|
||||||
|
<p>Line{{ chartItem.id }}</p>
|
||||||
|
<div class="nuclide-review-chart-item-chart" :class="currTableItem.id == chartItem.id ? 'active' : ''">
|
||||||
|
<nuclide-review-chart />
|
||||||
|
</div>
|
||||||
|
<p>Abundance: {{ chartItem.abundance }}</p>
|
||||||
|
</a-col>
|
||||||
</a-row>
|
</a-row>
|
||||||
|
<div class="nuclide-review-chart-next">
|
||||||
<div class="nuclide-review-chart-prev"></div>
|
<span @click="handleChangeChart('next')">
|
||||||
<div class="nuclide-review-chart-next"></div>
|
>
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<!-- 图表部分结束 -->
|
<!-- 图表部分结束 -->
|
||||||
</custom-modal>
|
</custom-modal>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
|
import NuclideReviewChart from './NuclideReviewChart.vue'
|
||||||
const columns = [
|
const columns = [
|
||||||
{
|
{
|
||||||
title: 'Id',
|
title: 'Id',
|
||||||
|
@ -112,7 +124,7 @@ const columns = [
|
||||||
width: '15%'
|
width: '15%'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: 'AbundanceErr(%)',
|
title: 'Abundance Err(%)',
|
||||||
dataIndex: 'abundanceErr',
|
dataIndex: 'abundanceErr',
|
||||||
width: '15%'
|
width: '15%'
|
||||||
},
|
},
|
||||||
|
@ -123,6 +135,7 @@ const columns = [
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
export default {
|
export default {
|
||||||
|
components: { NuclideReviewChart },
|
||||||
props: {
|
props: {
|
||||||
value: {
|
value: {
|
||||||
type: Boolean
|
type: Boolean
|
||||||
|
@ -134,87 +147,234 @@ export default {
|
||||||
nuclideList: [
|
nuclideList: [
|
||||||
{
|
{
|
||||||
id: 1,
|
id: 1,
|
||||||
title: 'Ag111'
|
title: 'Ag111',
|
||||||
|
data: [
|
||||||
|
{
|
||||||
|
id: '1',
|
||||||
|
fullName: 'fullName',
|
||||||
|
energy: 'energy',
|
||||||
|
energyErr: 'energyErr',
|
||||||
|
abundance: 'abundance',
|
||||||
|
abundanceErr: 'abundanceErr',
|
||||||
|
keyLine: 'keyLine'
|
||||||
|
}
|
||||||
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
id: 2,
|
id: 2,
|
||||||
title: 'Eu157'
|
title: 'Eu157',
|
||||||
|
data: [
|
||||||
|
{
|
||||||
|
id: '1',
|
||||||
|
fullName: 'fullName',
|
||||||
|
energy: 'energy',
|
||||||
|
energyErr: 'energyErr',
|
||||||
|
abundance: 'abundance',
|
||||||
|
abundanceErr: 'abundanceErr',
|
||||||
|
keyLine: 'keyLine'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: '2',
|
||||||
|
fullName: 'fullName',
|
||||||
|
energy: 'energy',
|
||||||
|
energyErr: 'energyErr',
|
||||||
|
abundance: 'abundance',
|
||||||
|
abundanceErr: 'abundanceErr',
|
||||||
|
keyLine: 'keyLine'
|
||||||
|
}
|
||||||
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
id: 3,
|
id: 3,
|
||||||
title: 'Mo99'
|
title: 'Mo99',
|
||||||
|
data: [
|
||||||
|
{
|
||||||
|
id: '1',
|
||||||
|
fullName: 'fullName',
|
||||||
|
energy: 'energy',
|
||||||
|
energyErr: 'energyErr',
|
||||||
|
abundance: 'abundance',
|
||||||
|
abundanceErr: 'abundanceErr',
|
||||||
|
keyLine: 'keyLine'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: '2',
|
||||||
|
fullName: 'fullName',
|
||||||
|
energy: 'energy',
|
||||||
|
energyErr: 'energyErr',
|
||||||
|
abundance: 'abundance',
|
||||||
|
abundanceErr: 'abundanceErr',
|
||||||
|
keyLine: 'keyLine'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: '3',
|
||||||
|
fullName: 'fullName',
|
||||||
|
energy: 'energy',
|
||||||
|
energyErr: 'energyErr',
|
||||||
|
abundance: 'abundance',
|
||||||
|
abundanceErr: 'abundanceErr',
|
||||||
|
keyLine: 'keyLine'
|
||||||
|
}
|
||||||
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
id: 4,
|
id: 4,
|
||||||
title: 'Pb204M'
|
title: 'Pb204M',
|
||||||
},
|
data: [
|
||||||
{
|
{
|
||||||
id: 5,
|
id: '1',
|
||||||
title: 'Pb204M'
|
fullName: 'fullName',
|
||||||
},
|
energy: 'energy',
|
||||||
{
|
energyErr: 'energyErr',
|
||||||
id: 6,
|
abundance: 'abundance',
|
||||||
title: 'Pb204M'
|
abundanceErr: 'abundanceErr',
|
||||||
},
|
keyLine: 'keyLine'
|
||||||
{
|
},
|
||||||
id: 7,
|
{
|
||||||
title: 'Pb204M'
|
id: '2',
|
||||||
},
|
fullName: 'fullName',
|
||||||
{
|
energy: 'energy',
|
||||||
id: 8,
|
energyErr: 'energyErr',
|
||||||
title: 'Pb204M'
|
abundance: 'abundance',
|
||||||
},
|
abundanceErr: 'abundanceErr',
|
||||||
{
|
keyLine: 'keyLine'
|
||||||
id: 9,
|
},
|
||||||
title: 'Pb204M'
|
{
|
||||||
}
|
id: '3',
|
||||||
],
|
fullName: 'fullName',
|
||||||
list: [
|
energy: 'energy',
|
||||||
{
|
energyErr: 'energyErr',
|
||||||
id: '1',
|
abundance: 'abundance',
|
||||||
fullName: 'fullName',
|
abundanceErr: 'abundanceErr',
|
||||||
energy: 'energy',
|
keyLine: 'keyLine'
|
||||||
energyErr: 'energyErr',
|
},
|
||||||
abundance: 'abundance',
|
{
|
||||||
abundanceErr: 'abundanceErr',
|
id: '4',
|
||||||
keyLine: 'keyLine'
|
fullName: 'fullName',
|
||||||
},
|
energy: 'energy',
|
||||||
{
|
energyErr: 'energyErr',
|
||||||
id: '2',
|
abundance: 'abundance',
|
||||||
fullName: 'fullName',
|
abundanceErr: 'abundanceErr',
|
||||||
energy: 'energy',
|
keyLine: 'keyLine'
|
||||||
energyErr: 'energyErr',
|
},
|
||||||
abundance: 'abundance',
|
{
|
||||||
abundanceErr: 'abundanceErr',
|
id: '5',
|
||||||
keyLine: 'keyLine'
|
fullName: 'fullName',
|
||||||
},
|
energy: 'energy',
|
||||||
{
|
energyErr: 'energyErr',
|
||||||
id: '3',
|
abundance: 'abundance',
|
||||||
fullName: 'fullName',
|
abundanceErr: 'abundanceErr',
|
||||||
energy: 'energy',
|
keyLine: 'keyLine'
|
||||||
energyErr: 'energyErr',
|
},
|
||||||
abundance: 'abundance',
|
{
|
||||||
abundanceErr: 'abundanceErr',
|
id: '6',
|
||||||
keyLine: 'keyLine'
|
fullName: 'fullName',
|
||||||
|
energy: 'energy',
|
||||||
|
energyErr: 'energyErr',
|
||||||
|
abundance: 'abundance',
|
||||||
|
abundanceErr: 'abundanceErr',
|
||||||
|
keyLine: 'keyLine'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: '7',
|
||||||
|
fullName: 'fullName',
|
||||||
|
energy: 'energy',
|
||||||
|
energyErr: 'energyErr',
|
||||||
|
abundance: 'abundance',
|
||||||
|
abundanceErr: 'abundanceErr',
|
||||||
|
keyLine: 'keyLine'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: '8',
|
||||||
|
fullName: 'fullName',
|
||||||
|
energy: 'energy',
|
||||||
|
energyErr: 'energyErr',
|
||||||
|
abundance: 'abundance',
|
||||||
|
abundanceErr: 'abundanceErr',
|
||||||
|
keyLine: 'keyLine'
|
||||||
|
}
|
||||||
|
]
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
|
list: [], // 表格里的数据
|
||||||
currNuclide: {},
|
currNuclide: {},
|
||||||
|
|
||||||
currTableItem: {} // 选中的表格中的行
|
currTableItem: {}, // 选中的表格中的行
|
||||||
|
|
||||||
|
currChartList: [] // 当前展示的图表的列表,一般是3个
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
handleNuclideClick(item) {
|
// 搜索栏的向前/向后按钮
|
||||||
this.currNuclide = item
|
handleNuclideChange(direction) {
|
||||||
|
const currIndex = this.nuclideList.findIndex(item => item == this.currNuclide)
|
||||||
|
if (direction == 'prev' && currIndex > 0) {
|
||||||
|
this.handleNuclideClick(currIndex - 1)
|
||||||
|
} else if (direction == 'next' && currIndex !== this.nuclideList.length - 1) {
|
||||||
|
this.handleNuclideClick(currIndex + 1)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
handleNuclideClick(index) {
|
||||||
|
this.currNuclide = this.nuclideList[index]
|
||||||
|
this.list = this.currNuclide.data
|
||||||
|
|
||||||
|
this.selectTableRow(0)
|
||||||
|
},
|
||||||
|
|
||||||
|
selectTableRow(index) {
|
||||||
|
const record = this.list[index]
|
||||||
|
this.currTableItem = record
|
||||||
|
|
||||||
|
let startIndex = 0
|
||||||
|
let endIndex = 0
|
||||||
|
if (index == 0) {
|
||||||
|
// 选中了第一个,则往后数三个
|
||||||
|
endIndex = startIndex + 3
|
||||||
|
} else if (index == this.list.length - 1) {
|
||||||
|
// 选中了最后一个,则往前数三个
|
||||||
|
endIndex = index + 1
|
||||||
|
startIndex = endIndex - 3
|
||||||
|
} else {
|
||||||
|
startIndex = index - 1
|
||||||
|
endIndex = index + 2
|
||||||
|
}
|
||||||
|
if (startIndex < 0) {
|
||||||
|
startIndex = 0
|
||||||
|
}
|
||||||
|
this.currChartList = this.list.slice(startIndex, endIndex)
|
||||||
|
},
|
||||||
|
|
||||||
|
// 向前/向后切换图表
|
||||||
|
handleChangeChart(direction) {
|
||||||
|
const currIndex = this.list.findIndex(item => item == this.currTableItem)
|
||||||
|
if (direction == 'prev') {
|
||||||
|
const willJumpIndex = currIndex - 3
|
||||||
|
if (willJumpIndex >= 0) {
|
||||||
|
this.selectTableRow(willJumpIndex)
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
this.selectTableRow(0)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (direction == 'next') {
|
||||||
|
const willJumpIndex = currIndex + 3
|
||||||
|
if (willJumpIndex <= this.list.length - 2) {
|
||||||
|
this.selectTableRow(willJumpIndex)
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
this.selectTableRow(this.list.length - 1)
|
||||||
|
}
|
||||||
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
// 实现单击选中/反选功能
|
// 实现单击选中/反选功能
|
||||||
customRow(record) {
|
customRow(record, index) {
|
||||||
return {
|
return {
|
||||||
class: 'custom-table-row' + (this.currTableItem == record ? ' ant-table-row-selected' : ''),
|
class: 'custom-table-row' + (this.currTableItem == record ? ' ant-table-row-selected' : ''),
|
||||||
on: {
|
on: {
|
||||||
click: () => {
|
click: () => {
|
||||||
this.currTableItem = record
|
this.selectTableRow(index)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -294,6 +454,7 @@ export default {
|
||||||
height: 30px;
|
height: 30px;
|
||||||
line-height: 30px;
|
line-height: 30px;
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
|
user-select: none;
|
||||||
|
|
||||||
&.active {
|
&.active {
|
||||||
background-color: #296d81;
|
background-color: #296d81;
|
||||||
|
@ -347,9 +508,52 @@ export default {
|
||||||
margin-top: 20px;
|
margin-top: 20px;
|
||||||
height: 300px;
|
height: 300px;
|
||||||
background-color: #05354c;
|
background-color: #05354c;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
|
||||||
|
&-list {
|
||||||
|
flex: 1;
|
||||||
|
height: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
&-item {
|
&-item {
|
||||||
width: 33%;
|
height: 100%;
|
||||||
|
p {
|
||||||
|
height: 30px;
|
||||||
|
line-height: 30px;
|
||||||
|
font-size: 16px;
|
||||||
|
text-align: center;
|
||||||
|
margin-bottom: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
&-chart {
|
||||||
|
height: calc(100% - 60px);
|
||||||
|
border: 4px solid transparent;
|
||||||
|
|
||||||
|
&.active {
|
||||||
|
background-color: #0a6f82;
|
||||||
|
border-color: #0d8696;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
&-prev,
|
||||||
|
&-next {
|
||||||
|
width: 40px;
|
||||||
|
text-align: center;
|
||||||
|
|
||||||
|
span {
|
||||||
|
display: inline-block;
|
||||||
|
color: @primary-color;
|
||||||
|
width: 30px;
|
||||||
|
height: 30px;
|
||||||
|
border: 1px solid @primary-color;
|
||||||
|
border-radius: 50%;
|
||||||
|
text-align: center;
|
||||||
|
font-size: 20px;
|
||||||
|
cursor: pointer;
|
||||||
|
user-select: none;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -8,7 +8,9 @@
|
||||||
<div class="thumbnail"></div>
|
<div class="thumbnail"></div>
|
||||||
<div class="table">
|
<div class="table">
|
||||||
<p class="title">
|
<p class="title">
|
||||||
< 6 Peaks with Anthro.Nuclides >
|
<span @click="handleChangeMarkLine('prev')">< </span>
|
||||||
|
6 Peaks with Anthro.Nuclides
|
||||||
|
<span @click="handleChangeMarkLine('next')">></span>
|
||||||
</p>
|
</p>
|
||||||
<custom-table
|
<custom-table
|
||||||
:class="list.length ? 'has-data' : ''"
|
:class="list.length ? 'has-data' : ''"
|
||||||
|
@ -19,7 +21,7 @@
|
||||||
>
|
>
|
||||||
</custom-table>
|
</custom-table>
|
||||||
<div class="operators">
|
<div class="operators">
|
||||||
<a-button type="primary">Nuclide Review Window</a-button>
|
<a-button type="primary" @click="nuclideReviewModalVisible = true">Nuclide Review Window</a-button>
|
||||||
<a-button type="primary" @click="handleAddComment('Peak')">Add Peak Comment</a-button>
|
<a-button type="primary" @click="handleAddComment('Peak')">Add Peak Comment</a-button>
|
||||||
<a-button type="primary" @click="handleAddComment('General')">Add General Comment</a-button>
|
<a-button type="primary" @click="handleAddComment('General')">Add General Comment</a-button>
|
||||||
</div>
|
</div>
|
||||||
|
@ -41,8 +43,8 @@
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="peak-box-item symbol" :key="4">
|
<div class="peak-box-item symbol" :key="4">
|
||||||
<a-button type="primary"><</a-button>
|
<a-button type="primary" @click="handleChangeMarkLine('prev')"><</a-button>
|
||||||
<a-button type="primary">></a-button>
|
<a-button type="primary" @click="handleChangeMarkLine('next')">></a-button>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="peak-box-item base-line">
|
<div class="peak-box-item base-line">
|
||||||
|
@ -178,6 +180,20 @@ const initialOption = {
|
||||||
data: [],
|
data: [],
|
||||||
itemStyle: {
|
itemStyle: {
|
||||||
color: '#FCFE02'
|
color: '#FCFE02'
|
||||||
|
},
|
||||||
|
markLine: {
|
||||||
|
data: [
|
||||||
|
{
|
||||||
|
xAxis: 1000
|
||||||
|
}
|
||||||
|
],
|
||||||
|
symbol: 'none',
|
||||||
|
lineStyle: {
|
||||||
|
color: '#f00'
|
||||||
|
},
|
||||||
|
label: {
|
||||||
|
show: false
|
||||||
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
@ -257,16 +273,7 @@ export default {
|
||||||
this.columns = columns
|
this.columns = columns
|
||||||
return {
|
return {
|
||||||
option: initialOption,
|
option: initialOption,
|
||||||
list: new Array(500).fill(0).map((_, index) => ({
|
list: [],
|
||||||
id: index.toString(),
|
|
||||||
energy: 'energy',
|
|
||||||
centroid: 'centroid',
|
|
||||||
fwhm: 'fwhm',
|
|
||||||
area: 'area',
|
|
||||||
detectability: 'detectability',
|
|
||||||
cmnt: 'cmnt',
|
|
||||||
nuclides: 'nuclides'
|
|
||||||
})),
|
|
||||||
commentModalVisible: false, // Comment 弹窗是否显示
|
commentModalVisible: false, // Comment 弹窗是否显示
|
||||||
commentType: 'Peak',
|
commentType: 'Peak',
|
||||||
|
|
||||||
|
@ -275,10 +282,28 @@ export default {
|
||||||
selectedKeys: [], // 选中的列表
|
selectedKeys: [], // 选中的列表
|
||||||
|
|
||||||
fitPeaksAndBaselineModalVisible: false, // Fit Peaks And Base Line 弹窗
|
fitPeaksAndBaselineModalVisible: false, // Fit Peaks And Base Line 弹窗
|
||||||
nuclideReviewModalVisible: true // Nuclide Review 弹窗
|
nuclideReviewModalVisible: false // Nuclide Review 弹窗
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
|
// 切换图表上的红色竖线
|
||||||
|
handleChangeMarkLine(direction) {
|
||||||
|
if (direction == 'prev') {
|
||||||
|
this.option.series[0].markLine.data[0].xAxis = 900
|
||||||
|
} else if (direction == 'next') {
|
||||||
|
this.option.series[0].markLine.data[0].xAxis = 1100
|
||||||
|
}
|
||||||
|
this.list = new Array(20).fill(0).map((_, index) => ({
|
||||||
|
id: index.toString(),
|
||||||
|
energy: 'energy',
|
||||||
|
centroid: 'centroid',
|
||||||
|
fwhm: 'fwhm',
|
||||||
|
area: 'area',
|
||||||
|
detectability: 'detectability',
|
||||||
|
cmnt: 'cmnt',
|
||||||
|
nuclides: 'nuclides'
|
||||||
|
}))
|
||||||
|
},
|
||||||
// 显示comment弹窗
|
// 显示comment弹窗
|
||||||
handleAddComment(type) {
|
handleAddComment(type) {
|
||||||
this.commentType = type
|
this.commentType = type
|
||||||
|
@ -339,6 +364,11 @@ export default {
|
||||||
font-size: 20px;
|
font-size: 20px;
|
||||||
text-align: center;
|
text-align: center;
|
||||||
margin-bottom: 10px;
|
margin-bottom: 10px;
|
||||||
|
|
||||||
|
span {
|
||||||
|
cursor: pointer;
|
||||||
|
margin: 0 5px;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.custom-table {
|
.custom-table {
|
||||||
|
|
|
@ -0,0 +1,333 @@
|
||||||
|
<template>
|
||||||
|
<custom-modal v-model="visible" :width="1280" title="Efficiency Calibration" :footer="null">
|
||||||
|
<div class="efficiency-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="Efficiency">
|
||||||
|
<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-select :value="''">
|
||||||
|
<a-select-option value="">
|
||||||
|
Interpolation
|
||||||
|
</a-select-option>
|
||||||
|
</a-select>
|
||||||
|
<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">
|
||||||
|
Efficiency = 59.541 + (88.034 - 59.541) * (E - 1)/ (0.058243 - 1)
|
||||||
|
</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">PHD</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: 'Efficiency',
|
||||||
|
dataIndex: 'efficiency'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: 'Fit',
|
||||||
|
dataIndex: 'fit'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: 'Delta(%)',
|
||||||
|
dataIndex: 'delta'
|
||||||
|
}
|
||||||
|
]
|
||||||
|
|
||||||
|
const initialOption = {
|
||||||
|
grid: {
|
||||||
|
top: 20,
|
||||||
|
right: 20,
|
||||||
|
bottom: 50,
|
||||||
|
left: 70
|
||||||
|
},
|
||||||
|
title: {
|
||||||
|
text: 'Energy(keV)',
|
||||||
|
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: 'Efficiency',
|
||||||
|
nameLocation: 'center',
|
||||||
|
nameGap: 50,
|
||||||
|
nameTextStyle: {
|
||||||
|
color: '#8FD4F8',
|
||||||
|
fontSize: 14
|
||||||
|
}
|
||||||
|
},
|
||||||
|
series: [
|
||||||
|
{
|
||||||
|
type: 'line',
|
||||||
|
itemStyle: {
|
||||||
|
color: '#EDF005'
|
||||||
|
},
|
||||||
|
data: [
|
||||||
|
[42, 0],
|
||||||
|
[100, 0.2],
|
||||||
|
[978, 0.1]
|
||||||
|
],
|
||||||
|
color: 'red'
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
|
||||||
|
export default {
|
||||||
|
components: { TitleOverBoarder, CustomChart },
|
||||||
|
mixins: [ModalMixin],
|
||||||
|
data() {
|
||||||
|
this.columns = columns
|
||||||
|
return {
|
||||||
|
list: [
|
||||||
|
{
|
||||||
|
energy: 'energy',
|
||||||
|
efficiency: 'efficiency',
|
||||||
|
fit: 'fit',
|
||||||
|
delta: 'delta'
|
||||||
|
}
|
||||||
|
],
|
||||||
|
option: initialOption
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="less" scoped>
|
||||||
|
.efficiency-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: 300px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.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>
|
465
src/views/spectrumAnalysis/components/Modals/KorsumModal.vue
Normal file
465
src/views/spectrumAnalysis/components/Modals/KorsumModal.vue
Normal file
|
@ -0,0 +1,465 @@
|
||||||
|
<template>
|
||||||
|
<custom-modal v-model="visible" title="Korsum" :width="1120" :footer="null">
|
||||||
|
<div class="korsum">
|
||||||
|
<!-- 输入开始 -->
|
||||||
|
<title-over-boarder title="Input">
|
||||||
|
<div class="korsum-input">
|
||||||
|
<!-- 公式部分 -->
|
||||||
|
<a-form-model
|
||||||
|
class="korsum-input-formula"
|
||||||
|
:labelCol="{
|
||||||
|
style: {
|
||||||
|
width: '110px'
|
||||||
|
}
|
||||||
|
}"
|
||||||
|
>
|
||||||
|
<a-form-model-item label="Total Effi = exp(">
|
||||||
|
<!-- 第一行 -->
|
||||||
|
<div>
|
||||||
|
<a-input-number v-model="formula.totalEffi[0]"></a-input-number>
|
||||||
|
<span class="operator">* Er + </span>
|
||||||
|
<a-input-number v-model="formula.totalEffi[1]"></a-input-number>
|
||||||
|
<span class="operator">+ </span>
|
||||||
|
</div>
|
||||||
|
<!-- 第二行 -->
|
||||||
|
<div>
|
||||||
|
<a-input-number v-model="formula.totalEffi[2]"></a-input-number>
|
||||||
|
<span class="operator">/ Er + </span>
|
||||||
|
<a-input-number v-model="formula.totalEffi[3]"></a-input-number>
|
||||||
|
<span class="operator">/ Er <sup>2</sup> + </span>
|
||||||
|
</div>
|
||||||
|
<!-- 第三行 -->
|
||||||
|
<div>
|
||||||
|
<a-input-number v-model="formula.totalEffi[4]"></a-input-number>
|
||||||
|
<span class="operator"> / Er <sup>3</sup> + </span>
|
||||||
|
<a-input-number v-model="formula.totalEffi[5]"></a-input-number>
|
||||||
|
<span class="operator">/ Er <sup>4</sup> ) </span>
|
||||||
|
</div>
|
||||||
|
</a-form-model-item>
|
||||||
|
<a-form-model-item label="Efficiency = exp(">
|
||||||
|
<!-- 第一行 -->
|
||||||
|
<div>
|
||||||
|
<a-input-number v-model="formula.efficiency[0]"></a-input-number>
|
||||||
|
<span class="operator">* Er + </span>
|
||||||
|
<a-input-number v-model="formula.efficiency[1]"></a-input-number>
|
||||||
|
<span class="operator">+ </span>
|
||||||
|
</div>
|
||||||
|
<!-- 第二行 -->
|
||||||
|
<div>
|
||||||
|
<a-input-number v-model="formula.efficiency[2]"></a-input-number>
|
||||||
|
<span class="operator">/ Er + </span>
|
||||||
|
<a-input-number v-model="formula.efficiency[3]"></a-input-number>
|
||||||
|
<span class="operator">/ Er <sup>2</sup> + </span>
|
||||||
|
</div>
|
||||||
|
<!-- 第三行 -->
|
||||||
|
<div>
|
||||||
|
<a-input-number v-model="formula.efficiency[4]"></a-input-number>
|
||||||
|
<span class="operator"> / Er <sup>3</sup> + </span>
|
||||||
|
<a-input-number v-model="formula.efficiency[5]"></a-input-number>
|
||||||
|
<span class="operator">/ Er <sup>4</sup> ) </span>
|
||||||
|
</div>
|
||||||
|
</a-form-model-item>
|
||||||
|
</a-form-model>
|
||||||
|
<!-- 公式结束 -->
|
||||||
|
|
||||||
|
<!-- 标题 -->
|
||||||
|
<p class="korsum-input-title">
|
||||||
|
Input
|
||||||
|
</p>
|
||||||
|
<!-- 标题结束 -->
|
||||||
|
|
||||||
|
<!-- 表格开始 -->
|
||||||
|
<a-table
|
||||||
|
class="korsum-input-table"
|
||||||
|
:class="list.length ? 'has-data' : ''"
|
||||||
|
:columns="columns"
|
||||||
|
:dataSource="list"
|
||||||
|
:scroll="{ y: 288 }"
|
||||||
|
:pagination="false"
|
||||||
|
>
|
||||||
|
<template slot="energy" slot-scope="text, record">
|
||||||
|
<a-input-number v-model="record.energy"></a-input-number>
|
||||||
|
</template>
|
||||||
|
<template slot="totalEfficiency" slot-scope="text, record">
|
||||||
|
<a-input-number v-model="record.totalEfficiency"></a-input-number>
|
||||||
|
</template>
|
||||||
|
<template slot="peakEfficiency" slot-scope="text, record">
|
||||||
|
<a-input-number v-model="record.peakEfficiency"></a-input-number>
|
||||||
|
</template>
|
||||||
|
<template slot="uncertainty" slot-scope="text, record">
|
||||||
|
<a-input-number v-model="record.uncertainty"></a-input-number>
|
||||||
|
</template>
|
||||||
|
</a-table>
|
||||||
|
<!-- 表格结束 -->
|
||||||
|
|
||||||
|
<!-- 按钮开始 -->
|
||||||
|
<div class="korsum-input-buttons">
|
||||||
|
<a-button type="primary" @click="handleAnalyze">Analyse</a-button>
|
||||||
|
<a-button type="primary" @click="handleExit">Exit</a-button>
|
||||||
|
</div>
|
||||||
|
<!-- 按钮结束 -->
|
||||||
|
</div>
|
||||||
|
</title-over-boarder>
|
||||||
|
<!-- 输入结束 -->
|
||||||
|
|
||||||
|
<!-- 输出开始 -->
|
||||||
|
<title-over-boarder title="Output">
|
||||||
|
<div class="korsum-output">
|
||||||
|
<div class="korsum-output-main">
|
||||||
|
<div class="korsum-output-list">
|
||||||
|
<div
|
||||||
|
class="korsum-output-list-item"
|
||||||
|
:class="selectedItem == item ? 'active' : ''"
|
||||||
|
v-for="(item, index) in outputList"
|
||||||
|
:key="index"
|
||||||
|
@click="handleOutputItemClick(item)"
|
||||||
|
>
|
||||||
|
{{ item.title }}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<a-table
|
||||||
|
class="korsum-output-table"
|
||||||
|
:columns="outputColumns"
|
||||||
|
:dataSource="outputTableList"
|
||||||
|
:class="outputTableList.length ? 'has-data' : ''"
|
||||||
|
:scroll="{ y: 584 }"
|
||||||
|
:pagination="false"
|
||||||
|
></a-table>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="korsum-output-operation">
|
||||||
|
<div class="left">
|
||||||
|
<a-input v-model="filterWord"></a-input>
|
||||||
|
</div>
|
||||||
|
<div class="right">
|
||||||
|
<a-button type="primary" @click="handleExport">Export to Excel</a-button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</title-over-boarder>
|
||||||
|
<!-- 输出结束 -->
|
||||||
|
</div>
|
||||||
|
</custom-modal>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import TitleOverBoarder from '../TitleOverBoarder.vue'
|
||||||
|
|
||||||
|
const columns = [
|
||||||
|
{
|
||||||
|
title: 'Energy',
|
||||||
|
dataIndex: 'energy',
|
||||||
|
scopedSlots: {
|
||||||
|
customRender: 'energy'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: 'Total Efficiency',
|
||||||
|
dataIndex: 'totalEfficiency',
|
||||||
|
scopedSlots: {
|
||||||
|
customRender: 'totalEfficiency'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: 'Peak Efficiency',
|
||||||
|
dataIndex: 'peakEfficiency',
|
||||||
|
scopedSlots: {
|
||||||
|
customRender: 'peakEfficiency'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: 'Uncertainty(%)',
|
||||||
|
dataIndex: 'uncertainty',
|
||||||
|
scopedSlots: {
|
||||||
|
customRender: 'uncertainty'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
|
||||||
|
const outputColumns = [
|
||||||
|
{
|
||||||
|
title: 'Energy',
|
||||||
|
dataIndex: 'energy'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: 'Correct Factor',
|
||||||
|
dataIndex: 'correctFactor'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: 'Uncertainty(%)',
|
||||||
|
dataIndex: 'uncertainty'
|
||||||
|
}
|
||||||
|
]
|
||||||
|
export default {
|
||||||
|
components: { TitleOverBoarder },
|
||||||
|
props: {
|
||||||
|
value: {
|
||||||
|
type: Boolean
|
||||||
|
}
|
||||||
|
},
|
||||||
|
data() {
|
||||||
|
this.columns = columns
|
||||||
|
this.outputColumns = outputColumns
|
||||||
|
return {
|
||||||
|
formula: {
|
||||||
|
totalEffi: [0, 0, 0, 0, 0, 0],
|
||||||
|
efficiency: [0, 0, 0, 0, 0, 0]
|
||||||
|
},
|
||||||
|
list: [
|
||||||
|
{
|
||||||
|
id: 1,
|
||||||
|
energy: 10,
|
||||||
|
totalEfficiency: 0.005,
|
||||||
|
peakEfficiency: 0.002,
|
||||||
|
uncertainty: 10.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: 2,
|
||||||
|
energy: 10,
|
||||||
|
totalEfficiency: 0.005,
|
||||||
|
peakEfficiency: 0.002,
|
||||||
|
uncertainty: 10.0
|
||||||
|
}
|
||||||
|
],
|
||||||
|
selectedItem: {}, // output中左侧选中的项
|
||||||
|
outputTableList: [], // output中表格列表数据
|
||||||
|
|
||||||
|
filterWord: '' // 筛选
|
||||||
|
}
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
// 分析
|
||||||
|
handleAnalyze() {
|
||||||
|
console.log('%c [ 分析 ]-178', 'font-size:13px; background:pink; color:#bf2c9f;')
|
||||||
|
},
|
||||||
|
|
||||||
|
// 退出
|
||||||
|
handleExit() {
|
||||||
|
this.visible = false
|
||||||
|
},
|
||||||
|
|
||||||
|
// output栏点击左侧列表
|
||||||
|
handleOutputItemClick(item) {
|
||||||
|
this.selectedItem = item
|
||||||
|
this.outputTableList = item.list
|
||||||
|
},
|
||||||
|
|
||||||
|
// 导出到excel
|
||||||
|
handleExport() {
|
||||||
|
console.log('%c [ 导出到excel ]-246', 'font-size:13px; background:pink; color:#bf2c9f;')
|
||||||
|
}
|
||||||
|
},
|
||||||
|
computed: {
|
||||||
|
visible: {
|
||||||
|
get() {
|
||||||
|
return this.value
|
||||||
|
},
|
||||||
|
set(val) {
|
||||||
|
this.$emit('input', val)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
outputList() {
|
||||||
|
const list = [
|
||||||
|
{
|
||||||
|
id: 1,
|
||||||
|
title: 'SN-125',
|
||||||
|
list: [
|
||||||
|
{
|
||||||
|
id: 12,
|
||||||
|
energy: 'energy',
|
||||||
|
correctFactor: 'correctFactor',
|
||||||
|
uncertainty: 'uncertainty'
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: 2,
|
||||||
|
title: 'EU-157',
|
||||||
|
list: [
|
||||||
|
{
|
||||||
|
id: 12,
|
||||||
|
energy: 'energy',
|
||||||
|
correctFactor: 'correctFactor',
|
||||||
|
uncertainty: 'uncertainty'
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
|
||||||
|
return list.filter(item => item.title.toLowerCase().includes(this.filterWord.toLowerCase()))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="less" scoped>
|
||||||
|
::v-deep {
|
||||||
|
.title-over-border-content {
|
||||||
|
height: 711px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.korsum {
|
||||||
|
display: flex;
|
||||||
|
gap: 20px;
|
||||||
|
|
||||||
|
.title-over-border {
|
||||||
|
flex: 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
&-input {
|
||||||
|
&-formula {
|
||||||
|
::v-deep {
|
||||||
|
.ant-form-item {
|
||||||
|
margin-bottom: 10px;
|
||||||
|
|
||||||
|
&-label {
|
||||||
|
::after {
|
||||||
|
content: ' ';
|
||||||
|
margin: 0 2px;
|
||||||
|
}
|
||||||
|
> label {
|
||||||
|
color: #fff;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.ant-input-number {
|
||||||
|
width: 120px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.operator {
|
||||||
|
display: inline-block;
|
||||||
|
width: 46px;
|
||||||
|
margin: 0 5px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
&-title {
|
||||||
|
height: 32px;
|
||||||
|
line-height: 32px;
|
||||||
|
text-align: center;
|
||||||
|
background-color: @primary-color;
|
||||||
|
}
|
||||||
|
|
||||||
|
&-table {
|
||||||
|
&.has-data {
|
||||||
|
::v-deep {
|
||||||
|
.ant-table-body {
|
||||||
|
height: 288px;
|
||||||
|
background-color: #06282a;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
::v-deep {
|
||||||
|
.ant-table {
|
||||||
|
font-size: 14px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.ant-table-placeholder {
|
||||||
|
height: 289px;
|
||||||
|
display: flex;
|
||||||
|
justify-content: center;
|
||||||
|
align-items: center;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.ant-input-number {
|
||||||
|
height: 26px;
|
||||||
|
|
||||||
|
::v-deep {
|
||||||
|
.ant-input-number-input {
|
||||||
|
height: 26px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
&-buttons {
|
||||||
|
margin-top: 10px;
|
||||||
|
display: flex;
|
||||||
|
gap: 20px;
|
||||||
|
|
||||||
|
.ant-btn {
|
||||||
|
flex: 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
&-output {
|
||||||
|
height: 100%;
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
|
||||||
|
&-main {
|
||||||
|
display: flex;
|
||||||
|
gap: 20px;
|
||||||
|
flex: 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
&-list {
|
||||||
|
width: 120px;
|
||||||
|
height: 619px;
|
||||||
|
background: #275466;
|
||||||
|
padding: 5px;
|
||||||
|
overflow: auto;
|
||||||
|
|
||||||
|
&-item {
|
||||||
|
height: 32px;
|
||||||
|
line-height: 32px;
|
||||||
|
padding: 0 4px;
|
||||||
|
cursor: pointer;
|
||||||
|
|
||||||
|
&.active {
|
||||||
|
background-color: @primary-color;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
&-table {
|
||||||
|
flex: 1;
|
||||||
|
&.has-data {
|
||||||
|
::v-deep {
|
||||||
|
.ant-table-body {
|
||||||
|
height: 584px;
|
||||||
|
background-color: #06282a;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
::v-deep {
|
||||||
|
.ant-table {
|
||||||
|
font-size: 14px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.ant-table-placeholder {
|
||||||
|
height: 585px;
|
||||||
|
display: flex;
|
||||||
|
justify-content: center;
|
||||||
|
align-items: center;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
&-operation {
|
||||||
|
margin-top: 20px;
|
||||||
|
display: flex;
|
||||||
|
gap: 20px;
|
||||||
|
|
||||||
|
.left {
|
||||||
|
width: 120px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.right {
|
||||||
|
flex: 1;
|
||||||
|
|
||||||
|
.ant-btn {
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
|
@ -0,0 +1,40 @@
|
||||||
|
<template>
|
||||||
|
<span class="status" :style="{ background: currStatus.color }">{{ currStatus.title }}</span>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
const statusList = {
|
||||||
|
0: {
|
||||||
|
title: 'Done',
|
||||||
|
color: '#008000'
|
||||||
|
},
|
||||||
|
1: {
|
||||||
|
title: '==>',
|
||||||
|
color: '#FFAA00'
|
||||||
|
},
|
||||||
|
2: {
|
||||||
|
title: 'Pending',
|
||||||
|
color: '#FF0000'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
export default {
|
||||||
|
props: {
|
||||||
|
status: {
|
||||||
|
type: Number,
|
||||||
|
default: 0
|
||||||
|
}
|
||||||
|
},
|
||||||
|
computed: {
|
||||||
|
currStatus() {
|
||||||
|
return statusList[this.status]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="less" scoped>
|
||||||
|
.status {
|
||||||
|
width: 80px;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
</style>
|
|
@ -0,0 +1,108 @@
|
||||||
|
<template>
|
||||||
|
<custom-modal v-model="visible" :width="400" title="Processing Monitor" :footer="null">
|
||||||
|
<div class="processing">
|
||||||
|
<div>
|
||||||
|
<!-- 标题 -->
|
||||||
|
<div class="processing-title">Calibration Updates</div>
|
||||||
|
<!-- 列表 -->
|
||||||
|
<div class="processing-list">
|
||||||
|
<div class="processing-list-item">
|
||||||
|
<status :status="0" />
|
||||||
|
<div class="description">Energy - Mariscotti Centroids</div>
|
||||||
|
</div>
|
||||||
|
<div class="processing-list-item">
|
||||||
|
<status :status="0" />
|
||||||
|
<div class="description">Resolution</div>
|
||||||
|
</div>
|
||||||
|
<div class="processing-list-item">
|
||||||
|
<status :status="0" />
|
||||||
|
<div class="description">Energy - Fitted Centroids</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div style="margin-top: 20px;">
|
||||||
|
<!-- 标题 -->
|
||||||
|
<div class="processing-title">Spectrum Analysis</div>
|
||||||
|
<!-- 列表 -->
|
||||||
|
<div class="processing-list">
|
||||||
|
<div class="processing-list-item">
|
||||||
|
<status :status="0" />
|
||||||
|
<div class="description">Peak Search</div>
|
||||||
|
</div>
|
||||||
|
<div class="processing-list-item">
|
||||||
|
<status :status="0" />
|
||||||
|
<div class="description">Baseline Fitting</div>
|
||||||
|
</div>
|
||||||
|
<div class="processing-list-item">
|
||||||
|
<status :status="1" />
|
||||||
|
<div class="description">Net Area Fitting</div>
|
||||||
|
</div>
|
||||||
|
<div class="processing-list-item">
|
||||||
|
<status :status="2" />
|
||||||
|
<div class="description">Nuclide Identification</div>
|
||||||
|
</div>
|
||||||
|
<div class="processing-list-item">
|
||||||
|
<status :status="2" />
|
||||||
|
<div class="description">Activity and MDA</div>
|
||||||
|
</div>
|
||||||
|
<div class="processing-list-item">
|
||||||
|
<status :status="2" />
|
||||||
|
<div class="description">QC Test</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</custom-modal>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import Status from './components/status.vue'
|
||||||
|
export default {
|
||||||
|
components: {
|
||||||
|
Status
|
||||||
|
},
|
||||||
|
props: {
|
||||||
|
value: {
|
||||||
|
type: Boolean
|
||||||
|
}
|
||||||
|
},
|
||||||
|
computed: {
|
||||||
|
visible: {
|
||||||
|
get() {
|
||||||
|
return this.value
|
||||||
|
},
|
||||||
|
set(val) {
|
||||||
|
this.$emit('input', val)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="less" scoped>
|
||||||
|
@color: #325050;
|
||||||
|
.processing {
|
||||||
|
&-title {
|
||||||
|
height: 32px;
|
||||||
|
line-height: 32px;
|
||||||
|
background-color: @color;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
&-list {
|
||||||
|
&-item {
|
||||||
|
margin-top: 20px;
|
||||||
|
display: flex;
|
||||||
|
gap: 20px;
|
||||||
|
height: 26px;
|
||||||
|
line-height: 26px;
|
||||||
|
|
||||||
|
.description {
|
||||||
|
flex: 1;
|
||||||
|
background-color: @color;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
250
src/views/spectrumAnalysis/components/Modals/ZeroTimeModal.vue
Normal file
250
src/views/spectrumAnalysis/components/Modals/ZeroTimeModal.vue
Normal file
|
@ -0,0 +1,250 @@
|
||||||
|
<template>
|
||||||
|
<custom-modal v-model="visible" title="Zero Time" :width="940" :footer="null">
|
||||||
|
<div class="zero-time">
|
||||||
|
<!-- 左侧 -->
|
||||||
|
<div class="zero-time-left">
|
||||||
|
<title-over-boarder title="Fission Product Infomation">
|
||||||
|
<div class="fission-product">
|
||||||
|
<div class="fission-product-container">
|
||||||
|
<div class="fission-product-title">
|
||||||
|
Fission Product 1
|
||||||
|
</div>
|
||||||
|
<div class="fission-product-list">
|
||||||
|
<div class="fission-product-list-item" v-for="(item, index) in fissionProductList1" :key="index">
|
||||||
|
{{ item.title }}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="fission-product-container">
|
||||||
|
<div class="fission-product-title">
|
||||||
|
Fission Product 2
|
||||||
|
</div>
|
||||||
|
<div class="fission-product-list">
|
||||||
|
<div class="fission-product-list-item" v-for="(item, index) in fissionProductList2" :key="index">
|
||||||
|
{{ item.title }}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</title-over-boarder>
|
||||||
|
<!-- Result of Zero Time -->
|
||||||
|
<title-over-boarder class="mt-20" title="Result of Zero Time">
|
||||||
|
<div class="result-of-zero-time">2015-05-30 17:30:60</div>
|
||||||
|
</title-over-boarder>
|
||||||
|
</div>
|
||||||
|
<!-- 左侧结束 -->
|
||||||
|
|
||||||
|
<!-- 右侧 -->
|
||||||
|
<div class="zero-time-right">
|
||||||
|
<!-- Active of Fission Product -->
|
||||||
|
<title-over-boarder title="Active of Fission Product">
|
||||||
|
<div class="active-of-fission-product">
|
||||||
|
<div class="item">
|
||||||
|
<div class="title">
|
||||||
|
Fission Product 1
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<a-input></a-input>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="operator">
|
||||||
|
-----Bq-----
|
||||||
|
</div>
|
||||||
|
<div class="item">
|
||||||
|
<div class="title">
|
||||||
|
Fission Product 2
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<a-input></a-input>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</title-over-boarder>
|
||||||
|
<div class="zero-time-right-center mt-20">
|
||||||
|
<!-- Fission Target -->
|
||||||
|
<title-over-boarder class="fission-target" title="Fission Target">
|
||||||
|
<a-radio-group>
|
||||||
|
<a-radio>U-235</a-radio>
|
||||||
|
<a-radio>U-238</a-radio>
|
||||||
|
<a-radio>PU-239</a-radio>
|
||||||
|
</a-radio-group>
|
||||||
|
</title-over-boarder>
|
||||||
|
<title-over-boarder class="fission-energy" title="Energy of Fission Neutron">
|
||||||
|
<a-radio-group>
|
||||||
|
<a-radio>T>Thermal_spectrum</a-radio>
|
||||||
|
<a-radio>F>Fission_spectrum</a-radio>
|
||||||
|
<a-radio>H->Fast_Neutron</a-radio>
|
||||||
|
</a-radio-group>
|
||||||
|
</title-over-boarder>
|
||||||
|
</div>
|
||||||
|
<title-over-boarder class="mt-20" title="Reference Time">
|
||||||
|
<a-form-model layout="inline">
|
||||||
|
<a-form-model-item label="Date">
|
||||||
|
<custom-date-picker />
|
||||||
|
</a-form-model-item>
|
||||||
|
<a-form-model-item label="Time">
|
||||||
|
<a-time-picker></a-time-picker>
|
||||||
|
</a-form-model-item>
|
||||||
|
</a-form-model>
|
||||||
|
</title-over-boarder>
|
||||||
|
|
||||||
|
<div class="zero-time-right-buttons mt-20">
|
||||||
|
<a-button type="primary">Analysis</a-button>
|
||||||
|
<a-button type="primary">Save</a-button>
|
||||||
|
<a-button type="primary">Exit</a-button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<!-- 右侧结束 -->
|
||||||
|
</div>
|
||||||
|
</custom-modal>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import TitleOverBoarder from '../TitleOverBoarder.vue'
|
||||||
|
|
||||||
|
export default {
|
||||||
|
components: { TitleOverBoarder },
|
||||||
|
props: {
|
||||||
|
value: {
|
||||||
|
type: Boolean
|
||||||
|
}
|
||||||
|
},
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
fissionProductList1: [
|
||||||
|
{
|
||||||
|
id: 1,
|
||||||
|
title: 'Ba140'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: 2,
|
||||||
|
title: 'Ce141'
|
||||||
|
}
|
||||||
|
],
|
||||||
|
fissionProductList2: [
|
||||||
|
{
|
||||||
|
id: 1,
|
||||||
|
title: 'Ba140'
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
computed: {
|
||||||
|
visible: {
|
||||||
|
set(val) {
|
||||||
|
this.$emit('input', val)
|
||||||
|
},
|
||||||
|
get() {
|
||||||
|
return this.value
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="less" scoped>
|
||||||
|
.zero-time {
|
||||||
|
display: flex;
|
||||||
|
gap: 30px;
|
||||||
|
|
||||||
|
&-left {
|
||||||
|
width: 40%;
|
||||||
|
|
||||||
|
.fission-product {
|
||||||
|
display: flex;
|
||||||
|
gap: 15px;
|
||||||
|
|
||||||
|
&-container {
|
||||||
|
flex: 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
&-title {
|
||||||
|
height: 32px;
|
||||||
|
line-height: 32px;
|
||||||
|
font-size: 16px;
|
||||||
|
background-color: #497e9d;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
&-list {
|
||||||
|
margin-top: 5px;
|
||||||
|
height: 255px;
|
||||||
|
overflow: auto;
|
||||||
|
padding: 0 10px;
|
||||||
|
background-color: #275466;
|
||||||
|
|
||||||
|
&-item {
|
||||||
|
height: 32px;
|
||||||
|
line-height: 32px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.result-of-zero-time {
|
||||||
|
height: 32px;
|
||||||
|
line-height: 32px;
|
||||||
|
text-align: center;
|
||||||
|
background-color: #00ff7f;
|
||||||
|
font-size: 18px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 右侧开始
|
||||||
|
&-right {
|
||||||
|
flex: 1;
|
||||||
|
|
||||||
|
.active-of-fission-product {
|
||||||
|
display: flex;
|
||||||
|
align-items: end;
|
||||||
|
padding: 0 60px;
|
||||||
|
|
||||||
|
.item {
|
||||||
|
flex: 1;
|
||||||
|
|
||||||
|
.title {
|
||||||
|
font-size: 16px;
|
||||||
|
margin-bottom: 10px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.operator {
|
||||||
|
margin: 5px 15px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
&-center {
|
||||||
|
display: flex;
|
||||||
|
gap: 20px;
|
||||||
|
|
||||||
|
.fission-target {
|
||||||
|
width: 40%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.fission-energy {
|
||||||
|
flex: 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
.ant-radio-wrapper {
|
||||||
|
display: block;
|
||||||
|
|
||||||
|
&:not(:first-child) {
|
||||||
|
margin-top: 20px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
&-buttons {
|
||||||
|
display: flex;
|
||||||
|
justify-content: space-between;
|
||||||
|
|
||||||
|
.ant-btn {
|
||||||
|
padding: 0 45px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.mt-20 {
|
||||||
|
margin-top: 20px;
|
||||||
|
}
|
||||||
|
</style>
|
|
@ -62,6 +62,22 @@
|
||||||
<!-- 分析工具弹窗开始 -->
|
<!-- 分析工具弹窗开始 -->
|
||||||
<analyze-interactive-tool-modal v-model="analyzeInteractiveToolModalVisible" />
|
<analyze-interactive-tool-modal v-model="analyzeInteractiveToolModalVisible" />
|
||||||
<!-- 分析工具弹窗结束 -->
|
<!-- 分析工具弹窗结束 -->
|
||||||
|
|
||||||
|
<!-- Korsum 弹窗开始 -->
|
||||||
|
<korsum-modal v-model="korsumModalShow" />
|
||||||
|
<!-- Korsum 弹窗结束 -->
|
||||||
|
|
||||||
|
<!-- ReProcessing 弹窗开始 -->
|
||||||
|
<re-processing-modal v-model="reprocessingModalVisible" />
|
||||||
|
<!-- ReProcessing 弹窗结束 -->
|
||||||
|
|
||||||
|
<!-- Zero Time 弹窗开始 -->
|
||||||
|
<zero-time-modal v-model="zeroTimeModalVisible" />
|
||||||
|
<!-- Zero Time 弹窗结束 -->
|
||||||
|
|
||||||
|
<!-- Efficiency Calibration 弹窗开始 -->
|
||||||
|
<efficiency-calibration-modal v-model="efficiencyCalibrationModalShow" />
|
||||||
|
<!-- Efficiency Calibration 弹窗结束 -->
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
<script>
|
<script>
|
||||||
|
@ -77,6 +93,10 @@ 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 { getAction } from '../../api/manage'
|
||||||
|
import KorsumModal from './components/Modals/KorsumModal.vue'
|
||||||
|
import ReProcessingModal from './components/Modals/ReProcessingModal/index.vue'
|
||||||
|
import ZeroTimeModal from './components/Modals/ZeroTimeModal.vue'
|
||||||
|
import EfficiencyCalibrationModal from './components/Modals/EfficiencyCalibrationModal.vue'
|
||||||
|
|
||||||
// 分析类型
|
// 分析类型
|
||||||
const ANALYZE_TYPE = {
|
const ANALYZE_TYPE = {
|
||||||
|
@ -95,7 +115,11 @@ export default {
|
||||||
MultiLevelMenu,
|
MultiLevelMenu,
|
||||||
SaveSettingModal,
|
SaveSettingModal,
|
||||||
AnalyzeSettingModal,
|
AnalyzeSettingModal,
|
||||||
AnalyzeInteractiveToolModal
|
AnalyzeInteractiveToolModal,
|
||||||
|
KorsumModal,
|
||||||
|
ReProcessingModal,
|
||||||
|
ZeroTimeModal,
|
||||||
|
EfficiencyCalibrationModal
|
||||||
},
|
},
|
||||||
data() {
|
data() {
|
||||||
this.ANALYZE_TYPE = ANALYZE_TYPE
|
this.ANALYZE_TYPE = ANALYZE_TYPE
|
||||||
|
@ -118,7 +142,15 @@ export default {
|
||||||
|
|
||||||
analyzeConfigureModalVisible: false, // 分析设置弹窗
|
analyzeConfigureModalVisible: false, // 分析设置弹窗
|
||||||
|
|
||||||
analyzeInteractiveToolModalVisible: false // 分析工具弹窗
|
reprocessingModalVisible: false, // 重新分析弹窗
|
||||||
|
|
||||||
|
analyzeInteractiveToolModalVisible: false, // 分析工具弹窗
|
||||||
|
|
||||||
|
zeroTimeModalVisible: false, // Zero Time 弹窗
|
||||||
|
|
||||||
|
korsumModalShow: false, // Korsum 弹窗
|
||||||
|
|
||||||
|
efficiencyCalibrationModalShow: false // Calibration -> efficiency弹窗
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
created() {
|
created() {
|
||||||
|
@ -196,19 +228,10 @@ export default {
|
||||||
this.analyzeConfigureModalVisible = true
|
this.analyzeConfigureModalVisible = true
|
||||||
},
|
},
|
||||||
|
|
||||||
handleProcessing() {
|
|
||||||
console.log('%c [ handleProcessing ]-156', 'font-size:13px; background:pink; color:#bf2c9f;')
|
|
||||||
},
|
|
||||||
|
|
||||||
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;')
|
||||||
},
|
},
|
||||||
|
|
||||||
// 显示分析工具弹窗
|
|
||||||
handleShowInteractiveTool() {
|
|
||||||
this.analyzeInteractiveToolModalVisible = true
|
|
||||||
},
|
|
||||||
|
|
||||||
// 弹出能量刻度界面
|
// 弹出能量刻度界面
|
||||||
handleEnergy() {
|
handleEnergy() {
|
||||||
console.log('%c [ handleEnergy ]-163', 'font-size:13px; background:pink; color:#bf2c9f;')
|
console.log('%c [ handleEnergy ]-163', 'font-size:13px; background:pink; color:#bf2c9f;')
|
||||||
|
@ -219,11 +242,6 @@ export default {
|
||||||
console.log('%c [ handleResolution ]-167', 'font-size:13px; background:pink; color:#bf2c9f;')
|
console.log('%c [ handleResolution ]-167', 'font-size:13px; background:pink; color:#bf2c9f;')
|
||||||
},
|
},
|
||||||
|
|
||||||
// 弹出分辨率刻度界面
|
|
||||||
handleEfficiency() {
|
|
||||||
console.log('%c [ handleEfficiency ]-167', 'font-size:13px; background:pink; color:#bf2c9f;')
|
|
||||||
},
|
|
||||||
|
|
||||||
// 弹出 Nuclide Library 弹窗
|
// 弹出 Nuclide Library 弹窗
|
||||||
handleNuclideLib() {
|
handleNuclideLib() {
|
||||||
console.log('%c [ handleNuclideLib ]-178', 'font-size:13px; background:pink; color:#bf2c9f;')
|
console.log('%c [ handleNuclideLib ]-178', 'font-size:13px; background:pink; color:#bf2c9f;')
|
||||||
|
@ -401,8 +419,10 @@ export default {
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
type: 'a-menu-item',
|
type: 'a-menu-item',
|
||||||
title: 'Processing',
|
title: 'ReProcessing',
|
||||||
handler: this.handleProcessing
|
handler: () => {
|
||||||
|
this.reprocessingModalVisible = true
|
||||||
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
type: 'a-menu-item',
|
type: 'a-menu-item',
|
||||||
|
@ -412,7 +432,23 @@ export default {
|
||||||
{
|
{
|
||||||
type: 'a-menu-item',
|
type: 'a-menu-item',
|
||||||
title: 'Interactive Tool',
|
title: 'Interactive Tool',
|
||||||
handler: this.handleShowInteractiveTool
|
handler: () => {
|
||||||
|
this.analyzeInteractiveToolModalVisible = true
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
type: 'a-menu-item',
|
||||||
|
title: 'Zero Time',
|
||||||
|
handler: () => {
|
||||||
|
this.zeroTimeModalVisible = true
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
type: 'a-menu-item',
|
||||||
|
title: 'Korsum',
|
||||||
|
handler: () => {
|
||||||
|
this.korsumModalShow = true
|
||||||
|
}
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
@ -437,7 +473,9 @@ export default {
|
||||||
{
|
{
|
||||||
type: 'a-menu-item',
|
type: 'a-menu-item',
|
||||||
title: 'Efficiency',
|
title: 'Efficiency',
|
||||||
handler: this.handleEfficiency
|
handler: () => {
|
||||||
|
this.efficiencyCalibrationModalShow = true
|
||||||
|
}
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue
Block a user