WIP: 修改Insert和Fit Peak接口和逻辑,增加BaseLine的Accept接口
This commit is contained in:
		
							parent
							
								
									b4782e98df
								
							
						
					
					
						commit
						7cc143bbd4
					
				| 
						 | 
				
			
			@ -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)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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, // 当currChannel前选中的channel
 | 
			
		||||
 | 
			
		||||
      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()
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue
	
	Block a user