影像退回
continuous-integration/drone/push Build is passing
Details
continuous-integration/drone/push Build is passing
Details
parent
7614f7a327
commit
aaa366934b
|
@ -1035,7 +1035,27 @@ export function getQCVisitList(param) {
|
||||||
data: param
|
data: param
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
export function getImageBackList(param) {
|
||||||
|
return request({
|
||||||
|
url: `/QCList/getImageBackList`,
|
||||||
|
method: 'post',
|
||||||
|
data: param
|
||||||
|
})
|
||||||
|
}
|
||||||
|
export function getImageBackApplyUserList(params) {
|
||||||
|
return request({
|
||||||
|
url: `/QCList/getImageBackApplyUserList`,
|
||||||
|
method: 'get',
|
||||||
|
params
|
||||||
|
})
|
||||||
|
}
|
||||||
|
export function auditImageBack(params) {
|
||||||
|
return request({
|
||||||
|
url: `/QCOperation/auditImageBack`,
|
||||||
|
method: 'put',
|
||||||
|
params
|
||||||
|
})
|
||||||
|
}
|
||||||
export function getQCChallengeList(param) {
|
export function getQCChallengeList(param) {
|
||||||
return request({
|
return request({
|
||||||
url: `/QCList/getQCChallengeList`,
|
url: `/QCList/getQCChallengeList`,
|
||||||
|
@ -3308,6 +3328,13 @@ export function getReReadingApplyToBeDoneList(param) {
|
||||||
data: param
|
data: param
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
export function getPMImageBackToBeDoneList(param) {
|
||||||
|
return request({
|
||||||
|
url: `/PersonalWorkstation/getPMImageBackToBeDoneList`,
|
||||||
|
method: 'post',
|
||||||
|
data: param
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
export function deleteClinicalForm(param) {
|
export function deleteClinicalForm(param) {
|
||||||
return request({
|
return request({
|
||||||
|
|
|
@ -287,4 +287,12 @@ export function forwardSVDicomImage(param) {
|
||||||
data: param
|
data: param
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
// crc、iqc申请影像退回
|
||||||
|
export function requestImageBack(params) {
|
||||||
|
return request({
|
||||||
|
url: `/QCOperation/requestImageBack`,
|
||||||
|
method: 'put',
|
||||||
|
params
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,440 @@
|
||||||
|
<template>
|
||||||
|
<BaseContainer class="reuploa-audit-wrapper">
|
||||||
|
<!-- 搜索框 -->
|
||||||
|
<template slot="search-container">
|
||||||
|
<el-form :inline="true">
|
||||||
|
<!-- 中心编号 -->
|
||||||
|
<el-form-item :label="$t('trials:reuploadAudit:table:siteId')">
|
||||||
|
<el-select v-model="searchData.TrialSiteId" clearable filterable style="width: 120px"
|
||||||
|
placeholder="">
|
||||||
|
<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:reuploadAudit:table:subjectId')">
|
||||||
|
<el-input v-model="searchData.SubjectCode" style="width: 100px" clearable />
|
||||||
|
</el-form-item>
|
||||||
|
<!-- 访视名称 -->
|
||||||
|
<el-form-item :label="$t('trials:reuploadAudit:table:visitName')">
|
||||||
|
<el-select v-model="searchData.VisitPlanArray" style="width: 200px" clearable multiple
|
||||||
|
:collapse-tags="true" placeholder="">
|
||||||
|
<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" />
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
<!-- 申请人 -->
|
||||||
|
<el-form-item class="my_multiple" :label="$t('trials:reuploadAudit:table:CreateUserId')">
|
||||||
|
<el-select v-model="searchData.CreateUserId" style="width: 140px" clearable placeholder="">
|
||||||
|
<el-option v-for="(item) of userOptions" :key="item.CreateUserId" :label="item.FullName"
|
||||||
|
:value="item.CreateUserId">
|
||||||
|
</el-option>
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
<!-- 申请人角色 -->
|
||||||
|
<el-form-item class="my_multiple" :label="$t('trials:reuploadAudit:table:ApplyUserRole')">
|
||||||
|
<el-select v-model="searchData.ApplyUserRole" style="width: 140px" clearable placeholder="">
|
||||||
|
<el-option v-for="(item) of $d.ImageBackApplyEnum" :key="item.id" :label="item.label"
|
||||||
|
:value="item.value">
|
||||||
|
</el-option>
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
<!-- 申请时间 -->
|
||||||
|
<el-form-item :label="$t('trials:reuploadAudit:table:createTime')">
|
||||||
|
<el-date-picker v-model="timeListC" value-format="yyyy-MM-dd HH:mm:ss" format="yyyy-MM-dd HH:mm:ss"
|
||||||
|
type="datetimerange" :default-time="['00:00:00', '23:59:59']" @change="changeTimeListC"
|
||||||
|
style="width: 360px" />
|
||||||
|
</el-form-item>
|
||||||
|
<!-- 审核状态 -->
|
||||||
|
<el-form-item :label="$t('trials:reuploadAudit:table:auditState')" class="my_multiple">
|
||||||
|
<el-select v-model="searchData.ImageBackState" clearable style="width: 140px" placeholder="">
|
||||||
|
<el-option v-for="item of $d.ImageBackstateEnum" :key="item.id" :value="item.value"
|
||||||
|
:label="item.label" />
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
<!-- 审核通过时间 -->
|
||||||
|
<el-form-item :label="$t('trials:reuploadAudit:table:auditTime')">
|
||||||
|
<el-date-picker v-model="timeList" value-format="yyyy-MM-dd HH:mm:ss" format="yyyy-MM-dd HH:mm:ss"
|
||||||
|
type="datetimerange" :default-time="['00:00:00', '23:59:59']" @change="changeTimeList"
|
||||||
|
style="width: 360px" />
|
||||||
|
</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-form-item>
|
||||||
|
</el-form>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<!-- 重传审批列表 -->
|
||||||
|
<template slot="main-container">
|
||||||
|
<el-table ref="reuploadAuditList" v-loading="loading" v-adaptive="{ bottomOffset: 60 }" :data="list" stripe
|
||||||
|
height="100" @sort-change="handleSortByColumn">
|
||||||
|
<!-- 是否加急 -->
|
||||||
|
<el-table-column prop="IsUrgent" :label="$t('trials:reuploadAudit:table:isUrgent')"
|
||||||
|
show-overflow-tooltip width="120" sortable="custom">
|
||||||
|
<template slot-scope="scope">
|
||||||
|
<el-button v-if="
|
||||||
|
scope.row.IsUrgent &&
|
||||||
|
hasPermi(['trials:trials-panel:visit:reuploa-audit:set-urgent'])
|
||||||
|
" type="danger" size="mini" :disabled="!(userTypeEnumInt === 1 || userTypeEnumInt === 3)"
|
||||||
|
@click="handleUrgentStatus(scope.row)">
|
||||||
|
{{ $fd('YesOrNo', scope.row.IsUrgent) }}
|
||||||
|
</el-button>
|
||||||
|
<el-button v-else-if="
|
||||||
|
!scope.row.IsUrgent &&
|
||||||
|
hasPermi(['trials:trials-panel:visit:reuploa-audit:set-urgent'])
|
||||||
|
" size="mini" type="primary" :disabled="!(userTypeEnumInt === 1 || userTypeEnumInt === 3)"
|
||||||
|
@click="handleUrgentStatus(scope.row)">
|
||||||
|
{{ $fd('YesOrNo', scope.row.IsUrgent) }}
|
||||||
|
</el-button>
|
||||||
|
<span v-else>
|
||||||
|
<el-tag v-if="scope.row.IsUrgent" type="danger">
|
||||||
|
{{ $fd('YesOrNo', scope.row.IsUrgent) }}
|
||||||
|
</el-tag>
|
||||||
|
<el-tag v-else type="primary">
|
||||||
|
{{ $fd('YesOrNo', scope.row.IsUrgent) }}
|
||||||
|
</el-tag>
|
||||||
|
</span>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<!-- 中心编号 -->
|
||||||
|
<el-table-column prop="TrialSiteCode" :label="$t('trials:reuploadAudit:table:siteId')"
|
||||||
|
show-overflow-tooltip sortable="custom" />
|
||||||
|
<!-- 受试者编号 -->
|
||||||
|
<el-table-column prop="SubjectCode" :label="$t('trials:reuploadAudit:table:subjectId')"
|
||||||
|
show-overflow-tooltip sortable="custom" width="120px" />
|
||||||
|
<!-- 访视名称 -->
|
||||||
|
<el-table-column prop="VisitName" :label="$t('trials:reuploadAudit:table:visitName')"
|
||||||
|
show-overflow-tooltip sortable="custom">
|
||||||
|
</el-table-column>
|
||||||
|
<!-- 最晚拍片日期 -->
|
||||||
|
<el-table-column prop="LatestScanDate" :label="$t('trials:reuploadAudit:table:lScanDate')"
|
||||||
|
show-overflow-tooltip width="170" sortable="custom">
|
||||||
|
<template slot-scope="scope">
|
||||||
|
<el-tooltip class="item" effect="dark" :content="`${scope.row.EarliestScanDate
|
||||||
|
? moment(scope.row.EarliestScanDate).format('YYYY-MM-DD')
|
||||||
|
: ''
|
||||||
|
} ~ ${scope.row.LatestScanDate
|
||||||
|
? moment(scope.row.LatestScanDate).format('YYYY-MM-DD')
|
||||||
|
: ''
|
||||||
|
}`" placement="top">
|
||||||
|
<span>
|
||||||
|
{{
|
||||||
|
scope.row.LatestScanDate
|
||||||
|
? moment(scope.row.LatestScanDate).format('YYYY-MM-DD')
|
||||||
|
: ''
|
||||||
|
}}
|
||||||
|
</span>
|
||||||
|
</el-tooltip>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<!-- 提交时间 -->
|
||||||
|
<el-table-column prop="SubmitTime" :label="$t('trials:reuploadAudit:table:SubmitTime')"
|
||||||
|
show-overflow-tooltip sortable="custom" width="150px" />
|
||||||
|
<!-- 申请人 -->
|
||||||
|
<el-table-column prop="CreateUserFullName" :label="$t('trials:reuploadAudit:table:createUserFullName')"
|
||||||
|
show-overflow-tooltip sortable="custom" />
|
||||||
|
<!-- 申请人角色 -->
|
||||||
|
<el-table-column prop="ApplyUserRole" :label="$t('trials:reuploadAudit:table:applyUserRole')"
|
||||||
|
show-overflow-tooltip sortable="custom" width="120px">
|
||||||
|
<template slot-scope="scope">
|
||||||
|
<span>{{ $fd('ImageBackApplyEnum',
|
||||||
|
scope.row.ApplyUserRole) }}</span>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<!-- 申请时间 -->
|
||||||
|
<el-table-column prop="CreateTime" :label="$t('trials:reuploadAudit:table:createTime')"
|
||||||
|
show-overflow-tooltip sortable="custom" width="150px" />
|
||||||
|
<!-- 审核状态 -->
|
||||||
|
<el-table-column prop="ImageBackState" :label="$t('trials:reuploadAudit:table:imageBackState')"
|
||||||
|
show-overflow-tooltip sortable="custom">
|
||||||
|
<template slot-scope="scope">
|
||||||
|
<el-tag :type="['warning', '', 'danger'][scope.row.ImageBackState]">{{ $fd('ImageBackstateEnum',
|
||||||
|
scope.row.ImageBackState) }}</el-tag>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<!-- 审核时间 -->
|
||||||
|
<el-table-column prop="AuditTime" :label="$t('trials:reuploadAudit:table:auditTime')"
|
||||||
|
show-overflow-tooltip sortable="custom" width="150px" />
|
||||||
|
<el-table-column :label="$t('common:action:action')" fixed="right">
|
||||||
|
<template slot-scope="scope">
|
||||||
|
<el-button :title="$t('trials:reuploadAudit:button:auditYes')" circle
|
||||||
|
:disabled="scope.row.ImageBackState > 0" icon="el-icon-check" size="mini"
|
||||||
|
@click="audit(scope.row, 1)" />
|
||||||
|
<el-button :title="$t('trials:reuploadAudit:button:auditNo')"
|
||||||
|
:disabled="scope.row.ImageBackState > 0" circle icon="el-icon-close" size="mini"
|
||||||
|
@click="audit(scope.row, 2)" />
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
</el-table>
|
||||||
|
|
||||||
|
<!-- 分页组件 -->
|
||||||
|
<pagination class="page" :total="total" :page.sync="searchData.PageIndex" :limit.sync="searchData.PageSize"
|
||||||
|
@pagination="getList" />
|
||||||
|
</template>
|
||||||
|
</BaseContainer>
|
||||||
|
</template>
|
||||||
|
<script>
|
||||||
|
import {
|
||||||
|
getImageBackList,
|
||||||
|
getTrialSiteSelect,
|
||||||
|
auditImageBack,
|
||||||
|
getImageBackApplyUserList,
|
||||||
|
getTrialVisitStageSelect
|
||||||
|
} from '@/api/trials'
|
||||||
|
import BaseContainer from '@/components/BaseContainer'
|
||||||
|
import Pagination from '@/components/Pagination'
|
||||||
|
import moment from 'moment'
|
||||||
|
|
||||||
|
const searchDataDefault = () => {
|
||||||
|
return {
|
||||||
|
TrialId: null,
|
||||||
|
TrialSiteId: null,
|
||||||
|
SubjectCode: null,
|
||||||
|
CreateUserId: null,
|
||||||
|
ApplyUserRole: null,
|
||||||
|
ApplyBeginTime: null,
|
||||||
|
ApplyEndTime: null,
|
||||||
|
ImageBackState: null,
|
||||||
|
AuditBeginTime: null,
|
||||||
|
AuditEndTime: null,
|
||||||
|
VisitName: null,
|
||||||
|
VisitPlanArray: [],
|
||||||
|
PageIndex: 1,
|
||||||
|
PageSize: 20,
|
||||||
|
Asc: true,
|
||||||
|
SortField: null
|
||||||
|
}
|
||||||
|
}
|
||||||
|
export default {
|
||||||
|
name: 'QcCheck',
|
||||||
|
components: {
|
||||||
|
BaseContainer,
|
||||||
|
Pagination
|
||||||
|
},
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
searchData: searchDataDefault(),
|
||||||
|
total: 0,
|
||||||
|
list: [],
|
||||||
|
loading: false,
|
||||||
|
siteOptions: [],
|
||||||
|
userOptions: [],
|
||||||
|
visitPlanOptions: [],
|
||||||
|
timeListC: [],
|
||||||
|
timeList: [],
|
||||||
|
trialId: null,
|
||||||
|
moment
|
||||||
|
}
|
||||||
|
},
|
||||||
|
watch: {
|
||||||
|
list(val) {
|
||||||
|
this.doLayout()
|
||||||
|
},
|
||||||
|
},
|
||||||
|
mounted() {
|
||||||
|
this.trialId = this.$route.query.trialId
|
||||||
|
this.getList()
|
||||||
|
this.getSite()
|
||||||
|
this.getUser()
|
||||||
|
this.getVisitPlanOptions()
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
async audit(row, state) {
|
||||||
|
try {
|
||||||
|
let message = this.$t("trials:reuploadAudit:confirmMessage:imageBack").replace("xxx", this.$fd("ImageBackstateEnum", state))
|
||||||
|
let confirm = await this.$confirm(message)
|
||||||
|
if (!confirm) return false
|
||||||
|
let params = {
|
||||||
|
IamgeBackRecordId: row.Id,
|
||||||
|
IsAgree: state === 1 ? true : false
|
||||||
|
}
|
||||||
|
this.loading = true
|
||||||
|
let res = await auditImageBack(params)
|
||||||
|
this.loading = false
|
||||||
|
if (res.IsSuccess) {
|
||||||
|
this.getList()
|
||||||
|
}
|
||||||
|
} catch (err) {
|
||||||
|
console.log(err)
|
||||||
|
this.loading = false
|
||||||
|
}
|
||||||
|
},
|
||||||
|
getList() {
|
||||||
|
this.loading = true
|
||||||
|
this.searchData.TrialId = this.trialId
|
||||||
|
getImageBackList(this.searchData)
|
||||||
|
.then((res) => {
|
||||||
|
this.loading = false
|
||||||
|
this.list = res.Result.CurrentPageData
|
||||||
|
this.total = res.Result.TotalCount
|
||||||
|
this.OtherInfo = res.OtherInfo
|
||||||
|
})
|
||||||
|
.catch(() => {
|
||||||
|
this.loading = false
|
||||||
|
})
|
||||||
|
},
|
||||||
|
// 获取site下拉框数据
|
||||||
|
getSite() {
|
||||||
|
getTrialSiteSelect(this.trialId).then((res) => {
|
||||||
|
this.siteOptions = res.Result
|
||||||
|
})
|
||||||
|
},
|
||||||
|
// 获取访视下拉框数据
|
||||||
|
getVisitPlanOptions() {
|
||||||
|
getTrialVisitStageSelect(this.trialId).then((res) => {
|
||||||
|
this.visitPlanOptions = res.Result
|
||||||
|
})
|
||||||
|
},
|
||||||
|
// 获取申请人下拉框数据
|
||||||
|
getUser() {
|
||||||
|
getImageBackApplyUserList({
|
||||||
|
TrialId: this.trialId
|
||||||
|
}).then((res) => {
|
||||||
|
this.userOptions = res.Result
|
||||||
|
})
|
||||||
|
},
|
||||||
|
doLayout() {
|
||||||
|
const scope = this
|
||||||
|
this.$nextTick(() => {
|
||||||
|
scope.$refs.reuploadAuditList.doLayout()
|
||||||
|
})
|
||||||
|
},
|
||||||
|
// 重置
|
||||||
|
handleReset() {
|
||||||
|
this.searchData = searchDataDefault()
|
||||||
|
this.timeList = []
|
||||||
|
this.getList()
|
||||||
|
this.timeListC = []
|
||||||
|
this.$nextTick(() => {
|
||||||
|
this.$refs.reuploadAuditList.clearSort()
|
||||||
|
})
|
||||||
|
},
|
||||||
|
// 查询
|
||||||
|
handleSearch() {
|
||||||
|
this.searchData.PageIndex = 1
|
||||||
|
this.getList()
|
||||||
|
},
|
||||||
|
// 排序
|
||||||
|
handleSortByColumn(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()
|
||||||
|
},
|
||||||
|
changeTimeList() {
|
||||||
|
if (this.timeList) {
|
||||||
|
this.searchData.AuditBeginTime = this.timeList[0]
|
||||||
|
this.searchData.AuditEndTime = this.timeList[1]
|
||||||
|
} else {
|
||||||
|
this.searchData.AuditBeginTime = null
|
||||||
|
this.searchData.AuditEndTime = null
|
||||||
|
}
|
||||||
|
},
|
||||||
|
changeTimeListC() {
|
||||||
|
if (this.timeListC) {
|
||||||
|
this.searchData.ApplyBeginTime = this.timeListC[0]
|
||||||
|
this.searchData.ApplyEndTime = this.timeListC[1]
|
||||||
|
} else {
|
||||||
|
this.searchData.ApplyBeginTime = null
|
||||||
|
this.searchData.ApplyEndTime = null
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
},
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
<style lang="scss">
|
||||||
|
.reuploa-audit-wrapper {
|
||||||
|
position: relative;
|
||||||
|
|
||||||
|
.remark {
|
||||||
|
position: absolute;
|
||||||
|
left: 5px;
|
||||||
|
bottom: 7px;
|
||||||
|
font-size: 12px;
|
||||||
|
}
|
||||||
|
|
||||||
|
height: 100%;
|
||||||
|
|
||||||
|
.qc-dialog {
|
||||||
|
.el-dialog__headerbtn {
|
||||||
|
top: 10px;
|
||||||
|
font-size: 30px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.el-dialog__body {
|
||||||
|
height: calc(100% - 70px);
|
||||||
|
padding: 0 10px;
|
||||||
|
|
||||||
|
.qc-dialog-body {
|
||||||
|
padding: 10px 20px;
|
||||||
|
height: 100%;
|
||||||
|
overflow-y: auto;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.link-breadcrumb {
|
||||||
|
cursor: pointer;
|
||||||
|
color: #428bca;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.box-title {
|
||||||
|
padding: 12px;
|
||||||
|
margin-bottom: 10px;
|
||||||
|
background-color: #dcdfe6;
|
||||||
|
}
|
||||||
|
|
||||||
|
.status-primary-circle {
|
||||||
|
display: inline-block;
|
||||||
|
width: 20px;
|
||||||
|
height: 20px;
|
||||||
|
text-align: center;
|
||||||
|
line-height: 18px;
|
||||||
|
border-radius: 50%;
|
||||||
|
border: 1px solid #f56c6c;
|
||||||
|
color: #f56c6c;
|
||||||
|
font-size: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.manuals-dialog-container {
|
||||||
|
margin-top: 50px !important;
|
||||||
|
width: 75%;
|
||||||
|
height: 80%;
|
||||||
|
|
||||||
|
.el-dialog__body {
|
||||||
|
padding: 10px;
|
||||||
|
height: calc(100% - 50px) !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.el-dialog__header {
|
||||||
|
position: relative;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.manuals-full-dialog-container {
|
||||||
|
.el-dialog__body {
|
||||||
|
padding: 10px;
|
||||||
|
height: calc(100% - 50px) !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.el-dialog__header {
|
||||||
|
position: relative;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
|
@ -0,0 +1,120 @@
|
||||||
|
<template>
|
||||||
|
<div class="reuploadAudit-wrapper">
|
||||||
|
<el-row>
|
||||||
|
<el-col :span="12">
|
||||||
|
<!-- 重阅审批 -->
|
||||||
|
<h3>{{ $t('trials:trials-panel:attachments:reuploadAudit') }}</h3>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="12" style="text-align:right;">
|
||||||
|
<h3>
|
||||||
|
<Pagination class="page" :total="total" :page.sync="listQuery.pageIndex"
|
||||||
|
:limit.sync="listQuery.pageSize" layout="total, sizes, prev, pager, next" :background="false"
|
||||||
|
style="display: inline-block;" @pagination="getList" />
|
||||||
|
<!-- 重置 -->
|
||||||
|
<el-button icon="el-icon-refresh-left" size="small" circle :title="$t('common:button:reset')"
|
||||||
|
@click="handleReset" />
|
||||||
|
</h3>
|
||||||
|
</el-col>
|
||||||
|
</el-row>
|
||||||
|
<el-table ref="needSignDocList" v-loading="listLoading" :data="list" :show-header="true"
|
||||||
|
v-adaptive="{ bottomOffset: 45 }" height="100" @sort-change="handleSortByColumn">
|
||||||
|
<el-table-column type="index" width="40" />
|
||||||
|
<!-- 项目编号 -->
|
||||||
|
<el-table-column :label="$t('trials:workbench:table:trialId')" prop="TrialCode" show-overflow-tooltip
|
||||||
|
sortable="custom" />
|
||||||
|
<!-- 试验名称 -->
|
||||||
|
<el-table-column :label="$t('trials:workbench:table:experimentName')" prop="ExperimentName"
|
||||||
|
show-overflow-tooltip sortable="custom" />
|
||||||
|
<!-- 研究方案号 -->
|
||||||
|
<el-table-column :label="$t('trials:workbench:table:researchNo')" prop="ResearchProgramNo"
|
||||||
|
show-overflow-tooltip sortable="custom" />
|
||||||
|
<!-- 加急量 -->
|
||||||
|
<el-table-column :label="$t('trials:sysDocBeSigned:table:UrgentCount')" prop="UrgentCount"
|
||||||
|
show-overflow-tooltip sortable="custom" />
|
||||||
|
<!-- 待审批量 -->
|
||||||
|
<el-table-column :label="$t('trials:sysDocBeSigned:table:ToBeApprovalCount')" prop="ToBeApprovalCount"
|
||||||
|
show-overflow-tooltip sortable="custom" />
|
||||||
|
<el-table-column :label="$t('common:action:action')" width="100">
|
||||||
|
<template slot-scope="scope">
|
||||||
|
<el-button icon="el-icon-edit-outline" circle
|
||||||
|
:disabled="!!~trialIdList.indexOf(scope.row.TrialId) || isSignSystemDoc"
|
||||||
|
:title="$t('trials:researchRecord:action:view')" @click="handleAudit(scope.row)" />
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
</el-table>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
<script>
|
||||||
|
import { getPMImageBackToBeDoneList } from '@/api/trials'
|
||||||
|
import Pagination from '@/components/Pagination'
|
||||||
|
const searchDataDefault = () => {
|
||||||
|
return {
|
||||||
|
pageIndex: 1,
|
||||||
|
pageSize: 20,
|
||||||
|
asc: true,
|
||||||
|
sortField: ''
|
||||||
|
}
|
||||||
|
}
|
||||||
|
export default {
|
||||||
|
name: 'ReuploadAudit',
|
||||||
|
components: { Pagination },
|
||||||
|
props: {
|
||||||
|
trialIdList: {
|
||||||
|
type: Array,
|
||||||
|
default() { return [] }
|
||||||
|
},
|
||||||
|
isSignSystemDoc: {
|
||||||
|
type: Boolean,
|
||||||
|
default() { return false }
|
||||||
|
}
|
||||||
|
},
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
listLoading: false,
|
||||||
|
list: [],
|
||||||
|
listQuery: searchDataDefault(),
|
||||||
|
total: 0
|
||||||
|
}
|
||||||
|
},
|
||||||
|
mounted() {
|
||||||
|
this.getList()
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
getList() {
|
||||||
|
this.listLoading = true
|
||||||
|
getPMImageBackToBeDoneList(this.listQuery).then(res => {
|
||||||
|
this.listLoading = false
|
||||||
|
this.total = res.Result.TotalCount
|
||||||
|
this.list = res.Result.CurrentPageData
|
||||||
|
}).catch(() => { this.listLoading = false })
|
||||||
|
},
|
||||||
|
handleAudit(row) {
|
||||||
|
this.$router.push({ path: `/trials/trials-panel/visit/reupload-audit?trialId=${row.TrialId}&trialCode=${row.TrialCode}&researchProgramNo=${row.ResearchProgramNo}` })
|
||||||
|
},
|
||||||
|
handleReset() {
|
||||||
|
this.listQuery = searchDataDefault()
|
||||||
|
this.getList()
|
||||||
|
this.$nextTick(() => {
|
||||||
|
this.$refs.needSignDocList.clearSort()
|
||||||
|
})
|
||||||
|
},
|
||||||
|
// 排序
|
||||||
|
handleSortByColumn(column) {
|
||||||
|
if (column.order === 'ascending') {
|
||||||
|
this.listQuery.asc = true
|
||||||
|
} else {
|
||||||
|
this.listQuery.asc = false
|
||||||
|
}
|
||||||
|
this.listQuery.sortField = column.prop
|
||||||
|
this.getList()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
.reuploadAudit-wrapper {
|
||||||
|
height: 100%;
|
||||||
|
}
|
||||||
|
</style>
|
|
@ -138,6 +138,15 @@
|
||||||
}}</span><span style="margin:0 0.25rem">·</span><span>{{ tabList.PM_ReReadingApprovalCount }}</span>
|
}}</span><span style="margin:0 0.25rem">·</span><span>{{ tabList.PM_ReReadingApprovalCount }}</span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
<!-- 重传审批 -->
|
||||||
|
<div class="my_select_box" :class="{ selected: selected === 'ReuploadAudit' }" tab-data="ReuploadAudit"
|
||||||
|
@click="selected = 'ReuploadAudit'" v-if="hasPermi(['trials:trials-workbench:ReuploadAudit'])">
|
||||||
|
<div class="my_select_box_content">
|
||||||
|
<span class="el-icon-document-checked" style="padding: 4px;margin: 4px;color: #6698ff"></span>
|
||||||
|
<span class="my_select_box_content_text">{{ $t('trials:trials-panel:attachments:ReuploadAudit')
|
||||||
|
}}</span><span style="margin:0 0.25rem">·</span><span>{{ tabList.PM_ImageBackApprovalCount }}</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
<!-- 阅片人筛选 -->
|
<!-- 阅片人筛选 -->
|
||||||
<div class="my_select_box" :class="{ selected: selected === 'ReviewerScreen' }" tab-data="ReviewerScreen"
|
<div class="my_select_box" :class="{ selected: selected === 'ReviewerScreen' }" tab-data="ReviewerScreen"
|
||||||
@click="selected = 'ReviewerScreen'" v-if="hasPermi(['trials:trials-workbench:reviewerScreen'])">
|
@click="selected = 'ReviewerScreen'" v-if="hasPermi(['trials:trials-workbench:reviewerScreen'])">
|
||||||
|
@ -375,6 +384,9 @@
|
||||||
<!-- 重阅审批 -->
|
<!-- 重阅审批 -->
|
||||||
<RereadApproval v-if="selected === 'RereadApproval'" :trial-id-list="trialIdList"
|
<RereadApproval v-if="selected === 'RereadApproval'" :trial-id-list="trialIdList"
|
||||||
:is-sign-system-doc="tabList.SysWaitSignDocCount > 0 && !isTestUser" />
|
:is-sign-system-doc="tabList.SysWaitSignDocCount > 0 && !isTestUser" />
|
||||||
|
<!-- 重c传审批 -->
|
||||||
|
<ReuploadAudit v-if="selected === 'ReuploadAudit'" :trial-id-list="trialIdList"
|
||||||
|
:is-sign-system-doc="tabList.SysWaitSignDocCount > 0 && !isTestUser" />
|
||||||
<!-- 阅片人筛选 -->
|
<!-- 阅片人筛选 -->
|
||||||
<ReviewerScreen v-if="selected === 'ReviewerScreen'" :trial-id-list="trialIdList"
|
<ReviewerScreen v-if="selected === 'ReviewerScreen'" :trial-id-list="trialIdList"
|
||||||
:is-sign-system-doc="tabList.SysWaitSignDocCount > 0 && !isTestUser" />
|
:is-sign-system-doc="tabList.SysWaitSignDocCount > 0 && !isTestUser" />
|
||||||
|
@ -559,6 +571,7 @@ import MedicalAudit from './components/medicalAudit'
|
||||||
import NeedSignedTrialDoc from './components/NeedSignedTrialDoc'
|
import NeedSignedTrialDoc from './components/NeedSignedTrialDoc'
|
||||||
import auditDocument from "./components/auditDocument"
|
import auditDocument from "./components/auditDocument"
|
||||||
import generalTraining from "./components/generalTraining"
|
import generalTraining from "./components/generalTraining"
|
||||||
|
import ReuploadAudit from "./components/ReuploadAudit"
|
||||||
import store from '@/store'
|
import store from '@/store'
|
||||||
import './index.css'
|
import './index.css'
|
||||||
|
|
||||||
|
@ -593,7 +606,8 @@ export default {
|
||||||
MedicalFeedback,
|
MedicalFeedback,
|
||||||
MedicalAudit,
|
MedicalAudit,
|
||||||
NeedSignedTrialDoc,
|
NeedSignedTrialDoc,
|
||||||
NeedSignedSysDoc
|
NeedSignedSysDoc,
|
||||||
|
ReuploadAudit
|
||||||
},
|
},
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
|
|
Loading…
Reference in New Issue