12 changed files with 2575 additions and 17 deletions
			
			
		| @ -0,0 +1,326 @@ | |||||
|  | <template> | ||||
|  |   <el-dialog | ||||
|  |     title="号源管理" | ||||
|  |     :visible.sync="dialogVisible" | ||||
|  |     width="70%" | ||||
|  |     :before-close="handleClose" | ||||
|  |   > | ||||
|  |     <div> | ||||
|  |       <el-button type="primary" icon="el-icon-plus" size="small">新增</el-button> | ||||
|  |       <el-table | ||||
|  |         :data="tableData" | ||||
|  |         border | ||||
|  |         style="width: 100%" | ||||
|  |       > | ||||
|  |         <el-table-column | ||||
|  |           :resizable="false" | ||||
|  |           prop="projectName" | ||||
|  |           label="检查项目" | ||||
|  |           width="150" | ||||
|  |         /> | ||||
|  |         <el-table-column | ||||
|  |           :resizable="false" | ||||
|  |           prop="Mon" | ||||
|  |           label="周一" | ||||
|  |           align="center" | ||||
|  |         > | ||||
|  |           <el-table-column | ||||
|  |             :resizable="false" | ||||
|  |             label="上午" | ||||
|  |             align="center" | ||||
|  |             label-class-name="checkFont" | ||||
|  |             width="50" | ||||
|  |           > | ||||
|  |             <template slot-scope="scope"> | ||||
|  |               <input class="checkTime" type="checkbox" :ischecked="scope.row.MonTime"> | ||||
|  |             </template> | ||||
|  |           </el-table-column> | ||||
|  |           <el-table-column | ||||
|  |             :resizable="false" | ||||
|  |             label="下午" | ||||
|  |             align="center" | ||||
|  |             label-class-name="checkFont" | ||||
|  |             width="50" | ||||
|  |           > | ||||
|  |             <template slot-scope="scope"> | ||||
|  |               <input class="checkTime" type="checkbox" :ischecked="scope.row.MonTime"> | ||||
|  |             </template> | ||||
|  |           </el-table-column> | ||||
|  |         </el-table-column> | ||||
|  |         <el-table-column | ||||
|  |           :resizable="false" | ||||
|  |           prop="Tues" | ||||
|  |           label="周二" | ||||
|  |           align="center" | ||||
|  |         > | ||||
|  |           <el-table-column | ||||
|  |             :resizable="false" | ||||
|  |             label="上午" | ||||
|  |             align="center" | ||||
|  |             label-class-name="checkFont" | ||||
|  |             width="50" | ||||
|  |           > | ||||
|  |             <template slot-scope="scope"> | ||||
|  |               <input class="checkTime" type="checkbox" :ischecked="scope.row.TuesTime"> | ||||
|  |             </template> | ||||
|  |           </el-table-column> | ||||
|  |           <el-table-column | ||||
|  |             :resizable="false" | ||||
|  |             label="下午" | ||||
|  |             align="center" | ||||
|  |             label-class-name="checkFont" | ||||
|  |             width="50" | ||||
|  |           > | ||||
|  |             <template slot-scope="scope"> | ||||
|  |               <input class="checkTime" type="checkbox" :ischecked="scope.row.TuesTime"> | ||||
|  |             </template> | ||||
|  |           </el-table-column> | ||||
|  |         </el-table-column> | ||||
|  |         <el-table-column | ||||
|  |           :resizable="false" | ||||
|  |           prop="Wed" | ||||
|  |           label="周三" | ||||
|  |           align="center" | ||||
|  |         > | ||||
|  |           <el-table-column | ||||
|  |             :resizable="false" | ||||
|  |             label="上午" | ||||
|  |             align="center" | ||||
|  |             label-class-name="checkFont" | ||||
|  |             width="50" | ||||
|  |           > | ||||
|  |             <template slot-scope="scope"> | ||||
|  |               <input class="checkTime" type="checkbox" :ischecked="scope.row.WedTime"> | ||||
|  |             </template> | ||||
|  |           </el-table-column> | ||||
|  |           <el-table-column | ||||
|  |             :resizable="false" | ||||
|  |             label="下午" | ||||
|  |             align="center" | ||||
|  |             label-class-name="checkFont" | ||||
|  |             width="50" | ||||
|  |           > | ||||
|  |             <template slot-scope="scope"> | ||||
|  |               <input class="checkTime" type="checkbox" :ischecked="scope.row.WedTime"> | ||||
|  |             </template> | ||||
|  |           </el-table-column> | ||||
|  |           <template slot-scope="scope"> | ||||
|  |             <input class="checkTime" type="checkbox" :ischecked="scope.row.WedTime"> | ||||
|  |           </template> | ||||
|  |         </el-table-column> | ||||
|  |         <el-table-column | ||||
|  |           :resizable="false" | ||||
|  |           prop="Thur" | ||||
|  |           label="周四" | ||||
|  |           align="center" | ||||
|  |         > | ||||
|  |           <el-table-column | ||||
|  |             :resizable="false" | ||||
|  |             label="上午" | ||||
|  |             align="center" | ||||
|  |             label-class-name="checkFont" | ||||
|  |             width="50" | ||||
|  |           /> | ||||
|  |           <el-table-column | ||||
|  |             :resizable="false" | ||||
|  |             label="下午" | ||||
|  |             align="center" | ||||
|  |             label-class-name="checkFont" | ||||
|  |             width="50" | ||||
|  |           /> | ||||
|  |           <template slot-scope="scope"> | ||||
|  |             <input class="checkTime" type="checkbox" :ischecked="scope.row.ThurTime"> | ||||
|  |           </template> | ||||
|  |         </el-table-column> | ||||
|  |         <el-table-column | ||||
|  |           :resizable="false" | ||||
|  |           prop="Fri" | ||||
|  |           label="周五" | ||||
|  |           align="center" | ||||
|  |         > | ||||
|  |           <el-table-column | ||||
|  |             :resizable="false" | ||||
|  |             label="上午" | ||||
|  |             align="center" | ||||
|  |             label-class-name="checkFont" | ||||
|  |             width="50" | ||||
|  |           /> | ||||
|  |           <el-table-column | ||||
|  |             :resizable="false" | ||||
|  |             label="下午" | ||||
|  |             align="center" | ||||
|  |             label-class-name="checkFont" | ||||
|  |             width="50" | ||||
|  |           /> | ||||
|  |           <template slot-scope="scope"> | ||||
|  |             <input class="checkTime" type="checkbox" :ischecked="scope.row.FriTime"> | ||||
|  |           </template> | ||||
|  |         </el-table-column> | ||||
|  |         <el-table-column | ||||
|  |           :resizable="false" | ||||
|  |           prop="Sat" | ||||
|  |           label="周六" | ||||
|  |           align="center" | ||||
|  |         > | ||||
|  |           <el-table-column | ||||
|  |             :resizable="false" | ||||
|  |             label="上午" | ||||
|  |             align="center" | ||||
|  |             label-class-name="checkFont" | ||||
|  |             width="50" | ||||
|  |           /> | ||||
|  |           <el-table-column | ||||
|  |             :resizable="false" | ||||
|  |             label="下午" | ||||
|  |             align="center" | ||||
|  |             label-class-name="checkFont" | ||||
|  |             width="50" | ||||
|  |           /> | ||||
|  |           <template slot-scope="scope"> | ||||
|  |             <input class="checkTime" type="checkbox" :ischecked="scope.row.SatTime"> | ||||
|  |           </template> | ||||
|  |         </el-table-column> | ||||
|  |         <el-table-column | ||||
|  |           :resizable="false" | ||||
|  |           prop="Sun" | ||||
|  |           label="周日" | ||||
|  |           align="center" | ||||
|  |         > | ||||
|  |           <el-table-column | ||||
|  |             :resizable="false" | ||||
|  |             label="上午" | ||||
|  |             align="center" | ||||
|  |             label-class-name="checkFont" | ||||
|  |             width="50" | ||||
|  |           /> | ||||
|  |           <el-table-column | ||||
|  |             :resizable="false" | ||||
|  |             label="下午" | ||||
|  |             align="center" | ||||
|  |             label-class-name="checkFont" | ||||
|  |             width="50" | ||||
|  |           /> | ||||
|  |           <template slot-scope="scope"> | ||||
|  |             <input class="checkTime" type="checkbox" :ischecked="scope.row.SunTime"> | ||||
|  |           </template> | ||||
|  |         </el-table-column> | ||||
|  |         <el-table-column | ||||
|  |           :resizable="false" | ||||
|  |           prop="Sun" | ||||
|  |           label="上班时间" | ||||
|  |           align="center" | ||||
|  |         > | ||||
|  |           <el-table-column | ||||
|  |             :resizable="false" | ||||
|  |             prop="Sun" | ||||
|  |             label="上午" | ||||
|  |             align="center" | ||||
|  |           /> | ||||
|  |           <template slot-scope="scope"> | ||||
|  |             <input class="checkTime" type="checkbox" :ischecked="scope.row.SunTime"> | ||||
|  |           </template> | ||||
|  |         </el-table-column> | ||||
|  |         <el-table-column | ||||
|  |           :resizable="false" | ||||
|  |           prop="Sun" | ||||
|  |           label="上班时间" | ||||
|  |           align="center" | ||||
|  |         > | ||||
|  |           <el-table-column | ||||
|  |             :resizable="false" | ||||
|  |             prop="Sun" | ||||
|  |             label="下午" | ||||
|  |             align="center" | ||||
|  |           /> | ||||
|  |           <template slot-scope="scope"> | ||||
|  |             <input class="checkTime" type="checkbox" :ischecked="scope.row.SunTime"> | ||||
|  |           </template> | ||||
|  |         </el-table-column> | ||||
|  |         <el-table-column | ||||
|  |           :resizable="false" | ||||
|  |           prop="Sun" | ||||
|  |           label="时间间隔" | ||||
|  |           align="center" | ||||
|  |         > | ||||
|  |           <template slot-scope="scope"> | ||||
|  |             <input class="checkTime" type="checkbox" :ischecked="scope.row.SunTime"> | ||||
|  |           </template> | ||||
|  |         </el-table-column> | ||||
|  |         <el-table-column | ||||
|  |           :resizable="false" | ||||
|  |           prop="Sun" | ||||
|  |           label="人数上限" | ||||
|  |           align="center" | ||||
|  |         > | ||||
|  |           <template slot-scope="scope"> | ||||
|  |             <input class="checkTime" type="checkbox" :ischecked="scope.row.SunTime"> | ||||
|  |           </template> | ||||
|  |         </el-table-column> | ||||
|  |         <el-table-column | ||||
|  |           :resizable="false" | ||||
|  |           prop="Sun" | ||||
|  |           label="操作" | ||||
|  |           align="center" | ||||
|  |         > | ||||
|  |           <template slot-scope="scope"> | ||||
|  |             <input class="checkTime" type="checkbox" :ischecked="scope.row.SunTime"> | ||||
|  |           </template> | ||||
|  |         </el-table-column> | ||||
|  |       </el-table> | ||||
|  |     </div> | ||||
|  |   </el-dialog> | ||||
|  | </template> | ||||
|  | 
 | ||||
|  | <script> | ||||
|  | export default { | ||||
|  |   name: 'NumberManage', | ||||
|  |   props: { | ||||
|  |     isShow: { | ||||
|  |       type: Boolean, | ||||
|  |       default: false | ||||
|  |     } | ||||
|  |   }, | ||||
|  |   data() { | ||||
|  |     return { | ||||
|  |       dialogVisible: false, | ||||
|  |       tableData: [ | ||||
|  |         { | ||||
|  |           projectName: '视诱发电位', | ||||
|  |           MonTime: false, | ||||
|  |           TuesTime: false, | ||||
|  |           WedTime: false, | ||||
|  |           ThurTime: false, | ||||
|  |           FriTime: false, | ||||
|  |           SatTime: false, | ||||
|  |           SunTime: false | ||||
|  |         }, { | ||||
|  |           projectName: '电脑视野计检查', | ||||
|  |           MonTime: false, | ||||
|  |           TuesTime: false, | ||||
|  |           WedTime: false, | ||||
|  |           ThurTime: false, | ||||
|  |           FriTime: false, | ||||
|  |           SatTime: false, | ||||
|  |           SunTime: false | ||||
|  |         } | ||||
|  |       ] | ||||
|  |     } | ||||
|  |   }, | ||||
|  |   watch: { | ||||
|  |     isShow(val) { | ||||
|  |       this.dialogVisible = val | ||||
|  |     } | ||||
|  |   }, | ||||
|  |   methods: { | ||||
|  |     handleClose() { | ||||
|  |       this.$emit('close', false) | ||||
|  |     } | ||||
|  |   } | ||||
|  | } | ||||
|  | </script> | ||||
|  | 
 | ||||
|  | <style lang="scss" scoped> | ||||
|  | ::v-deep .checkFont{ | ||||
|  |   font-size: 12px !important; | ||||
|  | } | ||||
|  | </style> | ||||
| @ -0,0 +1,202 @@ | |||||
|  | <template> | ||||
|  |   <el-dialog | ||||
|  |     class="add-schedule" | ||||
|  |     :visible.sync="visible" | ||||
|  |     width="40%" | ||||
|  |     :title="dataForm.title" | ||||
|  |     @close="closeDialog" | ||||
|  |   > | ||||
|  |     <el-form ref="dataForm" :model="dataForm" :rules="dataRule"> | ||||
|  |       <el-form-item label="选择患者:" label-width="90px" prop="patientName"> | ||||
|  |         <el-select | ||||
|  |           v-model="dataForm.patientName" | ||||
|  |           filterable | ||||
|  |           placeholder="请输入关键词或选择患者" | ||||
|  |         > | ||||
|  |           <el-option | ||||
|  |             v-for="item in patientList" | ||||
|  |             :key="item.id" | ||||
|  |             :label="item.patientName" | ||||
|  |             :value="item.patientName" | ||||
|  |             @click.native="optionsChange(item)" | ||||
|  |           /> | ||||
|  |         </el-select> | ||||
|  |       </el-form-item> | ||||
|  |       <el-form-item label="医生:" label-width="90px" prop="doctorName"> | ||||
|  |         <el-input v-model="dataForm.doctorName" disabled /> | ||||
|  |       </el-form-item> | ||||
|  |       <el-form-item label="术式:" label-width="90px" prop="operaName"> | ||||
|  |         <el-input v-model="dataForm.operaName" disabled /> | ||||
|  |       </el-form-item> | ||||
|  |       <el-form-item label="手术时间:" label-width="90px" prop="operaTime"> | ||||
|  |         <el-date-picker | ||||
|  |           v-model="dataForm.operaTime" | ||||
|  |           type="datetime" | ||||
|  |           placeholder="选择手术时间" | ||||
|  |           default-time="09:00:00" | ||||
|  |           @change="pickerChange" | ||||
|  |         /> | ||||
|  |       </el-form-item> | ||||
|  |       <el-form-item label="眼别:" label-width="90px"> | ||||
|  |         <el-radio-group v-model="dataForm.eyeType" size="medium"> | ||||
|  |           <el-radio-button label="OD">OD</el-radio-button> | ||||
|  |           <el-radio-button label="OS">OS</el-radio-button> | ||||
|  |           <el-radio-button label="双眼">双眼</el-radio-button> | ||||
|  |         </el-radio-group> | ||||
|  |       </el-form-item> | ||||
|  |     </el-form> | ||||
|  |     <template slot="footer"> | ||||
|  |       <el-button @click="visible = false">{{ $t('cancel') }}</el-button> | ||||
|  |       <el-button type="primary" @click="dataFormSubmitHandle()">{{ $t('confirm') }}</el-button> | ||||
|  |     </template> | ||||
|  |   </el-dialog> | ||||
|  | </template> | ||||
|  | 
 | ||||
