ir上传
continuous-integration/drone/push Build is passing Details

uat_us
DESKTOP-6C3NK6N\WXS 2024-09-05 10:44:32 +08:00
parent 205b420074
commit e24b1cc722
4 changed files with 145 additions and 16 deletions

View File

@ -44,6 +44,7 @@
v-adaptive="{ bottomOffset: 85 }" v-adaptive="{ bottomOffset: 85 }"
height="100" height="100"
:data="list" :data="list"
:loading="loading"
class="dicomFiles-table" class="dicomFiles-table"
@sort-change="handleSortByColumn" @sort-change="handleSortByColumn"
:default-sort="{ prop: 'TaskBlindName', order: 'descending' }" :default-sort="{ prop: 'TaskBlindName', order: 'descending' }"
@ -185,6 +186,7 @@ export default {
data() { data() {
return { return {
title: null, title: null,
loading: false,
list: [], list: [],
searchData: defaultSearchData(), searchData: defaultSearchData(),
btnLoading: false, btnLoading: false,
@ -220,13 +222,16 @@ export default {
this.searchData.TrialReadingCriterionId = this.searchData.TrialReadingCriterionId =
this.Criterion.TrialReadingCriterionId this.Criterion.TrialReadingCriterionId
this.searchData.SubjectCode = this.SubjectCode this.searchData.SubjectCode = this.SubjectCode
this.loading = true
let res = await getSubjectImageDownloadSelectList(this.searchData) let res = await getSubjectImageDownloadSelectList(this.searchData)
this.loading = false
if (res.IsSuccess) { if (res.IsSuccess) {
this.list = res.Result this.list = res.Result
this.hasDicom = this.list.some((item) => item.IsDicom) this.hasDicom = this.list.some((item) => item.IsDicom)
this.hasNonedicom = this.list.some((item) => !item.IsDicom) this.hasNonedicom = this.list.some((item) => !item.IsDicom)
} }
} catch (err) { } catch (err) {
this.loading = false
console.log(err) console.log(err)
} }
}, },

View File

@ -7,12 +7,19 @@
class="uploadDicomAndNonedicom" class="uploadDicomAndNonedicom"
> >
<span slot="title">{{ title }}</span> <span slot="title">{{ title }}</span>
<el-tabs type="border-card"> <el-tabs type="border-card" v-model="activeName">
<el-tab-pane label="DICOM 影像"> <el-tab-pane
:label="$t('uploadDicomAndNonedicom:label:dicom')"
name="dicom"
>
<dicomFile /> <dicomFile />
</el-tab-pane> </el-tab-pane>
<el-tab-pane label="非DICOM 影像"> <el-tab-pane
:label="$t('uploadDicomAndNonedicom:label:nonedicom')"
name="nonedicom"
>
<nonedicomFile <nonedicomFile
v-if="activeName === 'nonedicom'"
:SubjectId="SubjectId" :SubjectId="SubjectId"
:SubjectCode="SubjectCode" :SubjectCode="SubjectCode"
:Criterion="Criterion" :Criterion="Criterion"
@ -51,6 +58,7 @@ export default {
data() { data() {
return { return {
title: 'Upload Images01 > 01001 >Timepoint', title: 'Upload Images01 > 01001 >Timepoint',
activeName: 'dicom',
} }
}, },
methods: { methods: {

View File

@ -7,7 +7,7 @@
<el-table <el-table
:data="list" :data="list"
style="width: 100%" style="width: 100%"
v-adaptive="{ bottomOffset: 170 }" v-adaptive="{ bottomOffset: 40 }"
:loading="loading" :loading="loading"
> >
<!--受试者--> <!--受试者-->
@ -22,52 +22,128 @@
/> />
<!--检查类型--> <!--检查类型-->
<el-table-column <el-table-column
prop="OrginalStudyList" prop="Modality"
:label="$t('upload:nonedicom:table:molityType')" :label="$t('upload:nonedicom:table:molityType')"
> >
</el-table-column> </el-table-column>
<!--检查部位--> <!--检查部位-->
<el-table-column <el-table-column
prop="TaskBlindName" prop="BodyPart"
:label="$t('upload:nonedicom:table:bodyPart')" :label="$t('upload:nonedicom:table:bodyPart')"
/> />
<!--原文件数--> <!--原文件数-->
<el-table-column <el-table-column
prop="TaskBlindName" prop="FileCount"
:label="$t('upload:nonedicom:table:fileCount')" :label="$t('upload:nonedicom:table:fileCount')"
/> >
<el-popover
v-if="scope.row.FileCount"
trigger="click"
placement="bottom"
>
<el-table
:data="scope.row.NoneDicomStudyFileList"
height="300"
size="small"
>
<!-- 文件名称 -->
<el-table-column
prop="FileName"
:label="$t('trials:audit:table:nonDicomsFileName')"
width="200"
/>
<el-table-column :label="$t('common:action:action')" width="120">
<template slot-scope="files">
<!-- 预览 -->
<el-button
type="text"
:disabled="
files.row.FileType && files.row.FileType.indexOf('zip') >= 0
"
@click.native.prevent="previewFile(files.row)"
>
{{ $t('trials:audit:button:nonDicomsPreview') }}
</el-button>
</template>
</el-table-column>
</el-table>
<div slot="reference" class="name-wrapper">
<el-button type="text">
{{ scope.row.FileCount }}
</el-button>
</div>
</el-popover>
<span v-else>{{ scope.row.FileCount }}</span>
</el-table-column>
<!--后处理文件数--> <!--后处理文件数-->
<el-table-column <el-table-column
prop="TaskBlindName" prop="UploadedFileCount"
:label="$t('upload:dicom:table:uploadFileCount')" :label="$t('upload:nonedicom:table:uploadFileCount')"
/> />
<el-table-column <el-table-column
:label="$t('common:action:action')" :label="$t('common:action:action')"
fixed="right" fixed="right"
width="140" width="180"
> >
<template slot-scope="scope"> <template slot-scope="scope">
<!--预览---> <!--预览--->
<el-button <el-button
v-if="isUpload"
circle circle
icon="el-icon-delete" icon="el-icon-view"
:title="$t('upload:dicom:button:preview')" :title="$t('upload:nonedicom:button:preview')"
/>
<!--上传--->
<el-button
circle
icon="el-icon-upload2"
:title="$t('upload:nonedicom:button:upload')"
/> />
<!--删除---> <!--删除--->
<el-button <el-button
v-if="isUpload" :disabled="scope.row.UploadedFileCount <= 0"
circle circle
icon="el-icon-delete" icon="el-icon-delete"
:title="$t('upload:dicom:button:delete')" :title="$t('upload:nonedicom:button:delete')"
/> />
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
<!-- 预览单个图像 -->
<el-dialog
v-if="imgObj.visible"
:visible.sync="imgObj.visible"
:title="$t('trials:uploadNonDicoms:dialogTitle:preview')"
append-to-body
width="565px"
>
<div
v-loading="imgObj.loading"
class="base-modal-body"
style="border: 2px solid #ccc; padding: 10px"
>
<el-image
:src="`${OSSclientConfig.basePath}${imgObj.url}`"
crossorigin="anonymous"
fit="fit"
style="height: 500px; width: 500px"
@error="imgObj.loading = false"
@load="imgObj.loading = false"
/>
</div>
</el-dialog>
</div> </div>
</template> </template>
<script> <script>
import { getIRUploadTaskNoneDicomStudyList } from '@/api/load.js' import { getIRUploadTaskNoneDicomStudyList } from '@/api/load.js'
let defaultSearchData = () => {
return {
SubjectId: null,
TrialReadingCriterionId: null,
SubjectCode: null,
Asc: false,
SortField: 'TaskBlindName',
}
}
export default { export default {
name: 'nonedicomFile', name: 'nonedicomFile',
props: { props: {
@ -86,6 +162,43 @@ export default {
}, },
}, },
}, },
data() {
return {
loading: false,
list: [],
searchData: defaultSearchData(),
imgObj: { url: '', visible: false, loading: false },
}
},
mounted() {
this.getList()
},
methods: {
async getList() {
try {
this.searchData.SubjectId = this.SubjectId
this.searchData.TrialReadingCriterionId =
this.Criterion.TrialReadingCriterionId
this.searchData.SubjectCode = this.SubjectCode
this.loading = true
let res = await getIRUploadTaskNoneDicomStudyList(this.searchData)
this.loading = false
if (res.IsSuccess) {
this.list = res.Result
}
} catch (err) {
this.loading = false
console.log(err)
}
},
//
previewFile(row) {
// window.open(row.FullFilePath, '_blank')
this.imgObj.url = row.FullFilePath
this.imgObj.loading = true
this.imgObj.visible = true
},
},
} }
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>

View File

@ -271,6 +271,9 @@
/> --> /> -->
<upload-dicom-and-nonedicom <upload-dicom-and-nonedicom
v-if="uploadImageVisible" v-if="uploadImageVisible"
:SubjectId="uploadSubjectId"
:SubjectCode="uploadSubjectCode"
:Criterion="uploadTrialCriterion"
:visible.sync="uploadImageVisible" :visible.sync="uploadImageVisible"
/> />
<download-dicom-and-nonedicom <download-dicom-and-nonedicom