index.vue 18 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745
  1. <template>
  2. <view class="page" :style="{'padding-top':mt+'px'}">
  3. <c-nav-bar title="房态" :showIcon="false" :titleStyle="titleStyle" bgColor="transparent"></c-nav-bar>
  4. <view class="leftFixed" v-if="leftData.length!=0" :style="{'top':(mt+2)+'px'}">
  5. <view class="tj" :style="{'top':mt+'px'}"></view>
  6. <view class="year">
  7. <u-icon name="calendar-fill" color="#B9C2D2" size="40" style="margin-bottom:10rpx;"></u-icon>
  8. <text style="font-size: 24rpx;">2024</text>
  9. </view>
  10. <view v-for="(item,key,i) in leftData" :key="i"
  11. :class="indexArr[i]!=key.split('-')[0]?'mg0 fixedItem':'fixedItem'">
  12. <view class="head" v-if="indexArr[i]==key.split('-')[0]" style="margin-top: 16rpx;">
  13. <!-- <text>{{key.split('-')[0]}}F</text> -->
  14. <view class="roomType" :style="{'left':scrollLeft+'px'}" v-if="key.split('-')[2]">{{key.split('-')[1]}}-{{key.split('-')[2]}}</view>
  15. <view class="roomType" :style="{'left':scrollLeft+'px'}" v-else>{{key.split('-')[1]}}</view>
  16. <view class="rightIcon" @click="open(i,key.split('-')[0],false)" v-if="opens[i]">
  17. <text>收起</text>
  18. <u-icon name="arrow-up-fill" size="18" style="margin-left: 10rpx;"></u-icon>
  19. </view>
  20. <view class="rightIcon" @click="open(i,key.split('-')[0],true)" v-else>
  21. <text>展开</text>
  22. <u-icon name="arrow-down-fill" size="18" style="margin-left: 10rpx;"></u-icon>
  23. </view>
  24. </view>
  25. <template v-if="opens[i]">
  26. <!-- <view class="roomType" :style="{'left':scrollLeft+'px'}">{{key.split('-')[1]}}</view> -->
  27. <text v-for="(item2,index2) in item" class="roomNumber">
  28. {{item2.roomNumber}}
  29. </text>
  30. </template>
  31. </view>
  32. </view>
  33. <view>
  34. <view class="content">
  35. <view class="tj" :style="{'top':mt+'px'}">
  36. <view class="item">
  37. <text class="label">{{info.bookRooms||0}}</text>
  38. <text>待入住</text>
  39. </view>
  40. <view class="item">
  41. <text class="label">{{info.checkinRooms||0}}</text>
  42. <text>已入住</text>
  43. </view>
  44. <view class="item">
  45. <text class="label">{{info.checkoutRooms||0}}</text>
  46. <text>已退房</text>
  47. </view>
  48. </view>
  49. <view class="date">
  50. <view class="item">
  51. <u-icon name="calendar-fill" color="#B9C2D2" size="40" style="margin-bottom:10rpx;"></u-icon>
  52. <text style="font-size: 24rpx;">2024</text>
  53. </view>
  54. <view class="item" v-for="(item,keynme,index) in xdata" :key="index">
  55. <text>{{item.rentDate.substring(5)}}</text>
  56. <text>{{weeks[item.rentWeek]}}</text>
  57. <text>剩{{item.spareRooms||0}}间</text>
  58. </view>
  59. </view>
  60. <view style="height:18rpx"></view>
  61. <view class="floorData" v-if="leftData.length!=0">
  62. <view v-for="(item,key,i) in leftData" :key="i">
  63. <view class="head" v-if="indexArr[i]==key.split('-')[0]" style="opacity: 0;">
  64. <!-- <text>{{key.split('-')[0]}}F</text> -->
  65. <view class="roomType" :style="{'left':scrollLeft+'px'}" v-if="key.split('-')[2]">{{key.split('-')[1]}}-{{key.split('-')[2]}}</view>
  66. <view class="roomType" :style="{'left':scrollLeft+'px'}" v-else>{{key.split('-')[1]}}</view>
  67. <view class="rightIcon" @click="open(i,key.split('-')[0],false)" v-if="opens[i]">
  68. <text>收起</text>
  69. <u-icon name="arrow-up-fill" size="18" style="margin-left: 10rpx;"></u-icon>
  70. </view>
  71. <view class="rightIcon" @click="open(i,key.split('-')[0],true)" v-else>
  72. <text>展开</text>
  73. <u-icon name="arrow-down-fill" size="18" style="margin-left: 10rpx;"></u-icon>
  74. </view>
  75. </view>
  76. <template v-if="opens[i]">
  77. <!-- <view class="roomType" style="opacity: 0;">{{key.split('-')[1]}}</view> -->
  78. <view class="table">
  79. <view class="tr" v-for="(item2,index2) in item" :key="index2">
  80. <view class="td" :style="{'left':scrollLeft+'px'}">{{item2.roomNumber}}</view>
  81. <view class="td" v-for="(roomData,ind) in xdata" :key="ind"
  82. :class="'s'+delDataStatus(item2.roomNumber,item2.houseBaseId,roomData.roomDataList,'status')">
  83. <!-- 空置房-->
  84. <template
  85. v-if="delDataStatus(item2.roomNumber,item2.houseBaseId,roomData.roomDataList,'status') == 1">
  86. <view v-if="disTabCli(roomData) == 1" class="cellBox disT">
  87. ¥{{item2.roomNumber|delDataStatus(item2.houseBaseId,roomData.roomDataList,'price')}}
  88. </view>
  89. <view v-else
  90. @click="check(item2.roomNumber,item2.houseBaseId,roomData,i + '-'+index2+ '-'+ ind)"
  91. class="cellBox">
  92. ¥{{item2.roomNumber|delDataStatus(item2.houseBaseId,roomData.roomDataList,'price')}}
  93. </view>
  94. </template>
  95. <template v-else>
  96. <view
  97. @click="tabCli(item2.roomNumber,item2.houseBaseId,roomData.roomDataList)"
  98. class="tdP">
  99. <text>{{item2.roomNumber|delDataStatus(item2.houseBaseId,roomData.roomDataList,'guestName')}}</text>
  100. <text>{{item2.roomNumber|delDataStatus(item2.houseBaseId,roomData.roomDataList,'status')}}</text>
  101. </view>
  102. </template>
  103. <!-- 点击时状态 -->
  104. <view class="cover" v-if="checkPosition.indexOf(i + '-'+index2+ '-'+ ind) > -1"
  105. @click="check(item2.roomNumber,item2.houseBaseId,roomData,i + '-'+index2+ '-'+ ind)">
  106. <u-icon name="checkbox-mark" size="36" color="#fff"></u-icon>
  107. </view>
  108. </view>
  109. </view>
  110. </view>
  111. </template>
  112. </view>
  113. </view>
  114. </view>
  115. <view class="opration" v-if="checkDataRoomId.length!=0">
  116. <text @click="areaShow=true">关房</text>
  117. <text @click="createOrder()">预订</text>
  118. </view>
  119. </view>
  120. <Tabbar :tabbarIndex="1"></Tabbar>
  121. <!-- 关房 -->
  122. <u-picker :itemHeight="88" :immediateChange="true" :show="areaShow" :columns="areaTxt" title="房态选择"
  123. :defaultIndex="passengerDefault" @cancel="areaShow=false;clearData();"
  124. @confirm="passengerConfirm"></u-picker>
  125. </view>
  126. </template>
  127. <script>
  128. var that;
  129. export default {
  130. data() {
  131. return {
  132. homestayId: uni.getStorageSync('homestayId') || 0,
  133. areaShow: false,
  134. passengerDefault: [0],
  135. info: {},
  136. areaTxt: [
  137. ['清洁中', '暂停使用', '保留房', '空置房']
  138. ],
  139. area: [{
  140. label: '清洁中',
  141. id: 4
  142. }, {
  143. label: '暂停使用',
  144. id: 5
  145. }, {
  146. label: '保留房',
  147. id: 6
  148. }, {
  149. label: '空置房',
  150. id: 0
  151. }],
  152. titleStyle: {
  153. fontSize: '34rpx',
  154. fontWeight: "bold",
  155. },
  156. dateArr: [1, 2, 3, 4, 5],
  157. xdata: [], //纵向列
  158. leftData: [], //横向列,
  159. indexArr: [], //楼层索引,
  160. indexHouseBaseIdArr:[],
  161. indexNameArr: [], //楼层Id索引,
  162. opens: [],
  163. statusTxt: {
  164. '-2': '待支付',
  165. '-1': '待确定',
  166. '1': '已预订',
  167. '2': '已入住',
  168. '3': '已退房',
  169. '4': '清洁中',
  170. '5': '暂停使用',
  171. '6': '保留房',
  172. },
  173. weeks: ["周日", "周一", "周二", "周三", "周四", "周五", "周六"],
  174. checkPosition: [],
  175. checkDataDate: [],
  176. checkPrice: [],
  177. checkDataRoomId: [],
  178. checkStatus: '',
  179. scrollLeft: 0
  180. }
  181. },
  182. mounted() {
  183. that = this;
  184. this.getLeftData();
  185. this.getData();
  186. this.getTj();
  187. },
  188. filters: {
  189. delDataStatus(roomNumber, id, roomId, name) {
  190. for (let i = 0; i < roomId.length; i++) {
  191. if (id == roomId[i].houseBaseId && roomNumber == roomId[i].roomNumber) {
  192. if (name == "status") {
  193. return that.statusTxt[roomId[i][name]]
  194. } else {
  195. return roomId[i][name] || ''
  196. }
  197. }
  198. }
  199. },
  200. },
  201. methods: {
  202. init() {
  203. this.getLeftData();
  204. this.getData();
  205. this.$forceUpdate();
  206. },
  207. getTj() {
  208. this.$api.get('/merchant/hotel/room/state/getRoomStateCount', {
  209. homestayId: this.homestayId
  210. }).then(res => {
  211. if (res.data.code == 0) {
  212. this.info = res.data.data;
  213. }
  214. })
  215. },
  216. scroll(e) {
  217. //this.scrollLeft = e.detail.scrollLeft; // div 到左边的距离
  218. },
  219. //关房
  220. tabCli(roomNumber, id, roomId) {
  221. if (roomNumber) {
  222. let obj = {};
  223. for (let i = 0; i < roomId.length; i++) {
  224. if (id == roomId[i].houseBaseId && roomNumber == roomId[i].roomNumber) {
  225. obj = roomId[i];
  226. }
  227. }
  228. //已预订,已入住 待确认 待支付
  229. if (obj.status == 1 || obj.status == 2 || obj.status == -1 || obj.status == -2) {
  230. let orderId = obj.orderId;
  231. uni.navigateTo({
  232. url: "/pages/house/orderInfo?orderId=" + orderId
  233. })
  234. //到详情
  235. } else {
  236. //更改状态
  237. this.areaShow = true;
  238. this.checkDataRoomId = [obj.id];
  239. this.checkStatus = obj.status;
  240. }
  241. }
  242. },
  243. //确定关房
  244. passengerConfirm(e) {
  245. let status = this.area[e.indexs[0]].id;
  246. this.$api.post('/merchant/hotel/room/state/updRoomState', {
  247. roomIds: this.checkDataRoomId,
  248. status: status
  249. }).then(res => {
  250. if (res.data.code == 0) {
  251. this.clearData();
  252. this.areaShow = false;
  253. this.init()
  254. } else {
  255. this.$showToast(res.data.msg);
  256. }
  257. })
  258. },
  259. //新增订单
  260. createOrder() {
  261. this.clearData()
  262. uni.navigateTo({
  263. url: '/pages/house/createOrder?roomId=' + this.checkDataRoomId
  264. })
  265. },
  266. //展开收起
  267. open(i, F, val) {
  268. this.opens[i] = !this.opens[i];
  269. let list = this.leftData;
  270. for (var i = 0; i < Object.keys(list).length; i++) {
  271. var index = i; // 索引
  272. var key = Object.keys(list)[i].split('-')[0]; // key
  273. if (F == key) {
  274. this.opens[index] = val;
  275. }
  276. }
  277. this.$forceUpdate();
  278. },
  279. delDataStatus(roomNumber, id, roomId, name) {
  280. for (let i = 0; i < roomId.length; i++) {
  281. if (id == roomId[i].houseBaseId && roomNumber == roomId[i].roomNumber) {
  282. return roomId[i][name] + 1;
  283. }
  284. }
  285. },
  286. disTabCli(roomData) {
  287. if (new Date(roomData.rentDate).Format('yyyy-MM-dd') < new Date().Format('yyyy-MM-dd')) {
  288. return 1
  289. }
  290. },
  291. clearData() {
  292. setTimeout(() => {
  293. this.checkDataDate = [];
  294. this.checkPrice = [];
  295. this.checkDataRoomId = [];
  296. this.checkPosition = [];
  297. }, 1500);
  298. },
  299. //选择房间
  300. check(roomNumber, id, item, position) {
  301. for (let i = 0; i < item.roomDataList.length; i++) {
  302. if (
  303. id == item.roomDataList[i].houseBaseId &&
  304. roomNumber == item.roomDataList[i].roomNumber
  305. ) {
  306. //宫格位置标识
  307. if (item.roomDataList[i].status == 0) {
  308. if (this.checkPosition.indexOf(position) < 0) {
  309. this.checkPosition.push(position);
  310. } else {
  311. let index = this.checkPosition.findIndex(
  312. (pos) => pos == position
  313. ); //选中的索引位置
  314. this.checkPosition.splice(index, 1);
  315. }
  316. //房间id
  317. if (this.checkDataRoomId.indexOf(item.roomDataList[i].id) < 0) {
  318. this.checkDataRoomId.push(item.roomDataList[i].id);
  319. } else {
  320. let index = this.checkDataRoomId.findIndex(
  321. (roomId) => roomId == item.roomDataList[i].id
  322. );
  323. this.checkDataRoomId.splice(index, 1);
  324. }
  325. //日期
  326. if (this.checkPosition.indexOf(position) > -1) {
  327. this.checkDataDate.push(item.rentDate);
  328. this.checkPrice.push(item.roomDataList[i].price)
  329. } else {
  330. let index = this.checkDataDate.findIndex(
  331. (date) => date == item.rentDate
  332. );
  333. this.checkDataDate.splice(index, 1);
  334. //价格
  335. let index2 = this.checkPrice.findIndex(
  336. (price) => price == item.price
  337. );
  338. this.checkPrice.splice(index2, 1);
  339. }
  340. if (this.checkPosition.length == 0) {
  341. this.checkDataDate = [];
  342. this.checkPrice = [];
  343. }
  344. }
  345. }
  346. }
  347. },
  348. getLeftData() {
  349. this.$api.get(`/merchant/hotel/room/state/getHouseCategoryData/${this.homestayId}`).then(res => {
  350. if (res.data.code == 0) {
  351. // for (let i; i < res.data.data.length; i++) {
  352. // res.data.data[i].open = true;
  353. // }
  354. for (let i in res.data.data) {
  355. console.log(i)
  356. console.log(res.data.data)
  357. let F = i.split('-')[0];
  358. let houseBaseId=res.data.data[i][0].houseBaseId;
  359. //indexNameArr
  360. if (this.indexArr.indexOf(F)||this.indexHouseBaseIdArr.indexOf(houseBaseId) < 0) {
  361. this.indexArr.push(F);
  362. this.indexHouseBaseIdArr.push(houseBaseId)
  363. this.opens.push(true)
  364. } else {
  365. this.indexArr.push('');
  366. this.indexHouseBaseIdArr.push('')
  367. this.opens.push(true)
  368. }
  369. }
  370. this.leftData = res.data.data;
  371. }
  372. })
  373. },
  374. getData() {
  375. this.$api.get('/merchant/hotel/room/state/getDateRoomList', {
  376. homestayId: this.homestayId,
  377. nowDate: '',
  378. status: ''
  379. }).then(res => {
  380. if (res.data.code == 0) {
  381. this.xdata = res.data.data;
  382. }
  383. })
  384. }
  385. }
  386. }
  387. </script>
  388. <style scoped lang="less">
  389. .opration {
  390. height: 140rpx;
  391. padding: 0 30rpx;
  392. background-color: #fff;
  393. position: fixed;
  394. bottom: 0;
  395. left: 0;
  396. width: 100%;
  397. z-index: 9;
  398. display: flex;
  399. align-items: center;
  400. justify-content: space-between;
  401. box-sizing: border-box;
  402. text {
  403. display: inline-block;
  404. width: 160rpx;
  405. text-align: center;
  406. line-height: 56rpx;
  407. border: 1rpx solid #D1D1D1;
  408. height: 56rpx;
  409. border-radius: 64rpx;
  410. font-size: 24rpx;
  411. color: #999;
  412. &:last-child {
  413. background-color: #1372FF;
  414. color: #fff;
  415. border: 0;
  416. }
  417. }
  418. }
  419. .page {
  420. background: #F3F4F4;
  421. padding-bottom: 40rpx;
  422. box-sizing: border-box;
  423. overflow-x: auto;
  424. .content {}
  425. }
  426. .tj {
  427. padding: 30rpx 0;
  428. text-align: center;
  429. height: 140rpx;
  430. box-sizing: border-box;
  431. position: absolute;
  432. width: 750rpx;
  433. left: 0;
  434. display: flex;
  435. justify-content: space-between;
  436. background-color: #fff;
  437. .item {
  438. display: flex;
  439. flex-direction: column;
  440. align-items: center;
  441. width: 100px;
  442. flex: 1;
  443. }
  444. text {
  445. font-size: 24rpx;
  446. color: #999;
  447. &.label {
  448. font-size: 40rpx;
  449. color: #333;
  450. font-weight: bold;
  451. }
  452. }
  453. }
  454. .date {
  455. display: flex;
  456. position: relative;
  457. border: 1rpx solid #E9F0F5;
  458. // padding-bottom: 19rpx;
  459. margin-top: 140rpx;
  460. .item {
  461. min-width: 140rpx;
  462. width: 140rpx;
  463. height: 136rpx;
  464. display: flex;
  465. flex-direction: column;
  466. align-items: center;
  467. justify-content: center;
  468. font-size: 20rpx;
  469. border-right: 1rpx solid #E9F0F5;
  470. background-color: #fff;
  471. &:last-child {
  472. border: 0;
  473. }
  474. text {
  475. &:nth-child(2) {
  476. margin: 6rpx 0;
  477. }
  478. }
  479. }
  480. }
  481. .head,
  482. .roomType {
  483. padding: 0 30rpx 0 0;
  484. display: flex;
  485. width: 400rpx;
  486. // justify-content: space-between;
  487. }
  488. .head {
  489. // position: absolute;
  490. // top: 0;
  491. // left: 0;
  492. margin-top: 16rpx;
  493. width: 750rpx;
  494. display: flex;
  495. box-sizing: border-box;
  496. justify-content: space-between;
  497. &>text {
  498. &:first-child {
  499. font-size: 32rpx;
  500. margin-right: 30rpx;
  501. }
  502. }
  503. .rightIcon {
  504. display: flex;
  505. align-items: center;
  506. font-size: 24rpx;
  507. color: #1F2425;
  508. }
  509. }
  510. .roomType {
  511. // position: absolute;
  512. // top: 40rpx;
  513. // left: 0;
  514. color: #333;
  515. font-size: 24rpx;
  516. position: relative;
  517. padding-left: 34rpx;
  518. margin: 20rpx 0 16rpx;
  519. &::after {
  520. position: absolute;
  521. content: "";
  522. height: 24rpx;
  523. width: 5rpx;
  524. background-color: #1372FF;
  525. left: 20rpx;
  526. top: 4rpx;
  527. z-index: 1;
  528. }
  529. }
  530. .floorData {
  531. .table {
  532. // border: 1rpx solid #E9F0F5;
  533. width: auto;
  534. min-width: 100%;
  535. .tr {
  536. display: flex;
  537. align-items: center;
  538. background-color: #fff;
  539. position: relative;
  540. &:last-child {
  541. border: 0;
  542. }
  543. .td {
  544. display: flex;
  545. align-items: center;
  546. justify-content: center;
  547. position: relative;
  548. width: 140rpx;
  549. min-width: 140rpx;
  550. height: 110rpx;
  551. border-right: 1rpx solid #E9F0F5;
  552. background-color: #fff;
  553. color: #1F2425;
  554. font-size: 24rpx;
  555. box-sizing: border-box;
  556. border-bottom: 1rpx solid #E9F0F5;
  557. .tdP,
  558. .cellBox {
  559. display: flex;
  560. width: 100%;
  561. height: 100%;
  562. flex-direction: column;
  563. align-items: center;
  564. justify-content: center;
  565. &.disT {
  566. color: #ccc;
  567. }
  568. }
  569. &:last-child {
  570. border: 0;
  571. }
  572. //已预订
  573. &.s2 {
  574. background-color: rgba(29, 202, 104, 0.1);
  575. color: rgb(29, 202, 104);
  576. text {
  577. &:first-child {
  578. margin-bottom: 6rpx;
  579. color: #1F2425;
  580. }
  581. }
  582. }
  583. // 已入住
  584. &.s3 {
  585. color: rgb(19, 114, 255);
  586. background-color: rgba(19, 114, 255, 0.1);
  587. text {
  588. &:first-child {
  589. margin-bottom: 6rpx;
  590. color: #1F2425;
  591. }
  592. }
  593. }
  594. // 已退房
  595. &.s4 {
  596. color: rgb(219, 41, 195);
  597. background-color: rgba(219, 41, 195, 0.1);
  598. }
  599. //待确定
  600. &.s0 {
  601. color: rgb(25, 185, 197);
  602. background-color: rgba(25, 185, 197, 0.1);
  603. }
  604. //清洁中
  605. &.s5 {
  606. color: rgb(237, 86, 86);
  607. background-color: rgba(237, 86, 86, 0.1);
  608. }
  609. //暂停使用
  610. &.s6 {
  611. color: rgb(41, 60, 115);
  612. background-color: rgba(41, 60, 115, 0.1);
  613. }
  614. //保留房
  615. &.s7 {
  616. color: rgb(132, 68, 244);
  617. background-color: rgba(132, 68, 244, 0.1);
  618. }
  619. }
  620. }
  621. .cover {
  622. position: absolute;
  623. top: 0;
  624. left: 0;
  625. bottom: 0;
  626. right: 0;
  627. background-color: #1372FF;
  628. color: #fff;
  629. text-align: center;
  630. display: flex;
  631. flex-direction: column;
  632. justify-content: center;
  633. align-items: center;
  634. }
  635. }
  636. }
  637. .small {
  638. padding-top: 68rpx !important;
  639. .roomType {
  640. top: 0 !important;
  641. }
  642. }
  643. .pd0 {
  644. padding: 0 !important;
  645. }
  646. .leftFixed {
  647. width: 72rpx;
  648. position: absolute;
  649. left: 0;
  650. // top: 232rpx;
  651. z-index: 1;
  652. .tj {
  653. width: 0;
  654. position: relative;
  655. }
  656. .year {
  657. min-width: 130rpx;
  658. width: 130rpx;
  659. height: 136rpx;
  660. display: flex;
  661. flex-direction: column;
  662. align-items: center;
  663. justify-content: center;
  664. font-size: 20rpx;
  665. border-right: 1rpx solid #E9F0F5;
  666. background-color: #fff;
  667. margin-bottom: 18rpx;
  668. }
  669. .fixedItem {
  670. display: flex;
  671. flex-direction: column;
  672. .roomNumber {
  673. height: 110rpx;
  674. display: flex;
  675. align-items: center;
  676. border-bottom: 1rpx solid #E9F0F5;
  677. width: 130rpx;
  678. background-color: #fff;
  679. box-shadow: 3px 0 10px #efefef;
  680. box-sizing: border-box;
  681. justify-content: center;
  682. // &:first-child{height: 84rpx;border-top: 1rpx solid #E9F0F5;}
  683. }
  684. }
  685. }
  686. </style>