阅片多帧进度更改
continuous-integration/drone/push Build is passing
Details
continuous-integration/drone/push Build is passing
Details
parent
4b9118839f
commit
a7ce5526fd
|
@ -41,6 +41,7 @@ const getters = {
|
||||||
lastCanvasTaskId: state => state.reading.lastCanvasTaskId,
|
lastCanvasTaskId: state => state.reading.lastCanvasTaskId,
|
||||||
imageQuality: state => state.reading.imageQuality,
|
imageQuality: state => state.reading.imageQuality,
|
||||||
imageQualityIssues: state => state.reading.imageQualityIssues,
|
imageQualityIssues: state => state.reading.imageQualityIssues,
|
||||||
|
currentLoadIns: state => state.reading.currentLoadIns,
|
||||||
language: state => state.lang.language,
|
language: state => state.lang.language,
|
||||||
TotalNeedSignSystemDocCount: state => state.user.TotalNeedSignSystemDocCount,
|
TotalNeedSignSystemDocCount: state => state.user.TotalNeedSignSystemDocCount,
|
||||||
TotalNeedSignTrialDocCount: state => state.user.TotalNeedSignTrialDocCount,
|
TotalNeedSignTrialDocCount: state => state.user.TotalNeedSignTrialDocCount,
|
||||||
|
|
|
@ -30,7 +30,8 @@ const getDefaultState = () => {
|
||||||
activeSeries: {},
|
activeSeries: {},
|
||||||
lastCanvasTaskId: '',
|
lastCanvasTaskId: '',
|
||||||
imageQuality: null,
|
imageQuality: null,
|
||||||
imageQualityIssues: null
|
imageQualityIssues: null,
|
||||||
|
currentLoadIns: []
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
function getQuestions(questions) {
|
function getQuestions(questions) {
|
||||||
|
@ -139,22 +140,22 @@ function getQuestionAnswer(questions, questionMark, answers) {
|
||||||
return ''
|
return ''
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
function getKeySeriesInfo(keyInstance, series) {
|
// function getKeySeriesInfo(keyInstance, series) {
|
||||||
const obj = {}
|
// const obj = {}
|
||||||
const set = new Set()
|
// const set = new Set()
|
||||||
var instances = series.instanceList.concat(keyInstance).filter((item) => {
|
// var instances = series.instanceList.concat(keyInstance).filter((item) => {
|
||||||
if (set.has(item)) {
|
// if (set.has(item)) {
|
||||||
return true
|
// return true
|
||||||
} else {
|
// } else {
|
||||||
set.add(item)
|
// set.add(item)
|
||||||
return false
|
// return false
|
||||||
}
|
// }
|
||||||
})
|
// })
|
||||||
instances.map(item => {
|
// instances.map(item => {
|
||||||
obj[item] = { seriesId: series.seriesId, studyIndex: series.studyIndex, seriesIndex: series.seriesIndex }
|
// obj[item] = { seriesId: series.seriesId, studyIndex: series.studyIndex, seriesIndex: series.seriesIndex }
|
||||||
})
|
// })
|
||||||
return obj
|
// return obj
|
||||||
}
|
// }
|
||||||
|
|
||||||
const state = getDefaultState
|
const state = getDefaultState
|
||||||
|
|
||||||
|
@ -775,7 +776,17 @@ const actions = {
|
||||||
resolve()
|
resolve()
|
||||||
} else {
|
} else {
|
||||||
var studyList = []
|
var studyList = []
|
||||||
|
var keyImages = []
|
||||||
getReadingVisitStudyList(obj.trialId, obj.subjectVisitId, obj.visitTaskId).then(res => {
|
getReadingVisitStudyList(obj.trialId, obj.subjectVisitId, obj.visitTaskId).then(res => {
|
||||||
|
const i = res.Result.findIndex(i => i.IsCriticalSequence)
|
||||||
|
if (i > -1) {
|
||||||
|
const seriesList = res.Result[i].SeriesList && res.Result[i].SeriesList
|
||||||
|
seriesList.map(i => {
|
||||||
|
i.InstanceInfoList.map(k => {
|
||||||
|
keyImages.push({ instanceId: k.Id })
|
||||||
|
})
|
||||||
|
})
|
||||||
|
}
|
||||||
res.Result.forEach((study, studyIndex) => {
|
res.Result.forEach((study, studyIndex) => {
|
||||||
const data = {}
|
const data = {}
|
||||||
data.StudyId = study.StudyId
|
data.StudyId = study.StudyId
|
||||||
|
@ -801,16 +812,22 @@ const actions = {
|
||||||
series.InstanceInfoList.forEach(instance => {
|
series.InstanceInfoList.forEach(instance => {
|
||||||
if (instance.NumberOfFrames && instance.NumberOfFrames > 1) {
|
if (instance.NumberOfFrames && instance.NumberOfFrames > 1) {
|
||||||
for (let i = 0; i < instance.NumberOfFrames; i++) {
|
for (let i = 0; i < instance.NumberOfFrames; i++) {
|
||||||
const imageId = `wadouri:${localStorage.getItem('location') !== 'USA' ? Vue.prototype.OSSclientConfig.basePath : Vue.prototype.OSSclientConfig.basePath}${instance.Path}?frame=${i}&instanceId=${instance.Id}&visitTaskId=${obj.visitTaskId}&idx=${studyIndex}|${seriesIndex}`
|
const imageId = `wadouri:${localStorage.getItem('location') !== 'USA' ? Vue.prototype.OSSclientConfig.basePath : Vue.prototype.OSSclientConfig.basePath}${instance.Path}?frame=${i}&instanceId=${instance.Id}&visitTaskId=${obj.visitTaskId}&idx=${studyIndex}|${seriesIndex}|${index}`
|
||||||
imageIds.push(imageId)
|
imageIds.push(imageId)
|
||||||
}
|
}
|
||||||
instance.ImageId = `wadouri:${localStorage.getItem('location') !== 'USA' ? Vue.prototype.OSSclientConfig.basePath : Vue.prototype.OSSclientConfig.basePath}${instance.Path}?frame=${0}&instanceId=${instance.Id}&visitTaskId=${obj.visitTaskId}&idx=${studyIndex}|${seriesIndex}`
|
instance.ImageId = `wadouri:${localStorage.getItem('location') !== 'USA' ? Vue.prototype.OSSclientConfig.basePath : Vue.prototype.OSSclientConfig.basePath}${instance.Path}?frame=${0}&instanceId=${instance.Id}&visitTaskId=${obj.visitTaskId}&idx=${studyIndex}|${seriesIndex}|${index}`
|
||||||
} else {
|
} else {
|
||||||
const imageId = `wadouri:${localStorage.getItem('location') !== 'USA' ? Vue.prototype.OSSclientConfig.basePath : Vue.prototype.OSSclientConfig.basePath}${instance.Path}?instanceId=${instance.Id}&visitTaskId=${obj.visitTaskId}&idx=${studyIndex}|${seriesIndex}`
|
const imageId = `wadouri:${localStorage.getItem('location') !== 'USA' ? Vue.prototype.OSSclientConfig.basePath : Vue.prototype.OSSclientConfig.basePath}${instance.Path}?instanceId=${instance.Id}&visitTaskId=${obj.visitTaskId}&idx=${studyIndex}|${seriesIndex}|${index}`
|
||||||
imageIds.push(imageId)
|
imageIds.push(imageId)
|
||||||
instance.ImageId = imageId
|
instance.ImageId = imageId
|
||||||
}
|
}
|
||||||
|
if (!study.IsCriticalSequence && series.IsBeMark) {
|
||||||
|
const i = keyImages.findIndex(i => i.instanceId === instance.Id)
|
||||||
|
if (i > -1) {
|
||||||
|
keyImages[i].studyIndex = studyIndex
|
||||||
|
keyImages[i].seriesIndex = seriesIndex
|
||||||
|
}
|
||||||
|
}
|
||||||
instanceList.push(instance.Id)
|
instanceList.push(instance.Id)
|
||||||
})
|
})
|
||||||
seriesList.push({
|
seriesList.push({
|
||||||
|
@ -853,6 +870,7 @@ const actions = {
|
||||||
})
|
})
|
||||||
state.visitTaskList[index].StudyList = studyList
|
state.visitTaskList[index].StudyList = studyList
|
||||||
state.visitTaskList[index].studyListInit = true
|
state.visitTaskList[index].studyListInit = true
|
||||||
|
state.visitTaskList[index].KeyImages = keyImages
|
||||||
// sessionStorage.setItem('visitTaskList', state.visitTaskList.length > 0 ? JSON.stringify(state.visitTaskList) : '')
|
// sessionStorage.setItem('visitTaskList', state.visitTaskList.length > 0 ? JSON.stringify(state.visitTaskList) : '')
|
||||||
resolve()
|
resolve()
|
||||||
}).catch(() => { resolve() })
|
}).catch(() => { resolve() })
|
||||||
|
@ -911,33 +929,107 @@ const actions = {
|
||||||
resolve()
|
resolve()
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
|
setImageLoadedProgress({ state }, obj) {
|
||||||
|
const studyIndex = parseInt(obj.idx.split('|')[0])
|
||||||
|
const seriesIndex = parseInt(obj.idx.split('|')[1])
|
||||||
|
const visitTaskIndex = parseInt(obj.idx.split('|')[2])
|
||||||
|
let pStudyIndex = null
|
||||||
|
let pSeriesIndex = null
|
||||||
|
let pSeries = null
|
||||||
|
try {
|
||||||
|
const study = state.visitTaskList[visitTaskIndex].StudyList[studyIndex]
|
||||||
|
const series = state.visitTaskList[visitTaskIndex].StudyList[studyIndex].SeriesList[seriesIndex]
|
||||||
|
const keyImages = state.visitTaskList[visitTaskIndex].KeyImages
|
||||||
|
if (study.IsCriticalSequence) {
|
||||||
|
const i = keyImages.findIndex(i => i.instanceId === obj.instanceId)
|
||||||
|
if (i > -1) {
|
||||||
|
pStudyIndex = keyImages[i].studyIndex
|
||||||
|
pSeriesIndex = keyImages[i].seriesIndex
|
||||||
|
}
|
||||||
|
} else if (series.isBeMark) {
|
||||||
|
if (keyImages.length > 0) {
|
||||||
|
pStudyIndex = 0
|
||||||
|
pSeriesIndex = 0
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (pStudyIndex !== null && pSeriesIndex !== null) {
|
||||||
|
pSeries = state.visitTaskList[visitTaskIndex].StudyList[pStudyIndex].SeriesList[pSeriesIndex]
|
||||||
|
}
|
||||||
|
|
||||||
|
var prefetchInstanceCount = series.prefetchInstanceCount
|
||||||
|
var instanceCount = series.instanceCount
|
||||||
|
var prefetchInstanceCount2 = pSeries ? pSeries.prefetchInstanceCount : null
|
||||||
|
var instanceCount2 = pSeries ? pSeries.instanceCount : null
|
||||||
|
if (series.imageloadedArr.indexOf(obj.instanceId) < 0) {
|
||||||
|
const i = state.currentLoadIns.findIndex(i => i.instanceId === obj.instanceId)
|
||||||
|
if (i > -1) {
|
||||||
|
prefetchInstanceCount = prefetchInstanceCount + obj.percentComplete - state.currentLoadIns[i].percentComplete
|
||||||
|
prefetchInstanceCount2 = prefetchInstanceCount2 !== null ? prefetchInstanceCount2 + obj.percentComplete - state.currentLoadIns[i].percentComplete : null
|
||||||
|
state.currentLoadIns[i].percentComplete = obj.percentComplete
|
||||||
|
if (obj.percentComplete >= 100) {
|
||||||
|
state.currentLoadIns.splice(i, 1)
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if (obj.percentComplete !== 100) {
|
||||||
|
state.currentLoadIns.push({ instanceId: obj.instanceId, percentComplete: obj.percentComplete })
|
||||||
|
}
|
||||||
|
prefetchInstanceCount = prefetchInstanceCount + obj.percentComplete
|
||||||
|
prefetchInstanceCount2 = prefetchInstanceCount2 !== null ? prefetchInstanceCount2 + obj.percentComplete : null
|
||||||
|
}
|
||||||
|
series.prefetchInstanceCount = prefetchInstanceCount
|
||||||
|
if (pSeries) {
|
||||||
|
pSeries.prefetchInstanceCount = prefetchInstanceCount2
|
||||||
|
}
|
||||||
|
if (obj.percentComplete >= 100) {
|
||||||
|
series.imageloadedArr.push(obj.instanceId)
|
||||||
|
if (pSeries) {
|
||||||
|
pSeries.imageloadedArr.push(obj.instanceId)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (prefetchInstanceCount >= instanceCount * 100) {
|
||||||
|
series.prefetchInstanceCount = instanceCount * 100
|
||||||
|
// 设置当前序列状态为已下载完成
|
||||||
|
series.loadStatus = true
|
||||||
|
}
|
||||||
|
if (prefetchInstanceCount2 !== null && instanceCount2 !== null && prefetchInstanceCount2 >= instanceCount2 * 100) {
|
||||||
|
pSeries.prefetchInstanceCount = instanceCount2 * 100
|
||||||
|
// 设置当前序列状态为已下载完成
|
||||||
|
pSeries.loadStatus = true
|
||||||
|
}
|
||||||
|
} catch (e) {
|
||||||
|
console.log('error')
|
||||||
|
}
|
||||||
|
},
|
||||||
setImageloadedInfo({ state }, obj) {
|
setImageloadedInfo({ state }, obj) {
|
||||||
console.log('setImageloadedInfo', obj)
|
console.log('setImageloadedInfo', obj)
|
||||||
var index = state.visitTaskList.findIndex(i => i.VisitTaskId === obj.visitTaskId)
|
// if(obj.instance === '20dd8fc9-51b0-ec63-942b-cb3006c72650')
|
||||||
// const prefetchInstanceCount = state.visitTaskList[index].StudyList[obj.studyIndex].SeriesList[obj.seriesIndex].prefetchInstanceCount
|
// var index = state.visitTaskList.findIndex(i => i.VisitTaskId === obj.visitTaskId)
|
||||||
const instanceList = state.visitTaskList[index].StudyList[obj.studyIndex].SeriesList[obj.seriesIndex].instanceList
|
// // const prefetchInstanceCount = state.visitTaskList[index].StudyList[obj.studyIndex].SeriesList[obj.seriesIndex].prefetchInstanceCount
|
||||||
const idx = state.visitTaskList[index].StudyList.findIndex(i => i.IsCriticalSequence)
|
// const instanceList = state.visitTaskList[index].StudyList[obj.studyIndex].SeriesList[obj.seriesIndex].instanceList
|
||||||
|
// const idx = state.visitTaskList[index].StudyList.findIndex(i => i.IsCriticalSequence)
|
||||||
|
|
||||||
if (!state.visitTaskList[index].StudyList[obj.studyIndex].IsCriticalSequence) {
|
// if (!state.visitTaskList[index].StudyList[obj.studyIndex].IsCriticalSequence) {
|
||||||
// 当前下载的非关键序列
|
// // 当前下载的非关键序列
|
||||||
console.log('当前下载的非关键序列')
|
// console.log('当前下载的非关键序列')
|
||||||
if (idx > -1) {
|
// if (idx > -1) {
|
||||||
const keyInstance = state.visitTaskList[index].StudyList[idx].SeriesList[0].instanceList
|
// const keyInstance = state.visitTaskList[index].StudyList[idx].SeriesList[0].instanceList
|
||||||
obj.markedImages = getKeySeriesInfo(keyInstance, state.visitTaskList[index].StudyList[obj.studyIndex].SeriesList[obj.seriesIndex])
|
// obj.markedImages = getKeySeriesInfo(keyInstance, state.visitTaskList[index].StudyList[obj.studyIndex].SeriesList[obj.seriesIndex])
|
||||||
instanceList.map(i => {
|
// instanceList.map(i => {
|
||||||
if (obj.markedImages.hasOwnProperty(i) && state.visitTaskList[index].StudyList[idx].SeriesList[0].imageloadedArr.indexOf(i) < 0) {
|
// if (obj.markedImages.hasOwnProperty(i) && state.visitTaskList[index].StudyList[idx].SeriesList[0].imageloadedArr.indexOf(i) < 0) {
|
||||||
state.visitTaskList[index].StudyList[idx].SeriesList[0].imageloadedArr.push(i)
|
// state.visitTaskList[index].StudyList[idx].SeriesList[0].imageloadedArr.push(i)
|
||||||
state.visitTaskList[index].StudyList[idx].SeriesList[0].prefetchInstanceCount = state.visitTaskList[index].StudyList[idx].SeriesList[0].prefetchInstanceCount + 100
|
// state.visitTaskList[index].StudyList[idx].SeriesList[0].prefetchInstanceCount = state.visitTaskList[index].StudyList[idx].SeriesList[0].prefetchInstanceCount + 100
|
||||||
}
|
// }
|
||||||
})
|
// })
|
||||||
if (state.visitTaskList[index].StudyList[idx].SeriesList[0].imageloadedArr >= state.visitTaskList[index].StudyList[idx].SeriesList[0].instanceCount) {
|
// if (state.visitTaskList[index].StudyList[idx].SeriesList[0].imageloadedArr >= state.visitTaskList[index].StudyList[idx].SeriesList[0].instanceCount) {
|
||||||
state.visitTaskList[index].StudyList[idx].SeriesList[0].loadStatus = true
|
// state.visitTaskList[index].StudyList[idx].SeriesList[0].loadStatus = true
|
||||||
}
|
// }
|
||||||
}
|
// }
|
||||||
}
|
// }
|
||||||
state.visitTaskList[index].StudyList[obj.studyIndex].SeriesList[obj.seriesIndex].prefetchInstanceCount = state.visitTaskList[index].StudyList[obj.studyIndex].SeriesList[obj.seriesIndex].instanceCount * 100
|
// state.visitTaskList[index].StudyList[obj.studyIndex].SeriesList[obj.seriesIndex].prefetchInstanceCount = state.visitTaskList[index].StudyList[obj.studyIndex].SeriesList[obj.seriesIndex].instanceCount * 100
|
||||||
state.visitTaskList[index].StudyList[obj.studyIndex].SeriesList[obj.seriesIndex].imageloadedArr = instanceList
|
// state.visitTaskList[index].StudyList[obj.studyIndex].SeriesList[obj.seriesIndex].imageloadedArr = instanceList
|
||||||
state.visitTaskList[index].StudyList[obj.studyIndex].SeriesList[obj.seriesIndex].loadStatus = true
|
// state.visitTaskList[index].StudyList[obj.studyIndex].SeriesList[obj.seriesIndex].loadStatus = true
|
||||||
// const imageloadedArr = state.visitTaskList[index].StudyList[obj.studyIndex].SeriesList[obj.seriesIndex].imageloadedArr
|
// const imageloadedArr = state.visitTaskList[index].StudyList[obj.studyIndex].SeriesList[obj.seriesIndex].imageloadedArr
|
||||||
// if (imageloadedArr.indexOf())
|
// if (imageloadedArr.indexOf())
|
||||||
|
|
||||||
|
|
|
@ -8,12 +8,12 @@
|
||||||
|
|
||||||
<div v-if="(visitTaskList.length > 0)" style="display: flex;flex-direction: row;">
|
<div v-if="(visitTaskList.length > 0)" style="display: flex;flex-direction: row;">
|
||||||
<div
|
<div
|
||||||
v-for="s in visitTaskList"
|
v-for="(s,index) in visitTaskList"
|
||||||
:key="s.VisitTaskId"
|
:key="s.VisitTaskId"
|
||||||
class="visit-item"
|
class="visit-item"
|
||||||
:class="{'visit-item-active': activeTaskVisitId==s.VisitTaskId}"
|
:class="{'visit-item-active': activeTaskVisitId==s.VisitTaskId}"
|
||||||
|
|
||||||
@click.prevent="handleClick(s)"
|
@click.prevent="handleClick(s,index)"
|
||||||
>{{ s.TaskBlindName }}</div>
|
>{{ s.TaskBlindName }}</div>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
@ -72,6 +72,13 @@ import DicomEvent from './DicomEvent'
|
||||||
import store from '@/store'
|
import store from '@/store'
|
||||||
import { getToken } from '@/utils/auth'
|
import { getToken } from '@/utils/auth'
|
||||||
import { mapGetters } from 'vuex'
|
import { mapGetters } from 'vuex'
|
||||||
|
import * as dicomParser from 'dicom-parser'
|
||||||
|
import * as cornerstone from 'cornerstone-core'
|
||||||
|
import * as cornerstoneWADOImageLoader from 'cornerstone-wado-image-loader'
|
||||||
|
cornerstoneWADOImageLoader.external.dicomParser = dicomParser
|
||||||
|
cornerstoneWADOImageLoader.external.cornerstone = cornerstone
|
||||||
|
const maximumSizeInBytes = 1024 * 1024 * 1024 * 6
|
||||||
|
cornerstone.imageCache.setMaximumSizeBytes(maximumSizeInBytes)
|
||||||
export default {
|
export default {
|
||||||
name: 'ReadPage',
|
name: 'ReadPage',
|
||||||
components: {
|
components: {
|
||||||
|
@ -210,14 +217,20 @@ export default {
|
||||||
this.$refs[this.activeTaskVisitId][0].selectSeries(data)
|
this.$refs[this.activeTaskVisitId][0].selectSeries(data)
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
|
cornerstone.events.addEventListener('cornerstoneimageloadprogress', this.cornerstoneimageloadprogress)
|
||||||
|
window.addEventListener('beforeunload', e => {
|
||||||
|
cornerstone.imageCache.purgeCache()
|
||||||
|
})
|
||||||
},
|
},
|
||||||
beforeDestroy() {
|
beforeDestroy() {
|
||||||
|
cornerstone.imageCache.purgeCache()
|
||||||
DicomEvent.$off('getNextVisitInfo')
|
DicomEvent.$off('getNextVisitInfo')
|
||||||
DicomEvent.$off('toggleSeries')
|
DicomEvent.$off('toggleSeries')
|
||||||
DicomEvent.$off('isCanActiveNoneDicomTool')
|
DicomEvent.$off('isCanActiveNoneDicomTool')
|
||||||
DicomEvent.$off('removeNoneDicomMeasureData')
|
DicomEvent.$off('removeNoneDicomMeasureData')
|
||||||
DicomEvent.$off('addNoneDicomMeasureData')
|
DicomEvent.$off('addNoneDicomMeasureData')
|
||||||
DicomEvent.$off('selectSeries')
|
DicomEvent.$off('selectSeries')
|
||||||
|
window.removeEventListener('beforeunload', e => { cornerstone.imageCache.purgeCache() })
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
async getVisitInfo() {
|
async getVisitInfo() {
|
||||||
|
@ -488,6 +501,16 @@ export default {
|
||||||
seriesInfo = this.getLinkedSeries(baseSeries, visitTaskId, visitTaskIdx)
|
seriesInfo = this.getLinkedSeries(baseSeries, visitTaskId, visitTaskIdx)
|
||||||
}
|
}
|
||||||
return seriesInfo
|
return seriesInfo
|
||||||
|
},
|
||||||
|
cornerstoneimageloadprogress(e) {
|
||||||
|
const imageId = e.detail.imageId
|
||||||
|
const params = {}
|
||||||
|
const searchParams = new URLSearchParams(imageId.split('?')[1])
|
||||||
|
for (const [key, value] of searchParams.entries()) {
|
||||||
|
params[key] = value
|
||||||
|
}
|
||||||
|
params.percentComplete = e.detail.percentComplete
|
||||||
|
store.dispatch('reading/setImageLoadedProgress', params)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -158,18 +158,13 @@
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
<script>
|
<script>
|
||||||
import * as dicomParser from 'dicom-parser'
|
// import * as cornerstone from 'cornerstone-core'
|
||||||
import * as cornerstone from 'cornerstone-core'
|
|
||||||
import * as cornerstoneWADOImageLoader from 'cornerstone-wado-image-loader'
|
|
||||||
import requestPoolManager from '@/utils/request-pool'
|
import requestPoolManager from '@/utils/request-pool'
|
||||||
import DicomEvent from './DicomEvent'
|
import DicomEvent from './DicomEvent'
|
||||||
import { mapGetters } from 'vuex'
|
import { mapGetters } from 'vuex'
|
||||||
import store from '@/store'
|
import store from '@/store'
|
||||||
import SrList from './SrList'
|
import SrList from './SrList'
|
||||||
cornerstoneWADOImageLoader.external.dicomParser = dicomParser
|
|
||||||
cornerstoneWADOImageLoader.external.cornerstone = cornerstone
|
|
||||||
const maximumSizeInBytes = 1024 * 1024 * 1024 * 6
|
|
||||||
cornerstone.imageCache.setMaximumSizeBytes(maximumSizeInBytes)
|
|
||||||
export default {
|
export default {
|
||||||
name: 'StudyList',
|
name: 'StudyList',
|
||||||
components: { SrList },
|
components: { SrList },
|
||||||
|
@ -271,18 +266,18 @@ export default {
|
||||||
// }
|
// }
|
||||||
// })
|
// })
|
||||||
// const debouncedInputHandler = this.debounce(this.cornerstoneimageloadprogress, 100)
|
// const debouncedInputHandler = this.debounce(this.cornerstoneimageloadprogress, 100)
|
||||||
cornerstone.events.addEventListener('cornerstoneimageloadprogress', this.cornerstoneimageloadprogress)
|
// cornerstone.events.addEventListener('cornerstoneimageloadprogress', this.cornerstoneimageloadprogress)
|
||||||
cornerstone.events.addEventListener('cornerstoneimageloaded', this.cornerstoneImageLoaded)
|
// cornerstone.events.addEventListener('cornerstoneimageloaded', this.cornerstoneImageLoaded)
|
||||||
// cornerstone.events.addEventListener('cornerstoneimagecachefull', this.cornerstoneimagecachefull)
|
// cornerstone.events.addEventListener('cornerstoneimagecachefull', this.cornerstoneimagecachefull)
|
||||||
// cornerstone.events.addEventListener('cornerstoneimagecachechanged', this.cornerstoneimagecachechanged)
|
// cornerstone.events.addEventListener('cornerstoneimagecachechanged', this.cornerstoneimagecachechanged)
|
||||||
window.addEventListener('beforeunload', e => {
|
// window.addEventListener('beforeunload', e => {
|
||||||
cornerstone.imageCache.purgeCache()
|
// cornerstone.imageCache.purgeCache()
|
||||||
})
|
// })
|
||||||
},
|
},
|
||||||
beforeDestroy() {
|
beforeDestroy() {
|
||||||
cornerstone.imageCache.purgeCache()
|
// cornerstone.imageCache.purgeCache()
|
||||||
DicomEvent.$off('refreshStudyListMeasureData')
|
DicomEvent.$off('refreshStudyListMeasureData')
|
||||||
window.removeEventListener('beforeunload', e => { cornerstone.imageCache.purgeCache() })
|
// window.removeEventListener('beforeunload', e => { cornerstone.imageCache.purgeCache() })
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
debounce(fn, delay) {
|
debounce(fn, delay) {
|
||||||
|
@ -709,13 +704,14 @@ export default {
|
||||||
},
|
},
|
||||||
showMultiFrames(studyIndex, series, seriesIndex, instanceInfo) {
|
showMultiFrames(studyIndex, series, seriesIndex, instanceInfo) {
|
||||||
this.currentSeriesIndex = seriesIndex
|
this.currentSeriesIndex = seriesIndex
|
||||||
|
var idx = this.visitTaskList.findIndex(i => i.VisitTaskId === this.visitTaskId)
|
||||||
const imageIds = []
|
const imageIds = []
|
||||||
if (instanceInfo.NumberOfFrames && instanceInfo.NumberOfFrames > 1) {
|
if (instanceInfo.NumberOfFrames && instanceInfo.NumberOfFrames > 1) {
|
||||||
for (let j = 0; j < instanceInfo.NumberOfFrames; j++) {
|
for (let j = 0; j < instanceInfo.NumberOfFrames; j++) {
|
||||||
imageIds.push(`wadouri:${localStorage.getItem('location') !== 'USA' ? this.OSSclientConfig.basePath : this.OSSclientConfig.basePath}${instanceInfo.Path}?frame=${j}&instanceId=${instanceInfo.Id}&visitTaskId=${this.visitTaskId}&idx=${studyIndex}|${seriesIndex}`)
|
imageIds.push(`wadouri:${localStorage.getItem('location') !== 'USA' ? this.OSSclientConfig.basePath : this.OSSclientConfig.basePath}${instanceInfo.Path}?frame=${j}&instanceId=${instanceInfo.Id}&visitTaskId=${this.visitTaskId}&idx=${studyIndex}|${seriesIndex}|${idx}`)
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
imageIds.push(`wadouri:${localStorage.getItem('location') !== 'USA' ? this.OSSclientConfig.basePath : this.OSSclientConfig.basePath}${instanceInfo.Path}?instanceId=${instanceInfo.Id}&visitTaskId=${this.visitTaskId}&idx=${studyIndex}|${seriesIndex}`)
|
imageIds.push(`wadouri:${localStorage.getItem('location') !== 'USA' ? this.OSSclientConfig.basePath : this.OSSclientConfig.basePath}${instanceInfo.Path}?instanceId=${instanceInfo.Id}&visitTaskId=${this.visitTaskId}&idx=${studyIndex}|${seriesIndex}|${idx}`)
|
||||||
}
|
}
|
||||||
this.studyIndex = studyIndex
|
this.studyIndex = studyIndex
|
||||||
this.seriesIndex = seriesIndex
|
this.seriesIndex = seriesIndex
|
||||||
|
@ -907,137 +903,6 @@ export default {
|
||||||
console.log('stopLoadSeries')
|
console.log('stopLoadSeries')
|
||||||
requestPoolManager.removeTask(series.seriesId)
|
requestPoolManager.removeTask(series.seriesId)
|
||||||
this.$set(this.studyList[studyIndex].SeriesList[seriesIndex], 'isLoading', false)
|
this.$set(this.studyList[studyIndex].SeriesList[seriesIndex], 'isLoading', false)
|
||||||
},
|
|
||||||
async imageLoaded(image, seriesUid) {
|
|
||||||
// await store.dispatch('reading/updateStudyList', { visitTaskId: image.visitTaskId, imageId: image.imageId, seriesUid })
|
|
||||||
// console.log(this.studyList[image.studyIndex].SeriesList[image.seriesIndex])
|
|
||||||
if (image.studyIndex > -1 && image.seriesIndex > -1) {
|
|
||||||
var prefetchInstanceCount = this.studyList[image.studyIndex].SeriesList[image.seriesIndex].prefetchInstanceCount
|
|
||||||
var instanceCount = this.studyList[image.studyIndex].SeriesList[image.seriesIndex].instanceCount
|
|
||||||
if (this.studyList[image.studyIndex].SeriesList[image.seriesIndex].imageloadedArr.indexOf(image.imageId) < 0) {
|
|
||||||
this.studyList[image.studyIndex].SeriesList[image.seriesIndex].imageloadedArr.push(image.imageId)
|
|
||||||
prefetchInstanceCount = prefetchInstanceCount + 1
|
|
||||||
this.studyList[image.studyIndex].SeriesList[image.seriesIndex].prefetchInstanceCount = prefetchInstanceCount
|
|
||||||
}
|
|
||||||
if (prefetchInstanceCount >= instanceCount) {
|
|
||||||
this.studyList[image.studyIndex].SeriesList[image.seriesIndex].prefetchInstanceCount = this.studyList[image.studyIndex].SeriesList[image.seriesIndex].instanceCount
|
|
||||||
// 设置当前序列状态为已下载完成
|
|
||||||
this.studyList[image.studyIndex].SeriesList[image.seriesIndex].loadStatus = true
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// store.dispatch('reading/updateSeriesList', { visitTaskindex: this.visitTaskIdx, studyIndex: image.studyIndex, seriesIndex: image.seriesIndex, imageId: image.imageId })
|
|
||||||
},
|
|
||||||
// instance下载成功回调
|
|
||||||
async cornerstoneImageLoaded(e) {
|
|
||||||
// var idx = this.visitTaskList.findIndex(i => i.VisitTaskId === this.visitTaskId)
|
|
||||||
// if (idx === -1) return
|
|
||||||
// this.studyList = this.visitTaskList[idx].StudyList
|
|
||||||
// if (!this.studyList || this.studyList.length === 0) {
|
|
||||||
// return
|
|
||||||
// }
|
|
||||||
// if (!this.visitTaskList[idx].IsInit) {
|
|
||||||
// const loading = this.$loading({ fullscreen: true })
|
|
||||||
// await store.dispatch('reading/getMeasuredData', this.visitTaskList[idx].VisitTaskId)
|
|
||||||
// await store.dispatch('reading/getStudyInfo', { trialId: this.trialId, subjectVisitId: this.visitTaskList[idx].VisitId, visitTaskId: this.visitTaskList[idx].VisitTaskId, taskBlindName: this.visitTaskList[idx].TaskBlindName })
|
|
||||||
// await store.dispatch('reading/getReadingQuestionAndAnswer', { trialId: this.trialId, visitTaskId: this.visitTaskList[idx].VisitTaskId })
|
|
||||||
// await store.dispatch('reading/getDicomReadingQuestionAnswer', { trialId: this.trialId, visitTaskId: this.visitTaskList[idx].VisitTaskId })
|
|
||||||
// await store.dispatch('reading/setStatus', { visitTaskId: this.visitTaskList[idx].VisitTaskId })
|
|
||||||
// loading.close()
|
|
||||||
// }
|
|
||||||
// await store.dispatch('reading/updateStudyList', { visitTaskId: this.visitTaskId, imageId: e.detail.image.imageId, seriesUid: e.detail.image.data.string('x0020000e') })
|
|
||||||
// const uri = e.detail.image.sharedCacheKey
|
|
||||||
// const index = this.cachedImages.findIndex(item => item.uri === uri)
|
|
||||||
// if (index === -1) {
|
|
||||||
// this.cachedImages.push({ uri: uri, timestamp: new Date().getTime() })
|
|
||||||
// } else {
|
|
||||||
// this.cachedImages[index].timestamp = new Date().getTime()
|
|
||||||
// }
|
|
||||||
// var imageId = e.detail.image.imageId
|
|
||||||
// var seriesUid = e.detail.image.data.string('x0020000e')
|
|
||||||
// var studyIndex = -1
|
|
||||||
// var seriesIndex = -1
|
|
||||||
// for (let i = 0; i < this.studyList.length; ++i) {
|
|
||||||
// for (let j = 0; j < this.studyList[i].SeriesList.length; ++j) {
|
|
||||||
// if (this.studyList[i].SeriesList[j].seriesUid === seriesUid) {
|
|
||||||
// studyIndex = i
|
|
||||||
// seriesIndex = j
|
|
||||||
// break
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
// if (studyIndex > 0) break
|
|
||||||
// }
|
|
||||||
// if (seriesIndex < 0) return
|
|
||||||
|
|
||||||
// const imageIdIndex = this.studyList[studyIndex].SeriesList[seriesIndex].imageIds.indexOf(imageId)
|
|
||||||
// if (imageIdIndex < 0) return
|
|
||||||
// if (this.studyList[studyIndex].SeriesList[seriesIndex].imageloadedArr.indexOf(imageId) < 0) {
|
|
||||||
// if (this.studyList[studyIndex].SeriesList[seriesIndex].prefetchInstanceCount >= this.studyList[studyIndex].SeriesList[seriesIndex].instanceCount) {
|
|
||||||
// // 设置当前序列状态为已下载完成
|
|
||||||
// this.studyList[studyIndex].SeriesList[seriesIndex].loadStatus = true
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
},
|
|
||||||
cornerstoneimageloadprogress(e) {
|
|
||||||
const imageId = e.detail.imageId
|
|
||||||
const params = {}
|
|
||||||
const searchParams = new URLSearchParams(imageId.split('?')[1])
|
|
||||||
for (const [key, value] of searchParams.entries()) {
|
|
||||||
params[key] = value
|
|
||||||
}
|
|
||||||
if (this.visitTaskId !== params.visitTaskId) return
|
|
||||||
const percentComplete = e.detail.percentComplete
|
|
||||||
const studyIndex = parseInt(params.idx.split('|')[0])
|
|
||||||
const seriesIndex = parseInt(params.idx.split('|')[1])
|
|
||||||
if (this.markedImages.hasOwnProperty(params.instanceId) && percentComplete >= 100) {
|
|
||||||
const markedImage = this.markedImages[params.instanceId]
|
|
||||||
const pStudyIndex = this.studyList[studyIndex].IsCriticalSequence ? markedImage.studyIndex : 0
|
|
||||||
const pSeriesIndex = this.studyList[studyIndex].IsCriticalSequence ? markedImage.seriesIndex : 0
|
|
||||||
const imageloadedArr = this.studyList[pStudyIndex].SeriesList[pSeriesIndex].imageloadedArr
|
|
||||||
if (imageloadedArr.indexOf(params.instanceId) < 0) {
|
|
||||||
this.studyList[pStudyIndex].SeriesList[pSeriesIndex].imageloadedArr.push(params.instanceId)
|
|
||||||
this.studyList[pStudyIndex].SeriesList[pSeriesIndex].prefetchInstanceCount = this.studyList[pStudyIndex].SeriesList[pSeriesIndex].prefetchInstanceCount + 100
|
|
||||||
if (this.studyList[pStudyIndex].SeriesList[pSeriesIndex].imageloadedArr.length >= this.studyList[pStudyIndex].SeriesList[pSeriesIndex].instanceCount) {
|
|
||||||
this.studyList[pStudyIndex].SeriesList[pSeriesIndex].prefetchInstanceCount = this.studyList[pStudyIndex].SeriesList[pSeriesIndex].instanceCount * 100
|
|
||||||
this.studyList[pStudyIndex].SeriesList[pSeriesIndex].loadStatus = true
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
var prefetchInstanceCount = this.studyList[studyIndex].SeriesList[seriesIndex].prefetchInstanceCount
|
|
||||||
var instanceCount = this.studyList[studyIndex].SeriesList[seriesIndex].instanceCount
|
|
||||||
if (this.studyList[studyIndex].SeriesList[seriesIndex].imageloadedArr.indexOf(params.instanceId) < 0) {
|
|
||||||
const i = this.currentLoadIns.findIndex(i => i.instanceId === params.instanceId)
|
|
||||||
if (i > -1) {
|
|
||||||
prefetchInstanceCount = prefetchInstanceCount + percentComplete - this.currentLoadIns[i].percentComplete
|
|
||||||
this.currentLoadIns[i].percentComplete = percentComplete
|
|
||||||
if (percentComplete >= 100) {
|
|
||||||
this.currentLoadIns.splice(i, 1)
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
if (percentComplete !== 100) {
|
|
||||||
this.currentLoadIns.push({ instanceId: params.instanceId, percentComplete })
|
|
||||||
}
|
|
||||||
prefetchInstanceCount = prefetchInstanceCount + percentComplete
|
|
||||||
}
|
|
||||||
this.studyList[studyIndex].SeriesList[seriesIndex].prefetchInstanceCount = prefetchInstanceCount
|
|
||||||
if (percentComplete >= 100) {
|
|
||||||
this.studyList[studyIndex].SeriesList[seriesIndex].imageloadedArr.push(params.instanceId)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (prefetchInstanceCount >= instanceCount * 100) {
|
|
||||||
this.studyList[studyIndex].SeriesList[seriesIndex].prefetchInstanceCount = instanceCount * 100
|
|
||||||
// 设置当前序列状态为已下载完成
|
|
||||||
this.studyList[studyIndex].SeriesList[seriesIndex].loadStatus = true
|
|
||||||
}
|
|
||||||
},
|
|
||||||
cornerstoneimagecachechanged(e) {
|
|
||||||
const cacheInfo = cornerstone.imageCache.getCacheInfo()
|
|
||||||
console.log(cacheInfo)
|
|
||||||
},
|
|
||||||
cornerstoneimagecachefull(e) {
|
|
||||||
console.log('超过内存了')
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -74,6 +74,13 @@ import DicomEvent from "./../components/DicomEvent";
|
||||||
import store from "@/store";
|
import store from "@/store";
|
||||||
import { getToken } from "@/utils/auth";
|
import { getToken } from "@/utils/auth";
|
||||||
import { mapGetters } from "vuex";
|
import { mapGetters } from "vuex";
|
||||||
|
import * as dicomParser from 'dicom-parser'
|
||||||
|
import * as cornerstone from 'cornerstone-core'
|
||||||
|
import * as cornerstoneWADOImageLoader from 'cornerstone-wado-image-loader'
|
||||||
|
cornerstoneWADOImageLoader.external.dicomParser = dicomParser
|
||||||
|
cornerstoneWADOImageLoader.external.cornerstone = cornerstone
|
||||||
|
const maximumSizeInBytes = 1024 * 1024 * 1024 * 6
|
||||||
|
cornerstone.imageCache.setMaximumSizeBytes(maximumSizeInBytes)
|
||||||
export default {
|
export default {
|
||||||
name: "CustomizeReadPage",
|
name: "CustomizeReadPage",
|
||||||
components: {
|
components: {
|
||||||
|
@ -229,6 +236,10 @@ export default {
|
||||||
this.$refs[this.activeTaskVisitId][0].selectSeries(data);
|
this.$refs[this.activeTaskVisitId][0].selectSeries(data);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
cornerstone.events.addEventListener('cornerstoneimageloadprogress', this.cornerstoneimageloadprogress)
|
||||||
|
window.addEventListener('beforeunload', e => {
|
||||||
|
cornerstone.imageCache.purgeCache()
|
||||||
|
})
|
||||||
},
|
},
|
||||||
beforeDestroy() {
|
beforeDestroy() {
|
||||||
DicomEvent.$off("getNextVisitInfo");
|
DicomEvent.$off("getNextVisitInfo");
|
||||||
|
@ -237,6 +248,7 @@ export default {
|
||||||
DicomEvent.$off("removeNoneDicomMeasureData");
|
DicomEvent.$off("removeNoneDicomMeasureData");
|
||||||
DicomEvent.$off("addNoneDicomMeasureData");
|
DicomEvent.$off("addNoneDicomMeasureData");
|
||||||
DicomEvent.$off("selectSeries");
|
DicomEvent.$off("selectSeries");
|
||||||
|
window.removeEventListener('beforeunload', e => { cornerstone.imageCache.purgeCache() })
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
async getVisitInfo() {
|
async getVisitInfo() {
|
||||||
|
@ -646,6 +658,16 @@ export default {
|
||||||
}
|
}
|
||||||
return seriesInfo;
|
return seriesInfo;
|
||||||
},
|
},
|
||||||
|
cornerstoneimageloadprogress(e) {
|
||||||
|
const imageId = e.detail.imageId
|
||||||
|
const params = {}
|
||||||
|
const searchParams = new URLSearchParams(imageId.split('?')[1])
|
||||||
|
for (const [key, value] of searchParams.entries()) {
|
||||||
|
params[key] = value
|
||||||
|
}
|
||||||
|
params.percentComplete = e.detail.percentComplete
|
||||||
|
store.dispatch('reading/setImageLoadedProgress', params)
|
||||||
|
}
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
</script>
|
</script>
|
||||||
|
|
|
@ -157,18 +157,11 @@
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
<script>
|
<script>
|
||||||
import * as dicomParser from 'dicom-parser'
|
|
||||||
import * as cornerstone from 'cornerstone-core'
|
|
||||||
import * as cornerstoneWADOImageLoader from 'cornerstone-wado-image-loader'
|
|
||||||
import requestPoolManager from '@/utils/request-pool'
|
import requestPoolManager from '@/utils/request-pool'
|
||||||
import DicomEvent from './../components/DicomEvent'
|
import DicomEvent from './../components/DicomEvent'
|
||||||
import { mapGetters } from 'vuex'
|
import { mapGetters } from 'vuex'
|
||||||
import store from '@/store'
|
import store from '@/store'
|
||||||
import SrList from './../components/SrList'
|
import SrList from './../components/SrList'
|
||||||
cornerstoneWADOImageLoader.external.dicomParser = dicomParser
|
|
||||||
cornerstoneWADOImageLoader.external.cornerstone = cornerstone
|
|
||||||
const maximumSizeInBytes = 1024 * 1024 * 1024 * 6 // 1 GB
|
|
||||||
cornerstone.imageCache.setMaximumSizeBytes(maximumSizeInBytes)
|
|
||||||
export default {
|
export default {
|
||||||
name: 'StudyList',
|
name: 'StudyList',
|
||||||
components: { SrList },
|
components: { SrList },
|
||||||
|
@ -268,18 +261,9 @@ export default {
|
||||||
// this.studyList = this.visitTaskList[idx].StudyList
|
// this.studyList = this.visitTaskList[idx].StudyList
|
||||||
// }
|
// }
|
||||||
// })
|
// })
|
||||||
cornerstone.events.addEventListener('cornerstoneimageloadprogress', this.cornerstoneimageloadprogress)
|
|
||||||
cornerstone.events.addEventListener('cornerstoneimageloaded', this.cornerstoneImageLoaded)
|
|
||||||
// cornerstone.events.addEventListener('cornerstoneimagecachefull', this.cornerstoneimagecachefull)
|
|
||||||
// cornerstone.events.addEventListener('cornerstoneimagecachechanged', this.cornerstoneimagecachechanged)
|
|
||||||
window.addEventListener('beforeunload', e => {
|
|
||||||
cornerstone.imageCache.purgeCache()
|
|
||||||
})
|
|
||||||
|
|
||||||
},
|
},
|
||||||
beforeDestroy() {
|
beforeDestroy() {
|
||||||
cornerstone.imageCache.purgeCache()
|
|
||||||
window.removeEventListener('beforeunload', e => { cornerstone.imageCache.purgeCache() })
|
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
initStudyInfo() {
|
initStudyInfo() {
|
||||||
|
@ -850,137 +834,6 @@ export default {
|
||||||
requestPoolManager.removeTask(series.seriesId)
|
requestPoolManager.removeTask(series.seriesId)
|
||||||
this.$set(this.studyList[studyIndex].SeriesList[seriesIndex], 'isLoading', false)
|
this.$set(this.studyList[studyIndex].SeriesList[seriesIndex], 'isLoading', false)
|
||||||
},
|
},
|
||||||
async imageLoaded(image, seriesUid) {
|
|
||||||
// await store.dispatch('reading/updateStudyList', { visitTaskId: image.visitTaskId, imageId: image.imageId, seriesUid })
|
|
||||||
// console.log(this.studyList[image.studyIndex].SeriesList[image.seriesIndex])
|
|
||||||
if (image.studyIndex > -1 && image.seriesIndex > -1) {
|
|
||||||
var prefetchInstanceCount = this.studyList[image.studyIndex].SeriesList[image.seriesIndex].prefetchInstanceCount
|
|
||||||
var instanceCount = this.studyList[image.studyIndex].SeriesList[image.seriesIndex].instanceCount
|
|
||||||
if (this.studyList[image.studyIndex].SeriesList[image.seriesIndex].imageloadedArr.indexOf(image.imageId) < 0) {
|
|
||||||
this.studyList[image.studyIndex].SeriesList[image.seriesIndex].imageloadedArr.push(image.imageId)
|
|
||||||
prefetchInstanceCount = prefetchInstanceCount + 1
|
|
||||||
this.studyList[image.studyIndex].SeriesList[image.seriesIndex].prefetchInstanceCount = prefetchInstanceCount
|
|
||||||
}
|
|
||||||
if (prefetchInstanceCount >= instanceCount) {
|
|
||||||
this.studyList[image.studyIndex].SeriesList[image.seriesIndex].prefetchInstanceCount = this.studyList[image.studyIndex].SeriesList[image.seriesIndex].instanceCount
|
|
||||||
// 设置当前序列状态为已下载完成
|
|
||||||
this.studyList[image.studyIndex].SeriesList[image.seriesIndex].loadStatus = true
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// store.dispatch('reading/updateSeriesList', { visitTaskindex: this.visitTaskIdx, studyIndex: image.studyIndex, seriesIndex: image.seriesIndex, imageId: image.imageId })
|
|
||||||
},
|
|
||||||
// instance下载成功回调
|
|
||||||
async cornerstoneImageLoaded(e) {
|
|
||||||
// var idx = this.visitTaskList.findIndex(i => i.VisitTaskId === this.visitTaskId)
|
|
||||||
// if (idx === -1) return
|
|
||||||
// this.studyList = this.visitTaskList[idx].StudyList
|
|
||||||
// if (!this.studyList || this.studyList.length === 0) {
|
|
||||||
// return
|
|
||||||
// }
|
|
||||||
// if (!this.visitTaskList[idx].IsInit) {
|
|
||||||
// const loading = this.$loading({ fullscreen: true })
|
|
||||||
// await store.dispatch('reading/getMeasuredData', this.visitTaskList[idx].VisitTaskId)
|
|
||||||
// await store.dispatch('reading/getStudyInfo', { trialId: this.trialId, subjectVisitId: this.visitTaskList[idx].VisitId, visitTaskId: this.visitTaskList[idx].VisitTaskId, taskBlindName: this.visitTaskList[idx].TaskBlindName })
|
|
||||||
// await store.dispatch('reading/getReadingQuestionAndAnswer', { trialId: this.trialId, visitTaskId: this.visitTaskList[idx].VisitTaskId })
|
|
||||||
// await store.dispatch('reading/getDicomReadingQuestionAnswer', { trialId: this.trialId, visitTaskId: this.visitTaskList[idx].VisitTaskId })
|
|
||||||
// await store.dispatch('reading/setStatus', { visitTaskId: this.visitTaskList[idx].VisitTaskId })
|
|
||||||
// loading.close()
|
|
||||||
// }
|
|
||||||
// await store.dispatch('reading/updateStudyList', { visitTaskId: this.visitTaskId, imageId: e.detail.image.imageId, seriesUid: e.detail.image.data.string('x0020000e') })
|
|
||||||
// const uri = e.detail.image.sharedCacheKey
|
|
||||||
// const index = this.cachedImages.findIndex(item => item.uri === uri)
|
|
||||||
// if (index === -1) {
|
|
||||||
// this.cachedImages.push({ uri: uri, timestamp: new Date().getTime() })
|
|
||||||
// } else {
|
|
||||||
// this.cachedImages[index].timestamp = new Date().getTime()
|
|
||||||
// }
|
|
||||||
// var imageId = e.detail.image.imageId
|
|
||||||
// var seriesUid = e.detail.image.data.string('x0020000e')
|
|
||||||
// var studyIndex = -1
|
|
||||||
// var seriesIndex = -1
|
|
||||||
// for (let i = 0; i < this.studyList.length; ++i) {
|
|
||||||
// for (let j = 0; j < this.studyList[i].SeriesList.length; ++j) {
|
|
||||||
// if (this.studyList[i].SeriesList[j].seriesUid === seriesUid) {
|
|
||||||
// studyIndex = i
|
|
||||||
// seriesIndex = j
|
|
||||||
// break
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
// if (studyIndex > 0) break
|
|
||||||
// }
|
|
||||||
// if (seriesIndex < 0) return
|
|
||||||
|
|
||||||
// const imageIdIndex = this.studyList[studyIndex].SeriesList[seriesIndex].imageIds.indexOf(imageId)
|
|
||||||
// if (imageIdIndex < 0) return
|
|
||||||
// if (this.studyList[studyIndex].SeriesList[seriesIndex].imageloadedArr.indexOf(imageId) < 0) {
|
|
||||||
// if (this.studyList[studyIndex].SeriesList[seriesIndex].prefetchInstanceCount >= this.studyList[studyIndex].SeriesList[seriesIndex].instanceCount) {
|
|
||||||
// // 设置当前序列状态为已下载完成
|
|
||||||
// this.studyList[studyIndex].SeriesList[seriesIndex].loadStatus = true
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
},
|
|
||||||
cornerstoneimageloadprogress(e) {
|
|
||||||
const imageId = e.detail.imageId
|
|
||||||
const params = {}
|
|
||||||
const searchParams = new URLSearchParams(imageId.split('?')[1])
|
|
||||||
for (const [key, value] of searchParams.entries()) {
|
|
||||||
params[key] = value
|
|
||||||
}
|
|
||||||
if (this.visitTaskId !== params.visitTaskId) return
|
|
||||||
const percentComplete = e.detail.percentComplete
|
|
||||||
const studyIndex = parseInt(params.idx.split('|')[0])
|
|
||||||
const seriesIndex = parseInt(params.idx.split('|')[1])
|
|
||||||
if (this.markedImages.hasOwnProperty(params.instanceId) && percentComplete >= 100) {
|
|
||||||
const markedImage = this.markedImages[params.instanceId]
|
|
||||||
const pStudyIndex = this.studyList[studyIndex].IsCriticalSequence ? markedImage.studyIndex : 0
|
|
||||||
const pSeriesIndex = this.studyList[studyIndex].IsCriticalSequence ? markedImage.seriesIndex : 0
|
|
||||||
const imageloadedArr = this.studyList[pStudyIndex].SeriesList[pSeriesIndex].imageloadedArr
|
|
||||||
if (imageloadedArr.indexOf(params.instanceId) < 0) {
|
|
||||||
this.studyList[pStudyIndex].SeriesList[pSeriesIndex].imageloadedArr.push(params.instanceId)
|
|
||||||
this.studyList[pStudyIndex].SeriesList[pSeriesIndex].prefetchInstanceCount = this.studyList[pStudyIndex].SeriesList[pSeriesIndex].prefetchInstanceCount + 100
|
|
||||||
if (this.studyList[pStudyIndex].SeriesList[pSeriesIndex].imageloadedArr.length >= this.studyList[pStudyIndex].SeriesList[pSeriesIndex].instanceCount) {
|
|
||||||
this.studyList[pStudyIndex].SeriesList[pSeriesIndex].prefetchInstanceCount = this.studyList[pStudyIndex].SeriesList[pSeriesIndex].instanceCount * 100
|
|
||||||
this.studyList[pStudyIndex].SeriesList[pSeriesIndex].loadStatus = true
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
var prefetchInstanceCount = this.studyList[studyIndex].SeriesList[seriesIndex].prefetchInstanceCount
|
|
||||||
var instanceCount = this.studyList[studyIndex].SeriesList[seriesIndex].instanceCount
|
|
||||||
if (this.studyList[studyIndex].SeriesList[seriesIndex].imageloadedArr.indexOf(params.instanceId) < 0) {
|
|
||||||
const i = this.currentLoadIns.findIndex(i => i.instanceId === params.instanceId)
|
|
||||||
if (i > -1) {
|
|
||||||
prefetchInstanceCount = prefetchInstanceCount + percentComplete - this.currentLoadIns[i].percentComplete
|
|
||||||
this.currentLoadIns[i].percentComplete = percentComplete
|
|
||||||
if (percentComplete >= 100) {
|
|
||||||
this.currentLoadIns.splice(i, 1)
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
if (percentComplete !== 100) {
|
|
||||||
this.currentLoadIns.push({ instanceId: params.instanceId, percentComplete })
|
|
||||||
}
|
|
||||||
prefetchInstanceCount = prefetchInstanceCount + percentComplete
|
|
||||||
}
|
|
||||||
this.studyList[studyIndex].SeriesList[seriesIndex].prefetchInstanceCount = prefetchInstanceCount
|
|
||||||
if (percentComplete >= 100) {
|
|
||||||
this.studyList[studyIndex].SeriesList[seriesIndex].imageloadedArr.push(params.instanceId)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (prefetchInstanceCount >= instanceCount * 100) {
|
|
||||||
this.studyList[studyIndex].SeriesList[seriesIndex].prefetchInstanceCount = instanceCount * 100
|
|
||||||
// 设置当前序列状态为已下载完成
|
|
||||||
this.studyList[studyIndex].SeriesList[seriesIndex].loadStatus = true
|
|
||||||
}
|
|
||||||
},
|
|
||||||
cornerstoneimagecachechanged(e) {
|
|
||||||
const cacheInfo = cornerstone.imageCache.getCacheInfo()
|
|
||||||
console.log(cacheInfo)
|
|
||||||
},
|
|
||||||
cornerstoneimagecachefull(e) {
|
|
||||||
console.log('超过内存了')
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
Loading…
Reference in New Issue