336 lines
9.0 KiB
Plaintext
336 lines
9.0 KiB
Plaintext
<template>
|
|
<div class="app-container">
|
|
<div class="ImageReviewTask-list app-container">
|
|
<el-collapse v-model="activeNames">
|
|
<el-collapse-item
|
|
title="Timepoint Efficacy Assessment"
|
|
name="TimepointEfficacy"
|
|
>
|
|
<el-table
|
|
ref="TimepointEfficacyTable"
|
|
:data="timepointEfficacyList"
|
|
stripe
|
|
size="small"
|
|
>
|
|
<el-table-column type="index" width="60" />
|
|
<el-table-column
|
|
prop="VisitName"
|
|
label="Visit"
|
|
show-overflow-tooltip
|
|
min-width="120"
|
|
>
|
|
<template
|
|
slot-scope="scope"
|
|
>{{ scope.row.VisitName + ' ' }}
|
|
<el-button
|
|
type="text"
|
|
size="small"
|
|
@click="goCRF(scope.row)"
|
|
>CRF</el-button>
|
|
<el-button
|
|
type="text"
|
|
size="small"
|
|
@click="goVisitImage(scope.row)"
|
|
>Image</el-button>
|
|
</template>
|
|
</el-table-column>
|
|
<el-table-column
|
|
prop="OverallResponse"
|
|
label="Timepoint Efficacy Assessment"
|
|
show-overflow-tooltip
|
|
min-width="100"
|
|
/>
|
|
|
|
<el-table-column
|
|
prop="Agree"
|
|
label="Agree or not"
|
|
show-overflow-tooltip
|
|
min-width="100"
|
|
>
|
|
<template slot-scope="scope">
|
|
<el-select
|
|
v-model="scope.row.GlobalRSSelect.Agree"
|
|
style="width: 100%"
|
|
size="small"
|
|
>
|
|
<!-- <el-option label="Please select" /> -->
|
|
<el-option :value="true" label="Agree" />
|
|
<el-option :value="false" label="Disagree" />
|
|
</el-select>
|
|
</template>
|
|
</el-table-column>
|
|
|
|
<el-table-column
|
|
prop="newRS"
|
|
label="Updated Timepoint Efficacy Assessment"
|
|
show-overflow-tooltip
|
|
min-width="100"
|
|
>
|
|
<template slot-scope="scope">
|
|
<el-select
|
|
v-model="scope.row.GlobalRSSelect.NewRS"
|
|
style="width: 100%"
|
|
size="small"
|
|
>
|
|
<!-- <el-option
|
|
v-for="item in VisitLymphNodeTargetList"
|
|
:key="item.value"
|
|
:label="item.TRORRES"
|
|
:value="item.TRORRES"
|
|
/> -->
|
|
<el-option value="test1" label="test1" />
|
|
<el-option value="test2" label="test2" />
|
|
</el-select>
|
|
</template>
|
|
</el-table-column>
|
|
|
|
<el-table-column
|
|
prop="Note"
|
|
label="Comments for This Timepoint"
|
|
min-width="100"
|
|
>
|
|
<template slot-scope="scope">
|
|
<el-input
|
|
v-model="scope.row.GlobalRSSelect.Note"
|
|
type="text"
|
|
placeholder=""
|
|
size="small"
|
|
:disabled="isReportSaved"
|
|
/>
|
|
</template>
|
|
</el-table-column>
|
|
</el-table>
|
|
</el-collapse-item>
|
|
|
|
<el-collapse-item
|
|
title="Comments for the Subject"
|
|
name="CommentsForSubject"
|
|
>
|
|
<el-input
|
|
v-model="subjectNote"
|
|
type="text"
|
|
placeholder=""
|
|
size="small"
|
|
:disabled="isReportSaved"
|
|
/>
|
|
</el-collapse-item>
|
|
|
|
<el-collapse-item
|
|
title="Previous Global Reads"
|
|
name="PreviousGlobalReads"
|
|
>
|
|
<el-table
|
|
ref="GlobalReadsTable"
|
|
:data="previousGlobalReadsList"
|
|
stripe
|
|
size="small"
|
|
>
|
|
<el-table-column type="index" width="60" />
|
|
<el-table-column
|
|
prop="VisitName"
|
|
label="Visit"
|
|
show-overflow-tooltip
|
|
min-width="100"
|
|
/>
|
|
<el-table-column
|
|
prop="OverallResponse"
|
|
label="Timepoint Efficacy Assessment"
|
|
show-overflow-tooltip
|
|
min-width="100"
|
|
/>
|
|
</el-table>
|
|
</el-collapse-item>
|
|
</el-collapse>
|
|
<div id="footer">
|
|
<el-button
|
|
type="primary"
|
|
style="float: left; margin-left: 500px"
|
|
:disabled="isReportSaved"
|
|
@click="AddGlobalReport"
|
|
>Save</el-button>
|
|
<!-- <el-button
|
|
type="primary"
|
|
style="float: left; margin-left: 600px"
|
|
:disabled="isReportSaved"
|
|
@click="submiteReport"
|
|
>Submit Report</el-button
|
|
> -->
|
|
</div>
|
|
</div>
|
|
<div v-if="dialogVisible">
|
|
<el-dialog :title="dialogTitle" :visible.sync="dialogVisible" width="90%">
|
|
<baseline-task v-if="rowVisitNum == 1" />
|
|
<visit-task
|
|
v-if="rowVisitNum != 1"
|
|
:global-row-visit-num="rowVisitNum"
|
|
:visit-tp-code="rowTpCode"
|
|
/>
|
|
</el-dialog>
|
|
</div>
|
|
</div>
|
|
</template>
|
|
|
|
<script>
|
|
import {
|
|
getHistoryVisitRsList,
|
|
getHistoryGlobalRsList,
|
|
AddGlobalReport
|
|
} from '@/api/reading'
|
|
import BaselineTask from '../tp/baselineTask.vue'
|
|
import VisitTask from '../tp/visitTask.vue'
|
|
|
|
export default {
|
|
name: 'GlobalTask',
|
|
components: { VisitTask, BaselineTask },
|
|
data() {
|
|
return {
|
|
isReportSaved: false,
|
|
pageTPInfo: '',
|
|
activeNames: [
|
|
'TimepointEfficacy',
|
|
'CommentsForSubject',
|
|
'PreviousGlobalReads'
|
|
],
|
|
subjectNote: '',
|
|
subjectCode: '',
|
|
|
|
dialogVisible: false,
|
|
rowVisitNum: 0,
|
|
rowTpCode: '',
|
|
dialogTitle: '',
|
|
|
|
globalInfo: {},
|
|
timepointEfficacyList: [],
|
|
previousGlobalReadsList: []
|
|
}
|
|
},
|
|
|
|
created() {
|
|
this.globalInfo = this.$route.query
|
|
},
|
|
|
|
mounted() {
|
|
this.getTimepointEfficacy()
|
|
this.getPreviousGlobalReads()
|
|
},
|
|
|
|
methods: {
|
|
getTimepointEfficacy() {
|
|
getHistoryVisitRsList(
|
|
this.globalInfo.TrialId,
|
|
this.globalInfo.SubjectId,
|
|
this.globalInfo.VisitNum,
|
|
this.globalInfo.Id,
|
|
this.globalInfo.WorkloadCode
|
|
).then((res) => {
|
|
this.timepointEfficacyList = res.Result
|
|
})
|
|
},
|
|
|
|
getPreviousGlobalReads() {
|
|
getHistoryGlobalRsList(
|
|
this.globalInfo.TrialId,
|
|
this.globalInfo.SubjectId,
|
|
this.globalInfo.VisitNum,
|
|
this.globalInfo.Id
|
|
).then((res) => {
|
|
this.previousGlobalReadsList = res.Result.PreviousGlobalReadsList
|
|
this.subjectNote = res.Result.SubjectNote
|
|
})
|
|
},
|
|
|
|
AddGlobalReport() {
|
|
var globalData = {}
|
|
|
|
globalData.GlobalId = this.globalInfo.Id
|
|
globalData.SubjectNote = this.subjectNote
|
|
globalData.SubjectCode = this.globalInfo.SubjectCode
|
|
globalData.SubjectId = this.globalInfo.SubjectId
|
|
|
|
globalData.GlobalRSReportList = []
|
|
this.timepointEfficacyList.forEach((element) => {
|
|
globalData.GlobalRSReportList.push({
|
|
GlobalId: this.globalInfo.Id,
|
|
TpCode: element.TpCode,
|
|
VisitNum: element.VisitNum,
|
|
Agree: element.GlobalRSSelect.Agree,
|
|
NewRS: element.GlobalRSSelect.NewRS,
|
|
Note: element.GlobalRSSelect.Note
|
|
})
|
|
})
|
|
|
|
AddGlobalReport(globalData).then((res) => {
|
|
this.$message.success('Report saved successfully')
|
|
// this.isReportSaved = true
|
|
|
|
this.getTimepointEfficacy()
|
|
this.getPreviousGlobalReads()
|
|
})
|
|
},
|
|
|
|
goVisitImage(row) {
|
|
const token = zzSessionStorage.getItem('TokenKey')
|
|
const routes = this.$router.resolve({
|
|
path: '/showdicom',
|
|
query: { tpCode: row.TpCode, visitNum: row.VisitNum, studyId: row.StudyId, type: 'Global', token: token }
|
|
})
|
|
window.setTimeout(function() {
|
|
window.open(routes.href, '_blank')
|
|
}, 1000)
|
|
},
|
|
goCRF(row) {
|
|
this.rowVisitNum = row.VisitNum
|
|
this.dialogVisible = true
|
|
this.rowTpCode = row.TpCode
|
|
this.dialogTitle =
|
|
this.globalInfo.TrialCode +
|
|
'/' +
|
|
this.globalInfo.SubjectCode +
|
|
'/' +
|
|
row.VisitName
|
|
}
|
|
}
|
|
}
|
|
</script>
|
|
<style lang="scss">
|
|
.ImageReviewTask-list {
|
|
// height: 100%;
|
|
|
|
.el-collapse-item.is-disabled .el-collapse-item__header {
|
|
color: black;
|
|
}
|
|
|
|
.el-collapse-item__header {
|
|
// background-color: #f0f0f0;
|
|
height: 40px;
|
|
line-height: 40px;
|
|
font-weight: bold;
|
|
padding: 0 5px;
|
|
}
|
|
|
|
// .el-collapse-item__wrap {
|
|
// padding: 0 5px;
|
|
// }
|
|
// .el-collapse {
|
|
// margin-bottom: 100px;
|
|
// }
|
|
// .toolbar {
|
|
// margin: 5px 0px;
|
|
// .mr {
|
|
// margin-right: 5px;
|
|
// width: 130px;
|
|
// }
|
|
// }
|
|
|
|
#footer {
|
|
position: fixed;
|
|
bottom: 30px;
|
|
width: 100%;
|
|
// height: 30px; /*脚部的高度*/
|
|
// background: #6cf;
|
|
clear: both;
|
|
}
|
|
}
|
|
</style>
|
|
|