| | |
| | | <!-- <div class="page_time">{{ timeObj.time }}</div> --> |
| | | </div> |
| | | </div> |
| | | <div class="page_header_placeholer" /> |
| | | <!-- 未有安排 --> |
| | | <div v-if="!occupyInfoView && (!assignTreatListView || !assignTreatListView.length)" class="page_container flex flex-1"> |
| | | <div class="main flex-1"> |
| | |
| | | </div> |
| | | </div> |
| | | <div class="right"> |
| | | <div class="right_block flex flex-col"> |
| | | <div class="guest_title flex flex-center">等待诊疗</div> |
| | | <div class="guest_block flex-1" style="border-radius: 0 0 10px 10px;"> |
| | | <div v-if="assignTreatListView && assignTreatListView.length" class="guest_list"> |
| | | <div v-for="(item, index) in assignTreatListView" :key="index" class="guest_list__row flex flex-ver" @click="selectCustomer(item)"> |
| | | <div class="guest_list__td"> |
| | | <div class="tx flex flex-ver"> |
| | | <div class="flex-1 flex-1-w1 ell">{{ item.userName }}</div> |
| | | </div> |
| | | <div class="tx" style="font-size: 14px;line-height: 20px;">{{ item.ciq || '' }}</div> |
| | | </div> |
| | | <div class="guest_list__td flex flex-center"> |
| | | <span class="tx">{{ item.startTime?item.startTime+'开始':'' }}</span> |
| | | </div> |
| | | <div class="guest_list__td flex flex-center"> |
| | | <span class="tx flex-1 flex-1-w1 ell">{{ item.aDoctorName?item.aDoctorName+'(医生)、':'' }}{{ item.aNurseName?item.aNurseName+'(护士)':'' }}</span> |
| | | </div> |
| | | <div class="guest_list__td flex flex-center"> |
| | | <div v-if="!item.act" class="tx" style="text-decoration: underline;color: #227beb;">切换</div> |
| | | <!-- <div class="icon"> |
| | | <img class="img" src="static/imgs/choose.png"> |
| | | </div> --> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | <div v-if="!assignTreatListView || !assignTreatListView.length" class="guest_list"> |
| | | <div class="guest_list__row flex flex-center rowtip">暂无数据</div> |
| | | </div> |
| | | </div> |
| | | <div class="right_block"> |
| | | <XioRoomGuestBox ref="XioRoomGuestBox" :assign-treat-list-view-com="assignTreatListView" @selectCustomer="selectCustomer" /> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | <!-- 客人和有安排 --> |
| | | <!-- 客人和有安排 over-width --> |
| | | <div v-if="occupyInfoView" class="page_container flex flex-1"> |
| | | <div class="main flex-1"> |
| | | <div v-if="roomInfo && roomInfo.roomNo" class="room_title">{{ roomInfo.roomNo }}</div> |
| | | <div class="room_content"> |
| | | <div class="tip">诊疗安排</div> |
| | | <!-- <div class="name">{{ occupyInfoView.userName }}</div> appellationName --> |
| | | <div v-show="isShowAppellationName" class="flex flex-center"> |
| | | <div class="flex flex-ver"> |
| | | <div class="name">{{ occupyInfoView.appellationName }}</div> |
| | | <div class="name_icon" @click="tapAppellationHandle"> |
| | | <img class="img" src="static/imgs/eye.png"> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | <div v-show="!isShowAppellationName" class="flex flex-center"> |
| | | <div class="flex flex-ver"> |
| | | <div class="name"> |
| | | <el-popover |
| | | placement="top" |
| | | width="400" |
| | | popper-class="top_tx" |
| | | trigger="click" |
| | | :popper-options="{ removeOnDestroy: true }" |
| | | > |
| | | <div>{{ occupyInfoView.userName }}</div> |
| | | <div slot="reference" class="tx ell">{{ occupyInfoView.userName }}</div> |
| | | </el-popover> |
| | | </div> |
| | | <div class="name_icon" @click="tapAppellationHandle"> |
| | | <img class="img" src="static/imgs/eye.png"> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | <div v-if="occupyInfoView.ciq" class="ciq">({{ occupyInfoView.ciq }})</div> |
| | | <div v-if="occupyInfoView.startTime" class="time">安排治疗时间:{{ occupyInfoView.startTime }} 开始</div> |
| | | </div> |
| | | <div v-show="roomInfo" class="room_left_btn_box flex flex-ver" style="margin-top: 105px;"> |
| | | <div v-show="roomInfo.status == 0" class="room_left_btn_box__item flex flex-1 flex-center b-green btn_ani" @click="setStatus('敷麻中', 4)">开始敷麻</div> |
| | | <div v-show="roomInfo.status == 0" class="room_left_btn_box__item flex flex-1 flex-center green btn_ani" @click="setStatus('使用中', 1)">开始治疗</div> |
| | | <div v-show="roomInfo.status == 4" class="room_left_btn_box__item flex flex-center green btn_ani" @click="setStatus('使用中', 1)">开始治疗</div> |
| | | <div v-show="roomInfo.status == 1" class="room_left_btn_box__item flex-1 flex flex-center yellow btn_ani" @click="setStatus('客人休息', 2)">客人休息</div> |
| | | <div v-show="roomInfo.status == 1" class="room_left_btn_box__item flex-1 flex flex-center gray btn_ani" @click="setStatus('打扫中', 3)">通知打扫</div> |
| | | <div v-show="roomInfo.status == 2" class="room_left_btn_box__item flex flex-center green btn_ani" @click="setStatus('打扫中', 3)">通知打扫</div> |
| | | <div v-show="roomInfo.status == 3" class="room_left_btn_box__item flex flex-center green btn_ani" @click="setStatus('空闲', 0)">结束打扫</div> |
| | | </div> |
| | | <XioRoomGuestInfoBox ref="XioRoomGuestInfoBox" :room-info="roomInfo" :occupy-info-view="occupyInfoView" @setStatus="setComStatus" /> |
| | | </div> |
| | | <div class="right flex flex-col"> |
| | | <div class="room_info flex-1"> |
| | | <div class="staff_box flex flex-ver flex-sb"> |
| | | <div class="staff_box_item flex-1 flex flex-center"> |
| | | <div> |
| | | <div class="staff_box_item__title">分诊顾问</div> |
| | | <div class="staff_box_item__name">{{ occupyInfoView.adviserName || '' }}</div> |
| | | </div> |
| | | </div> |
| | | <div class="staff_box_item flex-1 flex flex-center"> |
| | | <div> |
| | | <div class="staff_box_item__title">执行医生</div> |
| | | <div class="staff_box_item__name">{{ occupyInfoView.aDoctorName || '' }}</div> |
| | | </div> |
| | | </div> |
| | | <div class="staff_box_item flex-1 flex flex-center"> |
| | | <div> |
| | | <div class="staff_box_item__title">执行护士</div> |
| | | <div class="staff_box_item__name">{{ occupyInfoView.aNurseName || '' }}</div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | <div class="room_info_project"> |
| | | <div class="room_info_project_block"> |
| | | <div class="tx">{{ occupyInfoView.projectName || '' }}</div> |
| | | </div> |
| | | </div> |
| | | <div class="flex-1"> |
| | | <XioRoomInfoBlock ref="XioRoomInfoBlock" :occupy-info-view="occupyInfoView" /> |
| | | </div> |
| | | <div class="guest_box flex flex-col" style="border-radius: 10px;"> |
| | | <div class="guest_title flex flex-center">等待诊疗</div> |
| | | <div class="guest_block flex-1"> |
| | | <div v-if="assignTreatListView && assignTreatListView.length" class="guest_list"> |
| | | <div v-for="(item, index) in assignTreatListView" :key="index" class="guest_list__row flex flex-ver" @click="selectCustomer(item)"> |
| | | <div class="guest_list__td"> |
| | | <div class="tx flex flex-ver"> |
| | | <div class="flex-1 flex-1-w1 ell">{{ item.userName }}</div> |
| | | </div> |
| | | <div class="tx" style="font-size: 14px;line-height: 20px;">{{ item.ciq || '' }}</div> |
| | | </div> |
| | | <div class="guest_list__td flex flex-center"> |
| | | <span class="tx">{{ item.startTime?item.startTime+'开始':'' }}</span> |
| | | </div> |
| | | <div class="guest_list__td flex flex-center"> |
| | | <span class="tx flex-1 flex-1-w1 ell">{{ item.aDoctorName?item.aDoctorName+'(医生)、':'' }}{{ item.aNurseName?item.aNurseName+'(护士)':'' }}</span> |
| | | </div> |
| | | <div class="guest_list__td flex flex-center"> |
| | | <div v-if="!item.act" class="tx" style="text-decoration: underline;color: #227beb;">切换</div> |
| | | <!-- <div class="icon"> |
| | | <img class="img" src="static/imgs/choose.png"> |
| | | </div> --> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | <div v-if="!assignTreatListView || !assignTreatListView.length" class="guest_list"> |
| | | <div class="guest_list__row flex flex-center rowtip">暂无数据</div> |
| | | </div> |
| | | </div> |
| | | <div class="flex flex-col" style="border-radius: 10px;"> |
| | | <XioRoomGuestBox ref="XioRoomGuestBox" :assign-treat-list-view-com="assignTreatListView" @selectCustomer="selectCustomer" /> |
| | | </div> |
| | | </div> |
| | | </div> |
| | |
| | | // 客人休息 2 |
| | | // 待打扫/通知打扫 3 |
| | | // import Login from '../utils/jun_login.js' |
| | | // 房间客人信息 |
| | | import XioRoomGuestInfoBox from '@/components/xio_room_guest_info_box' |
| | | // 房间负责员工信息 |
| | | import XioRoomInfoBlock from '@/components/xio_room_info_block' |
| | | // 房间客户预约列表信息 |
| | | import XioRoomGuestBox from '@/components/xio_room_guest_box' |
| | | // 选择客人弹窗 |
| | | import XioCustomerSelect from '@/components/xio_customer_select' |
| | | // 更改房间状态窗 |
| | |
| | | export default { |
| | | name: 'RoomDetail', |
| | | components: { |
| | | XioRoomGuestInfoBox, |
| | | XioRoomInfoBlock, |
| | | XioRoomGuestBox, |
| | | XioCustomerSelect, |
| | | XioRoomStatusChg, |
| | | XioRoomOffNarcosisNotice |
| | |
| | | statusTx: ['空闲', '使用中', '客人休息', '打扫中', '敷麻中'], |
| | | timeObj: {}, // week:星期,date:年月日,timeMin:时分,time:时分秒,timeStamp:时间戳 |
| | | curTreatId: '', |
| | | isShowAppellationName: true // 是否显示称谓 |
| | | curTreatIds: '' |
| | | // isShowAppellationName: true // 是否显示称谓 |
| | | } |
| | | }, |
| | | // todo 页面显示及数组处理 |
| | | computed: { |
| | | occupyInfoViewArr() { |
| | | // 缓存记录 |
| | | if (this.curTreatIds) { |
| | | return this.getCurTreatArr(this.curTreatIds) |
| | | } else { |
| | | if (this.occupyInfo) { |
| | | this.occupyInfoViewArrIdsHandle(this.occupyInfo) |
| | | return [this.occupyInfo] |
| | | } else { |
| | | if ((!isUseDefault || (isUseDefault && isUseDefaultChg === 0)) && this.assignTreatList && this.assignTreatList.length) { |
| | | isUseDefault = true |
| | | this.occupyInfoViewArrIdsHandle(this.assignTreatList[0]) |
| | | return [this.assignTreatList[0]] |
| | | } else { |
| | | return '' |
| | | } |
| | | } |
| | | } |
| | | }, |
| | | occupyInfoView() { |
| | | console.log('00000000000000000000000', this.occupyInfo, isUseDefault, isUseDefaultChg) |
| | | // 有当前选中的,根据需求修改增加选中不更改状态,由空闲开始 |
| | |
| | | console.log('roomDetail mounted') |
| | | // 记录当前的治疗ID |
| | | var curTreatId = localStorage.getItem('curTreatId') |
| | | // 记录当前的治疗ID数组 |
| | | var curTreatIds = localStorage.getItem('curTreatIds') |
| | | // 卸麻相关 |
| | | var localOffNarcosisIds = localStorage.getItem('offNarcosisIds') |
| | | var localIsOffNarcosisShow = localStorage.getItem('isOffNarcosisShow') |
| | | // 获取是否已通知卸麻数组 |
| | |
| | | } |
| | | if (localIsOffNarcosisShow) { |
| | | isOffNarcosisShow = localIsOffNarcosisShow |
| | | } |
| | | // 数组 |
| | | if (curTreatIds) { |
| | | try { |
| | | this.curTreatIds = JSON.parse(curTreatIds) |
| | | } catch (error) { |
| | | this.curTreatIds = '' |
| | | } |
| | | } |
| | | this.curTreatId = curTreatId || '' |
| | | this.id = this.$route.query.id || '' |
| | |
| | | // 轮询getData,8秒一次 |
| | | this.pollingAjaxFn(this, 'getData', 'detail', 8000) |
| | | // this.getData() |
| | | }, |
| | | // 初始占用id数组处理 |
| | | occupyInfoViewArrIdsHandle(item) { |
| | | if (!this.curTreatIds) { |
| | | this.curTreatIds = [] |
| | | } |
| | | this.curTreatIds.push(item.id) |
| | | this.setLocalCurTreatIds() |
| | | }, |
| | | // 设置已通知卸麻id数组 |
| | | setLocalStorageOffNarcosisIds() { |
| | |
| | | this.$refs['XioRoomOffNarcosisNotice'].showDialog() |
| | | }, |
| | | // 点击显示隐藏称谓 |
| | | tapAppellationHandle() { |
| | | this.isShowAppellationName = !this.isShowAppellationName |
| | | // tapAppellationHandle() { |
| | | // this.isShowAppellationName = !this.isShowAppellationName |
| | | // }, |
| | | // 获取当前治疗信息(数组) |
| | | getCurTreatArr(ids) { |
| | | var arr = [] |
| | | if (this.assignTreatList && this.assignTreatList.length) { |
| | | this.assignTreatList.forEach((o) => { |
| | | if (ids && ids.length) { |
| | | ids.forEach((_o) => { |
| | | if (_o === o.id) { |
| | | arr.push(o) |
| | | } |
| | | }) |
| | | } |
| | | }) |
| | | } |
| | | return arr |
| | | }, |
| | | // 获取当前治疗信息 |
| | | gatCurTreatInfo() { |
| | |
| | | roomNo: 'xx', |
| | | status: 0 // 0空闲 1使用 2休息 3打扫 4 敷麻中 |
| | | }, |
| | | assignTreatList: [{ |
| | | startTime: '2023-12-08 00:00:00' |
| | | }], |
| | | assignTreatList: [ |
| | | { |
| | | id: 'a111', |
| | | startTime: '2023-12-08 00:00:00', |
| | | userName: '黄嘉荣', |
| | | gender: 1, |
| | | hempStatus: 0, |
| | | ciq: '123', |
| | | adviserName: 'a君', |
| | | aDoctorName: 'b君', |
| | | aNurseName: 'c君', |
| | | projectName: 'xxxxXXxxx', |
| | | userId: '111' |
| | | }, |
| | | { |
| | | id: 'a222', |
| | | startTime: '2023-12-08 00:15:00', |
| | | userName: '李德华', |
| | | gender: 1, |
| | | hempStatus: 0, |
| | | ciq: '456', |
| | | adviserName: 'd君', |
| | | aDoctorName: 'e君', |
| | | aNurseName: 'f君', |
| | | projectName: 'xxxxXXxxx', |
| | | userId: '222' |
| | | }, |
| | | { |
| | | id: 'a333', |
| | | startTime: '2023-12-08 00:20:00', |
| | | userName: '猛学友', |
| | | gender: 2, |
| | | hempStatus: 0, |
| | | ciq: '789', |
| | | adviserName: 'g君', |
| | | aDoctorName: 'h君', |
| | | aNurseName: 'i君', |
| | | projectName: 'xxxxXXxxx', |
| | | userId: '333' |
| | | } |
| | | ], |
| | | occupyInfo: null |
| | | } |
| | | } |
| | |
| | | this.getData() |
| | | }) |
| | | }, |
| | | // 按流程设置房间状态 |
| | | setComStatus(opt) { |
| | | var { occupyInfoView, roomInfo } = this |
| | | console.log(opt.tx, opt.status) |
| | | this.changeStatusFn(occupyInfoView, opt.status, () => { |
| | | // 刷新详情 |
| | | this.getData() |
| | | }) |
| | | }, |
| | | // 改变房间状态异步方法 |
| | | changeStatusFn(item = {}, status, cb) { |
| | | var params = {} |
| | |
| | | // 重置默认已使用客人的参数 |
| | | isUseDefault = false |
| | | isUseDefaultChg = 0 |
| | | this.isShowAppellationName = true |
| | | // this.isShowAppellationName = true |
| | | } |
| | | // console.log('8888888888888888888888888888888888', res) |
| | | cb && cb() |
| | |
| | | }, |
| | | // 选择客户确定 |
| | | selectCustomerSubmit(opt) { |
| | | console.log('submit', opt) |
| | | console.log('=======================>submit', opt) |
| | | // 确定选择的用户,记录id |
| | | localStorage.setItem('curTreatId', opt.id) |
| | | this.curTreatId = opt.id |
| | | if (this.curTreatIds && this.curTreatIds.length) { |
| | | var flag = this.curTreatIds.find((o) => { return o === opt.id }) |
| | | if (!flag) { |
| | | this.curTreatIds.push(opt.id) |
| | | } |
| | | this.setLocalCurTreatIds() |
| | | } |
| | | if (this.occupyInfoViewArr && this.occupyInfoViewArr.length) { |
| | | this.occupyInfoViewArr.push(opt) |
| | | } |
| | | // 重置房间状态 |
| | | if (this.roomInfo && this.roomInfo.status) { |
| | | if (this.roomInfo) { |
| | | this.changeStatusFn({}, 0, () => { |
| | | // 刷新详情 |
| | | this.getData() |
| | |
| | | } |
| | | // 关闭弹窗 |
| | | this.$refs['XioCustomerSelect'].hideDialog() |
| | | }, |
| | | // 设置本地缓存ids数组 |
| | | setLocalCurTreatIds() { |
| | | localStorage.setItem('curTreatIds', JSON.stringify(this.curTreatIds)) |
| | | } |
| | | } |
| | | } |
| | |
| | | .page{ |
| | | overflow: auto; |
| | | } |
| | | .page_header_placeholer { |
| | | height: 100px; |
| | | } |
| | | .page_header { |
| | | position: fixed; |
| | | top: 0; |
| | | left: 23px; |
| | | right: 23px; |
| | | z-index: 1; |
| | | } |
| | | .page_header .reset_btn { |
| | | width: 200px; |
| | | height: 60px; |
| | |
| | | cursor: pointer; |
| | | border: 0; |
| | | margin-left: 20px; |
| | | } |
| | | .page_container.over-width { |
| | | width: 150%; |
| | | } |
| | | .page_container .main { |
| | | /* height: 100%; */ |
| | |
| | | width: 100%; |
| | | height: 100%; |
| | | } |
| | | .page_container .right .guest_title { |
| | | height: 60px; |
| | | line-height: 28px; |
| | | border-radius: 10px 10px 0px 0px; |
| | | background-color: rgba(255,255,255,1); |
| | | color: rgba(34,123,235,1); |
| | | font-size: 20px; |
| | | text-align: center; |
| | | font-family: Roboto; |
| | | font-weight: bold; |
| | | } |
| | | .page_container .right .guest_block { |
| | | background-color: #fff; |
| | | overflow: auto; |
| | | } |
| | | .page_container .right .guest_list { |
| | | background-color: #fff; |
| | | padding-bottom: 23px; |
| | | } |
| | | .page_container .right .guest_list__row { |
| | | min-height: 75px; |
| | | background-color: rgba(34,123,235,0.1); |
| | | } |
| | | .page_container .right .guest_list__row:nth-child(2n) { |
| | | background-color: #fff; |
| | | } |
| | | .page_container .right .guest_list__row.rowtip { |
| | | background-color: #fff; |
| | | line-height: 30px; |
| | | color: rgba(0,0,0,.5); |
| | | font-size: 22px; |
| | | } |
| | | .page_container .right .guest_list__td {} |
| | | .page_container .right .guest_list__td .tx { |
| | | line-height: 30px; |
| | | color: rgba(16,16,16,1); |
| | | font-size: 22px; |
| | | text-align: center; |
| | | font-family: PingFangSC-regular; |
| | | box-sizing: border-box; |
| | | padding: 0 5px; |
| | | } |
| | | .page_container .right .guest_list__td .icon { |
| | | width: 20px; |
| | | height: 20px; |
| | | display: block; |
| | | } |
| | | .page_container .right .guest_list__td .icon .img { |
| | | .page_container .right_block .guest_box { |
| | | margin-top: 0; |
| | | width: 100%; |
| | | height: 100%; |
| | | } |
| | | .page_container .right .guest_list__td:nth-child(1) { |
| | | width: 19.54%; |
| | | } |
| | | .page_container .right .guest_list__td:nth-child(2) { |
| | | width: 21.86%; |
| | | } |
| | | .page_container .right .guest_list__td:nth-child(3) { |
| | | width: 46.06%; |
| | | } |
| | | .page_container .right .guest_list__td:nth-child(4) { |
| | | width: 12.54%; |
| | | } |
| | | .page_container .right .room_info { |
| | | width: 100%; |
| | | border-radius: 10px; |
| | | background-color: rgba(255,255,255,0.3); |
| | | } |
| | | .page_container .right .room_info .staff_box { |
| | | margin-top: 30px; |
| | | } |
| | | .page_container .right .room_info .staff_box_item { |
| | | height: 180px; |
| | | } |
| | | .page_container .right .room_info .staff_box_item:nth-child(1) { |
| | | background-color: rgba(255,255,255,0.1); |
| | | } |
| | | .page_container .right .room_info .staff_box_item:nth-child(2) { |
| | | background-color: rgba(255,255,255,0.3); |
| | | margin: 0 10px; |
| | | } |
| | | .page_container .right .room_info .staff_box_item:nth-child(3) { |
| | | background-color: rgba(255,255,255,0.1); |
| | | } |
| | | .page_container .right .room_info .staff_box_item__title { |
| | | line-height: 28px; |
| | | color: rgba(255,255,255,1); |
| | | font-size: 20px; |
| | | text-align: center; |
| | | font-family: PingFangSC-regular; |
| | | } |
| | | .page_container .right .room_info .staff_box_item__name { |
| | | line-height: 56px; |
| | | color: rgba(255,255,255,1); |
| | | font-size: 40px; |
| | | text-align: center; |
| | | font-family: PingFangSC-medium; |
| | | margin-top: 5px; |
| | | } |
| | | .page_container .right .room_info .room_info_project { |
| | | padding: 36px 20px 20px 20px; |
| | | height: 138px; |
| | | box-sizing: border-box; |
| | | overflow: hidden; |
| | | } |
| | | .page_container .right .room_info .room_info_project_block { |
| | | box-sizing: border-box; |
| | | width: 100%; |
| | | height: 100%; |
| | | overflow: auto; |
| | | } |
| | | .page_container .right .room_info .room_info_project .tx { |
| | | line-height: 39px; |
| | | color: rgba(255,255,255,1); |
| | | font-size: 28px; |
| | | text-align: center; |
| | | font-family: PingFangSC-regular; |
| | | } |
| | | .page_container .right .guest_box { |
| | | margin-top: 65px; |
| | | width: 100%; |
| | | height: 345px; |
| | | background-color: #fff; |
| | | overflow: hidden; |
| | | -webkit-flex-flow: column; |
| | | flex-flow: column; |
| | | display: box; |
| | | display: -webkit-box; /* OLD - iOS 6-, Safari 3.1-6 */ |
| | | display: -moz-box; /* OLD - Firefox 19- (buggy but mostly works) */ |
| | | display: -ms-flexbox; /* TWEENER - IE 10 */ |
| | | display: -webkit-flex; /* NEW - Chrome */ |
| | | display: -moz-flex; |
| | | display: -ms-flex; |
| | | display: -o-flex; |
| | | display: flex; |
| | | } |
| | | </style> |