阅片人-同意入项记录优化
continuous-integration/drone/push Build is passing Details

main
wangxiaoshuang 2025-06-26 14:26:35 +08:00
parent 134bc697e2
commit d20d8ba68c
1 changed files with 72 additions and 144 deletions

View File

@ -7,66 +7,29 @@
<div class="search" style="position: relative"> <div class="search" style="position: relative">
<el-form :inline="true" class="base-search-form"> <el-form :inline="true" class="base-search-form">
<!--阅片人--> <!--阅片人-->
<el-form-item <el-form-item :label="$t('trials:trialDocument:entryRecord:search:viewer')">
:label="$t('trials:trialDocument:entryRecord:search:viewer')" <el-input v-model="searchData.Code" style="width: 100px" placeholder="" clearable />
>
<el-input
v-model="searchData.Code"
style="width: 100px"
placeholder=""
clearable
/>
</el-form-item> </el-form-item>
<!--审核人--> <!--审核人-->
<el-form-item <el-form-item :label="$t('trials:trialDocument:entryRecord:search:auditor')">
:label="$t('trials:trialDocument:entryRecord:search:auditor')" <el-input v-model="searchData.OptUserName" style="width: 100px" placeholder="" clearable />
>
<el-input
v-model="searchData.OptUserName"
style="width: 100px"
placeholder=""
clearable
/>
</el-form-item> </el-form-item>
<!--审核人角色--> <!--审核人角色-->
<el-form-item <el-form-item :label="$t('trials:trialDocument:entryRecord:search:auditorRole')">
:label="$t('trials:trialDocument:entryRecord:search:auditorRole')" <el-select v-model="searchData.UserTypeEnum" style="width: 100px" placeholder="" clearable>
> <el-option v-for="item in $d.UserType" :key="item.id" :label="item.label" :value="item.value" />
<el-select
v-model="searchData.UserTypeEnum"
style="width: 100px"
placeholder=""
clearable
>
<el-option
v-for="item in $d.UserType"
:key="item.id"
:label="item.label"
:value="item.value"
/>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item <el-form-item :label="$t('trials:trialDocument:entryRecord:search:confirmTime')">
:label="$t('trials:trialDocument:entryRecord:search:confirmTime')" <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
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-date-picker>
</el-form-item> </el-form-item>
<el-form-item> <el-form-item>
<el-button type="primary" icon="el-icon-search" @click="handleSearch"> <el-button type="primary" icon="el-icon-search" @click="handleSearch">
{{ $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-form-item> </el-form-item>
@ -78,38 +41,20 @@
</el-form> </el-form>
</div> </div>
<el-table <el-table v-loading="loading" v-adaptive="{ bottomOffset: 75 }" :data="list" stripe height="100"
v-loading="loading" style="width: 100%">
v-adaptive="{ bottomOffset: 75 }"
:data="list"
stripe
height="100"
style="width: 100%"
>
<el-table-column type="index" /> <el-table-column type="index" />
<!--姓名--> <!--姓名-->
<el-table-column <el-table-column prop="BlindName" :label="$t('trials:trialDocument:entryRecord:table:name')" show-overflow-tooltip
prop="BlindName" sortable="custom">
:label="$t('trials:trialDocument:entryRecord:table:name')"
show-overflow-tooltip
sortable="custom"
>
<template slot-scope="scope"> <template slot-scope="scope">
<span>{{ isEN ? scope.row.BlindName : scope.row.BlindNameCN }}</span> <span>{{ isEN ? scope.row.BlindName : scope.row.BlindNameCN }}</span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column <el-table-column prop="Code" :label="$t('trials:trialDocument:entryRecord:table:userName')" show-overflow-tooltip
prop="Code" sortable="custom" />
:label="$t('trials:trialDocument:entryRecord:table:userName')" <el-table-column prop="Speciality" :label="$t('trials:trialDocument:entryRecord:table:status')"
show-overflow-tooltip show-overflow-tooltip sortable="custom">
sortable="custom"
/>
<el-table-column
prop="Speciality"
:label="$t('trials:trialDocument:entryRecord:table:status')"
show-overflow-tooltip
sortable="custom"
>
<template slot-scope="scope"> <template slot-scope="scope">
<el-tag v-if="scope.row.DoctorTrialState === 10" type="primary">{{ <el-tag v-if="scope.row.DoctorTrialState === 10" type="primary">{{
$fd('DoctorTrialState', scope.row.DoctorTrialState) $fd('DoctorTrialState', scope.row.DoctorTrialState)
@ -122,56 +67,39 @@
}}</el-tag> }}</el-tag>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column <el-table-column prop="AuditUserName" :label="$t('trials:trialDocument:entryRecord:table:auditor')"
prop="OptUserName" show-overflow-tooltip sortable="custom" />
:label="$t('trials:trialDocument:entryRecord:table:auditor')" <el-table-column prop="AuditTypeEnum" :label="$t('trials:trialDocument:entryRecord:table:auditorRole')"
show-overflow-tooltip show-overflow-tooltip sortable="custom">
sortable="custom" <template slot-scope="scope">
/> <span>{{ $fd('UserType', scope.row.AuditTypeEnum) }}</span>
<el-table-column </template>
prop="UserTypeEnum" </el-table-column>
:label="$t('trials:trialDocument:entryRecord:table:auditorRole')" <el-table-column prop="AuditTimeStr" :label="$t('trials:trialDocument:entryRecord:table:auditorTime')"
show-overflow-tooltip show-overflow-tooltip sortable="custom" />
sortable="custom" <el-table-column prop="OptUserName" :label="$t('trials:trialDocument:entryRecord:table:Opter')"
> show-overflow-tooltip sortable="custom" />
<el-table-column prop="UserTypeEnum" :label="$t('trials:trialDocument:entryRecord:table:OptRole')"
show-overflow-tooltip sortable="custom">
<template slot-scope="scope"> <template slot-scope="scope">
<span>{{ $fd('UserType', scope.row.UserTypeEnum) }}</span> <span>{{ $fd('UserType', scope.row.UserTypeEnum) }}</span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column <el-table-column prop="OptTimeStr" :label="$t('trials:trialDocument:entryRecord:table:submmitTime')"
prop="OptTimeStr" show-overflow-tooltip sortable="custom" />
:label="$t('trials:trialDocument:entryRecord:table:submmitTime')" <el-table-column :label="$t('common:action:action')" width="100">
show-overflow-tooltip
sortable="custom"
/>
<el-table-column :label="$t('common:action:action')" width="200">
<template slot-scope="scope"> <template slot-scope="scope">
<el-button <el-button icon="el-icon-view" :title="$t('common:button:view')" circle @click.stop="preview(scope.row)" />
icon="el-icon-view"
:title="$t('common:button:view')"
circle
@click.stop="preview(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"
/>
<el-dialog :visible.sync="preview_visible" fullscreen> <el-dialog :visible.sync="preview_visible" fullscreen>
<div style="height: 100%; overflow: auto"> <div style="height: 100%; overflow: auto">
<preview <preview :isEN="isEN" :isAll="isAll" :reviewerId.sync="reviewerId" v-if="preview_visible" />
:isEN="isEN"
:isAll="isAll"
:reviewerId.sync="reviewerId"
v-if="preview_visible"
/>
</div> </div>
</el-dialog> </el-dialog>
<!-- <upload-files <!-- <upload-files
@ -190,18 +118,10 @@
</div> </div>
<div class="file" v-if="file.FileName"> <div class="file" v-if="file.FileName">
<div class="name">{{ file.FileName }}</div> <div class="name">{{ file.FileName }}</div>
<i <i v-if="hasDownLoad && (isManage || isInspect)" class="el-icon-download"
v-if="hasDownLoad && (isManage || isInspect)" :title="$t('common:button:download')" @click.stop="downLoad(file)" />
class="el-icon-download" <i v-if="hasDel && isManage && !viewStatus" class="el-icon-delete" :title="$t('common:button:delete')"
:title="$t('common:button:download')" @click.stop="handleRemoveFile" />
@click.stop="downLoad(file)"
/>
<i
v-if="hasDel && isManage && !viewStatus"
class="el-icon-delete"
:title="$t('common:button:delete')"
@click.stop="handleRemoveFile"
/>
</div> </div>
<div class="btnBox"> <div class="btnBox">
<!-- <el-button <!-- <el-button
@ -211,16 +131,9 @@
> >
{{ $t('trials:trialDocument:entryRecord:button:uploadFile') }} {{ $t('trials:trialDocument:entryRecord:button:uploadFile') }}
</el-button> --> </el-button> -->
<el-upload <el-upload v-if="hasEdit && isManage && !viewStatus" class="upload-demo" action
v-if="hasEdit && isManage && !viewStatus" :before-upload="(param) => beforeUpload(param, '.zip')" :show-file-list="false"
class="upload-demo" :http-request="handleUploadFile" :limit="1" accept=".zip">
action
:before-upload="(param) => beforeUpload(param, '.zip')"
:show-file-list="false"
:http-request="handleUploadFile"
:limit="1"
accept=".zip"
>
<el-button size="small" type="primary" :disabled="!!file.FileName"> <el-button size="small" type="primary" :disabled="!!file.FileName">
{{ $t('trials:trialDocument:entryRecord:button:uploadFile') }} {{ $t('trials:trialDocument:entryRecord:button:uploadFile') }}
</el-button> </el-button>
@ -230,7 +143,7 @@
</base-model> </base-model>
</box-content> </box-content>
</template> </template>
<script> <script>
import { getConfirmationReviewerList } from '@/api/trials' import { getConfirmationReviewerList } from '@/api/trials'
import { import {
uploadTrialFileTypeFile, uploadTrialFileTypeFile,
@ -340,7 +253,7 @@ export default {
} }
}) })
}) })
.catch((action) => {}) .catch((action) => { })
}, },
async handleUploadFile(param) { async handleUploadFile(param) {
try { try {
@ -561,9 +474,8 @@ export default {
]) ])
}, },
TITLE() { TITLE() {
return `${this.$fd('ArchiveType', this.ArchiveTypeEnum)}${ return `${this.$fd('ArchiveType', this.ArchiveTypeEnum)}${this.isEN ? this.rowData.Name : this.rowData.NameCN
this.isEN ? this.rowData.Name : this.rowData.NameCN }`
}`
}, },
}, },
} }
@ -574,54 +486,70 @@ export default {
font-weight: bold; font-weight: bold;
margin-bottom: 10px; margin-bottom: 10px;
} }
.fileName { .fileName {
display: inline-block; display: inline-block;
max-width: 100%; max-width: 100%;
white-space: nowrap; /* 文本不换行 */ white-space: nowrap;
overflow: hidden; /* 超出部分隐藏 */ /* 文本不换行 */
overflow: hidden;
/* 超出部分隐藏 */
text-overflow: ellipsis; text-overflow: ellipsis;
} }
.fileBtnBox { .fileBtnBox {
display: inline-block; display: inline-block;
width: 50px; width: 50px;
i { i {
cursor: pointer; cursor: pointer;
color: #409eff; color: #409eff;
margin-right: 3px; margin-right: 3px;
&:last-child { &:last-child {
margin: 0; margin: 0;
} }
} }
} }
.topForm { .topForm {
.el-form-item { .el-form-item {
margin-right: 30px; margin-right: 30px;
} }
} }
.file_title { .file_title {
line-height: 40px; line-height: 40px;
font-weight: bold; font-weight: bold;
} }
.file { .file {
width: 100%; width: 100%;
display: flex; display: flex;
margin-bottom: 10px; margin-bottom: 10px;
.name { .name {
max-width: 90%; max-width: 90%;
white-space: nowrap; /* 文本不会换行,会在同一行内继续,直到遇到<br>标签为止 */ white-space: nowrap;
text-overflow: ellipsis; /* 当文本溢出包含它的容器时,显示省略号(...)来表示被截断的文本 */ /* 文本不会换行,会在同一行内继续,直到遇到<br>标签为止 */
overflow: hidden; /* 隐藏溢出容器的文本 */ text-overflow: ellipsis;
/* 当文本溢出包含它的容器时,显示省略号(...)来表示被截断的文本 */
overflow: hidden;
/* 隐藏溢出容器的文本 */
} }
i { i {
cursor: pointer; cursor: pointer;
margin: 3px; margin: 3px;
color: #409eff; color: #409eff;
} }
.disable { .disable {
cursor: not-allowed; cursor: not-allowed;
color: #909399; color: #909399;
} }
} }
.btnBox { .btnBox {
margin-top: 10px; margin-top: 10px;
display: flex; display: flex;