阅片前对影像进行靶段标注
continuous-integration/drone/push Build encountered an error Details

uat
wangxiaoshuang 2025-11-19 15:51:10 +08:00
parent 64cec20d7d
commit 20c257be4f
7 changed files with 424 additions and 276 deletions

View File

@ -4281,4 +4281,13 @@ export function deleteAuditRecord(auditRecordId) {
url: `/AuditDocument/deleteAuditRecord/${auditRecordId}`, url: `/AuditDocument/deleteAuditRecord/${auditRecordId}`,
method: 'delete' method: 'delete'
}) })
}
// 靶段标注列表
export function getTrialSubjectVisitMarkList(data) {
return request({
url: `/DownloadAndUpload/getTrialSubjectVisitMarkList`,
method: 'post',
data
})
} }

View File

@ -34,9 +34,12 @@
<!--受试者--> <!--受试者-->
<el-table-column :label="$t('download:table:subjectCode')" min-width="130" prop="SubjectCode" <el-table-column :label="$t('download:table:subjectCode')" min-width="130" prop="SubjectCode"
show-overflow-tooltip /> show-overflow-tooltip />
<!--访视名称-->
<el-table-column prop="VisitName" :label="$t('download:table:VisitName')" sortable="custom"
v-if="IsImageSegment" />
<!--任务名称--> <!--任务名称-->
<el-table-column :label="$t('download:table:taskName')" min-width="130" show-overflow-tooltip prop="TaskBlindName" <el-table-column :label="$t('download:table:taskName')" min-width="130" show-overflow-tooltip prop="TaskBlindName"
sortable /> sortable v-else />
<!--检查类型--> <!--检查类型-->
<el-table-column :label="$t('download:table:studyType')" min-width="130" show-overflow-tooltip prop="IsDicom" <el-table-column :label="$t('download:table:studyType')" min-width="130" show-overflow-tooltip prop="IsDicom"
sortable> sortable>
@ -126,6 +129,10 @@ export default {
return {} return {}
}, },
}, },
IsImageSegment: {
type: Boolean,
default: false,
}
}, },
data() { data() {
return { return {
@ -157,6 +164,7 @@ export default {
this.bodyPart.Bodypart = await this.$getBodyPart(this.$route.query.trialId) this.bodyPart.Bodypart = await this.$getBodyPart(this.$route.query.trialId)
this.getList() this.getList()
this.title = `Download Images${this.SubjectCode}${this.Criterion.TrialReadingCriterionName}` this.title = `Download Images${this.SubjectCode}${this.Criterion.TrialReadingCriterionName}`
if (this.IsImageSegment) this.title = `Download Images${this.SubjectCode}`
}, },
beforeDestroy() { beforeDestroy() {
store.dispatch('trials/setUnLock', false) store.dispatch('trials/setUnLock', false)
@ -175,6 +183,12 @@ export default {
if (this.TaskId) { if (this.TaskId) {
this.searchData.VisitTaskId = this.TaskId this.searchData.VisitTaskId = this.TaskId
} }
if (this.IsImageSegment) {
this.searchData.IsImageSegmentLabel = true
}
else if (this.Criterion.CriterionType == 19 || this.Criterion.CriterionType == 20) {
this.searchData.IsImageSegmentLabel = false
}
this.loading = true this.loading = true
let res = await getSubjectImageDownloadSelectList(this.searchData) let res = await getSubjectImageDownloadSelectList(this.searchData)
this.loading = false this.loading = false
@ -257,6 +271,12 @@ export default {
data.NoneDicomStudyIdList = [...data.NoneDicomStudyIdList, ...arr] data.NoneDicomStudyIdList = [...data.NoneDicomStudyIdList, ...arr]
} }
} }
if (this.IsImageSegment) {
data.IsImageSegmentLabel = true
}
else if (this.Criterion.CriterionType == 19 || this.Criterion.CriterionType == 20) {
data.IsImageSegmentLabel = false
}
this.btnLoading = true this.btnLoading = true
let res = await getIRReadingDownloadStudyInfo(data) let res = await getIRReadingDownloadStudyInfo(data)
this.btnLoading = false this.btnLoading = false
@ -286,13 +306,18 @@ export default {
formatDownloadFile(list) { formatDownloadFile(list) {
let files = [], let files = [],
name = `${list[0].SubjectCode}_${new Date().getTime()}.zip` name = `${list[0].SubjectCode}_${new Date().getTime()}.zip`
if (this.IsReadingTaskViewInOrder === 1) { if (this.IsImageSegment) {
name = `${list[0].SubjectCode}_${list[0].TaskBlindName}.zip` name = `${list[0].SubjectCode}_${list[0].VisitName}.zip`
} } else {
if (this.IsReadingTaskViewInOrder === 0) { if (this.IsReadingTaskViewInOrder === 1) {
// name = `${list[0].TaskBlindName}.zip` name = `${list[0].SubjectCode}_${list[0].TaskBlindName}.zip`
name = `${list[0].SubjectCode}_${list[0].TaskBlindName}.zip` }
if (this.IsReadingTaskViewInOrder === 0) {
// name = `${list[0].TaskBlindName}.zip`
name = `${list[0].SubjectCode}_${list[0].TaskBlindName}.zip`
}
} }
list.forEach((data) => { list.forEach((data) => {
if (data.StudyList && data.StudyList.length > 0) { if (data.StudyList && data.StudyList.length > 0) {
let StudyList = data.StudyList let StudyList = data.StudyList
@ -304,7 +329,14 @@ export default {
}/DICOMDIR`, }/DICOMDIR`,
url: this.OSSclientConfig.basePath + study.StudyDIRPath, url: this.OSSclientConfig.basePath + study.StudyDIRPath,
} }
if (this.IsReadingTaskViewInOrder === 0) { if (this.IsImageSegment) {
obj = {
name: `${data.SubjectCode}/${data.VisitName
}/${this.$fd('IsDicom', true)}/${study.StudyCode
}/DICOMDIR`,
url: this.OSSclientConfig.basePath + study.StudyDIRPath,
}
} else if (this.IsReadingTaskViewInOrder === 0) {
obj = { obj = {
name: `${data.TaskBlindName}/${this.$fd( name: `${data.TaskBlindName}/${this.$fd(
'IsDicom', 'IsDicom',
@ -330,7 +362,15 @@ export default {
url: this.OSSclientConfig.basePath + instance.Path, url: this.OSSclientConfig.basePath + instance.Path,
IsEncapsulated: instance.IsEncapsulated IsEncapsulated: instance.IsEncapsulated
} }
if (this.IsReadingTaskViewInOrder === 0) { if (this.IsImageSegment) {
obj = {
name: `${data.SubjectCode}/${data.VisitName
}/${this.$fd('IsDicom', true)}/${study.StudyCode
}/IMAGE/${fileName}`,
url: this.OSSclientConfig.basePath + instance.Path,
IsEncapsulated: instance.IsEncapsulated
}
} else if (this.IsReadingTaskViewInOrder === 0) {
obj = { obj = {
name: `${data.TaskBlindName}/${this.$fd( name: `${data.TaskBlindName}/${this.$fd(
'IsDicom', 'IsDicom',
@ -360,7 +400,16 @@ export default {
)}/${study.StudyCode}/${item.FileName}`, )}/${study.StudyCode}/${item.FileName}`,
url: this.OSSclientConfig.basePath + item.Path, url: this.OSSclientConfig.basePath + item.Path,
} }
if (this.IsReadingTaskViewInOrder === 0) { if (this.IsImageSegment) {
obj = {
name: `${data.SubjectCode}/${data.VisitName}/${this.$fd(
'IsDicom',
false
)}/${study.StudyCode}/${item.FileName}`,
url: this.OSSclientConfig.basePath + item.Path,
}
}
else if (this.IsReadingTaskViewInOrder === 0) {
obj = { obj = {
name: `${data.TaskBlindName}/${this.$fd( name: `${data.TaskBlindName}/${this.$fd(
'IsDicom', 'IsDicom',
@ -390,6 +439,9 @@ export default {
}, },
handleOpenDialog(item) { handleOpenDialog(item) {
this.model_cfg.title = `${item.SubjectCode || ''} > ${item.TaskBlindName}` this.model_cfg.title = `${item.SubjectCode || ''} > ${item.TaskBlindName}`
if (this.IsImageSegment) {
this.model_cfg.title = `${item.SubjectCode || ''} > ${item.VisitName}`
}
if (item.IsDicom) { if (item.IsDicom) {
this.modelList = item.DicomStudyList this.modelList = item.DicomStudyList
} else { } else {

View File

@ -363,12 +363,17 @@ export default {
type: Number, type: Number,
default: 0, default: 0,
}, },
IsImageSegment: {
type: Boolean,
default: false,
}
}, },
components: { components: {
'study-view': studyView, 'study-view': studyView,
}, },
data() { data() {
return { return {
loading: false,
list: [], list: [],
StudyInstanceUidList: [], StudyInstanceUidList: [],
SopInstanceUidList: [], SopInstanceUidList: [],
@ -439,6 +444,12 @@ export default {
if (this.TaskId) { if (this.TaskId) {
params.VisitTaskId = this.TaskId params.VisitTaskId = this.TaskId
} }
if (this.IsImageSegment) {
this.searchData.IsImageSegmentLabel = true
}
else if (this.Criterion.CriterionType == 19 || this.Criterion.CriterionType == 20) {
this.searchData.IsImageSegmentLabel = false
}
this.loading = true this.loading = true
let res = await getSubjectImageUploadList(params) let res = await getSubjectImageUploadList(params)
this.loading = false this.loading = false
@ -536,6 +547,9 @@ export default {
if (this.VisitTaskId) { if (this.VisitTaskId) {
data.VisitTaskId = this.VisitTaskId data.VisitTaskId = this.VisitTaskId
} }
if (this.IsImageSegment) {
data.IsImageSegmentLabel = true
}
let res = await verifyIRStudyAllowUpload(data) let res = await verifyIRStudyAllowUpload(data)
if (res.IsSuccess) { if (res.IsSuccess) {
return res.Result return res.Result
@ -562,8 +576,9 @@ export default {
confirmMessage = null confirmMessage = null
for (let i = 0; i < checkFiles.length; i++) { for (let i = 0; i < checkFiles.length; i++) {
let item = checkFiles[i] let item = checkFiles[i]
var dicom = await parseDicom(item, 'StudyInstanceUid') var dicom = await parseDicom(item, ['StudyInstanceUid', 'Modality'])
if (!dicom.StudyInstanceUid) continue if (!dicom.StudyInstanceUid) continue
if (this.IsImageSegment && dicom.Modality !== 'US') continue
let has = true, let has = true,
has2 = false, has2 = false,
has3 = false has3 = false
@ -1153,6 +1168,16 @@ export default {
o.instanceUid + o.instanceUid +
params.trialId params.trialId
)}` )}`
if (this.IsImageSegment) {
path = `/${params.trialId}/Image/${params.subjectId
}/${params.subjectVisitId}/AnnotationImage/${dicomInfo.visitTaskId
}/${scope.getGuid(
dicomInfo.studyUid +
v.seriesUid +
o.instanceUid +
params.trialId
)}`
}
if (scope.isClose) return if (scope.isClose) return
let res = await dcmUpload( let res = await dcmUpload(
{ {
@ -1186,6 +1211,9 @@ export default {
o.imageRows o.imageRows
) )
let thumbnailPath = `/${params.trialId}/Image/${params.subjectId}/${params.subjectVisitId}/${dicomInfo.visitTaskId}/${dicomInfo.studyUid}/${v.seriesUid}.jpg` let thumbnailPath = `/${params.trialId}/Image/${params.subjectId}/${params.subjectVisitId}/${dicomInfo.visitTaskId}/${dicomInfo.studyUid}/${v.seriesUid}.jpg`
if (this.IsImageSegment) {
thumbnailPath = `/${params.trialId}/Image/${params.subjectId}/${params.subjectVisitId}/AnnotationImage/${dicomInfo.visitTaskId}/${dicomInfo.studyUid}/${v.seriesUid}.jpg`
}
let OSSclient = scope.OSSclient let OSSclient = scope.OSSclient
let seriesRes = await OSSclient.put( let seriesRes = await OSSclient.put(
thumbnailPath, thumbnailPath,
@ -1277,6 +1305,9 @@ export default {
let text = JSON.stringify(Record) let text = JSON.stringify(Record)
let logJsonBlob = scope.generateTxtFile(text) let logJsonBlob = scope.generateTxtFile(text)
let logJsonObjectName = `/${params.trialId}/Image/${params.subjectId}/${params.subjectVisitId}/${dicomInfo.visitTaskId}/${dicomInfo.studyUid}/${params.studyMonitorId}.txt` let logJsonObjectName = `/${params.trialId}/Image/${params.subjectId}/${params.subjectVisitId}/${dicomInfo.visitTaskId}/${dicomInfo.studyUid}/${params.studyMonitorId}.txt`
if (this.IsImageSegment) {
logJsonObjectName = `/${params.trialId}/Image/${params.subjectId}/${params.subjectVisitId}/AnnotationImage/${dicomInfo.visitTaskId}/${dicomInfo.studyUid}/${params.studyMonitorId}.txt`
}
let logRes let logRes
try { try {
logRes = await scope.OSSclient.put( logRes = await scope.OSSclient.put(
@ -1305,6 +1336,9 @@ export default {
v.instanceList[0].imageRows v.instanceList[0].imageRows
) )
let thumbnailPath = `/${params.trialId}/Image/${params.subjectId}/${params.subjectVisitId}/${dicomInfo.studyUid}/${v.seriesUid}.jpg` let thumbnailPath = `/${params.trialId}/Image/${params.subjectId}/${params.subjectVisitId}/${dicomInfo.studyUid}/${v.seriesUid}.jpg`
if (this.IsImageSegment) {
thumbnailPath = `/${params.trialId}/Image/${params.subjectId}/${params.subjectVisitId}/AnnotationImage/${dicomInfo.studyUid}/${v.seriesUid}.jpg`
}
let OSSclient = scope.OSSclient let OSSclient = scope.OSSclient
try { try {
let seriesRes = await OSSclient.put(thumbnailPath, blob) let seriesRes = await OSSclient.put(thumbnailPath, blob)
@ -1322,6 +1356,9 @@ export default {
if (scope.isClose) return false if (scope.isClose) return false
console.log(params) console.log(params)
params.VisitTaskId = dicomInfo.visitTaskId params.VisitTaskId = dicomInfo.visitTaskId
if (this.IsImageSegment) {
params.IsImageSegmentLabel = true
}
addOrUpdateArchiveTaskStudy(params) addOrUpdateArchiveTaskStudy(params)
.then((res) => { .then((res) => {
if (dicomInfo.failedFileCount === dicomInfo.fileCount) { if (dicomInfo.failedFileCount === dicomInfo.fileCount) {

View File

@ -1,40 +1,17 @@
<template> <template>
<el-dialog <el-dialog :visible.sync="visible" :fullscreen="true" :close-on-click-modal="false" :before-close="beforeClose"
:visible.sync="visible" :append-to-body="true" class="uploadDicomAndNonedicom">
:fullscreen="true"
:close-on-click-modal="false"
:before-close="beforeClose"
:append-to-body="true"
class="uploadDicomAndNonedicom"
>
<span slot="title">{{ title }}</span> <span slot="title">{{ title }}</span>
<el-tabs type="border-card" v-model="activeName"> <el-tabs type="border-card" v-model="activeName">
<el-tab-pane <el-tab-pane :label="$t('uploadDicomAndNonedicom:label:dicom')" name="dicom">
:label="$t('uploadDicomAndNonedicom:label:dicom')" <dicomFile v-if="activeName === 'dicom'" :SubjectId="SubjectId" :SubjectCode="SubjectCode"
name="dicom" :Criterion="Criterion" :TaskId="VisitTaskId" :isUpload.sync="isUpload"
> :isReadingTaskViewInOrder="isReadingTaskViewInOrder" :IsImageSegment="IsImageSegment" />
<dicomFile
v-if="activeName === 'dicom'"
:SubjectId="SubjectId"
:SubjectCode="SubjectCode"
:Criterion="Criterion"
:TaskId="VisitTaskId"
:isUpload.sync="isUpload"
:isReadingTaskViewInOrder="isReadingTaskViewInOrder"
/>
</el-tab-pane> </el-tab-pane>
<el-tab-pane <el-tab-pane :label="$t('uploadDicomAndNonedicom:label:nonedicom')" name="nonedicom">
:label="$t('uploadDicomAndNonedicom:label:nonedicom')" <nonedicomFile v-if="activeName === 'nonedicom'" :SubjectId="SubjectId" :SubjectCode="SubjectCode"
name="nonedicom" :Criterion="Criterion" :VisitTaskId="VisitTaskId" :isUpload.sync="isUpload"
> :IsImageSegment="IsImageSegment" />
<nonedicomFile
v-if="activeName === 'nonedicom'"
:SubjectId="SubjectId"
:SubjectCode="SubjectCode"
:Criterion="Criterion"
:VisitTaskId="VisitTaskId"
:isUpload.sync="isUpload"
/>
</el-tab-pane> </el-tab-pane>
</el-tabs> </el-tabs>
</el-dialog> </el-dialog>
@ -74,6 +51,10 @@ export default {
type: Number, type: Number,
default: 0, default: 0,
}, },
IsImageSegment: {
type: Boolean,
default: false,
}
}, },
data() { data() {
return { return {
@ -84,6 +65,7 @@ export default {
}, },
mounted() { mounted() {
this.title = `Upload Images${this.SubjectCode}${this.Criterion.TrialReadingCriterionName}` this.title = `Upload Images${this.SubjectCode}${this.Criterion.TrialReadingCriterionName}`
if (this.IsImageSegment) this.title = `Upload Images${this.SubjectCode}`
store.dispatch('trials/setUnLock', true) store.dispatch('trials/setUnLock', true)
}, },
methods: { methods: {
@ -103,11 +85,13 @@ export default {
::v-deep.el-tabs--left .el-tabs__header.is-left { ::v-deep.el-tabs--left .el-tabs__header.is-left {
margin-right: 0; margin-right: 0;
} }
.uploadDicomAndNonedicom { .uploadDicomAndNonedicom {
::v-deep.el-tabs--border-card > .el-tabs__header .el-tabs__item { ::v-deep.el-tabs--border-card>.el-tabs__header .el-tabs__item {
color: #909399; color: #909399;
} }
::v-deep.el-tabs--border-card > .el-tabs__header .el-tabs__item.is-active {
::v-deep.el-tabs--border-card>.el-tabs__header .el-tabs__item.is-active {
color: #428bca; color: #428bca;
background-color: #fff; background-color: #fff;
border-right-color: #dcdfe6; border-right-color: #dcdfe6;

View File

@ -12,8 +12,11 @@
@sort-change="handleSortByColumn" :default-sort="{ prop: 'TaskBlindName', order: 'descending' }"> @sort-change="handleSortByColumn" :default-sort="{ prop: 'TaskBlindName', order: 'descending' }">
<!--受试者--> <!--受试者-->
<el-table-column prop="SubjectCode" :label="$t('upload:nonedicom:table:subject')" /> <el-table-column prop="SubjectCode" :label="$t('upload:nonedicom:table:subject')" />
<!--访视名称-->
<el-table-column prop="VisitName" :label="$t('upload:nonedicom:table:VisitName')" sortable="custom"
v-if="IsImageSegment" />
<!--任务名称--> <!--任务名称-->
<el-table-column prop="TaskBlindName" :label="$t('upload:nonedicom:table:taskName')" sortable="custom" /> <el-table-column prop="TaskBlindName" :label="$t('upload:nonedicom:table:taskName')" sortable="custom" v-else />
<!--检查类型--> <!--检查类型-->
<el-table-column prop="Modality" :label="$t('upload:nonedicom:table:molityType')" sortable="custom"> <el-table-column prop="Modality" :label="$t('upload:nonedicom:table:molityType')" sortable="custom">
</el-table-column> </el-table-column>
@ -104,7 +107,7 @@
:title="$t('upload:nonedicom:button:preview')" @click.stop="handlePreviewNoneDicomFiles(scope.row)" /> :title="$t('upload:nonedicom:button:preview')" @click.stop="handlePreviewNoneDicomFiles(scope.row)" />
<!--上传---> <!--上传--->
<el-button circle icon="el-icon-upload2" :title="$t('upload:nonedicom:button:upload')" <el-button circle icon="el-icon-upload2" :title="$t('upload:nonedicom:button:upload')"
@click.native.prevent="handleUpload(scope.row)" /> @click.native.prevent="handleUpload(scope.row)" v-if="scope.row.Modality !== 'IVUS'" />
<!--删除---> <!--删除--->
<el-button :disabled="scope.row.UploadedFileCount <= 0 || <el-button :disabled="scope.row.UploadedFileCount <= 0 ||
scope.row.ReadingTaskState === 2 scope.row.ReadingTaskState === 2
@ -248,6 +251,10 @@ export default {
type: Boolean, type: Boolean,
default: false, default: false,
}, },
IsImageSegment: {
type: Boolean,
default: false,
},
}, },
data() { data() {
return { return {
@ -311,6 +318,12 @@ export default {
if (this.VisitTaskId) { if (this.VisitTaskId) {
this.searchData.VisitTaskId = this.VisitTaskId this.searchData.VisitTaskId = this.VisitTaskId
} }
if (this.IsImageSegment) {
this.searchData.IsImageSegmentLabel = true
}
else if (this.Criterion.CriterionType == 19 || this.Criterion.CriterionType == 20) {
this.searchData.IsImageSegmentLabel = false
}
this.loading = true this.loading = true
let res = await getIRUploadTaskNoneDicomStudyList(this.searchData) let res = await getIRUploadTaskNoneDicomStudyList(this.searchData)
this.loading = false this.loading = false
@ -534,9 +547,15 @@ export default {
let file = this.fileList.filter((item) => item.id === arr[index].id)[0] let file = this.fileList.filter((item) => item.id === arr[index].id)[0]
file.status = 1 file.status = 1
let path = `/${this.$route.query.trialId}/TaskImage/${this.currentRow.SubjectId let path = `/${this.$route.query.trialId}/TaskImage/${this.currentRow.SubjectId
}/${this.currentRow.VisitTaskId}/${this.$guid()}${file.name }/${this.currentRow.SourceSubjectVisitId}/${this.currentRow.VisitTaskId}/${this.$guid()}${file.name
.substring(file.name.lastIndexOf('.')) .substring(file.name.lastIndexOf('.'))
.toLocaleLowerCase()}` .toLocaleLowerCase()}`
if (this.IsImageSegment) {
path = `/${this.$route.query.trialId}/TaskImage/${this.currentRow.SubjectId
}/${this.currentRow.SourceSubjectVisitId}/AnnotationImage/${this.currentRow.VisitTaskId}/${this.$guid()}${file.name
.substring(file.name.lastIndexOf('.'))
.toLocaleLowerCase()}`
}
file.curPath = path file.curPath = path
const fileData = await this.fileToBlob(file.file) const fileData = await this.fileToBlob(file.file)
let res = await this.fileToOss(path, fileData, file) let res = await this.fileToOss(path, fileData, file)
@ -620,6 +639,9 @@ export default {
params.RecordPath = RecordPath.path params.RecordPath = RecordPath.path
params.FailedFileCount = RecordPath.Record.Failed.length params.FailedFileCount = RecordPath.Record.Failed.length
} }
if (this.IsImageSegment) {
params.IsImageSegmentLabel = true
}
uploadNoneDicomFile(params) uploadNoneDicomFile(params)
.then((res) => { .then((res) => {
if (!isReLoad) { if (!isReLoad) {
@ -658,7 +680,10 @@ export default {
}) })
let text = JSON.stringify(Record) let text = JSON.stringify(Record)
let logJsonBlob = this.generateTxtFile(text) let logJsonBlob = this.generateTxtFile(text)
let logJsonObjectName = `/${this.$route.query.trialId}/TaskImage/${this.currentRow.SubjectId}/${this.currentRow.VisitTaskId}/${this.studyMonitorId}.txt` let logJsonObjectName = `/${this.$route.query.trialId}/TaskImage/${this.currentRow.SubjectId}/${this.currentRow.SourceSubjectVisitId}/${this.currentRow.VisitTaskId}/${this.studyMonitorId}.txt`
if (this.IsImageSegment) {
logJsonObjectName = `/${this.$route.query.trialId}/TaskImage/${this.currentRow.SubjectId}/${this.currentRow.SourceSubjectVisitId}/AnnotationImage/${this.currentRow.VisitTaskId}/${this.studyMonitorId}.txt`
}
let logRes let logRes
try { try {
logRes = await this.OSSclient.put(logJsonObjectName, logJsonBlob) logRes = await this.OSSclient.put(logJsonObjectName, logJsonBlob)

View File

@ -0,0 +1,160 @@
<template>
<BaseContainer>
<div slot="main-container">
<el-table v-adaptive="{ bottomOffset: 75 }" :data="list" stripe height="100" @sort-change="handleSortChange"
v-loading="loading">
<el-table-column type="index" width="40" align="left" />
<el-table-column prop="IsUrgent" :label="$t('trials:consistencyCheck:table:isUrgent')"
show-overflow-tooltip min-width="100">
<template slot-scope="scope">
<el-tag :type="scope.row.IsUrgent
? 'danger' : 'primary'
">{{ $fd('YesOrNo', scope.row.IsUrgent) }}</el-tag>
</template>
</el-table-column>
<!-- 受试者编号 -->
<el-table-column prop="SubjectCode" min-width="100"
:label="$t('trials:pendingReadingTasks:table:subjectCode')" show-overflow-tooltip
sortable="custom" />
<!-- 访视数量 -->
<el-table-column prop="VisitCount" :label="$t('trials:pendingReadingTasks:table:VisitCount')"
show-overflow-tooltip />
<!-- dicom检查数量 -->
<el-table-column prop="DicomStudyCount" :label="$t('trials:pendingReadingTasks:table:DicomStudyCount')"
show-overflow-tooltip />
<!-- 非dicom检查数量 -->
<el-table-column prop="NoneDicomStudyCount"
:label="$t('trials:pendingReadingTasks:table:NoneDicomStudyCount')" show-overflow-tooltip />
<!-- 标记访视数量 -->
<el-table-column prop="MarkVisitCount" :label="$t('trials:pendingReadingTasks:table:MarkVisitCount')"
show-overflow-tooltip />
<!-- 标记dicom检查数量 -->
<el-table-column prop="MarkDicomStudyCount"
:label="$t('trials:pendingReadingTasks:table:MarkDicomStudyCount')" show-overflow-tooltip />
<!-- 标记非dicom检查数量 -->
<el-table-column prop="MarkNoneDicomStudyCount"
:label="$t('trials:pendingReadingTasks:table:MarkNoneDicomStudyCount')" show-overflow-tooltip />
<el-table-column :label="$t('common:action:action')" width="250" fixed="right">
<template slot-scope="scope">
<!-- 阅片 -->
<!-- <el-button :disabled="scope.row.ExistReadingApply" circle :title="scope.row.ExistReadingApply
? $t(
'trials:pendingReadingTasks:button:ExistReadingApply'
)
: $t('trials:pendingReadingTasks:button:review')
" icon="el-icon-edit-outline" @click="handleReadImage(scope.row)" /> -->
<!-- 上传 -->
<el-button v-hasPermi="['role:ir']" circle icon="el-icon-upload2"
:title="$t('trials:pendingReadingTasks:button:upload')"
@click="openUploadImage(scope.row, 'upload')" />
<!-- 下载 -->
<el-button v-hasPermi="['role:ir']" circle icon="el-icon-download"
:title="$t('trials:pendingReadingTasks:button:download')"
@click="openUploadImage(scope.row, 'download')" />
</template>
</el-table-column>
</el-table>
<pagination class="page" :total="total" :page.sync="searchData.PageIndex" :limit.sync="searchData.PageSize"
@pagination="getList" />
</div>
<upload-dicom-and-nonedicom v-if="uploadImageVisible" :SubjectId="uploadSubjectId"
:SubjectCode="uploadSubjectCode" :Criterion="uploadTrialCriterion" :visible.sync="uploadImageVisible"
:IsImageSegment="true" />
<download-dicom-and-nonedicom v-if="downloadImageVisible" :SubjectId="uploadSubjectId"
:SubjectCode="uploadSubjectCode" :Criterion="uploadTrialCriterion" :visible.sync="downloadImageVisible"
:IsImageSegment="true" />
</BaseContainer>
</template>
<script>
import BaseContainer from '@/components/BaseContainer'
import uploadDicomAndNonedicom from '@/components/uploadDicomAndNonedicom'
import downloadDicomAndNonedicom from '@/components/downloadDicomAndNonedicom'
import Pagination from '@/components/Pagination'
import { getTrialSubjectVisitMarkList } from "@/api/trials"
const searchDataDefault = () => {
return {
SubjectCode: '',
PageIndex: 1,
PageSize: 20,
}
}
export default {
name: "TargetSection",
components: {
BaseContainer,
Pagination,
'upload-dicom-and-nonedicom': uploadDicomAndNonedicom,
'download-dicom-and-nonedicom': downloadDicomAndNonedicom,
},
props: {
TrialReadingCriterionId: {
type: String,
default: ''
},
trialCriterionList: {
type: Array,
default: () => {
return []
}
}
},
data() {
return {
searchData: searchDataDefault(),
loading: false,
list: [],
total: 0,
//
downloadImageVisible: false,
uploadImageVisible: false,
uploadSubjectId: null,
uploadSubjectCode: null,
uploadTrialCriterion: {},
uploadStatus: 'upload',
}
},
mounted() {
this.getList()
},
methods: {
async getList() {
try {
this.searchData.TrialId = this.$route.query.trialId
this.searchData.TrialReadingCriterionId = this.TrialReadingCriterionId
this.loading = true
let res = await getTrialSubjectVisitMarkList(this.searchData)
this.loading = false
if (res.IsSuccess) {
this.list = res.Result.CurrentPageData
this.total = res.Result.TotalCount
}
} catch (err) {
this.loading = false
console.log(err)
}
},
//
handleSortChange(column) {
if (column.order === 'ascending') {
this.searchData.Asc = true
} else {
this.searchData.Asc = false
}
this.searchData.SortField = column.prop
this.searchData.PageIndex = 1
this.getList()
},
//
openUploadImage(item, status) {
this.uploadSubjectCode = item.SubjectCode
this.uploadSubjectId = item.SubjectId
let trialCriterion = this.trialCriterionList.find(item => item.TrialReadingCriterionId === this.TrialReadingCriterionId)
this.uploadTrialCriterion = trialCriterion
this.uploadStatus = status
this[`${status}ImageVisible`] = true
},
}
}
</script>
<style lang="scss" scoped></style>

View File

@ -1,272 +1,152 @@
<template> <template>
<BaseContainer <BaseContainer v-loading="loading" class="reading-task">
v-loading="loading" <el-tabs v-if="TrialReadingCriterionId" v-model="TrialReadingCriterionId" type="border-card">
class="reading-task" <el-tab-pane v-for="item of trialCriterionList" :key="item.TrialReadingCriterionId"
> :label="item.TrialReadingCriterionName" :name="item.TrialReadingCriterionId">
<el-tabs <div v-if="
v-if="TrialReadingCriterionId" (isReadingTaskViewInOrder === 1 ||
v-model="TrialReadingCriterionId" isReadingTaskViewInOrder === 2) &&
type="border-card" TrialReadingCriterionId === item.TrialReadingCriterionId
> ">
<el-tab-pane
v-for="item of trialCriterionList"
:key="item.TrialReadingCriterionId"
:label="item.TrialReadingCriterionName"
:name="item.TrialReadingCriterionId"
>
<div
v-if="
(isReadingTaskViewInOrder === 1 ||
isReadingTaskViewInOrder === 2) &&
TrialReadingCriterionId === item.TrialReadingCriterionId
"
>
<div slot="search-container"> <div slot="search-container">
<el-form :inline="true"> <el-form :inline="true">
<!-- 受试者编号 --> <!-- 受试者编号 -->
<el-form-item <el-form-item :label="$t('trials:pendingReadingTasks:table:subjectCode')">
:label="$t('trials:pendingReadingTasks:table:subjectCode')" <el-input v-model="searchData.SubjectCode" style="width: 130px" clearable />
>
<el-input
v-model="searchData.SubjectCode"
style="width: 130px"
clearable
/>
</el-form-item> </el-form-item>
<el-form-item> <el-form-item>
<!-- 查询 --> <!-- 查询 -->
<el-button <el-button type="primary" icon="el-icon-search" @click="handleSearch">
type="primary"
icon="el-icon-search"
@click="handleSearch"
>
{{ $t('common:button:search') }} {{ $t('common:button:search') }}
</el-button> </el-button>
<!-- 重置 --> <!-- 重置 -->
<el-button <el-button type="primary" icon="el-icon-refresh-left" @click="handleReset">
type="primary"
icon="el-icon-refresh-left"
@click="handleReset"
>
{{ $t('common:button:reset') }} {{ $t('common:button:reset') }}
</el-button> </el-button>
<!-- 靶段标注 -->
<el-button type="primary" @click="() => TargetSection_visible = true"
v-if="item.CriterionType === 19 || item.CriterionType === 20">
{{ $t('trials:pendingReadingTasks:button:TargetSection') }}
</el-button>
</el-form-item> </el-form-item>
</el-form> </el-form>
</div> </div>
<div slot="main-container"> <div slot="main-container">
<el-table <el-table v-adaptive="{ bottomOffset: 75 }" :data="list" stripe height="100"
v-adaptive="{ bottomOffset: 75 }" @sort-change="handleSortChange">
:data="list"
stripe
height="100"
@sort-change="handleSortChange"
>
<el-table-column type="index" width="40" align="left" /> <el-table-column type="index" width="40" align="left" />
<el-table-column <el-table-column prop="IsUrgent" :label="$t('trials:consistencyCheck:table:isUrgent')"
prop="IsUrgent" show-overflow-tooltip min-width="100">
:label="$t('trials:consistencyCheck:table:isUrgent')"
show-overflow-tooltip
min-width="100"
>
<template slot-scope="scope"> <template slot-scope="scope">
<el-tooltip <el-tooltip class="item" effect="dark" :content="$t('trials:pendingReadingTasks:table:feedbackmsg')"
class="item" placement="bottom" v-if="scope.row.IsExistUnprocessedFeedback">
effect="dark" <i v-if="scope.row.IsExistUnprocessedFeedback" class="el-icon-warning"
:content="$t('trials:pendingReadingTasks:table:feedbackmsg')" style="color: #f44336; font-size: 16px" />
placement="bottom"
v-if="scope.row.IsExistUnprocessedFeedback"
>
<i
v-if="scope.row.IsExistUnprocessedFeedback"
class="el-icon-warning"
style="color: #f44336; font-size: 16px"
/>
</el-tooltip> </el-tooltip>
<el-tag <el-tag :type="scope.row.UrgentColor === 1
:type=" ? 'danger'
scope.row.UrgentColor === 1 : scope.row.UrgentColor === 2
? 'danger' ? 'warning'
: scope.row.UrgentColor === 2 : 'primary'
? 'warning' ">{{ $fd('YesOrNo', scope.row.IsUrgent) }}</el-tag>
: 'primary'
"
>{{ $fd('YesOrNo', scope.row.IsUrgent) }}</el-tag
>
</template> </template>
</el-table-column> </el-table-column>
<!-- 受试者编号 --> <!-- 受试者编号 -->
<el-table-column <el-table-column prop="SubjectCode" min-width="100"
prop="SubjectCode" :label="$t('trials:pendingReadingTasks:table:subjectCode')" show-overflow-tooltip sortable="custom" />
min-width="100"
:label="$t('trials:pendingReadingTasks:table:subjectCode')"
show-overflow-tooltip
sortable="custom"
/>
<!-- 剩余阅片量 --> <!-- 剩余阅片量 -->
<el-table-column <el-table-column prop="UnReadCanReadTaskCount" min-width="100" :label="$t('trials:pendingReadingTasks:table:remainingReadingVolume')
prop="UnReadCanReadTaskCount" " show-overflow-tooltip sortable="custom" />
min-width="100" <el-table-column prop="UrgentCount" :label="$t('trials:sysDocBeSigned:table:UrgentCount')"
:label=" show-overflow-tooltip min-width="100" sortable="custom">
$t('trials:pendingReadingTasks:table:remainingReadingVolume')
"
show-overflow-tooltip
sortable="custom"
/>
<el-table-column
prop="UrgentCount"
:label="$t('trials:sysDocBeSigned:table:UrgentCount')"
show-overflow-tooltip
min-width="100"
sortable="custom"
>
<template slot-scope="scope"> <template slot-scope="scope">
<span <span :style="{
:style="{ color:
color: scope.row.UrgentColor === 1
scope.row.UrgentColor === 1 ? '#F56C6C'
? '#F56C6C' : scope.row.UrgentColor === 2
: scope.row.UrgentColor === 2
? '#E6A23C' ? '#E6A23C'
: '#409EFF', : '#409EFF',
}" }">{{ scope.row.UrgentCount }}</span>
>{{ scope.row.UrgentCount }}</span
>
</template> </template>
</el-table-column> </el-table-column>
<!-- 建议完成时间 --> <!-- 建议完成时间 -->
<el-table-column <el-table-column prop="SuggesteFinishedTime" min-width="100" :label="$t('trials:pendingReadingTasks:table:suggestedCompletionTime')
prop="SuggesteFinishedTime" " show-overflow-tooltip sortable="custom">
min-width="100"
:label="
$t('trials:pendingReadingTasks:table:suggestedCompletionTime')
"
show-overflow-tooltip
sortable="custom"
>
<template slot-scope="scope"> <template slot-scope="scope">
{{ scope.row.SuggesteFinishedTime.split(':')[0] + ':00:00' }} {{ scope.row.SuggesteFinishedTime.split(':')[0] + ':00:00' }}
</template> </template>
</el-table-column> </el-table-column>
<el-table-column <el-table-column :label="$t('common:action:action')" width="250" fixed="right">
:label="$t('common:action:action')"
width="250"
fixed="right"
>
<template slot-scope="scope"> <template slot-scope="scope">
<!-- 阅片 --> <!-- 阅片 -->
<el-button <el-button :disabled="scope.row.ExistReadingApply" circle :title="scope.row.ExistReadingApply
:disabled="scope.row.ExistReadingApply" ? $t(
circle 'trials:pendingReadingTasks:button:ExistReadingApply'
:title=" )
scope.row.ExistReadingApply : $t('trials:pendingReadingTasks:button:review')
? $t( " icon="el-icon-edit-outline" @click="handleReadImage(scope.row)" />
'trials:pendingReadingTasks:button:ExistReadingApply'
)
: $t('trials:pendingReadingTasks:button:review')
"
icon="el-icon-edit-outline"
@click="handleReadImage(scope.row)"
/>
<!-- 上传 --> <!-- 上传 -->
<el-button <el-button v-if="
v-if=" item.ImageUploadEnum > 0 &&
item.ImageUploadEnum > 0 && item.IsReadingTaskViewInOrder > 1 &&
item.IsReadingTaskViewInOrder > 1 && !scope.row.IsSubjectJudge
!scope.row.IsSubjectJudge " v-hasPermi="['role:ir']" circle icon="el-icon-upload2"
"
v-hasPermi="['role:ir']"
circle
icon="el-icon-upload2"
:title="$t('trials:pendingReadingTasks:button:upload')" :title="$t('trials:pendingReadingTasks:button:upload')"
@click="openUploadImage(scope.row, item, 'upload')" @click="openUploadImage(scope.row, item, 'upload')" />
/>
<!-- 下载 --> <!-- 下载 -->
<el-button <el-button v-if="
v-if=" item.ImageDownloadEnum > 0 &&
item.ImageDownloadEnum > 0 && item.IsReadingTaskViewInOrder > 1 &&
item.IsReadingTaskViewInOrder > 1 && !scope.row.IsSubjectJudge
!scope.row.IsSubjectJudge " v-hasPermi="['role:ir']" circle icon="el-icon-download"
"
v-hasPermi="['role:ir']"
circle
icon="el-icon-download"
:title="$t('trials:pendingReadingTasks:button:download')" :title="$t('trials:pendingReadingTasks:button:download')"
@click="openUploadImage(scope.row, item, 'download')" @click="openUploadImage(scope.row, item, 'download')" />
/>
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
<pagination <pagination class="page" :total="total" :page.sync="searchData.PageIndex" :limit.sync="searchData.PageSize"
class="page" @pagination="getList" />
:total="total"
:page.sync="searchData.PageIndex"
:limit.sync="searchData.PageSize"
@pagination="getList"
/>
</div> </div>
</div> </div>
<div <div v-else-if="
v-else-if=" isReadingTaskViewInOrder === 0 &&
isReadingTaskViewInOrder === 0 && TrialReadingCriterionId === item.TrialReadingCriterionId
TrialReadingCriterionId === item.TrialReadingCriterionId ">
"
>
<el-descriptions :column="2" border style="width: 800px"> <el-descriptions :column="2" border style="width: 800px">
<!-- 剩余任务量 --> <!-- 剩余任务量 -->
<el-descriptions-item <el-descriptions-item :label="$t('trials:pendingReadingTasks:table:remainingTaskVolume')
:label=" " :label-style="{ width: '200px' }">
$t('trials:pendingReadingTasks:table:remainingTaskVolume')
"
:label-style="{ width: '200px' }"
>
<el-tag size="small" type="danger">{{ <el-tag size="small" type="danger">{{
randomReadInfo.UnReadTaskCount randomReadInfo.UnReadTaskCount
}}</el-tag> }}</el-tag>
</el-descriptions-item> </el-descriptions-item>
<!-- 剩余裁判量 --> <!-- 剩余裁判量 -->
<el-descriptions-item <el-descriptions-item :label="$t('trials:pendingReadingTasks:table:amountOfJudgesRemaining')
:label=" " :label-style="{ width: '200px' }">
$t('trials:pendingReadingTasks:table:amountOfJudgesRemaining')
"
:label-style="{ width: '200px' }"
>
<el-tag size="small" type="danger">{{ <el-tag size="small" type="danger">{{
randomReadInfo.UnReadJudgeTaskCount randomReadInfo.UnReadJudgeTaskCount
}}</el-tag> }}</el-tag>
</el-descriptions-item> </el-descriptions-item>
<!-- 已完成任务量 --> <!-- 已完成任务量 -->
<el-descriptions-item <el-descriptions-item :label="$t('trials:pendingReadingTasks:table:amountOfCompletedTasks')
:label=" " :label-style="{ width: '200px' }">
$t('trials:pendingReadingTasks:table:amountOfCompletedTasks')
"
:label-style="{ width: '200px' }"
>
<el-tag size="small">{{ randomReadInfo.FinishTaskCount }}</el-tag> <el-tag size="small">{{ randomReadInfo.FinishTaskCount }}</el-tag>
</el-descriptions-item> </el-descriptions-item>
<!-- 已完成裁判量 --> <!-- 已完成裁判量 -->
<el-descriptions-item <el-descriptions-item :label="$t('trials:pendingReadingTasks:table:numberOfJudgesCompleted')
:label=" " :label-style="{ width: '200px' }">
$t('trials:pendingReadingTasks:table:numberOfJudgesCompleted')
"
:label-style="{ width: '200px' }"
>
<el-tag size="small">{{ <el-tag size="small">{{
randomReadInfo.FinishJudgeTaskCount randomReadInfo.FinishJudgeTaskCount
}}</el-tag> }}</el-tag>
</el-descriptions-item> </el-descriptions-item>
<el-descriptions-item> <el-descriptions-item>
<!-- 开始随机阅片 --> <!-- 开始随机阅片 -->
<el-button <el-button type="primary" size="small" :disabled="randomReadInfo.UnReadTaskCount +
type="primary" randomReadInfo.UnReadJudgeTaskCount ===
size="small" 0
:disabled=" " @click="handleOutOfOrderReading">
randomReadInfo.UnReadTaskCount +
randomReadInfo.UnReadJudgeTaskCount ===
0
"
@click="handleOutOfOrderReading"
>
{{ $t('trials:pendingReadingTasks:button:beginRandomReview') }} {{ $t('trials:pendingReadingTasks:button:beginRandomReview') }}
</el-button> </el-button>
</el-descriptions-item> </el-descriptions-item>
@ -282,21 +162,17 @@
:status="uploadStatus" :status="uploadStatus"
@getList="getList" @getList="getList"
/> --> /> -->
<upload-dicom-and-nonedicom <upload-dicom-and-nonedicom v-if="uploadImageVisible" :SubjectId="uploadSubjectId" :SubjectCode="uploadSubjectCode"
v-if="uploadImageVisible" :Criterion="uploadTrialCriterion" :isReadingTaskViewInOrder="isReadingTaskViewInOrder"
:SubjectId="uploadSubjectId" :visible.sync="uploadImageVisible" />
:SubjectCode="uploadSubjectCode" <download-dicom-and-nonedicom v-if="downloadImageVisible" :SubjectId="uploadSubjectId"
:Criterion="uploadTrialCriterion" :SubjectCode="uploadSubjectCode" :Criterion="uploadTrialCriterion" :visible.sync="downloadImageVisible" />
:isReadingTaskViewInOrder="isReadingTaskViewInOrder" <el-dialog :title="$t('trials:pendingReadingTasks:button:TargetSection')" :visible.sync="TargetSection_visible"
:visible.sync="uploadImageVisible" :fullscreen="true">
/> <TargetSection v-if="TargetSection_visible" :TrialReadingCriterionId="TrialReadingCriterionId"
<download-dicom-and-nonedicom :trialCriterionList="trialCriterionList" />
v-if="downloadImageVisible" </el-dialog>
:SubjectId="uploadSubjectId"
:SubjectCode="uploadSubjectCode"
:Criterion="uploadTrialCriterion"
:visible.sync="downloadImageVisible"
/>
</BaseContainer> </BaseContainer>
</template> </template>
<script> <script>
@ -308,6 +184,7 @@ import uploadDicomAndNonedicom from '@/components/uploadDicomAndNonedicom'
import downloadDicomAndNonedicom from '@/components/downloadDicomAndNonedicom' import downloadDicomAndNonedicom from '@/components/downloadDicomAndNonedicom'
import Pagination from '@/components/Pagination' import Pagination from '@/components/Pagination'
import { getToken } from '@/utils/auth' import { getToken } from '@/utils/auth'
import TargetSection from "./components/TargetSection"
const searchDataDefault = () => { const searchDataDefault = () => {
return { return {
SubjectCode: '', SubjectCode: '',
@ -322,6 +199,7 @@ export default {
Pagination, Pagination,
'upload-dicom-and-nonedicom': uploadDicomAndNonedicom, 'upload-dicom-and-nonedicom': uploadDicomAndNonedicom,
'download-dicom-and-nonedicom': downloadDicomAndNonedicom, 'download-dicom-and-nonedicom': downloadDicomAndNonedicom,
TargetSection
}, },
data() { data() {
return { return {
@ -347,6 +225,8 @@ export default {
uploadSubjectCode: null, uploadSubjectCode: null,
uploadTrialCriterion: {}, uploadTrialCriterion: {},
uploadStatus: 'upload', uploadStatus: 'upload',
TargetSection_visible: false
} }
}, },
watch: { watch: {
@ -438,7 +318,7 @@ export default {
var path = '' var path = ''
if (this.readingTool === 0 || this.readingTool === 2) { if (this.readingTool === 0 || this.readingTool === 2) {
if (this.criterionType === 0 && this.trialId === '08dd28b3-6843-fc05-0242-ac1301000000') { if (this.criterionType === 0 && this.trialId === '08dd28b3-6843-fc05-0242-ac1301000000') {
path = `/fusion?TrialReadingCriterionId=${this.TrialReadingCriterionId}&trialId=${this.trialId}&studyId=62b3dfc4-1e04-4180-910d-fe595f398361&ctseriesId=1bd24f53-d419-32e5-92d4-2b04640aaa65&ptseriesId=2b7b128d-8c3f-8357-ad14-e38f3acbbdff&subjectCode=${row.SubjectCode}&subjectId=${row.SubjectId}&TokenKey=${token}&lang=${this.$i18n.locale}` path = `/fusion?TrialReadingCriterionId=${this.TrialReadingCriterionId}&trialId=${this.trialId}&studyId=62b3dfc4-1e04-4180-910d-fe595f398361&ctseriesId=1bd24f53-d419-32e5-92d4-2b04640aaa65&ptseriesId=2b7b128d-8c3f-8357-ad14-e38f3acbbdff&subjectCode=${row.SubjectCode}&subjectId=${row.SubjectId}&TokenKey=${token}&lang=${this.$i18n.locale}`
} else { } else {
path = `/readingDicoms?TrialReadingCriterionId=${this.TrialReadingCriterionId}&trialId=${this.trialId}&subjectCode=${row.SubjectCode}&subjectId=${row.SubjectId}&isReadingTaskViewInOrder=${this.isReadingTaskViewInOrder}&criterionType=${this.criterionType}&readingTool=${this.readingTool}&TokenKey=${token}` path = `/readingDicoms?TrialReadingCriterionId=${this.TrialReadingCriterionId}&trialId=${this.trialId}&subjectCode=${row.SubjectCode}&subjectId=${row.SubjectId}&isReadingTaskViewInOrder=${this.isReadingTaskViewInOrder}&criterionType=${this.criterionType}&readingTool=${this.readingTool}&TokenKey=${token}`
} }
@ -468,7 +348,7 @@ export default {
) )
var token = getToken() var token = getToken()
var path = '' var path = ''
if (this.readingTool === 0 || this.readingTool === 2 ) { if (this.readingTool === 0 || this.readingTool === 2) {
path = `/readingDicoms?TrialReadingCriterionId=${this.TrialReadingCriterionId}&trialId=${this.trialId}&isReadingTaskViewInOrder=${this.isReadingTaskViewInOrder}&criterionType=${this.criterionType}&readingTool=${this.readingTool}&TokenKey=${token}` path = `/readingDicoms?TrialReadingCriterionId=${this.TrialReadingCriterionId}&trialId=${this.trialId}&isReadingTaskViewInOrder=${this.isReadingTaskViewInOrder}&criterionType=${this.criterionType}&readingTool=${this.readingTool}&TokenKey=${token}`
} else { } else {
path = `/noneDicomReading?TrialReadingCriterionId=${this.TrialReadingCriterionId}&trialId=${this.trialId}&isReadingTaskViewInOrder=${this.isReadingTaskViewInOrder}&criterionType=${this.criterionType}&readingTool=${this.readingTool}&TokenKey=${token}` path = `/noneDicomReading?TrialReadingCriterionId=${this.TrialReadingCriterionId}&trialId=${this.trialId}&isReadingTaskViewInOrder=${this.isReadingTaskViewInOrder}&criterionType=${this.criterionType}&readingTool=${this.readingTool}&TokenKey=${token}`
@ -500,11 +380,12 @@ export default {
} }
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
.reading-task{ .reading-task {
height: 100%; height: 100%;
background-color: #fff; background-color: #fff;
::v-deep.search {
padding: 0px !important; ::v-deep.search {
} padding: 0px !important;
} }
}
</style> </style>