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