From 8703b284700a9be927690db918320029e28d9559 Mon Sep 17 00:00:00 2001 From: wangxiaoshuang <825034831@qq.com> Date: Mon, 26 Jan 2026 11:41:11 +0800 Subject: [PATCH 1/2] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E6=9B=B4=E6=96=B0?= =?UTF-8?q?=E7=BC=A9=E7=95=A5=E5=9B=BE=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/api/trials.js | 8 +++ src/views/dicom-show/dicom-study.vue | 79 +++++++++++++++++++++++-- src/views/dicom-show/dicom-visit.vue | 87 ++++++++++++++++++++++++++-- 3 files changed, 164 insertions(+), 10 deletions(-) diff --git a/src/api/trials.js b/src/api/trials.js index 764286a0..94baeebc 100644 --- a/src/api/trials.js +++ b/src/api/trials.js @@ -4422,4 +4422,12 @@ export function getTrialSubjectVisitMarkList(data) { method: 'post', data }) +} +// 更新缩略图 +export function updateImageResizePath(data) { + return request({ + url: `/Series/updateImageResizePath`, + method: 'post', + data + }) } \ No newline at end of file diff --git a/src/views/dicom-show/dicom-study.vue b/src/views/dicom-show/dicom-study.vue index 11529201..082cdd7f 100644 --- a/src/views/dicom-show/dicom-study.vue +++ b/src/views/dicom-show/dicom-study.vue @@ -29,8 +29,12 @@ :src="item.previewImageUrl" fit="fill" /> --> - +
+ + +
@@ -136,7 +140,7 @@ import * as cornerstone from 'cornerstone-core' import * as cornerstoneWADOImageLoader from 'cornerstone-wado-image-loader' import dicomViewer from '@/components/Dicom/DicomViewer' import { getStudyInfo, getSeriesList } from '@/api/reading' -import { getInstanceList, getPatientSeriesList, setSeriesStatus, setInstanceStatus } from '@/api/trials' +import { getInstanceList, getPatientSeriesList, setSeriesStatus, setInstanceStatus, updateImageResizePath } from '@/api/trials' import requestPoolManager from '@/utils/request-pool' import store from '@/store' @@ -247,6 +251,62 @@ export default { workSpeedclose(true) }, methods: { + async updateImageResizePath(data) { + try { + let res = await updateImageResizePath(data) + if (res.IsSuccess) { + this.$message.success(this.$t("message:tip:updateImageResizePath:success")) + } + } catch (err) { + console.log(err) + } + }, + async refreshImage(item) { + let thumbnailPath = item.previewImageUrl.split(this.OSSclientConfig.basePath)[1] + let blob = await this.dicomToPng(item.imageIds[0]) + let OSSclient = this.OSSclient + try { + let seriesRes = await OSSclient.put(thumbnailPath, blob) + if (seriesRes && seriesRes.url) { + let path = this.$getObjectName(seriesRes.url) + item.previewImageUrl = seriesRes.url + let data = { + seriesId: item.seriesId, + ImageResizePath: path + } + this.updateImageResizePath(data) + } + } catch (e) { + + } + }, + dicomToPng(imageId) { + return new Promise((resolve) => { + cornerstone.loadImage(imageId).then(async (image) => { + let width = image.columns, height = image.rows; + let canvas = document.createElement('canvas') + canvas.width = (width * 60) / height + canvas.height = 60 + if (image) { + cornerstone.renderToCanvas(canvas, image) + // 将 Canvas 图像对象转换为 PNG 格式 + let blob = await this.canvasToBlob(canvas) + resolve(blob) + } else { + resolve() + } + }) + }).catch((reason) => { + reason() + }) + }, + canvasToBlob(canvas) { + return new Promise((resolve) => { + canvas.toBlob((blob) => { + resolve(blob) + }) + }) + }, async loadStudy() { let params = {} if (this.isPacs) { @@ -905,7 +965,18 @@ export default { } - \ No newline at end of file diff --git a/src/views/trials/trials-panel/setting/reading-unit/components/QuestionsList.vue b/src/views/trials/trials-panel/setting/reading-unit/components/QuestionsList.vue index 761a293b..a5d6a063 100644 --- a/src/views/trials/trials-panel/setting/reading-unit/components/QuestionsList.vue +++ b/src/views/trials/trials-panel/setting/reading-unit/components/QuestionsList.vue @@ -43,7 +43,7 @@ />