feat: 对接Beta Gamma -> RLR中已有的数据

This commit is contained in:
Xu Zhimeng 2023-08-09 10:25:38 +08:00
parent 5672b47ca4
commit 1562e46313
4 changed files with 143 additions and 110 deletions

View File

@ -4,7 +4,7 @@
<a-row v-for="(column, index) in columns" :key="index"> <a-row v-for="(column, index) in columns" :key="index">
<a-col class="label" :span="12"> {{ column.label }} </a-col> <a-col class="label" :span="12"> {{ column.label }} </a-col>
<a-col :span="12"> <a-col :span="12">
<component :is="column.type" v-bind="column.attrs" v-model="model[column.dataIndex]" /> <component :is="column.type" v-bind="column.attrs" v-model="detail[column.dataIndex]" :disabled="column.disabled" />
</a-col> </a-col>
</a-row> </a-row>
</div> </div>
@ -68,40 +68,33 @@ const columns = [
{ {
label: 'Radioactive Xe meas. start date [YYYY/MM/DD]', label: 'Radioactive Xe meas. start date [YYYY/MM/DD]',
type: 'a-input', type: 'a-input',
dataIndex: 'radioactiveXeMeasStartDate' dataIndex: 'acq_start_date',
disabled: true
}, },
{ {
label: 'Radioactive Xe meas. start time [HH:MM:SS.S]', label: 'Radioactive Xe meas. start time [HH:MM:SS.S]',
type: 'a-input', type: 'a-input',
dataIndex: 'radioactiveXeMeasStartTime' dataIndex: 'acq_start_time',
disabled: true
}, },
{ {
label: 'Acquisition live time [s]', label: 'Acquisition live time [s]',
type: 'a-input', type: 'a-input',
dataIndex: 'acquisitionLiveTime' dataIndex: 'acq_live_time',
disabled: true
} }
] ]
export default { export default {
props: {
detail: {
type: Object
}
},
data() { data() {
this.columns = columns this.columns = columns
return { return { }
model: {
pressureInTheArchiveBottle: '',
volumeOfArchiveBottle: '',
gasComposition: '',
stableXeMeasStartDate: '2023/07/18',
stableXeMeasStartTime: '17:36:21',
stableXenonVolumeInTheArchiveBottle: '',
uncertaintyOfStableXenonVolume: '',
stableXenonVolumeInTheMeasurementCell: '',
uncertaintyOfStableXenonVolume2: '',
radioactiveXeMeasStartDate: '',
radioactiveXeMeasStartTime: '',
acquisitionLiveTime: ''
}
}
} }
} }
</script> </script>

View File

