完全随机IR阅片列表及阅片页面更改
continuous-integration/drone/push Build is pending Details

main
caiyiling 2026-07-09 14:17:02 +08:00
parent 447b74fa55
commit 1af9b48622
7 changed files with 39 additions and 22 deletions

View File

@ -27,7 +27,7 @@
class="study-wrapper"> class="study-wrapper">
<StudyList v-if="selectArr.includes(s.VisitTaskId)" :ref="s.VisitTaskId" :visit-task-id="s.VisitTaskId" <StudyList v-if="selectArr.includes(s.VisitTaskId)" :ref="s.VisitTaskId" :visit-task-id="s.VisitTaskId"
:trial-id="trialId" :subject-visit-id="s.VisitId" :task-blind-name="s.TaskBlindName" :trial-id="trialId" :subject-visit-id="s.VisitId" :task-blind-name="s.TaskBlindName"
:is-reading-show-subject-info="isReadingShowSubjectInfo" @loadImageStack="loadImageStack" :is-reading-show-subject-info="isReadingShowSubjectInfo" :is-reading-task-view-in-order="isReadingTaskViewInOrder" @loadImageStack="loadImageStack"
@previewNoneDicoms="previewNoneDicoms" /> @previewNoneDicoms="previewNoneDicoms" />
</div> </div>
</div> </div>

View File

