上传问题解决
continuous-integration/drone/push Build is passing
Details
continuous-integration/drone/push Build is passing
Details
parent
c101302cca
commit
25e348f428
|
|
@ -12,16 +12,33 @@
|
|||
<!--受试者-->
|
||||
<el-table-column prop="SubjectCode" :label="$t('upload:dicom:table:subjectCode')" sortable />
|
||||
<!--访视名称-->
|
||||
<el-table-column prop="VisitName" :label="$t('download:table:VisitName')" v-if="IsImageSegment" sortable />
|
||||
<el-table-column
|
||||
prop="VisitName"
|
||||
:label="$t('download:table:VisitName')"
|
||||
v-if="IsImageSegment"
|
||||
sortable
|
||||
/>
|
||||
<!--任务名称-->
|
||||
<el-table-column prop="TaskBlindName" :label="$t('upload:dicom:table:taskBlindName')" v-else sortable />
|
||||
<el-table-column
|
||||
prop="TaskBlindName"
|
||||
:label="$t('upload:dicom:table:taskBlindName')"
|
||||
v-else
|
||||
sortable
|
||||
/>
|
||||
<!--原始检查数-->
|
||||
<el-table-column prop="OrginalStudyList" :label="$t('upload:dicom:table:orginalStudyListNum')">
|
||||
<el-table-column
|
||||
prop="OrginalStudyList"
|
||||
:label="$t('upload:dicom:table:orginalStudyListNum')"
|
||||
>
|
||||
<template slot-scope="scope">
|
||||
<el-button v-if="
|
||||
<el-button
|
||||
v-if="
|
||||
scope.row.OrginalStudyList &&
|
||||
scope.row.OrginalStudyList.length >= 1
|
||||
" type="text" @click="handleOpenDialog(scope.row, 'OrginalStudyList')">
|
||||
"
|
||||
type="text"
|
||||
@click="handleOpenDialog(scope.row, 'OrginalStudyList')"
|
||||
>
|
||||
<span>{{ scope.row.OrginalStudyList.length }}</span>
|
||||
</el-button>
|
||||
<span v-else>0</span>
|
||||
|
|
@ -30,9 +47,13 @@
|
|||
<!--后处理检查数-->
|
||||
<el-table-column prop="UploadStudyList" :label="$t('upload:dicom:table:uploadStudyListNum')">
|
||||
<template slot-scope="scope">
|
||||
<el-button v-if="
|
||||
<el-button
|
||||
v-if="
|
||||
scope.row.UploadStudyList && scope.row.UploadStudyList.length >= 1
|
||||
" type="text" @click="handleOpenDialog(scope.row, 'UploadStudyList', true)">
|
||||
"
|
||||
type="text"
|
||||
@click="handleOpenDialog(scope.row, 'UploadStudyList', true)"
|
||||
>
|
||||
<span>{{ scope.row.UploadStudyList.length }}</span>
|
||||
</el-button>
|
||||
<span v-else>0</span>
|
||||
|
|
@ -42,27 +63,57 @@
|
|||
<template slot-scope="scope">
|
||||
<div class="btnBox">
|
||||
<!--上传--->
|
||||
<form id="inputForm" :ref="`uploadForm_${scope.row.Id}`" enctype="multipart/form-data" v-if="!forbid">
|
||||
<form
|
||||
id="inputForm"
|
||||
:ref="`uploadForm_${scope.row.Id}`"
|
||||
enctype="multipart/form-data"
|
||||
v-if="!forbid"
|
||||
>
|
||||
<div class="form-group" style="margin-right: 10px">
|
||||
<div :id="`directoryInputWrapper_${scope.row.Id}`" class="btn btn-link file-input">
|
||||
<el-button circle icon="el-icon-upload2" :disabled="btnLoading" :loading="btnLoading"
|
||||
:title="$t('upload:dicom:button:upload')" />
|
||||
<input :title="$t('upload:dicom:button:upload')" type="file" :name="`file_${scope.row.VisitTaskId}`"
|
||||
:ref="`pathClear_${scope.row.VisitTaskId}`" :disabled="btnLoading" webkitdirectory multiple @change="
|
||||
<el-button
|
||||
circle
|
||||
icon="el-icon-upload2"
|
||||
:disabled="btnLoading"
|
||||
:loading="btnLoading"
|
||||
:title="$t('upload:dicom:button:upload')"
|
||||
/>
|
||||
<input
|
||||
:title="$t('upload:dicom:button:upload')"
|
||||
type="file"
|
||||
:name="`file_${scope.row.VisitTaskId}`"
|
||||
:ref="`pathClear_${scope.row.VisitTaskId}`"
|
||||
:disabled="btnLoading"
|
||||
webkitdirectory
|
||||
multiple
|
||||
@change="
|
||||
($event) => beginScanFiles($event, scope.row.VisitTaskId)
|
||||
" />
|
||||
"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
<!--预览--->
|
||||
<el-button circle icon="el-icon-view" :disabled="!scope.row.UploadStudyList ||
|
||||
<el-button
|
||||
circle
|
||||
icon="el-icon-view"
|
||||
:disabled="!scope.row.UploadStudyList ||
|
||||
scope.row.UploadStudyList.length <= 0
|
||||
" @click.stop="handleViewReadingImages(scope.row)" :title="$t('upload:dicom:button:preview')" />
|
||||
"
|
||||
@click.stop="handleViewReadingImages(scope.row)"
|
||||
:title="$t('upload:dicom:button:preview')"
|
||||
/>
|
||||
<!--删除--->
|
||||
<el-button circle :disabled="!scope.row.UploadStudyList ||
|
||||
<el-button
|
||||
circle
|
||||
:disabled="!scope.row.UploadStudyList ||
|
||||
scope.row.UploadStudyList.length <= 0 ||
|
||||
scope.row.ReadingTaskState === 2
|
||||
" icon="el-icon-delete" :title="$t('upload:dicom:button:delete')" @click.stop="remove(scope.row)" />
|
||||
"
|
||||
icon="el-icon-delete"
|
||||
:title="$t('upload:dicom:button:delete')"
|
||||
@click.stop="remove(scope.row)"
|
||||
/>
|
||||
</div>
|
||||
</template>
|
||||
</el-table-column>
|
||||
|
|
@ -70,32 +121,49 @@
|
|||
<div style="margin: 10px 0" class="top">
|
||||
<span>{{ $t('upload:dicom:uploadTitle') }}</span>
|
||||
<div class="btnBox" v-if="!forbid">
|
||||
<span style="margin-right: 10px">
|
||||
{{ $store.state.trials.uploadTip }}
|
||||
</span>
|
||||
<span style="margin-right: 10px">{{ $store.state.trials.uploadTip }}</span>
|
||||
<form id="inputForm" ref="uploadForm" enctype="multipart/form-data">
|
||||
<div class="form-group">
|
||||
<div id="directoryInputWrapper" class="btn btn-link file-input">
|
||||
<el-button type="primary" :disabled="btnLoading" :loading="btnLoading" size="mini">
|
||||
{{ $t('upload:dicom:button:batchUpload') }}
|
||||
</el-button>
|
||||
<input type="file" name="file" ref="pathClear" :disabled="btnLoading" webkitdirectory multiple title=""
|
||||
@change="beginScanFiles($event)" />
|
||||
<el-button
|
||||
type="primary"
|
||||
:disabled="btnLoading"
|
||||
:loading="btnLoading"
|
||||
size="mini"
|
||||
>{{ $t('upload:dicom:button:batchUpload') }}</el-button>
|
||||
<input
|
||||
type="file"
|
||||
name="file"
|
||||
ref="pathClear"
|
||||
:disabled="btnLoading"
|
||||
webkitdirectory
|
||||
multiple
|
||||
title
|
||||
@change="beginScanFiles($event)"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
<!--上传列表-->
|
||||
<el-table ref="dicomFilesTable" v-adaptive="{ bottomOffset: 80 }" height="100" :data="uploadQueues"
|
||||
class="dicomFiles-table" @selection-change="handleSelectionChange">
|
||||
<el-table
|
||||
ref="dicomFilesTable"
|
||||
v-adaptive="{ bottomOffset: 80 }"
|
||||
height="100"
|
||||
:data="uploadQueues"
|
||||
class="dicomFiles-table"
|
||||
@selection-change="handleSelectionChange"
|
||||
>
|
||||
<el-table-column type="index" width="40" />
|
||||
<el-table-column min-width="200" show-overflow-tooltip>
|
||||
<template slot="header">
|
||||
<el-tooltip placement="top">
|
||||
<div slot="content">
|
||||
{{ $t('trials:uploadDicomList:table:studyDetail1') }}<br />
|
||||
{{ $t('trials:uploadDicomList:table:studyDetail2') }}<br />
|
||||
{{ $t('trials:uploadDicomList:table:studyDetail1') }}
|
||||
<br />
|
||||
{{ $t('trials:uploadDicomList:table:studyDetail2') }}
|
||||
<br />
|
||||
{{ $t('trials:uploadedDicoms:table:studyDate') }}
|
||||
</div>
|
||||
<span>{{ $t('trials:uploadDicomList:table:studyInfo') }}</span>
|
||||
|
|
@ -105,13 +173,16 @@
|
|||
<div style="line-height: 15px">
|
||||
<div>
|
||||
<div>
|
||||
<span v-if="scope.row.dicomInfo.accNumber"><span style="font-weight: 500">Acc:</span>
|
||||
{{ scope.row.dicomInfo.accNumber }}</span>
|
||||
<span v-if="scope.row.dicomInfo.accNumber">
|
||||
<span style="font-weight: 500">Acc:</span>
|
||||
{{ scope.row.dicomInfo.accNumber }}
|
||||
</span>
|
||||
<span v-else style="color: #f44336">N/A</span>
|
||||
</div>
|
||||
<div style="display: inline-block; margin-right: 2px">
|
||||
<span v-if="scope.row.dicomInfo.modality.length > 0">
|
||||
{{ scope.row.dicomInfo.modality.join('、') }},</span>
|
||||
<span
|
||||
v-if="scope.row.dicomInfo.modality.length > 0"
|
||||
>{{ scope.row.dicomInfo.modality.join('、') }},</span>
|
||||
<span v-else style="color: #f44336">N/A,</span>
|
||||
</div>
|
||||
<div style="display: inline-block; margin-right: 2px">
|
||||
|
|
@ -126,20 +197,15 @@
|
|||
|
||||
<div>
|
||||
<div style="display: inline-block; margin-right: 2px">
|
||||
<span v-if="scope.row.dicomInfo.bodyPart">
|
||||
{{ scope.row.dicomInfo.bodyPart }},
|
||||
</span>
|
||||
<span v-else style="color: #f44336">N/A, </span>
|
||||
<span v-if="scope.row.dicomInfo.bodyPart">{{ scope.row.dicomInfo.bodyPart }},</span>
|
||||
<span v-else style="color: #f44336">N/A,</span>
|
||||
</div>
|
||||
<div style="display: inline-block">
|
||||
<span v-if="scope.row.dicomInfo.description">
|
||||
{{ scope.row.dicomInfo.description }}</span>
|
||||
<span v-if="scope.row.dicomInfo.description">{{ scope.row.dicomInfo.description }}</span>
|
||||
<span v-else style="color: #f44336">N/A</span>
|
||||
</div>
|
||||
</div>
|
||||
<div>
|
||||
{{ scope.row.dicomInfo.studyTime }}
|
||||
</div>
|
||||
<div>{{ scope.row.dicomInfo.studyTime }}</div>
|
||||
</div>
|
||||
</template>
|
||||
</el-table-column>
|
||||
|
|
@ -147,8 +213,10 @@
|
|||
<template slot="header">
|
||||
<el-tooltip placement="top">
|
||||
<div slot="content">
|
||||
{{ $t('trials:uploadDicomList:table:pId') }}<br />
|
||||
{{ $t('trials:uploadDicomList:table:patientName') }}<br />
|
||||
{{ $t('trials:uploadDicomList:table:pId') }}
|
||||
<br />
|
||||
{{ $t('trials:uploadDicomList:table:patientName') }}
|
||||
<br />
|
||||
{{ $t('trials:uploadDicomList:table:pInfo') }}
|
||||
</div>
|
||||
<span>{{ $t('trials:uploadDicomList:table:patientInfo') }}</span>
|
||||
|
|
@ -157,8 +225,11 @@
|
|||
<template slot-scope="scope">
|
||||
<div style="line-height: 15px">
|
||||
<div>
|
||||
<span v-if="scope.row.dicomInfo.patientId"><span style="font-weight: 500">PID: </span>{{
|
||||
scope.row.dicomInfo.patientId }}</span>
|
||||
<span v-if="scope.row.dicomInfo.patientId">
|
||||
<span style="font-weight: 500">PID:</span>
|
||||
{{
|
||||
scope.row.dicomInfo.patientId }}
|
||||
</span>
|
||||
<span v-else style="color: #f44336">N/A</span>
|
||||
</div>
|
||||
<div>
|
||||
|
|
@ -187,9 +258,11 @@
|
|||
}},
|
||||
</span>
|
||||
|
||||
<span :class="[
|
||||
<span
|
||||
:class="[
|
||||
scope.row.dicomInfo.patientBirthDate ? '' : 'colorOfRed',
|
||||
]">
|
||||
]"
|
||||
>
|
||||
{{
|
||||
scope.row.dicomInfo.patientBirthDate
|
||||
? scope.row.dicomInfo.patientBirthDate
|
||||
|
|
@ -200,14 +273,20 @@
|
|||
</div>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column :label="$t('trials:uploadDicomList:table:failedFileCount')" min-width="150"
|
||||
show-overflow-tooltip>
|
||||
<el-table-column
|
||||
:label="$t('trials:uploadDicomList:table:failedFileCount')"
|
||||
min-width="150"
|
||||
show-overflow-tooltip
|
||||
>
|
||||
<template slot-scope="scope">
|
||||
<el-progress color="#409eff" :percentage="(
|
||||
<el-progress
|
||||
color="#409eff"
|
||||
:percentage="(
|
||||
(scope.row.dicomInfo.uploadFileSize * 100) /
|
||||
(scope.row.dicomInfo.fileSize ? scope.row.dicomInfo.fileSize : 1)
|
||||
).toFixed(2) * 1
|
||||
" />
|
||||
"
|
||||
/>
|
||||
<span>
|
||||
{{ $t('trials:uploadDicomList:table:uploadNow')
|
||||
}}{{ scope.row.dicomInfo.failedFileCount }}/{{
|
||||
|
|
@ -222,87 +301,128 @@
|
|||
</template>
|
||||
</el-table-column>
|
||||
|
||||
<el-table-column :label="$t('trials:uploadDicomList:table:status')" min-width="140" show-overflow-tooltip>
|
||||
<el-table-column
|
||||
:label="$t('trials:uploadDicomList:table:status')"
|
||||
min-width="140"
|
||||
show-overflow-tooltip
|
||||
>
|
||||
<template slot-scope="scope">
|
||||
<span v-if="
|
||||
<span
|
||||
v-if="
|
||||
!scope.row.dicomInfo.failedFileCount &&
|
||||
!scope.row.dicomInfo.isInit
|
||||
">
|
||||
{{ $t('trials:uploadDicomList:table:status1') }}</span>
|
||||
<span style="color: #409eff" v-else-if="
|
||||
"
|
||||
>{{ $t('trials:uploadDicomList:table:status1') }}</span>
|
||||
<span
|
||||
style="color: #409eff"
|
||||
v-else-if="
|
||||
!scope.row.dicomInfo.failedFileCount &&
|
||||
scope.row.dicomInfo.isInit &&
|
||||
btnLoading
|
||||
">{{ $t('trials:uploadDicomList:table:status2') }}</span>
|
||||
<span style="color: #409eff" v-else-if="
|
||||
"
|
||||
>{{ $t('trials:uploadDicomList:table:status2') }}</span>
|
||||
<span
|
||||
style="color: #409eff"
|
||||
v-else-if="
|
||||
scope.row.dicomInfo.failedFileCount <
|
||||
scope.row.dicomInfo.fileCount && !scope.row.uploadState.record
|
||||
">{{ $t('trials:uploadDicomList:table:status2') }}</span>
|
||||
<span style="color: #2cc368" v-else-if="
|
||||
"
|
||||
>{{ $t('trials:uploadDicomList:table:status2') }}</span>
|
||||
<span
|
||||
style="color: #2cc368"
|
||||
v-else-if="
|
||||
scope.row.dicomInfo.failedFileCount ===
|
||||
scope.row.dicomInfo.fileCount
|
||||
">{{ $t('trials:uploadDicomList:table:status3') }}</span>
|
||||
<span style="color: #f66" v-else-if="
|
||||
"
|
||||
>{{ $t('trials:uploadDicomList:table:status3') }}</span>
|
||||
<span
|
||||
style="color: #f66"
|
||||
v-else-if="
|
||||
scope.row.uploadState.record &&
|
||||
scope.row.uploadState.record.fileCount === 0
|
||||
">{{ $t('trials:uploadDicomList:table:status5') }}</span>
|
||||
<span style="color: #f66" v-else>{{
|
||||
"
|
||||
>{{ $t('trials:uploadDicomList:table:status5') }}</span>
|
||||
<span style="color: #f66" v-else>
|
||||
{{
|
||||
$t('trials:uploadDicomList:table:Failed')
|
||||
}}</span>
|
||||
}}
|
||||
</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column :label="$t('trials:uploadDicomList:table:record')" min-width="140" show-overflow-tooltip>
|
||||
<el-table-column
|
||||
:label="$t('trials:uploadDicomList:table:record')"
|
||||
min-width="140"
|
||||
show-overflow-tooltip
|
||||
>
|
||||
<template slot-scope="scope">
|
||||
<el-tooltip placement="top" v-if="scope.row.uploadState.record">
|
||||
<div slot="content">
|
||||
<div style="max-height: 500px; overflow-y: auto">
|
||||
{{ $t('trials:uploadDicomList:table:Existed') }}:
|
||||
<div v-if="scope.row.uploadState.record.Existed.length">
|
||||
<div v-for="item of scope.row.uploadState.record.Existed" :key="item"
|
||||
style="font-size: 12px; color: #baa72a">
|
||||
{{ item }}
|
||||
</div>
|
||||
<div
|
||||
v-for="item of scope.row.uploadState.record.Existed"
|
||||
:key="item"
|
||||
style="font-size: 12px; color: #baa72a"
|
||||
>{{ item }}</div>
|
||||
</div>
|
||||
<div v-else> </div>
|
||||
{{ $t('trials:uploadDicomList:table:Uploaded') }}:
|
||||
<div v-if="scope.row.uploadState.record.Uploaded.length">
|
||||
<div v-for="item of scope.row.uploadState.record.Uploaded" :key="item"
|
||||
style="font-size: 12px; color: #24b837">
|
||||
{{ item }}
|
||||
</div>
|
||||
<div
|
||||
v-for="item of scope.row.uploadState.record.Uploaded"
|
||||
:key="item"
|
||||
style="font-size: 12px; color: #24b837"
|
||||
>{{ item }}</div>
|
||||
</div>
|
||||
<div v-else> </div>
|
||||
<br />
|
||||
{{ $t('trials:uploadDicomList:table:Failed') }}:
|
||||
<div v-if="scope.row.uploadState.record.Failed.length">
|
||||
<div v-for="item of scope.row.uploadState.record.Failed" :key="item"
|
||||
style="font-size: 12px; color: #f66">
|
||||
{{ item }}
|
||||
</div>
|
||||
<div
|
||||
v-for="item of scope.row.uploadState.record.Failed"
|
||||
:key="item"
|
||||
style="font-size: 12px; color: #f66"
|
||||
>{{ item }}</div>
|
||||
</div>
|
||||
<div v-else> </div>
|
||||
</div>
|
||||
</div>
|
||||
<el-button size="mini" style="cursor: pointer">
|
||||
<span style="font-size: 12px; color: #baa72a">{{
|
||||
<span style="font-size: 12px; color: #baa72a">
|
||||
{{
|
||||
scope.row.uploadState.record.Existed.length
|
||||
}}</span>
|
||||
}}
|
||||
</span>
|
||||
/
|
||||
<span style="font-size: 12px; color: #24b837">{{
|
||||
<span style="font-size: 12px; color: #24b837">
|
||||
{{
|
||||
scope.row.uploadState.record.Uploaded.length
|
||||
}}</span>
|
||||
}}
|
||||
</span>
|
||||
/
|
||||
<span style="font-size: 12px; color: #f66">{{
|
||||
<span style="font-size: 12px; color: #f66">
|
||||
{{
|
||||
scope.row.uploadState.record.Failed.length
|
||||
}}</span>
|
||||
}}
|
||||
</span>
|
||||
</el-button>
|
||||
</el-tooltip>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
<study-view v-if="model_cfg.visible" :model_cfg="model_cfg" :IsDicom="true" :bodyPart="bodyPart"
|
||||
:subjectVisitId="openSubjectVisitId" :modelList="modelList" :isUpload="openIsUpload"
|
||||
:visitTaskId="openVisitTaskId" :TrialModality="TrialModality" @getList="getList" />
|
||||
<study-view
|
||||
v-if="model_cfg.visible"
|
||||
:model_cfg="model_cfg"
|
||||
:IsDicom="true"
|
||||
:bodyPart="bodyPart"
|
||||
:subjectVisitId="openSubjectVisitId"
|
||||
:modelList="modelList"
|
||||
:isUpload="openIsUpload"
|
||||
:visitTaskId="openVisitTaskId"
|
||||
:TrialModality="TrialModality"
|
||||
@getList="getList"
|
||||
/>
|
||||
</div>
|
||||
</template>
|
||||
<script>
|
||||
|
|
@ -374,7 +494,7 @@ export default {
|
|||
IsImageSegment: {
|
||||
type: Boolean,
|
||||
default: false,
|
||||
}
|
||||
},
|
||||
},
|
||||
components: {
|
||||
'study-view': studyView,
|
||||
|
|
@ -456,8 +576,10 @@ export default {
|
|||
}
|
||||
if (this.IsImageSegment) {
|
||||
params.IsImageSegmentLabel = true
|
||||
}
|
||||
else if (this.Criterion.CriterionType == 19 || this.Criterion.CriterionType == 20) {
|
||||
} else if (
|
||||
this.Criterion.CriterionType == 19 ||
|
||||
this.Criterion.CriterionType == 20
|
||||
) {
|
||||
params.IsImageSegmentLabel = false
|
||||
}
|
||||
this.loading = true
|
||||
|
|
@ -544,7 +666,9 @@ export default {
|
|||
this.openIsUpload = isUpload
|
||||
this.openSubjectVisitId = item.SubjectVisitId || item.SourceSubjectVisitId
|
||||
this.openVisitTaskId = item.VisitTaskId
|
||||
this.model_cfg.title = `${item.SubjectCode || ''} > ${this.IsImageSegment ? item.VisitName : item.TaskBlindName}`
|
||||
this.model_cfg.title = `${item.SubjectCode || ''} > ${
|
||||
this.IsImageSegment ? item.VisitName : item.TaskBlindName
|
||||
}`
|
||||
this.modelList = item[list]
|
||||
this.model_cfg.visible = true
|
||||
},
|
||||
|
|
@ -646,7 +770,10 @@ export default {
|
|||
for (let i = 0; i < checkFiles.length; i++) {
|
||||
let item = checkFiles[i]
|
||||
var dicom = await parseDicom(item, ['StudyInstanceUid', 'Modality'])
|
||||
if (!!~this.errStudyUidList.indexOf(dicom.StudyInstanceUid) || (this.IsImageSegment && dicom.Modality !== 'IVUS')) {
|
||||
if (
|
||||
!!~this.errStudyUidList.indexOf(dicom.StudyInstanceUid) ||
|
||||
(this.IsImageSegment && dicom.Modality !== 'IVUS')
|
||||
) {
|
||||
this.hasOtherStudy = true
|
||||
checkFiles.splice(i, 1)
|
||||
i--
|
||||
|
|
@ -674,7 +801,7 @@ export default {
|
|||
var validFilesCount = 0
|
||||
scope.uploadQueues = []
|
||||
for (var i = 0; i < checkFiles.length; ++i) {
|
||||
; (function (index) {
|
||||
;(function (index) {
|
||||
p = p.then(function () {
|
||||
if (
|
||||
checkFiles[index].name.toUpperCase().indexOf('DICOMDIR') === -1
|
||||
|
|
@ -713,7 +840,8 @@ export default {
|
|||
var studyUid = data.string('x0020000d')
|
||||
if (!studyUid) return resolve()
|
||||
var pixelDataElement = data.elements.x7fe00010
|
||||
if (!pixelDataElement && modality !== 'SR' && modality !== 'ECG') return resolve()
|
||||
if (!pixelDataElement && modality !== 'SR' && modality !== 'ECG')
|
||||
return resolve()
|
||||
var studyIndex = 0
|
||||
while (
|
||||
studyIndex < scope.uploadQueues.length &&
|
||||
|
|
@ -810,14 +938,38 @@ export default {
|
|||
},
|
||||
})
|
||||
}
|
||||
if (!scope.uploadQueues[studyIndex].dicomInfo.RadionuclideTotalDose) {
|
||||
if (
|
||||
!scope.uploadQueues[studyIndex].dicomInfo.RadionuclideTotalDose
|
||||
) {
|
||||
let dataset = dcmjs.data.DicomMessage.readFile(e.target.result)
|
||||
let RadionuclideTotalDose = dataset.dict['00540016'].Value[0]['00181074'].Value[0]
|
||||
let RadionuclideHalfLife = dataset.dict['00540016'].Value[0]['00181075'].Value[0]
|
||||
let RadiopharmaceuticalStartTime = dataset.dict['00540016'].Value[0]['00181072'].Value[0]
|
||||
scope.uploadQueues[studyIndex].dicomInfo.RadionuclideTotalDose = RadionuclideTotalDose
|
||||
scope.uploadQueues[studyIndex].dicomInfo.RadionuclideHalfLife = RadionuclideHalfLife
|
||||
scope.uploadQueues[studyIndex].dicomInfo.RadiopharmaceuticalStartTime = RadiopharmaceuticalStartTime
|
||||
if (
|
||||
dataset.dict['00540016'] &&
|
||||
dataset.dict['00540016'].Value &&
|
||||
dataset.dict['00540016'].Value[0]
|
||||
) {
|
||||
let RadionuclideTotalDose = dataset.dict['00540016'].Value[0][
|
||||
'00181074'
|
||||
]
|
||||
? dataset.dict['00540016'].Value[0]['00181074'].Value[0]
|
||||
: null
|
||||
let RadionuclideHalfLife = dataset.dict['00540016'].Value[0][
|
||||
'00181075'
|
||||
]
|
||||
? dataset.dict['00540016'].Value[0]['00181075'].Value[0]
|
||||
: null
|
||||
let RadiopharmaceuticalStartTime = dataset.dict['00540016']
|
||||
.Value[0]['00181072']
|
||||
? dataset.dict['00540016'].Value[0]['00181072'].Value[0]
|
||||
: null
|
||||
scope.uploadQueues[studyIndex].dicomInfo.RadionuclideTotalDose =
|
||||
RadionuclideTotalDose
|
||||
scope.uploadQueues[studyIndex].dicomInfo.RadionuclideHalfLife =
|
||||
RadionuclideHalfLife
|
||||
scope.uploadQueues[
|
||||
studyIndex
|
||||
].dicomInfo.RadiopharmaceuticalStartTime =
|
||||
RadiopharmaceuticalStartTime
|
||||
}
|
||||
}
|
||||
var modality = scope.uploadQueues[studyIndex].dicomInfo.modality
|
||||
var currentModality = data.string('x00080060')
|
||||
|
|
@ -886,8 +1038,9 @@ export default {
|
|||
)
|
||||
seriesItem = {
|
||||
seriesUid: seriesUid,
|
||||
RadiopharmaceuticalInformationSequence: data.string('x00540016') || "",
|
||||
AcquisitionDate: data.string('x00080022') || "",
|
||||
RadiopharmaceuticalInformationSequence:
|
||||
data.string('x00540016') || '',
|
||||
AcquisitionDate: data.string('x00080022') || '',
|
||||
|
||||
DicomSeriesDate: data.string('x00080021'),
|
||||
DicomSeriesTime: data.string('x00080031'),
|
||||
|
|
@ -1095,16 +1248,19 @@ export default {
|
|||
var scope = this
|
||||
return new Promise(function (resolve, reject) {
|
||||
try {
|
||||
let subjectVisitId = null;
|
||||
let subjectVisitId = null
|
||||
if (scope.VisitTaskId) {
|
||||
scope.StudyInstanceUidList.forEach(item => {
|
||||
scope.StudyInstanceUidList.forEach((item) => {
|
||||
if (item.VisitTaskId === scope.VisitTaskId) {
|
||||
subjectVisitId = item.SourceSubjectVisitId
|
||||
}
|
||||
})
|
||||
} else {
|
||||
scope.StudyInstanceUidList.forEach(item => {
|
||||
if (item.StudyInstanceUid === scope.uploadQueues[index].dicomInfo.studyUid) {
|
||||
scope.StudyInstanceUidList.forEach((item) => {
|
||||
if (
|
||||
item.StudyInstanceUid ===
|
||||
scope.uploadQueues[index].dicomInfo.studyUid
|
||||
) {
|
||||
subjectVisitId = item.SourceSubjectVisitId
|
||||
}
|
||||
})
|
||||
|
|
@ -1156,7 +1312,8 @@ export default {
|
|||
study: {
|
||||
RadionuclideTotalDose: dicomInfo.RadionuclideTotalDose,
|
||||
RadionuclideHalfLife: dicomInfo.RadionuclideHalfLife,
|
||||
RadiopharmaceuticalStartTime: dicomInfo.RadiopharmaceuticalStartTime,
|
||||
RadiopharmaceuticalStartTime:
|
||||
dicomInfo.RadiopharmaceuticalStartTime,
|
||||
|
||||
studyId: dicomInfo.studyId,
|
||||
studyInstanceUid: dicomInfo.studyUid,
|
||||
|
|
@ -1211,8 +1368,10 @@ export default {
|
|||
seriesInstanceUid: v.seriesUid,
|
||||
SOPClassUID: o.SOPClassUID,
|
||||
TransferSytaxUID: o.TransferSytaxUID,
|
||||
MediaStorageSOPInstanceUID: o.MediaStorageSOPInstanceUID,
|
||||
MediaStorageSOPClassUID: o.MediaStorageSOPClassUID,
|
||||
MediaStorageSOPInstanceUID:
|
||||
o.MediaStorageSOPInstanceUID,
|
||||
MediaStorageSOPClassUID:
|
||||
o.MediaStorageSOPClassUID,
|
||||
sopInstanceUid: o.instanceUid,
|
||||
instanceNumber: o.instanceNumber,
|
||||
instanceTime: o.instanceTime,
|
||||
|
|
@ -1229,14 +1388,17 @@ export default {
|
|||
path: o.myPath,
|
||||
FileSize: o.FileSize,
|
||||
|
||||
PhotometricInterpretation: o.PhotometricInterpretation,
|
||||
PhotometricInterpretation:
|
||||
o.PhotometricInterpretation,
|
||||
BitsAllocated: o.BitsAllocated,
|
||||
PixelRepresentation: o.PixelRepresentation,
|
||||
RescaleIntercept: o.RescaleIntercept,
|
||||
RescaleSlope: o.RescaleSlope,
|
||||
ImagePositionPatient: o.ImagePositionPatient,
|
||||
ImageOrientationPatient: o.ImageOrientationPatient,
|
||||
SequenceOfUltrasoundRegions: o.SequenceOfUltrasoundRegions,
|
||||
ImageOrientationPatient:
|
||||
o.ImageOrientationPatient,
|
||||
SequenceOfUltrasoundRegions:
|
||||
o.SequenceOfUltrasoundRegions,
|
||||
FrameTime: o.FrameTime,
|
||||
CorrectedImage: o.CorrectedImage,
|
||||
Units: o.Units,
|
||||
|
|
@ -1247,8 +1409,10 @@ export default {
|
|||
dicomInfo.failedFileCount++
|
||||
Record.FileCount++
|
||||
} else {
|
||||
let path = `/${params.trialId}/Image/${params.subjectId
|
||||
}/${params.subjectVisitId}/${dicomInfo.visitTaskId
|
||||
let path = `/${params.trialId}/Image/${
|
||||
params.subjectId
|
||||
}/${params.subjectVisitId}/${
|
||||
dicomInfo.visitTaskId
|
||||
}/${scope.getGuid(
|
||||
dicomInfo.studyUid +
|
||||
v.seriesUid +
|
||||
|
|
@ -1256,8 +1420,10 @@ export default {
|
|||
params.trialId
|
||||
)}`
|
||||
if (scope.IsImageSegment) {
|
||||
path = `/${params.trialId}/Image/${params.subjectId
|
||||
}/${params.subjectVisitId}/AnnotationImage/${dicomInfo.visitTaskId
|
||||
path = `/${params.trialId}/Image/${
|
||||
params.subjectId
|
||||
}/${params.subjectVisitId}/AnnotationImage/${
|
||||
dicomInfo.visitTaskId
|
||||
}/${scope.getGuid(
|
||||
dicomInfo.studyUid +
|
||||
v.seriesUid +
|
||||
|
|
@ -1290,7 +1456,7 @@ export default {
|
|||
batchDataType: 5,
|
||||
trialId: params.trialId,
|
||||
subjectId: params.subjectId,
|
||||
subjectVisitId: params.subjectVisitId
|
||||
subjectVisitId: params.subjectVisitId,
|
||||
}
|
||||
)
|
||||
if (!res || !res.url) {
|
||||
|
|
@ -1323,7 +1489,7 @@ export default {
|
|||
batchDataType: 6,
|
||||
trialId: params.trialId,
|
||||
subjectId: params.subjectId,
|
||||
subjectVisitId: params.subjectVisitId
|
||||
subjectVisitId: params.subjectVisitId,
|
||||
}
|
||||
)
|
||||
if (seriesRes && seriesRes.url) {
|
||||
|
|
@ -1343,8 +1509,10 @@ export default {
|
|||
sopInstanceUid: o.instanceUid,
|
||||
SOPClassUID: o.SOPClassUID,
|
||||
TransferSytaxUID: o.TransferSytaxUID,
|
||||
MediaStorageSOPInstanceUID: o.MediaStorageSOPInstanceUID,
|
||||
MediaStorageSOPClassUID: o.MediaStorageSOPClassUID,
|
||||
MediaStorageSOPInstanceUID:
|
||||
o.MediaStorageSOPInstanceUID,
|
||||
MediaStorageSOPClassUID:
|
||||
o.MediaStorageSOPClassUID,
|
||||
instanceNumber: o.instanceNumber,
|
||||
instanceTime: o.instanceTime,
|
||||
imageRows: o.imageRows,
|
||||
|
|
@ -1360,14 +1528,17 @@ export default {
|
|||
path: scope.$getObjectName(res.url),
|
||||
FileSize: o.FileSize,
|
||||
|
||||
PhotometricInterpretation: o.PhotometricInterpretation,
|
||||
PhotometricInterpretation:
|
||||
o.PhotometricInterpretation,
|
||||
BitsAllocated: o.BitsAllocated,
|
||||
PixelRepresentation: o.PixelRepresentation,
|
||||
RescaleIntercept: o.RescaleIntercept,
|
||||
RescaleSlope: o.RescaleSlope,
|
||||
ImagePositionPatient: o.ImagePositionPatient,
|
||||
ImageOrientationPatient: o.ImageOrientationPatient,
|
||||
SequenceOfUltrasoundRegions: o.SequenceOfUltrasoundRegions,
|
||||
ImageOrientationPatient:
|
||||
o.ImageOrientationPatient,
|
||||
SequenceOfUltrasoundRegions:
|
||||
o.SequenceOfUltrasoundRegions,
|
||||
FrameTime: o.FrameTime,
|
||||
CorrectedImage: o.CorrectedImage,
|
||||
Units: o.Units,
|
||||
|
|
@ -1422,7 +1593,8 @@ export default {
|
|||
instanceList: instanceList,
|
||||
ImageResizePath: ImageResizePath,
|
||||
|
||||
RadiopharmaceuticalInformationSequence: v.RadiopharmaceuticalInformationSequence,
|
||||
RadiopharmaceuticalInformationSequence:
|
||||
v.RadiopharmaceuticalInformationSequence,
|
||||
AcquisitionDate: v.AcquisitionDate,
|
||||
})
|
||||
}
|
||||
|
|
@ -1465,10 +1637,7 @@ export default {
|
|||
}
|
||||
let OSSclient = scope.OSSclient
|
||||
try {
|
||||
let seriesRes = await OSSclient.put(
|
||||
thumbnailPath,
|
||||
blob,
|
||||
{
|
||||
let seriesRes = await OSSclient.put(thumbnailPath, blob, {
|
||||
fileName: `${v.seriesUid}.jpg`,
|
||||
fileSize: blob.size,
|
||||
fileType: 'image/jpeg',
|
||||
|
|
@ -1476,9 +1645,8 @@ export default {
|
|||
batchDataType: 6,
|
||||
trialId: params.trialId,
|
||||
subjectId: params.subjectId,
|
||||
subjectVisitId: params.subjectVisitId
|
||||
}
|
||||
)
|
||||
subjectVisitId: params.subjectVisitId,
|
||||
})
|
||||
if (seriesRes && seriesRes.url) {
|
||||
o.ImageResizePath = scope.$getObjectName(seriesRes.url)
|
||||
}
|
||||
|
|
@ -1591,7 +1759,11 @@ export default {
|
|||
var token = getToken()
|
||||
let trialId = this.$route.query.trialId
|
||||
const routeData = this.$router.resolve({
|
||||
path: `/showvisitdicoms?page=upload&trialId=${trialId}&visitTaskId=${this.IsImageSegment ? 'undefined' : row.VisitTaskId}&subjectVisitId=${row.SourceSubjectVisitId}&isReading=1&TokenKey=${token}`,
|
||||
path: `/showvisitdicoms?page=upload&trialId=${trialId}&visitTaskId=${
|
||||
this.IsImageSegment ? 'undefined' : row.VisitTaskId
|
||||
}&subjectVisitId=${
|
||||
row.SourceSubjectVisitId
|
||||
}&isReading=1&TokenKey=${token}`,
|
||||
})
|
||||
this.open = window.open(routeData.href, '_blank')
|
||||
},
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue