From 032e710890422edcdb9fa3465e3ea25fb8b2dbe7 Mon Sep 17 00:00:00 2001 From: caiyiling <1321909229@qq.com> Date: Fri, 21 Mar 2025 13:09:36 +0800 Subject: [PATCH] =?UTF-8?q?=E9=98=85=E7=89=87=E5=B7=A5=E5=85=B7=E5=8F=8A?= =?UTF-8?q?=E6=8A=A5=E5=91=8A=E9=A1=B5=E6=9F=A5=E7=9C=8Bpdf=E6=9B=B4?= =?UTF-8?q?=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../components/MRIPDFF/QuestionForm.vue | 245 +++++++++--------- .../customize/CustomizeQuestionFormItem.vue | 33 ++- .../tools/Bidirectional/renderToolData.js | 6 +- .../reading/dicoms/tools/Probe/ProbeTool.js | 110 ++++++-- .../visit-review/components/ReportPage.vue | 67 +++-- .../visit-review/components/StudyList.vue | 8 +- 6 files changed, 303 insertions(+), 166 deletions(-) diff --git a/src/views/trials/trials-panel/reading/dicoms/components/MRIPDFF/QuestionForm.vue b/src/views/trials/trials-panel/reading/dicoms/components/MRIPDFF/QuestionForm.vue index 05258b59..7c10965e 100644 --- a/src/views/trials/trials-panel/reading/dicoms/components/MRIPDFF/QuestionForm.vue +++ b/src/views/trials/trials-panel/reading/dicoms/components/MRIPDFF/QuestionForm.vue @@ -18,7 +18,6 @@ - - - {{$t('trials:MRIPDFF:button:measure')}} + {{ $t('trials:MRIPDFF:button:measure') }} - - {{$t('trials:MRIPDFF:button:clear')}} + {{ $t('trials:MRIPDFF:button:clear') }} - - {{$t('trials:MRIPDFF:button:return')}} + {{ $t('trials:MRIPDFF:button:return') }} - @@ -279,7 +278,7 @@ export default { }, mounted() { this.trialId = this.$route.query.trialId - let digitPlaces = Number(localStorage.getItem('digitPlaces')) + const digitPlaces = Number(localStorage.getItem('digitPlaces')) this.digitPlaces = digitPlaces === -1 ? this.digitPlaces : digitPlaces this.initForm() DicomEvent.$on('handleImageQualityAbnormal', () => { @@ -295,26 +294,29 @@ export default { this.isMeasurableId = this.getQuestionId(1105) // const loading = this.$loading({ fullscreen: true }) this.questions.forEach(item => { - var val = this.answers[item.Id] - if (item.DictionaryCode) { - val = isNaN(parseInt(this.answers[item.Id])) ? this.answers[item.Id] : parseInt(this.answers[item.Id]) + if (this.answers.hasOwnProperty(item.Id)) { + let val = this.answers[item.Id] + if (item.DictionaryCode) { + val = isNaN(parseInt(this.answers[item.Id])) ? this.answers[item.Id] : parseInt(this.answers[item.Id]) + } + this.$set(this.questionForm, item.Id, val) + } else { + this.$set(this.questionForm, item.Id, '') } - this.$set(this.questionForm, item.Id, val) - }) this.$set(this.questionForm, 'MeasureData', this.answers.MeasureData ? JSON.parse(this.answers.MeasureData) : '') this.$set(this.questionForm, 'RowIndex', this.answers.RowIndex ? this.answers.RowIndex : '') this.$set(this.questionForm, 'RowId', this.answers.RowId ? this.answers.RowId : '') // 如果存在标记且是否可测量为否,则将是否可测量更改为是 if (this.isCurrentTask && this.readingTaskState < 2) { - let arr = JSON.parse(this.answers.TableQuestionMarkList) - let isExitsMarks = arr.findIndex(i=>i.MeasureData) > -1 + const arr = JSON.parse(this.answers.TableQuestionMarkList) + const isExitsMarks = arr.findIndex(i => i.MeasureData) > -1 if (isExitsMarks && parseInt(this.questionForm[this.isMeasurableId]) === 0) { this.$set(this.questionForm, this.isMeasurableId, 1) } } // saveTypeEnum 0:未保存过(新建病灶);1:已保存,信息不完整(随访初始化病灶/分裂病灶,通过状态判断);2:已保存,信息完整 - let isMeasurable = this.getQuestionVal(1105) + const isMeasurable = this.getQuestionVal(1105) const mean = this.getQuestionVal(1104) if (this.questionForm.saveTypeEnum !== 1 && this.isCurrentTask && this.readingTaskState < 2) { this.$set(this.questionForm, 'saveTypeEnum', parseInt(isMeasurable) === 1 && isNaN(parseFloat(mean)) ? 1 : 2) @@ -325,11 +327,11 @@ export default { this.markList = [] this.isExitsMarks = false this.isDisabledMeasurableRadio = false - let seg = this.getQuestionVal(1106) + const seg = this.getQuestionVal(1106) this.liverSeg = this.$fd('LiverSegmentation', seg) if (this.answers.TableQuestionMarkList) { - let arr = JSON.parse(this.answers.TableQuestionMarkList) - arr.map(i=>{ + const arr = JSON.parse(this.answers.TableQuestionMarkList) + arr.map(i => { if (i.MeasureData) { this.isExitsMarks = true if (!isNaN(parseInt(isMeasurable)) && parseInt(isMeasurable) === 1 && this.isCurrentTask && this.readingTaskState < 2) { @@ -337,15 +339,15 @@ export default { } i.MeasureData = JSON.parse(i.MeasureData) } - this.markList.push({tableQuestionId: i.TableQuestionId, measureData: i, saveEnum: 1}) + this.markList.push({ tableQuestionId: i.TableQuestionId, measureData: i, saveEnum: 1 }) }) } - - let newMean = this.getMean() + + const newMean = this.getMean() if (newMean !== mean) { - let meanId = this.getQuestionId(1104) - this.$set(this.questionForm, meanId, newMean ? newMean : '') - } + const meanId = this.getQuestionId(1104) + this.$set(this.questionForm, meanId, newMean || '') + } if (this.questionForm.saveTypeEnum === 1 && this.isCurrentTask && this.readingTaskState < 2) { this.setQuestions() } @@ -357,13 +359,13 @@ export default { // I II III IV V VI VII VIII // L-I-01 L-I-02 L-I-03 // L-II-01 L-II-02 L-II-03 - let segArr = ['I', 'II', 'III', 'IV', 'V', 'VI', 'VII', 'VIII'] + const segArr = ['I', 'II', 'III', 'IV', 'V', 'VI', 'VII', 'VIII'] let lessionName = '' - let segmentId = this.getQuestionId(1106) + const segmentId = this.getQuestionId(1106) let segmentVal = this.answers[segmentId] segmentVal = segmentVal ? parseInt(segmentVal) : null if (segmentVal) { - let i = questionMark === 1101 ? '01' : questionMark === 1102 ? '02' : questionMark === 1103 ? '03' : '' + const i = questionMark === 1101 ? '01' : questionMark === 1102 ? '02' : questionMark === 1103 ? '03' : '' lessionName = `${orderMark}-${segArr[segmentVal - 1]}-${i}` } return lessionName @@ -397,18 +399,18 @@ export default { this.$set(this.questionForm, 'saveTypeEnum', 1) const mean = this.getQuestionVal(1104) if (qs.QuestionMark === 1101 || qs.QuestionMark === 1102 || qs.QuestionMark === 1103) { - let newMean = this.getMean() + const newMean = this.getMean() if (newMean !== mean) { - let meanId = this.getQuestionId(1104) - this.$set(this.questionForm, meanId, newMean ? newMean : '') - } + const meanId = this.getQuestionId(1104) + this.$set(this.questionForm, meanId, newMean || '') + } } else if (qs.QuestionMark === 1105) { if (!v) { - let meanId = this.getQuestionId(1104) + const meanId = this.getQuestionId(1104) this.$set(this.questionForm, meanId, 'NE') } else { - let mean = this.getMean() - let meanId = this.getQuestionId(1104) + const mean = this.getMean() + const meanId = this.getQuestionId(1104) this.$set(this.questionForm, meanId, mean) } } @@ -418,10 +420,10 @@ export default { let mean = null let isMeasurable = this.getQuestionVal(1105) isMeasurable = !isNaN(parseInt(isMeasurable)) ? parseInt(isMeasurable) : null - let l1 = this.getQuestionVal(1101) - let l2 = this.getQuestionVal(1102) - let l3 = this.getQuestionVal(1103) - if ( isMeasurable && !isNaN(parseFloat(l1)) && !isNaN(parseFloat(l2)) && !isNaN(parseFloat(l3))) { + const l1 = this.getQuestionVal(1101) + const l2 = this.getQuestionVal(1102) + const l3 = this.getQuestionVal(1103) + if (isMeasurable && !isNaN(parseFloat(l1)) && !isNaN(parseFloat(l2)) && !isNaN(parseFloat(l3))) { const sum = l1 + l2 + l3 mean = sum / 3 return parseFloat(mean.toFixed(this.digitPlaces)) @@ -442,7 +444,7 @@ export default { // 维护标记信息 measureData.data.remark = this.getLesionName(this.orderMark, this.activeQuestionMark) } - let val = measureData.data.cachedStats.mean / 10 + const val = measureData.data.cachedStats.mean / 10 this.$set(this.questionForm, measureData.tableQuestionId, val.toFixed(this.digitPlaces)) data = { Id: '', @@ -461,17 +463,17 @@ export default { } store.dispatch('reading/addMeasuredData', { visitTaskId: this.visitTaskId, data: data }) let mean = this.getQuestionVal(1104) - let newMean = this.getMean() + const newMean = this.getMean() if (newMean !== mean) { mean = newMean - let meanId = this.getQuestionId(1104) - this.$set(this.questionForm, meanId, newMean ? newMean : '') + const meanId = this.getQuestionId(1104) + this.$set(this.questionForm, meanId, newMean || '') } const isMeasurable = this.getQuestionVal(1105) DicomEvent.$emit('refreshStudyListMeasureData') - let i = this.markList.findIndex(i=>i.tableQuestionId === measureData.tableQuestionId) + const i = this.markList.findIndex(i => i.tableQuestionId === measureData.tableQuestionId) if (i === -1) { - this.markList.push({tableQuestionId: measureData.tableQuestionId, measureData: data, saveEnum: 0}) + this.markList.push({ tableQuestionId: measureData.tableQuestionId, measureData: data, saveEnum: 0 }) } else { this.markList[i].saveEnum = 0 this.markList[i].measureData = data @@ -486,19 +488,19 @@ export default { }, addAnnotation(qs) { // 判断是否有测量数据未保存 - let i = this.markList.findIndex(i=>i.saveEnum === 0) + const i = this.markList.findIndex(i => i.saveEnum === 0) if (i > -1 && this.markList[i].measureData && this.markList[i].measureData.MeasureData) { this.$alert(this.$t('trials:MRIPDFF:message:message3')) // this.$message.warning(this.$t('trials:MRIPDFF:message:message3')) return } - let orderMarkName = this.getLesionName(this.orderMark, qs.QuestionMark) + const orderMarkName = this.getLesionName(this.orderMark, qs.QuestionMark) this.activeQuestionId = qs.Id - this.activeQuestionMark= qs.QuestionMark - DicomEvent.$emit('addAnnotation', {question: qs, locateInfo: { questionId: this.parentQsId, rowIndex: this.questionForm.RowIndex, visitTaskId: this.visitTaskId, lesionName: orderMarkName, lesionType: null, markTool: 'Probe', readingTaskState: this.readingTaskState, isMarked: true }}) + this.activeQuestionMark = qs.QuestionMark + DicomEvent.$emit('addAnnotation', { question: qs, locateInfo: { questionId: this.parentQsId, rowIndex: this.questionForm.RowIndex, visitTaskId: this.visitTaskId, lesionName: orderMarkName, lesionType: null, markTool: 'Probe', readingTaskState: this.readingTaskState, isMarked: true }}) }, getAnnotationSaveEnum(qs) { - let i = this.markList.findIndex(i=>i.tableQuestionId === qs.Id) + const i = this.markList.findIndex(i => i.tableQuestionId === qs.Id) if (i > -1) { return this.markList[i].saveEnum } else { @@ -506,7 +508,7 @@ export default { } }, getAnnotationStatus(qs) { - let i = this.markList.findIndex(i=>i.tableQuestionId === qs.Id) + const i = this.markList.findIndex(i => i.tableQuestionId === qs.Id) if (i > -1 && this.markList[i].measureData && this.markList[i].measureData.MeasureData) { return true } else { @@ -516,14 +518,13 @@ export default { getIsExitsMarks() { const isMeasurable = this.getQuestionVal(1105) if (!isNaN(parseInt(isMeasurable)) && parseInt(isMeasurable) === 1) { - return this.markList.findIndex(i=>i.measureData && i.measureData.MeasureData) > -1 ? true : false + return this.markList.findIndex(i => i.measureData && i.measureData.MeasureData) > -1 } else { return false } - }, async removeAnnotation(qs) { - let i = this.markList.findIndex(i=>i.tableQuestionId === qs.Id) + const i = this.markList.findIndex(i => i.tableQuestionId === qs.Id) DicomEvent.$emit('imageLocation', { questionId: this.parentQsId, rowIndex: this.questionForm.RowIndex, visitTaskId: this.visitTaskId, lesionName: this.markList[i].measureData.OrderMarkName, lesionType: null, markTool: 'Probe', readingTaskState: this.readingTaskState, isMarked: true }) // 是否确认清除标记? const confirm = await this.$confirm( @@ -534,27 +535,27 @@ export default { } ) if (confirm !== 'confirm') return - - let measureData = Object.assign({}, this.markList[i].measureData) + + const measureData = Object.assign({}, this.markList[i].measureData) if (measureData.Id) { - await deleteSingleTableQuestionMark({Id: measureData.Id}, 11) + await deleteSingleTableQuestionMark({ Id: measureData.Id }, 11) } // 移除缓存中的measureData - await store.dispatch('reading/removeMeasuredData', { visitTaskId: this.visitTaskId, measureData: measureData, questionId: this.parentQsId, rowIndex: this.questionForm.RowIndex, orderMarkName: measureData.OrderMarkName}) + await store.dispatch('reading/removeMeasuredData', { visitTaskId: this.visitTaskId, measureData: measureData, questionId: this.parentQsId, rowIndex: this.questionForm.RowIndex, orderMarkName: measureData.OrderMarkName }) DicomEvent.$emit('getMeasureData') this.markList[i].measureData = null this.markList[i].saveEnum = 0 // 清除测量值、清除平均值 this.$set(this.questionForm, this.markList[i].tableQuestionId, '') - let meanId = this.getQuestionId(1104) + const meanId = this.getQuestionId(1104) this.$set(this.questionForm, meanId, '') this.isDisabledMeasurableRadio = this.getIsExitsMarks() this.$set(this.questionForm, 'saveTypeEnum', 1) this.setQuestions() }, locateAnnotation(qs) { - let i = this.markList.findIndex(i=>i.tableQuestionId === qs.Id) - let measureData = this.markList[i].measureData + const i = this.markList.findIndex(i => i.tableQuestionId === qs.Id) + const measureData = this.markList[i].measureData // 定位 var markTool = 'Probe' var readingTaskState = this.readingTaskState @@ -569,18 +570,18 @@ export default { async saveAnnotation(qs) { const loading = this.$loading({ fullscreen: true }) try { - let i = this.markList.findIndex(i=>i.tableQuestionId === qs.Id) + const i = this.markList.findIndex(i => i.tableQuestionId === qs.Id) let params = {} if (i > -1 && this.markList[i].measureData && this.markList[i].measureData.MeasureData) { - let measureData = this.markList[i].measureData.MeasureData + const measureData = this.markList[i].measureData.MeasureData // 上传截图 DicomEvent.$emit('getScreenshots', { questionId: this.parentQsId, rowIndex: this.questionForm.RowIndex, visitTaskId: this.visitTaskId, lesionName: measureData.OrderMarkName, lesionType: null, isMarked: !!measureData }, async val => { params = Object.assign({}, this.markList[i].measureData) if (val) { - let pictureObj = await this.uploadScreenshots(`${new Date().getTime()}`, val) + const pictureObj = await this.uploadScreenshots(`${new Date().getTime()}`, val) params.PicturePath = pictureObj.isSuccess ? this.$getObjectName(pictureObj.result.url) : '' } - let tableQuestionId = this.markList[i].tableQuestionId + const tableQuestionId = this.markList[i].tableQuestionId params.Answer = this.questionForm[tableQuestionId] params.MeasureData = JSON.stringify(this.markList[i].measureData.MeasureData) loading.close() @@ -588,13 +589,13 @@ export default { }) } else { params = { - Answer: "", + Answer: '', VisitTaskId: this.visitTaskId, QuestionId: this.parentQsId, InstanceId: '', SeriesId: '', StudyId: '', - MarkTool:'', + MarkTool: '', PicturePath: '', NumberOfFrames: 0, MeasureData: '', @@ -607,9 +608,7 @@ export default { loading.close() this.saveTableQuestionInfo(params, qs) } - - - } catch(e) { + } catch (e) { console.log(e) loading.close() } @@ -617,16 +616,16 @@ export default { async saveTableQuestionInfo(params, qs) { const loading = this.$loading({ fullscreen: true }) try { - let res = await saveTableQuestionMark(params, 11) + const res = await saveTableQuestionMark(params, 11) if (res.IsSuccess) { // 保存后设置保存状态 - let i = this.markList.findIndex(i=>i.tableQuestionId === qs.Id) + const i = this.markList.findIndex(i => i.tableQuestionId === qs.Id) this.markList[i].saveEnum = 1 // 保存病灶 - let j = this.markList.findIndex(i=>!(i.saveEnum === 1 && i.measureData && i.measureData.MeasureData)) + const j = this.markList.findIndex(i => !(i.saveEnum === 1 && i.measureData && i.measureData.MeasureData)) if (j === -1) { - let answers = [] - let reg = new RegExp(/^[0-9a-zA-Z]{8}-[0-9a-zA-Z]{4}-[0-9a-zA-Z]{4}-[0-9a-zA-Z]{4}-[0-9a-zA-Z]{12}$/) + const answers = [] + const reg = new RegExp(/^[0-9a-zA-Z]{8}-[0-9a-zA-Z]{4}-[0-9a-zA-Z]{4}-[0-9a-zA-Z]{4}-[0-9a-zA-Z]{12}$/) for (const k in this.questionForm) { if (reg.test(k)) { if (answers.findIndex(i => i.tableQuestionId === k) === -1) { @@ -634,7 +633,7 @@ export default { } } } - let params = { + const params = { questionId: this.parentQsId, rowId: this.questionForm.RowId, rowIndex: this.answers.RowIndex, @@ -659,7 +658,7 @@ export default { DicomEvent.$emit('setMeasuredToolsPassive') loading.close() } - } catch(e) { + } catch (e) { console.log(e) loading.close() } @@ -735,43 +734,43 @@ export default { async handleSave() { try { const valid = await this.$refs.measurementForm.validate() - if (!valid) return - if (parseInt(this.questionForm[this.isMeasurableId]) === 1) { + if (!valid) return + if (parseInt(this.questionForm[this.isMeasurableId]) === 1) { // 检验是否有标记为保存 - let i = this.markList.findIndex(i=>i.saveEnum === 0) - if (i > -1) { + const i = this.markList.findIndex(i => i.saveEnum === 0) + if (i > -1) { // 请先保存标注信息! - this.$alert(this.$t('trials:MRIPDFF:message:message1')) - // this.$message.warning(this.$t('trials:MRIPDFF:message:message1')) - return - } - } else { + this.$alert(this.$t('trials:MRIPDFF:message:message1')) + // this.$message.warning(this.$t('trials:MRIPDFF:message:message1')) + return + } + } else { // 不可测量时,清空测量值,平均值 // '是否确认不可测量?' - const confirm = await this.$confirm( - this.$t('trials:MRIPDFF:message:message2'), - { - type: 'warning', - distinguishCancelAndClose: true - } - ) - if (confirm !== 'confirm') return - let l1Id = this.getQuestionId(1101) - this.$set(this.questionForm, l1Id, '') - let l2Id = this.getQuestionId(1102) - this.$set(this.questionForm, l2Id, '') - let l3Id = this.getQuestionId(1103) - this.$set(this.questionForm, l3Id, '') - let meanId = this.getQuestionId(1104) - this.$set(this.questionForm, meanId, 'NE') - } - - const loading = this.$loading({ fullscreen: true }) + const confirm = await this.$confirm( + this.$t('trials:MRIPDFF:message:message2'), + { + type: 'warning', + distinguishCancelAndClose: true + } + ) + if (confirm !== 'confirm') return + const l1Id = this.getQuestionId(1101) + this.$set(this.questionForm, l1Id, '') + const l2Id = this.getQuestionId(1102) + this.$set(this.questionForm, l2Id, '') + const l3Id = this.getQuestionId(1103) + this.$set(this.questionForm, l3Id, '') + const meanId = this.getQuestionId(1104) + this.$set(this.questionForm, meanId, 'NE') + } - try { + const loading = this.$loading({ fullscreen: true }) + + try { // let isResetMarks = this.markList.findIndex(i=>i.measureData && i.measureData.MeasureData) > -1 ? true : false if (parseInt(this.questionForm[this.isMeasurableId]) === 0 && this.isExitsMarks) { - await deleteTableQuestionMark({rowId: this.questionForm.RowId}, 11) + await deleteTableQuestionMark({ rowId: this.questionForm.RowId }, 11) this.markList.forEach(i => { if (i.measureData && i.measureData.MeasureData) { i.measureData = '' diff --git a/src/views/trials/trials-panel/reading/dicoms/customize/CustomizeQuestionFormItem.vue b/src/views/trials/trials-panel/reading/dicoms/customize/CustomizeQuestionFormItem.vue index 91d3afd5..991b0df0 100644 --- a/src/views/trials/trials-panel/reading/dicoms/customize/CustomizeQuestionFormItem.vue +++ b/src/views/trials/trials-panel/reading/dicoms/customize/CustomizeQuestionFormItem.vue @@ -337,16 +337,37 @@ + + +
+ +
+