382 lines
		
	
	
		
			12 KiB
		
	
	
	
		
			Plaintext
		
	
	
			
		
		
	
	
			382 lines
		
	
	
		
			12 KiB
		
	
	
	
		
			Plaintext
		
	
	
| <template>
 | ||
|   <div class="urgent-config-form">
 | ||
|     <!-- 配置信息表单 -->
 | ||
|     <el-form
 | ||
|       ref="urgentConfigForm"
 | ||
|       v-loading="loading"
 | ||
|       :model="form"
 | ||
|       label-width="220px"
 | ||
|       style="width:800px;"
 | ||
|       :rules="rules"
 | ||
|       size="small"
 | ||
|     >
 | ||
|       <!-- 入组确认评估 -->
 | ||
|       <el-form-item :label="$t('trials:urgentCfg:form:enroll')" prop="IsEnrollementQualificationConfirm">
 | ||
|         <el-radio-group
 | ||
|           v-model="form.IsEnrollementQualificationConfirm"
 | ||
|           :disabled="form.IsTrialUrgentConfirmed && !isEdit"
 | ||
|         >
 | ||
|           <el-radio v-for="item of $d.YesOrNo" :label="item.value">{{ item.label }}</el-radio>
 | ||
|         </el-radio-group>
 | ||
|       </el-form-item>
 | ||
|       <!-- 疾病进展确认评估 -->
 | ||
|       <el-form-item :label="$t('trials:urgentCfg:form:pd')" prop="IsPDProgressView">
 | ||
|         <el-radio-group
 | ||
|           v-model="form.IsPDProgressView"
 | ||
|           :disabled="form.IsTrialUrgentConfirmed && !isEdit"
 | ||
|         >
 | ||
|           <el-radio v-for="item of $d.YesOrNo" :label="item.value">{{ item.label }}</el-radio>
 | ||
|         </el-radio-group>
 | ||
|       </el-form-item>
 | ||
|       <!-- 启用项目加急 -->
 | ||
|       <el-form-item :label="$t('trials:urgentCfg:form:trial')" prop="IsUrgent">
 | ||
|         <el-radio-group
 | ||
|           v-model="form.IsUrgent"
 | ||
|           :disabled="form.IsTrialUrgentConfirmed && !isEdit"
 | ||
|         >
 | ||
|           <el-radio v-for="item of $d.YesOrNo" :label="item.value">{{ item.label }}</el-radio>
 | ||
|         </el-radio-group>
 | ||
|       </el-form-item>
 | ||
|       <!-- 启用受试者加急 -->
 | ||
|       <el-form-item :label="$t('trials:urgentCfg:form:subject')" prop="IsSubjectExpeditedView">
 | ||
|         <el-radio-group
 | ||
|           v-model="form.IsSubjectExpeditedView"
 | ||
|           :disabled="form.IsTrialUrgentConfirmed && !isEdit"
 | ||
|         >
 | ||
|           <el-radio v-for="item of $d.YesOrNo" :label="item.value">{{ item.label }}</el-radio>
 | ||
|         </el-radio-group>
 | ||
|       </el-form-item>
 | ||
|       <el-form-item>
 | ||
|         <!-- 保存 -->
 | ||
|         <el-button
 | ||
|           v-if="form.IsTrialUrgentConfirmed === false && hasPermi(['trials:trials-panel:setting:trial-config:save'])"
 | ||
|           type="primary"
 | ||
|           @click="handleSave"
 | ||
|         >
 | ||
|           {{ $t('common:button:save') }}
 | ||
|         </el-button>
 | ||
|         <!-- 配置确认 -->
 | ||
|         <el-button
 | ||
|           v-if="form.IsTrialUrgentConfirmed === false && hasPermi(['trials:trials-panel:setting:trial-config:save'])"
 | ||
|           type="primary"
 | ||
|           @click="handleConfirm"
 | ||
|         >
 | ||
|           {{ $t('trials:trialCfg:button:confirm') }}
 | ||
|         </el-button>
 | ||
|         <!-- 配置更新 -->
 | ||
|         <el-button
 | ||
|           v-if="form.IsTrialUrgentConfirmed === true && !isEdit && hasPermi(['trials:trials-panel:setting:trial-config:save'])"
 | ||
|           type="primary"
 | ||
|           @click="isEdit = true"
 | ||
|         >
 | ||
|           {{ $t('trials:trialCfg:button:update') }}
 | ||
|         </el-button>
 | ||
|         <!-- 配置更新确认 -->
 | ||
|         <el-button
 | ||
|           v-if="form.IsTrialUrgentConfirmed === true && isEdit && hasPermi(['trials:trials-panel:setting:trial-config:save'])"
 | ||
|           type="primary"
 | ||
|           @click="handleUpdate"
 | ||
|         >
 | ||
|           {{ $t('trials:trialCfg:button:updateAndConfirm') }}
 | ||
|         </el-button>
 | ||
|         <!-- 取消 -->
 | ||
|         <el-button
 | ||
|           v-if="form.IsTrialUrgentConfirmed === true && isEdit && hasPermi(['trials:trials-panel:setting:trial-config:save'])"
 | ||
|           type="primary"
 | ||
|           @click="isEdit = false"
 | ||
|         >
 | ||
|           {{ $t('common:button:cancel') }}
 | ||
|         </el-button>
 | ||
|       </el-form-item>
 | ||
|     </el-form>
 | ||
| 
 | ||
|     <!-- 配置信息确认框 -->
 | ||
|     <el-dialog
 | ||
|       v-if="confirmVisible"
 | ||
|       :visible.sync="confirmVisible"
 | ||
|       :close-on-click-modal="false"
 | ||
|       width="600px"
 | ||
|       :title="$t('trials:trialCfg:dialogTitle:cfgConfirm')"
 | ||
|       custom-class="base-dialog-wrapper"
 | ||
|     >
 | ||
|       <div class="base-dialog-body">
 | ||
|         <el-table
 | ||
|           :data="confirmData"
 | ||
|           border
 | ||
|           style="width: 100%"
 | ||
|           size="small"
 | ||
|         >
 | ||
|           <!-- 配置项 -->
 | ||
|           <el-table-column
 | ||
|             prop="Name"
 | ||
|             :label="$t('trials:trialCfg:table:cfgItem')"
 | ||
|             show-overflow-tooltip
 | ||
|           />
 | ||
|           <!-- 配置值 -->
 | ||
|           <el-table-column
 | ||
|             prop="NewVal"
 | ||
|             :label="$t('trials:trialCfg:table:cfgVal')"
 | ||
|             show-overflow-tooltip
 | ||
|           />
 | ||
|         </el-table>
 | ||
|       </div>
 | ||
|       <div class="base-dialog-footer" style="text-align:right;margin-top:10px;">
 | ||
|         <el-button size="small" type="primary" :loading="btnLoading" @click="handleConfirmConfigData">
 | ||
|           {{ $t('trials:trialCfg:button:confirmCfg') }}
 | ||
|         </el-button>
 | ||
|       </div>
 | ||
|     </el-dialog>
 | ||
| 
 | ||
|     <!-- 配置信息更新框 -->
 | ||
|     <el-dialog
 | ||
|       v-if="updateVisible"
 | ||
|       :visible.sync="updateVisible"
 | ||
|       :close-on-click-modal="false"
 | ||
|       width="600px"
 | ||
|       :title="$t('trials:trialCfg:dialogTitle:cfgConfirm')"
 | ||
|       custom-class="base-dialog-wrapper"
 | ||
|     >
 | ||
|       <div class="base-dialog-body">
 | ||
|         <el-table
 | ||
|           :data="confirmData"
 | ||
|           border
 | ||
|           style="width: 100%"
 | ||
|           size="small"
 | ||
|         >
 | ||
|           <!-- 配置项 -->
 | ||
|           <el-table-column
 | ||
|             prop="Name"
 | ||
|             :label="$t('trials:trialCfg:table:cfgItem')"
 | ||
|             show-overflow-tooltip
 | ||
|           />
 | ||
|           <!-- 配置值(更改前) -->
 | ||
|           <el-table-column
 | ||
|             prop="OldVal"
 | ||
|             :label="`${$t('trials:trialCfg:table:cfgVal')} (${$t('trials:trialCfg:table:beforeChange')})`"
 | ||
|             show-overflow-tooltip
 | ||
|           />
 | ||
|           <!-- 配置值(更改后) -->
 | ||
|           <el-table-column
 | ||
|             prop="NewVal"
 | ||
|             :label="`${$t('trials:trialCfg:table:cfgVal')} (${$t('trials:trialCfg:table:updated')})`"
 | ||
|             show-overflow-tooltip
 | ||
|           >
 | ||
|             <template slot-scope="scope">
 | ||
|               <span :class="{fontColor:scope.row.NewVal!==scope.row.OldVal}">{{ scope.row.NewVal }}</span>
 | ||
|             </template>
 | ||
|           </el-table-column>
 | ||
|         </el-table>
 | ||
|       </div>
 | ||
|       <div class="base-dialog-footer" style="text-align:right;margin-top:10px;">
 | ||
|         <el-button size="small" type="primary" :loading="btnLoading" @click="handleUpdateConfigData">
 | ||
|           {{ $t('trials:trialCfg:button:confirmCfg') }}
 | ||
|         </el-button>
 | ||
|       </div>
 | ||
|     </el-dialog>
 | ||
| 
 | ||
|     <!-- 配置信息签名框 -->
 | ||
|     <el-dialog
 | ||
|       v-if="signVisible"
 | ||
|       :visible.sync="signVisible"
 | ||
|       :close-on-click-modal="false"
 | ||
|       width="600px"
 | ||
|       custom-class="base-dialog-wrapper"
 | ||
|     >
 | ||
|       <div slot="title">
 | ||
|         <span style="font-size:18px;">{{ $t('common:dialogTitle:sign') }}</span>
 | ||
|         <span style="font-size:12px;margin-left:5px">{{ `(${$t('common:label:sign')}${ currentUser })` }}</span>
 | ||
|       </div>
 | ||
|       <SignForm ref="signForm" :sign-code-enum="signCode" @closeDialog="closeSignDialog" />
 | ||
|     </el-dialog>
 | ||
|   </div>
 | ||
| </template>
 | ||
| <script>
 | ||
| import { configTrialUrgentInfo } from '@/api/trials'
 | ||
| import { ConfigTrialUrgentInfoConfirm } from '@/api/trials/setting'
 | ||
| import SignForm from '@/views/trials/components/newSignForm'
 | ||
| import const_ from '@/const/sign-code'
 | ||
