纵隔血池、肝脏血池、脾尖、脾底标记保存优化
parent
a51d613633
commit
994598c216
|
@ -1127,8 +1127,8 @@ export default {
|
|||
// resolve()
|
||||
// })
|
||||
cornerstone.loadAndCacheImage(this.stack.imageIds[this.stack.currentImageIdIndex])
|
||||
.then(image => {
|
||||
scope.onFirstImageLoaded(image)
|
||||
.then(async image => {
|
||||
await scope.onFirstImageLoaded(image)
|
||||
resolve()
|
||||
})
|
||||
.catch((error) => {
|
||||
|
@ -1141,7 +1141,7 @@ export default {
|
|||
},
|
||||
onFirstImageLoaded(image) {
|
||||
console.log('onFirstImageLoaded')
|
||||
|
||||
return new Promise(async resolve => {
|
||||
const element = this.$refs.canvas
|
||||
var viewport = cornerstone.getDefaultViewportForImage(this.canvas, image)
|
||||
cornerstone.displayImage(this.canvas, image, viewport)
|
||||
|
@ -1219,6 +1219,8 @@ export default {
|
|||
this.stack.instanceId = instanceId
|
||||
this.height = (this.stack.currentImageIdIndex) * 100 / (this.stack.imageIds.length - 1)
|
||||
this.resetWwwc()
|
||||
resolve()
|
||||
})
|
||||
},
|
||||
onNewImage(e) {
|
||||
console.log('cornerstonenewimage')
|
||||
|
|
|
@ -828,7 +828,7 @@ export default {
|
|||
activeSeries: {
|
||||
immediate: true,
|
||||
handler(v) {
|
||||
if (v) {
|
||||
if (v && v.isCurrentTask && this.studyList.length === 0) {
|
||||
this.activeTaskInfo.taskName = v.taskBlindName
|
||||
this.activeTaskInfo.visitTaskId = v.visitTaskId
|
||||
const i = this.visitTaskList.findIndex(i => i.VisitTaskId === v.visitTaskId)
|
||||
|
@ -838,8 +838,6 @@ export default {
|
|||
studyList = studyList.filter(i => !i.IsCriticalSequence && i.Modalities.indexOf('CT') !== -1 && i.Modalities.indexOf('PT') !== -1)
|
||||
if (studyList.length === 0) return
|
||||
this.studyList = studyList
|
||||
} else {
|
||||
this.studyList = []
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -887,24 +885,48 @@ export default {
|
|||
}
|
||||
console.log('getMeasureData')
|
||||
})
|
||||
DicomEvent.$on('getScreenshots', async(callback) => {
|
||||
DicomEvent.$on('getScreenshots', async(measuredData, callback) => {
|
||||
if (this.currentDicomCanvasIndex > -1) {
|
||||
if (!measuredData) return
|
||||
await this.imageLocation(measuredData)
|
||||
setTimeout(async() => {
|
||||
// var base64Str = this.$refs[`dicomCanvas${this.currentDicomCanvasIndex}`][0].getScreenshots()
|
||||
const divForDownloadViewport = document.querySelector(
|
||||
`div[data-canvas-uid="dicomCanvas${this.currentDicomCanvasIndex}"]`
|
||||
)
|
||||
var canvas = await html2canvas(divForDownloadViewport)
|
||||
var base64Str = canvas.toDataURL('image/png', 1)
|
||||
callback(base64Str)
|
||||
}
|
||||
console.log('getScreenshots')
|
||||
callback(base64Str)
|
||||
}, 50)
|
||||
}
|
||||
})
|
||||
DicomEvent.$on('imageLocation', measuredData => {
|
||||
DicomEvent.$on('imageLocation', async(measuredData) => {
|
||||
return new Promise(async resolve => {
|
||||
if (!measuredData) return
|
||||
this.imageLocation(measuredData)
|
||||
await this.imageLocation(measuredData)
|
||||
|
||||
console.log('imageLocation')
|
||||
resolve()
|
||||
})
|
||||
})
|
||||
// DicomEvent.$on('imageLocation', async(measuredData, callback) => {
|
||||
// if (measuredData) {
|
||||
// await this.imageLocation(measuredData)
|
||||
// }
|
||||
// console.log('imageLocation')
|
||||
// this.$nextTick(() => {
|
||||
// if (callback) {
|
||||
// callback()
|
||||
// }
|
||||
// })
|
||||
// })
|
||||
// DicomEvent.$on('imageLocation', measuredData => {
|
||||
// if (!measuredData) return
|
||||
// this.imageLocation(measuredData)
|
||||
|
||||
// console.log('imageLocation')
|
||||
// })
|
||||
DicomEvent.$on('setReadingState', readingTaskState => {
|
||||
this.canvasObj[this.currentDicomCanvasIndex].readingTaskState = readingTaskState
|
||||
if (this.activeTool) {
|
||||
|
@ -934,6 +956,11 @@ export default {
|
|||
if (!this.petctWindow) return
|
||||
this.petctWindow.postMessage({ type: 'setReadingState', data: data }, window.location)
|
||||
})
|
||||
DicomEvent.$on('reload', () => {
|
||||
if (this.petctWindow) {
|
||||
this.petctWindow.close()
|
||||
}
|
||||
})
|
||||
},
|
||||
beforeDestroy() {
|
||||
DicomEvent.$off('updateImage')
|
||||
|
@ -945,6 +972,7 @@ export default {
|
|||
DicomEvent.$off('setMeasuredToolsPassive')
|
||||
DicomEvent.$off('readingPageUpdate')
|
||||
DicomEvent.$off('setReadingState')
|
||||
DicomEvent.$off('reload')
|
||||
if (this.petctWindow) {
|
||||
this.petctWindow.close()
|
||||
}
|
||||
|
@ -1302,7 +1330,8 @@ export default {
|
|||
|
||||
// 最后一个窗口显示当前访视下病灶所在的影像序列
|
||||
// 其他窗口显示该病灶第一次出现的序列信息
|
||||
async imageLocation(obj) {
|
||||
imageLocation(obj) {
|
||||
return new Promise(async resolve => {
|
||||
var loading = null
|
||||
var loadImagePromises = []
|
||||
var isScrollSync = this.isScrollSync
|
||||
|
@ -1314,7 +1343,10 @@ export default {
|
|||
var activeCanvasTaskId = obj.visitTaskId
|
||||
|
||||
var index = this.visitTaskList.findIndex(i => i.VisitTaskId === activeCanvasTaskId)
|
||||
if (index === -1) return
|
||||
if (index === -1) {
|
||||
resolve()
|
||||
return
|
||||
}
|
||||
|
||||
var firstAddSeries = null
|
||||
var currentAddSeries = null
|
||||
|
@ -1366,6 +1398,7 @@ export default {
|
|||
loading && loading.close()
|
||||
this.isScrollSync = isScrollSync
|
||||
this.setToolToTarget(obj)
|
||||
resolve()
|
||||
return
|
||||
} else if (firstAddSeries && !currentAddSeries) {
|
||||
// 当前访视序列与首次出现病灶的序列对齐
|
||||
|
@ -1400,10 +1433,14 @@ export default {
|
|||
.then(() => {
|
||||
this.isScrollSync = isScrollSync
|
||||
this.setToolToTarget(obj)
|
||||
resolve()
|
||||
}).catch(() => {
|
||||
resolve()
|
||||
})
|
||||
if (loading) {
|
||||
loading.close()
|
||||
}
|
||||
})
|
||||
},
|
||||
setToolToTarget(obj) {
|
||||
if (obj.readingTaskState < 2 && obj.markTool && !obj.isMarked) {
|
||||
|
|
|
@ -75,7 +75,10 @@ export default {
|
|||
translateX: 0,
|
||||
pageSize: 0, // 一页展示的图片数
|
||||
previewImages: [],
|
||||
imgSize: { width: '120px', height: '120px' }
|
||||
imgSize: { width: '120px', height: '120px' },
|
||||
lesionId: '',
|
||||
visitTaskId: '',
|
||||
questionType: null
|
||||
}
|
||||
},
|
||||
computed: {
|
||||
|
@ -112,7 +115,10 @@ export default {
|
|||
store.dispatch('user/setToken', this.$route.query.TokenKey)
|
||||
changeURLStatic('TokenKey', '')
|
||||
}
|
||||
this.lesionId = this.$route.query.rowId
|
||||
this.lesionId = this.$route.query.rowId ? this.$route.query.rowId : ''
|
||||
this.visitTaskId = this.$route.query.visitTaskId ? this.$route.query.visitTaskId : ''
|
||||
var questionType = this.$route.query.questionType
|
||||
this.questionType = questionType ? Number(questionType) : null
|
||||
this.initPage()
|
||||
},
|
||||
methods: {
|
||||
|
@ -128,7 +134,7 @@ export default {
|
|||
getScreenshot() {
|
||||
return new Promise(resolve => {
|
||||
const loading = this.$loading({ fullscreen: true })
|
||||
getPreviousOtherPicturePath({ rowId: this.lesionId }).then(res => {
|
||||
getPreviousOtherPicturePath({ rowId: this.lesionId, visitTaskId: this.visitTaskId, questionType: this.questionType }).then(res => {
|
||||
this.previewImages = res.Result
|
||||
if (this.previewImages.length === 0) {
|
||||
this.$alert(this.$t('trials:lugano:message:noScreenshot'), this.$t('trials:lugano:message:warnTip'), {
|
||||
|
|
|
@ -483,6 +483,7 @@ export default {
|
|||
{ label: this.$t('trials:reading:button:rotateTurnRight'), val: 5 }// 右转90度
|
||||
],
|
||||
isCurrentTask: false,
|
||||
isBaseLineTask: false,
|
||||
ctSeries: {},
|
||||
petSeries: {},
|
||||
renderingEngineId: renderingEngineId,
|
||||
|
@ -562,6 +563,7 @@ export default {
|
|||
this.subjectCode = this.$route.query.subjectCode
|
||||
this.taskBlindName = this.$route.query.taskBlindName
|
||||
this.isCurrentTask = this.$route.query.isCurrentTask === 'true'
|
||||
this.isBaseLineTask = this.$route.query.isCurrentTask === 'true'
|
||||
this.customWwc = { visible: false, title: this.$t('trials:reading:dagTitle:wwwcCustom') }
|
||||
const digitPlaces = parseInt(this.$route.query.digitPlaces)
|
||||
this.digitPlaces = digitPlaces === -1 ? 2 : digitPlaces
|
||||
|
@ -606,9 +608,10 @@ export default {
|
|||
console.log('imageLocation')
|
||||
this.imageLocation(obj)
|
||||
})
|
||||
FusionEvent.$on('getScreenshots', async(callback) => {
|
||||
FusionEvent.$on('getScreenshots', async(measuredData, callback) => {
|
||||
// var base64Str = await this.$refs['FUSION_AXIAL'].getScreenshots()
|
||||
const loading = this.$loading({ fullscreen: true })
|
||||
await this.imageLocation(measuredData)
|
||||
const divForDownloadViewport = document.querySelector(
|
||||
'.dicom-container'
|
||||
)
|
||||
|
@ -712,8 +715,9 @@ export default {
|
|||
const debouncedCallback = this.debounce((e) => {
|
||||
const { annotation } = e.detail
|
||||
const { remark } = annotation.data
|
||||
if (this.initAnnotations.length > 0 && this.initAnnotations[0].orderMark === remark && !this.initAnnotations[0].isInit) {
|
||||
this.initAnnotations[0].isInit = true
|
||||
var idx = this.initAnnotations.findIndex(i => i.orderMark === remark)
|
||||
if (this.initAnnotations.length > 0 && idx > -1 && this.initAnnotations[idx].orderMark === remark && !this.initAnnotations[idx].isInit) {
|
||||
this.initAnnotations[idx].isInit = true
|
||||
} else {
|
||||
this.onAnnotationModified(e)
|
||||
}
|
||||
|
@ -1972,8 +1976,13 @@ export default {
|
|||
})
|
||||
},
|
||||
imageLocation(obj) {
|
||||
return new Promise(resolve => {
|
||||
console.log('imageLocation')
|
||||
this.setToolToTarget(obj)
|
||||
if (!obj.otherMeasureData) return
|
||||
if (!obj.otherMeasureData) {
|
||||
resolve()
|
||||
return
|
||||
}
|
||||
this.isLocate = true
|
||||
const { metadata } = obj.otherMeasureData
|
||||
var imageArr = metadata.referencedImageId.split('/')
|
||||
|
@ -1986,14 +1995,14 @@ export default {
|
|||
if (index > -1) {
|
||||
viewportId = 'PT_AXIAL'
|
||||
this.$refs[viewportId].scroll(index)
|
||||
return
|
||||
}
|
||||
index = this.ctSeries.instanceList.findIndex(i => i === instanceId)
|
||||
if (index > -1) {
|
||||
viewportId = 'CT_AXIAL'
|
||||
this.$refs[viewportId].scroll(index)
|
||||
return
|
||||
}
|
||||
resolve()
|
||||
})
|
||||
},
|
||||
setToolToTarget(obj) {
|
||||
var toolGroupIds = [ctToolGroupId, ptToolGroupId, fusionToolGroupId]
|
||||
|
|
|
@ -35,16 +35,24 @@
|
|||
<!-- 测量 -->
|
||||
<el-button v-if="(!questionForm[question.Id] && ((question.QuestionType === 51 && liverIsInsideVolume) || (question.QuestionType === 52 && lungIsInsideVolume)) && readingTaskState!== 2)" size="mini" type="text" @click="addAnnotation(question)">{{ $t('trials:lugano:button:addAnnotation') }}</el-button>
|
||||
<!-- 清除标记 -->
|
||||
<el-button v-if="(questionForm[question.Id] || (question.QuestionType === 51 && !liverIsInsideVolume) || (question.QuestionType === 52 && !lungIsInsideVolume)) && readingTaskState!== 2" size="mini" type="text" style="padding: 7px 5px;" @click="removeAnnotation(question)">{{ $t('trials:lugano:button:clearAnnotation') }}</el-button>
|
||||
<el-button v-if="(questionForm[question.Id] || (question.QuestionType === 51 && !liverIsInsideVolume) || (question.QuestionType === 52 && !lungIsInsideVolume)) && readingTaskState!== 2" size="mini" type="text" style="padding: 7px 5px;margin-left:5px;" @click="removeAnnotation(question)">{{ $t('trials:lugano:button:clearAnnotation') }}</el-button>
|
||||
<!-- 定位 -->
|
||||
<el-button
|
||||
v-if="(questionForm[question.Id] || (question.QuestionType === 51 && !liverIsInsideVolume) || (question.QuestionType === 52 && !lungIsInsideVolume))"
|
||||
size="mini"
|
||||
type="text"
|
||||
style="padding: '7px 5px'"
|
||||
:style="{marginLeft: readingTaskState!== 2?'-5px':'5px'}"
|
||||
style="padding: '7px 5px';margin-left:-5px;"
|
||||
@click="locateAnnotation(question)"
|
||||
>{{ $t('trials:lugano:button:locateAnnotation') }}</el-button>
|
||||
<!-- 保存 -->
|
||||
<el-button v-if="questionForm[question.Id] && readingTaskState!== 2 && question.SaveEnum === 1" size="mini" type="text" style="padding: '7px 5px';margin-left:-5px;" @click="saveAnnotation(question)">
|
||||
<!-- 未保存 -->
|
||||
<el-tooltip class="item" effect="dark" :content="$t('trials:reading:button:unsaved')" placement="bottom">
|
||||
<i class="el-icon-warning" style="color:red" />
|
||||
</el-tooltip>
|
||||
{{ $t('common:button:save') }}
|
||||
</el-button>
|
||||
<el-button v-if="!question.IsBaseLineTask" size="mini" type="text" style="padding: '7px 5px';margin-left:-5px;" @click="viewAnnotations(question)">{{ $t('trials:lugano:button:suvscreenshot') }}</el-button>
|
||||
</div>
|
||||
</template>
|
||||
<template v-else-if="question.QuestionType === 53">
|
||||
|
@ -339,11 +347,16 @@ export default {
|
|||
FusionEvent.$emit('removeAnnotation', question)
|
||||
})
|
||||
.catch(() => {})
|
||||
|
||||
},
|
||||
locateAnnotation(question) {
|
||||
FusionEvent.$emit('locateAnnotation', question)
|
||||
},
|
||||
saveAnnotation(question) {
|
||||
FusionEvent.$emit('saveAnnotation', question)
|
||||
},
|
||||
viewAnnotations(question) {
|
||||
FusionEvent.$emit('viewAnnotations', question)
|
||||
},
|
||||
async uploadScreenshot(param) {
|
||||
if (!this.visitTaskId) return
|
||||
const loading = this.$loading({
|
||||
|
|
|
@ -33,9 +33,11 @@
|
|||
<script>
|
||||
|
||||
import { saveImageQuality, getDicomReadingQuestionAnswer, getReadingCalculationData } from '@/api/trials'
|
||||
import { getToken } from '@/utils/auth'
|
||||
import QuestionItem from './QuestionItem'
|
||||
import { mapGetters } from 'vuex'
|
||||
import FusionEvent from './FusionEvent'
|
||||
|
||||
export default {
|
||||
name: 'ECRF',
|
||||
components: {
|
||||
|
@ -103,6 +105,7 @@ export default {
|
|||
this.resetSuvQuestions()
|
||||
})
|
||||
FusionEvent.$on('addAnnotation', obj => {
|
||||
this.$set(obj, 'SaveEnum', 0)
|
||||
this.addAnnotation(obj)
|
||||
})
|
||||
FusionEvent.$on('removeAnnotation', obj => {
|
||||
|
@ -111,6 +114,13 @@ export default {
|
|||
FusionEvent.$on('locateAnnotation', obj => {
|
||||
this.locateAnnotation(obj)
|
||||
})
|
||||
FusionEvent.$on('saveAnnotation', obj => {
|
||||
this.saveAnnotation(obj)
|
||||
})
|
||||
FusionEvent.$on('viewAnnotations', obj => {
|
||||
console.log('viewAnnotations')
|
||||
this.viewAnnotations(obj)
|
||||
})
|
||||
},
|
||||
beforeDestroy() {
|
||||
FusionEvent.$off('refreshQuestions')
|
||||
|
@ -193,10 +203,12 @@ export default {
|
|||
if (i.QuestionType === 51) {
|
||||
// 肝脏血池SUVmax(51);
|
||||
this.liverSuvmaxId = i.Id
|
||||
this.$set(i, 'SaveEnum', 0)
|
||||
}
|
||||
if (i.QuestionType === 52) {
|
||||
// 纵膈血池SUVmax(52);
|
||||
this.lungSuvmaxId = i.Id
|
||||
this.$set(i, 'SaveEnum', 0)
|
||||
}
|
||||
if (i.QuestionType === 53) {
|
||||
// SUVmax;
|
||||
|
@ -223,18 +235,7 @@ export default {
|
|||
handleSave() {
|
||||
this.$refs['questions'].validate((valid) => {
|
||||
if (!valid) return
|
||||
if (!this.lungIsInsideVolume || !this.liverIsInsideVolume) {
|
||||
// 当前标记在图像外
|
||||
this.$alert(this.$t('trials:reading:lugano:warnning:outsideVolume'), this.$t('trials:lugano:fusionDialog:warning'), {
|
||||
callback: action => {
|
||||
this.$message({
|
||||
type: 'info',
|
||||
message: `action: ${action}`
|
||||
})
|
||||
}
|
||||
})
|
||||
return
|
||||
}
|
||||
|
||||
// 肝脏血池SUVmax
|
||||
const liverSUVmax = !isNaN(parseFloat(this.questionForm[this.liverSuvmaxId])) ? parseFloat(this.questionForm[this.liverSuvmaxId]) : 0
|
||||
// 纵膈血池SUVmax
|
||||
|
@ -268,22 +269,22 @@ export default {
|
|||
for (const k in this.questionForm) {
|
||||
answers.push({ id: k, answer: this.questionForm[k] })
|
||||
}
|
||||
var questionMarkInfoList = []
|
||||
this.measurements.forEach(item => {
|
||||
var i = Object.assign({}, item)
|
||||
if (i.OtherMeasureData) {
|
||||
for (const k in i.OtherMeasureData.data.cachedStats) {
|
||||
i.OtherMeasureData.data.cachedStats[k].pointsInShape = []
|
||||
}
|
||||
i.OtherMeasureData = JSON.stringify(i.OtherMeasureData)
|
||||
}
|
||||
// var questionMarkInfoList = []
|
||||
// this.measurements.forEach(item => {
|
||||
// var i = Object.assign({}, item)
|
||||
// if (i.OtherMeasureData) {
|
||||
// for (const k in i.OtherMeasureData.data.cachedStats) {
|
||||
// i.OtherMeasureData.data.cachedStats[k].pointsInShape = []
|
||||
// }
|
||||
// i.OtherMeasureData = JSON.stringify(i.OtherMeasureData)
|
||||
// }
|
||||
|
||||
questionMarkInfoList.push(i)
|
||||
})
|
||||
// questionMarkInfoList.push(i)
|
||||
// })
|
||||
var params = {
|
||||
visitTaskId: this.visitTaskId,
|
||||
answers: answers,
|
||||
questionMarkInfoList
|
||||
answers: answers
|
||||
// questionMarkInfoList
|
||||
}
|
||||
saveImageQuality(params).then(async res => {
|
||||
this.$message.success(this.$t('common:message:savedSuccessfully'))
|
||||
|
@ -336,6 +337,70 @@ export default {
|
|||
|
||||
FusionEvent.$emit('imageLocation', { otherMeasureData: otherMeasureData })
|
||||
},
|
||||
saveAnnotation(question) {
|
||||
if (!this.lungIsInsideVolume || !this.liverIsInsideVolume) {
|
||||
// 当前标记在图像外
|
||||
this.$alert(this.$t('trials:reading:lugano:warnning:outsideVolume'), this.$t('trials:lugano:fusionDialog:warning'), {
|
||||
callback: action => {
|
||||
this.$message({
|
||||
type: 'info',
|
||||
message: `action: ${action}`
|
||||
})
|
||||
}
|
||||
})
|
||||
return
|
||||
}
|
||||
const loading = this.$loading({ fullscreen: true })
|
||||
|
||||
// 获取截图
|
||||
var answers = []
|
||||
var questionMarkInfoList = []
|
||||
var annotationObj = this.measurements.find(i => i.QuestionType === question.QuestionType)
|
||||
if (!annotationObj) {
|
||||
loading.close()
|
||||
return
|
||||
}
|
||||
FusionEvent.$emit('getScreenshots', { otherMeasureData: annotationObj.OtherMeasureData }, async val => {
|
||||
var pictureObj = await this.uploadScreenshots(`${new Date().getTime()}`, val)
|
||||
var picturePath = pictureObj.isSuccess ? this.$getObjectName(pictureObj.result.url) : ''
|
||||
|
||||
if (annotationObj && annotationObj.OtherMeasureData) {
|
||||
var otherMeasureData = Object.assign({}, annotationObj.OtherMeasureData)
|
||||
for (const k in otherMeasureData.data.cachedStats) {
|
||||
otherMeasureData.data.cachedStats[k].pointsInShape = []
|
||||
}
|
||||
annotationObj.OtherMeasureData = JSON.stringify(otherMeasureData)
|
||||
annotationObj.OtherPicturePath = picturePath
|
||||
questionMarkInfoList.push(annotationObj)
|
||||
}
|
||||
for (const k in this.questionForm) {
|
||||
if (k === question.Id) {
|
||||
answers.push({ id: k, answer: this.questionForm[k] })
|
||||
break
|
||||
}
|
||||
}
|
||||
var params = {
|
||||
visitTaskId: this.visitTaskId,
|
||||
answers,
|
||||
questionMarkInfoList
|
||||
}
|
||||
saveImageQuality(params).then(async res => {
|
||||
this.$message.success(this.$t('common:message:savedSuccessfully'))
|
||||
loading.close()
|
||||
this.$set(question, 'SaveEnum', 0)
|
||||
window.opener.postMessage({ type: 'petctLesionUpdate' }, window.location)
|
||||
}).catch(() => {
|
||||
loading.close()
|
||||
})
|
||||
})
|
||||
},
|
||||
viewAnnotations(question) {
|
||||
var token = getToken()
|
||||
var subjectCode = this.$route.query.subjectCode
|
||||
var path = `/historyScreenshot?&subjectCode=${subjectCode}&visitTaskId=${this.visitTaskId}&questionType=${question.QuestionType}&TokenKey=${token}`
|
||||
const routeData = this.$router.resolve({ path })
|
||||
window.open(routeData.href, '_blank')
|
||||
},
|
||||
setMeasuredData(measurement) {
|
||||
if (measurement.data.isHandleOutsideImage) {
|
||||
this.setOutsideMeasuredData(measurement)
|
||||
|
@ -374,6 +439,19 @@ export default {
|
|||
}
|
||||
FusionEvent.$emit('addOrUpdateAnnotations', { data })
|
||||
this.questionFormChangeState = true
|
||||
this.setQuestionStatus(this.questions, this.measurements[idx].QuestionType)
|
||||
}
|
||||
},
|
||||
setQuestionStatus(obj, questionType) {
|
||||
console.log(obj, questionType)
|
||||
for (let i = 0; i < obj.length; i++) {
|
||||
if (obj[i].QuestionType === questionType) {
|
||||
this.$set(obj[i], 'SaveEnum', 1)
|
||||
break
|
||||
}
|
||||
if (obj[i].Childrens && obj[i].Childrens.length > 0) {
|
||||
this.setQuestionStatus(obj[i].Childrens, questionType)
|
||||
}
|
||||
}
|
||||
},
|
||||
setOutsideMeasuredData(measurement) {
|
||||
|
@ -415,6 +493,7 @@ export default {
|
|||
}
|
||||
FusionEvent.$emit('addOrUpdateAnnotations', { data })
|
||||
this.questionFormChangeState = true
|
||||
this.setQuestionStatus(this.questions, this.measurements[idx].QuestionType)
|
||||
},
|
||||
clearMeasuredData(remark) {
|
||||
var idx = this.measurements.findIndex(i => i.OrderMarkName === remark)
|
||||
|
@ -538,6 +617,45 @@ export default {
|
|||
this.setSuvChild(i.Childrens)
|
||||
}
|
||||
})
|
||||
},
|
||||
async uploadScreenshots(fileName, file) {
|
||||
try {
|
||||
file = this.convertBase64ToBlob(file)
|
||||
var trialId = this.$route.query.trialId
|
||||
var subjectId = this.$route.query.trialId
|
||||
const result = await this.OSSclient.put(`/${trialId}/Read/${subjectId}/Visit/${fileName}.png`, file)
|
||||
return { isSuccess: true, result: result }
|
||||
} catch (e) {
|
||||
console.log(e)
|
||||
return { isSuccess: false, result: e }
|
||||
}
|
||||
},
|
||||
convertBase64ToBlob(imageEditorBase64) {
|
||||
var base64Arr = imageEditorBase64.split(',')
|
||||
var imgtype = ''
|
||||
var base64String = ''
|
||||
if (base64Arr.length > 1) {
|
||||
// 如果是图片base64,去掉头信息
|
||||
base64String = base64Arr[1]
|
||||
imgtype = base64Arr[0].substring(
|
||||
base64Arr[0].indexOf(':') + 1,
|
||||
base64Arr[0].indexOf(';')
|
||||
)
|
||||
}
|
||||
// 将base64解码
|
||||
var bytes = atob(base64String)
|
||||
// var bytes = base64;
|
||||
var bytesCode = new ArrayBuffer(bytes.length)
|
||||
// 转换为类型化数组
|
||||
var byteArray = new Uint8Array(bytesCode)
|
||||
|
||||
// 将base64转换为ascii码
|
||||
for (var i = 0; i < bytes.length; i++) {
|
||||
byteArray[i] = bytes.charCodeAt(i)
|
||||
}
|
||||
|
||||
// 生成Blob对象(文件对象)
|
||||
return new Blob([bytesCode], { type: imgtype })
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -794,7 +794,7 @@ export default {
|
|||
otherMeasureData.data.cachedStats[k].pointsInShape = []
|
||||
}
|
||||
}
|
||||
FusionEvent.$emit('getScreenshots', async val => {
|
||||
FusionEvent.$emit('getScreenshots', { otherMeasureData: this.questionForm.OtherMeasureData }, async val => {
|
||||
// 靶病灶状态为0(存在)时,一定存在长径或者长短径(长径、十字线 )
|
||||
// 普通靶病灶:长径大于10mm且不小于2倍层厚(基线校验)
|
||||
// 淋巴结靶病灶:短径大于15mm且不小于2倍层厚(基线校验)
|
||||
|
|
|
@ -205,11 +205,17 @@ export default {
|
|||
document.addEventListener('mouseup', () => {
|
||||
this.sliderMouseup()
|
||||
})
|
||||
// document.addEventListener('mousewheel', (e) => {
|
||||
// this.mousewheel(e)
|
||||
// })
|
||||
},
|
||||
destroyed() {
|
||||
|
||||
},
|
||||
methods: {
|
||||
// mousewheel(e){
|
||||
// console.log(e)
|
||||
// },
|
||||
handleVolumeNewImage(e) {
|
||||
const { imageIndex } = e.detail
|
||||
this.seriesInfo.imageIdIndex = imageIndex
|
||||
|
@ -297,6 +303,7 @@ export default {
|
|||
var zoom = viewport.getZoom()
|
||||
if (!zoom) return
|
||||
this.imageInfo.zoom = zoom.toFixed(4)
|
||||
// console.log(e)
|
||||
},
|
||||
handleVOIModified(e) {
|
||||
renderingEngine = getRenderingEngine(this.renderingEngineId)
|
||||
|
|
|
@ -519,7 +519,7 @@ export default {
|
|||
item.Answer = this.questionForm[item.Id]
|
||||
arr.push(item)
|
||||
})
|
||||
var obj = { questionId: this.parentQsId, rowIndex: this.questionForm.RowIndex, visitTaskId: this.visitTaskId, lesionType: this.lesionType }
|
||||
var obj = { questionId: this.parentQsId, rowIndex: this.questionForm.RowIndex, visitTaskId: this.visitTaskId, lesionName: this.lesionMark, lesionType: this.lesionType }
|
||||
|
||||
DicomEvent.$emit('imageLocation', obj)
|
||||
var type = null
|
||||
|
@ -1957,7 +1957,7 @@ export default {
|
|||
}
|
||||
}
|
||||
|
||||
DicomEvent.$emit('getScreenshots', async val => {
|
||||
DicomEvent.$emit('getScreenshots', { questionId: this.parentQsId, rowIndex: this.questionForm.RowIndex, visitTaskId: this.visitTaskId, lesionName: this.lesionMark, lesionType: this.lesionType }, async val => {
|
||||
// 靶病灶状态为0(存在)时,一定存在长径或者长短径(长径、十字线 )
|
||||
// 普通靶病灶:长径大于10mm且不小于2倍层厚(基线校验)
|
||||
// 淋巴结靶病灶:短径大于15mm且不小于2倍层厚(基线校验)
|
||||
|
|
|
@ -640,7 +640,7 @@ export default {
|
|||
item.Answer = this.questionForm[item.Id] ? this.questionForm[item.Id] : ''
|
||||
arr.push(item)
|
||||
})
|
||||
var obj = { questionId: this.parentQsId, rowIndex: this.questionForm.RowIndex, visitTaskId: this.visitTaskId, lesionType: this.lesionType }
|
||||
var obj = { questionId: this.parentQsId, rowIndex: this.questionForm.RowIndex, visitTaskId: this.visitTaskId, lesionName: this.lesionMark, lesionType: this.lesionType }
|
||||
DicomEvent.$emit('imageLocation', obj)
|
||||
var type = null
|
||||
if (this.questionForm.RowId) {
|
||||
|
@ -1653,8 +1653,13 @@ export default {
|
|||
}
|
||||
}
|
||||
}
|
||||
// DicomEvent.$emit('imageLocation', { questionId: this.parentQsId, rowIndex: this.questionForm.RowIndex, visitTaskId: this.visitTaskId, lesionName: this.lesionName, lesionType: this.lesionType }, () => {
|
||||
// console.log(11111)
|
||||
|
||||
DicomEvent.$emit('getScreenshots', async val => {
|
||||
// })
|
||||
// await DicomEvent.$emit('imageLocation', { questionId: this.parentQsId, rowIndex: this.questionForm.RowIndex, visitTaskId: this.visitTaskId, lesionName: this.lesionName, lesionType: this.lesionType })
|
||||
// console.log(5555)
|
||||
DicomEvent.$emit('getScreenshots', { questionId: this.parentQsId, rowIndex: this.questionForm.RowIndex, visitTaskId: this.visitTaskId, lesionName: this.lesionMark, lesionType: this.lesionType }, async val => {
|
||||
// 靶病灶状态为0(存在)时,一定存在长径或者长短径(长径、十字线 )
|
||||
// 普通靶病灶:长径大于10mm且不小于2倍层厚(基线校验)
|
||||
// 淋巴结靶病灶:短径大于15mm且不小于2倍层厚(基线校验)
|
||||
|
|
|
@ -690,7 +690,7 @@ export default {
|
|||
}
|
||||
}
|
||||
const loading = this.$loading({ fullscreen: true })
|
||||
DicomEvent.$emit('getScreenshots', async val => {
|
||||
DicomEvent.$emit('getScreenshots', { questionId: this.parentQsId, rowIndex: this.questionForm.RowIndex, visitTaskId: this.visitTaskId, lesionName: this.lesionMark, lesionType: this.lesionType }, async val => {
|
||||
var picturePath = ''
|
||||
if (val && measureData) {
|
||||
var pictureObj = await this.uploadScreenshots(`${new Date().getTime()}`, val)
|
||||
|
|
|
@ -15,6 +15,7 @@
|
|||
</div>
|
||||
<template v-else-if="((question.QuestionType === 56 || question.QuestionType === 57) && question.IsBaseLineTask)" />
|
||||
<template v-else>
|
||||
|
||||
<el-form-item
|
||||
v-if="(question.ShowQuestion===1 && question.ParentTriggerValueList.includes(String(questionForm[question.ParentId]))) || question.ShowQuestion===0 "
|
||||
:label="`${question.QuestionName}`"
|
||||
|
@ -26,7 +27,8 @@
|
|||
:class="[question.Type==='group'?'mb':question.Type==='upload'?'uploadWrapper':'']"
|
||||
>
|
||||
<template v-if="question.QuestionType === 60 || question.QuestionType === 61">
|
||||
<div style="display: flex;flex-direction: row;justify-content: flex-start;">
|
||||
<div style="display: flex;flex-direction: row;justify-content: flex-start;align-items: center;">
|
||||
|
||||
<el-input
|
||||
v-if="question.Type==='calculation'"
|
||||
v-model="questionForm[question.Id]"
|
||||
|
@ -42,7 +44,15 @@
|
|||
<!-- 清除标记 -->
|
||||
<el-button v-if="questionForm[question.Id]&& readingTaskState!== 2" size="mini" type="text" @click="removeAnnotation(question)">{{ $t('trials:lugano:button:clearAnnotation') }}</el-button>
|
||||
<!-- 定位 -->
|
||||
<el-button v-if="questionForm[question.Id]" size="mini" type="text" style="margin-left: -5px;" @click="locateAnnotation(question)">{{ $t('trials:lugano:button:locateAnnotation') }}</el-button>
|
||||
<el-button v-if="questionForm[question.Id]" size="mini" type="text" @click="locateAnnotation(question)">{{ $t('trials:lugano:button:locateAnnotation') }}</el-button>
|
||||
<!-- 保存 -->
|
||||
<el-button v-if="questionForm[question.Id] && readingTaskState!== 2 && question.SaveEnum === 1" size="mini" type="text" @click="saveAnnotation(question)">
|
||||
<!-- 未保存 -->
|
||||
<el-tooltip class="item" effect="dark" :content="$t('trials:reading:button:unsaved')" placement="bottom">
|
||||
<i class="el-icon-warning" style="color:red" />
|
||||
</el-tooltip>
|
||||
{{ $t('common:button:save') }}
|
||||
</el-button>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
|
@ -361,6 +371,9 @@ export default {
|
|||
addAnnotation(question) {
|
||||
DicomEvent.$emit('addAnnotation', question)
|
||||
},
|
||||
saveAnnotation(question) {
|
||||
DicomEvent.$emit('saveAnnotation', question)
|
||||
},
|
||||
removeAnnotation(question) {
|
||||
DicomEvent.$emit('locateAnnotation', question)
|
||||
// 是否确认清除标记?
|
||||
|
|
|
@ -113,24 +113,31 @@ export default {
|
|||
DicomEvent.$on('setReadingState', readingTaskState => {
|
||||
this.readingTaskState = readingTaskState
|
||||
})
|
||||
DicomEvent.$on('handleSaveQuestions', readingTaskState => {
|
||||
this.handleSave()
|
||||
})
|
||||
if (this.groupClassify === 3) {
|
||||
DicomEvent.$on('addAnnotation', obj => {
|
||||
this.$set(obj, 'SaveEnum', 1)
|
||||
this.addAnnotation(obj)
|
||||
})
|
||||
DicomEvent.$on('removeAnnotation', obj => {
|
||||
this.removeAnnotation(obj)
|
||||
})
|
||||
DicomEvent.$on('saveAnnotation', obj => {
|
||||
this.saveAnnotation(obj)
|
||||
})
|
||||
|
||||
DicomEvent.$on('locateAnnotation', obj => {
|
||||
this.locateAnnotation(obj)
|
||||
})
|
||||
}
|
||||
},
|
||||
beforeDestroy() {
|
||||
DicomEvent.$off('setReadingState')
|
||||
if (this.groupClassify === 3) {
|
||||
DicomEvent.$off('addAnnotation')
|
||||
DicomEvent.$off('removeAnnotation')
|
||||
DicomEvent.$off('saveAnnotation')
|
||||
DicomEvent.$off('locateAnnotation')
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
async getQuestions(visitTaskId) {
|
||||
|
@ -227,10 +234,12 @@ export default {
|
|||
if (i.QuestionType === 60) {
|
||||
// 脾尖位置
|
||||
this.spleenTopId = i.Id
|
||||
this.$set(i, 'SaveEnum', 0)
|
||||
}
|
||||
if (i.QuestionType === 61) {
|
||||
// 脾底位置
|
||||
this.spleenBottomId = i.Id
|
||||
this.$set(i, 'SaveEnum', 0)
|
||||
}
|
||||
}
|
||||
if (i.Childrens && i.Childrens.length > 0) {
|
||||
|
@ -276,10 +285,6 @@ export default {
|
|||
this.loading = true
|
||||
var answers = []
|
||||
var imageQuality = null
|
||||
if (this.groupClassify === 3) {
|
||||
await this.uploadScreenshot()
|
||||
}
|
||||
|
||||
for (const k in this.questionForm) {
|
||||
answers.push({ id: k, answer: this.questionForm[k] })
|
||||
if (k === this.imageQualityId) {
|
||||
|
@ -291,17 +296,17 @@ export default {
|
|||
answers: answers
|
||||
|
||||
}
|
||||
if (this.groupClassify === 3) {
|
||||
var questionMarkInfoList = []
|
||||
this.measurements.forEach(item => {
|
||||
var i = Object.assign({}, item)
|
||||
if (i.MeasureData) {
|
||||
i.MeasureData = JSON.stringify(i.MeasureData)
|
||||
}
|
||||
questionMarkInfoList.push(i)
|
||||
})
|
||||
params.questionMarkInfoList = questionMarkInfoList
|
||||
}
|
||||
// if (this.groupClassify === 3) {
|
||||
// var questionMarkInfoList = []
|
||||
// this.measurements.forEach(item => {
|
||||
// var i = Object.assign({}, item)
|
||||
// if (i.MeasureData) {
|
||||
// i.MeasureData = JSON.stringify(i.MeasureData)
|
||||
// }
|
||||
// questionMarkInfoList.push(i)
|
||||
// })
|
||||
// params.questionMarkInfoList = questionMarkInfoList
|
||||
// }
|
||||
|
||||
saveImageQuality(params).then(async res => {
|
||||
this.$message.success(this.$t('common:message:savedSuccessfully'))
|
||||
|
@ -359,16 +364,6 @@ export default {
|
|||
return { isSuccess: false, result: e }
|
||||
}
|
||||
},
|
||||
// 上传截图
|
||||
async uploadScreenshot() {
|
||||
for (let i = 0; i < this.measurements.length; i++) {
|
||||
if (this.measurements[i].pictureBaseStr) {
|
||||
var pictureObj = await this.uploadScreenshots(`${new Date().getTime()}`, this.measurements[i].pictureBaseStr)
|
||||
this.measurements[i].PicturePath = pictureObj.isSuccess ? this.$getObjectName(pictureObj.result.url) : ''
|
||||
this.measurements[i].pictureBaseStr = ''
|
||||
}
|
||||
}
|
||||
},
|
||||
async uploadScreenshots(fileName, file) {
|
||||
try {
|
||||
file = this.convertBase64ToBlob(file)
|
||||
|
@ -436,6 +431,73 @@ export default {
|
|||
this.setSpleenCommentDisplay()
|
||||
this.formChanged = true
|
||||
},
|
||||
saveAnnotation(question) {
|
||||
this.loading = true
|
||||
// 获取截图
|
||||
var answers = []
|
||||
var questionMarkInfoList = []
|
||||
var annotationObj = this.measurements.find(i => i.QuestionType === question.QuestionType)
|
||||
if (!annotationObj) {
|
||||
this.loading = false
|
||||
return
|
||||
}
|
||||
DicomEvent.$emit('getScreenshots', { questionId: annotationObj.Id, visitTaskId: this.visitTaskId, lesionName: annotationObj.OrderMarkName, markTool: annotationObj.MarkTool, readingTaskState: this.readingTaskState, isMarked: !!annotationObj.MeasureData }, async val => {
|
||||
var pictureObj = await this.uploadScreenshots(`${new Date().getTime()}`, val)
|
||||
var picturePath = pictureObj.isSuccess ? this.$getObjectName(pictureObj.result.url) : ''
|
||||
if (annotationObj && annotationObj.MeasureData) {
|
||||
annotationObj.MeasureData = JSON.stringify(annotationObj.MeasureData)
|
||||
annotationObj.PicturePath = picturePath
|
||||
questionMarkInfoList.push(annotationObj)
|
||||
}
|
||||
for (const k in this.questionForm) {
|
||||
if (k === question.Id) {
|
||||
answers.push({ id: k, answer: this.questionForm[k] })
|
||||
break
|
||||
}
|
||||
}
|
||||
var params = {
|
||||
visitTaskId: this.visitTaskId,
|
||||
answers,
|
||||
questionMarkInfoList
|
||||
}
|
||||
saveImageQuality(params).then(async res => {
|
||||
this.$message.success(this.$t('common:message:savedSuccessfully'))
|
||||
this.loading = false
|
||||
this.$set(question, 'SaveEnum', 0)
|
||||
DicomEvent.$emit('getReportInfo', true)
|
||||
}).catch(() => {
|
||||
this.loading = false
|
||||
})
|
||||
})
|
||||
|
||||
// if (this.criterionType === 2 && this.groupClassify === 3) {
|
||||
// var currentSpleenStatus = this.questionForm[this.spleenStatusId]
|
||||
// var currentSpleenLength = this.questionForm[this.spleenLengthId]
|
||||
// currentSpleenStatus = isNaN(parseInt(currentSpleenStatus)) ? null : parseInt(currentSpleenStatus)
|
||||
// var stIdx = this.measurements.findIndex(i => i.QuestionType === 60)
|
||||
// var slIdx = this.measurements.findIndex(i => i.QuestionType === 60)
|
||||
// if (currentSpleenLength && currentSpleenStatus === 5) {
|
||||
// // '脾脏状态为不可评估,不需要添加标记!'
|
||||
// this.$alert(this.$t('trials:lugano:message:validSpleen1'), this.$t('trials:lugano:fusionDialog:warning'), {
|
||||
// callback: _ => {}
|
||||
// })
|
||||
// } else if (currentSpleenStatus === 5 && ((stIdx > -1 && this.measurements[stIdx].MeasureData) || (slIdx > -1 && this.measurements[slIdx].MeasureData))) {
|
||||
// // 若有标记,状态不可为“无法评估”
|
||||
// this.$alert(this.$t('trials:lugano:message:validSpleen1'), this.$t('trials:lugano:fusionDialog:warning'), {
|
||||
// callback: _ => {}
|
||||
// })
|
||||
// } else if (((stIdx > -1 && this.measurements[stIdx].MeasureData) || (slIdx > -1 && this.measurements[slIdx].MeasureData)) && !currentSpleenLength) {
|
||||
// this.$alert(this.$t('trials:lugano:message:validSpleen2'), this.$t('trials:lugano:fusionDialog:warning'), {
|
||||
// callback: _ => {}
|
||||
// })
|
||||
// } else {
|
||||
// this.saveQuestionsList()
|
||||
// }
|
||||
// } else {
|
||||
// this.saveQuestionsList()
|
||||
// }
|
||||
// this.saveQuestionsList()
|
||||
},
|
||||
locateAnnotation(obj) {
|
||||
const { Id } = obj
|
||||
var idx = this.measurements.findIndex(i => i.QuestionId === Id)
|
||||
|
@ -504,6 +566,19 @@ export default {
|
|||
DicomEvent.$emit('questionFormChange', true)
|
||||
}
|
||||
this.formChanged = true
|
||||
this.setQuestionStatus(this.questions, this.measurements[idx].QuestionType)
|
||||
},
|
||||
setQuestionStatus(obj, questionType) {
|
||||
console.log(obj, questionType)
|
||||
for (let i = 0; i < obj.length; i++) {
|
||||
if (obj[i].QuestionType === questionType) {
|
||||
this.$set(obj[i], 'SaveEnum', 1)
|
||||
break
|
||||
}
|
||||
if (obj[i].Childrens && obj[i].Childrens.length > 0) {
|
||||
this.setQuestionStatus(obj[i].Childrens, questionType)
|
||||
}
|
||||
}
|
||||
},
|
||||
getSpleenL() {
|
||||
var length = null
|
||||
|
|
|
@ -496,7 +496,7 @@ export default {
|
|||
item.Answer = this.questionForm[item.Id] ? this.questionForm[item.Id] : ''
|
||||
arr.push(item)
|
||||
})
|
||||
var obj = { questionId: this.parentQsId, rowIndex: this.questionForm.RowIndex, visitTaskId: this.visitTaskId, lesionType: this.lesionType }
|
||||
var obj = { questionId: this.parentQsId, rowIndex: this.questionForm.RowIndex, visitTaskId: this.visitTaskId, lesionName: this.lesionMark, lesionType: this.lesionType }
|
||||
DicomEvent.$emit('imageLocation', obj)
|
||||
var type = null
|
||||
if (this.questionForm.RowId) {
|
||||
|
@ -1319,7 +1319,7 @@ export default {
|
|||
}
|
||||
}
|
||||
|
||||
DicomEvent.$emit('getScreenshots', async val => {
|
||||
DicomEvent.$emit('getScreenshots', { questionId: this.parentQsId, rowIndex: this.questionForm.RowIndex, visitTaskId: this.visitTaskId, lesionName: this.lesionMark, lesionType: this.lesionType }, async val => {
|
||||
// 靶病灶状态为0(存在)时,一定存在长径或者长短径(长径、十字线 )
|
||||
// 普通靶病灶:长径大于10mm且不小于2倍层厚(基线校验)
|
||||
// 淋巴结靶病灶:短径大于15mm且不小于2倍层厚(基线校验)
|
||||
|
|
|
@ -454,7 +454,7 @@ export default {
|
|||
item.Answer = this.questionForm[item.Id] ? this.questionForm[item.Id] : ''
|
||||
arr.push(item)
|
||||
})
|
||||
var obj = { questionId: this.parentQsId, rowIndex: this.questionForm.RowIndex, visitTaskId: this.visitTaskId, lesionType: this.lesionType }
|
||||
var obj = { questionId: this.parentQsId, rowIndex: this.questionForm.RowIndex, visitTaskId: this.visitTaskId, lesionName: this.lesionMark, lesionType: this.lesionType }
|
||||
DicomEvent.$emit('imageLocation', obj)
|
||||
var type = null
|
||||
if (this.questionForm.RowId) {
|
||||
|
@ -970,7 +970,7 @@ export default {
|
|||
}
|
||||
}
|
||||
|
||||
DicomEvent.$emit('getScreenshots', async val => {
|
||||
DicomEvent.$emit('getScreenshots', { questionId: this.parentQsId, rowIndex: this.questionForm.RowIndex, visitTaskId: this.visitTaskId, lesionName: this.lesionMark, lesionType: this.lesionType }, async val => {
|
||||
var picturePath = ''
|
||||
if (val && measureData) {
|
||||
var pictureObj = await this.uploadScreenshots(`${new Date().getTime()}`, val)
|
||||
|
|
|
@ -690,6 +690,7 @@ export default {
|
|||
await store.dispatch('reading/setCurrentReadingTaskState', 2)
|
||||
var isAutoTask = await this.getAutoTaskVal()
|
||||
if (isAutoTask) {
|
||||
DicomEvent.$emit('reload')
|
||||
// DicomEvent.$emit('getNextTask')
|
||||
window.location.reload()
|
||||
} else {
|
||||
|
|
|
@ -78,7 +78,7 @@
|
|||
</p>
|
||||
|
||||
<div class="flex-div">
|
||||
<div v-if="measureData.findIndex(v=>v.SeriesId === series.seriesId && v.MeasureData) > -1">
|
||||
<div v-if="measureData && measureData.findIndex(v=>v.SeriesId === series.seriesId && v.MeasureData) > -1">
|
||||
<!-- 有标注 -->
|
||||
<el-tooltip class="item" effect="dark" :content="$t('trials:reading:button:marked')" placement="right">
|
||||
<i class="el-icon-star-on" style="font-size: 16px;color: #ff5722;" />
|
||||
|
|
|
@ -78,7 +78,7 @@
|
|||
</p>
|
||||
|
||||
<div class="flex-div">
|
||||
<div v-if="measureData.findIndex(v=>v.SeriesId === series.seriesId && v.MeasureData) > -1">
|
||||
<div v-if="measureData && measureData.findIndex(v=>v.SeriesId === series.seriesId && v.MeasureData) > -1">
|
||||
<!-- 有标注 -->
|
||||
<el-tooltip class="item" effect="dark" :content="$t('trials:reading:button:marked')" placement="right">
|
||||
<i class="el-icon-star-on" style="font-size: 16px;color: #ff5722;" />
|
||||
|
|
Loading…
Reference in New Issue