Compare commits
No commits in common. "d48f559dcc42e8f7d3060927f91224f9698338d6" and "d82b894c0be835be841bf53db39970dcd3638190" have entirely different histories.
d48f559dcc
...
d82b894c0b
|
@ -98,26 +98,6 @@
|
||||||
<!-- Beta 按钮的弹窗 -->
|
<!-- Beta 按钮的弹窗 -->
|
||||||
<beta-modal ref="betaModalRef" />
|
<beta-modal ref="betaModalRef" />
|
||||||
<!-- Beta 按钮的弹窗结束 -->
|
<!-- Beta 按钮的弹窗结束 -->
|
||||||
|
|
||||||
<!-- Arr和RRR弹窗 -->
|
|
||||||
<self-station-arr-rrr-modal ref="ARR_RRRModalRef" />
|
|
||||||
<!-- Arr和RRR弹窗结束 -->
|
|
||||||
|
|
||||||
<!-- Spectrum弹窗 -->
|
|
||||||
<self-station-spectrum-modal ref="spectrumModalRef" />
|
|
||||||
<!-- Spectrum弹窗结束 -->
|
|
||||||
|
|
||||||
<!-- Peak Infomation弹窗 -->
|
|
||||||
<self-station-peak-infomation ref="peakInfoModalRef" />
|
|
||||||
<!-- Peak Infomation弹窗结束 -->
|
|
||||||
|
|
||||||
<!-- 自动分析日志弹窗 -->
|
|
||||||
<self-station-automatic-analysis-log-modal ref="autoAnalysisLogRef" />
|
|
||||||
<!-- 自动分析日志弹窗结束 -->
|
|
||||||
|
|
||||||
<!-- BgLog -->
|
|
||||||
<self-station-bg-log-viewer ref="bgLogViewerRef" />
|
|
||||||
<!-- BgLog结束 -->
|
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
|
@ -138,11 +118,6 @@ import { addSampleData, getSampleData, updateSampleData } from '@/utils/SampleSt
|
||||||
import { cloneDeep } from 'lodash'
|
import { cloneDeep } from 'lodash'
|
||||||
import GammaModal from './components/Modals/SelfStation/GammaModal.vue'
|
import GammaModal from './components/Modals/SelfStation/GammaModal.vue'
|
||||||
import BetaModal from './components/Modals/SelfStation/BetaModal.vue'
|
import BetaModal from './components/Modals/SelfStation/BetaModal.vue'
|
||||||
import SelfStationArrRrrModal from './components/Modals/SelfStation/SelfStationArrRrrModal.vue'
|
|
||||||
import SelfStationSpectrumModal from './components/Modals/SelfStation/SelfStationSpectrumModal.vue'
|
|
||||||
import SelfStationPeakInfomation from './components/Modals/SelfStation/SelfStationPeakInfomation.vue'
|
|
||||||
import SelfStationAutomaticAnalysisLogModal from './components/Modals/SelfStation/SelfStationAutomaticAnalysisLogModal.vue'
|
|
||||||
import SelfStationBgLogViewer from './components/Modals/SelfStation/SelfStationBGLogViewer.vue'
|
|
||||||
|
|
||||||
const SampleType = [
|
const SampleType = [
|
||||||
{
|
{
|
||||||
|
@ -176,11 +151,6 @@ export default {
|
||||||
RoiParam,
|
RoiParam,
|
||||||
GammaModal,
|
GammaModal,
|
||||||
BetaModal,
|
BetaModal,
|
||||||
SelfStationArrRrrModal,
|
|
||||||
SelfStationSpectrumModal,
|
|
||||||
SelfStationPeakInfomation,
|
|
||||||
SelfStationAutomaticAnalysisLogModal,
|
|
||||||
SelfStationBgLogViewer,
|
|
||||||
},
|
},
|
||||||
props: {
|
props: {
|
||||||
sample: {
|
sample: {
|
||||||
|
@ -333,7 +303,6 @@ export default {
|
||||||
this.isLoading = false
|
this.isLoading = false
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
getAnalyzeAllSpectrum() {
|
getAnalyzeAllSpectrum() {
|
||||||
let XeData = [
|
let XeData = [
|
||||||
{
|
{
|
||||||
|
@ -388,7 +357,6 @@ export default {
|
||||||
this.resultDisplay = XeData
|
this.resultDisplay = XeData
|
||||||
// this.$emit('reAnalyCurr', true, XeData)
|
// this.$emit('reAnalyCurr', true, XeData)
|
||||||
},
|
},
|
||||||
|
|
||||||
// 点击Update
|
// 点击Update
|
||||||
async handleUpdate() {
|
async handleUpdate() {
|
||||||
const hasEmpty = this.roiParamList.some(
|
const hasEmpty = this.roiParamList.some(
|
||||||
|
@ -426,7 +394,7 @@ export default {
|
||||||
for (let index = 0; index < 4; index++) {
|
for (let index = 0; index < 4; index++) {
|
||||||
const key = `ROI${index + 1}`
|
const key = `ROI${index + 1}`
|
||||||
const value = result[key]
|
const value = result[key]
|
||||||
if (value) {
|
if(value) {
|
||||||
this.$set(this.ROIAnalyzeLists, index, value)
|
this.$set(this.ROIAnalyzeLists, index, value)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -463,7 +431,17 @@ export default {
|
||||||
this.isLoading = false
|
this.isLoading = false
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
// async handleDetalSelfStationCache() {
|
||||||
|
// const { inputFileName } = this.sample
|
||||||
|
// let params = {
|
||||||
|
// sampleFileName: inputFileName,
|
||||||
|
// }
|
||||||
|
// try {
|
||||||
|
// const { success, result, message } = await deleteAction('/selfStation/deleteSelfStationCache', params)
|
||||||
|
// } catch (error) {
|
||||||
|
// console.error(error)
|
||||||
|
// }
|
||||||
|
// },
|
||||||
async getSelfStationSampleDetail() {
|
async getSelfStationSampleDetail() {
|
||||||
this.spectraType = this.SampleType[0].value
|
this.spectraType = this.SampleType[0].value
|
||||||
const { inputFileName, detFileName, qcFileName } = this.sample
|
const { inputFileName, detFileName, qcFileName } = this.sample
|
||||||
|
@ -490,56 +468,11 @@ export default {
|
||||||
this.isLoading = false
|
this.isLoading = false
|
||||||
} else {
|
} else {
|
||||||
this.$message.error(message)
|
this.$message.error(message)
|
||||||
this.isLoading = false
|
|
||||||
}
|
}
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
console.error(error)
|
console.error(error)
|
||||||
const isCancel = axios.isCancel(error)
|
|
||||||
if (!isCancel) {
|
|
||||||
this.isLoading = false
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
// 获取样品详情
|
|
||||||
async getSampleDetail() {
|
|
||||||
const { dbName, sampleId, analyst, inputFileName } = this.sample
|
|
||||||
try {
|
|
||||||
this.cancelLastRequest()
|
|
||||||
this.isLoading = true
|
|
||||||
const cancelToken = this.createCancelToken()
|
|
||||||
|
|
||||||
const { success, result, message } = await getAction(
|
|
||||||
'/selfStation/loadFromDB',
|
|
||||||
{
|
|
||||||
dbName,
|
|
||||||
sampleId,
|
|
||||||
analyst,
|
|
||||||
},
|
|
||||||
cancelToken
|
|
||||||
)
|
|
||||||
if (success) {
|
|
||||||
addSampleData({
|
|
||||||
inputFileName,
|
|
||||||
data: result,
|
|
||||||
from: 'db',
|
|
||||||
})
|
|
||||||
this.sampleDetail = result
|
|
||||||
this.changeChartByType('sample')
|
|
||||||
this.isLoading = false
|
|
||||||
} else {
|
|
||||||
this.$message.error(message)
|
|
||||||
this.isLoading = false
|
|
||||||
}
|
|
||||||
} catch (error) {
|
|
||||||
console.error(error)
|
|
||||||
const isCancel = axios.isCancel(error)
|
|
||||||
if (!isCancel) {
|
|
||||||
this.isLoading = false
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
|
|
||||||
changeChartByType(val) {
|
changeChartByType(val) {
|
||||||
const currSampleDetail = this.sampleDetail[this.spectraType]
|
const currSampleDetail = this.sampleDetail[this.spectraType]
|
||||||
if (!currSampleDetail) {
|
if (!currSampleDetail) {
|
||||||
|
@ -710,27 +643,6 @@ export default {
|
||||||
throw new Error(message)
|
throw new Error(message)
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
// 显示ARR或RRR弹窗
|
|
||||||
showArrRRRModal(type) {
|
|
||||||
this.$refs.ARR_RRRModalRef.show(type)
|
|
||||||
},
|
|
||||||
|
|
||||||
showSpectrumModal() {
|
|
||||||
this.$refs.spectrumModalRef.show()
|
|
||||||
},
|
|
||||||
|
|
||||||
showPeakInfoModal() {
|
|
||||||
this.$refs.peakInfoModalRef.show()
|
|
||||||
},
|
|
||||||
|
|
||||||
showAutomaticAnalysisLog() {
|
|
||||||
this.$refs.autoAnalysisLogRef.show()
|
|
||||||
},
|
|
||||||
|
|
||||||
showBgLogViewer() {
|
|
||||||
this.$refs.bgLogViewerRef.show()
|
|
||||||
},
|
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
|
@ -315,10 +315,6 @@ export default {
|
||||||
label: 'B',
|
label: 'B',
|
||||||
value: 'B',
|
value: 'B',
|
||||||
},
|
},
|
||||||
{
|
|
||||||
label: 'C',
|
|
||||||
value: 'C',
|
|
||||||
},
|
|
||||||
]
|
]
|
||||||
let arr_G = [
|
let arr_G = [
|
||||||
{
|
{
|
||||||
|
@ -343,10 +339,6 @@ export default {
|
||||||
label: 'G',
|
label: 'G',
|
||||||
value: 'G',
|
value: 'G',
|
||||||
},
|
},
|
||||||
{
|
|
||||||
label: 'C',
|
|
||||||
value: 'C',
|
|
||||||
},
|
|
||||||
]
|
]
|
||||||
if (event == 'B') {
|
if (event == 'B') {
|
||||||
this.searchSampleType = 'Beta'
|
this.searchSampleType = 'Beta'
|
||||||
|
|
|
@ -1,129 +0,0 @@
|
||||||
<template>
|
|
||||||
<custom-modal v-model="visible" :width="1200" :title="type == 1 || type == 3 ? 'ARR' : 'RRR'">
|
|
||||||
<a-spin :spinning="isLoading">
|
|
||||||
<a-tabs :animated="false" v-model="activeTab">
|
|
||||||
<a-tab-pane v-for="(title, index) in tabTitles" :tab="title" :key="index">
|
|
||||||
<a-textarea style="font-family: 仿宋" v-model="resultTxtArr[index]"></a-textarea>
|
|
||||||
</a-tab-pane>
|
|
||||||
</a-tabs>
|
|
||||||
</a-spin>
|
|
||||||
<div slot="custom-footer" style="text-align: center">
|
|
||||||
<a-space :size="20">
|
|
||||||
<a-button type="primary" @click="handleOk">Export</a-button>
|
|
||||||
<a-button @click="visible = false">Cancel</a-button>
|
|
||||||
</a-space>
|
|
||||||
</div>
|
|
||||||
</custom-modal>
|
|
||||||
</template>
|
|
||||||
|
|
||||||
<script>
|
|
||||||
import { getAction, postAction } from '@/api/manage'
|
|
||||||
import { saveAs } from 'file-saver'
|
|
||||||
import SampleDataMixin from '../../../SampleDataMixin'
|
|
||||||
import { getSampleData } from '@/utils/SampleStore'
|
|
||||||
|
|
||||||
// 请求结果和本地数组的映射
|
|
||||||
const keyMapping = ['Beta', 'Gamma_ROI_1', 'Gamma_ROI_2', 'Gamma_ROI_3', 'Gamma_ROI_4']
|
|
||||||
const tabTitles = ['Beta', 'ROI_1', 'ROI_2', 'ROI_3', 'ROI_4']
|
|
||||||
|
|
||||||
export default {
|
|
||||||
mixins: [SampleDataMixin],
|
|
||||||
data() {
|
|
||||||
this.tabTitles = tabTitles
|
|
||||||
|
|
||||||
return {
|
|
||||||
resultTxtArr: [], // 结果文本
|
|
||||||
isLoading: true,
|
|
||||||
type: 0,
|
|
||||||
visible: false,
|
|
||||||
activeTab: 0,
|
|
||||||
}
|
|
||||||
},
|
|
||||||
methods: {
|
|
||||||
async getContent() {
|
|
||||||
try {
|
|
||||||
this.resultTxtArr = []
|
|
||||||
this.isLoading = true
|
|
||||||
const { sampleId, inputFileName: fileName, dbName, detFileName, gasFileName, qcFileName } = this.newSampleData
|
|
||||||
let request = getAction,
|
|
||||||
url = '/selfStation/viewARR',
|
|
||||||
params = {
|
|
||||||
sampleId,
|
|
||||||
}
|
|
||||||
|
|
||||||
if (this.type == 2) {
|
|
||||||
url = '/selfStation/viewRRR'
|
|
||||||
params = {
|
|
||||||
dbName,
|
|
||||||
sampleId,
|
|
||||||
sampleData: false,
|
|
||||||
gasBgData: false,
|
|
||||||
detBgData: false,
|
|
||||||
qcData: false,
|
|
||||||
sampleFileName: fileName,
|
|
||||||
gasFileName,
|
|
||||||
detFileName,
|
|
||||||
qcFileName,
|
|
||||||
}
|
|
||||||
request = postAction
|
|
||||||
}
|
|
||||||
const { success, result, message } = await request(url, params)
|
|
||||||
if (success) {
|
|
||||||
this.resultTxtArr = keyMapping.map((k) => result[k])
|
|
||||||
} else {
|
|
||||||
this.$message.error(message)
|
|
||||||
}
|
|
||||||
} catch (error) {
|
|
||||||
console.error(error)
|
|
||||||
} finally {
|
|
||||||
this.isLoading = false
|
|
||||||
}
|
|
||||||
},
|
|
||||||
|
|
||||||
show(type) {
|
|
||||||
if (type == 1 && !this.newSampleData.sampleId) {
|
|
||||||
this.$message.warning("The file isn't existed.")
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
if (type == 2) {
|
|
||||||
const sampleDetail = getSampleData(this.sampleData.inputFileName)
|
|
||||||
if (sampleDetail && !sampleDetail.data.ROIAnalyzeLists) {
|
|
||||||
this.$message.warning('Please analyze the spectrum first!')
|
|
||||||
return
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
this.type = type
|
|
||||||
this.activeTab = 0
|
|
||||||
this.visible = true
|
|
||||||
this.getContent()
|
|
||||||
},
|
|
||||||
handleOk() {
|
|
||||||
const text = this.resultTxtArr[this.activeTab]
|
|
||||||
if (text) {
|
|
||||||
const name = this.newSampleData.inputFileName.split('.')[0]
|
|
||||||
const strData = new Blob([text], { type: 'text/plain;charset=utf-8' })
|
|
||||||
const title = this.tabTitles[this.activeTab]
|
|
||||||
|
|
||||||
if (this.type == 1) {
|
|
||||||
saveAs(strData, `ARR_${name}_${title}.txt`)
|
|
||||||
} else {
|
|
||||||
saveAs(strData, `RRR_${name}_${title}.txt`)
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
this.$message.warning('No data can be saved!')
|
|
||||||
}
|
|
||||||
},
|
|
||||||
},
|
|
||||||
}
|
|
||||||
</script>
|
|
||||||
|
|
||||||
<style lang="less" scoped>
|
|
||||||
textarea {
|
|
||||||
height: calc(100vh - 350px);
|
|
||||||
padding: 5px;
|
|
||||||
overflow: auto;
|
|
||||||
background-color: #285367;
|
|
||||||
}
|
|
||||||
</style>
|
|
|
@ -1,94 +0,0 @@
|
||||||
<template>
|
|
||||||
<custom-modal v-model="visible" :width="1000" title="Auto Process Log Viewer">
|
|
||||||
<a-spin :spinning="isLoading">
|
|
||||||
<a-tabs :animated="false" v-model="activeTab">
|
|
||||||
<a-tab-pane v-for="(title, index) in tabTitles" :tab="title" :key="index">
|
|
||||||
<pre style="font-family: 仿宋">
|
|
||||||
{{ resultTxtArr[index] }}
|
|
||||||
</pre>
|
|
||||||
</a-tab-pane>
|
|
||||||
</a-tabs>
|
|
||||||
</a-spin>
|
|
||||||
<div slot="custom-footer" style="text-align: center">
|
|
||||||
<a-space :size="20">
|
|
||||||
<a-button type="primary" @click="handleOk">Save</a-button>
|
|
||||||
<a-button @click="visible = false">Cancel</a-button>
|
|
||||||
</a-space>
|
|
||||||
</div>
|
|
||||||
</custom-modal>
|
|
||||||
</template>
|
|
||||||
|
|
||||||
<script>
|
|
||||||
import { getAction } from '@/api/manage'
|
|
||||||
import SampleDataMixin from '@/views/spectrumAnalysis/SampleDataMixin'
|
|
||||||
import { saveAs } from 'file-saver'
|
|
||||||
|
|
||||||
// 请求结果和本地数组的映射
|
|
||||||
const keyMapping = ['Beta', 'Gamma_ROI_1', 'Gamma_ROI_2', 'Gamma_ROI_3', 'Gamma_ROI_4']
|
|
||||||
const tabTitles = ['Beta', 'ROI_1', 'ROI_2', 'ROI_3', 'ROI_4']
|
|
||||||
export default {
|
|
||||||
mixins: [SampleDataMixin],
|
|
||||||
data() {
|
|
||||||
this.tabTitles = tabTitles
|
|
||||||
return {
|
|
||||||
isLoading: false,
|
|
||||||
visible: false,
|
|
||||||
resultTxtArr: [],
|
|
||||||
activeTab: 0,
|
|
||||||
}
|
|
||||||
},
|
|
||||||
methods: {
|
|
||||||
async getInfo() {
|
|
||||||
try {
|
|
||||||
this.isLoading = true
|
|
||||||
const { sampleId, sampleFileName } = this.sampleData
|
|
||||||
const { success, result, message } = await getAction('/selfStation/viewAutomaticAnalysisLog', {
|
|
||||||
sampleId,
|
|
||||||
sampleFileName,
|
|
||||||
})
|
|
||||||
if (success) {
|
|
||||||
this.resultTxtArr = keyMapping.map((k) => result[k])
|
|
||||||
} else {
|
|
||||||
this.$message.error(message)
|
|
||||||
}
|
|
||||||
} catch (error) {
|
|
||||||
console.error(error)
|
|
||||||
} finally {
|
|
||||||
this.isLoading = false
|
|
||||||
}
|
|
||||||
},
|
|
||||||
|
|
||||||
show() {
|
|
||||||
if (!this.sampleData.sampleId) {
|
|
||||||
this.$message.warning("The file isn't existed.")
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
this.activeTab = 0
|
|
||||||
this.resultTxtArr = []
|
|
||||||
this.visible = true
|
|
||||||
this.getInfo()
|
|
||||||
},
|
|
||||||
|
|
||||||
handleOk() {
|
|
||||||
const text = this.resultTxtArr[this.activeTab]
|
|
||||||
if (text) {
|
|
||||||
const name = this.newSampleData.inputFileName.split('.')[0]
|
|
||||||
const strData = new Blob([text], { type: 'text/plain;charset=utf-8' })
|
|
||||||
saveAs(strData, `${name}_Automatic Analysis Log.txt`)
|
|
||||||
} else {
|
|
||||||
this.$message.warning('No data can be saved!')
|
|
||||||
}
|
|
||||||
},
|
|
||||||
},
|
|
||||||
}
|
|
||||||
</script>
|
|
||||||
|
|
||||||
<style lang="less" scoped>
|
|
||||||
pre {
|
|
||||||
height: 450px;
|
|
||||||
padding: 5px;
|
|
||||||
overflow: auto;
|
|
||||||
background-color: #285367;
|
|
||||||
}
|
|
||||||
</style>
|
|
|
@ -1,99 +0,0 @@
|
||||||
<template>
|
|
||||||
<custom-modal v-model="visible" title="BetaGamma Analyser Log" :width="1200">
|
|
||||||
<a-spin :spinning="isLoading">
|
|
||||||
<a-tabs :animated="false" v-model="activeTab">
|
|
||||||
<a-tab-pane v-for="(title, index) in tabTitles" :tab="title" :key="index">
|
|
||||||
<a-textarea v-model="resultTxtArr[index]" style="font-family: 仿宋"></a-textarea>
|
|
||||||
</a-tab-pane>
|
|
||||||
</a-tabs>
|
|
||||||
</a-spin>
|
|
||||||
<div slot="custom-footer">
|
|
||||||
<a-button type="primary" @click="handleClick">Save As</a-button>
|
|
||||||
</div>
|
|
||||||
</custom-modal>
|
|
||||||
</template>
|
|
||||||
|
|
||||||
<script>
|
|
||||||
import { getAction } from '@/api/manage'
|
|
||||||
import { getSampleData } from '@/utils/SampleStore'
|
|
||||||
import SampleDataMixin from '@/views/spectrumAnalysis/SampleDataMixin'
|
|
||||||
import { saveAs } from 'file-saver'
|
|
||||||
|
|
||||||
// 请求结果和本地数组的映射
|
|
||||||
const keyMapping = ['Beta', 'Gamma_ROI_1', 'Gamma_ROI_2', 'Gamma_ROI_3', 'Gamma_ROI_4']
|
|
||||||
const tabTitles = ['Beta', 'ROI_1', 'ROI_2', 'ROI_3', 'ROI_4']
|
|
||||||
export default {
|
|
||||||
mixins: [SampleDataMixin],
|
|
||||||
data() {
|
|
||||||
this.tabTitles = tabTitles
|
|
||||||
|
|
||||||
return {
|
|
||||||
isLoading: false,
|
|
||||||
visible: false,
|
|
||||||
resultTxtArr: [],
|
|
||||||
activeTab: 0,
|
|
||||||
}
|
|
||||||
},
|
|
||||||
methods: {
|
|
||||||
async getDetail() {
|
|
||||||
try {
|
|
||||||
this.isLoading = true
|
|
||||||
const {
|
|
||||||
dbName,
|
|
||||||
sampleId,
|
|
||||||
inputFileName: sampleFileName,
|
|
||||||
gasFileName,
|
|
||||||
detFileName,
|
|
||||||
qcFileName,
|
|
||||||
} = this.newSampleData
|
|
||||||
const { success, result, message } = await getAction('/selfStation/viewBGLogViewer', {
|
|
||||||
dbName,
|
|
||||||
sampleId,
|
|
||||||
sampleFileName,
|
|
||||||
gasFileName,
|
|
||||||
detFileName,
|
|
||||||
qcFileName,
|
|
||||||
})
|
|
||||||
|
|
||||||
if (success) {
|
|
||||||
this.resultTxtArr = keyMapping.map((k) => result[k])
|
|
||||||
} else {
|
|
||||||
this.$message.error(message)
|
|
||||||
}
|
|
||||||
} catch (error) {
|
|
||||||
console.error(error)
|
|
||||||
} finally {
|
|
||||||
this.isLoading = false
|
|
||||||
}
|
|
||||||
},
|
|
||||||
|
|
||||||
show() {
|
|
||||||
this.getDetail()
|
|
||||||
this.resultTxtArr = []
|
|
||||||
this.activeTab = 0
|
|
||||||
this.visible = true
|
|
||||||
},
|
|
||||||
|
|
||||||
handleClick() {
|
|
||||||
const text = this.resultTxtArr[this.activeTab]
|
|
||||||
if (text) {
|
|
||||||
const name = this.newSampleData.inputFileName.split('.')[0]
|
|
||||||
const blob = new Blob([text], { type: 'text/plain' })
|
|
||||||
const title = this.tabTitles[this.activeTab]
|
|
||||||
saveAs(blob, `${name}_beta ${title} analysis log.txt`)
|
|
||||||
} else {
|
|
||||||
this.$message.warning('No data can be saved!')
|
|
||||||
}
|
|
||||||
},
|
|
||||||
},
|
|
||||||
}
|
|
||||||
</script>
|
|
||||||
|
|
||||||
<style lang="less" scoped>
|
|
||||||
textarea {
|
|
||||||
height: calc(100vh - 350px);
|
|
||||||
padding: 5px;
|
|
||||||
overflow: auto;
|
|
||||||
background-color: #285367;
|
|
||||||
}
|
|
||||||
</style>
|
|
|
@ -1,179 +0,0 @@
|
||||||
<template>
|
|
||||||
<custom-modal v-model="visible" title="Peak Infomation" :width="1231" :footer="null" class="peak-infomation">
|
|
||||||
<a-spin :spinning="isLoading">
|
|
||||||
<a-tabs :animated="false" v-model="activeTab">
|
|
||||||
<a-tab-pane v-for="(title, index) in tabTitles" :tab="title" :key="index">
|
|
||||||
<custom-table :columns="columns" :list="list[index]" :scroll="{ y: 460 }" :canSelect="false"></custom-table>
|
|
||||||
</a-tab-pane>
|
|
||||||
</a-tabs>
|
|
||||||
</a-spin>
|
|
||||||
<!-- 底部按钮 -->
|
|
||||||
<div class="peak-infomation-footer">
|
|
||||||
<a-space :size="20">
|
|
||||||
<a-button type="primary" @click="handleExportToExcel">
|
|
||||||
<img src="@/assets/images/spectrum/download.png" />
|
|
||||||
Export to Excel
|
|
||||||
</a-button>
|
|
||||||
</a-space>
|
|
||||||
</div>
|
|
||||||
</custom-modal>
|
|
||||||
</template>
|
|
||||||
|
|
||||||
<script>
|
|
||||||
import { getAction, getFileAction } from '@/api/manage'
|
|
||||||
import { saveAs } from 'file-saver'
|
|
||||||
import SampleDataMixin from '../../../SampleDataMixin'
|
|
||||||
|
|
||||||
const columns = [
|
|
||||||
{
|
|
||||||
title: 'Index',
|
|
||||||
dataIndex: 'index',
|
|
||||||
align: 'center',
|
|
||||||
customRender: (_, __, index) => {
|
|
||||||
return index + 1
|
|
||||||
},
|
|
||||||
},
|
|
||||||
{
|
|
||||||
title: 'Energy(keV)',
|
|
||||||
dataIndex: 'energy',
|
|
||||||
},
|
|
||||||
{
|
|
||||||
title: 'Centroid',
|
|
||||||
dataIndex: 'centroid',
|
|
||||||
},
|
|
||||||
{
|
|
||||||
title: 'Multiplet',
|
|
||||||
dataIndex: 'multiplet',
|
|
||||||
},
|
|
||||||
{
|
|
||||||
title: 'Fwhm(keV)',
|
|
||||||
dataIndex: 'fwhm',
|
|
||||||
},
|
|
||||||
{
|
|
||||||
title: 'NetArea',
|
|
||||||
dataIndex: 'netArea',
|
|
||||||
ellipsis: true,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
title: 'AreaErr(%)',
|
|
||||||
dataIndex: 'areaErr',
|
|
||||||
ellipsis: true,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
title: 'Significant',
|
|
||||||
dataIndex: 'significant',
|
|
||||||
},
|
|
||||||
{
|
|
||||||
title: 'Sensitivity',
|
|
||||||
dataIndex: 'sensitivity',
|
|
||||||
},
|
|
||||||
{
|
|
||||||
title: 'Indentify',
|
|
||||||
dataIndex: 'indentify',
|
|
||||||
ellipsis: true,
|
|
||||||
},
|
|
||||||
]
|
|
||||||
|
|
||||||
// 请求结果和本地数组的映射
|
|
||||||
const keyMapping = ['Gamma_ROI_1', 'Gamma_ROI_2', 'Gamma_ROI_3', 'Gamma_ROI_4']
|
|
||||||
const tabTitles = ['ROI_1', 'ROI_2', 'ROI_3', 'ROI_4']
|
|
||||||
|
|
||||||
export default {
|
|
||||||
mixins: [SampleDataMixin],
|
|
||||||
data() {
|
|
||||||
this.columns = columns
|
|
||||||
this.tabTitles = tabTitles
|
|
||||||
|
|
||||||
return {
|
|
||||||
visible: false,
|
|
||||||
activeTab: 0,
|
|
||||||
list: [],
|
|
||||||
isLoading: false,
|
|
||||||
fileName: '',
|
|
||||||
}
|
|
||||||
},
|
|
||||||
methods: {
|
|
||||||
async getInfo() {
|
|
||||||
try {
|
|
||||||
this.isLoading = true
|
|
||||||
const { sampleFileName } = this.sampleData
|
|
||||||
const { success, result, message } = await getAction('/selfStation/peakInformation', {
|
|
||||||
sampleFileName,
|
|
||||||
})
|
|
||||||
if (success) {
|
|
||||||
this.list = keyMapping.map((k) => result[k])
|
|
||||||
} else {
|
|
||||||
this.$message.error(message)
|
|
||||||
}
|
|
||||||
} catch (error) {
|
|
||||||
console.error(error)
|
|
||||||
} finally {
|
|
||||||
this.isLoading = false
|
|
||||||
}
|
|
||||||
},
|
|
||||||
|
|
||||||
show() {
|
|
||||||
this.getInfo()
|
|
||||||
this.activeTab = 0
|
|
||||||
this.visible = true
|
|
||||||
},
|
|
||||||
|
|
||||||
// 导出到Excel
|
|
||||||
handleExportToExcel() {
|
|
||||||
this.fileName = ''
|
|
||||||
const { sampleFileName } = this.sampleData
|
|
||||||
if (this.list.length > 0) {
|
|
||||||
const name = this.newSampleData.inputFileName.split('.')[0]
|
|
||||||
getFileAction('/selfStation/exportPeakInformation', {
|
|
||||||
sampleFileName,
|
|
||||||
}).then((res) => {
|
|
||||||
if (res.code && res.code == 500) {
|
|
||||||
this.$message.warning('This operation fails. Contact your system administrator')
|
|
||||||
} else {
|
|
||||||
const blob = new Blob([res], { type: 'application/vnd.ms-excel' })
|
|
||||||
saveAs(blob, `${name}_Peak Infomation`)
|
|
||||||
}
|
|
||||||
})
|
|
||||||
} else {
|
|
||||||
this.$message.warning('No downloadable data')
|
|
||||||
}
|
|
||||||
},
|
|
||||||
},
|
|
||||||
}
|
|
||||||
</script>
|
|
||||||
|
|
||||||
<style lang="less" scoped>
|
|
||||||
.peak-infomation {
|
|
||||||
::v-deep {
|
|
||||||
.ant-modal-body {
|
|
||||||
padding: 20px 16px 16px;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
&-footer {
|
|
||||||
margin-top: 10px;
|
|
||||||
text-align: right;
|
|
||||||
|
|
||||||
.ant-btn {
|
|
||||||
display: flex;
|
|
||||||
align-items: center;
|
|
||||||
|
|
||||||
img {
|
|
||||||
margin-right: 10px;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.comparison-list {
|
|
||||||
&-item {
|
|
||||||
&-title {
|
|
||||||
color: #0cebc9;
|
|
||||||
}
|
|
||||||
|
|
||||||
&:last-child {
|
|
||||||
margin-top: 12px;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
</style>
|
|
|
@ -1,99 +0,0 @@
|
||||||
<template>
|
|
||||||
<custom-modal v-model="visible" :width="1200" title="View Spectrum" destroyOnClose @cancel="handleCancel">
|
|
||||||
<a-spin :spinning="isLoading">
|
|
||||||
<a-tabs :animated="false" v-model="currTab">
|
|
||||||
<a-tab-pane v-for="(title, index) in tabTitles" :tab="title" :key="index">
|
|
||||||
<a-textarea v-model="resultTxtArr[index]" style="font-family: 仿宋"></a-textarea>
|
|
||||||
</a-tab-pane>
|
|
||||||
</a-tabs>
|
|
||||||
</a-spin>
|
|
||||||
<div slot="custom-footer">
|
|
||||||
<a-space :size="20">
|
|
||||||
<a-button type="primary" @click="handleOk">Save Text</a-button>
|
|
||||||
<a-button @click="handleCancel">Cancel</a-button>
|
|
||||||
</a-space>
|
|
||||||
</div>
|
|
||||||
</custom-modal>
|
|
||||||
</template>
|
|
||||||
|
|
||||||
<script>
|
|
||||||
import { getAction } from '../../../../../api/manage'
|
|
||||||
import SampleDataMixin from '@/views/spectrumAnalysis/SampleDataMixin'
|
|
||||||
|
|
||||||
// 请求结果和本地数组的映射
|
|
||||||
const keyMapping = ['sample', 'detBg', 'qc', 'Gamma_ROI_1', 'Gamma_ROI_2', 'Gamma_ROI_3', 'Gamma_ROI_4']
|
|
||||||
const tabTitles = [
|
|
||||||
'Sample Spectrum',
|
|
||||||
'DetBg Spectrum',
|
|
||||||
'Qc Spectrum',
|
|
||||||
// 'ROI_1 Spectrum',
|
|
||||||
// 'ROI_2 Spectrum',
|
|
||||||
// 'ROI_3 Spectrum',
|
|
||||||
// 'ROI_4 Spectrum',
|
|
||||||
]
|
|
||||||
|
|
||||||
export default {
|
|
||||||
mixins: [SampleDataMixin],
|
|
||||||
data() {
|
|
||||||
this.tabTitles = tabTitles
|
|
||||||
|
|
||||||
return {
|
|
||||||
visible: false,
|
|
||||||
resultTxtArr: [],
|
|
||||||
isLoading: true,
|
|
||||||
currTab: 0,
|
|
||||||
}
|
|
||||||
},
|
|
||||||
methods: {
|
|
||||||
async getContent() {
|
|
||||||
try {
|
|
||||||
this.currTab = 0
|
|
||||||
this.resultTxtArr = []
|
|
||||||
this.isLoading = true
|
|
||||||
const { inputFileName: fileName } = this.newSampleData
|
|
||||||
const { success, result, message } = await getAction('/selfStation/viewSpectrum', {
|
|
||||||
fileName,
|
|
||||||
})
|
|
||||||
if (success) {
|
|
||||||
this.resultTxtArr = keyMapping.map((k) => (result[k] ? result[k].join('\n') : ''))
|
|
||||||
} else {
|
|
||||||
this.$message.error(message)
|
|
||||||
}
|
|
||||||
} catch (error) {
|
|
||||||
console.error(error)
|
|
||||||
} finally {
|
|
||||||
this.isLoading = false
|
|
||||||
}
|
|
||||||
},
|
|
||||||
|
|
||||||
show() {
|
|
||||||
this.visible = true
|
|
||||||
this.getContent()
|
|
||||||
},
|
|
||||||
handleOk() {
|
|
||||||
const text = this.resultTxtArr[this.currTab]
|
|
||||||
if (text) {
|
|
||||||
let name = this.newSampleData.inputFileName.split('.')[0]
|
|
||||||
let strData = new Blob([text], { type: 'text/plain;charset=utf-8' })
|
|
||||||
|
|
||||||
saveAs(strData, `${name}_${tabTitles[this.currTab]} Spectrum.txt`)
|
|
||||||
} else {
|
|
||||||
this.$message.warning('No data can be saved!')
|
|
||||||
}
|
|
||||||
},
|
|
||||||
handleCancel() {
|
|
||||||
this.currTab = 1
|
|
||||||
this.visible = false
|
|
||||||
},
|
|
||||||
},
|
|
||||||
}
|
|
||||||
</script>
|
|
||||||
|
|
||||||
<style lang="less" scoped>
|
|
||||||
textarea {
|
|
||||||
height: calc(100vh - 350px);
|
|
||||||
padding: 5px;
|
|
||||||
overflow: auto;
|
|
||||||
background-color: #285367;
|
|
||||||
}
|
|
||||||
</style>
|
|
|
@ -879,7 +879,7 @@ export default {
|
||||||
}
|
}
|
||||||
this.$message.success('Save Success')
|
this.$message.success('Save Success')
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
this.$message.warning(error && (error.message || error))
|
this.$message.error(error && (error.message || error))
|
||||||
} finally {
|
} finally {
|
||||||
hideLoading()
|
hideLoading()
|
||||||
this.isSaving = false
|
this.isSaving = false
|
||||||
|
@ -1765,40 +1765,6 @@ export default {
|
||||||
handler: () => (this.betaGammaXeModalVisible = true),
|
handler: () => (this.betaGammaXeModalVisible = true),
|
||||||
show: this.isBetaGamma,
|
show: this.isBetaGamma,
|
||||||
},
|
},
|
||||||
|
|
||||||
// 以下是自建台站的下拉
|
|
||||||
{
|
|
||||||
type: 'a-menu-item',
|
|
||||||
title: 'View ARR',
|
|
||||||
show: this.isBeta,
|
|
||||||
handler: () => {
|
|
||||||
this.$refs.betaAnalysisRef.showArrRRRModal(1)
|
|
||||||
},
|
|
||||||
},
|
|
||||||
{
|
|
||||||
type: 'a-menu-item',
|
|
||||||
title: 'View RRR',
|
|
||||||
show: this.isBeta,
|
|
||||||
handler: () => {
|
|
||||||
this.$refs.betaAnalysisRef.showArrRRRModal(2)
|
|
||||||
},
|
|
||||||
},
|
|
||||||
{
|
|
||||||
type: 'a-menu-item',
|
|
||||||
title: 'View spectrum',
|
|
||||||
handler: () => {
|
|
||||||
this.$refs.betaAnalysisRef.showSpectrumModal()
|
|
||||||
},
|
|
||||||
show: this.isBeta,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
type: 'a-menu-item',
|
|
||||||
title: 'Peak Infomation',
|
|
||||||
handler: () => {
|
|
||||||
this.$refs.betaAnalysisRef.showPeakInfoModal()
|
|
||||||
},
|
|
||||||
show: this.isBeta,
|
|
||||||
},
|
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
|
@ -1840,24 +1806,6 @@ export default {
|
||||||
show: this.isGamma,
|
show: this.isGamma,
|
||||||
handler: () => (this.dataProcessingLogModalVisible = true),
|
handler: () => (this.dataProcessingLogModalVisible = true),
|
||||||
},
|
},
|
||||||
|
|
||||||
// 自建台站的日志
|
|
||||||
{
|
|
||||||
type: 'a-menu-item',
|
|
||||||
title: 'Automatic Analysis Log',
|
|
||||||
show: this.isBeta,
|
|
||||||
handler: () => {
|
|
||||||
this.$refs.betaAnalysisRef.showAutomaticAnalysisLog()
|
|
||||||
},
|
|
||||||
},
|
|
||||||
{
|
|
||||||
type: 'a-menu-item',
|
|
||||||
title: 'BG log viewer',
|
|
||||||
show: this.isBeta,
|
|
||||||
handler: () => {
|
|
||||||
this.$refs.betaAnalysisRef.showBgLogViewer()
|
|
||||||
},
|
|
||||||
},
|
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
|
|
Loading…
Reference in New Issue
Block a user