WIP: 完成部分弹窗
This commit is contained in:
parent
194162804e
commit
09e77962d2
|
@ -0,0 +1,273 @@
|
|||
<template>
|
||||
<custom-modal v-model="visible" :width="1200" title="Interactive Analyse Tools" :okHanlder="handleOk">
|
||||
<div class="interactive-analysis-tools">
|
||||
<div class="interactive-analysis-tools-left">
|
||||
<div class="chart">
|
||||
<custom-chart :option="option" />
|
||||
</div>
|
||||
<div class="table">
|
||||
<p class="title">
|
||||
< 6 Peaks with Anthro.Nuclides >
|
||||
</p>
|
||||
<custom-table :list="list" :columns="columns"> </custom-table>
|
||||
<div class="operators">
|
||||
<a-button type="primary">Nuclide Review Window</a-button>
|
||||
<a-button type="primary">Add Peak Comment</a-button>
|
||||
<a-button type="primary">Add General Comment</a-button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="interactive-analysis-tools-right">
|
||||
<title-over-boarder title="Peak">
|
||||
<div class="peak-box">
|
||||
<div class="peak-box-item">
|
||||
<a-button type="primary">Insert</a-button>
|
||||
</div>
|
||||
<div class="peak-box-item">
|
||||
<a-button type="primary">Delete</a-button>
|
||||
</div>
|
||||
<div class="peak-box-item">
|
||||
<a-button type="primary">Fit</a-button>
|
||||
</div>
|
||||
|
||||
<div class="peak-box-item symbol">
|
||||
<a-button type="primary"><</a-button>
|
||||
<a-button type="primary">></a-button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="base-line">
|
||||
<a-button type="primary">BaseLine</a-button>
|
||||
</div>
|
||||
</title-over-boarder>
|
||||
<div class="reset-btn-box">
|
||||
<a-button type="primary">Reset Chart</a-button>
|
||||
</div>
|
||||
<div class="identify-box">
|
||||
<title-over-boarder title="Nuclide Identify">
|
||||
<a-form-model class="tolerance">
|
||||
<a-form-model-item label="Tolerance">
|
||||
<a-input-number></a-input-number>
|
||||
</a-form-model-item>
|
||||
</a-form-model>
|
||||
<div class="identify-item">
|
||||
<div class="title">
|
||||
Possible Nuclide
|
||||
</div>
|
||||
<div class="content"></div>
|
||||
</div>
|
||||
<div class="identify-item">
|
||||
<div class="title">
|
||||
Nuclide Identified
|
||||
</div>
|
||||
<div class="content"></div>
|
||||
</div>
|
||||
<div class="identify-operators">
|
||||
<a-space>
|
||||
<a-input></a-input>
|
||||
<a-button type="primary">Add</a-button>
|
||||
<a-button type="primary">Del</a-button>
|
||||
</a-space>
|
||||
</div>
|
||||
</title-over-boarder>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</custom-modal>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import CustomChart from '@/components/CustomChart/index.vue'
|
||||
import TitleOverBoarder from '../TitleOverBoarder.vue'
|
||||
|
||||
const initialOption = {
|
||||
xAxis: {
|
||||
min: 1,
|
||||
max: 8192
|
||||
},
|
||||
yAxis: {
|
||||
min: 1,
|
||||
max: 994914
|
||||
}
|
||||
}
|
||||
|
||||
const columns = [
|
||||
{
|
||||
title: 'ID'
|
||||
},
|
||||
{
|
||||
title: 'Energy (keV)'
|
||||
},
|
||||
{
|
||||
title: 'Centroid (C)'
|
||||
},
|
||||
{
|
||||
title: 'FWHM (keV)'
|
||||
},
|
||||
{
|
||||
title: 'Area'
|
||||
},
|
||||
{
|
||||
title: 'Detectability'
|
||||
},
|
||||
{
|
||||
title: 'Cmnt'
|
||||
},
|
||||
{
|
||||
title: 'Nuclides'
|
||||
}
|
||||
]
|
||||
|
||||
export default {
|
||||
props: {
|
||||
value: {
|
||||
type: Boolean
|
||||
}
|
||||
},
|
||||
components: {
|
||||
CustomChart,
|
||||
TitleOverBoarder
|
||||
},
|
||||
data() {
|
||||
this.columns = columns
|
||||
return {
|
||||
option: initialOption,
|
||||
list: []
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
handleOk() {}
|
||||
},
|
||||
computed: {
|
||||
visible: {
|
||||
get() {
|
||||
return this.value
|
||||
},
|
||||
set(val) {
|
||||
this.$emit('input', val)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="less" scoped>
|
||||
.interactive-analysis-tools {
|
||||
display: flex;
|
||||
|
||||
&-left {
|
||||
flex: 1;
|
||||
margin-right: 20px;
|
||||
|
||||
.chart {
|
||||
height: 275px;
|
||||
}
|
||||
|
||||
.table {
|
||||
.title {
|
||||
color: #0cebc9;
|
||||
font-size: 20px;
|
||||
text-align: center;
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
|
||||
.custom-table {
|
||||
height: 421px;
|
||||
}
|
||||
|
||||
.operators {
|
||||
display: flex;
|
||||
margin-top: 10px;
|
||||
gap: 10px;
|
||||
|
||||
.ant-btn {
|
||||
flex: 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
&-right {
|
||||
width: 25%;
|
||||
|
||||
.peak-box {
|
||||
&-item {
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
|
||||
.symbol {
|
||||
display: flex;
|
||||
|
||||
.ant-btn {
|
||||
flex: 1;
|
||||
|
||||
&:first-child {
|
||||
margin-right: 10px;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.base-line {
|
||||
margin-top: 80px;
|
||||
}
|
||||
|
||||
.reset-btn-box {
|
||||
margin-top: 20px;
|
||||
margin-bottom: 30px;
|
||||
}
|
||||
|
||||
.identify-box {
|
||||
.tolerance {
|
||||
::v-deep {
|
||||
.ant-form-item {
|
||||
margin-bottom: 10px;
|
||||
|
||||
&-control-wrapper {
|
||||
flex: 1;
|
||||
}
|
||||
|
||||
&-control {
|
||||
width: 100%;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.ant-input-number {
|
||||
width: 100%;
|
||||
}
|
||||
}
|
||||
|
||||
.identify-item {
|
||||
.title {
|
||||
background-color: #497e9d;
|
||||
height: 30px;
|
||||
line-height: 30px;
|
||||
text-align: center;
|
||||
font-size: 16px;
|
||||
}
|
||||
|
||||
.content {
|
||||
height: 80px;
|
||||
background-color: #275466;
|
||||
margin: 10px 0;
|
||||
}
|
||||
}
|
||||
|
||||
.identify-operators {
|
||||
display: flex;
|
||||
|
||||
.ant-btn {
|
||||
width: 50px;
|
||||
padding-left: 5px;
|
||||
padding-right: 5px;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.ant-btn {
|
||||
width: 100%;
|
||||
}
|
||||
}
|
||||
</style>
|
|
@ -0,0 +1,193 @@
|
|||
<template>
|
||||
<custom-modal
|
||||
v-model="visible"
|
||||
:width="900"
|
||||
title="Analysis Settings"
|
||||
class="analysis-settings"
|
||||
:okHanlder="handleOk"
|
||||
>
|
||||
<!-- 第一行 -->
|
||||
<div class="analysis-settings-item">
|
||||
<title-over-boarder title="Peak Searching">
|
||||
<a-form-model :colon="false" :labelCol="{ style: { width: '160px' } }">
|
||||
<a-form-model-item label="ECutAnalysis_Low">
|
||||
<div class="input-with-unit">
|
||||
<a-input></a-input>
|
||||
KeV
|
||||
</div>
|
||||
</a-form-model-item>
|
||||
<a-form-model-item label="ECutAnalysis_High">
|
||||
<div class="input-with-unit">
|
||||
<a-input></a-input>
|
||||
KeV
|
||||
</div>
|
||||
</a-form-model-item>
|
||||
<a-form-model-item label="EnergyTolerance">
|
||||
<div class="input-with-unit">
|
||||
<a-input></a-input>
|
||||
KeV
|
||||
</div>
|
||||
</a-form-model-item>
|
||||
<a-form-model-item label="PSS_low">
|
||||
<a-input></a-input>
|
||||
</a-form-model-item>
|
||||
</a-form-model>
|
||||
</title-over-boarder>
|
||||
<title-over-boarder title="Calibration Peak Searching">
|
||||
<a-form-model :colon="false" :labelCol="{ style: { width: '170px' } }">
|
||||
<a-form-model-item label="CalibrationPSS_low">
|
||||
<a-input></a-input>
|
||||
</a-form-model-item>
|
||||
<a-form-model-item label="CalibrationPSS_high">
|
||||
<a-input></a-input>
|
||||
</a-form-model-item>
|
||||
<a-form-model-item>
|
||||
<a-checkbox>
|
||||
Update Calibration
|
||||
</a-checkbox>
|
||||
</a-form-model-item>
|
||||
<a-form-model-item>
|
||||
<a-checkbox>
|
||||
Keep Calibration Peak Search Peaks
|
||||
</a-checkbox>
|
||||
</a-form-model-item>
|
||||
</a-form-model>
|
||||
</title-over-boarder>
|
||||
</div>
|
||||
|
||||
<!-- 第二行 -->
|
||||
<div class="analysis-settings-item">
|
||||
<title-over-boarder title="Baseline Param">
|
||||
<a-form-model :colon="false" :labelCol="{ style: { width: '90px' } }">
|
||||
<a-form-model-item label="k_back">
|
||||
<a-input></a-input>
|
||||
</a-form-model-item>
|
||||
<a-form-model-item label="k_alpha">
|
||||
<a-input></a-input>
|
||||
</a-form-model-item>
|
||||
<a-form-model-item label="k_beta">
|
||||
<a-input></a-input>
|
||||
</a-form-model-item>
|
||||
</a-form-model>
|
||||
</title-over-boarder>
|
||||
<div>
|
||||
<a-form-model :colon="false" :labelCol="{ style: { width: '150px' } }">
|
||||
<title-over-boarder title="BaseImprove">
|
||||
<a-form-model-item label="BaseImprovePSS">
|
||||
<a-input></a-input>
|
||||
</a-form-model-item>
|
||||
</title-over-boarder>
|
||||
<title-over-boarder title="LC Computing" style="margin-top: 20px">
|
||||
<a-form-model-item label="RiskLevelK">
|
||||
<a-input></a-input>
|
||||
</a-form-model-item>
|
||||
</title-over-boarder>
|
||||
</a-form-model>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- 第三行 -->
|
||||
<div class="analysis-settings-item">
|
||||
<title-over-boarder title="Activity Reference Time">
|
||||
<custom-date-picker show-time v-model="formModel.activityReferenceTime"></custom-date-picker>
|
||||
</title-over-boarder>
|
||||
<title-over-boarder title="Concentration Reference Time">
|
||||
<custom-date-picker show-time v-model="formModel.concentrationReferenceTime"></custom-date-picker>
|
||||
</title-over-boarder>
|
||||
</div>
|
||||
</custom-modal>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import TitleOverBoarder from '../TitleOverBoarder.vue'
|
||||
export default {
|
||||
components: { TitleOverBoarder },
|
||||
props: {
|
||||
value: {
|
||||
type: Boolean
|
||||
}
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
formModel: {
|
||||
activityReferenceTime: undefined,
|
||||
concentrationReferenceTime: undefined
|
||||
}
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
handleOk() {
|
||||
console.log('%c [ handleOk ]-121', 'font-size:13px; background:pink; color:#bf2c9f;')
|
||||
}
|
||||
},
|
||||
computed: {
|
||||
visible: {
|
||||
get() {
|
||||
return this.value
|
||||
},
|
||||
set(val) {
|
||||
this.$emit('input', val)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="less" scoped>
|
||||
.analysis-settings {
|
||||
&-item {
|
||||
display: flex;
|
||||
|
||||
&:not(:first-child) {
|
||||
margin-top: 20px;
|
||||
}
|
||||
|
||||
> div {
|
||||
flex: 1;
|
||||
|
||||
&:first-child {
|
||||
margin-right: 20px;
|
||||
}
|
||||
}
|
||||
|
||||
.ant-form {
|
||||
&-item {
|
||||
margin-bottom: 0;
|
||||
|
||||
&:not(:last-child) {
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
|
||||
::v-deep {
|
||||
.ant-form-item {
|
||||
&-label {
|
||||
text-align: left;
|
||||
|
||||
label {
|
||||
font-size: 16px;
|
||||
}
|
||||
}
|
||||
|
||||
&-control-wrapper {
|
||||
flex: 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.ant-input {
|
||||
height: 26px;
|
||||
}
|
||||
|
||||
.input-with-unit {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
|
||||
.ant-input {
|
||||
margin-right: 10px;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
</style>
|
|
@ -129,7 +129,7 @@ export default {
|
|||
loadData(arg) {
|
||||
const params = this.getQueryParams() //查询条件
|
||||
const { startDate, endDate, menuTypes } = params
|
||||
if (!menuTypes || !menuTypes.length) {
|
||||
if (!menuTypes) {
|
||||
this.$message.warn('Please Select SampleType First')
|
||||
return
|
||||
}
|
||||
|
@ -144,8 +144,6 @@ export default {
|
|||
return
|
||||
}
|
||||
|
||||
params.menuTypes = menuTypes.join(',')
|
||||
|
||||
//加载数据 若传入参数1则加载第一页的内容
|
||||
if (arg === 1) {
|
||||
this.ipagination.current = 1
|
||||
|
@ -199,13 +197,13 @@ export default {
|
|||
|
||||
// 获取台站和探测器列表
|
||||
async getStationAndDetectorList(value) {
|
||||
if (!value || !value.length) {
|
||||
if (!value) {
|
||||
return
|
||||
}
|
||||
|
||||
try {
|
||||
const { success, result, message } = await getAction('/spectrumAnalysis/getDBSearchList', {
|
||||
menuTypes: value.join(',')
|
||||
menuTypes: value
|
||||
})
|
||||
if (success) {
|
||||
this.stationList = result.stationCode.map(item => ({ label: item, value: item }))
|
||||
|
@ -243,8 +241,11 @@ export default {
|
|||
type: 'custom-select',
|
||||
name: 'menuTypes',
|
||||
props: {
|
||||
mode: 'multiple',
|
||||
options: [
|
||||
{
|
||||
label: 'All',
|
||||
value: 'G,B'
|
||||
},
|
||||
{
|
||||
label: 'Gamma',
|
||||
value: 'G'
|
||||
|
@ -254,11 +255,10 @@ export default {
|
|||
value: 'B'
|
||||
}
|
||||
],
|
||||
maxTagCount: 1,
|
||||
maxTagPlaceholder: '...'
|
||||
allowClear: true
|
||||
},
|
||||
style: {
|
||||
width: '23%'
|
||||
width: '18%'
|
||||
},
|
||||
on: {
|
||||
change: event => {
|
||||
|
@ -277,7 +277,7 @@ export default {
|
|||
allowClear: true
|
||||
},
|
||||
style: {
|
||||
width: '16%'
|
||||
width: '19%'
|
||||
}
|
||||
},
|
||||
{
|
||||
|
@ -291,7 +291,7 @@ export default {
|
|||
allowClear: true
|
||||
},
|
||||
style: {
|
||||
width: '16%'
|
||||
width: '19%'
|
||||
}
|
||||
},
|
||||
{
|
||||
|
@ -316,7 +316,7 @@ export default {
|
|||
allowClear: true
|
||||
},
|
||||
style: {
|
||||
width: '15%'
|
||||
width: '14%'
|
||||
}
|
||||
},
|
||||
{
|
||||
|
@ -353,7 +353,7 @@ export default {
|
|||
allowClear: true
|
||||
},
|
||||
style: {
|
||||
width: '15%'
|
||||
width: '14%'
|
||||
}
|
||||
},
|
||||
{
|
||||
|
@ -374,7 +374,8 @@ export default {
|
|||
allowClear: true
|
||||
},
|
||||
style: {
|
||||
width: '15%'
|
||||
width: '16%',
|
||||
paddingRight: 0
|
||||
}
|
||||
},
|
||||
{
|
||||
|
@ -385,7 +386,7 @@ export default {
|
|||
allowClear: true
|
||||
},
|
||||
style: {
|
||||
width: '20%'
|
||||
width: '264px'
|
||||
}
|
||||
},
|
||||
{
|
||||
|
@ -400,7 +401,8 @@ export default {
|
|||
]
|
||||
},
|
||||
style: {
|
||||
width: '315px'
|
||||
width: '305px',
|
||||
paddingRight: 0
|
||||
}
|
||||
},
|
||||
{
|
||||
|
|
|
@ -0,0 +1,81 @@
|
|||
<template>
|
||||
<custom-modal v-model="visible" title="Save Setting" :width="380" :okHandler="handleOk">
|
||||
<div class="save-setting">
|
||||
<div class="save-setting-all">
|
||||
<a-checkbox v-model="saveAll">
|
||||
Save All
|
||||
</a-checkbox>
|
||||
</div>
|
||||
<div>
|
||||
<title-over-boarder title="Format">
|
||||
<a-radio-group v-model="saveFormat" class="format-radio-group">
|
||||
<a-radio value="txt">Save as Txt</a-radio>
|
||||
<a-radio value="excel">Save as Excel</a-radio>
|
||||
</a-radio-group>
|
||||
</title-over-boarder>
|
||||
</div>
|
||||
</div>
|
||||
</custom-modal>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { downloadFile } from '../../../../api/manage'
|
||||
import TitleOverBoarder from '../TitleOverBoarder.vue'
|
||||
export default {
|
||||
components: { TitleOverBoarder },
|
||||
props: {
|
||||
value: {
|
||||
type: Boolean
|
||||
}
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
saveAll: false,
|
||||
saveFormat: 'txt'
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
reset() {
|
||||
this.saveAll = false
|
||||
this.saveFormat = 'txt'
|
||||
},
|
||||
|
||||
handleOk() {
|
||||
console.log('%c [ save ]-22', 'font-size:13px; background:pink; color:#bf2c9f;')
|
||||
downloadFile('', 'result.' + this.saveFormat, {})
|
||||
}
|
||||
},
|
||||
computed: {
|
||||
visible: {
|
||||
set(val) {
|
||||
this.$emit('input', val)
|
||||
},
|
||||
get() {
|
||||
if (this.value) {
|
||||
this.reset()
|
||||
}
|
||||
|
||||
return this.value
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="less" scoped>
|
||||
.save-setting {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
|
||||
&-all {
|
||||
width: 65%;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.format-radio-group {
|
||||
.ant-radio-wrapper:first-child {
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
}
|
||||
}
|
||||
</style>
|
64
src/views/spectrumAnalysis/components/MultiLevelMenu.vue
Normal file
64
src/views/spectrumAnalysis/components/MultiLevelMenu.vue
Normal file
|
@ -0,0 +1,64 @@
|
|||
<template>
|
||||
<a-menu mode="vertical" :style="{ width }" class="multi-level-menu">
|
||||
<template v-for="(item, index) in children">
|
||||
<a-menu-item :key="index" v-bind="item.attrs" @click="handleMenuClick(item)">
|
||||
{{ item.title }}
|
||||
<div v-if="item.children" :key="index">
|
||||
<a-menu class="multi-level-menu-sub-menu">
|
||||
<a-menu-item v-for="child in item.children" :key="child.key" @click="handleSubMenuClick(item, child)">
|
||||
{{ child.title }}
|
||||
</a-menu-item>
|
||||
</a-menu>
|
||||
</div>
|
||||
</a-menu-item>
|
||||
</template>
|
||||
</a-menu>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
props: {
|
||||
children: {
|
||||
type: Array,
|
||||
default: () => []
|
||||
},
|
||||
width: {
|
||||
type: String,
|
||||
default: 'auto'
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
handleMenuClick(item) {
|
||||
if (!item.children) {
|
||||
this.$emit('menuClick', item)
|
||||
}
|
||||
},
|
||||
handleSubMenuClick(item, child) {
|
||||
this.$emit('submenuClick', { item, child })
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="less">
|
||||
.multi-level-menu {
|
||||
.ant-menu-item {
|
||||
overflow: visible;
|
||||
|
||||
.multi-level-menu-sub-menu {
|
||||
position: absolute;
|
||||
top: 0;
|
||||
right: 0;
|
||||
transform: translateX(100%);
|
||||
display: none;
|
||||
background: #03353f;
|
||||
}
|
||||
|
||||
&-active {
|
||||
.multi-level-menu-sub-menu {
|
||||
display: block;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
</style>
|
|
@ -135,6 +135,10 @@ export default {
|
|||
}
|
||||
|
||||
::v-deep {
|
||||
.ant-table {
|
||||
border: none;
|
||||
}
|
||||
|
||||
.ant-table-thead > tr th {
|
||||
color: #00e9fe;
|
||||
font-family: MicrosoftYaHei;
|
||||
|
|
39
src/views/spectrumAnalysis/components/TitleOverBoarder.vue
Normal file
39
src/views/spectrumAnalysis/components/TitleOverBoarder.vue
Normal file
|
@ -0,0 +1,39 @@
|
|||
<template>
|
||||
<div class="title-over-border">
|
||||
<div class="title-over-border-title">{{ title }}</div>
|
||||
<div class="title-over-border-content">
|
||||
<slot />
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
props: {
|
||||
title: {
|
||||
type: String
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="less" scoped>
|
||||
@color: rgba(12, 235, 201, 0.6);
|
||||
.title-over-border {
|
||||
border: 1px solid @color;
|
||||
position: relative;
|
||||
|
||||
&-title {
|
||||
color: @color;
|
||||
background-color: #022024;
|
||||
position: absolute;
|
||||
top: -11px;
|
||||
left: 10px;
|
||||
padding: 0 10px;
|
||||
}
|
||||
|
||||
&-content {
|
||||
padding: 20px;
|
||||
}
|
||||
}
|
||||
</style>
|
|
@ -86,6 +86,18 @@
|
|||
<!-- Nuclide Activity and MDC 弹窗开始 -->
|
||||
<nuclide-activity-and-mdc-modal v-model="nuclideActivityAndMDCModalVisible" />
|
||||
<!-- Nuclide Activity and MDC 弹窗结束 -->
|
||||
|
||||
<!-- Save Setting 弹窗开始 -->
|
||||
<save-setting-modal v-model="saveSettingModalVisible" />
|
||||
<!-- Save Setting 弹窗结束 -->
|
||||
|
||||
<!-- 分析-设置弹窗开始 -->
|
||||
<analyze-setting-modal v-model="analyzeConfigureModalVisible" />
|
||||
<!-- 分析-设置弹窗结束 -->
|
||||
|
||||
<!-- 分析工具弹窗开始 -->
|
||||
<analyze-interactive-tool-modal v-model="analyzeInteractiveToolModalVisible" />
|
||||
<!-- 分析工具弹窗结束 -->
|
||||
</div>
|
||||
</template>
|
||||
<script>
|
||||
|
@ -103,6 +115,10 @@ import LoadFromDbModal from './components/Modals/LoadFromDBModal.vue'
|
|||
import LoadFromFileModal from './components/Modals/LoadFromFileModal.vue'
|
||||
import PeakInfomation from './components/PeakInfomation.vue'
|
||||
import NuclideActivityAndMdcModal from './components/Modals/NuclideActivityAndMDCModal.vue'
|
||||
import MultiLevelMenu from './components/MultiLevelMenu.vue'
|
||||
import SaveSettingModal from './components/Modals/SaveSettingModal.vue'
|
||||
import AnalyzeSettingModal from './components/Modals/AnalyzeSettingModal.vue'
|
||||
import AnalyzeInteractiveToolModal from './components/Modals/AnalyzeInteractiveToolModal.vue'
|
||||
|
||||
// 分析类型
|
||||
const ANALYZE_TYPE = {
|
||||
|
@ -124,7 +140,11 @@ export default {
|
|||
LoadFromDbModal,
|
||||
LoadFromFileModal,
|
||||
PeakInfomation,
|
||||
NuclideActivityAndMdcModal
|
||||
NuclideActivityAndMdcModal,
|
||||
MultiLevelMenu,
|
||||
SaveSettingModal,
|
||||
AnalyzeSettingModal,
|
||||
AnalyzeInteractiveToolModal
|
||||
},
|
||||
data() {
|
||||
this.ANALYZE_TYPE = ANALYZE_TYPE
|
||||
|
@ -139,12 +159,18 @@ export default {
|
|||
{ id: 2, name: 'AUX02 003-20151223 1855 S FULL 40183.7.PHD' }
|
||||
],
|
||||
|
||||
loadFromDbModalVisible: false,
|
||||
loadFromFileModalVisible: false,
|
||||
loadFromDbModalVisible: false, // 从数据库加载弹窗
|
||||
loadFromFileModalVisible: false, // 从文件加载弹窗
|
||||
|
||||
peakInfomationModalVisible: false,
|
||||
|
||||
nuclideActivityAndMDCModalVisible: false
|
||||
nuclideActivityAndMDCModalVisible: false,
|
||||
|
||||
saveSettingModalVisible: false, // 保存设置弹窗
|
||||
|
||||
analyzeConfigureModalVisible: false, // 分析设置弹窗
|
||||
|
||||
analyzeInteractiveToolModalVisible: true // 分析工具弹窗
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
|
@ -163,29 +189,44 @@ export default {
|
|||
this.spectraList = []
|
||||
},
|
||||
|
||||
// 保存结果到文件
|
||||
saveResultsToFile() {
|
||||
console.log('%c [ saveResultsToFile ]-152', 'font-size:13px; background:pink; color:#bf2c9f;')
|
||||
// 保存结果到文件, 服务端生成文件,前端下载
|
||||
handleSaveResultsToFile() {
|
||||
this.saveSettingModalVisible = true
|
||||
},
|
||||
|
||||
// 保存结果到数据库
|
||||
saveResultsToDB() {
|
||||
console.log('%c [ saveResultsToDB ]-157', 'font-size:13px; background:pink; color:#bf2c9f;')
|
||||
/**
|
||||
* 保存结果到数据库
|
||||
* @param { 'all' | 'current' } type
|
||||
*/
|
||||
handleSaveResultsToDB(type) {
|
||||
console.log('%c [ saveResultsToDB ]-157', 'font-size:13px; background:pink; color:#bf2c9f;', type)
|
||||
},
|
||||
|
||||
// 将谱列表中所有谱数据均以IMS2.0格式保存为PHD文件
|
||||
savePHDToFile() {
|
||||
console.log('%c [ savePHDToFile ]-162', 'font-size:13px; background:pink; color:#bf2c9f;')
|
||||
/**
|
||||
* 将谱列表中所有谱数据均以IMS2.0格式保存为PHD文件,
|
||||
* 服务端生成文件,前端下载
|
||||
* @param { 'all' | 'current' } type
|
||||
*/
|
||||
handleSavePHDToFile(type) {
|
||||
console.log('%c [ savePHDToFile ]-162', 'font-size:13px; background:pink; color:#bf2c9f;', type)
|
||||
},
|
||||
|
||||
// 执行β-γ符合谱分析流程,对当前谱数据进行再分析
|
||||
handleAnalyzeCurrSample() {
|
||||
console.log('%c [ handleAnalyzeCurrSample ]-152', 'font-size:13px; background:pink; color:#bf2c9f;')
|
||||
// 显示分析设置弹窗
|
||||
handleShowConfigureModal() {
|
||||
this.analyzeConfigureModalVisible = true
|
||||
},
|
||||
|
||||
// 对谱列表中所有谱数据进行再分析
|
||||
handleAnalyzeAllSample() {
|
||||
console.log('%c [ handleAnalyzeAllSample ]-156', 'font-size:13px; background:pink; color:#bf2c9f;')
|
||||
handleProcessing() {
|
||||
console.log('%c [ handleProcessing ]-156', 'font-size:13px; background:pink; color:#bf2c9f;')
|
||||
},
|
||||
|
||||
handleReprocessAll() {
|
||||
console.log('%c [ handleReprocessAll ]-216', 'font-size:13px; background:pink; color:#bf2c9f;')
|
||||
},
|
||||
|
||||
// 显示分析工具弹窗
|
||||
handleShowInteractiveTool() {
|
||||
this.analyzeInteractiveToolModalVisible = true
|
||||
},
|
||||
|
||||
// 弹出能量刻度界面
|
||||
|
@ -321,24 +362,53 @@ export default {
|
|||
title: 'SAVE',
|
||||
children: [
|
||||
{
|
||||
type: 'a-menu',
|
||||
children: [
|
||||
{
|
||||
type: 'a-menu-item',
|
||||
title: 'Save Results to File',
|
||||
handler: this.saveResultsToFile
|
||||
type: 'MultiLevelMenu',
|
||||
attrs: {
|
||||
children: [
|
||||
{
|
||||
title: 'Save Results to File'
|
||||
},
|
||||
{
|
||||
title: 'Save Results to DB',
|
||||
children: [
|
||||
{
|
||||
title: 'Save Current',
|
||||
key: 'current'
|
||||
},
|
||||
{
|
||||
title: 'Save All',
|
||||
key: 'all'
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
title: 'Save PHD to File',
|
||||
children: [
|
||||
{
|
||||
title: 'Save Current',
|
||||
key: 'current'
|
||||
},
|
||||
{
|
||||
title: 'Save All',
|
||||
key: 'all'
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
width: '170px'
|
||||
},
|
||||
on: {
|
||||
menuClick: () => {
|
||||
this.handleSaveResultsToFile()
|
||||
},
|
||||
{
|
||||
type: 'a-menu-item',
|
||||
title: 'Save Results to DB',
|
||||
handler: this.saveResultsToDB
|
||||
},
|
||||
{
|
||||
type: 'a-menu-item',
|
||||
title: 'Save PHD to File',
|
||||
handler: this.savePHDToFile
|
||||
submenuClick: ({ item, child }) => {
|
||||
if (item.title == 'Save Results to DB') {
|
||||
this.handleSaveResultsToDB(child.key)
|
||||
} else if (item.title == 'Save PHD to File') {
|
||||
this.handleSavePHDToFile(child.key)
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
|
@ -350,13 +420,23 @@ export default {
|
|||
children: [
|
||||
{
|
||||
type: 'a-menu-item',
|
||||
title: 'Analyze Current Sample',
|
||||
handler: this.handleAnalyzeCurrSample
|
||||
title: 'Configure',
|
||||
handler: this.handleShowConfigureModal
|
||||
},
|
||||
{
|
||||
type: 'a-menu-item',
|
||||
title: 'Analyze All Sample',
|
||||
handler: this.handleAnalyzeAllSample
|
||||
title: 'Processing',
|
||||
handler: this.handleProcessing
|
||||
},
|
||||
{
|
||||
type: 'a-menu-item',
|
||||
title: 'Reprocess All',
|
||||
handler: this.handleReprocessAll
|
||||
},
|
||||
{
|
||||
type: 'a-menu-item',
|
||||
title: 'Interactive Tool',
|
||||
handler: this.handleShowInteractiveTool
|
||||
}
|
||||
]
|
||||
}
|
||||
|
@ -606,6 +686,30 @@ export default {
|
|||
position: relative;
|
||||
border-right: 0;
|
||||
|
||||
&-submenu {
|
||||
&-active {
|
||||
background-color: #055565 !important;
|
||||
}
|
||||
|
||||
&-title {
|
||||
height: 30px !important;
|
||||
line-height: 30px !important;
|
||||
color: #fff;
|
||||
margin: 0;
|
||||
|
||||
&:active {
|
||||
background-color: #055565 !important;
|
||||
}
|
||||
|
||||
.ant-menu-submenu-arrow {
|
||||
&::before,
|
||||
&::after {
|
||||
background: #fff !important;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
&-item {
|
||||
color: #fff;
|
||||
font-family: Arial;
|
||||
|
@ -614,6 +718,8 @@ export default {
|
|||
padding: 4px 14px;
|
||||
height: 30px;
|
||||
line-height: 22px;
|
||||
margin: 0 !important;
|
||||
|
||||
&:hover {
|
||||
background-color: #055565 !important;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue
Block a user