From c6d3157eb616116c84d35e221ed9c57ef8da0ad6 Mon Sep 17 00:00:00 2001 From: long <515897141@qq.com> Date: 星期四, 01 二月 2024 16:24:11 +0800 Subject: [PATCH] 操作频繁锁(60秒) --- src/pages/room/detail.vue | 197 +++++++++++++++++++++++++++++++++++++------------ 1 files changed, 148 insertions(+), 49 deletions(-) diff --git a/src/pages/room/detail.vue b/src/pages/room/detail.vue index 13df298..b385645 100644 --- a/src/pages/room/detail.vue +++ b/src/pages/room/detail.vue @@ -24,9 +24,11 @@ <div class="page_header_placeholer" /> <!-- 鏈湁瀹夋帓 --> <div v-if="(!occupyInfoViewArr || !occupyInfoViewArr.length) && (!assignTreatListView || !assignTreatListView.length)" class="page_container flex flex-1"> - <div class="main 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"> @@ -87,7 +89,7 @@ <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" class="cancel_icon_block" @click="cancelCustomerItem(item)"> + <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> <XioRoomGuestInfoBox :ref="`XioRoomGuestInfoBox_${item.id}`" :room-info="roomInfo" :occupy-info-view="item" :off-narcosis-ids="offNarcosisIds" @setStatus="setComStatus" /> @@ -95,7 +97,7 @@ </div> <div class="right flex flex-col"> <div v-for="(item,index) in occupyInfoViewArr" :key="index" class="flex-1 right_room_info"> - <XioRoomInfoBlock ref="XioRoomInfoBlock" :occupy-info-view="item" /> + <XioRoomInfoBlock ref="XioRoomInfoBlock" :occupy-info-view="item" :occupy-info-view-arr="occupyInfoViewArr" /> </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" /> @@ -154,22 +156,24 @@ timeObj: {}, // week锛氭槦鏈燂紝date锛氬勾鏈堟棩锛宼imeMin锛氭椂鍒嗭紝time锛氭椂鍒嗙锛宼imeStamp锛氭椂闂存埑 curTreatId: '', curTreatIds: '', // 宸查�変腑鐨勬不鐤楄褰昳d鏁扮粍 - offNarcosisIds: [] // 鏄惁宸查�氱煡鍗搁夯鐨勭敤鎴穒d鏁扮粍 + offNarcosisIds: [], // 鏄惁宸查�氱煡鍗搁夯鐨勭敤鎴穒d鏁扮粍 // isShowAppellationName: true // 鏄惁鏄剧ず绉拌皳 + + // 60绉掑垏鎹㈢姸鎬侀攣 鈫撯啌鈫撯啌鈫撯啌鈫撯啌鈫撯啌 + setStatusLock: false, // 鏇存柊鐘舵�侀攣 + setStatusLockDuration: 60000, // 鏇存柊鐘舵�侀攣鏃堕棿 + setStatusLockTimer: null + // 60绉掑垏鎹㈢姸鎬侀攣 鈫戔啈鈫戔啈鈫戔啈鈫戔啈鈫戔啈 } }, computed: { // 褰撳墠宸查�夋嫨鐢ㄦ埛鐨勬暟缁勬暟鎹� occupyInfoViewArr() { - // 缂撳瓨璁板綍 - if (this.curTreatIds && this.curTreatIds.length) { - // todo 瀛樺湪缂撳瓨涓斿瓨鍦ㄥ崰鐢ㄦ暟鎹殑鏃跺�欙紝鏍规嵁鍚庣杩斿洖鍐嶈ˉ鍏呴�昏緫 - return this.getCurTreatArr(this.curTreatIds) + if (this.occupyInfo && this.occupyInfo.length) { + return this.occupyInfoViewArrIdsHandleArr() } else { - // todo 瀛樺湪鍗犵敤鏁版嵁鐨勬椂鍊欙紝鏍规嵁鍚庣杩斿洖鍐嶈ˉ鍏呴�昏緫 - if (this.occupyInfo) { - this.occupyInfoViewArrIdsHandle(this.occupyInfo) - return [this.occupyInfo] + if (this.curTreatIds && this.curTreatIds.length) { + return this.getCurTreatArr(this.curTreatIds) } else { if ((!isUseDefault || (isUseDefault && isUseDefaultChg === 0)) && this.assignTreatList && this.assignTreatList.length) { isUseDefault = true @@ -195,7 +199,7 @@ } else { // 杩樻病浣跨敤榛樿瀹汉鍊兼垨鑰呭凡浣跨敤榛樿瀹汉鍊艰繕娌℃敼鍙樼姸鎬侊紙閫傞厤杞锛� if ((!isUseDefault || (isUseDefault && isUseDefaultChg === 0)) && this.assignTreatList && this.assignTreatList.length) { - isUseDefault = true + // isUseDefault = true return this.assignTreatList[0] // 宸蹭娇鐢ㄨ繃榛樿瀹汉鍊� } else { @@ -273,6 +277,32 @@ this.curTreatIds.push(item.id) this.setLocalCurTreatIds() }, + // 鍒濆榛樿閫夋嫨鐨刬d鏁扮粍澶勭悊 + 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 + } + }, // 璁剧疆宸查�氱煡鍗搁夯id鏁扮粍 setLocalStorageOffNarcosisIds() { localStorage.setItem('offNarcosisIds', JSON.stringify(this.offNarcosisIds)) @@ -320,6 +350,13 @@ }) } }) + // 鍩烘湰涓嶄細鍑虹幇杩欑鎯呭喌锛屼絾鏄互闃蹭竾涓�锛岃嫢鏈湴缂撳瓨id瀛樺湪锛屼絾瀵逛笉涓婂垪琛ㄥ垯缂撳瓨绗竴鏉℃暟鎹甶d + if (!arr.length) { + arr.push(this.assignTreatList[0]) + this.curTreatIds = [] + this.curTreatIds.push(this.assignTreatList[0].id) + this.setLocalCurTreatIds() + } } return arr }, @@ -360,6 +397,7 @@ userName: '榛勫槈鑽�', gender: 1, hempStatus: 2, + treatRoomStatus: 0, ciq: '123', adviserName: 'a鍚�', aDoctorName: 'b鍚�', @@ -373,6 +411,7 @@ userName: '鏉庡痉鍗�', gender: 1, hempStatus: 2, + treatRoomStatus: 0, ciq: '456', adviserName: 'd鍚�', aDoctorName: 'e鍚�', @@ -386,6 +425,7 @@ userName: '鐚涘鍙�', gender: 2, hempStatus: 2, + treatRoomStatus: 0, ciq: '789', adviserName: 'g鍚�', aDoctorName: 'h鍚�', @@ -408,18 +448,17 @@ o.appellationName = o.userName[0] + `${o.gender ? ['濂冲+', '鍏堢敓', '濂冲+'][o.gender] : '濂冲+'}` }) } - // todo 宸插崰鐢ㄧ敤鎴锋暟鎹鐞嗭紝寰呭悗绔慨鏀瑰啀澶勭悊 - 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] : '濂冲+'}` + }) } - // todo 宸叉湁鍗犵敤鐨勶紝鏇存敼宸蹭娇鐢ㄩ粯璁ゅ浜虹殑鐘舵�� - res.data.occupyInfo && (isUseDefaultChg = 1) - res.data.occupyInfo && (isUseDefault = 1) - // todo 鍗犵敤淇℃伅娌荤枟鏃堕棿澶勭悊 - 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] } @@ -497,17 +536,71 @@ }, // 鏀瑰彉鎴块棿鐘舵�佸紓姝ユ柟娉� 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, @@ -523,28 +616,25 @@ console.log('鍦ㄥ凡鏈夐粯璁ゅ浜虹殑鎯呭喌涓嬶紝鏀瑰彉鐘舵�佹洿鏀规爣璇�') isUseDefaultChg = 1 } - // 褰撳墠閫変腑鐨勭敤鎴锋埧闂存洿鏀逛簡鐘舵�侊紝宸茬粡鎴愪负鍗犵敤鏃讹紝娓呴櫎閫変腑鍖荤枟璁板綍id - // if (item && item.id && item.id === this.curTreatId) { - // console.log('褰撳墠閫変腑鐨勭敤鎴锋埧闂存洿鏀逛簡鐘舵�侊紝宸茬粡鎴愪负鍗犵敤鏃讹紝娓呴櫎閫変腑鍖荤枟璁板綍id') - // localStorage.removeItem('curTreatId') - // this.curTreatId = '' - // } // 鍙鏇存敼涓虹┖闂插氨閲嶇疆鍙傛暟 - if (status === 0) { + if (params.status === 0) { console.log('鎴块棿鏇存敼涓虹┖闂�') // 閲嶇疆榛樿宸蹭娇鐢ㄥ浜虹殑鍙傛暟 isUseDefault = false isUseDefaultChg = 0 // this.isShowAppellationName = true } - // todo 鐢ㄦ埛缁撴潫娌荤枟鍚庯紝灏嗗叾浠庣紦瀛樹腑鍒犻櫎, 寰呮祴璇� - if (item && item.id && this.curTreatIds && this.curTreatIds.length && status === 0) { - console.log('褰撳墠鐢ㄦ埛鎵�鍦ㄦ埧闂存洿鏀逛簡鐘舵�佷负缁撴潫锛屾竻闄ゅ綋鍓嶇殑鍖荤枟璁板綍id') - // 褰撳墠閫夋嫨瀹㈡埛鐨勬暟缁勫垹闄ゅ鎴� - this.occupyInfoViewArrDataHandle('cancel', item) - } // console.log('8888888888888888888888888888888888', res) cb && cb() + + // 30s鍚庤В閿� 20240201 long + this.setStatusLockTimer = setInterval(() => { + this.setStatusLock = false + }, this.setStatusLockDuration) + }, () => { + setTimeout(() => { + this.setStatusLock = false + }, 1000) }) }, // 閲嶇疆鐘舵�� @@ -597,12 +687,12 @@ // 褰撳墠閫夋嫨瀹㈡埛鐨勬暟缁勫鍔犲鎴� this.occupyInfoViewArrDataHandle('add', opt) // 閲嶇疆鎴块棿鐘舵�� - if (this.roomInfo) { - this.changeStatusFn({}, 0, () => { - // 鍒锋柊璇︽儏 - this.getData() - }) - } + // if (this.roomInfo) { + // this.changeStatusFn({}, 0, () => { + // // 鍒锋柊璇︽儏 + // this.getData() + // }) + // } // 鍏抽棴寮圭獥 this.$refs['XioCustomerSelect'].hideDialog() }, @@ -622,6 +712,11 @@ if (!flag) { this.curTreatIds.push(item.id) } + // 缂撳瓨 + this.setLocalCurTreatIds() + } + if (this.curTreatIds && !this.curTreatIds.length) { + this.curTreatIds.push(item.id) // 缂撳瓨 this.setLocalCurTreatIds() } @@ -674,6 +769,9 @@ } .page_header_placeholer { height: 100px; + width: 100%; + display: block; + flex-shrink: 0; } .page_header { position: fixed; @@ -751,7 +849,8 @@ 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; -- Gitblit v1.8.0