Merge branch 'feature/spectrum-analysis' of http://git.hivekion.com:3000/xiaoguangbin/AnalysisSystemForRadionuclide_vue into feature-analysis-RLR-renpy
# Conflicts: # src/views/spectrumAnalysis/components/Modals/ArrRrrModal.vue # src/views/spectrumAnalysis/components/Modals/DataProcessingLogModal.vue # src/views/spectrumAnalysis/components/Modals/NuclideActivityAndMDCModal.vue # src/views/spectrumAnalysis/components/Modals/QcResultsModal.vue # src/views/spectrumAnalysis/components/Modals/RLRModal/index.vue # src/views/spectrumAnalysis/components/Modals/SampleInfomationModal.vue # src/views/spectrumAnalysis/components/PeakInfomation.vue
This commit is contained in:
commit
6ba65075be
|
@ -94,3 +94,14 @@ export function buildLineSeries(name, data, color, extra = {}) {
|
||||||
export function findSeriesByName(series, seriesName) {
|
export function findSeriesByName(series, seriesName) {
|
||||||
return series.find(item => item.name == seriesName)
|
return series.find(item => item.name == seriesName)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 限定数字在一定范围
|
||||||
|
* @param {Number} min
|
||||||
|
* @param {Number} max
|
||||||
|
*/
|
||||||
|
export function rangeNumber(min, max) {
|
||||||
|
return num => {
|
||||||
|
return num > max ? max : num < min ? min : num
|
||||||
|
}
|
||||||
|
}
|
|
@ -17,7 +17,7 @@ let apiBaseUrl = window._CONFIG['domianURL'] || "/jeecg-boot";
|
||||||
const service = axios.create({
|
const service = axios.create({
|
||||||
//baseURL: '/jeecg-boot',
|
//baseURL: '/jeecg-boot',
|
||||||
baseURL: apiBaseUrl, // api base_url
|
baseURL: apiBaseUrl, // api base_url
|
||||||
timeout: 60 * 1000 // 请求超时时间
|
timeout: 2 * 60 * 1000 // 请求超时时间
|
||||||
})
|
})
|
||||||
|
|
||||||
const err = (error) => {
|
const err = (error) => {
|
||||||
|
|
|
@ -45,7 +45,7 @@
|
||||||
<script>
|
<script>
|
||||||
import Custom3DChart from '@/components/Custom3DChart/index.vue'
|
import Custom3DChart from '@/components/Custom3DChart/index.vue'
|
||||||
import ColorPalette from './ColorPalette.vue'
|
import ColorPalette from './ColorPalette.vue'
|
||||||
import { getXAxisAndYAxisByPosition } from '@/utils/chartHelper.js'
|
import { getXAxisAndYAxisByPosition, rangeNumber } from '@/utils/chartHelper.js'
|
||||||
|
|
||||||
const buttons = ['2D', '3D Surface', '3D Scatter']
|
const buttons = ['2D', '3D Surface', '3D Scatter']
|
||||||
|
|
||||||
|
@ -426,7 +426,7 @@ export default {
|
||||||
|
|
||||||
const [x1, y2, x2, y1] = [...point1, ...point2] // 根据解析出的数据确定真实的范围
|
const [x1, y2, x2, y1] = [...point1, ...point2] // 根据解析出的数据确定真实的范围
|
||||||
|
|
||||||
const rangeNumberFunc = this.rangeNumber(0, 256)
|
const rangeNumberFunc = rangeNumber(0, 256)
|
||||||
|
|
||||||
this.twoDOption.xAxis.min = rangeNumberFunc(x1)
|
this.twoDOption.xAxis.min = rangeNumberFunc(x1)
|
||||||
this.twoDOption.xAxis.max = rangeNumberFunc(x2)
|
this.twoDOption.xAxis.max = rangeNumberFunc(x2)
|
||||||
|
@ -441,17 +441,6 @@ export default {
|
||||||
this.clearBrush(chart)
|
this.clearBrush(chart)
|
||||||
},
|
},
|
||||||
|
|
||||||
/**
|
|
||||||
* 限定数字在一定范围
|
|
||||||
* @param {Number} min
|
|
||||||
* @param {Number} max
|
|
||||||
*/
|
|
||||||
rangeNumber(min, max) {
|
|
||||||
return num => {
|
|
||||||
return num > max ? max : num < min ? min : num
|
|
||||||
}
|
|
||||||
},
|
|
||||||
|
|
||||||
// 通知上层范围改变
|
// 通知上层范围改变
|
||||||
emitRangeChange(range) {
|
emitRangeChange(range) {
|
||||||
this.$emit('rangeChange', range)
|
this.$emit('rangeChange', range)
|
||||||
|
|
|
@ -1,39 +1,49 @@
|
||||||
<template>
|
<template>
|
||||||
<custom-modal centered v-model="visible" :width="1200" title="Fit Peaks and Baseline">
|
<custom-modal centered v-model="visible" :width="1200" title="Fit Peaks and Baseline">
|
||||||
<custom-table :columns="columns" :list="list">
|
<a-spin :spinning="isLoading">
|
||||||
|
<custom-table :columns="columns" :list="list" :canSelect="false">
|
||||||
<template v-for="(slot, index) in slots" :slot="slot.slotName" slot-scope="{ record }">
|
<template v-for="(slot, index) in slots" :slot="slot.slotName" slot-scope="{ record }">
|
||||||
<a-checkbox v-if="slot.isCheckbox" :key="index" v-model="record[slot.dataIndex]">
|
<a-checkbox v-if="slot.isCheckbox" :key="index" v-model="record[slot.dataIndex]">
|
||||||
Fixed
|
Fixed
|
||||||
</a-checkbox>
|
</a-checkbox>
|
||||||
<a-input v-else :key="index" v-model="record[slot.dataIndex]"></a-input>
|
<a-input v-else :key="index" v-model="record[slot.dataIndex]" :readOnly="slot.isStatic"></a-input>
|
||||||
</template>
|
</template>
|
||||||
</custom-table>
|
</custom-table>
|
||||||
|
</a-spin>
|
||||||
<div slot="custom-footer">
|
<div slot="custom-footer">
|
||||||
<a-space>
|
<a-space>
|
||||||
<a-button type="primary" @click="handlePeaks">Peaks</a-button>
|
<a-button type="primary" :disabled="isCanceling || isLoading" :loading="isAcceptting" @click="handlePeaks">
|
||||||
<a-button @click="visible = false">Cancel</a-button>
|
Peaks
|
||||||
|
</a-button>
|
||||||
|
<a-button :disabled="isAcceptting || isLoading" :loading="isCanceling" @click="handleCancel">Cancel</a-button>
|
||||||
</a-space>
|
</a-space>
|
||||||
</div>
|
</div>
|
||||||
</custom-modal>
|
</custom-modal>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
|
import { getAction, postAction } from '@/api/manage'
|
||||||
|
import ModalMixin from '@/mixins/ModalMixin'
|
||||||
|
import SampleDataMixin from '@/views/spectrumAnalysis/SampleDataMixin'
|
||||||
|
|
||||||
const columns = [
|
const columns = [
|
||||||
{
|
{
|
||||||
title: 'Peak',
|
title: 'Peak',
|
||||||
dataIndex: 'peak',
|
dataIndex: 'lab',
|
||||||
width: 100,
|
width: 100,
|
||||||
scopedSlots: {
|
scopedSlots: {
|
||||||
customRender: 'Peak'
|
customRender: 'lab'
|
||||||
}
|
},
|
||||||
|
isStatic: true
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: 'Nuclide',
|
title: 'Nuclide',
|
||||||
dataIndex: 'nuclide',
|
dataIndex: 'nuclide',
|
||||||
width: 100,
|
width: 100,
|
||||||
scopedSlots: {
|
scopedSlots: {
|
||||||
customRender: 'Nuclide'
|
customRender: 'nuclide'
|
||||||
}
|
},
|
||||||
|
isStatic: true
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: 'Energy',
|
title: 'Energy',
|
||||||
|
@ -45,23 +55,23 @@ const columns = [
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: 'NetArea',
|
title: 'NetArea',
|
||||||
dataIndex: 'netAreaInput',
|
dataIndex: 'netArea',
|
||||||
width: 100,
|
width: 100,
|
||||||
scopedSlots: {
|
scopedSlots: {
|
||||||
customRender: 'NetAreaInput'
|
customRender: 'netArea'
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: 'FWHM',
|
title: 'FWHM',
|
||||||
dataIndex: 'fwhmInput',
|
dataIndex: 'fwhm',
|
||||||
width: 100,
|
width: 100,
|
||||||
scopedSlots: {
|
scopedSlots: {
|
||||||
customRender: 'FWHMInput'
|
customRender: 'fwhm'
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: 'Step',
|
title: 'Step',
|
||||||
dataIndex: 'Step',
|
dataIndex: 'step',
|
||||||
width: 100,
|
width: 100,
|
||||||
scopedSlots: {
|
scopedSlots: {
|
||||||
customRender: 'Step'
|
customRender: 'Step'
|
||||||
|
@ -77,10 +87,10 @@ const columns = [
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: 'NetArea',
|
title: 'NetArea',
|
||||||
dataIndex: 'netAreaCheckbox',
|
dataIndex: 'netAreaB',
|
||||||
width: 100,
|
width: 100,
|
||||||
scopedSlots: {
|
scopedSlots: {
|
||||||
customRender: 'NetAreaCheckbox'
|
customRender: 'netAreaB'
|
||||||
},
|
},
|
||||||
isCheckbox: true
|
isCheckbox: true
|
||||||
},
|
},
|
||||||
|
@ -95,48 +105,113 @@ const columns = [
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: 'FWHM',
|
title: 'FWHM',
|
||||||
dataIndex: 'fwhmCheckbox',
|
dataIndex: 'fwhmB',
|
||||||
width: 100,
|
width: 100,
|
||||||
scopedSlots: {
|
scopedSlots: {
|
||||||
customRender: 'FWHMCheckbox'
|
customRender: 'fwhmB'
|
||||||
},
|
},
|
||||||
isCheckbox: true
|
isCheckbox: true
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
export default {
|
export default {
|
||||||
|
mixins: [ModalMixin, SampleDataMixin],
|
||||||
props: {
|
props: {
|
||||||
value: {
|
curChan: {
|
||||||
type: Boolean
|
type: Number
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
data() {
|
data() {
|
||||||
this.columns = columns
|
this.columns = columns
|
||||||
return {
|
return {
|
||||||
list: []
|
list: [],
|
||||||
|
isAcceptting: false,
|
||||||
|
isCanceling: false
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
handlePeaks() {
|
// 接收
|
||||||
console.log('%c [ ]-134', 'font-size:13px; background:pink; color:#bf2c9f;', this.list)
|
async handlePeaks() {
|
||||||
|
try {
|
||||||
|
this.isAcceptting = true
|
||||||
|
const { inputFileName: fileName } = this.sampleData
|
||||||
|
const { success, result, message } = await postAction('/gamma/acceptResults', {
|
||||||
|
fileName,
|
||||||
|
accept: true
|
||||||
|
})
|
||||||
|
if (success) {
|
||||||
this.visible = false
|
this.visible = false
|
||||||
|
this.$emit('result', result)
|
||||||
|
} else {
|
||||||
|
this.$message.error(message)
|
||||||
|
}
|
||||||
|
} catch (error) {
|
||||||
|
console.error(error)
|
||||||
|
} finally {
|
||||||
|
this.isAcceptting = false
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
// 取消
|
||||||
|
async handleCancel() {
|
||||||
|
try {
|
||||||
|
this.isCanceling = true
|
||||||
|
const { inputFileName: fileName } = this.sampleData
|
||||||
|
const { success, result, message } = await postAction('/gamma/acceptResults', {
|
||||||
|
fileName,
|
||||||
|
accept: false,
|
||||||
|
oldPeak: this.oldPeaks
|
||||||
|
})
|
||||||
|
if (success) {
|
||||||
|
this.visible = false
|
||||||
|
this.$emit('cancel', result)
|
||||||
|
} else {
|
||||||
|
this.$message.error(message)
|
||||||
|
}
|
||||||
|
} catch (error) {
|
||||||
|
console.error(error)
|
||||||
|
} finally {
|
||||||
|
this.isCanceling = false
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
async getData() {
|
||||||
|
try {
|
||||||
|
this.isLoading = true
|
||||||
|
const { sampleId, inputFileName } = this.sampleData
|
||||||
|
const { success, result, message } = await getAction('/gamma/insertPeak', {
|
||||||
|
sampleId,
|
||||||
|
fileName: inputFileName,
|
||||||
|
curChan: Math.ceil(this.curChan)
|
||||||
|
})
|
||||||
|
if (success) {
|
||||||
|
const { oldPeaks, tablePeaksList } = result
|
||||||
|
tablePeaksList.forEach(item => {
|
||||||
|
item.energy = Number(item.energy).toPrecision(6)
|
||||||
|
item.netArea = Number(item.netArea).toPrecision(6)
|
||||||
|
item.fwhm = Number(item.fwhm).toPrecision(6)
|
||||||
|
})
|
||||||
|
this.list = tablePeaksList
|
||||||
|
this.oldPeaks = oldPeaks
|
||||||
|
} else {
|
||||||
|
this.$message.error(message)
|
||||||
|
}
|
||||||
|
} catch (error) {
|
||||||
|
console.error(error)
|
||||||
|
} finally {
|
||||||
|
this.isLoading = false
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
beforeModalOpen() {
|
||||||
|
this.getData()
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
computed: {
|
computed: {
|
||||||
visible: {
|
|
||||||
get() {
|
|
||||||
if (this.value) {
|
|
||||||
this.content = ''
|
|
||||||
}
|
|
||||||
return this.value
|
|
||||||
},
|
|
||||||
set(val) {
|
|
||||||
this.$emit('input', val)
|
|
||||||
}
|
|
||||||
},
|
|
||||||
slots() {
|
slots() {
|
||||||
return columns.map(column => {
|
return columns.map(column => {
|
||||||
return {
|
return {
|
||||||
isCheckbox: column.isCheckbox,
|
isCheckbox: column.isCheckbox,
|
||||||
|
isStatic: column.isStatic,
|
||||||
dataIndex: column.dataIndex,
|
dataIndex: column.dataIndex,
|
||||||
slotName: column.scopedSlots.customRender
|
slotName: column.scopedSlots.customRender
|
||||||
}
|
}
|
||||||
|
|
|
@ -10,7 +10,7 @@
|
||||||
<a-form-model-item label="Tolerance">
|
<a-form-model-item label="Tolerance">
|
||||||
<a-input-number v-model="model.tolerance"></a-input-number>
|
<a-input-number v-model="model.tolerance"></a-input-number>
|
||||||
</a-form-model-item>
|
</a-form-model-item>
|
||||||
<a-button type="primary">Search</a-button>
|
<a-button type="primary" @click="handleSearch">Search</a-button>
|
||||||
</a-form-model>
|
</a-form-model>
|
||||||
<span @click="handleNuclideChange('next')">></span>
|
<span @click="handleNuclideChange('next')">></span>
|
||||||
</div>
|
</div>
|
||||||
|
@ -252,20 +252,33 @@ export default {
|
||||||
async getInfo() {
|
async getInfo() {
|
||||||
try {
|
try {
|
||||||
this.isLoading = true
|
this.isLoading = true
|
||||||
const { sampleId, inputFileName } = this.sampleData
|
const { sampleId, inputFileName: fileName } = this.sampleData
|
||||||
const { success, result, message } = await getAction('/gamma/nuclideReview', {
|
const { success, result, message } = await getAction('/gamma/nuclideReview', {
|
||||||
sampleId: sampleId,
|
sampleId: sampleId,
|
||||||
channel: this.channel,
|
channel: this.channel,
|
||||||
fileName: inputFileName
|
fileName
|
||||||
})
|
})
|
||||||
if (success) {
|
if (success) {
|
||||||
const { chart, energy, halfLife, halfLifeErr, lines, list, name, table } = result
|
|
||||||
|
|
||||||
this.model = {
|
this.model = {
|
||||||
energy,
|
energy: result.energy,
|
||||||
tolerance: 0.5
|
tolerance: 0.5
|
||||||
}
|
}
|
||||||
|
|
||||||
|
this.handleResData(result)
|
||||||
|
} else {
|
||||||
|
this.$message.error(message)
|
||||||
|
}
|
||||||
|
} catch (error) {
|
||||||
|
console.error(error)
|
||||||
|
} finally {
|
||||||
|
this.isLoading = false
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
// 处理返回的数据
|
||||||
|
handleResData(result) {
|
||||||
|
const { chart, halfLife, halfLifeErr, lines, list, name, table } = result
|
||||||
|
|
||||||
this.info = {
|
this.info = {
|
||||||
halfLife,
|
halfLife,
|
||||||
halfLifeErr,
|
halfLifeErr,
|
||||||
|
@ -281,14 +294,6 @@ export default {
|
||||||
|
|
||||||
this.currNuclide = this.nuclideList[0]
|
this.currNuclide = this.nuclideList[0]
|
||||||
this.selectTableRow(table.length > 1 ? 1 : 0)
|
this.selectTableRow(table.length > 1 ? 1 : 0)
|
||||||
} else {
|
|
||||||
this.$message.error(message)
|
|
||||||
}
|
|
||||||
} catch (error) {
|
|
||||||
console.error(error)
|
|
||||||
} finally {
|
|
||||||
this.isLoading = false
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
|
|
||||||
// 点击左侧Nuclide切换
|
// 点击左侧Nuclide切换
|
||||||
|
@ -329,6 +334,28 @@ export default {
|
||||||
|
|
||||||
beforeModalOpen() {
|
beforeModalOpen() {
|
||||||
this.getInfo()
|
this.getInfo()
|
||||||
|
},
|
||||||
|
|
||||||
|
// 搜索
|
||||||
|
async handleSearch() {
|
||||||
|
try {
|
||||||
|
this.isLoading = true
|
||||||
|
const { sampleId, inputFileName: fileName } = this.sampleData
|
||||||
|
const { success, result, message } = await getAction('/gamma/searchNuclide', {
|
||||||
|
sampleId,
|
||||||
|
fileName,
|
||||||
|
...this.model
|
||||||
|
})
|
||||||
|
if (success) {
|
||||||
|
this.handleResData(result)
|
||||||
|
} else {
|
||||||
|
this.$message.error(message)
|
||||||
|
}
|
||||||
|
} catch (error) {
|
||||||
|
console.error(error)
|
||||||
|
} finally {
|
||||||
|
this.isLoading = false
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -4,7 +4,15 @@
|
||||||
<div class="interactive-analysis-tools">
|
<div class="interactive-analysis-tools">
|
||||||
<div class="interactive-analysis-tools-left">
|
<div class="interactive-analysis-tools-left">
|
||||||
<div class="chart">
|
<div class="chart">
|
||||||
<CustomChart ref="chartRef" :option="option" :opts="opts" @zr:click="handleChartClick" />
|
<CustomChart
|
||||||
|
ref="chartRef"
|
||||||
|
:option="option"
|
||||||
|
:opts="opts"
|
||||||
|
@zr:mousedown="handleMouseDown"
|
||||||
|
@zr:mouseup="handleMouseUp"
|
||||||
|
@brushEnd="handleBrushEnd"
|
||||||
|
@zr:click="handleChartClick"
|
||||||
|
/>
|
||||||
</div>
|
</div>
|
||||||
<!-- 缩略图 -->
|
<!-- 缩略图 -->
|
||||||
<div class="thumbnail">
|
<div class="thumbnail">
|
||||||
|
@ -70,10 +78,10 @@
|
||||||
<a-button type="primary" @click="handleAddCP">(A)dd CP</a-button>
|
<a-button type="primary" @click="handleAddCP">(A)dd CP</a-button>
|
||||||
</div>
|
</div>
|
||||||
<div class="peak-box-item">
|
<div class="peak-box-item">
|
||||||
<a-button type="primary">(R)emove CP</a-button>
|
<a-button type="primary" @click="handleRemoveCP">(R)emove CP</a-button>
|
||||||
</div>
|
</div>
|
||||||
<div class="peak-box-item">
|
<div class="peak-box-item">
|
||||||
<a-button type="primary">(M)odify CP</a-button>
|
<a-button type="primary" @click="handleModifyCP">(M)odify CP</a-button>
|
||||||
</div>
|
</div>
|
||||||
<div class="peak-box-item">
|
<div class="peak-box-item">
|
||||||
<a-button type="primary">Edit (S)lope</a-button>
|
<a-button type="primary">Edit (S)lope</a-button>
|
||||||
|
@ -94,7 +102,7 @@
|
||||||
</div>
|
</div>
|
||||||
</title-over-border>
|
</title-over-border>
|
||||||
<div class="reset-btn-box">
|
<div class="reset-btn-box">
|
||||||
<a-button type="primary">Reset Chart</a-button>
|
<a-button type="primary" @click="handleResetChart">Reset Chart</a-button>
|
||||||
</div>
|
</div>
|
||||||
<div class="identify-box">
|
<div class="identify-box">
|
||||||
<title-over-border title="Nuclide Identify">
|
<title-over-border title="Nuclide Identify">
|
||||||
|
@ -154,7 +162,12 @@
|
||||||
<comment-modal v-model="commentModalVisible" :type="commentType" />
|
<comment-modal v-model="commentModalVisible" :type="commentType" />
|
||||||
<!-- Comment弹窗 结束 -->
|
<!-- Comment弹窗 结束 -->
|
||||||
<!-- Fit Peaks and Baseline弹窗 开始 -->
|
<!-- Fit Peaks and Baseline弹窗 开始 -->
|
||||||
<fit-peaks-and-base-line-modal v-model="fitPeaksAndBaselineModalVisible" />
|
<fit-peaks-and-base-line-modal
|
||||||
|
v-model="fitPeaksAndBaselineModalVisible"
|
||||||
|
:curChan="currChannel"
|
||||||
|
@result="handleInsertSuccess"
|
||||||
|
@cancel="handleCancelSuccess"
|
||||||
|
/>
|
||||||
<!-- Fit Peaks and Baseline弹窗 结束 -->
|
<!-- Fit Peaks and Baseline弹窗 结束 -->
|
||||||
<!-- Nuclide Review 弹窗开始 -->
|
<!-- Nuclide Review 弹窗开始 -->
|
||||||
<nuclide-review-modal v-model="nuclideReviewModalVisible" :sampleId="sampleId" :channel="currChannel" />
|
<nuclide-review-modal v-model="nuclideReviewModalVisible" :sampleId="sampleId" :channel="currChannel" />
|
||||||
|
@ -172,7 +185,7 @@ import ModalMixin from '@/mixins/ModalMixin'
|
||||||
import { getAction } from '@/api/manage'
|
import { getAction } from '@/api/manage'
|
||||||
import { cloneDeep } from 'lodash'
|
import { cloneDeep } from 'lodash'
|
||||||
import Response from './Response.json'
|
import Response from './Response.json'
|
||||||
import { findSeriesByName, getXAxisAndYAxisByPosition } from '@/utils/chartHelper'
|
import { findSeriesByName, getXAxisAndYAxisByPosition, rangeNumber } from '@/utils/chartHelper'
|
||||||
import SampleDataMixin from '@/views/spectrumAnalysis/SampleDataMixin'
|
import SampleDataMixin from '@/views/spectrumAnalysis/SampleDataMixin'
|
||||||
|
|
||||||
// 初始配置
|
// 初始配置
|
||||||
|
@ -206,11 +219,7 @@ const initialOption = {
|
||||||
width: 1
|
width: 1
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
formatter: params => {
|
formatter: undefined,
|
||||||
const [channel] = params[0].value
|
|
||||||
return `<div class="channel">Channel: ${channel}</div>
|
|
||||||
<div class="energy">Energy: ${(0).toFixed(2)}</div>`
|
|
||||||
},
|
|
||||||
className: 'figure-chart-option-tooltip'
|
className: 'figure-chart-option-tooltip'
|
||||||
},
|
},
|
||||||
xAxis: {
|
xAxis: {
|
||||||
|
@ -232,6 +241,7 @@ const initialOption = {
|
||||||
animation: false
|
animation: false
|
||||||
},
|
},
|
||||||
yAxis: {
|
yAxis: {
|
||||||
|
type: 'log',
|
||||||
name: 'Counts',
|
name: 'Counts',
|
||||||
nameLocation: 'center',
|
nameLocation: 'center',
|
||||||
nameGap: 40,
|
nameGap: 40,
|
||||||
|
@ -256,12 +266,13 @@ const initialOption = {
|
||||||
color: '#ade6ee'
|
color: '#ade6ee'
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
min: 'dataMin',
|
min: 0.1,
|
||||||
max: 'dataMax',
|
max: 'dataMax',
|
||||||
animation: false
|
animation: false
|
||||||
},
|
},
|
||||||
series: [],
|
series: [],
|
||||||
brush: {}
|
brush: {},
|
||||||
|
graphic: []
|
||||||
}
|
}
|
||||||
|
|
||||||
const columns = [
|
const columns = [
|
||||||
|
@ -275,31 +286,46 @@ const columns = [
|
||||||
{
|
{
|
||||||
title: 'Energy (keV)',
|
title: 'Energy (keV)',
|
||||||
dataIndex: 'energy',
|
dataIndex: 'energy',
|
||||||
width: 120
|
width: 120,
|
||||||
|
customRender: text => {
|
||||||
|
return text.toFixed(3)
|
||||||
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: 'Centroid (C)',
|
title: 'Centroid (C)',
|
||||||
dataIndex: 'peakCentroid',
|
dataIndex: 'peakCentroid',
|
||||||
width: 120
|
width: 120,
|
||||||
|
customRender: text => {
|
||||||
|
return text.toFixed(3)
|
||||||
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: 'FWHM (keV)',
|
title: 'FWHM (keV)',
|
||||||
dataIndex: 'fwhm',
|
dataIndex: 'fwhm',
|
||||||
width: 120
|
width: 120,
|
||||||
|
customRender: text => {
|
||||||
|
return text.toFixed(3)
|
||||||
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: 'Area',
|
title: 'Area',
|
||||||
dataIndex: 'area',
|
dataIndex: 'area',
|
||||||
width: 120
|
width: 120,
|
||||||
|
customRender: text => {
|
||||||
|
return text.toFixed(3)
|
||||||
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: 'Detectability',
|
title: 'Detectability',
|
||||||
dataIndex: 'detectability',
|
dataIndex: 'significance',
|
||||||
width: 120
|
width: 120,
|
||||||
|
customRender: text => {
|
||||||
|
return text.toFixed(3)
|
||||||
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: 'Cmnt',
|
title: '#Cmnt',
|
||||||
dataIndex: 'cmnt',
|
dataIndex: 'comments',
|
||||||
width: 120
|
width: 120
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
@ -345,9 +371,10 @@ const thumbnailOption = {
|
||||||
axisLabel: {
|
axisLabel: {
|
||||||
show: false
|
show: false
|
||||||
},
|
},
|
||||||
min: 1
|
min: 0.1,
|
||||||
|
max: 'dataMax'
|
||||||
},
|
},
|
||||||
series: []
|
series: null
|
||||||
}
|
}
|
||||||
export default {
|
export default {
|
||||||
mixins: [ModalMixin, SampleDataMixin],
|
mixins: [ModalMixin, SampleDataMixin],
|
||||||
|
@ -366,6 +393,12 @@ export default {
|
||||||
thumbnailOption: cloneDeep(thumbnailOption),
|
thumbnailOption: cloneDeep(thumbnailOption),
|
||||||
|
|
||||||
isLoading: false,
|
isLoading: false,
|
||||||
|
|
||||||
|
channelBaseCPChart: [],
|
||||||
|
channelBaseLineChart: [],
|
||||||
|
channelCountChart: [],
|
||||||
|
channelPeakChart: [],
|
||||||
|
energy: [],
|
||||||
list: [],
|
list: [],
|
||||||
sampleId: -1,
|
sampleId: -1,
|
||||||
|
|
||||||
|
@ -386,7 +419,17 @@ export default {
|
||||||
},
|
},
|
||||||
|
|
||||||
currChannel: undefined, // 当currChannel前选中的channel
|
currChannel: undefined, // 当currChannel前选中的channel
|
||||||
selectedTableItem: undefined // 当前选中的表格项
|
selectedTableItem: undefined, // 当前选中的表格项
|
||||||
|
|
||||||
|
isModifying: false // 正在修改控制点
|
||||||
|
}
|
||||||
|
},
|
||||||
|
created() {
|
||||||
|
this.option.tooltip.formatter = params => {
|
||||||
|
const channel = parseInt(params[0].value[0])
|
||||||
|
const energy = this.energy[channel - 1]
|
||||||
|
return `<div class="channel">Channel: ${channel}</div>
|
||||||
|
<div class="energy">Energy: ${energy.toFixed(2)}</div>`
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
|
@ -395,25 +438,30 @@ export default {
|
||||||
this.isLoading = true
|
this.isLoading = true
|
||||||
this.option.series = []
|
this.option.series = []
|
||||||
|
|
||||||
const { success, result, message } = Response
|
// const { success, result, message } = Response
|
||||||
// const { success, result, message } = await getAction('/gamma/InteractiveTool', {
|
const { success, result, message } = await getAction('/gamma/InteractiveTool', {
|
||||||
// sampleId: this.sampleId,
|
sampleId: this.sampleId,
|
||||||
// fileName: this.fileName
|
fileName: this.fileName
|
||||||
// })
|
})
|
||||||
if (success) {
|
if (success) {
|
||||||
|
this.isLoading = false
|
||||||
const {
|
const {
|
||||||
barChart,
|
barChart,
|
||||||
channelBaseCPChart,
|
channelBaseCPChart,
|
||||||
channelBaseLineChart,
|
channelBaseLineChart,
|
||||||
channelCountChart,
|
channelCountChart,
|
||||||
channelPeakChart,
|
channelPeakChart,
|
||||||
|
energy,
|
||||||
table
|
table
|
||||||
} = result
|
} = result
|
||||||
this.isLoading = false
|
|
||||||
|
|
||||||
console.log('%c [ ]-374', 'font-size:13px; background:pink; color:#bf2c9f;', result)
|
console.log('%c [ ]-374', 'font-size:13px; background:pink; color:#bf2c9f;', result)
|
||||||
|
|
||||||
|
this.channelBaseCPChart = channelBaseCPChart
|
||||||
|
this.channelBaseLineChart = channelBaseLineChart
|
||||||
|
this.channelCountChart = channelCountChart
|
||||||
this.channelPeakChart = channelPeakChart
|
this.channelPeakChart = channelPeakChart
|
||||||
|
this.energy = energy
|
||||||
|
|
||||||
const series = []
|
const series = []
|
||||||
|
|
||||||
|
@ -476,15 +524,12 @@ export default {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}),
|
}),
|
||||||
emphasis: {
|
silent: true,
|
||||||
disabled: true
|
|
||||||
},
|
|
||||||
animation: false,
|
animation: false,
|
||||||
zlevel: 20
|
zlevel: 20
|
||||||
})
|
})
|
||||||
|
|
||||||
this.thumbnailOption.series.push(
|
this.thumbnailOption.series = this.buildSeriesOption(
|
||||||
this.buildSeriesOption(
|
|
||||||
'BarChart',
|
'BarChart',
|
||||||
barChart.map(({ x, y }) => [x, y]),
|
barChart.map(({ x, y }) => [x, y]),
|
||||||
'#fff',
|
'#fff',
|
||||||
|
@ -492,7 +537,6 @@ export default {
|
||||||
silent: true
|
silent: true
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
)
|
|
||||||
|
|
||||||
this.list = table
|
this.list = table
|
||||||
this.option.series = series
|
this.option.series = series
|
||||||
|
@ -521,6 +565,7 @@ export default {
|
||||||
emphasis: {
|
emphasis: {
|
||||||
disabled: true
|
disabled: true
|
||||||
},
|
},
|
||||||
|
silent: true,
|
||||||
animation: false,
|
animation: false,
|
||||||
...extra
|
...extra
|
||||||
}
|
}
|
||||||
|
@ -537,6 +582,8 @@ export default {
|
||||||
this.getInfo()
|
this.getInfo()
|
||||||
this.opts.notMerge = false
|
this.opts.notMerge = false
|
||||||
|
|
||||||
|
this.option.graphic = []
|
||||||
|
|
||||||
this.$nextTick(() => {
|
this.$nextTick(() => {
|
||||||
this.option.brush = { toolbox: [] }
|
this.option.brush = { toolbox: [] }
|
||||||
this.selectedKeys = []
|
this.selectedKeys = []
|
||||||
|
@ -652,15 +699,206 @@ export default {
|
||||||
|
|
||||||
// 显示comment弹窗
|
// 显示comment弹窗
|
||||||
handleAddComment(type) {
|
handleAddComment(type) {
|
||||||
|
if (type == 'Peak' && !this.selectedKeys.length) {
|
||||||
|
this.$message.warn('Please Select a Peak that You Want to Add Comment!')
|
||||||
|
return
|
||||||
|
}
|
||||||
this.commentType = type
|
this.commentType = type
|
||||||
this.commentModalVisible = true
|
this.commentModalVisible = true
|
||||||
},
|
},
|
||||||
|
|
||||||
// Insert按钮
|
// Insert按钮
|
||||||
handleInsert() {
|
handleInsert() {
|
||||||
|
const xAxises = this.channelBaseCPChart.map(({ point: { x } }) => x)
|
||||||
|
const min = xAxises[0]
|
||||||
|
const max = xAxises[xAxises.length - 1]
|
||||||
|
if (!this.currChannel || this.currChannel < min || this.currChannel > max) {
|
||||||
|
this.$message.warn("Couldn't insert peak, maybe out of range")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
this.fitPeaksAndBaselineModalVisible = true
|
this.fitPeaksAndBaselineModalVisible = true
|
||||||
},
|
},
|
||||||
|
|
||||||
|
// 点击 Fit Peak XXX 弹窗中的 Peaks 按钮
|
||||||
|
handleInsertSuccess(result) {
|
||||||
|
const {
|
||||||
|
allData,
|
||||||
|
barChart,
|
||||||
|
channelBaseLineChart,
|
||||||
|
channelPeakChart,
|
||||||
|
shadowChannelChart,
|
||||||
|
shadowEnergyChart,
|
||||||
|
shapeChannelData,
|
||||||
|
shapeEnergyData,
|
||||||
|
table
|
||||||
|
} = result
|
||||||
|
|
||||||
|
this.$emit('refresh', {
|
||||||
|
allData,
|
||||||
|
channelPeakChart,
|
||||||
|
shadowChannelChart,
|
||||||
|
shadowEnergyChart,
|
||||||
|
shapeChannelData,
|
||||||
|
shapeEnergyData
|
||||||
|
})
|
||||||
|
|
||||||
|
this.channelPeakChart = channelPeakChart
|
||||||
|
this.channelBaseLineChart = channelBaseLineChart
|
||||||
|
|
||||||
|
const series = []
|
||||||
|
|
||||||
|
// 推入BaseLine
|
||||||
|
series.push({
|
||||||
|
...this.buildSeriesOption(
|
||||||
|
'BaseLine',
|
||||||
|
channelBaseLineChart.pointlist.map(({ x, y }) => [x, y]),
|
||||||
|
`rgb(${channelBaseLineChart.color})`
|
||||||
|
),
|
||||||
|
markLine: {
|
||||||
|
silent: true,
|
||||||
|
symbol: 'none',
|
||||||
|
label: {
|
||||||
|
show: false
|
||||||
|
},
|
||||||
|
lineStyle: {
|
||||||
|
color: 'red',
|
||||||
|
width: 1
|
||||||
|
},
|
||||||
|
data: [{ xAxis: -1 }]
|
||||||
|
},
|
||||||
|
zlevel: 10
|
||||||
|
})
|
||||||
|
|
||||||
|
// 推入旧的Count
|
||||||
|
series.push(
|
||||||
|
this.buildSeriesOption(
|
||||||
|
'CountChart',
|
||||||
|
this.channelCountChart.pointlist.map(({ x, y }) => [x, y]),
|
||||||
|
`rgb(${this.channelCountChart.color})`
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
// 推入Peak
|
||||||
|
const peakSeries = []
|
||||||
|
channelPeakChart.forEach((item, index) => {
|
||||||
|
peakSeries.push(
|
||||||
|
this.buildSeriesOption(
|
||||||
|
'Peak_' + (index + 1),
|
||||||
|
item.pointlist.map(({ x, y }) => [x, y]),
|
||||||
|
`rgb(${item.color})`
|
||||||
|
)
|
||||||
|
)
|
||||||
|
})
|
||||||
|
|
||||||
|
series.push(...peakSeries)
|
||||||
|
|
||||||
|
// 推入旧的基线控制点
|
||||||
|
series.push({
|
||||||
|
name: 'BaseLine_Ctrl_Point',
|
||||||
|
type: 'scatter',
|
||||||
|
data: this.channelBaseCPChart.map(({ size, color, point: { x, y } }) => {
|
||||||
|
return {
|
||||||
|
value: [x, y],
|
||||||
|
itemStyle: {
|
||||||
|
color: 'transparent',
|
||||||
|
borderColor: color,
|
||||||
|
borderWidth: size / 2
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}),
|
||||||
|
silent: true,
|
||||||
|
animation: false,
|
||||||
|
zlevel: 20
|
||||||
|
})
|
||||||
|
|
||||||
|
this.thumbnailOption.series = this.buildSeriesOption(
|
||||||
|
'BarChart',
|
||||||
|
barChart.map(({ x, y }) => [x, y]),
|
||||||
|
'#fff',
|
||||||
|
{
|
||||||
|
silent: true
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
|
this.list = table
|
||||||
|
this.option.series = series
|
||||||
|
},
|
||||||
|
|
||||||
|
// 点击 Fit Peak XXX 弹窗中的 Cancel 按钮
|
||||||
|
handleCancelSuccess(result) {
|
||||||
|
const { channelPeakChart, table } = result
|
||||||
|
this.channelPeakChart = channelPeakChart
|
||||||
|
const series = []
|
||||||
|
|
||||||
|
// 推入旧的BaseLine
|
||||||
|
series.push({
|
||||||
|
...this.buildSeriesOption(
|
||||||
|
'BaseLine',
|
||||||
|
this.channelBaseLineChart.pointlist.map(({ x, y }) => [x, y]),
|
||||||
|
`rgb(${this.channelBaseLineChart.color})`
|
||||||
|
),
|
||||||
|
markLine: {
|
||||||
|
silent: true,
|
||||||
|
symbol: 'none',
|
||||||
|
label: {
|
||||||
|
show: false
|
||||||
|
},
|
||||||
|
lineStyle: {
|
||||||
|
color: 'red',
|
||||||
|
width: 1
|
||||||
|
},
|
||||||
|
data: [{ xAxis: -1 }]
|
||||||
|
},
|
||||||
|
zlevel: 10
|
||||||
|
})
|
||||||
|
|
||||||
|
// 推入旧的Count
|
||||||
|
series.push(
|
||||||
|
this.buildSeriesOption(
|
||||||
|
'CountChart',
|
||||||
|
this.channelCountChart.pointlist.map(({ x, y }) => [x, y]),
|
||||||
|
`rgb(${this.channelCountChart.color})`
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
// 推入Peak
|
||||||
|
const peakSeries = []
|
||||||
|
channelPeakChart.forEach((item, index) => {
|
||||||
|
peakSeries.push(
|
||||||
|
this.buildSeriesOption(
|
||||||
|
'Peak_' + (index + 1),
|
||||||
|
item.pointlist.map(({ x, y }) => [x, y]),
|
||||||
|
`rgb(${item.color})`
|
||||||
|
)
|
||||||
|
)
|
||||||
|
})
|
||||||
|
|
||||||
|
series.push(...peakSeries)
|
||||||
|
|
||||||
|
// 推入旧的基线控制点
|
||||||
|
series.push({
|
||||||
|
name: 'BaseLine_Ctrl_Point',
|
||||||
|
type: 'scatter',
|
||||||
|
data: this.channelBaseCPChart.map(({ size, color, point: { x, y } }) => {
|
||||||
|
return {
|
||||||
|
value: [x, y],
|
||||||
|
itemStyle: {
|
||||||
|
color: 'transparent',
|
||||||
|
borderColor: color,
|
||||||
|
borderWidth: size / 2
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}),
|
||||||
|
silent: true,
|
||||||
|
animation: false,
|
||||||
|
zlevel: 20
|
||||||
|
})
|
||||||
|
|
||||||
|
this.list = table
|
||||||
|
this.option.series = series
|
||||||
|
},
|
||||||
|
|
||||||
// 删除
|
// 删除
|
||||||
handleDel() {
|
handleDel() {
|
||||||
if (!this.selectedKeys.length) {
|
if (!this.selectedKeys.length) {
|
||||||
|
@ -671,28 +909,134 @@ export default {
|
||||||
this.$warning({
|
this.$warning({
|
||||||
title: 'Warning',
|
title: 'Warning',
|
||||||
content: 'Are you sure to delete this peak?',
|
content: 'Are you sure to delete this peak?',
|
||||||
onOk: () => {
|
onOk: async () => {
|
||||||
const [willDelKey] = this.selectedKeys
|
const [willDelKey] = this.selectedKeys
|
||||||
const findIndex = this.list.findIndex(item => item.index == willDelKey)
|
const findIndex = this.list.findIndex(item => item.index == willDelKey)
|
||||||
this.list.splice(findIndex, 1)
|
// this.list.splice(findIndex, 1)
|
||||||
this.selectedKeys = []
|
// this.selectedKeys = []
|
||||||
|
|
||||||
const seriesIndex = this.option.series.findIndex(item => {
|
// const seriesIndex = this.option.series.findIndex(item => {
|
||||||
return item.name == 'Peak_' + willDelKey
|
// return item.name == 'Peak_' + willDelKey
|
||||||
|
// })
|
||||||
|
|
||||||
|
// this.opts.notMerge = true
|
||||||
|
// this.option.series.splice(seriesIndex, 1)
|
||||||
|
// this.channelPeakChart.splice(findIndex, 1)
|
||||||
|
|
||||||
|
// this.$nextTick(() => {
|
||||||
|
// this.resetChartOpts()
|
||||||
|
// })
|
||||||
|
try {
|
||||||
|
const { inputFileName: fileName } = this.sampleData
|
||||||
|
const { success, result, message } = await getAction('/gamma/deletePeak', {
|
||||||
|
fileName,
|
||||||
|
curRow: findIndex
|
||||||
|
})
|
||||||
|
if (success) {
|
||||||
|
console.log('%c [ ]-935', 'font-size:13px; background:pink; color:#bf2c9f;', result)
|
||||||
|
const {
|
||||||
|
allData,
|
||||||
|
channelPeakChart,
|
||||||
|
shadowChannelChart,
|
||||||
|
shadowEnergyChart,
|
||||||
|
shapeChannelData,
|
||||||
|
shapeEnergyData,
|
||||||
|
table
|
||||||
|
} = result
|
||||||
|
|
||||||
|
this.$emit('refresh', {
|
||||||
|
allData,
|
||||||
|
channelPeakChart,
|
||||||
|
shadowChannelChart,
|
||||||
|
shadowEnergyChart,
|
||||||
|
shapeChannelData,
|
||||||
|
shapeEnergyData
|
||||||
})
|
})
|
||||||
|
|
||||||
this.opts.notMerge = true
|
this.channelPeakChart = channelPeakChart
|
||||||
this.option.series.splice(seriesIndex, 1)
|
const series = []
|
||||||
this.channelPeakChart.splice(findIndex, 1)
|
// 推入旧的BaseLine
|
||||||
|
series.push({
|
||||||
this.$nextTick(() => {
|
...this.buildSeriesOption(
|
||||||
this.opts.notMerge = false
|
'BaseLine',
|
||||||
this.option.brush = { toolbox: [] }
|
this.channelBaseLineChart.pointlist.map(({ x, y }) => [x, y]),
|
||||||
|
`rgb(${this.channelBaseLineChart.color})`
|
||||||
|
),
|
||||||
|
markLine: {
|
||||||
|
silent: true,
|
||||||
|
symbol: 'none',
|
||||||
|
label: {
|
||||||
|
show: false
|
||||||
|
},
|
||||||
|
lineStyle: {
|
||||||
|
color: 'red',
|
||||||
|
width: 1
|
||||||
|
},
|
||||||
|
data: [{ xAxis: -1 }]
|
||||||
|
},
|
||||||
|
zlevel: 10
|
||||||
})
|
})
|
||||||
|
|
||||||
|
// 推入旧的Count
|
||||||
|
series.push(
|
||||||
|
this.buildSeriesOption(
|
||||||
|
'CountChart',
|
||||||
|
this.channelCountChart.pointlist.map(({ x, y }) => [x, y]),
|
||||||
|
`rgb(${this.channelCountChart.color})`
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
// 推入Peak
|
||||||
|
const peakSeries = []
|
||||||
|
channelPeakChart.forEach((item, index) => {
|
||||||
|
peakSeries.push(
|
||||||
|
this.buildSeriesOption(
|
||||||
|
'Peak_' + (index + 1),
|
||||||
|
item.pointlist.map(({ x, y }) => [x, y]),
|
||||||
|
`rgb(${item.color})`
|
||||||
|
)
|
||||||
|
)
|
||||||
|
})
|
||||||
|
|
||||||
|
series.push(...peakSeries)
|
||||||
|
|
||||||
|
// 推入旧的基线控制点
|
||||||
|
series.push({
|
||||||
|
name: 'BaseLine_Ctrl_Point',
|
||||||
|
type: 'scatter',
|
||||||
|
data: this.channelBaseCPChart.map(({ size, color, point: { x, y } }) => {
|
||||||
|
return {
|
||||||
|
value: [x, y],
|
||||||
|
itemStyle: {
|
||||||
|
color: 'transparent',
|
||||||
|
borderColor: color,
|
||||||
|
borderWidth: size / 2
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}),
|
||||||
|
silent: true,
|
||||||
|
animation: false,
|
||||||
|
zlevel: 20
|
||||||
|
})
|
||||||
|
|
||||||
|
this.list = table
|
||||||
|
this.option.series = series
|
||||||
|
} else {
|
||||||
|
this.$message.error(message)
|
||||||
|
}
|
||||||
|
} catch (error) {
|
||||||
|
console.error(error)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
|
|
||||||
|
// 重置图表配置
|
||||||
|
resetChartOpts() {
|
||||||
|
this.opts.notMerge = false
|
||||||
|
this.option.brush = { toolbox: [] }
|
||||||
|
},
|
||||||
|
|
||||||
// 匹配
|
// 匹配
|
||||||
handleFit() {
|
handleFit() {
|
||||||
if (!this.list.length) {
|
if (!this.list.length) {
|
||||||
|
@ -719,6 +1063,10 @@ export default {
|
||||||
|
|
||||||
// 鼠标按下时开启可刷选状态
|
// 鼠标按下时开启可刷选状态
|
||||||
handleMouseDown() {
|
handleMouseDown() {
|
||||||
|
if (this.isModifying) {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
const chart = this.$refs.chartRef.getChartInstance()
|
const chart = this.$refs.chartRef.getChartInstance()
|
||||||
chart.dispatchAction({
|
chart.dispatchAction({
|
||||||
type: 'takeGlobalCursor',
|
type: 'takeGlobalCursor',
|
||||||
|
@ -731,6 +1079,86 @@ export default {
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
|
|
||||||
|
handleMouseUp() {
|
||||||
|
setTimeout(() => {
|
||||||
|
const chart = this.$refs.chartRef.getChartInstance()
|
||||||
|
this.clearBrush(chart)
|
||||||
|
}, 0)
|
||||||
|
},
|
||||||
|
|
||||||
|
clearBrush(chart) {
|
||||||
|
// 清理刷选的范围
|
||||||
|
chart.dispatchAction({
|
||||||
|
type: 'brush',
|
||||||
|
areas: []
|
||||||
|
})
|
||||||
|
|
||||||
|
// 改为不可刷选状态
|
||||||
|
chart.dispatchAction({
|
||||||
|
type: 'takeGlobalCursor'
|
||||||
|
})
|
||||||
|
},
|
||||||
|
|
||||||
|
// 刷选完毕时
|
||||||
|
handleBrushEnd(param) {
|
||||||
|
const chart = this.$refs.chartRef.getChartInstance()
|
||||||
|
const areas = param.areas[0]
|
||||||
|
if (areas) {
|
||||||
|
const range = areas.range
|
||||||
|
const [[minX, maxX], [minY, maxY]] = range
|
||||||
|
const point1 = chart.convertFromPixel({ seriesIndex: 0 }, [minX, minY]).map(num => parseInt(num.toFixed()))
|
||||||
|
const point2 = chart.convertFromPixel({ seriesIndex: 0 }, [maxX, maxY]).map(num => parseInt(num.toFixed()))
|
||||||
|
const xAxisMax = chart.getModel().getComponent('xAxis').axis.scale._extent[1]
|
||||||
|
const yAxisMax = this.option.yAxis.max
|
||||||
|
let [x1, y2, x2, y1] = [...point1, ...point2] // 根据解析出的数据确定真实的范围
|
||||||
|
const xAxisLimit = rangeNumber(1, xAxisMax)
|
||||||
|
const yAxisLimit = rangeNumber(0.1, yAxisMax)
|
||||||
|
x1 = xAxisLimit(x1)
|
||||||
|
x2 = xAxisLimit(x2)
|
||||||
|
y1 = yAxisLimit(y1)
|
||||||
|
y2 = yAxisLimit(y2)
|
||||||
|
this.option.xAxis.min = x1
|
||||||
|
this.option.xAxis.max = x2
|
||||||
|
this.option.yAxis.min = y1
|
||||||
|
this.option.yAxis.max = y2
|
||||||
|
|
||||||
|
this.thumbnailOption.xAxis.min = x1
|
||||||
|
this.thumbnailOption.xAxis.max = x2
|
||||||
|
this.thumbnailOption.yAxis.min = y1
|
||||||
|
this.thumbnailOption.yAxis.max = y2
|
||||||
|
|
||||||
|
if (this.btnGroupType == 2) {
|
||||||
|
this.$nextTick(() => {
|
||||||
|
this.option.graphic = this._channelBaseCPChart.map(({ point: { x, y } }, dataIndex) => {
|
||||||
|
return this.buildGraphicPoint(chart, x, y, dataIndex)
|
||||||
|
})
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
this.clearBrush(chart)
|
||||||
|
},
|
||||||
|
|
||||||
|
handleResetChart() {
|
||||||
|
this.option.xAxis.min = 1
|
||||||
|
this.option.xAxis.max = 'dataMax'
|
||||||
|
this.option.yAxis.min = 0.1
|
||||||
|
this.option.yAxis.max = 'dataMax'
|
||||||
|
|
||||||
|
this.thumbnailOption.xAxis.min = 1
|
||||||
|
this.thumbnailOption.xAxis.max = 'dataMax'
|
||||||
|
this.thumbnailOption.yAxis.min = 0.1
|
||||||
|
this.thumbnailOption.yAxis.max = 'dataMax'
|
||||||
|
|
||||||
|
if (this.btnGroupType == 2) {
|
||||||
|
const chart = this.$refs.chartRef.getChartInstance()
|
||||||
|
this.$nextTick(() => {
|
||||||
|
this.option.graphic = this._channelBaseCPChart.map(({ point: { x, y } }, dataIndex) => {
|
||||||
|
return this.buildGraphicPoint(chart, x, y, dataIndex)
|
||||||
|
})
|
||||||
|
})
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
// 切换操作
|
// 切换操作
|
||||||
handleSwitchOperation() {
|
handleSwitchOperation() {
|
||||||
// 切换到Base Line 和 Control Point 操作
|
// 切换到Base Line 和 Control Point 操作
|
||||||
|
@ -738,29 +1166,153 @@ export default {
|
||||||
this.btnGroupType = 2
|
this.btnGroupType = 2
|
||||||
|
|
||||||
const originalCPSeries = findSeriesByName(this.option.series, 'BaseLine')
|
const originalCPSeries = findSeriesByName(this.option.series, 'BaseLine')
|
||||||
this.option.series.push(
|
|
||||||
this.buildSeriesOption('Edit_BaseLine', originalCPSeries.data, '#fff', {
|
const baseLineEditSeries = this.buildSeriesOption('BaseLine_Edit', cloneDeep(originalCPSeries.data), '#fff', {
|
||||||
zlevel: 21
|
zlevel: 21
|
||||||
})
|
})
|
||||||
)
|
|
||||||
|
this.option.series.push(baseLineEditSeries)
|
||||||
|
|
||||||
|
const chart = this.$refs.chartRef.getChartInstance()
|
||||||
|
|
||||||
|
this.option.graphic = this.channelBaseCPChart.map(({ point: { x, y } }, dataIndex) => {
|
||||||
|
return this.buildGraphicPoint(chart, x, y, dataIndex)
|
||||||
|
})
|
||||||
|
|
||||||
|
this._channelBaseCPChart = cloneDeep(this.channelBaseCPChart)
|
||||||
}
|
}
|
||||||
// 切换回 Peak 操作
|
// 切换回 Peak 操作
|
||||||
else {
|
else {
|
||||||
this.btnGroupType = 1
|
this.btnGroupType = 1
|
||||||
|
this.opts.notMerge = true
|
||||||
this.option.series.splice(this.option.series.length - 1, 1)
|
this.option.series.splice(this.option.series.length - 1, 1)
|
||||||
|
this.option.graphic = []
|
||||||
|
this.$nextTick(() => {
|
||||||
|
this.resetChartOpts()
|
||||||
|
})
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
|
buildGraphicPoint(chart, x, y, dataIndex) {
|
||||||
|
const [xPix, yPix] = chart.convertToPixel('grid', [x, y])
|
||||||
|
return {
|
||||||
|
type: 'rect',
|
||||||
|
position: [xPix, yPix],
|
||||||
|
shape: {
|
||||||
|
x: -4,
|
||||||
|
y: -4,
|
||||||
|
width: 8,
|
||||||
|
height: 8
|
||||||
|
},
|
||||||
|
style: {
|
||||||
|
stroke: 'red',
|
||||||
|
fill: 'transparent',
|
||||||
|
lineWidth: 2
|
||||||
|
},
|
||||||
|
draggable: false,
|
||||||
|
ondrag: function() {
|
||||||
|
const [xPixel] = chart.convertToPixel('grid', [x, y])
|
||||||
|
this.position[0] = xPixel
|
||||||
|
},
|
||||||
|
ondragend: ({ offsetY }) => {
|
||||||
|
this.option.graphic[dataIndex].position = [xPix, offsetY]
|
||||||
|
this.setGraphicDraggable(false)
|
||||||
|
|
||||||
|
const [xAxis, yAxis] = getXAxisAndYAxisByPosition(chart, xPix, offsetY)
|
||||||
|
|
||||||
|
const baseLineEditSeries = findSeriesByName(this.option.series, 'BaseLine_Edit')
|
||||||
|
|
||||||
|
baseLineEditSeries.data[parseInt(xAxis) - 1] = [x, yAxis]
|
||||||
|
|
||||||
|
this._channelBaseCPChart[dataIndex].point.y = yAxis
|
||||||
|
},
|
||||||
|
zlevel: 100
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 设置小方块可拖拽
|
||||||
|
*/
|
||||||
|
setGraphicDraggable(draggable) {
|
||||||
|
this.option.graphic.forEach(item => {
|
||||||
|
item.draggable = draggable
|
||||||
|
})
|
||||||
|
this.isModifying = draggable
|
||||||
|
},
|
||||||
|
|
||||||
// 在当前选中的红线位置新增控制点
|
// 在当前选中的红线位置新增控制点
|
||||||
handleAddCP() {
|
handleAddCP() {
|
||||||
const xAxis = this.option.series[0].markLine.data[0].xAxis
|
const xAxises = this.channelBaseCPChart.map(({ point: { x } }) => x)
|
||||||
|
const min = xAxises[0]
|
||||||
if (xAxis == -1) {
|
const max = xAxises[xAxises.length - 1]
|
||||||
|
if (!this.currChannel || this.currChannel < min || this.currChannel > max) {
|
||||||
this.$message.warn("Can't insert Control Point out of range")
|
this.$message.warn("Can't insert Control Point out of range")
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
console.log('%c [ ]-735', 'font-size:13px; background:pink; color:#bf2c9f;', xAxis)
|
const chart = this.$refs.chartRef.getChartInstance()
|
||||||
|
|
||||||
|
const controlPointList = this.option.graphic
|
||||||
|
const find = controlPointList.find(item => {
|
||||||
|
return item.position[0] == xPix
|
||||||
|
})
|
||||||
|
if (find) {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
let i = 0 // 记录新控制点在列表中的位置
|
||||||
|
const [xPix] = chart.convertToPixel('grid', [this.currChannel, 0])
|
||||||
|
for (; i < controlPointList.length; ++i) {
|
||||||
|
const currCP = controlPointList[i].position[0]
|
||||||
|
if (currCP >= xPix) {
|
||||||
|
if (currCP == xPix) {
|
||||||
|
this.$message.warn(`The new control point in channel ${this.currChannel} exists, can't introduce twice`)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
const baseLineEditSeries = findSeriesByName(this.option.series, 'BaseLine_Edit')
|
||||||
|
|
||||||
|
const yAxis = baseLineEditSeries.data[this.currChannel - 1][1]
|
||||||
|
this.option.graphic.splice(
|
||||||
|
i,
|
||||||
|
0,
|
||||||
|
this.buildGraphicPoint(chart, this.currChannel, yAxis, this.option.graphic.length)
|
||||||
|
)
|
||||||
|
|
||||||
|
this._channelBaseCPChart.splice(i, 0, { point: { x: this.currChannel, y: yAxis } })
|
||||||
|
},
|
||||||
|
|
||||||
|
// 移除控制点
|
||||||
|
handleRemoveCP() {
|
||||||
|
// find nearest control-point
|
||||||
|
const chart = this.$refs.chartRef.getChartInstance()
|
||||||
|
const controlPointList = this.option.graphic
|
||||||
|
let i = 1
|
||||||
|
for (; i < controlPointList.length; ++i) {
|
||||||
|
const [currX, currY] = controlPointList[i].position
|
||||||
|
const [currXAxis] = getXAxisAndYAxisByPosition(chart, currX, currY)
|
||||||
|
if (currXAxis >= this.currChannel) {
|
||||||
|
const [prevX, prevY] = controlPointList[i - 1].position
|
||||||
|
const [prevXAxis] = getXAxisAndYAxisByPosition(chart, prevX, prevY)
|
||||||
|
if (currXAxis - this.currChannel > this.currChannel - prevXAxis) --i
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (i == 0 || i >= controlPointList.length - 1) {
|
||||||
|
this.$message.warn("Can't remove first/last control point")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
controlPointList.splice(i, 1)
|
||||||
|
},
|
||||||
|
|
||||||
|
// 修改控制点
|
||||||
|
handleModifyCP() {
|
||||||
|
this.setGraphicDraggable(true)
|
||||||
},
|
},
|
||||||
|
|
||||||
// 确定对Control Point 的操作
|
// 确定对Control Point 的操作
|
||||||
|
|
|
@ -109,15 +109,11 @@
|
||||||
import { getAction } from '@/api/manage'
|
import { getAction } from '@/api/manage'
|
||||||
import TitleOverBorder from '../TitleOverBorder.vue'
|
import TitleOverBorder from '../TitleOverBorder.vue'
|
||||||
import ModalMixin from '@/mixins/ModalMixin'
|
import ModalMixin from '@/mixins/ModalMixin'
|
||||||
|
import SampleDataMixin from '../../SampleDataMixin'
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
components: { TitleOverBorder },
|
components: { TitleOverBorder },
|
||||||
mixins: [ModalMixin],
|
mixins: [ModalMixin, SampleDataMixin],
|
||||||
props: {
|
|
||||||
sampleId: {
|
|
||||||
type: Number
|
|
||||||
}
|
|
||||||
},
|
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
isLoading: false,
|
isLoading: false,
|
||||||
|
@ -128,8 +124,10 @@ export default {
|
||||||
async getInfo() {
|
async getInfo() {
|
||||||
try {
|
try {
|
||||||
this.isLoading = true
|
this.isLoading = true
|
||||||
|
const { sampleId, inputFileName: fileName } = this.sampleData
|
||||||
const { success, result, message } = await getAction('/gamma/configure', {
|
const { success, result, message } = await getAction('/gamma/configure', {
|
||||||
sampleId: this.sampleId
|
sampleId,
|
||||||
|
fileName
|
||||||
})
|
})
|
||||||
this.isLoading = false
|
this.isLoading = false
|
||||||
if (success) {
|
if (success) {
|
||||||
|
|
|
@ -16,15 +16,13 @@
|
||||||
import ModalMixin from '@/mixins/ModalMixin'
|
import ModalMixin from '@/mixins/ModalMixin'
|
||||||
import { getAction } from '../../../../api/manage'
|
import { getAction } from '../../../../api/manage'
|
||||||
import { saveAs } from 'file-saver';
|
import { saveAs } from 'file-saver';
|
||||||
|
import SampleDataMixin from '../../SampleDataMixin'
|
||||||
export default {
|
export default {
|
||||||
mixins: [ModalMixin],
|
mixins: [ModalMixin, SampleDataMixin],
|
||||||
props: {
|
props: {
|
||||||
type: {
|
type: {
|
||||||
type: Number
|
type: Number
|
||||||
},
|
},
|
||||||
sampleId: {
|
|
||||||
type: Number
|
|
||||||
},
|
|
||||||
extraData: {
|
extraData: {
|
||||||
type: Object,
|
type: Object,
|
||||||
default: () => ({})
|
default: () => ({})
|
||||||
|
@ -40,8 +38,6 @@ export default {
|
||||||
methods: {
|
methods: {
|
||||||
async getContent() {
|
async getContent() {
|
||||||
let url = ''
|
let url = ''
|
||||||
|
|
||||||
console.log('%c [ ]-42', 'font-size:13px; background:pink; color:#bf2c9f;', this.type)
|
|
||||||
switch (this.type) {
|
switch (this.type) {
|
||||||
case 1:
|
case 1:
|
||||||
url = '/gamma/viewARR'
|
url = '/gamma/viewARR'
|
||||||
|
@ -59,7 +55,12 @@ export default {
|
||||||
try {
|
try {
|
||||||
this.content = ''
|
this.content = ''
|
||||||
this.isLoading = true
|
this.isLoading = true
|
||||||
const res = await getAction(url, { sampleId: this.sampleId, ...this.extraData })
|
const { sampleId, inputFileName: fileName } = this.sampleData
|
||||||
|
const res = await getAction(url, {
|
||||||
|
sampleId,
|
||||||
|
fileName,
|
||||||
|
...this.extraData
|
||||||
|
})
|
||||||
if (res.success) {
|
if (res.success) {
|
||||||
this.content = res.result
|
this.content = res.result
|
||||||
} else {
|
} else {
|
||||||
|
@ -73,11 +74,7 @@ export default {
|
||||||
},
|
},
|
||||||
|
|
||||||
beforeModalOpen() {
|
beforeModalOpen() {
|
||||||
|
|
||||||
console.log('%c [ ]-75', 'font-size:13px; background:pink; color:#bf2c9f;', this.sampleId)
|
|
||||||
if (this.sampleId) {
|
|
||||||
this.getContent()
|
this.getContent()
|
||||||
}
|
|
||||||
},
|
},
|
||||||
handleOk() {
|
handleOk() {
|
||||||
this.fileName=""
|
this.fileName=""
|
||||||
|
|
|
@ -22,16 +22,15 @@
|
||||||
import ModalMixin from '@/mixins/ModalMixin'
|
import ModalMixin from '@/mixins/ModalMixin'
|
||||||
import TitleOverBorder from '../../TitleOverBorder.vue'
|
import TitleOverBorder from '../../TitleOverBorder.vue'
|
||||||
import { getAction } from '../../../../../api/manage'
|
import { getAction } from '../../../../../api/manage'
|
||||||
|
import SampleDataMixin from '@/views/spectrumAnalysis/SampleDataMixin'
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
components: { TitleOverBorder },
|
components: { TitleOverBorder },
|
||||||
mixins: [ModalMixin],
|
mixins: [ModalMixin, SampleDataMixin],
|
||||||
props: {
|
props: {
|
||||||
isAdd: {
|
isAdd: {
|
||||||
type: Boolean,
|
type: Boolean,
|
||||||
default: true
|
default: true
|
||||||
},
|
|
||||||
sampleId: {
|
|
||||||
type: Number
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
data() {
|
data() {
|
||||||
|
@ -48,8 +47,10 @@ export default {
|
||||||
async getCommets() {
|
async getCommets() {
|
||||||
try {
|
try {
|
||||||
this.isLoading = true
|
this.isLoading = true
|
||||||
|
const { sampleId, inputFileName: fileName } = this.sampleData
|
||||||
const res = await getAction('/spectrumAnalysis/viewComment', {
|
const res = await getAction('/spectrumAnalysis/viewComment', {
|
||||||
sampleId: this.sampleId
|
sampleId,
|
||||||
|
fileName
|
||||||
})
|
})
|
||||||
if (res.success) {
|
if (res.success) {
|
||||||
this.comments = res.result
|
this.comments = res.result
|
||||||
|
|
|
@ -164,6 +164,7 @@ export default {
|
||||||
// 导出到Excel
|
// 导出到Excel
|
||||||
handleExportToExcel() {
|
handleExportToExcel() {
|
||||||
this.fileName_excel = ""
|
this.fileName_excel = ""
|
||||||
|
const { sampleId, inputFileName: fileName } = this.sampleData
|
||||||
if (this.list.length>0) {
|
if (this.list.length>0) {
|
||||||
let _this = this
|
let _this = this
|
||||||
this.$confirm({
|
this.$confirm({
|
||||||
|
@ -178,10 +179,9 @@ export default {
|
||||||
},
|
},
|
||||||
onCancel() {
|
onCancel() {
|
||||||
if (_this.fileName_excel) {
|
if (_this.fileName_excel) {
|
||||||
_this.visible = false
|
|
||||||
let params = {
|
let params = {
|
||||||
sampleId: _this.sampleData.sampleId||"",
|
sampleId: sampleId || "",
|
||||||
fileName: _this.sampleData.fileName
|
fileName
|
||||||
}
|
}
|
||||||
getFileAction('/spectrumAnalysis/exportQCResult', params).then(res => {
|
getFileAction('/spectrumAnalysis/exportQCResult', params).then(res => {
|
||||||
if (res.code && res.code == 500) {
|
if (res.code && res.code == 500) {
|
||||||
|
|
|
@ -91,6 +91,7 @@ export default {
|
||||||
// 导出到Excel
|
// 导出到Excel
|
||||||
handleExportToExcel() {
|
handleExportToExcel() {
|
||||||
this.fileName_excel = ""
|
this.fileName_excel = ""
|
||||||
|
const { sampleId, inputFileName: fileName } = this.sampleData
|
||||||
if (this.content) {
|
if (this.content) {
|
||||||
let _this = this
|
let _this = this
|
||||||
this.$confirm({
|
this.$confirm({
|
||||||
|
@ -105,10 +106,9 @@ export default {
|
||||||
},
|
},
|
||||||
onCancel() {
|
onCancel() {
|
||||||
if (_this.fileName_excel) {
|
if (_this.fileName_excel) {
|
||||||
_this.visible = false
|
|
||||||
let params = {
|
let params = {
|
||||||
sampleId: _this.sampleData.sampleId||"",
|
sampleId: sampleId || "",
|
||||||
fileName: _this.sampleData.fileName
|
fileName
|
||||||
}
|
}
|
||||||
getFileAction('/spectrumAnalysis/exportSampleInformation', params).then(res => {
|
getFileAction('/spectrumAnalysis/exportSampleInformation', params).then(res => {
|
||||||
if (res.code && res.code == 500) {
|
if (res.code && res.code == 500) {
|
||||||
|
|
|
@ -34,13 +34,9 @@
|
||||||
<script>
|
<script>
|
||||||
import ModalMixin from '@/mixins/ModalMixin'
|
import ModalMixin from '@/mixins/ModalMixin'
|
||||||
import { getAction } from '@/api/manage'
|
import { getAction } from '@/api/manage'
|
||||||
|
import SampleDataMixin from '../../SampleDataMixin'
|
||||||
export default {
|
export default {
|
||||||
mixins: [ModalMixin],
|
mixins: [ModalMixin, SampleDataMixin],
|
||||||
props: {
|
|
||||||
sampleId: {
|
|
||||||
type: Number
|
|
||||||
}
|
|
||||||
},
|
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
list: [],
|
list: [],
|
||||||
|
@ -56,8 +52,10 @@ export default {
|
||||||
async getInfo() {
|
async getInfo() {
|
||||||
try {
|
try {
|
||||||
this.isLoading = true
|
this.isLoading = true
|
||||||
|
const { sampleId, inputFileName: fileName } = this.sampleData
|
||||||
const { success, result, message } = await getAction('/gamma/configUserLibrary', {
|
const { success, result, message } = await getAction('/gamma/configUserLibrary', {
|
||||||
sampleId: this.sampleId
|
sampleId,
|
||||||
|
fileName
|
||||||
})
|
})
|
||||||
if (success) {
|
if (success) {
|
||||||
this.isLoading = false
|
this.isLoading = false
|
||||||
|
|
|
@ -16,14 +16,9 @@
|
||||||
import ModalMixin from '@/mixins/ModalMixin'
|
import ModalMixin from '@/mixins/ModalMixin'
|
||||||
import { getAction } from '@/api/manage'
|
import { getAction } from '@/api/manage'
|
||||||
import { saveAs } from 'file-saver';
|
import { saveAs } from 'file-saver';
|
||||||
import SampleDataMixin from '@/views/spectrumAnalysis/SampleDataMixin'
|
import SampleDataMixin from '../../SampleDataMixin'
|
||||||
export default {
|
export default {
|
||||||
mixins: [ModalMixin, SampleDataMixin],
|
mixins: [ModalMixin, SampleDataMixin],
|
||||||
props: {
|
|
||||||
sampleId: {
|
|
||||||
type: Number
|
|
||||||
}
|
|
||||||
},
|
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
text: "",
|
text: "",
|
||||||
|
@ -37,9 +32,10 @@ export default {
|
||||||
},
|
},
|
||||||
getViewGammaviewerLog() {
|
getViewGammaviewerLog() {
|
||||||
this.isLoading = true
|
this.isLoading = true
|
||||||
|
const { sampleId, inputFileName: fileName } = this.sampleData
|
||||||
let params = {
|
let params = {
|
||||||
sampleId: this.sampleId,
|
sampleId,
|
||||||
fileName: this.sampleData.fileName
|
fileName
|
||||||
}
|
}
|
||||||
getAction("/gamma/viewGammaViewerLog", params).then(res => {
|
getAction("/gamma/viewGammaViewerLog", params).then(res => {
|
||||||
this.isLoading = false
|
this.isLoading = false
|
||||||
|
|
|
@ -22,10 +22,10 @@
|
||||||
}"
|
}"
|
||||||
>
|
>
|
||||||
<a-form-model-item label="Channel">
|
<a-form-model-item label="Channel">
|
||||||
<a-input v-model="model.channel"></a-input>
|
<a-input type="number" v-model="model.channel"></a-input>
|
||||||
</a-form-model-item>
|
</a-form-model-item>
|
||||||
<a-form-model-item label="Energy">
|
<a-form-model-item label="Energy">
|
||||||
<a-input v-model="model.energy"></a-input>
|
<a-input type="number" v-model="model.energy"></a-input>
|
||||||
</a-form-model-item>
|
</a-form-model-item>
|
||||||
<a-form-model-item :label="' '">
|
<a-form-model-item :label="' '">
|
||||||
<a-button type="primary" @click="handleInsert">Insert</a-button>
|
<a-button type="primary" @click="handleInsert">Insert</a-button>
|
||||||
|
@ -105,6 +105,7 @@ import CustomChart from '@/components/CustomChart/index.vue'
|
||||||
import { getAction } from '@/api/manage'
|
import { getAction } from '@/api/manage'
|
||||||
import { cloneDeep } from 'lodash'
|
import { cloneDeep } from 'lodash'
|
||||||
import { buildLineSeries } from '@/utils/chartHelper'
|
import { buildLineSeries } from '@/utils/chartHelper'
|
||||||
|
import SampleDataMixin from '../../SampleDataMixin'
|
||||||
|
|
||||||
const columns = [
|
const columns = [
|
||||||
{
|
{
|
||||||
|
@ -185,12 +186,7 @@ const initialOption = {
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
components: { TitleOverBorder, CustomChart },
|
components: { TitleOverBorder, CustomChart },
|
||||||
mixins: [ModalMixin],
|
mixins: [ModalMixin, SampleDataMixin],
|
||||||
props: {
|
|
||||||
sampleId: {
|
|
||||||
type: Number
|
|
||||||
}
|
|
||||||
},
|
|
||||||
data() {
|
data() {
|
||||||
this.columns = columns
|
this.columns = columns
|
||||||
return {
|
return {
|
||||||
|
@ -209,8 +205,10 @@ export default {
|
||||||
async getData() {
|
async getData() {
|
||||||
try {
|
try {
|
||||||
this.isLoading = true
|
this.isLoading = true
|
||||||
|
const { sampleId, inputFileName: fileName } = this.sampleData
|
||||||
const { success, result, message } = await getAction('/gamma/energyCalibration', {
|
const { success, result, message } = await getAction('/gamma/energyCalibration', {
|
||||||
sampleId: this.sampleId
|
sampleId,
|
||||||
|
fileName
|
||||||
})
|
})
|
||||||
this.isLoading = false
|
this.isLoading = false
|
||||||
if (success) {
|
if (success) {
|
||||||
|
@ -274,7 +272,38 @@ export default {
|
||||||
},
|
},
|
||||||
|
|
||||||
// 插入
|
// 插入
|
||||||
handleInsert() {},
|
handleInsert() {
|
||||||
|
const centroid = parseFloat(this.model.channel)
|
||||||
|
const energy = parseFloat(this.model.energy)
|
||||||
|
|
||||||
|
if (Number.isNaN(centroid) || Number.isNaN(energy)) {
|
||||||
|
this.$message.warn('Format is invalid.')
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
if (centroid <= 100 || centroid >= 16342) {
|
||||||
|
this.$message.warn('Centroid must be in the range of analysis!')
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
let i,
|
||||||
|
num = this.list.length
|
||||||
|
for (i = 0; i < num; ++i) {
|
||||||
|
const channel = this.list[i].channel
|
||||||
|
if (Math.abs(channel - centroid) < 0.01) {
|
||||||
|
this.$message.warn('The centroid has already existed!')
|
||||||
|
return
|
||||||
|
} else if (channel > centroid) {
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
console.log('%c [ 在位置插入 ]-297', 'font-size:13px; background:pink; color:#bf2c9f;', i)
|
||||||
|
this.list.splice(i, 0, {
|
||||||
|
channel: centroid,
|
||||||
|
energy
|
||||||
|
})
|
||||||
|
},
|
||||||
|
|
||||||
// 修改
|
// 修改
|
||||||
handleModify() {},
|
handleModify() {},
|
||||||
|
|
|
@ -48,8 +48,8 @@
|
||||||
<script>
|
<script>
|
||||||
import { getAction, getFileAction } from '@/api/manage'
|
import { getAction, getFileAction } from '@/api/manage'
|
||||||
import ModalMixin from '@/mixins/ModalMixin'
|
import ModalMixin from '@/mixins/ModalMixin'
|
||||||
import SampleDataMixin from '@/views/spectrumAnalysis/SampleDataMixin'
|
|
||||||
import { saveAs } from 'file-saver';
|
import { saveAs } from 'file-saver';
|
||||||
|
import SampleDataMixin from '../../SampleDataMixin'
|
||||||
|
|
||||||
const columns = [
|
const columns = [
|
||||||
{
|
{
|
||||||
|
@ -116,11 +116,6 @@ const columns = [
|
||||||
]
|
]
|
||||||
export default {
|
export default {
|
||||||
mixins: [ModalMixin, SampleDataMixin],
|
mixins: [ModalMixin, SampleDataMixin],
|
||||||
props: {
|
|
||||||
sampleId: {
|
|
||||||
type: Number
|
|
||||||
}
|
|
||||||
},
|
|
||||||
data() {
|
data() {
|
||||||
this.columns = columns
|
this.columns = columns
|
||||||
return {
|
return {
|
||||||
|
@ -145,8 +140,10 @@ export default {
|
||||||
async getInfo() {
|
async getInfo() {
|
||||||
try {
|
try {
|
||||||
this.isLoading = true
|
this.isLoading = true
|
||||||
|
const { sampleId, inputFileName: fileName } = this.sampleData
|
||||||
const { success, result, message } = await getAction('/gamma/radionuclideActivity', {
|
const { success, result, message } = await getAction('/gamma/radionuclideActivity', {
|
||||||
sampleId: this.sampleId
|
sampleId,
|
||||||
|
fileName
|
||||||
})
|
})
|
||||||
if (success) {
|
if (success) {
|
||||||
const { dateTime_act_ref, dateTime_con_ref, table } = result
|
const { dateTime_act_ref, dateTime_con_ref, table } = result
|
||||||
|
@ -171,6 +168,7 @@ export default {
|
||||||
// 导出到Excel
|
// 导出到Excel
|
||||||
handleExportToExcel() {
|
handleExportToExcel() {
|
||||||
this.fileName = ""
|
this.fileName = ""
|
||||||
|
const { sampleId, inputFileName: fileName } = this.sampleData
|
||||||
if (this.list.length > 0) {
|
if (this.list.length > 0) {
|
||||||
let _this = this
|
let _this = this
|
||||||
this.$confirm({
|
this.$confirm({
|
||||||
|
@ -185,12 +183,9 @@ export default {
|
||||||
},
|
},
|
||||||
onCancel() {
|
onCancel() {
|
||||||
if (_this.fileName) {
|
if (_this.fileName) {
|
||||||
_this.visible = false
|
|
||||||
let params = {
|
let params = {
|
||||||
// sampleId: "426530",
|
sampleId,
|
||||||
// fileName: "CAX05_001-20230731_1528_S_FULL_37563.6.PHD"
|
fileName
|
||||||
sampleId: _this.sampleId,
|
|
||||||
fileName: _this.sampleData.fileName
|
|
||||||
}
|
}
|
||||||
getFileAction('/gamma/exportRadionuclideActivity', params).then(res => {
|
getFileAction('/gamma/exportRadionuclideActivity', params).then(res => {
|
||||||
if (res.code && res.code == 500) {
|
if (res.code && res.code == 500) {
|
||||||
|
|
|
@ -48,6 +48,7 @@
|
||||||
:list="daughterList"
|
:list="daughterList"
|
||||||
:pagination="false"
|
:pagination="false"
|
||||||
:scroll="{ y: 123 }"
|
:scroll="{ y: 123 }"
|
||||||
|
rowKey="daughters"
|
||||||
@rowDblClick="handleParentDBClick($event.daughters)"
|
@rowDblClick="handleParentDBClick($event.daughters)"
|
||||||
></custom-table>
|
></custom-table>
|
||||||
</div>
|
</div>
|
||||||
|
@ -113,6 +114,7 @@
|
||||||
import ModalMixin from '@/mixins/ModalMixin'
|
import ModalMixin from '@/mixins/ModalMixin'
|
||||||
import TitleOverBorder from '../TitleOverBorder.vue'
|
import TitleOverBorder from '../TitleOverBorder.vue'
|
||||||
import { getAction } from '@/api/manage'
|
import { getAction } from '@/api/manage'
|
||||||
|
import SampleDataMixin from '../../SampleDataMixin'
|
||||||
|
|
||||||
// 右上角表格配置
|
// 右上角表格配置
|
||||||
const daughterColumns = [
|
const daughterColumns = [
|
||||||
|
@ -178,15 +180,10 @@ const mainColumns = [
|
||||||
]
|
]
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
mixins: [ModalMixin],
|
mixins: [ModalMixin, SampleDataMixin],
|
||||||
components: {
|
components: {
|
||||||
TitleOverBorder
|
TitleOverBorder
|
||||||
},
|
},
|
||||||
props: {
|
|
||||||
sampleId: {
|
|
||||||
type: Number
|
|
||||||
}
|
|
||||||
},
|
|
||||||
data() {
|
data() {
|
||||||
this.daughterColumns = daughterColumns
|
this.daughterColumns = daughterColumns
|
||||||
this.mainColumns = mainColumns
|
this.mainColumns = mainColumns
|
||||||
|
@ -210,8 +207,10 @@ export default {
|
||||||
|
|
||||||
try {
|
try {
|
||||||
this.isLoading = true
|
this.isLoading = true
|
||||||
|
const { sampleId, inputFileName: fileName } = this.sampleData
|
||||||
const { success, result, message } = await getAction('/gamma/NuclideLibrary', {
|
const { success, result, message } = await getAction('/gamma/NuclideLibrary', {
|
||||||
sampleId: this.sampleId,
|
sampleId,
|
||||||
|
fileName,
|
||||||
...this.model
|
...this.model
|
||||||
})
|
})
|
||||||
if (success) {
|
if (success) {
|
||||||
|
|
|
@ -10,9 +10,8 @@
|
||||||
<script>
|
<script>
|
||||||
import { getAction, getFileAction } from '@/api/manage'
|
import { getAction, getFileAction } from '@/api/manage'
|
||||||
import ModalMixin from '@/mixins/ModalMixin'
|
import ModalMixin from '@/mixins/ModalMixin'
|
||||||
import SampleDataMixin from '@/views/spectrumAnalysis/SampleDataMixin'
|
|
||||||
import { saveAs } from 'file-saver';
|
import { saveAs } from 'file-saver';
|
||||||
|
import SampleDataMixin from '../../SampleDataMixin'
|
||||||
const columns = [
|
const columns = [
|
||||||
{
|
{
|
||||||
title: 'Name',
|
title: 'Name',
|
||||||
|
@ -61,11 +60,6 @@ const columns = [
|
||||||
]
|
]
|
||||||
export default {
|
export default {
|
||||||
mixins: [ModalMixin, SampleDataMixin],
|
mixins: [ModalMixin, SampleDataMixin],
|
||||||
props: {
|
|
||||||
sampleId: {
|
|
||||||
type: Number
|
|
||||||
}
|
|
||||||
},
|
|
||||||
data() {
|
data() {
|
||||||
this.columns = columns
|
this.columns = columns
|
||||||
return {
|
return {
|
||||||
|
@ -78,8 +72,10 @@ export default {
|
||||||
async getData() {
|
async getData() {
|
||||||
try {
|
try {
|
||||||
this.isLoading = true
|
this.isLoading = true
|
||||||
|
const { sampleId, inputFileName: fileName } = this.sampleData
|
||||||
const { success, result, message } = await getAction('/gamma/viewQCResult', {
|
const { success, result, message } = await getAction('/gamma/viewQCResult', {
|
||||||
sampleId: this.sampleId
|
sampleId,
|
||||||
|
fileName
|
||||||
})
|
})
|
||||||
if (success) {
|
if (success) {
|
||||||
this.list = result
|
this.list = result
|
||||||
|
@ -99,6 +95,7 @@ export default {
|
||||||
// 导出到Excel
|
// 导出到Excel
|
||||||
handleExportToExcel() {
|
handleExportToExcel() {
|
||||||
this.fileName = ""
|
this.fileName = ""
|
||||||
|
const { sampleId, inputFileName: fileName } = this.sampleData
|
||||||
if (this.list.length > 0) {
|
if (this.list.length > 0) {
|
||||||
let _this = this
|
let _this = this
|
||||||
this.$confirm({
|
this.$confirm({
|
||||||
|
@ -113,12 +110,9 @@ export default {
|
||||||
},
|
},
|
||||||
onCancel() {
|
onCancel() {
|
||||||
if (_this.fileName) {
|
if (_this.fileName) {
|
||||||
_this.visible = false
|
|
||||||
let params = {
|
let params = {
|
||||||
// sampleId: "426530",
|
sampleId,
|
||||||
// fileName: "CAX05_001-20230731_1528_S_FULL_37563.6.PHD"
|
fileName
|
||||||
sampleId: _this.sampleId,
|
|
||||||
fileName: _this.sampleData.fileName
|
|
||||||
}
|
}
|
||||||
getFileAction('/gamma/exportQCResult', params).then(res => {
|
getFileAction('/gamma/exportQCResult', params).then(res => {
|
||||||
if (res.code && res.code == 500) {
|
if (res.code && res.code == 500) {
|
||||||
|
|
|
@ -97,6 +97,7 @@ import Conclusions from './components/Conclusions.vue'
|
||||||
import Comment from './components/Comment.vue'
|
import Comment from './components/Comment.vue'
|
||||||
import { getAction } from '@/api/manage'
|
import { getAction } from '@/api/manage'
|
||||||
import Custom from '@/views/account/settings/Custom.vue'
|
import Custom from '@/views/account/settings/Custom.vue'
|
||||||
|
import SampleDataMixin from '@/views/spectrumAnalysis/SampleDataMixin'
|
||||||
|
|
||||||
const tabs = [
|
const tabs = [
|
||||||
'Header',
|
'Header',
|
||||||
|
@ -118,7 +119,7 @@ const tabs = [
|
||||||
]
|
]
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
mixins: [ModalMixin],
|
mixins: [ModalMixin, SampleDataMixin],
|
||||||
components: {
|
components: {
|
||||||
CHeader,
|
CHeader,
|
||||||
Objective,
|
Objective,
|
||||||
|
@ -138,11 +139,6 @@ export default {
|
||||||
Comment,
|
Comment,
|
||||||
Custom
|
Custom
|
||||||
},
|
},
|
||||||
props: {
|
|
||||||
sampleId: {
|
|
||||||
type: Number
|
|
||||||
}
|
|
||||||
},
|
|
||||||
data() {
|
data() {
|
||||||
this.tabs = tabs
|
this.tabs = tabs
|
||||||
return {
|
return {
|
||||||
|
@ -181,8 +177,10 @@ export default {
|
||||||
},
|
},
|
||||||
getGammaViewRLR() {
|
getGammaViewRLR() {
|
||||||
this.isLoading = true
|
this.isLoading = true
|
||||||
|
const { sampleId, inputFileName: fileName } = this.sampleData
|
||||||
let params = {
|
let params = {
|
||||||
sampleId: this.sampleId
|
sampleId,
|
||||||
|
fileName
|
||||||
}
|
}
|
||||||
getAction("/gamma/viewRLR", params).then(res => {
|
getAction("/gamma/viewRLR", params).then(res => {
|
||||||
this.isLoading = false
|
this.isLoading = false
|
||||||
|
|
|
@ -6,7 +6,7 @@
|
||||||
<a-row>
|
<a-row>
|
||||||
<a-col :span="12" v-for="(item, index) in columns" :key="index">
|
<a-col :span="12" v-for="(item, index) in columns" :key="index">
|
||||||
<a-form-model-item :label="item.title">
|
<a-form-model-item :label="item.title">
|
||||||
{{ item.key == 'sampleId' && !isLoading ? sampleId : data[item.key] }}
|
{{ data[item.key] }}
|
||||||
</a-form-model-item>
|
</a-form-model-item>
|
||||||
</a-col>
|
</a-col>
|
||||||
</a-row>
|
</a-row>
|
||||||
|
@ -25,8 +25,8 @@
|
||||||
<script>
|
<script>
|
||||||
import { getAction, getFileAction } from '@/api/manage'
|
import { getAction, getFileAction } from '@/api/manage'
|
||||||
import ModalMixin from '@/mixins/ModalMixin'
|
import ModalMixin from '@/mixins/ModalMixin'
|
||||||
import SampleDataMixin from '@/views/spectrumAnalysis/SampleDataMixin'
|
|
||||||
import { saveAs } from 'file-saver';
|
import { saveAs } from 'file-saver';
|
||||||
|
import SampleDataMixin from '../../SampleDataMixin'
|
||||||
|
|
||||||
const columns = [
|
const columns = [
|
||||||
{
|
{
|
||||||
|
@ -89,11 +89,6 @@ const columns = [
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
mixins: [ModalMixin, SampleDataMixin],
|
mixins: [ModalMixin, SampleDataMixin],
|
||||||
props: {
|
|
||||||
sampleId: {
|
|
||||||
type: Number
|
|
||||||
}
|
|
||||||
},
|
|
||||||
data() {
|
data() {
|
||||||
this.columns = columns
|
this.columns = columns
|
||||||
return {
|
return {
|
||||||
|
@ -106,10 +101,13 @@ export default {
|
||||||
async getInfo() {
|
async getInfo() {
|
||||||
try {
|
try {
|
||||||
this.isLoading = true
|
this.isLoading = true
|
||||||
|
const { sampleId, inputFileName: fileName } = this.sampleData
|
||||||
const { success, result, message } = await getAction('/gamma/sampleInformation', {
|
const { success, result, message } = await getAction('/gamma/sampleInformation', {
|
||||||
sampleId: this.sampleId
|
sampleId,
|
||||||
|
fileName
|
||||||
})
|
})
|
||||||
if (success) {
|
if (success) {
|
||||||
|
result.sampleId = sampleId
|
||||||
this.data = result
|
this.data = result
|
||||||
} else {
|
} else {
|
||||||
this.$message.error(message)
|
this.$message.error(message)
|
||||||
|
@ -128,6 +126,7 @@ export default {
|
||||||
// 导出到Excel
|
// 导出到Excel
|
||||||
handleExportToExcel() {
|
handleExportToExcel() {
|
||||||
this.fileName = ""
|
this.fileName = ""
|
||||||
|
const { sampleId, inputFileName: fileName } = this.sampleData
|
||||||
if (Object.keys(this.data).length > 0) {
|
if (Object.keys(this.data).length > 0) {
|
||||||
let _this = this
|
let _this = this
|
||||||
this.$confirm({
|
this.$confirm({
|
||||||
|
@ -142,12 +141,9 @@ export default {
|
||||||
},
|
},
|
||||||
onCancel() {
|
onCancel() {
|
||||||
if (_this.fileName) {
|
if (_this.fileName) {
|
||||||
_this.visible = false
|
|
||||||
let params = {
|
let params = {
|
||||||
// sampleId: "426530",
|
sampleId,
|
||||||
// fileName: "CAX05_001-20230731_1528_S_FULL_37563.6.PHD"
|
fileName
|
||||||
sampleId: this.sampleId,
|
|
||||||
fileName: this.sampleData.fileName
|
|
||||||
}
|
}
|
||||||
getFileAction('/gamma/exportSampleInformation', params).then(res => {
|
getFileAction('/gamma/exportSampleInformation', params).then(res => {
|
||||||
if (res.code && res.code == 500) {
|
if (res.code && res.code == 500) {
|
||||||
|
|
|
@ -9,15 +9,14 @@
|
||||||
<script>
|
<script>
|
||||||
import { getAction } from '@/api/manage'
|
import { getAction } from '@/api/manage'
|
||||||
import ModalMixin from '@/mixins/ModalMixin'
|
import ModalMixin from '@/mixins/ModalMixin'
|
||||||
|
import SampleDataMixin from '../../SampleDataMixin'
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
mixins: [ModalMixin],
|
mixins: [ModalMixin, SampleDataMixin],
|
||||||
props: {
|
props: {
|
||||||
isAdd: {
|
isAdd: {
|
||||||
type: Boolean,
|
type: Boolean,
|
||||||
default: true
|
default: true
|
||||||
},
|
|
||||||
sampleId: {
|
|
||||||
type: Number
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
data() {
|
data() {
|
||||||
|
@ -39,8 +38,10 @@ export default {
|
||||||
async getInfo() {
|
async getInfo() {
|
||||||
try {
|
try {
|
||||||
this.isLoading = true
|
this.isLoading = true
|
||||||
|
const { sampleId, inputFileName: fileName } = this.sampleData
|
||||||
const { success, result, message } = await getAction('/gamma/viewComment', {
|
const { success, result, message } = await getAction('/gamma/viewComment', {
|
||||||
sampleId: this.sampleId
|
sampleId,
|
||||||
|
fileName
|
||||||
})
|
})
|
||||||
this.isLoading = false
|
this.isLoading = false
|
||||||
if (success) {
|
if (success) {
|
||||||
|
|
|
@ -11,13 +11,9 @@
|
||||||
<script>
|
<script>
|
||||||
import ModalMixin from '@/mixins/ModalMixin'
|
import ModalMixin from '@/mixins/ModalMixin'
|
||||||
import { getAction } from '@/api/manage'
|
import { getAction } from '@/api/manage'
|
||||||
|
import SampleDataMixin from '../../SampleDataMixin'
|
||||||
export default {
|
export default {
|
||||||
mixins: [ModalMixin],
|
mixins: [ModalMixin, SampleDataMixin],
|
||||||
props: {
|
|
||||||
sampleId: {
|
|
||||||
type: Number
|
|
||||||
}
|
|
||||||
},
|
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
content: '',
|
content: '',
|
||||||
|
@ -28,8 +24,10 @@ export default {
|
||||||
async getContent() {
|
async getContent() {
|
||||||
try {
|
try {
|
||||||
this.isLoading = true
|
this.isLoading = true
|
||||||
|
const { sampleId, inputFileName: fileName } = this.sampleData
|
||||||
const { success, result, message } = await getAction('/gamma/Spectrum', {
|
const { success, result, message } = await getAction('/gamma/Spectrum', {
|
||||||
sampleId: this.sampleId
|
sampleId,
|
||||||
|
fileName
|
||||||
})
|
})
|
||||||
if (success) {
|
if (success) {
|
||||||
this.content = result
|
this.content = result
|
||||||
|
|
|
@ -42,7 +42,7 @@
|
||||||
</title-over-border>
|
</title-over-border>
|
||||||
<!-- Result of Zero Time -->
|
<!-- Result of Zero Time -->
|
||||||
<title-over-border class="mt-20" title="Result of Zero Time">
|
<title-over-border class="mt-20" title="Result of Zero Time">
|
||||||
<div class="result-of-zero-time">{{ dateTime }}</div>
|
<div class="result-of-zero-time">{{ result.zeroTime }}</div>
|
||||||
</title-over-border>
|
</title-over-border>
|
||||||
</div>
|
</div>
|
||||||
<!-- 左侧结束 -->
|
<!-- 左侧结束 -->
|
||||||
|
@ -106,7 +106,7 @@
|
||||||
Analysis
|
Analysis
|
||||||
</a-button>
|
</a-button>
|
||||||
<a-button type="primary">Save</a-button>
|
<a-button type="primary">Save</a-button>
|
||||||
<a-button type="primary">Exit</a-button>
|
<a-button type="primary" @click="visible = false">Exit</a-button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<!-- 右侧结束 -->
|
<!-- 右侧结束 -->
|
||||||
|
@ -134,10 +134,11 @@ export default {
|
||||||
fissionProductList1: [],
|
fissionProductList1: [],
|
||||||
fissionProductList2: [],
|
fissionProductList2: [],
|
||||||
|
|
||||||
dateTime: '',
|
|
||||||
model: {},
|
model: {},
|
||||||
|
|
||||||
isAnalyzing: false
|
isAnalyzing: false,
|
||||||
|
|
||||||
|
result: { }
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
|
@ -184,7 +185,9 @@ export default {
|
||||||
time: undefined
|
time: undefined
|
||||||
}
|
}
|
||||||
|
|
||||||
this.dateTime = '2015-05-30 17:30:60'
|
this.result = {
|
||||||
|
zeroTime: '2015-05-30 17:30:60'
|
||||||
|
}
|
||||||
this.getInfo()
|
this.getInfo()
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -199,7 +202,7 @@ export default {
|
||||||
this.isAnalyzing = true
|
this.isAnalyzing = true
|
||||||
const { success, result, message } = await getAction('/gamma/ZeroTimeAnalyse', this.model)
|
const { success, result, message } = await getAction('/gamma/ZeroTimeAnalyse', this.model)
|
||||||
if (success) {
|
if (success) {
|
||||||
this.dateTime = result
|
this.result = result
|
||||||
} else {
|
} else {
|
||||||
this.$message.error(message)
|
this.$message.error(message)
|
||||||
}
|
}
|
||||||
|
@ -319,7 +322,7 @@ export default {
|
||||||
justify-content: space-between;
|
justify-content: space-between;
|
||||||
|
|
||||||
.ant-btn {
|
.ant-btn {
|
||||||
padding: 0 45px;
|
width: 150px;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -31,9 +31,9 @@
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
import ModalMixin from '@/mixins/ModalMixin'
|
import ModalMixin from '@/mixins/ModalMixin'
|
||||||
import SampleDataMixin from '@/views/spectrumAnalysis/SampleDataMixin'
|
|
||||||
import { getAction, getFileAction } from '@/api/manage'
|
import { getAction, getFileAction } from '@/api/manage'
|
||||||
import { saveAs } from 'file-saver';
|
import { saveAs } from 'file-saver';
|
||||||
|
import SampleDataMixin from '../SampleDataMixin'
|
||||||
|
|
||||||
const columns = [
|
const columns = [
|
||||||
{
|
{
|
||||||
|
@ -83,11 +83,6 @@ const columns = [
|
||||||
]
|
]
|
||||||
export default {
|
export default {
|
||||||
mixins: [ModalMixin, SampleDataMixin],
|
mixins: [ModalMixin, SampleDataMixin],
|
||||||
props: {
|
|
||||||
sampleId: {
|
|
||||||
type: Number
|
|
||||||
}
|
|
||||||
},
|
|
||||||
data() {
|
data() {
|
||||||
this.columns = columns
|
this.columns = columns
|
||||||
return {
|
return {
|
||||||
|
@ -107,8 +102,10 @@ export default {
|
||||||
async getInfo() {
|
async getInfo() {
|
||||||
try {
|
try {
|
||||||
this.isLoading = true
|
this.isLoading = true
|
||||||
|
const { sampleId, inputFileName: fileName } = this.sampleData
|
||||||
const { success, result, message } = await getAction('/gamma/peakInformation', {
|
const { success, result, message } = await getAction('/gamma/peakInformation', {
|
||||||
sampleId: this.sampleId
|
sampleId,
|
||||||
|
fileName
|
||||||
})
|
})
|
||||||
if (success) {
|
if (success) {
|
||||||
this.list = result
|
this.list = result
|
||||||
|
@ -130,6 +127,7 @@ export default {
|
||||||
// 导出到Excel
|
// 导出到Excel
|
||||||
handleExportToExcel() {
|
handleExportToExcel() {
|
||||||
this.fileName = ""
|
this.fileName = ""
|
||||||
|
const { sampleId, inputFileName: fileName } = this.sampleData
|
||||||
if (this.list.length > 0) {
|
if (this.list.length > 0) {
|
||||||
let _this = this
|
let _this = this
|
||||||
this.$confirm({
|
this.$confirm({
|
||||||
|
@ -144,12 +142,9 @@ export default {
|
||||||
},
|
},
|
||||||
onCancel() {
|
onCancel() {
|
||||||
if (_this.fileName) {
|
if (_this.fileName) {
|
||||||
_this.visible = false
|
|
||||||
let params = {
|
let params = {
|
||||||
// sampleId: "426530",
|
sampleId,
|
||||||
// fileName: "CAX05_001-20230731_1528_S_FULL_37563.6.PHD"
|
fileName
|
||||||
sampleId: _this.sampleId,
|
|
||||||
fileName: _this.sampleData.fileName
|
|
||||||
}
|
}
|
||||||
getFileAction('/gamma/exportPeakInformation', params).then(res => {
|
getFileAction('/gamma/exportPeakInformation', params).then(res => {
|
||||||
if (res.code && res.code == 500) {
|
if (res.code && res.code == 500) {
|
||||||
|
|
|
@ -70,7 +70,7 @@ import NuclearLibrary from './components/SubOperators/NuclearLibrary.vue'
|
||||||
import ButtonWithSwitchIcon from './components/SubOperators/ButtonWithSwitchIcon.vue'
|
import ButtonWithSwitchIcon from './components/SubOperators/ButtonWithSwitchIcon.vue'
|
||||||
import { getAction } from '@/api/manage'
|
import { getAction } from '@/api/manage'
|
||||||
import Response from './response.json'
|
import Response from './response.json'
|
||||||
import { getXAxisAndYAxisByPosition } from '@/utils/chartHelper'
|
import { getXAxisAndYAxisByPosition, rangeNumber } from '@/utils/chartHelper'
|
||||||
import { cloneDeep } from 'lodash'
|
import { cloneDeep } from 'lodash'
|
||||||
|
|
||||||
// 初始配置
|
// 初始配置
|
||||||
|
@ -166,7 +166,7 @@ const initialOption = {
|
||||||
max: 'dataMax',
|
max: 'dataMax',
|
||||||
animation: false,
|
animation: false,
|
||||||
axisLabel: {
|
axisLabel: {
|
||||||
formatter: (value) => {
|
formatter: value => {
|
||||||
return value.toFixed(1)
|
return value.toFixed(1)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -209,7 +209,7 @@ const thumbnailOption = {
|
||||||
show: false
|
show: false
|
||||||
},
|
},
|
||||||
min: 1,
|
min: 1,
|
||||||
max: 'dataMax',
|
max: 'dataMax'
|
||||||
},
|
},
|
||||||
series: []
|
series: []
|
||||||
}
|
}
|
||||||
|
@ -326,7 +326,9 @@ export default {
|
||||||
this.shapeEnergyData = shapeEnergyData
|
this.shapeEnergyData = shapeEnergyData
|
||||||
|
|
||||||
this.option.yAxis.max = Math.ceil(Math.max(...shadowChannelChart.pointlist.map(item => item.y)) * 1.1)
|
this.option.yAxis.max = Math.ceil(Math.max(...shadowChannelChart.pointlist.map(item => item.y)) * 1.1)
|
||||||
this.thumbnailOption.yAxis.max = Math.ceil(Math.max(...shadowChannelChart.pointlist.map(item => item.y)) * 1.1)
|
this.thumbnailOption.yAxis.max = Math.ceil(
|
||||||
|
Math.max(...shadowChannelChart.pointlist.map(item => item.y)) * 1.1
|
||||||
|
)
|
||||||
|
|
||||||
const series = []
|
const series = []
|
||||||
|
|
||||||
|
@ -766,8 +768,8 @@ export default {
|
||||||
|
|
||||||
let [x1, y2, x2, y1] = [...point1, ...point2] // 根据解析出的数据确定真实的范围
|
let [x1, y2, x2, y1] = [...point1, ...point2] // 根据解析出的数据确定真实的范围
|
||||||
|
|
||||||
const xAxisLimit = this.rangeNumber(1, xAxisMax)
|
const xAxisLimit = rangeNumber(1, xAxisMax)
|
||||||
const yAxisLimit = this.rangeNumber(1, yAxisMax)
|
const yAxisLimit = rangeNumber(1, yAxisMax)
|
||||||
|
|
||||||
x1 = xAxisLimit(x1)
|
x1 = xAxisLimit(x1)
|
||||||
x2 = xAxisLimit(x2)
|
x2 = xAxisLimit(x2)
|
||||||
|
@ -844,17 +846,16 @@ export default {
|
||||||
|
|
||||||
const xAxisMax = thumbnailChart.getModel().getComponent('xAxis').axis.scale._extent[1]
|
const xAxisMax = thumbnailChart.getModel().getComponent('xAxis').axis.scale._extent[1]
|
||||||
|
|
||||||
const xAxisLimit = this.rangeNumber(1 + halfWidth, xAxisMax - halfWidth)
|
const xAxisLimit = rangeNumber(1 + halfWidth, xAxisMax - halfWidth)
|
||||||
|
|
||||||
const halfHeightPixel = this.halfHeightPixel
|
const halfHeightPixel = this.halfHeightPixel
|
||||||
const yAxisLimit = this.rangeNumber(maxYAxisPixel + halfHeightPixel, minYAxisPixel - halfHeightPixel)
|
const yAxisLimit = rangeNumber(maxYAxisPixel + halfHeightPixel, minYAxisPixel - halfHeightPixel)
|
||||||
|
|
||||||
xAxis = xAxisLimit(xAxis)
|
xAxis = xAxisLimit(xAxis)
|
||||||
|
|
||||||
let [, yAxisPixel] = thumbnailChart.convertToPixel({ seriesIndex: 0 }, [0, yAxis])
|
let [, yAxisPixel] = thumbnailChart.convertToPixel({ seriesIndex: 0 }, [0, yAxis])
|
||||||
yAxisPixel = yAxisLimit(yAxisPixel)
|
yAxisPixel = yAxisLimit(yAxisPixel)
|
||||||
|
|
||||||
|
|
||||||
const minYAxis = thumbnailChart.convertFromPixel({ seriesIndex: 0 }, [0, yAxisPixel + halfHeightPixel])[1] // 再把y轴最小值从pix转为yAxis
|
const minYAxis = thumbnailChart.convertFromPixel({ seriesIndex: 0 }, [0, yAxisPixel + halfHeightPixel])[1] // 再把y轴最小值从pix转为yAxis
|
||||||
const maxYAxis = thumbnailChart.convertFromPixel({ seriesIndex: 0 }, [0, yAxisPixel - halfHeightPixel])[1]
|
const maxYAxis = thumbnailChart.convertFromPixel({ seriesIndex: 0 }, [0, yAxisPixel - halfHeightPixel])[1]
|
||||||
|
|
||||||
|
@ -887,6 +888,61 @@ export default {
|
||||||
this.thumbnailChartRect = []
|
this.thumbnailChartRect = []
|
||||||
},
|
},
|
||||||
|
|
||||||
|
// 从分析工具刷新部分数据
|
||||||
|
refresh(data) {
|
||||||
|
console.log('%c [ data ]-892', 'font-size:13px; background:pink; color:#bf2c9f;', data)
|
||||||
|
const { allData, shadowChannelChart, shadowEnergyChart, shapeChannelData, shapeEnergyData } = data
|
||||||
|
|
||||||
|
const channelPeakGroup = allData.filter(item => item.name == 'Peak' && item.group == 'channel')
|
||||||
|
const energyPeakGroup = allData.filter(item => item.name == 'Peak' && item.group == 'energy')
|
||||||
|
|
||||||
|
const channelBaseLine = allData.find(item => item.name == 'BaseLine' && item.group == 'channel')
|
||||||
|
const energyBaseLine = allData.find(item => item.name == 'BaseLine' && item.group == 'energy')
|
||||||
|
|
||||||
|
const channelLcLine = allData.find(item => item.name == 'Lc' && item.group == 'channel')
|
||||||
|
const energyLcLine = allData.find(item => item.name == 'Lc' && item.group == 'energy')
|
||||||
|
|
||||||
|
const channelScacLine = allData.find(item => item.name == 'Scac' && item.group == 'channel')
|
||||||
|
const energyScacLine = allData.find(item => item.name == 'Scac' && item.group == 'energy')
|
||||||
|
|
||||||
|
this.allEnergy = allData.find(item => item.name == 'Energy' && item.group == 'energy')
|
||||||
|
this.allChannel = allData.find(item => item.name == 'Count' && item.group == 'channel')
|
||||||
|
|
||||||
|
// 保存Peak Line
|
||||||
|
this.channelPeakGroup = channelPeakGroup
|
||||||
|
this.energyPeakGroup = energyPeakGroup
|
||||||
|
|
||||||
|
// 保存 Spectrum Line
|
||||||
|
this.shadowChannelChart = shadowChannelChart
|
||||||
|
this.shadowEnergyChart = shadowEnergyChart
|
||||||
|
|
||||||
|
// 保存基线
|
||||||
|
this.channelBaseLine = channelBaseLine
|
||||||
|
this.energyBaseLine = energyBaseLine
|
||||||
|
|
||||||
|
// 保存Lc
|
||||||
|
this.channelLcLine = channelLcLine
|
||||||
|
this.energyLcLine = energyLcLine
|
||||||
|
|
||||||
|
// 保存Scac
|
||||||
|
this.channelScacLine = channelScacLine
|
||||||
|
this.energyScacLine = energyScacLine
|
||||||
|
|
||||||
|
// 保存 基线控制点
|
||||||
|
this.shapeChannelData = shapeChannelData
|
||||||
|
this.shapeEnergyData = shapeEnergyData
|
||||||
|
|
||||||
|
this.redrawPeakLine()
|
||||||
|
this.redrawCtrlPointBySeriesName()
|
||||||
|
|
||||||
|
this.redrawLineBySeriesName('BaseLine', this.energyBaseLine, this.channelBaseLine, this.graphAssistance.Baseline)
|
||||||
|
this.redrawLineBySeriesName('LcLine', this.energyLcLine, this.channelLcLine, this.graphAssistance.Lc)
|
||||||
|
this.redrawLineBySeriesName('ScacLine', this.energyScacLine, this.channelScacLine, this.graphAssistance.SCAC)
|
||||||
|
this.redrawLineBySeriesName('Spectrum', this.shadowEnergyChart, this.shadowChannelChart)
|
||||||
|
|
||||||
|
this.redrawThumbnailChart()
|
||||||
|
},
|
||||||
|
|
||||||
// 根据name查找series
|
// 根据name查找series
|
||||||
findSeriesByName(seriesName) {
|
findSeriesByName(seriesName) {
|
||||||
return this.option.series.find(item => item.name == seriesName)
|
return this.option.series.find(item => item.name == seriesName)
|
||||||
|
@ -908,17 +964,6 @@ export default {
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
|
||||||
/**
|
|
||||||
* 限定数字在一定范围
|
|
||||||
* @param {Number} min
|
|
||||||
* @param {Number} max
|
|
||||||
*/
|
|
||||||
rangeNumber(min, max) {
|
|
||||||
return num => {
|
|
||||||
return num > max ? max : num < min ? min : num
|
|
||||||
}
|
|
||||||
},
|
|
||||||
|
|
||||||
getChannelByEnergy(energy) {
|
getChannelByEnergy(energy) {
|
||||||
let channel = 0
|
let channel = 0
|
||||||
for (let index = 1; index < this.allEnergy.pointlist.length; index++) {
|
for (let index = 1; index < this.allEnergy.pointlist.length; index++) {
|
||||||
|
|
|
@ -60,11 +60,11 @@
|
||||||
<!-- Ftransit 弹窗结束 -->
|
<!-- Ftransit 弹窗结束 -->
|
||||||
|
|
||||||
<!-- Peak Infomation 弹窗开始 -->
|
<!-- Peak Infomation 弹窗开始 -->
|
||||||
<peak-infomation v-model="peakInfomationModalVisible" :sampleId="sampleData.sampleId" />
|
<peak-infomation v-model="peakInfomationModalVisible" />
|
||||||
<!-- Peak Infomation 弹窗结束 -->
|
<!-- Peak Infomation 弹窗结束 -->
|
||||||
|
|
||||||
<!-- Nuclide Activity and MDC 弹窗开始 -->
|
<!-- Nuclide Activity and MDC 弹窗开始 -->
|
||||||
<nuclide-activity-and-mdc-modal v-model="nuclideActivityAndMDCModalVisible" :sampleId="sampleData.sampleId" />
|
<nuclide-activity-and-mdc-modal v-model="nuclideActivityAndMDCModalVisible" />
|
||||||
<!-- Nuclide Activity and MDC 弹窗结束 -->
|
<!-- Nuclide Activity and MDC 弹窗结束 -->
|
||||||
|
|
||||||
<!-- Save Setting 弹窗开始 -->
|
<!-- Save Setting 弹窗开始 -->
|
||||||
|
@ -76,7 +76,7 @@
|
||||||
<!-- 分析-设置弹窗结束 -->
|
<!-- 分析-设置弹窗结束 -->
|
||||||
|
|
||||||
<!-- 分析工具弹窗开始 -->
|
<!-- 分析工具弹窗开始 -->
|
||||||
<analyze-interactive-tool-modal v-model="analyzeInteractiveToolModalVisible" :sampleId="sampleData.sampleId" />
|
<analyze-interactive-tool-modal v-model="analyzeInteractiveToolModalVisible" :sampleId="sampleData.sampleId" @refresh="handleRefreshGamma" />
|
||||||
<!-- 分析工具弹窗结束 -->
|
<!-- 分析工具弹窗结束 -->
|
||||||
|
|
||||||
<!-- Korsum 弹窗开始 -->
|
<!-- Korsum 弹窗开始 -->
|
||||||
|
@ -96,7 +96,7 @@
|
||||||
<!-- Efficiency Calibration 弹窗结束 -->
|
<!-- Efficiency Calibration 弹窗结束 -->
|
||||||
|
|
||||||
<!-- Energy Calibration 弹窗开始 -->
|
<!-- Energy Calibration 弹窗开始 -->
|
||||||
<energy-calibration-modal v-model="energyCalibrationModalShow" :sampleId="sampleData.sampleId" />
|
<energy-calibration-modal v-model="energyCalibrationModalShow" />
|
||||||
<!-- Energy Calibration 弹窗结束 -->
|
<!-- Energy Calibration 弹窗结束 -->
|
||||||
|
|
||||||
<!-- Resolution Calibration 弹窗开始 -->
|
<!-- Resolution Calibration 弹窗开始 -->
|
||||||
|
@ -107,7 +107,6 @@
|
||||||
<spectrum-comments-modal
|
<spectrum-comments-modal
|
||||||
v-model="gammaCommentsModalVisible"
|
v-model="gammaCommentsModalVisible"
|
||||||
:isAdd="isGammaCommentsAdd"
|
:isAdd="isGammaCommentsAdd"
|
||||||
:sampleId="sampleData.sampleId"
|
|
||||||
/>
|
/>
|
||||||
<!-- SpectrumComments 弹窗结束 -->
|
<!-- SpectrumComments 弹窗结束 -->
|
||||||
|
|
||||||
|
@ -120,36 +119,35 @@
|
||||||
<!-- Data Processing Log 弹窗结束 -->
|
<!-- Data Processing Log 弹窗结束 -->
|
||||||
|
|
||||||
<!-- Config User Library 弹窗开始 -->
|
<!-- Config User Library 弹窗开始 -->
|
||||||
<config-user-library-modal v-model="configUserLibModalVisible" :sampleId="sampleData.sampleId" />
|
<config-user-library-modal v-model="configUserLibModalVisible" />
|
||||||
<!-- Config User Library 弹窗结束 -->
|
<!-- Config User Library 弹窗结束 -->
|
||||||
|
|
||||||
<!-- Nuclide Library 弹窗开始 -->
|
<!-- Nuclide Library 弹窗开始 -->
|
||||||
<nuclide-library-modal v-model="nuclideLibraryModalVisible" :sampleId="sampleData.sampleId" />
|
<nuclide-library-modal v-model="nuclideLibraryModalVisible" />
|
||||||
<!-- Nuclide Library 弹窗结束 -->
|
<!-- Nuclide Library 弹窗结束 -->
|
||||||
|
|
||||||
<!-- Arr 和 RRR 弹窗开始 -->
|
<!-- Arr 和 RRR 弹窗开始 -->
|
||||||
<arr-rrr-modal
|
<arr-rrr-modal
|
||||||
v-model="arrOrRRRModalVisible"
|
v-model="arrOrRRRModalVisible"
|
||||||
:type="arrOrRRRModalType"
|
:type="arrOrRRRModalType"
|
||||||
:sampleId="this.sampleData.sampleId"
|
|
||||||
:extraData="this.arrOrRRRModalExtraData"
|
:extraData="this.arrOrRRRModalExtraData"
|
||||||
/>
|
/>
|
||||||
<!-- Arr 弹窗结束 -->
|
<!-- Arr 弹窗结束 -->
|
||||||
|
|
||||||
<!-- Spectrum 弹窗开始 -->
|
<!-- Spectrum 弹窗开始 -->
|
||||||
<spectrum-modal v-model="spectrumModalVisible" :sampleId="this.sampleData.sampleId" />
|
<spectrum-modal v-model="spectrumModalVisible" />
|
||||||
<!-- Spectrum 弹窗结束 -->
|
<!-- Spectrum 弹窗结束 -->
|
||||||
|
|
||||||
<!-- SampleInfo 弹窗开始 -->
|
<!-- SampleInfo 弹窗开始 -->
|
||||||
<sample-infomation-modal v-model="sampleInfomationModalVisible" :sampleId="sampleData.sampleId" />
|
<sample-infomation-modal v-model="sampleInfomationModalVisible" />
|
||||||
<!-- SampleInfo 弹窗结束 -->
|
<!-- SampleInfo 弹窗结束 -->
|
||||||
|
|
||||||
<!-- Qc Results 弹窗开始 -->
|
<!-- Qc Results 弹窗开始 -->
|
||||||
<qc-results-modal v-model="qcResultsModalVisible" :sampleId="sampleData.sampleId" />
|
<qc-results-modal v-model="qcResultsModalVisible" />
|
||||||
<!-- Qc Results 弹窗结束 -->
|
<!-- Qc Results 弹窗结束 -->
|
||||||
|
|
||||||
<!-- RLR 弹窗开始 -->
|
<!-- RLR 弹窗开始 -->
|
||||||
<rlr-modal v-model="rlrModalVisible" :sampleId="sampleData.sampleId" />
|
<rlr-modal v-model="rlrModalVisible" />
|
||||||
<!-- RLR 弹窗结束 -->
|
<!-- RLR 弹窗结束 -->
|
||||||
|
|
||||||
<automatic-analysis-log-modal v-model="autoAnalysisMogModalVisible" :type="autoAnalysisMogModalType" />
|
<automatic-analysis-log-modal v-model="autoAnalysisMogModalVisible" :type="autoAnalysisMogModalType" />
|
||||||
|
@ -158,7 +156,6 @@
|
||||||
<beta-gamma-comments-modal
|
<beta-gamma-comments-modal
|
||||||
v-model="betaGammaCommentsModalVisible"
|
v-model="betaGammaCommentsModalVisible"
|
||||||
:isAdd="isBetaGammaCommentsAdd"
|
:isAdd="isBetaGammaCommentsAdd"
|
||||||
:sampleId="this.sampleData.sampleId"
|
|
||||||
/>
|
/>
|
||||||
<!-- Beta-Gamma 的Comments 结束 -->
|
<!-- Beta-Gamma 的Comments 结束 -->
|
||||||
|
|
||||||
|
@ -483,6 +480,11 @@ export default {
|
||||||
this.$refs.betaGammaAnalysisRef && this.$refs.betaGammaAnalysisRef.resize()
|
this.$refs.betaGammaAnalysisRef && this.$refs.betaGammaAnalysisRef.resize()
|
||||||
},
|
},
|
||||||
|
|
||||||
|
// 从分析工具刷新gamma图表
|
||||||
|
handleRefreshGamma(data) {
|
||||||
|
this.$refs.gammaAnalysisRef.refresh(data)
|
||||||
|
},
|
||||||
|
|
||||||
// Beta-Gamma Energy Calibration 的重新分析
|
// Beta-Gamma Energy Calibration 的重新分析
|
||||||
handleReanalyse(...data) {
|
handleReanalyse(...data) {
|
||||||
this.$refs.betaGammaAnalysisRef.reanalyse(data)
|
this.$refs.betaGammaAnalysisRef.reanalyse(data)
|
||||||
|
|
Loading…
Reference in New Issue
Block a user