Merge branch 'main' of https://gitea.frp.extimaging.com/XCKJ/irc_web
continuous-integration/drone/push Build is passing Details

uat
wangxiaoshuang 2025-04-14 14:04:37 +08:00
commit b22374db9e
5 changed files with 363 additions and 325 deletions

View File

@ -916,10 +916,10 @@ export default {
toolGroup.addTool(ArrowAnnotateTool.toolName, { toolGroup.addTool(ArrowAnnotateTool.toolName, {
arrowHeadStyle: 'standard', arrowHeadStyle: 'standard',
changeTextCallback: async(data, eventData, doneChangingTextCallback) => { changeTextCallback: async(data, eventData, doneChangingTextCallback) => {
return doneChangingTextCallback('') return doneChangingTextCallback(data.label)
}, },
getTextCallback: async(doneChangingTextCallback) => { getTextCallback: async(doneChangingTextCallback) => {
return doneChangingTextCallback('') return doneChangingTextCallback('_')
} }
}) })
} }
@ -1044,10 +1044,10 @@ export default {
} }
} }
}) })
const arr = cornerstoneTools.annotation.state.getAllAnnotations()
console.log(arr)
}, },
addAnnotationListeners() { addAnnotationListeners() {
console.log(toolsEvents)
const debouncedCallback = this.debounce((evt) => { const debouncedCallback = this.debounce((evt) => {
this.annotationModifiedListener(evt) this.annotationModifiedListener(evt)
}, 100) }, 100)
@ -1065,10 +1065,21 @@ export default {
toolsEvents.ANNOTATION_REMOVED, toolsEvents.ANNOTATION_REMOVED,
this.annotationRemovedListener this.annotationRemovedListener
) )
eventTarget.addEventListener( // eventTarget.addEventListener(
toolsEvents.ANNOTATION_ADDED, // toolsEvents.ANNOTATION_ADDED,
this.annotationAddedListener // this.annotationAddedListener
) // )
// eventTarget.addEventListener(
// toolsEvents.TOOL_MODE_CHANGED,
// this.toolModeChanged
// )
},
toolModeChanged(e) {
console.log(e)
const arr = cornerstoneTools.annotation.state.getAllAnnotations()
// if (arr)
console.log(arr)
}, },
annotationAddedListener(e) { annotationAddedListener(e) {
console.log('annotationAddedListener', e) console.log('annotationAddedListener', e)
@ -1167,7 +1178,12 @@ export default {
const annotations = cornerstoneTools.annotation.state.getAllAnnotations() const annotations = cornerstoneTools.annotation.state.getAllAnnotations()
const idx = annotations.findIndex(i => i.annotationUID === obj.annotationUID) const idx = annotations.findIndex(i => i.annotationUID === obj.annotationUID)
if (idx === -1) return if (idx === -1) return
if (annotations[idx].metadata.toolName === 'ArrowAnnotate') {
annotations[idx].data.text = obj.name
} else {
annotations[idx].data.label = obj.name annotations[idx].data.label = obj.name
}
const renderingEngine = getRenderingEngine(renderingEngineId) const renderingEngine = getRenderingEngine(renderingEngineId)
const viewportId = `viewport-${this.activeViewportIndex}` const viewportId = `viewport-${this.activeViewportIndex}`
const viewport = renderingEngine.getViewport(viewportId) const viewport = renderingEngine.getViewport(viewportId)

View File

@ -28,13 +28,13 @@
v-for="outerQs in outerQuestions" v-for="outerQs in outerQuestions"
:key="outerQs.Id" :key="outerQs.Id"
:question="outerQs" :question="outerQs"
:questionForm="outerForm" :question-form="outerForm"
:readingTaskState="readingTaskState" :reading-task-state="readingTaskState"
:visitTaskId="visitTaskId" :visit-task-id="visitTaskId"
/> />
<el-form-item v-if="readingTaskState < 2"> <el-form-item v-if="readingTaskState < 2">
<div class="outer_form-footer"> <div class="outer_form-footer">
<i class="el-icon-warning feedback-icon" @click="openFeedBackTable" :style="{color: taskInfo && taskInfo.IsExistUnprocessedFeedback ? '#ffeb3b' : '#fff'}"/> <i class="el-icon-warning feedback-icon" :style="{color: taskInfo && taskInfo.IsExistUnprocessedFeedback ? '#ffeb3b' : '#fff'}" @click="openFeedBackTable" />
<el-button size="mini" @click="saveOuterForm">{{ $t('common:button:save') }}</el-button> <el-button size="mini" @click="saveOuterForm">{{ $t('common:button:save') }}</el-button>
</div> </div>
</el-form-item> </el-form-item>
@ -45,7 +45,8 @@
<div <div
v-for="(qs,index) in tableQuestions" v-for="(qs,index) in tableQuestions"
:key="index" :key="index"
class="lesions lesions_wrapper"> class="lesions lesions_wrapper"
>
<h4 <h4
v-if="qs.Type === 'group'" v-if="qs.Type === 'group'"
style="color: #ddd;padding: 5px 0px;margin: 0;" style="color: #ddd;padding: 5px 0px;margin: 0;"
@ -58,7 +59,8 @@
v-show="!(isBaseLineTask && table.LesionType === 2)" v-show="!(isBaseLineTask && table.LesionType === 2)"
:key="table.Id" :key="table.Id"
> >
<div v-if="table.Type === 'table'" <div
v-if="table.Type === 'table'"
class="flex-row" class="flex-row"
style="margin:3px 0;" style="margin:3px 0;"
> >
@ -143,13 +145,13 @@
:model="innerFormData[`${table.Id}_${answer.RowIndex}`]" :model="innerFormData[`${table.Id}_${answer.RowIndex}`]"
> >
<table-question-form-item <table-question-form-item
:tableInfo="table" :table-info="table"
:answer="answer" :answer="answer"
:questionForm="innerFormData[`${table.Id}_${answer.RowIndex}`]" :question-form="innerFormData[`${table.Id}_${answer.RowIndex}`]"
:readingTaskState="readingTaskState" :reading-task-state="readingTaskState"
:organs="organs" :organs="organs"
:isBaseLineTask="isBaseLineTask" :is-base-line-task="isBaseLineTask"
:isCurrentTask="isCurrentTask" :is-current-task="isCurrentTask"
@update="innerFormDataUpdate" @update="innerFormDataUpdate"
@close="closeInnerForm" @close="closeInnerForm"
@lesionTypeChange="lesionTypeChange" @lesionTypeChange="lesionTypeChange"
@ -272,7 +274,7 @@ export default {
this.taskInfo = JSON.parse(localStorage.getItem('taskInfo')) this.taskInfo = JSON.parse(localStorage.getItem('taskInfo'))
this.isBaseLineTask = this.taskInfo.IsBaseLine this.isBaseLineTask = this.taskInfo.IsBaseLine
this.criterionType = this.taskInfo.CriterionType this.criterionType = this.taskInfo.CriterionType
let digitPlaces = Number(localStorage.getItem('digitPlaces')) const digitPlaces = Number(localStorage.getItem('digitPlaces'))
this.digitPlaces = digitPlaces === -1 ? this.digitPlaces : digitPlaces this.digitPlaces = digitPlaces === -1 ? this.digitPlaces : digitPlaces
this.getOrganList() this.getOrganList()
}, },
@ -280,10 +282,10 @@ export default {
// //
async getOrganList() { async getOrganList() {
try { try {
let params = { const params = {
visitTaskId: this.visitTaskId visitTaskId: this.visitTaskId
} }
let res = await getReadingOrganList(params) const res = await getReadingOrganList(params)
if (res.IsSuccess) { if (res.IsSuccess) {
this.organs = res.Result this.organs = res.Result
} }
@ -295,11 +297,11 @@ export default {
async getOuterQuestions() { async getOuterQuestions() {
const loading = this.$loading({ fullscreen: true }) const loading = this.$loading({ fullscreen: true })
try { try {
let params = { const params = {
trialId: this.$route.query.trialId, trialId: this.$route.query.trialId,
visitTaskId: this.visitTaskId visitTaskId: this.visitTaskId
} }
let res = await getDicomReadingQuestionAnswer(params) const res = await getDicomReadingQuestionAnswer(params)
if (res.IsSuccess) { if (res.IsSuccess) {
this.outerQuestions = res.Result this.outerQuestions = res.Result
this.outerForm = this.getOuterFormData(this.outerQuestions) this.outerForm = this.getOuterFormData(this.outerQuestions)
@ -321,7 +323,7 @@ export default {
} }
if (item.QuestionType === 67) { if (item.QuestionType === 67) {
// //
this.imageQualityIssuesId = v.Id this.imageQualityIssuesId = item.Id
} }
if (item.Childrens?.length) { if (item.Childrens?.length) {
this.getOuterFormData(item.Childrens, formData) this.getOuterFormData(item.Childrens, formData)
@ -337,11 +339,11 @@ export default {
this.isCurrentTask = this.taskInfo.VisitTaskId === this.visitTaskId this.isCurrentTask = this.taskInfo.VisitTaskId === this.visitTaskId
const loading = this.$loading({ fullscreen: true }) const loading = this.$loading({ fullscreen: true })
try { try {
let params = { const params = {
trialId: this.$route.query.trialId, trialId: this.$route.query.trialId,
visitTaskId: this.visitTaskId visitTaskId: this.visitTaskId
} }
let res = await getReadingQuestionAndAnswer(params) const res = await getReadingQuestionAndAnswer(params)
if (res.IsSuccess) { if (res.IsSuccess) {
this.tableQuestions = res.Result.SinglePage this.tableQuestions = res.Result.SinglePage
res.Result.SinglePage.forEach(group => { res.Result.SinglePage.forEach(group => {
@ -359,17 +361,19 @@ export default {
this.$set(this.innerFormData[tableKey], 'IsLymphNodes', null) this.$set(this.innerFormData[tableKey], 'IsLymphNodes', null)
this.$set(this.innerFormData[tableKey], 'LesionState', null) this.$set(this.innerFormData[tableKey], 'LesionState', null)
this.$set(this.innerFormData[tableKey], 'LesionPart', null) this.$set(this.innerFormData[tableKey], 'LesionPart', null)
this.$set(this.innerFormData[tableKey], 'LesionOrgan', null)
this.$set(this.innerFormData[tableKey], 'LesionName', null) this.$set(this.innerFormData[tableKey], 'LesionName', null)
this.$set(this.innerFormData[tableKey], 'MeasureData', null) this.$set(this.innerFormData[tableKey], 'MeasureData', null)
this.$set(this.innerFormData[tableKey], 'TableId', tableKey) this.$set(this.innerFormData[tableKey], 'TableId', tableKey)
this.$set(this.innerFormData[tableKey], 'IsCurrentTaskAdd', 'True') this.$set(this.innerFormData[tableKey], 'IsCurrentTaskAdd', 'True')
// QuestionMark0--1--2--7--8-- // QuestionMark0--1--2--5--7--8--
let lengthId = this.getQuestionId(0, table.TableQuestions.Questions) const lengthId = this.getQuestionId(0, table.TableQuestions.Questions)
let shortId = this.getQuestionId(1, table.TableQuestions.Questions) const shortId = this.getQuestionId(1, table.TableQuestions.Questions)
let lymphNodesId = this.getQuestionId(2, table.TableQuestions.Questions) const lymphNodesId = this.getQuestionId(2, table.TableQuestions.Questions)
let stateId = this.getQuestionId(7, table.TableQuestions.Questions) const organId = this.getQuestionId(5, table.TableQuestions.Questions)
let partId = this.getQuestionId(8, table.TableQuestions.Questions) const stateId = this.getQuestionId(7, table.TableQuestions.Questions)
const partId = this.getQuestionId(8, table.TableQuestions.Questions)
table.TableQuestions.Answers.forEach((answer, index) => { table.TableQuestions.Answers.forEach((answer, index) => {
this.$set(this.innerFormData, `${tableKey}_${answer.RowIndex}`, {}) this.$set(this.innerFormData, `${tableKey}_${answer.RowIndex}`, {})
this.$set(this.innerFormData[`${tableKey}_${answer.RowIndex}`], 'LesionName', this.getLesionName(table.OrderMark, answer.RowIndex)) this.$set(this.innerFormData[`${tableKey}_${answer.RowIndex}`], 'LesionName', this.getLesionName(table.OrderMark, answer.RowIndex))
@ -380,7 +384,7 @@ export default {
} else if (key === 'LesionType' || key === lymphNodesId || key === stateId) { } else if (key === 'LesionType' || key === lymphNodesId || key === stateId) {
val = isNaN(parseInt(val)) ? null : parseInt(val) val = isNaN(parseInt(val)) ? null : parseInt(val)
} else if (key === 'IsCanEditPosition') { } else if (key === 'IsCanEditPosition') {
val = val === 'True' ? true : false val = val === 'True'
} }
this.$set(this.innerFormData[`${tableKey}_${answer.RowIndex}`], key, val) this.$set(this.innerFormData[`${tableKey}_${answer.RowIndex}`], key, val)
if (key === lengthId) { if (key === lengthId) {
@ -394,6 +398,8 @@ export default {
this.$set(this.innerFormData[`${tableKey}_${answer.RowIndex}`], 'SaveTypeEnum', isNaN(parseInt(val)) ? 1 : 2) this.$set(this.innerFormData[`${tableKey}_${answer.RowIndex}`], 'SaveTypeEnum', isNaN(parseInt(val)) ? 1 : 2)
} else if (key === partId) { } else if (key === partId) {
this.$set(this.innerFormData[`${tableKey}_${answer.RowIndex}`], 'LesionPart', val) this.$set(this.innerFormData[`${tableKey}_${answer.RowIndex}`], 'LesionPart', val)
} else if (key === organId) {
this.$set(this.innerFormData[`${tableKey}_${answer.RowIndex}`], 'LesionOrgan', val)
} }
} }
if (index === table.TableQuestions.Answers.length - 1) { if (index === table.TableQuestions.Answers.length - 1) {
@ -416,7 +422,7 @@ export default {
if (!valid) return if (!valid) return
const loading = this.$loading({ fullscreen: true }) const loading = this.$loading({ fullscreen: true })
try { try {
let answers = [] const answers = []
let imageQuality = null let imageQuality = null
for (const k in this.outerForm) { for (const k in this.outerForm) {
answers.push({ id: k, answer: this.outerForm[k] }) answers.push({ id: k, answer: this.outerForm[k] })
@ -424,12 +430,12 @@ export default {
imageQuality = this.outerForm[k] imageQuality = this.outerForm[k]
} }
} }
let params = { const params = {
visitTaskId: this.visitTaskId, visitTaskId: this.visitTaskId,
answers: answers answers: answers
} }
let res = await saveTaskQuestion(0, params) const res = await saveTaskQuestion(0, 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.isBaseLineTask && (this.criterionType === 1 || this.criterionType === 2 || this.criterionType === 3 || this.criterionType === 17)) { if (!this.isBaseLineTask && (this.criterionType === 1 || this.criterionType === 2 || this.criterionType === 3 || this.criterionType === 17)) {
@ -450,93 +456,13 @@ export default {
loading.close() loading.close()
} }
}, },
//
addTarget(tableInfo, annotation) {
//
const obj = Object.values(this.innerFormData).find(
obj => !obj.RowId
);
if (obj !== undefined && typeof obj === 'object') {
let msg = this.$t('trials:reading:warnning:msg5')
msg = msg.replace('xxx', obj.LesionName)
this.$confirm(msg, {
type: 'warning',
showCancelButton: false,
callback: action => {}
})
return
}
//
if (!!tableInfo.MaxQuestionCount && tableInfo.MaxQuestionCount <= tableInfo.TableQuestions.Answers.length) {
let msg = this.$t('trials:reading:warnning:msg14')
msg = msg.replace('xxx', tableInfo.MaxQuestionCount)
this.$confirm(msg, {
type: 'warning',
showCancelButton: false,
callback: action => {}
})
return
}
let answer = Object.assign({},this.innerFormData[tableInfo.Id])
answer.TableId = tableInfo.Id
answer.RowId = ''
let maxIndex = this.getMaxRowIndex(tableInfo.TableQuestions.Answers)
answer.RowIndex = `${maxIndex + 1}.00`
answer.IsDicomReading = true
answer.SaveTypeEnum = 0
answer.LesionType = tableInfo.LesionType
answer.LesionName = this.getLesionName(tableInfo.OrderMark, answer.RowIndex)
let state = null
if (this.isBaseLineTask && tableInfo.LesionType === 0) {
state = 0
}
if (this.isBaseLineTask && tableInfo.LesionType === 1) {
state = 0
}
let stateId = this.getQuestionId(7, tableInfo.TableQuestions.Questions)
answer[stateId] = state
tableInfo.TableQuestions.Answers.push(answer)
if (typeof annotation === 'object') {
answer.MeasureData = annotation
if (annotation.metadata.toolName === 'Length') {
let referencedImageId = annotation.metadata.referencedImageId
let length = annotation.data.cachedStats[`imageId:${referencedImageId}`].length
length = length ? parseFloat(length).toFixed(this.digitPlaces) : length
let lengthId = this.getQuestionId(0, tableInfo.TableQuestions.Questions)
answer.LesionLength = length
answer[lengthId] = length
} else if (annotation.metadata.toolName === 'Bidirectional') {
let referencedImageId = annotation.metadata.referencedImageId
let length = annotation.data.cachedStats[`imageId:${referencedImageId}`].length
length = length ? parseFloat(length).toFixed(this.digitPlaces) : length
let lengthId = this.getQuestionId(0, tableInfo.TableQuestions.Questions)
answer.LesionLength = length
answer[lengthId] = length
let short = annotation.data.cachedStats[`imageId:${referencedImageId}`].width
short = short ? parseFloat(short).toFixed(this.digitPlaces) : short
let shortId = this.getQuestionId(1, tableInfo.TableQuestions.Questions)
answer.LesionShort = short
answer[shortId] = short
}
this.$emit('setMarkName', {
annotationUID: annotation.annotationUID,
name: answer.LesionName
}
)
}
this.innerFormData[`${tableInfo.Id}_${answer.RowIndex}`] = answer
this.activeName = `${tableInfo.Id}_${answer.RowIndex}`
},
setAnnotation(obj) { setAnnotation(obj) {
let annotation = Object.assign({}, obj.annotation) const annotation = Object.assign({}, obj.annotation)
if (this.activeName) { if (this.activeName) {
// //
let tableId = this.activeName.split('_')[0] const tableId = this.activeName.split('_')[0]
let rowIndex = this.activeName.split('_')[1] const rowIndex = this.activeName.split('_')[1]
let innerForm = this.innerFormData[`${tableId}_${rowIndex}`] const innerForm = this.innerFormData[`${tableId}_${rowIndex}`]
if (innerForm.MeasureData) { if (innerForm.MeasureData) {
if (this.isBaseLineTask) { if (this.isBaseLineTask) {
const targetTable = this.tableQuestions[0].Childrens.find( const targetTable = this.tableQuestions[0].Childrens.find(
@ -558,28 +484,28 @@ export default {
if (typeof targetTable !== 'object') return if (typeof targetTable !== 'object') return
this.$set(this.innerFormData[`${tableId}_${rowIndex}`], 'MeasureData', annotation) this.$set(this.innerFormData[`${tableId}_${rowIndex}`], 'MeasureData', annotation)
if (obj.toolName === 'Length') { if (obj.toolName === 'Length') {
let referencedImageId = annotation.metadata.referencedImageId const referencedImageId = annotation.metadata.referencedImageId
let length = annotation.data.cachedStats[`imageId:${referencedImageId}`].length let length = annotation.data.cachedStats[`imageId:${referencedImageId}`].length
length = length ? parseFloat(length).toFixed(this.digitPlaces) : length length = length ? parseFloat(length).toFixed(this.digitPlaces) : length
let lengthId = this.getQuestionId(0, targetTable.TableQuestions.Questions) const lengthId = this.getQuestionId(0, targetTable.TableQuestions.Questions)
this.$set(this.innerFormData[`${tableId}_${rowIndex}`], 'LesionLength', length) this.$set(this.innerFormData[`${tableId}_${rowIndex}`], 'LesionLength', length)
this.$set(this.innerFormData[`${tableId}_${rowIndex}`], lengthId, length) this.$set(this.innerFormData[`${tableId}_${rowIndex}`], lengthId, length)
} else if (obj.toolName === 'Bidirectional') { } else if (obj.toolName === 'Bidirectional') {
let referencedImageId = annotation.metadata.referencedImageId const referencedImageId = annotation.metadata.referencedImageId
let length = annotation.data.cachedStats[`imageId:${referencedImageId}`].length let length = annotation.data.cachedStats[`imageId:${referencedImageId}`].length
length = length ? parseFloat(length).toFixed(this.digitPlaces) : length length = length ? parseFloat(length).toFixed(this.digitPlaces) : length
let lengthId = this.getQuestionId(0, targetTable.TableQuestions.Questions) const lengthId = this.getQuestionId(0, targetTable.TableQuestions.Questions)
this.$set(this.innerFormData[`${tableId}_${rowIndex}`], 'LesionLength', length) this.$set(this.innerFormData[`${tableId}_${rowIndex}`], 'LesionLength', length)
this.$set(this.innerFormData[`${tableId}_${rowIndex}`], lengthId, length) this.$set(this.innerFormData[`${tableId}_${rowIndex}`], lengthId, length)
let short = annotation.data.cachedStats[`imageId:${referencedImageId}`].width let short = annotation.data.cachedStats[`imageId:${referencedImageId}`].width
short = short ? parseFloat(short).toFixed(this.digitPlaces) : short short = short ? parseFloat(short).toFixed(this.digitPlaces) : short
let shortId = this.getQuestionId(1, targetTable.TableQuestions.Questions) const shortId = this.getQuestionId(1, targetTable.TableQuestions.Questions)
this.$set(this.innerFormData[`${tableId}_${rowIndex}`], 'LesionShort', short) this.$set(this.innerFormData[`${tableId}_${rowIndex}`], 'LesionShort', short)
this.$set(this.innerFormData[`${tableId}_${rowIndex}`], shortId, short) this.$set(this.innerFormData[`${tableId}_${rowIndex}`], shortId, short)
} }
let stateId = this.getQuestionId(7, targetTable.TableQuestions.Questions) const stateId = this.getQuestionId(7, targetTable.TableQuestions.Questions)
let state = this.innerFormData[`${tableId}_${rowIndex}`][stateId] const state = this.innerFormData[`${tableId}_${rowIndex}`][stateId]
// 线 // 线
if (this.isBaseLineTask && !state) { if (this.isBaseLineTask && !state) {
this.$set(this.innerFormData[`${tableId}_${rowIndex}`], 'LesionState', 0) this.$set(this.innerFormData[`${tableId}_${rowIndex}`], 'LesionState', 0)
@ -607,7 +533,6 @@ export default {
this.createNLTarget(annotation) this.createNLTarget(annotation)
} }
} }
}, },
modifyAnnotation(obj) { modifyAnnotation(obj) {
const { annotation, toolName } = obj const { annotation, toolName } = obj
@ -615,36 +540,36 @@ export default {
i => i.LesionName === annotation.data.label i => i.LesionName === annotation.data.label
) )
if (typeof formData !== 'object') return if (typeof formData !== 'object') return
let tableId = formData.TableId const tableId = formData.TableId
let rowIndex = formData.RowIndex const rowIndex = formData.RowIndex
const targetTable = this.tableQuestions[0].Childrens.find( const targetTable = this.tableQuestions[0].Childrens.find(
child => child.Id === formData.TableId child => child.Id === formData.TableId
) )
if (typeof targetTable !== 'object') return if (typeof targetTable !== 'object') return
this.$set(this.innerFormData[`${tableId}_${rowIndex}`], 'MeasureData', annotation) this.$set(this.innerFormData[`${tableId}_${rowIndex}`], 'MeasureData', annotation)
if (toolName === 'Length') { if (toolName === 'Length') {
let referencedImageId = annotation.metadata.referencedImageId const referencedImageId = annotation.metadata.referencedImageId
let length = annotation.data.cachedStats[`imageId:${referencedImageId}`].length let length = annotation.data.cachedStats[`imageId:${referencedImageId}`].length
length = length ? parseFloat(length).toFixed(this.digitPlaces) : length length = length ? parseFloat(length).toFixed(this.digitPlaces) : length
let lengthId = this.getQuestionId(0, targetTable.TableQuestions.Questions) const lengthId = this.getQuestionId(0, targetTable.TableQuestions.Questions)
this.$set(this.innerFormData[`${tableId}_${rowIndex}`], 'LesionLength', length) this.$set(this.innerFormData[`${tableId}_${rowIndex}`], 'LesionLength', length)
this.$set(this.innerFormData[`${tableId}_${rowIndex}`], lengthId, length) this.$set(this.innerFormData[`${tableId}_${rowIndex}`], lengthId, length)
} else if (toolName === 'Bidirectional') { } else if (toolName === 'Bidirectional') {
let referencedImageId = annotation.metadata.referencedImageId const referencedImageId = annotation.metadata.referencedImageId
let length = annotation.data.cachedStats[`imageId:${referencedImageId}`].length let length = annotation.data.cachedStats[`imageId:${referencedImageId}`].length
length = length ? parseFloat(length).toFixed(this.digitPlaces) : length length = length ? parseFloat(length).toFixed(this.digitPlaces) : length
let lengthId = this.getQuestionId(0, targetTable.TableQuestions.Questions) const lengthId = this.getQuestionId(0, targetTable.TableQuestions.Questions)
this.$set(this.innerFormData[`${tableId}_${rowIndex}`], 'LesionLength', length) this.$set(this.innerFormData[`${tableId}_${rowIndex}`], 'LesionLength', length)
this.$set(this.innerFormData[`${tableId}_${rowIndex}`], lengthId, length) this.$set(this.innerFormData[`${tableId}_${rowIndex}`], lengthId, length)
let short = annotation.data.cachedStats[`imageId:${referencedImageId}`].width let short = annotation.data.cachedStats[`imageId:${referencedImageId}`].width
short = short ? parseFloat(short).toFixed(this.digitPlaces) : short short = short ? parseFloat(short).toFixed(this.digitPlaces) : short
let shortId = this.getQuestionId(1, targetTable.TableQuestions.Questions) const shortId = this.getQuestionId(1, targetTable.TableQuestions.Questions)
this.$set(this.innerFormData[`${tableId}_${rowIndex}`], 'LesionShort', short) this.$set(this.innerFormData[`${tableId}_${rowIndex}`], 'LesionShort', short)
this.$set(this.innerFormData[`${tableId}_${rowIndex}`], shortId, short) this.$set(this.innerFormData[`${tableId}_${rowIndex}`], shortId, short)
} }
let stateId = this.getQuestionId(7, targetTable.TableQuestions.Questions) const stateId = this.getQuestionId(7, targetTable.TableQuestions.Questions)
let state = this.innerFormData[`${tableId}_${rowIndex}`][stateId] const state = this.innerFormData[`${tableId}_${rowIndex}`][stateId]
// 线 // 线
if (this.isBaseLineTask && !state) { if (this.isBaseLineTask && !state) {
this.$set(this.innerFormData[`${tableId}_${rowIndex}`], 'LesionState', 0) this.$set(this.innerFormData[`${tableId}_${rowIndex}`], 'LesionState', 0)
@ -652,7 +577,85 @@ export default {
} }
this.$set(this.innerFormData[`${tableId}_${rowIndex}`], 'SaveTypeEnum', formData.RowId ? 1 : 0) this.$set(this.innerFormData[`${tableId}_${rowIndex}`], 'SaveTypeEnum', formData.RowId ? 1 : 0)
this.activeName = `${tableId}_${rowIndex}` this.activeName = `${tableId}_${rowIndex}`
},
//
addTarget(tableInfo, annotation) {
//
const obj = Object.values(this.innerFormData).find(
obj => !obj.RowId
)
if (obj !== undefined && typeof obj === 'object') {
let msg = this.$t('trials:reading:warnning:msg5')
msg = msg.replace('xxx', obj.LesionName)
this.$confirm(msg, {
type: 'warning',
showCancelButton: false,
callback: action => {}
})
return
}
//
if (!!tableInfo.MaxQuestionCount && tableInfo.MaxQuestionCount <= tableInfo.TableQuestions.Answers.length) {
let msg = this.$t('trials:reading:warnning:msg14')
msg = msg.replace('xxx', tableInfo.MaxQuestionCount)
this.$confirm(msg, {
type: 'warning',
showCancelButton: false,
callback: action => {}
})
return
}
const answer = Object.assign({}, this.innerFormData[tableInfo.Id])
answer.TableId = tableInfo.Id
answer.RowId = ''
const maxIndex = this.getMaxRowIndex(tableInfo.TableQuestions.Answers)
answer.RowIndex = `${maxIndex + 1}.00`
answer.IsDicomReading = true
answer.SaveTypeEnum = 0
answer.LesionType = tableInfo.LesionType
answer.LesionName = this.getLesionName(tableInfo.OrderMark, answer.RowIndex)
let state = null
if (this.isBaseLineTask && tableInfo.LesionType === 0) {
state = 0
}
if (this.isBaseLineTask && tableInfo.LesionType === 1) {
state = 0
}
const stateId = this.getQuestionId(7, tableInfo.TableQuestions.Questions)
answer[stateId] = state
tableInfo.TableQuestions.Answers.push(answer)
if (typeof annotation === 'object') {
answer.MeasureData = annotation
if (annotation.metadata.toolName === 'Length') {
const referencedImageId = annotation.metadata.referencedImageId
let length = annotation.data.cachedStats[`imageId:${referencedImageId}`].length
length = length ? parseFloat(length).toFixed(this.digitPlaces) : length
const lengthId = this.getQuestionId(0, tableInfo.TableQuestions.Questions)
answer.LesionLength = length
answer[lengthId] = length
} else if (annotation.metadata.toolName === 'Bidirectional') {
const referencedImageId = annotation.metadata.referencedImageId
let length = annotation.data.cachedStats[`imageId:${referencedImageId}`].length
length = length ? parseFloat(length).toFixed(this.digitPlaces) : length
const lengthId = this.getQuestionId(0, tableInfo.TableQuestions.Questions)
answer.LesionLength = length
answer[lengthId] = length
let short = annotation.data.cachedStats[`imageId:${referencedImageId}`].width
short = short ? parseFloat(short).toFixed(this.digitPlaces) : short
const shortId = this.getQuestionId(1, tableInfo.TableQuestions.Questions)
answer.LesionShort = short
answer[shortId] = short
}
this.$emit('setMarkName', {
annotationUID: annotation.annotationUID,
name: answer.LesionName
}
)
}
this.innerFormData[`${tableInfo.Id}_${answer.RowIndex}`] = answer
this.activeName = `${tableInfo.Id}_${answer.RowIndex}`
}, },
// //
createTTarget(annotation) { createTTarget(annotation) {
@ -689,18 +692,18 @@ export default {
} }
) )
if (confirm !== 'confirm') return if (confirm !== 'confirm') return
let innerForm = this.innerFormData[`${table.Id}_${rowIndex}`] const innerForm = this.innerFormData[`${table.Id}_${rowIndex}`]
// //
let lengthId = this.getQuestionId(0, table.TableQuestions.Questions) const lengthId = this.getQuestionId(0, table.TableQuestions.Questions)
this.$set(this.innerFormData[`${table.Id}_${rowIndex}`], lengthId, null) this.$set(this.innerFormData[`${table.Id}_${rowIndex}`], lengthId, null)
this.$set(this.innerFormData[`${table.Id}_${rowIndex}`], 'LesionLength', null) this.$set(this.innerFormData[`${table.Id}_${rowIndex}`], 'LesionLength', null)
let shortId = this.getQuestionId(1, table.TableQuestions.Questions) const shortId = this.getQuestionId(1, table.TableQuestions.Questions)
this.$set(this.innerFormData[`${table.Id}_${rowIndex}`], shortId, null) this.$set(this.innerFormData[`${table.Id}_${rowIndex}`], shortId, null)
this.$set(this.innerFormData[`${table.Id}_${rowIndex}`], 'LesionShort', null) this.$set(this.innerFormData[`${table.Id}_${rowIndex}`], 'LesionShort', null)
let stateId = this.getQuestionId(7, table.TableQuestions.Questions) const stateId = this.getQuestionId(7, table.TableQuestions.Questions)
this.$set(this.innerFormData[`${table.Id}_${rowIndex}`], stateId, null) this.$set(this.innerFormData[`${table.Id}_${rowIndex}`], stateId, null)
this.$set(this.innerFormData[`${table.Id}_${rowIndex}`], 'LesionState', null) this.$set(this.innerFormData[`${table.Id}_${rowIndex}`], 'LesionState', null)
let obj = Object.assign({}, innerForm.MeasureData) const obj = Object.assign({}, innerForm.MeasureData)
// //
this.$emit('removeAnnotation', obj) this.$emit('removeAnnotation', obj)
// //
@ -720,9 +723,9 @@ export default {
} }
) )
if (confirm !== 'confirm') return if (confirm !== 'confirm') return
let innerForm = this.innerFormData[`${table.Id}_${rowIndex}`] const innerForm = this.innerFormData[`${table.Id}_${rowIndex}`]
if (innerForm.RowId) { if (innerForm.RowId) {
let param = { const param = {
visitTaskId: this.visitTaskId, visitTaskId: this.visitTaskId,
questionId: table.Id, questionId: table.Id,
rowId: innerForm.RowId rowId: innerForm.RowId
@ -731,7 +734,7 @@ export default {
if (res.IsSuccess) { if (res.IsSuccess) {
if (innerForm.MeasureData) { if (innerForm.MeasureData) {
// //
let obj = Object.assign({}, innerForm.MeasureData) const obj = Object.assign({}, innerForm.MeasureData)
this.$emit('removeAnnotation', obj) this.$emit('removeAnnotation', obj)
} }
// //
@ -744,7 +747,7 @@ export default {
} else { } else {
if (innerForm.MeasureData) { if (innerForm.MeasureData) {
// //
let obj = Object.assign({}, innerForm.MeasureData) const obj = Object.assign({}, innerForm.MeasureData)
this.$emit('removeAnnotation', obj) this.$emit('removeAnnotation', obj)
} }
// //
@ -763,13 +766,14 @@ export default {
const valid = await this.$refs[`${table.Id}_${rowIndex}`][0].validate() const valid = await this.$refs[`${table.Id}_${rowIndex}`][0].validate()
if (!valid) return if (!valid) return
const loading = this.$loading({ fullscreen: true }) const loading = this.$loading({ fullscreen: true })
let innerForm = this.innerFormData[`${table.Id}_${rowIndex}`] const innerForm = this.innerFormData[`${table.Id}_${rowIndex}`]
let measureData = innerForm.MeasureData const measureData = innerForm.MeasureData
let lesionState = innerForm.LesionState const lesionState = innerForm.LesionState
let lesionLength = innerForm.LesionLength let lesionLength = innerForm.LesionLength
let lesionShort = innerForm.LesionShort let lesionShort = innerForm.LesionShort
let lymphNodes = innerForm.IsLymphNodes const lymphNodes = innerForm.IsLymphNodes
let lesionType = table.LesionType const lesionType = table.LesionType
const lesionPart = innerForm.LesionPart
if (this.isBaseLineTask) { if (this.isBaseLineTask) {
// 线 // 线
// 0 // 0
@ -873,7 +877,7 @@ export default {
loading.close() loading.close()
return return
} else if (measureData && measureData.markTool === 'ArrowAnnotate') { } else if (measureData && measureData.markTool === 'ArrowAnnotate') {
let shortId = this.getQuestionId(1, table.TableQuestions.Questions) const shortId = this.getQuestionId(1, table.TableQuestions.Questions)
this.$set(innerForm, shortId, 5) this.$set(innerForm, shortId, 5)
lesionShort = 5 lesionShort = 5
} }
@ -889,7 +893,7 @@ export default {
loading.close() loading.close()
return return
} else if (measureData && measureData.markTool === 'ArrowAnnotate') { } else if (measureData && measureData.markTool === 'ArrowAnnotate') {
let lengthId = this.getQuestionId(0, table.TableQuestions.Questions) const lengthId = this.getQuestionId(0, table.TableQuestions.Questions)
this.$set(this.questionForm, lengthId, 5) this.$set(this.questionForm, lengthId, 5)
lesionLength = 5 lesionLength = 5
} }
@ -950,7 +954,7 @@ export default {
loading.close() loading.close()
return return
} else if (measureData && measureData.markTool === 'ArrowAnnotate') { } else if (measureData && measureData.markTool === 'ArrowAnnotate') {
let lengthId = this.getQuestionId(0, table.TableQuestions.Questions) const lengthId = this.getQuestionId(0, table.TableQuestions.Questions)
this.$set(innerForm, lengthId, 0) this.$set(innerForm, lengthId, 0)
lesionLength = 0 lesionLength = 0
} }
@ -1190,17 +1194,17 @@ export default {
} }
} }
// //
let obj = Object.assign({}, measureData) const obj = Object.assign({}, measureData)
obj.visitTaskId = this.visitTaskId obj.visitTaskId = this.visitTaskId
obj.lesionName = innerForm.LesionName obj.lesionName = innerForm.LesionName
let picturePath = '' let picturePath = ''
if (measureData) { if (measureData) {
const base64Str = await this.getScreenshots(obj) const base64Str = await this.getScreenshots(obj)
let pictureObj = await this.uploadScreenshots(`${new Date().getTime()}`, base64Str) const pictureObj = await this.uploadScreenshots(`${new Date().getTime()}`, base64Str)
picturePath = pictureObj.isSuccess ? this.$getObjectName(pictureObj.result.url) : '' picturePath = pictureObj.isSuccess ? this.$getObjectName(pictureObj.result.url) : ''
} }
let answers = [] const answers = []
let reg = new RegExp(/^[0-9a-zA-Z]{8}-[0-9a-zA-Z]{4}-[0-9a-zA-Z]{4}-[0-9a-zA-Z]{4}-[0-9a-zA-Z]{12}$/) const reg = new RegExp(/^[0-9a-zA-Z]{8}-[0-9a-zA-Z]{4}-[0-9a-zA-Z]{4}-[0-9a-zA-Z]{4}-[0-9a-zA-Z]{12}$/)
for (const k in innerForm) { for (const k in innerForm) {
if (reg.test(k)) { if (reg.test(k)) {
if (answers.findIndex(i => i.tableQuestionId === k) === -1) { if (answers.findIndex(i => i.tableQuestionId === k) === -1) {
@ -1208,7 +1212,7 @@ export default {
} }
} }
} }
let params = { const params = {
questionId: table.Id, questionId: table.Id,
rowId: innerForm.RowId, rowId: innerForm.RowId,
rowIndex: innerForm.RowIndex, rowIndex: innerForm.RowIndex,
@ -1227,7 +1231,6 @@ export default {
isDicomReading: innerForm.IsDicomReading isDicomReading: innerForm.IsDicomReading
} }
if (this.deleteTargetInfo && this.deleteTargetInfo.newLesionName === innerForm.LesionName) { if (this.deleteTargetInfo && this.deleteTargetInfo.newLesionName === innerForm.LesionName) {
await deleteReadingRowAnswer({ await deleteReadingRowAnswer({
visitTaskId: this.visitTaskId, visitTaskId: this.visitTaskId,
questionId: this.deleteTargetInfo.tableId, questionId: this.deleteTargetInfo.tableId,
@ -1249,8 +1252,8 @@ export default {
async uploadScreenshots(fileName, file) { async uploadScreenshots(fileName, file) {
try { try {
file = this.convertBase64ToBlob(file) file = this.convertBase64ToBlob(file)
let trialId = this.$route.query.trialId const trialId = this.$route.query.trialId
let subjectId = this.taskInfo.SubjectId const subjectId = this.taskInfo.SubjectId
const result = await this.OSSclient.put(`/${trialId}/Read/${subjectId}/Visit/${fileName}.png`, file) const result = await this.OSSclient.put(`/${trialId}/Read/${subjectId}/Visit/${fileName}.png`, file)
return { isSuccess: true, result: result } return { isSuccess: true, result: result }
} catch (e) { } catch (e) {
@ -1259,7 +1262,7 @@ export default {
} }
}, },
convertBase64ToBlob(imageEditorBase64) { convertBase64ToBlob(imageEditorBase64) {
let base64Arr = imageEditorBase64.split(',') const base64Arr = imageEditorBase64.split(',')
let imgtype = '' let imgtype = ''
let base64String = '' let base64String = ''
if (base64Arr.length > 1) { if (base64Arr.length > 1) {
@ -1269,9 +1272,9 @@ export default {
base64Arr[0].indexOf(';') base64Arr[0].indexOf(';')
) )
} }
let bytes = atob(base64String) const bytes = atob(base64String)
let bytesCode = new ArrayBuffer(bytes.length) const bytesCode = new ArrayBuffer(bytes.length)
let byteArray = new Uint8Array(bytesCode) const byteArray = new Uint8Array(bytesCode)
for (let i = 0; i < bytes.length; i++) { for (let i = 0; i < bytes.length; i++) {
byteArray[i] = bytes.charCodeAt(i) byteArray[i] = bytes.charCodeAt(i)
} }
@ -1281,15 +1284,15 @@ export default {
getScreenshots(obj) { getScreenshots(obj) {
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
obj.visitTaskId = this.visitTaskId obj.visitTaskId = this.visitTaskId
this.$emit('getScreenshots', obj, resolve); // resolve this.$emit('getScreenshots', obj, resolve) // resolve
}); })
}, },
// //
innerFormDataUpdate(obj) { innerFormDataUpdate(obj) {
let innerForm = this.innerFormData[`${obj.tableId}_${obj.rowIndex}`] const innerForm = this.innerFormData[`${obj.tableId}_${obj.rowIndex}`]
if (innerForm === undefined || typeof innerForm !== 'object') return if (innerForm === undefined || typeof innerForm !== 'object') return
this.$set(this.innerFormData[`${obj.tableId}_${obj.rowIndex}`], obj.questionId, obj.val) this.$set(this.innerFormData[`${obj.tableId}_${obj.rowIndex}`], obj.questionId, obj.val)
// QuestionMark0--1--2--7--8-- // QuestionMark0--1--2--5--7--8--
if (obj.questionMark === 0) { if (obj.questionMark === 0) {
this.$set(this.innerFormData[`${obj.tableId}_${obj.rowIndex}`], 'LesionLength', obj.val) this.$set(this.innerFormData[`${obj.tableId}_${obj.rowIndex}`], 'LesionLength', obj.val)
} }
@ -1308,31 +1311,37 @@ export default {
this.$set(this.innerFormData[`${obj.tableId}_${obj.rowIndex}`], i.questionId, i.val) this.$set(this.innerFormData[`${obj.tableId}_${obj.rowIndex}`], i.questionId, i.val)
if (i.questionMark === 2) { if (i.questionMark === 2) {
this.$set(this.innerFormData[`${obj.tableId}_${obj.rowIndex}`], 'IsLymphNodes', i.val) this.$set(this.innerFormData[`${obj.tableId}_${obj.rowIndex}`], 'IsLymphNodes', i.val)
} else if (i.questionMark === 5) {
this.$set(this.innerFormData[`${obj.tableId}_${obj.rowIndex}`], 'LesionOrgan', i.val)
if (innerForm.LesionType === 2) {
this.setNewTargetState(obj.tableId, obj.rowIndex)
}
} }
}) })
} }
let rowId = this.innerFormData[`${obj.tableId}_${obj.rowIndex}`].RowId
const rowId = this.innerFormData[`${obj.tableId}_${obj.rowIndex}`].RowId
this.$set(this.innerFormData[`${obj.tableId}_${obj.rowIndex}`], 'SaveTypeEnum', rowId ? 1 : 0) this.$set(this.innerFormData[`${obj.tableId}_${obj.rowIndex}`], 'SaveTypeEnum', rowId ? 1 : 0)
}, },
handleCollapseChange(v) { handleCollapseChange(v) {
if (!v) return if (!v) return
let tableId = v.split('_')[0] const tableId = v.split('_')[0]
let rowIndex = v.split('_')[1] const rowIndex = v.split('_')[1]
let innerForm = this.innerFormData[`${tableId}_${rowIndex}`] const innerForm = this.innerFormData[`${tableId}_${rowIndex}`]
// if (!innerForm.MeasureData) return // if (!innerForm.MeasureData) return
let obj = Object.assign({visitTaskId: this.visitTaskId}, innerForm.MeasureData) const obj = Object.assign({ visitTaskId: this.visitTaskId }, innerForm.MeasureData)
obj.lesionName = innerForm.LesionName obj.lesionName = innerForm.LesionName
obj.markTool = innerForm.MarkTool ? innerForm.MarkTool : '' obj.markTool = innerForm.MarkTool ? innerForm.MarkTool : ''
obj.isMarked = innerForm.MeasureData ? true : false obj.isMarked = !!innerForm.MeasureData
if (this.visitTaskId === this.taskInfo.VisitTaskId) { if (this.visitTaskId === this.taskInfo.VisitTaskId) {
obj.isActiveTarget = true obj.isActiveTarget = true
} }
this.$emit('imageLocation', obj) this.$emit('imageLocation', obj)
}, },
collapseRightClick(e, tableId, rowIndex) { collapseRightClick(e, tableId, rowIndex) {
let innerForm = this.innerFormData[`${tableId}_${rowIndex}`] const innerForm = this.innerFormData[`${tableId}_${rowIndex}`]
if (!innerForm.MeasureData) return if (!innerForm.MeasureData) return
let obj = Object.assign({visitTaskId: this.visitTaskId}, innerForm.MeasureData) const obj = Object.assign({ visitTaskId: this.visitTaskId }, innerForm.MeasureData)
obj.lesionName = innerForm.LesionName obj.lesionName = innerForm.LesionName
this.$emit('imageLocation', obj) this.$emit('imageLocation', obj)
e.stopImmediatePropagation() e.stopImmediatePropagation()
@ -1345,7 +1354,7 @@ export default {
// //
const obj = Object.values(this.innerFormData).find( const obj = Object.values(this.innerFormData).find(
obj => !obj.RowId obj => !obj.RowId
); )
if (obj !== undefined && typeof obj === 'object') { if (obj !== undefined && typeof obj === 'object') {
let msg = this.$t('trials:reading:warnning:msg5') let msg = this.$t('trials:reading:warnning:msg5')
msg = msg.replace('xxx', obj.LesionName) msg = msg.replace('xxx', obj.LesionName)
@ -1370,7 +1379,6 @@ export default {
} catch (e) { } catch (e) {
console.log(e) console.log(e)
} }
}, },
async split(tableId, rowId) { async split(tableId, rowId) {
const loading = this.$loading({ fullscreen: true }) const loading = this.$loading({ fullscreen: true })
@ -1417,19 +1425,19 @@ export default {
}, },
getMaxRowIndex(answers) { getMaxRowIndex(answers) {
if (answers.length > 0) { if (answers.length > 0) {
let arr = [] const arr = []
answers.forEach(item => { answers.forEach(item => {
var rowIndex = item.RowIndex var rowIndex = item.RowIndex
arr.push(parseInt(rowIndex)) arr.push(parseInt(rowIndex))
}) })
let max = Math.max.apply(null, arr) const max = Math.max.apply(null, arr)
return max return max
} else { } else {
return 0 return 0
} }
}, },
getQuestionId(questionMark, tableQuestions) { getQuestionId(questionMark, tableQuestions) {
let idx = tableQuestions.findIndex(i => i.QuestionMark === questionMark) const idx = tableQuestions.findIndex(i => i.QuestionMark === questionMark)
if (idx > -1) { if (idx > -1) {
return tableQuestions[idx].Id return tableQuestions[idx].Id
} else { } else {
@ -1439,8 +1447,8 @@ export default {
// //
getLesionName(orderMark, rowIndex) { getLesionName(orderMark, rowIndex) {
let lessionName = '' let lessionName = ''
let rowIndexArr = rowIndex.split('.') const rowIndexArr = rowIndex.split('.')
let x = parseInt(rowIndexArr[0]) const x = parseInt(rowIndexArr[0])
let y = parseInt(rowIndexArr[1]) let y = parseInt(rowIndexArr[1])
if (y > 0) { if (y > 0) {
y = String.fromCharCode(parseInt(rowIndexArr[1]) - 1 + 65 + 32) y = String.fromCharCode(parseInt(rowIndexArr[1]) - 1 + 65 + 32)
@ -1482,11 +1490,11 @@ export default {
}, },
// //
lesionTypeChange(obj) { lesionTypeChange(obj) {
let innerForm = this.innerFormData[`${obj.tableId}_${obj.rowIndex}`] const innerForm = this.innerFormData[`${obj.tableId}_${obj.rowIndex}`]
// //
const formData = Object.values(this.innerFormData).find( const formData = Object.values(this.innerFormData).find(
obj => !obj.RowId && obj.LesionName !== innerForm.LesionName obj => !obj.RowId && obj.LesionName !== innerForm.LesionName
); )
if (formData !== undefined && typeof formData === 'object') { if (formData !== undefined && typeof formData === 'object') {
let msg = this.$t('trials:reading:warnning:msg5') let msg = this.$t('trials:reading:warnning:msg5')
msg = msg.replace('xxx', formData.LesionName) msg = msg.replace('xxx', formData.LesionName)
@ -1502,7 +1510,7 @@ export default {
const targetTable = this.tableQuestions[0].Childrens.find( const targetTable = this.tableQuestions[0].Childrens.find(
child => child.LesionType === obj.newLesionType child => child.LesionType === obj.newLesionType
); )
if (typeof targetTable !== 'object') return if (typeof targetTable !== 'object') return
// //
if (!!targetTable.MaxQuestionCount && targetTable.MaxQuestionCount <= targetTable.TableQuestions.Answers.length) { if (!!targetTable.MaxQuestionCount && targetTable.MaxQuestionCount <= targetTable.TableQuestions.Answers.length) {
@ -1531,9 +1539,9 @@ export default {
this.removeAnswer(obj.tableId, obj.rowIndex) this.removeAnswer(obj.tableId, obj.rowIndex)
delete this.innerFormData[`${obj.tableId}_${obj.rowIndex}`] delete this.innerFormData[`${obj.tableId}_${obj.rowIndex}`]
// //
let answer = Object.assign({},this.innerFormData[targetTable.Id]) const answer = Object.assign({}, this.innerFormData[targetTable.Id])
answer.RowId = '' answer.RowId = ''
let maxIndex = this.getMaxRowIndex(targetTable.TableQuestions.Answers) const maxIndex = this.getMaxRowIndex(targetTable.TableQuestions.Answers)
answer.RowIndex = `${maxIndex + 1}.00` answer.RowIndex = `${maxIndex + 1}.00`
answer.IsDicomReading = true answer.IsDicomReading = true
answer.SaveTypeEnum = 0 answer.SaveTypeEnum = 0
@ -1558,13 +1566,12 @@ export default {
name: answer.LesionName name: answer.LesionName
}) })
answer.MeasureData = innerForm.MeasureData answer.MeasureData = innerForm.MeasureData
} }
let lengthId = this.getQuestionId(0, targetTable.TableQuestions.Questions) const lengthId = this.getQuestionId(0, targetTable.TableQuestions.Questions)
answer[lengthId] = lesionLength answer[lengthId] = lesionLength
let shortId = this.getQuestionId(1, targetTable.TableQuestions.Questions) const shortId = this.getQuestionId(1, targetTable.TableQuestions.Questions)
answer[shortId] = lesionShort answer[shortId] = lesionShort
let stateId = this.getQuestionId(7, targetTable.TableQuestions.Questions) const stateId = this.getQuestionId(7, targetTable.TableQuestions.Questions)
answer[stateId] = state answer[stateId] = state
targetTable.TableQuestions.Answers.push(answer) targetTable.TableQuestions.Answers.push(answer)
this.innerFormData[`${targetTable.Id}_${answer.RowIndex}`] = answer this.innerFormData[`${targetTable.Id}_${answer.RowIndex}`] = answer
@ -1575,7 +1582,7 @@ export default {
} }
}, },
async closeInnerForm(obj) { async closeInnerForm(obj) {
let innerForm = this.innerFormData[`${obj.tableId}_${obj.rowIndex}`] const innerForm = this.innerFormData[`${obj.tableId}_${obj.rowIndex}`]
if (innerForm === undefined || typeof innerForm !== 'object') return if (innerForm === undefined || typeof innerForm !== 'object') return
if (!innerForm.RowId) { if (!innerForm.RowId) {
// //
@ -1592,7 +1599,7 @@ export default {
delete this.innerFormData[`${obj.tableId}_${obj.rowIndex}`] delete this.innerFormData[`${obj.tableId}_${obj.rowIndex}`]
// //
if (innerForm.MeasureData) { if (innerForm.MeasureData) {
let obj = Object.assign({}, innerForm.MeasureData) const obj = Object.assign({}, innerForm.MeasureData)
this.$emit('removeAnnotation', obj) this.$emit('removeAnnotation', obj)
} }
// //
@ -1610,12 +1617,12 @@ export default {
removeAnswer(tableId, rowIndex) { removeAnswer(tableId, rowIndex) {
const targetTable = this.tableQuestions[0].Childrens.find( const targetTable = this.tableQuestions[0].Childrens.find(
child => child.Id === tableId child => child.Id === tableId
); )
if (targetTable?.TableQuestions?.Answers) { if (targetTable?.TableQuestions?.Answers) {
const originalAnswers = targetTable.TableQuestions.Answers; const originalAnswers = targetTable.TableQuestions.Answers
const index = originalAnswers.findIndex(item => item.RowIndex === rowIndex); const index = originalAnswers.findIndex(item => item.RowIndex === rowIndex)
if (index > -1) { if (index > -1) {
targetTable.TableQuestions.Answers.splice(index, 1); targetTable.TableQuestions.Answers.splice(index, 1)
} }
} }
}, },
@ -1625,9 +1632,9 @@ export default {
) )
if (typeof obj === 'object') { if (typeof obj === 'object') {
if (this.activeName) { if (this.activeName) {
let tableId = this.activeName.split('_')[0] const tableId = this.activeName.split('_')[0]
let rowIndex = this.activeName.split('_')[1] const rowIndex = this.activeName.split('_')[1]
let innerForm = this.innerFormData[`${tableId}_${rowIndex}`] const innerForm = this.innerFormData[`${tableId}_${rowIndex}`]
if (!innerForm.MeasureData) { if (!innerForm.MeasureData) {
return this.checkToolCanActive(toolName) return this.checkToolCanActive(toolName)
} else { } else {
@ -1659,10 +1666,10 @@ export default {
} }
}, },
checkToolCanActive(toolName) { checkToolCanActive(toolName) {
let tableId = this.activeName.split('_')[0] const tableId = this.activeName.split('_')[0]
let rowIndex = this.activeName.split('_')[1] const rowIndex = this.activeName.split('_')[1]
let innerForm = this.innerFormData[`${tableId}_${rowIndex}`] const innerForm = this.innerFormData[`${tableId}_${rowIndex}`]
let isLymphNodes = innerForm.IsLymphNodes const isLymphNodes = innerForm.IsLymphNodes
if (!innerForm.MeasureData) { if (!innerForm.MeasureData) {
if (this.isBaseLineTask) { if (this.isBaseLineTask) {
if (innerForm.LesionType === 0 && isLymphNodes === 1 && toolName !== 'Bidirectional') { if (innerForm.LesionType === 0 && isLymphNodes === 1 && toolName !== 'Bidirectional') {

View File

@ -1,8 +1,8 @@
<template> <template>
<div class="table-question-form"> <div class="table-question-form">
<div style="display: flex;justify-content: space-between;"> <div style="display: flex;justify-content: space-between;">
<h3 v-if="questionForm.LesionName" style="color: #ddd;padding: 5px 0px;margin: 0;"> <h3 v-if="qsForm.LesionName" style="color: #ddd;padding: 5px 0px;margin: 0;">
{{ questionForm.LesionName }} {{ qsForm.LesionName }}
</h3> </h3>
<!-- 关闭 --> <!-- 关闭 -->
<div> <div>
@ -18,7 +18,7 @@
> >
<!-- 下拉框 --> <!-- 下拉框 -->
<el-select <el-select
v-model="questionForm.LesionType" v-model="qsForm.LesionType"
filterable filterable
:disabled="!isCurrentTask || readingTaskState>=2 || !isBaseLineTask" :disabled="!isCurrentTask || readingTaskState>=2 || !isBaseLineTask"
@change="((val)=>{lesionTypeChange(val)})" @change="((val)=>{lesionTypeChange(val)})"
@ -47,9 +47,10 @@
> >
<!-- 输入框 --> <!-- 输入框 -->
<template v-if="qs.Type==='input' || qs.Type==='number'"> <template v-if="qs.Type==='input' || qs.Type==='number'">
<el-input <el-input
v-if="qs.Type==='input' || qs.Type==='number'" v-if="qs.Type==='input' || qs.Type==='number'"
v-model="questionForm[qs.Id]" v-model="qsForm[qs.Id]"
:disabled="!isCurrentTask || readingTaskState>=2 || qs.QuestionMark === 0 || qs.QuestionMark === 1 || qs.QuestionMark === 2 || qs.QuestionMark === 5 || (qs.QuestionMark === 6 && (isCurrentTaskAdd === 'False' || (isCurrentTaskAdd === 'True' && !questionForm.IsCanEditPosition) || !!answer.SplitOrMergeLesionName))|| (qs.QuestionMark === 8 && (isCurrentTaskAdd === 'False' || !!answer.SplitOrMergeLesionName) && lesionType !== 2) || (qs.QuestionMark === 10 && (isCurrentTaskAdd === 'False' || !!answer.SplitOrMergeLesionName))" :disabled="!isCurrentTask || readingTaskState>=2 || qs.QuestionMark === 0 || qs.QuestionMark === 1 || qs.QuestionMark === 2 || qs.QuestionMark === 5 || (qs.QuestionMark === 6 && (isCurrentTaskAdd === 'False' || (isCurrentTaskAdd === 'True' && !questionForm.IsCanEditPosition) || !!answer.SplitOrMergeLesionName))|| (qs.QuestionMark === 8 && (isCurrentTaskAdd === 'False' || !!answer.SplitOrMergeLesionName) && lesionType !== 2) || (qs.QuestionMark === 10 && (isCurrentTaskAdd === 'False' || !!answer.SplitOrMergeLesionName))"
@change="((val)=>{formItemChange(val, qs)})" @change="((val)=>{formItemChange(val, qs)})"
> >
@ -61,7 +62,7 @@
<!-- 多行文本输入框 --> <!-- 多行文本输入框 -->
<el-input <el-input
v-if="qs.Type==='textarea'" v-if="qs.Type==='textarea'"
v-model="questionForm[qs.Id]" v-model="qsForm[qs.Id]"
type="textarea" type="textarea"
:autosize="{ minRows: 2, maxRows: 4}" :autosize="{ minRows: 2, maxRows: 4}"
:disabled="!isCurrentTask || readingTaskState>=2" :disabled="!isCurrentTask || readingTaskState>=2"
@ -70,7 +71,7 @@
<!-- 下拉框 --> <!-- 下拉框 -->
<el-select <el-select
v-if="qs.Type==='select'" v-if="qs.Type==='select'"
v-model="questionForm[qs.Id]" v-model="qsForm[qs.Id]"
filterable filterable
:placeholder="qs.QuestionMark === 8 ? $t('common:placeholder:selectorsearch') : qs.QuestionMark === 2 ? '' : $t('common:placeholder:select')" :placeholder="qs.QuestionMark === 8 ? $t('common:placeholder:selectorsearch') : qs.QuestionMark === 2 ? '' : $t('common:placeholder:select')"
:disabled="!isCurrentTask || readingTaskState>=2 || qs.QuestionMark === 0 || qs.QuestionMark === 1 || qs.QuestionMark === 2 || qs.QuestionMark === 5 || (qs.QuestionMark === 6 && (isCurrentTaskAdd === 'False' || (isCurrentTaskAdd === 'True' && !questionForm.IsCanEditPosition) || !!answer.SplitOrMergeLesionName))|| (qs.QuestionMark === 8 && (isCurrentTaskAdd === 'False'|| !!answer.SplitOrMergeLesionName)) || (qs.QuestionMark === 10 && (isCurrentTaskAdd === 'False' || (isCurrentTaskAdd === 'True' && !questionForm.IsCanEditPosition) || !!answer.SplitOrMergeLesionName))" :disabled="!isCurrentTask || readingTaskState>=2 || qs.QuestionMark === 0 || qs.QuestionMark === 1 || qs.QuestionMark === 2 || qs.QuestionMark === 5 || (qs.QuestionMark === 6 && (isCurrentTaskAdd === 'False' || (isCurrentTaskAdd === 'True' && !questionForm.IsCanEditPosition) || !!answer.SplitOrMergeLesionName))|| (qs.QuestionMark === 8 && (isCurrentTaskAdd === 'False'|| !!answer.SplitOrMergeLesionName)) || (qs.QuestionMark === 10 && (isCurrentTaskAdd === 'False' || (isCurrentTaskAdd === 'True' && !questionForm.IsCanEditPosition) || !!answer.SplitOrMergeLesionName))"
@ -154,7 +155,7 @@
<!-- 单选 --> <!-- 单选 -->
<el-radio-group <el-radio-group
v-if="qs.Type==='radio'" v-if="qs.Type==='radio'"
v-model="questionForm[qs.id]" v-model="qsForm[qs.id]"
:disabled="!isCurrentTask || readingTaskState>=2" :disabled="!isCurrentTask || readingTaskState>=2"
> >
<el-radio <el-radio
@ -209,6 +210,15 @@ export default {
required: true required: true
} }
}, },
data() {
return {
isCurrentTaskAdd: null,
lesionType: null,
questions: [],
organList: [],
qsForm: {}
}
},
watch: { watch: {
questionForm: { questionForm: {
deep: true, deep: true,
@ -226,6 +236,9 @@ export default {
} else { } else {
this.getOrganList() this.getOrganList()
} }
for (const key in v) {
this.$set(this.qsForm, key, v[key])
}
this.isCurrentTaskAdd = v.IsCurrentTaskAdd this.isCurrentTaskAdd = v.IsCurrentTaskAdd
} }
}, },
@ -238,14 +251,6 @@ export default {
this.questions = v.TableQuestions.Questions this.questions = v.TableQuestions.Questions
} }
} }
},
},
data(){
return{
isCurrentTaskAdd: null,
lesionType: null,
questions: [],
organList: []
} }
}, },
methods: { methods: {
@ -253,20 +258,20 @@ export default {
this.$emit('lesionTypeChange', { tableId: this.tableInfo.Id, rowIndex: this.answer.RowIndex, newLesionType: v }) this.$emit('lesionTypeChange', { tableId: this.tableInfo.Id, rowIndex: this.answer.RowIndex, newLesionType: v })
}, },
formItemChange(v, qs) { formItemChange(v, qs) {
let updateArr = [] const updateArr = []
if (qs.QuestionMark === 8 && qs.RelationQuestions.length > 0) { if (qs.QuestionMark === 8 && qs.RelationQuestions.length > 0) {
// //
let index = this.organList.findIndex(item => item[qs.DataTableColumn] === v) const index = this.organList.findIndex(item => item[qs.DataTableColumn] === v)
if (index > -1) { if (index > -1) {
let selected = this.organList[index] const selected = this.organList[index]
qs.RelationQuestions.map(q => { qs.RelationQuestions.map(q => {
let val = selected[q.DataTableColumn] const val = selected[q.DataTableColumn]
updateArr.push({ questionId: q.Id, val: val, questionMark: q.QuestionMark }) updateArr.push({ questionId: q.Id, val: val, questionMark: q.QuestionMark })
}) })
updateArr.push({ questionId: 'OrganInfoId', val: selected.OrganInfoId }) updateArr.push({ questionId: 'OrganInfoId', val: selected.OrganInfoId })
updateArr.push({ questionId: 'IsCanEditPosition', val: selected.IsCanEditPosition }) updateArr.push({ questionId: 'IsCanEditPosition', val: selected.IsCanEditPosition })
} else { } else {
question.RelationQuestions.map(q => { qs.RelationQuestions.map(q => {
updateArr.push({ questionId: q.Id, val: '', questionMark: q.QuestionMark }) updateArr.push({ questionId: q.Id, val: '', questionMark: q.QuestionMark })
}) })
} }
@ -274,9 +279,9 @@ export default {
this.$emit('update', { tableId: this.tableInfo.Id, rowIndex: this.answer.RowIndex, questionMark: qs.QuestionMark, questionId: qs.Id, val: v, updateArr }) this.$emit('update', { tableId: this.tableInfo.Id, rowIndex: this.answer.RowIndex, questionMark: qs.QuestionMark, questionId: qs.Id, val: v, updateArr })
}, },
getOrganList(isLymphNodes = null) { getOrganList(isLymphNodes = null) {
let idx = this.organs.findIndex(i => i.LesionType === this.questionForm.LesionType) const idx = this.organs.findIndex(i => i.LesionType === this.questionForm.LesionType)
if (idx > -1) { if (idx > -1) {
let arr = this.organs[idx].OrganList const arr = this.organs[idx].OrganList
if (!isNaN(parseInt(isLymphNodes))) { if (!isNaN(parseInt(isLymphNodes))) {
this.organList = arr.filter((item) => item.IsLymphNodes === parseInt(isLymphNodes)) this.organList = arr.filter((item) => item.IsLymphNodes === parseInt(isLymphNodes))

View File

@ -362,7 +362,7 @@ export default {
this.$set(this.innerFormData[tableKey], 'LesionState', null) this.$set(this.innerFormData[tableKey], 'LesionState', null)
this.$set(this.innerFormData[tableKey], 'LesionPart', null) this.$set(this.innerFormData[tableKey], 'LesionPart', null)
this.$set(this.innerFormData[tableKey], 'LesionOrgan', null) this.$set(this.innerFormData[tableKey], 'LesionOrgan', null)
this.$set(this.innerFormData[tableKey], 'IntrahepaticLesion', null) this.$set(this.innerFormData[tableKey], 'IntrahepaticLesion', 0)
this.$set(this.innerFormData[tableKey], 'LesionName', null) this.$set(this.innerFormData[tableKey], 'LesionName', null)
this.$set(this.innerFormData[tableKey], 'MeasureData', null) this.$set(this.innerFormData[tableKey], 'MeasureData', null)
this.$set(this.innerFormData[tableKey], 'TableId', tableKey) this.$set(this.innerFormData[tableKey], 'TableId', tableKey)
@ -376,6 +376,7 @@ export default {
const stateId = this.getQuestionId(7, table.TableQuestions.Questions) const stateId = this.getQuestionId(7, table.TableQuestions.Questions)
const partId = this.getQuestionId(8, table.TableQuestions.Questions) const partId = this.getQuestionId(8, table.TableQuestions.Questions)
const intrahepaticLesionId = this.getQuestionId(21, table.TableQuestions.Questions) const intrahepaticLesionId = this.getQuestionId(21, table.TableQuestions.Questions)
this.$set(this.innerFormData[tableKey], intrahepaticLesionId, 0)
table.TableQuestions.Answers.forEach((answer, index) => { table.TableQuestions.Answers.forEach((answer, index) => {
this.$set(this.innerFormData, `${tableKey}_${answer.RowIndex}`, {}) this.$set(this.innerFormData, `${tableKey}_${answer.RowIndex}`, {})
this.$set(this.innerFormData[`${tableKey}_${answer.RowIndex}`], 'LesionName', this.getLesionName(table.OrderMark, answer.RowIndex)) this.$set(this.innerFormData[`${tableKey}_${answer.RowIndex}`], 'LesionName', this.getLesionName(table.OrderMark, answer.RowIndex))
@ -1342,6 +1343,15 @@ export default {
this.$set(this.innerFormData[`${obj.tableId}_${obj.rowIndex}`], 'IsLymphNodes', i.val) this.$set(this.innerFormData[`${obj.tableId}_${obj.rowIndex}`], 'IsLymphNodes', i.val)
} else if (i.questionMark === 5) { } else if (i.questionMark === 5) {
this.$set(this.innerFormData[`${obj.tableId}_${obj.rowIndex}`], 'LesionOrgan', i.val) this.$set(this.innerFormData[`${obj.tableId}_${obj.rowIndex}`], 'LesionOrgan', i.val)
if (i.val !== '肝脏' && i.val !== 'Liver') {
this.$set(this.innerFormData[`${obj.tableId}_${obj.rowIndex}`], 'IntrahepaticLesion', 0)
const targetTable = this.tableQuestions[0].Childrens.find(
child => child.Id === obj.tableId
)
if (typeof targetTable !== 'object') return
const intrahepaticLesionId = this.getQuestionId(21, targetTable.TableQuestions.Questions)
this.$set(this.innerFormData[`${obj.tableId}_${obj.rowIndex}`], intrahepaticLesionId, 0)
}
if (innerForm.LesionType === 2) { if (innerForm.LesionType === 2) {
this.setNewTargetState(obj.tableId, obj.rowIndex) this.setNewTargetState(obj.tableId, obj.rowIndex)
} }

View File

@ -42,7 +42,7 @@
:key="qs.Id" :key="qs.Id"
:label="`${qs.QuestionName}`" :label="`${qs.QuestionName}`"
:prop="qs.Id" :prop="qs.Id"
:title="(qs.QuestionMark === 0 && (questionForm.LesionOrgan === '肝脏' || questionForm.LesionOrgan === 'Liver') && (lesionType === 0 || lesionType === 1) && questionForm.IntrahepaticLesion) ? $t('trials:mRecist:warnning:msg1') : ''" :title="(qs.QuestionMark === 0 && (questionForm.LesionOrgan === '肝脏' || questionForm.LesionOrgan === 'Liver') && (lesionType === 0 || lesionType === 1 || lesionType === 2) && questionForm.IntrahepaticLesion) ? $t('trials:mRecist:warnning:msg1') : ''"
:rules="[ :rules="[
{ required: (qs.IsRequired === 0 || (qs.IsRequired ===1 && qs.RelevanceId && (questionForm[qs.RelevanceId] === qs.RelevanceValue)) || (qs.QuestionMark === 6 && questionForm.IsCanEditPosition === true) || (questionForm.IsCanEditPosition && qs.QuestionMark === 10) || (qs.QuestionMark === 21 && (questionForm.LesionOrgan === '肝脏' || questionForm.LesionOrgan === 'Liver') && (lesionType === 0 || lesionType === 1 || lesionType === 2)) || (qs.QuestionMark === 0 && (questionForm.LesionOrgan === '肝脏' || questionForm.LesionOrgan === 'Liver') && (lesionType === 0 || lesionType === 1 || lesionType === 2))) && qs.Type!=='group' && qs.Type!=='summary', { required: (qs.IsRequired === 0 || (qs.IsRequired ===1 && qs.RelevanceId && (questionForm[qs.RelevanceId] === qs.RelevanceValue)) || (qs.QuestionMark === 6 && questionForm.IsCanEditPosition === true) || (questionForm.IsCanEditPosition && qs.QuestionMark === 10) || (qs.QuestionMark === 21 && (questionForm.LesionOrgan === '肝脏' || questionForm.LesionOrgan === 'Liver') && (lesionType === 0 || lesionType === 1 || lesionType === 2)) || (qs.QuestionMark === 0 && (questionForm.LesionOrgan === '肝脏' || questionForm.LesionOrgan === 'Liver') && (lesionType === 0 || lesionType === 1 || lesionType === 2))) && qs.Type!=='group' && qs.Type!=='summary',
message:['radio', 'select', 'checkbox'].includes(qs.Type) ? $t('common:ruleMessage:select') : $t('common:ruleMessage:specify'), trigger: ['blur','change']}, message:['radio', 'select', 'checkbox'].includes(qs.Type) ? $t('common:ruleMessage:select') : $t('common:ruleMessage:specify'), trigger: ['blur','change']},
@ -77,7 +77,7 @@
v-model="qsForm[qs.Id]" v-model="qsForm[qs.Id]"
filterable filterable
:placeholder="qs.QuestionMark === 8 ? $t('common:placeholder:selectorsearch') : qs.QuestionMark === 2 ? '' : $t('common:placeholder:select')" :placeholder="qs.QuestionMark === 8 ? $t('common:placeholder:selectorsearch') : qs.QuestionMark === 2 ? '' : $t('common:placeholder:select')"
:disabled="!isCurrentTask || readingTaskState>=2 || qs.QuestionMark === 0 || qs.QuestionMark === 1 || qs.QuestionMark === 2 || qs.QuestionMark === 5 || (qs.QuestionMark === 6 && (isCurrentTaskAdd === 'False' || (isCurrentTaskAdd === 'True' && !questionForm.IsCanEditPosition) || !!answer.SplitOrMergeLesionName))|| (qs.QuestionMark === 8 && (isCurrentTaskAdd === 'False'|| !!answer.SplitOrMergeLesionName)) || (qs.QuestionMark === 10 && (isCurrentTaskAdd === 'False' || (isCurrentTaskAdd === 'True' && !questionForm.IsCanEditPosition) || !!answer.SplitOrMergeLesionName))" :disabled="!isCurrentTask || readingTaskState>=2 || qs.QuestionMark === 0 || qs.QuestionMark === 1 || qs.QuestionMark === 2 || qs.QuestionMark === 5 || (qs.QuestionMark === 6 && (isCurrentTaskAdd === 'False' || (isCurrentTaskAdd === 'True' && !questionForm.IsCanEditPosition) || !!answer.SplitOrMergeLesionName))|| (qs.QuestionMark === 8 && (isCurrentTaskAdd === 'False'|| !!answer.SplitOrMergeLesionName)) || (qs.QuestionMark === 10 && (isCurrentTaskAdd === 'False' || (isCurrentTaskAdd === 'True' && !questionForm.IsCanEditPosition) || !!answer.SplitOrMergeLesionName)) || (qs.QuestionMark === 21 && (isCurrentTaskAdd === 'False'|| !!answer.SplitOrMergeLesionName)) || (questionForm.LesionOrgan && questionForm.LesionOrgan !== '肝脏' && questionForm.LesionOrgan !== 'Liver' && qs.QuestionMark === 21)"
@change="((val)=>{formItemChange(val, qs)})" @change="((val)=>{formItemChange(val, qs)})"
> >
<template v-if="qs.QuestionMark === 8" #prefix> <template v-if="qs.QuestionMark === 8" #prefix>