AnalysisSystemForRadionucli.../src/views/spectrumAnalysis/components/Modals/RLRModal/index.vue

382 lines
13 KiB
Vue
Raw Normal View History

<template>
<custom-modal v-model="visible" :width="1280" title="Mini Radionuclide Laboratory Reports" :destroyOnClose="true" @cancel="handleCancel">
<a-spin :spinning="isLoading">
<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="handleChangeView(index)"
>
{{ tab }}
</div>
</div>
<div class="rlr-content">
<h4>{{ tabs[activeKey] }}</h4>
<div class="rlr-content-detail">
<template v-if="activeKey == 0">
2023-09-12 17:42:19 +08:00
<c-header :allData="allInfo" @valChange="getNewVal_header" />
</template>
<template v-if="activeKey == 1">
2023-09-12 17:42:19 +08:00
<Objective :allData="allInfo" @valChange="getNewVal_obj" />
</template>
<template v-if="activeKey == 2">
2023-09-12 17:42:19 +08:00
<collection :allData="allInfo" @valChange="getNewVal_collect" />
</template>
<template v-if="activeKey == 3">
2023-09-12 17:42:19 +08:00
<sample-receipt :allData="allInfo" @valChange="getNewVal_receipt" />
</template>
<template v-if="activeKey == 4">
2023-09-12 17:42:19 +08:00
<test :allData="allInfo" @valChange="getNewVal_test" />
</template>
<template v-if="activeKey == 5">
2023-09-12 17:42:19 +08:00
<peaks-method :allData="allInfo" @valChange="getNewVal_peakMethod" />
</template>
<template v-if="activeKey == 6">
2023-09-12 17:42:19 +08:00
<peak-fit :tableData="allInfo.peakFit" @valChange="getNewVal_peakFit"/>
</template>
<template v-if="activeKey == 7">
2023-09-12 17:42:19 +08:00
<g-analysis-methods :allData="allInfo" @valChange="getNewVal_analyMethod" />
</template>
<template v-if="activeKey == 8">
2023-09-12 17:42:19 +08:00
<peak-association :tableData="allInfo.Association" @valChange="getNewVal_association" />
</template>
<template v-if="activeKey == 9">
2023-09-12 17:42:19 +08:00
<references :allData="allInfo" @valChange="getNewVal_reference" />
</template>
<template v-if="activeKey == 10">
2023-09-12 17:42:19 +08:00
<results :allData="allInfo" @valChange="getNewVal_result" @listChange="getNewList_result" />
</template>
<template v-if="activeKey == 11">
2023-09-12 17:42:19 +08:00
<nuclide-ratios @valChange="getNewVal_coincidence" />
</template>
<template v-if="activeKey == 12">
2023-09-12 17:42:19 +08:00
<g-coincidence-correction @valChange="getNewVal_nuclide" />
</template>
<template v-if="activeKey == 13">
2023-09-12 17:42:19 +08:00
<mda @valChange="getNewVal_mda"/>
</template>
<template v-if="activeKey == 14">
2023-09-12 17:42:19 +08:00
<conclusions :allData="allInfo" @valChange="getNewVal_conclusion" />
</template>
<template v-if="activeKey == 15">
2023-09-12 17:42:19 +08:00
<comment :allData="allInfo" @valChange="getNewVal_comment" />
</template>
</div>
</div>
</div>
</a-spin>
<div slot="custom-footer" style="text-align: center;">
<a-space :size="20">
<a-button type="primary" @click="handleSave">Save</a-button>
<a-button @click="handleCancel">Cancel</a-button>
</a-space>
</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'
2023-09-12 17:42:19 +08:00
import { getAction, postAction } from '@/api/manage'
import Custom from '@/views/account/settings/Custom.vue'
import SampleDataMixin from '@/views/spectrumAnalysis/SampleDataMixin'
const tabs = [
'Header',
'Objective',
'Collection',
'SampleReceipt',
'Test',
'PeaksMethod',
'PeakFit',
'g_AnalysisMethods',
'PeakAssociation',
'References',
'Results',
'NuclideRatios',
'g_CoincidenceCorrection',
'MDA',
'Conclusions',
'Comment'
]
export default {
mixins: [ModalMixin, SampleDataMixin],
components: {
CHeader,
Objective,
Collection,
SampleReceipt,
Test,
PeaksMethod,
PeakFit,
GAnalysisMethods,
PeakAssociation,
References,
Results,
NuclideRatios,
GCoincidenceCorrection,
Mda,
Conclusions,
Comment,
Custom
},
data() {
this.tabs = tabs
return {
isLoading: false,
activeKey: 0,
2023-09-12 17:42:19 +08:00
allInfo: {},
healderVal: {},
objVal: {},
collectVal: {},
receiptVal: {},
testVal: {},
peakMethodVal: {},
peakList: [],
analyMethodVal: {},
associationVal: [],
referenceVal: {},
resultVal: {},
resultList: [],
nuclideList: [],
coincidenceList: [],
mdaList: [],
conclusionVal: {},
commentVal: {},
fileName: ''
}
},
mounted () {
sessionStorage.removeItem("isCellEmpty")
},
methods: {
2023-09-12 17:42:19 +08:00
getNewVal_header(val) {
this.healderVal = val
},
getNewVal_obj(val) {
this.objVal = val
},
getNewVal_collect(val) {
this.collectVal = val
},
getNewVal_receipt(val) {
this.receiptVal = val
},
getNewVal_test(val) {
this.testVal = val
},
getNewVal_peakMethod(val) {
this.peakMethodVal = val
},
getNewVal_peakFit(val) {
this.peakList = val
},
getNewVal_analyMethod(val) {
this.analyMethodVal = val
},
getNewVal_association(val) {
this.associationVal = val
},
getNewVal_reference(val) {
this.referenceVal = val
},
getNewVal_result(val) {
this.resultVal = val
},
getNewList_result(val) {
this.resultList = val
},
getNewVal_nuclide(val) {
this.nuclideList = val
},
getNewVal_coincidence(val) {
this.coincidenceList = val
},
getNewVal_mda(val) {
this.mdaList = val
},
getNewVal_conclusion(val) {
this.conclusionVal = val
},
getNewVal_comment(val) {
this.commentVal = val
},
handleSave() {
let val = sessionStorage.getItem("isCellEmpty")
2023-09-12 17:42:19 +08:00
if (!val||val=="false") {
this.visible = false
2023-09-12 17:42:19 +08:00
// 下载保存文件
let params = {
header_msg_id:this.healderVal.msgId||this.allInfo.header_msg_id,
header_data_type:this.healderVal.dataType||this.allInfo.header_data_type,
header_priority_level:this.healderVal.priorityLevel||this.allInfo.header_priority_level,
header_station_code:this.healderVal.stationCode||this.allInfo.header_station_code,
header_srid:this.healderVal.srid||this.allInfo.header_srid,
header_lab_code:this.healderVal.labCode||this.allInfo.header_lab_code,
header_lab_detector:this.healderVal.labDetector||this.allInfo.header_lab_detector,
header_report_type:this.healderVal.reportType||this.allInfo.header_report_type,
header_report_number:this.healderVal.reportnumber||this.allInfo.header_report_number,
header_sample_category:this.healderVal.sampleCategory||this.allInfo.header_sample_category,
header_transmission: this.healderVal.transmission||this.allInfo.header_transmission,
Obj_purpose: this.objVal.objPurpose||this.allInfo.Obj_purpose,
Obj_authorized: this.objVal.objAuthorized||this.allInfo.Obj_authorized,
Obj_instruction: this.objVal.objInstruction||this.allInfo.Obj_instruction,
collect_start: this.collectVal.collectStart||this.allInfo.collect_start,
collect_stop: this.collectVal.collectStop||this.allInfo.collect_stop,
collect_airVolume: this.collectVal.collectAirVolume||this.allInfo.collect_airVolume,
Receipt_srid: this.receiptVal.receiptSrid||this.allInfo.Receipt_srid,
Receipt_sealNum: this.receiptVal.receiptSealNum||this.allInfo.Receipt_sealNum,
Receipt_sample_dateTime: this.receiptVal.receiptDateTime||this.allInfo.Receipt_sample_dateTime,
Receipt_package: this.receiptVal.receiptPackage||this.allInfo.Receipt_package,
Receipt_seal: this.receiptVal.receiptSeal||this.allInfo.Receipt_seal,
Receipt_sample: this.receiptVal.receiptSample||this.allInfo.Receipt_sample,
Test_type: this.testVal.testType||this.allInfo.Test_type,
Test_completion: this.testVal.testCompletion||this.allInfo.Test_completion,
Test_person: this.testVal.testPerson||this.allInfo.Test_person,
Test_purpose: this.testVal.testPurpose||this.allInfo.Test_purpose,
PeakMethod_software: this.peakMethodVal.peakMethodSoftware||this.allInfo.PeakMethod_software,
PeakMethod_location: this.peakMethodVal.peakMethodLocation||this.allInfo.PeakMethod_location,
peakFit: this.peakList.length>0?this.peakList:this.allInfo.peakFit,
AnalyMethod_software: this.analyMethodVal.analyMethodSoftware||this.allInfo.AnalyMethod_software,
AnalyMethod_nuclide: this.analyMethodVal.analyMethodNuclide||this.allInfo.AnalyMethod_nuclide,
AnalyMethod_baseline: this.analyMethodVal.analyMethodBaseline||this.allInfo.AnalyMethod_baseline,
AnalyMethod_lc: this.analyMethodVal.analyMethodLc||this.allInfo.AnalyMethod_lc,
AnalyMethod_calib: this.analyMethodVal.analyMethodCalib||this.allInfo.AnalyMethod_calib,
Association: this.associationVal.length>0?this.associationVal:this.allInfo.Association,
Reference_samplePHD: this.referenceVal.referenceSamplePHD||this.allInfo.Reference_samplePHD,
Reference_CalibPHD: this.referenceVal.referenceCalibPHD||this.allInfo.Reference_CalibPHD,
Reference_physical: this.referenceVal.referencePhysical||this.allInfo.Reference_physical,
Result_act_ref: this.resultVal.activityReferenceTime||this.allInfo.Result_act_ref,
Result_conc_ref: this.resultVal.Concentration||this.allInfo.Result_conc_ref,
Result: this.resultList.length>0?this.resultList:this.allInfo.Result,
NuclideRatios: this.nuclideList,
g_CoincidenceCorrection: this.coincidenceList,
mda: this.mdaList,
conclusion_person: this.conclusionVal.conclusionPerson||this.allInfo.conclusion_person,
Conclusion_IDC: this.conclusionVal.conclusionIDC||this.allInfo.Conclusion_IDC,
Conclusion_Lab: this.conclusionVal.conclusionLab||this.allInfo.Conclusion_Lab,
Conclusion_Res: this.conclusionVal.conclusionRes||this.allInfo.Conclusion_Res,
Comment: this.commentVal.comment||this.allInfo.Comment,
}
postAction("/gamma/exportRLR", params).then(res => {
const blob = new Blob([res])
let _this = this
this.$confirm({
title: 'Please enter file name',
content: h => <a-input v-model={_this.fileName} />,
okText: 'Cancle',
cancelText: 'Save',
okButtonProps: {style: {backgroundColor: "#b98326", color: "#fff", borderColor: "transparent"}},
cancelButtonProps: {style: {color: "#fff", backgroundColor: "#31aab0", borderColor: "transparent"}},
onOk() {
console.log('Cancel');
},
onCancel() {
if (_this.fileName) {
saveAs(blob, `${_this.fileName}.RLR`)
}
},
});
})
} else {
this.$message.warning("Please finishi ti edit new inserted row first.")
}
},
handleCancel() {
this.visible = false
sessionStorage.removeItem("isCellEmpty")
},
handleChangeView(index) {
let val = sessionStorage.getItem("isCellEmpty")
if (val=="false"||!val) {
this.activeKey = index
} else {
this.$message.warning("Please finishi ti edit new inserted row first.")
}
},
beforeModalOpen() {
this.activeKey = 0
this.getGammaViewRLR();
},
getGammaViewRLR() {
this.isLoading = true
const { sampleId, inputFileName: fileName } = this.sampleData
let params = {
sampleId,
fileName
}
getAction("/gamma/viewRLR", params).then(res => {
this.isLoading = false
if (res.success) {
this.allInfo = res.result
} else {
this.$message.warning("This operation fails. Contact your system administrator")
}
})
},
}
}
</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;
}
}
}
/deep/.ant-modal-title{
letter-spacing: 1px;
}
</style>