detail.vue 29 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823
  1. <template>
  2. <view class="app-layout">
  3. <app-layout>
  4. <view class="detail-bg">
  5. <view class="fxhb-bg" :style="{'background-image': `url(${appImg.bg})`}">
  6. <view class="fxhb-right">
  7. <view @click="rules">活动规则</view>
  8. <view @click="homes">返回首页</view>
  9. </view>
  10. </view>
  11. <view class="fxhb-box">
  12. <!-- 正在进行 -->
  13. <view v-if="status === 0 && is_join == 1" class="detail-info">
  14. <view class="user-list dir-left-wrap main-center">
  15. <view v-for="(v,k) in list" :key="k" class="user-item">
  16. <image :src="v.avatar" load-lazy></image>
  17. </view>
  18. <view v-for="(v,k) in user_num_list" :key="k" class="user-item none">
  19. <image :src="appImg.fxhb_none" load-lazy></image>
  20. </view>
  21. </view>
  22. <view class="detail-info-text">还差{{user_num}}人即可瓜分{{coupon_total_money}}元红包,快邀好友来拆</view>
  23. <view class="detail-time-text">{{time_str}}后结束</view>
  24. <view class="main-center">
  25. <app-jump-button open_type="share">
  26. <app-button color="#FFFFFF" height="88" width="560"
  27. background="#ff4544" round>邀请好友一起拆
  28. </app-button>
  29. </app-jump-button>
  30. </view>
  31. </view>
  32. <!-- 过期 -->
  33. <view v-if="status === 2" class="detail-info">
  34. <view class="detail-info-text cross-center dir-top-nowrap">
  35. <view>超过规定时间,该红包不能拆了</view>
  36. <icon class="icon-detail-time"></icon>
  37. </view>
  38. <view class="main-center">
  39. <app-button @click="openNew" height="88" width="560" background="#ff4544" color="#FFFFFF"
  40. font-size="32" round>拆一个新红包
  41. </app-button>
  42. </view>
  43. </view>
  44. <!-- 未中奖 -->
  45. <view v-if="status === 1 && is_join == 0" class="detail-info">
  46. <view class="user-list dir-left-wrap main-center">
  47. <block v-for="(v,k) in list" :key="k">
  48. <view class="user-item">
  49. <image :src="v.avatar" load-lazy></image>
  50. </view>
  51. </block>
  52. </view>
  53. <view class="detail-info-text">很遗憾,该红包已被瓜分完了</view>
  54. <view class="main-center detail-error">
  55. <app-button height="88" width="560" color="#FFFFFF" background="#ff4544" @click="openNew"
  56. round>
  57. 拆一个新红包
  58. </app-button>
  59. </view>
  60. </view>
  61. <!-- 已中奖 -->
  62. <view v-if="status === 1 && is_join == 1" class="detail-info">
  63. <view class="detail-info-text">恭喜您,已成功瓜分红包</view>
  64. <view class="dir-left-nowrap cross-center coupon">
  65. <view class="box-grow-1">
  66. <view class="coupon-title">满减券</view>
  67. <view class="coupon-desc">满{{min_price}}可用</view>
  68. </view>
  69. <view class="box-grow-0 dir-left-nowrap cross-bottom">
  70. <view class="coupon-unit cross-bottom">¥</view>
  71. <view class="coupon-money">{{user_price}}</view>
  72. </view>
  73. </view>
  74. <view class="main-center">
  75. <app-button @click="openNew" font-size="32" background="#ff4544" height="88" width="560"
  76. color="#FFFFFF" round>拆一个新红包
  77. </app-button>
  78. </view>
  79. <view class="main-center coupon-set">
  80. <app-button @click="goods" font-size="32" background="#ffb82f" height="88" width="560"
  81. color="#FFFFFF" round>立即使用
  82. <icon class="icon-right"></icon>
  83. </app-button>
  84. </view>
  85. </view>
  86. <!-- 中奖列表 -->
  87. <view v-if="status === 1" class="detail-info award-list">
  88. <view class="dir-left dir-left-nowrap main-center cross-center">
  89. <view class="box-grow-0 list-line"></view>
  90. <view class="box-grow-0 list-text">看看大家手气</view>
  91. <view class="box-grow-0 list-line"></view>
  92. </view>
  93. <view class="dir-left-nowrap cross-center list" v-for="(v,k) in list" :key="k">
  94. <view class="box-grow-0">
  95. <image class="user-avatar" :src="v.avatar" load-lazy></image>
  96. </view>
  97. <view class="box-grow-1">{{v.nickname}}</view>
  98. <view class="box-grow-0 dir-top-nowrap main-right">
  99. <view class="main-right">{{v.get_price}}元</view>
  100. <view class="dir-left main-center best" v-if="v.is_best">
  101. <icon class="user-pond"></icon>
  102. <view class="t-extra-small">手气最佳</view>
  103. </view>
  104. </view>
  105. </view>
  106. </view>
  107. <!-- 推荐商品 -->
  108. <view class="more-goods" v-if="goods_list && goods_list.length">
  109. <view class="tt-goods dir-left-nowrap cross-center main-center">
  110. <view class="line"></view>
  111. <view class="dir-left-nowrap cross-center">
  112. <icon class="icon-love"></icon>
  113. <view>商品推荐</view>
  114. </view>
  115. <view class="line"></view>
  116. </view>
  117. <u-ordinary-list :isShowAttr="true" :list="goods_list" :theme="getTheme" :list-style="2"></u-ordinary-list>
  118. </view>
  119. <!-- 模态框 -->
  120. <view v-if="show_share_model && user_num" class="act-modal">
  121. <view class="act-modal-bg"></view>
  122. <view class="act-modal-pic cross-center main-center">
  123. <view class="modal-box" :style="{'background-image': `url(${appImg.share_modal_bg})`}">
  124. <view class="modal-close" @click="closeShareModal">
  125. <icon class="icon-close"></icon>
  126. </view>
  127. <view class="modal-text dir-left-nowrap main-center cross-bottom">
  128. <view>还差</view>
  129. <view class="bold-num">{{user_num}}</view>
  130. <view>个人即可拆红包</view>
  131. </view>
  132. <view class="dir-left-nowrap main-center cross-bottom">
  133. <view>一起瓜分</view>
  134. <view class="bold-money">{{coupon_total_money}}</view>
  135. <view>元!</view>
  136. </view>
  137. <view class="main-center btn">
  138. <app-jump-button open_type="share">
  139. <app-button height="80" width="440" color="#FFFFFF" font-size="28"
  140. background="#ff4544" round>邀请好友一起拆
  141. </app-button>
  142. </app-jump-button>
  143. </view>
  144. </view>
  145. </view>
  146. </view>
  147. <view v-if="is_new" class="hongbao dir-left main-center">
  148. <view class="hongbao-content" :style="{'background-image': `url(${appImg.hongbao_bg})`}">
  149. <view class="hongbao-desc">
  150. <view>{{config.count_price}}元红包已包好</view>
  151. <view>快拆开和小伙伴分红包</view>
  152. </view>
  153. <view @click="open">
  154. <icon class="hongbao-btn"></icon>
  155. </view>
  156. </view>
  157. </view>
  158. </view>
  159. </view>
  160. </app-layout>
  161. </view>
  162. </template>
  163. <script>
  164. import { mapGetters, mapState } from 'vuex';
  165. import uOrdinaryList from '../../../components/page-component/u-goods-list/u-ordinary-list.vue';
  166. export default {
  167. name: "detail",
  168. components: {
  169. uOrdinaryList
  170. },
  171. computed: {
  172. ...mapState({
  173. appImg: state => state.mallConfig.plugin.fxhb.app_image
  174. }),
  175. ...mapGetters('mallConfig', {
  176. getTheme: 'getTheme'
  177. })
  178. },
  179. data() {
  180. let interval_time;
  181. return {
  182. interval_time,
  183. user_activity_id: 0,
  184. config: null,
  185. goods_list: [],
  186. show_share_model: false,
  187. time_str: "00:00:00",
  188. is_new: false,
  189. coupon_total_money: 0,
  190. is_join: 0,
  191. is_my_hongbao: false,
  192. list: null,
  193. min_price: 0,
  194. reset_time: null,
  195. status: -1,
  196. totalUser: 0,
  197. user_num: 0,
  198. user_num_list: [],
  199. user_price: 0,
  200. again_open: true,
  201. page_url: '',
  202. template_message: []
  203. }
  204. },
  205. onLoad: function (options) {
  206. this.user_activity_id = options.user_activity_id ? options.user_activity_id : '';
  207. this.loadConfig();
  208. },
  209. onShareAppMessage() {
  210. return this.$shareAppMessage({
  211. title: this.config.share_title,
  212. path: '/plugins/fxhb/detail/detail',
  213. params: {
  214. user_activity_id: this.user_activity_id,
  215. },
  216. imageUrl: this.config.share_pic_url
  217. });
  218. },
  219. onUnload: function () {
  220. clearInterval(this.intervalTime);
  221. },
  222. methods: {
  223. loadConfig() {
  224. const self = this;
  225. uni.showLoading({
  226. title: '加载中',
  227. });
  228. self.$request({
  229. url: self.$api.fxhb.index,
  230. data: {
  231. user_activity_id: self.user_activity_id
  232. }
  233. }).then(info => {
  234. uni.hideLoading();
  235. if (info.code === 0) {
  236. self.config = info.data.config;
  237. self.template_message = info.data.template_message;
  238. if (info.data.user_activity_id) {
  239. self.user_activity_id = info.data.user_activity_id;
  240. self.loadData()
  241. } else {
  242. if (self.user_activity_id) {
  243. self.subscribe();
  244. } else {
  245. self.openNew();
  246. }
  247. }
  248. } else {
  249. uni.showToast({icon: 'none', title: info.msg});
  250. setTimeout(() => {
  251. uni.redirectTo({url: '/pages/index/index'})
  252. }, 2000)
  253. }
  254. }).catch(() => {
  255. uni.hideLoading();
  256. })
  257. },
  258. openNew() {
  259. [this.status, this.is_new, this.goods_list] = [-1, true, []];
  260. },
  261. open() {
  262. if (this.again_open) {
  263. this.user_activity_id = 0;
  264. this.subscribe();
  265. this.again_open = false;
  266. }
  267. },
  268. rules() {
  269. uni.navigateTo({
  270. url: `/pages/rules/index?url=${encodeURIComponent(this.$api.fxhb.index)}&keys=${JSON.stringify(['config', 'remark'])}`,
  271. });
  272. },
  273. homes() {
  274. uni.navigateTo({url: `/pages/index/index`})
  275. },
  276. goods() {
  277. uni.redirectTo({url: this.page_url});
  278. },
  279. subscribe(){
  280. this.detailSubmit();
  281. // return;
  282. // self.$subscribe(self.template_message).then(res => {
  283. // let tpl_id = self.template_message[0];
  284. // if (res[tpl_id] == 'accept') {
  285. // uni.showModal({
  286. // title: '提示',
  287. // content: '订阅成功',
  288. // showCancel: false,
  289. // success(res) {
  290. // self.detailSubmit();
  291. // }
  292. // })
  293. // } else {
  294. // uni.showModal({
  295. // title: '提示',
  296. // content: '取消订阅',
  297. // showCancel: false,
  298. // success(res) {
  299. // self.detailSubmit();
  300. // }
  301. // })
  302. // }
  303. // }).catch(res => {
  304. // self.detailSubmit();
  305. // });
  306. },
  307. detailSubmit() {
  308. uni.showLoading({
  309. title: '抢红包中',
  310. mask: true,
  311. });
  312. this.$request({
  313. url: this.$api.fxhb.join,
  314. method: 'post',
  315. data: {
  316. user_activity_id: this.user_activity_id
  317. }
  318. }).then(info => {
  319. uni.hideLoading();
  320. if (info.code === 0) {
  321. this.result(info.data.queueId, info.data.token);
  322. } else {
  323. this.openNew();
  324. uni.showToast({icon: 'none', title: info.msg});
  325. }
  326. }).catch(() => {
  327. uni.hideLoading();
  328. })
  329. },
  330. async loadData() {
  331. uni.showLoading({
  332. title: '加载中',
  333. mask: true,
  334. });
  335. const info = await this.$request({
  336. url: this.$api.fxhb.detail,
  337. data: {
  338. user_activity_id: this.user_activity_id
  339. }
  340. });
  341. uni.hideLoading();
  342. if (info.code === 0) {
  343. let {
  344. coupon_total_money,
  345. is_join, is_my_hongbao,
  346. list, min_price, page_url,
  347. reset_time, status, totalUser,
  348. user_num, user_price
  349. } = info.data;
  350. this.coupon_total_money = coupon_total_money;
  351. this.is_join = is_join;
  352. this.is_my_hongbao = is_my_hongbao;
  353. this.list = list;
  354. this.min_price = min_price;
  355. this.page_url = page_url;
  356. this.reset_time = reset_time;
  357. this.totalUser = totalUser;
  358. this.status = status;
  359. this.user_num = user_num;
  360. this.user_price = user_price;
  361. this.user_num_list = [];
  362. for (let i = 0; i < this.user_num; i++) {
  363. this.user_num_list.push(i);
  364. }
  365. this.setTimeStart();
  366. this.getRecommend();
  367. this.again_open = true;
  368. } else {
  369. uni.showToast({
  370. icon: 'none',
  371. title: info.msg,
  372. duration: 2000,
  373. success: function() {
  374. uni.redirectTo({
  375. url: '/pages/index/index'
  376. });
  377. }
  378. });
  379. }
  380. },
  381. setTimeStart() {
  382. const self = this;
  383. clearInterval(this.interval_time);
  384. let times = function () {
  385. let hour = 0,
  386. minute = 0,
  387. second = 0; //时间默认值
  388. let times = self.reset_time;
  389. times--;
  390. if (times > 0) {
  391. hour = Math.floor(times / (60 * 60));
  392. minute = Math.floor(times / 60) - (hour * 60);
  393. second = Math.floor(times) - (hour * 60 * 60) - (minute * 60);
  394. }
  395. [self.reset_time, self.time_list] = [times, {hour, minute, second}];
  396. self.time_str = (hour < 10 ? ('0' + hour) : hour) + ':' + (minute < 10 ? ('0' + minute) : minute) + ':' + (second < 10 ? ('0' + second) : second);
  397. if (times <= 0) {
  398. clearInterval(self.intervalTime);
  399. }
  400. };
  401. times();
  402. this.interval_time = setInterval(() => {
  403. times();
  404. }, 1000);
  405. },
  406. result(queueId, token) {
  407. uni.showLoading({
  408. title: '加载中',
  409. mask: true,
  410. });
  411. this.$request({
  412. url: this.$api.fxhb.join_result,
  413. data: {
  414. queueId: queueId,
  415. token: token
  416. }
  417. }).then(info => {
  418. if (info.code === 0) {
  419. if (info.data.retry && info.data.retry == 1) {
  420. setTimeout(() => {
  421. this.result(queueId, token)
  422. }, 1000);
  423. } else {
  424. this.user_activity_id = info.data.user_activity_id;
  425. this.loadData();
  426. uni.hideLoading();
  427. this.showShareModal();
  428. }
  429. } else {
  430. uni.hideLoading();
  431. this.status = 2;
  432. uni.showToast({
  433. icon: 'none',
  434. title: info.msg,
  435. duration: 2000,
  436. success: function() {
  437. uni.redirectTo({
  438. url: '/pages/index/index'
  439. });
  440. }
  441. });
  442. }
  443. })
  444. },
  445. //打开分享提示框
  446. showShareModal: function () {
  447. [this.is_new, this.show_share_model] = [false, true];
  448. },
  449. //关闭分享提示框
  450. closeShareModal: function () {
  451. [this.show_share_model] = [false];
  452. },
  453. async getRecommend () {
  454. uni.showLoading({
  455. title: '加载中',
  456. mask: true,
  457. });
  458. const info = await this.$request({
  459. url: this.$api.fxhb.recommend,
  460. });
  461. uni.hideLoading();
  462. if (info.code === 0) {
  463. this.goods_list = info.data.list;
  464. }
  465. }
  466. }
  467. }
  468. </script>
  469. <style scoped lang="scss">
  470. .app-layout .detail-bg {
  471. background: #fe6b2e;
  472. min-height: calc(100vh - var(--window-top));
  473. }
  474. .app-layout /deep/ .app-layout {
  475. background: #fe6b2e;
  476. min-height: calc(100vh - var(--window-top));
  477. }
  478. .fxhb-bg {
  479. background-size: 100% auto;
  480. background-repeat: no-repeat;
  481. height: #{464rpx};
  482. position: relative;
  483. z-index: 50;
  484. }
  485. .fxhb-right {
  486. font-size: #{24rpx};
  487. color: #FFFFFF;
  488. float: right;
  489. view {
  490. background: rgba(0, 0, 0, .5);
  491. border-radius: #{28rpx} 0 0 #{28rpx};
  492. line-height: #{56rpx};
  493. text-align: center;
  494. width: #{136rpx};
  495. margin-top: #{24rpx};
  496. }
  497. }
  498. .fxhb-start {
  499. position: fixed;
  500. width: 100%;
  501. left: 0;
  502. top: #{380rpx};
  503. height: 100%;
  504. z-index: 10;
  505. }
  506. .hongbao {
  507. position: relative;
  508. width: 100%;
  509. left: 0;
  510. height: 100%;
  511. z-index: 51;
  512. .hongbao-content {
  513. font-size: #{36rpx};
  514. padding: #{350rpx} #{25rpx} 0 #{25rpx};
  515. background-size: 100% auto;
  516. background-repeat: no-repeat;
  517. width: #{602rpx};
  518. height: #{712rpx};
  519. text-align: center;
  520. .hongbao-desc {
  521. margin-bottom: #{100rpx};
  522. line-height: 1.5;
  523. color: #ffe15d;
  524. font-size: 13pt;
  525. }
  526. }
  527. .hongbao-btn {
  528. background-image: url("./../image/open_hongbao_btn.png");
  529. line-height: #{96rpx};
  530. height: #{96rpx};
  531. width: #{416rpx};
  532. background-repeat: no-repeat;
  533. background-size: 100% 100%;
  534. text-align: center;
  535. }
  536. }
  537. .fxhb-box {
  538. margin-top: #{-68rpx};
  539. background: #fe6b2e;
  540. .detail-info {
  541. background: rgba(255, 255, 255, 0.9);
  542. border-radius: #{16rpx};
  543. margin: 0 #{24rpx};
  544. padding: #{50rpx};
  545. z-index: 100;
  546. position: relative;
  547. }
  548. .user-list {
  549. overflow: hidden;
  550. margin-bottom: #{16rpx};
  551. .user-item {
  552. border: #{2rpx} solid #ff5c5c;
  553. width: #{104rpx};
  554. height: #{104rpx};
  555. margin-left: #{23rpx};
  556. margin-right: #{23rpx};
  557. margin-bottom: #{40rpx};
  558. display: inline-block;
  559. overflow: hidden;
  560. border-radius: #{999rpx};
  561. background-color: #fff;
  562. float: left;
  563. }
  564. .none {
  565. border-style: none;
  566. }
  567. image {
  568. width: 100%;
  569. height: 100%;
  570. }
  571. }
  572. .detail-info-text {
  573. text-align: center;
  574. color: #666666;
  575. font-size: #{28rpx};
  576. }
  577. .detail-time-text {
  578. color: #999999;
  579. text-align: center;
  580. margin-top: #{24rpx};
  581. margin-bottom: #{40rpx};
  582. font-size: #{28rpx};
  583. }
  584. .icon-detail-time {
  585. background-size: 100% 100%;
  586. background-image: url("./../image/cry.png");
  587. width: #{190rpx};
  588. height: #{168rpx};
  589. margin-top: #{48rpx};
  590. margin-bottom: #{32rpx};
  591. }
  592. }
  593. .more-goods {
  594. padding-bottom: #{32rpx};
  595. color: #FFFFFF;
  596. font-size: #{24rpx};
  597. margin-top: #{48rpx};
  598. .tt-goods {
  599. margin-bottom: #{12rpx};
  600. }
  601. .line {
  602. height: #{1px};
  603. width: #{40rpx};
  604. background: #FFFFFF;
  605. margin: 0 #{24rpx};
  606. }
  607. .icon-love {
  608. width: #{24rpx};
  609. height: #{24rpx};
  610. background-size: 100% 100%;
  611. background-repeat: no-repeat;
  612. margin-right: #{12rpx};
  613. background-image: url("./../image/love.png");
  614. }
  615. }
  616. .detail-error {
  617. margin-top: #{40rpx};
  618. }
  619. .award-list {
  620. margin-top: #{32rpx} !important;
  621. padding-top: #{48rpx} !important;
  622. color: #353535;
  623. padding-bottom: #{56rpx} !important;
  624. .list {
  625. margin-top: #{40rpx};
  626. }
  627. .list-line {
  628. width: #{176rpx};
  629. height: #{2rpx};
  630. background: #dbdbdb;
  631. }
  632. .list-text {
  633. font-size: #{32rpx};
  634. padding: 0 #{50rpx};
  635. }
  636. .user-avatar {
  637. width: #{80rpx};
  638. height: #{80rpx};
  639. border-radius: 50%;
  640. margin-right: #{20rpx};
  641. }
  642. .best {
  643. color: #ffb82f;
  644. font-size: #{28rpx};
  645. margin-top: #{10rpx};
  646. .user-pond {
  647. width: #{40rpx};
  648. height: #{30rpx};
  649. margin-right: #{10rpx};
  650. background-image: url("./../image/best_icon.png");
  651. background-repeat: no-repeat;
  652. background-size: 100% auto;
  653. }
  654. }
  655. }
  656. .coupon-set {
  657. margin-top: #{24rpx};
  658. .icon-right {
  659. width: #{12rpx};
  660. height: #{22rpx};
  661. margin-left: #{10rpx};
  662. background-image: url("../../../static/image/icon/arrow-right-white.png");
  663. background-repeat: no-repeat;
  664. background-size: 100% auto;
  665. }
  666. }
  667. .coupon {
  668. margin-top: #{32rpx};
  669. background-size: 100% 100%;
  670. height: #{190rpx};
  671. background-repeat: no-repeat;
  672. background-image: url("./../image/coupon.png");
  673. margin-bottom: #{24rpx};
  674. .coupon-title {
  675. font-size: #{48rpx};
  676. padding-left: #{56rpx};
  677. color: #8f4c1a;
  678. margin-bottom: #{16rpx};
  679. }
  680. .coupon-desc {
  681. font-size: #{28rpx};
  682. padding-left: #{56rpx};
  683. color: #8f4c1a;
  684. }
  685. .coupon-unit {
  686. font-size: #{50rpx};
  687. line-height: 1.35;
  688. color: #ff5c5c;
  689. padding-bottom: #{2rpx};
  690. }
  691. .coupon-money {
  692. font-size: #{80rpx};
  693. line-height: 1;
  694. font-weight: bold;
  695. padding-right: #{56rpx};
  696. color: #ff5c5c;
  697. }
  698. }
  699. .act-modal {
  700. position: fixed;
  701. left: 0;
  702. top: 0;
  703. width: 100%;
  704. height: 100%;
  705. z-index: 2001;
  706. transition: 200ms;
  707. .show {
  708. visibility: visible;
  709. opacity: 1;
  710. }
  711. .act-modal-bg {
  712. background: rgba(0, 0, 0, 0.5);
  713. position: fixed;
  714. left: 0;
  715. top: 0;
  716. width: 100%;
  717. height: 100%;
  718. z-index: 1;
  719. }
  720. .act-modal-pic {
  721. background: rgba(0, 0, 0, 0.25);
  722. position: fixed;
  723. left: 0;
  724. top: 0;
  725. width: 100%;
  726. height: 100%;
  727. z-index: 1;
  728. }
  729. }
  730. .modal-box {
  731. background-size: 100% 100%;
  732. background-repeat: no-repeat;
  733. height: #{816rpx};
  734. width: #{606rpx};
  735. text-align: center;
  736. font-size: #{40rpx};
  737. color: #666666;
  738. .modal-close {
  739. float: right;
  740. margin-top: #{32rpx};
  741. margin-right: #{32rpx};
  742. .icon-close {
  743. background-image: url("../../../static/image/icon/close.png");
  744. background-repeat: no-repeat;
  745. background-size: 100% auto;
  746. height: #{30rpx};
  747. width: #{30rpx};
  748. }
  749. }
  750. .modal-text {
  751. margin-top: #{448rpx};
  752. margin-bottom: #{28rpx};
  753. }
  754. .bold-num {
  755. font-size: #{54rpx};
  756. color: #ffc73f;
  757. line-height:1em;
  758. font-weight: bold;
  759. }
  760. .bold-money {
  761. font-size: #{68rpx};
  762. color: #ffc73f;
  763. line-height:1em;
  764. font-weight: bold;
  765. }
  766. .btn {
  767. margin-top: #{64rpx};
  768. }
  769. }
  770. </style>