独立阅片人页面:姓名、用户名、入项时间、状态保持固定

main
wangxiaoshuang 2025-07-07 11:14:20 +08:00
parent 5408c1e51b
commit 19782687e8
1 changed files with 120 additions and 325 deletions

View File

@ -12,35 +12,18 @@
<template slot="main-container">
<!-- 入组医生列表 -->
<el-table
ref="myTable"
v-loading="listLoading"
v-adaptive="{ bottomOffset: 55 }"
:data="list"
stripe
height="100"
@sort-change="handleSortByColumn"
>
<el-table ref="myTable" v-loading="listLoading" v-adaptive="{ bottomOffset: 55 }" :data="list" stripe height="100"
@sort-change="handleSortByColumn">
<el-table-column type="index" width="40" />
<!-- Name -->
<el-table-column
:label="$t('trials:enrolledReviews:table:name')"
show-overflow-tooltip
width="150"
prop="FirstName"
sortable="custom"
v-if="!hasPermi(['role:ea'])"
>
<el-table-column :label="$t('trials:enrolledReviews:table:name')" show-overflow-tooltip fixed width="150"
prop="FirstName" sortable="custom" v-if="!hasPermi(['role:ea'])">
<template slot-scope="scope">
<el-button
type="text"
@click="
go(
`/trialsResume?doctorId=${scope.row.DoctorId}&token=${token}`
)
"
>{{ scope.row.LastName }} / {{ scope.row.FirstName }}</el-button
>
<el-button type="text" @click="
go(
`/trialsResume?doctorId=${scope.row.DoctorId}&token=${token}`
)
">{{ scope.row.LastName }} / {{ scope.row.FirstName }}</el-button>
</template>
</el-table-column>
<!-- Name CN -->
@ -53,21 +36,11 @@
show-overflow-tooltip
/> -->
<!-- 用户名 -->
<el-table-column
prop="UserName"
:label="$t('trials:enrolledReviews:table:userName')"
:width="hasPermi(['role:ea']) ? 300 : 150"
sortable="custom"
show-overflow-tooltip
/>
<el-table-column prop="UserName" :label="$t('trials:enrolledReviews:table:userName')"
:width="hasPermi(['role:ea']) ? 300 : 150" sortable="custom" show-overflow-tooltip fixed />
<!-- 入组时间 -->
<el-table-column
prop="EnrollTimeStr"
:label="$t('trials:enrolledReviews:table:enrollmentTime')"
:width="hasPermi(['role:ea']) ? 320 : 130"
sortable="custom"
show-overflow-tooltip
>
<el-table-column prop="EnrollTimeStr" :label="$t('trials:enrolledReviews:table:enrollmentTime')"
:width="hasPermi(['role:ea']) ? 320 : 130" sortable="custom" show-overflow-tooltip fixed>
<template slot-scope="scope">
{{
scope.row.EnrollTime
@ -76,64 +49,39 @@
}}
</template>
</el-table-column>
<el-table-column
prop="EnrollTimeStr"
:label="$t('trials:enrolledReviews:table:status')"
width="200"
sortable="custom"
>
<el-table-column prop="EnrollTimeStr" :label="$t('trials:enrolledReviews:table:status')" width="200"
sortable="custom">
<template slot-scope="scope">
<div>
<el-switch
v-model="scope.row.IsEnable"
:active-value="true"
:inactive-value="false"
:active-text="$fd('IsEnable', true)"
:inactive-text="$fd('IsEnable', false)"
@change="
<el-switch v-model="scope.row.IsEnable" :active-value="true" :inactive-value="false"
:active-text="$fd('IsEnable', true)" :inactive-text="$fd('IsEnable', false)" @change="
(v) => {
return isEnableChange(scope.row, v)
}
"
:disabled="
!hasPermi([
'trials:trials-panel:enrolled-reviewers:list:edit',
])
"
/>
" :disabled="!hasPermi([
'trials:trials-panel:enrolled-reviewers:list:edit',
])
" />
<!-- <span :style="{color:scope.row.IsEnable?'#409eff':'#dcdfe6'}"> {{$fd('IsEnable', scope.row.IsEnable)}}</span> -->
</div>
</template>
</el-table-column>
<el-table-column
v-for="ite of TrialReadingCriterionList"
:key="ite.TrialReadingCriterionName"
:label="ite.TrialReadingCriterionName"
width="360"
header-align="center"
show-overflow-tooltip
>
<el-table-column
:label="$t('trials:enrolledReviews:table:readingType')"
width="300"
>
<el-table-column v-for="ite of TrialReadingCriterionList" :key="ite.TrialReadingCriterionName"
:label="ite.TrialReadingCriterionName" width="360" header-align="center" show-overflow-tooltip>
<el-table-column :label="$t('trials:enrolledReviews:table:readingType')" width="300">
<template slot-scope="scope">
<span
v-for="item of scope.row.CriterionCategoryList.find((v) => {
<span v-for="item of scope.row.CriterionCategoryList.find((v) => {
return (
v.TrialReadingCriterionId === ite.TrialReadingCriterionId
)
})
? scope.row.CriterionCategoryList.find((v) => {
return (
v.TrialReadingCriterionId === ite.TrialReadingCriterionId
v.TrialReadingCriterionId ===
ite.TrialReadingCriterionId
)
})
? scope.row.CriterionCategoryList.find((v) => {
return (
v.TrialReadingCriterionId ===
ite.TrialReadingCriterionId
)
}).ReadingCategorys
: []"
:key="item.TrialReadingCriterionId"
style="margin: 5px 5px 5px 0"
>
}).ReadingCategorys
: []" :key="item.TrialReadingCriterionId" style="margin: 5px 5px 5px 0">
<el-tag v-if="item === 1" type="primary">{{
$fd('ReadingCategory', item) +
' & ' +
@ -147,152 +95,101 @@
$fd('ReadingCategory', item)
}}</el-tag>
</span>
<el-button
v-hasPermi="[
'trials:trials-panel:enrolled-reviewers:list:edit',
]"
type="text"
@click="
<el-button v-hasPermi="[
'trials:trials-panel:enrolled-reviewers:list:edit',
]" type="text" @click="
openSetEnrollReadingCategory(
scope.row,
ite.TrialReadingCriterionId
)
"
>
">
{{ $t('trials:enrolledReviews:button:config') }}
</el-button>
</template>
</el-table-column>
<el-table-column
:label="$t('trials:enrolledReviews:table:consistency-analysis')"
width="160"
show-overflow-tooltip
>
<el-table-column :label="$t('trials:enrolledReviews:table:consistency-analysis')" width="160"
show-overflow-tooltip>
<template slot-scope="scope">
<el-switch
v-model="
scope.row.CriterionCategoryList.find((v) => {
return (
v.TrialReadingCriterionId === ite.TrialReadingCriterionId
)
}).IsJoinAnalysis
"
:active-value="true"
:inactive-value="false"
:active-text="$fd('YesOrNo', true)"
:inactive-text="$fd('YesOrNo', false)"
@change="
<el-switch v-model="scope.row.CriterionCategoryList.find((v) => {
return (
v.TrialReadingCriterionId === ite.TrialReadingCriterionId
)
}).IsJoinAnalysis
" :active-value="true" :inactive-value="false" :active-text="$fd('YesOrNo', true)"
:inactive-text="$fd('YesOrNo', false)" @change="
(v) => {
return isConsistencyChange(scope.row, ite, v, true)
}
"
:disabled="
!hasPermi([
'trials:trials-panel:enrolled-reviewers:list:edit',
])
"
/>
" :disabled="!hasPermi([
'trials:trials-panel:enrolled-reviewers:list:edit',
])
" />
<!-- <span v-if="scope.row.CriterionCategoryList.find(v => {return v.TrialReadingCriterionId === ite.TrialReadingCriterionId}).IsJoinAnalysis"> {{$fd('YesOrNo', scope.row.CriterionCategoryList.find(v => {return v.TrialReadingCriterionId === ite.TrialReadingCriterionId}).IsJoinAnalysis)}}</span>
<span v-else> {{$fd('YesOrNo',false)}}</span> -->
</template>
</el-table-column>
<el-table-column
:label="$t('trials:enrolledReviews:message:SOW')"
width="160"
show-overflow-tooltip
>
<el-table-column :label="$t('trials:enrolledReviews:message:SOW')" width="160" show-overflow-tooltip>
<template slot-scope="scope">
<div
v-if="
scope.row.CriterionCategoryList.find((v) => {
return (
v.TrialReadingCriterionId === ite.TrialReadingCriterionId
)
}).StatementCriterionFileList.length > 0
"
>
<el-button
type="text"
@click="preview(scope.row, ite.TrialReadingCriterionId)"
>View</el-button
>
<div v-if="
scope.row.CriterionCategoryList.find((v) => {
return (
v.TrialReadingCriterionId === ite.TrialReadingCriterionId
)
}).StatementCriterionFileList.length > 0
">
<el-button type="text" @click="preview(scope.row, ite.TrialReadingCriterionId)">View</el-button>
<!-- <el-button type="text" @click="windowOpen(scope.row.CriterionCategoryList.find(v => {return v.TrialReadingCriterionId === ite.TrialReadingCriterionId}).StatementCriterionFileList[0].FilePath)">View</el-button> -->
</div>
<div v-else>
<span>{{ $t('trials:enrolledReviews:label:notUpload') }}</span>
<!-- 上传 -->
<el-button
v-if="ite.CriterionType === 0"
v-hasPermi="[
'trials:trials-panel:enrolled-reviewers:list:edit',
]"
type="text"
style="margin-left: 10px"
@click="
<el-button v-if="ite.CriterionType === 0" v-hasPermi="[
'trials:trials-panel:enrolled-reviewers:list:edit',
]" type="text" style="margin-left: 10px" @click="
addCol(
0,
scope.row,
ite,
$t('trials:enrolledReviews:message:SOW')
)
"
>
">
{{ $t('trials:enrolledReviews:button:upload') }}
</el-button>
</div>
</template>
</el-table-column>
<el-table-column
:label="$t('trials:enrolledReviews:message:EQC')"
width="160"
show-overflow-tooltip
>
<el-table-column :label="$t('trials:enrolledReviews:message:EQC')" width="160" show-overflow-tooltip>
<template slot-scope="scope">
<div
v-if="
scope.row.CriterionCategoryList.find((v) => {
return (
v.TrialReadingCriterionId === ite.TrialReadingCriterionId
)
}).AcknowledgementCriterionFileList.length > 0
"
>
<el-button
type="text"
@click="preview(scope.row, ite.TrialReadingCriterionId)"
>
<div v-if="
scope.row.CriterionCategoryList.find((v) => {
return (
v.TrialReadingCriterionId === ite.TrialReadingCriterionId
)
}).AcknowledgementCriterionFileList.length > 0
">
<el-button type="text" @click="preview(scope.row, ite.TrialReadingCriterionId)">
View
</el-button>
</div>
<div v-else>
<span>{{ $t('trials:enrolledReviews:label:notUpload') }}</span>
<!-- 上传 -->
<el-button
v-if="ite.CriterionType === 0"
v-hasPermi="[
'trials:trials-panel:enrolled-reviewers:list:edit',
]"
type="text"
style="margin-left: 10px"
@click="
<el-button v-if="ite.CriterionType === 0" v-hasPermi="[
'trials:trials-panel:enrolled-reviewers:list:edit',
]" type="text" style="margin-left: 10px" @click="
addCol(
1,
scope.row,
ite,
$t('trials:enrolledReviews:message:SOW')
)
"
>
">
{{ $t('trials:enrolledReviews:button:upload') }}
</el-button>
</div>
</template>
</el-table-column>
<el-table-column
:label="$t('trials:enrolledReviews:button:tackNum')"
width="300"
show-overflow-tooltip
>
<el-table-column :label="$t('trials:enrolledReviews:button:tackNum')" width="300" show-overflow-tooltip>
<template slot-scope="scope">
<div>
{{
@ -342,31 +239,17 @@
<template slot="dialog-body">
<!-- Reading Type -->
<label>{{ $t('trials:enrolledReviews:table:readingType') }}: </label>
<el-select
v-model="readingType"
filterable
allow-create
default-first-option
style="width: 70%"
>
<el-select v-model="readingType" filterable allow-create default-first-option style="width: 70%">
<el-option :value="0" label="TP&GL&AD" />
<el-option :value="1" label="TP&GL" />
<el-option :value="2" label="AD" />
</el-select>
</template>
<template slot="dialog-footer">
<el-button
:disabled="readingType_model.btnLoading"
type="primary"
@click="readingType_model.visible = false"
>
<el-button :disabled="readingType_model.btnLoading" type="primary" @click="readingType_model.visible = false">
{{ $t('common:button:cancel') }}
</el-button>
<el-button
type="primary"
:loading="readingType_model.btnLoading"
@click="handleUpdateReadingType"
>
<el-button type="primary" :loading="readingType_model.btnLoading" @click="handleUpdateReadingType">
{{ $t('common:button:save') }}
</el-button>
</template>
@ -376,56 +259,28 @@
<template slot="dialog-body">
<!-- Reading Type -->
<label>{{ $t('trials:enrolledReviews:table:readingType') }}: </label>
<el-select
v-model="ReadingCategorys"
filterable
allow-create
multiple
default-first-option
style="width: 50%"
>
<el-select v-model="ReadingCategorys" filterable allow-create multiple default-first-option style="width: 50%">
<template v-for="item of $d.ReadingCategory">
<el-option
v-if="item.value === 1"
:key="item.id"
:value="1"
:label="
$fd('ReadingCategory', 1) + ' & ' + $fd('ReadingCategory', 2)
"
/>
<el-option v-if="item.value === 1" :key="item.id" :value="1" :label="$fd('ReadingCategory', 1) + ' & ' + $fd('ReadingCategory', 2)
" />
</template>
<template v-for="item of $d.ReadingCategory">
<el-option
v-if="item.value === 4 && IsArbitrationReading"
:key="item.id"
:value="item.value"
:label="$fd('ReadingCategory', 4)"
/>
<el-option v-if="item.value === 4 && IsArbitrationReading" :key="item.id" :value="item.value"
:label="$fd('ReadingCategory', 4)" />
</template>
<template v-for="item of $d.ReadingCategory">
<el-option
v-if="item.value === 5 && IsOncologyReading"
:key="item.id"
:value="item.value"
:label="$fd('ReadingCategory', 5)"
/>
<el-option v-if="item.value === 5 && IsOncologyReading" :key="item.id" :value="item.value"
:label="$fd('ReadingCategory', 5)" />
</template>
</el-select>
</template>
<template slot="dialog-footer">
<div style="margin-top: 30px">
<el-button
:disabled="readingCategory_model.btnLoading"
type="primary"
@click="readingCategory_model.visible = false"
>
<el-button :disabled="readingCategory_model.btnLoading" type="primary"
@click="readingCategory_model.visible = false">
{{ $t('common:button:cancel') }}
</el-button>
<el-button
type="primary"
:loading="readingCategory_model.btnLoading"
@click="handleUpdateReadingCategory"
>
<el-button type="primary" :loading="readingCategory_model.btnLoading" @click="handleUpdateReadingCategory">
{{ $t('common:button:save') }}
</el-button>
</div>
@ -434,112 +289,52 @@
<!-- 修改医生状态 -->
<base-model :config="reviewerStatus_model">
<template slot="dialog-body">
<el-form
ref="updateStatusForm"
:model="updateStatusForm"
:rules="updateStatusFormrules"
>
<el-form-item
:label="$t('trials:enrolledReviews:label:enrollmentStatus')"
prop="Status"
>
<el-form ref="updateStatusForm" :model="updateStatusForm" :rules="updateStatusFormrules">
<el-form-item :label="$t('trials:enrolledReviews:label:enrollmentStatus')" prop="Status">
<el-select v-model="updateStatusForm.Status" style="width: 60%">
<!-- 0回退1出组 -->
<el-option
v-for="item of $d.OutOrInEnrollment"
:key="`OutOrInEnrollment${item.value}`"
:value="item.value"
:label="item.label"
:disabled="item.value === 0 && currentWorkload > 0"
/>
<el-option v-for="item of $d.OutOrInEnrollment" :key="`OutOrInEnrollment${item.value}`"
:value="item.value" :label="item.label" :disabled="item.value === 0 && currentWorkload > 0" />
</el-select>
</el-form-item>
<el-form-item
v-if="updateStatusForm.Status == 1"
:label="$t('trials:enrolledReviews:label:outOfEnrollmentTime')"
prop="OutEnrollmentTime"
>
<el-date-picker
v-model="updateStatusForm.OutEnrollmentTime"
type="date"
value-format="yyyy-MM-dd"
format="yyyy-MM-dd"
/>
<el-form-item v-if="updateStatusForm.Status == 1"
:label="$t('trials:enrolledReviews:label:outOfEnrollmentTime')" prop="OutEnrollmentTime">
<el-date-picker v-model="updateStatusForm.OutEnrollmentTime" type="date" value-format="yyyy-MM-dd"
format="yyyy-MM-dd" />
</el-form-item>
</el-form>
</template>
<template slot="dialog-footer">
<el-button
:disabled="reviewerStatus_model.btnLoading"
type="primary"
@click="reviewerStatus_model.visible = false"
>
<el-button :disabled="reviewerStatus_model.btnLoading" type="primary"
@click="reviewerStatus_model.visible = false">
{{ $t('common:button:cancel') }}
</el-button>
<el-button
type="primary"
:loading="reviewerStatus_model.btnLoading"
@click="handleUpdateReviewerStatus"
>
<el-button type="primary" :loading="reviewerStatus_model.btnLoading" @click="handleUpdateReviewerStatus">
{{ $t('common:button:save') }}
</el-button>
</template>
</base-model>
<BaseModel :config="model_cfg">
<template slot="dialog-body">
<el-form
ref="DictionaryTypeConfigForm"
:model="form"
label-width="120px"
size="small"
>
<el-form-item
:label="$t('trials:enrolledReviews:table:criterionName')"
prop="CriterionType"
>
<el-form ref="DictionaryTypeConfigForm" :model="form" label-width="120px" size="small">
<el-form-item :label="$t('trials:enrolledReviews:table:criterionName')" prop="CriterionType">
<el-input v-model="form.CriterionName" disabled />
</el-form-item>
<el-form-item
:label="$t('trials:enrolledReviews:table:file')"
prop="FilePath"
>
<el-upload
class="upload-demo"
action
:before-upload="beforeUpload"
:http-request="handleUploadFile"
:on-preview="handlePreview2"
:on-remove="handleRemoveFile2"
:show-file-list="true"
accept=".pdf"
:limit="1"
:file-list="fileList"
>
<el-button
size="small"
type="primary"
:disabled="fileList.length > 0"
>{{ $t('common:button:upload') }}</el-button
>
<el-form-item :label="$t('trials:enrolledReviews:table:file')" prop="FilePath">
<el-upload class="upload-demo" action :before-upload="beforeUpload" :http-request="handleUploadFile"
:on-preview="handlePreview2" :on-remove="handleRemoveFile2" :show-file-list="true" accept=".pdf"
:limit="1" :file-list="fileList">
<el-button size="small" type="primary" :disabled="fileList.length > 0">{{ $t('common:button:upload')
}}</el-button>
</el-upload>
</el-form-item>
</el-form>
</template>
<template slot="dialog-footer">
<el-button
:disabled="btnLoading"
size="small"
type="primary"
@click="handleCancle"
>
<el-button :disabled="btnLoading" size="small" type="primary" @click="handleCancle">
{{ $t('common:button:cancel') }}
</el-button>
<el-button
size="small"
type="primary"
:loading="btnLoading"
@click="handleSave"
>
<el-button size="small" type="primary" :loading="btnLoading" @click="handleSave">
{{ $t('common:button:save') }}
</el-button>
</template>
@ -779,8 +574,7 @@ export default {
var fileName = param.file.name
let file = await this.fileToBlob(param.file)
let res = await this.OSSclient.put(
`/SystemData/reviewer/${
this.form.FileType === 0 ? '既往阅片情况声明' : '入项资格确认书'
`/SystemData/reviewer/${this.form.FileType === 0 ? '既往阅片情况声明' : '入项资格确认书'
}/${this.rowData.DoctorId}/${fileName}`,
file
)
@ -889,15 +683,15 @@ export default {
return v.TrialReadingCriterionId === TrialReadingCriterionId
})
? row.CriterionCategoryList.find((v) => {
return v.TrialReadingCriterionId === TrialReadingCriterionId
})
return v.TrialReadingCriterionId === TrialReadingCriterionId
})
: null
var i = row.TrialReadingCriterionList.find((v) => {
return v.TrialReadingCriterionId === TrialReadingCriterionId
})
? row.TrialReadingCriterionList.find((v) => {
return v.TrialReadingCriterionId === TrialReadingCriterionId
})
return v.TrialReadingCriterionId === TrialReadingCriterionId
})
: null
if (i) {
this.IsArbitrationReading = i.IsArbitrationReading
@ -1048,8 +842,8 @@ export default {
zzSessionStorage.setItem(
'ReviewerName',
this.currentClickRowData.FirstName +
' ' +
this.currentClickRowData.LastName
' ' +
this.currentClickRowData.LastName
)
this.$router.push({
path: `/trials/trials-panel/enrolled-reviewers/stats?doctorId=${this.currentClickRowData.DoctorId}&trialId=${this.listQuery.TrialId}&trialCode=${this.trialId}&doctorName=${this.currentClickRowData.LastName}/${this.currentClickRowData.FirstName}`,
@ -1085,6 +879,7 @@ export default {
<style lang="scss">
.enroll-list {
height: 100%;
.readingCategory_model {
.base-modal-body {
min-height: 150px;