| export default {
 | ||
|   name: 'UrgentConfig',
 | ||
|   components: { SignForm },
 | ||
|   data() {
 | ||
|     return {
 | ||
|       form: {
 | ||
|         TrialId: '',
 | ||
|         IsEnrollementQualificationConfirm: null,
 | ||
|         IsPDProgressView: null,
 | ||
|         IsUrgent: null,
 | ||
|         IsSubjectExpeditedView: null,
 | ||
|         IsTrialUrgentConfirmed: false
 | ||
|       },
 | ||
|       rules: {
 | ||
|         IsEnrollementQualificationConfirm: [
 | ||
|           { required: true, message: this.$t('common:ruleMessage:select'), trigger: ['blur', 'change'] }
 | ||
|         ],
 | ||
|         IsPDProgressView: [
 | ||
|           { required: true, message: this.$t('common:ruleMessage:select'), trigger: ['blur', 'change'] }
 | ||
|         ],
 | ||
|         IsUrgent: [
 | ||
|           { required: true, message: this.$t('common:ruleMessage:select'), trigger: ['blur', 'change'] }
 | ||
|         ],
 | ||
|         IsSubjectExpeditedView: [
 | ||
|           { required: true, message: this.$t('common:ruleMessage:select'), trigger: ['blur', 'change'] }
 | ||
|         ],
 | ||
|         IsTrialUrgentConfirmed: [
 | ||
|           { required: true, message: this.$t('common:ruleMessage:select'), trigger: ['blur', 'change'] }
 | ||
|         ]
 | ||
|       },
 | ||
|       confirmVisible: false,
 | ||
|       updateVisible: false,
 | ||
|       signVisible: false,
 | ||
|       btnLoading: false,
 | ||
|       confirmData: [],
 | ||
|       loading: false,
 | ||
|       signCode: null,
 | ||
|       currentUser: zzSessionStorage.getItem('userName'),
 | ||
|       initialForm: {},
 | ||
|       isEdit: false
 | ||
|     }
 | ||
|   },
 | ||
|   methods: {
 | ||
|     // 配置信息保存
 | ||
|     handleSave() {
 | ||
|       this.$refs['urgentConfigForm'].validate((valid) => {
 | ||
|         if (!valid) return
 | ||
|         this.loading = true
 | ||
|         // 保存配置信息
 | ||
|         configTrialUrgentInfo(this.form).then(res => {
 | ||
|           this.loading = false
 | ||
|           if (res.IsSuccess) {
 | ||
|             this.initialForm = { ...this.form }
 | ||
|             this.$message.success(this.$t('common:message:savedSuccessfully'))
 | ||
|           }
 | ||
|         }).catch(_ => { this.loading = false })
 | ||
|       })
 | ||
|     },
 | ||
| 
 | ||
|     // 打开配置信息确认框
 | ||
|     handleConfirm() {
 | ||
|       this.$refs['urgentConfigForm'].validate((valid) => {
 | ||
|         if (!valid) return
 | ||
|         this.getConfigArr()
 | ||
|         this.confirmVisible = true
 | ||
|       })
 | ||
|     },
 | ||
| 
 | ||
|     // 打开配置信息更新框
 | ||
|     handleUpdate() {
 | ||
|       this.$refs['urgentConfigForm'].validate((valid) => {
 | ||
|         if (!valid) return
 | ||
|         this.getConfigArr()
 | ||
|         this.updateVisible = true
 | ||
|       })
 | ||
|     },
 | ||
|     // 配置确认
 | ||
|     handleConfirmConfigData() {
 | ||
|       const { ExpeditedConfigConfirmation } = const_.processSignature
 | ||
|       this.signCode = ExpeditedConfigConfirmation
 | ||
|       // this.confirmConfigData()
 | ||
|       this.initialForm = { ...this.form }
 | ||
|       this.signVisible = true
 | ||
|     },
 | ||
|     // 配置更新
 | ||
|     handleUpdateConfigData() {
 | ||
|       const { ExpeditedConfigUpdates } = const_.processSignature
 | ||
|       this.signCode = ExpeditedConfigUpdates
 | ||
|       this.initialForm = { ...this.form }
 | ||
|       this.signVisible = true
 | ||
|     },
 | ||
|     // 配置保存
 | ||
|     confirmConfigData() {
 | ||
|       this.$refs['urgentConfigForm'].validate((valid) => {
 | ||
|         if (!valid) return
 | ||
| 
 | ||
|         this.btnLoading = true
 | ||
|         // 保存配置信息
 | ||
|         configTrialUrgentInfo(this.form).then(res => {
 | ||
|           this.btnLoading = false
 | ||
|           if (res.IsSuccess) {
 | ||
|             this.initialForm = { ...this.form }
 | ||
|             this.signVisible = true
 | ||
|           }
 | ||
|         }).catch(_ => { this.btnLoading = false })
 | ||
|       })
 | ||
|     },
 | ||
|     // 关闭签名框
 | ||
|     closeSignDialog(isSign, signInfo) {
 | ||
|       if (isSign) {
 | ||
|         this.signConfirm(signInfo)
 | ||
|       } else {
 | ||
|         this.signVisible = false
 | ||
|       }
 | ||
|     },
 | ||
|     // 签名并确认
 | ||
|     signConfirm(signInfo) {
 | ||
|       this.loading = true
 | ||
|       var params = {
 | ||
|         data: this.form,
 | ||
|         signInfo: signInfo
 | ||
|       }
 | ||
|       ConfigTrialUrgentInfoConfirm(params).then(res => {
 | ||
|         this.loading = false
 | ||
|         if (res.IsSuccess) {
 | ||
|           this.$message.success(this.$t('common:message:savedSuccessfully'))
 | ||
|           this.form.IsTrialUrgentConfirmed = true
 | ||
|           this.isEdit = false
 | ||
|           this.$refs['signForm'].btnLoading = false
 | ||
|           this.signVisible = false
 | ||
|           this.confirmVisible = false
 | ||
|           this.updateVisible = false
 | ||
|           this.$emit('refresh')
 | ||
|         }
 | ||
|       }).catch(_ => {
 | ||
|         this.loading = false
 | ||
|         this.$refs['signForm'].btnLoading = false
 | ||
|       })
 | ||
|     },
 | ||
|     // 配置信息数组结构
 | ||
|     getConfigArr() {
 | ||
|       this.confirmData = [
 | ||
|         {
 | ||
|           Name: this.$t('trials:urgentCfg:form:enroll'), // 入组确认评估
 | ||
|           NewVal: this.$fd('YesOrNo', this.form.IsEnrollementQualificationConfirm),
 | ||
|           OldVal: this.$fd('YesOrNo', this.initialForm.IsEnrollementQualificationConfirm)
 | ||
|         },
 | ||
|         {
 | ||
|           Name: this.$t('trials:urgentCfg:form:pd'), // 疾病进展确认评估
 | ||
|           NewVal: this.$fd('YesOrNo', this.form.IsPDProgressView),
 | ||
|           OldVal: this.$fd('YesOrNo', this.initialForm.IsPDProgressView)
 | ||
|         },
 | ||
|         {
 | ||
|           Name: this.$t('trials:urgentCfg:form:trial'), // 启用项目加急
 | ||
|           NewVal: this.$fd('YesOrNo', this.form.IsUrgent),
 | ||
|           OldVal: this.$fd('YesOrNo', this.initialForm.IsUrgent)
 | ||
|         },
 | ||
|         {
 | ||
|           Name: this.$t('trials:urgentCfg:form:subject'), // 启用受试者加急
 | ||
|           NewVal: this.$fd('YesOrNo', this.form.IsSubjectExpeditedView),
 | ||
|           OldVal: this.$fd('YesOrNo', this.initialForm.IsSubjectExpeditedView)
 | ||
|         }
 | ||
|       ]
 | ||
|     },
 | ||
| 
 | ||
|     // 初始化表单
 | ||
|     initForm(res) {
 | ||
|       for (const k in this.form) {
 | ||
|         if (res.hasOwnProperty(k)) {
 | ||
|           this.form[k] = res[k]
 | ||
|         }
 | ||
|       }
 | ||
|       this.initialForm = { ...this.form }
 | ||
|     }
 | ||
|   }
 | ||
| }
 | ||
| </script>
 | ||
| <style lang="scss" scoped>
 | ||
| .urgent-config-form {
 | ||
|   .fontColor{
 | ||
|     color: red;
 | ||
|   }
 | ||
| }
 | ||
| </style>
 |