影像汇总
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',
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-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) {