list.vue 20 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929
  1. <template>
  2. <view class="time-limit">
  3. <view class="top">
  4. <view class="box">
  5. <scroll-view scroll-x="true">
  6. <view
  7. class="time"
  8. v-for="(item, index) in times"
  9. :key="index"
  10. @click="switeTime(item)"
  11. >
  12. <view class="number">
  13. <!-- {{ item.st + ":00" }} -->
  14. {{ item.start_hour }}
  15. </view>
  16. <view
  17. :class="item.active ? 'font' : 'font-soon'"
  18. v-if="item.value == 0"
  19. >
  20. 即将开始
  21. </view>
  22. <view
  23. :class="item.active ? 'font' : 'font-soon'"
  24. v-if="item.value == 1"
  25. >
  26. 已开抢
  27. </view>
  28. <view
  29. :class="item.active ? 'font' : 'font-soon'"
  30. v-if="item.value == 2"
  31. >
  32. 正在抢购
  33. </view>
  34. </view>
  35. </scroll-view>
  36. </view>
  37. <view class="surplus">
  38. <view class="transverse"> </view>
  39. <view class="surplus-content" v-if="activeState == 1">
  40. <view class="lable"> 本场剩余 </view>
  41. <uni-countdown
  42. v-if="countDown"
  43. :backgroundColor="'#DCCDA4'"
  44. :color="'#00bf5a'"
  45. :splitorColor="'#fff'"
  46. :show-day="time2[0] > 0"
  47. :day="time2[0]"
  48. :hour="time2[1]"
  49. :minute="time2[2]"
  50. :second="time2[3]"
  51. >
  52. </uni-countdown>
  53. </view>
  54. <view class="surplus-content" v-if="activeState == 0">
  55. <view class="lable">即将开始</view>
  56. </view>
  57. <view class="surplus-content" v-if="activeState == 2">
  58. <view class="lable">已开抢</view>
  59. </view>
  60. <view class="transverse"> </view>
  61. </view>
  62. </view>
  63. <swiper
  64. class="commodity"
  65. :current="currentItem"
  66. v-if="goodList && goodList.length > 0"
  67. :indicator-dots="false"
  68. :autoplay="false"
  69. @change="imgActiveFun"
  70. >
  71. <swiper-item
  72. class="commodity-item"
  73. v-for="(item, key) in goodList"
  74. :key="item.id"
  75. @click="
  76. goProductDetails('/pages/product/goods/seckillGoods?id=' + item.id)
  77. "
  78. >
  79. <view
  80. :class="[activeBannerIndex == key ? 'active-back' : 'swiper-back']"
  81. >
  82. <image
  83. :class="[
  84. activeBannerIndex == key ? 'current-item' : 'default-image',
  85. ]"
  86. :src="`${item.cover}?x-oss-process=style/w_350`"
  87. mode=""
  88. >
  89. </image>
  90. <view class="bottom-back">
  91. <view
  92. :class="[
  93. activeBannerIndex == key ? 'active-name' : 'name',
  94. 'u-text2',
  95. ]"
  96. >
  97. {{ item.title }}
  98. </view>
  99. <view class="content-number">
  100. <view class="large">
  101. <rich-text
  102. :nodes="$mUtil.priceBigSmall(item.min_price)"
  103. ></rich-text>
  104. </view>
  105. <view class="small">
  106. <rich-text
  107. :nodes="$mUtil.priceBigSmall(item.min_sale_price)"
  108. ></rich-text>
  109. </view>
  110. </view>
  111. <view class="soon">
  112. <view class="soon-item">
  113. <view
  114. class="orange"
  115. :style="{ width: (15.3 * item.rate) / 10 + 'rpx' }"
  116. >
  117. </view>
  118. </view>
  119. <view class="complete"> 已抢{{ item.rate }}% </view>
  120. </view>
  121. </view>
  122. </view>
  123. </swiper-item>
  124. </swiper>
  125. <view class="option" v-if="goodList && goodList.length > 0">
  126. <!-- <view class="option-item active">
  127. </view> -->
  128. <view
  129. class="option-item"
  130. :class="{ active: activeBannerIndex == index }"
  131. v-for="(item, index) in goodList"
  132. :key="index"
  133. >
  134. </view>
  135. </view>
  136. <view class="list">
  137. <view v-if="goodList.length > 0">
  138. <view
  139. class="item"
  140. v-for="(item, index) in goodList"
  141. :key="index"
  142. @click="
  143. goProductDetails('/pages/product/goods/seckillGoods?id=' + item.id)
  144. "
  145. >
  146. <view class="item-left">
  147. <image
  148. :src="`${item.cover}?x-oss-process=style/w_350`"
  149. mode=""
  150. ></image>
  151. </view>
  152. <view class="item-right">
  153. <view class="title">
  154. {{ item.title }}
  155. </view>
  156. <view class="list-soon">
  157. <view class="soon-item">
  158. <view
  159. class="orange"
  160. :style="{ width: (15.3 * item.rate) / 10 + 'rpx' }"
  161. >
  162. </view>
  163. </view>
  164. <view class="complete"> 已抢{{ item.rate }}% </view>
  165. </view>
  166. <view class="list-bottom">
  167. <view class="number">
  168. <view class="large">
  169. <rich-text
  170. :nodes="$mUtil.priceBigSmall(item.min_price)"
  171. ></rich-text>
  172. </view>
  173. <view class="small">
  174. <rich-text
  175. :nodes="$mUtil.priceBigSmall(item.min_sale_price)"
  176. ></rich-text>
  177. </view>
  178. </view>
  179. <view class="no-button" v-if="activeState == 0">即将开始</view>
  180. <view class="no-button" v-if="activeState == 2">已结束 </view>
  181. <view class="button" v-if="activeState == 1 && ispay"
  182. >立即抢购
  183. </view>
  184. </view>
  185. </view>
  186. </view>
  187. <loadMore v-if="goodList.length > 0" :status="status"></loadMore>
  188. </view>
  189. <nodata v-else :config="{ top: 20, content: '暂无商品~' }"></nodata>
  190. </view>
  191. <ldLoading isFullScreen :active="loading"></ldLoading>
  192. </view>
  193. </template>
  194. <script setup>
  195. import { ref, onMounted } from "vue";
  196. import { onShow, onPullDownRefresh, onReachBottom } from "@dcloudio/uni-app";
  197. // import { getAllKillConfig } from "@/api/home";
  198. const $http = uni.$http;
  199. const $mUtil = uni.$mUtil;
  200. const loading = ref(true);
  201. const page = ref(1);
  202. const limit = ref(10);
  203. const activeState = ref(null);
  204. const times = ref([]);
  205. const countDown = ref(true);
  206. const curTime = ref(null);
  207. const goodList = ref([]);
  208. const time2 = ref([0, 0, 0, 0]); // 秒杀倒计时
  209. const httpCurTime = ref(null);
  210. const status = ref("more");
  211. const activeBannerIndex = ref(0);
  212. const params = ref({});
  213. const endTime = ref(null);
  214. const ispay = ref(getApp().globalData.openPay);
  215. const currentItem = ref(0);
  216. // 初始化参数
  217. const initParams = (options) => {
  218. if (options.shopid) {
  219. params.value.shop_id = options.shopid;
  220. }
  221. };
  222. // 切换时间
  223. const switeTime = (item) => {
  224. let st_hour = item.start_hour.split(":")[0];
  225. let et_hour = item.end_hour.split(":")[0];
  226. console.log(item, 1111);
  227. countDown.value = false;
  228. time2.value = [0, 0, 0, 0];
  229. setTimeout(() => {
  230. countDown.value = true;
  231. }, 0);
  232. httpCurTime.value = item.start_hour;
  233. if (et_hour == "23") {
  234. endTime.value = "23:59";
  235. } else {
  236. endTime.value = item.end_hour;
  237. }
  238. times.value.forEach((val) => {
  239. val.active = false;
  240. });
  241. item.active = true;
  242. goodList.value = [];
  243. page.value = 1;
  244. getList();
  245. };
  246. const goProductDetails = (url) => {
  247. if (activeState.value == 1) {
  248. uni.navigateTo({
  249. url: url,
  250. });
  251. } else if (activeState.value == 0) {
  252. $mUtil.toast("该活动还未开始");
  253. } else {
  254. $mUtil.toast("该活动已结束");
  255. }
  256. };
  257. const imgActiveFun = (e) => {
  258. activeBannerIndex.value = e.detail.current;
  259. console.log(currentItem.value);
  260. console.log(e.detail.current);
  261. };
  262. const getTime = async () => {
  263. return
  264. curTime.value = new Date().getHours();
  265. times.value = await getAllKillConfig();
  266. if (times.value && times.value.length > 0) {
  267. times.value.forEach((val, index) => {
  268. let st_hour = val.start_hour.split(":")[0];
  269. let et_hour = val.end_hour.split(":")[0];
  270. // 活动正在进行中
  271. if (st_hour <= curTime.value && curTime.value < et_hour) {
  272. val.value = 2;
  273. httpCurTime.value = val.start_hour;
  274. endTime.value = val.end_hour;
  275. val.active = true;
  276. } else if (curTime.value < et_hour) {
  277. // 活动即将开始
  278. val.value = 0;
  279. if (httpCurTime.value == null) {
  280. httpCurTime.value = val.start_hour;
  281. endTime.value = val.end_hour;
  282. val.active = true;
  283. }
  284. } else if (
  285. curTime.value >= et_hour &&
  286. curTime.value > times.value[index + 1]?.start_hour
  287. ) {
  288. // 活动已过期
  289. val.value = 1;
  290. }
  291. });
  292. }
  293. getList();
  294. };
  295. const getList = () => {
  296. loading.value = false;
  297. $http
  298. .get(
  299. "/marketing/seckillActivityGoods/start-flash-sale",
  300. {
  301. start_hour: httpCurTime.value,
  302. end_hour: endTime.value,
  303. page: page.value,
  304. limit: limit.value,
  305. ...params.value,
  306. },
  307. false
  308. )
  309. .then((res) => {
  310. if (res && res.code == 200) {
  311. activeState.value = res.data.active_state;
  312. time2.value = $mUtil
  313. .countDown(Math.floor(res.data.finish_time / 1000), res.data.now_time)
  314. .split(":")
  315. .map((val) => Number(val));
  316. goodList.value = goodList.value.concat(res.data.page.list);
  317. if (res.data.page.totalPage <= res.data.page.currPage) {
  318. status.value = "noMore";
  319. } else {
  320. status.value = "more";
  321. }
  322. }
  323. });
  324. };
  325. // 生命周期
  326. onLoad((options) => {
  327. initParams(options);
  328. // getTime();
  329. });
  330. onShow(() => {
  331. // this.goodList=[];
  332. // this.getTime();
  333. });
  334. // 下拉刷新
  335. onPullDownRefresh(() => {
  336. page.value = 1;
  337. goodList.value = [];
  338. times.value.forEach((item) => {
  339. item.active = false;
  340. });
  341. getTime();
  342. uni.stopPullDownRefresh();
  343. });
  344. // 上拉加载
  345. onReachBottom(() => {
  346. page.value++;
  347. getList();
  348. });
  349. </script>
  350. <style>
  351. page {
  352. background-color: #f5f5f5;
  353. }
  354. </style>
  355. <style lang="scss" scoped>
  356. .no-button {
  357. color: #1e402e;
  358. font-size: 28rpx;
  359. font-weight: 500;
  360. padding: 12rpx 34rpx;
  361. border: 2rpx solid #1e402e;
  362. background-color: #ffffff;
  363. border-radius: 32rpx;
  364. }
  365. .bottom-back {
  366. background-color: #ffffff;
  367. border-bottom-left-radius: 18rpx;
  368. border-bottom-right-radius: 18rpx;
  369. display: flex;
  370. flex-direction: column;
  371. position: absolute;
  372. z-index: -1;
  373. bottom: 30rpx;
  374. padding-top: 20rpx;
  375. .soon {
  376. padding: 0 20rpx;
  377. display: flex;
  378. margin-bottom: 6rpx;
  379. align-items: center;
  380. .soon-item {
  381. width: 153rpx;
  382. height: 10rpx;
  383. border-radius: 6rpx;
  384. border: 2rpx solid #00bf5a;
  385. margin-right: 10rpx;
  386. .orange {
  387. width: 50rpx;
  388. height: 10rpx;
  389. border-radius: 5rpx;
  390. background-color: #00bf5a;
  391. }
  392. }
  393. .complete {
  394. font-size: 20rpx;
  395. color: #00bf5a;
  396. line-height: 24rpx;
  397. font-weight: 500;
  398. }
  399. }
  400. .name {
  401. padding: 0 20rpx 0 10rpx;
  402. // margin: 20rpx 0 0 10rpx;
  403. width: 380rpx;
  404. box-sizing: border-box;
  405. line-height: 36rpx;
  406. height: 72rpx;
  407. color: #181818;
  408. font-weight: 400;
  409. overflow: hidden;
  410. // text-overflow: ellipsis;
  411. }
  412. .active-name {
  413. padding: 0 20rpx 0 10rpx;
  414. // margin: 20rpx 0 0 10rpx;
  415. width: 420rpx;
  416. box-sizing: border-box;
  417. line-height: 36rpx;
  418. height: 72rpx;
  419. color: #181818;
  420. font-weight: 400;
  421. overflow: hidden;
  422. transition: all 0.5s;
  423. }
  424. .content-number {
  425. padding: 0 20rpx;
  426. display: flex;
  427. align-items: center;
  428. margin: 15rpx 0;
  429. .large {
  430. font-size: 36rpx;
  431. color: #00bf5a;
  432. font-weight: bold;
  433. text {
  434. font-size: 36rpx;
  435. }
  436. }
  437. .small {
  438. font-size: 22rpx;
  439. color: #cccccc;
  440. font-weight: 500;
  441. margin-left: 16rpx;
  442. text-decoration: line-through;
  443. }
  444. }
  445. }
  446. .commodity {
  447. margin-top: -139rpx;
  448. width: 720rpx;
  449. // padding: 0 30rpx;
  450. // margin-left: 30rpx;
  451. // margin-right: 30rpx;
  452. height: 650rpx;
  453. margin-left: 30rpx;
  454. overflow: hidden;
  455. ::v-deep swiper-item {
  456. width: 450rpx !important;
  457. }
  458. ::v-deep .uni-swiper-slide-frame {
  459. width: 420rpx !important;
  460. }
  461. .commodity-item {
  462. //background-color: #FFFFFF;
  463. // margin-right: 30rpx;
  464. border-radius: 16rpx;
  465. // padding: 18rpx;
  466. padding-top: 0;
  467. // text-align: center;
  468. display: flex;
  469. flex-direction: column;
  470. align-items: center;
  471. .swiper-back {
  472. border-radius: 16rpx;
  473. overflow: hidden;
  474. // background-color: #FFFFFF;
  475. width: 380rpx;
  476. // padding-top: 40rpx;
  477. height: 610rpx;
  478. margin-top: 40rpx;
  479. }
  480. .active-back {
  481. // padding-top: 0;
  482. // background-color: #FFFFFF;
  483. width: 420rpx;
  484. height: 650rpx;
  485. border-radius: 16rpx;
  486. position: relative;
  487. transition: all 0.5s;
  488. }
  489. .default-image {
  490. width: 380rpx;
  491. height: 380rpx;
  492. border-radius: 16rpx;
  493. position: relative;
  494. }
  495. .current-item {
  496. width: 420rpx;
  497. height: 420rpx;
  498. border-radius: 16rpx;
  499. transition: all 0.5s;
  500. }
  501. .completed {
  502. font-size: 22rpx;
  503. margin-top: 2rpx;
  504. font-weight: 400;
  505. color: #333333;
  506. text {
  507. color: #00bf5a;
  508. }
  509. }
  510. .number {
  511. margin-top: 20rpx;
  512. font-size: 22rpx;
  513. color: #333333;
  514. font-weight: 500;
  515. display: flex;
  516. align-items: center;
  517. .zero {
  518. margin-left: 20rpx;
  519. font-size: 22rpx;
  520. color: #00bf5a;
  521. font-weight: 500;
  522. }
  523. .one {
  524. color: #00bf5a;
  525. font-size: 34rpx;
  526. font-weight: 700;
  527. }
  528. .two {
  529. color: #00bf5a;
  530. font-size: 18rpx;
  531. font-weight: 700;
  532. }
  533. }
  534. }
  535. }
  536. .option {
  537. margin: 30rpx 0;
  538. display: flex;
  539. justify-content: center;
  540. .option-item {
  541. background-color: #d9d9d9;
  542. margin: 0 8rpx;
  543. width: 14rpx;
  544. height: 14rpx;
  545. border-radius: 7rpx;
  546. }
  547. .active {
  548. background-color: #00bf5a;
  549. width: 35rpx;
  550. height: 14rpx;
  551. border-radius: 7rpx;
  552. }
  553. }
  554. .list {
  555. margin: 0 30rpx 26rpx 30rpx;
  556. .item {
  557. padding: 20rpx;
  558. background-color: #ffffff;
  559. border-radius: 18rpx;
  560. display: flex;
  561. margin-bottom: 25rpx;
  562. .item-left {
  563. image {
  564. width: 187rpx;
  565. height: 187rpx;
  566. border-radius: 18rpx;
  567. }
  568. }
  569. .item-right {
  570. margin-left: 30rpx;
  571. flex: 1;
  572. display: flex;
  573. flex-direction: column;
  574. justify-content: space-between;
  575. .title {
  576. font-size: 28rpx;
  577. font-weight: 400;
  578. color: #181818;
  579. overflow: hidden;
  580. text-overflow: ellipsis;
  581. display: -webkit-box;
  582. -webkit-line-clamp: 2;
  583. -webkit-box-orient: vertical;
  584. word-wrap: break-word;
  585. word-break: break-all;
  586. white-space: normal !important;
  587. }
  588. .list-bottom {
  589. display: flex;
  590. align-items: center;
  591. justify-content: space-between;
  592. .number {
  593. display: flex;
  594. align-items: center;
  595. .large {
  596. font-size: 36rpx;
  597. color: #00bf5a;
  598. font-weight: Bold;
  599. margin-right: 17rpx;
  600. text {
  601. font-size: 36rpx;
  602. }
  603. }
  604. .small {
  605. font-size: 22rpx;
  606. color: #cccccc;
  607. font-weight: 500;
  608. text-decoration: line-through;
  609. }
  610. }
  611. .button {
  612. color: #ffffff;
  613. font-size: 28rpx;
  614. font-weight: 500;
  615. padding: 12rpx 34rpx;
  616. background-color: #00bf5a;
  617. border-radius: 32rpx;
  618. }
  619. }
  620. .list-soon {
  621. display: flex;
  622. align-items: center;
  623. margin-top: 12rpx;
  624. .soon-item {
  625. width: 153rpx;
  626. height: 10rpx;
  627. border: 2rpx solid #00bf5a;
  628. border-radius: 6rpx;
  629. margin-right: 10rpx;
  630. .orange {
  631. width: 50rpx;
  632. height: 10rpx;
  633. background-color: #00bf5a;
  634. border-radius: 5rpx;
  635. }
  636. }
  637. .complete {
  638. font-size: 20rpx;
  639. color: #00bf5a;
  640. font-weight: 500;
  641. }
  642. }
  643. }
  644. }
  645. }
  646. .spot {
  647. display: flex;
  648. justify-content: center;
  649. margin: 27rpx 0 40rpx 0;
  650. .spot-item {
  651. width: 35rpx;
  652. height: 14rpx;
  653. background-color: #00bf5a;
  654. margin-right: 16rpx;
  655. }
  656. .radius {
  657. width: 14rpx;
  658. height: 14rpx;
  659. background-color: #d9d9d9;
  660. border-radius: 7rpx;
  661. margin-right: 16rpx;
  662. }
  663. }
  664. .two-comtent-item {
  665. margin: 0 30rpx;
  666. background-color: #ffffff;
  667. border-radius: 18rpx;
  668. .two-image {
  669. overflow: hidden;
  670. image {
  671. width: 380rpx;
  672. height: 380rpx;
  673. border-radius: 18rpx;
  674. }
  675. }
  676. .two-content-number {
  677. padding: 0 30rpx;
  678. display: flex;
  679. align-items: baseline;
  680. .two-large {
  681. font-size: 20rpx;
  682. color: #00bf5a;
  683. font-weight: bold;
  684. text {
  685. font-size: 36rpx;
  686. }
  687. }
  688. .two-small {
  689. font-size: 22rpx;
  690. color: #cccccc;
  691. font-weight: 500;
  692. margin-left: 16rpx;
  693. text-decoration: line-through;
  694. }
  695. }
  696. .two-name {
  697. padding: 0 20rpx;
  698. width: 368rpx;
  699. overflow: hidden;
  700. text-overflow: ellipsis;
  701. display: -webkit-box;
  702. -webkit-line-clamp: 2;
  703. -webkit-box-orient: vertical;
  704. word-wrap: break-word;
  705. word-break: break-all;
  706. white-space: normal !important;
  707. }
  708. }
  709. .two-soon {
  710. padding: 0 30rpx;
  711. display: flex;
  712. align-items: center;
  713. .two-soon-item {
  714. width: 153rpx;
  715. height: 10rpx;
  716. border-radius: 6rpx;
  717. border: 1rpx solid #00bf5a;
  718. margin-right: 10rpx;
  719. .two-orange {
  720. width: 50rpx;
  721. height: 10rpx;
  722. border-radius: 5rpx;
  723. background-color: #00bf5a;
  724. }
  725. }
  726. .two-complete {
  727. font-size: 20rpx;
  728. color: #00bf5a;
  729. line-height: 24rpx;
  730. font-weight: 500;
  731. }
  732. }
  733. .content {
  734. // align-items: center;
  735. // overflow: scroll;
  736. // white-space: nowrap;
  737. // height: 300rpx;
  738. // background-color: red;
  739. margin-top: -139rpx;
  740. // display: flex;
  741. margin-left: 30rpx;
  742. height: 607rpx;
  743. ::v-deep .uni-swiper-slide-frame {
  744. width: 402rpx !important;
  745. padding-right: 30rpx;
  746. }
  747. .comtent-item {
  748. margin-right: 30rpx;
  749. // padding: 0 30rpx;
  750. background-color: #ffffff;
  751. border-radius: 18rpx;
  752. // width: 420rpx;
  753. image {
  754. width: 420rpx;
  755. height: 420rpx;
  756. border-radius: 18rpx;
  757. }
  758. }
  759. }
  760. .surplus {
  761. margin-top: 43rpx;
  762. display: flex;
  763. justify-content: space-around;
  764. align-items: center;
  765. padding-bottom: 168rpx;
  766. .surplus-content {
  767. color: #ffffff;
  768. font-size: 20rpx;
  769. font-weight: 500;
  770. display: flex;
  771. align-items: center;
  772. text {
  773. color: #00bf5a;
  774. padding: 1rpx 4rpx;
  775. background-color: #dccda4;
  776. border-radius: 4rpx;
  777. margin: 0 6rpx 0 14rpx;
  778. }
  779. }
  780. .lable {
  781. margin-right: 8rpx;
  782. }
  783. ::v-deep .uni-countdown__number {
  784. padding: 2rpx 8rpx;
  785. border-radius: 8rpx;
  786. }
  787. .transverse {
  788. width: 210rpx;
  789. height: 1rpx;
  790. opacity: 0.2;
  791. background-color: #ffffff;
  792. }
  793. }
  794. .top {
  795. background-color: #00bf5a;
  796. .box {
  797. padding: 0 30rpx;
  798. white-space: nowrap;
  799. // display: flex;
  800. // justify-content: space-around;
  801. .time {
  802. display: inline-block;
  803. margin-right: 30rpx;
  804. text-align: center;
  805. .number {
  806. font-size: 42rpx;
  807. font-weight: 700;
  808. color: #ffffff;
  809. }
  810. .font {
  811. font-size: 22rpx;
  812. font-weight: 500;
  813. color: #053420;
  814. padding: 2rpx 12rpx;
  815. border-radius: 20rpx;
  816. background-color: #dccda4;
  817. }
  818. .font-soon {
  819. font-size: 22rpx;
  820. font-weight: 500;
  821. color: #f5f5f5;
  822. }
  823. }
  824. }
  825. }
  826. .time-limit {
  827. background-color: #f6f6f6;
  828. }
  829. </style>