index.vue 20 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869
  1. <template>
  2. <view class="vote-detail">
  3. <!-- 活动查询 -->
  4. <view class="title">
  5. <image style="width: 158rpx;height: 158rpx;border-radius: 50%; " :src="voteDetail.logo" mode="">
  6. </image>
  7. <text class="title-text">{{voteDetail.project_name}}</text>
  8. <text class="title-btn">{{voteDetail.activity.title}}</text>
  9. </view>
  10. <!-- 分割线 -->
  11. <view style="width: 92%; height: 2rpx; background-color:#F0F0F0;margin: 40rpx auto; "></view>
  12. <!-- 排名 -->
  13. <view class="rank">
  14. <view class="vote-detail-btn">
  15. <view class="vote-detail-btn-item">
  16. <text class="vote-detail-btn-item-num">{{voteDetail.project_no}}</text>
  17. <text class="vote-detail-btn-item-text">编号</text>
  18. </view>
  19. <view style="width: 2rpx;height: 52rpx;background-color: #ccc;"></view>
  20. <view class="vote-detail-btn-item">
  21. <text class="vote-detail-btn-item-num"
  22. v-if="voteDetail.ticket_num>=0">{{voteDetail.ticket_num + voteDetail.virtual_ticket_num}}</text>
  23. <text class="vote-detail-btn-item-text">票数</text>
  24. </view>
  25. <view style="width: 2rpx;height: 52rpx;background-color: #ccc;"></view>
  26. <view class="vote-detail-btn-item">
  27. <text class="vote-detail-btn-item-num">{{voteDetail.rank}}</text>
  28. <text class="vote-detail-btn-item-text">排名</text>
  29. </view>
  30. <view style="width: 2rpx;height: 52rpx;background-color: #ccc;"></view>
  31. <view class="vote-detail-btn-item">
  32. <text class="vote-detail-btn-item-num">{{voteDetail.next_rank_ticket_num}}</text>
  33. <text class="vote-detail-btn-item-text">距上名</text>
  34. </view>
  35. </view>
  36. </view>
  37. <!-- 轮播图 -->
  38. <view style="background-color: #f9f9f9;">
  39. <view class="swiper">
  40. <view class="home-swiper">
  41. <uni-swiper-dot :mode="mode" :info="info" :current="current1" :dots-styles="dotsStyles">
  42. <swiper class="swiper-box" @change="change1" circular>
  43. <swiper-item v-for="(item ,index) in info" :key="index" v-if="resource_type == 1 ">
  44. <view class="swiper-item">
  45. <image style="width: 100%;height:576rpx; border-radius: 12rpx; " :src="item.img"
  46. mode="aspectFill"></image>
  47. </view>
  48. </swiper-item>
  49. <swiper-item v-if="resource_type == 2 ">
  50. <view class="swiper-item">
  51. <video id="myVideo" ref="myVideo"
  52. style="width: 100%; height: 576rpx;border-radius: 12rpx; " :src="video_url"
  53. controls :enable-progress-gesture="false">
  54. </video>
  55. </view>
  56. </swiper-item>
  57. </swiper>
  58. </uni-swiper-dot>
  59. </view>
  60. </view>
  61. <!-- 投票 -->
  62. <view class="btn" @click="goVote(activity_project_id)">
  63. <view v-if="spending || isStart" class="btn-vote"
  64. :class="spending?'btn-vote': isStart?'btn-vote-fasle' :'' ">
  65. <text>投票</text>
  66. </view>
  67. <view class="btn-vote-fasle" v-if="isEnd">
  68. <text>投票结束</text>
  69. </view>
  70. </view>
  71. <!-- 帮我拉票 -->
  72. <view class="help">
  73. <!-- <view class="help-btn" @click="getPoster">
  74. <text>帮我拉票</text>
  75. </view> -->
  76. <view class="help-btn" @click="showPoster">
  77. <text>帮我拉票</text>
  78. </view>
  79. </view>
  80. <movable-area class="movableArea">
  81. <movable-view class="movableView" direction="all" x="630rpx" y="700rpx">
  82. <view class="img-IHg" @click="goJoin">
  83. <image style="width: 64rpx; height: 58rpx; " src="/static/icon/vip.png" mode=""></image>
  84. </view>
  85. </movable-view>
  86. </movable-area>
  87. <!-- 分割线 -->
  88. <view style="width: 92%; height: 2rpx; background-color:#F0F0F0;margin: 64rpx auto; "></view>
  89. <!-- 介绍 -->
  90. <view class="introduce">
  91. <view class="introduce-title">
  92. <text>参赛介绍</text>
  93. </view>
  94. <view class="introduce-text" v-html="voteDetail.intro"></view>
  95. </view>
  96. <!-- 预约 -->
  97. <view class="reserve">
  98. <view class="reserve-left" @click="goSwiperSmall">
  99. <image style="width: 36rpx;height: 36rpx; margin-right: 10rpx;" src="/static/icon/reserve02.png"
  100. mode=""></image>
  101. <text>预约</text>
  102. </view>
  103. <view class="reserve-right" @click="goJoin">
  104. <image style="width: 60rpx;height: 56rpx; margin-right: 4rpx; " src="/static/icon/reserve01.png"
  105. mode=""></image>
  106. <text>加入IHG会员</text>
  107. </view>
  108. </view>
  109. </view>
  110. <!-- 弹出层 -->
  111. <uni-popup ref="popup" type="center">
  112. <view class="pop">
  113. <view class="title"><text>{{pupopSuccess? "投票成功" : "票数不足"}}</text></view>
  114. <view class="img" v-if="is_prize==0">
  115. <image :src="voteDetail.activity.success_img"></image>
  116. </view>
  117. <view class="img" v-if="is_prize==1">
  118. <image :src="voteDetail.activity.success_img"></image>
  119. </view>
  120. <view class="textfont">
  121. <text v-if="!isVoteNum && is_prize==0">今日投票数已用完
  122. 点击 加入IHG会员 可享受额外{{vipRewardTicketNum}}票数</text>
  123. <text v-if="isVoteNum && is_prize==0 ">今日投票数还有 {{userCanVoteNum}} 次
  124. 点击再次投票可再次为本项目投票也可为其他项目投票</text>
  125. <text v-if="is_prize==1">恭喜你中奖了!
  126. 获得了{{prizeProduct}}的奖品,请尽快领取</text>
  127. </view>
  128. <view class="btn">
  129. <view v-if="is_prize==0" class="cancel"
  130. @click="isVoteNum?voteAgain(activity_project_id):closeVote()">
  131. <text>{{isVoteNum?'再次投票':'关闭'}}</text>
  132. </view>
  133. <view v-if="is_prize==0" class="download" @click="isVoteNum?goOtherItem():goJoin()">
  134. <text>{{isVoteNum?'其他项目':'加入IHG会员'}}</text>
  135. </view>
  136. <view v-if="is_prize==1" class="cancel" @click="closeVote">
  137. <text>关闭</text>
  138. </view>
  139. <view v-if="is_prize==1" class="download" @click="goConvert">
  140. <text>去兑换</text>
  141. </view>
  142. </view>
  143. </view>
  144. </uni-popup>
  145. <Poster ref="poster" :name="voteDetail.project_name" :title="voteDetail.activity.title"/>
  146. </view>
  147. </template>
  148. <script>
  149. // import HchPoster from "@/components/hch-poster/hch-poster.vue"
  150. import Poster from "./poster.vue";
  151. export default {
  152. components:{Poster},
  153. data() {
  154. return {
  155. is_vip: false,
  156. pupopSuccess: true,
  157. pupopWidth: 590,
  158. pupopHeight: 788,
  159. //一定要注意像素密度的问题,这里使用的固定数值
  160. pixelRatio: 3, //屏幕像数密度
  161. inviteQR: '', //动态二维码
  162. posterImg: '', //最后生成的海报
  163. //二维码
  164. codeImg: '',
  165. //投票是否中奖,1中奖,0未中奖
  166. is_prize: '',
  167. //中奖礼物
  168. prizeProduct: '',
  169. //banner视频路径
  170. video_url: '',
  171. //banner图展示视频或者图片
  172. resource_type: '',
  173. //跳转h5和小程序
  174. jump_type: '',
  175. jump_config: '',
  176. //跳转vip小程序获得投票数
  177. vipRewardTicketNum: '',
  178. //活动id
  179. sourceId: '',
  180. //活动可以使用的投票数
  181. userCanVoteNum: '',
  182. isVoteNum: false,
  183. //判断活动是否正在进行中
  184. spending: false,
  185. //判断活动是否开始
  186. isStart: false,
  187. //判断活动是否结束
  188. isEnd: false,
  189. //活动开始时间
  190. startTime: '',
  191. //活动结束时间
  192. endTime: "",
  193. // 活动项目id
  194. activity_project_id: '',
  195. // 活动项目详情
  196. voteDetail: '',
  197. //轮播图
  198. info: [],
  199. dotsStyles: {
  200. backgroundColor: 'rgba(255, 255, 255, .3)',
  201. border: '1px rgba(255, 255, 255, .3) solid',
  202. color: '#fff',
  203. selectedBackgroundColor: 'rgba(255, 255, 255, 1)',
  204. selectedBorder: '1px rgba(255, 255, 255, 1) solid'
  205. },
  206. //指示点显示位置
  207. current1: 0,
  208. mode: 'dot'
  209. }
  210. },
  211. onReady: function(res) {
  212. this.videoContext = uni.createVideoContext('myVideo')
  213. console.log('onReady')
  214. uni.getStorage({
  215. key: 'is_vip',
  216. success: (data)=> {
  217. console.log(data)
  218. this.is_vip = data.data === 1 ? true : false
  219. console.log(this.is_vip)
  220. },
  221. fail:()=>{
  222. this.is_vip = false;
  223. }
  224. });
  225. },
  226. onLoad(op) {
  227. this.activity_project_id = op.id
  228. this.getDetail(op.id)
  229. this.admin = this.$store.getters.userInfo
  230. // //海报
  231. // this.pupopWidth = this.pupopWidth * this.pixelRatio
  232. // this.pupopHeight = this.pupopHeight * this.pixelRatio
  233. },
  234. watch: {
  235. vipRewardTicketNum: {
  236. handler(newName, oldName) {
  237. // console.log(newName, '--->监听')
  238. },
  239. immediate: true,
  240. deep: true
  241. }
  242. },
  243. methods: {
  244. shareing() {
  245. uni.showLoading({
  246. title: "海报生成中...",
  247. mask: true
  248. })
  249. // this.inviteQR = this.codeImg
  250. // this.createPoster();
  251. },
  252. //去兑换页面
  253. goConvert() {
  254. uni.navigateTo({
  255. url: '/pages/my/prize/prize',
  256. fail:(err)=>{
  257. console.log(err)
  258. }
  259. })
  260. },
  261. //视频自动播放
  262. openVideoPlay() {
  263. this.videoContext.play()
  264. },
  265. //隐藏
  266. handleCancel() {
  267. console.log('取消审生成海报');
  268. },
  269. //生产海报
  270. getPoster() {
  271. this.$refs.hchPoster.posterShow()
  272. },
  273. // 切换轮播图指示点
  274. change1(e) {
  275. this.current1 = e.detail.current;
  276. },
  277. getDetail(id) {
  278. this.$api.active.getActiveProjectDetail({
  279. activity_project_id: id
  280. }).then(res => {
  281. // console.log(res, "detail")
  282. if (res.code == 0) {
  283. this.voteDetail = res.data
  284. this.startTime = res.data.activity.start_time.replace(/-/g, "/")
  285. // “yyyy-MM-dd-hh-mm-ss”.replace(/-/g,"/")
  286. this.endTime = res.data.activity.end_time.replace(/-/g, "/")
  287. this.cancelTime(this.startTime, this.endTime)
  288. //活动可以使用的投票数
  289. this.userCanVoteNum = res.data.user_can_vote_num
  290. if (this.userCanVoteNum > 0) {
  291. this.isVoteNum = true
  292. } else {
  293. this.isVoteNum = false
  294. }
  295. this.sourceId = res.data.id
  296. //跳转vip小程序获得投票数
  297. this.vipRewardTicketNum = res.data.activity.vip_reward_ticket_num
  298. // this.info =JSON.parse( res.data.img_urls)
  299. this.info = JSON.parse(res.data.img_urls).map(item => {
  300. return {
  301. img: item
  302. }
  303. })
  304. //跳转h5和小程序
  305. this.jump_type = res.data.jump_type,
  306. this.jump_config = res.data.jump_config
  307. //banner展示视频或者图片
  308. this.resource_type = res.data.resource_type
  309. this.video_url = res.data.video_url
  310. //视频自动播放
  311. this.openVideoPlay()
  312. //海报图片
  313. // this.posterData.mainImg = res.data.share_img
  314. // this.codeImg = res.data.qrcode_url
  315. }
  316. })
  317. },
  318. //轮播图跳转h5或者小程序和内部页面
  319. goSwiperSmall() {
  320. //跳转h5
  321. if (this.jump_type == 1) {
  322. const url = this.jump_config; // 跳转的外链
  323. const navtitle = 'H5'; // 这个标题是你自己可以设置的
  324. uni.navigateTo({
  325. // 跳转到webview页面
  326. url: `/pages/webview/webview?url=${url}&nav=${navtitle}`,
  327. success: () => {
  328. console.log('成功')
  329. },
  330. fail: (e) => {
  331. console.log(e, "失败")
  332. }
  333. });
  334. } else if (this.jump_type == 2) {
  335. let obj = JSON.parse(this.jump_config);
  336. wx.navigateToMiniProgram({
  337. appId: `${obj.appid}`, //appid
  338. path: `${obj.path}`, //path
  339. extraData: { //参数
  340. foo: 'bar'
  341. },
  342. // envVersion: 'develop', //开发版develop 开发版 trial 体验版 release 正式版
  343. success(res) {
  344. console.log('成功')
  345. // 打开成功
  346. },
  347. fail(e) {
  348. console.log(e, '失败')
  349. }
  350. })
  351. } else if (this.jump_type == 4) {
  352. let obj = this.jump_config
  353. uni.reLaunch({
  354. url: obj,
  355. fail:(err)=>{
  356. uni.navigateTo({
  357. url: obj
  358. })
  359. }
  360. })
  361. }
  362. },
  363. cancelTime(i, j) {
  364. let nowtime = new Date() //获取当前时间
  365. let startime = new Date(i) //活动开始时间
  366. let endtime = new Date(j); //活动结束时间
  367. let lefttime = endtime.getTime() - nowtime.getTime() //距离结束时间的毫秒数
  368. let spendtime = nowtime.getTime() - startime.getTime() //距离结束时间的毫秒数
  369. if (lefttime > 0 && spendtime > 0) {
  370. //活动进行中
  371. this.spending = true
  372. } else if (lefttime < 0) {
  373. //活动结束
  374. this.isEnd = true
  375. } else if (spendtime < 0) {
  376. //活动未开始
  377. this.isStart = true
  378. }
  379. },
  380. // 打开弹出层
  381. openVote(mode = true) {
  382. this.pupopSuccess = mode
  383. this.$refs.popup.open()
  384. },
  385. // 关闭弹出层
  386. closeVote() {
  387. this.$refs.popup.close()
  388. },
  389. //再次投票
  390. voteAgain(id) {
  391. this.goVote(id, true)
  392. },
  393. //跳转其他项目
  394. goOtherItem() {
  395. uni.navigateBack()
  396. },
  397. //获取当前页面路径
  398. getPageUrl() {
  399. const pages = getCurrentPages();
  400. if (pages.length == 1) {
  401. const currentPage = pages[0];
  402. let pageUrl = `/${currentPage.route}`;
  403. return pageUrl
  404. } else {
  405. const currentPage = pages[pages.length - 1];
  406. let pageUrl = `/${currentPage.route}`;
  407. return pageUrl
  408. }
  409. },
  410. // 跳转其他小程序
  411. goJoin() {
  412. let _this = this
  413. wx.navigateToMiniProgram({
  414. appId: 'wx255b58f0992b3c53', //appid
  415. path: 'newUIMain/enrollment/enrollment', //path
  416. extraData: { //参数
  417. foo: 'bar'
  418. },
  419. // envVersion: 'develop', //开发版develop 开发版 trial 体验版 release 正式版
  420. success(res) {
  421. let page = _this.getPageUrl()
  422. let user_id = ''
  423. if (_this.admin != null) {
  424. user_id = _this.admin.id
  425. } else {
  426. user_id = 0
  427. }
  428. console.log('成功', page)
  429. _this.$api.my.userMemberAdd({
  430. user_id,
  431. page,
  432. }).then(res => {
  433. console.log(res.data);
  434. })
  435. //增加票数
  436. _this.$api.my.userJoinVip({
  437. source_type: 1,
  438. source_id: _this.sourceId
  439. }).then(res => {
  440. uni.setStorage({
  441. key: 'is_vip',
  442. data: 1,
  443. });
  444. _this.is_vip = true
  445. })
  446. // 打开成功
  447. },
  448. fail(e) {
  449. console.log(e, '失败')
  450. }
  451. })
  452. },
  453. // 投票
  454. goVote(id, again = false) {
  455. again && this.closeVote();
  456. this.$api.active.vote({
  457. activity_project_id: id
  458. }).then(res => {
  459. console.log(res, '投票')
  460. if (res.code == 0) {
  461. this.is_prize = res.data.is_prize
  462. if (this.is_prize == 1) {
  463. this.prizeProduct = res.data?.product?.name
  464. }
  465. this.openVote()
  466. this.getDetail(this.activity_project_id)
  467. } else if(res.code === 1){
  468. if(!this.is_vip){
  469. this.openVote(false)
  470. }else{
  471. uni.showToast({
  472. icon: 'error',
  473. title: res.msg
  474. })
  475. }
  476. } else {
  477. uni.showToast({
  478. icon: 'none',
  479. title: res.msg
  480. })
  481. }
  482. }).catch(err => {
  483. console.log(err)
  484. uni.showToast({
  485. icon: 'none',
  486. title: '投票失败'
  487. })
  488. })
  489. },
  490. //帮我拉票
  491. showPoster(){
  492. /**
  493. * 注意这里的图片接口好像有问题 .activity.cover_img信息
  494. * 报错内容:{"errMsg":"getImageInfo:fail invalid"}
  495. * 可能是图片域名不在微信开发者白名单
  496. * 添加不校验规则依然报错
  497. * 核实后取消下方注释即可
  498. */
  499. this.$refs.poster.show({
  500. name: this.voteDetail.project_name,
  501. title: this.voteDetail.activity.title,
  502. imgUrl: this.voteDetail.share_img,
  503. qrcodeUrl: this.voteDetail.qrcode_url,
  504. })
  505. console.log(this.voteDetail)
  506. }
  507. }
  508. }
  509. </script>
  510. <style lang="scss" scoped>
  511. $pageColor:#F9F9F9;
  512. $bgColor:#FFFFFF;
  513. @mixin flexlayout {
  514. display: flex;
  515. align-items: center;
  516. justify-content: center;
  517. }
  518. page {
  519. height: 100% !important;
  520. background: #F9F9F9 !important;
  521. }
  522. .vote-detail {
  523. height: 100%;
  524. background: #F9F9F9;
  525. }
  526. .reserve {
  527. // position: fixed;
  528. // bottom: 0;
  529. width: 100%;
  530. height: 148rpx;
  531. padding: 0 30rpx;
  532. background-color: #fff;
  533. display: flex;
  534. align-items: center;
  535. justify-content: space-between;
  536. font-size: 30rpx;
  537. color: #fff;
  538. font-weight: bold;
  539. .reserve-left {
  540. width: 204rpx;
  541. height: 92rpx;
  542. background: linear-gradient(270deg, #FF6200 0%, #FF9342 100%);
  543. border-radius: 12rpx;
  544. display: flex;
  545. align-items: center;
  546. justify-content: center;
  547. }
  548. .reserve-right {
  549. width: 466rpx;
  550. height: 92rpx;
  551. background: linear-gradient(270deg, #FF6200 0%, #FF9342 100%);
  552. border-radius: 12rpx;
  553. display: flex;
  554. align-items: center;
  555. justify-content: center;
  556. }
  557. }
  558. .introduce {
  559. padding: 0 30rpx;
  560. margin-bottom: 102rpx;
  561. .introduce-title {
  562. font-size: 32rpx;
  563. font-weight: bold;
  564. color: #333;
  565. display: flex;
  566. align-items: center;
  567. justify-content: center;
  568. }
  569. .introduce-text {
  570. margin-top: 44rpx;
  571. // line-height: 40rpx;
  572. // color: #333333;
  573. // font-size: 28rpx;
  574. }
  575. }
  576. .help {
  577. padding: 0 30rpx;
  578. margin-top: 30rpx;
  579. position: relative;
  580. .help-btn {
  581. height: 108rpx;
  582. background: #F9F9F9;
  583. border-radius: 14rpx;
  584. border: 2rpx solid #FF6200;
  585. display: flex;
  586. align-items: center;
  587. justify-content: center;
  588. color: #FF6200;
  589. font-weight: bold;
  590. font-size: 30rpx;
  591. }
  592. .img-IHg {
  593. width: 84rpx;
  594. height: 84rpx;
  595. background-color: #fff;
  596. box-shadow: 0px 8rpx 24rpx 0px rgba(220, 222, 229, 0.4);
  597. border-radius: 50%;
  598. display: flex;
  599. align-items: center;
  600. justify-content: center;
  601. position: fixed;
  602. // top: -28rpx;
  603. // right: 14rpx;
  604. top: 1030rpx;
  605. right: 30rpx;
  606. z-index: 99;
  607. }
  608. }
  609. .btn {
  610. padding: 0 30rpx;
  611. margin-top: 48rpx;
  612. .btn-vote {
  613. height: 108rpx;
  614. background: linear-gradient(338deg, #FF6200 0%, #FF9D4F 100%);
  615. border-radius: 12rpx;
  616. display: flex;
  617. align-items: center;
  618. justify-content: center;
  619. color: #FFFFFF;
  620. font-size: 30rpx;
  621. font-weight: bold;
  622. }
  623. .btn-vote-fasle {
  624. height: 108rpx;
  625. background: #CCCCCC;
  626. border-radius: 12rpx;
  627. display: flex;
  628. align-items: center;
  629. justify-content: center;
  630. color: #FFFFFF;
  631. font-size: 30rpx;
  632. font-weight: bold;
  633. }
  634. }
  635. .swiper {
  636. padding: 0 30rpx;
  637. margin-top: 64rpx;
  638. }
  639. .home-swiper {
  640. height: 576rpx;
  641. .swiper-box {
  642. height: 576rpx;
  643. }
  644. }
  645. .title {
  646. padding-top: 30rpx;
  647. display: flex;
  648. flex-direction: column;
  649. align-items: center;
  650. justify-content: center;
  651. .title-text {
  652. margin: 32rpx 0 16rpx;
  653. font-size: 40rpx;
  654. font-weight: bold;
  655. color: #333;
  656. }
  657. .title-btn {
  658. color: #FF6200;
  659. font-size: 28rpx;
  660. }
  661. }
  662. .rank {
  663. padding: 0 30rpx;
  664. }
  665. .vote-detail-btn {
  666. height: 190rpx;
  667. background-color: #fff;
  668. box-shadow: 0px 20rpx 40rpx 0px rgba(220, 222, 229, 0.4);
  669. border-radius: 16rpx;
  670. display: flex;
  671. align-items: center;
  672. justify-content: space-around;
  673. .vote-detail-btn-item {
  674. display: flex;
  675. flex-direction: column;
  676. align-items: center;
  677. justify-content: space-between;
  678. font-size: 28rpx;
  679. color: #333;
  680. .vote-detail-btn-item-num {
  681. font-size: 44rpx;
  682. font-weight: bold;
  683. }
  684. .vote-detail-btn-item-text {
  685. margin-top: 20rpx;
  686. }
  687. }
  688. }
  689. .pop {
  690. width: 640rpx;
  691. height: 740rpx;
  692. background: #FFFFFF;
  693. border-radius: 20rpx;
  694. padding-top: 32rpx;
  695. box-sizing: border-box;
  696. .title {
  697. @include flexlayout();
  698. margin-bottom: 32rpx;
  699. text {
  700. font-size: 34rpx;
  701. font-family: PingFangSC-Medium, PingFang SC;
  702. font-weight: 500;
  703. color: #FF7119;
  704. }
  705. }
  706. .img {
  707. margin-left: 48rpx;
  708. width: 544rpx;
  709. height: 306rpx;
  710. background: $bgColor;
  711. border-radius: 12rpx;
  712. @include flexlayout();
  713. margin-bottom: 32rpx;
  714. image {
  715. width: 544rpx;
  716. height: 306rpx;
  717. border-radius: 12rpx;
  718. }
  719. }
  720. .textfont {
  721. margin-left: 30rpx;
  722. margin-bottom: 40rpx;
  723. @include flexlayout();
  724. width: 572rpx;
  725. height: 106rpx;
  726. text {
  727. text-align: center;
  728. font-size: 34rpx;
  729. font-weight: 400;
  730. color: #828282;
  731. }
  732. }
  733. .btn {
  734. width: 100%;
  735. height: 110rpx;
  736. display: flex;
  737. align-items: center;
  738. .cancel {
  739. @include flexlayout();
  740. width: 50%;
  741. height: 100%;
  742. border-top: #E5E5E5 solid 1rpx;
  743. border-right: #E5E5E5 solid 1rpx;
  744. text {
  745. font-size: 32rpx;
  746. font-family: PingFangSC-Medium, PingFang SC;
  747. font-weight: 500;
  748. color: #666666;
  749. }
  750. }
  751. .download {
  752. border-top: #E5E5E5 solid 1rpx;
  753. // border-left:#E5E5E5 solid 0.3rpx;
  754. @include flexlayout();
  755. height: 100%;
  756. width: 50%;
  757. text {
  758. font-size: 32rpx;
  759. font-family: PingFangSC-Medium, PingFang SC;
  760. font-weight: 500;
  761. color: #FF7119;
  762. }
  763. }
  764. }
  765. }
  766. .movableArea {
  767. position: fixed;
  768. top: 0;
  769. left: 0;
  770. width: 100%;
  771. height: 100%;
  772. pointer-events: none; //设置area元素不可点击,则事件便会下移至页面下层元素
  773. .movableView {
  774. pointer-events: auto; //可以点击
  775. width: 84rpx;
  776. height: 84rpx;
  777. padding: 0 30rpx;
  778. .img-IHg {
  779. width: 84rpx;
  780. height: 84rpx;
  781. background-color: #fff;
  782. box-shadow: 0px 8rpx 24rpx 0px rgba(220, 222, 229, 0.4);
  783. border-radius: 50%;
  784. display: flex;
  785. align-items: center;
  786. justify-content: center;
  787. }
  788. }
  789. }
  790. </style>