New file |
| | |
| | | <template> |
| | | <div v-if="isShow" class="mask" @click="hideDialog"> |
| | | <div class="xio_room_list_shop_chg_dialog" @click.stop="noop"> |
| | | <div class="title">请选择门店</div> |
| | | <div class="list flex flex-ver flex-wrap"> |
| | | <div v-for="(item,index) in shopList" :key="index" class="list_item flex flex-center" :class="[item.act?'act':'']" @click="chooseHandle(item)">{{ item.name }}</div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </template> |
| | | |
| | | <script> |
| | | import Req from '../../utils/jun_httpInstall' // http 请求 |
| | | export default { |
| | | name: 'XioRoomStatusChg', |
| | | props: { |
| | | isActive: { |
| | | type: Boolean, |
| | | default: false |
| | | } |
| | | }, |
| | | data() { |
| | | return { |
| | | shopList: [], |
| | | shopId: '', |
| | | isShow: false |
| | | } |
| | | }, |
| | | methods: { |
| | | noop() { |
| | | return |
| | | }, |
| | | // 确认 |
| | | // confirm() { |
| | | // this.isShow = false |
| | | // this.$emit('confirm', { }) |
| | | // }, |
| | | // 选择门店 |
| | | chooseHandle(item) { |
| | | this.shopId = item.id |
| | | if (this.shopList && this.shopList.length) { |
| | | this.shopList.forEach((o) => { |
| | | o.act = false |
| | | if (o.id === this.shopId) { |
| | | o.act = true |
| | | } |
| | | }) |
| | | } |
| | | this.isShow = false |
| | | this.$emit('confirm', item) |
| | | }, |
| | | async showShopDialog(shopId) { |
| | | this.shopId = shopId || '' |
| | | this.showDialog() |
| | | await this.getShopList() |
| | | }, |
| | | // 获取门店列表 |
| | | getShopList() { |
| | | var params = {} |
| | | return new Promise((resolve, reject) => { |
| | | Req.http.post({ |
| | | url: 'guide/treat/screen/shop/list', |
| | | data: params, |
| | | udData: { noLoading: true }, |
| | | header: { 'Content-Type': 'application/json' }, |
| | | mockData: { |
| | | code: 100, |
| | | msg: '', |
| | | data: [{ |
| | | name: 'xx', |
| | | id: 'xx' |
| | | }] |
| | | } |
| | | }).then((res) => { |
| | | if (res.data && res.data.length) { |
| | | res.data.forEach((o) => { |
| | | o.act = false |
| | | if (o.id === this.shopId) { |
| | | o.act = true |
| | | } |
| | | }) |
| | | } |
| | | this.shopList = res.data || [] |
| | | resolve(res) |
| | | }) |
| | | }) |
| | | }, |
| | | // 显示弹窗 |
| | | showDialog() { |
| | | this.isShow = true |
| | | }, |
| | | // 关闭弹窗 |
| | | hideDialog() { |
| | | if (!this.shopId) { |
| | | return |
| | | } |
| | | this.isShow = false |
| | | // this.$emit('confirm', { }) |
| | | } |
| | | } |
| | | } |
| | | </script> |
| | | |
| | | <style scoped> |
| | | .xio_room_list_shop_chg_dialog { |
| | | width: 1141px; |
| | | height: 689px; |
| | | /* border-radius: 10px; */ |
| | | background-color: rgba(255,255,255,1); |
| | | border: 1px solid rgba(187,187,187,1); |
| | | position: absolute; |
| | | top: 50%; |
| | | left: 50%; |
| | | transform: translate(-50%, -50%); |
| | | -webkit-transform: translate(-50%, -50%); |
| | | z-index: 1; |
| | | } |
| | | .xio_room_list_shop_chg_dialog .title { |
| | | line-height: 63px; |
| | | color: rgba(16,16,16,1); |
| | | font-size: 45px; |
| | | text-align: center; |
| | | font-family: PingFangSC-medium; |
| | | font-weight: bold; |
| | | padding-top: 31px; |
| | | } |
| | | .xio_room_list_shop_chg_dialog .list { |
| | | margin-top: 50px; |
| | | height: 480px; |
| | | overflow: auto; |
| | | } |
| | | .xio_room_list_shop_chg_dialog .list_item { |
| | | cursor: pointer; |
| | | min-width: 300px; |
| | | height: 100px; |
| | | box-sizing: border-box; |
| | | padding: 0 20px; |
| | | margin-left: 55px; |
| | | margin-bottom: 50px; |
| | | line-height: 73px; |
| | | border-radius: 4px; |
| | | background-color: rgba(229,238,253,1); |
| | | color: rgba(0,10,123,1); |
| | | font-size: 50px; |
| | | text-align: center; |
| | | font-family: Microsoft Yahei; |
| | | } |
| | | .xio_room_list_shop_chg_dialog .list_item.act { |
| | | background-color: #5980FF; |
| | | color: #fff; |
| | | } |
| | | </style> |
New file |
| | |
| | | <template> |
| | | <div v-if="isShow" class="mask" @click="hideDialog"> |
| | | <div class="xio_room_status_chg_dialog" @click.stop="noop"> |
| | | <div class="title">MIC通知卸麻!</div> |
| | | <div class="btn_box flex flex-center"> |
| | | <div class="btn_box_item flex flex-center" @click="confirm"> |
| | | <div class="flex flex-ver"> |
| | | <div class="tx">我已知晓</div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </template> |
| | | |
| | | <script> |
| | | export default { |
| | | name: 'XioRoomStatusChg', |
| | | props: { |
| | | isActive: { |
| | | type: Boolean, |
| | | default: false |
| | | } |
| | | }, |
| | | data() { |
| | | return { |
| | | isShow: false |
| | | } |
| | | }, |
| | | methods: { |
| | | noop() { |
| | | return |
| | | }, |
| | | // 确认 |
| | | confirm() { |
| | | this.isShow = false |
| | | this.$emit('confirm', { }) |
| | | }, |
| | | // 显示弹窗 |
| | | showDialog() { |
| | | this.isShow = true |
| | | }, |
| | | // 关闭弹窗 |
| | | hideDialog() { |
| | | this.isShow = false |
| | | this.$emit('confirm', { }) |
| | | } |
| | | } |
| | | } |
| | | </script> |
| | | |
| | | <style scoped> |
| | | .xio_room_status_chg_dialog { |
| | | width: 1105px; |
| | | min-height: 602px; |
| | | /* border-radius: 10px; */ |
| | | background-color: rgba(255,255,255,1); |
| | | position: absolute; |
| | | top: 50%; |
| | | left: 50%; |
| | | transform: translate(-50%, -50%); |
| | | -webkit-transform: translate(-50%, -50%); |
| | | z-index: 1; |
| | | } |
| | | .xio_room_status_chg_dialog .title { |
| | | line-height: 112px; |
| | | color: rgba(16,16,16,1); |
| | | font-size: 80px; |
| | | text-align: center; |
| | | font-family: PingFangSC-medium; |
| | | font-weight: bold; |
| | | padding-top: 159px; |
| | | } |
| | | .xio_room_status_chg_dialog .btn_box { |
| | | margin-top: 131px; |
| | | } |
| | | .xio_room_status_chg_dialog .btn_box .line { |
| | | width: 100%; |
| | | } |
| | | .xio_room_status_chg_dialog .btn_box_item { |
| | | width: 300px; |
| | | height: 100px; |
| | | line-height: 52px; |
| | | border-radius: 4px; |
| | | background-color: rgba(34,123,235,1); |
| | | color: rgba(255,255,255,1); |
| | | font-size: 36px; |
| | | text-align: center; |
| | | font-family: Microsoft Yahei; |
| | | box-shadow: 0px 2px 6px 0px rgba(206,206,206,0.86); |
| | | } |
| | | /* .xio_room_status_chg_dialog .btn_box_item.white { |
| | | background-color: rgba(255,255,255,1); |
| | | } |
| | | .xio_room_status_chg_dialog .btn_box_item.blue { |
| | | background-color: rgba(46,77,124,1); |
| | | } |
| | | .xio_room_status_chg_dialog .btn_box_item.yellow { |
| | | background-color: rgba(255,199,115,1); |
| | | } |
| | | .xio_room_status_chg_dialog .btn_box_item.gray { |
| | | background-color: rgba(206,206,206,1); |
| | | } */ |
| | | .xio_room_status_chg_dialog .btn_box_item .icon { |
| | | width: 60px; |
| | | height: 60px; |
| | | display: block; |
| | | margin-right: 17px; |
| | | } |
| | | .xio_room_status_chg_dialog .btn_box_item .icon .img { |
| | | width: 100%; |
| | | height: 100%; |
| | | } |
| | | /* .xio_room_status_chg_dialog .btn_box_item .tx { |
| | | line-height: 37px; |
| | | color: rgba(51,51,51,1); |
| | | font-size: 26px; |
| | | text-align: center; |
| | | font-family: PingFangSC-medium; |
| | | } |
| | | .xio_room_status_chg_dialog .btn_box_item .tx.white { |
| | | color: #ffffff; |
| | | } */ |
| | | </style> |
| | |
| | | <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> --> |
| | | <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 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> |
| | |
| | | <XioCustomerSelect ref="XioCustomerSelect" @cancel="selectCustomerCancel" @submit="selectCustomerSubmit" /> |
| | | <!-- 更改房间状态窗 --> |
| | | <XioRoomStatusChg ref="XioRoomStatusChg" @changeStatus="changeStatus" /> |
| | | <!-- MIC通知卸麻 --> |
| | | <XioRoomOffNarcosisNotice ref="XioRoomOffNarcosisNotice" @confirm="offNarcosisNoticeConfirm" /> |
| | | </div> |
| | | </template> |
| | | |
| | |
| | | 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 Req from '../../utils/jun_httpInstall' // http 请求 |
| | | // import xioFn from './utils/xio_fn.js' |
| | | var isUseDefault = false // 是否已使用默认客人 |
| | | var isUseDefaultChg = 0// 已使用默认客人后房间是否有改变状态 |
| | | var offNarcosisIds = [] // 是否已通知卸麻id数组 |
| | | var isOffNarcosisShow = false // 是否显示已通知卸麻弹窗 |
| | | export default { |
| | | name: 'RoomDetail', |
| | | components: { |
| | | XioCustomerSelect, |
| | | XioRoomStatusChg |
| | | XioRoomStatusChg, |
| | | XioRoomOffNarcosisNotice |
| | | }, |
| | | inject: ['noop'], |
| | | data() { |
| | |
| | | assignTreatList: [], |
| | | statusTx: ['空闲', '使用中', '客人休息', '打扫中', '敷麻中'], |
| | | timeObj: {}, // week:星期,date:年月日,timeMin:时分,time:时分秒,timeStamp:时间戳 |
| | | curTreatId: '' |
| | | curTreatId: '', |
| | | isShowAppellationName: true // 是否显示称谓 |
| | | } |
| | | }, |
| | | computed: { |
| | |
| | | console.log('roomDetail mounted') |
| | | // 记录当前的治疗ID |
| | | var curTreatId = localStorage.getItem('curTreatId') |
| | | var localOffNarcosisIds = localStorage.getItem('offNarcosisIds') |
| | | var localIsOffNarcosisShow = localStorage.getItem('isOffNarcosisShow') |
| | | // 获取是否已通知卸麻数组 |
| | | if (localOffNarcosisIds) { |
| | | offNarcosisIds = JSON.parse(localOffNarcosisIds) |
| | | } else { |
| | | offNarcosisIds = [] |
| | | this.setLocalStorageOffNarcosisIds() |
| | | } |
| | | if (localIsOffNarcosisShow) { |
| | | isOffNarcosisShow = localIsOffNarcosisShow |
| | | } |
| | | this.curTreatId = curTreatId || '' |
| | | this.id = this.$route.query.id || '' |
| | | this.init() |
| | |
| | | // 轮询getData,8秒一次 |
| | | this.pollingAjaxFn(this, 'getData', 'detail', 8000) |
| | | // this.getData() |
| | | }, |
| | | // 设置已通知卸麻id数组 |
| | | setLocalStorageOffNarcosisIds() { |
| | | localStorage.setItem('offNarcosisIds', JSON.stringify(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() |
| | | } |
| | | isOffNarcosisShow = true |
| | | localStorage.setItem('isOffNarcosisShow', true) |
| | | }, |
| | | // 显示通知卸麻弹窗 |
| | | showOffNarcosisNotice() { |
| | | // 打开弹窗 |
| | | this.$refs['XioRoomOffNarcosisNotice'].showDialog() |
| | | }, |
| | | // 点击显示隐藏称谓 |
| | | tapAppellationHandle() { |
| | | this.isShowAppellationName = !this.isShowAppellationName |
| | | }, |
| | | // 获取当前治疗信息 |
| | | gatCurTreatInfo() { |
| | |
| | | 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] : '女士'}` |
| | | } |
| | | // 已有占用的,更改已使用默认客人的状态 |
| | | res.data.occupyInfo && (isUseDefaultChg = 1) |
| | |
| | | } |
| | | } |
| | | // console.log('999999999999999999999999999', res) |
| | | var offNarcosisTimer = null |
| | | offNarcosisTimer = setTimeout(() => { |
| | | console.log('================================>', this.occupyInfoView, 'offNarcosisIds:', offNarcosisIds, 'isOffNarcosisShow:', isOffNarcosisShow) |
| | | if (this.occupyInfoView && this.occupyInfoView.hempStatus === 2 && this.occupyInfoView.userId) { |
| | | var flag |
| | | offNarcosisIds && offNarcosisIds.length && (flag = offNarcosisIds.find((o) => { return o === this.occupyInfoView.userId })) |
| | | // flag = isOffNarcosisShow |
| | | if (!flag) { |
| | | this.showOffNarcosisNotice() |
| | | } |
| | | } |
| | | clearTimeout(offNarcosisTimer) |
| | | offNarcosisTimer = null |
| | | }, 500) |
| | | }) |
| | | }, |
| | | // 返回 |
| | |
| | | // 重置默认已使用客人的参数 |
| | | isUseDefault = false |
| | | isUseDefaultChg = 0 |
| | | this.isShowAppellationName = true |
| | | } |
| | | // console.log('8888888888888888888888888888888888', res) |
| | | cb && cb() |
| | |
| | | .page_container .main .room_content .name .tx { |
| | | max-width: 666px; |
| | | margin: auto; |
| | | text-align: center; |
| | | } |
| | | .page_container .main .room_content .name_icon { |
| | | width: 40px; |
| | | height: 40px; |
| | | display: block; |
| | | margin-top: 13px; |
| | | padding: 20px; |
| | | } |
| | | .page_container .main .room_content .name_icon .img { |
| | | width: 100%; |
| | | height: 100%; |
| | | } |
| | | .page_container .main .room_content .ciq { |
| | | line-height: 42px; |
| | |
| | | <img class="img" src="static/imgs/logo_2.png"> |
| | | </div> |
| | | </div> |
| | | <div class="right flex-1 flex flex-jcfe flex-ver"> |
| | | <div class="page_choose_shop"> |
| | | <div class="flex-1 flex flex-center"> |
| | | <div class="select_shop_block flex flex-ver" @click="showChooseShop"> |
| | | <div v-if="!shopId" class="tx">请选择门店</div> |
| | | <div v-if="shopId" class="tx">{{ shopName }}</div> |
| | | <div class="icon_block"> |
| | | <img class="icon" src="static/imgs/down.png"> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | <div class="right flex flex-jcfe flex-ver"> |
| | | <!-- <div class="page_choose_shop"> |
| | | <el-select v-model="shopId" placeholder="请选择" style="width:400px;" clearable @change="getRoomList"> |
| | | <el-option v-for="item in shopList" :key="item.id" :label="item.name" :value="item.id" /> |
| | | </el-select> |
| | | </div> |
| | | </div> --> |
| | | <div class="page_date"> |
| | | <div class="page_week">{{ timeObj.week }}</div> |
| | | <div class="page_day">{{ timeObj.date }}</div> |
| | |
| | | </div> |
| | | </div> |
| | | </div> |
| | | |
| | | <XioRoomListShopChg ref="XioRoomListShopChg" @confirm="confirmShop" /> |
| | | </div> |
| | | </template> |
| | | |
| | |
| | | // import Login from '../utils/jun_login.js' |
| | | import Req from '../../utils/jun_httpInstall' // http 请求 |
| | | // import xioFn from './utils/xio_fn.js' |
| | | // 通知卸麻 |
| | | import XioRoomListShopChg from '@/components/xio_room_list_shop_chg' |
| | | export default { |
| | | name: 'RoomList', |
| | | components: {}, |
| | | components: { |
| | | XioRoomListShopChg |
| | | }, |
| | | inject: ['noop'], |
| | | data() { |
| | | return { |
| | | shopList: [], |
| | | shopId: '', |
| | | shopName: '', |
| | | list: [], |
| | | timeObj: {}// week:星期,date:年月日,timeMin:时分,time:时分秒,timeStamp:时间戳 |
| | | } |
| | |
| | | |
| | | }, |
| | | methods: { |
| | | init() { |
| | | async init() { |
| | | // 计时 |
| | | this.countGetTime(this, 'timeObj', 'list') |
| | | this.getShopList() |
| | | // await this.getShopList() |
| | | // this.getRoomList() |
| | | this.showChooseShop() |
| | | }, |
| | | // 确定选择门店 |
| | | confirmShop(item) { |
| | | this.shopId = item.id |
| | | this.shopName = item.name |
| | | this.getRoomList() |
| | | }, |
| | | // 显示选择门店列表弹窗 |
| | | showChooseShop() { |
| | | // 打开弹窗 |
| | | this.$refs['XioRoomListShopChg'].showShopDialog(this.shopId) |
| | | }, |
| | | // 刷新浏览器页面 |
| | | resetPage() { |
| | |
| | | // 获取门店列表 |
| | | getShopList() { |
| | | var params = {} |
| | | Req.http.post({ |
| | | url: 'guide/treat/screen/shop/list', |
| | | data: params, |
| | | header: { 'Content-Type': 'application/json' }, |
| | | mockData: { |
| | | code: 100, |
| | | msg: '', |
| | | data: [{ |
| | | name: 'xx', |
| | | id: 'xx' |
| | | }] |
| | | } |
| | | }).then((res) => { |
| | | this.shopList = res.data || [] |
| | | return new Promise((resolve, reject) => { |
| | | Req.http.post({ |
| | | url: 'guide/treat/screen/shop/list', |
| | | data: params, |
| | | header: { 'Content-Type': 'application/json' }, |
| | | mockData: { |
| | | code: 100, |
| | | msg: '', |
| | | data: [{ |
| | | name: 'xx', |
| | | id: 'xx' |
| | | }] |
| | | } |
| | | }).then((res) => { |
| | | this.shopList = res.data || [] |
| | | resolve(res) |
| | | }) |
| | | }) |
| | | }, |
| | | // 获取列表 |
| | |
| | | } |
| | | </style> |
| | | <style scoped> |
| | | .page_header .left { |
| | | min-width: 300px; |
| | | } |
| | | .page_date { |
| | | margin-left: 0; |
| | | } |
| | | /* .page_container { |
| | | overflow: hidden; |
| | | } */ |
| | |
| | | margin-bottom: 20px; |
| | | } |
| | | .list_block .list .list__item { |
| | | cursor: pointer; |
| | | padding: 40px 30px; |
| | | border-radius: 100px; |
| | | background-color: rgba(229,238,253,1); |
| | |
| | | text-align: center; |
| | | font-family: Roboto; |
| | | } |
| | | .select_shop_block { |
| | | cursor: pointer; |
| | | } |
| | | .select_shop_block .tx { |
| | | line-height: 50px; |
| | | color: rgba(255,255,255,1); |
| | | font-size: 36px; |
| | | text-align: center; |
| | | font-family: PingFangSC-regular; |
| | | } |
| | | .select_shop_block .icon_block { |
| | | width: 30px; |
| | | height: 30px; |
| | | display: block; |
| | | } |
| | | .select_shop_block .icon_block .icon { |
| | | width: 100%; |
| | | height: 100%; |
| | | } |
| | | </style> |