文件上传信息获取
continuous-integration/drone/push Build is passing
Details
continuous-integration/drone/push Build is passing
Details
parent
49c7482d76
commit
e100d45bc1
|
|
@ -12,33 +12,16 @@
|
||||||
<!--受试者-->
|
<!--受试者-->
|
||||||
<el-table-column prop="SubjectCode" :label="$t('upload:dicom:table:subjectCode')" sortable />
|
<el-table-column prop="SubjectCode" :label="$t('upload:dicom:table:subjectCode')" sortable />
|
||||||
<!--访视名称-->
|
<!--访视名称-->
|
||||||
<el-table-column
|
<el-table-column prop="VisitName" :label="$t('download:table:VisitName')" v-if="IsImageSegment" sortable />
|
||||||
prop="VisitName"
|
|
||||||
:label="$t('download:table:VisitName')"
|
|
||||||
v-if="IsImageSegment"
|
|
||||||
sortable
|
|
||||||
/>
|
|
||||||
<!--任务名称-->
|
<!--任务名称-->
|
||||||
<el-table-column
|
<el-table-column prop="TaskBlindName" :label="$t('upload:dicom:table:taskBlindName')" v-else sortable />
|
||||||
prop="TaskBlindName"
|
|
||||||
:label="$t('upload:dicom:table:taskBlindName')"
|
|
||||||
v-else
|
|
||||||
sortable
|
|
||||||
/>
|
|
||||||
<!--原始检查数-->
|
<!--原始检查数-->
|
||||||
<el-table-column
|
<el-table-column prop="OrginalStudyList" :label="$t('upload:dicom:table:orginalStudyListNum')">
|
||||||
prop="OrginalStudyList"
|
|
||||||
:label="$t('upload:dicom:table:orginalStudyListNum')"
|
|
||||||
>
|
|
||||||
<template slot-scope="scope">
|
<template slot-scope="scope">
|
||||||
<el-button
|
<el-button v-if="
|
||||||
v-if="
|
|
||||||
scope.row.OrginalStudyList &&
|
scope.row.OrginalStudyList &&
|
||||||
scope.row.OrginalStudyList.length >= 1
|
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>
|
<span>{{ scope.row.OrginalStudyList.length }}</span>
|
||||||
</el-button>
|
</el-button>
|
||||||
<span v-else>0</span>
|
<span v-else>0</span>
|
||||||
|
|
@ -47,13 +30,9 @@
|
||||||
<!--后处理检查数-->
|
<!--后处理检查数-->
|
||||||
<el-table-column prop="UploadStudyList" :label="$t('upload:dicom:table:uploadStudyListNum')">
|
<el-table-column prop="UploadStudyList" :label="$t('upload:dicom:table:uploadStudyListNum')">
|
||||||
<template slot-scope="scope">
|
<template slot-scope="scope">
|
||||||
<el-button
|
<el-button v-if="
|
||||||
v-if="
|
|
||||||
scope.row.UploadStudyList && scope.row.UploadStudyList.length >= 1
|
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>
|
<span>{{ scope.row.UploadStudyList.length }}</span>
|
||||||
</el-button>
|
</el-button>
|
||||||
<span v-else>0</span>
|
<span v-else>0</span>
|
||||||
|
|
@ -63,57 +42,27 @@
|
||||||
<template slot-scope="scope">
|
<template slot-scope="scope">
|
||||||
<div class="btnBox">
|
<div class="btnBox">
|
||||||
<!--上传--->
|
<!--上传--->
|
||||||
<form
|
<form id="inputForm" :ref="`uploadForm_${scope.row.Id}`" enctype="multipart/form-data" v-if="!forbid">
|
||||||
id="inputForm"
|
|
||||||
:ref="`uploadForm_${scope.row.Id}`"
|
|
||||||
enctype="multipart/form-data"
|
|
||||||
v-if="!forbid"
|
|
||||||
>
|
|
||||||
<div class="form-group" style="margin-right: 10px">
|
<div class="form-group" style="margin-right: 10px">
|
||||||
<div :id="`directoryInputWrapper_${scope.row.Id}`" class="btn btn-link file-input">
|
<div :id="`directoryInputWrapper_${scope.row.Id}`" class="btn btn-link file-input">
|
||||||
<el-button
|
<el-button circle icon="el-icon-upload2" :disabled="btnLoading" :loading="btnLoading"
|
||||||
circle
|
:title="$t('upload:dicom:button:upload')" />
|
||||||
icon="el-icon-upload2"
|
<input :title="$t('upload:dicom:button:upload')" type="file" :name="`file_${scope.row.VisitTaskId}`"
|
||||||
:disabled="btnLoading"
|
:ref="`pathClear_${scope.row.VisitTaskId}`" :disabled="btnLoading" webkitdirectory multiple @change="
|
||||||
: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)
|
($event) => beginScanFiles($event, scope.row.VisitTaskId)
|
||||||
"
|
" />
|
||||||
/>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</form>
|
</form>
|
||||||
<!--预览--->
|
<!--预览--->
|
||||||
<el-button
|
<el-button circle icon="el-icon-view" :disabled="!scope.row.UploadStudyList ||
|
||||||
circle
|
|
||||||
icon="el-icon-view"
|
|
||||||
:disabled="!scope.row.UploadStudyList ||
|
|
||||||
scope.row.UploadStudyList.length <= 0
|
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
|
<el-button circle :disabled="!scope.row.UploadStudyList ||
|
||||||
circle
|
|
||||||
:disabled="!scope.row.UploadStudyList ||
|
|
||||||
scope.row.UploadStudyList.length <= 0 ||
|
scope.row.UploadStudyList.length <= 0 ||
|
||||||
scope.row.ReadingTaskState === 2
|
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>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
|
|
@ -125,36 +74,18 @@
|
||||||
<form id="inputForm" ref="uploadForm" enctype="multipart/form-data">
|
<form id="inputForm" ref="uploadForm" enctype="multipart/form-data">
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<div id="directoryInputWrapper" class="btn btn-link file-input">
|
<div id="directoryInputWrapper" class="btn btn-link file-input">
|
||||||
<el-button
|
<el-button type="primary" :disabled="btnLoading" :loading="btnLoading" size="mini">{{
|
||||||
type="primary"
|
$t('upload:dicom:button:batchUpload') }}</el-button>
|
||||||
:disabled="btnLoading"
|
<input type="file" name="file" ref="pathClear" :disabled="btnLoading" webkitdirectory multiple title
|
||||||
:loading="btnLoading"
|
@change="beginScanFiles($event)" />
|
||||||
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>
|
||||||
</div>
|
</div>
|
||||||
</form>
|
</form>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<!--上传列表-->
|
<!--上传列表-->
|
||||||
<el-table
|
<el-table ref="dicomFilesTable" v-adaptive="{ bottomOffset: 80 }" height="100" :data="uploadQueues"
|
||||||
ref="dicomFilesTable"
|
class="dicomFiles-table" @selection-change="handleSelectionChange">
|
||||||
v-adaptive="{ bottomOffset: 80 }"
|
|
||||||
height="100"
|
|
||||||
:data="uploadQueues"
|
|
||||||
class="dicomFiles-table"
|
|
||||||
@selection-change="handleSelectionChange"
|
|
||||||
>
|
|
||||||
<el-table-column type="index" width="40" />
|
<el-table-column type="index" width="40" />
|
||||||
<el-table-column min-width="200" show-overflow-tooltip>
|
<el-table-column min-width="200" show-overflow-tooltip>
|
||||||
<template slot="header">
|
<template slot="header">
|
||||||
|
|
@ -180,9 +111,8 @@
|
||||||
<span v-else style="color: #f44336">N/A</span>
|
<span v-else style="color: #f44336">N/A</span>
|
||||||
</div>
|
</div>
|
||||||
<div style="display: inline-block; margin-right: 2px">
|
<div style="display: inline-block; margin-right: 2px">
|
||||||
<span
|
<span v-if="scope.row.dicomInfo.modality.length > 0">{{ scope.row.dicomInfo.modality.join('、')
|
||||||
v-if="scope.row.dicomInfo.modality.length > 0"
|
}},</span>
|
||||||
>{{ scope.row.dicomInfo.modality.join('、') }},</span>
|
|
||||||
<span v-else style="color: #f44336">N/A,</span>
|
<span v-else style="color: #f44336">N/A,</span>
|
||||||
</div>
|
</div>
|
||||||
<div style="display: inline-block; margin-right: 2px">
|
<div style="display: inline-block; margin-right: 2px">
|
||||||
|
|
@ -228,162 +158,123 @@
|
||||||
<span v-if="scope.row.dicomInfo.patientId">
|
<span v-if="scope.row.dicomInfo.patientId">
|
||||||
<span style="font-weight: 500">PID:</span>
|
<span style="font-weight: 500">PID:</span>
|
||||||
{{
|
{{
|
||||||
scope.row.dicomInfo.patientId }}
|
scope.row.dicomInfo.patientId }}
|
||||||
</span>
|
</span>
|
||||||
<span v-else style="color: #f44336">N/A</span>
|
<span v-else style="color: #f44336">N/A</span>
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
<span :class="[scope.row.dicomInfo.patientName ? '' : 'colorOfRed']">
|
<span :class="[scope.row.dicomInfo.patientName ? '' : 'colorOfRed']">
|
||||||
{{
|
{{
|
||||||
scope.row.dicomInfo.patientName
|
scope.row.dicomInfo.patientName
|
||||||
? scope.row.dicomInfo.patientName
|
? scope.row.dicomInfo.patientName
|
||||||
: 'N/A'
|
: 'N/A'
|
||||||
}}
|
}}
|
||||||
</span>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
<span :class="[scope.row.dicomInfo.patientSex ? '' : 'colorOfRed']">
|
<span :class="[scope.row.dicomInfo.patientSex ? '' : 'colorOfRed']">
|
||||||
{{
|
{{
|
||||||
scope.row.dicomInfo.patientSex
|
scope.row.dicomInfo.patientSex
|
||||||
? scope.row.dicomInfo.patientSex
|
? scope.row.dicomInfo.patientSex
|
||||||
: 'N/A'
|
: 'N/A'
|
||||||
}},
|
}},
|
||||||
</span>
|
</span>
|
||||||
|
|
||||||
<span :class="[scope.row.dicomInfo.patientAge ? '' : 'colorOfRed']">
|
<span :class="[scope.row.dicomInfo.patientAge ? '' : 'colorOfRed']">
|
||||||
{{
|
{{
|
||||||
scope.row.dicomInfo.patientAge
|
scope.row.dicomInfo.patientAge
|
||||||
? scope.row.dicomInfo.patientAge
|
? scope.row.dicomInfo.patientAge
|
||||||
: 'N/A'
|
: 'N/A'
|
||||||
}},
|
}},
|
||||||
</span>
|
</span>
|
||||||
|
|
||||||
<span
|
<span :class="[
|
||||||
:class="[
|
|
||||||
scope.row.dicomInfo.patientBirthDate ? '' : 'colorOfRed',
|
scope.row.dicomInfo.patientBirthDate ? '' : 'colorOfRed',
|
||||||
]"
|
]">
|
||||||
>
|
|
||||||
{{
|
{{
|
||||||
scope.row.dicomInfo.patientBirthDate
|
scope.row.dicomInfo.patientBirthDate
|
||||||
? scope.row.dicomInfo.patientBirthDate
|
? scope.row.dicomInfo.patientBirthDate
|
||||||
: 'N/A'
|
: 'N/A'
|
||||||
}}
|
}}
|
||||||
</span>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column
|
<el-table-column :label="$t('trials:uploadDicomList:table:failedFileCount')" min-width="150"
|
||||||
:label="$t('trials:uploadDicomList:table:failedFileCount')"
|
show-overflow-tooltip>
|
||||||
min-width="150"
|
|
||||||
show-overflow-tooltip
|
|
||||||
>
|
|
||||||
<template slot-scope="scope">
|
<template slot-scope="scope">
|
||||||
<el-progress
|
<el-progress color="#409eff" :percentage="(
|
||||||
color="#409eff"
|
|
||||||
:percentage="(
|
|
||||||
(scope.row.dicomInfo.uploadFileSize * 100) /
|
(scope.row.dicomInfo.uploadFileSize * 100) /
|
||||||
(scope.row.dicomInfo.fileSize ? scope.row.dicomInfo.fileSize : 1)
|
(scope.row.dicomInfo.fileSize ? scope.row.dicomInfo.fileSize : 1)
|
||||||
).toFixed(2) * 1
|
).toFixed(2) * 1
|
||||||
"
|
" />
|
||||||
/>
|
|
||||||
<span>
|
<span>
|
||||||
{{ $t('trials:uploadDicomList:table:uploadNow')
|
{{ $t('trials:uploadDicomList:table:uploadNow')
|
||||||
}}{{ scope.row.dicomInfo.failedFileCount }}/{{
|
}}{{ scope.row.dicomInfo.failedFileCount }}/{{
|
||||||
scope.row.dicomInfo.fileCount
|
scope.row.dicomInfo.fileCount
|
||||||
}}
|
}}
|
||||||
({{
|
({{
|
||||||
(scope.row.dicomInfo.uploadFileSize / 1024 / 1024).toFixed(3)
|
(scope.row.dicomInfo.uploadFileSize / 1024 / 1024).toFixed(3)
|
||||||
}}MB/{{
|
}}MB/{{
|
||||||
(scope.row.dicomInfo.fileSize / 1024 / 1024).toFixed(3)
|
(scope.row.dicomInfo.fileSize / 1024 / 1024).toFixed(3)
|
||||||
}}MB)
|
}}MB)
|
||||||
</span>
|
</span>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
|
|
||||||
<el-table-column
|
<el-table-column :label="$t('trials:uploadDicomList:table:status')" min-width="140" show-overflow-tooltip>
|
||||||
:label="$t('trials:uploadDicomList:table:status')"
|
|
||||||
min-width="140"
|
|
||||||
show-overflow-tooltip
|
|
||||||
>
|
|
||||||
<template slot-scope="scope">
|
<template slot-scope="scope">
|
||||||
<span
|
<span v-if="
|
||||||
v-if="
|
|
||||||
!scope.row.dicomInfo.failedFileCount &&
|
!scope.row.dicomInfo.failedFileCount &&
|
||||||
!scope.row.dicomInfo.isInit
|
!scope.row.dicomInfo.isInit
|
||||||
"
|
">{{ $t('trials:uploadDicomList:table:status1') }}</span>
|
||||||
>{{ $t('trials:uploadDicomList:table:status1') }}</span>
|
<span style="color: #409eff" v-else-if="
|
||||||
<span
|
|
||||||
style="color: #409eff"
|
|
||||||
v-else-if="
|
|
||||||
!scope.row.dicomInfo.failedFileCount &&
|
!scope.row.dicomInfo.failedFileCount &&
|
||||||
scope.row.dicomInfo.isInit &&
|
scope.row.dicomInfo.isInit &&
|
||||||
btnLoading
|
btnLoading
|
||||||
"
|
">{{ $t('trials:uploadDicomList:table:status2') }}</span>
|
||||||
>{{ $t('trials:uploadDicomList:table:status2') }}</span>
|
<span style="color: #409eff" v-else-if="
|
||||||
<span
|
|
||||||
style="color: #409eff"
|
|
||||||
v-else-if="
|
|
||||||
scope.row.dicomInfo.failedFileCount <
|
scope.row.dicomInfo.failedFileCount <
|
||||||
scope.row.dicomInfo.fileCount && !scope.row.uploadState.record
|
scope.row.dicomInfo.fileCount && !scope.row.uploadState.record
|
||||||
"
|
">{{ $t('trials:uploadDicomList:table:status2') }}</span>
|
||||||
>{{ $t('trials:uploadDicomList:table:status2') }}</span>
|
<span style="color: #2cc368" v-else-if="
|
||||||
<span
|
|
||||||
style="color: #2cc368"
|
|
||||||
v-else-if="
|
|
||||||
scope.row.dicomInfo.failedFileCount ===
|
scope.row.dicomInfo.failedFileCount ===
|
||||||
scope.row.dicomInfo.fileCount
|
scope.row.dicomInfo.fileCount
|
||||||
"
|
">{{ $t('trials:uploadDicomList:table:status3') }}</span>
|
||||||
>{{ $t('trials:uploadDicomList:table:status3') }}</span>
|
<span style="color: #f66" v-else-if="
|
||||||
<span
|
|
||||||
style="color: #f66"
|
|
||||||
v-else-if="
|
|
||||||
scope.row.uploadState.record &&
|
scope.row.uploadState.record &&
|
||||||
scope.row.uploadState.record.fileCount === 0
|
scope.row.uploadState.record.fileCount === 0
|
||||||
"
|
">{{ $t('trials:uploadDicomList:table:status5') }}</span>
|
||||||
>{{ $t('trials:uploadDicomList:table:status5') }}</span>
|
|
||||||
<span style="color: #f66" v-else>
|
<span style="color: #f66" v-else>
|
||||||
{{
|
{{
|
||||||
$t('trials:uploadDicomList:table:Failed')
|
$t('trials:uploadDicomList:table:Failed')
|
||||||
}}
|
}}
|
||||||
</span>
|
</span>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column
|
<el-table-column :label="$t('trials:uploadDicomList:table:record')" min-width="140" show-overflow-tooltip>
|
||||||
:label="$t('trials:uploadDicomList:table:record')"
|
|
||||||
min-width="140"
|
|
||||||
show-overflow-tooltip
|
|
||||||
>
|
|
||||||
<template slot-scope="scope">
|
<template slot-scope="scope">
|
||||||
<el-tooltip placement="top" v-if="scope.row.uploadState.record">
|
<el-tooltip placement="top" v-if="scope.row.uploadState.record">
|
||||||
<div slot="content">
|
<div slot="content">
|
||||||
<div style="max-height: 500px; overflow-y: auto">
|
<div style="max-height: 500px; overflow-y: auto">
|
||||||
{{ $t('trials:uploadDicomList:table:Existed') }}:
|
{{ $t('trials:uploadDicomList:table:Existed') }}:
|
||||||
<div v-if="scope.row.uploadState.record.Existed.length">
|
<div v-if="scope.row.uploadState.record.Existed.length">
|
||||||
<div
|
<div v-for="item of scope.row.uploadState.record.Existed" :key="item"
|
||||||
v-for="item of scope.row.uploadState.record.Existed"
|
style="font-size: 12px; color: #baa72a">{{ item }}</div>
|
||||||
:key="item"
|
|
||||||
style="font-size: 12px; color: #baa72a"
|
|
||||||
>{{ item }}</div>
|
|
||||||
</div>
|
</div>
|
||||||
<div v-else> </div>
|
<div v-else> </div>
|
||||||
{{ $t('trials:uploadDicomList:table:Uploaded') }}:
|
{{ $t('trials:uploadDicomList:table:Uploaded') }}:
|
||||||
<div v-if="scope.row.uploadState.record.Uploaded.length">
|
<div v-if="scope.row.uploadState.record.Uploaded.length">
|
||||||
<div
|
<div v-for="item of scope.row.uploadState.record.Uploaded" :key="item"
|
||||||
v-for="item of scope.row.uploadState.record.Uploaded"
|
style="font-size: 12px; color: #24b837">{{ item }}</div>
|
||||||
:key="item"
|
|
||||||
style="font-size: 12px; color: #24b837"
|
|
||||||
>{{ item }}</div>
|
|
||||||
</div>
|
</div>
|
||||||
<div v-else> </div>
|
<div v-else> </div>
|
||||||
<br />
|
<br />
|
||||||
{{ $t('trials:uploadDicomList:table:Failed') }}:
|
{{ $t('trials:uploadDicomList:table:Failed') }}:
|
||||||
<div v-if="scope.row.uploadState.record.Failed.length">
|
<div v-if="scope.row.uploadState.record.Failed.length">
|
||||||
<div
|
<div v-for="item of scope.row.uploadState.record.Failed" :key="item"
|
||||||
v-for="item of scope.row.uploadState.record.Failed"
|
style="font-size: 12px; color: #f66">{{ item }}</div>
|
||||||
:key="item"
|
|
||||||
style="font-size: 12px; color: #f66"
|
|
||||||
>{{ item }}</div>
|
|
||||||
</div>
|
</div>
|
||||||
<div v-else> </div>
|
<div v-else> </div>
|
||||||
</div>
|
</div>
|
||||||
|
|
@ -391,19 +282,19 @@
|
||||||
<el-button size="mini" style="cursor: pointer">
|
<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
|
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
|
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
|
scope.row.uploadState.record.Failed.length
|
||||||
}}
|
}}
|
||||||
</span>
|
</span>
|
||||||
</el-button>
|
</el-button>
|
||||||
|
|
@ -411,18 +302,9 @@
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
</el-table>
|
</el-table>
|
||||||
<study-view
|
<study-view v-if="model_cfg.visible" :model_cfg="model_cfg" :IsDicom="true" :bodyPart="bodyPart"
|
||||||
v-if="model_cfg.visible"
|
:subjectVisitId="openSubjectVisitId" :modelList="modelList" :isUpload="openIsUpload"
|
||||||
:model_cfg="model_cfg"
|
:visitTaskId="openVisitTaskId" :TrialModality="TrialModality" @getList="getList" />
|
||||||
:IsDicom="true"
|
|
||||||
:bodyPart="bodyPart"
|
|
||||||
:subjectVisitId="openSubjectVisitId"
|
|
||||||
:modelList="modelList"
|
|
||||||
:isUpload="openIsUpload"
|
|
||||||
:visitTaskId="openVisitTaskId"
|
|
||||||
:TrialModality="TrialModality"
|
|
||||||
@getList="getList"
|
|
||||||
/>
|
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
<script>
|
<script>
|
||||||
|
|
@ -666,9 +548,8 @@ export default {
|
||||||
this.openIsUpload = isUpload
|
this.openIsUpload = isUpload
|
||||||
this.openSubjectVisitId = item.SubjectVisitId || item.SourceSubjectVisitId
|
this.openSubjectVisitId = item.SubjectVisitId || item.SourceSubjectVisitId
|
||||||
this.openVisitTaskId = item.VisitTaskId
|
this.openVisitTaskId = item.VisitTaskId
|
||||||
this.model_cfg.title = `${item.SubjectCode || ''} > ${
|
this.model_cfg.title = `${item.SubjectCode || ''} > ${this.IsImageSegment ? item.VisitName : item.TaskBlindName
|
||||||
this.IsImageSegment ? item.VisitName : item.TaskBlindName
|
}`
|
||||||
}`
|
|
||||||
this.modelList = item[list]
|
this.modelList = item[list]
|
||||||
this.model_cfg.visible = true
|
this.model_cfg.visible = true
|
||||||
},
|
},
|
||||||
|
|
@ -801,7 +682,7 @@ export default {
|
||||||
var validFilesCount = 0
|
var validFilesCount = 0
|
||||||
scope.uploadQueues = []
|
scope.uploadQueues = []
|
||||||
for (var i = 0; i < checkFiles.length; ++i) {
|
for (var i = 0; i < checkFiles.length; ++i) {
|
||||||
;(function (index) {
|
; (function (index) {
|
||||||
p = p.then(function () {
|
p = p.then(function () {
|
||||||
if (
|
if (
|
||||||
checkFiles[index].name.toUpperCase().indexOf('DICOMDIR') === -1
|
checkFiles[index].name.toUpperCase().indexOf('DICOMDIR') === -1
|
||||||
|
|
@ -1324,8 +1205,8 @@ export default {
|
||||||
institutionName: dicomInfo.institutionName,
|
institutionName: dicomInfo.institutionName,
|
||||||
patientId: dicomInfo.patientId,
|
patientId: dicomInfo.patientId,
|
||||||
patientName: '',
|
patientName: '',
|
||||||
patientAge: '',
|
patientAge: dicomInfo.patientAge,
|
||||||
patientSex: dicomInfo.patientSex,
|
patientSex: config.DicomStoreInfo.SubjectSex || dicomInfo.patientSex,
|
||||||
accessionNumber: dicomInfo.accNumber,
|
accessionNumber: dicomInfo.accNumber,
|
||||||
patientBirthDate: '',
|
patientBirthDate: '',
|
||||||
acquisitionTime: dicomInfo.acquisitionTime,
|
acquisitionTime: dicomInfo.acquisitionTime,
|
||||||
|
|
@ -1409,27 +1290,23 @@ export default {
|
||||||
dicomInfo.failedFileCount++
|
dicomInfo.failedFileCount++
|
||||||
Record.FileCount++
|
Record.FileCount++
|
||||||
} else {
|
} else {
|
||||||
let path = `/${params.trialId}/Image/${
|
let path = `/${params.trialId}/Image/${params.subjectId
|
||||||
params.subjectId
|
}/${params.subjectVisitId}/${dicomInfo.visitTaskId
|
||||||
}/${params.subjectVisitId}/${
|
}/${scope.getGuid(
|
||||||
dicomInfo.visitTaskId
|
dicomInfo.studyUid +
|
||||||
}/${scope.getGuid(
|
|
||||||
dicomInfo.studyUid +
|
|
||||||
v.seriesUid +
|
v.seriesUid +
|
||||||
o.instanceUid +
|
o.instanceUid +
|
||||||
params.trialId
|
params.trialId
|
||||||
)}`
|
)}`
|
||||||
if (scope.IsImageSegment) {
|
if (scope.IsImageSegment) {
|
||||||
path = `/${params.trialId}/Image/${
|
path = `/${params.trialId}/Image/${params.subjectId
|
||||||
params.subjectId
|
}/${params.subjectVisitId}/AnnotationImage/${dicomInfo.visitTaskId
|
||||||
}/${params.subjectVisitId}/AnnotationImage/${
|
}/${scope.getGuid(
|
||||||
dicomInfo.visitTaskId
|
dicomInfo.studyUid +
|
||||||
}/${scope.getGuid(
|
|
||||||
dicomInfo.studyUid +
|
|
||||||
v.seriesUid +
|
v.seriesUid +
|
||||||
o.instanceUid +
|
o.instanceUid +
|
||||||
params.trialId
|
params.trialId
|
||||||
)}`
|
)}`
|
||||||
}
|
}
|
||||||
if (scope.isClose) return
|
if (scope.isClose) return
|
||||||
let res = await dcmUpload(
|
let res = await dcmUpload(
|
||||||
|
|
@ -1759,11 +1636,9 @@ export default {
|
||||||
var token = getToken()
|
var token = getToken()
|
||||||
let trialId = this.$route.query.trialId
|
let trialId = this.$route.query.trialId
|
||||||
const routeData = this.$router.resolve({
|
const routeData = this.$router.resolve({
|
||||||
path: `/showvisitdicoms?page=upload&trialId=${trialId}&visitTaskId=${
|
path: `/showvisitdicoms?page=upload&trialId=${trialId}&visitTaskId=${this.IsImageSegment ? 'undefined' : row.VisitTaskId
|
||||||
this.IsImageSegment ? 'undefined' : row.VisitTaskId
|
}&subjectVisitId=${row.SourceSubjectVisitId
|
||||||
}&subjectVisitId=${
|
}&isReading=1&TokenKey=${token}`,
|
||||||
row.SourceSubjectVisitId
|
|
||||||
}&isReading=1&TokenKey=${token}`,
|
|
||||||
})
|
})
|
||||||
this.open = window.open(routeData.href, '_blank')
|
this.open = window.open(routeData.href, '_blank')
|
||||||
},
|
},
|
||||||
|
|
|
||||||
|
|
@ -7,44 +7,21 @@
|
||||||
<div style="margin: 10px 0">{{ $t('trials:uploadedDicoms:title:dicomUploaded') }}</div>
|
<div style="margin: 10px 0">{{ $t('trials:uploadedDicoms:title:dicomUploaded') }}</div>
|
||||||
<div class="functions" style="text-align: right">
|
<div class="functions" style="text-align: right">
|
||||||
<!-- //批量删除已上传的影像 -->
|
<!-- //批量删除已上传的影像 -->
|
||||||
<el-button
|
<el-button :disabled="deleteArr.length === 0" type="primary" size="small" icon="el-icon-delete"
|
||||||
:disabled="deleteArr.length === 0"
|
@click="handleBatchDelete">{{ $t('trials:uploadedDicoms:action:delete') }}</el-button>
|
||||||
type="primary"
|
|
||||||
size="small"
|
|
||||||
icon="el-icon-delete"
|
|
||||||
@click="handleBatchDelete"
|
|
||||||
>{{ $t('trials:uploadedDicoms:action:delete') }}</el-button>
|
|
||||||
<!-- 预览 -->
|
<!-- 预览 -->
|
||||||
<el-button
|
<el-button type="primary" icon="el-icon-view" size="small" :disabled="studyList.length === 0"
|
||||||
type="primary"
|
@click="handlePreviewAllFiles">{{ $t('trials:uploadedDicoms:action:preview') }}</el-button>
|
||||||
icon="el-icon-view"
|
|
||||||
size="small"
|
|
||||||
:disabled="studyList.length === 0"
|
|
||||||
@click="handlePreviewAllFiles"
|
|
||||||
>{{ $t('trials:uploadedDicoms:action:preview') }}</el-button>
|
|
||||||
</div>
|
</div>
|
||||||
<el-table
|
<el-table v-loading="studyLoading" :data="studyList" style="width: 100%" :row-class-name="tableRowClassName"
|
||||||
v-loading="studyLoading"
|
max-height="250" @selection-change="handleUploadedSelectionChange"
|
||||||
:data="studyList"
|
:default-sort="{ prop: 'UploadedTime', order: 'ascending' }">
|
||||||
style="width: 100%"
|
|
||||||
:row-class-name="tableRowClassName"
|
|
||||||
max-height="250"
|
|
||||||
@selection-change="handleUploadedSelectionChange"
|
|
||||||
:default-sort="{ prop: 'UploadedTime', order: 'ascending' }"
|
|
||||||
>
|
|
||||||
<el-table-column type="selection" width="55" :selectable="handleSelectable2" />
|
<el-table-column type="selection" width="55" :selectable="handleSelectable2" />
|
||||||
<!-- 检查编号 -->
|
<!-- 检查编号 -->
|
||||||
<el-table-column
|
<el-table-column prop="StudyCode" :label="$t('trials:uploadedDicoms:table:studyId')" min-width="80"
|
||||||
prop="StudyCode"
|
show-overflow-tooltip sortable>
|
||||||
:label="$t('trials:uploadedDicoms:table:studyId')"
|
|
||||||
min-width="80"
|
|
||||||
show-overflow-tooltip
|
|
||||||
sortable
|
|
||||||
>
|
|
||||||
<template slot-scope="scope">
|
<template slot-scope="scope">
|
||||||
<el-tooltip
|
<el-tooltip placement="top" v-if="
|
||||||
placement="top"
|
|
||||||
v-if="
|
|
||||||
(() => {
|
(() => {
|
||||||
var r = false
|
var r = false
|
||||||
if (scope.row.IsHaveUploadFailed) {
|
if (scope.row.IsHaveUploadFailed) {
|
||||||
|
|
@ -60,14 +37,10 @@
|
||||||
}
|
}
|
||||||
return r
|
return r
|
||||||
})()
|
})()
|
||||||
"
|
">
|
||||||
>
|
|
||||||
<div slot="content">{{ $t('trials:uploadDicomList:table:status4') }}</div>
|
<div slot="content">{{ $t('trials:uploadDicomList:table:status4') }}</div>
|
||||||
<span
|
<span class="el-icon-warning" style="color: #cbb024; cursor: pointer"
|
||||||
class="el-icon-warning"
|
v-if="scope.row.IsHaveUploadFailed"></span>
|
||||||
style="color: #cbb024; cursor: pointer"
|
|
||||||
v-if="scope.row.IsHaveUploadFailed"
|
|
||||||
></span>
|
|
||||||
</el-tooltip>
|
</el-tooltip>
|
||||||
<el-tooltip placement="top" v-if="!scope.row.IsCompleteClinicalData">
|
<el-tooltip placement="top" v-if="!scope.row.IsCompleteClinicalData">
|
||||||
<div slot="content">{{ $t('trials:crc-upload:confirm:message') }}</div>
|
<div slot="content">{{ $t('trials:crc-upload:confirm:message') }}</div>
|
||||||
|
|
@ -77,115 +50,61 @@
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<!-- 检查名称 -->
|
<!-- 检查名称 -->
|
||||||
<el-table-column
|
<el-table-column v-if="relationInfo.IsShowStudyName" prop="StudyName" :label="$t('trials:audit:table:StudyName')"
|
||||||
v-if="relationInfo.IsShowStudyName"
|
sortable />
|
||||||
prop="StudyName"
|
|
||||||
:label="$t('trials:audit:table:StudyName')"
|
|
||||||
sortable
|
|
||||||
/>
|
|
||||||
<!-- 检查类型 -->
|
<!-- 检查类型 -->
|
||||||
<el-table-column prop="ModalityForEdit" :label="$t('trials:audit:table:modality')" sortable />
|
<el-table-column prop="ModalityForEdit" :label="$t('trials:audit:table:modality')" sortable />
|
||||||
<!-- 检查设备 -->
|
<!-- 检查设备 -->
|
||||||
<el-table-column prop="Modalities" :label="$t('trials:audit:table:modality1')" sortable />
|
<el-table-column prop="Modalities" :label="$t('trials:audit:table:modality1')" sortable />
|
||||||
<!-- 检查部位 -->
|
<!-- 检查部位 -->
|
||||||
<el-table-column
|
<el-table-column prop="BodyPartForEdit" :label="$t('trials:uploadedDicoms:table:bodyPart')" min-width="100"
|
||||||
prop="BodyPartForEdit"
|
show-overflow-tooltip sortable>
|
||||||
:label="$t('trials:uploadedDicoms:table:bodyPart')"
|
<template slot-scope="scope">{{ getBodyPart(scope.row.BodyPartForEdit, scope.row.BodyPartForEditOther)
|
||||||
min-width="100"
|
}}</template>
|
||||||
show-overflow-tooltip
|
|
||||||
sortable
|
|
||||||
>
|
|
||||||
<template
|
|
||||||
slot-scope="scope"
|
|
||||||
>{{ getBodyPart(scope.row.BodyPartForEdit, scope.row.BodyPartForEditOther) }}</template>
|
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<!-- 序列数量 -->
|
<!-- 序列数量 -->
|
||||||
<el-table-column
|
<el-table-column prop="SeriesCount" :label="$t('trials:uploadedDicoms:table:seriesCount')" min-width="100"
|
||||||
prop="SeriesCount"
|
show-overflow-tooltip sortable />
|
||||||
:label="$t('trials:uploadedDicoms:table:seriesCount')"
|
|
||||||
min-width="100"
|
|
||||||
show-overflow-tooltip
|
|
||||||
sortable
|
|
||||||
/>
|
|
||||||
<!-- 图像数量 -->
|
<!-- 图像数量 -->
|
||||||
<el-table-column
|
<el-table-column prop="InstanceCount" :label="$t('trials:uploadedDicoms:table:instanceCount')" min-width="100"
|
||||||
prop="InstanceCount"
|
show-overflow-tooltip sortable />
|
||||||
:label="$t('trials:uploadedDicoms:table:instanceCount')"
|
|
||||||
min-width="100"
|
|
||||||
show-overflow-tooltip
|
|
||||||
sortable
|
|
||||||
/>
|
|
||||||
<!-- 检查日期 -->
|
<!-- 检查日期 -->
|
||||||
<el-table-column
|
<el-table-column prop="StudyTime" :label="$t('trials:uploadedDicoms:table:studyDate')" min-width="120"
|
||||||
prop="StudyTime"
|
show-overflow-tooltip sortable>
|
||||||
:label="$t('trials:uploadedDicoms:table:studyDate')"
|
|
||||||
min-width="120"
|
|
||||||
show-overflow-tooltip
|
|
||||||
sortable
|
|
||||||
>
|
|
||||||
<template slot-scope="scope">
|
<template slot-scope="scope">
|
||||||
{{
|
{{
|
||||||
scope.row.StudyTime
|
scope.row.StudyTime
|
||||||
? moment(scope.row.StudyTime).format('YYYY-MM-DD')
|
? moment(scope.row.StudyTime).format('YYYY-MM-DD')
|
||||||
: ''
|
: ''
|
||||||
}}
|
}}
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<!-- 更新时间 -->
|
<!-- 更新时间 -->
|
||||||
<el-table-column
|
<el-table-column prop="UpdateTime" :label="$t('trials:uploadedDicoms:table:UpdateTime')" min-width="120"
|
||||||
prop="UpdateTime"
|
show-overflow-tooltip sortable />
|
||||||
:label="$t('trials:uploadedDicoms:table:UpdateTime')"
|
|
||||||
min-width="120"
|
|
||||||
show-overflow-tooltip
|
|
||||||
sortable
|
|
||||||
/>
|
|
||||||
<!-- 上传时间 -->
|
<!-- 上传时间 -->
|
||||||
<el-table-column
|
<el-table-column prop="UploadedTime" :label="$t('trials:uploadedDicoms:table:uploadedTime')" min-width="120"
|
||||||
prop="UploadedTime"
|
show-overflow-tooltip sortable />
|
||||||
:label="$t('trials:uploadedDicoms:table:uploadedTime')"
|
|
||||||
min-width="120"
|
|
||||||
show-overflow-tooltip
|
|
||||||
sortable
|
|
||||||
/>
|
|
||||||
<el-table-column :label="$t('common:action:action')" min-width="260" fixed="right">
|
<el-table-column :label="$t('common:action:action')" min-width="260" fixed="right">
|
||||||
<template slot-scope="scope">
|
<template slot-scope="scope">
|
||||||
<!-- 预览 -->
|
<!-- 预览 -->
|
||||||
<el-button
|
<el-button icon="el-icon-view" :disabled="scope.row.SeriesCount === 0"
|
||||||
icon="el-icon-view"
|
:title="$t('trials:uploadedDicoms:action:preview')" circle @click="handleViewStudy(scope.row)" />
|
||||||
:disabled="scope.row.SeriesCount === 0"
|
|
||||||
:title="$t('trials:uploadedDicoms:action:preview')"
|
|
||||||
circle
|
|
||||||
@click="handleViewStudy(scope.row)"
|
|
||||||
/>
|
|
||||||
<!-- 上传临床数据 -->
|
<!-- 上传临床数据 -->
|
||||||
<el-button
|
<el-button icon="el-icon-upload2" v-if="
|
||||||
icon="el-icon-upload2"
|
|
||||||
v-if="
|
|
||||||
['PT、CT', 'CT、PT', 'PET-CT'].includes(scope.row.Modalities) &&
|
['PT、CT', 'CT、PT', 'PET-CT'].includes(scope.row.Modalities) &&
|
||||||
relationInfo.IsHaveStudyClinicalData
|
relationInfo.IsHaveStudyClinicalData
|
||||||
"
|
" :disabled="!isAfresh && data.SubmitState === 2 && data.SubmitTime && moment(data.SubmitTime).isAfter(moment(scope.row.UploadedTime))"
|
||||||
:disabled="!isAfresh && data.SubmitState === 2 && data.SubmitTime && moment(data.SubmitTime).isAfter(moment(scope.row.UploadedTime))"
|
:title="$t('trials:workbench:title:UploadClinicalData')" circle @click="handleUploadPetData(scope.row)" />
|
||||||
:title="$t('trials:workbench:title:UploadClinicalData')"
|
|
||||||
circle
|
|
||||||
@click="handleUploadPetData(scope.row)"
|
|
||||||
/>
|
|
||||||
<!-- 编辑 -->
|
<!-- 编辑 -->
|
||||||
<el-button
|
<el-button icon="el-icon-edit-outline" v-hasPermi="['trials:trials-panel:visit:crc-upload:edit']"
|
||||||
icon="el-icon-edit-outline"
|
|
||||||
v-hasPermi="['trials:trials-panel:visit:crc-upload:edit']"
|
|
||||||
:title="$t('common:button:edit')"
|
:title="$t('common:button:edit')"
|
||||||
:disabled="!isAfresh && data.SubmitState === 2 && data.SubmitTime && moment(data.SubmitTime).isAfter(moment(scope.row.UploadedTime))"
|
:disabled="!isAfresh && data.SubmitState === 2 && data.SubmitTime && moment(data.SubmitTime).isAfter(moment(scope.row.UploadedTime))"
|
||||||
circle
|
circle @click="handleEditStudy(scope.row)" />
|
||||||
@click="handleEditStudy(scope.row)"
|
|
||||||
/>
|
|
||||||
<!-- 删除 :disabled="scope.row.IsDeleted"-->
|
<!-- 删除 :disabled="scope.row.IsDeleted"-->
|
||||||
<el-button
|
<el-button icon="el-icon-delete" :title="$t('trials:uploadedDicoms:action:delete')" circle
|
||||||
icon="el-icon-delete"
|
|
||||||
:title="$t('trials:uploadedDicoms:action:delete')"
|
|
||||||
circle
|
|
||||||
:disabled="!isAfresh && data.SubmitState === 2 && data.SubmitTime && moment(data.SubmitTime).isAfter(moment(scope.row.UploadedTime))"
|
:disabled="!isAfresh && data.SubmitState === 2 && data.SubmitTime && moment(data.SubmitTime).isAfter(moment(scope.row.UploadedTime))"
|
||||||
@click="handleDeleteStudy(scope.row)"
|
@click="handleDeleteStudy(scope.row)" />
|
||||||
/>
|
|
||||||
<!-- <el-button-->
|
<!-- <el-button-->
|
||||||
<!-- icon="el-icon-toilet-paper"-->
|
<!-- icon="el-icon-toilet-paper"-->
|
||||||
<!-- circle-->
|
<!-- circle-->
|
||||||
|
|
@ -208,31 +127,18 @@
|
||||||
<div id="directoryInputWrapper" class="btn btn-link file-input">
|
<div id="directoryInputWrapper" class="btn btn-link file-input">
|
||||||
<el-button type="primary" :disabled="btnLoading" :loading="btnLoading" size="small">
|
<el-button type="primary" :disabled="btnLoading" :loading="btnLoading" size="small">
|
||||||
{{
|
{{
|
||||||
$t('trials:uploadedDicomsicom:button:selectFolder')
|
$t('trials:uploadedDicomsicom:button:selectFolder')
|
||||||
}}
|
}}
|
||||||
</el-button>
|
</el-button>
|
||||||
<input
|
<input type="file" name="file" ref="pathClear" :disabled="btnLoading" webkitdirectory multiple title
|
||||||
type="file"
|
@change="beginScanFiles($event)" />
|
||||||
name="file"
|
|
||||||
ref="pathClear"
|
|
||||||
:disabled="btnLoading"
|
|
||||||
webkitdirectory
|
|
||||||
multiple
|
|
||||||
title
|
|
||||||
@change="beginScanFiles($event)"
|
|
||||||
/>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</form>
|
</form>
|
||||||
<div class="drag" ref="drag" @dragover="handleDragover" @drop="handleDrop">
|
<div class="drag" ref="drag" @dragover="handleDragover" @drop="handleDrop">
|
||||||
<!-- 文件列表 -->
|
<!-- 文件列表 -->
|
||||||
<el-table
|
<el-table ref="dicomFilesTable" :data="uploadQueues" :row-key="(row) => row.studyIndex"
|
||||||
ref="dicomFilesTable"
|
class="dicomFiles-table" @selection-change="handleSelectionChange">
|
||||||
:data="uploadQueues"
|
|
||||||
:row-key="(row) => row.studyIndex"
|
|
||||||
class="dicomFiles-table"
|
|
||||||
@selection-change="handleSelectionChange"
|
|
||||||
>
|
|
||||||
<el-table-column type="selection" width="55" :selectable="handleSelectable" />
|
<el-table-column type="selection" width="55" :selectable="handleSelectable" />
|
||||||
<el-table-column type="index" width="40" />
|
<el-table-column type="index" width="40" />
|
||||||
<el-table-column min-width="200" show-overflow-tooltip>
|
<el-table-column min-width="200" show-overflow-tooltip>
|
||||||
|
|
@ -259,21 +165,16 @@
|
||||||
<span v-else style="color: #f44336">N/A</span>
|
<span v-else style="color: #f44336">N/A</span>
|
||||||
</div>
|
</div>
|
||||||
<div style="display: inline-block; margin-right: 2px">
|
<div style="display: inline-block; margin-right: 2px">
|
||||||
<span
|
<span v-if="scope.row.dicomInfo.modality.length > 0">{{ scope.row.dicomInfo.modality.join('、')
|
||||||
v-if="scope.row.dicomInfo.modality.length > 0"
|
}},</span>
|
||||||
>{{ scope.row.dicomInfo.modality.join('、') }},</span>
|
|
||||||
<span v-else style="color: #f44336">N/A,</span>
|
<span v-else style="color: #f44336">N/A,</span>
|
||||||
</div>
|
</div>
|
||||||
<div style="display: inline-block; margin-right: 2px">
|
<div style="display: inline-block; margin-right: 2px">
|
||||||
<span
|
<span v-if="scope.row.seriesList.length">{{ scope.row.seriesList.length }} Series,</span>
|
||||||
v-if="scope.row.seriesList.length"
|
|
||||||
>{{ scope.row.seriesList.length }} Series,</span>
|
|
||||||
<span v-else style="color: #f44336">N/A,</span>
|
<span v-else style="color: #f44336">N/A,</span>
|
||||||
</div>
|
</div>
|
||||||
<div style="display: inline-block">
|
<div style="display: inline-block">
|
||||||
<span
|
<span v-if="scope.row.fileList.length">{{ scope.row.fileList.length }} Instances</span>
|
||||||
v-if="scope.row.fileList.length"
|
|
||||||
>{{ scope.row.fileList.length }} Instances</span>
|
|
||||||
<span v-else style="color: #f44336">N/A</span>
|
<span v-else style="color: #f44336">N/A</span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
@ -284,9 +185,7 @@
|
||||||
<span v-else style="color: #f44336">N/A,</span>
|
<span v-else style="color: #f44336">N/A,</span>
|
||||||
</div>
|
</div>
|
||||||
<div style="display: inline-block">
|
<div style="display: inline-block">
|
||||||
<span
|
<span v-if="scope.row.dicomInfo.description">{{ scope.row.dicomInfo.description }}</span>
|
||||||
v-if="scope.row.dicomInfo.description"
|
|
||||||
>{{ scope.row.dicomInfo.description }}</span>
|
|
||||||
<span v-else style="color: #f44336">N/A</span>
|
<span v-else style="color: #f44336">N/A</span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
@ -306,7 +205,7 @@
|
||||||
</div>
|
</div>
|
||||||
<span>
|
<span>
|
||||||
{{
|
{{
|
||||||
$t('trials:uploadDicomList:table:patientInfo')
|
$t('trials:uploadDicomList:table:patientInfo')
|
||||||
}}
|
}}
|
||||||
</span>
|
</span>
|
||||||
</el-tooltip>
|
</el-tooltip>
|
||||||
|
|
@ -317,180 +216,135 @@
|
||||||
<span v-if="scope.row.dicomInfo.patientId">
|
<span v-if="scope.row.dicomInfo.patientId">
|
||||||
<span style="font-weight: 500">PID:</span>
|
<span style="font-weight: 500">PID:</span>
|
||||||
{{
|
{{
|
||||||
scope.row.dicomInfo.patientId }}
|
scope.row.dicomInfo.patientId }}
|
||||||
</span>
|
</span>
|
||||||
<span v-else style="color: #f44336">N/A</span>
|
<span v-else style="color: #f44336">N/A</span>
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
<span
|
<span :class="[
|
||||||
:class="[
|
|
||||||
scope.row.dicomInfo.patientName ? '' : 'colorOfRed',
|
scope.row.dicomInfo.patientName ? '' : 'colorOfRed',
|
||||||
]"
|
]">
|
||||||
>
|
|
||||||
{{
|
{{
|
||||||
scope.row.dicomInfo.patientName
|
scope.row.dicomInfo.patientName
|
||||||
? scope.row.dicomInfo.patientName
|
? scope.row.dicomInfo.patientName
|
||||||
: 'N/A'
|
: 'N/A'
|
||||||
}}
|
}}
|
||||||
</span>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
<span
|
<span :class="[
|
||||||
:class="[
|
|
||||||
scope.row.dicomInfo.patientSex ? '' : 'colorOfRed',
|
scope.row.dicomInfo.patientSex ? '' : 'colorOfRed',
|
||||||
]"
|
]">
|
||||||
>
|
|
||||||
{{
|
{{
|
||||||
scope.row.dicomInfo.patientSex
|
scope.row.dicomInfo.patientSex
|
||||||
? scope.row.dicomInfo.patientSex
|
? scope.row.dicomInfo.patientSex
|
||||||
: 'N/A'
|
: 'N/A'
|
||||||
}},
|
}},
|
||||||
</span>
|
</span>
|
||||||
|
|
||||||
<span
|
<span :class="[
|
||||||
:class="[
|
|
||||||
scope.row.dicomInfo.patientAge ? '' : 'colorOfRed',
|
scope.row.dicomInfo.patientAge ? '' : 'colorOfRed',
|
||||||
]"
|
]">
|
||||||
>
|
|
||||||
{{
|
{{
|
||||||
scope.row.dicomInfo.patientAge
|
scope.row.dicomInfo.patientAge
|
||||||
? scope.row.dicomInfo.patientAge
|
? scope.row.dicomInfo.patientAge
|
||||||
: 'N/A'
|
: 'N/A'
|
||||||
}},
|
}},
|
||||||
</span>
|
</span>
|
||||||
|
|
||||||
<span
|
<span :class="[
|
||||||
:class="[
|
|
||||||
scope.row.dicomInfo.patientBirthDate ? '' : 'colorOfRed',
|
scope.row.dicomInfo.patientBirthDate ? '' : 'colorOfRed',
|
||||||
]"
|
]">
|
||||||
>
|
|
||||||
{{
|
{{
|
||||||
scope.row.dicomInfo.patientBirthDate
|
scope.row.dicomInfo.patientBirthDate
|
||||||
? scope.row.dicomInfo.patientBirthDate
|
? scope.row.dicomInfo.patientBirthDate
|
||||||
: 'N/A'
|
: 'N/A'
|
||||||
}}
|
}}
|
||||||
</span>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column
|
<el-table-column :label="$t('trials:uploadDicomList:table:failedFileCount')" min-width="150"
|
||||||
:label="$t('trials:uploadDicomList:table:failedFileCount')"
|
show-overflow-tooltip>
|
||||||
min-width="150"
|
|
||||||
show-overflow-tooltip
|
|
||||||
>
|
|
||||||
<!--:percentage="
|
<!--:percentage="
|
||||||
(scope.row.dicomInfo.failedFileCount * 100) /
|
(scope.row.dicomInfo.failedFileCount * 100) /
|
||||||
scope.row.dicomInfo.fileCount
|
scope.row.dicomInfo.fileCount
|
||||||
"
|
"
|
||||||
:show-text="false"--->
|
:show-text="false"--->
|
||||||
<template slot-scope="scope">
|
<template slot-scope="scope">
|
||||||
<el-progress
|
<el-progress color="#409eff" :percentage="(
|
||||||
color="#409eff"
|
|
||||||
:percentage="(
|
|
||||||
(scope.row.dicomInfo.uploadFileSize * 100) /
|
(scope.row.dicomInfo.uploadFileSize * 100) /
|
||||||
(scope.row.dicomInfo.fileSize ? scope.row.dicomInfo.fileSize : 1)
|
(scope.row.dicomInfo.fileSize ? scope.row.dicomInfo.fileSize : 1)
|
||||||
).toFixed(2) * 1
|
).toFixed(2) * 1
|
||||||
"
|
" />
|
||||||
/>
|
|
||||||
<span>
|
<span>
|
||||||
{{ $t('trials:uploadDicomList:table:uploadNow')
|
{{ $t('trials:uploadDicomList:table:uploadNow')
|
||||||
}}{{ scope.row.dicomInfo.failedFileCount }}/{{
|
}}{{ scope.row.dicomInfo.failedFileCount }}/{{
|
||||||
scope.row.dicomInfo.fileCount
|
scope.row.dicomInfo.fileCount
|
||||||
}}
|
}}
|
||||||
({{
|
({{
|
||||||
(scope.row.dicomInfo.uploadFileSize / 1024 / 1024).toFixed(3)
|
(scope.row.dicomInfo.uploadFileSize / 1024 / 1024).toFixed(3)
|
||||||
}}MB/{{
|
}}MB/{{
|
||||||
(scope.row.dicomInfo.fileSize / 1024 / 1024).toFixed(3)
|
(scope.row.dicomInfo.fileSize / 1024 / 1024).toFixed(3)
|
||||||
}}MB)
|
}}MB)
|
||||||
</span>
|
</span>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
|
|
||||||
<el-table-column
|
<el-table-column :label="$t('trials:uploadDicomList:table:status')" min-width="140" show-overflow-tooltip>
|
||||||
:label="$t('trials:uploadDicomList:table:status')"
|
|
||||||
min-width="140"
|
|
||||||
show-overflow-tooltip
|
|
||||||
>
|
|
||||||
<template slot-scope="scope">
|
<template slot-scope="scope">
|
||||||
<span
|
<span v-if="
|
||||||
v-if="
|
|
||||||
!scope.row.dicomInfo.failedFileCount &&
|
!scope.row.dicomInfo.failedFileCount &&
|
||||||
!scope.row.dicomInfo.isInit
|
!scope.row.dicomInfo.isInit
|
||||||
"
|
">{{ $t('trials:uploadDicomList:table:status1') }}</span>
|
||||||
>{{ $t('trials:uploadDicomList:table:status1') }}</span>
|
<span style="color: #409eff" v-else-if="
|
||||||
<span
|
|
||||||
style="color: #409eff"
|
|
||||||
v-else-if="
|
|
||||||
!scope.row.dicomInfo.failedFileCount &&
|
!scope.row.dicomInfo.failedFileCount &&
|
||||||
scope.row.dicomInfo.isInit &&
|
scope.row.dicomInfo.isInit &&
|
||||||
btnLoading
|
btnLoading
|
||||||
"
|
">{{ $t('trials:uploadDicomList:table:status2') }}</span>
|
||||||
>{{ $t('trials:uploadDicomList:table:status2') }}</span>
|
<span style="color: #409eff" v-else-if="
|
||||||
<span
|
|
||||||
style="color: #409eff"
|
|
||||||
v-else-if="
|
|
||||||
scope.row.dicomInfo.failedFileCount <
|
scope.row.dicomInfo.failedFileCount <
|
||||||
scope.row.dicomInfo.fileCount &&
|
scope.row.dicomInfo.fileCount &&
|
||||||
!scope.row.uploadState.record
|
!scope.row.uploadState.record
|
||||||
"
|
">{{ $t('trials:uploadDicomList:table:status2') }}</span>
|
||||||
>{{ $t('trials:uploadDicomList:table:status2') }}</span>
|
<span style="color: #2cc368" v-else-if="
|
||||||
<span
|
|
||||||
style="color: #2cc368"
|
|
||||||
v-else-if="
|
|
||||||
scope.row.dicomInfo.failedFileCount ===
|
scope.row.dicomInfo.failedFileCount ===
|
||||||
scope.row.dicomInfo.fileCount
|
scope.row.dicomInfo.fileCount
|
||||||
"
|
">{{ $t('trials:uploadDicomList:table:status3') }}</span>
|
||||||
>{{ $t('trials:uploadDicomList:table:status3') }}</span>
|
<span style="color: #f66" v-else-if="
|
||||||
<span
|
|
||||||
style="color: #f66"
|
|
||||||
v-else-if="
|
|
||||||
scope.row.uploadState.record &&
|
scope.row.uploadState.record &&
|
||||||
scope.row.uploadState.record.fileCount === 0
|
scope.row.uploadState.record.fileCount === 0
|
||||||
"
|
">{{ $t('trials:uploadDicomList:table:status5') }}</span>
|
||||||
>{{ $t('trials:uploadDicomList:table:status5') }}</span>
|
|
||||||
<span style="color: #f66" v-else>
|
<span style="color: #f66" v-else>
|
||||||
{{
|
{{
|
||||||
$t('trials:uploadDicomList:table:Failed')
|
$t('trials:uploadDicomList:table:Failed')
|
||||||
}}
|
}}
|
||||||
</span>
|
</span>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column
|
<el-table-column :label="$t('trials:uploadDicomList:table:record')" min-width="140" show-overflow-tooltip>
|
||||||
:label="$t('trials:uploadDicomList:table:record')"
|
|
||||||
min-width="140"
|
|
||||||
show-overflow-tooltip
|
|
||||||
>
|
|
||||||
<template slot-scope="scope">
|
<template slot-scope="scope">
|
||||||
<el-tooltip placement="top" v-if="scope.row.uploadState.record">
|
<el-tooltip placement="top" v-if="scope.row.uploadState.record">
|
||||||
<div slot="content">
|
<div slot="content">
|
||||||
<div style="max-height: 500px; overflow-y: auto">
|
<div style="max-height: 500px; overflow-y: auto">
|
||||||
{{ $t('trials:uploadDicomList:table:Existed') }}:
|
{{ $t('trials:uploadDicomList:table:Existed') }}:
|
||||||
<div v-if="scope.row.uploadState.record.Existed.length">
|
<div v-if="scope.row.uploadState.record.Existed.length">
|
||||||
<div
|
<div v-for="item of scope.row.uploadState.record.Existed" :key="item"
|
||||||
v-for="item of scope.row.uploadState.record.Existed"
|
style="font-size: 12px; color: #baa72a">{{ item }}</div>
|
||||||
:key="item"
|
|
||||||
style="font-size: 12px; color: #baa72a"
|
|
||||||
>{{ item }}</div>
|
|
||||||
</div>
|
</div>
|
||||||
<div v-else> </div>
|
<div v-else> </div>
|
||||||
{{ $t('trials:uploadDicomList:table:Uploaded') }}:
|
{{ $t('trials:uploadDicomList:table:Uploaded') }}:
|
||||||
<div v-if="scope.row.uploadState.record.Uploaded.length">
|
<div v-if="scope.row.uploadState.record.Uploaded.length">
|
||||||
<div
|
<div v-for="item of scope.row.uploadState.record.Uploaded" :key="item"
|
||||||
v-for="item of scope.row.uploadState.record.Uploaded"
|
style="font-size: 12px; color: #24b837">{{ item }}</div>
|
||||||
:key="item"
|
|
||||||
style="font-size: 12px; color: #24b837"
|
|
||||||
>{{ item }}</div>
|
|
||||||
</div>
|
</div>
|
||||||
<div v-else> </div>
|
<div v-else> </div>
|
||||||
<br />
|
<br />
|
||||||
{{ $t('trials:uploadDicomList:table:Failed') }}:
|
{{ $t('trials:uploadDicomList:table:Failed') }}:
|
||||||
<div v-if="scope.row.uploadState.record.Failed.length">
|
<div v-if="scope.row.uploadState.record.Failed.length">
|
||||||
<div
|
<div v-for="item of scope.row.uploadState.record.Failed" :key="item"
|
||||||
v-for="item of scope.row.uploadState.record.Failed"
|
style="font-size: 12px; color: #f66">{{ item }}</div>
|
||||||
:key="item"
|
|
||||||
style="font-size: 12px; color: #f66"
|
|
||||||
>{{ item }}</div>
|
|
||||||
</div>
|
</div>
|
||||||
<div v-else> </div>
|
<div v-else> </div>
|
||||||
</div>
|
</div>
|
||||||
|
|
@ -498,19 +352,19 @@
|
||||||
<el-button size="mini" style="cursor: pointer">
|
<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
|
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
|
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
|
scope.row.uploadState.record.Failed.length
|
||||||
}}
|
}}
|
||||||
</span>
|
</span>
|
||||||
</el-button>
|
</el-button>
|
||||||
|
|
@ -521,33 +375,21 @@
|
||||||
<template slot-scope="scope">
|
<template slot-scope="scope">
|
||||||
<!-- 预览 -->
|
<!-- 预览 -->
|
||||||
<!-- :disabled="scope.row.dicomInfo.failedFileCount < scope.row.dicomInfo.fileCount && scope.row.dicomInfo.failedFileCount !== 0"-->
|
<!-- :disabled="scope.row.dicomInfo.failedFileCount < scope.row.dicomInfo.fileCount && scope.row.dicomInfo.failedFileCount !== 0"-->
|
||||||
<el-button
|
<el-button icon="el-icon-view" circle :disabled="(scope.row.uploadState.stateCode !== '' &&
|
||||||
icon="el-icon-view"
|
|
||||||
circle
|
|
||||||
:disabled="(scope.row.uploadState.stateCode !== '' &&
|
|
||||||
scope.row.dicomInfo.failedFileCount <
|
scope.row.dicomInfo.failedFileCount <
|
||||||
scope.row.dicomInfo.fileCount &&
|
scope.row.dicomInfo.fileCount &&
|
||||||
!scope.row.uploadState.record) ||
|
!scope.row.uploadState.record) ||
|
||||||
btnLoading
|
btnLoading
|
||||||
"
|
" :title="$t('trials:uploadedDicoms:action:preview')" size="small"
|
||||||
:title="$t('trials:uploadedDicoms:action:preview')"
|
@click="handlePreview(scope.row.dicomInfo.studyUid)" />
|
||||||
size="small"
|
|
||||||
@click="handlePreview(scope.row.dicomInfo.studyUid)"
|
|
||||||
/>
|
|
||||||
<!-- 移除 -->
|
<!-- 移除 -->
|
||||||
<el-button
|
<el-button icon="el-icon-delete" circle :title="$t('trials:uploadedDicoms:action:delete')" size="small"
|
||||||
icon="el-icon-delete"
|
|
||||||
circle
|
|
||||||
:title="$t('trials:uploadedDicoms:action:delete')"
|
|
||||||
size="small"
|
|
||||||
:disabled="(scope.row.uploadState.stateCode !== '' &&
|
:disabled="(scope.row.uploadState.stateCode !== '' &&
|
||||||
scope.row.dicomInfo.failedFileCount <
|
scope.row.dicomInfo.failedFileCount <
|
||||||
scope.row.dicomInfo.fileCount &&
|
scope.row.dicomInfo.fileCount &&
|
||||||
!scope.row.uploadState.record) ||
|
!scope.row.uploadState.record) ||
|
||||||
btnLoading
|
btnLoading
|
||||||
"
|
" @click="handleDelete(scope.$index, scope.row)" />
|
||||||
@click="handleDelete(scope.$index, scope.row)"
|
|
||||||
/>
|
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
</el-table>
|
</el-table>
|
||||||
|
|
@ -560,80 +402,41 @@
|
||||||
</el-button>-->
|
</el-button>-->
|
||||||
<span style="margin-right: 10px">
|
<span style="margin-right: 10px">
|
||||||
{{
|
{{
|
||||||
$store.state.trials.uploadTip
|
$store.state.trials.uploadTip
|
||||||
}}
|
}}
|
||||||
</span>
|
</span>
|
||||||
<!-- 上传 -->
|
<!-- 上传 -->
|
||||||
<el-button
|
<el-button size="small" type="primary" :disabled="selectArr.length == 0 || !isScan" :loading="btnLoading"
|
||||||
size="small"
|
@click="beginUploadQueues">{{ $t('trials:uploadDicomList:button:upload') }}</el-button>
|
||||||
type="primary"
|
|
||||||
:disabled="selectArr.length == 0 || !isScan"
|
|
||||||
:loading="btnLoading"
|
|
||||||
@click="beginUploadQueues"
|
|
||||||
>{{ $t('trials:uploadDicomList:button:upload') }}</el-button>
|
|
||||||
</div>
|
</div>
|
||||||
</el-tab-pane>
|
</el-tab-pane>
|
||||||
<!-- pacs上传 -->
|
<!-- pacs上传 -->
|
||||||
<el-tab-pane
|
<el-tab-pane :label="$t('trials:uploadNonDicoms:tab:uploadPacs')" name="pacs" :disabled="btnLoading"
|
||||||
:label="$t('trials:uploadNonDicoms:tab:uploadPacs')"
|
v-if="relationInfo.IsPacsConnectConfiged">
|
||||||
name="pacs"
|
<uploadDicomPacs v-if="uploadActiveName === 'pacs'" ref="dicomPacs" :subjectVisitId="subjectVisitId"
|
||||||
:disabled="btnLoading"
|
:relationInfo="relationInfo" :subjectId="subjectId" @getList="getParentList" @petDataTip="petDataTip" />
|
||||||
v-if="relationInfo.IsPacsConnectConfiged"
|
|
||||||
>
|
|
||||||
<uploadDicomPacs
|
|
||||||
v-if="uploadActiveName === 'pacs'"
|
|
||||||
ref="dicomPacs"
|
|
||||||
:subjectVisitId="subjectVisitId"
|
|
||||||
:relationInfo="relationInfo"
|
|
||||||
:subjectId="subjectId"
|
|
||||||
@getList="getParentList"
|
|
||||||
@petDataTip="petDataTip"
|
|
||||||
/>
|
|
||||||
</el-tab-pane>
|
</el-tab-pane>
|
||||||
</el-tabs>
|
</el-tabs>
|
||||||
<!-- 预览影像模态框 -->
|
<!-- 预览影像模态框 -->
|
||||||
<el-dialog
|
<el-dialog v-if="previewVisible" :fullscreen="true" :show-close="true" :visible.sync="previewVisible"
|
||||||
v-if="previewVisible"
|
:title="$t('trials:uploadDicoms:title:previewLocalImage')" append-to-body>
|
||||||
:fullscreen="true"
|
|
||||||
:show-close="true"
|
|
||||||
:visible.sync="previewVisible"
|
|
||||||
:title="$t('trials:uploadDicoms:title:previewLocalImage')"
|
|
||||||
append-to-body
|
|
||||||
>
|
|
||||||
<DicomPreview :uid="uid" :studyList="uploadQueues" />
|
<DicomPreview :uid="uid" :studyList="uploadQueues" />
|
||||||
</el-dialog>
|
</el-dialog>
|
||||||
<!--pet-ct临床数据上传-->
|
<!--pet-ct临床数据上传-->
|
||||||
<el-dialog v-if="petVisible" :show-close="true" :visible.sync="petVisible" append-to-body>
|
<el-dialog v-if="petVisible" :show-close="true" :visible.sync="petVisible" append-to-body>
|
||||||
<uploadPetClinicalData
|
<uploadPetClinicalData :subject-visit-id="data.Id" :data="data" :studyData="studyData" :allow-add-or-edit="true"
|
||||||
:subject-visit-id="data.Id"
|
@getStudyInfo="getStudyInfo" />
|
||||||
:data="data"
|
|
||||||
:studyData="studyData"
|
|
||||||
:allow-add-or-edit="true"
|
|
||||||
@getStudyInfo="getStudyInfo"
|
|
||||||
/>
|
|
||||||
</el-dialog>
|
</el-dialog>
|
||||||
<!-- 校验警告信息模态框 -->
|
<!-- 校验警告信息模态框 -->
|
||||||
<el-dialog
|
<el-dialog v-if="warning_cfg.visible" :visible.sync="warning_cfg.visible" width="500px"
|
||||||
v-if="warning_cfg.visible"
|
:close-on-click-modal="false" append-to-body title="Warning" custom-class="warning-dialog">
|
||||||
:visible.sync="warning_cfg.visible"
|
|
||||||
width="500px"
|
|
||||||
:close-on-click-modal="false"
|
|
||||||
append-to-body
|
|
||||||
title="Warning"
|
|
||||||
custom-class="warning-dialog"
|
|
||||||
>
|
|
||||||
<div style="border: 1px solid #e0e0e0; padding: 10px">
|
<div style="border: 1px solid #e0e0e0; padding: 10px">
|
||||||
<!-- Information from DICOM headers not consistent with that of this subject -->
|
<!-- Information from DICOM headers not consistent with that of this subject -->
|
||||||
<div
|
<div style="color: red; font-size: 14px; margin-bottom: 10px">{{
|
||||||
style="color: red; font-size: 14px; margin-bottom: 10px"
|
$t('trials:uploadDicomList:message:informationConsistent') }}:</div>
|
||||||
>{{ $t('trials:uploadDicomList:message:informationConsistent') }}:</div>
|
|
||||||
<div v-for="(item, i) in warningArr" :key="item.index">
|
<div v-for="(item, i) in warningArr" :key="item.index">
|
||||||
<div>{{ `(${i + 1}). ACC: ${item.accNumber}` }}</div>
|
<div>{{ `(${i + 1}). ACC: ${item.accNumber}` }}</div>
|
||||||
<div
|
<div v-for="(warning, index) in item.warnings" :key="index" style="margin: 10px 0px; font-size: 13px">
|
||||||
v-for="(warning, index) in item.warnings"
|
|
||||||
:key="index"
|
|
||||||
style="margin: 10px 0px; font-size: 13px"
|
|
||||||
>
|
|
||||||
<ul>
|
<ul>
|
||||||
<li>{{ warning }}</li>
|
<li>{{ warning }}</li>
|
||||||
</ul>
|
</ul>
|
||||||
|
|
@ -641,61 +444,39 @@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div slot="footer" class="base-modal-footer">
|
<div slot="footer" class="base-modal-footer">
|
||||||
<el-button
|
<el-button size="small" type="primary" @click="handleCancelWarnVisible">{{ $t('common:button:cancel')
|
||||||
size="small"
|
}}</el-button>
|
||||||
type="primary"
|
<el-button size="small" type="primary" @click="handleContinueUpload">{{
|
||||||
@click="handleCancelWarnVisible"
|
$t('trials:uploadDicomList:button:upload')
|
||||||
>{{ $t('common:button:cancel') }}</el-button>
|
}}</el-button>
|
||||||
<el-button
|
|
||||||
size="small"
|
|
||||||
type="primary"
|
|
||||||
@click="handleContinueUpload"
|
|
||||||
>{{ $t('trials:uploadDicomList:button:upload') }}</el-button>
|
|
||||||
</div>
|
</div>
|
||||||
</el-dialog>
|
</el-dialog>
|
||||||
<el-dialog
|
<el-dialog v-if="editStudyInfoVisible" :title="$t('trials:audit:action:edit')" :visible.sync="editStudyInfoVisible"
|
||||||
v-if="editStudyInfoVisible"
|
:close-on-click-modal="false" append-to-body custom-class="base-dialog-wrapper" width="600px">
|
||||||
:title="$t('trials:audit:action:edit')"
|
<div style="
|
||||||
:visible.sync="editStudyInfoVisible"
|
|
||||||
:close-on-click-modal="false"
|
|
||||||
append-to-body
|
|
||||||
custom-class="base-dialog-wrapper"
|
|
||||||
width="600px"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
style="
|
|
||||||
padding: 10px;
|
padding: 10px;
|
||||||
border: 1px solid #e0e0e0;
|
border: 1px solid #e0e0e0;
|
||||||
max-height: 650px;
|
max-height: 650px;
|
||||||
overflow-y: auto;
|
overflow-y: auto;
|
||||||
"
|
">
|
||||||
>
|
|
||||||
<el-form ref="studyForm" :model="studyForm" label-width="100px">
|
<el-form ref="studyForm" :model="studyForm" label-width="100px">
|
||||||
<!-- 检查编号 -->
|
<!-- 检查编号 -->
|
||||||
<el-form-item :label="$t('trials:audit:table:studyId')">
|
<el-form-item :label="$t('trials:audit:table:studyId')">
|
||||||
<el-input v-model="studyForm.StudyCode" disabled />
|
<el-input v-model="studyForm.StudyCode" disabled />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<!-- 检查名称 -->
|
<!-- 检查名称 -->
|
||||||
<el-form-item
|
<el-form-item v-if="relationInfo.IsShowStudyName" :label="$t('trials:audit:table:StudyName')" prop="StudyName"
|
||||||
v-if="relationInfo.IsShowStudyName"
|
|
||||||
:label="$t('trials:audit:table:StudyName')"
|
|
||||||
prop="StudyName"
|
|
||||||
:rules="[
|
:rules="[
|
||||||
{
|
{
|
||||||
required: true,
|
required: true,
|
||||||
message: $t('common:ruleMessage:specify'),
|
message: $t('common:ruleMessage:specify'),
|
||||||
trigger: 'blur',
|
trigger: 'blur',
|
||||||
},
|
},
|
||||||
]"
|
]">
|
||||||
>
|
|
||||||
<el-radio-group v-model="studyForm.StudyName">
|
<el-radio-group v-model="studyForm.StudyName">
|
||||||
<template v-for="m in relationInfo.StudyNameList">
|
<template v-for="m in relationInfo.StudyNameList">
|
||||||
<el-radio
|
<el-radio v-if="m.IsChoose" :key="m.Name" :label="isEN ? m.EnName : m.Name"
|
||||||
v-if="m.IsChoose"
|
style="margin-bottom: 15px" />
|
||||||
:key="m.Name"
|
|
||||||
:label="isEN ? m.EnName : m.Name"
|
|
||||||
style="margin-bottom: 15px"
|
|
||||||
/>
|
|
||||||
</template>
|
</template>
|
||||||
</el-radio-group>
|
</el-radio-group>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
|
@ -704,51 +485,33 @@
|
||||||
<el-input v-model="studyForm.Modalities" disabled />
|
<el-input v-model="studyForm.Modalities" disabled />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<!-- 检查类型 -->
|
<!-- 检查类型 -->
|
||||||
<el-form-item
|
<el-form-item v-else :label="$t('trials:audit:table:modality')" prop="Modalities" :rules="[
|
||||||
v-else
|
|
||||||
:label="$t('trials:audit:table:modality')"
|
|
||||||
prop="Modalities"
|
|
||||||
:rules="[
|
|
||||||
{
|
{
|
||||||
required: true,
|
required: true,
|
||||||
message: $t('common:ruleMessage:specify'),
|
message: $t('common:ruleMessage:specify'),
|
||||||
trigger: 'blur',
|
trigger: 'blur',
|
||||||
},
|
},
|
||||||
]"
|
]">
|
||||||
>
|
|
||||||
<el-radio-group v-model="studyForm.Modality">
|
<el-radio-group v-model="studyForm.Modality">
|
||||||
<el-radio
|
<el-radio v-for="m in trialModalitys" v-show="m !== ''" :key="m" :label="m" style="margin-bottom: 15px" />
|
||||||
v-for="m in trialModalitys"
|
|
||||||
v-show="m !== ''"
|
|
||||||
:key="m"
|
|
||||||
:label="m"
|
|
||||||
style="margin-bottom: 15px"
|
|
||||||
/>
|
|
||||||
</el-radio-group>
|
</el-radio-group>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<!-- 检查部位 -->
|
<!-- 检查部位 -->
|
||||||
<el-form-item
|
<el-form-item :label="$t('trials:audit:table:bodyPart')" prop="BodyPartForEdit" :rules="[
|
||||||
:label="$t('trials:audit:table:bodyPart')"
|
|
||||||
prop="BodyPartForEdit"
|
|
||||||
:rules="[
|
|
||||||
{
|
{
|
||||||
required: studyForm.BodyPartForEditOther ? false : true,
|
required: studyForm.BodyPartForEditOther ? false : true,
|
||||||
message: $t('common:ruleMessage:specify'),
|
message: $t('common:ruleMessage:specify'),
|
||||||
trigger: 'blur',
|
trigger: 'blur',
|
||||||
},
|
},
|
||||||
]"
|
]">
|
||||||
>
|
|
||||||
<el-checkbox-group v-model="studyForm.BodyPartForEdit">
|
<el-checkbox-group v-model="studyForm.BodyPartForEdit">
|
||||||
<el-checkbox v-for="bodyPart in trialBodyPartTypes" :key="bodyPart" :label="bodyPart">
|
<el-checkbox v-for="bodyPart in trialBodyPartTypes" :key="bodyPart" :label="bodyPart">
|
||||||
{{
|
{{
|
||||||
$fd('Bodypart', bodyPart, 'Code', BodyPart, 'Name')
|
$fd('Bodypart', bodyPart, 'Code', BodyPart, 'Name')
|
||||||
}}
|
}}
|
||||||
</el-checkbox>
|
</el-checkbox>
|
||||||
<el-input
|
<el-input :placeholder="$t('trials:audit:placeholder:BodyPartForEditOther')"
|
||||||
:placeholder="$t('trials:audit:placeholder:BodyPartForEditOther')"
|
v-model.trim="studyForm.BodyPartForEditOther" style="width:150px;margin-left: 30px;"></el-input>
|
||||||
v-model.trim="studyForm.BodyPartForEditOther"
|
|
||||||
style="width:150px;margin-left: 30px;"
|
|
||||||
></el-input>
|
|
||||||
</el-checkbox-group>
|
</el-checkbox-group>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<!-- 序列数量 -->
|
<!-- 序列数量 -->
|
||||||
|
|
@ -756,38 +519,21 @@
|
||||||
<el-input v-model="studyForm.SeriesCount" disabled />
|
<el-input v-model="studyForm.SeriesCount" disabled />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<!-- 图像数量 -->
|
<!-- 图像数量 -->
|
||||||
<el-form-item
|
<el-form-item v-if="studyForm.InstanceCount" :label="$t('trials:audit:table:instanceCount')">
|
||||||
v-if="studyForm.InstanceCount"
|
|
||||||
:label="$t('trials:audit:table:instanceCount')"
|
|
||||||
>
|
|
||||||
<el-input v-model="studyForm.InstanceCount" disabled />
|
<el-input v-model="studyForm.InstanceCount" disabled />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<!-- 检查日期 -->
|
<!-- 检查日期 -->
|
||||||
<el-form-item :label="$t('trials:audit:table:studyDate')">
|
<el-form-item :label="$t('trials:audit:table:studyDate')">
|
||||||
<el-date-picker
|
<el-date-picker v-model="studyForm.StudyTime" disabled type="date" value-format="yyyy-MM-dd"
|
||||||
v-model="studyForm.StudyTime"
|
format="yyyy-MM-dd" style="width: 100%" />
|
||||||
disabled
|
|
||||||
type="date"
|
|
||||||
value-format="yyyy-MM-dd"
|
|
||||||
format="yyyy-MM-dd"
|
|
||||||
style="width: 100%"
|
|
||||||
/>
|
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-form>
|
</el-form>
|
||||||
</div>
|
</div>
|
||||||
<div slot="footer" class="dialog-footer">
|
<div slot="footer" class="dialog-footer">
|
||||||
<el-button
|
<el-button :disabled="btnLoading" size="small" type="primary" @click="editStudyInfoVisible = false">{{
|
||||||
:disabled="btnLoading"
|
$t('common:button:cancel') }}</el-button>
|
||||||
size="small"
|
<el-button :loading="btnLoading" size="small" type="primary" @click="handleUpdateStudyInfo">{{
|
||||||
type="primary"
|
$t('common:button:save') }}</el-button>
|
||||||
@click="editStudyInfoVisible = false"
|
|
||||||
>{{ $t('common:button:cancel') }}</el-button>
|
|
||||||
<el-button
|
|
||||||
:loading="btnLoading"
|
|
||||||
size="small"
|
|
||||||
type="primary"
|
|
||||||
@click="handleUpdateStudyInfo"
|
|
||||||
>{{ $t('common:button:save') }}</el-button>
|
|
||||||
</div>
|
</div>
|
||||||
</el-dialog>
|
</el-dialog>
|
||||||
</div>
|
</div>
|
||||||
|
|
@ -1104,7 +850,7 @@ export default {
|
||||||
})
|
})
|
||||||
var validFilesCount = 0
|
var validFilesCount = 0
|
||||||
for (var i = 0; i < files.length; ++i) {
|
for (var i = 0; i < files.length; ++i) {
|
||||||
;(function (index) {
|
; (function (index) {
|
||||||
p = p.then(function () {
|
p = p.then(function () {
|
||||||
if (files[index].name.toUpperCase().indexOf('DICOMDIR') === -1) {
|
if (files[index].name.toUpperCase().indexOf('DICOMDIR') === -1) {
|
||||||
validFilesCount = validFilesCount + 1
|
validFilesCount = validFilesCount + 1
|
||||||
|
|
@ -1618,7 +1364,7 @@ export default {
|
||||||
'trials:uploadDicomList:label:confirm'
|
'trials:uploadDicomList:label:confirm'
|
||||||
),
|
),
|
||||||
dangerouslyUseHTMLString: true,
|
dangerouslyUseHTMLString: true,
|
||||||
callback: (action) => {},
|
callback: (action) => { },
|
||||||
})
|
})
|
||||||
this.btnLoading = false
|
this.btnLoading = false
|
||||||
}
|
}
|
||||||
|
|
@ -1755,7 +1501,7 @@ export default {
|
||||||
dicomUploadInProgress({
|
dicomUploadInProgress({
|
||||||
trialId: scope.trialId,
|
trialId: scope.trialId,
|
||||||
studyInstanceUid: dicomInfo.studyUid,
|
studyInstanceUid: dicomInfo.studyUid,
|
||||||
}).then((res) => {})
|
}).then((res) => { })
|
||||||
}, 5000)
|
}, 5000)
|
||||||
scope.myInterval.push(t)
|
scope.myInterval.push(t)
|
||||||
let Record = {
|
let Record = {
|
||||||
|
|
@ -1787,8 +1533,8 @@ export default {
|
||||||
institutionName: dicomInfo.institutionName,
|
institutionName: dicomInfo.institutionName,
|
||||||
patientId: config.DicomStoreInfo.SubjectCode,
|
patientId: config.DicomStoreInfo.SubjectCode,
|
||||||
patientName: '',
|
patientName: '',
|
||||||
patientAge: '',
|
patientAge: dicomInfo.patientAge,
|
||||||
patientSex: config.DicomStoreInfo.SubjectSex,
|
patientSex: config.DicomStoreInfo.SubjectSex || dicomInfo.patientSex,
|
||||||
accessionNumber: dicomInfo.accNumber,
|
accessionNumber: dicomInfo.accNumber,
|
||||||
patientBirthDate: '',
|
patientBirthDate: '',
|
||||||
acquisitionTime: dicomInfo.acquisitionTime,
|
acquisitionTime: dicomInfo.acquisitionTime,
|
||||||
|
|
@ -1872,16 +1618,14 @@ export default {
|
||||||
dicomInfo.failedFileCount++
|
dicomInfo.failedFileCount++
|
||||||
Record.FileCount++
|
Record.FileCount++
|
||||||
} else {
|
} else {
|
||||||
let path = `/${params.trialId}/Image/${
|
let path = `/${params.trialId}/Image/${params.subjectId
|
||||||
params.subjectId
|
}/${params.subjectVisitId}/${dicomInfo.studyUid
|
||||||
}/${params.subjectVisitId}/${
|
}/${scope.getGuid(
|
||||||
dicomInfo.studyUid
|
dicomInfo.studyUid +
|
||||||
}/${scope.getGuid(
|
|
||||||
dicomInfo.studyUid +
|
|
||||||
v.seriesUid +
|
v.seriesUid +
|
||||||
o.instanceUid +
|
o.instanceUid +
|
||||||
params.trialId
|
params.trialId
|
||||||
)}`
|
)}`
|
||||||
if (scope.isClose) return
|
if (scope.isClose) return
|
||||||
console.log(o.file)
|
console.log(o.file)
|
||||||
let res = await dcmUpload(
|
let res = await dcmUpload(
|
||||||
|
|
@ -1902,7 +1646,7 @@ export default {
|
||||||
if (
|
if (
|
||||||
Math.abs(
|
Math.abs(
|
||||||
dicomInfo.uploadFileSize -
|
dicomInfo.uploadFileSize -
|
||||||
dicomInfo.fileSize
|
dicomInfo.fileSize
|
||||||
) < 5000
|
) < 5000
|
||||||
) {
|
) {
|
||||||
dicomInfo.uploadFileSize = dicomInfo.fileSize
|
dicomInfo.uploadFileSize = dicomInfo.fileSize
|
||||||
|
|
@ -2275,7 +2019,7 @@ export default {
|
||||||
this.studyLoading = true
|
this.studyLoading = true
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
.catch(() => {})
|
.catch(() => { })
|
||||||
},
|
},
|
||||||
// 删除已上传的某个检查
|
// 删除已上传的某个检查
|
||||||
handleDeleteStudy(row) {
|
handleDeleteStudy(row) {
|
||||||
|
|
@ -2306,7 +2050,7 @@ export default {
|
||||||
this.studyLoading = true
|
this.studyLoading = true
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
.catch(() => {})
|
.catch(() => { })
|
||||||
},
|
},
|
||||||
// cancel按钮回调
|
// cancel按钮回调
|
||||||
cancel() {
|
cancel() {
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue