serviceDetail.vue 22 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770
  1. <template>
  2. <view class="service-detail-page">
  3. <view class="order-main-top">
  4. <view class="order-main-left">
  5. <view class="order-detail-status">
  6. {{ orderBook.status == 3 || orderBook.status == 4 ? '订单已完成' : orderBook.status == 6 ? '订单已取消' : '订单服务中' }}
  7. </view>
  8. <view class="order-detail-des" v-if="orderBook.status == 2 && bookCount >= 1">您剩余{{ bookCount }}次保洁次卡可预约</view>
  9. </view>
  10. <view class="order-main-right">
  11. <view class="service-times">
  12. <text class="current-times">{{ orderBook.servicedTimes }}</text>
  13. /{{ orderBook.serviceTimes }}
  14. </view>
  15. </view>
  16. </view>
  17. <!-- 订单详情信息 -->
  18. <view class="service-info">
  19. <view class="info-title">{{ orderBook.goodsName }} 鲸致生活</view>
  20. <view class="info-content">
  21. <image mode="aspectFill" class="product-img" :src="goods.picUrl"></image>
  22. <view class="info-detail">
  23. <view>规格:1</view>
  24. <view>服务次数:{{ orderBook.serviceTimes }}</view>
  25. <view>未预约次数:{{ noAppoint }}</view>
  26. <view>单价:¥ {{ product.price }} 元</view>
  27. </view>
  28. </view>
  29. </view>
  30. <!-- 次卡列表 -->
  31. <!-- <van-tabs active="{{ activeTab }}" color="#09afff" bind:change="onTabChange">
  32. <van-tab title="未使用" name="1"></van-tab>
  33. <van-tab title="已使用" name="2"></van-tab>
  34. </van-tabs> -->
  35. <view class="appoint-tabs-wrapper">
  36. <view :class="'appoint-tab-item ' + (activeTab == 1 ? 'active' : '')" data-tab="1" @tap="onTabChange">未使用</view>
  37. <view :class="'appoint-tab-item ' + (activeTab == 2 ? 'active' : '')" data-tab="2" @tap="onTabChange">已使用</view>
  38. </view>
  39. <view class="service-list">
  40. <view class="service-item" v-for="(item, index) in serList" :key="index">
  41. <view class="service-item-top">
  42. <view class="item-left">
  43. <image mode="aspectFit" class="ci-img" src="/static/images/icon-ci.png"></image>
  44. <text>服务次卡</text>
  45. </view>
  46. <view class="service-item-status">{{ activeTab == '2' ? '服务已完成' : item.status == 0 ? '未预约' : '待履约' }}</view>
  47. </view>
  48. <view class="service-item-bottom">
  49. <view class="service-time">
  50. <text>预约时间:</text>
  51. <text>{{ item.bookTime }}</text>
  52. </view>
  53. <!-- 0-未预约,1-已预约,2-服务中,3-服务已提供,4-服务已完成,5-取消 未付款,6-退款 orderChannel==25 -->
  54. <view
  55. class="go-appoint"
  56. v-if="item.status === 0 && activeTab == '1' && aftersaleStatus != 1 && aftersaleStatus != 2"
  57. @tap="showAppoint"
  58. :data-id="item.id"
  59. :data-status="item.status"
  60. >
  61. 预约
  62. </view>
  63. <view
  64. class="go-appoint"
  65. v-if="(item.status == 1 || item.status == 7) && activeTab == '1'"
  66. @tap="showAppoint"
  67. :data-id="item.id"
  68. :data-status="item.status"
  69. :data-time="item.bookTime"
  70. >
  71. 修改预约
  72. </view>
  73. <view class="go-appoint" v-if="item.checkAcceptState == 1" @tap="goReVisit" :data-id="item.id">去验收</view>
  74. </view>
  75. </view>
  76. </view>
  77. <view class="no-list" v-if="serList.length == 0">没有更多了</view>
  78. <!-- custom-style="height: 80%" -->
  79. <view class="appoint-overlay-wrapper" v-if="choosePopup" @tap="onClose"></view>
  80. <!-- <van-popup show="{{ choosePopup }}" round position="bottom" bind:click-overlay="onClose"> -->
  81. <view class="popup-wrapper popup-wrapper-special" v-if="choosePopup">
  82. <!-- 标题 -->
  83. <view class="popup-title popup-title-special">选择服务者上门时段</view>
  84. <block>
  85. <view class="popup-content popup-content-special">
  86. <view class="time-select-left">
  87. <view
  88. class="time-select-left-item"
  89. @tap="dateCheck"
  90. :data-index="index"
  91. :data-week="item.week"
  92. :data-date="item.date"
  93. :data-isbook="item.isBook"
  94. v-for="(item, index) in dateList"
  95. :key="index"
  96. >
  97. <view>
  98. <!-- <view hidden="{{index>1}}" class="date-tag">{{index==0?'明天':'后天'}}</view>
  99. <text wx:if="{{index<=1||(index<=7&&(item.week=='周六'||item.week=='周日'))}}" class="full-time">约满</text> -->
  100. <text v-if="item.name" class="date-tag">{{ item.name }}</text>
  101. <text v-if="item.mark" class="full-time">{{ item.mark }}</text>
  102. </view>
  103. <view :class="dateIndex == index ? 'current-date' : ''">{{ item.date + ' ' + item.week }}</view>
  104. </view>
  105. </view>
  106. <view class="time-select-right">
  107. <view class="time-select-right-item" @tap="timeCheck" :data-stock="item.stock" :data-index="index" v-for="(item, index) in timeList" :key="index">
  108. <view :class="item.stock <= 0 ? 'zero-stock' : ''">
  109. <text :class="timeIndex === index ? 'current-date' : ''">{{ item.time }}</text>
  110. <!-- <text class="stock-text">(库存:{{item.stock}})</text> -->
  111. </view>
  112. <view v-if="timeIndex == index" class="date-tag">已选</view>
  113. </view>
  114. </view>
  115. </view>
  116. </block>
  117. <!-- 确认按钮 -->
  118. <view class="popup-btn-wrapper">
  119. <view @tap="confirmTime" class="confirm-btn">确定</view>
  120. </view>
  121. </view>
  122. <!-- </van-popup> -->
  123. </view>
  124. </template>
  125. <script>
  126. var util = require('../../../utils/util.js');
  127. var api = require('../../../config/api.js');
  128. var check = require('../../../utils/check.js');
  129. var app = getApp();
  130. export default {
  131. data() {
  132. return {
  133. noAppoint: '',
  134. aftersaleStatus: '',
  135. orderId: '',
  136. serviceId: '',
  137. bookCount: 0,
  138. orderStatusText: '订单服务中',
  139. activeTab: 1,
  140. orderBook: {
  141. status: '',
  142. servicedTimes: '',
  143. goodsName: '',
  144. serviceTimes: ''
  145. },
  146. orderChannel: 0,
  147. jzOrderBookDetails: [],
  148. unusedSerList: [],
  149. usedSerList: [],
  150. serList: [],
  151. choosePopup: false,
  152. // timeList: check.getTimeList(1),
  153. timeList: [],
  154. dateList: util.getDateList(new Date(new Date().getTime() + 3600000 * 24 * 0), 1, 30),
  155. timeIndex: '',
  156. //选中的时间段
  157. dateIndex: 0,
  158. //选中的日期
  159. product: {
  160. price: ''
  161. },
  162. goods: {
  163. picUrl: ''
  164. }
  165. };
  166. }
  167. /**
  168. * 生命周期函数--监听页面加载
  169. */,
  170. onLoad: function (options) {
  171. this.setData({
  172. orderId: options.orderId
  173. });
  174. // this.getServiceDetail();
  175. },
  176. onShow: function (options) {
  177. if (this.orderId) {
  178. this.getServiceDetail();
  179. }
  180. },
  181. /**
  182. * 生命周期函数--监听页面初次渲染完成
  183. */
  184. onReady: function () {},
  185. /**
  186. * 生命周期函数--监听页面显示
  187. */
  188. onHide: function () {},
  189. /**
  190. * 生命周期函数--监听页面卸载
  191. */
  192. onUnload: function () {},
  193. /**
  194. * 页面相关事件处理函数--监听用户下拉动作
  195. */
  196. onPullDownRefresh: function () {},
  197. /**
  198. * 页面上拉触底事件的处理函数
  199. */
  200. onReachBottom: function () {},
  201. /**
  202. * 用户点击右上角分享
  203. */
  204. onShareAppMessage: function () {},
  205. methods: {
  206. /**
  207. * 生命周期函数--监听页面隐藏
  208. */
  209. getServiceDetail: function () {
  210. util.request(api.ServiceDetail, {
  211. order_id: this.orderId
  212. }).then((res) => {
  213. if (res.errno === 0) {
  214. let jzOrderBookDetails = res.data.jzOrderBookDetails;
  215. let unusedSerList = jzOrderBookDetails.filter((item) => {
  216. return item.status === 0 || item.status == 1 || item.status == 7;
  217. });
  218. let usedSerList = jzOrderBookDetails.filter((item) => {
  219. return item.status == 3 || item.status == 4;
  220. });
  221. this.setData({
  222. aftersaleStatus: res.data.order ? res.data.order.aftersaleStatus : '',
  223. noAppoint: res.data.noAppoint,
  224. goods: res.data.goods,
  225. orderBook: res.data.orderBook,
  226. jzOrderBookDetails: jzOrderBookDetails,
  227. unusedSerList: unusedSerList,
  228. usedSerList: usedSerList,
  229. serList: this.activeTab == 1 ? unusedSerList : usedSerList,
  230. orderChannel: res.data.orderChannel,
  231. product: res.data.product
  232. });
  233. }
  234. });
  235. },
  236. onTabChange(e) {
  237. let tab = e.currentTarget.dataset.tab;
  238. this.setData({
  239. activeTab: tab
  240. });
  241. if (this.activeTab == 1) {
  242. this.setData({
  243. serList: this.unusedSerList
  244. });
  245. } else {
  246. this.setData({
  247. serList: this.usedSerList
  248. });
  249. }
  250. },
  251. showAppoint(e) {
  252. let status = e.currentTarget.dataset.status;
  253. if (status == 1) {
  254. let time = e.currentTarget.dataset.time;
  255. let str = time.substr(0, 16).replace(/-/g, '/');
  256. let isNear = new Date(str).getTime() - new Date().getTime() - 7200 * 1000;
  257. console.log(isNear);
  258. if (isNear < 0) {
  259. uni.showToast({
  260. title: '服务时间小于2小时,不能修改预约',
  261. icon: 'none',
  262. duration: 2000
  263. });
  264. return false;
  265. }
  266. }
  267. this.setData({
  268. choosePopup: true,
  269. serviceId: e.currentTarget.dataset.id
  270. });
  271. this.getDayStock();
  272. },
  273. getDayStock() {
  274. if (this.dateIndex < 0) {
  275. return false;
  276. }
  277. let params = {
  278. day: this.dateList[this.dateIndex].date,
  279. goodsId: this.orderBook.goodsId,
  280. lng: this.orderBook.lng,
  281. lat: this.orderBook.lat,
  282. productId: this.orderBook.productId
  283. };
  284. uni.showLoading({
  285. title: '加载中'
  286. });
  287. util.request(api.EveryDayStock, params, 'GET')
  288. .then((res) => {
  289. uni.hideLoading();
  290. if (res.errno == 0) {
  291. this.setData({
  292. timeList: res.data,
  293. timeIndex: 0
  294. });
  295. } else {
  296. uni.showToast({
  297. title: res.errmsg,
  298. icon: 'none',
  299. duration: 2000
  300. });
  301. this.setData({
  302. timeList: [],
  303. timeIndex: ''
  304. });
  305. }
  306. })
  307. .catch(function (err) {
  308. console.log(err);
  309. uni.hideLoading();
  310. uni.showToast({
  311. title: err.errMsg,
  312. icon: 'none'
  313. });
  314. this.setData({
  315. timeList: [],
  316. timeIndex: ''
  317. });
  318. });
  319. },
  320. onClose() {
  321. this.setData({
  322. choosePopup: false
  323. });
  324. },
  325. dateCheck(e) {
  326. let index = e.currentTarget.dataset.index;
  327. let date = e.currentTarget.dataset.date;
  328. let week = e.currentTarget.dataset.week;
  329. let isbook = e.currentTarget.dataset.isbook;
  330. if (isbook) {
  331. this.setData({
  332. dateIndex: index
  333. });
  334. this.getDayStock();
  335. }
  336. },
  337. timeCheck(e) {
  338. let index = e.currentTarget.dataset.index;
  339. this.setData({
  340. timeIndex: index
  341. });
  342. },
  343. confirmTime() {
  344. if (this.timeIndex === '') {
  345. uni.showToast({
  346. title: '请选择服务时间',
  347. icon: 'none',
  348. duration: 2000
  349. });
  350. return false;
  351. }
  352. let date = this.dateList[this.dateIndex].date;
  353. let week = this.dateList[this.dateIndex].week;
  354. let time = this.timeList[this.timeIndex].time;
  355. console.log(date, week, time);
  356. let params = {
  357. detail_id: this.serviceId,
  358. date: date,
  359. startTime: time.split('-')[0],
  360. endTime: time.split('-')[1]
  361. };
  362. util.request(api.ServiceOrderBook, params, 'GET').then((res) => {
  363. console.log(res);
  364. if (res.errno == 0) {
  365. uni.showToast({
  366. title: '预约成功',
  367. icon: 'none',
  368. duration: 2000
  369. });
  370. this.setData({
  371. choosePopup: false
  372. });
  373. this.getServiceDetail();
  374. } else {
  375. util.showErrorToast(res.errmsg);
  376. }
  377. });
  378. },
  379. goReVisit(e) {
  380. let id = e.currentTarget.dataset.id;
  381. uni.navigateTo({
  382. url: '/pages/extra/newRevisit/newRevisit?id=' + id,
  383. success: (res) => {},
  384. fail: (res) => {}
  385. });
  386. }
  387. }
  388. };
  389. </script>
  390. <style>
  391. page {
  392. background: #f6f5f5;
  393. }
  394. /* 服务详情顶部 */
  395. .order-main-top {
  396. height: 160rpx;
  397. background: url('https://mall.zhaijieshi.cc/file/jzmall/weixin/service-detail-bg.png') no-repeat center;
  398. background-size: 100% 100%;
  399. display: flex;
  400. align-items: center;
  401. justify-content: space-between;
  402. margin: 0 0 20rpx;
  403. padding: 0 24rpx;
  404. }
  405. .order-main-top view,
  406. .order-main-top text {
  407. color: #fff;
  408. font-size: 28rpx;
  409. }
  410. .order-main-top .order-detail-status {
  411. font-size: 36rpx;
  412. font-weight: bold;
  413. margin-bottom: 10rpx;
  414. }
  415. .order-main-right {
  416. text-align: right;
  417. }
  418. .order-main-right .view-service {
  419. width: 148rpx;
  420. height: 44rpx;
  421. line-height: 44rpx;
  422. border-radius: 44rpx;
  423. border: 1rpx solid #fff;
  424. text-align: center;
  425. margin: 10rpx 0 0;
  426. }
  427. .order-main-right .current-times {
  428. font-size: 40rpx;
  429. font-weight: bold;
  430. }
  431. .service-info {
  432. margin: 20rpx 24rpx;
  433. border-radius: 40rpx;
  434. background: #fff;
  435. height: 322rpx;
  436. padding: 32rpx 40rpx;
  437. display: flex;
  438. flex-direction: column;
  439. justify-content: space-between;
  440. }
  441. .info-content {
  442. height: 180rpx;
  443. display: flex;
  444. align-items: center;
  445. }
  446. .service-info view.info-title {
  447. font-size: 32rpx;
  448. color: #000;
  449. }
  450. .product-img {
  451. width: 180rpx;
  452. height: 180rpx;
  453. margin-right: 20rpx;
  454. }
  455. .info-detail view {
  456. color: #999;
  457. font-size: 28rpx;
  458. line-height: 46rpx;
  459. }
  460. .van-tabs view {
  461. color: #666;
  462. }
  463. .van-tab--active view {
  464. color: #09afff;
  465. }
  466. .service-list {
  467. border-top: 1rpx solid #ddd;
  468. padding: 20rpx 24rpx;
  469. }
  470. .service-item {
  471. /* height: 180rpx; */
  472. border-radius: 20rpx;
  473. margin: 0 0 20rpx;
  474. padding: 42rpx 24rpx 34rpx;
  475. background: #fff;
  476. display: flex;
  477. flex-direction: column;
  478. justify-content: space-between;
  479. }
  480. .service-time {
  481. display: flex;
  482. justify-content: space-between;
  483. }
  484. .service-time text {
  485. color: #999;
  486. font-size: 28rpx;
  487. }
  488. .item-left .service-item-status {
  489. font-size: 28rpx;
  490. }
  491. .service-item-top {
  492. display: flex;
  493. align-items: center;
  494. justify-content: space-between;
  495. height: 42rpx;
  496. margin-bottom: 10rpx;
  497. }
  498. .item-left {
  499. display: flex;
  500. align-items: center;
  501. }
  502. .service-item-top .item-left text {
  503. color: #333;
  504. font-weight: bold;
  505. font-size: 28rpx;
  506. }
  507. .ci-img {
  508. width: 32rpx;
  509. height: 32rpx;
  510. margin-right: 16rpx;
  511. }
  512. .service-item view.go-appoint {
  513. margin-top: 10rpx;
  514. float: right;
  515. width: 136rpx;
  516. height: 44rpx;
  517. line-height: 44rpx;
  518. text-align: center;
  519. border-radius: 44rpx;
  520. border: 1rpx solid #09afff;
  521. font-size: 28rpx;
  522. margin-left: 20rpx;
  523. }
  524. .full-time {
  525. color: #09afff;
  526. }
  527. .service-detail-page .no-list {
  528. margin: 56rpx 0 0;
  529. text-align: center;
  530. color: #999;
  531. font-size: 28rpx;
  532. }
  533. /* 选择时间 */
  534. view.popup-wrapper view {
  535. color: #888;
  536. font-size: 30rpx;
  537. }
  538. .popup-content {
  539. flex: 1;
  540. }
  541. .popup-title {
  542. height: 96rpx;
  543. line-height: 96rpx;
  544. text-align: center;
  545. border-bottom: 1rpx solid #ddd;
  546. }
  547. .popup-content {
  548. display: flex;
  549. }
  550. .time-select-left {
  551. flex: 2;
  552. border-right: 1rpx solid #ddd;
  553. padding: 0 20rpx;
  554. }
  555. .time-select-right {
  556. flex: 3;
  557. padding: 0 8rpx;
  558. height: 468px;
  559. overflow-y: auto;
  560. }
  561. .time-select-left-item {
  562. height: 108rpx;
  563. display: flex;
  564. flex-direction: column;
  565. justify-content: center;
  566. }
  567. .popup-content .current-date {
  568. color: #09afff;
  569. font-weight: bold;
  570. }
  571. view.popup-wrapper .time-select-right-item {
  572. height: 104rpx;
  573. border-bottom: 1rpx solid #ddd;
  574. display: flex;
  575. align-items: center;
  576. justify-content: space-between;
  577. padding: 0 24rpx;
  578. }
  579. .time-select-right-item view {
  580. color: #6d7278;
  581. font-weight: bold;
  582. }
  583. view.popup-btn-wrapper {
  584. margin: 20rpx 0 0;
  585. padding: 0 24rpx 20rpx;
  586. }
  587. view.popup-btn-wrapper button > view {
  588. color: #fff;
  589. }
  590. view.popup-wrapper .date-tag {
  591. color: #09afff;
  592. height: 44rpx;
  593. line-height: 42rpx;
  594. width: 90rpx;
  595. border: 2rpx solid #09afff;
  596. border-radius: 44rpx;
  597. text-align: center;
  598. font-weight: normal;
  599. font-size: 24rpx;
  600. display: inline-block;
  601. }
  602. view.popup-wrapper .full-time {
  603. color: #09afff;
  604. font-size: 24rpx;
  605. margin: 0 0 0 20rpx;
  606. height: 44rpx;
  607. line-height: 44rpx;
  608. float: right;
  609. padding-right: 40rpx;
  610. }
  611. .first-appoint-date-item {
  612. height: 108rpx;
  613. display: flex;
  614. align-items: center;
  615. padding: 0 0 0 240rpx;
  616. }
  617. .first-time-selected {
  618. margin: 0 0 0 60rpx;
  619. }
  620. .select-week-times {
  621. border-top: 1rpx solid #ddd;
  622. }
  623. .week-select-left {
  624. flex: 1.2;
  625. }
  626. .week-select-left > view.time-select-left-item {
  627. padding: 0 0 0 60rpx;
  628. display: flex;
  629. align-items: flex-start;
  630. justify-content: flex-start;
  631. flex-direction: row;
  632. padding: 10rpx 0 0 60rpx;
  633. }
  634. .week-select-left > view.time-select-left-item .week-str {
  635. padding: 12rpx 0 0 0;
  636. }
  637. view.popup-wrapper view.select-num-tag {
  638. width: 32rpx;
  639. height: 32rpx;
  640. line-height: 32rpx;
  641. background: #09afff;
  642. border-radius: 34rpx;
  643. font-size: 20rpx;
  644. color: #fff;
  645. text-align: center;
  646. margin: 0 0 0 6rpx;
  647. }
  648. .popup-content-special {
  649. position: relative;
  650. }
  651. .popup-title-special {
  652. position: absolute;
  653. left: 0;
  654. top: 0;
  655. right: 0;
  656. background: #fff;
  657. }
  658. .popup-content-special {
  659. height: 900rpx;
  660. margin-top: 96rpx;
  661. }
  662. .popup-content-special .time-select-left {
  663. height: 900rpx;
  664. overflow-y: scroll;
  665. }
  666. .stock-text {
  667. font-size: 20rpx;
  668. font-weight: normal;
  669. color: #888;
  670. }
  671. .zero-stock {
  672. color: #ccc;
  673. }
  674. .appoint-overlay-wrapper {
  675. position: fixed;
  676. top: 0;
  677. left: 0;
  678. width: 100%;
  679. height: 100%;
  680. background-color: rgba(0, 0, 0, 0.7);
  681. z-index: 999;
  682. }
  683. /* 选择时间 */
  684. view.popup-wrapper {
  685. /* padding: 0 0 20rpx; */
  686. color: #333;
  687. display: flex;
  688. flex-direction: column;
  689. justify-content: space-between;
  690. /* height: 80%; */
  691. position: fixed;
  692. left: 0;
  693. right: 0;
  694. bottom: 0;
  695. background: #fff;
  696. padding-bottom: constant(safe-area-inset-bottom);
  697. padding-bottom: env(safe-area-inset-bottom);
  698. z-index: 9999;
  699. }
  700. view.popup-wrapper view.confirm-btn {
  701. background: #09afff;
  702. height: 88rpx;
  703. line-height: 88rpx;
  704. border-radius: 88rpx;
  705. text-align: center;
  706. color: #fff;
  707. }
  708. .go-pay-wrapper {
  709. padding-bottom: constant(safe-area-inset-bottom);
  710. padding-bottom: env(safe-area-inset-bottom);
  711. }
  712. .go-pay-wrapper view {
  713. background: #09afff;
  714. height: 88rpx;
  715. line-height: 88rpx;
  716. border-radius: 88rpx;
  717. text-align: center;
  718. color: #fff;
  719. }
  720. .appoint-tabs-wrapper {
  721. height: 88rpx;
  722. display: flex;
  723. align-items: center;
  724. line-height: 88rpx;
  725. justify-content: space-around;
  726. }
  727. .appoint-tab-item {
  728. /* width:80rpx; */
  729. }
  730. .appoint-tab-item.active {
  731. color: #09afff;
  732. border-bottom: 4rpx solid #09afff;
  733. }
  734. </style>