fix: 修复部分gamma类型中sampleFileName解析错误的问题,nuclide review弹窗增加切换chart的时候也滚动到table中选中的项的功能

This commit is contained in:
Xu Zhimeng 2023-11-02 16:12:35 +08:00
parent 98ce272d05
commit ad36a1f289
4 changed files with 61 additions and 38 deletions

View File

@ -80,9 +80,13 @@ export class PHDParser {
// 如果解析的是sample 文件,则解析相关联的文件 // 如果解析的是sample 文件,则解析相关联的文件
if (this.isSample) { if (this.isSample) {
const filePrefixes = this.getFilePrefixes(headerInfo[2]) if (this.fileType == 'B') {
this.sampleFilePrefix = filePrefixes.splice(0, 1)[0] const filePrefixes = this.getFilePrefixes(headerInfo[2])
this.otherFilePrefixes = filePrefixes this.sampleFilePrefix = filePrefixes.splice(0, 1)[0]
this.otherFilePrefixes = filePrefixes
} else {
this.sampleFilePrefix = this.getGammaFilePrefix(headerInfo[2])
}
} }
} }
@ -166,7 +170,7 @@ export class PHDParser {
} }
/** /**
* 获取全部文件名 * 获取全部文件名前缀
* @param {string} text * @param {string} text
*/ */
getFilePrefixes(text) { getFilePrefixes(text) {
@ -179,4 +183,15 @@ export class PHDParser {
}) })
return filePrefixes return filePrefixes
} }
/**
* 获取gamma的文件名前缀
* @param {string} text
*/
getGammaFilePrefix(text) {
const regExp = /[A-Z]{1,}\d{1,}_\d{1,}-\d{4}\/\d{2}\/\d{2}[-\s]\d{2}:\d{2}/
const result = text.match(regExp)
const regExpDate = /(\d{4})\/(\d{2})\/(\d{2})[ -](\d{2}):(\d{2})/
return result[0].replace(regExpDate, '$1$2$3_$4$5') + '_'
}
} }

View File

@ -19,7 +19,7 @@
<a-button type="primary" :disabled="isLoading" :loading="isAcceptting" @click="handlePeaks(true)"> <a-button type="primary" :disabled="isLoading" :loading="isAcceptting" @click="handlePeaks(true)">
Peaks Peaks
</a-button> </a-button>
<a-button>Cancel</a-button> <a-button @click="visible = false">Cancel</a-button>
</a-space> </a-space>
</div> </div>
</custom-modal> </custom-modal>

View File

