fix:gamma 增加 MDC 弹窗
This commit is contained in:
		
							parent
							
								
									f2b3e58940
								
							
						
					
					
						commit
						92b8b33c9b
					
				
							
								
								
									
										224
									
								
								src/views/spectrumAnalysis/components/Modals/MDCModal.vue
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										224
									
								
								src/views/spectrumAnalysis/components/Modals/MDCModal.vue
									
									
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,224 @@
 | 
			
		|||
<template>
 | 
			
		||||
  <custom-modal
 | 
			
		||||
    v-model="visible"
 | 
			
		||||
    :width="1231"
 | 
			
		||||
    title="MDC"
 | 
			
		||||
    class="nuclide-activity-and-mdc-modal"
 | 
			
		||||
  >
 | 
			
		||||
    <!-- 顶部搜索栏 
 | 
			
		||||
    <a-form-model class="search-form">
 | 
			
		||||
      <a-space class="operators" :size="20">
 | 
			
		||||
        <a-button type="primary" @click="handleExportToExcel">
 | 
			
		||||
          <img src="@/assets/images/spectrum/download.png" />
 | 
			
		||||
          Export to Excel
 | 
			
		||||
        </a-button>
 | 
			
		||||
      </a-space>
 | 
			
		||||
    </a-form-model>-->
 | 
			
		||||
    
 | 
			
		||||
    <!-- 顶部搜索栏结束 -->
 | 
			
		||||
    <a-spin :spinning="isLoading">
 | 
			
		||||
      <custom-table :columns="columns" :list="list" :scroll="{ y: 460 }" :canSelect="false"></custom-table>
 | 
			
		||||
    </a-spin>
 | 
			
		||||
    <div slot="custom-footer" style="text-align: center">
 | 
			
		||||
      <a-space :size="20">
 | 
			
		||||
        <a-button type="primary" @click="handleExportToExcel">Export to Excel</a-button>
 | 
			
		||||
        <a-button @click="visible = false">Close</a-button>
 | 
			
		||||
      </a-space>
 | 
			
		||||
    </div>
 | 
			
		||||
  </custom-modal>
 | 
			
		||||
</template>
 | 
			
		||||
 | 
			
		||||
<script>
 | 
			
		||||
import { getAction } from '@/api/manage'
 | 
			
		||||
import ModalMixin from '@/mixins/ModalMixin'
 | 
			
		||||
import SampleDataMixin from '../../SampleDataMixin'
 | 
			
		||||
import * as XLSX from 'xlsx'
 | 
			
		||||
 | 
			
		||||
const columns = [
 | 
			
		||||
  {
 | 
			
		||||
    title: 'Nuclide',
 | 
			
		||||
    dataIndex: 'nuclideName',
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    title: 'HalfLife',
 | 
			
		||||
    dataIndex: 'halflifeView',
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    title: 'Energy (keV)',
 | 
			
		||||
    dataIndex: 'energy',
 | 
			
		||||
    customRender: (text) => {
 | 
			
		||||
      return text && text !== 'null' ? parseFloat(Number(text).toPrecision(6)) : text
 | 
			
		||||
    },
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    title: 'Yield (%)',
 | 
			
		||||
    dataIndex: 'yield',
 | 
			
		||||
    customRender: (text) => {
 | 
			
		||||
      return text && text !== 'null' ? parseFloat(Number(text).toPrecision(6)) : text
 | 
			
		||||
    },
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    title: 'Efficiency',
 | 
			
		||||
    dataIndex: 'efficiency',
 | 
			
		||||
    customRender: (text) => {
 | 
			
		||||
      return text && text !== 'null' ? parseFloat(Number(text).toPrecision(6)) : text
 | 
			
		||||
    },
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    title: 'MDC (uBq/m3)',
 | 
			
		||||
    dataIndex: 'mdc',
 | 
			
		||||
    customRender: (text) => {
 | 
			
		||||
      return text
 | 
			
		||||
    },
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    title: 'MDCErr (uBq/m3)',
 | 
			
		||||
    dataIndex: 'mdcErr',
 | 
			
		||||
    customRender: (text) => {
 | 
			
		||||
      return text
 | 
			
		||||
    },
 | 
			
		||||
  },
 | 
			
		||||
]
 | 
			
		||||
