You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

807 lines
19 KiB

3 weeks ago
6 days ago
3 weeks ago
6 days ago
3 weeks ago
6 days ago
3 weeks ago
6 days ago
3 weeks ago
6 days ago
3 weeks ago
6 days ago
3 weeks ago
6 days ago
3 weeks ago
6 days ago
3 weeks ago
6 days ago
3 weeks ago
6 days ago
3 weeks ago
6 days ago
3 weeks ago
6 days ago
3 weeks ago
6 days ago
3 weeks ago
6 days ago
3 weeks ago
6 days ago
3 weeks ago
6 days ago
3 weeks ago
6 days ago
3 weeks ago
6 days ago
3 weeks ago
6 days ago
3 weeks ago
6 days ago
3 weeks ago
6 days ago
3 weeks ago
6 days ago
3 weeks ago
6 days ago
3 weeks ago
6 days ago
3 weeks ago
6 days ago
3 weeks ago
6 days ago
3 weeks ago
6 days ago
3 weeks ago
6 days ago
3 weeks ago
6 days ago
3 weeks ago
6 days ago
3 weeks ago
6 days ago
3 weeks ago
6 days ago
3 weeks ago
6 days ago
3 weeks ago
6 days ago
3 weeks ago
6 days ago
3 weeks ago
6 days ago
3 weeks ago
6 days ago
3 weeks ago
  1. <template>
  2. <div class="wheel-container">
  3. <!-- 顶部区域 -->
  4. <div class="top-section">
  5. <div class="expire-time">财富金轮到期时间{{ expireTime }}</div>
  6. <div class="top-right">
  7. <div class="icon-item">
  8. <img :src="historyImg" class="history-icon" alt="历史记录">
  9. <span class="icon-text">历史记录</span>
  10. </div>
  11. <div class="icon-item" @click="handleRuleClick">
  12. <img :src="ruleImg" class="rule-icon" alt="活动规则">
  13. <span class="icon-text">活动规则</span>
  14. </div>
  15. </div>
  16. </div>
  17. <!-- 主标题图片 -->
  18. <img :src="titleImg" class="title-img" alt="转动财富金轮 开启财富人生">
  19. <!-- 转盘区域 -->
  20. <div class="wheel-section">
  21. <div class="wheel-wrapper">
  22. <!-- 转盘图片尺寸333x333 -->
  23. <img
  24. :src="wheelImg"
  25. class="wheel-img"
  26. :class="{ spinning: isSpinning }"
  27. :style="{ transform: `rotate(${currentRotation}deg)` }"
  28. alt="财富金轮"
  29. ref="wheel"
  30. >
  31. <!-- 指针图片尺寸137x137 -->
  32. <img :src="pointerImg" class="pointer-img" alt="指针">
  33. <!-- 指针盖图片尺寸104x106 -->
  34. <img :src="pointerCoverImg" class="pointer-cover-img" alt="指针盖">
  35. </div>
  36. </div>
  37. <!-- 剩余次数 -->
  38. <div class="remaining-section">
  39. <img :src="remainingBgImg" class="remaining-bg" alt="今日剩余">
  40. <span class="remaining-text">今日剩余{{ remainingTimes }}</span>
  41. </div>
  42. <!-- 转动按钮 -->
  43. <button
  44. class="spin-btn"
  45. :disabled="isSpinning || showPrizeModal || showRuleModal || isFirstVisit || remainingTimes === 0"
  46. @click="handleSpin"
  47. >
  48. <img
  49. :src="(remainingTimes > 0 && !showPrizeModal && !showRuleModal && !isFirstVisit) ? spinBtnImg : disabledSpinBtnImg"
  50. alt="转动金轮"
  51. class="spin-btn-img"
  52. >
  53. </button>
  54. <!-- 中奖弹窗 -->
  55. <div class="prize-modal" v-if="showPrizeModal">
  56. <div class="modal-overlay" @click="closeModal"></div>
  57. <div class="modal-content">
  58. <img :src="modalBgImg" class="modal-bg" alt="弹窗背景">
  59. <!-- 右上角关闭按钮 -->
  60. <button class="close-modal" @click="closeModal">
  61. <img :src="closeBtnImg" alt="关闭弹窗">
  62. </button>
  63. <div class="prize-info">
  64. <div class="prize-title">{{ prizeMessage }}</div>
  65. <div class="prize-amount-wrapper">
  66. <img :src="prizeAmountImg" class="prize-amount-bg" alt="奖品数量背景">
  67. <div class="prize-amount">{{ prizeAmount }}</div>
  68. </div>
  69. </div>
  70. </div>
  71. </div>
  72. <!-- 剩余次数为0时的提示弹窗 -->
  73. <div class="no-times-modal" v-if="showNoTimesModal">
  74. <div class="modal-overlay" @click="closeNoTimesModal"></div>
  75. <div class="no-times-content">
  76. <img :src="noTimesImg" class="no-times-bg" alt="今日次数已用完">
  77. </div>
  78. </div>
  79. <!-- 活动规则弹窗 -->
  80. <div class="rule-modal" v-if="showRuleModal">
  81. <div class="modal-overlay" @click="closeRuleModal"></div>
  82. <div class="rule-content">
  83. <img :src="ruleBgImg" class="rule-bg" alt="活动规则背景">
  84. <!-- 右上角关闭按钮 -->
  85. <button class="close-rule-btn" @click="closeRuleModal">
  86. <img :src="closeRuleBtnImg" alt="关闭活动规则">
  87. </button>
  88. <div class="rule-text">
  89. <div class="rule-line">1.在财富金轮使用期限内每天可以转动一次</div>
  90. <div class="rule-line">2.通过财富金轮可以获得免费Tonken和背包礼物等</div>
  91. <div class="rule-line">3.用户通过财富金轮获得的物品以最终展示结果为准</div>
  92. <div class="rule-line">4.Homily Link平台拥有最终解释权</div>
  93. </div>
  94. </div>
  95. </div>
  96. <!-- 首次访问活动规则弹窗 -->
  97. <div class="rule-modal" v-if="isFirstVisit">
  98. <div class="modal-overlay" @click="closeFirstVisitModal"></div>
  99. <div class="rule-content">
  100. <img :src="ruleBgImg" class="rule-bg" alt="活动规则背景">
  101. <!-- 右上角关闭按钮 -->
  102. <button class="close-rule-btn" @click="closeFirstVisitModal">
  103. <img :src="closeRuleBtnImg" alt="关闭活动规则">
  104. </button>
  105. <div class="rule-text">
  106. <div class="rule-line">1.在财富金轮使用期限内每天可以转动一次</div>
  107. <div class="rule-line">2.通过财富金轮可以获得免费Tonken和背包礼物等</div>
  108. <div class="rule-line">3.用户通过财富金轮获得的物品以最终展示结果为准</div>
  109. <div class="rule-line">4.Homily Link平台拥有最终解释权</div>
  110. </div>
  111. </div>
  112. </div>
  113. </div>
  114. </template>
  115. <script>
  116. import { permissionApi, lotteryApi } from '@/api/goldenWheel'
  117. export default {
  118. name: 'FortuneWheel',
  119. data() {
  120. return {
  121. // 图片资源
  122. historyImg: 'https://d31zlh4on95l9h.cloudfront.net/images/aed693de6beb9faae015fd0628c4f052.png',
  123. ruleImg: 'https://d31zlh4on95l9h.cloudfront.net/images/9a3f7680b29e31b60151cf562c0d43cb.png',
  124. homeImg: 'https://d31zlh4on95l9h.cloudfront.net/images/453475456dad8e6832e9904c901c1274.png',
  125. titleImg: 'https://d31zlh4on95l9h.cloudfront.net/images/a87d19806fed47b7fdf18d4b5dd70e65.png',
  126. wheelImg: 'https://d31zlh4on95l9h.cloudfront.net/images/d925f375c9ef15a751500ae130d91fe5.png',
  127. pointerImg: 'https://d31zlh4on95l9h.cloudfront.net/images/9c09631c202b78cc06b8935c17431dac.png',
  128. pointerCoverImg: 'https://d31zlh4on95l9h.cloudfront.net/images/536c171c263990b12f1cc0a6e511b5e7.png',
  129. remainingBgImg: 'https://d31zlh4on95l9h.cloudfront.net/images/a43f0c383d55fc56b34768f039a401a8.png',
  130. spinBtnImg: 'https://d31zlh4on95l9h.cloudfront.net/images/11b749e0fd4b08238980b74c6e80b2e6.png',
  131. disabledSpinBtnImg: 'https://d31zlh4on95l9h.cloudfront.net/images/9b7383c1f80bb32a279791879947791a.png',
  132. modalBgImg: 'https://d31zlh4on95l9h.cloudfront.net/images/f75ce9ca2703662fd3176dd0493f6d7b.png',
  133. prizeAmountImg: 'https://d31zlh4on95l9h.cloudfront.net/images/878b8ea0c78bcafdaf4f6eb63a0b2eef.png',
  134. closeBtnImg: 'https://d31zlh4on95l9h.cloudfront.net/images/453475456dad8e6832e9904c901c1274.png',
  135. noTimesImg: 'https://d31zlh4on95l9h.cloudfront.net/images/a67e8b3de6e441af7bcb8fbbb2153ec2.png',
  136. ruleBgImg: 'https://d31zlh4on95l9h.cloudfront.net/images/9f585ee0ab251f348a4568355ad36816.png',
  137. closeRuleBtnImg: 'https://d31zlh4on95l9h.cloudfront.net/images/ca2ddd411ffb85968bc261382477c984.png',
  138. // 数据
  139. token: '',
  140. expireTime: '',
  141. remainingTimes: 0,
  142. isSpinning: false,
  143. showPrizeModal: false,
  144. showNoTimesModal: false,
  145. showRuleModal: false,
  146. isFirstVisit: true,
  147. currentRotation: 0,
  148. noTimesTimer: null,
  149. prizeMessage: '',
  150. prizeAmount: ''
  151. }
  152. },
  153. mounted() {
  154. this.token = decodeURIComponent(this.getQueryString('token'))
  155. // 调用API获取数据
  156. this.fetchWheelInfo();
  157. this.getTokenFromURL();
  158. },
  159. methods: {
  160. getQueryString(name) {
  161. var reg = new RegExp('(^|&)' + name + '=([^&]*)(&|$)', 'i');
  162. var r = window.location.search.substr(1).match(reg);
  163. console.log("获取token方法getQueryString"+reg)
  164. console.log("获取token方法getQueryString"+r)
  165. if (r != null) {
  166. return unescape(r[2]);
  167. }
  168. return null;
  169. },
  170. getTokenFromURL() {
  171. // 使用URLSearchParams API获取token参数
  172. const urlParams = new URLSearchParams(window.location.search);
  173. const tokenParam = urlParams.get('token');
  174. console.log("getTokenFromURL"+tokenParam)
  175. if (tokenParam) {
  176. this.token = decodeURIComponent(tokenParam);
  177. console.log("getTokenFromURL"+this.token)
  178. console.log('获取到Token:', this.token);
  179. } else {
  180. console.log('URL中没有找到token参数');
  181. }
  182. },
  183. // 调用API获取财富金轮信息
  184. fetchWheelInfo() {
  185. const token = 'pC134lIG1xDIbIi1ohnnbZi0+fEeMx8pywnIlrmTxdwROKkuwWqAWu9orpkpeXVqL98DPfeonNYpHv+mucA';
  186. permissionApi({ token }).then(res => {
  187. if(res.code === 200){
  188. this.expireTime = res.data.deadline;
  189. this.remainingTimes = res.data.count;
  190. } else {
  191. console.error('API返回错误:', res.msg);
  192. }
  193. }).catch(error => {
  194. console.error('API调用失败:', error);
  195. });
  196. },
  197. // 调用抽奖API获取奖品信息
  198. fetchPrizeInfo() {
  199. const token = 'pC134lIG1xDIbIi1ohnnbZi0+fEeMx8pywnIlrmTxdwROKkuwWqAWu9orpkpeXVqL98DPfeonNYpHv+mucA';
  200. return lotteryApi({ token }).then(res => {
  201. if(res.code === 200){
  202. // 解析API返回的字符串数据
  203. const prizeData = res.data;
  204. // 假设返回格式为 "恭喜您获得卡券 2"
  205. // 这里可以根据实际返回格式进行调整
  206. const parts = prizeData.split(' ');
  207. this.prizeMessage = parts.slice(0, -1).join(' '); // 获取除最后一部分外的所有部分
  208. this.prizeAmount = parts[parts.length - 1]; // 获取最后一部分作为奖品数量
  209. // 抽奖成功后重新获取剩余次数
  210. this.fetchWheelInfo();
  211. return true;
  212. } else {
  213. console.error('抽奖API返回错误:', res.msg);
  214. // 设置默认值
  215. this.prizeMessage = '抽奖失败';
  216. this.prizeAmount = '请重试';
  217. return false;
  218. }
  219. }).catch(error => {
  220. console.error('抽奖API调用失败:', error);
  221. // 设置默认值
  222. this.prizeMessage = '网络错误';
  223. this.prizeAmount = '请重试';
  224. return false;
  225. });
  226. },
  227. // 处理转动
  228. async handleSpin() {
  229. if (this.showRuleModal || this.isFirstVisit) return;
  230. if (this.remainingTimes <= 0) {
  231. this.showNoTimesModal = true;
  232. if (this.noTimesTimer) {
  233. clearTimeout(this.noTimesTimer);
  234. }
  235. this.noTimesTimer = setTimeout(() => {
  236. this.showNoTimesModal = false;
  237. }, 3000);
  238. return;
  239. }
  240. if (this.isSpinning) return;
  241. this.isSpinning = true;
  242. // 开始旋转动画
  243. const newRotation = this.currentRotation + 1440;
  244. this.currentRotation = newRotation;
  245. // 调用抽奖API获取奖品信息
  246. const success = await this.fetchPrizeInfo();
  247. setTimeout(() => {
  248. this.isSpinning = false;
  249. if (success) {
  250. setTimeout(() => {
  251. this.showPrizeModal = true;
  252. }, 500);
  253. }
  254. }, 3000);
  255. },
  256. // 处理活动规则点击
  257. handleRuleClick() {
  258. this.showRuleModal = true;
  259. },
  260. // 关闭弹窗
  261. closeModal() {
  262. this.showPrizeModal = false;
  263. },
  264. // 关闭无次数提示弹窗
  265. closeNoTimesModal() {
  266. this.showNoTimesModal = false;
  267. if (this.noTimesTimer) {
  268. clearTimeout(this.noTimesTimer);
  269. }
  270. },
  271. // 关闭活动规则弹窗
  272. closeRuleModal() {
  273. this.showRuleModal = false;
  274. },
  275. // 关闭首次访问弹窗
  276. closeFirstVisitModal() {
  277. this.isFirstVisit = false;
  278. },
  279. }
  280. }
  281. </script>
  282. <style scoped>
  283. .wheel-container {
  284. min-height: 100vh;
  285. background-image: url('https://d31zlh4on95l9h.cloudfront.net/images/aec2d399d578ab0a97d72bc8628433bb.png');
  286. background-size: cover;
  287. background-position: bottom center;
  288. padding: 15px;
  289. display: flex;
  290. flex-direction: column;
  291. align-items: center;
  292. position: relative;
  293. }
  294. /* 顶部区域样式 */
  295. .top-section {
  296. width: 100%;
  297. display: flex;
  298. justify-content: space-between;
  299. align-items: flex-start;
  300. margin-bottom: 15px;
  301. }
  302. .expire-time {
  303. color: #fff;
  304. font-size: 12px;
  305. font-weight: bold;
  306. text-shadow: 1px 1px 2px rgba(0, 0, 0, 0.5);
  307. margin: 11px 0 0 12px;
  308. }
  309. .top-right {
  310. display: flex;
  311. gap: 20px;
  312. align-items: center;
  313. }
  314. .icon-item {
  315. display: flex;
  316. flex-direction: column;
  317. align-items: center;
  318. gap: 4px;
  319. cursor: pointer;
  320. }
  321. .history-icon, .rule-icon, .home-icon {
  322. width: 25px;
  323. height: 25px;
  324. cursor: pointer;
  325. }
  326. .icon-text {
  327. color: #fff;
  328. font-size: 11px;
  329. text-shadow: 1px 1px 1px rgba(0, 0, 0, 0.8);
  330. }
  331. /* 主标题图片样式 */
  332. .title-img {
  333. width: 327px;
  334. height: 144px;
  335. margin-bottom: 20px;
  336. }
  337. /* 转盘区域样式 */
  338. .wheel-section {
  339. display: flex;
  340. flex-direction: column;
  341. align-items: center;
  342. margin-bottom: 15px;
  343. }
  344. .wheel-wrapper {
  345. position: relative;
  346. width: 333px;
  347. height: 333px;
  348. }
  349. .wheel-img {
  350. width: 100%;
  351. height: 100%;
  352. transform-origin: center;
  353. will-change: transform;
  354. transition: transform 0.3s ease-out;
  355. }
  356. .wheel-img.spinning {
  357. animation: optimal-spin 3s ease-out forwards;
  358. }
  359. @keyframes optimal-spin {
  360. 0% {
  361. transform: rotate(0deg);
  362. animation-timing-function: ease-in;
  363. }
  364. 70% {
  365. transform: rotate(1260deg);
  366. }
  367. 100% {
  368. transform: rotate(1440deg);
  369. }
  370. }
  371. /* 指针样式 */
  372. .pointer-img {
  373. position: absolute;
  374. top: 50%;
  375. left: 50%;
  376. width: 137px;
  377. height: 137px;
  378. transform: translate(-50%, -50%);
  379. z-index: 2;
  380. }
  381. /* 指针盖样式 */
  382. .pointer-cover-img {
  383. position: absolute;
  384. top: 50%;
  385. left: 50%;
  386. width: 104px;
  387. height: 106px;
  388. transform: translate(-50%, -50%);
  389. z-index: 3;
  390. }
  391. /* 剩余次数样式 */
  392. .remaining-section {
  393. position: relative;
  394. margin-bottom: 20px;
  395. display: flex;
  396. justify-content: center;
  397. margin-top: -5px;
  398. }
  399. .remaining-bg {
  400. width: 104px;
  401. height: 21.5px;
  402. }
  403. .remaining-text {
  404. position: absolute;
  405. top: 50%;
  406. left: 50%;
  407. transform: translate(-50%, -50%);
  408. color: #fff;
  409. font-size: 12px;
  410. font-weight: bold;
  411. text-shadow: 1px 1px 1px rgba(0, 0, 0, 0.8);
  412. width: 100%;
  413. text-align: center;
  414. white-space: nowrap;
  415. }
  416. /* 转动按钮样式 */
  417. .spin-btn {
  418. background: none;
  419. border: none;
  420. cursor: pointer;
  421. transition: transform 0.2s ease;
  422. }
  423. .spin-btn:active:not(:disabled) {
  424. transform: scale(0.95);
  425. }
  426. .spin-btn:disabled {
  427. cursor: not-allowed;
  428. opacity: 0.7;
  429. }
  430. .spin-btn-img {
  431. width: 240px;
  432. height: 94px;
  433. }
  434. /* 弹窗样式 */
  435. .prize-modal, .no-times-modal, .rule-modal {
  436. position: fixed;
  437. top: 0;
  438. left: 0;
  439. width: 100%;
  440. height: 100%;
  441. display: flex;
  442. justify-content: center;
  443. align-items: center;
  444. z-index: 1000;
  445. }
  446. .modal-overlay {
  447. position: absolute;
  448. top: 0;
  449. left: 0;
  450. width: 100%;
  451. height: 100%;
  452. background-color: rgba(0, 0, 0, 0.7);
  453. }
  454. /* 中奖弹窗内容区域尺寸为333x377 */
  455. .modal-content {
  456. position: relative;
  457. width: 333px;
  458. height: 377px;
  459. display: flex;
  460. flex-direction: column;
  461. align-items: center;
  462. justify-content: center;
  463. z-index: 1001;
  464. animation: modal-appear 0.3s ease-out;
  465. }
  466. @keyframes modal-appear {
  467. from {
  468. opacity: 0;
  469. transform: scale(0.8) translateY(-20px);
  470. }
  471. to {
  472. opacity: 1;
  473. transform: scale(1) translateY(0);
  474. }
  475. }
  476. .modal-bg {
  477. position: absolute;
  478. width: 100%;
  479. height: 100%;
  480. z-index: -1;
  481. }
  482. /* 无次数提示弹窗样式 */
  483. .no-times-content {
  484. position: relative;
  485. width: 333px;
  486. height: 79px;
  487. display: flex;
  488. justify-content: center;
  489. align-items: center;
  490. z-index: 1001;
  491. margin-top: 250px;
  492. animation: slide-up 0.3s ease-out;
  493. }
  494. @keyframes slide-up {
  495. from {
  496. opacity: 0;
  497. transform: translateY(20px);
  498. }
  499. to {
  500. opacity: 1;
  501. transform: translateY(0);
  502. }
  503. }
  504. .no-times-bg {
  505. position: absolute;
  506. width: 100%;
  507. height: 100%;
  508. z-index: -1;
  509. }
  510. /* 弹窗内容样式 */
  511. .prize-info {
  512. display: flex;
  513. flex-direction: column;
  514. align-items: center;
  515. justify-content: center;
  516. text-align: center;
  517. z-index: 2;
  518. margin-top: 120px;
  519. }
  520. .prize-title {
  521. color: #B82525;
  522. font-size: 25px;
  523. font-weight: bold;
  524. margin-bottom: 35px;
  525. text-shadow: 1px 1px 2px rgba(0, 0, 0, 0.5);
  526. animation: text-pulse 2s infinite;
  527. }
  528. @keyframes text-pulse {
  529. 0%, 100% {
  530. transform: scale(1);
  531. }
  532. 50% {
  533. transform: scale(1.05);
  534. }
  535. }
  536. .prize-amount-wrapper {
  537. position: relative;
  538. display: flex;
  539. justify-content: center;
  540. align-items: center;
  541. margin-top: 20px;
  542. }
  543. /* 奖品数量背景图片尺寸为272x58 */
  544. .prize-amount-bg {
  545. width: 272px;
  546. height: 58px;
  547. }
  548. .prize-amount {
  549. position: absolute;
  550. top: 50%;
  551. left: 50%;
  552. transform: translate(-50%, -50%);
  553. color: #FFFFFF;
  554. font-size: 25px;
  555. font-weight: bold;
  556. text-shadow: 1px 1px 2px rgba(0, 0, 0, 0.8);
  557. }
  558. /* 关闭按钮样式 - 修改位置 */
  559. .close-modal {
  560. position: absolute;
  561. top: 115px;
  562. right: 22px;
  563. background: none;
  564. border: none;
  565. cursor: pointer;
  566. z-index: 1002;
  567. transition: transform 0.2s ease;
  568. }
  569. .close-modal:hover {
  570. transform: scale(1.1);
  571. }
  572. .close-modal img {
  573. width: 35px;
  574. height: 35px;
  575. }
  576. /* 活动规则弹窗样式 - 整体下移 */
  577. .rule-content {
  578. position: relative;
  579. width: 333px;
  580. height: 239px;
  581. display: flex;
  582. flex-direction: column;
  583. align-items: center;
  584. z-index: 1001;
  585. animation: modal-appear 0.3s ease-out;
  586. margin-top: 80px;
  587. }
  588. .rule-bg {
  589. position: absolute;
  590. width: 100%;
  591. height: 100%;
  592. z-index: -1;
  593. }
  594. /* 活动规则关闭按钮 - 修复:确保按钮层级高于背景 */
  595. .close-rule-btn {
  596. position: absolute;
  597. top: 45.5px;
  598. right: 35.5px;
  599. background: none;
  600. border: none;
  601. cursor: pointer;
  602. z-index: 1002;
  603. transition: transform 0.2s ease;
  604. padding: 0;
  605. width: 30px;
  606. height: 30px;
  607. display: flex;
  608. align-items: center;
  609. justify-content: center;
  610. }
  611. .close-rule-btn:hover {
  612. transform: scale(1.1);
  613. }
  614. .close-rule-btn img {
  615. width: 20px;
  616. height: 20px;
  617. display: block;
  618. }
  619. /* 活动规则文本 */
  620. .rule-text {
  621. position: absolute;
  622. top: 83px;
  623. left: 27px;
  624. display: flex;
  625. flex-direction: column;
  626. gap: 9.15px;
  627. width: calc(100% - 54px);
  628. }
  629. .rule-line {
  630. color: #FFFFFF;
  631. font-size: 12px;
  632. line-height: 1.4;
  633. }
  634. /* 媒体查询 - 适配小屏幕 */
  635. @media (max-width: 380px) {
  636. .title-img {
  637. width: 280px;
  638. height: 123px;
  639. }
  640. .wheel-wrapper {
  641. width: 280px;
  642. height: 280px;
  643. }
  644. .pointer-img {
  645. width: 115px;
  646. height: 115px;
  647. }
  648. .pointer-cover-img {
  649. width: 87px;
  650. height: 89px;
  651. }
  652. .spin-btn-img {
  653. width: 200px;
  654. height: 78px;
  655. }
  656. .top-right {
  657. gap: 15px;
  658. }
  659. .remaining-section {
  660. margin-top: -8px;
  661. }
  662. /* 小屏幕适配中奖弹窗 */
  663. .modal-content {
  664. width: 300px;
  665. height: 340px;
  666. }
  667. .prize-info {
  668. margin-top: 100px;
  669. }
  670. .prize-title {
  671. margin-bottom: 30px;
  672. }
  673. .prize-amount-wrapper {
  674. margin-top: 18px;
  675. }
  676. .prize-amount-bg {
  677. width: 240px;
  678. height: 51px;
  679. }
  680. .prize-amount {
  681. font-size: 22px;
  682. }
  683. .no-times-content {
  684. width: 280px;
  685. height: 66px;
  686. margin-top: 200px;
  687. }
  688. /* 小屏幕适配关闭按钮位置 */
  689. .close-modal {
  690. top: 100px;
  691. right: 18px;
  692. }
  693. .close-modal img {
  694. width: 30px;
  695. height: 30px;
  696. }
  697. /* 小屏幕适配活动规则弹窗 */
  698. .rule-content {
  699. width: 300px;
  700. height: 215px;
  701. margin-top: 70px;
  702. }
  703. .close-rule-btn {
  704. top: 41px;
  705. right: 32px;
  706. }
  707. .rule-text {
  708. top: 75px;
  709. left: 24px;
  710. width: calc(100% - 48px);
  711. }
  712. }
  713. </style>