290 lines
		
	
	
		
			8.7 KiB
		
	
	
	
		
			Plaintext
		
	
	
			
		
		
	
	
			290 lines
		
	
	
		
			8.7 KiB
		
	
	
	
		
			Plaintext
		
	
	
| <template>
 | |
|   <div v-loading="loading" class="check-container">
 | |
|     <div class="check-content">
 | |
|       <el-form ref="checkForm" :model="checkForm" label-width="200px" size="small" :rules="rules">
 | |
|         <el-card shadow="never">
 | |
|           <el-form-item label="Information Confirmed?">
 | |
|             <el-radio-group v-model="checkForm.ReviewStatus" @change="handleChange">
 | |
|               <el-radio :label="1">Yes</el-radio>
 | |
|               <el-radio :label="2">No</el-radio>
 | |
|             </el-radio-group>
 | |
|           </el-form-item>
 | |
|           <el-form-item label="Contractor Status?">
 | |
|             <el-radio-group v-model="checkForm.CooperateStatus" @change="handleChange">
 | |
|               <el-radio :label="1">Yes</el-radio>
 | |
|               <el-radio :label="2">No</el-radio>
 | |
|             </el-radio-group>
 | |
|           </el-form-item>
 | |
| 
 | |
|           <el-form-item label="Accepting New Trials?">
 | |
|             <el-radio-group v-model="checkForm.AcceptingNewTrial" :disabled="radioDisabled">
 | |
|               <el-radio :label="true">Yes</el-radio>
 | |
|               <el-radio :label="false">No</el-radio>
 | |
|             </el-radio-group>
 | |
|           </el-form-item>
 | |
| 
 | |
|           <el-form-item label="Actively Reading?">
 | |
|             <el-radio-group v-model="checkForm.ActivelyReading" :disabled="radioDisabled">
 | |
|               <el-radio :label="true">Yes</el-radio>
 | |
|               <el-radio :label="false">No</el-radio>
 | |
|             </el-radio-group>
 | |
|           </el-form-item>
 | |
| 
 | |
|           <el-form-item label="On Vacation: ">
 | |
|             <span style="font-size:12px;margin-right:20px;">{{ checkForm.InHoliday }}</span>
 | |
|             <el-button type="text" @click="handleView">Planned Vacation</el-button>
 | |
|           </el-form-item>
 | |
|           <el-form-item label="Comment: " prop="AdminComment">
 | |
|             <el-input
 | |
|               v-model="checkForm.AdminComment"
 | |
|               type="textarea"
 | |
|               style="width:60%;"
 | |
|               rows="8"
 | |
|             />
 | |
|           </el-form-item>
 | |
| 
 | |
|           <el-form-item style="margin-top:20px">
 | |
|             <el-button type="primary" :disabled="isDisabled" @click="handleSave">Save</el-button>
 | |
|           </el-form-item>
 | |
|         </el-card>
 | |
|       </el-form>
 | |
|     </div>
 | |
|     <el-dialog
 | |
|       title="Vacation"
 | |
|       :visible.sync="dialogVisible"
 | |
|       width="50%"
 | |
|       :close-on-click-modal="false"
 | |
|       @close="closeDialog"
 | |
|     >
 | |
|       <div>
 | |
|         <el-date-picker
 | |
|           v-model="daterange"
 | |
|           value-format="yyyy-MM-dd"
 | |
|           format="yyyy-MM-dd"
 | |
|           type="daterange"
 | |
|           range-separator="to"
 | |
|           start-placeholder="Beginning  Date"
 | |
|           end-placeholder="End Date"
 | |
|           size="small"
 | |
|         />
 | |
|         <el-button style="margin-left:10px;" type="primary" size="small" @click="handleAddHoliday">Add</el-button>
 | |
|       </div>
 | |
|       <el-table v-loading="loading2" :data="gridData" size="small">
 | |
|         <el-table-column type="index" />
 | |
|         <el-table-column
 | |
|           property="StartDate"
 | |
|           label="Beginning  Date"
 | |
|           min-width="120"
 | |
|           :formatter="beginTimeFormatter"
 | |
|         />
 | |
|         <el-table-column
 | |
|           property="EndDate"
 | |
|           label="End Date"
 | |
|           min-width="120"
 | |
|           :formatter="endTimeFormatter"
 | |
|         />
 | |
|         <el-table-column label="Action" fixed="right" min-width="200">
 | |
|           <template slot-scope="scope">
 | |
|             <el-button type="text" @click="handleDelete(scope.row)">Delete</el-button>
 | |
|           </template>
 | |
|         </el-table-column>
 | |
|       </el-table>
 | |
|       <div class="pagination">
 | |
|         <el-pagination
 | |
|           background
 | |
|           layout="total,sizes,prev, pager, next"
 | |
|           :total="totalItems"
 | |
|           :page-sizes="[5, 10, 20, 50]"
 | |
|           :page-size="pageSize"
 | |
|           :current-page.sync="pageIndex"
 | |
|           @current-change="handleCurrentChange"
 | |
|           @size-change="handleSizeChange"
 | |
|         />
 | |
|       </div>
 | |
|     </el-dialog>
 | |
|   </div>
 | |
| </template>
 | |
| <script>
 | |
| import { getAuditState, updateAuditResume, getVacationList, addOrUpdateVacation, deleteVacation } from '@/api/reviewers'
 | |
| import { fmtDate } from '@/utils/formatter'
 | |
| export default {
 | |
|   name: 'Setting',
 | |
|   props: {
 | |
|     id: {
 | |
|       type: String,
 | |
|       default() {
 | |
|         return ''
 | |
|       }
 | |
|     }
 | |
|   },
 | |
|   data() {
 | |
|     return {
 | |
|       loading: false,
 | |
|       checkForm: {
 | |
|         Id: '',
 | |
|         CooperateStatus: 2,
 | |
|         ResumeStatus: 2,
 | |
|         ReviewStatus: 2,
 | |
|         AcceptingNewTrial: false,
 | |
|         ActivelyReading: false,
 | |
|         AdminComment: '',
 | |
|         InHoliday: ''
 | |
|       },
 | |
|       rules: {
 | |
|         AdminComment: [{ max: 500, message: 'The maximum length is 500' }]
 | |
|       },
 | |
|       doctorId: this.$route.query.Id,
 | |
|       isDisabled: false,
 | |
|       radioDisabled: false,
 | |
|       dialogVisible: false,
 | |
|       gridData: [],
 | |
|       daterange: '',
 | |
|       pageIndex: 1,
 | |
|       pageSize: 5,
 | |
|       totalItems: 0,
 | |
|       loading2: false
 | |
|     }
 | |
|   },
 | |
|   mounted() {
 | |
|     this.initForm()
 | |
|   },
 | |
|   methods: {
 | |
|     initForm() {
 | |
|       getAuditState(this.doctorId).then(res => {
 | |
|         if (res.Result) {
 | |
|           this.checkForm = res.Result
 | |
|           this.checkForm.InHoliday = res.Result.InHoliday ? 'Yes' : 'No'
 | |
|         }
 | |
|       })
 | |
|     },
 | |
|     handleSave() {
 | |
|       this.isDisabled = true
 | |
|       const param = {}
 | |
|       Object.assign(param, this.checkForm)
 | |
|       param.InHoliday = this.checkForm.InHoliday === 'Yes'
 | |
|       param.ResumeStatus = param.ReviewStatus
 | |
|       updateAuditResume(param)
 | |
|         .then(res => {
 | |
|           if (res.IsSuccess) {
 | |
|             if (res.Result) { this.checkForm.Id = res.Result }
 | |
|             this.isDisabled = false
 | |
|             this.$message.success('Saved successfully')
 | |
|           }
 | |
|         })
 | |
|         .catch(() => {
 | |
|           this.isDisabled = false
 | |
|         })
 | |
|     },
 | |
|     handleView() {
 | |
|       this.dialogVisible = true
 | |
|       this.initHolidayList()
 | |
|     },
 | |
|     initHolidayList() {
 | |
|       this.loading2 = true
 | |
|       getVacationList(this.doctorId, this.pageIndex, this.pageSize)
 | |
|         .then(res => {
 | |
|           if (res.IsSuccess) {
 | |
|             this.gridData = res.Result.CurrentPageData
 | |
|             this.totalItems = res.Result.TotalCount
 | |
|           }
 | |
|           this.loading2 = false
 | |
|         })
 | |
|         .catch(() => {
 | |
|           this.loading2 = false
 | |
|         })
 | |
|     },
 | |
|     handleAddHoliday() {
 | |
|       if (this.daterange) {
 | |
|         const param = {
 | |
|           DoctorId: this.doctorId,
 | |
|           StartDate: this.daterange[0],
 | |
|           EndDate: this.daterange[1]
 | |
|         }
 | |
|         this.loading2 = true
 | |
|         addOrUpdateVacation(param)
 | |
|           .then(res => {
 | |
|             if (res.IsSuccess) {
 | |
|               param.Id = res.Result
 | |
|               this.gridData.push(param)
 | |
|               this.totalItems = this.totalItems + 1
 | |
|               this.daterange = ''
 | |
|             } else {
 | |
|               this.$message.error(res.ErrorMessage)
 | |
|             }
 | |
|             this.loading2 = false
 | |
|           })
 | |
|           .catch(() => {
 | |
|             this.daterange = ''
 | |
|             this.loading2 = false
 | |
|           })
 | |
|       }
 | |
|     },
 | |
|     handleDelete(row) {
 | |
|       this.$confirm('Sure to delete?', {
 | |
|         type: 'warning',
 | |
|         distinguishCancelAndClose: true,
 | |
|         confirmButtonText: 'Ok',
 | |
|         cancelButtonText: 'Cancel'
 | |
|       })
 | |
|         .then(() => {
 | |
|           this.loading2 = true
 | |
|           deleteVacation(row.Id)
 | |
|             .then(res => {
 | |
|               if (res.IsSuccess) {
 | |
|                 var index = this.gridData.findIndex((item) => item.Id === row.Id)
 | |
|                 if (index !== -1) {
 | |
|                   this.gridData.splice(index, 1)
 | |
|                   this.totalItems = this.totalItems - 1
 | |
|                 }
 | |
|                 this.$message.success('Deleted successfully!')
 | |
|               }
 | |
|               this.loading2 = false
 | |
|             })
 | |
|             .catch(() => {
 | |
|               this.loading2 = false
 | |
|             })
 | |
|         })
 | |
|         .catch(action => {})
 | |
|     },
 | |
|     closeDialog() {
 | |
|       this.initForm()
 | |
|     },
 | |
|     handleChange() {
 | |
|       if (this.checkForm.ReviewStatus === 2 || this.checkForm.cooperateStatus === 2) {
 | |
|         this.checkForm.ActivelyReading = false
 | |
|         this.checkForm.AcceptingNewTrial = false
 | |
|         this.radioDisabled = true
 | |
|       } else {
 | |
|         this.radioDisabled = false
 | |
|       }
 | |
|     },
 | |
|     beginTimeFormatter(row) {
 | |
|       if (row.StartDate) {
 | |
|         return fmtDate(row.StartDate)
 | |
|       }
 | |
|     },
 | |
|     endTimeFormatter(row) {
 | |
|       if (row.EndDate) {
 | |
|         return fmtDate(row.EndDate)
 | |
|       }
 | |
|     },
 | |
|     statusFormatter(row) {
 | |
|       if (row.Status) {
 | |
|         return 'on vacation'
 | |
|       } else {
 | |
|         return ''
 | |
|       }
 | |
|     },
 | |
|     handleCurrentChange(val) {
 | |
|       this.pageIndex = val
 | |
|       this.initHolidayList()
 | |
|     },
 | |
|     handleSizeChange(val) {
 | |
|       this.pageSize = val
 | |
|       this.initHolidayList()
 | |
|     }
 | |
| 
 | |
|   }
 | |
| }
 | |
| </script>
 |