From 6cb63bdc594d172261c86b44e070ec946298d876 Mon Sep 17 00:00:00 2001 From: wangxiaoshuang <825034831@qq.com> Date: Thu, 2 Apr 2026 14:36:15 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B5=8F=E8=A7=88=E5=99=A8=E7=AA=97=E5=8F=A3?= =?UTF-8?q?=E5=A4=A7=E5=B0=8F=E8=B0=83=E6=95=B4=E5=90=8E=EF=BC=8C=E6=B8=B2?= =?UTF-8?q?=E6=9F=93=E7=9A=84=E6=A0=87=E8=AE=B0=E3=80=81=E6=AF=94=E4=BE=8B?= =?UTF-8?q?=E5=B0=BA=E7=AD=89=E4=BD=8D=E7=BD=AE=E5=81=8F=E7=A7=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/directive/resize/index.js | 16 ++++++++++++++ src/directive/resize/resize.js | 19 +++++++++++++++++ src/main.js | 3 +++ .../reading/dicoms3D/components/ReadPage.vue | 21 +++++++++++++------ 4 files changed, 53 insertions(+), 6 deletions(-) create mode 100644 src/directive/resize/index.js create mode 100644 src/directive/resize/resize.js diff --git a/src/directive/resize/index.js b/src/directive/resize/index.js new file mode 100644 index 00000000..e9fba176 --- /dev/null +++ b/src/directive/resize/index.js @@ -0,0 +1,16 @@ +import resize from './resize' + +const install = function (Vue) { + // 绑定v-adaptive指令 + Vue.directive('resize', resize) +} + +// if (window.Vue) { +// window['adaptive'] = adaptive +// // eslint-disable-next-line no-undef +// Vue.use(install) +// } + +resize.install = install + +export default resize diff --git a/src/directive/resize/resize.js b/src/directive/resize/resize.js new file mode 100644 index 00000000..bfd081f5 --- /dev/null +++ b/src/directive/resize/resize.js @@ -0,0 +1,19 @@ +const map = new WeakMap() +const ob = new ResizeObserver(entries => { + for (const entry of entries) { + const handler = map.get(entry.target) + if (handler) { + const { inlineSize, blockSize } = entry.contentBoxSize[0] + handler({ width: inlineSize, height: blockSize }) + } + } +}) +export default { + bind(el, binding) { + map.set(el, binding.value) + ob.observe(el) + }, + unbind(el) { + ob.unobserve(el) + } +} \ No newline at end of file diff --git a/src/main.js b/src/main.js index 4ca2d123..b19e486b 100644 --- a/src/main.js +++ b/src/main.js @@ -70,6 +70,9 @@ import FB from '@/components/feedBack/index' Vue.use(FB) import FBT from '@/components/feedBackTable/index' Vue.use(FBT) +import resize from '@/directive/resize/index' +// 表格自适应指令 +Vue.use(resize) import adaptive from '@/directive/adaptive/index' // 表格自适应指令 Vue.use(adaptive) diff --git a/src/views/trials/trials-panel/reading/dicoms3D/components/ReadPage.vue b/src/views/trials/trials-panel/reading/dicoms3D/components/ReadPage.vue index e2b385f0..b8ece256 100644 --- a/src/views/trials/trials-panel/reading/dicoms3D/components/ReadPage.vue +++ b/src/views/trials/trials-panel/reading/dicoms3D/components/ReadPage.vue @@ -309,7 +309,8 @@ + @renderAnnotations="renderAnnotations" @contentMouseup="contentMouseup" v-if="readingTool === 3" + v-resize="(e) => handleSizeChange(e, `viewport-${index}`)" /> + @renderAnnotations="renderAnnotations" @contentMouseup="contentMouseup" + v-resize="(e) => handleSizeChange(e, `viewport-MPR-${index}`)" />
{ - index = index || index === 0 ? index : this.$refs[`${this.viewportKey}-${this.activeViewportIndex}`][0].series.SliceIndex - const renderingEngine = getRenderingEngine(renderingEngineId) + index = index || index === 0 ? index : this.$refs[viewportId ? viewportId : `${this.viewportKey}-${this.activeViewportIndex}`][0].series.SliceIndex renderingEngine.resize(true, false) renderingEngine.render() - this.$refs[`${this.viewportKey}-${this.activeViewportIndex}`][0].setFullScreen(index) + this.$refs[viewportId ? viewportId : `${this.viewportKey}-${this.activeViewportIndex}`][0].setFullScreen(index) clearTimeout(this.timer) this.timer = null }, 100)