feat: 对接保存功能,修复部分BUG
This commit is contained in:
		
							parent
							
								
									81e5797c73
								
							
						
					
					
						commit
						acb93dd817
					
				
							
								
								
									
										33
									
								
								src/utils/file.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										33
									
								
								src/utils/file.js
									
									
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,33 @@
 | 
			
		|||
import { Modal } from 'ant-design-vue'
 | 
			
		||||
import { saveAs } from 'file-saver'
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * 弹窗填入文件名保存文件
 | 
			
		||||
 * @param {Blob} data 数据
 | 
			
		||||
 * @param {string} ext 扩展名,不带.
 | 
			
		||||
 */
 | 
			
		||||
export const showSaveFileModal = (data, ext) => {
 | 
			
		||||
  let fileName = ''
 | 
			
		||||
  const handleClick = event => {
 | 
			
		||||
    fileName = event.target.value
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  Modal.confirm({
 | 
			
		||||
    title: 'Please enter file name',
 | 
			
		||||
    content: h => <a-input onChange={handleClick} />,
 | 
			
		||||
    okText: 'Cancle',
 | 
			
		||||
    cancelText: 'Save',
 | 
			
		||||
    okButtonProps: { style: { backgroundColor: '#b98326', color: '#fff', borderColor: 'transparent' } },
 | 
			
		||||
    cancelButtonProps: { style: { color: '#fff', backgroundColor: '#31aab0', borderColor: 'transparent' } },
 | 
			
		||||
    onOk() {
 | 
			
		||||
      console.log('Cancel')
 | 
			
		||||
    },
 | 
			
		||||
    onCancel() {
 | 
			
		||||
      if (fileName) {
 | 
			
		||||
        saveAs(data, `${fileName}.${ext}`)
 | 
			
		||||
      } else {
 | 
			
		||||
        throw new Error()
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
  })
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -41,7 +41,11 @@ export default {
 | 
			
		|||
        const res = await getAction(this.type == 1 ? '/gamma/viewAutomaticAnalysisLog' : '/gamma/viewAutomaticAnalysisLog', {  // 自动分析日志接口暂用都是gammam,beta暂时没有
 | 
			
		||||
          sampleId
 | 
			
		||||
        })
 | 
			
		||||
        this.content = ""
 | 
			
		||||
        if(typeof res == 'string') {
 | 
			
		||||
          this.content = res
 | 
			
		||||
        } else if(typeof res == 'object') {
 | 
			
		||||
          this.$message.error(res.message)
 | 
			
		||||
        }
 | 
			
		||||
      } catch (error) {
 | 
			
		||||
        console.error(error)
 | 
			
		||||
      } finally {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -18,11 +18,11 @@
 | 
			
		|||
 | 
			
		||||
        <div class="config-user-library-btns">
 | 
			
		||||
          <div>
 | 
			
		||||
            <a-button type="primary">Default</a-button>
 | 
			
		||||
            <a-button type="primary" @click="handleDefault">Default</a-button>
 | 
			
		||||
            <a-button type="primary">Load</a-button>
 | 
			
		||||
          </div>
 | 
			
		||||
          <div>
 | 
			
		||||
            <a-button type="primary">Save</a-button>
 | 
			
		||||
            <a-button type="primary" :loading="isSaving" @click="handleSave">Save</a-button>
 | 
			
		||||
            <a-button type="primary">Apply</a-button>
 | 
			
		||||
          </div>
 | 
			
		||||
        </div>
 | 
			
		||||
| 
						 | 
				
			
			@ -33,14 +33,17 @@
 | 
			
		|||
 | 
			
		||||
<script>
 | 
			
		||||
import ModalMixin from '@/mixins/ModalMixin'
 | 
			
		||||
import { getAction } from '@/api/manage'
 | 
			
		||||
import { getAction, postAction } from '@/api/manage'
 | 
			
		||||
import SampleDataMixin from '../../SampleDataMixin'
 | 
			
		||||
import { cloneDeep } from 'lodash'
 | 
			
		||||
 | 
			
		||||
export default {
 | 
			
		||||
  mixins: [ModalMixin, SampleDataMixin],
 | 
			
		||||
  data() {
 | 
			
		||||
    return {
 | 
			
		||||
      list: [],
 | 
			
		||||
      targetKeys: []
 | 
			
		||||
      targetKeys: [],
 | 
			
		||||
      isSaving: false
 | 
			
		||||
    }
 | 
			
		||||
  },
 | 
			
		||||
  methods: {
 | 
			
		||||
| 
						 | 
				
			
			@ -66,6 +69,8 @@ export default {
 | 
			
		|||
          }))
 | 
			
		||||
 | 
			
		||||
          this.targetKeys = UserNuclides.map(item => item)
 | 
			
		||||
 | 
			
		||||
          this.initialTargetKeys = cloneDeep(this.targetKeys)
 | 
			
		||||
        } else {
 | 
			
		||||
          this.$message.error(message)
 | 
			
		||||
        }
 | 
			
		||||
| 
						 | 
				
			
			@ -76,6 +81,32 @@ export default {
 | 
			
		|||
 | 
			
		||||
    beforeModalOpen() {
 | 
			
		||||
      this.getInfo()
 | 
			
		||||
    },
 | 
			
		||||
 | 
			
		||||
    // 默认
 | 
			
		||||
    handleDefault() {
 | 
			
		||||
      this.targetKeys = cloneDeep(this.initialTargetKeys)
 | 
			
		||||
    },
 | 
			
		||||
 | 
			
		||||
    // 保存
 | 
			
		||||
    async handleSave() {
 | 
			
		||||
      try {
 | 
			
		||||
        this.isSaving = true
 | 
			
		||||
        const { inputFileName: fileName } = this.sampleData
 | 
			
		||||
        const { success, result, message } = await postAction('/gamma/saveUserLibrary', {
 | 
			
		||||
          fileName,
 | 
			
		||||
          userLibraryName: this.targetKeys
 | 
			
		||||
        })
 | 
			
		||||
        if (success) {
 | 
			
		||||
          this.$message.success('Save Success')
 | 
			
		||||
        } else {
 | 
			
		||||
          this.$message.error(message)
 | 
			
		||||
        }
 | 
			
		||||
      } catch (error) {
 | 
			
		||||
        console.error(error)
 | 
			
		||||
      } finally {
 | 
			
		||||
        this.isSaving = false
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -53,7 +53,7 @@
 | 
			
		|||
              <div class="operators">
 | 
			
		||||
                <div>
 | 
			
		||||
                  <a-button type="primary">Call</a-button>
 | 
			
		||||
                  <a-button type="primary">Save</a-button>
 | 
			
		||||
                  <a-button type="primary" :loading="isSaving" @click="handleSave">Save</a-button>
 | 
			
		||||
                </div>
 | 
			
		||||
                <div>
 | 
			
		||||
                  <a-select v-model="funcId" @change="recalculate">
 | 
			
		||||
| 
						 | 
				
			
			@ -111,6 +111,7 @@ import { getAction, postAction } from '@/api/manage'
 | 
			
		|||
import { cloneDeep } from 'lodash'
 | 
			
		||||
import { buildLineSeries } from '@/utils/chartHelper'
 | 
			
		||||
import SampleDataMixin from '../../SampleDataMixin'
 | 
			
		||||
import { showSaveFileModal } from '@/utils/file'
 | 
			
		||||
 | 
			
		||||
const columns = [
 | 
			
		||||
  {
 | 
			
		||||
| 
						 | 
				
			
			@ -240,6 +241,8 @@ export default {
 | 
			
		|||
 | 
			
		||||
    return {
 | 
			
		||||
      isLoading: false,
 | 
			
		||||
      isSaving: false,
 | 
			
		||||
 | 
			
		||||
      equation: '',
 | 
			
		||||
      dataSourceList: [],
 | 
			
		||||
      list: [],
 | 
			
		||||
| 
						 | 
				
			
			@ -264,11 +267,11 @@ export default {
 | 
			
		|||
        const { success, result, message } = await getAction('/gamma/EfficiencyCalibration', {
 | 
			
		||||
          sampleId,
 | 
			
		||||
          fileName,
 | 
			
		||||
          currentText
 | 
			
		||||
          currentText,
 | 
			
		||||
          width: 922
 | 
			
		||||
        })
 | 
			
		||||
        this.isLoading = false
 | 
			
		||||
        if (success) {
 | 
			
		||||
          console.log('%c [  ]-220', 'font-size:13px; background:pink; color:#bf2c9f;', result)
 | 
			
		||||
          const { list_dataSource, ECutAnalysis_Low, G_energy_span } = result
 | 
			
		||||
          this.dataSourceList = list_dataSource
 | 
			
		||||
          if (!currentText) {
 | 
			
		||||
| 
						 | 
				
			
			@ -450,7 +453,8 @@ export default {
 | 
			
		|||
          m_vCurEffi: this.list.map(item => item.efficiency),
 | 
			
		||||
          m_vCurUncert: this.uncert,
 | 
			
		||||
          m_curParam: this.param,
 | 
			
		||||
          funcId: this.funcId
 | 
			
		||||
          funcId: this.funcId,
 | 
			
		||||
          width: 922
 | 
			
		||||
        })
 | 
			
		||||
        if (success) {
 | 
			
		||||
          this.handleResult(result)
 | 
			
		||||
| 
						 | 
				
			
			@ -464,6 +468,29 @@ export default {
 | 
			
		|||
      }
 | 
			
		||||
    },
 | 
			
		||||
 | 
			
		||||
    // 保存
 | 
			
		||||
    async handleSave() {
 | 
			
		||||
      try {
 | 
			
		||||
        this.isSaving = true
 | 
			
		||||
        const res = await postAction('/gamma/saveDataEfficiency', {
 | 
			
		||||
          m_vCurEnergy: this.list.map(item => item.energy),
 | 
			
		||||
          m_vCurEffi: this.list.map(item => item.efficiency),
 | 
			
		||||
          m_vCurUncert: this.uncert,
 | 
			
		||||
          funcId: this.funcId
 | 
			
		||||
        })
 | 
			
		||||
        if (typeof res == 'string') {
 | 
			
		||||
          const blob = new Blob([res], { type: 'text/plain' })
 | 
			
		||||
          showSaveFileModal(blob, 'ent')
 | 
			
		||||
        } else if (typeof res == 'object') {
 | 
			
		||||
          this.$message.error(res.message)
 | 
			
		||||
        }
 | 
			
		||||
      } catch (error) {
 | 
			
		||||
        console.error(error)
 | 
			
		||||
      } finally {
 | 
			
		||||
        this.isSaving = false
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
 | 
			
		||||
    // 应用
 | 
			
		||||
    async handleApply() {
 | 
			
		||||
      try {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -53,7 +53,7 @@
 | 
			
		|||
              <div class="operators">
 | 
			
		||||
                <div>
 | 
			
		||||
                  <a-button type="primary">Call</a-button>
 | 
			
		||||
                  <a-button type="primary">Save</a-button>
 | 
			
		||||
                  <a-button type="primary" :loading="isSaving" @click="handleSave">Save</a-button>
 | 
			
		||||
                </div>
 | 
			
		||||
                <div>
 | 
			
		||||
                  <a-button type="primary" @click="handleApply">Apply</a-button>
 | 
			
		||||
| 
						 | 
				
			
			@ -106,6 +106,7 @@ import { getAction, postAction } from '@/api/manage'
 | 
			
		|||
import { cloneDeep } from 'lodash'
 | 
			
		||||
import { buildLineSeries } from '@/utils/chartHelper'
 | 
			
		||||
import SampleDataMixin from '../../SampleDataMixin'
 | 
			
		||||
import { showSaveFileModal } from '@/utils/file'
 | 
			
		||||
 | 
			
		||||
const columns = [
 | 
			
		||||
  {
 | 
			
		||||
| 
						 | 
				
			
			@ -202,6 +203,8 @@ export default {
 | 
			
		|||
    this.columns = columns
 | 
			
		||||
    return {
 | 
			
		||||
      isLoading: false,
 | 
			
		||||
      isSaving: false,
 | 
			
		||||
 | 
			
		||||
      equation: '',
 | 
			
		||||
      dataSourceList: [],
 | 
			
		||||
      list: [],
 | 
			
		||||
| 
						 | 
				
			
			@ -226,7 +229,8 @@ export default {
 | 
			
		|||
        const { success, result, message } = await getAction('/gamma/energyCalibration', {
 | 
			
		||||
          sampleId,
 | 
			
		||||
          fileName,
 | 
			
		||||
          currentText
 | 
			
		||||
          currentText,
 | 
			
		||||
          width: 922
 | 
			
		||||
        })
 | 
			
		||||
        this.isLoading = false
 | 
			
		||||
        if (success) {
 | 
			
		||||
| 
						 | 
				
			
			@ -409,7 +413,8 @@ export default {
 | 
			
		|||
          m_vCurCentroid: this.list.map(item => item.channel),
 | 
			
		||||
          m_vCurEnergy: this.list.map(item => item.energy),
 | 
			
		||||
          m_vCurUncert: this.uncert,
 | 
			
		||||
          m_curParam: this.param
 | 
			
		||||
          m_curParam: this.param,
 | 
			
		||||
          width: 922
 | 
			
		||||
        })
 | 
			
		||||
        if (success) {
 | 
			
		||||
          this.handleResult(result)
 | 
			
		||||
| 
						 | 
				
			
			@ -423,6 +428,28 @@ export default {
 | 
			
		|||
      }
 | 
			
		||||
    },
 | 
			
		||||
 | 
			
		||||
    // 保存
 | 
			
		||||
    async handleSave() {
 | 
			
		||||
      try {
 | 
			
		||||
        this.isSaving = true
 | 
			
		||||
        const res = await postAction('/gamma/saveDataEnergy', {
 | 
			
		||||
          m_vCurCentroid: this.list.map(item => item.channel),
 | 
			
		||||
          m_vCurEnergy: this.list.map(item => item.energy),
 | 
			
		||||
          m_vCurUncert: this.uncert
 | 
			
		||||
        })
 | 
			
		||||
        if (typeof res == 'string') {
 | 
			
		||||
          const blob = new Blob([res], { type: 'text/plain' })
 | 
			
		||||
          showSaveFileModal(blob, 'ent')
 | 
			
		||||
        } else if (typeof res == 'object') {
 | 
			
		||||
          this.$message.error(res.message)
 | 
			
		||||
        }
 | 
			
		||||
      } catch (error) {
 | 
			
		||||
        console.error(error)
 | 
			
		||||
      } finally {
 | 
			
		||||
        this.isSaving = false
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
 | 
			
		||||
    // 应用
 | 
			
		||||
    async handleApply() {
 | 
			
		||||
      try {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -53,7 +53,7 @@
 | 
			
		|||
              <div class="operators">
 | 
			
		||||
                <div>
 | 
			
		||||
                  <a-button type="primary">Call</a-button>
 | 
			
		||||
                  <a-button type="primary">Save</a-button>
 | 
			
		||||
                  <a-button type="primary" :loading="isSaving" @click="handleSave">Save</a-button>
 | 
			
		||||
                </div>
 | 
			
		||||
                <div>
 | 
			
		||||
                  <a-button type="primary" @click="handleApply">Apply</a-button>
 | 
			
		||||
| 
						 | 
				
			
			@ -106,6 +106,7 @@ import { getAction, postAction } from '@/api/manage'
 | 
			
		|||
import { cloneDeep } from 'lodash'
 | 
			
		||||
import { buildLineSeries } from '@/utils/chartHelper'
 | 
			
		||||
import SampleDataMixin from '../../SampleDataMixin'
 | 
			
		||||
import { showSaveFileModal } from '@/utils/file'
 | 
			
		||||
 | 
			
		||||
const columns = [
 | 
			
		||||
  {
 | 
			
		||||
| 
						 | 
				
			
			@ -202,6 +203,8 @@ export default {
 | 
			
		|||
    this.columns = columns
 | 
			
		||||
    return {
 | 
			
		||||
      isLoading: false,
 | 
			
		||||
      isSaving: false,
 | 
			
		||||
 | 
			
		||||
      equation: '',
 | 
			
		||||
      dataSourceList: [],
 | 
			
		||||
      list: [],
 | 
			
		||||
| 
						 | 
				
			
			@ -225,11 +228,11 @@ export default {
 | 
			
		|||
        const { success, result, message } = await getAction('/gamma/resolutionCalibration', {
 | 
			
		||||
          sampleId,
 | 
			
		||||
          fileName,
 | 
			
		||||
          currentText
 | 
			
		||||
          currentText,
 | 
			
		||||
          width: 922
 | 
			
		||||
        })
 | 
			
		||||
        this.isLoading = false
 | 
			
		||||
        if (success) {
 | 
			
		||||
          console.log('%c [  ]-220', 'font-size:13px; background:pink; color:#bf2c9f;', result)
 | 
			
		||||
          const { list_dataSource, ECutAnalysis_Low, G_energy_span } = result
 | 
			
		||||
          this.dataSourceList = list_dataSource
 | 
			
		||||
          if (!currentText) {
 | 
			
		||||
| 
						 | 
				
			
			@ -423,6 +426,28 @@ export default {
 | 
			
		|||
      }
 | 
			
		||||
    },
 | 
			
		||||
 | 
			
		||||
    // 保存
 | 
			
		||||
    async handleSave() {
 | 
			
		||||
      try {
 | 
			
		||||
        this.isSaving = true
 | 
			
		||||
        const res = await postAction('/gamma/saveDataResolution', {
 | 
			
		||||
          m_vCurEnergy: this.list.map(item => item.energy),
 | 
			
		||||
          m_vCurReso: this.list.map(item => item.fwhm),
 | 
			
		||||
          m_vCurUncert: this.uncert
 | 
			
		||||
        })
 | 
			
		||||
        if (typeof res == 'string') {
 | 
			
		||||
          const blob = new Blob([res], { type: 'text/plain' })
 | 
			
		||||
          showSaveFileModal(blob, 'ent')
 | 
			
		||||
        } else if (typeof res == 'object') {
 | 
			
		||||
          this.$message.error(res.message)
 | 
			
		||||
        }
 | 
			
		||||
      } catch (error) {
 | 
			
		||||
        console.error(error)
 | 
			
		||||
      } finally {
 | 
			
		||||
        this.isSaving = false
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
 | 
			
		||||
    // 应用
 | 
			
		||||
    async handleApply() {
 | 
			
		||||
      try {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue
	
	Block a user