Merge branch 'feature-analysis-RLR-renpy' of http://git.hivekion.com:3000/xiaoguangbin/AnalysisSystemForRadionuclide_vue into master-dev

This commit is contained in:
orgin 2023-10-17 09:03:29 +08:00
commit 9bff476b38
6 changed files with 260 additions and 112 deletions

View File

@ -104,7 +104,7 @@
<a-button type="primary" :disabled="isOperationStackEmpty" @click="handleUndo">Undo</a-button>
</div>
<div class="peak-box-item">
<a-button type="primary" @click="handleReplot">Replot</a-button>
<a-button type="primary" :loading="isReploting" @click="handleReplot">Replot</a-button>
</div>
<div class="peak-box-item">
<a-button type="primary" :loading="isAccepting" @click="handleAccept">Accept</a-button>
@ -474,6 +474,7 @@ export default {
isFitting: false, // Fit
firstFittingChannel: null, // Fitchannel
isAccepting: false,
isReploting: false,
operationStack: [] //
}
@ -529,7 +530,6 @@ export default {
this.setChartOption(channelBaseLineChart, channelCountChart, channelPeakChart, channelBaseCPChart, barChart)
this.list = table
} else {
this.$message.error(message)
}
@ -787,7 +787,13 @@ export default {
this.channelBaseLineChart = channelBaseLineChart
this.barChart = barChart
this.setChartOption(channelBaseLineChart, this.channelCountChart, channelPeakChart, this.channelBaseCPChart, barChart)
this.setChartOption(
channelBaseLineChart,
this.channelCountChart,
channelPeakChart,
this.channelBaseCPChart,
barChart
)
this.list = table
},
@ -796,7 +802,13 @@ export default {
const { channelPeakChart, table } = result
this.channelPeakChart = channelPeakChart
this.setChartOption(this.channelBaseLineChart, this.channelCountChart, channelPeakChart, this.channelBaseCPChart, this.barChart)
this.setChartOption(
this.channelBaseLineChart,
this.channelCountChart,
channelPeakChart,
this.channelBaseCPChart,
this.barChart
)
this.list = table
},
@ -1035,7 +1047,10 @@ export default {
else {
this.btnGroupType = 1
this.opts.notMerge = true
this.option.series.splice(this.option.series.length - 1, 1) // 线
const baseLineEditSeries = findSeriesByName(this.option.series, 'BaseLine_Edit')
const index = this.option.series.findIndex(item => item == baseLineEditSeries)
this.option.series.splice(index, 1)
this.clearRect()
const baseLineSeries = findSeriesByName(this.option.series, 'BaseLine')
@ -1044,6 +1059,8 @@ export default {
const baseLineCP = findSeriesByName(this.option.series, 'BaseLine_Ctrl_Point')
baseLineCP.data = this.buildCPPointData(this.channelBaseCPChart)
this.redrawPeaks(this.channelPeakChart)
this.$nextTick(() => {
this.resetChartOpts()
})
@ -1098,6 +1115,14 @@ export default {
}
},
// Peaks
redrawPeaks(peakList) {
this.option.series = this.option.series.filter((item) => {
return !item.name.includes('Peak_')
})
this.option.series.push(...this.buildPeaks(peakList))
},
/**
* 设置小方块可拖拽
*/
@ -1231,26 +1256,53 @@ export default {
},
// 线
handleReplot() {
const { xctrl, yctrl, yslope, baseline } = this.baseCtrls_Copy
const baseLineSeries = findSeriesByName(this.option.series, 'BaseLine')
baseLineSeries.data = baseline.map((val, index) => [index + 1, val])
async handleReplot() {
try {
const { inputFileName: fileName } = this.sampleData
this.isReploting = true
const { success, result, message } = await postAction('/gamma/replotBaseLine', {
...this.baseCtrls_Copy,
fileName,
replotNeeded: true
})
if (success) {
const { chartData, peakSet, shapeData } = result
const baseLineCP = findSeriesByName(this.option.series, 'BaseLine_Ctrl_Point')
//
const firstCP = this.channelBaseCPChart[0]
const { color, size } = firstCP
const baseCPPoints = xctrl.map((xAxis, index) => {
return {
size,
color,
point: {
x: xAxis,
y: yctrl[index]
}
const { xctrl, yctrl, yslope, baseline } = this.baseCtrls_Copy
const baseLineSeries = findSeriesByName(this.option.series, 'BaseLine')
baseLineSeries.data = baseline.map((val, index) => [index + 1, val])
const baseLineCP = findSeriesByName(this.option.series, 'BaseLine_Ctrl_Point')
//
const firstCP = this.channelBaseCPChart[0]
const { color, size } = firstCP
const baseCPPoints = xctrl.map((xAxis, index) => {
return {
size,
color,
point: {
x: xAxis,
y: yctrl[index]
}
}
})
baseLineCP.data = this.buildCPPointData(baseCPPoints)
this.opts.notMerge = true
this.redrawPeaks(peakSet)
this.$nextTick(() => {
this.resetChartOpts()
})
this.BaseCtrls = cloneDeep(this.baseCtrls_Copy)
} else {
this.$message.error(message)
}
})
baseLineCP.data = this.buildCPPointData(baseCPPoints)
} catch (error) {
console.error(error)
} finally {
this.isReploting = false
}
},
/**
@ -1272,8 +1324,8 @@ export default {
// Baseline Control Points
async handleAccept() {
this.BaseCtrls = cloneDeep(this.baseCtrls_Copy)
const { baseline, xctrl, yctrl } = this.BaseCtrls
// this.BaseCtrls = cloneDeep(this.baseCtrls_Copy)
// const { baseline, xctrl, yctrl } = this.BaseCtrls
// this.channelBaseLineChart.pointlist = baseline.map((val, index) => {
// return {
// x: index + 1,
@ -1298,10 +1350,12 @@ export default {
try {
this.isAccepting = true
const { success, result, message } = await postAction('/gamma/acceptBaseLine', {
...this.BaseCtrls,
...this.baseCtrls_Copy,
fileName
})
if (success) {
this.BaseCtrls = cloneDeep(this.baseCtrls_Copy)
const {
allData,
barChart,

View File

@ -3,23 +3,31 @@
<a-form-model class="settings" :labelCol="{ style: { width: '75px', textAlign: 'center' } }">
<div class="top-left">
<a-form-model-item label="MSG_ID">
<a-input></a-input>
<a-input v-model="canberraIecImsParams.msgId"></a-input>
</a-form-model-item>
<a-form-model-item label="Comment">
<a-textarea></a-textarea>
<a-textarea v-model="canberraIecImsParams.comment"></a-textarea>
</a-form-model-item>
<title-over-border title="Collection Block">
<a-form-model-item label="Start Time">
<custom-date-picker show-time />
<custom-date-picker
show-time
format="YYYY/MM/DD HH:mm:ss"
valueFormat="YYYY/MM/DD HH:mm:ss"
v-model="canberraIecImsParams.startTime"
/>
</a-form-model-item>
<a-form-model-item label="Stop Time">
<custom-date-picker show-time />
<custom-date-picker
show-time
format="YYYY/MM/DD HH:mm:ss"
valueFormat="YYYY/MM/DD HH:mm:ss"
v-model="canberraIecImsParams.stopTime"
/>
</a-form-model-item>
<div>
<p>
Total air volume sampled
</p>
<a-input></a-input>
<p>Total air volume sampled</p>
<a-input v-model="canberraIecImsParams.totalAir"></a-input>
</div>
</title-over-border>
</div>
@ -30,58 +38,63 @@
<a-checkbox></a-checkbox>
Designator
</div>
<a-input></a-input>
<a-input v-model="canberraIecImsParams.designator"></a-input>
</div>
<div class="header-block-item">
<div>
<a-checkbox></a-checkbox>
Station code
</div>
<a-input></a-input>
<a-input v-model="canberraIecImsParams.stationCode"></a-input>
</div>
<div class="header-block-item">
<div>
<a-checkbox></a-checkbox>
Detector code
</div>
<a-input></a-input>
<a-input v-model="canberraIecImsParams.detectorCode"></a-input>
</div>
<div class="header-block-item">
<div>
<a-checkbox></a-checkbox>
Sample geometry
</div>
<a-input></a-input>
<a-input v-model="canberraIecImsParams.sampleGeometry"></a-input>
</div>
</div>
<div class="system-type-and-spectrum-qualifier">
<title-over-border title="System type" class="system-type">
<a-radio-group>
<a-radio>P</a-radio>
<a-radio>G</a-radio>
<a-radio>B</a-radio>
<a-radio-group v-model="canberraIecImsParams.systemType">
<a-radio value="P">P</a-radio>
<a-radio value="G">G</a-radio>
<a-radio value="B">B</a-radio>
</a-radio-group>
</title-over-border>
<title-over-border title="Spectrum qualifier" class="spectrum-qualifier">
<a-radio-group>
<a-radio>PREL</a-radio>
<a-radio>FULL</a-radio>
<a-radio-group v-model="canberraIecImsParams.spectrumQualifier">
<a-radio value="PREL">PREL</a-radio>
<a-radio value="FULL">FULL</a-radio>
</a-radio-group>
</title-over-border>
</div>
<div class="identifications">
<div>
<p>Sample reference identification</p>
<a-input></a-input>
<a-input v-model="canberraIecImsParams.sampleRef"></a-input>
</div>
<div>
<p>Background measurement identification</p>
<a-input></a-input>
<a-input v-model="canberraIecImsParams.backgroundMea"></a-input>
</div>
</div>
<div class="transmit-time">
<a-checkbox>Transmit time</a-checkbox>
<custom-date-picker></custom-date-picker>
<custom-date-picker
show-time
format="YYYY/MM/DD HH:mm:ss"
valueFormat="YYYY/MM/DD HH:mm:ss"
v-model="canberraIecImsParams.transmitTime"
/>
</div>
</title-over-border>
</a-form-model>
@ -103,8 +116,29 @@
<script>
import TitleOverBorder from '../../../TitleOverBorder.vue'
import moment from 'moment'
export default {
components: { TitleOverBorder }
components: { TitleOverBorder },
data() {
return {
canberraIecImsParams: {
msgId: '123456789',
comment: '',
startTime: moment(new Date()).format('YYYY/MM/DD HH:mm:ss'),
stopTime: moment(new Date()).format('YYYY/MM/DD HH:mm:ss'),
totalAir: '0',
designator: '3',
stationCode: 'CNL06',
detectorCode: 'CNL06_001',
sampleGeometry: 'DISC70MMX5MM',
systemType: 'P',
spectrumQualifier: 'FULL',
sampleRef: '123456789',
backgroundMea: '0',
transmitTime: moment(new Date()).format('YYYY/MM/DD HH:mm:ss'),
},
}
},
}
</script>

View File

@ -3,23 +3,31 @@
<a-form-model class="settings" :labelCol="{ style: { width: '75px', textAlign: 'center' } }">
<div class="top-left">
<a-form-model-item label="MSG_ID">
<a-input></a-input>
<a-input v-model="intSpacImsParams.msgId"></a-input>
</a-form-model-item>
<a-form-model-item label="Comment">
<a-textarea></a-textarea>
<a-textarea v-model="intSpacImsParams.comment"></a-textarea>
</a-form-model-item>
<title-over-border title="Collection Block">
<a-form-model-item label="Start Time">
<custom-date-picker show-time />
<custom-date-picker
show-time
format="YYYY/MM/DD HH:mm:ss"
valueFormat="YYYY/MM/DD HH:mm:ss"
v-model="intSpacImsParams.startTime"
/>
</a-form-model-item>
<a-form-model-item label="Stop Time">
<custom-date-picker show-time />
<custom-date-picker
show-time
format="YYYY/MM/DD HH:mm:ss"
valueFormat="YYYY/MM/DD HH:mm:ss"
v-model="intSpacImsParams.stopTime"
/>
</a-form-model-item>
<div>
<p>
Total air volume sampled
</p>
<a-input></a-input>
<p>Total air volume sampled</p>
<a-input v-model="intSpacImsParams.totalAir"></a-input>
</div>
</title-over-border>
</div>
@ -30,58 +38,63 @@
<a-checkbox></a-checkbox>
Designator
</div>
<a-input></a-input>
<a-input v-model="intSpacImsParams.designator"></a-input>
</div>
<div class="header-block-item">
<div>
<a-checkbox></a-checkbox>
Station code
</div>
<a-input></a-input>
<a-input v-model="intSpacImsParams.stationCode"></a-input>
</div>
<div class="header-block-item">
<div>
<a-checkbox></a-checkbox>
Detector code
</div>
<a-input></a-input>
<a-input v-model="intSpacImsParams.detectorCode"></a-input>
</div>
<div class="header-block-item">
<div>
<a-checkbox></a-checkbox>
Sample geometry
</div>
<a-input></a-input>
<a-input v-model="intSpacImsParams.sampleGeometry"></a-input>
</div>
</div>
<div class="system-type-and-spectrum-qualifier">
<title-over-border title="System type" class="system-type">
<a-radio-group>
<a-radio>P</a-radio>
<a-radio>G</a-radio>
<a-radio>B</a-radio>
<a-radio-group v-model="intSpacImsParams.systemType">
<a-radio value="P">P</a-radio>
<a-radio value="G">G</a-radio>
<a-radio value="B">B</a-radio>
</a-radio-group>
</title-over-border>
<title-over-border title="Spectrum qualifier" class="spectrum-qualifier">
<a-radio-group>
<a-radio>PREL</a-radio>
<a-radio>FULL</a-radio>
<a-radio-group v-model="intSpacImsParams.spectrumQualifier">
<a-radio value="PREL">PREL</a-radio>
<a-radio value="FULL">FULL</a-radio>
</a-radio-group>
</title-over-border>
</div>
<div class="identifications">
<div>
<p>Sample reference identification</p>
<a-input></a-input>
<a-input v-model="intSpacImsParams.sampleRef"></a-input>
</div>
<div>
<p>Background measurement identification</p>
<a-input></a-input>
<a-input v-model="intSpacImsParams.backgroundMea"></a-input>
</div>
</div>
<div class="transmit-time">
<a-checkbox>Transmit time</a-checkbox>
<custom-date-picker></custom-date-picker>
<custom-date-picker
show-time
format="YYYY/MM/DD HH:mm:ss"
valueFormat="YYYY/MM/DD HH:mm:ss"
v-model="intSpacImsParams.transmitTime"
/>
</div>
</title-over-border>
</a-form-model>
@ -103,8 +116,29 @@
<script>
import TitleOverBorder from '../../../TitleOverBorder.vue'
import moment from 'moment'
export default {
components: { TitleOverBorder }
components: { TitleOverBorder },
data() {
return {
intSpacImsParams: {
msgId: '123456789',
comment: '',
startTime: moment(new Date()).format('YYYY/MM/DD HH:mm:ss'),
stopTime: moment(new Date()).format('YYYY/MM/DD HH:mm:ss'),
totalAir: '0',
designator: '3',
stationCode: 'CNL06',
detectorCode: 'CNL06_001',
sampleGeometry: 'DISC70MMX5MM',
systemType: 'P',
spectrumQualifier: 'FULL',
sampleRef: '123456789',
backgroundMea: '0',
transmitTime: moment(new Date()).format('YYYY/MM/DD HH:mm:ss'),
},
}
},
}
</script>

View File

@ -2,16 +2,14 @@
<custom-modal v-model="visible" title="Save Setting" :width="380" :okHandler="handleOk">
<div class="save-setting">
<div class="save-setting-all">
<a-checkbox v-model="saveAll">
Save All
</a-checkbox>
<a-checkbox v-model="saveAll"> Save All </a-checkbox>
</div>
<div>
<title-over-border title="Format">
<a-radio-group v-model="saveFormat" class="format-radio-group">
<a-radio value="txt">Save as Txt</a-radio>
<a-radio value="xls">Save as Excel</a-radio>
<a-radio value="html">Save as Html</a-radio>
<!-- <a-radio value="html">Save as Html</a-radio> -->
</a-radio-group>
</title-over-border>
</div>
@ -25,13 +23,13 @@ export default {
components: { TitleOverBorder },
props: {
value: {
type: Boolean
}
type: Boolean,
},
},
data() {
return {
saveAll: false,
saveFormat: 'txt'
saveFormat: 'txt',
}
},
methods: {
@ -42,7 +40,7 @@ export default {
handleOk() {
this.$emit('save', this.saveFormat)
}
},
},
computed: {
visible: {
@ -55,9 +53,9 @@ export default {
}
return this.value
}
}
}
},
},
},
}
</script>

View File

@ -1193,7 +1193,6 @@ export default {
this.channelData.baseLineCP = shapeChannelData
this.energyData.baseLineCP = shapeEnergyData
this.redrawCtrlPointBySeriesName()
},
//
@ -1475,7 +1474,6 @@ export default {
watch: {
currStep: {
handler(val) {
console.log('dfad', val)
if (val && val == '0') {
this.abc = true
this.reprocessingModalVisible = true
@ -1496,7 +1494,6 @@ export default {
},
updateFlag: {
handler(val) {
console.log('dfad', val)
this.newCheckBox_updateCal = val
},
immediate: true,

View File

@ -481,30 +481,39 @@ export default {
//
async handleSaveResultsToFile(saveFormat) {
const url =
saveFormat == 'xls'
? '/spectrumAnalysis/saveToExcel'
: saveFormat == 'txt'
? '/spectrumAnalysis/saveToTxt'
: saveFormat == 'html'
? '/spectrumAnalysis/saveToHTML'
: ''
if (!this.resultDisplayFlag) {
this.$message.warn('Please Analyse Spectrum First')
return
if (this.isGamma) {
const url = saveFormat == 'xls' ? '/gamma/saveToExcel' : saveFormat == 'txt' ? '/gamma/saveToTxt' : ''
let params = {
fileName: this.newSampleData.inputFileName,
}
downloadFile(url, `result.${saveFormat}`, params, 'get')
}
if (this.isBetaGamma) {
const url =
saveFormat == 'xls'
? '/spectrumAnalysis/saveToExcel'
: saveFormat == 'txt'
? '/spectrumAnalysis/saveToTxt'
: saveFormat == 'html'
? '/spectrumAnalysis/saveToHTML'
: ''
if (!this.resultDisplayFlag) {
this.$message.warn('Please Analyse Spectrum First')
return
}
this.resultDisplayFlag.forEach((item) => {
this.params_toDB[`${item.nuclideName.toLowerCase()}Flag`] = item.nidFlag
})
this.resultDisplayFlag.forEach((item) => {
this.params_toDB[`${item.nuclideName.toLowerCase()}Flag`] = item.nidFlag
})
this.params_toDB.sampleFileName = this.newSampleData.inputFileName
this.params_toDB.gasFileName = this.newSampleData.gasFileName
this.params_toDB.detFileName = this.newSampleData.detFileName
this.params_toDB.qcFileName = this.newSampleData.qcFileName
this.params_toDB.dbName = this.newSampleData.dbName
this.params_toDB.sampleFileName = this.newSampleData.inputFileName
this.params_toDB.gasFileName = this.newSampleData.gasFileName
this.params_toDB.detFileName = this.newSampleData.detFileName
this.params_toDB.qcFileName = this.newSampleData.qcFileName
this.params_toDB.dbName = this.newSampleData.dbName
downloadFile(url, `result.${saveFormat}`, this.params_toDB, 'post')
downloadFile(url, `result.${saveFormat}`, this.params_toDB, 'post')
}
},
/**
@ -572,6 +581,13 @@ export default {
*/
handleSavePHDToFile(type) {
console.log('%c [ savePHDToFile ]-162', 'font-size:13px; background:pink; color:#bf2c9f;', type)
if (this.isGamma) {
const url = '/gamma/saveToPHD'
let params = {
fileName: this.newSampleData.inputFileName,
}
downloadFile(url, `result.PHD`, params, 'get')
}
},
handleReprocessAll() {
@ -718,7 +734,7 @@ export default {
{
type: 'a-menu-item',
title: 'Ftransit',
show: this.isGamma,
show: this.isGamma || this.isBetaGamma,
handler: () => (this.ftransltModalVisible = true),
},
{
@ -797,6 +813,7 @@ export default {
},
on: {
menuClick: () => {
console.log(this.isBetaGamma, this.isGamma)
this.saveSettingModalVisible = true
},
submenuClick: ({ item, child }) => {
@ -1000,9 +1017,14 @@ export default {
type: 'a-menu-item',
title: 'ARR',
handler: () => {
this.arrOrRRRModalVisible = true
this.arrOrRRRModalExtraData = {}
this.arrOrRRRModalType = 1
console.log(this.newSampleData)
if (this.newSampleData.sampleId) {
this.arrOrRRRModalVisible = true
this.arrOrRRRModalExtraData = {}
this.arrOrRRRModalType = 1
} else {
this.$message.warning("The file isn't existed.")
}
},
show: this.isGamma,
},
@ -1117,8 +1139,17 @@ export default {
title: 'Automatic Analysis Log',
show: this.isBetaGamma || this.isGamma,
handler: () => {
this.autoAnalysisMogModalType = this.isGamma ? 1 : this.isBetaGamma ? 2 : 1
this.autoAnalysisMogModalVisible = true
if (this.isGamma) {
if (this.newSampleData.sampleId) {
this.autoAnalysisMogModalType = this.isGamma ? 1 : this.isBetaGamma ? 2 : 1
this.autoAnalysisMogModalVisible = true
} else {
this.$message.warning("The file isn't existed.")
}
} else if (this.isBetaGamma) {
this.autoAnalysisMogModalType = this.isGamma ? 1 : this.isBetaGamma ? 2 : 1
this.autoAnalysisMogModalVisible = true
}
},
},
{