影像汇总
continuous-integration/drone/push Build is passing Details

main
wangxiaoshuang 2025-06-10 18:02:37 +08:00
parent 123f178673
commit 613d434af9
3 changed files with 399 additions and 234 deletions

View File

@ -4173,4 +4173,28 @@ export function setTrialShowInspection(data) {
method: 'post', method: 'post',
data data
}) })
}
// 影像汇总-获取列表
export function getTrialVisitImageStatList(data) {
return request({
url: `/DownloadAndUpload/getTrialVisitImageStatList`,
method: 'post',
data
})
}
// 影像汇总-获取统计
export function getTrialVisitImageStatInfo(params) {
return request({
url: `/DownloadAndUpload/getTrialVisitImageStatInfo`,
method: 'get',
params
})
}
// 影像汇总-影像下载
export function getExportSubjectVisitImageList(data) {
return request({
url: `/DownloadAndUpload/getExportSubjectVisitImageList`,
method: 'post',
data
})
} }

View File

@ -0,0 +1,289 @@
<template>
<BaseContainer class="image-summary-wrapper">
<template slot="search-container">
<el-form :inline="true">
<!-- 中心 -->
<el-form-item :label="$t('trials:imageSummary:table:siteNo')">
<el-select v-model="searchData.TrialSiteId" clearable filterable>
<el-option v-for="(item, index) of siteOptions" :key="index" :label="item.TrialSiteCode"
:value="item.TrialSiteId" />
</el-select>
</el-form-item>
<!-- 受试者 -->
<el-form-item :label="$t('trials:imageSummary:table:subject')">
<el-input v-model="searchData.SubjectCode" />
</el-form-item>
<!-- 拍片时间 -->
<el-form-item :label="$t('trials:imageSummary:table:operateTime')">
<el-date-picker v-model="timeList" @change="changeTimeList" value-format="yyyy-MM-dd HH:mm:ss"
:default-time="['00:00:00', '23:59:59']" type="datetimerange">
</el-date-picker>
</el-form-item>
<el-form-item>
<el-button type="primary" icon="el-icon-search" @click="handleSearch">
{{ $t('common:button:search') }}
</el-button>
<el-button type="primary" icon="el-icon-refresh-left" @click="handleReset">
{{ $t('common:button:reset') }}
</el-button>
<el-button type="primary" @click="handleExport">
{{ $t('common:button:export') }}
</el-button>
<el-button type="primary" @click="handleExportImage(false)" :disabled="selectArr.length <= 0"
v-if="hasPermi(['trials:trials-panel:trial-summary:image-summary:export'])">
{{ $t('trials:imageSummary:button:export_dicom') }}
</el-button>
<el-button type="primary" @click="handleExportImage(true)" :disabled="selectArr.length <= 0"
v-if="hasPermi(['trials:trials-panel:trial-summary:image-summary:export'])">
{{ $t('trials:imageSummary:button:export_image') }}
</el-button>
<el-button type="primary" @click="statistics">
{{ $t('trials:imageSummary:button:statistics') }}
</el-button>
</el-form-item>
</el-form>
</template>
<template slot="main-container">
<el-table v-adaptive="{ bottomOffset: 60 }" v-loading="loading" :data="list" @sort-change="handleSortChange"
@selection-change="handleSelectionChange" stripe height="100"
:default-sort="{ prop: 'CreateTime', order: 'descending' }">
<el-table-column type="selection" width="55" />
<!-- 中心编号 -->
<el-table-column prop="TrialSiteCode" min-width="100" :label="$t('trials:imageSummary:table:siteNo')"
show-overflow-tooltip sortable="custom" />
<!-- 受试者 -->
<el-table-column prop="SubjectCode" min-width="100" :label="$t('trials:imageSummary:table:subject')"
show-overflow-tooltip sortable="custom" />
<!-- 访视 -->
<el-table-column prop="VisitName" min-width="120" :label="$t('trials:imageSummary:table:visit')"
show-overflow-tooltip sortable="custom" />
<!-- 检查数量 -->
<el-table-column prop="TotalStudyCount" min-width="120"
:label="$t('trials:imageSummary:table:TotalStudyCount')" show-overflow-tooltip sortable="custom" />
<!-- 影像类型 -->
<!-- <el-table-column prop="VisitName" min-width="120" :label="$t('trials:imageSummary:table:visit')"
show-overflow-tooltip sortable="custom" /> -->
<!-- 影像数量 -->
<el-table-column prop="TotalImageCount" min-width="120"
:label="$t('trials:imageSummary:table:TotalImageCount')" show-overflow-tooltip sortable="custom" />
<!-- 影像大小 -->
<el-table-column prop="TotalImageSizeStr" min-width="120"
:label="$t('trials:imageSummary:table:TotalImageSizeStr')" show-overflow-tooltip
sortable="custom" />
<!-- 最早拍片日期 -->
<el-table-column prop="EarliestScanDate" min-width="120"
:label="$t('trials:imageSummary:table:EarliestScanDate')" show-overflow-tooltip sortable="custom" />
<!-- 最晚拍片日期 -->
<el-table-column prop="LatestScanDate" min-width="120"
:label="$t('trials:imageSummary:table:LatestScanDate')" show-overflow-tooltip sortable="custom" />
<el-table-column prop="" fixed="right" :label="$t('common:action:action')" show-overflow-tooltip
v-if="hasPermi(['trials:trials-panel:trial-summary:image-summary:toUpload', 'trials:tab:uploadMonitor'])">
<template slot-scope="scope">
<!-- 详情 -->
<el-button icon="el-icon-position" circle @click="toUpload(scope.row)"
:title="$t('trials:imageSummary:action:toUpload')" />
</template>
</el-table-column>
</el-table>
<pagination class="page" :total="total" :page.sync="searchData.PageIndex" :limit.sync="searchData.PageSize"
@pagination="getList" />
<div class="remark">
<span>{{ $t('trials:imageSummary:remark:TotalImageSizeStr') }}</span>
<span class="size">{{ image_size.TotalImageSizeStr }}</span>,
<span>{{ $t('trials:imageSummary:remark:SubjectImageAVGSizeStr') }}</span>
<span class="size">{{ image_size.SubjectImageAVGSizeStr }} </span>,
<span>{{ $t('trials:imageSummary:remark:SubjectVisitImageAVGSizeStr') }}</span>
<span class="size">{{ image_size.SubjectVisitImageAVGSizeStr }}</span>,
<span>{{ $t('trials:imageSummary:remark:CheckImageSize') }}</span>
<span class="size">{{ image_size.CheckImageSize }} </span>
</div>
</template>
</BaseContainer>
</template>
<script>
import Pagination from '@/components/Pagination'
import BaseContainer from '@/components/BaseContainer'
import { getTrialSiteSelect, getTrialVisitImageStatList, getTrialVisitImageStatInfo, getExportSubjectVisitImageList } from '@/api/trials'
import { downLoadFile } from '@/utils/stream.js'
const searchDataDefault = () => {
return {
SortField: '',
Asc: false,
PageIndex: 1,
PageSize: 20,
TrialSiteId: null,
SubjectCode: null,
BeginScanDate: null,
EndScanDate: null
}
}
export default {
name: "imageSummary",
components: { Pagination, BaseContainer },
data() {
return {
total: 0,
loading: false,
searchData: searchDataDefault(),
ResearchProgramNo: null,
list: [],
siteOptions: [],
timeList: [],
selectArr: [],
image_size: {
TotalImageSizeStr: null,
SubjectImageAVGSizeStr: null,
SubjectVisitImageAVGSizeStr: null,
CheckImageSize: null
}
}
},
created() {
this.getSite()
this.getList()
},
methods: {
async getList() {
try {
this.searchData.TrialId = this.$route.query.trialId
this.loading = true
let res = await getTrialVisitImageStatList(this.searchData)
this.loading = false
if (res.IsSuccess) {
this.list = res.Result.CurrentPageData
this.total = res.Result.TotalCount
}
} catch (err) {
this.loading = false
console.log(err)
}
},
handleExport() { },
//
async handleExportImage(IsKeyImage = false) {
try {
let data = {
TrialId: this.$route.query.trialId,
IsKeyImage
}
data.SubjectVisitIdList = this.selectArr.map(item => item.SubjectVisitId)
if (!IsKeyImage) {
let confirm = await this.$confirm(this.$t('trials:imageSummary:confirm:space').replace('xxx', this.image_size.CheckImageSize))
if (!confirm) return false
}
let res = await getExportSubjectVisitImageList(data)
if (res.IsSuccess) {
}
} catch (err) {
console.log(err)
}
},
//
async downLoad(IsKeyImage = false, row) {
try {
let { files, name } = this.formatDownloadFile(IsKeyImage, row)
let res = await downLoadFile(files, name, 'zip')
// }
} catch (err) {
console.log(err)
}
},
//
formatDownloadFile(IsKeyImage = false, row) {
let files = [],
name = `${this.$route.query.researchProgramNo}.zip`;
return { files, name }
},
//
async statistics() {
try {
let params = {
TrialId: this.$route.query.trialId
}
this.loading = true
let res = await getTrialVisitImageStatInfo(params)
this.loading = false
if (res.IsSuccess) {
this.image_size.TotalImageSizeStr = res.Result.TotalImageSizeStr;
this.image_size.SubjectImageAVGSizeStr = res.Result.SubjectImageAVGSizeStr;
this.image_size.SubjectVisitImageAVGSizeStr = res.Result.SubjectVisitImageAVGSizeStr;
}
} catch (err) {
this.loading = false
console.log(err)
}
},
//
toUpload(row) {
let query = this.$route.query
query.siteId = row.TrialSiteId
query.subjectCode = row.SubjectCode
query.visitNum = row.VisitNum
this.$router.push({
path: '/trials/trials-panel/trial-summary/upload-monitor',
query
})
},
handleSelectionChange(selection) {
this.selectArr = selection
let num = this.selectArr.reduce((sum, item) => sum + item.TotalImageSize, 0)
if (num <= 0) return this.image_size.CheckImageSize = null
this.image_size.CheckImageSize = (num / 1024 / 1024).toFixed(3) + 'MB'
},
// site
getSite() {
getTrialSiteSelect(this.$route.query.trialId).then(res => {
this.siteOptions = res.Result
})
},
changeTimeList() {
if (this.timeList) {
this.searchData.BeginScanDate = this.timeList[0]
this.searchData.EndScanDate = this.timeList[1]
} else {
this.searchData.BeginScanDate = null
this.searchData.EndScanDate = null
}
},
handleReset() {
this.searchData = searchDataDefault()
this.timeList = []
this.getList()
},
handleSearch() {
this.searchData.PageIndex = 1
this.getList()
},
handleSortChange(column) {
if (column.order === 'ascending') {
this.searchData.Asc = true
} else {
this.searchData.Asc = false
}
this.searchData.SortField = column.prop
this.searchData.PageIndex = 1
this.getList()
},
}
}
</script>
<style lang="scss" scoped>
.image-summary-wrapper {
position: relative;
.remark {
position: absolute;
left: 5px;
bottom: 7px;
font-size: 12px;
.size {
display: inline-block;
min-width: 50px;
}
}
}
</style>

