2pkRank.vue 30 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129
  1. <template>
  2. <!-- http://192.168.0.162:202/#/2pkrank-->
  3. <div class="content" :class="[{'bg1': pages == 1}, {'bg2': pages == 2}, {'bg3': pages == 3}]">
  4. <Headside></Headside>
  5. <div class="pages pageSum" v-show="pages == 1">
  6. <div class="pageTitle">
  7. </div>
  8. <div class="pkResult">
  9. <div class="lt">
  10. <div class="panel">
  11. <span class="level">
  12. <h5 class="winner" v-if="winner == 1">红队胜</h5>
  13. <h5 class="loser" v-else>第二名</h5>
  14. <img v-if="winner == 1" src="../assets/imgs/pkRank/trophy.png" alt="">
  15. </span>
  16. <span class="center">CK</span>
  17. <span class="ckValue">
  18. <em class="winner" v-if="winner == 1">{{ redSumCk }}</em>
  19. <em class="loser" v-else>{{ redSumCk }}</em>
  20. </span>
  21. <div class="mvp">
  22. <div class="head">
  23. <img :src="redMvp.Head" alt="" v-if="redMvp.Head"
  24. :class="[{'boy':redMvp.Sex == 1},{'girl':redMvp.Sex == 2}]">
  25. <!-- <img src="../static/img/people/flyhead.png" alt="" v-if="!redMvp.Head"
  26. :class="[{'boy':redMvp.Sex == 1},{'girl':redMvp.Sex == 2}]"> -->
  27. <default-head v-if="!redMvp.Head" :class="[{'boy':redMvp.Sex == 1},{'girl':redMvp.Sex == 2}]"></default-head>
  28. <div class="names">
  29. <span>
  30. {{ redMvp.Name }}
  31. </span>
  32. </div>
  33. </div>
  34. <span class="mvpCode">最佳队员</span>
  35. </div>
  36. <div class="per">
  37. 人均卡路里 {{redAveCle}}
  38. </div>
  39. </div>
  40. <div class="teamName">
  41. 红队
  42. </div>
  43. </div>
  44. <div class="rt">
  45. <div class="panel">
  46. <span class="level">
  47. <h5 class="winner" v-if="winner == 2">蓝队胜</h5>
  48. <h5 class="loser" v-else>第二名</h5>
  49. <img v-if="winner == 2" src="../assets/imgs/pkRank/trophy.png" alt="">
  50. </span>
  51. <span class="center">CK</span>
  52. <span class="ckValue">
  53. <em class="winner" v-if="winner == 2">{{ blueSumCk }}</em>
  54. <em class="loser" v-else>{{ blueSumCk }}</em>
  55. </span>
  56. <div class="mvp">
  57. <div class="head">
  58. <img :src="blueMvp.Head" alt="" v-if="blueMvp.Head"
  59. :class="[{'boy':blueMvp.Sex == 1},{'girl':blueMvp.Sex == 2}]">
  60. <!-- <img src="../static/img/people/flyhead.png" alt="" v-if="!blueMvp.Head"
  61. :class="[{'boy':blueMvp.Sex == 1},{'girl':blueMvp.Sex == 2}]"> -->
  62. <default-head v-if="!blueMvp.Head" :class="[{'boy':blueMvp.Sex == 1},{'girl':blueMvp.Sex == 2}]"></default-head>
  63. <div class="names">
  64. <span>
  65. {{ blueMvp.Name }}
  66. </span>
  67. </div>
  68. </div>
  69. <span class="mvpCode">最佳队员</span>
  70. </div>
  71. <div class="per">
  72. 人均卡路里 {{blueAveCle}}
  73. </div>
  74. </div>
  75. <div class="teamName">
  76. 蓝队
  77. </div>
  78. </div>
  79. </div>
  80. </div>
  81. <div class="pages pageDetail" v-show="pages == 2">
  82. <div class="sumTitle">
  83. <div class="lt">
  84. <div class="titleRow redRow">
  85. <span class="rowName">红队</span>
  86. <img v-show="winner == 1" src="../assets/imgs/pkRank/trophy.png" alt="">
  87. <span class="rowValue">
  88. <em>CK</em>
  89. <s class="winnerSum" v-show="winner == 1">{{ redSumCk }}</S>
  90. <s class="loserSum" v-show="winner != 1">{{ redSumCk }}</s>
  91. </span>
  92. </div>
  93. </div>
  94. <div class="md">
  95. <img src="../assets/imgs/pk/vs.png" alt="">
  96. </div>
  97. <div class="rt">
  98. <div class="titleRow blueRow">
  99. <span class="rowName">蓝队</span>
  100. <img v-show="winner == 2" src="../assets/imgs/pkRank/trophy.png" alt="">
  101. <span class="rowValue">
  102. <em>CK</em>
  103. <s class="winnerSum" v-show="winner == 2">{{ blueSumCk }}</S>
  104. <s class="loserSum" v-show="winner != 2">{{ blueSumCk }}</s>
  105. </span>
  106. </div>
  107. </div>
  108. </div>
  109. <div class="listContainer">
  110. <div class="lt">
  111. <ul>
  112. <div class="ltTitle">
  113. <span>排名</span>
  114. <span>成员</span>
  115. <span>Ei</span>
  116. <span>CK</span>
  117. </div>
  118. <li v-for="(s,i) in students.redUnite" v-if="i <= 7" v-show="Listate[i].state"
  119. :class="[{ 'box animate__animated animate__flipInX': Listate[i].state }]">
  120. <div class="gary redrow">
  121. <em>{{ i + 1 }}</em>
  122. <div class="head">
  123. <img :src="s.Head" alt="" v-if="s.Head" :class="[{'boy':s.Sex == 1},{'girl':s.Sex == 2}]">
  124. <!-- <img src="../static/img/people/flyhead.png" alt="" v-if="!s.Head"
  125. :class="[{'boy':s.Sex == 1},{'girl':s.Sex == 2}]"> -->
  126. <default-head v-if="!s.Head" :class="[{'boy':s.Sex == 1},{'girl':s.Sex == 2}]"></default-head>
  127. </div>
  128. <span class="names">{{ s.Name }}</span>
  129. <span class="glory">
  130. <img src="../assets/imgs/rank/pb.png" v-if="s.IsBreaking == 1" alt="">
  131. <!-- <img src="../assets/imgs/rank/cr.png" v-if="i == 0" alt="">
  132. <img src="../assets/imgs/rank/mr.png" v-if="i == 1" alt=""> -->
  133. </span>
  134. <span class="eiScore">{{ s.EI|fmtInt }}</span>
  135. <span class="score">{{ s.Ck|fmtFloat }}</span>
  136. </div>
  137. </li>
  138. </ul>
  139. </div>
  140. <div class="rt">
  141. <ul>
  142. <div class="ltTitle">
  143. <span>排名</span>
  144. <span>成员</span>
  145. <span>Ei</span>
  146. <span>CK</span>
  147. </div>
  148. <li v-for="(s,i) in students.blueUnite" v-if="i <= 7" v-show="Listate[i].state"
  149. :class="[{ 'box animate__animated animate__flipInX': Listate[i].state }]">
  150. <div class="gary bluerow">
  151. <em>{{ i + 1 }}</em>
  152. <div class="head">
  153. <img :src="s.Head" alt="" v-if="s.Head" :class="[{'boy':s.Sex == 1},{'girl':s.Sex == 2}]">
  154. <!-- <img src="../static/img/people/flyhead.png" alt="" v-if="!s.Head"
  155. :class="[{'boy':s.Sex == 1},{'girl':s.Sex == 2}]"> -->
  156. <default-head v-if="!s.Head" :class="[{'boy':s.Sex == 1},{'girl':s.Sex == 2}]"></default-head>
  157. </div>
  158. <span class="names">{{ s.Name }}</span>
  159. <span class="glory">
  160. <img src="../assets/imgs/rank/pb.png" v-if="s.IsBreaking == 1" alt="">
  161. <!-- <img src="../assets/imgs/rank/cr.png" v-if="i == 0" alt="">
  162. <img src="../assets/imgs/rank/mr.png" v-if="i == 1" alt=""> -->
  163. </span>
  164. <span class="eiScore">{{ s.EI|fmtInt }}</span>
  165. <span class="score">{{ s.Ck|fmtFloat }}</span>
  166. </div>
  167. </li>
  168. </ul>
  169. </div>
  170. </div>
  171. <div class="icons">
  172. <img src="../assets/imgs/rank/icons2.svg" alt="">
  173. </div>
  174. </div>
  175. <!-- 运动强度排名 -->
  176. <div class="pageYdqdpm" v-show="pages == 3">
  177. <div class="title">
  178. <span>运动强度排名</span>
  179. </div>
  180. <eiRank :students="students" ref="eiRank"></eiRank>
  181. </div>
  182. <div v-show="totalTime > 0" class="countdown">{{totalTime}}</div>
  183. </div>
  184. </template>
  185. <script>
  186. import Headside from '@/components/Headside'
  187. import defaultHead from '@/components/defaultHead'
  188. import {ClassUserRank, AddPkInfo} from "@/api/getApiRes"
  189. import eiRank from '@/components/eiRank'
  190. let qs = require('qs');
  191. export default {
  192. data() {
  193. return {
  194. pages: 1,
  195. eqSn: '30:9C:23:0C:8B:1E',
  196. pageStyle: RandomBg(),
  197. redMvp: {
  198. Age: 13,
  199. AvgHr: 0,
  200. BeginTime: 1608188579,
  201. Ck: "@float(1,99,0,1)",
  202. Cle: "@float(1,9999,0,1)",
  203. DuId: 119,
  204. EndTime: 0,
  205. Head: require('../static/img/testhead.png'),
  206. Height: 160,
  207. HrId: 41,
  208. IsBirthday: 0,
  209. IsBreaking: 0,
  210. IsNewUser: 0,
  211. MaxHr: 80,
  212. PowerPercent: "@integer(10, 100)",
  213. Name: "姜泽志",
  214. PkSucessnum: '1',//胜场数
  215. PkTotalnum: '1',//总场数
  216. PlanId: 60,
  217. PureCalorieNoVo2: "@integer(1, 999)",
  218. Sex: 1,
  219. Sn: "22735",
  220. StaticHr: 60,
  221. SvId: 20,
  222. UserId: 104,
  223. UserMd5: "55661a861f8fae20dd505b2b4575dc0e",
  224. Weight: 50,
  225. ActivePercent: "@integer(10, 100)",
  226. bmrMSjRmrcb: 66.00000000000001,
  227. FormatCk: "@integer(1, 999)",
  228. isAlive: true,
  229. isFinish: false,
  230. isOver: false,
  231. IsPrivate: 1,
  232. lastPushDataTime: 1608188947175,
  233. lastUpdateTime: 1608188945184,
  234. queuePushData: [],
  235. },
  236. blueMvp: {
  237. Age: 13,
  238. AvgHr: 0,
  239. BeginTime: 1608188579,
  240. Ck: "@float(1,99,0,1)",
  241. Cle: "@float(1,9999,0,1)",
  242. DuId: 119,
  243. EndTime: 0,
  244. Head: require('../static/img/testhead.png'),
  245. Height: 160,
  246. HrId: 41,
  247. IsBirthday: 0,
  248. IsBreaking: 0,
  249. IsNewUser: 0,
  250. MaxHr: 80,
  251. PowerPercent: "@integer(10, 100)",
  252. Name: "姜泽志",
  253. PkSucessnum: '1',//胜场数
  254. PkTotalnum: '1',//总场数
  255. PlanId: 60,
  256. PureCalorieNoVo2: "@integer(1, 999)",
  257. Sex: 1,
  258. Sn: "22735",
  259. StaticHr: 60,
  260. SvId: 20,
  261. UserId: 104,
  262. UserMd5: "55661a861f8fae20dd505b2b4575dc0e",
  263. Weight: 50,
  264. ActivePercent: "@integer(10, 100)",
  265. bmrMSjRmrcb: 66.00000000000001,
  266. FormatCk: "@integer(1, 999)",
  267. isAlive: true,
  268. isFinish: false,
  269. isOver: false,
  270. IsPrivate: 1,
  271. lastPushDataTime: 1608188947175,
  272. lastUpdateTime: 1608188945184,
  273. queuePushData: [],
  274. },
  275. winner: 1,
  276. trueDate: true,//真实数据 true false
  277. autoJump: true,//开启自动跳走
  278. students: {
  279. redUnite: [],
  280. blueUnite: [],
  281. EiSort: [],
  282. },
  283. rankTimer: null,
  284. redSumCk: 0,
  285. redSumCle: 0,
  286. redAveCle: 0,
  287. blueSumCk: 0,
  288. blueSumCle: 0,
  289. blueAveCle: 0,
  290. page1ShowTime: 10000, //页面1显示时长 毫秒
  291. page2ShowTime: 30000, //页面2显示时长 毫秒
  292. page3ShowTime: 0, //页面3显示时长 毫秒
  293. totalTime: '',
  294. Listate: [
  295. {state: false},{state: false},{state: false},{state: false},{state: false},{state: false},{state: false},{state: false},
  296. ],
  297. }
  298. },
  299. mounted() {
  300. this.init();
  301. },
  302. watch: {
  303. '$route': function (val) {
  304. if (val.path == '/2pkRank') {
  305. if (this.trueDate) {
  306. this.init();
  307. } else {
  308. // this.rankTimer = setInterval(() => {
  309. // this.students.CkSort = fakeNews(5);
  310. // this.students.CalSort = fakeNews(5);
  311. // }, 5000);
  312. }
  313. } else {
  314. clearInterval(this.rankTimer);
  315. }
  316. }
  317. },
  318. beforeDestroy() {
  319. clearInterval(this.rankTimer);
  320. this.rankTimer = null;
  321. },
  322. methods: {
  323. init() {
  324. this.getClassUserRank();
  325. this.pages = 1;
  326. // this.cardPlay();
  327. this.execWait(this.page1ShowTime, "that.enterPage(2)");
  328. // N秒后翻页
  329. // this.rankTimer = setTimeout(() => {
  330. // if (this.pages == 1) {
  331. // this.pages = 2;
  332. // }
  333. // else {
  334. // this.pages = 1;
  335. // }
  336. // this.cardPlay();
  337. // }, 10000);
  338. },
  339. enterPage(page) {
  340. this.pages = page;
  341. if (page == 2) {
  342. this.cardPlay();
  343. this.execWait(this.page2ShowTime, "that.enterPage(3)");
  344. }
  345. else if (page == 3) {
  346. this.$refs.eiRank.pagePlay();
  347. this.page3ShowTime = this.$refs.eiRank.showTimeTotal;
  348. // this.execWait(this.page3ShowTime);
  349. this.execWait(this.page3ShowTime, "that.$router.push({path: '/'});");
  350. }
  351. },
  352. //倒计时,并在计时结束后执行指定的语句
  353. execWait(waitTime, execStr="") {
  354. waitTime = parseInt(waitTime / 1000);
  355. let that = this;
  356. clearInterval(clock);
  357. let clock = window.setInterval(() => {
  358. that.totalTime = waitTime;
  359. if (parseInt(waitTime) <= 0) {
  360. if (execStr != "") {
  361. eval(execStr);
  362. }
  363. // 计时器回收
  364. clearInterval(clock);
  365. }
  366. waitTime--;
  367. }, 1000)
  368. },
  369. getClassUserRank() {
  370. let that = this;
  371. let param = {
  372. eqSn: localStorage.eqSn
  373. };
  374. let postdata = qs.stringify(param);
  375. ClassUserRank(postdata).then(res => {
  376. let json = res;
  377. that.students.redUnite = [];
  378. that.students.blueUnite = [];
  379. if (json.Code == 0) {
  380. // console.log("ClassUserRank: " + JSON.stringify(json));
  381. that.UniteBreak(json.Rs, json.Dp.PlanId);
  382. that.students.EiSort = deepClone(json.Rs);
  383. // let totalTime = 40;
  384. // let Studenlength = 0;
  385. // if (json.Rs) {
  386. // Studenlength = json.Rs.length;
  387. // }
  388. // // 根据人数多少显示停留时间
  389. // if (Studenlength > 3) {
  390. // totalTime = 40
  391. // } else {
  392. // totalTime = 30
  393. // }
  394. // this.jumpWait(totalTime);
  395. } else {
  396. that.students.redUnite = [];
  397. that.students.blueUnite = [];
  398. // this.jumpWait(10);
  399. if (json.Code == '999') {
  400. // that.$router.push({path: '/'});
  401. } else {
  402. // 已出错
  403. that.$message.error(json.Memo);
  404. }
  405. }
  406. })
  407. },
  408. // 分队展示
  409. UniteBreak(Rs, PlanId) {
  410. let that = this;
  411. that.students.redUnite = [];
  412. that.students.blueUnite = [];
  413. Rs.map(function (item, t) {
  414. if (item.GroupNo == 1) {
  415. that.students.redUnite.push(item);
  416. }
  417. if (item.GroupNo == 2) {
  418. that.students.blueUnite.push(item);
  419. }
  420. });
  421. // 排序
  422. that.students.redUnite = that.students.redUnite.sort(function (a, b) {
  423. // return b.Cle - a.Cle;
  424. return b.Ck - a.Ck;
  425. });
  426. that.students.blueUnite = that.students.blueUnite.sort(function (a, b) {
  427. // return b.Cle - a.Cle;
  428. return b.Ck - a.Ck;
  429. });
  430. that.redMvp = that.students.redUnite[0];
  431. that.blueMvp = that.students.blueUnite[0];
  432. that.calcSumCK(that.students, PlanId);
  433. },
  434. // 计算各队总分
  435. calcSumCK(Rs, PlanId) {
  436. let that = this;
  437. let redSumCk = 0;
  438. let redSumCle = 0;
  439. let blueSumCk = 0;
  440. let blueSumCle = 0;
  441. Rs.redUnite.map(function (item, t) {
  442. redSumCk += parseFloat(item.Ck);
  443. redSumCle += parseFloat(item.Cle);
  444. });
  445. Rs.blueUnite.map(function (item, t) {
  446. blueSumCk += parseFloat(item.Ck);
  447. blueSumCle += parseFloat(item.Cle);
  448. // that.successCalc(item);
  449. });
  450. that.redSumCk = redSumCk.toFixed(1);
  451. that.redSumCle = redSumCle.toFixed(1);
  452. that.blueSumCk = blueSumCk.toFixed(1);
  453. that.blueSumCle = blueSumCle.toFixed(1);
  454. // 获取人数 计算人均CK
  455. let redHuman = 0;
  456. let blueHuman = 0;
  457. if (Rs.redUnite != '') {
  458. redHuman = Rs.redUnite.length;
  459. that.redAveCle = parseFloat(redSumCle / redHuman).toFixed(1);
  460. } else {
  461. that.redAveCle = 0
  462. }
  463. if (Rs.blueUnite != '') {
  464. blueHuman = Rs.blueUnite.length;
  465. that.blueAveCle = parseFloat(blueSumCle / blueHuman).toFixed(1);
  466. } else {
  467. that.blueAveCle = 0
  468. }
  469. // 上报胜率结果
  470. let groupNo = redSumCk >= blueSumCk ? 1 : 2;
  471. that.winner = groupNo;
  472. that.PostAddPkInfo(PlanId, groupNo);
  473. // 计算本场胜率
  474. that.getWhoWin(Rs.redUnite, Rs.blueUnite, groupNo);
  475. },
  476. getWhoWin(redUnite, blueUnite, groupNo) {
  477. let that = this;
  478. if (groupNo == 1) {
  479. redUnite.map(function (item, t) {
  480. that.successCalc(item, 1);
  481. });
  482. blueUnite.map(function (item, t) {
  483. that.successCalc(item, 0);
  484. });
  485. } else {
  486. redUnite.map(function (item, t) {
  487. that.successCalc(item, 0);
  488. });
  489. blueUnite.map(function (item, t) {
  490. that.successCalc(item, 1);
  491. });
  492. }
  493. },
  494. // 插入胜率结果
  495. successCalc(item, Victorl) {
  496. // item.success = '胜' + (parseInt(item.PkSucessnum) + parseInt(Victorl)) + ' 总:' + (parseInt(item.PkTotalnum) + 1) + '结' + (parseFloat(parseInt(item.PkSucessnum) + parseInt(Victorl)) / (parseInt(item.PkTotalnum) + 1)) * 100
  497. if (parseInt(item.PkTotalnum + Victorl) == 0) {
  498. item.success = 0;
  499. } else {
  500. let res = (parseFloat(parseInt(item.PkSucessnum) + parseInt(Victorl)) / (parseInt(item.PkTotalnum) + 1)) * 100;
  501. if (res >= 100) {
  502. item.success = 100;
  503. } else {
  504. item.success = res.toFixed(1);
  505. }
  506. }
  507. },
  508. // 竞技课程结果上传
  509. PostAddPkInfo(dpId, groupNo) {
  510. let isViewMode = false;
  511. // 如果是演示版不上报比赛结果
  512. if (isViewMode) {
  513. return false;
  514. }
  515. let that = this;
  516. let param = {
  517. dpId: dpId,
  518. groupNo: groupNo,
  519. };
  520. let postdata = qs.stringify(param);
  521. AddPkInfo(postdata).then(res => {
  522. let json = res;
  523. if (json.Code == 0) {
  524. console.log('竞技课程结果上传成功 dpid:' + dpId + ' groupNo:' + groupNo);
  525. } else {
  526. console.log('[PostAddPkInfo] 竞技课程结果上传失败! code:' + json.Code + ' memo:' + json.Memo);
  527. // that.$message.error(json.Memo);
  528. }
  529. })
  530. },
  531. // jumpWait(totalTime) {
  532. // // return; //debug时可以屏蔽本句,不进行跳转
  533. // // 倒计时60秒自动关闭
  534. // let that = this;
  535. // clearInterval(clock);
  536. // let clock = window.setInterval(() => {
  537. // that.totalTime = totalTime;
  538. // if (parseInt(totalTime) <= 0) {
  539. // // 前往等待页面
  540. // that.$router.push({path: '/'});
  541. // // 计时器回收
  542. // clearInterval(clock);
  543. // }
  544. // totalTime--;
  545. // }, 1000)
  546. // },
  547. cardPlay() {
  548. let that = this;
  549. // 重置一下状态
  550. that.Listate.map(function (t) {
  551. t.state = false;
  552. })
  553. let timeScope = 100; //400
  554. let timeLong;
  555. that.timer = setTimeout(() => { //设置延迟执行
  556. for (let i = 0; i < 8; i++) {
  557. timeLong = parseInt(i * timeScope);
  558. that.timer = setTimeout(() => { //设置延迟执行
  559. that.Listate[i].state = true;
  560. }, timeLong)
  561. }
  562. }, 60);
  563. },
  564. },
  565. filters: {
  566. fmtNum(val) {
  567. if (val == 0) {
  568. return '--'
  569. } else {
  570. if (parseInt(val) < 0) return 0;
  571. if (parseInt(val) > 0) return val
  572. }
  573. },
  574. fmtFloat(val) {
  575. if (val == 0) {
  576. return '0.0'
  577. } else {
  578. return parseFloat(val).toFixed(1);
  579. }
  580. },
  581. fmtInt(val) {
  582. if (val == 0) {
  583. return '0'
  584. } else {
  585. return parseInt(val);
  586. }
  587. },
  588. },
  589. components: {
  590. Headside, defaultHead, eiRank
  591. }
  592. }
  593. </script>
  594. <style lang="scss" scoped>
  595. @mixin bg {
  596. height: auto;
  597. min-height: 100%;
  598. background-color: #333;
  599. background-repeat: no-repeat;
  600. background-position: top center;
  601. background-size: 100% 100%;
  602. }
  603. @mixin cube {
  604. width: 100%;
  605. overflow: hidden;
  606. display: block;
  607. margin: 0 auto;
  608. }
  609. .bg1 {
  610. background: url("../../src/assets/imgs/pkRank/bg.png");
  611. @include bg;
  612. }
  613. .bg2 {
  614. background: url("../../src/assets/imgs/pkRank/bg.png");
  615. @include bg;
  616. }
  617. .bg3 {
  618. background: url("../../src/assets/imgs/rank/bg_ydqdpm.png");
  619. @include bg;
  620. }
  621. .content {
  622. .pageTitle {
  623. background: url("../assets/imgs/pkRank/title.svg");
  624. background-repeat: no-repeat;
  625. background-position: top center;
  626. background-size: 100% 100%;
  627. @include cube;
  628. width: 2rem;
  629. height: 0.5rem;
  630. }
  631. .pageSum {
  632. .pkResult {
  633. @include cube;
  634. width: 70%;
  635. margin-top: 0.8rem;
  636. padding-bottom: 0.3rem;
  637. .lt {
  638. width: 5rem;
  639. float: left;
  640. .panel {
  641. background: url("../assets/imgs/pkRank/redCube.png");
  642. background-repeat: no-repeat;
  643. background-position: top center;
  644. background-size: 100% 100%;
  645. }
  646. }
  647. .rt {
  648. width: 5rem;
  649. float: right;
  650. .panel {
  651. background: url("../assets/imgs/pkRank/blueCube.png");
  652. background-repeat: no-repeat;
  653. background-position: top center;
  654. background-size: 100% 100%;
  655. }
  656. }
  657. .level {
  658. @include cube;
  659. color: white;
  660. height: 1.7rem;
  661. img {
  662. position: relative;
  663. width: 1rem;
  664. bottom: 1rem;
  665. left: 0.2rem;
  666. float: left;
  667. }
  668. h5 {
  669. @include cube;
  670. margin: 0 auto;
  671. margin-top: 0.5rem;
  672. font-size: 0.6rem;
  673. font-weight: normal;
  674. &.winner {
  675. color: #FFEB50;
  676. }
  677. }
  678. }
  679. .center {
  680. @include cube;
  681. color: white;
  682. font-size: 0.4rem;
  683. }
  684. .ckValue {
  685. @include cube;
  686. color: white;
  687. .winner {
  688. color: #FFEB50;
  689. }
  690. em {
  691. // position: relative;
  692. // bottom: 0.3rem;
  693. font-size: 0.8rem;
  694. line-height: 0.5rem;
  695. font-weight: bold;
  696. font-style: normal;
  697. }
  698. }
  699. .mvp {
  700. @include cube;
  701. margin-top: 0.3rem;
  702. .head {
  703. @include cube;
  704. height: 2rem;
  705. img {
  706. @include cube;
  707. width: 1.8rem;
  708. height: 1.8rem;
  709. border-radius: 250rem;
  710. &.girl {
  711. border: 2px solid #EA26EA;
  712. }
  713. &.boy {
  714. border: 2px solid #39B6FF;
  715. }
  716. }
  717. .names {
  718. background: rgba(0, 0, 0, 0.7);
  719. text-align: center;
  720. padding: 1% 1%;
  721. border-radius: 250rem;
  722. position: relative;
  723. width: 1.2rem;
  724. height: 0.2rem;
  725. line-height: 0.2rem;
  726. font-size: 0.2rem;
  727. bottom: 0.25rem;
  728. color: white;
  729. margin: 0 auto;
  730. }
  731. }
  732. .mvpCode {
  733. @include cube;
  734. font-size: 0.3rem;
  735. color: white;
  736. line-height: 0.6rem;
  737. margin-top: 0;
  738. margin-bottom: 0.1rem;
  739. }
  740. }
  741. .per {
  742. @include cube;
  743. font-size: 0.3rem;
  744. color: white;
  745. line-height: 0.6rem;
  746. // margin-top: 0.3rem;
  747. }
  748. .teamName {
  749. margin-top: 0.3rem;
  750. font-size: 0.5rem;
  751. color: white;
  752. }
  753. }
  754. }
  755. .pageDetail {
  756. overflow: hidden;
  757. .sumTitle {
  758. @include cube;
  759. width: 90%;
  760. margin-top: 0.7rem;
  761. overflow: visible;
  762. .lt {
  763. width: 45%;
  764. float: left;
  765. }
  766. .md {
  767. width: 10%;
  768. float: left;
  769. img {
  770. @include cube;
  771. width: 1.2rem;
  772. position: relative;
  773. bottom: 0.2rem;
  774. }
  775. }
  776. .rt {
  777. width: 45%;
  778. float: right;
  779. }
  780. .titleRow {
  781. @include cube;
  782. height: 0.7rem;
  783. overflow: visible;
  784. &.redRow {
  785. background: url("../assets/imgs/pkRank/redTitle.svg");
  786. background-repeat: no-repeat;
  787. background-position: top center;
  788. background-size: 100%;
  789. }
  790. &.blueRow {
  791. background: url("../assets/imgs/pkRank/blueTitle.svg");
  792. background-repeat: no-repeat;
  793. background-position: top center;
  794. background-size: 100%;
  795. .rowName {
  796. float: right;
  797. }
  798. .rowValue {
  799. float: left;
  800. em {
  801. float: right;
  802. }
  803. }
  804. }
  805. .rowName {
  806. font-size: 0.4rem;
  807. float: left;
  808. color: white;
  809. padding: 0 0.3rem;
  810. }
  811. img {
  812. position: relative;
  813. bottom: 0.7rem;
  814. width: 1rem;
  815. float: left;
  816. }
  817. .rowValue {
  818. float: right;
  819. padding-right: 0.2rem;
  820. em {
  821. float: left;
  822. color: white;
  823. font-size: 0.3rem;
  824. font-style: normal;
  825. font-weight: bold;
  826. line-height: 0.6rem;
  827. }
  828. s {
  829. text-decoration: none;
  830. float: right;
  831. text-align: right;
  832. font-size: 1rem;
  833. color: white;
  834. line-height: 0.6rem;
  835. padding: 0 0.2rem;
  836. font-weight: bold;
  837. font-family: "Arial";
  838. &.winnerSum {
  839. color: #FFEB50;
  840. }
  841. }
  842. }
  843. }
  844. }
  845. .listContainer {
  846. @include cube;
  847. width: 90%;
  848. min-height: 6rem;
  849. padding-bottom: 0.2rem;
  850. .lt {
  851. width: 47%;
  852. float: left;
  853. }
  854. .rt {
  855. width: 47%;
  856. float: right;
  857. }
  858. .ltTitle {
  859. @include cube;
  860. span {
  861. float: left;
  862. color: #fff;
  863. font-size: 0.3rem;
  864. &:nth-child(1) {
  865. margin-right: 1.4rem;
  866. }
  867. &:nth-child(2) {
  868. margin-right: 3.5rem;
  869. }
  870. &:last-child {
  871. float: right;
  872. margin-right: 0.3rem;
  873. }
  874. }
  875. }
  876. ul {
  877. @include cube;
  878. li {
  879. @include cube;
  880. height: 0.7rem;
  881. padding-top: 0.2rem;
  882. .gary {
  883. @include cube;
  884. height: 0.6rem;
  885. margin-bottom: 0.3rem;
  886. background-repeat: no-repeat;
  887. background-position: top center;
  888. background-size: 100% 100%;
  889. overflow: visible;
  890. color: white;
  891. border: 1px solid rgba(255, 255, 255, 0.1);
  892. border-left: 0;
  893. &:after {
  894. opacity: 10%;
  895. }
  896. &.redrow {
  897. background: url("../assets/imgs/3pkRank/redrow.png");
  898. }
  899. &.bluerow {
  900. background: url("../assets/imgs/3pkRank/bluerow.png");
  901. }
  902. }
  903. em {
  904. width: 0.6rem;
  905. height: 0.6rem;
  906. float: left;
  907. background: url("../assets/imgs/rank/rowTitle.png");
  908. background-repeat: no-repeat;
  909. background-position: top center;
  910. background-size: 100% 100%;
  911. text-align: left;
  912. text-indent: 0.1rem;
  913. font-size: 0.3rem;
  914. font-weight: bold;
  915. text-decoration: none;
  916. font-style: normal;
  917. color: white;
  918. line-height: 0.6rem;
  919. }
  920. .head {
  921. position: relative;
  922. bottom: 0.5rem;
  923. float: left;
  924. margin-left: 0.3rem;
  925. img {
  926. width: 0.7rem;
  927. height: 0.7rem;
  928. border-radius: 250rem;
  929. &.girl {
  930. border: 1px solid #EA26EA;
  931. }
  932. &.boy {
  933. border: 1px solid #39B6FF;
  934. }
  935. }
  936. }
  937. .names {
  938. float: left;
  939. color: white;
  940. font-size: 0.3rem;
  941. line-height: 0.6rem;
  942. margin-left: 0.4rem;
  943. min-width: 2rem;
  944. text-align: left;
  945. }
  946. .glory {
  947. float: left;
  948. margin-left: 0rem;
  949. min-width: 0.8rem;
  950. min-height: 0.2rem;
  951. img {
  952. float: right;
  953. width: 0.6rem;
  954. margin-left: 0.2rem;
  955. margin-top: 0.1rem;
  956. }
  957. }
  958. .eiScore {
  959. float: left;
  960. color: white;
  961. width: 0.9rem;
  962. font-size: 0.3rem;
  963. line-height: 0.6rem;
  964. font-family: Arial;
  965. font-weight: bold;
  966. font-style: italic;
  967. text-align: left;
  968. padding-left: 1.26rem;
  969. }
  970. .score {
  971. float: right;
  972. color: #FFE61F;
  973. font-size: 0.3rem;
  974. line-height: 0.6rem;
  975. font-family: Arial;
  976. font-weight: bold;
  977. font-style: italic;
  978. text-align: center;
  979. padding-right: 0.2rem;
  980. }
  981. }
  982. }
  983. }
  984. }
  985. .pageYdqdpm {
  986. .title {
  987. // position: relative;
  988. width: 3.6rem;
  989. height: 0.75rem;
  990. margin: 0 auto;
  991. margin-top: 0.03rem;
  992. bottom: 0.1rem;
  993. background: url("../../src/assets/imgs/rank/titleBg2.png");
  994. background-repeat: no-repeat;
  995. background-position: top center;
  996. background-size: 100% 100%;
  997. line-height: 0.7rem;
  998. span {
  999. @include cube;
  1000. // position: relative;
  1001. bottom: 0.65rem;
  1002. color: #fff;
  1003. text-align: center;
  1004. font-size: 0.35rem;
  1005. font-weight: bold;
  1006. }
  1007. }
  1008. }
  1009. }
  1010. .icons {
  1011. @include cube;
  1012. position: static;
  1013. padding-bottom: 0.2rem;
  1014. img {
  1015. @include cube;
  1016. // width: 40%;
  1017. width: 18%;
  1018. }
  1019. }
  1020. .countdown {
  1021. width: 1rem;
  1022. position: fixed;
  1023. font-size: 0.25rem;
  1024. color: white;
  1025. right: 0rem;
  1026. bottom: 0.2rem;
  1027. }
  1028. /*响应式调整*/
  1029. @media (max-aspect-ratio: 1920/1080) { //max-aspect-ratio: 小于等于 min-aspect-ratio: 大于等于
  1030. .icons {
  1031. position: fixed;
  1032. padding-bottom: 0rem;
  1033. bottom: 0.2rem;
  1034. }
  1035. }
  1036. </style>