|  | <script> | ||||
|  | import debounce from 'lodash/debounce' | ||||
|  | export default { | ||||
|  |   props: { | ||||
|  |     patientTypeList: { | ||||
|  |       type: Array, | ||||
|  |       default: () => [] | ||||
|  |     } | ||||
|  |   }, | ||||
|  |   data() { | ||||
|  |     return { | ||||
|  |       visible: false, | ||||
|  |       dataForm: { | ||||
|  |         doctorCode: '', | ||||
|  |         doctorName: '', | ||||
|  |         eyeType: 'OD', | ||||
|  |         operaName: '', | ||||
|  |         operaTime: '', | ||||
|  |         patientCentreId: '', | ||||
|  |         patientIdNumber: '', | ||||
|  |         patientName: '', | ||||
|  |         patientId: '' | ||||
|  |       }, | ||||
|  |       params: {}, | ||||
|  |       patientList: [], | ||||
|  |       timeout: null | ||||
|  |     } | ||||
|  |   }, | ||||
|  |   computed: { | ||||
|  |     dataRule() { | ||||
|  |       return { | ||||
|  |         patientName: [ | ||||
|  |           { required: true, message: '请选择患者', trigger: 'change' } | ||||
|  |         ], | ||||
|  |         operaTime: [ | ||||
|  |           { required: true, message: '请选择手术时间', trigger: 'change' } | ||||
|  |         ] | ||||
|  |       } | ||||
|  |     } | ||||
|  |   }, | ||||
|  |   methods: { | ||||
|  |     init() { | ||||
|  |       this.visible = true | ||||
|  |       this.$nextTick(() => { | ||||
|  |         this.$refs.dataForm.resetFields() // 重置表单 | ||||
|  |         this.getPatientList() | ||||
|  |       }) | ||||
|  |     }, | ||||
|  |     // 获取信息 | ||||
|  |     getInfo() { | ||||
|  |       this.$http.get(`/patient/manage/${this.params.patientCentreId}/${this.params.patientIdNumber}`).then(({ data: res }) => { | ||||
|  |         if (res.code !== 0) { | ||||
|  |           return this.$message.error(res.msg) | ||||
|  |         } | ||||
|  |         this.dataForm = { | ||||
|  |           ...this.dataForm, | ||||
|  |           ...res.data | ||||
|  |         } | ||||
|  |       }).catch(() => {}) | ||||
|  |     }, | ||||
|  |     // 患者选择发生改变时 | ||||
|  |     optionsChange(value) { | ||||
|  |       this.dataForm.patientCentreId = value.patientCentreId | ||||
|  |       this.dataForm.patientIdNumber = value.patientIdNumber | ||||
|  |       this.dataForm.patientId = value.patientId | ||||
|  |     }, | ||||
|  |     // 获取患者列表 | ||||
|  |     async getPatientList(query) { | ||||
|  |       const { data: res } = await this.$http.get('/opera/schedule/getPatientList', { | ||||
|  |         params: { | ||||
|  |           patientName: query | ||||
|  |         } | ||||
|  |       }) | ||||
|  |       if (res.code === 0) { | ||||
|  |         this.patientList = res.data | ||||
|  |       } else { | ||||
|  |         this.$message.error(res.msg) | ||||
|  |       } | ||||
|  |     }, | ||||
|  |     // 时间选择 | ||||
|  |     pickerChange(value) { | ||||
|  |       this.dataForm.operaTime = this.$moment(value).format('YYYY-MM-DD kk:mm:ss') | ||||
|  |     }, | ||||
|  |     // 表单提交 | ||||
|  |     dataFormSubmitHandle: debounce(function() { | ||||
|  |       if (this.dataForm.title === 'HIS引入') { | ||||
|  |         // this.$parent.HisAddVisible = false | ||||
|  |       } | ||||
|  |       this.$refs.dataForm.validate((valid) => { | ||||
|  |         if (!valid) { | ||||
|  |           return false | ||||
|  |         } | ||||
|  |         this.$http[!this.dataForm.id ? 'post' : 'put']('/opera/schedule', this.dataForm).then(({ data: res }) => { | ||||
|  |           if (res.code !== 0) { | ||||
|  |             return this.$message.error(res.msg) | ||||
|  |           } | ||||
|  |           this.$message({ | ||||
|  |             message: this.$t('prompt.success'), | ||||
|  |             type: 'success', | ||||
|  |             duration: 500, | ||||
|  |             onClose: () => { | ||||
|  |               this.visible = false | ||||
|  |               this.$emit('getScheduleList') | ||||
|  |             } | ||||
|  |           }) | ||||
|  |         }).catch(() => {}) | ||||
|  |       }) | ||||
|  |     }, 1000, { leading: true, trailing: false }), | ||||
|  |     // 关闭弹框 | ||||
|  |     closeDialog() { | ||||
|  |       this.$emit('closeDialog') | ||||
|  |     } | ||||
|  |   } | ||||
|  | } | ||||
|  | </script> | ||||
|  | <style lang="scss" scoped> | ||||
|  | .add-schedule { | ||||
|  |   .cycle-display { | ||||
|  |     .el-form-item__content { | ||||
|  |       display: flex; | ||||
|  |     } | ||||
|  |     .el-input-number { | ||||
|  |       width: 100px; | ||||
|  |       margin-right: 16px; | ||||
|  |     } | ||||
|  |   } | ||||
|  | } | ||||
|  | 
 | ||||
|  | </style> | ||||
|  | <style lang="scss"> | ||||
|  | .add-schedule { | ||||
|  |   .el-dialog__header { | ||||
|  |     margin-bottom:12px | ||||
|  |   } | ||||
|  |     .el-dialog__body { | ||||
|  |         padding-right: 30px; | ||||
|  |     } | ||||
|  |     .formItemOne .el-form-item__content { | ||||
|  |       display: flex; | ||||
|  |     } | ||||
|  |     .el-date-editor.el-input, .el-date-editor.el-input__inner { | ||||
|  |       width: 100%; | ||||
|  |     } | ||||
|  |     .el-select{ | ||||
|  |       width: 100%; | ||||
|  |     } | ||||
|  | } | ||||
|  | </style> | ||||
| @ -0,0 +1,990 @@ | |||||
|  | <template> | ||||
|  |   <div v-loading="pageLoading" class="doctor-schedule"> | ||||
|  |     <div class="date-head" :class="title=='plus' ? '' : 'data-head-fixed'"> | ||||
|  |       <div class="date-head-right"> | ||||
|  |         <el-button-group style="margin-right:10px;"> | ||||
|  |           <el-button plain icon="el-icon-arrow-left" size="small" @click="weekPre">上周</el-button> | ||||
|  |           <el-button plain size="small" @click="weekNext">下周<i class="el-icon-arrow-right el-icon--right" /> | ||||
|  |           </el-button> | ||||
|  |         </el-button-group> | ||||
|  |         <span>选择日期:</span> | ||||
|  |         <el-date-picker | ||||
|  |           v-model="newDate" | ||||
|  |           class="right-pick-btn" | ||||
|  |           :clearable="false" | ||||
|  |           type="date" | ||||
|  |           size="small" | ||||
|  |           placeholder="按日期查询" | ||||
|  |           @change="pickDateChange" | ||||
|  |         /> | ||||
|  |         <el-button v-if="title !=='plus'" type="primary" size="small" class="margin-left-10" @click="allPtClick">{{ sortName }}</el-button> | ||||
|  |       </div> | ||||
|  |     </div> | ||||
|  |     <div class="doctor-schedule-content"> | ||||
|  |       <el-row class="weeks"> | ||||
|  |         <el-col v-if="title !=='plus' && sortName==='保存设置'" :span="1" class="moren">设为默认</el-col> | ||||
|  |         <el-col :span="title ==='plus' && sortName==='批量设置' ? 3 : 2" class="doctor-list-text">医生列表</el-col> | ||||
|  |         <el-col | ||||
|  |           v-for="(day, index) in days" | ||||
|  |           :key="index" | ||||
|  |           :span="3" | ||||
|  |           class="date-item" | ||||
|  |           :class="{selected: index == tabIndex}" | ||||
|  |           @click="pick(day, index)" | ||||
|  |         > | ||||
|  |           <!--本月--> | ||||
|  |           <div class="date-day"> | ||||
|  |             <span class="hidden-sm-and-down">{{ day | dateFormat }}</span> | ||||
|  |             <p>{{ day | getWeekFormat }}</p> | ||||
|  |           </div> | ||||
|  |           <div class="morning-after"> | ||||
|  |             <span>上午</span> | ||||
|  |             <span>下午</span> | ||||
|  |           </div> | ||||
|  |         </el-col> | ||||
|  |       </el-row> | ||||
|  |       <div class="scroll-list"> | ||||
|  |         <el-row v-for="(item,index) in doctorList" :key="index" :gutter="10" class="content"> | ||||
|  |           <el-col v-if="title !=='plus' && sortName==='保存设置'" :span="1" class="moren"> | ||||
|  |             <el-switch :value="item.isDefault===1 ? true : false" @change="switchChange(index,$event)" /> | ||||
|  |           </el-col> | ||||
|  |           <el-col :span="title ==='plus' && sortName==='批量设置' ? 3 : 2" class="doctor-name"> | ||||
|  |             <div class="doctorList"> | ||||
|  |               <div class="list"> | ||||
|  |                 <!-- <div class="list-img"> | ||||
|  |                   <img src="@/assets/img/avatar.png" alt=""> | ||||
|  |                 </div> --> | ||||
|  |                 <p>{{ item.doctorName }}</p> | ||||
|  |               </div> | ||||
|  |             </div> | ||||
|  |           </el-col> | ||||
|  |           <el-col v-for="(weekInfoItem,weekInfoIndex) in item.weekInfo" :key="weekInfoIndex" :span="3"> | ||||
|  |             <div class="surplu-num"> | ||||
|  |               <div v-show="sortName==='保存设置'" class="surplu-num-morning"> | ||||
|  |                 <div class="morning"> | ||||
|  |                   <el-input v-model="weekInfoItem.morning.numSourceTotal" placeholder="" @change="changeInput($event,index,weekInfoIndex,'morning')" /> | ||||
|  |                 </div> | ||||
|  |               </div> | ||||
|  |               <div v-show="sortName==='批量排台'" class="surplu-num-morning"> | ||||
|  |                 <!-- 上午预定后 --> | ||||
|  |                 <div | ||||
|  |                   v-show="selectedShow && weekInfoItem.date == rowListObj.operaDate && rowListObj.mainDoctorName == item.doctorName && rowListObj.morOrAft===1" | ||||
|  |                   class="morning-top" | ||||
|  |                   @mouseover.stop="mouseoverHandle(index,weekInfoIndex,weekInfoItem,'morning')" | ||||
|  |                   @mouseout="mouseoutHandle" | ||||
|  |                 > | ||||
|  |                   <p>{{ rowListObj.morOrAft===1 ? '上午' : '下午' }}</p> | ||||
|  |                   <p>{{ rowListObj.operaTime }}</p> | ||||
|  |                 </div> | ||||
|  |                 <div | ||||
|  |                   slot="reference" | ||||
|  |                   class="morning" | ||||
|  |                   :class="weekInfoItem.morning.surplusNum<=0 ? 'morningAfterClass' :'' " | ||||
|  |                   @mouseover.stop="mouseoverHandle(index,weekInfoIndex,weekInfoItem,'morning')" | ||||
|  |                   @mouseout="mouseoutHandle" | ||||
|  |                 > | ||||
|  |                   <p v-show="weekInfoItem.morning.numSourceTotal<=0" class="none">无</p> | ||||
|  |                   <div | ||||
|  |                     v-show="weekInfoItem.morning.numSourceTotal>0 && (weekInfoItem.morning.numSourceTotal == weekInfoItem.morning.orderNum)" | ||||
|  |                     class="yue-man" | ||||
|  |                   > | ||||
|  |                     <p>约满</p> | ||||
|  |                     <p>{{ weekInfoItem.morning.orderNum }} / {{ weekInfoItem.morning.numSourceTotal }}</p> | ||||
|  |                   </div> | ||||
|  |                   <div | ||||
|  |                     v-show="weekInfoItem.morning.numSourceTotal>0 && (weekInfoItem.morning.numSourceTotal > weekInfoItem.morning.orderNum) " | ||||
|  |                     class="yi-yue" | ||||
|  |                   > | ||||
|  |                     <p>已约</p> | ||||
|  |                     <p>{{ weekInfoItem.morning.orderNum }} / {{ weekInfoItem.morning.numSourceTotal }}</p> | ||||
|  |                   </div> | ||||
|  |                   <!-- 判断上午号是否有剩余加号显示,暂时不用:v-show="currentIndex===index && currentWeekIndex===weekInfoIndex && mouseMoveIsShow && showMorningAfterText==='morning' && weekInfoItem.morning.surplusNum>0" --> | ||||
|  |                   <div | ||||
|  |                     v-show="currentIndex===index && currentWeekIndex===weekInfoIndex && mouseMoveIsShow && showMorningAfterText==='morning' && title !=='plus'" | ||||
|  |                     class="show-plus-one" | ||||
|  |                   > | ||||
|  |                     <p @click="numberMangeClick(item,weekInfoItem,1,'排台详情')">详情</p> | ||||
|  |                     <p @click="numberMangeClick(item,weekInfoItem,1,'排台管理')">排台管理</p> | ||||
|  |                   </div> | ||||
|  |                   <div | ||||
|  |                     v-show="currentIndex===index && currentWeekIndex===weekInfoIndex && mouseMoveIsShow && showMorningAfterText==='morning'&& title =='plus'" | ||||
|  |                     class="show-plus-two" | ||||
|  |                   > | ||||
|  |                     <i class="el-icon-plus" @click="setOperaTImeClick(item,weekInfoItem,1,'设置时间')" /> | ||||
|  |                   </div> | ||||
|  |                 </div> | ||||
|  |               </div> | ||||
|  |               <div v-show="sortName==='保存设置'" class="surplu-num-after"> | ||||
|  |                 <div class="after"> | ||||
|  |                   <el-input v-model="weekInfoItem.after.numSourceTotal" placeholder="" @change="changeInput($event,index,weekInfoIndex,'after')" /> | ||||
|  |                 </div> | ||||
|  |               </div> | ||||
|  |               <div v-show="sortName==='批量排台'" class="surplu-num-after"> | ||||
|  |                 <!-- 下午预定后 --> | ||||
|  |                 <div | ||||
|  |                   v-show="selectedShow && weekInfoItem.date == rowListObj.operaDate && rowListObj.mainDoctorName == item.doctorName && rowListObj.morOrAft===2" | ||||
|  |                   class="after-top" | ||||
|  |                   @mouseover.stop="mouseoverHandle(index,weekInfoIndex,weekInfoItem,'after')" | ||||
|  |                   @mouseout="mouseoutHandle" | ||||
|  |                 > | ||||
|  |                   <p>{{ rowListObj.morOrAft===1 ? '上午':'下午' }}</p> | ||||
|  |                   <p>{{ rowListObj.operaTime }}</p> | ||||
|  |                 </div> | ||||
|  |                 <!-- 下午 --> | ||||
|  |                 <div | ||||
|  |                   slot="reference" | ||||
|  |                   class="after" | ||||
|  |                   :class="weekInfoItem.after.surplusNum<=0 ? 'morningAfterClass' :'' " | ||||
|  |                   @mouseover.stop="mouseoverHandle(index,weekInfoIndex,weekInfoItem,'after')" | ||||
|  |                   @mouseout="mouseoutHandle" | ||||
|  |                 > | ||||
|  |                   <p v-show="weekInfoItem.after.numSourceTotal<=0" class="none">无</p> | ||||
|  |                   <div | ||||
|  |                     v-show="weekInfoItem.after.numSourceTotal>0 && (weekInfoItem.after.numSourceTotal == weekInfoItem.after.orderNum)" | ||||
|  |                     class="yue-man" | ||||
|  |                   > | ||||
|  |                     <p>约满</p> | ||||
|  |                     <p>{{ weekInfoItem.after.orderNum }} / {{ weekInfoItem.after.numSourceTotal }}</p> | ||||
|  |                   </div> | ||||
|  |                   <div | ||||
|  |                     v-show="weekInfoItem.after.numSourceTotal>0 && (weekInfoItem.after.numSourceTotal > weekInfoItem.after.orderNum) " | ||||
|  |                     class="yi-yue" | ||||
|  |                   > | ||||
|  |                     <p>已约</p> | ||||
|  |                     <p>{{ weekInfoItem.after.orderNum }} / {{ weekInfoItem.after.numSourceTotal }}</p> | ||||
|  |                   </div> | ||||
|  |                   <!-- 判断下午好是否有剩余加号显示,暂时不用:v-show="currentIndex===index && currentWeekIndex===weekInfoIndex && mouseMoveIsShow && showMorningAfterText==='after' && weekInfoItem.after.surplusNum>0 --> | ||||
|  |                   <div | ||||
|  |                     v-show="currentIndex===index && currentWeekIndex===weekInfoIndex && mouseMoveIsShow && showMorningAfterText==='after' && title !=='plus'" | ||||
|  |                     class="show-plus-one" | ||||
|  |                   > | ||||
|  |                     <p @click="numberMangeClick(item,weekInfoItem,2,'排台详情')">详情</p> | ||||
|  |                     <p @click="numberMangeClick(item,weekInfoItem,2,'排台管理')">排台管理</p> | ||||
|  |                   </div> | ||||
|  |                   <div | ||||
|  |                     v-show="currentIndex===index && currentWeekIndex===weekInfoIndex && mouseMoveIsShow && showMorningAfterText==='after' && title =='plus'" | ||||
|  |                     class="show-plus-two" | ||||
|  |                   > | ||||
|  |                     <i class="el-icon-plus" @click="setOperaTImeClick(item,weekInfoItem,2,'设置时间')" /> | ||||
|  |                   </div> | ||||
|  |                 </div> | ||||
|  |               </div> | ||||
|  | 
 | ||||
|  |             </div> | ||||
|  |           </el-col> | ||||
|  |         </el-row> | ||||
|  |       </div> | ||||
|  |     </div> | ||||
|  |     <!-- 新增预约 --> | ||||
|  |     <add-schedule | ||||
|  |       v-if="addScheduleVisible" | ||||
|  |       ref="addScheduleRef" | ||||
|  |       @closeDialog="addScheduleVisible=false" | ||||
|  |       @getScheduleList="getScheduleList" | ||||
|  |     /> | ||||
|  |     <numberDetailManage | ||||
|  |       v-if="numberManageVisible" | ||||
|  |       ref="numberManageRef" | ||||
|  |       :source-flag="sourceFlag" | ||||
|  |       @closeDialog="numberManageVisible=false" | ||||
|  |       @getScheduleList="getScheduleList" | ||||
|  |       @rowList="rowList" | ||||
|  |     /> | ||||
|  |     <setOperaTime | ||||
|  |       v-if="setOperaTimeVisible" | ||||
|  |       ref="setOperaTimeRef" | ||||
|  |       :source-flag="sourceFlag" | ||||
|  |       @closeDialog="setOperaTimeVisible=false" | ||||
|  |       @getScheduleList="getScheduleList" | ||||
|  |       @rowList="rowList" | ||||
|  |     /> | ||||
|  |     <operationDetail | ||||
|  |       v-if="operationDetailVisible" | ||||
|  |       ref="operationDetailRef" | ||||
|  |       @closeDialog="operationDetailVisible=false" | ||||
|  |     /> | ||||
|  |   </div> | ||||
|  | </template> | ||||
|  | 
 | ||||
|  | <script> | ||||
|  | import moment from 'moment' | ||||
|  | import addSchedule from './add-schedule.vue' | ||||
|  | import _ from 'lodash' | ||||
|  | import { dateFilterTwo } from '@/filters/index.js' | ||||
|  | import NumberDetailManage from '@/page-subspecialty/views/modules/nurseManagement/schedule/number-detail-manage.vue' | ||||
|  | import SetOperaTime from '@/page-subspecialty/views/modules/nurseManagement/schedule/setOperaTime.vue' | ||||
|  | /* eslint-disable */ | ||||
|  | export default { | ||||
|  |   props: { | ||||
|  |     dateValue: { | ||||
|  |       type: String, | ||||
|  |       default: moment(new Date()).format("YYYY-MM-DD") | ||||
|  |     }, | ||||
|  |     timeValue: { | ||||
|  |       type: String, | ||||
|  |       default: "00:00" | ||||
|  |     }, | ||||
|  |     title: { | ||||
|  |       type: String, | ||||
|  |       default: '' | ||||
|  |     }, | ||||
|  |     titleButton: { | ||||
|  |       type: String, | ||||
|  |       default: '' | ||||
|  |     }, | ||||
|  |     // 号源标识 1:手术号源 2:检查号源  type----- 1:手术日程,2:术前核查 | ||||
|  |     sourceFlag: { | ||||
|  |       type: Number, | ||||
|  |       default: null | ||||
|  |     }, | ||||
|  |   }, | ||||
|  |   components: { | ||||
|  |     SetOperaTime, | ||||
|  |     NumberDetailManage, | ||||
|  |     addSchedule, | ||||
|  |   }, | ||||
|  |   data() { | ||||
|  |     return { | ||||
|  |       pageLoading:false, | ||||
|  |       currentYear: 1970, // 年份 | ||||
|  |       currentMonth: 1, // 月份 | ||||
|  |       currentDay: 1, // 日期 | ||||
|  |       currentWeek: 1, // 星期 | ||||
|  |       days: [], | ||||
|  |       value1: "", | ||||
|  |       tabIndex: null, | ||||
|  |       newDate: moment(new Date()).format("YYYY-MM-DD"), | ||||
|  |       tabTimeIndex: 4, | ||||
|  |       times: [ | ||||
|  |         { time: "00:00:00~06:00:00", label: "00:00~06:00" }, | ||||
|  |         { time: "06:00:00~12:00:00", label: "06:00~12:00" }, | ||||
|  |         { time: "12:00:00~18:00:00", label: "12:00~18:00" }, | ||||
|  |         { time: "18:00:00~24:00:00", label: "18:00~24:00" }, | ||||
|  |         { time: "00:00:00~24:00:00", label: "今日全部" } | ||||
|  |       ], | ||||
|  |       numberManageVisible: false, | ||||
|  |       setOperaTimeVisible:false, | ||||
|  |       operationDetailVisible: false, | ||||
|  |       mouseMoveIsShow: false, | ||||
|  |       currentIndex: null, | ||||
|  |       currentWeekIndex: null, | ||||
|  |       showMorningAfterText: '', | ||||
|  |       addScheduleVisible: false, | ||||
|  |       selectedShow: false, | ||||
|  |       doctorList:[], | ||||
|  |       doctorList1: [{ | ||||
|  |         doctorCode: "liucan", | ||||
|  |         doctorName: "刘灿", | ||||
|  |         weekInfo: [{ | ||||
|  |           after: { | ||||
|  |             numSourceTotal: 0, | ||||
|  |             orderNum: 10, | ||||
|  |             scheduledPatients: [], | ||||
|  |           }, | ||||
|  |           morning: { | ||||
|  |             numSourceTotal: 0, | ||||
|  |             orderNum: 5, | ||||
|  |             scheduledPatients: [], | ||||
|  |           }, | ||||
|  |           date: "2023-04-03", | ||||
|  |           weekName: "周一", | ||||
|  |         },{ | ||||
|  |           after: { | ||||
|  |             numSourceTotal: 0, | ||||
|  |             orderNum: 0, | ||||
|  |             scheduledPatients: [], | ||||
|  |           }, | ||||
|  |           morning: { | ||||
|  |             numSourceTotal: 0, | ||||
|  |             orderNum: 0, | ||||
|  |             scheduledPatients: [], | ||||
|  |           }, | ||||
|  |           date: "2023-04-04", | ||||
|  |           weekName: "周二", | ||||
|  |         },{ | ||||
|  |           after: { | ||||
|  |             numSourceTotal: 0, | ||||
|  |             orderNum: 0, | ||||
|  |             scheduledPatients: [], | ||||
|  |           }, | ||||
|  |           morning: { | ||||
|  |             numSourceTotal: 0, | ||||
|  |             orderNum: 0, | ||||
|  |             scheduledPatients: [], | ||||
|  |           }, | ||||
|  |           date: "2023-04-05", | ||||
|  |           weekName: "周三", | ||||
|  |         },{ | ||||
|  |           after: { | ||||
|  |             numSourceTotal: 0, | ||||
|  |             orderNum: 0, | ||||
|  |             scheduledPatients: [], | ||||
|  |           }, | ||||
|  |           morning: { | ||||
|  |             numSourceTotal: 0, | ||||
|  |             orderNum: 0, | ||||
|  |             scheduledPatients: [], | ||||
|  |           }, | ||||
|  |           date: "2023-04-06", | ||||
|  |           weekName: "周四", | ||||
|  |         },{ | ||||
|  |           after: { | ||||
|  |             numSourceTotal: 10, | ||||
|  |             orderNum: 0, | ||||
|  |             scheduledPatients: [], | ||||
|  |           }, | ||||
|  |           morning: { | ||||
|  |             numSourceTotal: 10, | ||||
|  |             orderNum: 0, | ||||
|  |             scheduledPatients: [], | ||||
|  |           }, | ||||
|  |           date: "2023-04-07", | ||||
|  |           weekName: "周五", | ||||
|  |         },{ | ||||
|  |           after: { | ||||
|  |             numSourceTotal: 0, | ||||
|  |             orderNum: 0, | ||||
|  |             scheduledPatients: [], | ||||
|  |           }, | ||||
|  |           morning: { | ||||
|  |             numSourceTotal: 0, | ||||
|  |             orderNum: 0, | ||||
|  |             scheduledPatients: [], | ||||
|  |           }, | ||||
|  |           date: "2023-04-08", | ||||
|  |           weekName: "周六", | ||||
|  |         },{ | ||||
|  |           after: { | ||||
|  |             numSourceTotal: 0, | ||||
|  |             orderNum: 0, | ||||
|  |             scheduledPatients: [], | ||||
|  |           }, | ||||
|  |           morning: { | ||||
|  |             numSourceTotal: 0, | ||||
|  |             orderNum: 0, | ||||
|  |             scheduledPatients: [], | ||||
|  |           }, | ||||
|  |           date: "2023-04-09", | ||||
|  |           weekName: "周日", | ||||
|  |         }] | ||||
|  |       }], | ||||
|  |       patientList: [], | ||||
|  |       rowListObj: {}, | ||||
|  |       operaTypeList: [], | ||||
|  |       sortName:'批量排台' | ||||
|  |     }; | ||||
|  |   }, | ||||
|  |   filters: { | ||||
|  |     dateFormat(date) { | ||||
|  |       return moment(date).format("YYYY-MM-DD"); | ||||
|  |     }, | ||||
|  |     getWeekFormat(date) { | ||||
|  |       const weeksObj = { | ||||
|  |         1: "周一", | ||||
|  |         2: "周二", | ||||
|  |         3: "周三", | ||||
|  |         4: "周四", | ||||
|  |         5: "周五", | ||||
|  |         6: "周六", | ||||
|  |         7: "周日" | ||||
|  |       }; | ||||
|  |       let weekNumber = moment(date).isoWeekday(); | ||||
|  |       // console.log(weekNumber); | ||||
|  |       return weeksObj[weekNumber]; | ||||
|  |     } | ||||
|  |   }, | ||||
|  | 
 | ||||
|  |   mounted() { | ||||
|  |     const index = _.findIndex(this.days, function (o) { | ||||
|  |       // console.log('o: ', o.getDate()); | ||||
|  |       // console.log('new Date().getDate(): ', new Date().getDate()); | ||||
|  |       return o.getDate() === new Date().getDate(); | ||||
|  |     }); | ||||
|  |     console.log("index: ", index); | ||||
|  |     this.tabIndex = index; | ||||
|  |   }, | ||||
|  | 
 | ||||
|  |   created() { | ||||
|  |     this.initData(null); | ||||
|  |     this.getScheduleList() | ||||
|  |   }, | ||||
|  | 
 | ||||
|  |   methods: { | ||||
|  |     changeInput(e,index,weekInfoIndex,morOrAft) { | ||||
|  |       // console.log(typeof Number(e)); | ||||
|  |       // console.log(e); | ||||
|  |       var pattern = /^[0-9][0-9]*$/ | ||||
|  |       var regex=/^[0]+/ | ||||
|  |       this.doctorList[index].weekInfo[weekInfoIndex][morOrAft].numSourceTotal = e.replace(regex,""); | ||||
|  |       if (!pattern.test(e)) { | ||||
|  |          this.$message({ | ||||
|  |           message: '只能输入正整数哦', | ||||
|  |           type: 'warning' | ||||
|  |         }) | ||||
|  |         this.doctorList[index].weekInfo[weekInfoIndex][morOrAft].numSourceTotal = 0 | ||||
|  |       } | ||||
|  |     }, | ||||
|  |     // 获取手术日程 | ||||
|  |     async getScheduleList() { | ||||
|  |      this.pageLoading = true | ||||
|  |       const { data: res } = await this.$http.get('/opera/schedule', { | ||||
|  |         params: { | ||||
|  |           searchDate: this.newDate, | ||||
|  |         } | ||||
|  |       }) | ||||
|  |       if (res.code === 0) { | ||||
|  |         this.pageLoading = false | ||||
|  |         this.doctorList = res.data | ||||
|  |       } else { | ||||
|  |         this.pageLoading = false | ||||
|  |         this.$message.error(res.msg) | ||||
|  |       } | ||||
|  |     }, | ||||
|  |     // 批量排台 | ||||
|  |     allPtClick() { | ||||
|  |       if(this.sortName === '批量排台') { | ||||
|  |         this.sortName = '保存设置' | ||||
|  |         this.getBatchNumSet() | ||||
|  |       } else { | ||||
|  |         this.sortName = '批量排台' | ||||
|  |         this.batchNumSave() | ||||
|  |       } | ||||
|  |     }, | ||||
|  |     // 批量排台获取 | ||||
|  |     async getBatchNumSet() { | ||||
|  |         const loading = this.$loading({ | ||||
|  |           lock: true, | ||||
|  |           text: '加载中请稍等...', | ||||
|  |           spinner: 'el-icon-loading', | ||||
|  |           background: 'rgba(255, 255, 255, 0.7)' | ||||
|  |         }) | ||||
|  |         const { data: res } = await this.$http.get('/num/source/set/getBatchNumSet', { | ||||
|  |         params: { | ||||
|  |           searchDate: this.newDate, | ||||
|  |         } | ||||
|  |       }) | ||||
|  |       if (res.code === 0) { | ||||
|  |         loading.close() | ||||
|  |         this.doctorList = res.data | ||||
|  |       } else { | ||||
|  |         loading.close() | ||||
|  |         this.$message.error(res.msg) | ||||
|  |       } | ||||
|  |     }, | ||||
|  |     // 批量保存 | ||||
|  |     async batchNumSave() { | ||||
|  |       const loading = this.$loading({ | ||||
|  |           lock: true, | ||||
|  |           text: '保存中请稍等...', | ||||
|  |           spinner: 'el-icon-loading', | ||||
|  |           background: 'rgba(255, 255, 255, 0.7)' | ||||
|  |         }) | ||||
|  |       const {data:res} = await this.$http.post('num/source/set/batchNumSet',{ | ||||
|  |         dtoList:this.doctorList, | ||||
|  |         searchDate:this.newDate | ||||
|  |       }) | ||||
|  |       if(res.code===0) { | ||||
|  |         loading.close() | ||||
|  |         this.$message({ | ||||
|  |           message: '保存成功', | ||||
|  |           type: 'success' | ||||
|  |         }); | ||||
|  |       } else { | ||||
|  |         loading.close() | ||||
|  |         this.$message.error(res.msg) | ||||
|  |       } | ||||
|  |     }, | ||||
|  |     // 选择时间的传参 | ||||
|  |     rowList(rowList) { | ||||
|  |       console.log(rowList); | ||||
|  |       this.rowListObj = rowList | ||||
|  |       this.$emit('rowList', rowList) | ||||
|  |       this.selectedShow = true | ||||
|  |     }, | ||||
|  |     formatDate(year, month, day) { | ||||
|  |       const y = year; | ||||
|  |       let m = month; | ||||
|  |       if (m < 10) m = `0${m}`; | ||||
|  |       let d = day; | ||||
|  |       if (d < 10) d = `0${d}`; | ||||
|  |       return `${y}-${m}-${d}`; | ||||
|  |     }, | ||||
|  |     // 日期改变时 | ||||
|  |     pickDateChange(date) { | ||||
|  |       let that = this; | ||||
|  |       that.newDate = moment(date).format("YYYY-MM-DD"); | ||||
|  |       that.$emit("dateValue", that.newDate); | ||||
|  |       console.log("this.newDate: ", that.newDate); | ||||
|  |       that.initData(that.newDate); | ||||
|  |       const index = _.findIndex(that.days, function (o) { | ||||
|  |         return o.getDate() === new Date(that.newDate).getDate(); | ||||
|  |       }); | ||||
|  |       this.sortName === '批量排台' ? this.getScheduleList() : this.getBatchNumSet() | ||||
|  |       // console.log("index: ", index); | ||||
|  |       this.tabIndex = index; | ||||
|  |     }, | ||||
|  |     initData(cur) { | ||||
|  |       let date = ""; | ||||
|  |       if (cur) { | ||||
|  |         date = new Date(cur); | ||||
|  |       } else { | ||||
|  |         date = new Date(); | ||||
|  |       } | ||||
|  |       this.currentDay = date.getDate(); // 今日日期 几号 | ||||
|  |       this.currentYear = date.getFullYear(); // 当前年份 | ||||
|  |       this.currentMonth = date.getMonth() + 1; // 当前月份 | ||||
|  |       this.currentWeek = date.getDay(); // 1...6,0  // 星期几 | ||||
|  |       if (this.currentWeek === 0) { | ||||
|  |         this.currentWeek = 7; | ||||
|  |       } | ||||
|  |       const str = this.formatDate( | ||||
|  |         this.currentYear, | ||||
|  |         this.currentMonth, | ||||
|  |         this.currentDay | ||||
|  |       ); // 今日日期 年-月-日 | ||||
|  |       this.days.length = 0; | ||||
|  |       // 今天是周日,放在第一行第7个位置,前面6个 这里默认显示一周,如果需要显示一个月,则第二个循环为 i<= 35- this.currentWeek | ||||
|  |       /* eslint-disabled */ | ||||
|  |       // 今天 | ||||
|  |       for (let i = this.currentWeek - 1; i >= 0; i -= 1) { | ||||
|  |         const d = new Date(str); | ||||
|  |         d.setDate(d.getDate() - i); | ||||
|  |         // console.log(y:" + d.getDate()) | ||||
|  |         // console.log('d: ', d); | ||||
|  |         this.days.push(d); | ||||
|  |       } | ||||
|  |       // 这个星期 | ||||
|  |       for (let i = 1; i <= 7 - this.currentWeek; i += 1) { | ||||
|  |         const d = new Date(str); | ||||
|  |         d.setDate(d.getDate() + i); | ||||
|  |         this.days.push(d); | ||||
|  |         // console.log('d1: ', d); | ||||
|  |       } | ||||
|  | 
 | ||||
|  |     }, | ||||
|  | 
 | ||||
|  |     // 上个星期 | ||||
|  |     weekPre() { | ||||
|  |       const d = this.days[0]; // 如果当期日期是7号或者小于7号 | ||||
|  |       d.setDate(d.getDate() - 7); | ||||
|  |       this.initData(d); | ||||
|  |       this.newDate = dateFilterTwo(this.days[0]) | ||||
|  |       this.sortName === '批量排台' ? this.getScheduleList() : this.getBatchNumSet() | ||||
|  |     }, | ||||
|  | 
 | ||||
|  |     // 下个星期 | ||||
|  |     weekNext() { | ||||
|  |       const d = this.days[6]; // 如果当期日期是7号或者小于7号 | ||||
|  |       d.setDate(d.getDate() + 7); | ||||
|  |       this.initData(d); | ||||
|  |       this.newDate = dateFilterTwo(this.days[0]) | ||||
|  |       this.sortName === '批量排台' ? this.getScheduleList() : this.getBatchNumSet() | ||||
|  |     }, | ||||
|  |     // 上一個月  传入当前年份和月份 | ||||
|  |     pickPre(year, month) { | ||||
|  |       const d = new Date(this.formatDate(year, month, 1)); | ||||
|  |       d.setDate(0); | ||||
|  |       this.initData(this.formatDate(d.getFullYear(), d.getMonth() + 1, 1)); | ||||
|  |     }, | ||||
|  | 
 | ||||
|  |     // 下一個月  传入当前年份和月份 | ||||
|  |     pickNext(year, month) { | ||||
|  |       const d = new Date(this.formatDate(year, month, 1)); | ||||
|  |       d.setDate(35); | ||||
|  |       this.initData(this.formatDate(d.getFullYear(), d.getMonth() + 1, 1)); | ||||
|  |     }, | ||||
|  | 
 | ||||
|  |     // 当前选择日期 | ||||
|  |     pick(date, index) { | ||||
|  |       this.newDate = moment(date).format("YYYY-MM-DD"); | ||||
|  |       this.$emit("dateValue", this.newDate); | ||||
|  |       // console.log("index: ", index); | ||||
|  |       this.tabIndex = index; | ||||
|  |       // alert( | ||||
|  |       //   this.formatDate(date.getFullYear(), date.getMonth() + 1, date.getDate()) | ||||
|  |       // ); | ||||
|  |     }, | ||||
|  |     pickTime(time, index) { | ||||
|  |       // console.log('time: ', time); | ||||
|  |       let timeArr = []; | ||||
|  |       timeArr.push(_.split(time.time, "~")); | ||||
|  |       // console.log("timeArr: ", timeArr); | ||||
|  |       this.$emit("timeValue", _.join(timeArr), ""); | ||||
|  |       // console.log("index: ", index); | ||||
|  |       this.tabTimeIndex = index; | ||||
|  |       // alert( | ||||
|  |       //   this.formatDate(date.getFullYear(), date.getMonth() + 1, date.getDate()) | ||||
|  |       // ); | ||||
|  |     }, | ||||
|  |     // 鼠标移入 | ||||
|  |     mouseoverHandle(index, weekInfoIndex, weekInfoItem, showMorningAfterText) { | ||||
|  |       // console.log(weekInfoItem[showMorningAfterText]); | ||||
|  |       let numSourceTotal = weekInfoItem[showMorningAfterText].numSourceTotal | ||||
|  |       let orderNum = weekInfoItem[showMorningAfterText].orderNum | ||||
|  |       this.currentIndex = index | ||||
|  |       this.currentWeekIndex = weekInfoIndex | ||||
|  |       this.showMorningAfterText = showMorningAfterText | ||||
|  | 
 | ||||
|  |       this.mouseMoveIsShow = this.title == 'plus' ? (numSourceTotal > 0 && numSourceTotal !== orderNum ? true : false) : true | ||||
|  |     }, | ||||
|  |     // 鼠标移出 | ||||
|  |     mouseoutHandle() { | ||||
|  |       this.currentIndex = null | ||||
|  |       this.currentWeekIndex = null | ||||
|  |       this.showMorningAfterText = '' | ||||
|  |       this.mouseMoveIsShow = false | ||||
|  |     }, | ||||
|  |     // 默认开关 | ||||
|  |     switchChange(index,e) { | ||||
|  |       console.log(index,e); | ||||
|  |       this.doctorList[index].isDefault = e ? 1 : 0 | ||||
|  |     }, | ||||
|  |     // 新增日程安排 | ||||
|  |     addPatientHandle(item, weekInfoItem, flag) { | ||||
|  |       // console.log(weekInfoItem); | ||||
|  |       this.addScheduleVisible = true | ||||
|  |       this.$nextTick(() => { | ||||
|  |         this.$refs.addScheduleRef.dataForm.title = '预约医生' | ||||
|  |         this.$refs.addScheduleRef.dataForm.doctorName = item.doctorName | ||||
|  |         this.$refs.addScheduleRef.dataForm.doctorCode = item.doctorCode | ||||
|  |         this.$refs.addScheduleRef.dataForm.operaName = item.expertise | ||||
|  |         this.$refs.addScheduleRef.dataForm.operaTime = flag === 'morning' ? weekInfoItem.date + ' 07:30:00' : weekInfoItem.date + ' 14:00:00' | ||||
|  |         this.$refs.addScheduleRef.params = item | ||||
|  |         this.$refs.addScheduleRef.init() | ||||
|  |       }) | ||||
|  |     }, | ||||
|  |     // 单选 | ||||
|  |     handleCurrentChange(val) { | ||||
|  |       this.currentRow = val; | ||||
|  |     }, | ||||
|  |     // 号源管理 | ||||
|  |     async numberMangeClick(item, weekInfoItem, morOrAft, title) { | ||||
|  |       this.numberMangeClickFun(item, weekInfoItem, morOrAft, title) | ||||
|  |       // if (this.title === 'plus' && this.titleButton !== '选择核查日期') { | ||||
|  |       //   // 选择医生时判断医生有没有手术权限 | ||||
|  |       //   const { data: res } = await this.$http.post('/num/source/authorDoctor', { | ||||
|  |       //     doctorCode: item.doctorCode, | ||||
|  |       //     operaVOList: this.operaTypeList | ||||
|  |       //   }) | ||||
|  |       //   if (res.code === 0) { | ||||
|  |       //     this.numberMangeClickFun(item, weekInfoItem, morOrAft, title) | ||||
|  |       //   } else { | ||||
|  |       //     this.$message.error(res.msg) | ||||
|  |       //   } | ||||
|  |       // } else { | ||||
|  |       //   this.numberMangeClickFun(item, weekInfoItem, morOrAft, title) | ||||
|  |       // } | ||||
|  | 
 | ||||
|  |     }, | ||||
|  |     numberMangeClickFun(item, weekInfoItem, morOrAft, title) { | ||||
|  |       this.numberManageVisible = true | ||||
|  |       this.$nextTick(() => { | ||||
|  |         console.log(weekInfoItem.date); | ||||
|  |         this.$refs.numberManageRef.mainDoctorName = item.doctorName | ||||
|  |         this.$refs.numberManageRef.weekName = weekInfoItem.weekName | ||||
|  |         this.$refs.numberManageRef.morOrAft = morOrAft | ||||
|  |         this.$refs.numberManageRef.title = title | ||||
|  |         this.$refs.numberManageRef.dataForm.doctorCode = item.doctorCode | ||||
|  |         this.$refs.numberManageRef.dataForm.operaDate = weekInfoItem.date | ||||
|  |         this.$refs.numberManageRef.init() | ||||
|  |       }) | ||||
|  |     }, | ||||
|  |     // 设置时间 | ||||
|  |     setOperaTImeClick(item, weekInfoItem, morOrAft, title) { | ||||
|  |       // 判断时间是否过时 | ||||
|  |       const time = morOrAft=== 1 ? '13:30:00' : '21:00:00' | ||||
|  |       const operaDateTime = weekInfoItem.date + ' ' +  time | ||||
|  |       // 时间 | ||||
|  |       const operaTime = new Date(operaDateTime) | ||||
|  |       // 现在时间 | ||||
|  |       const nowTime = new Date() | ||||
|  |       console.log(operaTime); | ||||
|  |       console.log(nowTime); | ||||
|  |       if (operaTime > nowTime) { | ||||
|  |           this.setOperaTimeVisible=true | ||||
|  |           this.$nextTick(() => { | ||||
|  |             // 如果日期相同,医生相同,时间段相同再回显时间 | ||||
|  |             if(this.rowListObj.operaDate===weekInfoItem.date && this.rowListObj.mainDoctorName === item.doctorName && this.rowListObj.morOrAft===morOrAft) { | ||||
|  |               this.$refs.setOperaTimeRef.dataForm.operaTime = this.rowListObj.operaTime | ||||
|  |             } | ||||
|  |             this.$refs.setOperaTimeRef.dataForm.mainDoctorName = item.doctorName | ||||
|  |             this.$refs.setOperaTimeRef.weekName = weekInfoItem.weekName | ||||
|  |             this.$refs.setOperaTimeRef.morOrAft = morOrAft | ||||
|  |             this.$refs.setOperaTimeRef.title = title | ||||
|  |             this.$refs.setOperaTimeRef.dataForm.mainDoctorCode = item.doctorCode | ||||
|  |             this.$refs.setOperaTimeRef.dataForm.operaDate = weekInfoItem.date | ||||
|  |              | ||||
|  |             this.$refs.setOperaTimeRef.init() | ||||
|  |           }) | ||||
|  |       } else { | ||||
|  |         this.$message({ | ||||
|  |           message: '时间已过时,不可设置', | ||||
|  |           type: 'warning' | ||||
|  |         }) | ||||
|  |       } | ||||
|  |       // console.log(this.rowListObj); | ||||
|  |       | ||||
|  |     }, | ||||
|  |   } | ||||
|  | }; | ||||
|  | </script> | ||||
|  | 
 | ||||
