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

rj
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>
</el-radio-group> </el-radio-group>
</el-form-item> </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')" <el-form-item :label="$t('trials:logincCfg:form:IsIQCAutoTaskDistinguishType')"
prop="IsIQCAutoTaskDistinguishType" v-if="form.IsIQCAutoNextTask && showMore"> prop="IsIQCAutoTaskDistinguishType" v-if="form.IsIQCAutoNextTask && showMore">
@ -528,6 +545,8 @@ export default {
StudyUseModalityList: [], StudyUseModalityList: [],
StudyUseStudyNameList: [], StudyUseStudyNameList: [],
IsIQCAutoNextTask: false, IsIQCAutoNextTask: false,
IsSupportQCDownloadImage: false,
IsOpenLostVistRead: false,
IsIQCAutoTaskDistinguishType: false IsIQCAutoTaskDistinguishType: false
// ClinicalDataSetNames: [], // ClinicalDataSetNames: [],
// ClinicalDataTrialSetIds: [], // ClinicalDataTrialSetIds: [],
@ -1263,6 +1282,16 @@ export default {
NewVal: this.$fd('YesOrNo', this.form.IsIQCAutoNextTask), NewVal: this.$fd('YesOrNo', this.form.IsIQCAutoNextTask),
OldVal: this.$fd('YesOrNo', this.initialForm.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'), Name: this.$t('trials:logincCfg:form:IsIQCAutoTaskDistinguishType'),
NewVal: this.$fd('YesOrNo', this.form.IsIQCAutoTaskDistinguishType), NewVal: this.$fd('YesOrNo', this.form.IsIQCAutoTaskDistinguishType),

View File

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