threepk.vue 20 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840
  1. <template>
  2. <div class="pages">
  3. <Headside></Headside>
  4. <div class="pageTitle">
  5. <em>
  6. {{ classInfo.endTime }}
  7. </em>
  8. </div>
  9. <div class="progressContainer">
  10. <div class="valueDisplay">
  11. <div class="lt">
  12. <span :style="{'left': Redflag+'%'}">
  13. <em>CK {{ redSum }}</em>
  14. </span>
  15. </div>
  16. <div class="md">
  17. <span :style="{'left': BlueFlag+'%'}">
  18. <em>CK {{ blueSum }}</em>
  19. </span>
  20. </div>
  21. <div class="rt">
  22. <span :style="{'left': yellowFlag+'%'}">
  23. <em>CK {{ yellowSum }}</em>
  24. </span>
  25. </div>
  26. </div>
  27. <div class="lineContianer">
  28. <div class="lt">
  29. <span :style="{'width':RedProgress+'%'}">
  30. </span>
  31. <em>红队{{ redPeron }}人</em>
  32. </div>
  33. <div class="md">
  34. <img class="vsIcon leftVs" src="../assets/imgs/pk/vs.png" alt="">
  35. <span :style="{'width':BlueProgress+'%'}">
  36. </span>
  37. <em>蓝队{{ bluePerson }}人</em>
  38. <img class="vsIcon rightVs" src="../assets/imgs/pk/vs.png" alt="">
  39. </div>
  40. <div class="rt">
  41. <span :style="{'width':yellowProgress+'%'}">
  42. </span>
  43. <em>黄队{{ yellowPerson }}人</em>
  44. </div>
  45. </div>
  46. </div>
  47. <div class="userPart">
  48. <div class="lt">
  49. <threestudent :students="students.redUnite"></threestudent>
  50. <div class="bottomLine redBottom"></div>
  51. </div>
  52. <div class="md">
  53. <threestudent :students="students.blueUnite"></threestudent>
  54. <div class="bottomLine blueBottom"></div>
  55. </div>
  56. <div class="rt">
  57. <threestudent :students="students.yellowUnite"></threestudent>
  58. <div class="bottomLine yellowBottom"></div>
  59. </div>
  60. </div>
  61. <div class="icons">
  62. <img src="../assets/imgs/pk/icons.svg" alt="">
  63. </div>
  64. <!-- 突破纪录-->
  65. <newRecord :toper-info="toperInfo"></newRecord>
  66. <!-- 欢迎新同学-->
  67. <newStudent :student-info="studentInfo"></newStudent>
  68. </div>
  69. </template>
  70. <script>
  71. import '../libs/rem';
  72. import Headside from '@/components/Headside'
  73. import newRecord from '@/components/newRecord'
  74. import newStudent from '@/components/newStudent'
  75. import threestudent from '@/components/threestudent'
  76. import
  77. {
  78. getHello,
  79. getClassStat,
  80. getRecordBreak,
  81. getNewUser
  82. } from '@/api/getApiRes'
  83. import '../Global'
  84. let qs = require('qs');
  85. export default {
  86. data() {
  87. return {
  88. trueDate: true,//真实数据 true false
  89. studentsClassName: [
  90. {name: 'max'}
  91. ],
  92. students: {
  93. redUnite: [],
  94. blueUnite: [],
  95. yellowUnite: [],
  96. },
  97. thisClassName: '',
  98. redSum: 0,
  99. blueSum: 0,
  100. yellowSum: 0,
  101. redPeron: 0,
  102. bluePerson: 0,
  103. yellowPerson: 0,
  104. pkVal: '50%',
  105. RedstudentsClassName: [
  106. {name: 'max'}
  107. ],
  108. BluestudentsClassName: [
  109. {name: 'max'}
  110. ],
  111. PlanName: '',
  112. num: 0,
  113. Teacher: '',
  114. classInfo: {
  115. name: '竞技课程',
  116. num: '0',
  117. btTime: '2020-11-13 09:00:00',//时间戳
  118. endTime: '00:00:00',
  119. redSum: 0,
  120. blueSum: 0,
  121. },
  122. totalTime: 30,
  123. studentTime: 15,
  124. toperInfo: {
  125. dialogVisible: false,
  126. toper: {},
  127. },
  128. studentInfo: {
  129. dialogVisible: false,
  130. Rs: [],
  131. percent: 0
  132. },
  133. Redflag: 0,
  134. BlueFlag: 0,
  135. yellowFlag: 0,
  136. RedProgress: 25,
  137. BlueProgress: 25,
  138. yellowProgress: 25,
  139. }
  140. },
  141. watch: {
  142. '$route': function (val) {
  143. let that = this;
  144. if (val.path == '/pk') {
  145. this.init();
  146. }
  147. }
  148. },
  149. mounted() {
  150. this.init();
  151. },
  152. methods: {
  153. init() {
  154. this.GetgetUserList();
  155. this.createEgg();
  156. this.createNewStudent();
  157. // todo
  158. // this.PkTimer = setInterval(() => {
  159. // this.GetgetUserList();
  160. // this.ClacClassTime();
  161. // this.curgetClassStat();
  162. // }, 1000);
  163. //
  164. // this.timer2 = setInterval(() => {
  165. // this.createEgg();
  166. // }, 31000);
  167. //
  168. // this.timer3 = setInterval(() => {
  169. // this.createNewStudent();
  170. // }, 6000);
  171. },
  172. // 启动一个成就彩蛋
  173. createEgg() {
  174. let that = this;
  175. let param = {
  176. token: localStorage.token,
  177. eqSn: localStorage.eqSn
  178. };
  179. let postdata = qs.stringify(param);
  180. getRecordBreak(postdata).then(res => {
  181. let json = res;
  182. if (json.Code == 0) {
  183. // 欢迎新学生时不显示彩蛋
  184. if (that.studentInfo.dialogVisible == true) {
  185. console.log('正在显示新学生');
  186. return false
  187. } else {
  188. this.OpenEgg(json);
  189. }
  190. } else {
  191. // 并没有人破记录
  192. if (json.Code == 999) return false;
  193. if (json.Code != 999) that.$message.error(json.Memo + '[错误码]' + json.Code);
  194. }
  195. })
  196. },
  197. // 欢迎新同学
  198. createNewStudent() {
  199. let that = this;
  200. let param = {
  201. token: localStorage.token,
  202. eqSn: localStorage.eqSn
  203. };
  204. let postdata = qs.stringify(param);
  205. getNewUser(postdata).then(res => {
  206. let json = res;
  207. if (json.Code == 0) {
  208. console.log('来新生了');
  209. // 显示彩蛋时不欢迎新学生
  210. if (that.toperInfo.dialogVisible == true) {
  211. console.log('正在显示彩蛋');
  212. return false
  213. } else {
  214. that.OpenStudent(json.Rs);
  215. }
  216. } else {
  217. // 并没有人破记录
  218. if (json.Code == 999) return false;
  219. if (json.Code != 999) that.$message.error(json.Memo + '[错误码]' + json.Code);
  220. }
  221. })
  222. },
  223. OpenEgg(msg) {
  224. this.toperInfo.toper = msg.Rs;
  225. this.toperInfo.dialogVisible = true;
  226. // 倒计时5秒自动关闭
  227. let that = this;
  228. this.totalTime = 30;
  229. let clock = window.setInterval(() => {
  230. this.totalTime--;
  231. if (parseInt(this.totalTime) < 0) {
  232. that.toperInfo.dialogVisible = false;
  233. clearInterval(clock);
  234. }
  235. }, 1000)
  236. },
  237. OpenStudent(msg) {
  238. let that = this;
  239. that.studentInfo.Rs = msg;
  240. that.studentInfo.dialogVisible = true;
  241. this.studentInfo.percent = 0;
  242. // 倒计时5秒自动关闭
  243. this.studentTime = 15;
  244. let clock = window.setInterval(() => {
  245. this.studentTime--;
  246. let num = (15 - this.studentTime) / 15 * 100;
  247. this.studentInfo.percent = parseInt(num) > 100 ? 100 : num;
  248. console.log('num' + num);
  249. if (parseInt(this.studentTime) <= 0) {
  250. that.studentInfo.dialogVisible = false;
  251. clearInterval(clock);
  252. }
  253. }, 1000)
  254. },
  255. // 载入课程信息
  256. ReadLessonInfo(Dp) {
  257. this.PlanName = Dp.PlanName;
  258. this.BeginTime = Dp.BeginTime;
  259. this.Teacher = Dp.Teacher;
  260. },
  261. // 分队展示
  262. UniteBreak(Rs) {
  263. let that = this;
  264. that.students.redUnite = [];
  265. that.students.blueUnite = [];
  266. if (!Rs) {
  267. that.students.redUnite = [];
  268. that.students.blueUnite = [];
  269. } else {
  270. Rs.map(function (item, t) {
  271. item.sportLevel = sportLevel(item.ActivePercent);
  272. if (item.GroupNo == 1) {
  273. that.students.redUnite.push(item);
  274. }
  275. if (item.GroupNo == 2) {
  276. that.students.blueUnite.push(item);
  277. }
  278. if (item.GroupNo == 3) {
  279. that.students.yellowUnite.push(item);
  280. }
  281. })
  282. }
  283. that.giveClassName(that.students.redUnite, 1);
  284. that.giveClassName(that.students.blueUnite, 2);
  285. that.giveClassName(that.students.yellowUnite, 3);
  286. that.calcSumCK(that.students);
  287. },
  288. // 计算各队总分
  289. calcSumCK(Rs) {
  290. let that = this;
  291. let redSum = 0;
  292. let blueSum = 0;
  293. let yellowSum = 0;
  294. // that.redSum
  295. Rs.redUnite.map(function (item, t) {
  296. redSum += parseFloat(item.Ck.toFixed(1));
  297. });
  298. Rs.blueUnite.map(function (item, t) {
  299. blueSum += parseFloat(item.Ck.toFixed(1));
  300. });
  301. Rs.yellowUnite.map(function (item, t) {
  302. yellowSum += parseFloat(item.Ck.toFixed(1));
  303. });
  304. that.redSum = redSum.toFixed(1);
  305. that.blueSum = blueSum.toFixed(1);
  306. that.yellowSum = yellowSum.toFixed(1);
  307. // 进度条 FormatCk
  308. let redFmtSum = 0;
  309. let blueFmtSum = 0;
  310. let yellowFmtSum = 0;
  311. let pkval = 0;
  312. Rs.redUnite.map(function (item, t) {
  313. redFmtSum += parseFloat(item.FormatCk);
  314. });
  315. Rs.blueUnite.map(function (item, t) {
  316. blueFmtSum += parseFloat(item.FormatCk);
  317. });
  318. Rs.yellowUnite.map(function (item, t) {
  319. yellowFmtSum += parseFloat(item.FormatCk);
  320. });
  321. let sumMax = 0;
  322. if (Rs.redUnite) {
  323. sumMax = (Rs.redUnite.length + Rs.blueUnite.length + Rs.yellowUnite.length) * 1000;
  324. }
  325. // 当为0时均分
  326. if (redFmtSum == 0) {
  327. that.Redflag = 0;
  328. that.RedProgress = 28;
  329. } else {
  330. // 限制最大
  331. that.Redflag = parseInt((redFmtSum / sumMax) * 100) > 100 ? 100 : parseInt((redFmtSum / sumMax) * 100);
  332. that.RedProgress = that.Redflag + 28
  333. if (that.RedProgress > 75) {
  334. that.RedProgress = 75
  335. }
  336. if (that.Redflag > 75) {
  337. that.Redflag = 75
  338. }
  339. }
  340. if (blueFmtSum == 0) {
  341. that.BlueFlag = 0;
  342. that.BlueProgress = 28;
  343. } else {
  344. // 限制最大
  345. that.BlueFlag = parseInt((blueFmtSum / sumMax) * 100) > 100 ? 100 : parseInt((blueFmtSum / sumMax) * 100);
  346. that.BlueProgress = that.BlueFlag + 28
  347. if (that.BlueProgress > 75) {
  348. that.BlueProgress = 75
  349. }
  350. }
  351. if (yellowFmtSum == 0) {
  352. that.yellowFlag = 0;
  353. that.yellowProgress = 28;
  354. } else {
  355. // 限制最大
  356. that.yellowFlag = parseInt((yellowFmtSum / sumMax) * 100) > 100 ? 100 : parseInt((blueFmtSum / sumMax) * 100);
  357. that.yellowProgress = that.yellowFlag + 28
  358. if (that.yellowProgress > 75) {
  359. that.yellowProgress = 75
  360. }
  361. }
  362. },
  363. // 获取上课学生信息
  364. GetgetUserList() {
  365. let that = this;
  366. let param = {
  367. token: localStorage.token,
  368. eqSn: localStorage.eqSn
  369. };
  370. let postdata = qs.stringify(param);
  371. getHello(postdata).then(res => {
  372. let json = res;
  373. if (json.Code == 0) {
  374. if (!json.Dp) {
  375. // that.$message.error('没有获取到课程信息');
  376. return false
  377. } else {
  378. that.ReadLessonInfo(json.Dp);
  379. }
  380. // 学生分队展示
  381. that.UniteBreak(json.Rs);
  382. // 人口总数
  383. that.num = json.Rs.length ? json.Rs.length : 0;
  384. this.ClacClassTime();
  385. } else {
  386. // 已下课
  387. console.log(json.Code);
  388. if (json.Code == '999') {
  389. // that.$router.push({path: '/2pkRank'});
  390. } else {
  391. // 已出错
  392. that.$message.error(json.Memo);
  393. }
  394. }
  395. })
  396. },
  397. giveClassName(res, type) {
  398. let that = this;
  399. let numberClass = '';
  400. let colorClass = '';
  401. for (let i = 0; i < parseInt(res.length); i++) {
  402. switch (true) {
  403. case parseInt(res.length) == 1:
  404. numberClass = 'max';
  405. break;
  406. case parseInt(res.length) == 2:
  407. numberClass = 'two';
  408. break;
  409. case parseInt(res.length) > 2:
  410. numberClass = 'twentyFive';
  411. break;
  412. }
  413. let per = parseInt(res[i].ActivePercent);
  414. switch (true) {
  415. case per >= 90:
  416. colorClass = 'red';
  417. break;
  418. case per <= 89 && per > 79:
  419. colorClass = 'brown';
  420. break;
  421. case per <= 79 && per > 69:
  422. colorClass = 'yellow';
  423. break;
  424. case per <= 69 && per > 54:
  425. colorClass = 'green';
  426. break;
  427. case per <= 54 && per > 39:
  428. colorClass = 'violet';
  429. break;
  430. case per <= 39:
  431. colorClass = 'blue';
  432. break
  433. }
  434. that.studentsClassName[i] = {
  435. name: numberClass + ' ' + colorClass,
  436. }
  437. }
  438. if (type == 1) {
  439. // that.RedstudentsClassName = that.studentsClassName;
  440. that.redPeron = parseInt(res.length);
  441. } else if (type == 2) {
  442. // that.BluestudentsClassName = that.studentsClassName;
  443. that.bluePerson = parseInt(res.length)
  444. } else if (type == 3) {
  445. // that.BluestudentsClassName = that.studentsClassName;
  446. that.yellowPerson = parseInt(res.length)
  447. }
  448. },
  449. // 计算团队竞技课持续时间
  450. ClacClassTime() {
  451. let BeginTime = new Date(globalcurrent() + ' ' + this.BeginTime);//结束时间
  452. let nowDate = new Date();
  453. let date = new Date(nowDate - BeginTime - 8 * 60 * 60 * 1000);//减掉东八区时区问题
  454. let h = date.getHours() < 10 ? '0' + date.getHours() + ':' : date.getHours() + ':';
  455. let m = date.getMinutes() < 10 ? '0' + date.getMinutes() + ':' : date.getMinutes() + ':';
  456. let s = date.getSeconds() < 10 ? '0' + date.getSeconds() : date.getSeconds();
  457. this.classInfo.endTime = h + m + s;
  458. },
  459. // 当前课程状态
  460. curgetClassStat() {
  461. let that = this;
  462. let param = {
  463. token: localStorage.token,
  464. eqSn: localStorage.eqSn
  465. };
  466. let postdata = qs.stringify(param);
  467. getClassStat(postdata).then(res => {
  468. let json = res;
  469. if (json.Code == 0) {
  470. // 没开课
  471. if (json.ClassOn == 0) {
  472. console.log("xiakele ");
  473. // 0: 下课 团课/私教 排名
  474. // 1:团课/私教 todo
  475. // 2:竞技课2PK
  476. // 3:竞技课3PK
  477. that.$router.push({path: '/2pkRank'});
  478. switch (parseInt(json.dp)) {
  479. case 2:
  480. that.$router.push({path: '/2pkRank'});
  481. break;
  482. }
  483. }
  484. } else {
  485. // that.$message.error(json.Memo);
  486. }
  487. })
  488. },
  489. },
  490. filters: {
  491. fmtNum(val) {
  492. if (val == 0) {
  493. return '--'
  494. } else {
  495. if (parseInt(val) < 0) return 0;
  496. if (parseInt(val) > 0) return val
  497. }
  498. },
  499. fmtFloat(val) {
  500. if (val == 0) {
  501. return '0.0'
  502. } else {
  503. return parseFloat(val).toFixed(1);
  504. }
  505. },
  506. fmtInt(val) {
  507. if (val == 0) {
  508. return '0'
  509. } else {
  510. return parseInt(val);
  511. }
  512. },
  513. max100(val) {
  514. if (val <= 100) {
  515. return val
  516. } else {
  517. return 100
  518. }
  519. }
  520. },
  521. components: {
  522. Headside, newRecord, newStudent, threestudent
  523. }
  524. }
  525. </script>
  526. <style lang="scss" scoped>
  527. @mixin cube {
  528. width: 100%;
  529. overflow: hidden;
  530. display: block;
  531. margin: 0 auto;
  532. }
  533. @mixin bg {
  534. height: 100%;
  535. background-color: #333;
  536. background-repeat: no-repeat;
  537. background-position: top center;
  538. background-size: 100% 100%;
  539. }
  540. .pages {
  541. background: url("../assets/imgs/three/threeBg.png");
  542. @include bg;
  543. .pageTitle {
  544. background: url("../assets/imgs/pk/pageTitle.svg");
  545. background-repeat: no-repeat;
  546. background-position: top center;
  547. background-size: 100% 100%;
  548. @include cube;
  549. width: 2rem;
  550. height: 1rem;
  551. overflow: visible;
  552. em {
  553. position: relative;
  554. top: 0.2rem;
  555. left: 3.6rem;
  556. float: right;
  557. color: white;
  558. font-size: 0.3rem;
  559. font-style: normal;
  560. }
  561. }
  562. .progressContainer {
  563. .valueDisplay {
  564. @include cube;
  565. width: 98%;
  566. height: 2rem;
  567. overflow: hidden;
  568. margin-top: 0.4rem;
  569. .lt {
  570. width: 33.33%;
  571. float: left;
  572. span {
  573. background: url("../assets/imgs/three/redFlag.png");
  574. background-repeat: no-repeat;
  575. background-position: top center;
  576. background-size: 100%;
  577. }
  578. }
  579. .md {
  580. width: 33.33% !important;
  581. float: left;
  582. span {
  583. background: url("../assets/imgs/three/blueFlag.png");
  584. background-repeat: no-repeat;
  585. background-position: top center;
  586. background-size: 100%;
  587. }
  588. }
  589. .rt {
  590. width: 33.33%;
  591. float: left;
  592. span {
  593. background: url("../assets/imgs/three/yellowFlag.png");
  594. background-repeat: no-repeat;
  595. background-position: top center;
  596. background-size: 100%;
  597. }
  598. }
  599. span {
  600. position: relative;
  601. top: 0.1rem;
  602. width: 1.9rem;
  603. height: 0.9rem;
  604. float: left;
  605. em {
  606. @include cube;
  607. font-size: 0.3rem;
  608. color: white;
  609. text-align: center;
  610. font-style: normal;
  611. line-height: 0.6rem;
  612. }
  613. }
  614. }
  615. }
  616. }
  617. .progressContainer {
  618. @include cube;
  619. height: 2.8rem;
  620. }
  621. .lineContianer {
  622. position: relative;
  623. @include cube;
  624. width: 98%;
  625. bottom: 1rem;
  626. z-index: 222;
  627. overflow: visible;
  628. .lt {
  629. width: 33.33%;
  630. float: left;
  631. span {
  632. width: 4rem;
  633. float: left;
  634. border-radius: 3px;
  635. background: linear-gradient(to left, #d11122 0%, rgba(209, 17, 34, 0.23) 100%);
  636. }
  637. em {
  638. position: relative;
  639. float: left;
  640. left: -1.9rem;
  641. width: 1.6rem;
  642. color: white;
  643. text-align: right;
  644. font-size: 0.3rem;
  645. font-style: normal;
  646. }
  647. }
  648. .md {
  649. width: 33.33%;
  650. float: left;
  651. overflow: visible;
  652. span {
  653. position: relative;
  654. left: -1rem;
  655. width: 4rem;
  656. float: left;
  657. background: linear-gradient(to left, #4cbbfc 0%, rgba(0, 125, 198, 0.17) 100%);
  658. }
  659. em {
  660. position: relative;
  661. float: left;
  662. left: -3.1rem;
  663. width: 1.6rem;
  664. color: white;
  665. text-align: right;
  666. font-size: 0.3rem;
  667. font-style: normal;
  668. }
  669. img {
  670. position: relative;
  671. width: 1.2rem;
  672. float: left;
  673. left: -0.6rem;
  674. overflow: visible;
  675. bottom: 0.2rem;
  676. &.rightVs {
  677. float: right;
  678. left: 0.7rem;
  679. }
  680. }
  681. }
  682. .rt {
  683. width: 33.33%;
  684. float: right;
  685. span {
  686. width: 4rem;
  687. float: left;
  688. border-radius: 3px;
  689. background: linear-gradient(to left, #fccd4c 0%, rgba(255, 228, 15, 0.26) 100%);
  690. }
  691. em {
  692. position: relative;
  693. float: left;
  694. left: -1.85rem;
  695. width: 1.6rem;
  696. color: white;
  697. text-align: right;
  698. font-size: 0.3rem;
  699. font-style: normal;
  700. }
  701. }
  702. span {
  703. height: 0.5rem;
  704. }
  705. }
  706. .userPart {
  707. @include cube;
  708. width: 100%;
  709. position: relative;
  710. bottom: 1rem;
  711. height: 6.8rem;
  712. padding-top: 0.1rem;
  713. .lt {
  714. @include cube;
  715. position: relative;
  716. width: 33.33%;
  717. height: 100%;
  718. float: left;
  719. .bottomLine {
  720. position: absolute;
  721. bottom: 0;
  722. @include cube;
  723. height: 0.25rem;
  724. border-radius: 18px;
  725. opacity: 0.8;
  726. background: linear-gradient(rgba(0, 0, 0, 0) 0%, rgba(209, 17, 34, 0.62) 100%);
  727. }
  728. }
  729. .md {
  730. @include cube;
  731. position: relative;
  732. width: 33.33%;
  733. height: 100%;
  734. float: left;
  735. .bottomLine {
  736. position: absolute;
  737. bottom: 0;
  738. @include cube;
  739. height: 0.25rem;
  740. border-radius: 18px;
  741. opacity: 0.8;
  742. background: linear-gradient(rgba(0, 0, 0, 0) 0%, rgba(0, 134, 232, 0.62) 100%);
  743. }
  744. }
  745. .rt {
  746. @include cube;
  747. position: relative;
  748. width: 33.33%;
  749. height: 100%;
  750. float: right;
  751. .bottomLine {
  752. position: absolute;
  753. bottom: 0;
  754. @include cube;
  755. height: 0.25rem;
  756. border-radius: 18px;
  757. opacity: 0.8;
  758. background: linear-gradient(rgba(0, 0, 0, 0) 0%, rgba(216, 191, 0, 0.9) 100%);
  759. }
  760. }
  761. }
  762. .icons {
  763. @include cube;
  764. position: absolute;
  765. bottom: 0.2rem;
  766. img {
  767. @include cube;
  768. width: 40%;
  769. }
  770. }
  771. /*响应式调整*/
  772. @media(min-width: 320px) and (max-width: 1025px) {
  773. .progressContainer {
  774. margin-top: 0.9rem;
  775. }
  776. .userPart {
  777. height: 10rem;
  778. overflow-y: scroll;
  779. }
  780. /deep/ .twentyFive .names {
  781. bottom: 0.4rem !important;
  782. }
  783. }
  784. </style>