项目逻辑配置中增加:质控时,可下载影像、访视失访时,后续访视可阅片
continuous-integration/drone/push Build is passing Details

main
wangxiaoshuang 2026-05-21 15:31:54 +08:00
parent b6877d4fe8
commit 04580ed1bb
2 changed files with 54 additions and 24 deletions

View File

@ -118,6 +118,23 @@
</el-radio>
</el-radio-group>
</el-form-item>
<!-- QC质控下载 -->
<el-form-item :label="$t('trials:logincCfg:form:IsSupportQCDownloadImage')" prop="IsSupportQCDownloadImage"
v-if="showMore">
<el-radio-group v-model="form.IsSupportQCDownloadImage" :disabled="form.IsTrialBasicLogicConfirmed && !isEdit">
<el-radio v-for="item of $d.YesOrNo" :key="`IsSupportQCDownloadImage${item.value}`" :label="item.value">
{{ item.label }}
</el-radio>
</el-radio-group>
</el-form-item>
<!-- 失访可读 -->
<el-form-item :label="$t('trials:logincCfg:form:IsOpenLostVistRead')" prop="IsOpenLostVistRead " v-if="showMore">
<el-radio-group v-model="form.IsOpenLostVistRead" :disabled="form.IsTrialBasicLogicConfirmed && !isEdit">
<el-radio v-for="item of $d.YesOrNo" :key="`IsOpenLostVistRead ${item.value}`" :label="item.value">
{{ item.label }}
</el-radio>
</el-radio-group>
</el-form-item>
<!-- 自动任务是否区分类型 -->
<el-form-item :label="$t('trials:logincCfg:form:IsIQCAutoTaskDistinguishType')"
prop="IsIQCAutoTaskDistinguishType" v-if="form.IsIQCAutoNextTask && showMore">
@ -528,6 +545,8 @@ export default {
StudyUseModalityList: [],
StudyUseStudyNameList: [],
IsIQCAutoNextTask: false,
IsSupportQCDownloadImage: false,
IsOpenLostVistRead: false,
IsIQCAutoTaskDistinguishType: false
// ClinicalDataSetNames: [],
// ClinicalDataTrialSetIds: [],
@ -1263,6 +1282,16 @@ export default {
NewVal: this.$fd('YesOrNo', this.form.IsIQCAutoNextTask),
OldVal: this.$fd('YesOrNo', this.initialForm.IsIQCAutoNextTask),
},
{
Name: this.$t('trials:logincCfg:form:IsSupportQCDownloadImage'),
NewVal: this.$fd('YesOrNo', this.form.IsSupportQCDownloadImage),
OldVal: this.$fd('YesOrNo', this.initialForm.IsSupportQCDownloadImage),
},
{
Name: this.$t('trials:logincCfg:form:IsOpenLostVistRead'),
NewVal: this.$fd('YesOrNo', this.form.IsOpenLostVistRead),
OldVal: this.$fd('YesOrNo', this.initialForm.IsOpenLostVistRead),
},
{
Name: this.$t('trials:logincCfg:form:IsIQCAutoTaskDistinguishType'),
NewVal: this.$fd('YesOrNo', this.form.IsIQCAutoTaskDistinguishType),

View File

@ -40,14 +40,14 @@
{{ $store.state.trials.uploadTip }}
</div> -->
<el-tooltip v-if="
$store.state.trials.config.IsSupportQCDownloadImage &&
IsSupportQCDownloadImage &&
!hasPermi(['role:spm'])
" :content="$t('trials:download:tip:message')" placement="top-end" effect="light">
<i class="el-icon-warning-outline" style="font-size: 18px"></i>
</el-tooltip>
<!-- 下载所有影像 -->
<el-button v-if="
$store.state.trials.config.IsSupportQCDownloadImage &&
IsSupportQCDownloadImage &&
!hasPermi(['role:spm'])
" :loading="downloading" :disabled="selectTableDicom.length <= 0" size="small" type="primary"
style="margin-left: 10px" @click="getCRCUploadedStudyInfo('dicom')">
@ -55,7 +55,7 @@
</el-button>
<!-- 下载工具 -->
<el-button v-if="
$store.state.trials.config.IsSupportQCDownloadImage &&
IsSupportQCDownloadImage &&
!hasPermi(['role:spm'])
" :loading="downloading" size="small" type="primary" style="margin-left: 10px"
@click="getCRCUploadedStudyInfo('tools')">
@ -73,15 +73,13 @@
<el-table :data="studyList" :row-class-name="tableRowClassName"
@selection-change="handleSelectionChangeDicom"
:default-sort="{ prop: 'UploadedTime', order: 'ascending' }">
<el-table-column type="selection" width="55" v-if='$store.state.trials.config.IsSupportQCDownloadImage'>
<el-table-column type="selection" width="55" v-if='IsSupportQCDownloadImage'>
</el-table-column>
<!-- 检查编号 -->
<el-table-column prop="StudyCode" :label="$t('trials:audit:table:studyId')" sortable>
<template slot-scope="scope">
<el-tooltip
placement="top"
v-if="['PT、CT', 'CT、PT', 'PET-CT'].includes(scope.row.Modalities) && IsHaveStudyClinicalData && scope.row.IsHasEmptyPatientInfo"
>
<el-tooltip placement="top"
v-if="['PT、CT', 'CT、PT', 'PET-CT'].includes(scope.row.Modalities) && IsHaveStudyClinicalData && scope.row.IsHasEmptyPatientInfo">
<div slot="content">{{ $t('trials:audit:message:ptDataValid') }}</div>
<span class="el-icon-warning" style="color: red; cursor: pointer"></span>
</el-tooltip>
@ -158,12 +156,11 @@
:disabled="isAudit || scope.row.IsDeleted || SecondReviewState > 0"
@click="handleEditStudy(scope.row)" />
<!-- 预览PET-CT数据 -->
<el-button icon="el-icon-document" :title="$t('trials:audit:tab:clinicalData')"
v-if="
['PT、CT', 'CT、PT', 'PET-CT'].includes(
scope.row.Modalities
) && IsHaveStudyClinicalData
" circle :disabled="scope.row.IsDeleted" @click="handlePreviewClinicalData(scope.row)" />
<el-button icon="el-icon-document" :title="$t('trials:audit:tab:clinicalData')" v-if="
['PT、CT', 'CT、PT', 'PET-CT'].includes(
scope.row.Modalities
) && IsHaveStudyClinicalData
" circle :disabled="scope.row.IsDeleted" @click="handlePreviewClinicalData(scope.row)" />
<!-- 质控后编辑 -->
<el-button icon="el-icon-edit" :title="$t('trials:audit:action:Correction')" circle
v-if="isAuditToEdit" @click="handleEditStudy(scope.row)" />
@ -257,14 +254,14 @@
{{ $store.state.trials.uploadTip }}
</div> -->
<el-tooltip v-if="
$store.state.trials.config.IsSupportQCDownloadImage &&
IsSupportQCDownloadImage &&
!hasPermi(['role:spm'])
" :content="$t('trials:download:tip:message')" placement="top-end" effect="light">
<i class="el-icon-warning-outline" style="font-size: 18px"></i>
</el-tooltip>
<!-- 下载所有影像 -->
<el-button v-if="
$store.state.trials.config.IsSupportQCDownloadImage &&
IsSupportQCDownloadImage &&
!hasPermi(['role:spm'])
" :loading="downloading" :disabled="selectTableNonedicom.length <= 0" size="small" type="primary"
style="margin-left: 10px" @click="getCRCUploadedStudyInfo('noneDicom')">
@ -283,7 +280,7 @@
</div>
<el-table :data="noneDicomStudyList" @selection-change="handleSelectionChangeNonedicom"
:row-class-name="tableRowClassName" :default-sort="{ prop: 'CreateTime', order: 'ascending' }">
<el-table-column type="selection" width="55" v-if='$store.state.trials.config.IsSupportQCDownloadImage'>
<el-table-column type="selection" width="55" v-if='IsSupportQCDownloadImage'>
</el-table-column>
<!-- 检查编号 -->
<el-table-column prop="CodeView" :label="$t('trials:audit:table:nonDicomsStudyId')" sortable />
@ -910,8 +907,7 @@
{{ $t('trials:audit:button:auditPassed') }}
</el-button>
<!-- 跳过 -->
<el-button size="small" type="primary" round
@click="skipTask">
<el-button size="small" type="primary" round @click="skipTask">
{{ $t('trials:audit:button:skipTask') }}
</el-button>
<!-- 审核终止 -->
@ -920,8 +916,11 @@
<!-- </el-button>-->
</div>
<!--petct临床数据预览-->
<el-dialog v-if="petVisible" :close-on-click-modal="false" :show-close="true" :visible.sync="petVisible" append-to-body>
<uploadPetClinicalData :subject-visit-id="data.Id" :data="data" :studyData="rowData" :allow-add-or-edit="false" :isPatientFormAllowEdit="!isAudit || SecondReviewState > 0 || isAuditToEdit" :isAudit="isAuditToEdit" @close="petVisible = false"/>
<el-dialog v-if="petVisible" :close-on-click-modal="false" :show-close="true" :visible.sync="petVisible"
append-to-body>
<uploadPetClinicalData :subject-visit-id="data.Id" :data="data" :studyData="rowData" :allow-add-or-edit="false"
:isPatientFormAllowEdit="!isAudit || SecondReviewState > 0 || isAuditToEdit" :isAudit="isAuditToEdit"
@close="petVisible = false" />
</el-dialog>
</div>
</template>
@ -1117,7 +1116,8 @@ export default {
IsSecondPass: false,
userId: zzSessionStorage.getItem('userId'),
QCRiskControl: false
QCRiskControl: false,
IsSupportQCDownloadImage: false
}
},
async mounted() {
@ -1324,6 +1324,7 @@ export default {
this.loading = true
getVisitQCInfo(this.data.Id, this.data.QCProcessEnum, this.currentQCType)
.then((res) => {
this.IsSupportQCDownloadImage = res.Result.IsSupportQCDownloadImage
this.secondReviewList = res.Result.SecondReviewList
if (this.secondReviewList.length > 0) {
let data = this.secondReviewList.find(item => item.SignTime) || {}
@ -2176,11 +2177,11 @@ export default {
if (confirm !== 'confirm') return
this.$emit('close')
}
} catch(e) {
} catch (e) {
console.log(e)
this.$emit('getList')
}
},
getNextQCInfo() {
// ''