dare.vue 36 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096
  1. <template>
  2. <app-layout>
  3. <view class='join-bg' v-if='join || success'>
  4. <view class='success' v-if='success'>
  5. <view class='content'>
  6. <image src='/static/image/step/submit.png' class='banner'></image>
  7. <view class='banner-text'>恭喜您</view>
  8. <image src='/static/image/step/success.png' class='success-tip'></image>
  9. <view>成功提交步数</view>
  10. <view>奖金将于24点结算后自动发放</view>
  11. <view class='tip'>奖金可至“我的{{setting.currency_name ? setting.currency_name : '活力币'}}”查看</view>
  12. <view @click='closeTip(1)'>
  13. <button class='success-btn'>我知道了</button>
  14. </view>
  15. </view>
  16. </view>
  17. <!-- 参加成功后提示框 -->
  18. <view class='join-success' v-if='join'>
  19. <image class='join-img' src='/static/image/step/participation.png'></image>
  20. <view v-if="join" @click="closeTip()" class='join-close'>
  21. <image src='/static/image/icon/icon-close.png'></image>
  22. </view>
  23. <view>报名成功,记得{{open_date}}来参加哦</view>
  24. <button class='invite' open-type="share">邀请好友</button>
  25. </view>
  26. </view>
  27. <!-- 背景图 -->
  28. <view class='bg'>
  29. <image :src="setting.activity_pic.length > 0?setting.activity_pic:stepImg.app_image.activity_bg"></image>
  30. </view>
  31. <view class='icon'>
  32. <view style="display:inline-block" @click="toLog">
  33. <image src='/static/image/step/log.png'></image>
  34. </view>
  35. <view style="display:inline-block" @click="toRules">
  36. <image src='/static/image/step/rule.png'></image>
  37. </view>
  38. </view>
  39. <view class='dare' v-if="list[0].id > 0">
  40. <view class='join' v-for="item in list" :key="item.id">
  41. <view class='join-title'>
  42. <view class='title-left'>{{item.begin_at}}期</view>
  43. <view class='msg' v-if="item.date !== time">已有{{item.people_num}}人报名</view>
  44. <view class='not' v-if="item.log_status == null">未参赛</view>
  45. <view class='already' v-if="item.log_status != null">已参赛</view>
  46. </view>
  47. <view class='activity-name'>{{item.title}}</view>
  48. <view class='activity-step' v-if="item.log_status == null && item.now_time_status == true">目标{{item.step_num}}步</view>
  49. <view class='join-info' v-if="item.log_status != null && item.now_time_status == true">
  50. <view class='target'>目标
  51. <text>{{item.step_num}}</text>步,已完成
  52. <text v-if="item.log_status === '0'">{{daily_real_num}}</text>
  53. <text v-if="item.log_status > 0">{{item.user_total_num}}</text>步
  54. </view>
  55. <view v-if="item.log_status != 1">请于今日24点前,更新并提交步数</view>
  56. <view v-if="item.log_status == 1">奖金将于24点后结算自动发放</view>
  57. <view @click='toSubmit(item.step_num,item.id)' v-if="item.log_status == 0 && daily_real_num > item.step_num-1">
  58. <button class='submit'>提交成绩</button>
  59. </view>
  60. <button class='submit-end' v-if="item.log_status == 1">已提交成绩</button>
  61. </view>
  62. <view class='dare-item' v-if="item.now_time_status == true">
  63. <view class='item'>
  64. <view class='total'>{{item.currency_num?item.currency_num:0}}</view>
  65. <view>奖金池总额</view>
  66. </view>
  67. <view class='item'>
  68. <view class='total'>{{item.award_num?item.award_num:0}}</view>
  69. <view>达标人数</view>
  70. </view>
  71. </view>
  72. <view v-if="item.now_time_status == false">
  73. <view class='money'>{{item.currency_num?item.currency_num:0}}</view>
  74. <view>奖金池总额</view>
  75. <view class='info'>参与满
  76. <text>{{item.step_num}}</text>步起平分奖池金额</view>
  77. <view v-if="item.log_status == null" class='join-btn' @click="toJoin(item.id)">
  78. <button class='join-btn'>参与比赛</button>
  79. </view>
  80. <button class='finish-btn' v-if="item.log_status == 0" open-type="share">已参赛,邀请好友</button>
  81. </view>
  82. </view>
  83. <view class='loading' v-if="loading">正在加载中...</view>
  84. <view :style="{'height': `${adHeight}px`}"></view>
  85. </view>
  86. <!-- 无挑战 -->
  87. <view class='space' v-else>
  88. <image src='/static/image/step/none.png'></image>
  89. <view>暂无挑战赛哦</view>
  90. <view :style="{'height': `${adHeight}px`}"></view>
  91. </view>
  92. <view id="ad">
  93. <app-ad v-if="ad_data.unit_id"
  94. :unit-id="ad_data.unit_id"
  95. :type="ad_data.type"
  96. :video-url="ad_data.video_url"
  97. :pic-url="ad_data.pic_url"
  98. :coupon-url="coupon_url"
  99. :coupon-params="ad_data | getObje(ad_data)"
  100. />
  101. </view>
  102. <view class="dialog-bg cross-center" v-if="isSubmit">
  103. <view class="dialog">
  104. <view class="dialog-title">提示</view>
  105. <view class="main-center refund-tip">确认提交成绩?</view>
  106. <view class="main-center btn-area">
  107. <view class="submit-btn" @click="toSubmit(0, '')">取消</view>
  108. <view class="line"></view>
  109. <view class="submit-btn be-submit" @click='submit'>确认</view>
  110. </view>
  111. </view>
  112. </view>
  113. </app-layout>
  114. </template>
  115. <script>
  116. import appAd from "../../../components/page-component/app-ad/app-ad"
  117. import {mapState} from "vuex";
  118. export default {
  119. data() {
  120. return {
  121. unit_id: '',
  122. list: [],
  123. ad: false,
  124. space: true,
  125. daily_real_num: 0,
  126. page: 2,
  127. join: false,
  128. isSubmit: false,
  129. activity_id: '',
  130. open_date: '',
  131. step_num: 0,
  132. over: false,
  133. authorize: false,
  134. ad_data: {},
  135. setting: null,
  136. success: false,
  137. adHeight: 0,
  138. coupon_url: this.$api.step.receive,
  139. }
  140. },
  141. components: {
  142. appAd
  143. },
  144. computed: {
  145. ...mapState({
  146. stepImg: state => state.mallConfig.plugin.step,
  147. userInfo: state => state.user.info,
  148. })
  149. },
  150. filters: {
  151. getObje(data, temp) {
  152. return {
  153. id: data.id
  154. }
  155. }
  156. },
  157. methods: {
  158. getHeight() {
  159. const self = this;
  160. setTimeout(() => {
  161. const query = uni.createSelectorQuery().in(this);
  162. query.select('#ad').boundingClientRect(res => {
  163. self.adHeight = res.height;
  164. }).exec();
  165. })
  166. },
  167. toSubmit(step_num, activity_id) {
  168. this.step_num = step_num;
  169. this.activity_id = activity_id;
  170. this.isSubmit = !this.isSubmit;
  171. },
  172. toLog() {
  173. uni.navigateTo({url: '/plugins/step/log/log'});
  174. },
  175. toRules() {
  176. // uni.navigateTo({url: '/plugins/step/rules/rules?rule=2'});
  177. uni.navigateTo({
  178. url: `/pages/rules/index?url=${encodeURIComponent(this.$api.step.setting)}&key=activity_rule`,
  179. });
  180. },
  181. toJoin(id) {
  182. uni.navigateTo({url: '/plugins/step/join/join?id=' + id});
  183. },
  184. // 提交成绩
  185. submit() {
  186. let that = this;
  187. let code, iv, encrypted_data;
  188. let num = that.daily_real_num;
  189. let activity_id = that.activity_id;
  190. let step_num = that.step_num;
  191. that.isSubmit = false;
  192. if (num < step_num) {
  193. uni.showToast({
  194. title: '成绩未达标',
  195. icon: 'none',
  196. duration: 1000
  197. });
  198. } else {
  199. uni.showLoading({
  200. mask: true,
  201. title: '提交成绩中...'
  202. });
  203. // #ifdef MP-WEIXIN
  204. uni.login({
  205. success(res) {
  206. code = res.code;
  207. // 获取iv和encryptedData
  208. uni.getWeRunData({
  209. success(res) {
  210. iv = res.iv;
  211. encrypted_data = res.encryptedData;
  212. that.$request({
  213. url: that.$api.step.activity_submit,
  214. method: 'POST',
  215. data: {
  216. encrypted_data: encrypted_data,
  217. iv: iv,
  218. code: code,
  219. activity_id: activity_id,
  220. num: num
  221. },
  222. }).then(response => {
  223. uni.hideLoading();
  224. if (response.code == 0) {
  225. that.success = true;
  226. } else {
  227. uni.showToast({
  228. title: response.msg,
  229. icon: 'none',
  230. duration: 1000
  231. });
  232. }
  233. }).catch(response => {
  234. uni.hideLoading();
  235. uni.showToast({
  236. title: response,
  237. icon: 'none',
  238. duration: 1000
  239. });
  240. });
  241. }
  242. })
  243. }
  244. })
  245. // #endif
  246. // #ifdef MP-ALIPAY
  247. var myDate = new Date();
  248. let year = myDate.getFullYear();
  249. let month = myDate.getMonth() + 1;
  250. if (month >= 1 && month <= 9) {
  251. month = "0" + month;
  252. }
  253. let now = myDate.getDate();
  254. let today = year + "-" + month + "-" + now;
  255. my.getRunData({
  256. countDate: today,
  257. success: (res) => {
  258. that.$request({
  259. url: that.$api.step.activity_submit,
  260. data: {
  261. encrypted_data: encrypted_data,
  262. activity_id: activity_id,
  263. num: num
  264. },
  265. method: 'POST',
  266. }).then(response => {
  267. uni.hideLoading();
  268. if (response.code == 0) {
  269. that.success = true;
  270. } else {
  271. uni.showToast({
  272. title: response.msg,
  273. icon: 'none',
  274. duration: 1000
  275. });
  276. }
  277. }).catch(response => {
  278. uni.hideLoading();
  279. uni.showToast({
  280. title: response,
  281. icon: 'none',
  282. duration: 1000
  283. });
  284. });
  285. },
  286. fail: (res) => {
  287. uni.showModal({
  288. content: res.errMsg,
  289. showCancel: false,
  290. });
  291. },
  292. complete: (res) => {
  293. uni.showModal({
  294. content: res.errMsg,
  295. showCancel: false,
  296. });
  297. },
  298. });
  299. // #endif
  300. }
  301. },
  302. getSetting() {
  303. let that = this;
  304. that.$request({
  305. url: that.$api.step.setting,
  306. }).then(response=>{
  307. if(response.code == 0) {
  308. that.setting = response.data;
  309. }else {
  310. uni.showToast({
  311. title: response.msg,
  312. icon: 'none',
  313. duration: 1000
  314. });
  315. }
  316. }).catch(response => {
  317. that.$hideLoading();
  318. });
  319. },
  320. auth() {
  321. let that = this;
  322. uni.getSetting({
  323. success(res) {
  324. if (res.authSetting['scope.werun'] == true) {
  325. that.page = 1;
  326. that.getList();
  327. } else {
  328. uni.authorize({
  329. scope: 'scope.werun',
  330. success(res) {
  331. if (res.errMsg == "authorize:ok") {
  332. // 读取数据
  333. that.page = 1;
  334. that.getList();
  335. }
  336. },
  337. fail(res) {
  338. that.$hideLoading();
  339. uni.showModal({
  340. title: '提示',
  341. content: '获取步数信息失败,需要授权获取步数权限',
  342. showCancel: false,
  343. confirmText: '打开授权',
  344. success(e) {
  345. if (e.confirm) {
  346. uni.openSetting({});
  347. }
  348. }
  349. });
  350. }
  351. });
  352. }
  353. },
  354. fail(res) {
  355. that.authorize = true;
  356. that.$hideLoading();
  357. }
  358. })
  359. },
  360. getList() {
  361. let that = this;
  362. let code, iv, encrypted_data;
  363. uni.login({
  364. success(res) {
  365. code = res.code;
  366. // #ifdef MP-WEIXIN
  367. uni.getWeRunData({
  368. success(res) {
  369. iv = res.iv;
  370. encrypted_data = res.encryptedData;
  371. that.$request({
  372. url: that.$api.step.activity,
  373. method: 'POST',
  374. data: {
  375. encrypted_data: encrypted_data,
  376. iv: iv,
  377. code: code,
  378. page: that.page
  379. },
  380. }).then(response => {
  381. that.$hideLoading();
  382. if (response.code == 0) {
  383. that.ad_data = response.list.ad_data;
  384. that.getHeight();
  385. that.daily_real_num = response.list.daily_real_num;
  386. let list = that.list;
  387. let activity_data = response.list.activity_data;
  388. that.page++;
  389. if(activity_data.length > 0) {
  390. if (list.length > 0) {
  391. for (let i = 0; i < list.length; i++) {
  392. if (activity_data[0].id == list[i].id) {
  393. return
  394. }
  395. }
  396. }
  397. that.more = false;
  398. if (activity_data.length == 3) {
  399. that.more = true;
  400. }
  401. that.list = list.concat(activity_data);
  402. }
  403. } else {
  404. uni.showToast({
  405. title: response.msg,
  406. icon: 'none',
  407. duration: 1000
  408. });
  409. }
  410. }).catch(response => {
  411. uni.showToast({
  412. title: response,
  413. icon: 'none',
  414. duration: 1000
  415. });
  416. });
  417. },
  418. fail(res) {
  419. if (res.errMsg == 'getWeRunData:fail cancel') {
  420. uni.showModal({
  421. content: '读取失败,请稍后再试',
  422. showCancel: false,
  423. });
  424. } else if (res.errMsg == 'getWeRunData: fail device not support') {
  425. uni.showModal({
  426. content: '请在微信中搜索"微信运动"公众号,并点击关注',
  427. showCancel: false,
  428. });
  429. } else {
  430. uni.showModal({
  431. content: res.errMsg,
  432. showCancel: false,
  433. });
  434. }
  435. }
  436. })
  437. // #endif
  438. // #ifdef MP-ALIPAY
  439. var myDate = new Date();
  440. let year = myDate.getFullYear();
  441. let month = myDate.getMonth() + 1;
  442. if (month >= 1 && month <= 9) {
  443. month = "0" + month;
  444. }
  445. let now = myDate.getDate();
  446. let today = year + "-" + month + "-" + now;
  447. my.getRunData({
  448. countDate: today,
  449. success: (res) => {
  450. that.$request({
  451. url: that.$api.step.activity,
  452. method: 'POST',
  453. data: {
  454. encrypted_data: encrypted_data,
  455. page: that.page
  456. },
  457. }).then(response => {
  458. that.$hideLoading();
  459. if (response.code == 0) {
  460. that.ad_data = response.list.ad_data;
  461. that.daily_real_num = response.list.daily_real_num;
  462. let list = that.list;
  463. let activity_data = response.list.activity_data;
  464. that.page++;
  465. if(activity_data.length > 0) {
  466. if (list.length > 0) {
  467. for (let i = 0; i < list.length; i++) {
  468. if (activity_data[0].id == list[i].id) {
  469. return
  470. }
  471. }
  472. }
  473. that.more = false;
  474. if (activity_data.length == 3) {
  475. that.more = true;
  476. }
  477. that.list = list.concat(activity_data);
  478. }
  479. } else {
  480. uni.showToast({
  481. title: response.msg,
  482. icon: 'none',
  483. duration: 1000
  484. });
  485. }
  486. }).catch(response => {
  487. uni.showToast({
  488. title: response,
  489. icon: 'none',
  490. duration: 1000
  491. });
  492. });
  493. },
  494. fail: (res) => {
  495. uni.showModal({
  496. content: res.errMsg,
  497. showCancel: false,
  498. });
  499. },
  500. complete: (res) => {
  501. uni.showModal({
  502. content: res.errMsg,
  503. showCancel: false,
  504. });
  505. },
  506. });
  507. // #endif
  508. },
  509. fail(res) {
  510. uni.showModal({
  511. content: res.errMsg,
  512. showCancel: false,
  513. });
  514. }
  515. })
  516. },
  517. closeTip(status) {
  518. this.success = false;
  519. this.join = false;
  520. if(status == 1) {
  521. this.list = [];
  522. this.page = 1;
  523. this.$showLoading({
  524. type: 'global',
  525. text: '加载中...'
  526. });
  527. this.getList();
  528. }
  529. },
  530. },
  531. onReachBottom() {
  532. if(this.more) {
  533. this.getList();
  534. }
  535. },
  536. // #ifdef MP
  537. onShareAppMessage() {
  538. return this.$shareAppMessage({
  539. title: '步数挑战',
  540. path: "/plugins/step/index/index",
  541. params: {
  542. user_id: this.userInfo.options.user_id
  543. }
  544. });
  545. },
  546. // #endif
  547. onLoad(options) { this.$commonLoad.onload(options);
  548. let that = this;
  549. that.$store.dispatch('user/info');
  550. if (options.submit == 1) {
  551. that.activity_id = options.activity_id;
  552. that.step_num = options.step_num;
  553. that.isSubmit = true;
  554. } else if (options.join == 1) {
  555. that.join = true
  556. that.open_date = options.date
  557. }
  558. that.$showLoading({
  559. type: 'global',
  560. text: '加载中...'
  561. });
  562. that.auth();
  563. that.getSetting();
  564. }
  565. }
  566. </script>
  567. <style scoped lang="scss">
  568. .bg {
  569. height: #{560rpx};
  570. width: 100%;
  571. overflow-y: hidden;
  572. }
  573. .bg image {
  574. width: 100%;
  575. height: 100%;
  576. }
  577. .icon {
  578. height: #{72rpx};
  579. width: #{200rpx};
  580. position: absolute;
  581. top: #{360rpx};
  582. right: #{12rpx};
  583. }
  584. .icon image {
  585. height: #{72rpx};
  586. width: #{72rpx};
  587. margin-right: #{28rpx};
  588. }
  589. .dare {
  590. width: 100%;
  591. position: absolute;
  592. top: #{450rpx};
  593. left: 0;
  594. right: 0;
  595. }
  596. .dare-info {
  597. width: 93.6%;
  598. background-color: white;
  599. margin: 0 #{24rpx};
  600. color: #999;
  601. font-size: #{26rpx};
  602. padding: #{28rpx} #{32rpx};
  603. border-radius: #{16rpx};
  604. box-shadow: 0 0 #{20rpx} rgba(0, 0, 0, 0.15);
  605. }
  606. .join-info {
  607. font-size: #{24rpx};
  608. color: #999;
  609. text-align: center;
  610. margin-top: #{12rpx};
  611. }
  612. .target {
  613. font-size: #{26rpx};
  614. color: #666666;
  615. margin-bottom: #{14rpx};
  616. }
  617. .target text {
  618. color: #ff4544;
  619. font-family: 'DIN';
  620. }
  621. .submit {
  622. height: #{78rpx};
  623. width: #{498rpx};
  624. border-radius: #{40rpx};
  625. background-color: #ff9d1e;
  626. color: #ffff;
  627. font-size: #{32rpx};
  628. margin-top: #{20rpx};
  629. line-height: #{78rpx};
  630. border: #{1rpx} solid #ff9d1e;
  631. }
  632. .submit-end {
  633. height: #{78rpx};
  634. width: #{498rpx};
  635. border-radius: #{40rpx};
  636. background-color: #ffff;
  637. color: #ff9d1e;
  638. margin-top: #{20rpx};
  639. font-size: #{32rpx};
  640. line-height: #{78rpx};
  641. border: #{1rpx} solid #ff9d1e;
  642. }
  643. .join-title{
  644. height: #{55rpx};
  645. }
  646. .title-left {
  647. text-align: left;
  648. float: left;
  649. width: auto;
  650. color: #353535;
  651. font-size: #{28rpx};
  652. overflow: hidden;
  653. }
  654. .dare-title {
  655. height: #{48rpx};
  656. }
  657. .not {
  658. float: right;
  659. height: #{48rpx};
  660. width: #{94rpx};
  661. line-height: #{48rpx};
  662. background-color: #eee;
  663. text-align: center;
  664. }
  665. .already {
  666. float: right;
  667. height: #{48rpx};
  668. width: #{94rpx};
  669. color: #ff9d1e;
  670. line-height: #{48rpx};
  671. background-color: #fff2e2;
  672. text-align: center;
  673. }
  674. .dare-item {
  675. width: 100%;
  676. }
  677. .item {
  678. display: inline-block;
  679. width: 36%;
  680. text-align: center;
  681. padding-top: #{20rpx};
  682. }
  683. .total {
  684. color: #ff9d1e;
  685. font-family: "DIN";
  686. font-size: #{50rpx};
  687. margin-bottom: #{16rpx};
  688. }
  689. .join {
  690. width: 93.6%;
  691. background-color: white;
  692. margin: 0 #{24rpx} #{20rpx};
  693. color: #999;
  694. font-size: #{26rpx};
  695. padding: #{30rpx} #{32rpx} #{40rpx};
  696. border-radius: #{16rpx};
  697. text-align: center;
  698. margin-top: #{20rpx};
  699. box-shadow: 0 0 #{20rpx} rgba(0, 0, 0, 0.15);
  700. }
  701. .msg {
  702. float: right;
  703. }
  704. .money {
  705. color: #ff9d1e;
  706. font-family: "DIN";
  707. font-size: #{50rpx};
  708. margin: #{10rpx} 0 #{10rpx};
  709. }
  710. .info {
  711. margin: #{36rpx} 0 #{26rpx};
  712. }
  713. .info text {
  714. color: #ff9d1e;
  715. }
  716. .join-btn {
  717. height: #{80rpx};
  718. line-height: #{80rpx};
  719. width: #{500rpx};
  720. font-size: 16px;
  721. border-radius: #{40rpx};
  722. background-color: #ff9d1e;
  723. margin: 0 auto;
  724. color: #ffff;
  725. }
  726. .finish-btn {
  727. height: #{78rpx};
  728. line-height: #{78rpx};
  729. width: #{498rpx};
  730. border-radius: #{40rpx};
  731. border: #{1rpx} solid #ff9d1e;
  732. background-color: #ffff;
  733. color: #ff9d1e;
  734. font-size: #{32rpx};
  735. }
  736. button::after {
  737. border: none;
  738. }
  739. .success {
  740. position: fixed;
  741. top: #{300rpx};
  742. z-index: 3;
  743. background-color: #e8703e;
  744. width: #{630rpx};
  745. height: #{640rpx};
  746. margin: 0 #{60rpx};
  747. border-radius: #{16rpx};
  748. text-align: center;
  749. }
  750. .content {
  751. background-color: white;
  752. width: #{598rpx};
  753. height: #{608rpx};
  754. margin: #{16rpx};
  755. font-size: #{34rpx};
  756. color: #9f5100;
  757. }
  758. .success-tip {
  759. height: #{200rpx};
  760. width: #{200rpx};
  761. margin-bottom: #{28rpx};
  762. }
  763. .banner {
  764. height: #{132rpx};
  765. width: #{548rpx};
  766. margin-top: #{-76rpx};
  767. }
  768. .banner-text {
  769. position: fixed;
  770. top: #{272rpx};
  771. width: #{598rpx};
  772. text-align: center;
  773. color: #9f5100;
  774. font-size: #{42rpx};
  775. }
  776. .tip {
  777. font-size: #{30rpx};
  778. color: #666;
  779. margin: #{30rpx} 0 #{18rpx};
  780. }
  781. .success-btn {
  782. font-size: #{34rpx};
  783. color: #ffff;
  784. height: #{80rpx};
  785. width: #{500rpx};
  786. border-radius: #{40rpx};
  787. background-color: #ff9d1e;
  788. }
  789. .space {
  790. width: 93.6%;
  791. height: #{550rpx};
  792. background-color: white;
  793. margin: 0 #{24rpx};
  794. color: #999;
  795. font-size: #{34rpx};
  796. padding: #{80rpx} 0 #{100rpx};
  797. border-radius: #{16rpx};
  798. text-align: center;
  799. position: absolute;
  800. top: #{450rpx};
  801. box-shadow: 0 0 #{20rpx} rgba(0, 0, 0, 0.15);
  802. }
  803. .no-join image {
  804. height: #{200rpx};
  805. width: #{200rpx};
  806. margin-bottom: #{35rpx};
  807. }
  808. .no-join {
  809. width: 93.6%;
  810. height: #{350rpx};
  811. background-color: white;
  812. margin: 0 #{24rpx};
  813. color: #999;
  814. font-size: #{34rpx};
  815. border-radius: #{16rpx};
  816. padding: #{30rpx} 0 0;
  817. text-align: center;
  818. margin-top: #{20rpx};
  819. box-shadow: 0 0 #{20rpx} rgba(0, 0, 0, 0.15);
  820. }
  821. .space image {
  822. height: #{300rpx};
  823. width: #{300rpx};
  824. margin-bottom: #{15rpx};
  825. }
  826. form {
  827. display: inline-block;
  828. }
  829. #ad {
  830. position: fixed;
  831. bottom: 0;
  832. width: 100%;
  833. }
  834. .join-bg {
  835. width: 100%;
  836. height: 100%;
  837. position: fixed;
  838. background-color: rgba(0, 0, 0, 0.3);
  839. z-index: 9999;
  840. top: 0;
  841. left: 0;
  842. }
  843. .join-success {
  844. position: fixed;
  845. top: #{300rpx};
  846. left: 0;
  847. right: 0;
  848. margin: 0 auto;
  849. height: #{640rpx};
  850. width: #{630rpx};
  851. border-radius: #{16rpx};
  852. background-color: white;
  853. text-align: center;
  854. z-index: 9;
  855. padding: #{92rpx} 0 #{80rpx};
  856. }
  857. .join-success .join-close {
  858. width: #{28rpx};
  859. height: #{28rpx};
  860. position: absolute;
  861. top: #{32rpx};
  862. right: #{32rpx};
  863. }
  864. .join-success .join-close image {
  865. width: #{28rpx};
  866. height: #{28rpx};
  867. }
  868. .join-img {
  869. height: #{260rpx};
  870. width: #{260rpx};
  871. margin-bottom: #{40rpx};
  872. }
  873. .join-success view {
  874. font-size: #{32rpx};
  875. color: #666;
  876. }
  877. .invite {
  878. margin-top: #{56rpx};
  879. height: #{80rpx};
  880. width: #{500rpx};
  881. line-height: #{80rpx};
  882. font-size: #{34rpx};
  883. color: #ff9d1e;
  884. border-radius: #{40rpx};
  885. background-color: white;
  886. border: #{1rpx} solid #ff9d1e;
  887. }
  888. .invite::after {
  889. border: 0px;
  890. }
  891. .loading{
  892. font-size: #{30rpx};
  893. color: #353535;
  894. text-align: center;
  895. height: #{80rpx};
  896. line-height: #{80rpx};
  897. background-color: #f2f2f2;
  898. }
  899. .activity-name{
  900. font-size: #{30rpx};
  901. color: #353535;
  902. overflow: hidden;
  903. text-overflow: ellipsis;
  904. white-space: nowrap;
  905. text-align: center;
  906. margin-top: #{20rpx};
  907. margin-bottom: #{5rpx};
  908. padding: 0 11%;
  909. }
  910. .activity-step{
  911. font-size: #{26rpx};
  912. color: #666666;
  913. }
  914. .openSetting{
  915. height: #{120rpx};
  916. width: #{500rpx};
  917. line-height: #{120rpx};
  918. background-color: #4fd866;
  919. border-radius: #{30rpx};
  920. color: #ffff;
  921. font-size: #{52rpx};
  922. position: fixed;
  923. top: 50%;
  924. left: 50%;
  925. margin-left: #{-250rpx};
  926. }
  927. .over-screen{
  928. position: fixed;
  929. top: 0;
  930. left: 0;
  931. right: 0;
  932. height: 100%;
  933. width: 100%;
  934. background-color: rgba(0, 0, 0, .3);
  935. z-index: 100;
  936. }
  937. .window{
  938. height: #{160rpx};
  939. line-height: #{160rpx};
  940. width: 84%;
  941. position: fixed;
  942. top: #{400rpx};
  943. left: 0;
  944. right: 0;
  945. margin: 0 auto;
  946. background-color: white;
  947. text-align: center;
  948. font-size: #{32rpx};
  949. color: #353535;
  950. border-top-left-radius: #{16rpx};
  951. border-top-right-radius: #{16rpx};
  952. }
  953. .get-setting{
  954. height: #{88rpx};
  955. line-height: #{88rpx};
  956. width: 84%;
  957. position: fixed;
  958. top: #{560rpx};
  959. left: 0;
  960. right: 0;
  961. margin: 0 auto;
  962. border-top: #{1rpx} solid #e2e2e2;
  963. background-color: white;
  964. text-align: center;
  965. border-bottom-left-radius: #{16rpx};
  966. border-bottom-right-radius: #{16rpx};
  967. font-size: #{32rpx};
  968. color: #353535;
  969. }
  970. .dialog-bg {
  971. background-color: rgba(0, 0, 0, .3);
  972. position: fixed;
  973. top: 0;
  974. left: 0;
  975. height: 100%;
  976. width: 100%;
  977. z-index: 100;
  978. }
  979. .dialog {
  980. width: #{620rpx};
  981. border-radius: #{16rpx};
  982. margin: 0 auto;
  983. background-color: #fff;
  984. z-index: 20;
  985. }
  986. .dialog-title {
  987. font-size: #{32rpx};
  988. color: #353535;
  989. width: #{620rpx};
  990. margin: #{32rpx} auto #{40rpx};
  991. text-align: center;
  992. }
  993. .refund-tip {
  994. font-size: #{32rpx};
  995. color: #353535;
  996. margin: #{4rpx} 0 #{45rpx};
  997. }
  998. .btn-area {
  999. height: #{88rpx};
  1000. position: relative;
  1001. border-top: #{1rpx} solid #e2e2e2;
  1002. }
  1003. .btn-area .line {
  1004. height: #{32rpx};
  1005. width: #{1rpx};
  1006. background-color: #e2e2e2;
  1007. position: absolute;
  1008. top: #{28rpx};
  1009. left: 0;
  1010. right: 0;
  1011. margin: 0 auto;
  1012. }
  1013. .submit-btn {
  1014. height: #{88rpx};
  1015. line-height: #{88rpx};
  1016. font-size: #{32rpx};
  1017. color: #666;
  1018. width: #{310rpx};
  1019. text-align: center;
  1020. }
  1021. .submit-btn.be-submit {
  1022. color: #446dfd;
  1023. }
  1024. </style>