detail.vue 31 KB

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