|  | <style lang="scss" scoped> | ||||
|  | .doctor-schedule { | ||||
|  |   font-size: 14px; | ||||
|  |   margin-top: 15px; | ||||
|  |   .date-head { | ||||
|  |     display: flex; | ||||
|  |     justify-content: space-between; | ||||
|  |     align-items: center; | ||||
|  |     padding-bottom: 10px; | ||||
|  |     .date-head-left { | ||||
|  |       font-size: 16px; | ||||
|  |     } | ||||
|  |   } | ||||
|  |   .data-head-fixed { | ||||
|  |     padding: 10px 16px 0 16px; | ||||
|  |     position: fixed; | ||||
|  |     top: 60px; | ||||
|  |     right: 20px; | ||||
|  |     z-index: 0; | ||||
|  |   } | ||||
|  |   .doctor-schedule-content { | ||||
|  |     background: #f7f9fd; | ||||
|  |     padding: 10px 0; | ||||
|  |     .weeks { | ||||
|  |       display: flex; | ||||
|  |       padding-bottom: 10px; | ||||
|  |       border-bottom: 1px solid #e2ebf9; | ||||
|  |       color: #88939d; | ||||
|  |       .doctor-list-text,.moren { | ||||
|  |         display: flex; | ||||
|  |         justify-content: center; | ||||
|  |         align-items: center; | ||||
|  |         width: 5%; | ||||
|  |         text-align: center; | ||||
|  |       } | ||||
|  |       .date-day { | ||||
|  |         text-align: center; | ||||
|  |         margin-bottom: 10px; | ||||
|  |       } | ||||
|  |       .morning-after { | ||||
|  |         display: flex; | ||||
|  |         justify-content: space-around; | ||||
|  |       } | ||||
|  |       .date-item { | ||||
|  |         cursor: pointer; | ||||
|  |         padding: 5px 10px; | ||||
|  |         border-right: none; | ||||
|  |         list-style: none; | ||||
|  |         flex: 1; | ||||
|  |         text-align: center; | ||||
|  |         &:hover { | ||||
|  |           background: #dff0d8; | ||||
|  |         } | ||||
|  |         &:active { | ||||
|  |           background: #dff0d8; | ||||
|  |         } | ||||
|  |       } | ||||
|  |     } | ||||
|  |     .scroll-list { | ||||
|  |       height: calc(100vh - 50px - 220px); | ||||
|  |       overflow-y: auto; | ||||
|  |       overflow-x: hidden; | ||||
|  |       .doctor-name { | ||||
|  |         width: 5%; | ||||
|  |       } | ||||
|  |     } | ||||
|  |     .content { | ||||
|  |       border-bottom: 1px solid #e2ebf9; | ||||
|  |       padding: 16px 0; | ||||
|  |       display: flex; | ||||
|  |       align-items: center; | ||||
|  |       justify-content: space-between; | ||||
|  |       .doctorList { | ||||
|  |         text-align: center; | ||||
|  |         .list { | ||||
|  |           display: flex; | ||||
|  |           flex-direction: column; | ||||
|  |           align-items: center; | ||||
|  |           justify-content: center; | ||||
|  |         } | ||||
|  |         .list-img { | ||||
|  |           width: 64px; | ||||
|  |           height: 64px; | ||||
|  |           border-radius: 50%; | ||||
|  |           overflow: hidden; | ||||
|  |           img { | ||||
|  |             width: 64px; | ||||
|  |             height: 64px; | ||||
|  |           } | ||||
|  |         } | ||||
|  |       } | ||||
|  |       .surplu-num { | ||||
|  |         display: flex; | ||||
|  |         justify-content: center; | ||||
|  |         .surplu-num-morning, | ||||
|  |         .surplu-num-after { | ||||
|  |           width: 45%; | ||||
|  |           height: 60px; | ||||
|  |           position: relative; | ||||
|  |         } | ||||
|  |         .morning-top, | ||||
|  |         .after-top { | ||||
|  |           position: absolute; | ||||
|  |           width: 100%; | ||||
|  |           height: 100%; | ||||
|  |           border-radius: 3px; | ||||
|  |           display: flex; | ||||
|  |           flex-direction: column; | ||||
|  |           justify-content: center; | ||||
|  |           align-items: center; | ||||
|  |           z-index: 1; | ||||
|  |           background: #1b5bfb; | ||||
|  |           color: #fff; | ||||
|  |         } | ||||
|  |         .morning, | ||||
|  |         .after { | ||||
|  |           position: relative; | ||||
|  |           color: #88939d; | ||||
|  |           width: 100%; | ||||
|  |           height: 100%; | ||||
|  |           border-radius: 3px; | ||||
|  |           background: #fff; | ||||
|  |           overflow: hidden; | ||||
|  |           .yue-man, | ||||
|  |           .yi-yue, | ||||
|  |           .none { | ||||
|  |             width: 100%; | ||||
|  |             height: 100%; | ||||
|  |             display: flex; | ||||
|  |             flex-direction: column; | ||||
|  |             align-items: center; | ||||
|  |             justify-content: center; | ||||
|  |             font-size: 14px; | ||||
|  |             p:nth-child(1) { | ||||
|  |               color: #88939d; | ||||
|  |             } | ||||
|  |             p:nth-child(2) { | ||||
|  |               font-weight: 700; | ||||
|  |             } | ||||
|  |           } | ||||
|  |           .yue-man { | ||||
|  |             border-top: 2px solid #f40000; | ||||
|  |             p:nth-child(2) { | ||||
|  |               color: #f40000; | ||||
|  |             } | ||||
|  |           } | ||||
|  |           .yi-yue { | ||||
|  |             border-top: 2px solid #00bb61; | ||||
|  |             p:nth-child(2) { | ||||
|  |               color: #00bb61; | ||||
|  |             } | ||||
|  |           } | ||||
|  |           .none { | ||||
|  |             border-top: 2px solid #e1e1e1; | ||||
|  |           } | ||||
|  |         } | ||||
|  |         .after, | ||||
|  |         .after-top { | ||||
|  |           margin-left: 6px; | ||||
|  |         } | ||||
|  |         .morningAfterClass { | ||||
|  |           border-top: 2px solid #e1e1e1; | ||||
|  |           background: #fcfdfe; | ||||
|  |         } | ||||
|  |         .morning:hover, | ||||
|  |         .after:hover { | ||||
|  |           box-shadow: 0px 0px 16px rgba(8, 115, 215, 0.24); | ||||
|  |         } | ||||
|  |         .show-plus-one:hover { | ||||
|  |           border-top: 2px solid #1b5bfb !important; | ||||
|  |         } | ||||
|  |         .show-plus-one, | ||||
|  |         .show-plus-two { | ||||
|  |           width: 100%; | ||||
|  |           height: 100%; | ||||
|  |           background: #fff; | ||||
|  |           position: absolute; | ||||
|  |           left: 0; | ||||
|  |           top: 0; | ||||
|  |           z-index: 999; | ||||
|  |           text-align: center; | ||||
|  |         } | ||||
|  |         .show-plus-one { | ||||
|  |           font-size: 12px; | ||||
|  |           p { | ||||
|  |             height: 50%; | ||||
|  |             display: flex; | ||||
|  |             align-items: center; | ||||
|  |             justify-content: center; | ||||
|  |             color: #1e79ff; | ||||
|  |             cursor: pointer; | ||||
|  |           } | ||||
|  |           p:nth-child(1) { | ||||
|  |             border-bottom: 1px solid #f1f1f1; | ||||
|  |           } | ||||
|  |         } | ||||
|  |         .show-plus-two { | ||||
|  |           font-size: 24px; | ||||
|  |           display: flex; | ||||
|  |           align-items: center; | ||||
|  |           justify-content: center; | ||||
|  |           cursor: pointer; | ||||
|  |         } | ||||
|  |       } | ||||
|  |     } | ||||
|  |     .content:nth-last-child(1) { | ||||
|  |       border-bottom: 0; | ||||
|  |     } | ||||
|  |   } | ||||
|  | 
 | ||||
|  |   .time-range { | ||||
|  |     display: flex; | ||||
|  |     justify-content: space-around; | ||||
|  |     align-items: center; | ||||
|  |     padding: 10px 0; | ||||
|  |     span { | ||||
|  |       cursor: pointer; | ||||
|  |       padding-bottom: 5px; | ||||
|  |       border-bottom: 3px solid #fff; | ||||
|  |       &:hover { | ||||
|  |         border-bottom: 3px solid rgb(151, 198, 245); | ||||
|  |       } | ||||
|  |     } | ||||
|  |   } | ||||
|  | } | ||||
|  | .today-item { | ||||
|  |   cursor: pointer; | ||||
|  |   line-height: 45px; | ||||
|  | } | ||||
|  | .selected { | ||||
|  |   box-sizing: border-box; | ||||
|  | } | ||||
|  | .item-wrapper { | ||||
|  |   display: flex; | ||||
|  |   justify-content: center; | ||||
|  |   align-items: center; | ||||
|  |   flex-direction: column; | ||||
|  | } | ||||
|  | .doctor-list-text, | ||||
|  | .prev-btn, | ||||
|  | .next-btn { | ||||
|  |   cursor: pointer; | ||||
|  |   display: flex; | ||||
|  |   justify-content: center; | ||||
|  |   align-items: center; | ||||
|  |   .fa-icon { | ||||
|  |     font-size: 18px; | ||||
|  |   } | ||||
|  | } | ||||
|  | </style> | ||||
|  | <style lang="scss"> | ||||
|  | .surplu-num { | ||||
|  |     .el-input__inner { | ||||
|  |       text-align: center; | ||||
|  |       height: 60px; | ||||
|  |       line-height: 60px; | ||||
|  |     } | ||||
|  |   } | ||||
|  | </style> | ||||
| @ -0,0 +1,119 @@ | |||||
|  | <template> | ||||
|  |   <el-dialog class="edit-operation" :visible.sync="visible" title="修改" append-to-body @close="closeDialog"> | ||||
|  |     <el-form ref="dataForm" :model="dataForm" :rules="dataRule" label-width="auto" @keyup.enter.native="dataFormSubmitHandle()"> | ||||
|  |       <div class="head"> | ||||
|  |         <span>姓名:{{ patientInfo.patientName ? patientInfo.patientName : '-' }}</span> | ||||
|  |         <span>性别:{{ patientInfo.patientSex ? patientInfo.patientSex : '-' }}</span> | ||||
|  |         <span>年龄:{{ patientInfo.patientAge ? patientInfo.patientAge : '-' }}</span> | ||||
|  |         <span>已约日期:{{ patientInfo.appointmentDate ? patientInfo.appointmentDate : '-' }}</span> | ||||
|  |         <span>已约时间:{{ patientInfo.appointmentTime ? patientInfo.appointmentTime.substr(0, 5) : '-' }}</span> | ||||
|  |       </div> | ||||
|  |       <el-form-item label="修改时间:" prop="operaTime"> | ||||
|  |         <el-time-select | ||||
|  |           v-model="dataForm.operaTime" | ||||
|  |           placeholder="请设置时间" | ||||
|  |           :picker-options="dataForm.morOrAft === 1 ? { | ||||
|  |             start: '07:30', | ||||
|  |             step: '00:15', | ||||
|  |             end: '13:30' | ||||
|  |           } : { | ||||
|  |             start: '14:00', | ||||
|  |             step: '00:15', | ||||
|  |             end: '21:00' | ||||
|  |           }" | ||||
|  |         /> | ||||
|  |       </el-form-item> | ||||
|  |     </el-form> | ||||
|  |     <template slot="footer"> | ||||
|  |       <el-button @click="visible = false">{{ $t('cancel') }}</el-button> | ||||
|  |       <el-button type="primary" @click="dataFormSubmitHandle()">{{ $t('confirm') }}</el-button> | ||||
|  |     </template> | ||||
|  |   </el-dialog> | ||||
|  | </template> | ||||
|  | 
 | ||||
