191 lines
		
	
	
		
			5.2 KiB
		
	
	
	
		
			Plaintext
		
	
	
			
		
		
	
	
			191 lines
		
	
	
		
			5.2 KiB
		
	
	
	
		
			Plaintext
		
	
	
| <template>
 | |
|   <el-form
 | |
|     ref="verificationForm"
 | |
|     v-loading="loading"
 | |
|     :model="form"
 | |
|     size="small"
 | |
|     :rules="rules"
 | |
|     label-width="150px"
 | |
|     :inline="true"
 | |
|   >
 | |
|     <!-- 文件列表 -->
 | |
|     <el-divider content-position="left">{{ $t('trials:readingPeriod:verify:title:fileList') }}</el-divider>
 | |
|     <div style="text-align: right">
 | |
|       <!-- 预览 -->
 | |
|       <el-button
 | |
|         type="primary"
 | |
|         style="margin-bottom: 10px"
 | |
|         icon="el-icon-view"
 | |
|         size="mini"
 | |
|         @click="handlePreview"
 | |
|       >
 | |
|         {{ $t('trials:readingPeriod:verify:title:preview') }}
 | |
|       </el-button>
 | |
|     </div>
 | |
| 
 | |
|     <el-table
 | |
|       ref="filesTable"
 | |
|       :data="fileList"
 | |
|       class="dicomFiles-table"
 | |
|       height="200"
 | |
|       style="width:100%"
 | |
|       border
 | |
|     >
 | |
|       <el-table-column type="index" width="40" />
 | |
|       <el-table-column
 | |
|         prop="FileName"
 | |
|         :label="$t('trials:uploadClinicalData:table:fileName')"
 | |
|         min-width="190"
 | |
|         show-overflow-tooltip
 | |
|       />
 | |
|     </el-table>
 | |
|     <!-- 核查结果 -->
 | |
|     <el-divider content-position="left">{{ $t('trials:readingPeriod:verify:title:result') }}</el-divider>
 | |
|     <div>
 | |
|       <!-- 临床信息是否完整 -->
 | |
|       <el-form-item :label="$t('trials:readingPeriod:verify:title:isComplete')" prop="IsComplete">
 | |
|         <el-radio-group v-model="form.IsComplete">
 | |
|           <el-radio :label="true">{{ $fd('YesOrNo', true) }}</el-radio>
 | |
|           <el-radio v-if="data.ClinicalDataLevel !== 3" :label="false">N/A</el-radio>
 | |
|         </el-radio-group>
 | |
|       </el-form-item>
 | |
|     </div>
 | |
|     <div>
 | |
|       <!-- 临床信息是否盲化 -->
 | |
|       <el-form-item :label="$t('trials:readingPeriod:verify:title:isBlind')" prop="IsBlind">
 | |
|         <el-radio-group v-model="form.IsBlind">
 | |
|           <el-radio :label="true">{{ $fd('YesOrNo', true) }}</el-radio>
 | |
|           <el-radio v-if="data.ClinicalDataLevel !== 3" :label="false">N/A</el-radio>
 | |
|         </el-radio-group>
 | |
|       </el-form-item>
 | |
|     </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-button
 | |
|           size="small"
 | |
|           type="primary"
 | |
|           :loading="btnLoading"
 | |
|           @click="save"
 | |
|         >
 | |
|           {{ $t('common:button:save') }}
 | |
|         </el-button>
 | |
|       </el-form-item>
 | |
|     </div>
 | |
|   </el-form>
 | |
| </template>
 | |
| <script>
 | |
| import { getTrialClinicalDataSelect } from '@/api/trials'
 | |
| import { PMClinicalDataConfirm } from '@/api/trials/subject'
 | |
| export default {
 | |
|   name: 'AddOrUpdateClinicalData',
 | |
|   props: {
 | |
|     data: {
 | |
|       type: Object,
 | |
|       default() { return {} }
 | |
|     }
 | |
|   },
 | |
| 
 | |
|   data() {
 | |
|     return {
 | |
|       form: {
 | |
|         Id: null,
 | |
|         FileList: [],
 | |
|         IsBlind: null,
 | |
|         IsComplete: null
 | |
|       },
 | |
|       rules: {
 | |
|         IsBlind: [{ required: true, message: this.$t('common:ruleMessage:select') }],
 | |
|         IsComplete: [{ required: true, message: this.$t('common:ruleMessage:select') }]
 | |
|       },
 | |
|       loading: false,
 | |
|       btnLoading: false,
 | |
|       clinicalDatas: [],
 | |
|       fileList: []
 | |
|     }
 | |
|   },
 | |
|   async mounted() {
 | |
|     await this.getClinicalDatas()
 | |
|     if (Object.keys(this.data).length > 0) {
 | |
|       for (const k in this.form) {
 | |
|         this.form[k] = this.data[k]
 | |
|       }
 | |
|       console.log(this.form)
 | |
|       this.handleClinicalDataSetChange(this.form.ClinicalDataTrialSetId)
 | |
|       this.fileList = this.form.FileList.concat()
 | |
|     }
 | |
|   },
 | |
|   methods: {
 | |
|     PMClinicalDataConfirm() {
 | |
|       this.loading = true
 | |
|       this.btnLoading = true
 | |
|       // PMClinicalDataConfirm(this.form).then(res => {
 | |
|       //   // this.$message.success('保存成功')
 | |
|       //   this.loading = false
 | |
|       //   this.btnLoading = false
 | |
|         this.$emit('getList')
 | |
|         this.$emit('sign', this.form)
 | |
|         // this.$emit('close')
 | |
|       // }).catch(() => {
 | |
|       //   this.loading = false
 | |
|       //   this.btnLoading = false
 | |
|       // })
 | |
|     },
 | |
|     handleClinicalDataSetChange(v) {
 | |
|       var index = this.clinicalDatas.findIndex(item => item.Id === v)
 | |
|       if (index > -1) {
 | |
|         this.currentTpl.id = this.clinicalDatas[index].Id
 | |
|         this.currentTpl.isExist = !!this.clinicalDatas[index].FileName
 | |
|       }
 | |
|     },
 | |
|     getClinicalDatas() {
 | |
|       return new Promise((resolve, reject) => {
 | |
|         this.loading = true
 | |
|         var param = {
 | |
|           trialId: this.data.TrialId,
 | |
|           IsVisit: this.data.IsVisit,
 | |
|           ReadingId: this.data.ReadingId,
 | |
|           SubjectId: this.data.SubjectId,
 | |
|           ReadingClinicalDataId: this.data.Id ? this.data.Id : '',
 | |
|           IsBaseLine: this.data.IsBaseLine
 | |
|         }
 | |
|         getTrialClinicalDataSelect(param).then(res => {
 | |
|           this.clinicalDatas = res.Result
 | |
|           this.loading = false
 | |
|           resolve()
 | |
|         }).catch(() => {
 | |
|           this.loading = false
 | |
|           reject()
 | |
|         })
 | |
|       })
 | |
|     },
 | |
|     save() {
 | |
|       this.$refs.verificationForm.validate(valid => {
 | |
|         if (!valid) return
 | |
|         this.PMClinicalDataConfirm()
 | |
|       })
 | |
|     },
 | |
|     handlePreview() {
 | |
|       this.$emit('handlePreview', this.data.Id)
 | |
|     },
 | |
|     close() {
 | |
|       this.$emit('close')
 | |
|     }
 | |
|   }
 | |
| }
 | |
| </script>
 | |
| <style lang="scss" scoped>
 | |
| </style>
 |