影像质控风险管理
continuous-integration/drone/push Build is passing Details

main
wangxiaoshuang 2025-12-18 13:38:02 +08:00
parent 4e46bbac84
commit 363ffa58b3
4 changed files with 53 additions and 41 deletions

View File

@ -83,33 +83,36 @@
{{ item.description }}
</div>
<div v-if="!item.keySeries" style="padding: 1px;">
{{ series.imageloadedArr.length <= series.instanceCount ? series.imageloadedArr.length : series.instanceCount }}/{{ item.instanceCount }}
{{ series.imageloadedArr.length <= series.instanceCount ? series.imageloadedArr.length :
series.instanceCount }}/{{ item.instanceCount }} </div>
</div>
</div>
</div>
<div v-if="showDelete" style="display: flex;flex-direction: row;justify-content: space-between;"
@click.stop="">
<div v-if="showDelete" style="display: flex;flex-direction: row;justify-content: space-between;"
@click.stop="">
<div>
<span style="font-size: 12px;margin-right: 5px">{{ $t('trials:audit:table:isReading')
}}</span>
<el-switch v-model="item.isReading" size="mini" @change="changeReadingStatus($event, item)" />
<div>
<span style="font-size: 12px;margin-right: 5px">{{ $t('trials:audit:table:isReading')
}}</span>
<el-switch v-model="item.isReading" size="mini"
@change="changeReadingStatus($event, item)" />
</div>
<div>
<span style="font-size: 12px;margin-right: 5px">{{ $t('trials:audit:table:isDelete')
}}</span>
<el-switch v-model="item.isDeleted" size="mini"
@change="changeDeleteStatus($event, item)" />
</div>
</div>
<div>
<span style="font-size: 12px;margin-right: 5px">{{ $t('trials:audit:table:isDelete') }}</span>
<el-switch v-model="item.isDeleted" size="mini" @change="changeDeleteStatus($event, item)" />
<div
v-if="item.prefetchInstanceCount > 0 && item.prefetchInstanceCount < item.instanceCount * 100">
<el-progress
:percentage="parseInt((item.prefetchInstanceCount / item.instanceCount).toFixed(2))" />
</div>
</div>
<div
v-if="item.prefetchInstanceCount > 0 && item.prefetchInstanceCount < item.instanceCount * 100">
<el-progress
:percentage="parseInt((item.prefetchInstanceCount / item.instanceCount).toFixed(2))" />
</div>
</div>
</div>
</div>
</div>
</el-tab-pane>
</el-tabs>
</div>
@ -891,6 +894,7 @@ export default {
//
this.seriesList[seriesIndex].loadStatus = true
workSpeedclose()
localStorage.setItem("QCRiskControl", 1)
if (!this.isFromCRCUpload) {
this.loadAllImages()
}

View File

@ -113,35 +113,35 @@
</div>
</el-tooltip>
<div style="padding: 1px;">
{{ series.imageloadedArr.length <= series.instanceCount ? series.imageloadedArr.length : series.instanceCount }}/{{ series.instanceCount }}
{{ series.imageloadedArr.length <= series.instanceCount ? series.imageloadedArr.length :
series.instanceCount }}/{{ series.instanceCount }} </div>
<div />
</div>
<div />
</div>
</div>
<div v-if="showDelete"
style="display: flex;flex-direction: row;justify-content: space-between;" @click.stop="">
<div v-if="showDelete"
style="display: flex;flex-direction: row;justify-content: space-between;" @click.stop="">
<div>
<span style="font-size: 12px;">{{ $t('trials:audit:table:isReading') }}</span>
<el-switch v-model="series.isReading" size="mini"
@change="changeReadingStatus($event, series)" />
<div>
<span style="font-size: 12px;">{{ $t('trials:audit:table:isReading') }}</span>
<el-switch v-model="series.isReading" size="mini"
@change="changeReadingStatus($event, series)" />
</div>
<div>
<span style="font-size: 12px;">{{ $t('trials:audit:table:isDelete') }}</span>
<el-switch v-model="series.isDeleted" size="mini"
@change="changeDeleteStatus($event, series)" />
</div>
</div>
<div>
<span style="font-size: 12px;">{{ $t('trials:audit:table:isDelete') }}</span>
<el-switch v-model="series.isDeleted" size="mini"
@change="changeDeleteStatus($event, series)" />
</div>
</div>
<!-- <div style="position: absolute;bottom: -10px;left: 0;width: 100%;">
<!-- <div style="position: absolute;bottom: -10px;left: 0;width: 100%;">
<el-progress v-if="series.prefetchInstanceCount>0 && series.prefetchInstanceCount<series.instanceCount" :percentage="Number(series.prefetchInstanceCount/series.instanceCount)*100" />
</div> -->
<div
v-if="series.prefetchInstanceCount > 0 && series.prefetchInstanceCount < series.instanceCount * 100">
<el-progress
:percentage="parseInt((series.prefetchInstanceCount / series.instanceCount).toFixed(2))" />
</div>
<div
v-if="series.prefetchInstanceCount > 0 && series.prefetchInstanceCount < series.instanceCount * 100">
<el-progress
:percentage="parseInt((series.prefetchInstanceCount / series.instanceCount).toFixed(2))" />
</div>
</div>
</div>
</el-collapse-item>
</el-collapse>
@ -937,6 +937,7 @@ export default {
this.loadAllImages()
}
workSpeedclose()
localStorage.setItem("QCRiskControl", 1)
}
}
}

View File

@ -1100,6 +1100,8 @@ export default {
SecondReviewTime: '',
IsSecondPass: false,
userId: zzSessionStorage.getItem('userId'),
QCRiskControl: false
}
},
async mounted() {
@ -1314,6 +1316,7 @@ export default {
this.SecondReviewTime = this.secondReviewList[0].SecondReviewTime
}
}
this.QCRiskControl = res.Result.QCRiskControl
this.existsManual = res.Result.ExistsManual
this.qCQuestionAnswerList = res.Result.QCQuestionAnswerList
this.IsHaveStudyClinicalData = res.Result.IsHaveStudyClinicalData
@ -1929,6 +1932,7 @@ export default {
this.auditState = auditState
return
}
if (localStorage.getItem('QCRiskControl') <= 0 && this.QCRiskControl) return this.$confirm(this.$t('trials:qcQuality:title:noViewImage'))
if (auditState === 8) {
var isgo = true
var hasStudyName = true,
@ -2421,6 +2425,7 @@ export default {
if (this.open) {
this.open.close()
}
localStorage.setItem("QCRiskControl", 1)
// this.previewAllNoneDicomVisible = true
let trialId = this.$route.query.trialId
var token = getToken()
@ -2438,6 +2443,7 @@ export default {
if (this.open) {
this.open.close()
}
localStorage.setItem("QCRiskControl", 1)
let trialId = this.$route.query.trialId
var token = getToken()
const routeData = this.$router.resolve({

View File

@ -880,6 +880,7 @@ export default {
//
handlePrimaryQC(row) {
if (!this.OtherInfo.IsQCQuestionConfirmed) return this.$alert(this.$t("trials:qcCheck:alert:questionNoConfirm"))
localStorage.setItem("QCRiskControl", 0)
this.loading = true
isQCCanOpt(row.Id)
.then((res) => {