|  | <script> | ||||
|  | export default { | ||||
|  |   props: { | ||||
|  |   }, | ||||
|  |   data() { | ||||
|  |     return { | ||||
|  |       visible: false, | ||||
|  |       menuList: [], | ||||
|  |       tempMenuIdList: [], | ||||
|  |       dataForm: { | ||||
|  |         operaTime: '', | ||||
|  |         morOrAft: '' | ||||
|  |       }, | ||||
|  |       patientInfo: { | ||||
|  |         patientAge: '', | ||||
|  |         patientName: '', | ||||
|  |         patientSex: '' | ||||
|  |       } | ||||
|  |     } | ||||
|  |   }, | ||||
|  |   computed: { | ||||
|  |     dataRule() { | ||||
|  |       return { | ||||
|  |         operaTime: [ | ||||
|  |           { required: true, message: '请选择预约时间', trigger: 'blur' } | ||||
|  |         ] | ||||
|  |       } | ||||
|  |     } | ||||
|  |   }, | ||||
|  |   methods: { | ||||
|  |     init() { | ||||
|  |       this.visible = true | ||||
|  |       this.$nextTick(() => { | ||||
|  |         console.log(this.dataForm) | ||||
|  |       }) | ||||
|  |     }, | ||||
|  |     // 表单提交 | ||||
|  |     dataFormSubmitHandle() { | ||||
|  |       this.$refs.dataForm.validate((valid) => { | ||||
|  |         if (!valid) { | ||||
|  |           return false | ||||
|  |         } | ||||
|  |         this.$http.post('/num/source/updateNumSourceTime', { | ||||
|  |           appointmentTime: this.dataForm.operaTime + ':00', | ||||
|  |           numSourceId: this.patientInfo.numSourceId | ||||
|  |         }).then(({ data: res }) => { | ||||
|  |           if (res.code !== 0) { | ||||
|  |             return this.$message.error(res.msg) | ||||
|  |           } | ||||
|  |           this.$message({ | ||||
|  |             message: this.$t('prompt.success'), | ||||
|  |             type: 'success', | ||||
|  |             duration: 500, | ||||
|  |             onClose: () => { | ||||
|  |               this.visible = false | ||||
|  |               this.$emit('getPatientList') | ||||
|  |             } | ||||
|  |           }) | ||||
|  |         }).catch(() => {}) | ||||
|  |       }) | ||||
|  |     }, | ||||
|  |     closeDialog() { | ||||
|  |       this.$emit('closeDialog') | ||||
|  |     } | ||||
|  |   } | ||||
|  | } | ||||
|  | </script> | ||||
|  | <style lang="scss"> | ||||
|  | .edit-operation{ | ||||
|  |   .head { | ||||
|  |     font-size: 14px; | ||||
|  |     padding: 10px; | ||||
|  |     margin: 4px 0 30px 0; | ||||
|  |     background: #eff4ff; | ||||
|  |     border: 1px solid #c5d5fe; | ||||
|  |     display: flex; | ||||
|  |     justify-content: space-between; | ||||
|  |   } | ||||
|  |   .el-dialog__header { | ||||
|  |     margin-bottom:12px | ||||
|  |   } | ||||
|  |   .el-date-editor.el-input, .el-date-editor.el-input__inner { | ||||
|  |     width: 100%; | ||||
|  |   } | ||||
|  | } | ||||
|  | </style> | ||||
| @ -0,0 +1,62 @@ | |||||
|  | <template> | ||||
|  |   <div class="schedule-date"> | ||||
|  |     <div class="tab-content"> | ||||
|  |       <el-tabs> | ||||
|  |         <el-tab-pane> | ||||
|  |           <!-- <svg-icon icon-class="icon-no-scheduled" style="font-size:13px;" /> --> | ||||
|  |           <span slot="label" class="no-schedule-tab"><i class="el-icon-scissors" /> 手术医生日程</span> | ||||
|  |           <!-- 号源标识 1:手术号源 2:检查号源 --> | ||||
|  |           <doctorSchedule title="newAddNUm" /> | ||||
|  |         </el-tab-pane> | ||||
|  |         <!-- <el-tab-pane label="待审核"> | ||||
|  |           <span slot="label" class="no-schedule-tab"><i class="el-icon-reading" /> 检查医生日程</span>> | ||||
|  |           <doctorSchedule :source-flag="2" title="newAddNUm" /> | ||||
|  |         </el-tab-pane> --> | ||||
|  |       </el-tabs> | ||||
|  |     </div> | ||||
|  |   </div> | ||||
|  | </template> | ||||
|  | 
 | ||||
|  | <script> | ||||
|  | /* eslint-disable */ | ||||
|  | import DoctorSchedule from "@/page-subspecialty/views/modules/nurseManagement/schedule/doctor-schedule.vue"; | ||||
|  | 
 | ||||
|  | export default { | ||||
|  |   components: { | ||||
|  |     DoctorSchedule | ||||
|  |   }, | ||||
|  |   data() { | ||||
|  |     return { | ||||
|  |     }; | ||||
|  |   }, | ||||
|  | 
 | ||||
|  |   created() { | ||||
|  |   }, | ||||
|  | 
 | ||||
|  |   methods: { | ||||
|  |   } | ||||
|  | }; | ||||
|  | </script> | ||||
|  | 
 | ||||
|  | <style lang="scss" scoped> | ||||
|  | .schedule-date { | ||||
|  |   font-size: 14px; | ||||
|  |   .tab-content { | ||||
|  |     background: #fff; | ||||
|  | 
 | ||||
|  |   } | ||||
|  |   | ||||
|  | } | ||||
|  | 
 | ||||
|  | </style> | ||||
|  | <style lang="scss"> | ||||
|  | .schedule-date { | ||||
|  |   .el-tabs__nav-wrap::after { | ||||
|  |     height: 0; | ||||
|  |   } | ||||
|  |   .el-tabs__header { | ||||
|  |     padding: 0 10px; | ||||
|  |     margin: 0; | ||||
|  |   } | ||||
|  | } | ||||
|  | </style> | ||||
| @ -0,0 +1,413 @@ | |||||
|  | <template> | ||||
|  |   <el-dialog top="30px" class="number-manage" append-to-body :visible.sync="visible" width="70%" :title="title" @close="closeDialog"> | ||||
|  |     <div class="number-manage-head"> | ||||
|  |       <div class="head-content"> | ||||
|  |         <span class="head-content-left"> | ||||
|  |           <span>医生姓名:</span> | ||||
|  |           <span>{{ doctorName }}</span> | ||||
|  |         </span> | ||||
|  |         <span class="head-content-right"> | ||||
|  |           <span>排台日期:</span> | ||||
|  |           <span>{{ dataForm.operaDate }}</span> | ||||
|  |           <span>{{ weekName }}</span> | ||||
|  |           <span>{{ morOrAft===1 ? '上午' : '下午' }}</span> | ||||
|  |         </span> | ||||
|  |       </div> | ||||
|  |     </div> | ||||
|  |     <el-form v-if="title !=='排台详情'" ref="dataForm" :model="dataForm" :rules="dataRule" class="form-content"> | ||||
|  |       <div class="form-one"> | ||||
|  |         <el-form-item label="总数:" prop="total" label-width="70px" class="total-form"> | ||||
|  |           <el-input-number | ||||
|  |             v-model="dataForm.total" | ||||
|  |             controls-position="right" | ||||
|  |             :min="1" | ||||
|  |           /> | ||||
|  |         </el-form-item> | ||||
|  |       </div> | ||||
|  |       <div class="button" @click="creatNumberClick">生成预约号</div> | ||||
|  |     </el-form> | ||||
|  |     <div class="number-list"> | ||||
|  |       <el-table | ||||
|  |         ref="multipleTable" | ||||
|  |         class="number-table" | ||||
|  |         :highlight-current-row="title !=='排台管理' ? true : false" | ||||
|  |         :data="dataList" | ||||
|  |         tooltip-effect="dark" | ||||
|  |         style="width: 100%" | ||||
|  |         :height="title==='排台管理' ? '300px' : '450px'" | ||||
|  |         :row-class-name="tableRowClassName" | ||||
|  |         @row-click="rowClick" | ||||
|  |         @selection-change="handleSelectionChange" | ||||
|  |       > | ||||
|  |         <el-table-column v-if="title !=='排台详情'" type="selection" width="55" /> | ||||
|  |         <el-table-column type="index" label="序号" /> | ||||
|  |         <el-table-column prop="appointmentDate" label="预约日期" align="center" /> | ||||
|  |         <el-table-column label="时间段" align="center"> | ||||
|  |           <template slot-scope="scope">{{ scope.row.morOrAft===1 ? '上午' : '下午' }}</template> | ||||
|  |         </el-table-column> | ||||
|  |         <el-table-column label="预约时间" align="center"> | ||||
|  |           <template slot-scope="scope">{{ scope.row.appointmentTime ? scope.row.appointmentTime.substr(0, 5) : '-' }}</template> | ||||
|  |         </el-table-column> | ||||
|  |         <template v-if="title=='排台详情'"> | ||||
|  |           <el-table-column | ||||
|  |             prop="patientName" | ||||
|  |             label="姓名" | ||||
|  |           > | ||||
|  |             <template slot-scope="scope">{{ scope.row.patientName ? scope.row.patientName : '-' }}</template> | ||||
|  |           </el-table-column> | ||||
|  |           <el-table-column | ||||
|  |             prop="patientSex" | ||||
|  |             label="性别" | ||||
|  |           > | ||||
|  |             <template slot-scope="scope">{{ scope.row.patientSex ? scope.row.patientSex : '-' }}</template> | ||||
|  |           </el-table-column> | ||||
|  |           <el-table-column | ||||
|  |             prop="patientAge" | ||||
|  |             label="年龄" | ||||
|  |           > | ||||
|  |             <template slot-scope="scope">{{ scope.row.patientSex ? scope.row.patientAge : '-' }}</template> | ||||
|  |           </el-table-column> | ||||
|  |         </template> | ||||
|  |         <!-- 状态 0:可用,1:已预约,2:已过时 --> | ||||
|  |         <el-table-column label="号源状态" prop="status" header-align="center" align="center"> | ||||
|  |           <template slot-scope="scope"> | ||||
|  |             <div v-show="scope.row.status == 0"> | ||||
|  |               <span class="circle-status circle-blue" /> | ||||
|  |               <span>可用</span> | ||||
|  |             </div> | ||||
|  |             <div v-show="scope.row.status == 1"> | ||||
|  |               <span class="circle-status circle-green" /> | ||||
|  |               <span>已预约</span> | ||||
|  |             </div> | ||||
|  |             <div v-show="scope.row.status == 2"> | ||||
|  |               <span class="circle-status circle-red" /> | ||||
|  |               <span>已过时</span> | ||||
|  |             </div> | ||||
|  |           </template> | ||||
|  |         </el-table-column> | ||||
|  | 
 | ||||
|  |         <el-table-column prop="operation" label="操作" header-align="center" align="center"> | ||||
|  |           <template slot-scope="scope"> | ||||
|  |             <!-- 号源状态 0 可用 1 已预约 2 过时 --> | ||||
|  |             <span | ||||
|  |               v-if="title==='排台详情' && scope.row.status=== 1 && new Date(scope.row.appointmentDate + ' ' + (morOrAft=== 1 ? '12:00:00' : '20:00:00') ) > new Date()" | ||||
|  |               style="color: #1890ff; padding-right: 8px" | ||||
|  |               class="operation-details" | ||||
|  |               @click="editHandle(scope.row,'修改')" | ||||
|  |             >修改</span> | ||||
|  |             <span | ||||
|  |               v-if="title==='排台管理' && scope.row.status ===0 && new Date(scope.row.appointmentDate + ' ' + (morOrAft=== 1 ? '12:00:00' : '20:00:00') ) > new Date()" | ||||
|  |               style="color: #fd4d4f; padding-right: 8px" | ||||
|  |               class="operation-details" | ||||
|  |               @click="deleteHandle(scope.row)" | ||||
|  |             >删除</span> | ||||
|  |             <span | ||||
|  |               v-if="(title==='排台管理' && scope.row.status ===1) || | ||||
|  |                 (title==='排台详情' && scope.row.status ===0) || | ||||
|  |                 scope.row.status ===2 || | ||||
|  |                 new Date(scope.row.appointmentDate + ' ' + (morOrAft=== 1 ? '12:00:00' : '20:00:00') ) < new Date()" | ||||
|  |             >无</span> | ||||
|  |           </template> | ||||
|  |         </el-table-column> | ||||
|  |       </el-table> | ||||
|  |     </div> | ||||
|  |     <template v-if="title !=='排台详情'" slot="footer"> | ||||
|  |       <div> | ||||
|  |         <el-button v-if="title==='排台管理' && dataList.length>0" type="danger" plain @click="batchDeleteClick">批量删除</el-button> | ||||
|  |       </div> | ||||
|  |       <div> | ||||
|  |         <el-button @click="visible = false">关闭</el-button> | ||||
|  |       </div> | ||||
|  |     </template> | ||||
|  |     <editOperation | ||||
|  |       v-if="editOperationVisible" | ||||
|  |       ref="editOperationRef" | ||||
|  |       @closeDialog="editOperationVisible=false" | ||||
|  |       @getPatientList="getPatientList" | ||||
|  |     /> | ||||
|  |   </el-dialog> | ||||
|  | </template> | ||||
|  | 
 | ||||
|  | <script> | ||||
|  | import EditOperation from '@/page-subspecialty/views/modules/nurseManagement/schedule/edit-operation.vue' | ||||
|  | 
 | ||||
|  | export default { | ||||
|  |   components: { EditOperation }, | ||||
|  |   props: { | ||||
|  |     patientTypeList: { | ||||
|  |       type: Array, | ||||
|  |       default: () => [] | ||||
|  |     } | ||||
|  |   }, | ||||
|  |   data() { | ||||
|  |     return { | ||||
|  |       visible: false, | ||||
|  |       morOrAft: '', // 上下午 | ||||
|  |       weekName: '', // 星期几 | ||||
|  |       title: '', | ||||
|  |       doctorName: '', | ||||
|  |       dataForm: { | ||||
|  |         operaDate: '', // 预约日期(年月日) | ||||
|  |         doctorCode: '', // 医生工号 | ||||
|  |         morOrAft: '', | ||||
|  |         total: '' // 总数 | ||||
|  |       }, | ||||
|  |       dataList: [], | ||||
|  |       currentTableList: [], | ||||
|  |       currentTableId: [], | ||||
|  |       rowListObj: {}, | ||||
|  |       editOperationVisible: false | ||||
|  |     } | ||||
|  |   }, | ||||
|  |   computed: { | ||||
|  |     dataRule() { | ||||
|  |       return { | ||||
|  |         startNum: [ | ||||
|  |           { required: true, message: '请输入起始号', trigger: 'change' } | ||||
|  |         ], | ||||
|  |         total: [ | ||||
|  |           { required: true, message: '请输入总数', trigger: 'change' } | ||||
|  |         ], | ||||
|  |         startTime: [ | ||||
|  |           { required: true, message: '请选择开始时间', trigger: 'change' } | ||||
|  |         ], | ||||
|  |         interval: [ | ||||
|  |           { required: true, message: '请输入间隔时间', trigger: 'change' } | ||||
|  |         ] | ||||
|  |       } | ||||
|  |     } | ||||
|  |   }, | ||||
|  |   methods: { | ||||
|  |     init() { | ||||
|  |       this.visible = true | ||||
|  |       this.$nextTick(() => { | ||||
|  |         this.$refs.dataForm ? this.$refs.dataForm.resetFields() : '' // 重置表单 | ||||
|  |         this.dataForm.morOrAft = this.morOrAft | ||||
|  |         this.title === '排台详情' ? this.getPatientList() : this.getSourceList() | ||||
|  |       }) | ||||
|  |     }, | ||||
|  |     // 获取预约患者详情 | ||||
|  |     async getPatientList() { | ||||
|  |       const { data: res } = await this.$http.get('/opera/schedule/getScheduleInfo', { | ||||
|  |         params: { | ||||
|  |           doctorCode: this.dataForm.doctorCode, // 医生工号 | ||||
|  |           morOrAft: this.morOrAft, // morOrAft --1:上午,2:下午 | ||||
|  |           searchDate: this.dataForm.operaDate // 搜索日期 | ||||
|  |         } | ||||
|  |       }) | ||||
|  |       if (res.code === 0) { | ||||
|  |         this.dataList = res.data | ||||
|  |       } else { | ||||
|  |         this.$message.error(res.msg) | ||||
|  |       } | ||||
|  |     }, | ||||
|  |     // 生成预约号 | ||||
|  |     async creatNumberClick() { | ||||
|  |       const time = this.morOrAft === 1 ? '12:00:00' : '20:00:00' | ||||
|  |       const operaDateTime = this.dataForm.operaDate + ' ' + time | ||||
|  |       // 时间 | ||||
|  |       const operaTime = new Date(operaDateTime) | ||||
|  |       // 现在时间 | ||||
|  |       const nowTime = new Date() | ||||
|  |       if (operaTime > nowTime) { | ||||
|  |         const { data: res } = await this.$http.post('/num/source/createNumSource', this.dataForm) | ||||
|  |         if (res.code === 0) { | ||||
|  |           this.getSourceList() | ||||
|  |         } else { | ||||
|  |           this.$message.error(res.msg) | ||||
|  |         } | ||||
|  |       } else { | ||||
|  |         this.$message({ | ||||
|  |           message: '当前日期已过时,不可生成号源', | ||||
|  |           type: 'warning' | ||||
|  |         }) | ||||
|  |       } | ||||
|  |     }, | ||||
|  |     // 获取排台管理列表 | ||||
|  |     async getSourceList() { | ||||
|  |       const { data: res } = await this.$http.get('/num/source/getList', { | ||||
|  |         params: { | ||||
|  |           doctorCode: this.dataForm.doctorCode, // 医生工号 | ||||
|  |           morOrAft: this.morOrAft, // morOrAft --1:上午,2:下午 | ||||
|  |           searchDate: this.dataForm.operaDate // 搜索日期 | ||||
|  |         } | ||||
|  |       }) | ||||
|  |       if (res.code === 0) { | ||||
|  |         this.dataList = res.data | ||||
|  |         // 选中哪一行 | ||||
|  |         this.dataList.forEach((item, index) => { | ||||
|  |           if (this.rowListObj.id === item.id) { | ||||
|  |             this.rowListObj.operaTime && this.$refs.multipleTable ? this.$refs.multipleTable.setCurrentRow(this.dataList[index]) : '' | ||||
|  |           } | ||||
|  |         }) | ||||
|  |       } else { | ||||
|  |         this.$message.error(res.msg) | ||||
|  |       } | ||||
|  |     }, | ||||
|  |     // 表格批量选择 | ||||
|  |     handleSelectionChange(val) { | ||||
|  |       // console.log(val) | ||||
|  |       this.currentTableList = val | ||||
|  |       this.currentTableId = [] | ||||
|  |       this.currentTableList.forEach(item => { | ||||
|  |         this.currentTableId.push(item.id) | ||||
|  |       }) | ||||
|  |       console.log(this.currentTableId) | ||||
|  |     }, | ||||
|  |     // 点击行 | ||||
|  |     rowClick(val) { | ||||
|  |       console.log('点击rowClick', val) | ||||
|  |       this.rowListObj = val | ||||
|  |     }, | ||||
|  |     // 把每一行的索引放进row | ||||
|  |     tableRowClassName({ row, rowIndex }) { | ||||
|  |       row.index = rowIndex | ||||
|  |     }, | ||||
|  |     // 修改 | ||||
|  |     editHandle(scopeRow) { | ||||
|  |       this.editOperationVisible = true | ||||
|  |       this.$nextTick(() => { | ||||
|  |         this.$refs.editOperationRef.dataForm.operaTime = scopeRow.appointmentTime.substr(0, 5) | ||||
|  |         this.$refs.editOperationRef.dataForm.morOrAft = scopeRow.morOrAft | ||||
|  |         this.$refs.editOperationRef.patientInfo = scopeRow | ||||
|  | 
 | ||||
|  |         this.$refs.editOperationRef.init() | ||||
|  |       }) | ||||
|  |     }, | ||||
|  |     // 删除 | ||||
|  |     async deleteHandle(scopeRow) { | ||||
|  |       this.deleteClickFun([scopeRow.id]) | ||||
|  |     }, | ||||
|  |     // 批量删除 | ||||
|  |     batchDeleteClick() { | ||||
|  |       if (this.currentTableId.length > 0) { | ||||
|  |         this.deleteClickFun(this.currentTableId) | ||||
|  |       } else { | ||||
|  |         this.$message({ | ||||
|  |           message: '请选择删除项', | ||||
|  |           type: 'warning' | ||||
|  |         }) | ||||
|  |       } | ||||
|  |     }, | ||||
|  |     // 删除--保存过的预约号 | ||||
|  |     deleteClickFun(id) { | ||||
|  |       this.$confirmFun('您确定要删除吗?').then(async() => { | ||||
|  |         const { data: res } = await this.$http({ | ||||
|  |           url: '/num/source', | ||||
|  |           method: 'delete', | ||||
|  |           data: id | ||||
|  |         }) | ||||
|  |         if (res.code === 0) { | ||||
|  |           this.$message({ | ||||
|  |             message: '删除成功', | ||||
|  |             type: 'success' | ||||
|  |           }) | ||||
|  |           this.getSourceList() | ||||
|  |         } else { | ||||
|  |           this.$message.error(res.msg) | ||||
|  |         } | ||||
|  |       }) | ||||
|  |     }, | ||||
|  |     // 关闭弹框 | ||||
|  |     closeDialog() { | ||||
|  |       this.$emit('closeDialog') | ||||
|  |       this.$emit('getScheduleList') | ||||
|  |     } | ||||
|  |   } | ||||
|  | } | ||||
|  | </script> | ||||
|  | <style lang="scss" scoped> | ||||
|  | .number-manage { | ||||
|  |   .number-manage-head { | ||||
|  |     border-bottom: 1px dashed #d6d6d6; | ||||
|  |   } | ||||
|  |   .head-content { | ||||
|  |     font-size: 14px; | ||||
|  |     padding: 10px; | ||||
|  |     margin: 4px 0 12px 0; | ||||
|  |     background: #eff4ff; | ||||
|  |     border: 1px solid #c5d5fe; | ||||
|  |     display: flex; | ||||
|  |     justify-content: space-between; | ||||
|  |     .head-content-left, | ||||
|  |     .head-content-right { | ||||
|  |       span { | ||||
|  |         padding-right: 6px; | ||||
|  |       } | ||||
|  |       span:nth-child(1) { | ||||
|  |         font-weight: 700; | ||||
|  |       } | ||||
|  |     } | ||||
|  |   } | ||||
|  |   .form-two { | ||||
|  |     margin-left: 16px; | ||||
|  |   } | ||||
|  |   .operation-details { | ||||
|  |     cursor: pointer; | ||||
|  |   } | ||||
|  | } | ||||
|  | </style> | ||||
|  | <style lang="scss"> | ||||
|  | .number-manage { | ||||
|  |   .el-input { | ||||
|  |     width: auto; | ||||
|  |   } | ||||
|  |   .el-form-item { | ||||
|  |     margin-bottom: 12px; | ||||
|  |   } | ||||
|  |   .el-form-item__content { | ||||
|  |     display: flex; | ||||
|  |   } | ||||
|  |   .form-content { | ||||
|  |     display: flex; | ||||
|  |     align-items: center; | ||||
|  |     justify-content: space-between; | ||||
|  |     padding: 10px 0; | ||||
|  |     border-bottom: 1px dashed #d6d6d6; | ||||
|  |   } | ||||
|  |   .total-form, | ||||
|  |   .time-form { | ||||
|  |     margin-bottom: 0; | ||||
|  |   } | ||||
|  |   .button { | ||||
|  |     border: 1px solid #1b6de6; | ||||
|  |     padding: 10px 10px; | ||||
|  |     color: #1b6de6; | ||||
|  |     cursor: pointer; | ||||
|  |     width: 150px; | ||||
|  |     text-align: center; | ||||
|  |     border-radius: 6px; | ||||
|  |   } | ||||
|  |   .button:hover { | ||||
|  |     background: #1b6de6; | ||||
|  |     color: #fff; | ||||
|  |   } | ||||
|  |   .number-table { | ||||
|  |     margin-top: 8px; | ||||
|  |   } | ||||
|  |   .el-table-column--selection .cell { | ||||
|  |     padding-left: 10px; | ||||
|  |   } | ||||
|  |   .el-input-group { | ||||
|  |     width: 80%; | ||||
|  |   } | ||||
|  |   .el-date-editor.el-input, .el-date-editor.el-input__inner { | ||||
|  |     // width: 80%; | ||||
|  |   } | ||||
|  | 
 | ||||
|  |   .el-table__body tr.current-row>td.el-table__cell { | ||||
|  |     color: #fff; | ||||
|  |     background: #1b6de6; | ||||
|  |   } | ||||
|  |   .el-table td.el-table__cell, .el-table th.el-table__cell.is-leaf { | ||||
|  |     border: none; | ||||
|  |   } | ||||
|  |   .el-dialog__footer { | ||||
|  |     display: flex; | ||||
|  |     justify-content: space-between; | ||||
|  |     align-items: center; | ||||
|  |     padding-bottom: 10px; | ||||
|  |   } | ||||
|  | 
 | ||||
|  | } | ||||
|  | </style> | ||||
| @ -0,0 +1,154 @@ | |||||
|  | <template> | ||||
|  |   <el-dialog append-to-body class="operation-detail" :visible.sync="visible" width="50%" :title="title"> | ||||
|  |     <div class="operation-detail-head"> | ||||
|  |       <div class="head-content"> | ||||
|  |         <span class="head-content-left"> | ||||
|  |           <span>医生姓名:</span> | ||||
|  |           <span>刘灿</span> | ||||
|  |         </span> | ||||
|  |         <span class="head-content-right"> | ||||
|  |           <span>预约日期:</span> | ||||
|  |           <span>2022-12-24</span> | ||||
|  |           <span>周二</span> | ||||
|  |           <span>上午</span> | ||||
|  |         </span> | ||||
|  |       </div> | ||||
|  | 
 | ||||
|  |     </div> | ||||
|  |     <div class="number-list"> | ||||
|  |       <el-table | ||||
|  |         ref="multipleTable" | ||||
|  |         class="number-table" | ||||
|  |         highlight-current-row | ||||
|  |         :data="dataList" | ||||
|  |         tooltip-effect="dark" | ||||
|  |         style="width: 100%" | ||||
|  |         @current-change="handleCurrentChange" | ||||
|  |       > | ||||
|  |         <el-table-column | ||||
|  |           prop="name" | ||||
|  |           label="预约号" | ||||
|  |         /> | ||||
|  | 
 | ||||
|  |         <el-table-column | ||||
|  |           label="预约时间" | ||||
|  |         > | ||||
|  |           <template slot-scope="scope">123</template> | ||||
|  |         </el-table-column> | ||||
|  |         <template v-if="title=='预约详情'"> | ||||
|  |           <el-table-column | ||||
|  |             prop="name" | ||||
|  |             label="姓名" | ||||
|  |           /> | ||||
|  |           <el-table-column | ||||
|  |             prop="name" | ||||
|  |             label="性别" | ||||
|  |           /> | ||||
|  |           <el-table-column | ||||
|  |             prop="name" | ||||
|  |             label="年龄" | ||||
|  |           /> | ||||
|  |         </template> | ||||
|  | 
 | ||||
|  |         <el-table-column v-if="title=='选择时间'" label="手术状态" prop="status" header-align="center" align="center"> | ||||
|  |           <template slot-scope="scope"> | ||||
|  |             <div v-show="scope.row.status == 0"> | ||||
|  |               <span class="circle-status circle-green" /> | ||||
|  |               <span>已预约</span> | ||||
|  |             </div> | ||||
|  |             <div v-show="scope.row.status == 1"> | ||||
|  |               <span class="circle-status circle-blue" /> | ||||
|  |               <span>可用</span> | ||||
|  |             </div> | ||||
|  |           </template> | ||||
|  |         </el-table-column> | ||||
|  |       </el-table> | ||||
|  |     </div> | ||||
|  |     <template v-if="title==='选择时间'" slot="footer"> | ||||
|  |       <el-button @click="visible = false">{{ $t('cancel') }}</el-button> | ||||
|  |       <el-button type="primary" @click="dataFormSubmitHandle()">确定</el-button> | ||||
|  |     </template> | ||||
|  |   </el-dialog> | ||||
|  | </template> | ||||
|  | 
 | ||||
|  | <script> | ||||
|  | import debounce from 'lodash/debounce' | ||||
|  | export default { | ||||
|  |   props: { | ||||
|  |   }, | ||||
|  |   data() { | ||||
|  |     return { | ||||
|  |       visible: false, | ||||
|  |       title: '', | ||||
|  |       dataList: [], | ||||
|  |       currentTableList: [] | ||||
|  |     } | ||||
|  |   }, | ||||
|  |   computed: { | ||||
|  |     dataRule() { | ||||
|  |       return { | ||||
|  |       } | ||||
|  |     } | ||||
|  |   }, | ||||
|  |   methods: { | ||||
|  |     init() { | ||||
|  |       this.visible = true | ||||
|  |       this.$nextTick(() => { | ||||
|  |       }) | ||||
|  |     }, | ||||
|  |     handleCurrentChange() {}, | ||||
|  |     // 获取信息 | ||||
|  |     getInfo() { | ||||
|  |       this.$http.get(`/patient/manage/${this.params.patientCentreId}/${this.params.patientIdNumber}`).then(({ data: res }) => { | ||||
|  |         if (res.code !== 0) { | ||||
|  |           return this.$message.error(res.msg) | ||||
|  |         } | ||||
|  |         this.dataForm = { | ||||
|  |           ...this.dataForm, | ||||
|  |           ...res.data | ||||
|  |         } | ||||
|  |       }).catch(() => { }) | ||||
|  |     } | ||||
|  |   } | ||||
|  | } | ||||
|  | </script> | ||||
|  | <style lang="scss" scoped> | ||||
|  | .operation-detail { | ||||
|  |   .operation-detail-head { | ||||
|  |   } | ||||
|  |   .head-content { | ||||
|  |     font-size: 14px; | ||||
|  |     padding: 10px; | ||||
|  |     margin: 4px 0 12px 0; | ||||
|  |     background: #eff4ff; | ||||
|  |     border: 1px solid #c5d5fe; | ||||
|  |     display: flex; | ||||
|  |     justify-content: space-between; | ||||
|  |     .head-content-left,.head-content-right { | ||||
|  |       span:nth-child(1) { | ||||
|  |         font-weight: 700; | ||||
|  |       } | ||||
|  |     } | ||||
|  |     .head-content-right { | ||||
|  |       span:nth-child(3),span:nth-child(4) { | ||||
|  |         padding-left: 10px; | ||||
|  |       } | ||||
|  |     } | ||||
|  |   } | ||||
|  | } | ||||
|  | </style> | ||||
|  | <style lang="scss"> | ||||
|  | .operation-detail { | ||||
|  | 
 | ||||
|  |   .el-table-column--selection .cell { | ||||
|  |     padding-left: 10px; | ||||
|  |   } | ||||
|  |   .el-table__body tr.current-row>td.el-table__cell { | ||||
|  |     color: #fff; | ||||
|  |     background: #1e79ff; | ||||
|  |   } | ||||
|  |   .el-table td.el-table__cell, .el-table th.el-table__cell.is-leaf { | ||||
|  |     border: none; | ||||
|  |   } | ||||
|  | } | ||||
|  | </style> | ||||
| @ -0,0 +1,266 @@ | |||||
|  | <template> | ||||
|  |   <el-dialog top="30px" class="setoperaTime" append-to-body :visible.sync="visible" width="50%" :title="title" @close="closeDialog"> | ||||
|  | 
 | ||||
|  |     <div class="flex-6"> | ||||
|  |       <div class="setoperaTime-left"> | ||||
|  |         <el-table | ||||
|  |           ref="multipleTable" | ||||
|  |           class="number-table" | ||||
|  |           :highlight-current-row="true" | ||||
|  |           :data="dataList" | ||||
|  |           tooltip-effect="dark" | ||||
|  |           style="width: 100%" | ||||
|  |           :height="'450px'" | ||||
|  |         > | ||||
|  |           <el-table-column type="index" label="序号" align="center" /> | ||||
|  |           <el-table-column label="已约患者" align="center"> | ||||
|  |             <template slot-scope="scope">{{ scope.row.patientName }}</template> | ||||
|  |           </el-table-column> | ||||
|  |           <el-table-column label="预约时间" align="center"> | ||||
|  |             <template slot-scope="scope"> | ||||
|  |               {{ scope.row.operaTime ? scope.row.operaTime.substr(0, 5) : '-' }} | ||||
|  |             </template> | ||||
|  |           </el-table-column> | ||||
|  |         </el-table> | ||||
|  |       </div> | ||||
|  |       <div class="setoperaTime-right"> | ||||
|  |         <div class="head-content"> | ||||
|  |           <div class="head-content-left"> | ||||
|  |             <span>医生姓名:</span> | ||||
|  |             <span>{{ dataForm.mainDoctorName }}</span> | ||||
|  |           </div> | ||||
|  |           <div class="head-content-right"> | ||||
|  |             <span>排台日期:</span> | ||||
|  |             <span>{{ dataForm.operaDate }}</span> | ||||
|  |             <span>{{ weekName }}</span> | ||||
|  |             <span>{{ morOrAft===1 ? '上午' : '下午' }}</span> | ||||
|  |           </div> | ||||
|  |         </div> | ||||
|  |         <div class="margin-top-20"> | ||||
|  |           <p class="margin-bottom-10">设置手术时间:</p> | ||||
|  |           <el-time-select | ||||
|  |             v-model="dataForm.operaTime" | ||||
|  |             placeholder="请设置时间" | ||||
|  |             :picker-options="morOrAft === 1 ? { | ||||
|  |               start: '07:30', | ||||
|  |               step: '00:15', | ||||
|  |               end: '13:30' | ||||
|  |             } : { | ||||
|  |               start: '14:00', | ||||
|  |               step: '00:15', | ||||
|  |               end: '21:00' | ||||
|  |             }" | ||||
|  |           /> | ||||
|  |         </div> | ||||
|  |       </div> | ||||
|  |     </div> | ||||
|  |     <template slot="footer"> | ||||
|  |       <div> | ||||
|  |         <el-button @click="visible = false">关闭</el-button> | ||||
|  |         <el-button type="primary" @click="timeSureClick()">确定</el-button> | ||||
|  |       </div> | ||||
|  |     </template> | ||||
|  |     <editOperation | ||||
|  |       v-if="editOperationVisible" | ||||
|  |       ref="editOperationRef" | ||||
|  |       @closeDialog="editOperationVisible=false" | ||||
|  |       @refreshDataList="getSourceList()" | ||||
|  |       @editSourceListParams="editSourceListParams" | ||||
|  |     /> | ||||
|  |   </el-dialog> | ||||
|  | </template> | ||||
|  | 
 | ||||
|  | <script> | ||||
|  | import viewModule from '@/mixins/view-module' | ||||
|  | import EditOperation from '@/page-subspecialty/views/modules/nurseManagement/schedule/edit-operation.vue' | ||||
|  | export default { | ||||
|  |   components: { EditOperation }, | ||||
|  |   mixins: [viewModule], | ||||
|  |   props: { | ||||
|  |     patientTypeList: { | ||||
|  |       type: Array, | ||||
|  |       default: () => [] | ||||
|  |     } | ||||
|  |   }, | ||||
|  |   data() { | ||||
|  |     return { | ||||
|  |       visible: false, | ||||
|  |       morOrAft: '', // 上下午 | ||||
|  |       weekName: '', // 星期几 | ||||
|  |       title: '', | ||||
|  |       dataForm: { | ||||
|  |         operaDate: '', // 预约日期(年月日) | ||||
|  |         operaTime: '', | ||||
|  |         mainDoctorCode: '', // 医生工号 | ||||
|  |         morOrAft: '', | ||||
|  |         total: '' // 总数 | ||||
|  |       }, | ||||
|  |       dataList: [], | ||||
|  |       rowListObj: {}, | ||||
|  |       currentTableList: [], | ||||
|  |       currentTableId: [], | ||||
|  |       saveButtonShow: false, | ||||
|  |       editOperationVisible: false | ||||
|  |     } | ||||
|  |   }, | ||||
|  |   computed: { | ||||
|  |     dataRule() { | ||||
|  |       return { | ||||
|  |         startTime: [ | ||||
|  |           { required: true, message: '请选择开始时间', trigger: 'change' } | ||||
|  |         ] | ||||
|  |       } | ||||
|  |     } | ||||
|  |   }, | ||||
|  |   methods: { | ||||
|  |     init() { | ||||
|  |       this.visible = true | ||||
|  |       this.$nextTick(() => { | ||||
|  |         this.saveButtonShow = false | ||||
|  |         this.$refs.dataForm ? this.$refs.dataForm.resetFields() : '' // 重置表单 | ||||
|  |         this.dataForm.morOrAft = this.morOrAft | ||||
|  |         this.getPatientList() | ||||
|  |       }) | ||||
|  |     }, | ||||
|  |     // 获取预约患者详情 | ||||
|  |     async getPatientList() { | ||||
|  |       const { data: res } = await this.$http.get('/opera/getOperaPatientList', { | ||||
|  |         params: { | ||||
|  |           doctorCode: this.dataForm.mainDoctorCode, // 医生工号 | ||||
|  |           morOrAft: this.morOrAft, // morOrAft --1:上午,2:下午 | ||||
|  |           searchDate: this.dataForm.operaDate // 搜索日期 | ||||
|  |         } | ||||
|  |       }) | ||||
|  |       if (res.code === 0) { | ||||
|  |         this.dataList = res.data | ||||
|  |       } else { | ||||
|  |         this.$message.error(res.msg) | ||||
|  |       } | ||||
|  |     }, | ||||
|  |     // 设置时间确认 | ||||
|  |     timeSureClick() { | ||||
|  |       const operaDateTime = this.dataForm.operaDate + ' ' + this.dataForm.operaTime + ':00' | ||||
|  |       // 时间 | ||||
|  |       const operaTime = new Date(operaDateTime) | ||||
|  |       // 现在时间 | ||||
|  |       const nowTime = new Date() | ||||
|  |       if (operaTime > nowTime) { | ||||
|  |         const index = this.dataList.findIndex(item => item.operaTime.substr(0, 5) === this.dataForm.operaTime) | ||||
|  |         if (index === -1) { | ||||
|  |           this.$emit('rowList', this.dataForm) | ||||
|  |           this.visible = false | ||||
|  |         } else { | ||||
|  |           this.$message({ | ||||
|  |             message: '有时间重复,请重新设置', | ||||
|  |             type: 'warning' | ||||
|  |           }) | ||||
|  |         } | ||||
|  |       } else { | ||||
|  |         this.$message({ | ||||
|  |           message: '时间已过时,请从新设置', | ||||
|  |           type: 'warning' | ||||
|  |         }) | ||||
|  |       } | ||||
|  |     }, | ||||
|  |     // 关闭弹框 | ||||
|  |     closeDialog() { | ||||
|  |       this.$emit('closeDialog') | ||||
|  |       this.$emit('getScheduleList') | ||||
|  |     } | ||||
|  |   } | ||||
|  | } | ||||
|  | </script> | ||||
|  | <style lang="scss" scoped> | ||||
|  | .setoperaTime { | ||||
|  |   .setoperaTime-left { | ||||
|  |     width: 250px; | ||||
|  |   } | ||||
|  |   .setoperaTime-right { | ||||
|  |     flex: 1; | ||||
|  |     margin-left: 20px; | ||||
|  |   } | ||||
|  |   .head-content { | ||||
|  |     font-size: 14px; | ||||
|  |     padding: 10px; | ||||
|  |     margin: 4px 0 12px 0; | ||||
|  |     background: #eff4ff; | ||||
|  |     border: 1px solid #c5d5fe; | ||||
|  |     .head-content-left, | ||||
|  |     .head-content-right { | ||||
|  |       span { | ||||
|  |         padding-right: 6px; | ||||
|  |       } | ||||
|  |       span:nth-child(1) { | ||||
|  |         font-weight: 700; | ||||
|  |       } | ||||
|  |     } | ||||
|  |   } | ||||
|  |   .form-two { | ||||
|  |     margin-left: 16px; | ||||
|  |   } | ||||
|  |   .operation-details { | ||||
|  |     cursor: pointer; | ||||
|  |   } | ||||
|  | } | ||||
|  | </style> | ||||
|  | <style lang="scss"> | ||||
|  | .setoperaTime { | ||||
|  |   .el-input { | ||||
|  |     width: auto; | ||||
|  |   } | ||||
|  |   .el-form-item { | ||||
|  |     margin-bottom: 12px; | ||||
|  |   } | ||||
|  |   .el-form-item__content { | ||||
|  |     display: flex; | ||||
|  |   } | ||||
|  |   .form-content { | ||||
|  |     display: flex; | ||||
|  |     align-items: center; | ||||
|  |     justify-content: space-between; | ||||
|  |     padding: 10px 0; | ||||
|  |     border-bottom: 1px dashed #d6d6d6; | ||||
|  |   } | ||||
|  |   .total-form, | ||||
|  |   .time-form { | ||||
|  |     margin-bottom: 0; | ||||
|  |   } | ||||
|  |   .button { | ||||
|  |     border: 1px solid #1b6de6; | ||||
|  |     padding: 10px 10px; | ||||
|  |     color: #1b6de6; | ||||
|  |     cursor: pointer; | ||||
|  |     width: 150px; | ||||
|  |     text-align: center; | ||||
|  |     border-radius: 6px; | ||||
|  |   } | ||||
|  |   .button:hover { | ||||
|  |     background: #1b6de6; | ||||
|  |     color: #fff; | ||||
|  |   } | ||||
|  |   .number-table { | ||||
|  |     margin-top: 8px; | ||||
|  |   } | ||||
|  |   .el-table-column--selection .cell { | ||||
|  |     padding-left: 10px; | ||||
|  |   } | ||||
|  |   .el-input-group { | ||||
|  |     width: 80%; | ||||
|  |   } | ||||
|  |   .el-date-editor.el-input, .el-date-editor.el-input__inner { | ||||
|  |     width: 100%; | ||||
|  |   } | ||||
|  | 
 | ||||
|  |   .el-table__body tr.current-row>td.el-table__cell { | ||||
|  |     color: #fff; | ||||
|  |     background: #1b6de6; | ||||
|  |   } | ||||
|  |   .el-table td.el-table__cell, .el-table th.el-table__cell.is-leaf { | ||||
|  |     border: none; | ||||
|  |   } | ||||
|  |   .el-dialog__footer { | ||||
|  |     padding-bottom: 10px; | ||||
|  |   } | ||||
|  | 
 | ||||
|  | } | ||||
|  | </style> | ||||
					Loading…
					
					
				
		Reference in new issue