@ -1,13 +1,16 @@
<template> <template>
<div class="general-infomation"> <div class="general-infomation">
<div class="text"> <a-textarea :rows="14" v-model="detail.text"></a-textarea>
<pre>{{ text }}</pre>
</div>
<div class="form"> <div class="form">
<a-row v-for="(column, index) in columns" :key="index"> <a-row v-for="(column, index) in columns" :key="index">
<a-col class="label" :span="10"> {{ column.label }} </a-col> <a-col class="label" :span="10"> {{ column.label }} </a-col>
<a-col :span="14"> <a-col :span="14">
<component :is="column.type" v-bind="column.attrs" v-model="model[column.dataIndex]" /> <component
:is="column.type"
v-bind="column.attrs"
v-model="detail[column.dataIndex]"
:disabled="column.disabled"
/>
</a-col> </a-col>
</a-row> </a-row>
</div> </div>
@ -24,27 +27,32 @@ const columns = [
{ {
label: 'Sample ID (SRID or other)', label: 'Sample ID (SRID or other)',
type: 'a-input', type: 'a-input',
dataIndex: 'sampleId' dataIndex: 'srid',
disabled: true
}, },
{ {
label: 'Collection start date or reference date [YYYY/MM/DD]', label: 'Collection start date or reference date [YYYY/MM/DD]',
type: 'a-input', type: 'a-input',
dataIndex: 'collectionStartDate' dataIndex: 'colloct_start_date',
disabled: true
}, },
{ {
label: 'Collection start time or reference time [HH:mm:ss.S]', label: 'Collection start time or reference time [HH:mm:ss.S]',
type: 'a-input', type: 'a-input',
dataIndex: 'collectionStartTime' dataIndex: 'colloct_start_time',
disabled: true
}, },
{ {
label: 'Collection stop date [YYYY/MM/DD]', label: 'Collection stop date [YYYY/MM/DD]',
type: 'a-input', type: 'a-input',
dataIndex: 'collectionStopDate' dataIndex: 'colloct_stop_date',
disabled: true
}, },
{ {
label: 'Collection stop time [HH:mm:ss.S]', label: 'Collection stop time [HH:mm:ss.S]',
type: 'a-input', type: 'a-input',
dataIndex: 'collectionStopTime' dataIndex: 'colloct_stop_time',
disabled: true
}, },
{ {
label: 'Receipt date [YYYY/MM/DD]', label: 'Receipt date [YYYY/MM/DD]',
@ -82,37 +90,21 @@ const columns = [
} }
] ]
export default { export default {
props: {
detail: {
type: Object
}
},
data() { data() {
this.columns = columns this.columns = columns
return { return {}
text: ` - All dates
- If`,
model: {
laboratory: 'CNL06',
sampleId: '2311G',
collectionStartDate: '2015/12/23',
collectionStartTime: '23:55:43.0',
collectionStopDate: '2015/10/24',
collectionStopTime: '11:55:44:7',
receiptDate: '2023/7/10',
receiptTime: '00:45:33',
reportTransmissionDate: '2023/7/10',
reportTransmissionTime: '13:45:33'
}
}
} }
} }
</script> </script>
<style lang="less" scoped> <style lang="less" scoped>
.general-infomation { .general-infomation {
.text {
height: 300px;
overflow: auto;
border: 1px solid #0b8c82;
}
.form { .form {
margin-top: 10px; margin-top: 10px;
border: 1px solid #0b8c82; border: 1px solid #0b8c82;

View File

@ -1,6 +1,6 @@
<template> <template>
<div> <div>
<a-table :columns="columns" :dataSource="list" :pagination="false" :scroll="{ x: true }"> <a-table size="small" :columns="columns" :dataSource="list" :pagination="false" :scroll="{ x: true }">
<template v-for="slotName in slots" :slot="slotName" slot-scope="text, record"> <template v-for="slotName in slots" :slot="slotName" slot-scope="text, record">
<a-input v-model="record[slotName]" :key="slotName"></a-input> <a-input v-model="record[slotName]" :key="slotName"></a-input>
</template> </template>
@ -14,14 +14,14 @@ const columns = [
title: '', title: '',
dataIndex: 'name', dataIndex: 'name',
align: 'center', align: 'center',
width: 100, width: 80,
fixed: 'left' fixed: 'left'
}, },
{ {
title: 'Activity [Bq]', title: 'Activity [Bq]',
dataIndex: 'activity', dataIndex: 'activity',
align: 'center', align: 'center',
width: 100, width: 90,
scopedSlots: { scopedSlots: {
customRender: 'activity' customRender: 'activity'
} }
@ -30,7 +30,7 @@ const columns = [
title: 'Uncert.Activity [%]', title: 'Uncert.Activity [%]',
dataIndex: 'uncertActivity', dataIndex: 'uncertActivity',
align: 'center', align: 'center',
width: 150, width: 140,
scopedSlots: { scopedSlots: {
customRender: 'uncertActivity' customRender: 'uncertActivity'
} }
@ -48,7 +48,7 @@ const columns = [
title: 'Concentration [Bq/m3]', title: 'Concentration [Bq/m3]',
dataIndex: 'concentration', dataIndex: 'concentration',
align: 'center', align: 'center',
width: 180, width: 170,
scopedSlots: { scopedSlots: {
customRender: 'concentration' customRender: 'concentration'
} }
@ -57,7 +57,7 @@ const columns = [
title: 'Uncert.concentration [%]', title: 'Uncert.concentration [%]',
dataIndex: 'uncertConcentration', dataIndex: 'uncertConcentration',
align: 'center', align: 'center',
width: 200, width: 190,
scopedSlots: { scopedSlots: {
customRender: 'uncertConcentration' customRender: 'uncertConcentration'
} }
@ -81,41 +81,63 @@ const columns = [
} }
} }
] ]
const nameMapper = [
{ name: 'Xe-131m', mapTo: 'xe131m' },
{ name: 'Xe-133m', mapTo: 'xe133m' },
{ name: 'Xe-133', mapTo: 'xe133' },
{ name: 'Xe-135', mapTo: 'xe135' }
]
const columnNameMapper = [
{
name: 'concentration',
mapTo: 'conc'
},
{
name: 'uncertConcentration',
mapTo: 'uncert_conc'
},
{
name: 'mdc',
mapTo: 'MDC'
},
{
name: 'lc',
mapTo: 'LC'
}
]
export default { export default {
props: {
detail: {
type: Object
}
},
data() { data() {
this.columns = columns this.columns = columns
return { return {}
list: [
{
name: 'Xe-131m',
activity: 'activity',
uncertActivity: 'uncertActivity',
mda: 'mda',
concentration: 'concentration',
uncertConcentration: 'uncertConcentration',
mdc: 'mdc',
lc: 'lc'
},
{
name: 'Xe-132m',
activity: 'activity2',
uncertActivity: 'uncertActivity2',
mda: 'mda2',
concentration: 'concentration2',
uncertConcentration: 'uncertConcentration2',
mdc: 'mdc2',
lc: 'lc2'
}
]
}
}, },
computed: { computed: {
slots() { slots() {
return columns.filter(item => item.scopedSlots).map(item => item.scopedSlots.customRender) return columns.filter(item => item.scopedSlots).map(item => item.scopedSlots.customRender)
},
list() {
return nameMapper.map(item => {
const obj = { name: item.name }
columnNameMapper.forEach(it => {
const key = `${item.mapTo}_${it.mapTo}`
obj[it.name] = this.detail[key]
})
return obj
})
} }
} }
} }
</script> </script>
<style lang="less" scoped></style> <style lang="less" scoped>
.ant-input {
height: 26px;
}
</style>

View File

@ -14,32 +14,34 @@
</div> </div>
<div class="rlr-content"> <div class="rlr-content">
<h4>{{ tabs[activeKey] }}</h4> <h4>{{ tabs[activeKey] }}</h4>
<div class="rlr-content-detail"> <a-spin :spinning="isLoading">
<template v-if="activeKey == 0"> <div class="rlr-content-detail">
<general-infomation /> <template v-if="activeKey == 0">
</template> <general-infomation :detail="detail" />
<template v-if="activeKey == 1"> </template>
<transport-infomation /> <template v-if="activeKey == 1">
</template> <transport-infomation :detail="detail" />
<template v-if="activeKey == 2"> </template>
<analysis-results /> <template v-if="activeKey == 2">
</template> <analysis-results :detail="detail" />
<template v-if="activeKey == 3"> </template>
<nuclides /> <template v-if="activeKey == 3">
</template> <nuclides :detail="detail" />
<template v-if="activeKey == 4"> </template>
<ratios /> <template v-if="activeKey == 4">
</template> <ratios :detail="detail" />
<template v-if="activeKey == 5"> </template>
<methods /> <template v-if="activeKey == 5">
</template> <methods :detail="detail" />
<template v-if="activeKey == 6"> </template>
<additional-info /> <template v-if="activeKey == 6">
</template> <additional-info :detail="detail" />
<template v-if="activeKey == 7"> </template>
<notes /> <template v-if="activeKey == 7">
</template> <notes :detail="detail" />
</div> </template>
</div>
</a-spin>
</div> </div>
</div> </div>
</custom-modal> </custom-modal>
@ -55,6 +57,7 @@ import Ratios from './components/Ratios.vue'
import Methods from './components/Methods.vue' import Methods from './components/Methods.vue'
import AdditionalInfo from './components/AdditionalInfo.vue' import AdditionalInfo from './components/AdditionalInfo.vue'
import Notes from './components/Notes.vue' import Notes from './components/Notes.vue'
import { getAction } from '@/api/manage'
const tabs = [ const tabs = [
'General Infomation', 'General Infomation',
@ -79,15 +82,38 @@ export default {
AdditionalInfo, AdditionalInfo,
Notes Notes
}, },
props: {
sampleId: {
type: Number
}
},
data() { data() {
this.tabs = tabs this.tabs = tabs
return { return {
activeKey: 0 activeKey: 0,
detail: {},
isLoading: false
} }
}, },
methods: { methods: {
beforeModalOpen() { beforeModalOpen() {
this.activeKey = 7 this.activeKey = 0
this.getInfo()
},
async getInfo() {
try {
this.isLoading = true
const { success, result, message } = await getAction('/spectrumAnalysis/viewRLR', { sampleId: this.sampleId })
if (success) {
this.detail = result
this.isLoading = false
} else {
this.$message.error(message)
}
} catch (error) {
console.error(error)
}
}, },
handleOk() { handleOk() {