wangxiaoshuang 2024-07-18 15:14:14 +08:00
commit 31d3a17b80
20 changed files with 1419 additions and 1295 deletions

View File

@ -203,7 +203,7 @@
> >
<i slot="default" class="el-icon-plus" /> <i slot="default" class="el-icon-plus" />
<div slot="file" slot-scope="{file}"> <div slot="file" slot-scope="{file}">
<viewer :images="images" :ref="file.url"> <viewer :ref="file.url" :images="images">
<img <img
class="el-upload-list__item-thumbnail" class="el-upload-list__item-thumbnail"
:src="OSSclientConfig.basePath + file.url" :src="OSSclientConfig.basePath + file.url"

View File

@ -1021,6 +1021,10 @@ export default {
if (!this.petctWindow) return if (!this.petctWindow) return
this.petctWindow.postMessage({ type: 'readingPageUpdate', data: data }, window.location) this.petctWindow.postMessage({ type: 'readingPageUpdate', data: data }, window.location)
}) })
DicomEvent.$on('resetPage', () => {
if (!this.petctWindow) return
this.petctWindow.postMessage({ type: 'resetPage' }, window.location)
})
DicomEvent.$on('setReadingState', (data) => { DicomEvent.$on('setReadingState', (data) => {
if (!this.petctWindow) return if (!this.petctWindow) return
this.petctWindow.postMessage({ type: 'setReadingState', data: data }, window.location) this.petctWindow.postMessage({ type: 'setReadingState', data: data }, window.location)

View File

@ -2149,7 +2149,49 @@ export default {
this.screenshotWindow.close() this.screenshotWindow.close()
} }
}, },
async clearAnnotations() {
const viewportIds = ['PT_AXIAL', 'CT_AXIAL', 'FUSION_AXIAL']
viewportIds.map(v => {
const viewport = renderingEngine.getViewport(v)
if (viewport) {
var annotations = annotation.state.getAnnotations('CircleROI', viewport.element)
if (annotations && annotations.length > 0) {
annotations.map(i => {
if (i.metadata.toolName === 'CircleROI') {
annotation.state.removeAnnotation(i.annotationUID)
}
})
}
}
viewport.render()
})
try {
const visitTaskId = this.$route.query.visitTaskId
const res = await getTableAnswerRowInfoList(visitTaskId)
if (res.IsSuccess) {
var arr = []
res.Result.forEach(el => {
if (el.OtherMeasureData) {
el.OtherMeasureData = JSON.parse(el.OtherMeasureData)
el.OtherMeasureData.invalidated = false
if (this.readingTaskState === 2) {
el.OtherMeasureData.isLocked = true
}
el.OtherMeasureData.data.remark = el.OrderMarkName
const viewport = renderingEngine.getViewport('PT_AXIAL')
annotation.state.addAnnotation(el.OtherMeasureData, viewport.element)
}
arr.push(el)
})
this.measureDatas = arr
}
} catch (e) {
}
},
async receiveMsg(event) { async receiveMsg(event) {
console.log(event.data.type)
if (event.data.type === 'readingPageUpdate') { if (event.data.type === 'readingPageUpdate') {
// this.$refs['questions'].initList() // this.$refs['questions'].initList()
this.$refs['tableQuestions'].initList(true) this.$refs['tableQuestions'].initList(true)
@ -2171,6 +2213,14 @@ export default {
FusionEvent.$emit('closeHistoryScreenshot') FusionEvent.$emit('closeHistoryScreenshot')
window.close() window.close()
} }
} else if (event.data.type === 'resetPage') {
if (this.screenshotWindow) {
this.screenshotWindow.close()
}
this.$refs['tableQuestions'].initList(true)
this.$refs['questions'].initList(true)
this.isLocate = true
this.clearAnnotations()
} }
}, },
startTimer() { startTimer() {

View File

@ -66,12 +66,36 @@
</template> </template>
</el-input> </el-input>
</template> </template>
<template v-else-if="question.QuestionType === 55">
<el-select
v-model="questionForm[question.Id]"
:disabled="readingTaskState >= 2 "
clearable
@change="((val)=>{formItemChange(val, question)})"
>
<el-option-group
:label="!isNaN(parseFloat(question.LastTaskAnswer)) ? `${$t('trials:dicomReading:tip:lastVisitStatus')} ${$fd(question.DictionaryCode,parseFloat(question.LastTaskAnswer))}` : ''"
>
<template>
<el-option
v-for="item of $d[question.DictionaryCode]"
:key="item.id"
:value="String(item.value)"
:label="item.label"
/>
</template>
</el-option-group>
</el-select>
</template>
<template v-else-if="question.QuestionType === 56"> <template v-else-if="question.QuestionType === 56">
<el-select <el-select
v-model="questionForm[question.Id]" v-model="questionForm[question.Id]"
:disabled="readingTaskState >= 2 " :disabled="readingTaskState >= 2 "
clearable clearable
@change="((val)=>{formItemChange(val, question)})" @change="((val)=>{formItemChange(val, question)})"
>
<el-option-group
:label="!isNaN(parseFloat(question.LastTaskAnswer)) ? `${$t('trials:dicomReading:tip:lastVisitStatus')} ${parseFloat(question.LastTaskAnswer) === 5 ? 'NA' : $fd(question.DictionaryCode,parseFloat(question.LastTaskAnswer))}` : ''"
> >
<template v-if="pet5PS*1=== -1"> <template v-if="pet5PS*1=== -1">
<el-option <el-option
@ -90,6 +114,7 @@
:label="item.label" :label="item.label"
/> />
</template> </template>
</el-option-group>
</el-select> </el-select>
</template> </template>
<template v-else-if="question.QuestionType === 57"> <template v-else-if="question.QuestionType === 57">
@ -98,6 +123,9 @@
:disabled="readingTaskState >= 2 " :disabled="readingTaskState >= 2 "
clearable clearable
@change="((val)=>{formItemChange(val, question)})" @change="((val)=>{formItemChange(val, question)})"
>
<el-option-group
:label="!isNaN(parseFloat(question.LastTaskAnswer)) ? `${$t('trials:dicomReading:tip:lastVisitStatus')} ${$fd(question.DictionaryCode,parseFloat(question.LastTaskAnswer))}` : ''"
> >
<template v-if="pet5PS*1=== -1"> <template v-if="pet5PS*1=== -1">
<el-option <el-option
@ -116,6 +144,7 @@
:label="item.label" :label="item.label"
/> />
</template> </template>
</el-option-group>
</el-select> </el-select>
</template> </template>
<!-- 输入框 --> <!-- 输入框 -->

View File

@ -14,7 +14,7 @@
:question-form="questionForm" :question-form="questionForm"
:reading-task-state="readingTaskState" :reading-task-state="readingTaskState"
:visit-task-id="visitTaskId" :visit-task-id="visitTaskId"
:pet5PS="questionForm[pet5PSId]" :pet5p-s="questionForm[pet5PSId]"
:lung-is-inside-volume="lungIsInsideVolume" :lung-is-inside-volume="lungIsInsideVolume"
:liver-is-inside-volume="liverIsInsideVolume" :liver-is-inside-volume="liverIsInsideVolume"
@setFormItemData="setFormItemData" @setFormItemData="setFormItemData"
@ -163,15 +163,17 @@ export default {
} }
this.initList(true) this.initList(true)
}, },
initList(isInit) { async initList(isInit) {
this.loading = true this.loading = true
var params = { try {
const params = {
trialId: this.trialId, trialId: this.trialId,
visitTaskId: this.visitTaskId, visitTaskId: this.visitTaskId,
questionClassify: 0 questionClassify: 0
} }
getDicomReadingQuestionAnswer(params).then(res => { const res = await getDicomReadingQuestionAnswer(params)
var questions = res.Result if (res.IsSuccess) {
const questions = res.Result
questions.map((v) => { questions.map((v) => {
v.IsBaseLineTask = this.isBaseLineTask v.IsBaseLineTask = this.isBaseLineTask
@ -197,8 +199,12 @@ export default {
} }
this.measurements.push(i) this.measurements.push(i)
}) })
}
this.loading = false this.loading = false
}).catch(() => { this.loading = false }) } catch (e) {
console.log(e)
this.loading = false
}
}, },
setChild(obj) { setChild(obj) {
obj.forEach(i => { obj.forEach(i => {
@ -263,37 +269,28 @@ export default {
// } // }
}) })
}, },
saveQuestionsForm() { async saveQuestionsForm() {
this.loading = true this.loading = true
try {
var answers = [] var answers = []
for (const k in this.questionForm) { for (const k in this.questionForm) {
answers.push({ id: k, answer: this.questionForm[k] }) 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)
// }
// questionMarkInfoList.push(i)
// })
var params = { var params = {
visitTaskId: this.visitTaskId, visitTaskId: this.visitTaskId,
answers: answers answers: answers
// questionMarkInfoList
} }
saveTaskQuestion(1, params).then(async res => { const res = await saveTaskQuestion(1, params)
if (res.IsSuccess) {
window.opener.postMessage({ type: 'petctLesionUpdate' }, window.location) window.opener.postMessage({ type: 'petctLesionUpdate' }, window.location)
this.loading = false this.loading = false
this.questionFormChangeState = false this.questionFormChangeState = false
this.$message({ message: this.$t('common:message:savedSuccessfully'), type: 'success', duration: 2000 }) this.$message({ message: this.$t('common:message:savedSuccessfully'), type: 'success', duration: 2000 })
}).catch(() => { }
} catch (e) {
console.log(e)
this.loading = false this.loading = false
}) }
}, },
checkAnnotationStatus(obj) { checkAnnotationStatus(obj) {
for (let i = 0; i < obj.length; i++) { for (let i = 0; i < obj.length; i++) {
@ -422,21 +419,27 @@ export default {
break break
} }
} }
try {
var params = { var params = {
visitTaskId: this.visitTaskId, visitTaskId: this.visitTaskId,
answers, answers,
questionMarkInfoList questionMarkInfoList
} }
const qsType = question.QuestionType === 51 ? 2 : question.QuestionType === 52 ? 3 : null const qsType = question.QuestionType === 51 ? 2 : question.QuestionType === 52 ? 3 : null
saveTaskQuestion(qsType, params).then(async res => {
const res = await saveTaskQuestion(qsType, params)
if (res.IsSuccess) {
this.$set(question, 'SaveEnum', 0) this.$set(question, 'SaveEnum', 0)
window.opener.postMessage({ type: 'petctLesionUpdate' }, window.location) window.opener.postMessage({ type: 'petctLesionUpdate' }, window.location)
loading.close() loading.close()
this.$message({ message: this.$t('common:message:savedSuccessfully'), type: 'success', duration: 2000 }) this.$message({ message: this.$t('common:message:savedSuccessfully'), type: 'success', duration: 2000 })
this.resetSuvQuestions(1) this.resetSuvQuestions(1)
}).catch(() => { }
loading.close() loading.close()
}) } catch (e) {
console.log(e)
loading.close()
}
}) })
}, },
viewAnnotations(question) { viewAnnotations(question) {
@ -654,28 +657,22 @@ export default {
return '' return ''
} }
}, },
resetSuvQuestions(type = 0) { async resetSuvQuestions(type = 0) {
this.loading = true this.loading = true
var params = { try {
const params = {
trialId: this.trialId, trialId: this.trialId,
visitTaskId: this.visitTaskId, visitTaskId: this.visitTaskId,
questionClassify: 0 questionClassify: 0
} }
getDicomReadingQuestionAnswer(params).then(res => { const res = await getDicomReadingQuestionAnswer(params)
var questions = res.Result if (res.IsSuccess) {
const questions = res.Result
questions.map((v) => { questions.map((v) => {
if (v.Type === 'group' && v.Childrens.length === 0) return if (v.Type === 'group' && v.Childrens.length === 0) return
// if (!v.IsPage && v.Type !== 'group' && v.Type !== 'summary') {
// this.$set(this.questionForm, v.Id, v.Answer ? v.Answer : null)
// }
if (v.Childrens.length > 0) { if (v.Childrens.length > 0) {
this.setSuvChild(v.Childrens, type) this.setSuvChild(v.Childrens, type)
} }
// var pet5PS = this.setpet5PS()
// this.questionForm[this.pet5PSId] = pet5PS
// this.calculatePet5PS = pet5PS
// this.setPet5PSCommentDisplay()
// this.setUptakeFormBaseline()
}) })
for (let i = 0; i < this.questions[0].Childrens[0].Childrens.length; i++) { for (let i = 0; i < this.questions[0].Childrens[0].Childrens.length; i++) {
if (this.questions[0].Childrens[0].Childrens[i].QuestionType === 59) { if (this.questions[0].Childrens[0].Childrens[i].QuestionType === 59) {
@ -686,8 +683,12 @@ export default {
} }
} }
this.questionFormChangeState = true this.questionFormChangeState = true
}
this.loading = false this.loading = false
}).catch(() => { this.loading = false }) } catch (e) {
console.log(e)
this.loading = false
}
}, },
setSuvChild(obj, type) { setSuvChild(obj, type) {
obj.forEach(i => { obj.forEach(i => {

View File

@ -316,7 +316,7 @@ export default {
this.$set(this.questionForm, 'OrganInfoId', this.answers.OrganInfoId ? this.answers.OrganInfoId : '') this.$set(this.questionForm, 'OrganInfoId', this.answers.OrganInfoId ? this.answers.OrganInfoId : '')
// saveTypeEnum 01访/2 // saveTypeEnum 01访/2
var lesionState = this.getQuestionVal(7) // var lesionState = this.getQuestionVal(7)
if (!isRerender) { if (!isRerender) {
if (this.questionForm.RowId) { if (this.questionForm.RowId) {
this.$set(this.questionForm, 'saveTypeEnum', 2) this.$set(this.questionForm, 'saveTypeEnum', 2)
@ -625,7 +625,7 @@ export default {
} }
} }
} }
var lesionState = this.getQuestionVal(7) // var lesionState = this.getQuestionVal(7)
if (this.firstRenderAnnotation) { if (this.firstRenderAnnotation) {
this.$set(this.questionForm, 'saveTypeEnum', 2) this.$set(this.questionForm, 'saveTypeEnum', 2)
} else { } else {
@ -871,13 +871,12 @@ export default {
this.deleteInfo = null this.deleteInfo = null
params.rowId = '' params.rowId = ''
} }
submitTableQuestion(params).then(async res => { try {
const res = await submitTableQuestion(params)
if (res.IsSuccess) {
this.currentMarkTool = otherMeasureData ? otherMeasureData.type : '' this.currentMarkTool = otherMeasureData ? otherMeasureData.type : ''
// saveTypeEnum 01访/2
this.$set(this.questionForm, 'saveTypeEnum', 2) this.$set(this.questionForm, 'saveTypeEnum', 2)
this.originalQuestionForm = { ...this.questionForm } this.originalQuestionForm = { ...this.questionForm }
loading.close()
var isLymphLesion = this.getQuestionVal(2) var isLymphLesion = this.getQuestionVal(2)
isLymphLesion = isLymphLesion ? parseInt(isLymphLesion) : null isLymphLesion = isLymphLesion ? parseInt(isLymphLesion) : null
var lesionOrgan = this.getQuestionVal(6) var lesionOrgan = this.getQuestionVal(6)
@ -886,23 +885,30 @@ export default {
const suvMax = this.getQuestionVal(20) const suvMax = this.getQuestionVal(20)
this.$emit('resetQuestions', { isLymphLesion, lesionPart, lesionOrgan, suvMax, saveTypeEnum: this.questionForm.saveTypeEnum, rowIndex: this.rowIndex, questionId: this.parentQsId, anwsers: this.questionForm }) this.$emit('resetQuestions', { isLymphLesion, lesionPart, lesionOrgan, suvMax, saveTypeEnum: this.questionForm.saveTypeEnum, rowIndex: this.rowIndex, questionId: this.parentQsId, anwsers: this.questionForm })
// FusionEvent.$emit('getAnnotations')
FusionEvent.$emit('resetSuvQuestions') FusionEvent.$emit('resetSuvQuestions')
window.opener.postMessage({ type: 'petctLesionUpdate' }, window.location) window.opener.postMessage({ type: 'petctLesionUpdate' }, window.location)
this.$emit('close') this.$emit('close')
loading.close()
this.$message({ message: this.$t('common:message:savedSuccessfully'), type: 'success', duration: 2000 }) this.$message({ message: this.$t('common:message:savedSuccessfully'), type: 'success', duration: 2000 })
}).catch(() => { loading.close() }) }
loading.close()
} catch (e) {
console.log(e)
loading.close()
}
}) })
}) })
}, },
handleDeleteMeasureData() { async handleDeleteMeasureData() {
// //
this.$confirm(this.$t('trials:reading:warnning:msg47'), { const confirm = await this.$confirm(
this.$t('trials:reading:warnning:msg47'),
{
type: 'warning', type: 'warning',
distinguishCancelAndClose: true distinguishCancelAndClose: true
}) }
.then(async() => { )
if (confirm !== 'confirm') return
this.organList = [] this.organList = []
await this.getOrganInfoList() await this.getOrganInfoList()
// SUV // SUV
@ -938,8 +944,6 @@ export default {
var suvMax = this.getQuestionVal(20) var suvMax = this.getQuestionVal(20)
this.$emit('resetQuestions', { isLymphLesion, lesionPart, lesionOrgan, suvMax, saveTypeEnum: this.questionForm.saveTypeEnum, rowIndex: this.rowIndex, questionId: this.parentQsId, anwsers: anwsers }) this.$emit('resetQuestions', { isLymphLesion, lesionPart, lesionOrgan, suvMax, saveTypeEnum: this.questionForm.saveTypeEnum, rowIndex: this.rowIndex, questionId: this.parentQsId, anwsers: anwsers })
this.isInsideVolume = true this.isInsideVolume = true
})
.catch(() => {})
}, },
async clearMeasurement() { async clearMeasurement() {
this.organList = [] this.organList = []
@ -975,65 +979,63 @@ export default {
this.$emit('resetQuestions', { isLymphLesion, lesionPart, lesionOrgan, suvMax, saveTypeEnum: this.questionForm.saveTypeEnum, rowIndex: this.rowIndex, questionId: this.parentQsId, anwsers: anwsers }) this.$emit('resetQuestions', { isLymphLesion, lesionPart, lesionOrgan, suvMax, saveTypeEnum: this.questionForm.saveTypeEnum, rowIndex: this.rowIndex, questionId: this.parentQsId, anwsers: anwsers })
this.isInsideVolume = true this.isInsideVolume = true
}, },
handleDelete() { async handleDelete() {
// const confirm = await this.$confirm(
this.$confirm(this.$t('trials:reading:warnning:msg48'), { this.$t('trials:reading:warnning:msg48'),
{
type: 'warning', type: 'warning',
distinguishCancelAndClose: true distinguishCancelAndClose: true
}) }
.then(async() => { )
if (confirm !== 'confirm') return
if (this.questionForm.RowId) { if (this.questionForm.RowId) {
const loading = this.$loading({ fullscreen: true }) const loading = this.$loading({ fullscreen: true })
try {
var param = { var param = {
visitTaskId: this.visitTaskId, visitTaskId: this.visitTaskId,
questionId: this.parentQsId, questionId: this.parentQsId,
rowId: this.questionForm.RowId rowId: this.questionForm.RowId
} }
deleteReadingRowAnswer(param) const res = await deleteReadingRowAnswer(param)
.then(async res => {
loading.close()
if (res.IsSuccess) { if (res.IsSuccess) {
// this.$emit('getReadingQuestionAndAnswer')
if (this.questionForm.IsDicomReading && this.questionForm.OtherMeasureData) { if (this.questionForm.IsDicomReading && this.questionForm.OtherMeasureData) {
// await store.dispatch('reading/removeMeasuredData', { visitTaskId: this.visitTaskId, measureData: this.questionForm.MeasureData, questionId: this.parentQsId, rowIndex: this.questionForm.RowIndex })
FusionEvent.$emit('removeAnnotation', { otherMeasureData: this.questionForm.OtherMeasureData, type: 'delete' }) FusionEvent.$emit('removeAnnotation', { otherMeasureData: this.questionForm.OtherMeasureData, type: 'delete' })
} }
this.$emit('close', { lesionType: this.lesionType, rowIndex: this.rowIndex, visitTaskId: this.visitTaskId }) this.$emit('close', { lesionType: this.lesionType, rowIndex: this.rowIndex, visitTaskId: this.visitTaskId })
// '' // ''
this.$message.success(this.$t('common:message:deletedSuccessfully')) this.$message.success(this.$t('common:message:deletedSuccessfully'))
loading.close() loading.close()
window.opener.postMessage({ type: 'petctLesionUpdate' }, window.location) window.opener.postMessage({ type: 'petctLesionUpdate' }, window.location)
} }
}).catch(() => { loading.close() }) loading.close()
} catch (e) {
console.log(e)
loading.close()
}
} else { } else {
// const loading = this.$loading({ fullscreen: true })
// //
if (this.questionForm.OtherMeasureData && this.questionForm.IsDicomReading) { if (this.questionForm.OtherMeasureData && this.questionForm.IsDicomReading) {
// await store.dispatch('reading/removeMeasuredData', { visitTaskId: this.visitTaskId, measureData: this.questionForm.MeasureData, questionId: this.parentQsId, rowIndex: this.questionForm.RowIndex })
FusionEvent.$emit('removeAnnotation', { otherMeasureData: this.questionForm.OtherMeasureData }) FusionEvent.$emit('removeAnnotation', { otherMeasureData: this.questionForm.OtherMeasureData })
} }
this.$emit('close', { lesionType: this.lesionType, rowIndex: this.rowIndex, visitTaskId: this.visitTaskId }) this.$emit('close', { lesionType: this.lesionType, rowIndex: this.rowIndex, visitTaskId: this.visitTaskId })
// loading.close()
} }
})
}, },
handleClose() { async handleClose() {
if (!this.questionForm.RowId) { if (!this.questionForm.RowId) {
// '' // ''
this.$confirm(this.$t('trials:reading:warnning:msg49'), { const confirm = await this.$confirm(
this.$t('trials:reading:warnning:msg49'),
{
type: 'warning', type: 'warning',
distinguishCancelAndClose: true distinguishCancelAndClose: true
}) }
.then(async() => { )
if (confirm !== 'confirm') return
// //
if (this.questionForm.OtherMeasureData) { if (this.questionForm.OtherMeasureData) {
FusionEvent.$emit('removeAnnotation', { otherMeasureData: this.questionForm.OtherMeasureData }) FusionEvent.$emit('removeAnnotation', { otherMeasureData: this.questionForm.OtherMeasureData })
// await store.dispatch('reading/removeMeasuredData', { visitTaskId: this.visitTaskId, measureData: this.questionForm.MeasureData, questionId: this.parentQsId, rowIndex: this.questionForm.RowIndex })
} }
this.$emit('close', { lesionType: this.lesionType, rowIndex: this.rowIndex, visitTaskId: this.visitTaskId }) this.$emit('close', { lesionType: this.lesionType, rowIndex: this.rowIndex, visitTaskId: this.visitTaskId })
})
.catch(() => {})
} else { } else {
if (this.questionForm.saveTypeEnum === 1) { if (this.questionForm.saveTypeEnum === 1) {
this.$emit('close') this.$emit('close')

View File

@ -1080,7 +1080,6 @@ export default {
this.$refs['ecrf'].getQuestions(obj.visitTaskId) this.$refs['ecrf'].getQuestions(obj.visitTaskId)
}, },
async resetMeasuredData() { async resetMeasuredData() {
try {
const confirm = await this.$confirm( const confirm = await this.$confirm(
this.$t('trials:dicomReading:message:confirmReset1'), this.$t('trials:dicomReading:message:confirmReset1'),
this.$t('trials:dicomReading:message:confirmReset2'), this.$t('trials:dicomReading:message:confirmReset2'),
@ -1090,7 +1089,8 @@ export default {
} }
) )
if (confirm !== 'confirm') return if (confirm !== 'confirm') return
this.loading = true const loading = this.$loading({ fullscreen: true })
try {
const res = await resetReadingTask({ visitTaskId: this.visitTaskId }) const res = await resetReadingTask({ visitTaskId: this.visitTaskId })
this.loading = false this.loading = false
if (res.IsSuccess) { if (res.IsSuccess) {
@ -1099,13 +1099,16 @@ export default {
this.activeItem.activeRowIndex = null this.activeItem.activeRowIndex = null
this.activeItem.activeCollapseId = null this.activeItem.activeCollapseId = null
await this.getReadingQuestionAndAnswer(this.visitTaskId) await this.getReadingQuestionAndAnswer(this.visitTaskId)
this.$refs['ecrf'].resetQSForm() const triald = this.$router.currentRoute.query.trialId
await store.dispatch('reading/refreshDicomReadingQuestionAnswer', { trialId: triald, visitTaskId: this.visitTaskId })
this.$refs['ecrf'].getQuestions(this.visitTaskId, true)
DicomEvent.$emit('getMeasureData') DicomEvent.$emit('getMeasureData')
DicomEvent.$emit('getReportInfo', true) DicomEvent.$emit('getReportInfo', true)
DicomEvent.$emit('refreshStudyListMeasureData') DicomEvent.$emit('refreshStudyListMeasureData')
} }
loading.close()
} catch (e) { } catch (e) {
this.loading = false loading.close()
console.log(e) console.log(e)
} }
}, },

View File

@ -116,6 +116,9 @@
/> />
</template> </template>
<template v-else-if="qs.DictionaryCode && qs.QuestionMark === 7 && !isBaseLineTask"> <template v-else-if="qs.DictionaryCode && qs.QuestionMark === 7 && !isBaseLineTask">
<el-option-group
:label="!isNaN(parseFloat(answers.LastTaskState)) ? `${$t('trials:dicomReading:tip:lastVisitStatus')} ${$fd(qs.DictionaryCode,parseFloat(answers.LastTaskState))}` : ''"
>
<!-- 首次分裂的病灶只能选择存在 --> <!-- 首次分裂的病灶只能选择存在 -->
<template v-if="answers.IsFristAdd=== 'True' && answers.SplitOrMergeType === '0'"> <template v-if="answers.IsFristAdd=== 'True' && answers.SplitOrMergeType === '0'">
<el-option <el-option
@ -144,6 +147,7 @@
:label="item.label" :label="item.label"
/> />
</template> </template>
</el-option-group>
</template> </template>
<template v-else-if="qs.DictionaryCode && qs.QuestionMark !== 7"> <template v-else-if="qs.DictionaryCode && qs.QuestionMark !== 7">
<el-option <el-option
@ -436,34 +440,20 @@ export default {
if (this.answers.measureObj) { if (this.answers.measureObj) {
await this.setMeasureData(this.answers.measureObj, true) await this.setMeasureData(this.answers.measureObj, true)
} else { } else {
// let isLymphLesion = this.getQuestionVal(2)
// isLymphLesion = !isNaN(parseInt(isLymphLesion)) ? parseInt(isLymphLesion) : null
// if (isLymphLesion === 1) {
// //
// this.organList = []
// await this.getOrganInfoList(1)
// } else if (isLymphLesion === 0) {
// this.organList = []
// await this.getOrganInfoList(0)
// } else {
// this.organList = []
// await this.getOrganInfoList()
// }
this.organList = [] this.organList = []
await this.getOrganInfoList() await this.getOrganInfoList()
} }
// //
if (this.answers.IsFristAdd === 'True' && this.answers.SplitOrMergeType === '0' && isNaN(parseInt(this.getQuestionVal(7)))) { if (this.answers.IsFristAdd === 'True' && this.answers.SplitOrMergeType === '0' && lesionState === '') {
const stateId = this.getQuestionId(7) const stateId = this.getQuestionId(7)
this.$set(this.questionForm, stateId, 0) this.$set(this.questionForm, stateId, 0)
var isLymphLesion = this.getQuestionVal(2) var isLymphLesion = this.getQuestionVal(2)
isLymphLesion = !isNaN(parseInt(isLymphLesion)) ? parseInt(isLymphLesion) : null
const lesionPart = this.getQuestionVal(8) const lesionPart = this.getQuestionVal(8)
const lesionOrgan = this.getQuestionVal(6) const lesionOrgan = this.getQuestionVal(6)
const lesionLength = !isNaN(parseInt(this.getQuestionVal(0))) ? this.getQuestionVal(0) : '' const lesionLength = this.getQuestionVal(0)
const lesionShort = !isNaN(parseInt(this.getQuestionVal(1))) ? this.getQuestionVal(1) : '' const lesionShort = this.getQuestionVal(1)
const lesionState = !isNaN(parseInt(this.getQuestionVal(7))) ? parseInt(this.getQuestionVal(7)) : '' const lesionState = this.getQuestionVal(7)
this.$emit('resetQuestions', { isLymphLesion, lesionPart, lesionOrgan, lesionShort, lesionState, saveTypeEnum: this.questionForm.saveTypeEnum, lesionLength, rowIndex: this.rowIndex, questionId: this.parentQsId, anwsers: this.questionForm }) this.$emit('resetQuestions', { isLymphLesion, lesionPart, lesionOrgan, lesionShort, lesionState, saveTypeEnum: this.questionForm.saveTypeEnum, lesionLength, rowIndex: this.rowIndex, questionId: this.parentQsId, anwsers: this.questionForm })
} }
if (this.lesionType === 0 && params) { if (this.lesionType === 0 && params) {
@ -479,7 +469,6 @@ export default {
// //
var state = this.getQuestionVal(7)// var state = this.getQuestionVal(7)//
state = isNaN(parseInt(state)) ? 0 : parseInt(state)
var ldi = this.getQuestionVal(0)// var ldi = this.getQuestionVal(0)//
ldi = isNaN(parseFloat(ldi)) ? 0 : ldi ldi = isNaN(parseFloat(ldi)) ? 0 : ldi
var pddIncrease = this.getQuestionVal(17) // PPD var pddIncrease = this.getQuestionVal(17) // PPD
@ -671,24 +660,24 @@ export default {
}) })
}, },
deleteLesionInfo() { deleteLesionInfo() {
return new Promise((resolve, reject) => { return new Promise(async(resolve, reject) => {
const loading = this.$loading({ fullscreen: true }) const loading = this.$loading({ fullscreen: true })
var param = { var param = {
visitTaskId: this.visitTaskId, visitTaskId: this.visitTaskId,
questionId: this.parentQsId, questionId: this.parentQsId,
rowId: this.questionForm.RowId rowId: this.questionForm.RowId
} }
deleteReadingRowAnswer(param) try {
.then(async res => { const res = await deleteReadingRowAnswer(param)
if (res.IsSuccess) { if (res.IsSuccess) {
DicomEvent.$emit('getReportInfo', true) DicomEvent.$emit('getReportInfo', true)
} }
loading.close() loading.close()
resolve() resolve()
}).catch(() => { } catch (e) {
loading.close() loading.close()
reject() reject()
}) }
}) })
}, },
async formItemChange(v, question) { async formItemChange(v, question) {
@ -717,12 +706,11 @@ export default {
this.$set(this.questionForm, 'saveTypeEnum', 0) this.$set(this.questionForm, 'saveTypeEnum', 0)
} }
var isLymphLesion = this.getQuestionVal(2) var isLymphLesion = this.getQuestionVal(2)
isLymphLesion = !isNaN(parseInt(isLymphLesion)) ? parseInt(isLymphLesion) : null
const lesionPart = this.getQuestionVal(8) const lesionPart = this.getQuestionVal(8)
const lesionOrgan = this.getQuestionVal(6) const lesionOrgan = this.getQuestionVal(6)
const lesionLength = !isNaN(parseFloat(this.getQuestionVal(0))) ? this.getQuestionVal(0) : '' const lesionLength = this.getQuestionVal(0)
const lesionShort = !isNaN(parseFloat(this.getQuestionVal(1))) ? this.getQuestionVal(1) : '' const lesionShort = this.getQuestionVal(1)
const lesionState = !isNaN(parseInt(this.getQuestionVal(7))) ? parseInt(this.getQuestionVal(7)) : '' const lesionState = this.getQuestionVal(7)
this.$emit('resetQuestions', { isLymphLesion, lesionPart, lesionOrgan, lesionShort, lesionState, saveTypeEnum: this.questionForm.saveTypeEnum, lesionLength, rowIndex: this.rowIndex, questionId: this.parentQsId, anwsers: this.questionForm }) this.$emit('resetQuestions', { isLymphLesion, lesionPart, lesionOrgan, lesionShort, lesionState, saveTypeEnum: this.questionForm.saveTypeEnum, lesionLength, rowIndex: this.rowIndex, questionId: this.parentQsId, anwsers: this.questionForm })
if (question.QuestionMark === 7) { if (question.QuestionMark === 7) {
@ -772,46 +760,10 @@ export default {
this.$set(this.questionForm, lengthObj.Id, '') this.$set(this.questionForm, lengthObj.Id, '')
this.$set(this.questionForm, shortObj.Id, '') this.$set(this.questionForm, shortObj.Id, '')
} }
// if (this.toolType !== measureData.type) {
//
// var organ = this.getQuestionVal(5)
// 线
// if (measureData.type === 'Bidirectional') {
// this.organList = []
// this.getOrganInfoList(1)
// } else if (measureData.type === 'Length') {
// //
// this.organList = []
// this.getOrganInfoList(0)
// } else {
// this.organList = []
// this.getOrganInfoList()
// }
var isLymphLesion = this.getQuestionVal(2) var isLymphLesion = this.getQuestionVal(2)
isLymphLesion = !isNaN(parseInt(isLymphLesion)) ? parseInt(isLymphLesion) : null
// if (isLymphLesion === 1) {
// //
// this.organList = []
// this.getOrganInfoList(1)
// } else if (isLymphLesion === 0) {
// this.organList = []
// this.getOrganInfoList(0)
// } else {
// this.organList = []
// this.getOrganInfoList()
// }
this.organList = [] this.organList = []
this.getOrganInfoList() this.getOrganInfoList()
// if (this.toolType) {
// this.questionForm[this.getQuestionId(8)] = ''
// this.questionForm[this.getQuestionId(5)] = ''
// this.questionForm[this.getQuestionId(6)] = ''
// this.questionForm[this.getQuestionId(2)] = ''
// }
var data = {} var data = {}
if (measureData.isDicomReading === false) { if (measureData.isDicomReading === false) {
this.$set(this.questionForm, 'IsDicomReading', false) this.$set(this.questionForm, 'IsDicomReading', false)
@ -836,11 +788,7 @@ export default {
const stateId = this.getQuestionId(7) const stateId = this.getQuestionId(7)
this.$set(this.questionForm, stateId, 0) this.$set(this.questionForm, stateId, 0)
} }
var lesionLength = this.getQuestionVal(0)
// var isLymphLesion = this.getQuestionVal(2)
// isLymphLesion = !isNaN(parseInt(isLymphLesion)) ? parseInt(isLymphLesion) : null
var lesionLength = !isNaN(parseFloat(this.getQuestionVal(0))) ? this.getQuestionVal(0) : ''
// var lesionShort = !isNaN(parseInt(this.getQuestionVal(1))) ? this.getQuestionVal(1) : ''
// //
if (!(this.isCurrentTaskAdd === 'True') && this.lesionType === 0 && !this.isBaseLineTask && measureData.type === 'Bidirectional') { if (!(this.isCurrentTaskAdd === 'True') && this.lesionType === 0 && !this.isBaseLineTask && measureData.type === 'Bidirectional') {
if (isLymphLesion) { if (isLymphLesion) {
@ -869,7 +817,7 @@ export default {
if (this.lesionType === 0) { if (this.lesionType === 0) {
this.calculatePPD() this.calculatePPD()
} }
const lesionState = !isNaN(parseInt(this.getQuestionVal(7))) ? parseInt(this.getQuestionVal(7)) : '' const lesionState = this.getQuestionVal(7)
var status = '' var status = ''
if (lesionState) { if (lesionState) {
if (this.lesionType === 0 && lesionState === 1) { if (this.lesionType === 0 && lesionState === 1) {
@ -914,14 +862,11 @@ export default {
} }
this.$set(this.questionForm, 'MeasureData', measureData) this.$set(this.questionForm, 'MeasureData', measureData)
var isLymph = this.getQuestionVal(2) var isLymph = this.getQuestionVal(2)
isLymph = !isNaN(parseInt(isLymph)) ? parseInt(isLymph) : null
const lesionPart = this.getQuestionVal(8) const lesionPart = this.getQuestionVal(8)
const lesionOrgan = this.getQuestionVal(6) const lesionOrgan = this.getQuestionVal(6)
// const lesionLength = !isNaN(parseInt(this.getQuestionVal(0))) ? Number(this.getQuestionVal(0)) : '' const lesionL = this.getQuestionVal(0)
// const lesionShort = !isNaN(parseInt(this.getQuestionVal(1))) ? Number(this.getQuestionVal(1)) : '' const lesionS = this.getQuestionVal(1)
const lesionL = !isNaN(parseFloat(this.getQuestionVal(0))) ? this.getQuestionVal(0) : '' var lesionState = this.getQuestionVal(7)
const lesionS = !isNaN(parseFloat(this.getQuestionVal(1))) ? this.getQuestionVal(1) : ''
var lesionState = !isNaN(parseInt(this.getQuestionVal(7))) ? parseInt(this.getQuestionVal(7)) : ''
// // >0mm>=10mm10mm线 // // >0mm>=10mm10mm线
// if (!this.isBaseLineTask && this.lesionType === 0 && ((isLymphLesion === 0 && lesionLength > 0) || (isLymphLesion === 1 && lesionShort >= 10))) { // if (!this.isBaseLineTask && this.lesionType === 0 && ((isLymphLesion === 0 && lesionLength > 0) || (isLymphLesion === 1 && lesionShort >= 10))) {
// const stateId = this.getQuestionId(7) // const stateId = this.getQuestionId(7)
@ -1081,27 +1026,31 @@ export default {
} }
}, },
getQuestionVal(questionMark) { getQuestionVal(questionMark) {
var idx = this.questions.findIndex(i => i.QuestionMark === questionMark) const idx = this.questions.findIndex(i => i.QuestionMark === questionMark)
if (idx > -1) { if (idx > -1) {
var questionId = this.questions[idx].Id const questionId = this.questions[idx].Id
return this.questionForm[questionId] const answer = this.questionForm[questionId]
if (isNaN(parseFloat(answer))) {
return answer
} else {
return parseFloat(answer)
}
} else { } else {
return '' return ''
} }
}, },
filterState(arr) { filterState(arr) {
if (!this.isBaseLineTask) { if (!this.isBaseLineTask) {
var isLymphLesion = this.getQuestionVal(2) const isLymphLesion = this.getQuestionVal(2)
isLymphLesion = !isNaN(parseInt(isLymphLesion)) ? parseInt(isLymphLesion) : null const lesionLength = this.getQuestionVal(0)
const lesionLength = !isNaN(parseFloat(this.getQuestionVal(0))) ? this.getQuestionVal(0) : 0 const lesionShort = this.getQuestionVal(1)
const lesionShort = !isNaN(parseFloat(this.getQuestionVal(1))) ? this.getQuestionVal(1) : 0 const bLesionL = !isNaN(parseInt(this.answers.LastTaskMajorAxis)) ? parseInt(this.answers.LastTaskMajorAxis) : 0
const lastLesionL = !isNaN(parseFloat(this.answers.LastTaskMajorAxis)) ? parseFloat(this.answers.LastTaskMajorAxis) : 0 const bLesionS = !isNaN(parseInt(this.answers.LastTaskShortAxis)) ? parseInt(this.answers.LastTaskShortAxis) : 0
const lastLesionS = !isNaN(parseFloat(this.answers.LastTaskShortAxis)) ? parseFloat(this.answers.LastTaskShortAxis) : 0 if (this.lesionType === 1 && isLymphLesion === 1 && this.questionForm.MeasureData && this.questionForm.MeasureData.type === 'Bidirectional' && lesionShort < bLesionS) {
if (this.lesionType === 1 && isLymphLesion === 1 && this.questionForm.MeasureData && (this.questionForm.MeasureData.type === 'Length' || this.questionForm.MeasureData.type === 'Bidirectional') && lesionShort < lastLesionS) {
arr = arr.filter(i => i.value !== 1) arr = arr.filter(i => i.value !== 1)
} else if (this.lesionType === 1 && isLymphLesion === 1 && this.questionForm.MeasureData && (this.questionForm.MeasureData.type === 'Length' || this.questionForm.MeasureData.type === 'Bidirectional') && lesionShort >= 10 && lesionShort > lastLesionS) { } else if (this.lesionType === 1 && isLymphLesion === 1 && this.questionForm.MeasureData && this.questionForm.MeasureData.type === 'Bidirectional' && lesionShort >= 10 && lesionShort > bLesionS) {
arr = arr.filter(i => i.value === 0 || i.value === 1) arr = arr.filter(i => i.value === 0 || i.value === 1)
} else if (this.lesionType === 1 && isLymphLesion === 0 && this.questionForm.MeasureData && (this.questionForm.MeasureData.type === 'Length' || this.questionForm.MeasureData.type === 'Bidirectional') && lesionLength < lastLesionL) { } else if (this.lesionType === 1 && isLymphLesion === 0 && this.questionForm.MeasureData && (this.questionForm.MeasureData.type === 'Length' || this.questionForm.MeasureData.type === 'Bidirectional') && lesionLength < bLesionL) {
arr = arr.filter(i => i.value !== 1) arr = arr.filter(i => i.value !== 1)
} }
return arr return arr
@ -1112,20 +1061,6 @@ export default {
setDeleteInfo(deleteInfo) { setDeleteInfo(deleteInfo) {
this.deleteInfo = deleteInfo this.deleteInfo = deleteInfo
}, },
deleteOldLesion(questionId, rowId) {
return new Promise((resolve, reject) => {
var param = {
visitTaskId: this.visitTaskId,
questionId: questionId,
rowId: rowId
}
deleteReadingRowAnswer(param)
.then(async res => {
resolve()
}).catch(() => {
})
})
},
// async uploadScreenshots(fileName, file) { // async uploadScreenshots(fileName, file) {
// try { // try {
// file = this.convertBase64ToBlob(file) // file = this.convertBase64ToBlob(file)
@ -1179,11 +1114,10 @@ export default {
// Blob // Blob
return new Blob([bytesCode], { type: imgtype }) return new Blob([bytesCode], { type: imgtype })
}, },
handleSave() { async handleSave() {
console.log('handleSave') const valid = await this.$refs.measurementForm.validate()
this.$refs.measurementForm.validate(async valid => {
if (!valid) { if (!valid) {
if(this.lesionType === 0){ if (this.lesionType === 0) {
this.$refs['scrollPanel'].scrollTo({ top: 0, behavior: 'smooth' }) this.$refs['scrollPanel'].scrollTo({ top: 0, behavior: 'smooth' })
} }
return return
@ -1191,10 +1125,8 @@ export default {
const loading = this.$loading({ fullscreen: true }) const loading = this.$loading({ fullscreen: true })
var measureData = this.questionForm.MeasureData var measureData = this.questionForm.MeasureData
var lesionState = this.getQuestionVal(7) var lesionState = this.getQuestionVal(7)
// var lesionLength = !isNaN(parseInt(this.getQuestionVal(0))) ? Number(this.getQuestionVal(0)) : '' var lesionLength = this.getQuestionVal(0)
// var lesionShort = !isNaN(parseInt(this.getQuestionVal(1))) ? Number(this.getQuestionVal(1)) : '' var lesionShort = this.getQuestionVal(1)
var lesionLength = !isNaN(parseFloat(this.getQuestionVal(0))) ? this.getQuestionVal(0) : ''
var lesionShort = !isNaN(parseFloat(this.getQuestionVal(1))) ? this.getQuestionVal(1) : ''
var lymphNodes = this.getQuestionVal(2) var lymphNodes = this.getQuestionVal(2)
lymphNodes = (lymphNodes !== null && lymphNodes !== undefined) ? parseInt(lymphNodes) : null lymphNodes = (lymphNodes !== null && lymphNodes !== undefined) ? parseInt(lymphNodes) : null
if (this.isBaseLineTask) { if (this.isBaseLineTask) {
@ -1715,48 +1647,54 @@ export default {
params.isDicomReading = false params.isDicomReading = false
} }
if (this.deleteInfo) { if (this.deleteInfo) {
await this.deleteOldLesion(this.deleteInfo.questionId, this.deleteInfo.rowId) var param = {
visitTaskId: this.visitTaskId,
questionId: this.deleteInfo.questionId,
rowId: this.deleteInfo.rowId
}
await deleteReadingRowAnswer(param)
this.deleteInfo = null this.deleteInfo = null
params.rowId = '' params.rowId = ''
} }
submitTableQuestion(params).then(async res => { try {
const res = await submitTableQuestion(params)
if (res.IsSuccess) {
// //
this.$message.success(this.$t('common:message:savedSuccessfully')) this.$message.success(this.$t('common:message:savedSuccessfully'))
this.currentMarkTool = measureData ? measureData.type : '' this.currentMarkTool = measureData ? measureData.type : ''
// saveTypeEnum 01访/2
this.$set(this.questionForm, 'saveTypeEnum', 2) this.$set(this.questionForm, 'saveTypeEnum', 2)
this.originalQuestionForm = { ...this.questionForm } this.originalQuestionForm = { ...this.questionForm }
var isLymphLesion = this.getQuestionVal(2) var isLymphLesion = this.getQuestionVal(2)
isLymphLesion = isLymphLesion ? parseInt(isLymphLesion) : null
var lesionOrgan = this.getQuestionVal(6) var lesionOrgan = this.getQuestionVal(6)
this.$set(this.questionForm, 'RowId', res.Result.RowId) this.$set(this.questionForm, 'RowId', res.Result.RowId)
const lesionPart = this.getQuestionVal(8) const lesionPart = this.getQuestionVal(8)
const lesionState = Number(this.getQuestionVal(7)) const lesionState = this.getQuestionVal(7)
this.$emit('resetQuestions', { isLymphLesion, lesionPart, lesionOrgan, lesionShort, saveTypeEnum: this.questionForm.saveTypeEnum, lesionLength, lesionState, rowIndex: this.rowIndex, questionId: this.parentQsId, anwsers: this.questionForm }) this.$emit('resetQuestions', { isLymphLesion, lesionPart, lesionOrgan, lesionShort, saveTypeEnum: this.questionForm.saveTypeEnum, lesionLength, lesionState, rowIndex: this.rowIndex, questionId: this.parentQsId, anwsers: this.questionForm })
// await store.dispatch('reading/refreshMeasuredData', this.visitTaskId)
// DicomEvent.$emit('getMeasureData')
this.$emit('close') this.$emit('close')
DicomEvent.$emit('readingPageUpdate', {}) DicomEvent.$emit('readingPageUpdate', {})
DicomEvent.$emit('getReportInfo', true) DicomEvent.$emit('getReportInfo', true)
DicomEvent.$emit('setMeasuredToolsPassive') DicomEvent.$emit('setMeasuredToolsPassive')
loading.close()
if (parseInt(this.answers.SplitOrMergeType) === 0) { if (parseInt(this.answers.SplitOrMergeType) === 0) {
this.$emit('getReadingQuestionAndAnswer') this.$emit('getReadingQuestionAndAnswer')
} }
}).catch(() => { loading.close() }) }
}) loading.close()
} catch (e) {
loading.close()
}
}) })
}, },
handleDeleteMeasureData() { async handleDeleteMeasureData() {
// //
this.$confirm(this.$t('trials:reading:warnning:msg47'), { const confirm = await this.$confirm(
this.$t('trials:reading:warnning:msg47'),
{
type: 'warning', type: 'warning',
distinguishCancelAndClose: true distinguishCancelAndClose: true
}) }
.then(async() => { )
if (confirm !== 'confirm') return
this.stateDisabled = false this.stateDisabled = false
this.organList = [] this.organList = []
await this.getOrganInfoList() await this.getOrganInfoList()
@ -1776,13 +1714,12 @@ export default {
await store.dispatch('reading/removeMeasuredData', { visitTaskId: this.visitTaskId, measureData: this.questionForm.MeasureData, questionId: this.parentQsId, rowIndex: this.questionForm.RowIndex }) await store.dispatch('reading/removeMeasuredData', { visitTaskId: this.visitTaskId, measureData: this.questionForm.MeasureData, questionId: this.parentQsId, rowIndex: this.questionForm.RowIndex })
DicomEvent.$emit('getMeasureData') DicomEvent.$emit('getMeasureData')
// Store.$emit('updateImage', this.questionForm.MeasureData.instanceId) // Store.$emit('updateImage', this.questionForm.MeasureData.instanceId)
var isLymphLesion = this.getQuestionVal(2) const isLymphLesion = this.getQuestionVal(2)
isLymphLesion = !isNaN(parseInt(isLymphLesion)) ? parseInt(isLymphLesion) : null
const lesionPart = this.getQuestionVal(8) const lesionPart = this.getQuestionVal(8)
const lesionOrgan = this.getQuestionVal(6) const lesionOrgan = this.getQuestionVal(6)
const lesionLength = '' const lesionLength = ''
const lesionShort = '' const lesionShort = ''
const lesionState = !isNaN(parseInt(this.getQuestionVal(7))) ? parseInt(this.getQuestionVal(7)) : '' const lesionState = this.getQuestionVal(7)
if (!this.questionForm.IsDicomReading) { if (!this.questionForm.IsDicomReading) {
DicomEvent.$emit('removeNoneDicomMeasureData', this.questionForm.MeasureData) DicomEvent.$emit('removeNoneDicomMeasureData', this.questionForm.MeasureData)
@ -1801,8 +1738,6 @@ export default {
this.calculatePPD() this.calculatePPD()
} }
DicomEvent.$emit('refreshStudyListMeasureData') DicomEvent.$emit('refreshStudyListMeasureData')
})
.catch(() => {})
}, },
async handleDelete() { async handleDelete() {
let message = this.$t('trials:reading:warnning:msg48') let message = this.$t('trials:reading:warnning:msg48')
@ -1814,13 +1749,14 @@ export default {
message = this.$t('trials:reading:warnning:msg58') message = this.$t('trials:reading:warnning:msg58')
} }
} }
const confirm = await this.$confirm(
// message,
this.$confirm(message, { {
type: 'warning', type: 'warning',
distinguishCancelAndClose: true distinguishCancelAndClose: true
}) }
.then(async() => { )
if (confirm !== 'confirm') return
if (this.questionForm.RowId) { if (this.questionForm.RowId) {
const loading = this.$loading({ fullscreen: true }) const loading = this.$loading({ fullscreen: true })
var param = { var param = {
@ -1828,76 +1764,56 @@ export default {
questionId: this.parentQsId, questionId: this.parentQsId,
rowId: this.questionForm.RowId rowId: this.questionForm.RowId
} }
deleteReadingRowAnswer(param) try {
.then(async res => { const res = await deleteReadingRowAnswer(param)
loading.close()
if (res.IsSuccess) { if (res.IsSuccess) {
// this.$emit('getReadingQuestionAndAnswer')
if (this.questionForm.IsDicomReading && this.questionForm.MeasureData) { if (this.questionForm.IsDicomReading && this.questionForm.MeasureData) {
await store.dispatch('reading/removeMeasuredData', { visitTaskId: this.visitTaskId, measureData: this.questionForm.MeasureData, questionId: this.parentQsId, rowIndex: this.questionForm.RowIndex }) await store.dispatch('reading/removeMeasuredData', { visitTaskId: this.visitTaskId, measureData: this.questionForm.MeasureData, questionId: this.parentQsId, rowIndex: this.questionForm.RowIndex })
} }
// await store.dispatch('reading/removeReadingQuestionAndAnswer', { lesionType: this.lesionType, rowIndex: this.rowIndex, visitTaskId: this.visitTaskId })
// DicomEvent.$emit('getMeasureData')
if (!this.questionForm.IsDicomReading && this.questionForm.MeasureData) { if (!this.questionForm.IsDicomReading && this.questionForm.MeasureData) {
DicomEvent.$emit('removeNoneDicomMeasureData', this.questionForm.MeasureData) DicomEvent.$emit('removeNoneDicomMeasureData', this.questionForm.MeasureData)
} }
this.$emit('close', { lesionType: this.lesionType, rowIndex: this.rowIndex, visitTaskId: this.visitTaskId }) this.$emit('close', { lesionType: this.lesionType, rowIndex: this.rowIndex, visitTaskId: this.visitTaskId })
DicomEvent.$emit('getReportInfo', true) DicomEvent.$emit('getReportInfo', true)
DicomEvent.$emit('readingPageUpdate', {}) DicomEvent.$emit('readingPageUpdate', {})
// if (!this.questionForm.IsDicomReading) {
// DicomEvent.$emit('removeNoneDicomMeasureData', this.questionForm.MeasureData)
// }
// '' // ''
this.$message.success(this.$t('common:message:deletedSuccessfully')) this.$message.success(this.$t('common:message:deletedSuccessfully'))
}
loading.close()
} catch (e) {
console.log(e)
loading.close() loading.close()
} }
}).catch(() => { loading.close() })
} else { } else {
// const loading = this.$loading({ fullscreen: true })
// //
if (this.questionForm.MeasureData && this.questionForm.IsDicomReading) { if (this.questionForm.MeasureData && this.questionForm.IsDicomReading) {
await store.dispatch('reading/removeMeasuredData', { visitTaskId: this.visitTaskId, measureData: this.questionForm.MeasureData, questionId: this.parentQsId, rowIndex: this.questionForm.RowIndex }) await store.dispatch('reading/removeMeasuredData', { visitTaskId: this.visitTaskId, measureData: this.questionForm.MeasureData, questionId: this.parentQsId, rowIndex: this.questionForm.RowIndex })
} }
// DicomEvent.$emit('getMeasureData')
if (!this.questionForm.IsDicomReading && this.questionForm.MeasureData) { if (!this.questionForm.IsDicomReading && this.questionForm.MeasureData) {
DicomEvent.$emit('removeNoneDicomMeasureData', this.questionForm.MeasureData) DicomEvent.$emit('removeNoneDicomMeasureData', this.questionForm.MeasureData)
} }
this.$emit('close', { lesionType: this.lesionType, rowIndex: this.rowIndex, visitTaskId: this.visitTaskId }) this.$emit('close', { lesionType: this.lesionType, rowIndex: this.rowIndex, visitTaskId: this.visitTaskId })
// loading.close()
} }
DicomEvent.$emit('refreshStudyListMeasureData') DicomEvent.$emit('refreshStudyListMeasureData')
})
}, },
handleClose() { async handleClose() {
if (!this.questionForm.RowId) { if (!this.questionForm.RowId) {
// '' // ''
this.$confirm(this.$t('trials:reading:warnning:msg49'), { const confirm = await this.$confirm(
this.$t('trials:reading:warnning:msg49'),
{
type: 'warning', type: 'warning',
distinguishCancelAndClose: true distinguishCancelAndClose: true
}) }
.then(async() => { )
// if (confirm !== 'confirm') return
if (this.questionForm.MeasureData) { if (this.questionForm.MeasureData) {
await store.dispatch('reading/removeMeasuredData', { visitTaskId: this.visitTaskId, measureData: this.questionForm.MeasureData, questionId: this.parentQsId, rowIndex: this.questionForm.RowIndex }) await store.dispatch('reading/removeMeasuredData', { visitTaskId: this.visitTaskId, measureData: this.questionForm.MeasureData, questionId: this.parentQsId, rowIndex: this.questionForm.RowIndex })
} }
// await store.dispatch('reading/removeReadingQuestionAndAnswer', { lesionType: this.lesionType, rowIndex: this.rowIndex, visitTaskId: this.visitTaskId })
DicomEvent.$emit('getMeasureData') DicomEvent.$emit('getMeasureData')
this.$emit('close', { lesionType: this.lesionType, rowIndex: this.rowIndex, visitTaskId: this.visitTaskId }) this.$emit('close', { lesionType: this.lesionType, rowIndex: this.rowIndex, visitTaskId: this.visitTaskId })
})
.catch(() => {})
} else { } else {
// saveTypeEnum 01访/
if (this.questionForm.saveTypeEnum === 1) { if (this.questionForm.saveTypeEnum === 1) {
// //
// this.$confirm(this.$t('trials:reading:warnning:msg50'), {
// type: 'warning',
// distinguishCancelAndClose: true
// })
// .then(() => {
// this.$emit('close')
// })
// .catch(() => {})
this.$emit('close') this.$emit('close')
} else { } else {
this.$emit('close') this.$emit('close')
@ -1913,13 +1829,12 @@ export default {
const stateId = this.getQuestionId(7) const stateId = this.getQuestionId(7)
this.$set(this.questionForm, stateId, 2) this.$set(this.questionForm, stateId, 2)
} }
var isLymphLesion = this.getQuestionVal(2) const isLymphLesion = this.getQuestionVal(2)
isLymphLesion = !isNaN(parseInt(isLymphLesion)) ? parseInt(isLymphLesion) : null
const lesionPart = this.getQuestionVal(8) const lesionPart = this.getQuestionVal(8)
const lesionOrgan = this.getQuestionVal(6) const lesionOrgan = this.getQuestionVal(6)
const lesionLength = !isNaN(parseFloat(this.getQuestionVal(0))) ? this.getQuestionVal(0) : '' const lesionLength = this.getQuestionVal(0)
const lesionShort = !isNaN(parseFloat(this.getQuestionVal(1))) ? this.getQuestionVal(1) : '' const lesionShort = this.getQuestionVal(1)
const lesionState = !isNaN(parseInt(this.getQuestionVal(7))) ? parseInt(this.getQuestionVal(7)) : '' const lesionState = this.getQuestionVal(7)
this.$emit('resetQuestions', { isLymphLesion, lesionPart, lesionOrgan, lesionShort, lesionState, saveTypeEnum: this.questionForm.saveTypeEnum, lesionLength, rowIndex: this.rowIndex, questionId: this.parentQsId, anwsers: this.questionForm }) this.$emit('resetQuestions', { isLymphLesion, lesionPart, lesionOrgan, lesionShort, lesionState, saveTypeEnum: this.questionForm.saveTypeEnum, lesionLength, rowIndex: this.rowIndex, questionId: this.parentQsId, anwsers: this.questionForm })
} }
} }

View File

@ -2,10 +2,20 @@
<div class="measurement-wrapper" :style="{'height':height+10+'px'}"> <div class="measurement-wrapper" :style="{'height':height+10+'px'}">
<div class="container" :style="{'height':height+'px'}"> <div class="container" :style="{'height':height+'px'}">
<h3 v-if="isReadingShowSubjectInfo" style="color: #ddd;padding: 5px 0px;margin: 0;"> <div class="basic-info">
<h3 v-if="isReadingShowSubjectInfo">
<span v-if="subjectCode">{{ subjectCode }} </span> <span v-if="subjectCode">{{ subjectCode }} </span>
<span style="margin-left:5px;">{{ taskBlindName }}</span> <span style="margin-left:5px;">{{ taskBlindName }}</span>
</h3> </h3>
<div v-if="readingTaskState < 2">
<el-tooltip class="item" effect="dark" :content="$t('trials:dicomReading:message:confirmReset')" placement="bottom">
<i
class="el-icon-refresh-left"
@click="resetMeasuredData"
/>
</el-tooltip>
</div>
</div>
<!-- 非测量问题 --> <!-- 非测量问题 -->
<div class="lesions"> <div class="lesions">
<!-- 影像质量问题 --> <!-- 影像质量问题 -->
@ -216,6 +226,7 @@
</template> </template>
<script> <script>
import { splitLesion, getSplitPPdSum, getCanMergeLesion, mergeLesion } from '@/api/trials' import { splitLesion, getSplitPPdSum, getCanMergeLesion, mergeLesion } from '@/api/trials'
import { resetReadingTask } from '@/api/reading'
import DicomEvent from './../DicomEvent' import DicomEvent from './../DicomEvent'
import store from '@/store' import store from '@/store'
import { mapGetters } from 'vuex' import { mapGetters } from 'vuex'
@ -333,7 +344,8 @@ export default {
}) })
}) })
DicomEvent.$on('refreshSplitTargetLesionPDD', async(callback) => { DicomEvent.$on('refreshSplitTargetLesionPDD', async(callback) => {
this.splitTargetLesions = await this.getSplitTargetLesionPDD() const res = await getSplitPPdSum({ visitTaskId: this.visitTaskId })
this.splitTargetLesions = res.Result
if (this.splitTargetLesions && this.splitTargetLesions.length > 0) { if (this.splitTargetLesions && this.splitTargetLesions.length > 0) {
this.splitTargetLesions.map(i => { this.splitTargetLesions.map(i => {
var refName = `${this.lesionTypeQuestionId}_${i.RowIndex}` var refName = `${this.lesionTypeQuestionId}_${i.RowIndex}`
@ -388,7 +400,8 @@ export default {
loading.close() loading.close()
} }
if (!this.isBaseLineTask) { if (!this.isBaseLineTask) {
this.splitTargetLesions = await this.getSplitTargetLesionPDD() const res = await getSplitPPdSum({ visitTaskId: this.visitTaskId })
this.splitTargetLesions = res.Result
} }
this.questions = this.visitTaskList[i].ReadingQuestions this.questions = this.visitTaskList[i].ReadingQuestions
this.$nextTick(() => { this.$nextTick(() => {
@ -530,7 +543,8 @@ export default {
this.isCurrentTask = this.visitTaskList[idx].IsCurrentTask this.isCurrentTask = this.visitTaskList[idx].IsCurrentTask
} }
if (!this.isBaseLineTask) { if (!this.isBaseLineTask) {
this.splitTargetLesions = await this.getSplitTargetLesionPDD() const res = await getSplitPPdSum({ visitTaskId: this.visitTaskId })
this.splitTargetLesions = res.Result
} }
this.getTableQuestions() this.getTableQuestions()
this.$nextTick(() => { this.$nextTick(() => {
@ -559,13 +573,6 @@ export default {
} catch (e) { console.log(e) } } catch (e) { console.log(e) }
}) })
}, },
getSplitTargetLesionPDD() {
return new Promise(resolve => {
getSplitPPdSum({ visitTaskId: this.visitTaskId }).then(res => {
resolve(res.Result)
}).catch(() => { resolve() })
})
},
setHeight() { setHeight() {
this.height = window.innerHeight - 140 this.height = window.innerHeight - 140
}, },
@ -688,7 +695,7 @@ export default {
}) })
}, },
// //
handleMerge(answers, questionId, orderMark) { async handleMerge(answers, questionId, orderMark) {
this.lesionData = [] this.lesionData = []
this.mergeList = [] this.mergeList = []
this.merge.visible = true this.merge.visible = true
@ -697,10 +704,16 @@ export default {
this.mergeInfo.lesionName = this.getLesionName(orderMark, answers.RowIndex) this.mergeInfo.lesionName = this.getLesionName(orderMark, answers.RowIndex)
this.mergeInfo.lesionPart = answers.lesionPart this.mergeInfo.lesionPart = answers.lesionPart
this.merge.loading = true this.merge.loading = true
getCanMergeLesion({ rowId: answers.RowId }).then(res => { try {
const res = await getCanMergeLesion({ rowId: answers.RowId })
if (res.IsSuccess) {
this.lesionData = res.Result this.lesionData = res.Result
}
this.merge.loading = false this.merge.loading = false
}).catch(() => { this.merge.loading = false }) } catch (e) {
console.log(e)
this.merge.loading = false
}
}, },
handleSelectionChange(val) { handleSelectionChange(val) {
this.mergeList = [] this.mergeList = []
@ -718,23 +731,28 @@ export default {
}) })
}, },
lesionMerge() { async lesionMerge() {
this.merge.loading = true this.merge.loading = true
try {
var params = { var params = {
visitTaskId: this.visitTaskId, visitTaskId: this.visitTaskId,
questionId: this.mergeInfo.questionId, questionId: this.mergeInfo.questionId,
mergeMainRowId: this.mergeInfo.mergeRowId, mergeMainRowId: this.mergeInfo.mergeRowId,
mergeRowIdList: this.mergeList mergeRowIdList: this.mergeList
} }
mergeLesion(params).then(res => { const res = await mergeLesion(params)
this.merge.loading = false if (res.IsSuccess) {
this.merge.visible = false this.merge.visible = false
DicomEvent.$emit('readingPageUpdate', {}) DicomEvent.$emit('readingPageUpdate', {})
DicomEvent.$emit('getReportInfo', true) DicomEvent.$emit('getReportInfo', true)
DicomEvent.$emit('setMeasuredToolsPassive') DicomEvent.$emit('setMeasuredToolsPassive')
this.getReadingQuestionAndAnswer() this.getReadingQuestionAndAnswer()
// }
}).catch(() => { this.merge.loading = false }) this.merge.loading = false
} catch (e) {
this.merge.loading = false
console.log(e)
}
}, },
isCanActiveTool(toolName) { isCanActiveTool(toolName) {
this.isNonTargetMeasurement = false this.isNonTargetMeasurement = false
@ -1284,6 +1302,41 @@ export default {
}) })
DicomEvent.$emit('getReportInfo', true) DicomEvent.$emit('getReportInfo', true)
loading.close() loading.close()
},
async resetMeasuredData() {
const confirm = await this.$confirm(
this.$t('trials:dicomReading:message:confirmReset1'),
this.$t('trials:dicomReading:message:confirmReset2'),
{
type: 'warning',
distinguishCancelAndClose: true
}
)
if (confirm !== 'confirm') return
const loading = this.$loading({ fullscreen: true })
try {
const res = await resetReadingTask({ visitTaskId: this.visitTaskId })
if (res.IsSuccess) {
//
this.activeName = ''
this.activeItem.activeRowIndex = null
this.activeItem.activeCollapseId = null
await this.getReadingQuestionAndAnswer(this.visitTaskId)
const triald = this.$router.currentRoute.query.trialId
await store.dispatch('reading/refreshDicomReadingQuestionAnswer', { trialId: triald, visitTaskId: this.visitTaskId })
this.$refs['ecrf'].getQuestions(this.visitTaskId, true)
this.$refs['ecrf2'].getQuestions(this.visitTaskId, true)
this.$refs['ecrf3'].getQuestions(this.visitTaskId, true)
DicomEvent.$emit('getMeasureData')
DicomEvent.$emit('getReportInfo', true)
DicomEvent.$emit('refreshStudyListMeasureData')
DicomEvent.$emit('resetPage', {})
}
loading.close()
} catch (e) {
loading.close()
console.log(e)
}
} }
} }
@ -1296,6 +1349,22 @@ export default {
.container{ .container{
padding: 10px; padding: 10px;
.basic-info{
display: flex;
justify-content: space-between;
align-items: center;
h3{
color: #ddd;
padding: 5px 0px;
margin: 0;
}
i{
color: #fff;
font-size: 22px;
font-weight: bold;
cursor: pointer;
}
}
} }
.title{ .title{
padding: 5px; padding: 5px;

View File

@ -704,7 +704,6 @@ export default {
this.$refs['ecrf'].getQuestions(obj.visitTaskId) this.$refs['ecrf'].getQuestions(obj.visitTaskId)
}, },
async resetMeasuredData() { async resetMeasuredData() {
try {
const confirm = await this.$confirm( const confirm = await this.$confirm(
this.$t('trials:dicomReading:message:confirmReset1'), this.$t('trials:dicomReading:message:confirmReset1'),
this.$t('trials:dicomReading:message:confirmReset2'), this.$t('trials:dicomReading:message:confirmReset2'),
@ -714,7 +713,8 @@ export default {
} }
) )
if (confirm !== 'confirm') return if (confirm !== 'confirm') return
this.loading = true const loading = this.$loading({ fullscreen: true })
try {
const res = await resetReadingTask({ visitTaskId: this.visitTaskId }) const res = await resetReadingTask({ visitTaskId: this.visitTaskId })
this.loading = false this.loading = false
if (res.IsSuccess) { if (res.IsSuccess) {
@ -723,13 +723,16 @@ export default {
this.activeItem.activeRowIndex = null this.activeItem.activeRowIndex = null
this.activeItem.activeCollapseId = null this.activeItem.activeCollapseId = null
await this.getReadingQuestionAndAnswer(this.visitTaskId) await this.getReadingQuestionAndAnswer(this.visitTaskId)
this.$refs['ecrf'].resetQSForm() const triald = this.$router.currentRoute.query.trialId
await store.dispatch('reading/refreshDicomReadingQuestionAnswer', { trialId: triald, visitTaskId: this.visitTaskId })
this.$refs['ecrf'].getQuestions(this.visitTaskId, true)
DicomEvent.$emit('getMeasureData') DicomEvent.$emit('getMeasureData')
DicomEvent.$emit('getReportInfo', true) DicomEvent.$emit('getReportInfo', true)
DicomEvent.$emit('refreshStudyListMeasureData') DicomEvent.$emit('refreshStudyListMeasureData')
} }
loading.close()
} catch (e) { } catch (e) {
this.loading = false loading.close()
console.log(e) console.log(e)
} }
}, },

View File

@ -111,6 +111,9 @@
/> />
</template> </template>
<template v-else-if="question.QuestionGenre === 3 && question.QuestionType === 47 && !question.IsBaseLineTask"> <template v-else-if="question.QuestionGenre === 3 && question.QuestionType === 47 && !question.IsBaseLineTask">
<el-option-group
:label="!isNaN(parseFloat(question.LastTaskAnswer)) ? `${$t('trials:dicomReading:tip:lastVisitStatus')} ${$fd(question.DictionaryCode,parseFloat(question.LastTaskAnswer))}` : ''"
>
<el-option <el-option
v-for="item of $d[question.DictionaryCode]" v-for="item of $d[question.DictionaryCode]"
v-show="item.value === 1 ||item.value === 3|| item.value === 4 || item.value === 5" v-show="item.value === 1 ||item.value === 3|| item.value === 4 || item.value === 5"
@ -118,6 +121,7 @@
:value="String(item.value)" :value="String(item.value)"
:label="item.label" :label="item.label"
/> />
</el-option-group>
</template> </template>
<template v-else-if="question.QuestionGenre === 3 && question.QuestionType === 49 && question.IsBaseLineTask"> <template v-else-if="question.QuestionGenre === 3 && question.QuestionType === 49 && question.IsBaseLineTask">
<el-option <el-option
@ -129,6 +133,9 @@
/> />
</template> </template>
<template v-else-if="question.QuestionGenre === 3 && question.QuestionType === 49 && !question.IsBaseLineTask"> <template v-else-if="question.QuestionGenre === 3 && question.QuestionType === 49 && !question.IsBaseLineTask">
<el-option-group
:label="!isNaN(parseFloat(question.LastTaskAnswer)) ? `${$t('trials:dicomReading:tip:lastVisitStatus')} ${$fd(question.DictionaryCode,parseFloat(question.LastTaskAnswer))}` : ''"
>
<el-option <el-option
v-for="item of $d[question.DictionaryCode]" v-for="item of $d[question.DictionaryCode]"
v-show="item.value === 1 ||item.value === 2 || item.value === 3 || item.value === 4 || item.value === 5" v-show="item.value === 1 ||item.value === 2 || item.value === 3 || item.value === 4 || item.value === 5"
@ -136,6 +143,7 @@
:value="String(item.value)" :value="String(item.value)"
:label="item.label" :label="item.label"
/> />
</el-option-group>
</template> </template>
<template v-else-if="question.TableQuestionType === 3 || question.QuestionGenre === 3"> <template v-else-if="question.TableQuestionType === 3 || question.QuestionGenre === 3">
<el-option <el-option

View File

@ -390,18 +390,6 @@ export default {
this.loading = false this.loading = false
}) })
}, },
async resetQSForm() {
try {
this.loading = true
var trialId = this.$route.query.trialId
await store.dispatch('reading/refreshDicomReadingQuestionAnswer', { trialId: trialId, visitTaskId: this.visitTaskId })
this.getQuestions(this.visitTaskId, true)
this.loading = false
} catch(e) {
this.loading = false
}
},
checkAnnotationStatus(obj) { checkAnnotationStatus(obj) {
for (let i = 0; i < obj.length; i++) { for (let i = 0; i < obj.length; i++) {
if (obj[i].SaveEnum === 1) { if (obj[i].SaveEnum === 1) {

View File

@ -956,7 +956,6 @@ export default {
this.$refs['ecrf'].getQuestions(obj.visitTaskId) this.$refs['ecrf'].getQuestions(obj.visitTaskId)
}, },
async resetMeasuredData() { async resetMeasuredData() {
try {
const confirm = await this.$confirm( const confirm = await this.$confirm(
this.$t('trials:dicomReading:message:confirmReset1'), this.$t('trials:dicomReading:message:confirmReset1'),
this.$t('trials:dicomReading:message:confirmReset2'), this.$t('trials:dicomReading:message:confirmReset2'),
@ -966,7 +965,8 @@ export default {
} }
) )
if (confirm !== 'confirm') return if (confirm !== 'confirm') return
this.loading = true const loading = this.$loading({ fullscreen: true })
try {
const res = await resetReadingTask({ visitTaskId: this.visitTaskId }) const res = await resetReadingTask({ visitTaskId: this.visitTaskId })
this.loading = false this.loading = false
if (res.IsSuccess) { if (res.IsSuccess) {
@ -975,13 +975,16 @@ export default {
this.activeItem.activeRowIndex = null this.activeItem.activeRowIndex = null
this.activeItem.activeCollapseId = null this.activeItem.activeCollapseId = null
await this.getReadingQuestionAndAnswer(this.visitTaskId) await this.getReadingQuestionAndAnswer(this.visitTaskId)
this.$refs['ecrf'].resetQSForm() const triald = this.$router.currentRoute.query.trialId
await store.dispatch('reading/refreshDicomReadingQuestionAnswer', { trialId: triald, visitTaskId: this.visitTaskId })
this.$refs['ecrf'].getQuestions(this.visitTaskId, true)
DicomEvent.$emit('getMeasureData') DicomEvent.$emit('getMeasureData')
DicomEvent.$emit('getReportInfo', true) DicomEvent.$emit('getReportInfo', true)
DicomEvent.$emit('refreshStudyListMeasureData') DicomEvent.$emit('refreshStudyListMeasureData')
} }
loading.close()
} catch (e) { } catch (e) {
this.loading = false loading.close()
console.log(e) console.log(e)
} }
}, },

View File

@ -509,15 +509,16 @@ export default {
} }
} }
}, },
split(rowId, questionId) { async split(rowId, questionId) {
const loading = this.$loading({ fullscreen: true }) const loading = this.$loading({ fullscreen: true })
try {
var params = { var params = {
visitTaskId: this.visitTaskId, visitTaskId: this.visitTaskId,
questionId: questionId, questionId: questionId,
rowId: rowId rowId: rowId
} }
splitLesion(params).then(async res => { const res = await splitLesion(params)
loading.close() if (res.IsSuccess) {
await this.getReadingQuestionAndAnswer() await this.getReadingQuestionAndAnswer()
this.$nextTick(() => { this.$nextTick(() => {
this.tableQuestions.forEach(item => { this.tableQuestions.forEach(item => {
@ -527,7 +528,12 @@ export default {
}) })
}) })
}) })
}) }
loading.close()
} catch (e) {
loading.close()
console.log(e)
}
}, },
isCanActiveTool(toolName) { isCanActiveTool(toolName) {
this.getUnSaveTarget() this.getUnSaveTarget()
@ -892,7 +898,6 @@ export default {
this.$refs['ecrf'].getQuestions(obj.visitTaskId) this.$refs['ecrf'].getQuestions(obj.visitTaskId)
}, },
async resetMeasuredData() { async resetMeasuredData() {
try {
const confirm = await this.$confirm( const confirm = await this.$confirm(
this.$t('trials:dicomReading:message:confirmReset1'), this.$t('trials:dicomReading:message:confirmReset1'),
this.$t('trials:dicomReading:message:confirmReset2'), this.$t('trials:dicomReading:message:confirmReset2'),
@ -902,7 +907,8 @@ export default {
} }
) )
if (confirm !== 'confirm') return if (confirm !== 'confirm') return
this.loading = true const loading = this.$loading({ fullscreen: true })
try {
const res = await resetReadingTask({ visitTaskId: this.visitTaskId }) const res = await resetReadingTask({ visitTaskId: this.visitTaskId })
this.loading = false this.loading = false
if (res.IsSuccess) { if (res.IsSuccess) {
@ -911,13 +917,16 @@ export default {
this.activeItem.activeRowIndex = null this.activeItem.activeRowIndex = null
this.activeItem.activeCollapseId = null this.activeItem.activeCollapseId = null
await this.getReadingQuestionAndAnswer(this.visitTaskId) await this.getReadingQuestionAndAnswer(this.visitTaskId)
this.$refs['ecrf'].resetQSForm() const triald = this.$router.currentRoute.query.trialId
await store.dispatch('reading/refreshDicomReadingQuestionAnswer', { trialId: triald, visitTaskId: this.visitTaskId })
this.$refs['ecrf'].getQuestions(this.visitTaskId, true)
DicomEvent.$emit('getMeasureData') DicomEvent.$emit('getMeasureData')
DicomEvent.$emit('getReportInfo', true) DicomEvent.$emit('getReportInfo', true)
DicomEvent.$emit('refreshStudyListMeasureData') DicomEvent.$emit('refreshStudyListMeasureData')
} }
loading.close()
} catch (e) { } catch (e) {
this.loading = false loading.close()
console.log(e) console.log(e)
} }
}, },

View File

@ -411,14 +411,16 @@ export default {
getTableHeight() { getTableHeight() {
this.height = window.innerHeight - 170 this.height = window.innerHeight - 170
}, },
getReportInfo(IsCalculate) { async getReportInfo(IsCalculate) {
this.loading = true this.loading = true
try {
var params = { var params = {
visitTaskId: this.visitTaskId, visitTaskId: this.visitTaskId,
trialId: this.$router.currentRoute.query.trialId, trialId: this.$router.currentRoute.query.trialId,
IsCalculate: IsCalculate !== false IsCalculate: IsCalculate !== false
} }
getReadingReportEvaluation(params).then(res => { const res = await getReadingReportEvaluation(params)
if (res.IsSuccess) {
this.readingTaskState = res.Result.ReadingTaskState this.readingTaskState = res.Result.ReadingTaskState
this.tumorEvaluate = res.Result.CalculateResult.TumorEvaluate ? parseInt(res.Result.CalculateResult.TumorEvaluate) : null this.tumorEvaluate = res.Result.CalculateResult.TumorEvaluate ? parseInt(res.Result.CalculateResult.TumorEvaluate) : null
this.isExistDisease = res.Result.CalculateResult.IsExistDisease ? parseInt(res.Result.CalculateResult.IsExistDisease) : null this.isExistDisease = res.Result.CalculateResult.IsExistDisease ? parseInt(res.Result.CalculateResult.IsExistDisease) : null
@ -435,8 +437,12 @@ export default {
const ntLesion = res.Result.LesionCountList.find(i => i.LesionType === 1) const ntLesion = res.Result.LesionCountList.find(i => i.LesionType === 1)
this.ntLesionCount = ntLesion ? ntLesion.Count : 0 this.ntLesionCount = ntLesion ? ntLesion.Count : 0
this.setScrollTop() this.setScrollTop()
}
this.loading = false this.loading = false
}).catch(() => { this.loading = false }) } catch (e) {
this.loading = false
console.log(e)
}
}, },
setScrollTop(a) { setScrollTop(a) {
setTimeout(() => { setTimeout(() => {
@ -444,7 +450,6 @@ export default {
if (this.$refs.reportList) { if (this.$refs.reportList) {
this.getTableHeight() this.getTableHeight()
this.$refs.reportList.bodyWrapper.scrollTop = this.$refs.reportList.bodyWrapper.scrollHeight this.$refs.reportList.bodyWrapper.scrollTop = this.$refs.reportList.bodyWrapper.scrollHeight
this.$refs.reportList.bodyWrapper.scrollTop = this.$refs.reportList.bodyWrapper.scrollHeight
} }
}) })
}, 50) }, 50)
@ -608,12 +613,15 @@ export default {
} }
}, },
async handleConfirm() { async handleConfirm() {
this.loading = true
try {
await this.handleSave(false) await this.handleSave(false)
await this.verifyVisitTaskQuestions() await verifyVisitTaskQuestions({ visitTaskId: this.visitTaskId })
var i = this.visitTaskList.findIndex(i => i.VisitTaskId === this.visitTaskId) var i = this.visitTaskList.findIndex(i => i.VisitTaskId === this.visitTaskId)
var isBaseline = this.visitTaskList[i].IsBaseLine var isBaseline = this.visitTaskList[i].IsBaseLine
if (isBaseline) { if (isBaseline) {
this.assessmentQuestions = await this.getAdditionalAssessments() const res = await getTaskAdditionalQuestion({ visitTaskId: this.visitTaskId })
this.assessmentQuestions = res.Result
if (this.assessmentQuestions.length > 0) { if (this.assessmentQuestions.length > 0) {
// //
this.additionalAssessmentsDig.visible = true this.additionalAssessmentsDig.visible = true
@ -627,6 +635,10 @@ export default {
this.signCode = ImageAssessmentReportConfirmation this.signCode = ImageAssessmentReportConfirmation
this.signVisible = true this.signVisible = true
} }
this.loading = false
} catch (e) {
this.loading = false
}
}, },
sign() { sign() {
this.additionalAssessmentsDig.visible = false this.additionalAssessmentsDig.visible = false
@ -636,31 +648,6 @@ export default {
this.signVisible = true this.signVisible = true
}) })
}, },
//
getAdditionalAssessments() {
return new Promise((resolve) => {
this.loading = true
getTaskAdditionalQuestion({ visitTaskId: this.visitTaskId }).then(res => {
this.loading = false
resolve(res.Result)
}).catch(() => {
this.loading = false
resolve()
})
})
},
verifyVisitTaskQuestions() {
return new Promise((resolve, reject) => {
this.loading = true
verifyVisitTaskQuestions({ visitTaskId: this.visitTaskId }).then(res => {
this.loading = false
resolve()
}).catch(() => {
this.loading = false
reject()
})
})
},
handleResize() { handleResize() {
this.$nextTick(() => { this.$nextTick(() => {
this.$refs.reportList && this.$refs.reportList.doLayout() this.$refs.reportList && this.$refs.reportList.doLayout()
@ -675,15 +662,16 @@ export default {
} }
}, },
// //
signConfirm(signInfo) { async signConfirm(signInfo) {
this.loading = true this.loading = true
try {
var params = { var params = {
data: { data: {
visitTaskId: this.visitTaskId visitTaskId: this.visitTaskId
}, },
signInfo: signInfo signInfo: signInfo
} }
submitDicomVisitTask(params).then(async res => { const res = await submitDicomVisitTask(params)
if (res.IsSuccess) { if (res.IsSuccess) {
this.$message.success(this.$t('common:message:savedSuccessfully')) this.$message.success(this.$t('common:message:savedSuccessfully'))
if (this.$refs['signForm']) { if (this.$refs['signForm']) {
@ -699,7 +687,8 @@ export default {
await store.dispatch('reading/setVisitTaskReadingTaskState', { visitTaskId: this.visitTaskId, readingTaskState: 2 }) await store.dispatch('reading/setVisitTaskReadingTaskState', { visitTaskId: this.visitTaskId, readingTaskState: 2 })
// DicomEvent.$emit('setReadingState', 2) // DicomEvent.$emit('setReadingState', 2)
await store.dispatch('reading/setCurrentReadingTaskState', 2) await store.dispatch('reading/setCurrentReadingTaskState', 2)
var isAutoTask = await this.getAutoTaskVal() const res = await getAutoCutNextTask()
var isAutoTask = res.Result.AutoCutNextTask
if (isAutoTask) { if (isAutoTask) {
// DicomEvent.$emit('reload') // DicomEvent.$emit('reload')
// DicomEvent.$emit('getNextTask') // DicomEvent.$emit('getNextTask')
@ -723,19 +712,12 @@ export default {
// DicomEvent.$emit('readingPageStateUpdate', { readingTaskState: 2 }) // DicomEvent.$emit('readingPageStateUpdate', { readingTaskState: 2 })
} }
this.loading = false this.loading = false
}).catch(() => { } catch (e) {
this.loading = false this.loading = false
if (this.$refs['signForm'] && this.$refs['signForm'].btnLoading) { if (this.$refs['signForm'] && this.$refs['signForm'].btnLoading) {
this.$refs['signForm'].btnLoading = false this.$refs['signForm'].btnLoading = false
} }
}) }
},
getAutoTaskVal() {
return new Promise((resolve, reject) => {
getAutoCutNextTask().then(res => {
resolve(res.Result.AutoCutNextTask)
}).catch(() => { reject() })
})
}, },
previewDicoms(task) { previewDicoms(task) {
if (this.openWindow) { if (this.openWindow) {
@ -755,7 +737,7 @@ export default {
this.openWindow = window.open(routeData.href, '_blank') this.openWindow = window.open(routeData.href, '_blank')
}, },
handleSave(isPrompt) { handleSave(isPrompt) {
return new Promise((resolve, reject) => { return new Promise(async(resolve, reject) => {
var isBeill var isBeill
var evaluateResult = '' var evaluateResult = ''
var evaluateAjustReason = '' var evaluateAjustReason = ''
@ -805,20 +787,21 @@ export default {
return return
} }
this.loading = true this.loading = true
try {
var params = { var params = {
visitTaskId: this.visitTaskId, visitTaskId: this.visitTaskId,
answers: this.answers answers: this.answers
} }
changeDicomReadingQuestionAnswer(params).then(res => { const res = await changeDicomReadingQuestionAnswer(params)
if (isPrompt) { if (res.IsSuccess && isPrompt) {
this.$message.success(this.$t('common:message:savedSuccessfully')) this.$message.success(this.$t('common:message:savedSuccessfully'))
} }
this.loading = false this.loading = false
resolve() resolve()
}).catch(() => { } catch (e) {
this.loading = false this.loading = false
reject() reject()
}) }
}) })
}, },
getWarningText() { getWarningText() {

View File

@ -993,6 +993,7 @@ export default {
} }
console.log('getMeasureData') console.log('getMeasureData')
}) })
DicomEvent.$on('getScreenshots', (callback) => { DicomEvent.$on('getScreenshots', (callback) => {
var base64Str = var base64Str =
this.$refs[ this.$refs[

View File

@ -2,10 +2,20 @@
<div class="measurement-wrapper" :style="{'height':height+10+'px'}" style="position: relative"> <div class="measurement-wrapper" :style="{'height':height+10+'px'}" style="position: relative">
<div class="container" :style="{'height':height+'px'}" style="padding-bottom: 50px;overflow-y: auto;"> <div class="container" :style="{'height':height+'px'}" style="padding-bottom: 50px;overflow-y: auto;">
<h3 style="color: #ddd;padding: 5px 0px;margin: 0;" v-if="isReadingShowSubjectInfo"> <div class="basic-info">
<h3 v-if="isReadingShowSubjectInfo">
<span v-if="subjectCode">{{ subjectCode }} </span> <span v-if="subjectCode">{{ subjectCode }} </span>
<span style="margin-left:5px;">{{ taskBlindName }}</span> <span style="margin-left:5px;">{{ taskBlindName }}</span>
</h3> </h3>
<div v-if="readingTaskState < 2">
<el-tooltip class="item" effect="dark" :content="$t('trials:dicomReading:message:confirmReset')" placement="bottom">
<i
class="el-icon-refresh-left"
@click="resetMeasuredData"
/>
</el-tooltip>
</div>
</div>
<QuestionsPreview <QuestionsPreview
ref="QuestionsPreview" ref="QuestionsPreview"
v-if="ecrfShow" v-if="ecrfShow"
@ -77,7 +87,7 @@
</template> </template>
<script> <script>
import { submitDicomVisitTask } from '@/api/trials' import { submitDicomVisitTask } from '@/api/trials'
import { getCustomTag, submitCustomTag, deleteCustomTag } from '@/api/reading' import { getCustomTag, submitCustomTag, resetReadingTask } from '@/api/reading'
import DicomEvent from './../components/DicomEvent' import DicomEvent from './../components/DicomEvent'
import SignForm from '@/views/trials/components/newSignForm' import SignForm from '@/views/trials/components/newSignForm'
import QuestionsPreview from './CustomizeQuestionsPreview' import QuestionsPreview from './CustomizeQuestionsPreview'
@ -169,7 +179,6 @@ export default {
methods: { methods: {
async initList(){ async initList(){
if (this.visitTaskId !== this.lastCanvasTaskId) { if (this.visitTaskId !== this.lastCanvasTaskId) {
this.activeName = ''
this.ecrfShow = true this.ecrfShow = true
var i = this.visitTaskList.findIndex(i => i.VisitTaskId === this.lastCanvasTaskId) var i = this.visitTaskList.findIndex(i => i.VisitTaskId === this.lastCanvasTaskId)
console.log(i) console.log(i)
@ -320,7 +329,7 @@ export default {
distinguishCancelAndClose: true distinguishCancelAndClose: true
}) })
.then(() => { .then(() => {
try {DicomEvent.$emit('getNextTask')} catch (e) {console.log(e)} window.location.reload()
}) })
.catch(action => { .catch(action => {
}) })
@ -354,10 +363,37 @@ export default {
if (this.visitTaskId !== obj.visitTaskId) { if (this.visitTaskId !== obj.visitTaskId) {
this.visitTaskId = obj.visitTaskId this.visitTaskId = obj.visitTaskId
this.taskBlindName = obj.taskBlindName this.taskBlindName = obj.taskBlindName
this.activeName = ''
this.ecrfShow = true this.ecrfShow = true
} }
},
async resetMeasuredData() {
const confirm = await this.$confirm(
this.$t('trials:dicomReading:message:confirmReset1'),
this.$t('trials:dicomReading:message:confirmReset2'),
{
type: 'warning',
distinguishCancelAndClose: true
} }
)
if (confirm !== 'confirm') return
const loading = this.$loading({ fullscreen: true })
try {
const res = await resetReadingTask({ visitTaskId: this.visitTaskId })
this.loading = false
if (res.IsSuccess) {
//
this.$refs['QuestionsPreview'].getCustomTableQuestionAnswer(this.visitTaskId )
await store.dispatch('reading/refreshCustomizeMeasuredData', this.visitTaskId)
DicomEvent.$emit('getMeasureData')
DicomEvent.$emit('getReportInfo', true)
DicomEvent.$emit('refreshStudyListMeasureData')
}
loading.close()
} catch (e) {
loading.close()
console.log(e)
}
},
} }
} }
</script> </script>
@ -368,6 +404,22 @@ export default {
.container{ .container{
padding: 10px; padding: 10px;
.basic-info{
display: flex;
justify-content: space-between;
align-items: center;
h3{
color: #ddd;
padding: 5px 0px;
margin: 0;
}
i{
color: #fff;
font-size: 22px;
font-weight: bold;
cursor: pointer;
}
}
} }
.title{ .title{
padding: 5px; padding: 5px;

View File

@ -257,7 +257,10 @@ export default {
this.subjectCode = localStorage.getItem('subjectCode') this.subjectCode = localStorage.getItem('subjectCode')
var digitPlaces = Number(localStorage.getItem('digitPlaces')) var digitPlaces = Number(localStorage.getItem('digitPlaces'))
this.digitPlaces = digitPlaces === -1 ? this.digitPlaces : digitPlaces this.digitPlaces = digitPlaces === -1 ? this.digitPlaces : digitPlaces
DicomEvent.$on('refreshStudyListMeasureData', () => {
var idx = this.visitTaskList.findIndex(i => i.VisitTaskId === this.visitTaskId)
this.measureData = this.visitTaskList[idx].MeasureData
})
// DicomEvent.$on('setReadingState', readingTaskState => { // DicomEvent.$on('setReadingState', readingTaskState => {
// var idx = this.visitTaskList.findIndex(i => i.VisitTaskId === this.visitTaskId) // var idx = this.visitTaskList.findIndex(i => i.VisitTaskId === this.visitTaskId)
// if (idx > -1) { // if (idx > -1) {
@ -271,6 +274,7 @@ export default {
window.addEventListener('beforeunload', e => { window.addEventListener('beforeunload', e => {
cornerstone.imageCache.purgeCache() cornerstone.imageCache.purgeCache()
}) })
}, },
beforeDestroy() { beforeDestroy() {
cornerstone.imageCache.purgeCache() cornerstone.imageCache.purgeCache()

View File

@ -92,7 +92,7 @@
> >
<i slot="default" class="el-icon-plus" /> <i slot="default" class="el-icon-plus" />
<div slot="file" slot-scope="{file}"> <div slot="file" slot-scope="{file}">
<viewer :images="images" :ref="file.url"> <viewer :ref="file.url" :images="images">
<img <img
class="el-upload-list__item-thumbnail" class="el-upload-list__item-thumbnail"
:src="OSSclientConfig.basePath + file.url" :src="OSSclientConfig.basePath + file.url"
@ -225,7 +225,7 @@ export default {
isClosedDialog: false, isClosedDialog: false,
isSendMessage: false, isSendMessage: false,
closeQuestionVisible: false, closeQuestionVisible: false,
images:[] images: []
} }
}, },
mounted() { mounted() {
@ -397,7 +397,7 @@ export default {
}, },
initializeViewer() { initializeViewer() {
Viewer.setDefaults({ Viewer.setDefaults({
toolbar: { zoomIn: true, zoomOut: true, rotateLeft: true, rotateRight: true, flipHorizontal: true, flipVertical: true} toolbar: { zoomIn: true, zoomOut: true, rotateLeft: true, rotateRight: true, flipHorizontal: true, flipVertical: true }
}) })
} }
} }