From fe8398df9dbf257415f7e7f8c1b05f880823f4da Mon Sep 17 00:00:00 2001 From: wangxiaoshuang <825034831@qq.com> Date: Tue, 16 Sep 2025 14:41:07 +0800 Subject: [PATCH] =?UTF-8?q?IVUS=E5=92=8COCT=E9=98=85=E7=89=87=E5=89=8D?= =?UTF-8?q?=E5=87=86=E5=A4=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/store/getters.js | 1 + src/store/modules/reading.js | 33 +- .../reading/dicoms/components/DicomCanvas.vue | 17 +- .../trials-panel/reading/dicoms/index.vue | 307 +++++++++--------- .../components/uploadDicomFiles2.vue | 20 +- .../components/uploadNonDicomFiles.vue | 19 +- .../qc-check/components/qualityAssurance.vue | 33 +- 7 files changed, 253 insertions(+), 177 deletions(-) diff --git a/src/store/getters.js b/src/store/getters.js index 70d1a6bd..7ce48030 100644 --- a/src/store/getters.js +++ b/src/store/getters.js @@ -34,6 +34,7 @@ const getters = { paymentHistoryQuery: state => state.financials.paymentHistoryQuery, revenusQuery: state => state.financials.revenusQuery, visitTaskList: state => state.reading.visitTaskList, + BodyPart: state => state.reading.BodyPart, organList: state => state.reading.organList, seriesStack: state => state.reading.seriesStack, activeHangingAgreement: state => state.reading.activeHangingAgreement, diff --git a/src/store/modules/reading.js b/src/store/modules/reading.js index c4d547d4..b7a4d19c 100644 --- a/src/store/modules/reading.js +++ b/src/store/modules/reading.js @@ -32,7 +32,8 @@ const getDefaultState = () => { lastCanvasTaskId: '', imageQuality: null, imageQualityIssues: null, - currentLoadIns: [] + currentLoadIns: [], + BodyPart: [] } } function getQuestions(questions) { @@ -171,6 +172,28 @@ function getQuestionAnswer(questions, questionMark, answers) { return '' } } +async function getBodyPart(bodyPart, other) { + if (!bodyPart && !other) return '' + var separator = ',' + if (bodyPart.indexOf('|') > -1) { + separator = '|' + } else if (bodyPart.indexOf(',') > -1) { + separator = ',' + } else if (bodyPart.indexOf(',') > -1) { + separator = ',' + } + let BodyPart = {} + BodyPart.Bodypart = await Vue.prototype.$getBodyPart(Vue.prototype.$route.query.trialId) + var arr = bodyPart.split(separator) + var newArr = arr.map((i) => { + return Vue.prototype.$fd('Bodypart', i.trim(), 'Code', BodyPart, 'Name') + }) + if (other) { + newArr.push(other) + } + newArr = newArr.filter(Boolean) + return newArr +} // function getKeySeriesInfo(keyInstance, series) { // const obj = {} // const set = new Set() @@ -850,6 +873,14 @@ const actions = { var studyList = [] var keyImages = [] getReadingVisitStudyList(obj.trialId, obj.subjectVisitId, obj.visitTaskId).then(res => { + try { + res.Result.forEach(async item => { + let arr = await getBodyPart(item.BodyPartForEdit, item.BodyPartForEditOther) + state.BodyPart[item.StudyId] = arr + }) + } catch (err) { + console.log(err) + } const i = res.Result.findIndex(i => i.IsCriticalSequence) if (i > -1) { const seriesList = res.Result[i].SeriesList && res.Result[i].SeriesList diff --git a/src/views/trials/trials-panel/reading/dicoms/components/DicomCanvas.vue b/src/views/trials/trials-panel/reading/dicoms/components/DicomCanvas.vue index 6c60ead0..d61d5aa9 100644 --- a/src/views/trials/trials-panel/reading/dicoms/components/DicomCanvas.vue +++ b/src/views/trials/trials-panel/reading/dicoms/components/DicomCanvas.vue @@ -7,7 +7,12 @@ - + + +
+ + +
- Pos: {{ mousePosition.x ? mousePosition.x.toFixed(0) : '' }}, {{ mousePosition.y ? mousePosition.y.toFixed(0) : '' }} + Pos: {{ mousePosition.x ? mousePosition.x.toFixed(0) : '' }}, {{ mousePosition.y ? mousePosition.y.toFixed(0) : + '' }}
@@ -2004,8 +2010,13 @@ export default { e.stopImmediatePropagation() e.stopPropagation() e.preventDefault() + }, + handleViewBP(e) { + DicomEvent.$emit('previewBP', this.series.studyId) + e.stopImmediatePropagation() + e.stopPropagation() + e.preventDefault() } - } } diff --git a/src/views/trials/trials-panel/reading/dicoms/index.vue b/src/views/trials/trials-panel/reading/dicoms/index.vue index 028f9b9c..70e1f86b 100644 --- a/src/views/trials/trials-panel/reading/dicoms/index.vue +++ b/src/views/trials/trials-panel/reading/dicoms/index.vue @@ -1,57 +1,44 @@ diff --git a/src/views/trials/trials-panel/visit/crc-upload/components/uploadDicomFiles2.vue b/src/views/trials/trials-panel/visit/crc-upload/components/uploadDicomFiles2.vue index ccf53df8..a7033203 100644 --- a/src/views/trials/trials-panel/visit/crc-upload/components/uploadDicomFiles2.vue +++ b/src/views/trials/trials-panel/visit/crc-upload/components/uploadDicomFiles2.vue @@ -70,7 +70,7 @@ @@ -499,7 +499,7 @@ {{ $fd('Bodypart', bodyPart, 'Code', BodyPart, 'Name') }} + @@ -604,6 +606,7 @@ export default { BodyPartForEdit: [], SeriesCount: null, StudyTime: '', + BodyPartForEditOther: '' }, uploadQueues: dicomStore.studyList, // 上传队列 selectArr: [], // 已勾选待上传文件 @@ -709,6 +712,7 @@ export default { modality: this.studyForm.Modality, bodyPart: this.studyForm.BodyPart, StudyName: this.studyForm.StudyName, + BodyPartForEditOther: this.studyForm.BodyPartForEditOther, } updateModality(this.trialId, params) .then((res) => { @@ -1441,7 +1445,7 @@ export default { seriesInstanceUid: v.seriesUid, SOPClassUID: o.SOPClassUID, TransferSytaxUID: o.TransferSytaxUID, - MediaStorageSOPInstanceUID:o.MediaStorageSOPInstanceUID, + MediaStorageSOPInstanceUID: o.MediaStorageSOPInstanceUID, MediaStorageSOPClassUID: o.MediaStorageSOPClassUID, sopInstanceUid: o.instanceUid, instanceNumber: o.instanceNumber, @@ -1530,7 +1534,7 @@ export default { seriesInstanceUid: v.seriesUid, SOPClassUID: o.SOPClassUID, TransferSytaxUID: o.TransferSytaxUID, - MediaStorageSOPInstanceUID:o.MediaStorageSOPInstanceUID, + MediaStorageSOPInstanceUID: o.MediaStorageSOPInstanceUID, MediaStorageSOPClassUID: o.MediaStorageSOPClassUID, sopInstanceUid: o.instanceUid, instanceNumber: o.instanceNumber, @@ -1867,8 +1871,8 @@ export default { return '' } }, - getBodyPart(bodyPart) { - if (!bodyPart) return '' + getBodyPart(bodyPart, other) { + if (!bodyPart && !other) return '' var separator = ',' if (bodyPart.indexOf('|') > -1) { separator = '|' @@ -1881,6 +1885,10 @@ export default { var newArr = arr.map((i) => { return this.$fd('Bodypart', i.trim(), 'Code', this.BodyPart, 'Name') }) + if (other) { + newArr.push(other) + } + newArr = newArr.filter(Boolean) return newArr.join(' | ') }, }, diff --git a/src/views/trials/trials-panel/visit/crc-upload/components/uploadNonDicomFiles.vue b/src/views/trials/trials-panel/visit/crc-upload/components/uploadNonDicomFiles.vue index 6dc6592e..bb3219f0 100644 --- a/src/views/trials/trials-panel/visit/crc-upload/components/uploadNonDicomFiles.vue +++ b/src/views/trials/trials-panel/visit/crc-upload/components/uploadNonDicomFiles.vue @@ -24,7 +24,7 @@ @@ -163,7 +163,7 @@ {{ $fd('Bodypart', bodyPart, 'Code', BodyPart, 'Name') }} + @@ -381,6 +383,7 @@ export default { Modality: '', ImageDate: '', StudyName: '', + BodyPartForEditOther: "" }, pickerOption: { disabledDate: (time) => { @@ -484,12 +487,13 @@ export default { this.form.StudyName = '' this.form.ImageDate = '' this.form.BodyParts = [] + this.form.BodyPartForEditOther = '' this.dialogVisible = true }, // 打开比编辑弹框,并初始化数据 handleEdit(row) { this.title = this.$t('trials:uploadNonDicoms:dialogTitle:edit') - const { CodeView, Id, BodyPart, Modality, ImageDate, StudyName } = { + const { CodeView, Id, BodyPart, Modality, ImageDate, StudyName, BodyPartForEditOther } = { ...row, } this.form.CodeView = CodeView @@ -499,6 +503,7 @@ export default { this.form.StudyName = StudyName this.form.ImageDate = ImageDate this.form.BodyParts = this.form.BodyPart.split(', ') + this.form.BodyPartForEditOther = BodyPartForEditOther this.dialogVisible = true }, // 保存非Dicom检查信息 @@ -1018,8 +1023,8 @@ export default { }) window.open(routeData.href, '_blank') }, - getBodyPart(bodyPart) { - if (!bodyPart) return '' + getBodyPart(bodyPart, other) { + if (!bodyPart && !other) return '' var separator = ',' if (bodyPart.indexOf('|') > -1) { separator = '|' @@ -1032,6 +1037,10 @@ export default { var newArr = arr.map((i) => { return this.$fd('Bodypart', i.trim(), 'Code', this.BodyPart, 'Name') }) + if (other) { + newArr.push(other) + } + newArr = newArr.filter(Boolean) return newArr.join(' | ') }, // 设置已删除序列行样式 diff --git a/src/views/trials/trials-panel/visit/qc-check/components/qualityAssurance.vue b/src/views/trials/trials-panel/visit/qc-check/components/qualityAssurance.vue index fdb12e56..6c2378eb 100644 --- a/src/views/trials/trials-panel/visit/qc-check/components/qualityAssurance.vue +++ b/src/views/trials/trials-panel/visit/qc-check/components/qualityAssurance.vue @@ -100,7 +100,7 @@ {{ - getBodyPart(scope.row.BodyPartForEdit) + getBodyPart(scope.row.BodyPartForEdit, scope.row.BodyPartForEditOther) }} @@ -284,7 +284,7 @@ @@ -635,7 +635,7 @@ {{ $fd('Bodypart', bodyPart, 'Code', BodyPart, 'Name') }} + @@ -742,7 +744,7 @@ {{ $fd('Bodypart', bodyPart, 'Code', BodyPart, 'Name') }} + @@ -1018,7 +1022,8 @@ export default { BodyPartForEdit: [], SeriesCount: null, StudyTime: '', - ModifyReason: '' + ModifyReason: '', + BodyPartForEditOther: '' }, currentQCRow: {}, isAudit: false, // 审核过之后功能按钮禁用标识 @@ -1037,7 +1042,8 @@ export default { Modality: '', ImageDate: '', StudyName: '', - ModifyReason: '' + ModifyReason: '', + BodyPartForEditOther: '' }, subjectClinicalData: {}, moment, @@ -2155,7 +2161,9 @@ export default { this.$set(this.studyForm, 'Modality', row.ModalityForEdit) // this.studyForm.Modality = row.ModalityForEdit this.studyForm.BodyPartForEdit = bodyPart + // this.studyForm.BodyPartForEditOther = BodyPartForEditOther this.$set(this.studyForm, 'ModifyReason', '') + console.log(this.studyForm, 'this.studyForm') }, // 更新拍片部位/拍片类型信息 handleUpdateStudyInfo() { @@ -2171,6 +2179,7 @@ export default { modality: this.studyForm.Modality, bodyPart: this.studyForm.BodyPart, StudyName: this.studyForm.StudyName, + BodyPartForEditOther: this.studyForm.BodyPartForEditOther, } if (this.isAuditToEdit) { this.btnLoading = false @@ -2206,6 +2215,7 @@ export default { ModifyReason: this.studyForm.ModifyReason, Modality: this.studyForm.Modality, BodyPart: this.studyForm.BodyPart, + BodyPartForEditOther: this.studyForm.BodyPartForEditOther, }, signInfo } @@ -2241,7 +2251,7 @@ export default { // 打开非Dicom信息编辑框 handleEditNoneDicomInfo(row) { - const { CodeView, Id, BodyPart, Modality, ImageDate, StudyName } = { + const { CodeView, Id, BodyPart, Modality, ImageDate, StudyName, BodyPartForEditOther } = { ...row, } this.noneDicomForm.StudyName = StudyName @@ -2252,6 +2262,7 @@ export default { this.noneDicomForm.ImageDate = ImageDate this.noneDicomForm.BodyParts = BodyPart.split(', ') this.noneDicomForm.ModifyReason = null + this.noneDicomForm.BodyPartForEditOther = BodyPartForEditOther this.editNoneDicomVisible = true }, // 更新非Dicom部位/拍片类型信息 @@ -2434,8 +2445,8 @@ export default { }) this.open = window.open(routeData.href, '_blank') }, - getBodyPart(bodyPart) { - if (!bodyPart) return '' + getBodyPart(bodyPart, other) { + if (!bodyPart && !other) return '' var separator = ',' if (bodyPart.indexOf('|') > -1) { separator = '|' @@ -2448,6 +2459,10 @@ export default { var newArr = arr.map((i) => { return this.$fd('Bodypart', i.trim(), 'Code', this.BodyPart, 'Name') }) + if (other) { + newArr.push(other) + } + newArr = newArr.filter(Boolean) return newArr.join(' | ') }, openManuals() {