@ -59,6 +59,7 @@
</a-form-model> </a-form-model>
</div> </div>
<a-table <a-table
ref="tableRef"
:class="list.length ? 'has-data' : ''" :class="list.length ? 'has-data' : ''"
:columns="columns" :columns="columns"
:dataSource="list" :dataSource="list"
@ -77,9 +78,7 @@
<!-- 以下是图表部分 --> <!-- 以下是图表部分 -->
<div class="nuclide-review-chart"> <div class="nuclide-review-chart">
<div class="nuclide-review-chart-prev"> <div class="nuclide-review-chart-prev">
<span @click="handleChangeChart('prev')"> <span @click="handleChangeChart('prev')"> &lt; </span>
&lt;
</span>
</div> </div>
<a-row class="nuclide-review-chart-list"> <a-row class="nuclide-review-chart-list">
<a-col class="nuclide-review-chart-item" :span="8" v-for="(chartItem, index) in currChartList" :key="index"> <a-col class="nuclide-review-chart-item" :span="8" v-for="(chartItem, index) in currChartList" :key="index">
@ -94,9 +93,7 @@
</a-col> </a-col>
</a-row> </a-row>
<div class="nuclide-review-chart-next"> <div class="nuclide-review-chart-next">
<span @click="handleChangeChart('next')"> <span @click="handleChangeChart('next')"> &gt; </span>
&gt;
</span>
</div> </div>
</div> </div>
<!-- 图表部分结束 --> <!-- 图表部分结束 -->
@ -116,32 +113,32 @@ const columns = [
width: '5%', width: '5%',
customRender: (_, __, index) => { customRender: (_, __, index) => {
return index + 1 return index + 1
} },
}, },
{ {
title: 'Full Name', title: 'Full Name',
dataIndex: 'fullName', dataIndex: 'fullName',
width: '15%' width: '15%',
}, },
{ {
title: 'Energy', title: 'Energy',
dataIndex: 'energy', dataIndex: 'energy',
width: '15%' width: '15%',
}, },
{ {
title: 'Energy Err', title: 'Energy Err',
dataIndex: 'energyUncert', dataIndex: 'energyUncert',
width: '15%' width: '15%',
}, },
{ {
title: 'Abundance(%)', title: 'Abundance(%)',
dataIndex: 'yield', dataIndex: 'yield',
width: '15%' width: '15%',
}, },
{ {
title: 'Abundance Err(%)', title: 'Abundance Err(%)',
dataIndex: 'yieldUncert', dataIndex: 'yieldUncert',
width: '15%' width: '15%',
}, },
{ {
title: 'KeyLine', title: 'KeyLine',
@ -149,20 +146,20 @@ const columns = [
width: '15%', width: '15%',
align: 'center', align: 'center',
scopedSlots: { scopedSlots: {
customRender: 'keyLine' customRender: 'keyLine',
} },
} },
] ]
export default { export default {
components: { NuclideReviewChart }, components: { NuclideReviewChart },
mixins: [ModalMixin, SampleDataMixin], mixins: [ModalMixin, SampleDataMixin],
props: { props: {
channel: { channel: {
type: Number type: Number,
}, },
nuclide: { nuclide: {
type: String type: String,
} },
}, },
data() { data() {
this.columns = columns this.columns = columns
@ -177,13 +174,13 @@ export default {
currChartList: [], // ,3 currChartList: [], // ,3
model: {}, model: {},
info: {} info: {},
} }
}, },
methods: { methods: {
// / // /
handleNuclideChange(direction) { handleNuclideChange(direction) {
const currIndex = this.nuclideList.findIndex(item => item == this.currNuclide) const currIndex = this.nuclideList.findIndex((item) => item == this.currNuclide)
if (direction == 'prev' && currIndex > 0) { if (direction == 'prev' && currIndex > 0) {
this.handleNuclideClick(currIndex - 1) this.handleNuclideClick(currIndex - 1)
} else if (direction == 'next' && currIndex !== this.nuclideList.length - 1) { } else if (direction == 'next' && currIndex !== this.nuclideList.length - 1) {
@ -191,6 +188,13 @@ export default {
} }
}, },
scrollIntoView(index) {
const tableEle = this.$refs.tableRef.$el
const tableBodyEle = tableEle.querySelector('.ant-table-body')
const prevEle = tableBodyEle.querySelector(`.ant-table-row:nth-child(${index + 1})`)
tableBodyEle.scrollTop = prevEle.offsetTop
},
// //
handleNuclideClick(index) { handleNuclideClick(index) {
this.currNuclide = this.nuclideList[index] this.currNuclide = this.nuclideList[index]
@ -226,15 +230,19 @@ export default {
const willJumpIndex = currIndex - 3 const willJumpIndex = currIndex - 3
if (willJumpIndex >= 0) { if (willJumpIndex >= 0) {
this.selectTableRow(willJumpIndex) this.selectTableRow(willJumpIndex)
this.scrollIntoView(willJumpIndex)
} else { } else {
this.selectTableRow(0) this.selectTableRow(0)
this.scrollIntoView(0)
} }
} else if (direction == 'next') { } else if (direction == 'next') {
const willJumpIndex = currIndex + 3 const willJumpIndex = currIndex + 3
if (willJumpIndex <= this.list.length - 2) { if (willJumpIndex <= this.list.length - 2) {
this.selectTableRow(willJumpIndex) this.selectTableRow(willJumpIndex)
this.scrollIntoView(willJumpIndex)
} else { } else {
this.selectTableRow(this.list.length - 1) this.selectTableRow(this.list.length - 1)
this.scrollIntoView(this.list.length - 1)
} }
} }
}, },
@ -246,8 +254,8 @@ export default {
on: { on: {
click: () => { click: () => {
this.selectTableRow(index) this.selectTableRow(index)
} },
} },
} }
}, },
@ -259,12 +267,12 @@ export default {
const { success, result, message } = await getAction('/gamma/nuclideReview', { const { success, result, message } = await getAction('/gamma/nuclideReview', {
sampleId: sampleId, sampleId: sampleId,
channel: this.channel, channel: this.channel,
fileName fileName,
}) })
if (success) { if (success) {
this.model = { this.model = {
energy: result.energy, energy: result ? result.energy : undefined,
tolerance: 0.5 tolerance: 0.5,
} }
this.handleResData(result) this.handleResData(result)
@ -284,7 +292,7 @@ export default {
// //
handleResData(result) { handleResData(result) {
if(!result) { if (!result) {
result = { result = {
chart: [], chart: [],
halfLife: null, halfLife: null,
@ -302,7 +310,7 @@ export default {
halfLife, halfLife,
halfLifeErr, halfLifeErr,
lines, lines,
name name,
} }
this.list = table this.list = table
@ -323,7 +331,7 @@ export default {
const { success, result, message } = await getAction('/gamma/changeNuclide', { const { success, result, message } = await getAction('/gamma/changeNuclide', {
sampleId, sampleId,
nuclideName: this.currNuclide, nuclideName: this.currNuclide,
fileName: inputFileName fileName: inputFileName,
}) })
if (success) { if (success) {
const { chart, halfLife, halfLifeErr, lines, name, table } = result const { chart, halfLife, halfLifeErr, lines, name, table } = result
@ -332,7 +340,7 @@ export default {
halfLife, halfLife,
halfLifeErr, halfLifeErr,
lines, lines,
name name,
} }
this.list = table this.list = table
@ -362,7 +370,7 @@ export default {
const { success, result, message } = await getAction('/gamma/searchNuclide', { const { success, result, message } = await getAction('/gamma/searchNuclide', {
sampleId, sampleId,
fileName, fileName,
...this.model ...this.model,
}) })
if (success) { if (success) {
this.handleResData(result) this.handleResData(result)
@ -374,8 +382,8 @@ export default {
} finally { } finally {
this.isLoading = false this.isLoading = false
} }
} },
} },
} }
</script> </script>

View File

@ -133,7 +133,7 @@
</a-upload> </a-upload>
<a-button type="primary" @click="handleReset">Reset</a-button> <a-button type="primary" @click="handleReset">Reset</a-button>
<a-button :loading="isUploadingZip" type="primary" @click="handleLoad">Load</a-button> <a-button :loading="isUploadingZip" type="primary" @click="handleLoad">Load</a-button>
<a-button type="primary" @click="handleCancel">Cancel</a-button> <a-button type="warn" @click="handleCancel">Cancel</a-button>
</a-space> </a-space>
</template> </template>
<!-- 底部按钮结束 --> <!-- 底部按钮结束 -->