View File

@ -5,45 +5,20 @@
<el-form :inline="true"> <el-form :inline="true">
<!-- 中心编号 --> <!-- 中心编号 -->
<el-form-item :label="$t('trials:uploadMonitor:table:siteId')"> <el-form-item :label="$t('trials:uploadMonitor:table:siteId')">
<el-select <el-select v-model="searchData.TrialSiteId" clearable filterable style="width: 120px">
v-model="searchData.TrialSiteId" <el-option v-for="(item, index) of siteOptions" :key="index" :label="item.TrialSiteCode"
clearable :value="item.TrialSiteId" />
filterable
style="width: 120px"
>
<el-option
v-for="(item, index) of siteOptions"
:key="index"
:label="item.TrialSiteCode"
:value="item.TrialSiteId"
/>
</el-select> </el-select>
</el-form-item> </el-form-item>
<!-- 受试者编号 --> <!-- 受试者编号 -->
<el-form-item :label="$t('trials:uploadMonitor:table:subjectId')"> <el-form-item :label="$t('trials:uploadMonitor:table:subjectId')">
<el-input <el-input v-model="searchData.SubjectInfo" style="width: 120px" clearable />
v-model="searchData.SubjectInfo"
style="width: 120px"
clearable
/>
</el-form-item> </el-form-item>
<!-- 访视名称 --> <!-- 访视名称 -->
<el-form-item <el-form-item class="my_multiple" :label="$t('trials:uploadMonitor:table:visitName')">
class="my_multiple" <el-select v-model="searchData.VisitPlanArray" style="width: 140px" clearable multiple>
:label="$t('trials:uploadMonitor:table:visitName')" <el-option v-for="(item, index) of visitPlanOptions" :key="index" :label="item.VisitName"
> :value="item.VisitNum">
<el-select
v-model="searchData.VisitPlanArray"
style="width: 140px"
clearable
multiple
>
<el-option
v-for="(item, index) of visitPlanOptions"
:key="index"
:label="item.VisitName"
:value="item.VisitNum"
>
<span style="float: left">{{ item.VisitName }}</span> <span style="float: left">{{ item.VisitName }}</span>
</el-option> </el-option>
<el-option key="Other" label="Out of Plan" value="1.11" /> <el-option key="Other" label="Out of Plan" value="1.11" />
@ -54,50 +29,25 @@
<el-input v-model="searchData.StudyCode" /> <el-input v-model="searchData.StudyCode" />
</el-form-item> </el-form-item>
<el-form-item :label="$t('trials:uploadMonitor:table:imageType')"> <el-form-item :label="$t('trials:uploadMonitor:table:imageType')">
<el-select <el-select v-model="searchData.IsDicom" style="width: 120px" clearable>
v-model="searchData.IsDicom" <el-option v-for="item of $d.IsDicom" :label="item.label" :value="item.value"
style="width: 120px" :key="`RoleName${item.value}`" />
clearable
>
<el-option
v-for="item of $d.IsDicom"
:label="item.label"
:value="item.value"
:key="`RoleName${item.value}`"
/>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item :label="$t('trials:uploadMonitor:table:uploader')"> <el-form-item :label="$t('trials:uploadMonitor:table:uploader')">
<el-input <el-input v-model="searchData.Uploader" style="width: 120px" clearable />
v-model="searchData.Uploader"
style="width: 120px"
clearable
/>
</el-form-item> </el-form-item>
<el-form-item :label="$t('trials:uploadMonitor:table:uploadStatus')"> <el-form-item :label="$t('trials:uploadMonitor:table:uploadStatus')">
<el-select <el-select v-model="searchData.IsSuccess" style="width: 120px" clearable>
v-model="searchData.IsSuccess" <el-option v-for="item of $d.YesOrNo" :label="item.label" :value="item.value"
style="width: 120px" :key="`RoleName${item.value}`" />
clearable
>
<el-option
v-for="item of $d.YesOrNo"
:label="item.label"
:value="item.value"
:key="`RoleName${item.value}`"
/>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item :label="$t('trials:uploadMonitor:table:uploadTime')"> <el-form-item :label="$t('trials:uploadMonitor:table:uploadTime')">
<el-date-picker <el-date-picker v-model="datetimerange" type="datetimerange" :default-time="['00:00:00', '23:59:59']"
v-model="datetimerange"
type="datetimerange"
:default-time="['00:00:00', '23:59:59']"
:start-placeholder="$t('trials:loginLog:table:beginTime')" :start-placeholder="$t('trials:loginLog:table:beginTime')"
:end-placeholder="$t('trials:loginLog:table:endTime')" :end-placeholder="$t('trials:loginLog:table:endTime')" value-format="yyyy-MM-dd HH:mm:ss"
value-format="yyyy-MM-dd HH:mm:ss" @change="handleDatetimeChange" />
@change="handleDatetimeChange"
/>
</el-form-item> </el-form-item>
<el-form-item> <el-form-item>
<!-- 查询 --> <!-- 查询 -->
@ -105,234 +55,119 @@
{{ $t('common:button:search') }} {{ $t('common:button:search') }}
</el-button> </el-button>
<!-- 重置 --> <!-- 重置 -->
<el-button <el-button type="primary" icon="el-icon-refresh-left" @click="handleReset">
type="primary"
icon="el-icon-refresh-left"
@click="handleReset"
>
{{ $t('common:button:reset') }} {{ $t('common:button:reset') }}
</el-button> </el-button>
<!--导出--> <!--导出-->
<el-button <el-button type="primary" icon="el-icon-download" @click="handleExport">
type="primary"
icon="el-icon-download"
@click="handleExport"
>
{{ $t('common:button:export') }} {{ $t('common:button:export') }}
</el-button> </el-button>
</el-form-item> </el-form-item>
</el-form> </el-form>
</template> </template>
<template slot="main-container"> <template slot="main-container">
<el-table <el-table v-adaptive="{ bottomOffset: 60 }" v-loading="loading" :data="list" stripe height="100"
v-adaptive="{ bottomOffset: 60 }" @sort-change="handleSortByColumn" :default-sort="{ prop: 'ArchiveFinishedTime', order: 'descending' }">
v-loading="loading"
:data="list"
stripe
height="100"
@sort-change="handleSortByColumn"
:default-sort="{ prop: 'ArchiveFinishedTime', order: 'descending' }"
>
<el-table-column type="index" width="40" align="left" /> <el-table-column type="index" width="40" align="left" />
<!-- 中心编号 --> <!-- 中心编号 -->
<el-table-column <el-table-column prop="TrialSiteCode" min-width="100" :label="$t('trials:uploadMonitor:table:siteId')"
prop="TrialSiteCode" show-overflow-tooltip sortable="custom" />
min-width="100"
:label="$t('trials:uploadMonitor:table:siteId')"
show-overflow-tooltip
sortable="custom"
/>
<!-- 受试者编号 --> <!-- 受试者编号 -->
<el-table-column <el-table-column prop="SubjectCode" min-width="130" :label="$t('trials:uploadMonitor:table:subjectId')"
prop="SubjectCode" show-overflow-tooltip sortable="custom" />
min-width="130"
:label="$t('trials:uploadMonitor:table:subjectId')"
show-overflow-tooltip
sortable="custom"
/>
<!-- 访视名 --> <!-- 访视名 -->
<el-table-column <el-table-column prop="VisitName" min-width="130" :label="$t('trials:uploadMonitor:table:visitName')"
prop="VisitName" show-overflow-tooltip sortable="custom" />
min-width="130"
:label="$t('trials:uploadMonitor:table:visitName')"
show-overflow-tooltip
sortable="custom"
/>
<!-- 检查编号 --> <!-- 检查编号 -->
<el-table-column <el-table-column prop="StudyCode" min-width="130" :label="$t('trials:uploadMonitor:table:studyId')"
prop="StudyCode" show-overflow-tooltip sortable="custom" />
min-width="130"
:label="$t('trials:uploadMonitor:table:studyId')"
show-overflow-tooltip
sortable="custom"
/>
<!-- 影像类型 --> <!-- 影像类型 -->
<el-table-column <el-table-column prop="IsDicom" min-width="130" :label="$t('trials:uploadMonitor:table:imageType')"
prop="IsDicom" show-overflow-tooltip sortable="custom">
min-width="130"
:label="$t('trials:uploadMonitor:table:imageType')"
show-overflow-tooltip
sortable="custom"
>
<template slot-scope="scope"> <template slot-scope="scope">
{{ $fd('IsDicom', scope.row.IsDicom) }} {{ $fd('IsDicom', scope.row.IsDicom) }}
</template> </template>
</el-table-column> </el-table-column>
<!-- 上传人 --> <!-- 上传人 -->
<el-table-column <el-table-column prop="Uploader" min-width="130" :label="$t('trials:uploadMonitor:table:uploader')"
prop="Uploader" show-overflow-tooltip sortable="custom" />
min-width="130"
:label="$t('trials:uploadMonitor:table:uploader')"
show-overflow-tooltip
sortable="custom"
/>
<!-- IP --> <!-- IP -->
<el-table-column <el-table-column prop="IP" min-width="100" :label="$t('trials:uploadMonitor:table:ip')" show-overflow-tooltip
prop="IP" sortable="custom" />
min-width="100"
:label="$t('trials:uploadMonitor:table:ip')"
show-overflow-tooltip
sortable="custom"
/>
<!-- 文件数 --> <!-- 文件数 -->
<el-table-column <el-table-column prop="FileCount" min-width="120" :label="$t('trials:uploadMonitor:table:fileCount')"
prop="FileCount" show-overflow-tooltip sortable="custom" />
min-width="120"
:label="$t('trials:uploadMonitor:table:fileCount')"
show-overflow-tooltip
sortable="custom"
/>
<!-- 文件大小 --> <!-- 文件大小 -->
<el-table-column <el-table-column prop="FileSize" min-width="130" :label="$t('trials:uploadMonitor:table:fileSize')"
prop="FileSize" show-overflow-tooltip sortable="custom">
min-width="130"
:label="$t('trials:uploadMonitor:table:fileSize')"
show-overflow-tooltip
sortable="custom"
>
<template slot-scope="scope"> <template slot-scope="scope">
{{ fileSizeFormatter(scope.row.FileSize) }} {{ fileSizeFormatter(scope.row.FileSize) }}
</template> </template>
</el-table-column> </el-table-column>
<!-- 是否有重复文件 --> <!-- 是否有重复文件 -->
<el-table-column <el-table-column prop="IsDicomReUpload" min-width="150" :label="$t('trials:uploadMonitor:table:isRepetition')"
prop="IsDicomReUpload" show-overflow-tooltip sortable="custom">
min-width="150"
:label="$t('trials:uploadMonitor:table:isRepetition')"
show-overflow-tooltip
sortable="custom"
>
<template slot-scope="scope"> <template slot-scope="scope">
{{ $fd('YesOrNo', scope.row.IsDicomReUpload) }} {{ $fd('YesOrNo', scope.row.IsDicomReUpload) }}
</template> </template>
</el-table-column> </el-table-column>
<!-- 是否上传成功 --> <!-- 是否上传成功 -->
<el-table-column <el-table-column prop="IsSuccess" min-width="150" :label="$t('trials:uploadMonitor:table:uploadStatus')"
prop="IsSuccess" show-overflow-tooltip sortable="custom">
min-width="150"
:label="$t('trials:uploadMonitor:table:uploadStatus')"
show-overflow-tooltip
sortable="custom"
>
<template slot-scope="scope"> <template slot-scope="scope">
<el-tag v-if="scope.row.IsSuccess" type="primary"> <el-tag v-if="scope.row.IsSuccess" type="primary">
{{ $fd('YesOrNo', scope.row.IsSuccess) }}</el-tag {{ $fd('YesOrNo', scope.row.IsSuccess) }}</el-tag>
>
<el-tag v-else type="danger"> <el-tag v-else type="danger">
{{ $fd('YesOrNo', scope.row.IsSuccess) }}</el-tag {{ $fd('YesOrNo', scope.row.IsSuccess) }}</el-tag>
>
</template> </template>
</el-table-column> </el-table-column>
<!-- 开始时间 --> <!-- 开始时间 -->
<el-table-column <el-table-column prop="UploadStartTime" min-width="140" :label="$t('trials:uploadMonitor:table:beginTime')"
prop="UploadStartTime" show-overflow-tooltip sortable="custom">
min-width="140"
:label="$t('trials:uploadMonitor:table:beginTime')"
show-overflow-tooltip
sortable="custom"
>
<template slot-scope="scope"> <template slot-scope="scope">
{{ scope.row.UploadStartTimeStr }} {{ scope.row.UploadStartTimeStr }}
</template> </template>
</el-table-column> </el-table-column>
<!-- 结束时间 --> <!-- 结束时间 -->
<el-table-column <el-table-column prop="ArchiveFinishedTime" min-width="140" :label="$t('trials:uploadMonitor:table:endTime')"
prop="ArchiveFinishedTime" show-overflow-tooltip sortable="custom">
min-width="140"
:label="$t('trials:uploadMonitor:table:endTime')"
show-overflow-tooltip
sortable="custom"
>
<template slot-scope="scope"> <template slot-scope="scope">
{{ scope.row.ArchiveFinishedTime }} {{ scope.row.ArchiveFinishedTime }}
</template> </template>
</el-table-column> </el-table-column>
<!-- 总共用时 --> <!-- 总共用时 -->
<el-table-column <el-table-column prop="TotalMillisecondsInterval" min-width="100"
prop="TotalMillisecondsInterval" :label="$t('trials:uploadMonitor:table:totalTime')" show-overflow-tooltip>
min-width="100"
:label="$t('trials:uploadMonitor:table:totalTime')"
show-overflow-tooltip
>
<template slot-scope="scope"> <template slot-scope="scope">
{{ scope.row.TimeInterval }} {{ scope.row.TimeInterval }}
</template> </template>
</el-table-column> </el-table-column>
<el-table-column <el-table-column :label="$t('common:action:action')" width="80" fixed="right">
:label="$t('common:action:action')"
width="80"
fixed="right"
>
<template slot-scope="scope"> <template slot-scope="scope">
<!-- 查看 --> <!-- 查看 -->
<el-button <el-button circle :title="$t('trials:readTask:button:view')" :disabled="!scope.row.RecordPath"
circle icon="el-icon-view" @click="handleLook(scope.row)" />
:title="$t('trials:readTask:button:view')"
:disabled="!scope.row.RecordPath"
icon="el-icon-view"
@click="handleLook(scope.row)"
/>
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
<!-- 分页组件 --> <!-- 分页组件 -->
<pagination <pagination class="page" :total="total" :page.sync="searchData.PageIndex" :limit.sync="searchData.PageSize"
class="page" @pagination="getList" />
:total="total"
:page.sync="searchData.PageIndex"
:limit.sync="searchData.PageSize"
@pagination="getList"
/>
</template> </template>
<el-dialog <el-dialog v-if="lookVisible" :title="$t('trials:uploadMonitor:dagTitle:look')" :visible.sync="lookVisible"
v-if="lookVisible" width="800px" append-to-body :close-on-click-modal="false" custom-class="base-dialog-wrapper">
:title="$t('trials:uploadMonitor:dagTitle:look')"
:visible.sync="lookVisible"
width="800px"
append-to-body
:close-on-click-modal="false"
custom-class="base-dialog-wrapper"
>
<div style="max-height: 500px; overflow-y: auto; padding: 0 20px"> <div style="max-height: 500px; overflow-y: auto; padding: 0 20px">
<div <div style="
style="
display: flex; display: flex;
justify-content: space-around; justify-content: space-around;
margin-bottom: 20px; margin-bottom: 20px;
" ">
> <span>{{ $t('trials:uploadDicomList:table:FailedNumber') }}:
<span {{ lookText.Failed.length }}</span>
>{{ $t('trials:uploadDicomList:table:FailedNumber') }}: <span>{{ $t('trials:uploadDicomList:table:ExistedNumber') }}:
{{ lookText.Failed.length }}</span {{ lookText.Existed.length }}</span>
> <span>{{ $t('trials:uploadDicomList:table:UploadedNumber') }}:
<span {{ lookText.Uploaded.length }}</span>
>{{ $t('trials:uploadDicomList:table:ExistedNumber') }}:
{{ lookText.Existed.length }}</span
>
<span
>{{ $t('trials:uploadDicomList:table:UploadedNumber') }}:
{{ lookText.Uploaded.length }}</span
>
</div> </div>
<div style="margin-bottom: 10px; font-size: 12px"> <div style="margin-bottom: 10px; font-size: 12px">
<div style="font-size: 14px; margin-bottom: 5px"> <div style="font-size: 14px; margin-bottom: 5px">
@ -379,6 +214,7 @@ import { getStudyUploadMonitor_Export } from '@/api/export'
import Pagination from '@/components/Pagination' import Pagination from '@/components/Pagination'
import BaseContainer from '@/components/BaseContainer' import BaseContainer from '@/components/BaseContainer'
import BaseModel from '@/components/BaseModel' import BaseModel from '@/components/BaseModel'
import { changeURLStatic } from '@/utils/history.js'
import axios from 'axios' import axios from 'axios'
const searchDataDefault = () => { const searchDataDefault = () => {
return { return {
@ -421,10 +257,26 @@ export default {
if (this.$route.query.studyCode) { if (this.$route.query.studyCode) {
this.searchData.StudyCode = this.$route.query.studyCode this.searchData.StudyCode = this.$route.query.studyCode
} }
if (this.$route.query.siteId) {
this.searchData.TrialSiteId = this.$route.query.siteId
}
if (this.$route.query.subjectCode) {
this.searchData.SubjectInfo = this.$route.query.subjectCode
}
if (this.$route.query.visitNum || this.$route.query.visitNum === 0) {
this.searchData.VisitPlanArray = [Number(this.$route.query.visitNum)]
}
this.getList() this.getList()
this.getVisitPlanOptions() this.getVisitPlanOptions()
this.clearnUrl()
}, },
methods: { methods: {
clearnUrl() {
changeURLStatic('siteId', '')
changeURLStatic('subjectCode', '')
changeURLStatic('visitNum', '')
},
async handleLook(row) { async handleLook(row) {
this.lookVisible = true this.lookVisible = true
var htmlUrl = this.OSSclientConfig.basePath + row.RecordPath var htmlUrl = this.OSSclientConfig.basePath + row.RecordPath
@ -482,8 +334,8 @@ export default {
}, },
handleExport() { handleExport() {
getStudyUploadMonitor_Export(this.searchData) getStudyUploadMonitor_Export(this.searchData)
.then((res) => {}) .then((res) => { })
.catch(() => {}) .catch(() => { })
}, },
handleDatetimeChange(val) { handleDatetimeChange(val) {
if (val) { if (val) {