feat: 增加RLR弹窗中所有子页面,增加Arr、SampleInfo、QC Results弹窗

This commit is contained in:
Xu Zhimeng 2023-07-17 19:37:46 +08:00
parent 704986f910
commit 38b23f5e0d
26 changed files with 1397 additions and 28 deletions

View File

@ -35,6 +35,7 @@
ref="betaGammaChartRef"
:histogramDataList="histogramDataList"
:histogramDataDList="histogramDataDList"
:boundary="boundaryList"
@positionChange="handlePositionChange"
@rangeChange="handleRangeChange"
/>
@ -169,6 +170,7 @@ export default {
histogramDataList: [],
histogramDataDList: [],
boundaryList: [],
gammaOriginalData: [],
gammaProjectedData: [],
@ -211,12 +213,15 @@ export default {
histogramDataList, // Beta-Gamma Spectrum: Sample
histogramDataDList, // Beta-Gamma Spectrum: Sample 3D
Boundary, // 2d
XeData, // Result Display
spectrumData
} = this.sampleDetail[type]
this.histogramDataList = histogramDataList
this.histogramDataDList = histogramDataDList
this.boundaryList = Boundary
this.gammaOriginalData = gammaOriginalData
this.gammaProjectedData = gammaProjectedData

View File

@ -0,0 +1,75 @@
<template>
<custom-modal v-model="visible" :width="1000" :title="type == 1 ? 'ARR' : 'RRR'">
<pre>
{{ content }}
</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'
import { getAction } from '../../../../api/manage'
export default {
mixins: [ModalMixin],
props: {
type: {
type: Number,
default: 1
}
},
data() {
return {
content: `-------------------------- 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 --------------------------
`,
isLoading: true
}
},
methods: {
async getContent() {
try {
const res = getAction('/')
} catch (error) {
console.error(error)
}
}
}
}
</script>
<style lang="less" scoped>
pre {
max-height: 450px;
padding: 5px;
overflow: auto;
background-color: #285367;
}
</style>

View File

@ -47,7 +47,7 @@ export default {
<style lang="less" scoped>
.data-processing-log {
height: 450px;
max-height: 450px;
padding: 5px;
overflow: auto;
background-color: #285367;

View File

@ -0,0 +1,46 @@
<template>
<custom-modal v-model="visible" :width="750" title="Qc Results">
<a-table :columns="columns" :dataSource="list" :pagination="false" />
<a-button slot="custom-footer" type="primary">Export to Excel</a-button>
</custom-modal>
</template>
<script>
import ModalMixin from '@/mixins/ModalMixin'
const columns = [
{
title: 'Name',
dataIndex: 'name'
},
{
title: 'Pass/Fail',
dataIndex: 'status'
},
{
title: 'Value',
dataIndex: 'value'
},
{
title: 'Standard',
dataIndex: 'standard'
}
]
export default {
mixins: [ModalMixin],
data() {
this.columns = columns
return {
list: [
{
name: 'name',
status: 'status',
value: 'value',
standard: 'standard'
}
]
}
}
}
</script>
<style lang="less" scoped></style>

View File

@ -0,0 +1,25 @@
<template>
<div>
<a-form-model :labelCol="{ style: { width: '240px' } }" :wrapperCol="{style:{ width: '300px' }}">
<a-form-model-item label="Collection Start Time">
<custom-date-picker show-time></custom-date-picker>
</a-form-model-item>
<a-form-model-item label="Collection Stop Time">
<custom-date-picker show-time></custom-date-picker>
</a-form-model-item>
<a-form-model-item label="Total Air Volume Sampled[m3]">
<a-input></a-input>
</a-form-model-item>
</a-form-model>
</div>
</template>
<script>
export default {}
</script>
<style lang="less" scoped>
.ant-form-item {
margin-bottom: 0;
}
</style>

View File

@ -0,0 +1,17 @@
<template>
<div>
<a-textarea :rows="25"></a-textarea>
</div>
</template>
<script>
export default {
data() {
return {
content: ''
}
}
}
</script>
<style></style>

View File

@ -0,0 +1,30 @@
<template>
<div>
<a-form-model layout="vertical">
<a-form-model-item label="Person Responsible for the Test">
<a-input></a-input>
</a-form-model-item>
<a-form-model-item label="~IDCSummary">
<a-textarea :rows="5" />
</a-form-model-item>
<a-form-model-item label="~labsummary">
<a-textarea :rows="5" />
</a-form-model-item>
<a-form-model-item label="~ResultComparison">
<a-textarea :rows="5" />
</a-form-model-item>
</a-form-model>
</div>
</template>
<script>
export default {}
</script>
<style lang="less" scoped>
.ant-form {
&-item {
margin-bottom: 0;
}
}
</style>

View File

@ -0,0 +1,81 @@
<template>
<div>
<a-form-model
layout="horizontal"
:labelCol="{ style: { width: '200px' } }"
:wrapperCol="{ style: { width: '200px' } }"
>
<a-form-model-item label="MSG_ID">
<a-input />
</a-form-model-item>
<a-form-model-item label="Data_Type">
<a-input />
</a-form-model-item>
<a-form-model-item label="Priority Level">
<custom-select style="width: 150px" :options="priorityLevbelOptions"> </custom-select>
</a-form-model-item>
<a-form-model-item label="Station Code">
<a-input />
</a-form-model-item>
<a-form-model-item label="SRID">
<a-input />
</a-form-model-item>
<a-form-model-item label="Laboratory Code">
<a-input />
</a-form-model-item>
<a-form-model-item label="Laboratory Detector Code">
<a-input />
</a-form-model-item>
<a-form-model-item label="Report Type">
<custom-select style="width: 150px" :options="reportTypeOptions"> </custom-select>
</a-form-model-item>
<a-form-model-item label="Report Number">
<a-input-number style="width: 100%;" />
</a-form-model-item>
<a-form-model-item label="Sample Category">
<custom-select style="width: 150px" :options="sampleCategoryOptions"> </custom-select>
</a-form-model-item>
<a-form-model-item label="Message Transmission Time">
<custom-date-picker show-time v-model="model.time" />
</a-form-model-item>
</a-form-model>
</div>
</template>
<script>
const priorityLevbelOptions = [
{
label: 'Routine',
value: 1
}
]
const reportTypeOptions = [
{
label: 'FIN',
value: 1
}
]
const sampleCategoryOptions = [
{ label: 'Category A', value: 1 },
{ label: 'Category B', value: 2 },
{ label: 'Category C', value: 3 }
]
export default {
data() {
this.priorityLevbelOptions = priorityLevbelOptions
this.reportTypeOptions = reportTypeOptions
this.sampleCategoryOptions = sampleCategoryOptions
return {
model: {}
}
}
}
</script>
<style lang="less" scoped>
.ant-form-item {
margin-bottom: 0;
}
</style>

View File

@ -0,0 +1,44 @@
<template>
<div>
<table-with-operators :columns="columns" :list="list" />
</div>
</template>
<script>
import TableWithOperators from './TableWithOperators.vue'
const columns = [
{
title: 'Nuclide',
dataIndex: 'nuclide',
align: 'center'
},
{
title: 'MDA(Bq)',
dataIndex: 'mda',
align: 'center'
},
{
title: 'MDC(Bq/m3)',
dataIndex: 'mdc',
align: 'center'
}
]
export default {
components: {
TableWithOperators
},
data() {
this.columns = columns
return {
list: [
{
nuclide: 'nuclide',
mda: 'mda',
mdc: 'mdc'
}
]
}
}
}
</script>

View File

@ -0,0 +1,60 @@
<template>
<div>
<table-with-operators :columns="columns" :list="list" />
</div>
</template>
<script>
import TableWithOperators from './TableWithOperators.vue'
const columns = [
{
title: 'Nuclide1',
dataIndex: 'nuclide1',
align: 'center'
},
{
title: 'Nuclide2',
dataIndex: 'nuclide2',
align: 'center'
},
{
title: 'Ratio',
dataIndex: 'ratio',
align: 'center'
},
{
title: 'Ratio_err(%)',
dataIndex: 'ratioErr',
align: 'center'
},
{
title: 'Reference Time',
dataIndex: 'referenceTime',
align: 'center'
},
{
title: 'Zero Time',
dataIndex: 'zeroTime',
align: 'center'
}
]
export default {
components: { TableWithOperators },
data() {
this.columns = columns
return {
list: [
{
nuclide1: '',
nuclide2: '',
ratio: '',
ratioErr: '',
referenceTime: '',
zeroTime: ''
}
]
}
}
}
</script>

View File

@ -0,0 +1,25 @@
<template>
<div>
<a-form-model layout="vertical">
<a-form-model-item label="~AnalysisPurpose">
<a-textarea :rows="9" />
</a-form-model-item>
<a-form-model-item label="~TestsAuthorized">
<a-textarea :rows="5" />
</a-form-model-item>
<a-form-model-item label="SpecialInstructions">
<a-textarea :rows="5" />
</a-form-model-item>
</a-form-model>
</div>
</template>
<script>
export default {}
</script>
<style lang="less" scoped>
.ant-form-item {
margin-bottom: 0;
}
</style>

View File

@ -0,0 +1,45 @@
<template>
<div>
<table-with-operators :columns="columns" :list="list" />
</div>
</template>
<script>
import TableWithOperators from './TableWithOperators.vue'
const columns = [
{
title: 'Index',
dataIndex: 'index',
align: 'center'
},
{
title: 'Explanation Level(%)',
dataIndex: 'explanationLevel',
align: 'center'
},
{
title: 'Identified Nuclides',
dataIndex: 'identifiedNuclides',
align: 'center',
width: '60%'
}
]
export default {
components: {
TableWithOperators
},
data() {
this.columns = columns
return {
list: [
{
index: 'index',
explanationLevel: 'explanationLevel',
identifiedNuclides: 'identifiedNuclides'
}
]
}
}
}
</script>

View File

@ -0,0 +1,80 @@
<template>
<div>
<table-with-operators :columns="columns" :list="list" />
</div>
</template>
<script>
import TableWithOperators from './TableWithOperators.vue'
const columns = [
{
title: 'Index',
dataIndex: 'index',
align: 'center'
},
{
title: 'Energy(keV)',
dataIndex: 'energy',
align: 'center'
},
{
title: 'Energy_err(%)',
dataIndex: 'energyErr',
align: 'center'
},
{
title: 'Net Area',
dataIndex: 'netArea',
align: 'center'
},
{
title: 'Area_err(%)',
dataIndex: 'areaErr',
align: 'center'
},
{
title: 'NetCountRate',
dataIndex: 'netCountRate',
align: 'center'
},
{
title: 'NCRate_err(%)',
dataIndex: 'ncRateErr',
align: 'center'
},
{
title: 'LC',
dataIndex: 'lc',
align: 'center'
},
{
title: 'Significance',
dataIndex: 'significance',
align: 'center'
}
]
export default {
components: {
TableWithOperators
},
data() {
this.columns = columns
return {
list: [
{
index: 'index',
energy: 'energy',
energyErr: 'energyErr',
netArea: 'netArea',
areaErr: 'areaErr',
netCountRate: 'netCountRate',
ncRateErr: 'ncRateErr',
lc: 'lc',
significance: 'significance'
}
]
}
}
}
</script>

View File

@ -0,0 +1,20 @@
<template>
<a-form-model layout="vertical">
<a-form-model-item label="Software Used">
<a-input />
</a-form-model-item>
<a-form-model-item label="Peak Location Algorithm">
<a-input />
</a-form-model-item>
</a-form-model>
</template>
<script>
export default {}
</script>
<style lang="less" scoped>
.ant-form-item {
margin-bottom: 0;
}
</style>

View File

@ -0,0 +1,27 @@
<template>
<div>
<a-form-model layout="vertical">
<a-form-model-item label="~SAMPLEPHD">
<a-textarea :rows="6" />
</a-form-model-item>
<a-form-model-item label="~CALIBPHD">
<a-textarea :rows="6" />
</a-form-model-item>
<a-form-model-item label="~PhysicalConstants">
<a-textarea :rows="6" />
</a-form-model-item>
</a-form-model>
</div>
</template>
<script>
export default {}
</script>
<style lang="less" scoped>
.ant-form {
&-item {
margin-bottom: 0;
}
}
</style>

View File

@ -0,0 +1,119 @@
<template>
<div>
<a-form-model :labelCol="{ style: { width: '205px' } }">
<a-form-model-item label="Activity Reference Time">
<custom-date-picker v-model="model.activityReferenceTime" show-time />
</a-form-model-item>
<a-form-model-item label="Concentration Reference Time">
<custom-date-picker v-model="model.Concentration" show-time />
</a-form-model-item>
</a-form-model>
<div class="operators">
<a-button type="primary">Insert Before</a-button>
<a-button type="primary">Insert After</a-button>
<a-button type="primary">Delete</a-button>
</div>
<a-table
:class="list.length ? 'has-data' : ''"
:columns="columns"
:dataSource="list"
:pagination="false"
:scroll="{ y: 370 }"
>
</a-table>
</div>
</template>
<script>
const columns = [
{
title: 'Nuclide1',
dataIndex: 'nuclide1',
align: 'center'
},
{
title: 'Nuclide2',
dataIndex: 'nuclide2',
align: 'center'
},
{
title: 'Ratio',
dataIndex: 'ratio',
align: 'center'
},
{
title: 'Ratio_err(%)',
dataIndex: 'ratioErr',
align: 'center'
},
{
title: 'Reference Time',
dataIndex: 'referenceTime',
align: 'center'
},
{
title: 'Zero Time',
dataIndex: 'zeroTime',
align: 'center'
}
]
export default {
data() {
this.columns = columns
return {
model: {
activityReferenceTime: undefined,
Concentration: undefined
},
list: [
{
nuclide1: '',
nuclide2: '',
ratio: '',
ratioErr: '',
referenceTime: '',
zeroTime: ''
}
]
}
}
}
</script>
<style lang="less" scoped>
.ant-form-item {
margin-bottom: 0;
}
.operators {
display: flex;
margin-top: 20px;
justify-content: space-between;
.ant-btn {
width: 240px;
}
}
.ant-table-wrapper {
margin-top: 20px;
&.has-data {
::v-deep {
.ant-table-body {
height: 370px;
background-color: #06282a;
}
}
}
::v-deep {
.ant-table-placeholder {
height: 371px;
display: flex;
justify-content: center;
align-items: center;
}
}
}
</style>

View File

@ -0,0 +1,41 @@
<template>
<div>
<a-form-model
layout="horizontal"
:labelCol="{ style: { width: '240px' } }"
:wrapperCol="{ style: { width: '300px' } }"
>
<a-form-model-item label="Sample Reference Identification">
<a-input></a-input>
</a-form-model-item>
<a-form-model-item label="Seal Number">
<a-input></a-input>
</a-form-model-item>
<a-form-model-item label="Sample Receipt Time">
<custom-date-picker show-time></custom-date-picker>
</a-form-model-item>
</a-form-model>
<a-form-model layout="vertical">
<a-form-model-item label="~PackageCondition">
<a-textarea :rows="4" />
</a-form-model-item>
<a-form-model-item label="~SealCondition">
<a-textarea :rows="4" />
</a-form-model-item>
<a-form-model-item label="~SampleCondition">
<a-textarea :rows="4" />
</a-form-model-item>
</a-form-model>
</div>
</template>
<script>
export default {}
</script>
<style lang="less" scoped>
.ant-form-item {
margin-bottom: 0;
}
</style>

View File

@ -0,0 +1,98 @@
<template>
<div>
<div class="operators">
<a-button type="primary">Insert Before</a-button>
<a-button type="primary">Insert After</a-button>
<a-button type="primary">Delete</a-button>
</div>
<a-table
size="small"
:class="list.length ? 'has-data' : ''"
:columns="columns"
:dataSource="list"
:pagination="false"
:scroll="{ y: 470 }"
>
</a-table>
</div>
</template>
<script>
const columns = [
{
title: 'Nuclide1',
dataIndex: 'nuclide1',
align: 'center'
},
{
title: 'Nuclide2',
dataIndex: 'nuclide2',
align: 'center'
},
{
title: 'Ratio',
dataIndex: 'ratio',
align: 'center'
},
{
title: 'Ratio_err(%)',
dataIndex: 'ratioErr',
align: 'center'
},
{
title: 'Reference Time',
dataIndex: 'referenceTime',
align: 'center'
},
{
title: 'Zero Time',
dataIndex: 'zeroTime',
align: 'center'
}
]
export default {
props: {
columns: {
type: Array,
required: true
},
list: {
type: Array,
required: true
}
}
}
</script>
<style lang="less" scoped>
.operators {
display: flex;
justify-content: space-between;
.ant-btn {
width: 240px;
}
}
.ant-table-wrapper {
margin-top: 20px;
&.has-data {
::v-deep {
.ant-table-body {
height: 470px;
background-color: #06282a;
}
}
}
::v-deep {
.ant-table-placeholder {
height: 471px;
display: flex;
justify-content: center;
align-items: center;
}
}
}
</style>

View File

@ -0,0 +1,28 @@
<template>
<div>
<a-form-model layout="vertical">
<a-form-model-item label="Type of Test Performed">
<a-textarea :rows="5" />
</a-form-model-item>
<a-form-model-item label="Test Completion Date">
<custom-date-picker />
</a-form-model-item>
<a-form-model-item label="Person Responsible for the Test">
<a-input />
</a-form-model-item>
<a-form-model-item label="Purpose of Test Performed">
<a-textarea :rows="5" />
</a-form-model-item>
</a-form-model>
</div>
</template>
<script>
export default {}
</script>
<style lang="less" scoped>
.ant-form-item {
margin-bottom: 0;
}
</style>

View File

@ -0,0 +1,33 @@
<template>
<div>
<a-form-model layout="vertical">
<a-form-model-item label="Software Used">
<a-input></a-input>
</a-form-model-item>
<a-form-model-item label="~NuclidesMethod">
<a-input></a-input>
</a-form-model-item>
<a-form-model-item label="~BaselineMethod">
<a-input></a-input>
</a-form-model-item>
<a-form-model-item label="~LCMethod">
<a-input></a-input>
</a-form-model-item>
<a-form-model-item label="CalibrationMethod">
<a-input></a-input>
</a-form-model-item>
</a-form-model>
</div>
</template>
<script>
export default {}
</script>
<style lang="less" scoped>
.ant-form {
&-item {
margin-bottom: 0;
}
}
</style>

View File

@ -0,0 +1,48 @@
<template>
<div>
<table-with-operators :columns="columns" :list="list" />
</div>
</template>
<script>
import TableWithOperators from './TableWithOperators.vue'
const columns = [
{
title: 'Nuclide',
dataIndex: 'nuclide',
align: 'center'
},
{
title: 'Energy(keV)',
dataIndex: 'energy',
align: 'center'
},
{
title: 'Correction Factor',
dataIndex: 'correctionFactor',
align: 'center'
},
{
title: 'Uncertainty(%)',
dataIndex: 'uncertainty',
align: 'center'
}
]
export default {
components: { TableWithOperators },
data() {
this.columns = columns
return {
list: [
{
nuclide: 'nuclide',
energy: 'energy',
correctionFactor: 'correctionFactor',
uncertainty: 'uncertainty'
}
]
}
}
}
</script>

View File

@ -0,0 +1,182 @@
<template>
<custom-modal v-model="visible" :width="1280" title="Mini Radionuclide Laboratory Reports" :destroyOnClose="true">
<div class="rlr">
<div class="rlr-tabs">
<div
class="rlr-tabs-item"
:class="activeKey == index ? 'active' : ''"
v-for="(tab, index) in tabs"
:key="index"
@click="activeKey = index"
>
{{ tab }}
</div>
</div>
<div class="rlr-content">
<h4>{{ tabs[activeKey] }}</h4>
<div class="rlr-content-detail">
<template v-if="activeKey == 0">
<c-header />
</template>
<template v-if="activeKey == 1">
<Objective />
</template>
<template v-if="activeKey == 2">
<collection />
</template>
<template v-if="activeKey == 3">
<sample-receipt />
</template>
<template v-if="activeKey == 4">
<test />
</template>
<template v-if="activeKey == 5">
<peaks-method />
</template>
<template v-if="activeKey == 6">
<peak-fit />
</template>
<template v-if="activeKey == 7">
<g-analysis-methods />
</template>
<template v-if="activeKey == 8">
<peak-association />
</template>
<template v-if="activeKey == 9">
<references />
</template>
<template v-if="activeKey == 10">
<results />
</template>
<template v-if="activeKey == 11">
<nuclide-ratios />
</template>
<template v-if="activeKey == 12">
<g-coincidence-correction />
</template>
<template v-if="activeKey == 13">
<mda />
</template>
<template v-if="activeKey == 14">
<conclusions />
</template>
<template v-if="activeKey == 15">
<comment />
</template>
</div>
</div>
</div>
</custom-modal>
</template>
<script>
import ModalMixin from '@/mixins/ModalMixin'
import CHeader from './components/Header.vue'
import Objective from './components/Objective.vue'
import Collection from './components/Collection.vue'
import SampleReceipt from './components/SampleReceipt.vue'
import Test from './components/Test.vue'
import PeaksMethod from './components/PeaksMethod.vue'
import PeakFit from './components/PeakFit.vue'
import GAnalysisMethods from './components/g_AnalysisMethods.vue'
import PeakAssociation from './components/PeakAssociation.vue'
import References from './components/References.vue'
import Results from './components/Results.vue'
import NuclideRatios from './components/NuclideRatios.vue'
import GCoincidenceCorrection from './components/g_CoincidenceCorrection.vue'
import Mda from './components/MDA.vue'
import Conclusions from './components/Conclusions.vue'
import Comment from './components/Comment.vue'
const tabs = [
'Header',
'Objective',
'Collection',
'SampleReceipt',
'Test',
'PeaksMethod',
'PeakFit',
'g_AnalysisMethods',
'PeakAssociation',
'References',
'Results',
'NuclideRatios',
'g_CoincidenceCorrection',
'MDA',
'Conclusions',
'Comment'
]
export default {
mixins: [ModalMixin],
components: {
CHeader,
Objective,
Collection,
SampleReceipt,
Test,
PeaksMethod,
PeakFit,
GAnalysisMethods,
PeakAssociation,
References,
Results,
NuclideRatios,
GCoincidenceCorrection,
Mda,
Conclusions,
Comment
},
data() {
this.tabs = tabs
return {
activeKey: 0
}
},
methods: {
beforeModalOpen() {
this.activeKey = 0
}
}
}
</script>
<style lang="less" scoped>
.rlr {
display: flex;
&-tabs {
width: 170px;
background-color: #275466;
padding: 3px 0;
&-item {
cursor: pointer;
user-select: none;
padding: 0 5px;
height: 32px;
line-height: 32px;
&.active {
background-color: #296d81;
}
}
}
&-content {
margin-left: 20px;
flex: 1;
h4 {
color: #fff;
}
&-detail {
height: 600px;
padding: 20px;
overflow: auto;
background-color: #082f3e;
}
}
}
</style>

View File

@ -0,0 +1,120 @@
<template>
<custom-modal v-model="visible" :width="750" title="Sample Infomation">
<div class="sample-infomation">
<a-form-model :labelCol="{ style: { width: '150px', textAlign: 'left' } }">
<a-row>
<a-col :span="12" v-for="(item, index) in columns" :key="index">
<a-form-model-item :label="item.title">
{{ data[item.key] }}
</a-form-model-item>
</a-col>
</a-row>
</a-form-model>
</div>
<div slot="custom-footer" style="text-align: center;">
<a-space :size="20">
<a-button type="primary">Export to Excel</a-button>
<a-button @click="visible = false">Close</a-button>
</a-space>
</div>
</custom-modal>
</template>
<script>
import ModalMixin from '@/mixins/ModalMixin'
const columns = [
{
title: 'Station Id',
key: 'stationId'
},
{
title: 'Detector Id',
key: 'detectorId'
},
{
title: 'Sample Id',
key: 'sampleId'
},
{
title: 'Sample Geometry',
key: 'sampleGeometry'
},
{
title: 'Sample Quantity',
key: 'sampleQuantity'
},
{
title: 'Sample Type',
key: 'sampleType'
},
{
title: 'Collection Start',
key: 'collectionStart'
},
{
title: 'Sampling Time',
key: 'samplingTime'
},
{
title: 'Collection Stop',
key: 'collectionStop'
},
{
title: 'Decay Time',
key: 'decayTime'
},
{
title: 'Acquisition Start',
key: 'acquisitionStart'
},
{
title: 'Acquisition Time',
key: 'acquisitionTime'
},
{
title: 'Acquisition Stop',
key: 'acquisitionStop'
},
{
title: 'Avg Flow Rate',
key: 'avgFlowRate'
}
]
export default {
mixins: [ModalMixin],
data() {
this.columns = columns
return {
data: {
stationId: 'stationId',
detectorId: 'detectorId',
sampleId: 'sampleId',
sampleGeometry: 'sampleGeometry',
sampleQuantity: 'sampleQuantity',
sampleType: 'sampleType',
collectionStart: 'collectionStart',
samplingTime: 'samplingTime',
collectionStop: 'collectionStop',
decayTime: 'decayTime',
acquisitionStart: 'acquisitionStart',
acquisitionTime: 'acquisitionTime',
acquisitionStop: 'acquisitionStop',
avgFlowRate: 'avgFlowRate'
}
}
}
}
</script>
<style lang="less" scoped>
.sample-infomation {
background-color: #143644;
padding: 20px;
.ant-form-item {
margin-bottom: 0;
}
}
</style>

View File

@ -0,0 +1,69 @@
<template>
<custom-modal v-model="visible" :width="1000" title="Spectrum" :footer="null">
<pre>
{{ content }}
</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'
import { getAction } from '../../../../api/manage'
export default {
mixins: [ModalMixin],
data() {
return {
content: `-------------------------- 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 --------------------------
`,
isLoading: true
}
},
methods: {
async getContent() {
try {
const res = getAction('/')
} catch (error) {
console.error(error)
}
}
}
}
</script>
<style lang="less" scoped>
pre {
max-height: 450px;
padding: 5px;
overflow: auto;
background-color: #285367;
}
</style>

View File

@ -106,6 +106,26 @@
<!-- Config User Library 弹窗开始 -->
<nuclide-library-modal v-model="nuclideLibraryModalVisible" />
<!-- Config User Library 弹窗结束 -->
<!-- Arr 弹窗开始 -->
<arr-rrr-modal v-model="arrOrRRRModalVisible" :type="arrOrRRRModalType"/>
<!-- Arr 弹窗结束 -->
<!-- Spectrum 弹窗开始 -->
<spectrum-modal v-model="spectrumModalVisible" :type="arrOrRRRModalType"/>
<!-- Spectrum 弹窗结束 -->
<!-- SampleInfo 弹窗开始 -->
<sample-infomation-modal v-model="sampleInfomationModalVisible" />
<!-- SampleInfo 弹窗结束 -->
<!-- Qc Results 弹窗开始 -->
<qc-results-modal v-model="qcResultsModalVisible" />
<!-- Qc Results 弹窗结束 -->
<!-- RLR 弹窗开始 -->
<rlr-modal v-model="rlrModalVisible" />
<!-- RLR 弹窗结束 -->
</div>
</template>
<script>
@ -131,6 +151,11 @@ 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'
import ArrRrrModal from './components/Modals/ArrRrrModal.vue'
import SpectrumModal from './components/Modals/SpectrumModal.vue'
import SampleInfomationModal from './components/Modals/SampleInfomationModal.vue'
import QcResultsModal from './components/Modals/QcResultsModal.vue'
import RlrModal from './components/Modals/RLRModal/index.vue'
//
const ANALYZE_TYPE = {
@ -160,7 +185,12 @@ export default {
ColorConfigModal,
DataProcessingLogModal,
ConfigUserLibraryModal,
NuclideLibraryModal
NuclideLibraryModal,
ArrRrrModal,
SpectrumModal,
SampleInfomationModal,
QcResultsModal,
RlrModal
},
data() {
this.ANALYZE_TYPE = ANALYZE_TYPE
@ -175,10 +205,6 @@ export default {
sampleData: {}, //
peakInfomationModalVisible: false,
nuclideActivityAndMDCModalVisible: false,
saveSettingModalVisible: false, //
analyzeConfigureModalVisible: false, //
@ -199,7 +225,16 @@ export default {
dataProcessingLogModalVisible: false, // Log -> Data Processing Log
configUserLibModalVisible: false, // NuclideLibrary -> Config User Library
nuclideLibraryModalVisible: false // NuclideLibrary -> Nuclide Library
nuclideLibraryModalVisible: false, // NuclideLibrary -> Nuclide Library
peakInfomationModalVisible: false, // Reports -> PeakInfo
arrOrRRRModalVisible: false, // Reports -> ARR RRR
arrOrRRRModalType: 1, // Reports -> ARR RRR
nuclideActivityAndMDCModalVisible: false, // Reports -> Radionuclide Activity
spectrumModalVisible: false, // Reports -> Spectrum
sampleInfomationModalVisible: false, // Reports -> Sample Infomation
qcResultsModalVisible: false, // Reports -> Qc Results
rlrModalVisible: false, // Reports -> RLR
}
},
created() {
@ -258,21 +293,6 @@ export default {
console.log('%c [ handleReprocessAll ]-216', 'font-size:13px; background:pink; color:#bf2c9f;')
},
//
handleViewARR() {
console.log('%c [ handleViewARR ]-186', 'font-size:13px; background:pink; color:#bf2c9f;')
},
//
handleViewRRR() {
console.log('%c [ handleViewRRR ]-192', 'font-size:13px; background:pink; color:#bf2c9f;')
},
//
handleViewSpectrum() {
console.log('%c [ handleViewSpectrum ]-198', 'font-size:13px; background:pink; color:#bf2c9f;')
},
//
handleViewComments() {
this.spectrumCommentsModalVisible = true
@ -518,18 +538,49 @@ export default {
children: [
{
type: 'a-menu-item',
title: 'View ARR',
handler: this.handleViewARR
title: 'Peak Infomation',
handler: () => this.peakInfomationModalVisible = true
},
{
type: 'a-menu-item',
title: 'View RRR',
handler: this.handleViewRRR
title: 'ARR',
handler: () => {
this.arrOrRRRModalVisible = true
this.arrOrRRRModalType = 1
}
},
{
type: 'a-menu-item',
title: 'View Spectrum',
handler: this.handleViewSpectrum
title: 'RRR',
handler: () => {
this.arrOrRRRModalVisible = true
this.arrOrRRRModalType = 2
}
},
{
type: 'a-menu-item',
title: 'Radionuclide Activity',
handler: () => this.nuclideActivityAndMDCModalVisible = true
},
{
type: 'a-menu-item',
title: 'Spectrum',
handler: () => this.spectrumModalVisible = true
},
{
type: 'a-menu-item',
title: 'Sample Infomation',
handler: () => this.sampleInfomationModalVisible = true
},
{
type: 'a-menu-item',
title: 'Qc Results',
handler: () => this.qcResultsModalVisible = true
},
{
type: 'a-menu-item',
title: 'RLR',
handler: () => this.rlrModalVisible = true
}
]
}