非dicom质控检查列表添加排序
continuous-integration/drone/push Build is passing Details

rj
caiyiling 2026-07-01 11:03:20 +08:00
parent aba5dec904
commit 0bbf537ddf
2 changed files with 37 additions and 8 deletions

View File

@ -574,7 +574,6 @@ export default {
metaData.addProvider((type, imageId) => hardcodedMetaDataProvider(type, imageId, imageIds), 10000) metaData.addProvider((type, imageId) => hardcodedMetaDataProvider(type, imageId, imageIds), 10000)
const renderingEngine = getRenderingEngine(renderingEngineId) const renderingEngine = getRenderingEngine(renderingEngineId)
const viewport = renderingEngine.getViewport(`canvas-${canvasIndex}`) const viewport = renderingEngine.getViewport(`canvas-${canvasIndex}`)
console.log(viewport, 'viewport')
await viewport.setStack(imageIds) await viewport.setStack(imageIds)
this.setToolsPassive() this.setToolsPassive()
viewport.setImageIdIndex(sliceIndex) viewport.setImageIdIndex(sliceIndex)

View File

@ -1,7 +1,13 @@
<template> <template>
<div v-loading="loading" class="none-dicom-study-wrapper"> <div v-loading="loading" class="none-dicom-study-wrapper">
<div class="study-info"> <div class="study-info">
{{ $t('trials:none-dicom-show:fileList') }} <div style="cursor: pointer;" @click.stop="sortFile">
<i :class="['el-icon-caret-top', asc === false ? '' : 'icon_check']"
style="display: block;margin-bottom: -5px;"></i>
<i :class="['el-icon-caret-bottom', asc === true ? '' : 'icon_check']"
style="display: block; margin-top: -5px;"></i>
</div>
<div>{{ $t('trials:none-dicom-show:fileList') }} </div>
</div> </div>
<div class="ps" ref="studyBox_ps"> <div class="ps" ref="studyBox_ps">
<el-collapse v-model="activeNames"> <el-collapse v-model="activeNames">
@ -64,6 +70,7 @@
</template> </template>
<script> <script>
import { getNoneDicomStudyList, setNodicomStudyState } from '@/api/trials' import { getNoneDicomStudyList, setNodicomStudyState } from '@/api/trials'
import FileNameSorter from "@/utils/customSort"
import pdf from '@/assets/pdf.png' import pdf from '@/assets/pdf.png'
import mp4 from '@/assets/mp4.png' import mp4 from '@/assets/mp4.png'
export default { export default {
@ -84,6 +91,8 @@ export default {
return { return {
loading: false, loading: false,
activeNames: [], activeNames: [],
activeStudyId: '',
activeFileId: '',
activeStudyIndex: -1, activeStudyIndex: -1,
activeFileIndex: -1, activeFileIndex: -1,
studyList: [], studyList: [],
@ -95,7 +104,8 @@ export default {
otherInfo: null, otherInfo: null,
criterionType: null, criterionType: null,
isQcCheck: false, isQcCheck: false,
isAudit: false isAudit: false,
asc: false
} }
}, },
async mounted() { async mounted() {
@ -183,7 +193,18 @@ export default {
}, },
sortFile() { sortFile() {
this.asc = !this.asc
this.studyList.forEach(study => {
if (study.NoneDicomStudyFileList.length > 0) {
study.NoneDicomStudyFileList = FileNameSorter.sortFileNames(study.NoneDicomStudyFileList, {
direction: this.asc ? 'asc' : 'desc',
key: 'FileName'
})
}
})
this.activeStudyIndex = this.studyList.findIndex(item => item.Id === this.activeStudyId)
if (this.activeStudyIndex === -1) return
this.activeFileIndex = this.studyList[this.activeStudyIndex].NoneDicomStudyFileList.findIndex(item => item.Id === this.activeFileId)
}, },
changeReadingStatus(callback, row, file) { changeReadingStatus(callback, row, file) {
let statusStr = '' let statusStr = ''
@ -286,7 +307,9 @@ export default {
if (this.isComparison) return false if (this.isComparison) return false
this.activeStudyIndex = studyIndex this.activeStudyIndex = studyIndex
this.activeFileIndex = fileIndex this.activeFileIndex = fileIndex
this.activeStudyId = study.Id
const fileList = study.NoneDicomStudyFileList const fileList = study.NoneDicomStudyFileList
this.activeFileId = fileList[fileIndex].Id
this.$emit('selectFile', { fileInfo: fileList[fileIndex], fileList, visitTaskInfo: this.visitTaskInfo, studyId: study.Id, isReset }) this.$emit('selectFile', { fileInfo: fileList[fileIndex], fileList, visitTaskInfo: this.visitTaskInfo, studyId: study.Id, isReset })
this.scrollActiveFileIntoView() this.scrollActiveFileIntoView()
}, },
@ -297,10 +320,12 @@ export default {
if (studyIndex === -1) return if (studyIndex === -1) return
this.activeStudy(`${obj.studyId}`) this.activeStudy(`${obj.studyId}`)
this.activeStudyIndex = studyIndex this.activeStudyIndex = studyIndex
this.activeStudyId = obj.studyId
const fileList = this.studyList[studyIndex].NoneDicomStudyFileList || [] const fileList = this.studyList[studyIndex].NoneDicomStudyFileList || []
const fileIndex = fileList.findIndex(f => f.Path === obj.path) const fileIndex = fileList.findIndex(f => f.Path === obj.path)
if (fileIndex === -1) return if (fileIndex === -1) return
this.activeFileIndex = fileIndex this.activeFileIndex = fileIndex
this.activeFileId = fileList[fileIndex].Id
this.selectFile(study, studyIndex, fileIndex) this.selectFile(study, studyIndex, fileIndex)
this.scrollActiveFileIntoView() this.scrollActiveFileIntoView()
}, },
@ -311,11 +336,13 @@ export default {
if (studyIndex === -1) return if (studyIndex === -1) return
this.activeStudy(`${obj.studyId}`) this.activeStudy(`${obj.studyId}`)
this.activeStudyIndex = studyIndex this.activeStudyIndex = studyIndex
this.activeStudyId = obj.studyId
const fileList = this.studyList[studyIndex].NoneDicomStudyFileList || [] const fileList = this.studyList[studyIndex].NoneDicomStudyFileList || []
const fileIndex = fileList.findIndex(f => f.Path === obj.path) const fileIndex = fileList.findIndex(f => f.Path === obj.path)
const file = fileList.find(f => f.Path === obj.path) const file = fileList.find(f => f.Path === obj.path)
if (fileIndex === -1) return if (fileIndex === -1) return
this.activeFileIndex = fileIndex this.activeFileIndex = fileIndex
this.activeFileId = fileList[fileIndex].Id
file.Path = obj.file.Path file.Path = obj.file.Path
file.FullFilePath = obj.file.Path file.FullFilePath = obj.file.Path
file.IsBeMark = obj.IsBeMark file.IsBeMark = obj.IsBeMark
@ -339,16 +366,19 @@ export default {
flex-direction: column; flex-direction: column;
.study-info { .study-info {
display: flex;
justify-content: center;
align-items: center;
font-size: 16px; font-size: 16px;
font-weight: bold; font-weight: bold;
color: #ddd; color: #ddd;
// padding: 5px 0px;
margin: 0;
text-align: center;
background-color: #4c4c4c; background-color: #4c4c4c;
line-height: 40px; line-height: 40px;
user-select: none;
}
.icon_check {
color: #409EFF;
} }
.dicom-desc { .dicom-desc {
font-weight: bold; font-weight: bold;
font-size: 13px; font-size: 13px;