@ -28,7 +28,7 @@
</div> </div>
<div> <div>
<span class="study-meta-line" :title="study.Modalities"> <span class="study-meta-line" :title="study.Modalities">
<span class="study-code" :title="study.StudyCode">{{ study.StudyCode }}</span> <span v-if="isReadingTaskViewInOrder !== 0" class="study-code" :title="study.StudyCode">{{ study.StudyCode }}</span>
<span class="study-modality">{{ study.Modalities }}({{ study.SeriesCount }})</span> <span class="study-modality">{{ study.Modalities }}({{ study.SeriesCount }})</span>
<span class="patient-info" v-if="['PT、CT', 'CT、PT', 'PET-CT'].includes(study.Modalities)"> <span class="patient-info" v-if="['PT、CT', 'CT、PT', 'PET-CT'].includes(study.Modalities)">
<el-popover placement="right-start" trigger="hover" popper-class="patient-info-popper"> <el-popover placement="right-start" trigger="hover" popper-class="patient-info-popper">
@ -226,6 +226,10 @@ export default {
isReadingShowSubjectInfo: { isReadingShowSubjectInfo: {
type: Boolean, type: Boolean,
required: true required: true
},
isReadingTaskViewInOrder: {
type: Number,
required: true
} }
}, },
data() { data() {
@ -340,7 +344,7 @@ export default {
} }
}) })
var i = -1 var i = -1
var isReadingTaskViewInOrder = parseInt(this.$router.currentRoute.query.isReadingTaskViewInOrder) var isReadingTaskViewInOrder = parseInt(this.isReadingTaskViewInOrder)
if (isReadingTaskViewInOrder === 2) { if (isReadingTaskViewInOrder === 2) {
// //
i = res.length === 2 ? 1 : -1 i = res.length === 2 ? 1 : -1
@ -427,7 +431,7 @@ export default {
async getInitSeries() { async getInitSeries() {
var seriesList = [] var seriesList = []
var isReadingTaskViewInOrder = parseInt(this.$router.currentRoute.query.isReadingTaskViewInOrder) var isReadingTaskViewInOrder = parseInt(this.isReadingTaskViewInOrder)
var idx = this.visitTaskList.findIndex(i => i.VisitTaskId === this.visitTaskId) var idx = this.visitTaskList.findIndex(i => i.VisitTaskId === this.visitTaskId)
this.studyList = this.visitTaskList[idx].StudyList this.studyList = this.visitTaskList[idx].StudyList
const studyList = this.visitTaskList[idx].StudyList.filter(i => i.IsDicom) const studyList = this.visitTaskList[idx].StudyList.filter(i => i.IsDicom)

View File

@ -1,10 +1,10 @@
<template> <template>
<div v-loading="loading" class="study-wrapper"> <div v-loading="loading" class="study-wrapper">
<div class="study-info"> <div class="study-info" v-if="taskInfo && taskInfo.IsReadingShowSubjectInfo">
<div v-if="taskInfo && taskInfo.IsReadingShowSubjectInfo" :title="taskInfo.SubjectCode"> <div :title="taskInfo.SubjectCode">
{{ taskInfo.SubjectCode }} {{ taskInfo.SubjectCode }}
</div> </div>
<div v-if="taskInfo && taskInfo.IsReadingShowSubjectInfo" :title="visitTaskInfo.TaskBlindName"> <div :title="visitTaskInfo.TaskBlindName">
{{ visitTaskInfo.TaskBlindName }} {{ visitTaskInfo.TaskBlindName }}
</div> </div>
</div> </div>
@ -21,7 +21,7 @@
</div> </div>
<div> <div>
<span class="study-meta-line" :title="study.Modalities"> <span class="study-meta-line" :title="study.Modalities">
<span class="study-code" :title="study.StudyCode">{{ study.StudyCode }}</span> <span v-if="taskInfo && taskInfo.IsReadingTaskViewInOrder !== 0" class="study-code" :title="study.StudyCode">{{ study.StudyCode }}</span>
<span class="study-modality">{{ `${study.Modalities}(${study.SeriesCount})` }}</span> <span class="study-modality">{{ `${study.Modalities}(${study.SeriesCount})` }}</span>
<span class="patient-info" v-if="['PT、CT', 'CT、PT', 'PET-CT'].includes(study.Modalities)"> <span class="patient-info" v-if="['PT、CT', 'CT、PT', 'PET-CT'].includes(study.Modalities)">
<el-popover placement="right-start" trigger="hover" popper-class="patient-info-popper"> <el-popover placement="right-start" trigger="hover" popper-class="patient-info-popper">

View File

@ -24,7 +24,7 @@
</el-select> </el-select>
</el-form-item> </el-form-item>
<!-- 受试者编号 --> <!-- 受试者编号 -->
<el-form-item :label="$t('trials:medicalFeedback:table:subjectCode')"> <el-form-item v-if="otherInfo && otherInfo.IsReadingTaskViewInOrder !== 0" :label="$t('trials:medicalFeedback:table:subjectCode')">
<el-input <el-input
v-model="searchData.SubjectCode" v-model="searchData.SubjectCode"
style="width:130px;" style="width:130px;"
@ -172,6 +172,7 @@
<!-- 受试者编号 --> <!-- 受试者编号 -->
<el-table-column <el-table-column
v-if="otherInfo && otherInfo.IsReadingTaskViewInOrder !== 0"
prop="SubjectCode" prop="SubjectCode"
min-width="100" min-width="100"
:label="$t('trials:medicalFeedback:table:subjectCode')" :label="$t('trials:medicalFeedback:table:subjectCode')"
@ -409,7 +410,8 @@ export default {
chatForm: { visible: false, title: '' }, // chatForm: { visible: false, title: '' }, //
auditVisible: false, auditVisible: false,
trialCriterionList: [], trialCriterionList: [],
TrialReadingCriterionId: '0' TrialReadingCriterionId: '0',
otherInfo: null
} }
}, },
watch: { watch: {
@ -437,6 +439,7 @@ export default {
getIRMedicalFeedbackList(this.searchData).then(res => { getIRMedicalFeedbackList(this.searchData).then(res => {
this.list = res.Result.CurrentPageData this.list = res.Result.CurrentPageData
this.total = res.Result.TotalCount this.total = res.Result.TotalCount
this.otherInfo = res.OtherInfo
this.loading = false this.loading = false
}).catch(() => { this.loading = false }) }).catch(() => { this.loading = false })
}, },
@ -454,7 +457,11 @@ export default {
}, },
handleReply(row) { handleReply(row) {
this.currentRow = { ...row } this.currentRow = { ...row }
this.chatForm.title = `${this.$t('trials:medicalFeedback:title:qaRecord')} (${row.SubjectCode} ${row.TaskBlindName})` if (this.otherInfo && this.otherInfo.IsReadingTaskViewInOrder !== 0) {
this.chatForm.title = `${this.$t('trials:medicalFeedback:title:qaRecord')} (${row.SubjectCode} ${row.TaskBlindName})`
} else {
this.chatForm.title = `${this.$t('trials:medicalFeedback:title:qaRecord')} (${row.TaskBlindName})`
}
this.chatForm.visible = true this.chatForm.visible = true
}, },
async nextTask(taskMedicalReviewId) { async nextTask(taskMedicalReviewId) {

View File

@ -13,7 +13,7 @@
</el-select> </el-select>
</el-form-item> </el-form-item>
<!-- 受试者编号 --> <!-- 受试者编号 -->
<el-form-item :label="$t('trials:readTask:table:subjectCode')"> <el-form-item v-if="otherInfo && otherInfo.IsReadingTaskViewInOrder !== 0" :label="$t('trials:readTask:table:subjectCode')">
<el-input v-model="searchData.SubjectCode" style="width:130px;" clearable /> <el-input v-model="searchData.SubjectCode" style="width:130px;" clearable />
</el-form-item> </el-form-item>
<!-- 任务状态 --> <!-- 任务状态 -->
@ -70,7 +70,7 @@
show-overflow-tooltip show-overflow-tooltip
/> --> /> -->
<!-- 受试者编号 --> <!-- 受试者编号 -->
<el-table-column prop="SubjectCode" min-width="100" :label="$t('trials:readTask:table:subjectCode')" <el-table-column v-if="otherInfo && otherInfo.IsReadingTaskViewInOrder !== 0" prop="SubjectCode" min-width="100" :label="$t('trials:readTask:table:subjectCode')"
sortable="custom" show-overflow-tooltip /> sortable="custom" show-overflow-tooltip />
<!-- 盲态任务标识 --> <!-- 盲态任务标识 -->
<el-table-column prop="TaskBlindName" min-width="100" :label="$t('trials:readTask:table:blindName')" <el-table-column prop="TaskBlindName" min-width="100" :label="$t('trials:readTask:table:blindName')"
@ -177,7 +177,8 @@
custom-class="base-dialog-wrapper"> custom-class="base-dialog-wrapper">
<el-form ref="reasonForm" :rules="rules" :model="ApplyforReasonForm" class="demo-ruleForm" size="small" <el-form ref="reasonForm" :rules="rules" :model="ApplyforReasonForm" class="demo-ruleForm" size="small"
label-width="380px"> label-width="380px">
<p>{{ $t('trials:readTask:applyReread:title').replace('xxx', rowData.SubjectCode).replace('yyy', rowData.TaskBlindName) }}</p> <p v-if="otherInfo && otherInfo.IsReadingTaskViewInOrder !== 0">{{ $t('trials:readTask:applyReread:title').replace('xxx', rowData.SubjectCode).replace('yyy', rowData.TaskBlindName) }}</p>
<p v-else>{{ $t('trials:readTask:applyReread:title2').replace('yyy', rowData.TaskBlindName) }}</p>
<!-- 申请原因 --> <!-- 申请原因 -->
<el-divider content-position="left">{{ $t('trials:readTask:title:applyReason') }}</el-divider> <el-divider content-position="left">{{ $t('trials:readTask:title:applyReason') }}</el-divider>
<!-- 申请原因 --> <!-- 申请原因 -->
@ -229,7 +230,7 @@
<el-table-column prop="TrialSiteCode" :label="$t('trials:readTask:table:siteCode')" min-width="100" <el-table-column prop="TrialSiteCode" :label="$t('trials:readTask:table:siteCode')" min-width="100"
show-overflow-tooltip /> show-overflow-tooltip />
<!-- 受试者编号 --> <!-- 受试者编号 -->
<el-table-column prop="SubjectCode" :label="$t('trials:readTask:table:subjectCode')" min-width="120" <el-table-column v-if="otherInfo && otherInfo.IsReadingTaskViewInOrder !== 0" prop="SubjectCode" :label="$t('trials:readTask:table:subjectCode')" min-width="120"
show-overflow-tooltip /> show-overflow-tooltip />
<!-- <el-table-column <!-- <el-table-column
prop="VisitTaskNum" prop="VisitTaskNum"
@ -366,7 +367,8 @@ export default {
}, },
trialCriterionList: [], trialCriterionList: [],
TrialReadingCriterionId: '0', TrialReadingCriterionId: '0',
openWindow: null openWindow: null,
otherInfo: null
} }
}, },
watch: { watch: {
@ -413,6 +415,7 @@ export default {
getIRHaveReadTaskList(this.searchData).then(res => { getIRHaveReadTaskList(this.searchData).then(res => {
this.list = res.Result.CurrentPageData this.list = res.Result.CurrentPageData
this.total = res.Result.TotalCount this.total = res.Result.TotalCount
this.otherInfo = res.OtherInfo
this.loading = false this.loading = false
}).catch(() => { this.loading = false }) }).catch(() => { this.loading = false })
}, },

View File

@ -35,7 +35,7 @@
</el-select> </el-select>
</el-form-item> </el-form-item>
<!-- 受试者编号 --> <!-- 受试者编号 -->
<el-form-item :label="$t('trials:rereadTask:table:subjectCode')"> <el-form-item v-if="otherInfo && otherInfo.IsReadingTaskViewInOrder !== 0" :label="$t('trials:rereadTask:table:subjectCode')">
<el-input v-model="searchData.SubjectCode" style="width:100px;" /> <el-input v-model="searchData.SubjectCode" style="width:100px;" />
</el-form-item> </el-form-item>
<!-- <el-form-item style="margin-bottom:10px" label="访视/阅片期名称"> <!-- <el-form-item style="margin-bottom:10px" label="访视/阅片期名称">
@ -121,6 +121,7 @@
/> />
<!-- 受试者编号 --> <!-- 受试者编号 -->
<el-table-column <el-table-column
v-if="otherInfo && otherInfo.IsReadingTaskViewInOrder !== 0"
prop="OriginalReReadingTask.SubjectCode" prop="OriginalReReadingTask.SubjectCode"
min-width="90" min-width="90"
:label="$t('trials:rereadTask:table:subjectCode')" :label="$t('trials:rereadTask:table:subjectCode')"
@ -330,7 +331,8 @@ export default {
}, },
ConfirmReReadingVisible: false, ConfirmReReadingVisible: false,
trialCriterionList: [], trialCriterionList: [],
TrialReadingCriterionId: '0' TrialReadingCriterionId: '0',
otherInfo: null
} }
}, },
watch: { watch: {
@ -373,6 +375,7 @@ export default {
getIRReReadingTaskList(this.searchData).then(res => { getIRReReadingTaskList(this.searchData).then(res => {
this.list = res.Result.CurrentPageData this.list = res.Result.CurrentPageData
this.total = res.Result.TotalCount this.total = res.Result.TotalCount
this.otherInfo = res.OtherInfo
this.loading = false this.loading = false
}).catch(() => { this.loading = false }) }).catch(() => { this.loading = false })
}, },

View File

@ -1,10 +1,10 @@
<template> <template>
<div v-loading="loading" class="study-wrapper"> <div v-loading="loading" class="study-wrapper">
<div class="study-info"> <div class="study-info" v-if="taskInfo && taskInfo.IsReadingShowSubjectInfo">
<div v-if="taskInfo && taskInfo.IsReadingShowSubjectInfo" :title="taskInfo.SubjectCode"> <div :title="taskInfo.SubjectCode">
{{ taskInfo.SubjectCode }} {{ taskInfo.SubjectCode }}
</div> </div>
<div v-if="taskInfo && taskInfo.IsReadingShowSubjectInfo" :title="visitTaskInfo.TaskBlindName"> <div :title="visitTaskInfo.TaskBlindName">
{{ visitTaskInfo.TaskBlindName }} {{ visitTaskInfo.TaskBlindName }}
</div> </div>
</div> </div>
@ -15,7 +15,7 @@
<div v-if="!study.IsCriticalSequence" class="dicom-desc"> <div v-if="!study.IsCriticalSequence" class="dicom-desc">
<!-- <div v-if="taskInfo && taskInfo.IsShowStudyName">{{ study.StudyName }}</div> --> <!-- <div v-if="taskInfo && taskInfo.IsShowStudyName">{{ study.StudyName }}</div> -->
<div style="text-overflow: ellipsis;overflow: hidden;"> <div style="text-overflow: ellipsis;overflow: hidden;">
<span :title="study.CodeView">{{ study.CodeView }}</span> <span v-if="taskInfo && taskInfo.IsReadingTaskViewInOrder !== 0" :title="study.CodeView">{{ study.CodeView }}</span>
<span v-if="taskInfo && taskInfo.IsShowStudyName" :title="study.StudyName" style="margin-left: 5px;">{{ <span v-if="taskInfo && taskInfo.IsShowStudyName" :title="study.StudyName" style="margin-left: 5px;">{{
study.StudyName }}</span> study.StudyName }}</span>
</div> </div>