518 lines
		
	
	
		
			16 KiB
		
	
	
	
		
			Plaintext
		
	
	
			
		
		
	
	
			518 lines
		
	
	
		
			16 KiB
		
	
	
	
		
			Plaintext
		
	
	
| <template>
 | |
|   <div class="app-container">
 | |
|     <div class="ImageReviewTask-list app-container">
 | |
|       <el-row>
 | |
|         <el-col :span="12">
 | |
|           <el-card class="box-card">
 | |
|             <div slot="header" class="clearfix">
 | |
|               <span>Global1</span>
 | |
|             </div>
 | |
|             <el-collapse v-model="activeNames">
 | |
|               <el-collapse-item
 | |
|                 title="Timepoint Efficacy Assessment"
 | |
|                 name="TimepointEfficacy"
 | |
|               >
 | |
|                 <el-table
 | |
|                   ref="TimepointEfficacyTable"
 | |
|                   :data="Global1VisitRS"
 | |
|                   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="SubjectNote1"
 | |
|                   type="text"
 | |
|                   placeholder=""
 | |
|                   size="small"
 | |
|                   :disabled="isReportSaved"
 | |
|                 />
 | |
|               </el-collapse-item>
 | |
| 
 | |
|               <el-collapse-item
 | |
|                 title="Previous Global Reads"
 | |
|                 name="PreviousGlobalReads"
 | |
|               >
 | |
|                 <el-table
 | |
|                   ref="GlobalReadsTable"
 | |
|                   :data="PreviousGlobalReadsList1"
 | |
|                   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>
 | |
|           </el-card>
 | |
|         </el-col>
 | |
|         <el-col :span="12">
 | |
|           <el-card class="box-card">
 | |
|             <div slot="header" class="clearfix">
 | |
|               <span>Global2</span>
 | |
|             </div>
 | |
|             <el-collapse v-model="activeNames">
 | |
|               <el-collapse-item
 | |
|                 title="Timepoint Efficacy Assessment"
 | |
|                 name="TimepointEfficacy"
 | |
|               >
 | |
|                 <el-table
 | |
|                   ref="TimepointEfficacyTable"
 | |
|                   :data="Global2VisitRS"
 | |
|                   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="SubjectNote2"
 | |
|                   type="text"
 | |
|                   placeholder=""
 | |
|                   size="small"
 | |
|                   :disabled="isReportSaved"
 | |
|                 />
 | |
|               </el-collapse-item>
 | |
| 
 | |
|               <el-collapse-item
 | |
|                 title="Previous Global Reads"
 | |
|                 name="PreviousGlobalReads"
 | |
|               >
 | |
|                 <el-table
 | |
|                   ref="GlobalReadsTable"
 | |
|                   :data="PreviousGlobalReadsList2"
 | |
|                   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>
 | |
|           </el-card>
 | |
|         </el-col>
 | |
|       </el-row>
 | |
| 
 | |
|       <div style="margin-top: 50px">
 | |
|         <el-form ref="basicInfoForm" size="small">
 | |
|           <el-row>
 | |
|             <el-col :span="12" :offset="6">
 | |
|               <el-form-item
 | |
|                 prop="Qualified"
 | |
|                 label="Which one do you prefer?"
 | |
|                 label-width="200px"
 | |
|                 :rules="[{ required: true, message: '', trigger: 'blur' }]"
 | |
|               >
 | |
|                 <!-- v-model="reportResult.Qualified" -->
 | |
|                 <el-radio-group v-model="adReport.SelectGlobalId" :disabled="isReportSaved">
 | |
|                   <el-radio :label="dbAdInfo.Global1Id">Global1</el-radio>
 | |
|                   <el-radio :label="dbAdInfo.Global2Id">Global2</el-radio>
 | |
|                 </el-radio-group>
 | |
|               </el-form-item>
 | |
|             </el-col>
 | |
|             <el-col :span="8" :offset="6">
 | |
|               <el-form-item label="Note: " prop="Note">
 | |
|                 <el-input
 | |
|                   v-model="adReport.AdNote"
 | |
|                   type="textarea"
 | |
|                   :rows="8"
 | |
|                   placeholder="Please input Note"
 | |
|                 >
 | |
|                   <!-- v-model="textarea" -->
 | |
|                 </el-input>
 | |
|               </el-form-item>
 | |
|             </el-col>
 | |
|           </el-row>
 | |
| 
 | |
|           <el-row>
 | |
|             <el-form-item style="margin-left: 120px">
 | |
|               <el-button
 | |
|                 type="primary"
 | |
|                 style="float: left; margin-left: 500px"
 | |
|                 :disabled="isReportSaved"
 | |
|                 @click="AddADReport"
 | |
|               >Save</el-button>
 | |
|             </el-form-item>
 | |
|           </el-row>
 | |
|         </el-form>
 | |
|       </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 {
 | |
|   GetAdReport,
 | |
|   AddAdjudicationReport
 | |
| } from '@/api/reading'
 | |
| import BaselineTask from '../tp/baselineTask.vue'
 | |
| import VisitTask from '../tp/visitTask.vue'
 | |
