| | |
| | | <!-- <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 v-if="(!occupyInfoViewArr || !occupyInfoViewArr.length) && (!assignTreatListView || !assignTreatListView.length)" class="page_container flex flex-1"> |
| | | <div class="main flex-1 flex flex-col"> |
| | | <div v-if="roomInfo && roomInfo.roomNo" class="room_title">{{ roomInfo.roomNo }}</div> |
| | | <div v-if="roomInfo" class="room_main_tip" style="margin-top: 93px;line-height: 186px;font-size: 140px;">-{{ statusTx[roomInfo.status] }}-</div> |
| | | <div class="flex-1" /> |
| | | <div v-if="roomInfo" class="room_main_tip" style="line-height: 186px;font-size: 140px;margin-top: 0">-{{ statusTx[roomInfo.status] }}-</div> |
| | | <div class="flex-1" /> |
| | | <div class="btn_box flex flex-center"> |
| | | <div class="flex flex-ver"> |
| | | <div class="btn_box__item flex flex-center white" data-tx="空闲" data-status="0" @click="statusChg"> |
| | |
| | | </div> |
| | | </div> |
| | | <!-- 没有客人和有安排 --> |
| | | <div v-if="!occupyInfoView && (assignTreatListView && assignTreatListView.length)" class="page_container flex flex-1"> |
| | | <div v-if="(!occupyInfoViewArr || !occupyInfoViewArr.length) && (assignTreatListView && assignTreatListView.length)" class="page_container flex flex-1"> |
| | | <div class="main flex-1"> |
| | | <div v-if="roomInfo && roomInfo.roomNo" class="room_title">{{ roomInfo.roomNo }}</div> |
| | | <div v-if="roomInfo" class="room_main_tip">-{{ statusTx[roomInfo.status] }}-</div> |
| | |
| | | </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> |
| | | <!-- 客人和有安排 --> |
| | | <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> |
| | | <!-- 客人和有安排 over-width --> |
| | | <div v-if="occupyInfoViewArr && occupyInfoViewArr.length" class="page_container flex flex-1" :class="[occupyInfoViewArr && occupyInfoViewArr.length>1?'over-width':'']"> |
| | | <div class="flex flex-1"> |
| | | <div v-for="(item,index) in occupyInfoViewArr" :key="index" class="main flex-1"> |
| | | <div v-if="occupyInfoViewArr.length>1 && item.treatRoomStatus === 0" class="cancel_icon_block" @click="cancelCustomerItem(item)"> |
| | | <img class="img" src="static/imgs/cancel.png"> |
| | | </div> |
| | | <div v-show="!isShowAppellationName" 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 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> |
| | | <XioRoomGuestInfoBox :ref="`XioRoomGuestInfoBox_${item.id}`" :room-info="roomInfo" :occupy-info-view="item" :off-narcosis-ids="offNarcosisIds" @setStatus="setComStatus" /> |
| | | </div> |
| | | </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 v-for="(item,index) in occupyInfoViewArr" :key="index" class="flex-1 right_room_info"> |
| | | <XioRoomInfoBlock ref="XioRoomInfoBlock" :occupy-info-view="item" :occupy-info-view-arr="occupyInfoViewArr" /> |
| | | </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 v-if="occupyInfoViewArr.length<=1" class="flex flex-col" style="border-radius: 10px;"> |
| | | <XioRoomGuestBox ref="XioRoomGuestBox" :assign-treat-list-view-com="assignTreatListView" @selectCustomer="selectCustomer" /> |
| | | </div> |
| | | </div> |
| | | </div> |
| | |
| | | <!-- 更改房间状态窗 --> |
| | | <XioRoomStatusChg ref="XioRoomStatusChg" @changeStatus="changeStatus" /> |
| | | <!-- MIC通知卸麻 --> |
| | | <XioRoomOffNarcosisNotice ref="XioRoomOffNarcosisNotice" @confirm="offNarcosisNoticeConfirm" /> |
| | | <!-- <XioRoomOffNarcosisNotice ref="XioRoomOffNarcosisNotice" @confirm="offNarcosisNoticeConfirm" /> --> |
| | | </div> |
| | | </template> |
| | | |
| | |
| | | // 客人休息 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' |
| | | // 更改房间状态窗 |
| | | import XioRoomStatusChg from '@/components/xio_room_status_chg' |
| | | // 通知卸麻 |
| | | import XioRoomOffNarcosisNotice from '@/components/xio_room_off_narcosis_notice' |
| | | // import XioRoomOffNarcosisNotice from '@/components/xio_room_off_narcosis_notice' |
| | | import Req from '../../utils/jun_httpInstall' // http 请求 |
| | | // import xioFn from './utils/xio_fn.js' |
| | | var isUseDefault = false // 是否已使用默认客人 |
| | | var isUseDefaultChg = 0// 已使用默认客人后房间是否有改变状态 |
| | | var offNarcosisIds = [] // 是否已通知卸麻id数组 |
| | | export default { |
| | | name: 'RoomDetail', |
| | | components: { |
| | | XioRoomGuestInfoBox, |
| | | XioRoomInfoBlock, |
| | | XioRoomGuestBox, |
| | | XioCustomerSelect, |
| | | XioRoomStatusChg, |
| | | XioRoomOffNarcosisNotice |
| | | XioRoomStatusChg |
| | | // XioRoomOffNarcosisNotice |
| | | }, |
| | | inject: ['noop'], |
| | | data() { |
| | |
| | | statusTx: ['空闲', '使用中', '客人休息', '打扫中', '敷麻中'], |
| | | timeObj: {}, // week:星期,date:年月日,timeMin:时分,time:时分秒,timeStamp:时间戳 |
| | | curTreatId: '', |
| | | isShowAppellationName: true // 是否显示称谓 |
| | | curTreatIds: '', // 已选中的治疗记录id数组 |
| | | offNarcosisIds: [], // 是否已通知卸麻的用户id数组 |
| | | // isShowAppellationName: true // 是否显示称谓 |
| | | |
| | | // 60秒切换状态锁 ↓↓↓↓↓↓↓↓↓↓ |
| | | setStatusLock: false, // 更新状态锁 |
| | | setStatusLockDuration: 60000, // 更新状态锁时间 |
| | | setStatusLockTimer: null |
| | | // 60秒切换状态锁 ↑↑↑↑↑↑↑↑↑↑ |
| | | } |
| | | }, |
| | | computed: { |
| | | // 当前已选择用户的数组数据 |
| | | occupyInfoViewArr() { |
| | | if (this.occupyInfo && this.occupyInfo.length) { |
| | | return this.occupyInfoViewArrIdsHandleArr() |
| | | } else { |
| | | if (this.curTreatIds && this.curTreatIds.length) { |
| | | return this.getCurTreatArr(this.curTreatIds) |
| | | } 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('00000000000000000000000', this.occupyInfo, isUseDefault, isUseDefaultChg) |
| | | // 有当前选中的,根据需求修改增加选中不更改状态,由空闲开始 |
| | | if (this.curTreatId) { |
| | | return this.gatCurTreatInfo() |
| | |
| | | } else { |
| | | // 还没使用默认客人值或者已使用默认客人值还没改变状态(适配轮询) |
| | | if ((!isUseDefault || (isUseDefault && isUseDefaultChg === 0)) && this.assignTreatList && this.assignTreatList.length) { |
| | | isUseDefault = true |
| | | // isUseDefault = true |
| | | return this.assignTreatList[0] |
| | | // 已使用过默认客人值 |
| | | } else { |
| | |
| | | } |
| | | } |
| | | }, |
| | | // 该治疗室用户列表 |
| | | assignTreatListView() { |
| | | if (this.assignTreatList && this.assignTreatList.length) { |
| | | this.assignTreatList.forEach((o) => { |
| | | o.act = false |
| | | if (this.occupyInfoView && this.occupyInfoView.id === o.id) { |
| | | o.act = true |
| | | if (this.occupyInfoViewArr && this.occupyInfoViewArr.length) { |
| | | this.occupyInfoViewArr.forEach((_o) => { |
| | | if (_o.id === o.id) { |
| | | o.act = true |
| | | } |
| | | }) |
| | | } |
| | | }) |
| | | return this.assignTreatList |
| | |
| | | activated() { |
| | | console.log('roomDetail mounted') |
| | | // 记录当前的治疗ID |
| | | var curTreatId = localStorage.getItem('curTreatId') |
| | | // var curTreatId = localStorage.getItem('curTreatId') |
| | | // 记录当前的治疗记录ID数组 |
| | | var curTreatIds = localStorage.getItem('curTreatIds') |
| | | // 卸麻相关 |
| | | var localOffNarcosisIds = localStorage.getItem('offNarcosisIds') |
| | | // 获取是否已通知卸麻数组 |
| | | if (localOffNarcosisIds) { |
| | | offNarcosisIds = JSON.parse(localOffNarcosisIds) |
| | | this.offNarcosisIds = JSON.parse(localOffNarcosisIds) |
| | | } else { |
| | | offNarcosisIds = [] |
| | | this.offNarcosisIds = [] |
| | | this.setLocalStorageOffNarcosisIds() |
| | | } |
| | | this.curTreatId = curTreatId || '' |
| | | // 治疗记录ID数组 |
| | | if (curTreatIds) { |
| | | try { |
| | | this.curTreatIds = JSON.parse(curTreatIds) |
| | | } catch (error) { |
| | | this.curTreatIds = '' |
| | | } |
| | | } |
| | | // this.curTreatId = curTreatId || '' |
| | | // 治疗室id |
| | | this.id = this.$route.query.id || '' |
| | | this.init() |
| | | }, |
| | |
| | | this.pollingAjaxFn(this, 'getData', 'detail', 8000) |
| | | // this.getData() |
| | | }, |
| | | // 设置已通知卸麻id数组 |
| | | setLocalStorageOffNarcosisIds() { |
| | | localStorage.setItem('offNarcosisIds', JSON.stringify(offNarcosisIds)) |
| | | // 初始默认选择的id数组处理 |
| | | occupyInfoViewArrIdsHandle(item) { |
| | | if (!this.curTreatIds) { |
| | | this.curTreatIds = [] |
| | | } |
| | | this.curTreatIds.push(item.id) |
| | | this.setLocalCurTreatIds() |
| | | }, |
| | | // 卸麻通知确认 |
| | | offNarcosisNoticeConfirm() { |
| | | if (this.occupyInfoView) { |
| | | offNarcosisIds.push(this.occupyInfoView.visitOrderId) |
| | | this.setLocalStorageOffNarcosisIds() |
| | | // 初始默认选择的id数组处理 |
| | | occupyInfoViewArrIdsHandleArr() { |
| | | if (!this.curTreatIds) { |
| | | this.curTreatIds = [] |
| | | } |
| | | if (this.occupyInfo && this.occupyInfo.length === 1) { |
| | | var res = [] |
| | | res.push(this.occupyInfo[0]) |
| | | if (this.curTreatIds && this.curTreatIds.length) { |
| | | this.curTreatIds = this.curTreatIds.filter((o) => { return o !== this.occupyInfo[0].id }) |
| | | if (this.assignTreatList && this.assignTreatList.length && this.curTreatIds && this.curTreatIds.length) { |
| | | var curTreatItem = this.assignTreatList.find((o) => { return o.id === this.curTreatIds[0] }) |
| | | if (curTreatItem) { |
| | | res.push(curTreatItem) |
| | | } |
| | | } |
| | | } |
| | | this.setLocalCurTreatIds() |
| | | return res |
| | | } else if (this.occupyInfo && this.occupyInfo.length > 1) { |
| | | this.occupyInfo.forEach((o) => { |
| | | this.curTreatIds.push(o.id) |
| | | }) |
| | | return this.occupyInfo |
| | | } |
| | | }, |
| | | // 显示通知卸麻弹窗 |
| | | showOffNarcosisNotice() { |
| | | // 打开弹窗 |
| | | this.$refs['XioRoomOffNarcosisNotice'].showDialog() |
| | | // 设置已通知卸麻id数组 |
| | | setLocalStorageOffNarcosisIds() { |
| | | localStorage.setItem('offNarcosisIds', JSON.stringify(this.offNarcosisIds)) |
| | | }, |
| | | // 卸麻通知确认 |
| | | // offNarcosisNoticeConfirm() { |
| | | // if (this.occupyInfoView) { |
| | | // if (offNarcosisIds && offNarcosisIds.length) { |
| | | // var flag = offNarcosisIds.find((o) => { return o === this.occupyInfoView.userId }) |
| | | // if (!flag) { |
| | | // offNarcosisIds.push(this.occupyInfoView.userId) |
| | | // } |
| | | // } else if (offNarcosisIds) { |
| | | // offNarcosisIds.push(this.occupyInfoView.userId) |
| | | // } |
| | | // this.setLocalStorageOffNarcosisIds() |
| | | // } |
| | | // }, |
| | | // // 显示通知卸麻弹窗 |
| | | // showOffNarcosisNotice() { |
| | | // // 打开弹窗 |
| | | // this.$refs['XioRoomOffNarcosisNotice'].showDialog() |
| | | // }, |
| | | // 显示通知卸麻弹窗(多个) |
| | | showOffNarcosisNoticeMulti(id) { |
| | | // 打开弹窗,动态的ref对象获取 |
| | | // eslint-disable-next-line no-eval |
| | | var ref = eval('this.$refs.XioRoomGuestInfoBox_' + id)[0] |
| | | ref.showOffNarcosisNotice() |
| | | }, |
| | | // 点击显示隐藏称谓 |
| | | 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) |
| | | } |
| | | }) |
| | | } |
| | | }) |
| | | // 基本不会出现这种情况,但是以防万一,若本地缓存id存在,但对不上列表则缓存第一条数据id |
| | | if (!arr.length) { |
| | | arr.push(this.assignTreatList[0]) |
| | | this.curTreatIds = [] |
| | | this.curTreatIds.push(this.assignTreatList[0].id) |
| | | this.setLocalCurTreatIds() |
| | | } |
| | | } |
| | | 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: 2, |
| | | treatRoomStatus: 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: 2, |
| | | treatRoomStatus: 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: 2, |
| | | treatRoomStatus: 0, |
| | | ciq: '789', |
| | | adviserName: 'g君', |
| | | aDoctorName: 'h君', |
| | | aNurseName: 'i君', |
| | | projectName: 'xxxxXXxxx', |
| | | userId: '333' |
| | | } |
| | | ], |
| | | occupyInfo: null |
| | | } |
| | | } |
| | | }).then((res) => { |
| | | if (res && res.data) { |
| | | // 治疗时间处理 |
| | | if (res.data.assignTreatList && res.data.assignTreatList.length) { |
| | | res.data.assignTreatList.forEach((o) => { |
| | | // 治疗时间处理 |
| | | var st = (o.startTime).split(' ')[1].split(':') |
| | | o.startTime = `${st[0]}:${st[1]}` |
| | | // 称谓处理 |
| | | o.appellationName = o.userName[0] + `${o.gender ? ['女士', '先生', '女士'][o.gender] : '女士'}` |
| | | }) |
| | | } |
| | | // 已占用用户数据处理 |
| | | if (res.data.occupyInfo && res.data.occupyInfo.userName) { |
| | | res.data.occupyInfo.appellationName = res.data.occupyInfo.userName[0] + `${res.data.occupyInfo.gender ? ['女士', '先生', '女士'][res.data.occupyInfo.gender] : '女士'}` |
| | | if (res.data.occupyInfo && res.data.occupyInfo.length) { |
| | | res.data.occupyInfo.forEach((o) => { |
| | | // 治疗时间处理 |
| | | var st = (o.startTime).split(' ')[1].split(':') |
| | | o.startTime = `${st[0]}:${st[1]}` |
| | | // 称谓处理 |
| | | o.appellationName = o.userName[0] + `${o.gender ? ['女士', '先生', '女士'][o.gender] : '女士'}` |
| | | }) |
| | | } |
| | | // 已有占用的,更改已使用默认客人的状态 |
| | | res.data.occupyInfo && (isUseDefaultChg = 1) |
| | | res.data.occupyInfo && (isUseDefault = 1) |
| | | // 占用信息治疗时间处理 |
| | | if (res.data.occupyInfo && res.data.occupyInfo.startTime) { |
| | | var ost = (res.data.occupyInfo.startTime).split(' ')[1].split(':') |
| | | res.data.occupyInfo.startTime = `${ost[0]}:${ost[1]}` |
| | | } |
| | | res.data.occupyInfo && res.data.occupyInfo.length && (isUseDefaultChg = 1) |
| | | res.data.occupyInfo && res.data.occupyInfo.length && (isUseDefault = 1) |
| | | for (const key in res.data) { |
| | | this[key] = res.data[key] |
| | | } |
| | | } |
| | | // console.log('999999999999999999999999999', res) |
| | | // 卸麻弹窗逻辑 |
| | | var offNarcosisTimer = null |
| | | offNarcosisTimer = setTimeout(() => { |
| | | console.log('================================>', this.occupyInfoView) |
| | | if (this.occupyInfoView && this.occupyInfoView.hempStatus === 2 && this.occupyInfoView.visitOrderId) { |
| | | var flag |
| | | offNarcosisIds && offNarcosisIds.length && (flag = offNarcosisIds.find((o) => { return o === this.occupyInfoView.visitOrderId })) |
| | | if (!flag) { |
| | | this.showOffNarcosisNotice() |
| | | } |
| | | console.log('================================>判断卸麻弹窗', this.occupyInfoViewArr, 'offNarcosisIds:', this.offNarcosisIds) |
| | | if (this.occupyInfoViewArr && this.occupyInfoViewArr.length && this.offNarcosisIds) { |
| | | this.occupyInfoViewArr.forEach((o) => { |
| | | // 判断改用户是否弹出过卸麻弹窗 |
| | | var flag |
| | | flag = this.offNarcosisIds.find((_o) => { return _o === o.userId }) |
| | | // 状态2且没有弹出过弹窗 |
| | | if (o.hempStatus === 2 && !flag) { |
| | | // 弹出对应id弹窗 |
| | | this.showOffNarcosisNoticeMulti(o.id) |
| | | } |
| | | }) |
| | | } |
| | | clearTimeout(offNarcosisTimer) |
| | | offNarcosisTimer = null |
| | |
| | | // 未有安排直接状态变更 |
| | | statusChg(e) { |
| | | var { tx, status } = e.currentTarget.dataset |
| | | var { occupyInfoView, roomInfo } = this |
| | | console.log(tx, status) |
| | | // var { occupyInfoView, roomInfo } = this |
| | | console.log('==========================>没有安排时没有客人直接变更状态', tx, status) |
| | | // if (roomInfo && status * 1 == roomInfo.status) { |
| | | // return |
| | | // } |
| | | this.changeStatusFn(occupyInfoView, status, () => { |
| | | this.changeStatusFn({}, status, () => { |
| | | this.getData() |
| | | }) |
| | | }, |
| | | // 按流程设置房间状态 |
| | | // 没有客人的按流程设置房间状态 |
| | | setStatus(tx, status) { |
| | | var { occupyInfoView, roomInfo } = this |
| | | console.log(tx, status) |
| | | this.changeStatusFn(occupyInfoView, status, () => { |
| | | // var { occupyInfoView, roomInfo } = this |
| | | console.log('============================>有安排没有客人设置房间状态', tx, status) |
| | | this.changeStatusFn({}, status, () => { |
| | | // 刷新详情 |
| | | this.getData() |
| | | }) |
| | | }, |
| | | // 按流程设置房间状态(组件) |
| | | setComStatus(opt) { |
| | | // var { occupyInfoView, roomInfo } = this |
| | | console.log('============================>客人信息组件点击更改状态', opt.tx, opt.status, opt.item) |
| | | this.changeStatusFn(opt.item, opt.status, () => { |
| | | // 刷新详情 |
| | | this.getData() |
| | | }) |
| | | }, |
| | | // 改变房间状态异步方法 |
| | | changeStatusFn(item = {}, status, cb) { |
| | | // 未解锁 20240201 long |
| | | if (this.setStatusLock) { |
| | | return this.$messageWarn('操作频繁,请稍后再试') |
| | | } |
| | | this.setStatusLock = true |
| | | clearInterval(this.setStatusLockTimer) |
| | | this.setStatusLockTimer = null |
| | | |
| | | var params = {} |
| | | // 更改的状态 |
| | | params.status = status * 1 |
| | | // 房间id |
| | | if (this.id) { |
| | | params.shopRoomId = this.id |
| | | } |
| | | // 治疗记录id |
| | | // 治疗记录id this.curTreatIds occupyInfoViewArr |
| | | // 1.使用中/敷麻中 敷麻中 2 人占用 |
| | | // 2.使用中/使用中 使用中 2 人占用 |
| | | // 3.使用中/休息中 使用中 1 人占用 |
| | | var arr = JSON.parse(JSON.stringify(this.occupyInfoViewArr)) |
| | | if (item && item.id) { |
| | | params.treatRecordId = item.id |
| | | if (arr && arr.length) { |
| | | arr.forEach((o) => { |
| | | if (o.id === item.id) { |
| | | o.treatRoomStatus = status * 1 |
| | | } |
| | | }) |
| | | // 是否有人使用中 |
| | | var status_1 = arr.find((o) => { return o.treatRoomStatus === 1 }) |
| | | // 是否有客人休息 |
| | | var status_2 = arr.find((o) => { return o.treatRoomStatus === 2 }) |
| | | // 是否有人打扫中 |
| | | var status_3 = arr.find((o) => { return o.treatRoomStatus === 3 }) |
| | | // 是否有人敷麻 |
| | | var status_4 = arr.find((o) => { return o.treatRoomStatus === 4 }) |
| | | // 更改的状态 敷麻中 > 使用中 > 休息中 > 待打扫 |
| | | params.status = status * 1 |
| | | if (status_3) { |
| | | params.status = 3 |
| | | } |
| | | if (status_2) { |
| | | params.status = 2 |
| | | } |
| | | if (status_1) { |
| | | params.status = 1 |
| | | } |
| | | if (status_4) { |
| | | params.status = 4 |
| | | } |
| | | } |
| | | |
| | | // 当前选择客户的数组删除客户 |
| | | this.occupyInfoViewArrDataHandle('cancel', item) |
| | | params.treatRoomList = [] |
| | | if (arr && arr.length) { |
| | | arr.forEach((o) => { |
| | | params.treatRoomList.push({ |
| | | treatRecordId: o.id, |
| | | status: o.treatRoomStatus |
| | | }) |
| | | }) |
| | | } |
| | | } else { |
| | | // 更改的状态 |
| | | params.status = status * 1 |
| | | } |
| | | |
| | | Req.http.post({ |
| | | url: 'guide/treat/screen/room/status/update', |
| | | data: params, |
| | |
| | | console.log('在已有默认客人的情况下,改变状态更改标识') |
| | | isUseDefaultChg = 1 |
| | | } |
| | | // 当前选中的用户房间更改了状态,已经成为占用时,清除选中医疗记录id |
| | | if (item && item.id && item.id === this.curTreatId) { |
| | | console.log('当前选中的用户房间更改了状态,已经成为占用时,清除选中医疗记录id') |
| | | localStorage.removeItem('curTreatId') |
| | | this.curTreatId = '' |
| | | } |
| | | // 只要更改为空闲就重置参数 |
| | | if (status === 0) { |
| | | console.log('更改为空闲') |
| | | if (params.status === 0) { |
| | | console.log('房间更改为空闲') |
| | | // 重置默认已使用客人的参数 |
| | | isUseDefault = false |
| | | isUseDefaultChg = 0 |
| | | this.isShowAppellationName = true |
| | | // this.isShowAppellationName = true |
| | | } |
| | | // console.log('8888888888888888888888888888888888', res) |
| | | cb && cb() |
| | | |
| | | // 30s后解锁 20240201 long |
| | | this.setStatusLockTimer = setInterval(() => { |
| | | this.setStatusLock = false |
| | | }, this.setStatusLockDuration) |
| | | }, () => { |
| | | setTimeout(() => { |
| | | this.setStatusLock = false |
| | | }, 1000) |
| | | }) |
| | | }, |
| | | // 重置状态 |
| | |
| | | }, |
| | | // 更改房间状态(重置状态的更改方法) |
| | | changeStatus(opt) { |
| | | var { occupyInfoView, roomInfo } = this |
| | | console.log(opt.statusTx, opt.status) |
| | | // var { occupyInfoView, roomInfo } = this |
| | | console.log('============================>重置房间状态', opt.statusTx, opt.status) |
| | | // if (roomInfo && opt.status * 1 == roomInfo.status) { |
| | | // return |
| | | // } |
| | | // 清除选中医疗记录id |
| | | localStorage.removeItem('curTreatId') |
| | | this.curTreatId = '' |
| | | // localStorage.removeItem('curTreatId') |
| | | // this.curTreatId = '' |
| | | // 清除选中医疗记录ids数组 |
| | | localStorage.removeItem('curTreatIds') |
| | | this.curTreatIds = '' |
| | | // 变更房间状态方法 |
| | | this.changeStatusFn({}, opt.status, () => { |
| | | // 刷新详情 |
| | | this.getData() |
| | |
| | | }, |
| | | // 选择客户确定 |
| | | selectCustomerSubmit(opt) { |
| | | console.log('submit', opt) |
| | | console.log('=======================>submit', opt) |
| | | // 确定选择的用户,记录id |
| | | localStorage.setItem('curTreatId', opt.id) |
| | | this.curTreatId = opt.id |
| | | // localStorage.setItem('curTreatId', opt.id) |
| | | // this.curTreatId = opt.id |
| | | // 当前选择客户的数组增加客户 |
| | | this.occupyInfoViewArrDataHandle('add', opt) |
| | | // 重置房间状态 |
| | | if (this.roomInfo && this.roomInfo.status) { |
| | | this.changeStatusFn({}, 0, () => { |
| | | // 刷新详情 |
| | | this.getData() |
| | | }) |
| | | } |
| | | // if (this.roomInfo) { |
| | | // this.changeStatusFn({}, 0, () => { |
| | | // // 刷新详情 |
| | | // this.getData() |
| | | // }) |
| | | // } |
| | | // 关闭弹窗 |
| | | this.$refs['XioCustomerSelect'].hideDialog() |
| | | }, |
| | | // 删除已选择的客户数据 |
| | | cancelCustomerItem(item) { |
| | | // 当前选择客户的数组删除客户 |
| | | this.occupyInfoViewArrDataHandle('cancel', item, true) |
| | | }, |
| | | // 当前选择客户的数组增删处理方法 |
| | | occupyInfoViewArrDataHandle(key, item, isReset) { |
| | | // 增加(选择) |
| | | if (key === 'add') { |
| | | // id数组处理 |
| | | if (this.curTreatIds && this.curTreatIds.length) { |
| | | // 当前治疗记录id没有所选用户的治疗记录id |
| | | var flag = this.curTreatIds.find((o) => { return o === item.id }) |
| | | if (!flag) { |
| | | this.curTreatIds.push(item.id) |
| | | } |
| | | // 缓存 |
| | | this.setLocalCurTreatIds() |
| | | } |
| | | if (this.curTreatIds && !this.curTreatIds.length) { |
| | | this.curTreatIds.push(item.id) |
| | | // 缓存 |
| | | this.setLocalCurTreatIds() |
| | | } |
| | | // 数组数据处理 |
| | | // if (this.occupyInfoViewArr && this.occupyInfoViewArr.length) { |
| | | // this.occupyInfoViewArr.push(item) |
| | | // } |
| | | } |
| | | // 删除 |
| | | if (key === 'cancel') { |
| | | // id数组处理 |
| | | if (this.curTreatIds && this.curTreatIds.length) { |
| | | // 深复制 |
| | | var ids = JSON.parse(JSON.stringify(this.curTreatIds)) |
| | | this.curTreatIds = ids.filter((o) => { return o !== item.id }) |
| | | // 缓存 |
| | | this.setLocalCurTreatIds() |
| | | // 刷新 |
| | | if (isReset) { |
| | | // 刷新详情 |
| | | this.getData() |
| | | } |
| | | } |
| | | // 数组数据处理 |
| | | // if (this.occupyInfoViewArr && this.occupyInfoViewArr.length) { |
| | | // // 深复制 |
| | | // var arr = JSON.parse(JSON.stringify(this.occupyInfoViewArr)) |
| | | // this.occupyInfoViewArr = arr.filter((o) => { o.id !== item.id }) |
| | | // } |
| | | } |
| | | }, |
| | | // 设置本地缓存ids数组 |
| | | setLocalCurTreatIds() { |
| | | localStorage.setItem('curTreatIds', JSON.stringify(this.curTreatIds)) |
| | | } |
| | | } |
| | | } |
| | |
| | | .page{ |
| | | overflow: auto; |
| | | } |
| | | .page_header_placeholer { |
| | | height: 100px; |
| | | width: 100%; |
| | | display: block; |
| | | flex-shrink: 0; |
| | | } |
| | | .page_header { |
| | | position: fixed; |
| | | top: 0; |
| | | left: 23px; |
| | | right: 23px; |
| | | z-index: 1; |
| | | } |
| | | .page_header .reset_btn { |
| | | width: 200px; |
| | | height: 60px; |
| | |
| | | border: 0; |
| | | margin-left: 20px; |
| | | } |
| | | .page_container.over-width { |
| | | width: 150%; |
| | | } |
| | | .page_container .main { |
| | | /* height: 100%; */ |
| | | border-radius: 10px; |
| | |
| | | font-size: 14px; |
| | | /* text-align: center; */ |
| | | font-family: Roboto; |
| | | position: relative; |
| | | } |
| | | .page_container.over-width .main { |
| | | margin-right: 50px; |
| | | } |
| | | .page_container.over-width .main:last-child { |
| | | margin-right: 0; |
| | | } |
| | | .page_container .main .cancel_icon_block { |
| | | width: 50px; |
| | | height: 50px; |
| | | position: absolute; |
| | | top: 12px; |
| | | right: 11px; |
| | | z-index: 1; |
| | | } |
| | | .page_container .main .cancel_icon_block .img { |
| | | width: 100%; |
| | | height: 100%; |
| | | } |
| | | .page_container .main .room_title { |
| | | line-height: 50px; |
| | |
| | | color: rgba(154,154,154,1); |
| | | } |
| | | .page_container .main .btn_box { |
| | | margin-top: 130px; |
| | | /* margin-top: 130px; */ |
| | | margin-bottom: 40px; |
| | | } |
| | | .page_container .main .btn_box__item { |
| | | width: 250px; |
| | |
| | | margin-left: 30px; |
| | | /* height: 100%; */ |
| | | } |
| | | .page_container.over-width .right_room_info { |
| | | margin-bottom: 58px; |
| | | } |
| | | .page_container.over-width .right_room_info:last-child { |
| | | margin-bottom: 0; |
| | | } |
| | | .page_container .right_block { |
| | | 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> |