WIP: 修改Insert和Fit Peak接口和逻辑,增加BaseLine的Accept接口

This commit is contained in:
Xu Zhimeng 2023-10-13 19:07:38 +08:00
parent b4782e98df
commit 7cc143bbd4
2 changed files with 110 additions and 54 deletions

View File

@ -6,16 +6,29 @@
<a-checkbox v-if="slot.isCheckbox" :key="index" v-model="record[slot.dataIndex]">
Fixed
</a-checkbox>
<a-input v-else :key="index" v-model="record[slot.dataIndex]" :readOnly="slot.isStatic"></a-input>
<a-input
v-else
:key="index"
v-model="record[slot.dataIndex]"
:readOnly="slot.isStatic"
@change="handleInput(record, slot.dataIndex)"
></a-input>
</template>
</custom-table>
</a-spin>
<div slot="custom-footer">
<a-space>
<a-button type="primary" :disabled="isCanceling || isLoading" :loading="isAcceptting" @click="handlePeaks">
<a-button
type="primary"
:disabled="isCanceling || isLoading"
:loading="isAcceptting"
@click="handlePeaks(true)"
>
Peaks
</a-button>
<a-button :disabled="isAcceptting || isLoading" :loading="isCanceling" @click="handleCancel">Cancel</a-button>
<a-button :disabled="isAcceptting || isLoading" :loading="isCanceling" @click="handlePeaks(false)"
>Cancel</a-button
>
</a-space>
</div>
</custom-modal>
@ -25,6 +38,7 @@
import { getAction, postAction } from '@/api/manage'
import ModalMixin from '@/mixins/ModalMixin'
import SampleDataMixin from '@/views/spectrumAnalysis/SampleDataMixin'
import { cloneDeep } from 'lodash'
const columns = [
{
@ -116,8 +130,14 @@ const columns = [
export default {
mixins: [ModalMixin, SampleDataMixin],
props: {
curChan: {
channel_1: {
type: Number
},
channel_2: {
type: Number
},
isInsertPeak: {
type: Boolean
}
},
data() {
@ -129,18 +149,20 @@ export default {
}
},
methods: {
//
async handlePeaks() {
async handlePeaks(accept) {
try {
this.isAcceptting = true
const { inputFileName: fileName } = this.sampleData
const { success, result, message } = await postAction('/gamma/acceptResults', {
fileName,
accept: true
accept,
oldPeaks: this.oldPeaks,
newPeak: this.newPeaks,
flag: this.isInsertPeak ? 'insert' : 'fit'
})
if (success) {
this.visible = false
this.$emit('result', result)
this.$emit(accept ? 'result' : 'cancel', result)
} else {
this.$message.error(message)
}
@ -151,46 +173,51 @@ export default {
}
},
//
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)
//
handleInput(record, index) {
const find = this.newPeaks.find(item => item.index == record.lab)
if (find) {
const table2NewPeakMap = {
energy: 'energy',
netArea: 'area',
fwhm: 'fwhm'
}
} catch (error) {
console.error(error)
} finally {
this.isCanceling = false
find[table2NewPeakMap[index]] = record[index]
}
},
async getData() {
const { sampleId, inputFileName: fileName } = this.sampleData
try {
let url = '/gamma/fitPeak'
let params = {
left: this.channel_1,
right: this.channel_2,
fileName
}
// Insert Peak
if (this.isInsertPeak) {
url = '/gamma/insertPeak'
params = {
sampleId,
fileName,
curChan: Math.ceil(this.channel_1)
}
}
this.isLoading = true
const { sampleId, inputFileName } = this.sampleData
const { success, result, message } = await getAction('/gamma/insertPeak', {
sampleId,
fileName: inputFileName,
curChan: Math.ceil(this.curChan)
})
const { success, result, message } = await getAction(url, params)
if (success) {
const { oldPeaks, tablePeaksList } = result
const { newPeaks, 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.newPeaks = newPeaks
this.oldPeaks = oldPeaks
} else {
this.$message.error(message)

View File

@ -181,7 +181,9 @@
<!-- Fit Peaks and Baseline弹窗 开始 -->
<fit-peaks-and-base-line-modal
v-model="fitPeaksAndBaselineModalVisible"
:curChan="currChannel"
:channel_1="channel_1"
:channel_2="channel_2"
:isInsertPeak="isInsertPeak"
@result="handleInsertSuccess"
@cancel="handleCancelSuccess"
/>
@ -461,6 +463,11 @@ export default {
model: cloneDeep(nuclideIdentifyModal),
currChannel: undefined, // currChannelchannel
channel_1: undefined, // Fit Peaks And Baseline Modal
channel_2: undefined,
isInsertPeak: false, // Peak
selectedTableItem: undefined, //
isModifying: false, //
@ -636,6 +643,9 @@ export default {
return
}
this.channel_1 = left
this.channel_2 = right
this.isInsertPeak = false
this.fitPeaksAndBaselineModalVisible = true
this.isFitting = false
@ -737,7 +747,10 @@ export default {
return
}
this.channel_1 = this.currChannel
this.fitPeaksAndBaselineModalVisible = true
this.isInsertPeak = true
},
// Fit Peak XXX Peaks
@ -772,13 +785,13 @@ export default {
series.push(this.buildBaseLine(channelBaseLineChart))
// Count
series.push(this.buildCountLine(channelCountChart))
series.push(this.buildCountLine(this.channelCountChart))
// Peak
series.push(...this.buildPeaks(channelPeakChart))
// 线
series.push(this.buildCtrlPoint(channelBaseCPChart))
series.push(this.buildCtrlPoint(this.channelBaseCPChart))
this.thumbnailOption.series = this.buildBarChart(barChart)
@ -1278,27 +1291,43 @@ export default {
},
// Baseline Control Points
handleAccept() {
async handleAccept() {
this.BaseCtrls = cloneDeep(this.baseCtrls_Copy)
const { baseline, xctrl, yctrl } = this.BaseCtrls
this.channelBaseLineChart.pointlist = baseline.map((val, index) => {
return {
x: index + 1,
y: val
}
})
// this.channelBaseLineChart.pointlist = baseline.map((val, index) => {
// return {
// x: index + 1,
// y: val
// }
// })
this.channelBaseCPChart = xctrl.map((val, index) => {
return {
color: this.channelBaseCPChart[0].color,
name: index.toString(),
point: {
x: val,
y: yctrl[index]
},
size: 4
// this.channelBaseCPChart = xctrl.map((val, index) => {
// return {
// color: this.channelBaseCPChart[0].color,
// name: index.toString(),
// point: {
// x: val,
// y: yctrl[index]
// },
// size: 4
// }
// })
const { inputFileName: fileName } = this.sampleData
try {
const { success, result, message } = await postAction('/gamma/acceptBaseLine', {
...this.BaseCtrls,
fileName
})
if(success) {
console.log('%c [ ]-1312', 'font-size:13px; background:pink; color:#bf2c9f;', result)
} else {
this.$message.error(message)
}
})
} catch (error) {
console.error(error)
}
this.handleSwitchOperation()