| 
 | |
| export default {
 | |
|   name: 'GlobalTask',
 | |
|   components: { VisitTask, BaselineTask },
 | |
|   data() {
 | |
|     return {
 | |
|       token: zzSessionStorage.getItem('TokenKey'),
 | |
|       pageAdInfo: '',
 | |
|       dbAdInfo: '',
 | |
|       isReportSaved: false,
 | |
| 
 | |
|       activeNames: [
 | |
|         'TimepointEfficacy',
 | |
|         'CommentsForSubject',
 | |
|         'PreviousGlobalReads'
 | |
|       ],
 | |
| 
 | |
|       // Global1:'',
 | |
|       // Global2:'',
 | |
|       PreviousGlobalReadsList1: [],
 | |
|       PreviousGlobalReadsList2: [],
 | |
|       SubjectNote1: '',
 | |
|       SubjectNote2: '',
 | |
| 
 | |
|       Global1VisitRS: [],
 | |
|       Global2VisitRS: [],
 | |
| 
 | |
|       dialogVisible: false,
 | |
|       rowVisitNum: 0,
 | |
|       rowTpCode: '',
 | |
|       dialogTitle: '',
 | |
| 
 | |
|       adReport: {
 | |
|         AdID: '',
 | |
|         SelectGlobalId: '',
 | |
|         AdNote: ''
 | |
|       },
 | |
| 
 | |
|       timepointEfficacyList: [],
 | |
|       previousGlobalReadsList: []
 | |
|     }
 | |
|   },
 | |
| 
 | |
|   created() {
 | |
|     this.pageAdInfo = this.$route.query
 | |
|   },
 | |
| 
 | |
|   mounted() {
 | |
|     this.GetAdReport(this.pageAdInfo.Id)
 | |
|   },
 | |
| 
 | |
|   methods: {
 | |
|     GetAdReport(id) {
 | |
|       GetAdReport(id).then((res) => {
 | |
|         this.PreviousGlobalReadsList1 = res.Result.Global1.PreviousGlobalReadsList
 | |
|         this.SubjectNote1 = res.Result.Global1.SubjectNote
 | |
|         this.Global1VisitRS = res.Result.Global1VisitRS
 | |
| 
 | |
|         this.PreviousGlobalReadsList2 = res.Result.Global2.PreviousGlobalReadsList
 | |
|         this.SubjectNote2 = res.Result.Global2.SubjectNote
 | |
|         this.Global2VisitRS = res.Result.Global2VisitRS
 | |
| 
 | |
|         this.dbAdInfo = res.Result.ADInfo
 | |
| 
 | |
|         this.adReport.SelectGlobalId = this.dbAdInfo.SelectGlobalId
 | |
|         this.adReport.AdNote = this.dbAdInfo.AdNote
 | |
|       })
 | |
| 
 | |
|       //   getHistoryVisitRsList(
 | |
|       //     this.globalInfo.TrialId,
 | |
|       //     this.globalInfo.TrialCode,
 | |
|       //     this.globalInfo.SubjectCode,
 | |
|       //     this.globalInfo.WorkloadCode,
 | |
|       //     this.globalInfo.VisitNum,
 | |
|       //     this.globalInfo.Id
 | |
|       //   ).then((res) => {
 | |
|       //     this.timepointEfficacyList = res.Result
 | |
|       //   })
 | |
|     },
 | |
| 
 | |
|     // getPreviousGlobalReads() {
 | |
|     //   getHistoryGlobalRsList(
 | |
|     //     this.globalInfo.TrialId,
 | |
|     //     this.globalInfo.SubjectCode,
 | |
|     //     this.globalInfo.VisitNum,
 | |
|     //     this.globalInfo.Id
 | |
|     //   ).then((res) => {
 | |
|     //     this.previousGlobalReadsList = res.Result.PreviousGlobalReadsList
 | |
|     //     this.subjectNote = res.Result.SubjectNote
 | |
|     //   })
 | |
|     // },
 | |
| 
 | |
|     AddADReport() {
 | |
|       this.adReport.AdID = this.pageAdInfo.Id
 | |
| 
 | |
|       AddAdjudicationReport(this.adReport).then(res => {
 | |
|         this.$message.success('Report saved successfully')
 | |
| 
 | |
|         this.GetAdReport(this.pageAdInfo.Id)
 | |
|       })
 | |
|     },
 | |
| 
 | |
|     goVisitImage(row) {
 | |
|       const routes = this.$router.resolve({
 | |
|         path: '/showdicom',
 | |
|         query: { tpCode: row.TpCode, visitNum: row.VisitNum, token: zzSessionStorage.getItem('TokenKey') }
 | |
|       })
 | |
|       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;
 | |
|   }
 | |
| 
 | |
|   //   #footer {
 | |
|   //     position: fixed;
 | |
|   //     bottom: 30px;
 | |
|   //     width: 100%;
 | |
|   //     // height: 30px; /*脚部的高度*/
 | |
|   //     // background: #6cf;
 | |
|   //     clear: both;
 | |
|   //   }
 | |
| }
 | |
| </style>
 |