diff --git a/src/store/modules/reading.js b/src/store/modules/reading.js index 1467ddc9..249444c6 100644 --- a/src/store/modules/reading.js +++ b/src/store/modules/reading.js @@ -493,29 +493,32 @@ const actions = { }) }, removeCustomizeMeasuredData({ state }, obj) { + return new Promise(async resolve => { var index = state.visitTaskList.findIndex(i => i.VisitTaskId === obj.visitTaskId) var measureData = state.visitTaskList[index].MeasureData - + console.log('removeCustomizeMeasuredData',obj, state.visitTaskList[index].MeasureData) // var uuid = obj.measureData.data.uuid // var idx = measureData.findIndex(item => item.MeasureData && item.MeasureData.data && item.MeasureData.data.uuid === uuid) // console.log(obj, measureData) - var idx = measureData.findIndex(item => item.Id === obj.questionInfo.Id) - console.log('idx', idx) - if (idx > -1) { - if (measureData[idx].FristAddTaskId) { - measureData[idx].MeasureData = '' - console.log('清除标记成功', idx) - } else { - measureData.splice(idx, 1) - console.log('移除标记成功', idx) + if (obj.questionInfo.Id) { + var idx = measureData.findIndex(item => item.Id === obj.questionInfo.Id) + console.log('idx', idx) + if (idx > -1) { + if (measureData[idx].FristAddTaskId) { + measureData[idx].MeasureData = '' + console.log('清除标记成功', idx) + } else { + measureData.splice(idx, 1) + console.log('移除标记成功', idx) + } + if (obj.questionInfo.Id && state.currentReadingTaskState < 2) { + await deleteCustomTag(obj.questionInfo.Id) + } + state.visitTaskList[index].MeasureData = measureData } - if (obj.questionInfo.Id) { - await deleteCustomTag(obj.questionInfo.Id) - } - state.visitTaskList[index].MeasureData = measureData } else if (obj.orderMarkName) { - const i = measureData.findIndex(item => item.QuestionId === obj.questionId && item.OrderMarkName === obj.orderMarkName) + const i = measureData.findIndex(item => item.MeasureData.data.remark === obj.orderMarkName) if (i > -1) { if (measureData[i].FristAddTaskId) { measureData[i].MeasureData = '' @@ -525,7 +528,7 @@ const actions = { console.log('移除标记成功', i) } } - if (obj.questionInfo.Id) { + if (obj.questionInfo.Id && state.currentReadingTaskState < 2) { await deleteCustomTag(obj.questionInfo.Id) } state.visitTaskList[index].MeasureData = measureData @@ -609,6 +612,7 @@ const actions = { var index = state.visitTaskList.findIndex(i => i.VisitTaskId === obj.visitTaskId) var measureData = state.visitTaskList[index].MeasureData console.log('addOrUpdateNonTargetMeasuredData') + // item.MeasureData.data.remark === obj.orderMarkName var idx = measureData.findIndex(item => item.QuestionId === obj.data.QuestionId && item.OrderMarkName === obj.data.OrderMarkName) if (idx > -1) { for (const k in state.visitTaskList[index].MeasureData[idx]) { @@ -651,29 +655,39 @@ const actions = { var measureData = state.visitTaskList[index].MeasureData console.log(measureData, obj) // var idx = measureData.findIndex(item => item.MeasureData.uuid === obj.data.MeasureData.data.uuid) - if (!obj.questionInfo) { - state.visitTaskList[index].MeasureData.push({ - MeasureData: obj, - SeriesId: obj.seriesId, - StudyId: obj.studyId, - InstanceId: obj.instanceId, - Id: obj.Id - }) - console.log('新增标记成功') - // sessionStorage.setItem('visitTaskList', state.visitTaskList.length > 0 ? JSON.stringify(state.visitTaskList) : '') - resolve() - } - var idx = measureData.findIndex(item => item.Id === obj.questionInfo.Id) + // if (!obj.questionInfo) { + // state.visitTaskList[index].MeasureData.push({ + // MeasureData: obj, + // SeriesId: obj.seriesId, + // StudyId: obj.studyId, + // InstanceId: obj.instanceId, + // Id: obj.Id + // }) + // console.log('新增标记成功') + // resolve() + // } + var idx = measureData.findIndex(item => item.MeasureData.data.remark === obj.measureData.data.remark) if (idx > -1) { - for (const k in state.visitTaskList[index].MeasureData[idx]) { - if (k !== 'Id' && obj.MeasureData.data[k]) { - state.visitTaskList[index].MeasureData[idx][k] = obj.MeasureData.data[k] - } - } + // state.visitTaskList[index].MeasureData[idx].InstanceId = obj.instanceId + state.visitTaskList[index].MeasureData[idx].MeasureData = obj.measureData + // state.visitTaskList[index].MeasureData[idx].SeriesId = obj.seriesId + // state.visitTaskList[index].MeasureData[idx].StudyId = obj.studyId + // for (const k in state.visitTaskList[index].MeasureData[idx]) { + // if (k !== 'Id' && obj.MeasureData.data[k]) { + // state.visitTaskList[index].MeasureData[idx][k] = obj.MeasureData.data[k] + // } + // } // state.visitTaskList[index].MeasureData[idx].MeasureData = obj.data.MeasureData console.log('更新标记成功', idx) } else { - state.visitTaskList[index].MeasureData.push(obj.MeasureData.data) + // state.visitTaskList[index].MeasureData.push(obj.MeasureData.data) + state.visitTaskList[index].MeasureData.push({ + MeasureData: obj.measureData , + SeriesId: obj.measureData.seriesId, + StudyId: obj.measureData.studyId, + InstanceId: obj.measureData.instanceId, + Id: obj.id + }) console.log('新增标记成功') } // sessionStorage.setItem('visitTaskList', state.visitTaskList.length > 0 ? JSON.stringify(state.visitTaskList) : '') diff --git a/src/views/trials/trials-panel/reading/dicoms/components/StudyList.vue b/src/views/trials/trials-panel/reading/dicoms/components/StudyList.vue index 48b25480..c3b6e358 100644 --- a/src/views/trials/trials-panel/reading/dicoms/components/StudyList.vue +++ b/src/views/trials/trials-panel/reading/dicoms/components/StudyList.vue @@ -219,7 +219,8 @@ export default { srInfo: {}, digitPlaces: 2, visitTaskIdx: -1, - currentLoadIns: [] + currentLoadIns: [], + keySeriesLoad: [] } }, @@ -911,6 +912,31 @@ export default { const studyIndex = parseInt(params.idx.split('|')[0]) const seriesIndex = parseInt(params.idx.split('|')[1]) + // 关键序列处理 + const seriesId = this.studyList[studyIndex].SeriesList[seriesIndex].seriesId + const i = this.keySeriesLoad.findIndex(i => i.seriesId === seriesId) + if (this.studyList[studyIndex].IsCriticalSequence && percentComplete >= 100) { + // 关键序列处理 + if (i === -1) { + this.keySeriesLoad.push({ seriesId: seriesId, loadCount: 1, imageIds: [imageId] }) + } else { + ++this.keySeriesLoad[i].loadCount + this.keySeriesLoad[i].imageIds.push(imageId) + } + } else if (this.studyList[studyIndex].SeriesList[seriesIndex].IsBeMark && percentComplete >= 100) { + // 带有标注的序列处理 + if (i === -1) { + this.keySeriesLoad.push({ seriesId: seriesId, loadCount: 1, imageIds: [imageId] }) + } else { + ++this.keySeriesLoad[i].loadCount + this.keySeriesLoad[i].imageIds.push(imageId) + } + } + if (!this.studyList[studyIndex].IsCriticalSequence && i > -1) { + this.studyList[studyIndex].SeriesList[seriesIndex].prefetchInstanceCount = this.studyList[studyIndex].SeriesList[seriesIndex].prefetchInstanceCount + 100 * this.keySeriesLoad[i].loadCount + this.studyList[studyIndex].SeriesList[seriesIndex].imageloadedArr = [this.studyList[studyIndex].SeriesList[seriesIndex].imageloadedArr, this.keySeriesLoad[i].imageIds] + this.keySeriesLoad.splice(i, 1) + } var prefetchInstanceCount = this.studyList[studyIndex].SeriesList[seriesIndex].prefetchInstanceCount var instanceCount = this.studyList[studyIndex].SeriesList[seriesIndex].instanceCount if (this.studyList[studyIndex].SeriesList[seriesIndex].imageloadedArr.indexOf(imageId) < 0) { diff --git a/src/views/trials/trials-panel/reading/dicoms/customize/CustomizeDicomCanvas.vue b/src/views/trials/trials-panel/reading/dicoms/customize/CustomizeDicomCanvas.vue index 312c853b..fc899d0d 100644 --- a/src/views/trials/trials-panel/reading/dicoms/customize/CustomizeDicomCanvas.vue +++ b/src/views/trials/trials-panel/reading/dicoms/customize/CustomizeDicomCanvas.vue @@ -559,7 +559,11 @@ export default { mouseDown(e) { this.image = e.detail.image var pointNearTool = this.pointNearTool(e) - if (this.activeToolName === 'Length' || this.activeToolName === 'Bidirectional') { + if (pointNearTool) { + e.stopImmediatePropagation() + e.stopPropagation() + e.preventDefault() + } else if (this.activeToolName === 'Length' || this.activeToolName === 'Bidirectional') { if (!e.detail.image.columnPixelSpacing || !e.detail.image.rowPixelSpacing) { // '该影像不具备测量长度所需的必要数据,不能进行长度测量。请选择其他工具进行标注。' this.$confirm(this.$t('trials:reading:warnning:msg56'), '', { @@ -572,10 +576,6 @@ export default { e.stopPropagation() e.preventDefault() } - } else if (pointNearTool) { - e.stopImmediatePropagation() - e.stopPropagation() - e.preventDefault() } }, pointNearTool(e) { @@ -606,6 +606,7 @@ export default { arr.push(i.MeasureData.data.remark) } }) + console.log(arr) return arr }, getRGBPixels(element, x, y, width, height) { @@ -994,7 +995,8 @@ export default { var markName = this.measureData[idx].MeasureData.data.remark if (this.activeToolName === 'Eraser' && this.disabledMarks.indexOf(markName) === -1) { const questionInfo = this.measureData[idx] - this.$emit('moveMeasureData', { measureData, questionInfo }) + measureData.orderMarkName = markName + this.$emit('moveMeasureData', { measureData, questionInfo, orderMarkName: markName}) } if ((this.disabledMarks.indexOf(markName) === -1 || !this.disabledMarks) && this.activeToolName !== 'Eraser') { const questionInfo = this.measureData[idx] diff --git a/src/views/trials/trials-panel/reading/dicoms/customize/CustomizeDicomViewer.vue b/src/views/trials/trials-panel/reading/dicoms/customize/CustomizeDicomViewer.vue index ff58527e..3b6793d7 100644 --- a/src/views/trials/trials-panel/reading/dicoms/customize/CustomizeDicomViewer.vue +++ b/src/views/trials/trials-panel/reading/dicoms/customize/CustomizeDicomViewer.vue @@ -1363,7 +1363,8 @@ export default { this.fps = 15 this.canvasObj[this.currentDicomCanvasIndex] = dicomSeries if (this.activeTool) { - if (dicomSeries.isCurrentTask && dicomSeries.readingTaskState < 2) { + // dicomSeries.isCurrentTask && dicomSeries.readingTaskState < 2 + if (dicomSeries.isCurrentTask) { this.$nextTick(() => { this.$refs[ `dicomCanvas${this.currentDicomCanvasIndex}` diff --git a/src/views/trials/trials-panel/reading/dicoms/customize/CustomizeMeasurementList.vue b/src/views/trials/trials-panel/reading/dicoms/customize/CustomizeMeasurementList.vue index 7da7d8d8..bf0c6354 100644 --- a/src/views/trials/trials-panel/reading/dicoms/customize/CustomizeMeasurementList.vue +++ b/src/views/trials/trials-panel/reading/dicoms/customize/CustomizeMeasurementList.vue @@ -221,7 +221,7 @@ export default { measureData.measureData.pictureBaseStr = '' if (this.readingTaskState >=2) { this.measuredDataVisible = false - store.dispatch('reading/addCustomizeMeasuredData', { visitTaskId: this.visitTaskId, ...this.measureData }) + store.dispatch('reading/addCustomizeMeasuredData', { visitTaskId: this.visitTaskId, measureData: measureData.measureData }) }else{ let params = JSON.parse(JSON.stringify(measureData)) params.measureData = JSON.stringify(measureData.measureData) @@ -244,16 +244,24 @@ export default { }, handleMeasuredDataCancel() { this.measuredDataVisible = false + DicomEvent.$emit('updateImage') }, handleMeasuredDataSave() { this.$refs.measuredDataForm.validate(valid => { if (!valid) return + // 是否同名验证 + let isValid = this.validateRemarkName(this.form.measuredDataName) + if (!isValid) { + // '存在同名标记,不允许保存!' + this.$message.error(this.$t('trials:customReading:error:validMarkName')) + return + } this.measureData.data.remark = this.form.measuredDataName this.measureData.pictureBaseStr = '' if (this.readingTaskState >=2) { this.measuredDataVisible = false this.form.measuredDataName = '' - store.dispatch('reading/addCustomizeMeasuredData', { visitTaskId: this.visitTaskId, ...this.measureData }) + store.dispatch('reading/addCustomizeMeasuredData', { visitTaskId: this.visitTaskId, measureData: this.measureData }) DicomEvent.$emit('updateImage') this.$message.success(this.$t('common:message:savedSuccessfully')) } else { @@ -262,8 +270,7 @@ export default { submitCustomTag(params).then(async (res) => { this.measuredDataVisible = false this.form.measuredDataName = '' - this.measureData.Id = res.Result - await store.dispatch('reading/addCustomizeMeasuredData', { visitTaskId: this.visitTaskId, ...this.measureData }) + await store.dispatch('reading/addCustomizeMeasuredData', { visitTaskId: this.visitTaskId, measureData: this.measureData, id: res.Result }) await store.dispatch('reading/getCustomizeMeasuredData', this.visitTaskId) DicomEvent.$emit('updateImage') this.$message.success(this.$t('common:message:savedSuccessfully')) @@ -271,6 +278,12 @@ export default { } }) }, + validateRemarkName(remark) { + var idx = this.visitTaskList.findIndex(i => i.VisitTaskId === this.visitTaskId) + var measureData = this.visitTaskList[idx].MeasureData + let i = measureData.findIndex(i=>i.MeasureData.data.remark === remark) + return i === -1 + }, // 关闭签名框 closeSignDialog(isSign, signInfo) { if (isSign) { diff --git a/src/views/trials/trials-panel/reading/dicoms/customize/CustomizeStudyList.vue b/src/views/trials/trials-panel/reading/dicoms/customize/CustomizeStudyList.vue index 657eb4db..abda6354 100644 --- a/src/views/trials/trials-panel/reading/dicoms/customize/CustomizeStudyList.vue +++ b/src/views/trials/trials-panel/reading/dicoms/customize/CustomizeStudyList.vue @@ -218,7 +218,8 @@ export default { srInfo: {}, digitPlaces: 2, visitTaskIdx: -1, - currentLoadIns: [] + currentLoadIns: [], + keySeriesLoad: [] } }, @@ -884,6 +885,31 @@ export default { if (this.visitTaskId === params.visitTaskId) { const studyIndex = params.idx.split('|')[0] const seriesIndex = params.idx.split('|')[1] + + const seriesId = this.studyList[studyIndex].SeriesList[seriesIndex].seriesId + const i = this.keySeriesLoad.findIndex(i => i.seriesId === seriesId) + if (this.studyList[studyIndex].IsCriticalSequence && percentComplete >= 100) { + // 关键序列处理 + if (i === -1) { + this.keySeriesLoad.push({ seriesId: seriesId, loadCount: 1, imageIds: [imageId] }) + } else { + ++this.keySeriesLoad[i].loadCount + this.keySeriesLoad[i].imageIds.push(imageId) + } + } else if (this.studyList[studyIndex].SeriesList[seriesIndex].IsBeMark && percentComplete >= 100) { + // 带有标注的序列处理 + if (i === -1) { + this.keySeriesLoad.push({ seriesId: seriesId, loadCount: 1, imageIds: [imageId] }) + } else { + ++this.keySeriesLoad[i].loadCount + this.keySeriesLoad[i].imageIds.push(imageId) + } + } + if (!this.studyList[studyIndex].IsCriticalSequence && i > -1) { + this.studyList[studyIndex].SeriesList[seriesIndex].prefetchInstanceCount = this.studyList[studyIndex].SeriesList[seriesIndex].prefetchInstanceCount + 100 * this.keySeriesLoad[i].loadCount + this.studyList[studyIndex].SeriesList[seriesIndex].imageloadedArr = [this.studyList[studyIndex].SeriesList[seriesIndex].imageloadedArr, this.keySeriesLoad[i].imageIds] + this.keySeriesLoad.splice(i, 1) + } var prefetchInstanceCount = this.studyList[studyIndex].SeriesList[seriesIndex].prefetchInstanceCount var instanceCount = this.studyList[studyIndex].SeriesList[seriesIndex].instanceCount if (this.studyList[studyIndex].SeriesList[seriesIndex].imageloadedArr.indexOf(imageId) < 0) {