Compare commits

...

2 Commits

Author SHA1 Message Date
caiyiling 23fb7be52b Merge branch 'main' of https://gitea.frp.extimaging.com/XCKJ/irc_web into main
continuous-integration/drone/push Build is passing Details
2026-08-03 14:44:37 +08:00
caiyiling 4e5c9aaf38 质控页面注册自定义metaDataProvider逻辑更改 2026-08-03 14:43:44 +08:00
4 changed files with 44 additions and 5 deletions

View File

@ -80,7 +80,7 @@
import * as cornerstone from 'cornerstone-core'
import * as cornerstoneMath from 'cornerstone-math'
import * as cornerstoneTools from 'cornerstone-tools'
import metaDataProvider from '@/utils/metaDataProvider'
import metaDataProvider, { registerImageSharedCacheKey, unregisterImageSharedCacheKeys } from '@/utils/metaDataProvider'
const scroll = cornerstoneTools.import('util/scrollToIndex')
import Hammer from 'hammerjs'
@ -211,6 +211,9 @@ export default {
this.stackScrollCallback
)
},
beforeDestroy() {
unregisterImageSharedCacheKeys(this.stack?.imageIds)
},
methods: {
loadImageStack(dicomSeries, text = '') {
@ -400,6 +403,10 @@ export default {
},
onNewImage(e) {
e.detail.enabledElement.options = {}
registerImageSharedCacheKey(
e.detail.image?.imageId,
e.detail.image?.sharedCacheKey
)
var data = e.detail.image.data
this.dicomInfo.hospital = data.string('x00080080')
// let instanceInfo = this.series.instanceInfoList.find(item => item.ImageId === e.detail.image.imageId)

View File

@ -119,6 +119,25 @@ function parseImageId(imageId) {
return { scheme, url, frame };
}
const imageIdToSharedCacheKey = new Map();
export function registerImageSharedCacheKey(imageId, sharedCacheKey) {
if (!imageId || !sharedCacheKey) {
return;
}
imageIdToSharedCacheKey.set(imageId, sharedCacheKey);
}
export function unregisterImageSharedCacheKeys(imageIds) {
if (!Array.isArray(imageIds) || imageIds.length === 0) {
return;
}
imageIds.forEach((imageId) => {
if (imageId) {
imageIdToSharedCacheKey.delete(imageId);
}
});
}
function getNumberValues(dataSet, tag, minimumLength) {
const values = [];
const valueAsString = dataSet.string(tag);
@ -257,10 +276,20 @@ function getSpacingBetweenSlices(dataSet) {
}
function metaDataProvider(type, imageId) {
const parsedImageId = parseImageId(imageId);
const dataSet = cornerstoneWADOImageLoader.wadouri.dataSetCacheManager.get(
let dataSet = cornerstoneWADOImageLoader.wadouri.dataSetCacheManager.get(
parsedImageId.url
);
if (!dataSet) {
const sharedCacheKey = imageIdToSharedCacheKey.get(imageId);
if (sharedCacheKey) {
dataSet = cornerstoneWADOImageLoader.wadouri.dataSetCacheManager.get(
sharedCacheKey
);
}
}
if (!dataSet) {
return;
}
@ -421,7 +450,6 @@ function metaDataProvider(type, imageId) {
let columnPixelSpacing = null;
let rowPixelSpacing = null;
if (pixelSpacing) {
rowPixelSpacing = pixelSpacing[0];
columnPixelSpacing = pixelSpacing[1];

View File

@ -133,7 +133,7 @@ import { mapGetters } from 'vuex'
import Contextmenu from 'vue-contextmenujs'
Vue.use(Contextmenu)
import * as cornerstone from 'cornerstone-core'
import metaDataProvider from '@/utils/metaDataProvider'
import metaDataProvider, { registerImageSharedCacheKey, unregisterImageSharedCacheKeys } from '@/utils/metaDataProvider'
import * as cornerstoneMath from 'cornerstone-math'
import * as cornerstoneTools from 'cornerstone-tools'
@ -480,6 +480,7 @@ export default {
},
beforeDestroy() {
// Store.$off('getMeasureData')
unregisterImageSharedCacheKeys(this.stack?.imageIds)
DicomEvent.$off('setReadingState')
},
methods: {
@ -1279,6 +1280,7 @@ export default {
this.resetHideMeasureArr()
}
const { image } = e.detail
registerImageSharedCacheKey(image?.imageId, image?.sharedCacheKey)
const ToolStateManager = cornerstoneTools.globalImageIdSpecificToolStateManager
const imageId = image.imageId
ToolStateManager.clearImageIdToolState(imageId)

View File

@ -126,7 +126,7 @@ import { mapGetters } from 'vuex'
import Contextmenu from 'vue-contextmenujs'
Vue.use(Contextmenu)
import * as cornerstone from 'cornerstone-core'
import metaDataProvider from '@/utils/metaDataProvider'
import metaDataProvider, { registerImageSharedCacheKey, unregisterImageSharedCacheKeys } from '@/utils/metaDataProvider'
import * as cornerstoneMath from 'cornerstone-math'
import * as cornerstoneTools from 'cornerstone-tools'
@ -473,6 +473,7 @@ export default {
},
beforeDestroy() {
// Store.$off('getMeasureData')
unregisterImageSharedCacheKeys(this.stack?.imageIds)
DicomEvent.$off('setReadingState')
DicomEvent.$off('updateImage')
},
@ -1186,6 +1187,7 @@ export default {
this.resetHideMeasureArr()
}
const { image } = e.detail
registerImageSharedCacheKey(image?.imageId, image?.sharedCacheKey)
const ToolStateManager = cornerstoneTools.globalImageIdSpecificToolStateManager
const imageId = image.imageId
ToolStateManager.clearImageIdToolState(imageId)