irc_web/.svn/pristine/1a/1ad17aaad1438079ba87dea71cb...

444 lines
15 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

<template>
<el-form
ref="selectSubjectForm"
size="small"
label-width="130px"
:inline="true"
>
<div class="base-dialog-body">
<el-divider content-position="left">筛选规则</el-divider>
<el-form-item
label="评估影像检查部位"
prop="IsJoinEvaluation"
>
脑部
</el-form-item>
<el-divider content-position="left">待处理访视列表</el-divider>
<el-table
ref="subjectList"
v-loading="btnLoading"
:data="list"
stripe
>
<el-table-column
prop="VisitName"
label="访视"
sortable="custom"
show-overflow-tooltip
width="120"
/>
<el-table-column
prop="EarliestScanDate"
label="最早拍片日期"
sortable="custom"
show-overflow-tooltip
>
<template slot-scope="scope">
{{ scope.row.EarliestScanDate ? moment(scope.row.EarliestScanDate).format('YYYY-MM-DD') : '' }}
</template>
</el-table-column>
<el-table-column
prop="LatestScanDate"
label="最晚拍片日期"
sortable="custom"
show-overflow-tooltip
>
<template slot-scope="scope">
{{ scope.row.LatestScanDate ? moment(scope.row.LatestScanDate).format('YYYY-MM-DD') : '' }}
</template>
</el-table-column>
<el-table-column
prop="ImageFilterState"
label="影像筛选状态"
sortable="custom"
show-overflow-tooltip
>
<template slot-scope="scope">
{{ $fd('ImageFilterState', scope.row.ImageFilterState) }}
</template>
</el-table-column>
<el-table-column
:label="$t('common:action:action')"
width="120"
fixed="right"
>
<template slot-scope="scope">
<!-- 影像筛选 -->
<el-button
circle
title="影像筛选"
icon="el-icon-picture-outline"
@click="handleImageScreening(scope.row)"
/>
<!-- 生成任务 -->
<el-button
circle
:disabled="scope.row.ImageFilterState !== 2"
title="生成任务"
icon="el-icon-success"
@click="handleCreateTask(scope.row)"
/>
</template>
</el-table-column>
</el-table>
<el-divider content-position="left">已生成任务访视列表</el-divider>
<el-table
ref="subjectList"
v-loading="btnLoading"
:data="list2"
stripe
>
<el-table-column
prop="VisitName"
label="访视"
sortable="custom"
show-overflow-tooltip
/>
<el-table-column
prop="UpdateTime"
label="任务生成时间"
sortable="custom"
show-overflow-tooltip
/>
<el-table-column
:label="$t('common:action:action')"
width="180"
>
<template slot-scope="scope">
<!-- 影像筛选 -->
<el-button
circle
title="影像筛选"
icon="el-icon-picture-outline"
@click="handleImageScreening(scope.row)"
/>
<el-button
circle
title="回退"
icon="el-icon-back"
@click="openReReadingOrBackList(scope.row)"
/>
<el-button
circle
title="任务列表"
icon="el-icon-document"
@click="handleOpenTaskAllocation(scope.row)"
/>
</template>
</el-table-column>
</el-table>
</div>
<div class="base-dialog-footer" style="text-align:right;margin-top:10px;">
<el-form-item>
<!-- 取消 -->
<el-button
:disabled="btnLoading"
size="small"
type="primary"
@click="close"
>
{{ $t('common:button:cancel') }}
</el-button>
</el-form-item>
</div>
<el-dialog
v-if="selectSubjectImage.visible"
:title="selectSubjectImage.title"
:visible.sync="selectSubjectImage.visible"
:fullscreen="true"
:append-to-body="true"
>
<subject-study :data="rowData" @close="selectSubjectImage.visible = false" @getList="getList"></subject-study>
</el-dialog>
<el-dialog
v-if="taskAllocationVisible.visible"
:title="taskAllocationVisible.title"
:visible.sync="taskAllocationVisible.visible"
:fullscreen="true"
:append-to-body="true"
>
<task-allacation :data="rowData" @close="taskAllocationVisible.visible = false"></task-allacation>
</el-dialog>
<el-dialog
v-if="ReReadingOrBackVisible"
:title="$t('trials:reviewTrack:dialog:backImpactList')"
:visible.sync="ReReadingOrBackVisible"
width="1460px"
append-to-body
:close-on-click-modal="false"
custom-class="base-dialog-wrapper"
>
<div class="base-dialog-body">
<el-table
v-loading="btnLoading"
:data="InfluenceTaskList"
stripe
height="100"
style="min-height: 400px;"
>
<!-- 任务编号 -->
<el-table-column
prop="TaskCode"
:label="$t('trials:reviewTrack:table:taskCode')"
min-width="100"
show-overflow-tooltip
/>
<!-- 中心编号 -->
<el-table-column
prop="TrialSiteCode"
:label="$t('trials:reviewTrack:table:siteCode')"
min-width="100"
show-overflow-tooltip
/>
<!-- 受试者编号 -->
<el-table-column
prop="SubjectCode"
:label="$t('trials:reviewTrack:table:subjectCode')"
min-width="120"
show-overflow-tooltip
/>
<!-- 任务名称 -->
<el-table-column
prop="VisitTaskNum"
:label="$t('trials:reviewTrack:table:taskName')"
min-width="120"
show-overflow-tooltip
>
<template slot-scope="scope">
{{scope.row.TaskName}}
</template>
</el-table-column>
<!-- 盲态任务标识 -->
<el-table-column
prop="TaskBlindName"
:label="$t('trials:reviewTrack:table:blindName')"
min-width="120"
show-overflow-tooltip
/>
<!-- 阅片标准 -->
<el-table-column
prop="TrialReadingCriterionName"
:label="$t('trials:reviewTrack:table:criterionName')"
min-width="100"
show-overflow-tooltip
>
</el-table-column>
<!-- 任务状态 -->
<el-table-column
prop="TaskState"
:label="$t('trials:reviewTrack:table:taskStatus')"
min-width="100"
show-overflow-tooltip
>
<template slot-scope="scope">
<el-tag v-if="scope.row.TaskState === 0" type="primary">{{ $fd('TaskState', scope.row.TaskState) }}</el-tag>
<el-tag v-if="scope.row.TaskState === 1" type="info">{{ $fd('TaskState', scope.row.TaskState) }}</el-tag>
<el-tag v-if="scope.row.TaskState === 3" type="danger">{{ $fd('TaskState', scope.row.TaskState) }}</el-tag>
<el-tag v-if="scope.row.TaskState === 4" type="warning">{{ $fd('TaskState', scope.row.TaskState) }}</el-tag>
</template>
</el-table-column>
<!-- 任务类型 -->
<el-table-column
prop="ReadingCategory"
min-width="100"
:label="$t('trials:reviewTrack:table:taskType')"
show-overflow-tooltip
>
<template slot-scope="scope">
<el-tag v-if="scope.row.ReadingCategory === 1" type="primary">{{ $fd('ReadingCategory', scope.row.ReadingCategory) }}</el-tag>
<el-tag v-if="scope.row.ReadingCategory === 2" type="info">{{ $fd('ReadingCategory', scope.row.ReadingCategory) }}</el-tag>
<el-tag v-if="scope.row.ReadingCategory === 4" type="danger">{{ $fd('ReadingCategory', scope.row.ReadingCategory) }}</el-tag>
<el-tag v-if="scope.row.ReadingCategory === 5" type="warning">{{ $fd('ReadingCategory', scope.row.ReadingCategory) }}</el-tag>
</template>
</el-table-column>
<!-- 阅片状态 -->
<el-table-column
prop="ReadingTaskState"
:label="$t('trials:reviewTrack:table:readingStatus')"
min-width="100"
show-overflow-tooltip
>
<template slot-scope="scope">
<el-tag v-if="scope.row.ReadingTaskState === 2" type="primary">{{ $fd('ReadingTaskState', scope.row.ReadingTaskState) }}</el-tag>
<el-tag v-else type="danger">{{ $fd('ReadingTaskState', scope.row.ReadingTaskState) }}</el-tag>
</template>
</el-table-column>
<!-- 生效后影响 -->
<el-table-column
prop="OptType"
:label="$t('trials:reviewTrack:applyReread:title:postEffectiveImpacts')"
min-width="100"
show-overflow-tooltip
>
<template slot-scope="scope">
<el-tag v-if="scope.row.OptType === 0" type="primary">{{ $fd('ReReadingOrBackOptType', scope.row.OptType) }}</el-tag>
<el-tag v-if="scope.row.OptType === 1" type="danger">{{ $fd('ReReadingOrBackOptType', scope.row.OptType) }}</el-tag>
<el-tag v-if="scope.row.OptType === 2" type="warning">{{ $fd('ReReadingOrBackOptType', scope.row.OptType) }}</el-tag>
</template>
</el-table-column>
<!-- 阅片人 -->
<el-table-column
prop="UserName"
:label="$t('trials:reviewTrack:table:reader')"
min-width="160"
show-overflow-tooltip
>
<template v-if="scope.row.DoctorUser" slot-scope="scope">
{{ scope.row.DoctorUser.UserName }}({{ scope.row.DoctorUser.FullName }})
</template>
</el-table-column>
</el-table>
<div style="font-size: 12px;color: #f66;margin-top: 10px;" v-if="ReReadingOtherInfo && ReReadingOtherInfo.IsIRAppyTaskInfluenced">
<!-- 注意列表中存在IR已申请重阅的任务 -->
{{$t('trials:reviewTrack:applyReread:title:msg1')}}
</div>
</div>
<div slot="footer" class="dialog-footer">
<!-- 取消 -->
<el-button :disabled="btnLoading" size="small" type="primary" @click="ReReadingOrBackVisible = false">
{{ $t('common:button:cancel') }}
</el-button>
<!-- 确定 -->
<el-button :loading="btnLoading" size="small" type="primary" @click="PMSetTaskBack">
{{$t('trials:reviewTrack:impactList:save')}}
</el-button>
</div>
</el-dialog>
</el-form>
</template>
<script>
import { getCriteriaVisitBackInfluenceTaskList, confirmBackCriteriaVisitTask, getSubjectCriteriaEvaluationVisitFilterList, getHaveGeneratedTaskList, batchGenerateTask, getVisitStudyAndSeriesList, batchAddSubjectCriteriaEvaluationVisitStudyFilter } from '@/api/trials/subject'
import subjectStudy from "./subjectStudy";
import moment from "moment";
import taskAllacation from './taskAllocation'
export default {
name: 'selectSubjectImage',
components: { subjectStudy, taskAllacation },
props: {
data: {
type: Object,
default: () => {}
}
},
data() {
return {
trialId: this.$route.query.trialId,
btnLoading: false,
list: [],
list2: [],
selectSubjectImage: { visible: false, title: '筛选影像' },
rowData: null,
moment,
taskAllocationVisible: { visible: false, title: '访视任务' },
InfluenceTaskList: [],
ReReadingOrBackVisible: false,
ReReadingOtherInfo: {
IsIRAppyTaskInfluenced: false
},
}
},
mounted() {
this.getList()
},
methods: {
PMSetTaskBack() {
this.loading = true
confirmBackCriteriaVisitTask({
TrialReadingCriterionId: this.rowData.TrialReadingCriterionId,
TrialId: this.trialId,
SubjectId: this.rowData.SubjectId,
SubjectVisitId: this.rowData.SubjectVisitId
}).then(res => {
this.loading = false
this.ReReadingOrBackVisible = false
this.getList()
// '退回成功'
this.$message.success(this.$t('trials:reviewTrack:message:returnedSuccessfully'))
}).catch(() => {this.loading = false})
},
openReReadingOrBackList(row) {
this.btnLoading = true
this.rowData = {...row}
getCriteriaVisitBackInfluenceTaskList({
TrialReadingCriterionId: row.TrialReadingCriterionId,
TrialId: this.trialId,
SubjectId: row.SubjectId,
SubjectVisitId: row.SubjectVisitId
}).then(res => {
this.InfluenceTaskList = res.Result
this.ReReadingOtherInfo = res.OtherInfo
this.ReReadingOrBackVisible = true
this.btnLoading = false
}).catch(() => {this.btnLoading = false})
},
handleOpenTaskAllocation(row) {
this.rowData = {...row}
this.taskAllocationVisible.visible = true
},
close() {
this.$emit('close')
},
getHaveGeneratedTaskList() {
var params = {
IsGeneratedTask: true,
TrialReadingCriterionId: this.data.TrialReadingCriterionId,
SubjectId: this.data.SubjectId
}
this.btnLoading = true
getSubjectCriteriaEvaluationVisitFilterList(params).then(res => {
this.btnLoading = false
this.list2 = res.Result
}).catch(() => {
this.btnLoading = false
})
// getHaveGeneratedTaskList(params).then(res => {
// this.list2 = res.Result
// this.btnLoading = false
// }).catch(() => {
// this.btnLoading = false
// })
},
handleImageScreening(row) {
this.rowData = row
this.selectSubjectImage.visible = true
},
handleCreateTask(row) {
var params = {
TrialReadingCriterionId: row.TrialReadingCriterionId,
TrialId: this.trialId,
SubjectId: row.SubjectId,
SubjectVisitIdList: [row.SubjectVisitId],
}
this.btnLoading = true
batchGenerateTask(params).then(res => {
this.$message.success('生成成功')
this.getList()
this.btnLoading = false
}).catch(() => {
this.btnLoading = false
})
},
getList() {
var params = {
IsGeneratedTask: false,
TrialReadingCriterionId: this.data.TrialReadingCriterionId,
SubjectId: this.data.SubjectId
}
this.btnLoading = true
getSubjectCriteriaEvaluationVisitFilterList(params).then(res => {
this.btnLoading = false
this.list = res.Result
this.getHaveGeneratedTaskList()
}).catch(() => {
this.btnLoading = false
})
}
}
}
</script>
<style scoped>
</style>