export default {
 | 
			
		||||
  mixins: [ModalMixin, SampleDataMixin],
 | 
			
		||||
  data() {
 | 
			
		||||
    this.columns = columns
 | 
			
		||||
    return {
 | 
			
		||||
      queryParam: {
 | 
			
		||||
        activityReferenceTime: undefined,
 | 
			
		||||
        concentrationReferenceTime: undefined,
 | 
			
		||||
      },
 | 
			
		||||
      compareVisible: false,
 | 
			
		||||
      isLoading: false,
 | 
			
		||||
 | 
			
		||||
      list: [],
 | 
			
		||||
      compareList: [],
 | 
			
		||||
      fileName: '',
 | 
			
		||||
    }
 | 
			
		||||
  },
 | 
			
		||||
  methods: {
 | 
			
		||||
    // 切换比较
 | 
			
		||||
    handleComparision() {
 | 
			
		||||
      this.compareVisible = !this.compareVisible
 | 
			
		||||
    },
 | 
			
		||||
 | 
			
		||||
    async getInfo() {
 | 
			
		||||
      this.list = [];
 | 
			
		||||
      try {
 | 
			
		||||
        this.isLoading = true
 | 
			
		||||
        const { sampleId, inputFileName: fileName } = this.sampleData
 | 
			
		||||
        const { success, result, message } = await getAction('/gamma/viewMDC', {
 | 
			
		||||
          fileName,
 | 
			
		||||
        })
 | 
			
		||||
        if (success) {
 | 
			
		||||
          this.list = result
 | 
			
		||||
        } else {
 | 
			
		||||
          this.$message.error(message)
 | 
			
		||||
        }
 | 
			
		||||
      } catch (error) {
 | 
			
		||||
        console.error(error)
 | 
			
		||||
      } finally {
 | 
			
		||||
        this.isLoading = false
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
 | 
			
		||||
    beforeModalOpen() {
 | 
			
		||||
      this.compareVisible = false
 | 
			
		||||
      this.getInfo()
 | 
			
		||||
    },
 | 
			
		||||
 | 
			
		||||
    // 导出到Excel
 | 
			
		||||
    handleExportToExcel() {
 | 
			
		||||
      const { inputFileName } = this.sampleData
 | 
			
		||||
      let header = [];
 | 
			
		||||
      this.columns.forEach(f=>{
 | 
			
		||||
        header.push(f.dataIndex)
 | 
			
		||||
      })
 | 
			
		||||
      let name = inputFileName.split('.')[0]
 | 
			
		||||
      if (this.list.length > 0) {
 | 
			
		||||
        let _this = this
 | 
			
		||||
        // saveAs(blob, `${_this.fileName}`)
 | 
			
		||||
        // 创建工作簿
 | 
			
		||||
        const workbook = XLSX.utils.book_new()
 | 
			
		||||
 | 
			
		||||
        // 创建工作表
 | 
			
		||||
        const worksheet = XLSX.utils.json_to_sheet(_this.list,{header, skipHeader:false})
 | 
			
		||||
 | 
			
		||||
        // 将工作表添加到工作簿
 | 
			
		||||
        XLSX.utils.book_append_sheet(workbook, worksheet, 'Sheet1')
 | 
			
		||||
 | 
			
		||||
        // 导出Excel文件
 | 
			
		||||
        XLSX.writeFile(workbook, `${name}_MDC` + '.xlsx')
 | 
			
		||||
      } else {
 | 
			
		||||
        this.$message.warning('No downloadable data')
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
  },
 | 
			
		||||
}
 | 
			
		||||
</script>
 | 
			
		||||
 | 
			
		||||
<style lang="less" scoped>
 | 
			
		||||
.nuclide-activity-and-mdc-modal {
 | 
			
		||||
  ::v-deep {
 | 
			
		||||
    .ant-modal-body {
 | 
			
		||||
      padding: 16px;
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.search-form {
 | 
			
		||||
  display: flex;
 | 
			
		||||
  justify-content: space-between;
 | 
			
		||||
  margin-bottom: 15px;
 | 
			
		||||
 | 
			
		||||
  .time-pickers {
 | 
			
		||||
    display: flex;
 | 
			
		||||
    .ant-form-item {
 | 
			
		||||
      margin-bottom: 0;
 | 
			
		||||
 | 
			
		||||
      &:nth-child(2) {
 | 
			
		||||
        margin-left: 20px;
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      ::v-deep {
 | 
			
		||||
        .ant-form-item {
 | 
			
		||||
          &-label {
 | 
			
		||||
            > label {
 | 
			
		||||
              color: #ade6ee;
 | 
			
		||||
            }
 | 
			
		||||
          }
 | 
			
		||||
 | 
			
		||||
          &-control-wrapper {
 | 
			
		||||
            width: 210px;
 | 
			
		||||
          }
 | 
			
		||||
        }
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
  .operators {
 | 
			
		||||
    .ant-btn {
 | 
			
		||||
      display: flex;
 | 
			
		||||
      align-items: center;
 | 
			
		||||
 | 
			
		||||
      img {
 | 
			
		||||
        margin-right: 10px;
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.comparison-list {
 | 
			
		||||
  padding-top: 15px;
 | 
			
		||||
  border-top: 1px solid rgba(13, 109, 118, 0.5);
 | 
			
		||||
 | 
			
		||||
  &-item {
 | 
			
		||||
    &-title {
 | 
			
		||||
      color: #0cebc9;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    &:last-child {
 | 
			
		||||
      margin-top: 12px;
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
</style>
 | 
			
		||||
| 
						 | 
				
			
			@ -94,6 +94,9 @@
 | 
			
		|||
    <nuclide-activity-and-mdc-modal v-model="nuclideActivityAndMDCModalVisible" />
 | 
			
		||||
    <!-- Nuclide Activity and MDC 弹窗结束 -->
 | 
			
		||||
 | 
			
		||||
    <!-- Nuclide Activity and MDC 弹窗开始 -->
 | 
			
		||||
    <mdc-modal v-model="MDCModalVisible" />
 | 
			
		||||
    <!-- Nuclide Activity and MDC 弹窗结束 -->
 | 
			
		||||
    <!-- Save Setting 弹窗开始 -->
 | 
			
		||||
    <save-setting-modal v-model="saveSettingModalVisible" @save="handleSaveResultsToFile" />
 | 
			
		||||
    <!-- Save Setting 弹窗结束 -->
 | 
			
		||||
| 
						 | 
				
			
			@ -240,6 +243,7 @@ import LoadFromDbModal from './components/Modals/LoadFromDBModal.vue'
 | 
			
		|||
import LoadFromFileModal from './components/Modals/LoadFromFileModal.vue'
 | 
			
		||||
import PeakInfomation from './components/PeakInfomation.vue'
 | 
			
		||||
import NuclideActivityAndMdcModal from './components/Modals/NuclideActivityAndMDCModal.vue'
 | 
			
		||||
import MdcModal from './components/Modals/MDCModal.vue'
 | 
			
		||||
import MultiLevelMenu from './components/MultiLevelMenu.vue'
 | 
			
		||||
import SaveSettingModal from './components/Modals/SaveSettingModal.vue'
 | 
			
		||||
import AnalyzeSettingModal from './components/Modals/AnalyzeSettingModal.vue'
 | 
			
		||||
| 
						 | 
				
			
			@ -292,6 +296,7 @@ export default {
 | 
			
		|||
    LoadFromDbModal,
 | 
			
		||||
    LoadFromFileModal,
 | 
			
		||||
    PeakInfomation,
 | 
			
		||||
    MdcModal,
 | 
			
		||||
    NuclideActivityAndMdcModal,
 | 
			
		||||
    MultiLevelMenu,
 | 
			
		||||
    SaveSettingModal,
 | 
			
		||||
| 
						 | 
				
			
			@ -379,6 +384,7 @@ export default {
 | 
			
		|||
      arrOrRRRModalType: 1, // Reports -> ARR 或RRR 弹窗类型
 | 
			
		||||
      arrOrRRRModalExtraData: {},
 | 
			
		||||
 | 
			
		||||
      MDCModalVisible: false, // Reports -> Radionuclide Activity 弹窗
 | 
			
		||||
      nuclideActivityAndMDCModalVisible: false, // Reports -> Radionuclide Activity 弹窗
 | 
			
		||||
      spectrumModalVisible: false, // Reports -> Spectrum 弹窗
 | 
			
		||||
      sampleInfomationModalVisible: false, // Reports -> Sample Infomation 弹窗
 | 
			
		||||
| 
						 | 
				
			
			@ -1466,6 +1472,12 @@ export default {
 | 
			
		|||
                  },
 | 
			
		||||
                  show: this.isGamma,
 | 
			
		||||
                },
 | 
			
		||||
                {
 | 
			
		||||
                  type: 'a-menu-item',
 | 
			
		||||
                  title: 'MDC',
 | 
			
		||||
                  handler: () => (this.MDCModalVisible = true),
 | 
			
		||||
                  show: this.isGamma,
 | 
			
		||||
                },
 | 
			
		||||
                {
 | 
			
		||||
                  type: 'a-menu-item',
 | 
			
		||||
                  title: 'Radionuclide Activity',
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue
	
	Block a user