阅片期操作按钮样式问题
continuous-integration/drone/push Build is passing Details

uat
wangxiaoshuang 2025-03-07 15:00:46 +08:00
parent a887e686a8
commit d729c4d34e
1 changed files with 506 additions and 162 deletions

View File

@ -1,13 +1,25 @@
<template> <template>
<BaseContainer class="reading-period"> <BaseContainer class="reading-period">
<el-tabs v-model="TrialReadingCriterionId" type="border-card"> <el-tabs v-model="TrialReadingCriterionId" type="border-card">
<el-tab-pane v-for="criterion of trialCriterionList" :key="criterion.TrialReadingCriterionId" :label="criterion.TrialReadingCriterionName" :name="criterion.TrialReadingCriterionId"> <el-tab-pane
<div v-if="TrialReadingCriterionId === criterion.TrialReadingCriterionId"> v-for="criterion of trialCriterionList"
:key="criterion.TrialReadingCriterionId"
:label="criterion.TrialReadingCriterionName"
:name="criterion.TrialReadingCriterionId"
>
<div
v-if="TrialReadingCriterionId === criterion.TrialReadingCriterionId"
>
<div slot="search-container"> <div slot="search-container">
<el-form :inline="true"> <el-form :inline="true">
<el-form-item :label="$t('trials:readingPeriod:table:siteCode')"> <el-form-item :label="$t('trials:readingPeriod:table:siteCode')">
<!-- 中心编号 --> <!-- 中心编号 -->
<el-select v-model="searchData.TrialSiteCode" clearable filterable style="width:120px;"> <el-select
v-model="searchData.TrialSiteCode"
clearable
filterable
style="width: 120px"
>
<el-option <el-option
v-for="(site, index) of siteOptions" v-for="(site, index) of siteOptions"
:key="index" :key="index"
@ -17,16 +29,24 @@
</el-select> </el-select>
</el-form-item> </el-form-item>
<!-- 受试者编号 --> <!-- 受试者编号 -->
<el-form-item :label="$t('trials:readingPeriod:table:subjectCode')"> <el-form-item
:label="$t('trials:readingPeriod:table:subjectCode')"
>
<el-input <el-input
v-model="searchData.SubjectCode" v-model="searchData.SubjectCode"
style="width:100px;" style="width: 100px"
clearable clearable
/> />
</el-form-item> </el-form-item>
<!-- 阅片类型 --> <!-- 阅片类型 -->
<el-form-item :label="$t('trials:readingPeriod:table:readingType')"> <el-form-item
<el-select v-model="searchData.ModuleType" clearable style="width:120px"> :label="$t('trials:readingPeriod:table:readingType')"
>
<el-select
v-model="searchData.ModuleType"
clearable
style="width: 120px"
>
<el-option <el-option
v-for="item of $d.ModuleTypeEnum" v-for="item of $d.ModuleTypeEnum"
:key="item.value" :key="item.value"
@ -36,8 +56,14 @@
</el-select> </el-select>
</el-form-item> </el-form-item>
<!-- 进度 --> <!-- 进度 -->
<el-form-item :label="$t('trials:readingPeriod:table:readingSchedule')"> <el-form-item
<el-select v-model="searchData.ReadingStatus" clearable style="width:120px"> :label="$t('trials:readingPeriod:table:readingSchedule')"
>
<el-select
v-model="searchData.ReadingStatus"
clearable
style="width: 120px"
>
<el-option <el-option
v-for="item of $d.ReadModuleEnum" v-for="item of $d.ReadModuleEnum"
:key="item.value" :key="item.value"
@ -47,16 +73,24 @@
</el-select> </el-select>
</el-form-item> </el-form-item>
<!-- 阅片名称 --> <!-- 阅片名称 -->
<el-form-item :label="$t('trials:readingPeriod:table:readingName')"> <el-form-item
:label="$t('trials:readingPeriod:table:readingName')"
>
<el-input <el-input
v-model="searchData.Name" v-model="searchData.Name"
style="width:100px;" style="width: 100px"
clearable clearable
/> />
</el-form-item> </el-form-item>
<el-form-item :label="$t('trials:readingPeriod:table:completeClinicalData')"> <el-form-item
<el-select v-model="searchData.CompleteClinicalData" clearable style="width:120px"> :label="$t('trials:readingPeriod:table:completeClinicalData')"
>
<el-select
v-model="searchData.CompleteClinicalData"
clearable
style="width: 120px"
>
<el-option <el-option
v-for="item of $d.CompleteClinicalDataEnum" v-for="item of $d.CompleteClinicalDataEnum"
:key="item.value" :key="item.value"
@ -66,24 +100,45 @@
</el-select> </el-select>
</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 type="primary" icon="el-icon-refresh-left" @click="handleReset"> <el-button
type="primary"
icon="el-icon-refresh-left"
@click="handleReset"
>
{{ $t('common:button:reset') }} {{ $t('common:button:reset') }}
</el-button> </el-button>
<!--导出受试者进展表--> <!--导出受试者进展表-->
<el-button type="primary" icon="el-icon-download" @click="handleExportSubject"> <el-button
type="primary"
icon="el-icon-download"
@click="handleExportSubject"
>
{{ $t('trials:readingPeriod:buttton:exportSubjectTbl') }} {{ $t('trials:readingPeriod:buttton:exportSubjectTbl') }}
</el-button> </el-button>
<!--导出阅片期信息表--> <!--导出阅片期信息表-->
<el-button type="primary" icon="el-icon-download" @click="handleExportPeriod"> <el-button
type="primary"
icon="el-icon-download"
@click="handleExportPeriod"
>
{{ $t('trials:readingPeriod:buttton:exportPeriodTbl') }} {{ $t('trials:readingPeriod:buttton:exportPeriodTbl') }}
</el-button> </el-button>
<!-- 阅片期管理 --> <!-- 阅片期管理 -->
<el-button <el-button
v-if="ReadingInfoSignTime && (otherInfo.IsClinicalReading || otherInfo.IsReadingPeriod)" v-if="
v-hasPermi="['trials:trials-panel:subject:readingPeriod:edit']" ReadingInfoSignTime &&
(otherInfo.IsClinicalReading || otherInfo.IsReadingPeriod)
"
v-hasPermi="[
'trials:trials-panel:subject:readingPeriod:edit',
]"
type="primary" type="primary"
icon="el-icon-edit-outline" icon="el-icon-edit-outline"
@click="handleReadingPeriod" @click="handleReadingPeriod"
@ -140,12 +195,22 @@
<template slot-scope="scope"> <template slot-scope="scope">
<div v-if="i <= scope.row.Data.length"> <div v-if="i <= scope.row.Data.length">
<!-- <div style="">--> <!-- <div style="">-->
<div style="border-bottom: 1px solid #d9d9d9;margin-bottom: 8px;padding-bottom: 8px;display: flex;justify-content: space-between;"> <div
style="
border-bottom: 1px solid #d9d9d9;
margin-bottom: 8px;
padding-bottom: 8px;
display: flex;
justify-content: space-between;
"
>
<div style="font-size: 16px; font-weight: 900"> <div style="font-size: 16px; font-weight: 900">
{{ scope.row.Data[i - 1].Name }} {{ scope.row.Data[i - 1].Name }}
</div> </div>
<div> <div>
<span v-if="scope.row.Data[i-1].IsEnrollmentConfirm"> <span
v-if="scope.row.Data[i - 1].IsEnrollmentConfirm"
>
| {{ $t('trials:readingPeriod:table:enroll') }} | {{ $t('trials:readingPeriod:table:enroll') }}
</span> </span>
<span v-if="scope.row.Data[i - 1].PDState"> <span v-if="scope.row.Data[i - 1].PDState">
@ -159,53 +224,192 @@
</span> </span>
</div> </div>
</div> </div>
<div style="display: flex;justify-content: space-between;border-bottom: 1px solid #d9d9d9;margin-bottom: 8px;padding-bottom: 8px"> <div
<div>{{ $fd('ModuleTypeEnum',scope.row.Data[i-1].ModuleType) }}</div> style="
<div style="white-space: nowrap;overflow: hidden;text-overflow: ellipsis;width: 110px;text-align: right;" :title="$fd('ReadModuleEnum',scope.row.Data[i-1].ReadingStatus)"> display: flex;
{{ $fd('ReadModuleEnum',scope.row.Data[i-1].ReadingStatus) }} justify-content: space-between;
border-bottom: 1px solid #d9d9d9;
margin-bottom: 8px;
padding-bottom: 8px;
"
>
<div>
{{
$fd(
'ModuleTypeEnum',
scope.row.Data[i - 1].ModuleType
)
}}
</div>
<div
style="
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
width: 110px;
text-align: right;
"
:title="
$fd(
'ReadModuleEnum',
scope.row.Data[i - 1].ReadingStatus
)
"
>
{{
$fd(
'ReadModuleEnum',
scope.row.Data[i - 1].ReadingStatus
)
}}
</div> </div>
</div> </div>
<div v-if="scope.row.Data[i-1].ModuleType === 1" style="display: flex;justify-content: space-between;border-bottom: 1px solid #d9d9d9;margin-bottom: 8px;padding-bottom: 8px"> <div
v-if="scope.row.Data[i - 1].ModuleType === 1"
style="
display: flex;
justify-content: space-between;
border-bottom: 1px solid #d9d9d9;
margin-bottom: 8px;
padding-bottom: 8px;
"
>
<!-- 上一访视 --> <!-- 上一访视 -->
<div>{{ $t('trials:readingPeriod:table:lastVisit') }}</div> <div>
<div>{{ scope.row.Data[i-1].OutPlanPreviousVisitName }} </div> {{ $t('trials:readingPeriod:table:lastVisit') }}
</div> </div>
<div v-if="scope.row.Data[i-1].ModuleType === 2 || scope.row.Data[i-1].ModuleType ===3 || scope.row.Data[i-1].ModuleType ===5" style="display: flex;justify-content: space-between;border-bottom: 1px solid #d9d9d9;margin-bottom: 8px;padding-bottom: 8px"> <div>
{{ scope.row.Data[i - 1].OutPlanPreviousVisitName }}
</div>
</div>
<div
v-if="
scope.row.Data[i - 1].ModuleType === 2 ||
scope.row.Data[i - 1].ModuleType === 3 ||
scope.row.Data[i - 1].ModuleType === 5
"
style="
display: flex;
justify-content: space-between;
border-bottom: 1px solid #d9d9d9;
margin-bottom: 8px;
padding-bottom: 8px;
"
>
<!-- 截止访视 --> <!-- 截止访视 -->
<div>{{ $t('trials:readingPeriod:table:deadlineVisit') }}</div> <div>
{{ $t('trials:readingPeriod:table:deadlineVisit') }}
</div>
<div>{{ scope.row.Data[i - 1].CutOffVisitName }}</div> <div>{{ scope.row.Data[i - 1].CutOffVisitName }}</div>
</div> </div>
<div v-if="scope.row.Data[i-1].ModuleType ===4 " style="display: flex;justify-content: space-between;border-bottom: 1px solid #d9d9d9;margin-bottom: 8px;padding-bottom: 8px"> <div
v-if="scope.row.Data[i - 1].ModuleType === 4"
style="
display: flex;
justify-content: space-between;
border-bottom: 1px solid #d9d9d9;
margin-bottom: 8px;
padding-bottom: 8px;
"
>
<!-- 对应阅片期 --> <!-- 对应阅片期 -->
<div>{{ $t('trials:readingPeriod:table:correspondVisit2') }}</div> <div>
{{
$t('trials:readingPeriod:table:correspondVisit2')
}}
</div>
<div>{{ scope.row.Data[i - 1].ReadModuleName }}</div> <div>{{ scope.row.Data[i - 1].ReadModuleName }}</div>
</div> </div>
<div v-if="otherInfo.ExistClinicalData" style="display: flex;justify-content: space-between;border-bottom: 1px solid #d9d9d9;margin-bottom: 8px;padding-bottom: 8px"> <div
<div style="display: flex;justify-content: space-between;width: 100%"> v-if="otherInfo.ExistClinicalData"
style="
display: flex;
justify-content: space-between;
border-bottom: 1px solid #d9d9d9;
margin-bottom: 8px;
padding-bottom: 8px;
"
>
<div
style="
display: flex;
justify-content: space-between;
width: 100%;
"
>
<!-- 临床资料 --> <!-- 临床资料 -->
<div> <div>
<el-tooltip v-if="scope.row.Data[i-1].CompleteClinicalData===0" class="item" effect="dark" :content="$t('trials:readingPeriod:table:clinicalDataNotComplete')" placement="bottom"> <el-tooltip
v-if="
scope.row.Data[i - 1].CompleteClinicalData === 0
"
class="item"
effect="dark"
:content="
$t(
'trials:readingPeriod:table:clinicalDataNotComplete'
)
"
placement="bottom"
>
<i class="el-icon-warning" style="color: red" /> <i class="el-icon-warning" style="color: red" />
</el-tooltip> </el-tooltip>
{{ $t('trials:readingPeriod:table:clinicalInfo2') }} {{ $t('trials:readingPeriod:table:clinicalInfo2') }}
</div> </div>
<el-link type="danger" v-if="(scope.row.Data[i-1].IsVisit && otherInfo.IsExistsSubjectClinicalData && scope.row.Data[i-1].IsBaseLine) ||(scope.row.Data[i-1].IsVisit && otherInfo.IsExistsVisitClinicalData) || (scope.row.Data[i-1].IsVisit && otherInfo.IsExistsStudyClinicalData) || (!scope.row.Data[i-1].IsVisit && otherInfo.IsExistsReadingClinicalData && scope.row.Data[i-1].ModuleType === 3) || (!scope.row.Data[i-1].IsVisit && otherInfo.IsExistsOncologyReadClinicalData && scope.row.Data[i-1].ModuleType === 5)" @click="handleView(scope.row,scope.row.Data[i-1])"> <el-link
type="danger"
v-if="
(scope.row.Data[i - 1].IsVisit &&
otherInfo.IsExistsSubjectClinicalData &&
scope.row.Data[i - 1].IsBaseLine) ||
(scope.row.Data[i - 1].IsVisit &&
otherInfo.IsExistsVisitClinicalData) ||
(scope.row.Data[i - 1].IsVisit &&
otherInfo.IsExistsStudyClinicalData) ||
(!scope.row.Data[i - 1].IsVisit &&
otherInfo.IsExistsReadingClinicalData &&
scope.row.Data[i - 1].ModuleType === 3) ||
(!scope.row.Data[i - 1].IsVisit &&
otherInfo.IsExistsOncologyReadClinicalData &&
scope.row.Data[i - 1].ModuleType === 5)
"
@click="
handleView(scope.row, scope.row.Data[i - 1])
"
>
{{ $t('trials:readingPeriod:button:view') }} {{ $t('trials:readingPeriod:button:view') }}
</el-link> </el-link>
<span v-else>{{ $t('trials:readingPeriod:table:noCD') }}</span> <span v-else>{{
$t('trials:readingPeriod:table:noCD')
}}</span>
</div> </div>
</div> </div>
<div> <div>
<el-link style="color:#428bca;margin-right: 5px" @click="handleDetail(scope.row,scope.row.Data[i-1])"> <el-link
style="color: #428bca; margin-right: 5px"
@click="
handleDetail(scope.row, scope.row.Data[i - 1])
"
>
{{ $t('trials:readingPeriod:button:detail') }} {{ $t('trials:readingPeriod:button:detail') }}
</el-link> </el-link>
<el-link style="color:#428bca;margin-right: 5px" v-if="scope.row.Data[i - 1].IsCanChangeCutOffVisit" @click="handleEdit(scope.row,scope.row.Data[i-1])"> <el-link
style="color: #428bca; margin-right: 5px"
v-if="scope.row.Data[i - 1].IsCanChangeCutOffVisit"
@click="handleEdit(scope.row, scope.row.Data[i - 1])"
>
{{ $t('common:button:edit') }} {{ $t('common:button:edit') }}
</el-link> </el-link>
<el-link <el-link
style="color: #428bca; margin-right: 5px" style="color: #428bca; margin-right: 5px"
v-if="(scope.row.Data[i-1].ModuleType === 3 || scope.row.Data[i-1].ModuleType === 5) && scope.row.Data[i-1].ReadingStatus < 4" v-if="
v-hasPermi="['trials:trials-panel:subject:readingPeriod:edit']" (scope.row.Data[i - 1].ModuleType === 3 ||
scope.row.Data[i - 1].ModuleType === 5) &&
scope.row.Data[i - 1].ReadingStatus < 4
"
v-hasPermi="[
'trials:trials-panel:subject:readingPeriod:edit',
]"
@click="handleDelete(scope.row.Data[i - 1])" @click="handleDelete(scope.row.Data[i - 1])"
> >
{{ $t('trials:readingPeriod:button:delete') }} {{ $t('trials:readingPeriod:button:delete') }}
@ -216,23 +420,49 @@
</el-table-column> </el-table-column>
</el-table-column> </el-table-column>
<el-table-column <el-table-column
v-if="hasPermi(['trials:trials-panel:subject:readingPeriod:edit'])" v-if="
:fixed="(otherInfo.IsReadingPeriod || otherInfo.IsClinicalReading) && ReadingInfoSignTime && hasPermi(['trials:trials-panel:subject:readingPeriod:edit']) ? 'right':false" hasPermi([
:label="(otherInfo.IsReadingPeriod || otherInfo.IsClinicalReading) && ReadingInfoSignTime && hasPermi(['trials:trials-panel:subject:readingPeriod:edit']) ? $t('common:action:action') : ''" 'trials:trials-panel:subject:readingPeriod:edit',
:width="(otherInfo.IsReadingPeriod || otherInfo.IsClinicalReading) && ReadingInfoSignTime && hasPermi(['trials:trials-panel:subject:readingPeriod:edit']) ? '150px' : '80px' " ]) && ReadingInfoSignTime
"
:fixed="
(otherInfo.IsReadingPeriod || otherInfo.IsClinicalReading) &&
ReadingInfoSignTime &&
hasPermi(['trials:trials-panel:subject:readingPeriod:edit'])
? 'right'
: false
"
:label="
(otherInfo.IsReadingPeriod || otherInfo.IsClinicalReading) &&
ReadingInfoSignTime &&
hasPermi(['trials:trials-panel:subject:readingPeriod:edit'])
? $t('common:action:action')
: ''
"
:width="
(otherInfo.IsReadingPeriod || otherInfo.IsClinicalReading) &&
ReadingInfoSignTime &&
hasPermi(['trials:trials-panel:subject:readingPeriod:edit'])
? '150px'
: '80px'
"
> >
<template slot-scope="scope"> <template slot-scope="scope">
<el-button <el-button
v-if="otherInfo.IsReadingPeriod" v-if="otherInfo.IsReadingPeriod"
circle circle
:title="$t('trials:readingPeriod:buttton:addSubjectImageRP')" :title="
$t('trials:readingPeriod:buttton:addSubjectImageRP')
"
icon="el-icon-plus" icon="el-icon-plus"
@click="handleAdd(scope.row, 0)" @click="handleAdd(scope.row, 0)"
/> />
<el-button <el-button
v-if="isClinicalReading" v-if="isClinicalReading"
circle circle
:title="$t('trials:readingPeriod:buttton:addSubjectOncologyRP')" :title="
$t('trials:readingPeriod:buttton:addSubjectOncologyRP')
"
icon="el-icon-plus" icon="el-icon-plus"
@click="handleAdd(scope.row, 1)" @click="handleAdd(scope.row, 1)"
/> />
@ -240,7 +470,13 @@
</el-table-column> </el-table-column>
</el-table> </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"
/>
<!-- 详情 --> <!-- 详情 -->
<el-dialog <el-dialog
v-if="dialogVisible" v-if="dialogVisible"
@ -251,17 +487,23 @@
> >
<el-descriptions :column="2" border> <el-descriptions :column="2" border>
<!-- 阅片期名称 --> <!-- 阅片期名称 -->
<el-descriptions-item :label="$t('trials:readingPeriod:table:readingName')"> <el-descriptions-item
:label="$t('trials:readingPeriod:table:readingName')"
>
{{ currentData.Name }} {{ currentData.Name }}
</el-descriptions-item> </el-descriptions-item>
<!-- 阅片期类型 --> <!-- 阅片期类型 -->
<el-descriptions-item :label="$t('trials:readingPeriod:table:readingType')"> <el-descriptions-item
:label="$t('trials:readingPeriod:table:readingType')"
>
{{ $fd('ModuleTypeEnum', currentData.ModuleType) }} {{ $fd('ModuleTypeEnum', currentData.ModuleType) }}
</el-descriptions-item> </el-descriptions-item>
<!-- 是否加急 --> <!-- 是否加急 -->
<!-- <el-descriptions-item label="是否加急"> <el-tag size="small">{{ $fd('YesOrNo',currentData.IsUrgent) }}</el-tag></el-descriptions-item> --> <!-- <el-descriptions-item label="是否加急"> <el-tag size="small">{{ $fd('YesOrNo',currentData.IsUrgent) }}</el-tag></el-descriptions-item> -->
<!-- 进度 --> <!-- 进度 -->
<el-descriptions-item :label="$t('trials:readingPeriod:table:readingSchedule')"> <el-descriptions-item
:label="$t('trials:readingPeriod:table:readingSchedule')"
>
{{ $fd('ReadModuleEnum', currentData.ReadingStatus) }} {{ $fd('ReadModuleEnum', currentData.ReadingStatus) }}
</el-descriptions-item> </el-descriptions-item>
<el-descriptions-item <el-descriptions-item
@ -283,16 +525,34 @@
{{ currentData.ReadModuleName }} {{ currentData.ReadModuleName }}
</el-descriptions-item> </el-descriptions-item>
<!-- 临床资料 --> <!-- 临床资料 -->
<el-descriptions-item v-if="otherInfo.ExistClinicalData" :label="$t('trials:readingPeriod:table:clinicalInfo')"> <el-descriptions-item
<template v-if="(currentData.IsVisit && otherInfo.IsExistsSubjectClinicalData && currentData.IsBaseLine) ||(currentData.IsVisit && otherInfo.IsExistsVisitClinicalData) || (!currentData.IsVisit && otherInfo.IsExistsReadingClinicalData)"> v-if="otherInfo.ExistClinicalData"
<el-link @click="view">{{ $t('trials:readingPeriod:button:view') }}</el-link> :label="$t('trials:readingPeriod:table:clinicalInfo')"
>
<template
v-if="
(currentData.IsVisit &&
otherInfo.IsExistsSubjectClinicalData &&
currentData.IsBaseLine) ||
(currentData.IsVisit &&
otherInfo.IsExistsVisitClinicalData) ||
(!currentData.IsVisit &&
otherInfo.IsExistsReadingClinicalData)
"
>
<el-link @click="view">{{
$t('trials:readingPeriod:button:view')
}}</el-link>
</template> </template>
<template v-else> <template v-else>
<span>{{ $t('trials:readingPeriod:table:noCD') }}</span> <span>{{ $t('trials:readingPeriod:table:noCD') }}</span>
</template> </template>
</el-descriptions-item> </el-descriptions-item>
<!-- 当前干系人 --> <!-- 当前干系人 -->
<el-descriptions-item :label="$t('trials:readingPeriod:table:stakeholder')" :span="2"> <el-descriptions-item
:label="$t('trials:readingPeriod:table:stakeholder')"
:span="2"
>
{{ currentData.Stakeholders }} {{ currentData.Stakeholders }}
</el-descriptions-item> </el-descriptions-item>
</el-descriptions> </el-descriptions>
@ -318,13 +578,22 @@
<!-- 临床资料 --> <!-- 临床资料 -->
<el-dialog <el-dialog
v-if="clinicalDataVisible" v-if="clinicalDataVisible"
:title="`${$t('trials:readingPeriod:dialogTitle:clinicalData')}${currentData.SubjectCode}|${currentData.Name}|${currentData.CriterionName}`" :title="`${$t(
'trials:readingPeriod:dialogTitle:clinicalData'
)}${currentData.SubjectCode}|${currentData.Name}|${
currentData.CriterionName
}`"
:visible.sync="clinicalDataVisible" :visible.sync="clinicalDataVisible"
:close-on-click-modal="false" :close-on-click-modal="false"
append-to-body append-to-body
width="70%" width="70%"
> >
<ClinicalData :trial-reading-criterion-id="TrialReadingCriterionId" :trial-id="trialId" :data="currentData" @getList="getList"/> <ClinicalData
:trial-reading-criterion-id="TrialReadingCriterionId"
:trial-id="trialId"
:data="currentData"
@getList="getList"
/>
</el-dialog> </el-dialog>
<!-- 添加受试者阅片期 --> <!-- 添加受试者阅片期 -->
<el-dialog <el-dialog
@ -335,7 +604,13 @@
custom-class="base-dialog-wrapper" custom-class="base-dialog-wrapper"
:close-on-click-modal="false" :close-on-click-modal="false"
> >
<SubjectPR :trial-reading-criterion-id="TrialReadingCriterionId" :trial-id="trialId" :data="param" @close="subjectPeriod.visible = false" @getList="getList" /> <SubjectPR
:trial-reading-criterion-id="TrialReadingCriterionId"
:trial-id="trialId"
:data="param"
@close="subjectPeriod.visible = false"
@getList="getList"
/>
</el-dialog> </el-dialog>
<!-- 编辑受试者阅片期 --> <!-- 编辑受试者阅片期 -->
<el-dialog <el-dialog
@ -346,7 +621,14 @@
custom-class="base-dialog-wrapper" custom-class="base-dialog-wrapper"
:close-on-click-modal="false" :close-on-click-modal="false"
> >
<SubjectPR :type="'edit'" :trial-reading-criterion-id="TrialReadingCriterionId" :trial-id="trialId" :data="param" @close="subjectPeriodEdit.visible = false" @getList="getList" /> <SubjectPR
:type="'edit'"
:trial-reading-criterion-id="TrialReadingCriterionId"
:trial-id="trialId"
:data="param"
@close="subjectPeriodEdit.visible = false"
@getList="getList"
/>
</el-dialog> </el-dialog>
</div> </div>
</div> </div>
@ -355,8 +637,17 @@
</BaseContainer> </BaseContainer>
</template> </template>
<script> <script>
import { getReadModuleList, deleteReadModule, getReadModule, getTrialSiteSelect, getTrialCriterionList } from '@/api/trials' import {
import { getReadingPeriodList_Export, getSubjectProgress_Export } from '@/api/export' getReadModuleList,
deleteReadModule,
getReadModule,
getTrialSiteSelect,
getTrialCriterionList,
} from '@/api/trials'
import {
getReadingPeriodList_Export,
getSubjectProgress_Export,
} from '@/api/export'
import BaseContainer from '@/components/BaseContainer' import BaseContainer from '@/components/BaseContainer'
import Pagination from '@/components/Pagination' import Pagination from '@/components/Pagination'
import ReadingPeriod from './components/RPList' import ReadingPeriod from './components/RPList'
@ -371,13 +662,19 @@ const searchDataDefault = () => {
Name: '', Name: '',
CompleteClinicalData: '', CompleteClinicalData: '',
PageIndex: 1, PageIndex: 1,
PageSize: 20 PageSize: 20,
} }
} }
const MinPlanCount = 10 const MinPlanCount = 10
export default { export default {
name: 'TrialsNotice', name: 'TrialsNotice',
components: { BaseContainer, Pagination, ReadingPeriod, ClinicalData, SubjectPR }, components: {
BaseContainer,
Pagination,
ReadingPeriod,
ClinicalData,
SubjectPR,
},
data() { data() {
return { return {
searchData: searchDataDefault(), searchData: searchDataDefault(),
@ -388,8 +685,14 @@ export default {
dialogVisible: false, dialogVisible: false,
readPeriodVisible: false, readPeriodVisible: false,
clinicalDataVisible: false, clinicalDataVisible: false,
subjectPeriod: { visible: false, title: this.$t('trials:readingPeriod:dialogTitle:addSubjectPR') }, subjectPeriod: {
subjectPeriodEdit: { visible: false, title: this.$t('trials:readingPeriod:dialogTitle:EditSubjectPR') }, visible: false,
title: this.$t('trials:readingPeriod:dialogTitle:addSubjectPR'),
},
subjectPeriodEdit: {
visible: false,
title: this.$t('trials:readingPeriod:dialogTitle:EditSubjectPR'),
},
trialId: this.$route.query.trialId, trialId: this.$route.query.trialId,
currentData: {}, currentData: {},
param: {}, param: {},
@ -398,34 +701,37 @@ export default {
otherInfo: {}, otherInfo: {},
trialCriterionList: [], trialCriterionList: [],
TrialReadingCriterionId: '0', TrialReadingCriterionId: '0',
ReadingInfoSignTime: null ReadingInfoSignTime: null,
} }
}, },
watch: { watch: {
TrialReadingCriterionId(v) { TrialReadingCriterionId(v) {
if (v) { if (v) {
this.getList() this.getList()
this.ReadingInfoSignTime = this.trialCriterionList.find(v => { this.ReadingInfoSignTime = this.trialCriterionList.find((v) => {
return v.TrialReadingCriterionId === this.TrialReadingCriterionId return v.TrialReadingCriterionId === this.TrialReadingCriterionId
}).ReadingInfoSignTime }).ReadingInfoSignTime
} }
} },
}, },
mounted() { mounted() {
this.getSite() this.getSite()
this.getTrialCriterionList() this.getTrialCriterionList()
}, },
methods: { methods: {
getList() { getList() {
this.searchData.TrialId = this.$route.query.trialId this.searchData.TrialId = this.$route.query.trialId
this.searchData.TrialReadingCriterionId = this.TrialReadingCriterionId this.searchData.TrialReadingCriterionId = this.TrialReadingCriterionId
this.loading = true this.loading = true
getReadModuleList(this.searchData).then(res => { getReadModuleList(this.searchData)
.then((res) => {
this.loading = false this.loading = false
this.list = res.Result.CurrentPageData this.list = res.Result.CurrentPageData
this.total = res.Result.TotalCount this.total = res.Result.TotalCount
this.maxLength = res.OtherInfo.MaxLength > MinPlanCount ? res.OtherInfo.MaxLength : MinPlanCount this.maxLength =
res.OtherInfo.MaxLength > MinPlanCount
? res.OtherInfo.MaxLength
: MinPlanCount
this.isClinicalReading = res.OtherInfo.IsClinicalReading this.isClinicalReading = res.OtherInfo.IsClinicalReading
this.otherInfo = res.OtherInfo this.otherInfo = res.OtherInfo
this.$nextTick(() => { this.$nextTick(() => {
@ -434,7 +740,10 @@ export default {
this.$refs.myTable.doLayout() this.$refs.myTable.doLayout()
} }
}) })
}).catch(() => { this.loading = false }) })
.catch(() => {
this.loading = false
})
}, },
handleAdd(row, type) { handleAdd(row, type) {
this.param = {} this.param = {}
@ -446,7 +755,10 @@ export default {
this.param.IsClinicalReading = this.isClinicalReading this.param.IsClinicalReading = this.isClinicalReading
this.param.ReadingSetType = type this.param.ReadingSetType = type
this.subjectPeriod.visible = true this.subjectPeriod.visible = true
this.subjectPeriod.title = type === 0 ? this.$t('trials:readingPeriod:dialogTitle:addSubjectPR') : this.$t('trials:readingPeriod:dialogTitle:addSubjectTumorPR') this.subjectPeriod.title =
type === 0
? this.$t('trials:readingPeriod:dialogTitle:addSubjectPR')
: this.$t('trials:readingPeriod:dialogTitle:addSubjectTumorPR')
}, },
handleEdit(row, type) { handleEdit(row, type) {
this.param = { ...type } this.param = { ...type }
@ -456,18 +768,22 @@ export default {
handleDelete(row) { handleDelete(row) {
this.$confirm(this.$t('trials:readingPeriod:message:sureToDelete'), { this.$confirm(this.$t('trials:readingPeriod:message:sureToDelete'), {
type: 'warning', type: 'warning',
distinguishCancelAndClose: true distinguishCancelAndClose: true,
}) }).then(() => {
.then(() => {
this.loading = true this.loading = true
deleteReadModule(row.Id) deleteReadModule(row.Id)
.then(res => { .then((res) => {
this.loading = false this.loading = false
if (res.IsSuccess) { if (res.IsSuccess) {
this.getList() this.getList()
this.$message.success(this.$t('common:message:deletedSuccessfully')) this.$message.success(
this.$t('common:message:deletedSuccessfully')
)
} }
}).catch(() => { this.loading = false }) })
.catch(() => {
this.loading = false
})
}) })
}, },
handleReadingPeriod() { handleReadingPeriod() {
@ -487,9 +803,10 @@ export default {
id: ReadingPlan.Id, id: ReadingPlan.Id,
TrialReadingCriterionId: this.TrialReadingCriterionId, TrialReadingCriterionId: this.TrialReadingCriterionId,
// subjectId: row.SubjectId // subjectId: row.SubjectId
subjectId: ReadingPlan.SubjectId subjectId: ReadingPlan.SubjectId,
} }
getReadModule(param).then(res => { getReadModule(param)
.then((res) => {
this.currentData = Object.assign({}, ReadingPlan) this.currentData = Object.assign({}, ReadingPlan)
// this.currentData.SubjectId = row.SubjectId // this.currentData.SubjectId = row.SubjectId
// this.currentData.SiteId = row.SiteId // this.currentData.SiteId = row.SiteId
@ -497,27 +814,35 @@ export default {
this.currentData.Stakeholders = res.Result.StakeholderNames.join(', ') this.currentData.Stakeholders = res.Result.StakeholderNames.join(', ')
this.dialogVisible = true this.dialogVisible = true
this.loading = false this.loading = false
}).catch(() => { this.loading = false }) })
.catch(() => {
this.loading = false
})
}, },
// site // site
getSite() { getSite() {
getTrialSiteSelect(this.trialId).then(res => { getTrialSiteSelect(this.trialId).then((res) => {
this.siteOptions = res.Result this.siteOptions = res.Result
}) })
}, },
handleExportSubject() { handleExportSubject() {
getSubjectProgress_Export(this.searchData).then(res => { getSubjectProgress_Export(this.searchData)
}).catch(() => {}) .then((res) => {})
.catch(() => {})
}, },
handleExportPeriod() { handleExportPeriod() {
getReadingPeriodList_Export(this.searchData).then(res => { getReadingPeriodList_Export(this.searchData)
}).catch(() => {}) .then((res) => {})
.catch(() => {})
}, },
getTrialCriterionList() { getTrialCriterionList() {
getTrialCriterionList(this.trialId, false).then(res => { getTrialCriterionList(this.trialId, false)
.then((res) => {
this.trialCriterionList = res.Result this.trialCriterionList = res.Result
this.TrialReadingCriterionId = this.trialCriterionList[0].TrialReadingCriterionId this.TrialReadingCriterionId =
}).catch(() => {}) this.trialCriterionList[0].TrialReadingCriterionId
})
.catch(() => {})
}, },
handleSearch() { handleSearch() {
this.searchData.PageIndex = 1 this.searchData.PageIndex = 1
@ -546,7 +871,11 @@ export default {
} }
}, },
cellStyle({ row, column, rowIndex, columnIndex }) { cellStyle({ row, column, rowIndex, columnIndex }) {
if (columnIndex > 2 && (row.Data.length >= columnIndex - 2) && column.property) { if (
columnIndex > 2 &&
row.Data.length >= columnIndex - 2 &&
column.property
) {
const index = column.property.substring(4) * 1 const index = column.property.substring(4) * 1
// 0 访; 1 访; 2 ; 3 ; 4 ; 5 // 0 访; 1 访; 2 ; 3 ; 4 ; 5
const type = row.Data[index].ModuleType const type = row.Data[index].ModuleType
@ -557,23 +886,38 @@ export default {
return { 'vertical-align': 'top' } return { 'vertical-align': 'top' }
} else if ((type === 0 || type === 1) && status === 1) { } else if ((type === 0 || type === 1) && status === 1) {
// 访 // 访
return { 'background-color': 'rgb(189,215,238)', 'vertical-align': 'top' } return {
'background-color': 'rgb(189,215,238)',
'vertical-align': 'top',
}
} else if ((type === 0 || type === 1) && status === 2) { } else if ((type === 0 || type === 1) && status === 2) {
// 访 // 访
return { 'background-color': 'rgb(255,217,102)', 'vertical-align': 'top' } return {
'background-color': 'rgb(255,217,102)',
'vertical-align': 'top',
}
} else if ((type === 0 || type === 1) && status === 3) { } else if ((type === 0 || type === 1) && status === 3) {
// 访 绿 // 访 绿
return { 'background-color': 'rgb(169,208,142)', 'vertical-align': 'top' } return {
'background-color': 'rgb(169,208,142)',
'vertical-align': 'top',
}
} else if ((type === 0 || type === 1) && status === 4) { } else if ((type === 0 || type === 1) && status === 4) {
// 访 绿 // 访 绿
return { 'background-color': 'rgb(169,208,142)', 'vertical-align': 'top' } return {
'background-color': 'rgb(169,208,142)',
'vertical-align': 'top',
}
} else if ((type === 0 || type === 1) && status === 5) { } else if ((type === 0 || type === 1) && status === 5) {
// 访 // 访
return { 'background-color': 'rgb(244,176,132)', 'vertical-align': 'top' } return {
} 'background-color': 'rgb(244,176,132)',
'vertical-align': 'top',
} }
} }
} }
},
},
} }
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>