index.vue 31 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328
  1. <template>
  2. <view class="home">
  3. <view class="index">
  4. <view class="header-bg"></view>
  5. <view class="title" v-if="userServerInfo.season">大卫博士学位争霸赛第{{ userServerInfo.season}}季</view>
  6. <view class="user_info_new">
  7. <view class="userinfo">
  8. <view class="top">
  9. <image class="user-pic"
  10. :src="userServerInfo.avatar? userServerInfo.avatar : '../../static/icon/user.jpg'"
  11. mode="scaleToFill" @tap="toself"></image>
  12. <image v-if="userServerInfo.score >= 300" class="hat" src="../../static/icon/hat.png"
  13. mode="scaleToFill" @tap="toself"></image>
  14. <view class="user-info" @tap="changeName">
  15. <view class="name-grade-level">
  16. <view class="name">
  17. {{ userServerInfo.nickname}}
  18. </view>
  19. </view>
  20. </view>
  21. </view>
  22. <view class="user-status" @click="tapUserStatus">
  23. {{userStatus}}
  24. </view>
  25. <view class="score-rank">
  26. <view class="score">学分:{{ userServerInfo.integral ? userServerInfo.integral : '0' }}</view>
  27. </view>
  28. </view>
  29. </view>
  30. <view class="user_info_new">
  31. <view class="biye_tip" v-if="userServerInfo.integral" >
  32. <template v-if="userServerInfo.integral >=0 && userServerInfo.integral <=200">
  33. <view style="color: #ffffff;">
  34. 距离 {{ userServerInfo.integral|willDeg }} 还差
  35. {{ userServerInfo.integral|lessScore }} 学分
  36. </view>
  37. </template>
  38. <template v-if="userServerInfo.integral >=201 && userServerInfo.integral <=500">
  39. <view style="color: #ffffff;">
  40. 距离 {{ userServerInfo.integral|willDeg }} 还差
  41. {{ userServerInfo.integral|lessScore }} 学分
  42. </view>
  43. </template>
  44. <template v-if="userServerInfo.integral >=501 && userServerInfo.integral <=1000">
  45. <view style="color: #ffffff;">
  46. 距离 {{ userServerInfo.integral|willDeg }} 还差
  47. {{ userServerInfo.integral|lessScore }} 学分
  48. </view>
  49. </template>
  50. <template v-if="userServerInfo.integral >=1001 && userServerInfo.integral <=1500">
  51. <view style="color: #ffffff;">
  52. 距离 {{ userServerInfo.integral|willDeg }} 还差
  53. {{ userServerInfo.integral|lessScore }} 学分
  54. </view>
  55. </template>
  56. <template v-if="userServerInfo.integral >=1501">
  57. <view style="color: #ffffff;">
  58. 你已经博士毕业
  59. </view>
  60. </template>
  61. </view>
  62. </view>
  63. <view v-if="timer" class="index_countdown">
  64. <text style="font-size: 30rpx;">距{{ timerStatus ? '结束' : '开始' }}仅剩:</text>
  65. <text class="spec bg1">{{ countDown[0] || '00' }}</text>
  66. <text class="small">天</text>
  67. <text class="spec bg2">{{ countDown[1] || '00' }}</text>
  68. <text class="small">时</text>
  69. <text class="spec bg3">{{ countDown[2] || '00' }}</text>
  70. <text class="small">分</text>
  71. <view class="spec bg4 animate_second" v-if="countDown[3] || countDown[3] === 0">
  72. <swiper :indicator-dots="false" :autoplay="false" :interval="10000" :duration="300" :circular="true"
  73. :vertical="true" :current="countA.findIndex(i => +i === Number(countDown[3]))"
  74. :disable-touch="true" class="animate_item">
  75. <swiper-item v-for="n of countA" :key="n">
  76. <view class="swiper-item">{{ n }}</view>
  77. </swiper-item>
  78. </swiper>
  79. <swiper :indicator-dots="false" :autoplay="true" :interval="1000" :duration="300" :circular="true"
  80. :vertical="true" :disable-touch="true"
  81. :current="countB.findIndex(i => +i === Number(countDown[4]))" class="animate_item"
  82. @change="changeCountTime">
  83. <swiper-item v-for="n in countB" :key="n">
  84. <view class="swiper-item">{{ n }}</view>
  85. </swiper-item>
  86. </swiper>
  87. </view>
  88. <text class="small">秒</text>
  89. </view>
  90. <view v-if="messageList.length > 0" class="swiper_parant">
  91. <view class="message_icon_box">
  92. <image src="../../static/new/message2.jpg" mode="" class="message_icon"></image>
  93. <text>恭喜</text>
  94. </view>
  95. <swiper class="swiper swiper_message" :indicator-dots="false" :autoplay="true" :circular="true"
  96. @animationfinish="changeMessageSwiper" interval="1500">
  97. <swiper-item v-for="(item, i) in messageList" :key="i">
  98. <view class="swiper-item uni-bg-red">{{ item.data }}</view>
  99. </swiper-item>
  100. </swiper>
  101. </view>
  102. <view class="entrance">
  103. <!-- <view class="nav_container"> -->
  104. <view class="index-item item_bg1" @tap="toranking">
  105. <text class="name">销售排行</text>
  106. <view v-if="userServerInfo.rank" class="userranking">
  107. 我的排名:{{ userServerInfo.rank ? userServerInfo.rank : '0' }}</view>
  108. <image src="https://api.jiuweiyun.cn/public/uploads/weapp/icon/index_bg1.png" class="coverImg cv1">
  109. </view>
  110. <view class="index-item item_bg2" @tap="toupload">
  111. <text class="name">培训课程表</text>
  112. <image src="https://api.jiuweiyun.cn/public/uploads/weapp/icon/index_bg2.png" class="coverImg cv2">
  113. </view>
  114. <view class="index-item item_bg3" @tap="toHonor">
  115. <text class="name">荣誉殿堂</text>
  116. <image src="https://api.jiuweiyun.cn/public/uploads/weapp/icon/index_bg5.png" class="coverImg cv3">
  117. </view>
  118. <!-- <view class="index-item item_bg3" @tap="toChallenge()">
  119. <text class="name">挑战竞猜</text>
  120. <image src="https://api.jiuweiyun.cn/public/uploads/weapp/icon/index_bg3.png" class="coverImg cv3">
  121. </view> -->
  122. <view class="index-item item_bg4" @tap="toOther">
  123. <text class="name">其他</text>
  124. <image src="https://api.jiuweiyun.cn/public/uploads/weapp/icon/index_bg4.png" class="coverImg cv4">
  125. </view>
  126. <!-- </view> -->
  127. </view>
  128. <view class="rules" @click="torules">查看赛季规则 <text class="cuIcon-question"></text>
  129. </view>
  130. <!-- 学位弹窗 -->
  131. <page-toast
  132. :is-show="isXuefenToast && (userServerInfo.glory_popovers && userServerInfo.glory_popovers.type === 1)">
  133. <view class="toast_container xuewei_toast" @click="toToastDetail">
  134. <image class="bg" src="https://api.jiuweiyun.cn/public/uploads/icon/toast8.png"></image>
  135. <view class="text">{{ userServerInfo.score }}</view>
  136. </view>
  137. </page-toast>
  138. <!-- 学霸弹窗 -->
  139. <page-toast
  140. :is-show="isXuebaToast && (userServerInfo.max_popovers && userServerInfo.max_popovers.type === 10)">
  141. <view class="toast_container xueba_toast" @click="toToastXueBa">
  142. <image class="bg" src="https://api.jiuweiyun.cn/public/uploads/icon/toast7.png"></image>
  143. <view class="text">{{ userServerInfo.level_name }}学霸</view>
  144. </view>
  145. </page-toast>
  146. <!-- 挑战详情 -->
  147. <page-toast
  148. :is-show="isTiaoXhanToast && (userServerInfo.challenge_result && userServerInfo.challenge_result.type === 1)"
  149. :is-close="false" :before-close="resetTiaoZhanToast">
  150. <view class="challenge-num">
  151. <view class="challenage-num-top">
  152. <view class="challenage-num-body">
  153. <view class="challenge-num-item">
  154. <view>
  155. <text class="label">参加挑战:</text>
  156. <text class="spec">
  157. <!-- {{ userServerInfo.challenge_result.data.challenge_num || 0 } -->}
  158. </text>
  159. <text class="label">场</text>
  160. </view>
  161. <view>
  162. <text class="label">参加竞猜:</text>
  163. <text class="spec">
  164. <!-- {{ userServerInfo.challenge_result.data.guessing_num || 0 } -->}
  165. </text>
  166. <text class="label">场</text>
  167. </view>
  168. </view>
  169. <view class="challenge-num-item">
  170. <view>
  171. <text class="label">挑战成功:</text>
  172. <text class="spec">
  173. <!-- {{ userServerInfo.challenge_result.data.challenge_success || 0 } -->}
  174. </text>
  175. <text class="label">场</text>
  176. </view>
  177. <view>
  178. <text class="label">挑战失败:</text>
  179. <text class="spec">
  180. <!-- {{ userServerInfo.challenge_result.data.challenge_fail || 0 } -->}
  181. </text>
  182. <text class="label">场</text>
  183. </view>
  184. </view>
  185. <view class="challenge-num-item">
  186. <view>
  187. <text class="label">猜赢了:</text>
  188. <text class="spec">
  189. <!-- {{ userServerInfo.challenge_result.data.guessing_success || 0 } -->}
  190. </text>
  191. <text class="label">场</text>
  192. </view>
  193. <view>
  194. <text class="label">猜输了:</text>
  195. <text class="spec">
  196. <!-- {{ userServerInfo.challenge_result.data.guessing_fail || 0 }} -->
  197. </text>
  198. <text class="label">场</text>
  199. </view>
  200. </view>
  201. </view>
  202. </view>
  203. <view class="challenge-num-btn" @click="toTiaoZhan">查看详情</view>
  204. </view>
  205. </page-toast>
  206. <!-- 发起挑战 -->
  207. <page-toast :is-show="userServerInfo.cha_nickname" :is-close="false">
  208. <view class="challenge-invite">
  209. <view class="challenge-user">
  210. <view class="user-avatar"></view>
  211. </view>
  212. <view class="challenge-title">
  213. “{{ userServerInfo.cha_nickname | getName }}”向你发起学分挑战 详情可在“我的挑战”列表中查看
  214. </view>
  215. <view class="challenage-btn" @click="toChallenge('0')">查看详情</view>
  216. </view>
  217. </page-toast>
  218. <!-- 课程提醒 -->
  219. <page-toast :is-show="userServerInfo.link && showLink" :before-close="closeCourseLink">
  220. <scroll-view class="courseDialog" scroll-y="true">
  221. <image :src="userServerInfo.link" mode="widthFix" class="courseImg" @click="toCourseList" />
  222. </scroll-view>
  223. </page-toast>
  224. </view>
  225. </view>
  226. </template>
  227. <script>
  228. import {
  229. _API_Logout
  230. } from '@/apis/verify.js'
  231. import {
  232. formatDate,
  233. remove,
  234. willDeg,
  235. lessScore,
  236. GetQueryString
  237. } from '../../filters/index.js';
  238. import {
  239. deepClone
  240. } from '@/common/util/index.js';
  241. import {
  242. _API_IndexIndex,
  243. _API_GetActivityTime,
  244. _API_getMessage,
  245. _API_CheckAuth,
  246. _API_Auth
  247. } from '@/apis/app.js';
  248. import {
  249. _API_GetUserStatus,
  250. _API_New_GetUserInfo,
  251. getWxJSSDKConfig,
  252. _API_GetUserSignStatus
  253. } from '@/apis/user.js';
  254. import QR from '../../common/util/wxqrcode.js'; // 二维码生成器
  255. import {
  256. mapState
  257. } from 'vuex';
  258. import {
  259. myStock
  260. } from '@/apis/stock.js';
  261. export default {
  262. data() {
  263. return {
  264. swiper: [],
  265. messageList: [],
  266. messageVis: false,
  267. messageInfo: {},
  268. fillOut: false,
  269. shopNum: 0,
  270. shopCar: false,
  271. countTime: {
  272. value: 0,
  273. status: 0,
  274. index: 0
  275. },
  276. total: 0,
  277. timerStatus: null,
  278. screenState: 0, // 0白屏 1 正常 2 只显示实战营
  279. userServerInfo: {},
  280. signstatus: false,
  281. status: false,
  282. timer: '',
  283. now: null,
  284. isXuefenToast: true,
  285. isXuebaToast: true,
  286. isTiaoXhanToast: true,
  287. countA: [5, 4, 3, 2, 1, 0],
  288. countB: [9, 8, 7, 6, 5, 4, 3, 2, 1, 0],
  289. };
  290. },
  291. onLoad() {
  292. this.shopNum = this.$store.getters['cart/shopcarNum']
  293. uni.hideTabBar()
  294. },
  295. computed: {
  296. countDown() {
  297. let time = this.timerStatus ? this.userServerInfo.end_time : this.userServerInfo.start_time
  298. const sec = Math.floor((time - this.now) / 1000)
  299. let day = Math.floor(sec / 86400)
  300. let hour = Math.floor((sec % 86400) / 3600)
  301. let minite = Math.floor((sec - 86400 * day - hour * 3600) / 60)
  302. let second = Math.floor(sec - 86400 * day - hour * 3600 - minite * 60)
  303. day = day >= 10 ? day : `0${day}`
  304. hour = hour >= 10 ? hour : `0${hour}`
  305. minite = minite >= 10 ? minite : `0${minite}`
  306. second = String(second)
  307. let arr = [day, hour, minite, second >= 10 ? second[0] : 0, second >= 10 ? second[1] : second]
  308. return arr
  309. },
  310. userStatus() { //根据赛季阶段和用户类型,显示不同可操作项
  311. if (this.signstatus) {
  312. if (this.status) {
  313. return '已报名'
  314. } else {
  315. return '报名结束'
  316. }
  317. } else { //如果赛季暂未开赛
  318. if (this.status) {
  319. return '报名参赛'
  320. } else {
  321. return '报名结束'
  322. }
  323. }
  324. },
  325. },
  326. onPullDownRefresh() {
  327. this.init();
  328. },
  329. onShow() {
  330. this.init();
  331. },
  332. methods: {
  333. resetTiaoZhanToast() {
  334. this.isTiaoXhanToast = false
  335. },
  336. countTiming() {
  337. --this.countTime.value;
  338. },
  339. changeCountTime() {
  340. this.now = Date.now()
  341. },
  342. init() {
  343. _API_New_GetUserInfo()
  344. .then(res => {
  345. // 获取用户状态
  346. if (res.code == 200) {
  347. this.$store.commit('userinfo/UPDATA_USERINFO', res.data); // 获取用户状态后保存在 vuex 中
  348. this.userServerInfo = res.data
  349. _API_GetUserSignStatus().then(res => {
  350. if (res.code == 200) {
  351. this.userServerInfo.signstatus=res.data.signstatus
  352. this.signstatus = res.data.signstatus
  353. this.status = res.data.status
  354. this.userServerInfo.start_time = new Date(this.userServerInfo.start_time)
  355. .getTime()
  356. this.userServerInfo.end_time = new Date(this.userServerInfo.end_time)
  357. .getTime()
  358. //时间
  359. let _this = this
  360. _this.now = Date.now()
  361. if (_this.userServerInfo.start_time && _this.userServerInfo.end_time) {
  362. let {
  363. start_time,
  364. end_time
  365. } = _this.userServerInfo
  366. if (_this.now > start_time - 5 * 24 * 3600 * 1000 && _this.now <
  367. start_time) {
  368. _this.timerStatus = false
  369. _this.timer = true
  370. } else if (_this.now > start_time && _this.now < end_time) {
  371. _this.timerStatus = true
  372. _this.timer = true
  373. } else {
  374. if (this.timer) {
  375. _this.timer = null;
  376. }
  377. }
  378. } else {
  379. if (this.timer) {
  380. _this.timer = null;
  381. }
  382. }
  383. uni.stopPullDownRefresh()
  384. }
  385. })
  386. }
  387. })
  388. },
  389. tapUserStatus() { //报名争霸赛
  390. if (this.signstatus) {
  391. uni.navigateTo({
  392. url: '/pages/zbs/detail'
  393. })
  394. } else {
  395. if (this.status) {
  396. uni.navigateTo({
  397. url: '/pages/zbs/detail'
  398. })
  399. }
  400. }
  401. },
  402. closeCourseLink() {
  403. this.$ajax.get(`${course_confim}`).then(([, {
  404. data: res
  405. }]) => {
  406. this.showLink = false
  407. })
  408. },
  409. toranking() {
  410. uni.navigateTo({
  411. url: '/pages/ranking/ranking'
  412. })
  413. },
  414. toupload() {
  415. uni.showToast({
  416. title: '暂未开放',
  417. duration: 2333,
  418. icon: 'none'
  419. })
  420. },
  421. toHonor() {
  422. uni.setStorageSync('newUserInfo', this.userServerInfo)
  423. uni.navigateTo({
  424. url: '/pages/honorList/index'
  425. })
  426. },
  427. toOther() {
  428. // uni.showToast({
  429. // title: '暂未开放',
  430. // duration: 2333,
  431. // icon: 'none'
  432. // })
  433. uni.redirectTo({
  434. url: "../other/other"
  435. })
  436. },
  437. torules() { //点击赛季规则
  438. console.log('1111')
  439. uni.navigateTo({
  440. url: 'pages/rules/rules'
  441. })
  442. },
  443. }
  444. };
  445. </script>
  446. <style lang="scss" scoped>
  447. .new_pop {
  448. width: 648rpx;
  449. height: 368rpx;
  450. background: #FFFFFF;
  451. border-radius: 24rpx;
  452. margin: 0 auto;
  453. text-align: center;
  454. padding-top: 60rpx;
  455. .new_title {
  456. font-size: 38rpx;
  457. font-weight: bold;
  458. color: #000;
  459. }
  460. .new_content {
  461. font-size: 34rpx;
  462. color: #333;
  463. margin: 24rpx 0 40rpx 0;
  464. }
  465. .new_btns {
  466. display: flex;
  467. justify-content: space-around;
  468. align-items: center;
  469. view {
  470. width: 260rpx;
  471. height: 88rpx;
  472. line-height: 88rpx;
  473. background: #F5F5F5;
  474. border-radius: 44rpx;
  475. color: #333;
  476. font-size: 32rpx;
  477. font-weight: bold;
  478. }
  479. view:last-child {
  480. background: linear-gradient(93deg, #F30000 0%, #FE4815 100%);
  481. color: #fff;
  482. }
  483. }
  484. }
  485. .home {
  486. width: 100vw;
  487. height: 100vh;
  488. position: relative;
  489. .pop {
  490. width: 100%;
  491. height: 100%;
  492. position: fixed;
  493. top: 0;
  494. bottom: 0;
  495. z-index: 999;
  496. background-color: rgba(0, 0, 0, 0.3);
  497. .pop_con {
  498. width: 100%;
  499. height: 40vh;
  500. background: #fff;
  501. border-top-left-radius: 26rpx;
  502. border-top-top-radius: 26rpx;
  503. position: fixed;
  504. left: 0;
  505. bottom: 0;
  506. padding: 0 30rpx;
  507. box-sizing: border-box;
  508. z-index: 9999;
  509. .title {
  510. font-size: 36rpx;
  511. font-weight: bold;
  512. margin: 24rpx 0;
  513. }
  514. .desc {
  515. font-size: 30rpx;
  516. color: 999;
  517. .file {
  518. color: #FB231F;
  519. margin: 24rpx 0;
  520. font-size: 32rpx;
  521. }
  522. }
  523. .btn_box {
  524. margin-top: 40rpx;
  525. display: flex;
  526. justify-content: space-around;
  527. align-items: center;
  528. .exit_btn {
  529. display: flex;
  530. justify-content: center;
  531. align-items: center;
  532. width: 300rpx;
  533. height: 88rpx;
  534. background: #E9E9E9;
  535. border-radius: 44rpx;
  536. font-size: 32rpx;
  537. color: #333;
  538. }
  539. button {
  540. display: flex;
  541. justify-content: center;
  542. align-items: center;
  543. width: 300rpx;
  544. height: 88rpx;
  545. background: #FB231F;
  546. border-radius: 44rpx;
  547. font-size: 32rpx;
  548. color: #fff;
  549. background: linear-gradient(93deg, #F30000 0%, #FE4815 100%);
  550. }
  551. }
  552. }
  553. }
  554. }
  555. .privacy-popup {
  556. position: absolute;
  557. top: 0;
  558. left: 0;
  559. }
  560. .challenge-num {
  561. display: flex;
  562. flex-direction: column;
  563. align-items: center;
  564. .challenage-num-top {
  565. width: 626rpx;
  566. height: 612rpx;
  567. background: url(http://picture.liuliwa.top/new_challenge_toast/7.png) center no-repeat;
  568. background-size: 100%;
  569. margin: 0 auto 94rpx auto;
  570. position: relative;
  571. .challenage-num-body {
  572. width: 570rpx;
  573. height: 385rpx;
  574. position: absolute;
  575. bottom: 28rpx;
  576. left: 28rpx;
  577. border-radius: 24rpx;
  578. padding: 84rpx 30rpx 44rpx 30rpx;
  579. display: flex;
  580. justify-content: space-between;
  581. flex-direction: column;
  582. .challenge-num-item {
  583. display: flex;
  584. align-items: center;
  585. justify-content: space-between;
  586. .label {
  587. color: #5D330D;
  588. font-size: 32rpx;
  589. margin-right: 10rpx;
  590. }
  591. .spec {
  592. color: #DD372D;
  593. font-size: 48rpx;
  594. }
  595. }
  596. }
  597. }
  598. .challenge-num-btn {
  599. width: 502rpx;
  600. height: 96rpx;
  601. border-radius: 96rpx;
  602. background: linear-gradient(180deg, #FEEB71 0%, #F89018 100%);
  603. color: #984100;
  604. font-size: 32rpx;
  605. font-weight: bold;
  606. line-height: 96rpx;
  607. text-align: center;
  608. }
  609. }
  610. .challenge-invite {
  611. display: flex;
  612. flex-direction: column;
  613. align-items: center;
  614. .challenge-user {
  615. width: 426rpx;
  616. height: 334rpx;
  617. margin: 0 auto 48rpx auto;
  618. background: url(http://picture.liuliwa.top/new_challenge_toast/5.png) center no-repeat;
  619. background-size: 100%;
  620. position: relative;
  621. .user-avatar {
  622. width: 168rpx;
  623. height: 168rpx;
  624. border-radius: 50%;
  625. position: absolute;
  626. bottom: 8rpx;
  627. left: 50%;
  628. transform: translateX(-50%);
  629. background-position: center;
  630. background-repeat: no-repeat;
  631. background-size: 100%;
  632. background-color: #007AFF;
  633. }
  634. }
  635. .challenge-title {
  636. width: 456rpx;
  637. color: #FFF1AD;
  638. font-size: 32rpx;
  639. line-height: 50rpx;
  640. margin-bottom: 86rpx;
  641. font-weight: bold;
  642. }
  643. .challenage-btn {
  644. width: 502rpx;
  645. height: 96rpx;
  646. border-radius: 96rpx;
  647. background: linear-gradient(180deg, #FEEB71 0%, #F89018 100%);
  648. color: #984100;
  649. font-size: 32rpx;
  650. font-weight: bold;
  651. line-height: 96rpx;
  652. text-align: center;
  653. }
  654. }
  655. .index {
  656. width: 100%;
  657. height: 100vh;
  658. position: relative;
  659. box-sizing: border-box;
  660. padding: 161rpx 30rpx 0;
  661. display: flex;
  662. flex-direction: column;
  663. .index_countdown {
  664. width: 100%;
  665. height: 140rpx;
  666. background-image: linear-gradient(#4CBA59, #6BE57D);
  667. color: #FFFFFF;
  668. border-radius: 6rpx;
  669. margin-top: 10rpx;
  670. line-height: 60rpx;
  671. text-align: center;
  672. letter-spacing: 4rpx;
  673. display: flex;
  674. align-items: center;
  675. justify-content: center;
  676. font-size: 36rpx;
  677. view {
  678. color: #FFFFFF;
  679. }
  680. text {
  681. color: #FFFFFF;
  682. }
  683. .bg1 {
  684. background-color: #FD715D;
  685. }
  686. .bg2 {
  687. background-color: #3397DB;
  688. }
  689. .bg3 {
  690. background-color: #F39B11;
  691. }
  692. .bg4 {
  693. // background-color: #B933FF;
  694. }
  695. .animate_second {
  696. display: flex !important;
  697. justify-content: space-between;
  698. align-items: center;
  699. .animate_item {
  700. flex: 1;
  701. height: 70rpx;
  702. &:nth-of-type(1) {
  703. background-color: #e3abff;
  704. }
  705. &:nth-last-of-type(1) {
  706. background-color: #B933FF;
  707. }
  708. text-align: center;
  709. }
  710. }
  711. .spec {
  712. display: block;
  713. text-align: center;
  714. line-height: 70rpx;
  715. color: #FFFFFF;
  716. width: 70rpx;
  717. height: 70rpx;
  718. border-radius: 10rpx;
  719. overflow: hidden;
  720. }
  721. .small {
  722. font-size: 24rpx;
  723. margin: 0 8rpx;
  724. margin-top: 40rpx;
  725. }
  726. }
  727. .xuefen_toast {
  728. width: 600rpx;
  729. height: 760rpx;
  730. .text {
  731. position: absolute;
  732. width: 430rpx;
  733. bottom: 217rpx;
  734. left: 50%;
  735. margin-left: -215rpx;
  736. display: flex;
  737. justify-content: flex-start;
  738. flex-wrap: wrap;
  739. font-size: 28rpx;
  740. color: #333333;
  741. view {
  742. width: calc(50% - 10rpx);
  743. margin-bottom: 20rpx;
  744. display: flex;
  745. justify-content: space-between;
  746. align-items: center;
  747. &:nth-last-child(1),
  748. &:nth-last-child(2) {
  749. margin-bottom: 0;
  750. }
  751. &:nth-child(2n) {
  752. text-align: right;
  753. margin-left: 20rpx;
  754. }
  755. }
  756. }
  757. }
  758. .yingzhan_toast {
  759. width: 574rpx;
  760. height: 596rpx;
  761. .text {
  762. left: 0;
  763. width: 100%;
  764. color: #F76454;
  765. font-size: 36rpx;
  766. position: absolute;
  767. text-align: center;
  768. top: 120rpx;
  769. }
  770. }
  771. .xiazhu_toast {
  772. width: 563rpx;
  773. height: 653rpx;
  774. .text {
  775. color: #712722;
  776. font-size: 28rpx;
  777. width: 402rpx;
  778. position: absolute;
  779. bottom: 188rpx;
  780. left: 50%;
  781. margin-left: -201rpx;
  782. text {
  783. display: block;
  784. margin-bottom: 20rpx;
  785. text-align: center;
  786. &:nth-last-child(1) {
  787. margin-bottom: 0;
  788. }
  789. }
  790. }
  791. }
  792. .tiaozhan_toast {
  793. width: 520rpx;
  794. height: 755rpx;
  795. .text {
  796. color: #712722;
  797. font-size: 28rpx;
  798. width: 390rpx;
  799. position: absolute;
  800. bottom: 160rpx;
  801. left: 50%;
  802. margin-left: -195rpx;
  803. line-height: 48rpx;
  804. text-align: center;
  805. }
  806. }
  807. .xuewei_toast {
  808. width: 712rpx;
  809. height: 750rpx;
  810. .text {
  811. font-size: 62rpx;
  812. color: #FFFFFF;
  813. position: absolute;
  814. width: 488rpx;
  815. text-align: center;
  816. height: 104rpx;
  817. line-height: 104rpx;
  818. left: 50%;
  819. margin-left: -244rpx;
  820. bottom: 138rpx;
  821. }
  822. }
  823. .xueba_toast {
  824. width: 662rpx;
  825. height: 685rpx;
  826. .text {
  827. width: 416rpx;
  828. text-align: center;
  829. height: 112rpx;
  830. line-height: 112rpx;
  831. color: #FFFFFF;
  832. font-size: 58rpx;
  833. position: absolute;
  834. left: 50%;
  835. margin-left: -208rpx;
  836. bottom: 226rpx;
  837. }
  838. }
  839. .getUserInfo {
  840. position: fixed;
  841. top: 0;
  842. left: 0;
  843. right: 0;
  844. bottom: 0;
  845. z-index: 9999;
  846. background: rgba(1, 1, 1, 0);
  847. }
  848. .showphonelabel {
  849. position: fixed;
  850. top: 0;
  851. left: 0;
  852. right: 0;
  853. bottom: 0;
  854. z-index: 9999;
  855. background: rgba(1, 1, 1, 0);
  856. }
  857. .header-bg {
  858. position: absolute;
  859. z-index: 0;
  860. top: 0;
  861. left: 0;
  862. width: 100%;
  863. height: 286rpx;
  864. background: linear-gradient(-2deg, rgba(255, 68, 54, 1) 0%, rgba(254, 132, 72, 1) 100%);
  865. border-bottom-right-radius: 350rpx 30rpx;
  866. border-bottom-left-radius: 350rpx 30rpx;
  867. }
  868. .title {
  869. position: absolute;
  870. top: 70rpx;
  871. left: 30rpx;
  872. color: #FFFFFF;
  873. }
  874. .user_info_new {
  875. background: linear-gradient(#FFCF82, #FF9C00);
  876. border-radius: 10rpx;
  877. z-index: 1;
  878. .biye_tip {
  879. height: 64rpx;
  880. background: rgba(0, 0, 0, .2);
  881. color: #FFFFFF;
  882. font-size: 28rpx;
  883. padding: 0 22rpx;
  884. box-sizing: border-box;
  885. width: 100%;
  886. line-height: 64rpx;
  887. border-bottom-left-radius: 10rpx;
  888. border-bottom-right-radius: 10rpx;
  889. }
  890. }
  891. .userinfo {
  892. position: relative;
  893. width: 100%;
  894. height: 225rpx;
  895. box-shadow: 0rpx 1rpx 3rpx 0rpx rgba(0, 0, 0, 0.2);
  896. border-radius: 10px;
  897. box-sizing: border-box;
  898. padding: 22rpx;
  899. .top {
  900. height: 98rpx;
  901. display: flex;
  902. align-items: center;
  903. position: relative;
  904. .user-pic {
  905. height: 100%;
  906. width: 98rpx;
  907. background-color: #B2B2B2;
  908. border-radius: 50%;
  909. overflow: hidden;
  910. }
  911. .hat {
  912. position: absolute;
  913. top: -40rpx;
  914. left: 0px;
  915. width: 80rpx;
  916. height: 69.873rpx;
  917. }
  918. .user-info {
  919. flex: 1;
  920. display: flex;
  921. flex-direction: column;
  922. justify-content: space-between;
  923. height: 100%;
  924. margin-left: 16rpx;
  925. overflow: hidden;
  926. .progress {
  927. font-size: 26rpx;
  928. color: #FFFFFF;
  929. }
  930. .name-grade-level {
  931. height: 100%;
  932. width: 100%;
  933. display: flex;
  934. align-items: center;
  935. .name {
  936. font-size: 32rpx;
  937. color: #FFFFFF;
  938. max-width: 38%;
  939. overflow: hidden;
  940. white-space: nowrap;
  941. text-overflow: ellipsis;
  942. }
  943. .grade {
  944. font-size: 26rpx;
  945. color: rgba(255, 255, 255, 1);
  946. margin-left: 16rpx;
  947. vertical-align: baseline;
  948. }
  949. .level {
  950. margin-left: 18rpx;
  951. height: 30rpx;
  952. border-radius: 15rpx;
  953. font-size: 26rpx;
  954. background: #FFFFFF;
  955. color: rgba(250, 99, 66, 1);
  956. text {
  957. float: right;
  958. line-height: 35rpx;
  959. margin: 0 12rpx;
  960. }
  961. image {
  962. width: 30rpx;
  963. height: 30rpx;
  964. float: left;
  965. }
  966. }
  967. }
  968. }
  969. }
  970. .user-status {
  971. position: absolute;
  972. width: 170rpx;
  973. height: 60rpx;
  974. top: 111rpx;
  975. right: 0;
  976. line-height: 62rpx;
  977. background: #FFFFFF;
  978. text-align: center;
  979. border-radius: 30rpx 0 0 30rpx;
  980. font-size: 32rpx;
  981. color: rgba(250, 99, 66, 1);
  982. &.end {
  983. background: #999999;
  984. color: #FFFFFF;
  985. }
  986. }
  987. .countdown {
  988. position: absolute;
  989. right: 12rpx;
  990. top: 171rpx;
  991. display: flex;
  992. color: #FFFFFF;
  993. }
  994. .score,
  995. .rank {
  996. position: absolute;
  997. left: 32rpx;
  998. bottom: 35rpx;
  999. font-size: 32rpx;
  1000. color: rgba(255, 255, 255, 1);
  1001. &.rank {
  1002. left: 294rpx;
  1003. }
  1004. }
  1005. }
  1006. .entrance {
  1007. flex: 1;
  1008. z-index: 1;
  1009. margin: 10rpx 0;
  1010. position: relative;
  1011. display: flex;
  1012. justify-content: flex-start;
  1013. flex-wrap: wrap;
  1014. .nav_container {
  1015. display: flex;
  1016. justify-content: flex-start;
  1017. flex-wrap: wrap;
  1018. }
  1019. .item_bg1 {
  1020. // background-image: url(../../static/new/index_bg1.png);
  1021. background-image: linear-gradient(#79a9fd, #929ef2);
  1022. }
  1023. .item_bg2 {
  1024. // background-image: url(../../static/new/index_bg2.png);
  1025. background-image: linear-gradient(#ff634c, #ff9587);
  1026. }
  1027. .item_bg3 {
  1028. // background-image: url(../../static/new/index_bg3.png);
  1029. background-image: linear-gradient(#fdad29, #ffcf4b);
  1030. }
  1031. .item_bg4 {
  1032. // background-image: url(../../static/new/index_bg4.png);
  1033. background-image: linear-gradient(#d486f9, #b063f8);
  1034. }
  1035. .index-item {
  1036. width: calc(50% - 5rpx);
  1037. position: relative;
  1038. min-height: 285rpx;
  1039. overflow: hidden;
  1040. border-radius: 10px;
  1041. box-shadow: 0rpx 1rpx 3rpx 0rpx rgba(0, 0, 0, 0.2);
  1042. font-size: 30rpx;
  1043. color: #FFFFFF;
  1044. background-size: 100% 100%;
  1045. background-repeat: no-repeat;
  1046. margin-right: 5rpx;
  1047. margin-bottom: 12rpx;
  1048. &:nth-of-type(2n) {
  1049. margin-right: 0;
  1050. margin-left: 5rpx;
  1051. }
  1052. .name {
  1053. z-index: 1;
  1054. top: 38rpx;
  1055. left: 30rpx;
  1056. color: #FFFFFF;
  1057. font-size: 40rpx;
  1058. position: absolute;
  1059. font-weight: 500;
  1060. }
  1061. view {
  1062. position: absolute;
  1063. left: 30rpx;
  1064. top: 87rpx;
  1065. font-size: 24rpx;
  1066. color: #FFFFFF;
  1067. }
  1068. .coverImg {
  1069. position: absolute;
  1070. }
  1071. .cv1 {
  1072. width: 238rpx;
  1073. height: 260rpx;
  1074. right: 30rpx;
  1075. bottom: 0;
  1076. }
  1077. .cv2 {
  1078. width: 200rpx;
  1079. height: 163rpx;
  1080. right: 44rpx;
  1081. bottom: 31rpx;
  1082. }
  1083. .cv3 {
  1084. width: 194rpx;
  1085. height: 180rpx;
  1086. right: 22rpx;
  1087. bottom: 25rpx;
  1088. }
  1089. .cv4 {
  1090. width: 187rpx;
  1091. height: 187rpx;
  1092. right: 53rpx;
  1093. bottom: 31rpx;
  1094. }
  1095. }
  1096. }
  1097. .rules {
  1098. font-size: 24rpx;
  1099. height: 80rpx;
  1100. line-height: 80rpx;
  1101. text-align: center;
  1102. font-weight: bold;
  1103. color: rgba(243, 67, 54, 1);
  1104. text {
  1105. margin-left: 9rpx;
  1106. }
  1107. }
  1108. .swiper_parant {
  1109. display: flex;
  1110. justify-content: space-between;
  1111. align-items: center;
  1112. background-color: #FF9C00;
  1113. border-radius: 10rpx;
  1114. height: 70rpx;
  1115. margin: 5px 0;
  1116. padding: 0 20rpx;
  1117. box-sizing: border-box;
  1118. // &::before{
  1119. // content: "";
  1120. // display: block;
  1121. // width: 30rpx;
  1122. // height: 30rpx;
  1123. // background-image: url(../../static/new/message.png);
  1124. // background-repeat: no-repeat;
  1125. // background-size: 100% 100%;
  1126. // margin-right: 10rpx;
  1127. // }
  1128. .message_icon_box {
  1129. color: #FA6342;
  1130. font-size: 32rpx;
  1131. width: 135rpx;
  1132. height: 54rpx;
  1133. padding: 14rpx 12rpx;
  1134. box-sizing: border-box;
  1135. display: flex;
  1136. align-items: center;
  1137. justify-content: space-between;
  1138. margin-right: 20rpx;
  1139. background-color: #FFFFFF;
  1140. border-radius: 8rpx;
  1141. .message_icon {
  1142. width: 32rpx;
  1143. height: 26rpx;
  1144. margin-right: 10rpx;
  1145. }
  1146. }
  1147. }
  1148. .swiper_message {
  1149. flex: 1;
  1150. height: 60rpx;
  1151. box-sizing: border-box;
  1152. line-height: 60rpx;
  1153. color: #FFFFFF;
  1154. font-size: 28rpx;
  1155. }
  1156. .hadChallenge {
  1157. position: fixed;
  1158. left: 0;
  1159. top: 0;
  1160. width: 100%;
  1161. height: 100%;
  1162. background: rgba(0, 0, 0, 0.3);
  1163. z-index: 2;
  1164. .challenage {
  1165. width: 574rpx;
  1166. height: 596rpx;
  1167. position: relative;
  1168. image {
  1169. width: 100%;
  1170. height: 100%;
  1171. }
  1172. .challengeName {
  1173. left: 0;
  1174. width: 100%;
  1175. top: 128rpx;
  1176. color: #F76454;
  1177. font-size: 36rpx;
  1178. position: absolute;
  1179. text-align: center;
  1180. }
  1181. }
  1182. .closeChallenge {
  1183. width: 62rpx;
  1184. height: 62rpx;
  1185. font-size: 56rpx;
  1186. margin-top: 30rpx;
  1187. border-radius: 50%;
  1188. background: #FFFFFF;
  1189. }
  1190. }
  1191. }
  1192. .courseDialog {
  1193. width: 80%;
  1194. margin: 0 auto;
  1195. height: 700rpx;
  1196. .courseImg {
  1197. display: block;
  1198. width: 100%;
  1199. }
  1200. }
  1201. </style>