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 cornerstone from 'cornerstone-core'
import * as cornerstoneMath from 'cornerstone-math' import * as cornerstoneMath from 'cornerstone-math'
import * as cornerstoneTools from 'cornerstone-tools' import * as cornerstoneTools from 'cornerstone-tools'
import metaDataProvider from '@/utils/metaDataProvider' import metaDataProvider, { registerImageSharedCacheKey, unregisterImageSharedCacheKeys } from '@/utils/metaDataProvider'
const scroll = cornerstoneTools.import('util/scrollToIndex') const scroll = cornerstoneTools.import('util/scrollToIndex')
import Hammer from 'hammerjs' import Hammer from 'hammerjs'
@ -211,6 +211,9 @@ export default {
this.stackScrollCallback this.stackScrollCallback
) )
}, },
beforeDestroy() {
unregisterImageSharedCacheKeys(this.stack?.imageIds)
},
methods: { methods: {
loadImageStack(dicomSeries, text = '') { loadImageStack(dicomSeries, text = '') {
@ -400,6 +403,10 @@ export default {
}, },
onNewImage(e) { onNewImage(e) {
e.detail.enabledElement.options = {} e.detail.enabledElement.options = {}
registerImageSharedCacheKey(
e.detail.image?.imageId,
e.detail.image?.sharedCacheKey
)
var data = e.detail.image.data var data = e.detail.image.data
this.dicomInfo.hospital = data.string('x00080080') this.dicomInfo.hospital = data.string('x00080080')
// let instanceInfo = this.series.instanceInfoList.find(item => item.ImageId === e.detail.image.imageId) // 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 }; 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) { function getNumberValues(dataSet, tag, minimumLength) {
const values = []; const values = [];
const valueAsString = dataSet.string(tag); const valueAsString = dataSet.string(tag);
@ -257,10 +276,20 @@ function getSpacingBetweenSlices(dataSet) {
} }
function metaDataProvider(type, imageId) { function metaDataProvider(type, imageId) {
const parsedImageId = parseImageId(imageId); const parsedImageId = parseImageId(imageId);
const dataSet = cornerstoneWADOImageLoader.wadouri.dataSetCacheManager.get( let dataSet = cornerstoneWADOImageLoader.wadouri.dataSetCacheManager.get(
parsedImageId.url parsedImageId.url
); );
if (!dataSet) {
const sharedCacheKey = imageIdToSharedCacheKey.get(imageId);
if (sharedCacheKey) {
dataSet = cornerstoneWADOImageLoader.wadouri.dataSetCacheManager.get(
sharedCacheKey
);
}
}
if (!dataSet) { if (!dataSet) {
return; return;
} }
@ -421,7 +450,6 @@ function metaDataProvider(type, imageId) {
let columnPixelSpacing = null; let columnPixelSpacing = null;
let rowPixelSpacing = null; let rowPixelSpacing = null;
if (pixelSpacing) { if (pixelSpacing) {
rowPixelSpacing = pixelSpacing[0]; rowPixelSpacing = pixelSpacing[0];
columnPixelSpacing = pixelSpacing[1]; columnPixelSpacing = pixelSpacing[1];

View File

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

View File

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