voteInfo.vue 19 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859
  1. <template>
  2. <div class="bigbox">
  3. <!-- 顶部图片 -->
  4. <div class="topimg">
  5. <img src="@/assets/voteInfoPic.png" alt="" />
  6. </div>
  7. <!-- 投票简介部分 -->
  8. <div class="voteIntro">
  9. <div v-html="activityDesc"></div>
  10. </div>
  11. <!-- 投票列表排行部分 -->
  12. <div>
  13. <!-- 按钮 -->
  14. <div class="voteButton">
  15. <!-- 用户投票数据 -->
  16. <div class="uservote" v-if="startflag">
  17. <div class="addupVote">
  18. 累计已投: <span>{{ totalVotes }}</span> 票
  19. </div>
  20. <!-- <div class="todayVote">今日已投: <span>{{nowDayTotalVotes}}</span> 票</div> -->
  21. <div class="maxdayVote" v-if="!maxVoteflag">
  22. 剩余可投: <span>{{ maxNumOneday - nowDayTotalVotes }}</span> 票
  23. </div>
  24. <div class="maxVote" v-if="maxVoteflag">投票数已达上限</div>
  25. </div>
  26. <div
  27. class="votestart"
  28. v-if="!startflag"
  29. v-text="endflag ? '投票已结束' : '投票未开始'"
  30. ></div>
  31. <!-- 排序按钮 -->
  32. <div class="buttonB" @click="sortVotenum(newlist, 'numOfVote')">
  33. <img src="./huangguan.png" />即时排行榜
  34. </div>
  35. <div class="buttonA" @click="getLocaleZh(newlist, 'competitorTel')">
  36. 按部门排序
  37. </div>
  38. </div>
  39. <!-- 文章分类按钮 -->
  40. <div style="margin-bottom: 10px">
  41. <div
  42. class="classify"
  43. v-for="(item, index) in voteItemTypeDicts"
  44. :key="index"
  45. :style="{
  46. backgroundColor: sign == index ? '#1d5edb' : '#fff',
  47. color: sign == index ? '#fff' : '#333',
  48. }"
  49. @click="select(index)"
  50. >
  51. {{ item.label }}
  52. </div>
  53. </div>
  54. <!-- 投票列表 -->
  55. <div :class="itemNums % 3 == 1 ? 'votebox1' : 'votebox2'">
  56. <div class="votelist" v-for="(item, index) in newlist" :key="index">
  57. <div
  58. style="
  59. display: flex;
  60. justify-content: space-between;
  61. width: 96%;
  62. margin-left: 2%;
  63. "
  64. >
  65. <span
  66. :style="{ backgroundColor: colorGroup[index] }"
  67. v-if="seeLittlePic"
  68. style="
  69. display: inline-block;
  70. width: 5%;
  71. height: 18px;
  72. border-radius: 5px;
  73. text-align: center;
  74. color: #fff;
  75. font-size: 10px;
  76. vertical-align: top;
  77. margin: 4px 4px 0px 0px;
  78. "
  79. >{{ number[index] }}</span
  80. >
  81. <img
  82. style="width: 290px; height: 180px; cursor: pointer"
  83. :src="'./api/file/pub/' + item.fileUrl"
  84. @click="getBig(item)"
  85. />
  86. </div>
  87. <div style="width: 89.5%; height: 120px; margin-left: 8.4%">
  88. <div
  89. style="
  90. width: 100%;
  91. height: 50px;
  92. text-align: center;
  93. margin-top: 5px;
  94. line-height: 20px;
  95. font-size: 18px;
  96. white-space: break-word;
  97. "
  98. >
  99. {{ item.itemName }}
  100. </div>
  101. <div
  102. style="
  103. width: 100%;
  104. height: 40px;
  105. display: flex;
  106. justify-content: space-around;
  107. "
  108. >
  109. <div
  110. style="
  111. width: 59%;
  112. height: 40px;
  113. line-height: 40px;
  114. text-align: center;
  115. display: flex;
  116. "
  117. >
  118. <div
  119. style="
  120. width: 28%;
  121. height: 40px;
  122. line-height: 40px;
  123. text-align: center;
  124. "
  125. >
  126. 部门:
  127. </div>
  128. <div
  129. style="
  130. width: 72%;
  131. height: 40px;
  132. line-height: 40px;
  133. text-align: left;
  134. white-space: nowrap;
  135. overflow: hidden;
  136. text-overflow: ellipsis;
  137. "
  138. >
  139. {{ item.competitorTel }}
  140. </div>
  141. </div>
  142. <div
  143. style="
  144. width: 39%;
  145. height: 40px;
  146. line-height: 40px;
  147. text-align: center;
  148. display: flex;
  149. "
  150. >
  151. <div
  152. style="
  153. width: 39%;
  154. height: 40px;
  155. line-height: 40px;
  156. text-align: center;
  157. "
  158. >
  159. 作者:
  160. </div>
  161. <div
  162. style="
  163. width: 72%;
  164. height: 40px;
  165. line-height: 40px;
  166. text-align: left;
  167. white-space: nowrap;
  168. overflow: hidden;
  169. text-overflow: ellipsis;
  170. "
  171. >
  172. {{ item.competitorName }}
  173. </div>
  174. </div>
  175. </div>
  176. <div
  177. style="
  178. width: 100%;
  179. height: 40px;
  180. display: flex;
  181. justify-content: space-between;
  182. position: relative;
  183. "
  184. >
  185. <div class="voteCount">
  186. 票数:<span
  187. style="
  188. width: 50%;
  189. height: 28px;
  190. line-height: 28px;
  191. background-color: #41d7b5;
  192. display: inline-block;
  193. border-radius: 10px;
  194. color: #fff;
  195. font-size: 18px;
  196. transform: translateY(2px);
  197. "
  198. >{{ item.numOfVote ? item.numOfVote : 0 }}</span
  199. >
  200. </div>
  201. <img
  202. src="./zvoted.png"
  203. v-if="item.totalVotesForOneItem != 0"
  204. style="
  205. width: 100px;
  206. height: 100px;
  207. z-index: 998;
  208. position: absolute;
  209. top: -283%;
  210. left: 58%;
  211. "
  212. />
  213. <div
  214. style="width: 50%; height: 40px"
  215. v-if="maxNumOneday - nowDayTotalVotes > 0"
  216. >
  217. <div
  218. @click="voteSend(item)"
  219. v-if="item.totalVotesForOneItem == 0"
  220. style="
  221. width: 80%;
  222. text-align: center;
  223. margin-left: 18%;
  224. height: 30px;
  225. line-height: 30px;
  226. background-color: #005eeb;
  227. color: #fff;
  228. border-radius: 10px;
  229. cursor: pointer;
  230. transform: translateY(5px);
  231. "
  232. >
  233. 投票
  234. </div>
  235. <div
  236. v-if="item.totalVotesForOneItem != 0"
  237. style="
  238. width: 80%;
  239. text-align: center;
  240. margin-left: 18%;
  241. height: 30px;
  242. line-height: 30px;
  243. background-color: #bdbdbd;
  244. color: #fff;
  245. border-radius: 10px;
  246. cursor: no-drop;
  247. transform: translateY(5px);
  248. "
  249. >
  250. 投票
  251. </div>
  252. </div>
  253. <div style="width: 50%; height: 40px" v-else>
  254. <div
  255. style="
  256. width: 80%;
  257. text-align: center;
  258. margin-left: 18%;
  259. height: 30px;
  260. line-height: 30px;
  261. background-color: #bdbdbd;
  262. color: #fff;
  263. border-radius: 10px;
  264. cursor: no-drop;
  265. transform: translateY(5px);
  266. "
  267. >
  268. 投票
  269. </div>
  270. </div>
  271. </div>
  272. <div class="tested" v-if="Number(item.totalVotesForOneItem)"></div>
  273. </div>
  274. </div>
  275. </div>
  276. </div>
  277. <!-- 弹窗 -->
  278. <div
  279. v-if="bigPic"
  280. style="
  281. width: 900px;
  282. height: 600px;
  283. background-color: rgba(0, 0, 0, 0.8);
  284. position: fixed;
  285. top: 10%;
  286. left: 50%;
  287. transform: translateX(-50%);
  288. z-index: 999;
  289. "
  290. >
  291. <img
  292. src="@/assets/closesese.png"
  293. style="
  294. width: 30px;
  295. height: 30px;
  296. position: absolute;
  297. top: 1%;
  298. left: 96%;
  299. cursor: pointer;
  300. "
  301. @click="closePic"
  302. />
  303. <img
  304. :src="'./api/file/pub/' + itemInfos.fileUrl"
  305. style="width: 100%; height: 500px; margin-top: 42px"
  306. />
  307. <div style="width: 100%; height: 58px; display: flex; margin-top: -4px">
  308. <div
  309. style="
  310. height: 58px;
  311. line-height: 58px;
  312. font-size: 18px;
  313. color: #bdbdbd;
  314. margin-left: 30px;
  315. "
  316. >
  317. 作品名称:<span>{{ itemInfos.itemName }}</span>
  318. </div>
  319. <div
  320. style="
  321. height: 58px;
  322. line-height: 58px;
  323. font-size: 18px;
  324. color: #bdbdbd;
  325. margin-left: 30px;
  326. "
  327. >
  328. 部门:<span>{{ itemInfos.competitorTel }}</span>
  329. </div>
  330. <div
  331. style="
  332. height: 58px;
  333. line-height: 58px;
  334. font-size: 18px;
  335. color: #bdbdbd;
  336. margin-left: 30px;
  337. "
  338. >
  339. 作者:<span>{{ itemInfos.competitorName }}</span>
  340. </div>
  341. </div>
  342. </div>
  343. <!-- 返回按钮 -->
  344. <div class="backButton" @click="toHome">返回首页</div>
  345. </div>
  346. </template>
  347. <script>
  348. import {
  349. getActivityForVotes,
  350. getItemForVotes,
  351. saveOrUpdateVote,
  352. getVoteParams,
  353. } from '@/api/vote/vote'
  354. import { getDicts } from '@/api/dict'
  355. import { getToken } from '@/api/token'
  356. export default {
  357. name: 'voteInfo',
  358. data() {
  359. return {
  360. seeLittlePic: true,
  361. itemNums: '',
  362. bigPic: false,
  363. itemVoteDetail: {
  364. id: null,
  365. activityId: '', //活动id
  366. itemId: '', //参投id
  367. },
  368. newlist: [],
  369. colorGroup: ['#e02020', '#fa6400', '#f7b500'],
  370. sign: 0,
  371. loadflag: true,
  372. number: [1, 2, 3],
  373. startflag: true, //用户投票数据是否显示flag
  374. endflag: false, //投票是否结束
  375. maxVoteflag: false,
  376. activityDesc: '', //投票描述
  377. voteImg: '', //投票宣传图
  378. voteId: '', //
  379. activityInfos: '',
  380. maxNumOneday: '', //账号最多投票数
  381. //--当前账号投票情况--
  382. totalVotes: '', //账号在投票期间投票总数
  383. nowDayTotalVotes: '', //账号当天投票总数
  384. nowDayTotalVotesForOneItem: '', //账号对单个参投项当天投票总数
  385. isVoteForOneItem: '', //账号在投票期间对单个参投项是否投过票
  386. //----------------------------------------------------------
  387. // votecolor:'',
  388. voteItemTypeDicts: [],
  389. voteItemTypeDict: 'photography_type', //论文类型
  390. Items: [],
  391. itemInfos: [],
  392. }
  393. },
  394. mounted() {
  395. getDicts('VOTE_ITEM_TYPE_DICT').then((res) => {
  396. var data = res.data
  397. if (data) {
  398. this.voteItemTypeDicts = res.data[0]
  399. console.log('xxxxxxxx', this.voteItemTypeDicts)
  400. }
  401. })
  402. this.getActivityForVote()
  403. this.loginAccount = JSON.parse(localStorage.getItem('user')).umsUser
  404. .userPreferredMobile
  405. ? JSON.parse(localStorage.getItem('user')).umsUser.userPreferredMobile
  406. : JSON.parse(localStorage.getItem('user')).umsUser.userEmail
  407. },
  408. methods: {
  409. closePic() {
  410. this.bigPic = false
  411. },
  412. getBig(item) {
  413. console.log(item, '好多数据')
  414. let url = './api/file/pub/' + item.fileUrl
  415. window.open(url, '_blank')
  416. // this.itemInfos = item
  417. // this.bigPic = true
  418. // console.log(this.itemInfos);
  419. },
  420. voteSend(item) {
  421. this.Items = item
  422. console.log('3阶段')
  423. //活动id赋值
  424. this.itemVoteDetail.activityId = this.activityInfos.id
  425. //参投id赋值
  426. this.itemVoteDetail.itemId = this.Items.id
  427. // console.log('/////////',this.itemVoteDetail.activityId)
  428. getVoteParams({ itemId: this.itemVoteDetail.itemId }).then((res) => {
  429. console.log(res, '4阶段')
  430. this.totalVotes = res.data.voteParams.totalVotes
  431. this.nowDayTotalVotes = res.data.voteParams.totalVotes
  432. this.nowDayTotalVotesForOneItem =
  433. res.data.voteParams.nowDayTotalVotesForOneItem
  434. this.isVoteForOneItem = res.data.voteParams.isVoteForOneItem
  435. console.log(
  436. parseInt(this.totalVotes),
  437. this.activityInfos.maxNumTotal,
  438. '===小小的===='
  439. )
  440. })
  441. this.$confirm('是否确定投票', '提示', {
  442. confirmButtonText: '确定',
  443. cancelButtonText: '取消',
  444. type: 'warning',
  445. })
  446. .then(() => {
  447. var nowTime = Date.parse(new Date()) //现在的时间戳
  448. var time1 = Date.parse(this.activityInfos.voteStartDate)
  449. var time2 = Date.parse(this.activityInfos.voteEndDate)
  450. console.log(nowTime, time1, time2, '==时间==')
  451. if (this.loginAccount.slice(0, 4) == '0086') {
  452. this.loginAccount = this.loginAccount.slice(4)
  453. } //截取用户手机号
  454. if (time1 <= nowTime) {
  455. //判断一下投票时间
  456. console.log('1阶段')
  457. if (time2 >= nowTime) {
  458. console.log('2阶段')
  459. if (
  460. this.activityInfos.maxNumTotal &&
  461. parseInt(this.totalVotes) >=
  462. parseInt(this.activityInfos.maxNumTotal)
  463. ) {
  464. this.$message({
  465. type: 'warning',
  466. message: '活动期间投票数已达上限!',
  467. })
  468. return
  469. } else if (
  470. parseInt(this.nowDayTotalVotes) >=
  471. parseInt(this.activityInfos.maxNumOneday)
  472. ) {
  473. this.$message({
  474. type: 'warning',
  475. message: '当天投票数已达上限!',
  476. })
  477. return
  478. } else if (
  479. parseInt(this.nowDayTotalVotesForOneItem) >=
  480. parseInt(this.activityInfos.maxNumOneitemOneday)
  481. ) {
  482. this.$message({
  483. type: 'warning',
  484. message: '该作品投票数已达上限!',
  485. })
  486. return
  487. } else if (
  488. this.activityInfos.isRevoteOneitem == 'No' &&
  489. this.isVoteForOneItem == 'Yes'
  490. ) {
  491. this.$message({
  492. type: 'warning',
  493. message: '请勿对一个作品重复投票!',
  494. })
  495. return
  496. } else {
  497. console.log('4阶段')
  498. this.saveVote()
  499. }
  500. } else {
  501. this.$message({
  502. type: 'warning',
  503. message: '投票已结束!',
  504. })
  505. }
  506. } else {
  507. this.$message({
  508. type: 'warning',
  509. message: '未到投票时间!',
  510. })
  511. }
  512. })
  513. .catch(() => {
  514. this.$message({
  515. type: 'info',
  516. message: '投票取消',
  517. })
  518. })
  519. },
  520. saveVote() {
  521. console.log('5阶段')
  522. console.log(this.itemVoteDetail, '6阶段')
  523. getToken().then((token) => {
  524. console.log(token, '关键数据')
  525. saveOrUpdateVote(JSON.stringify(this.itemVoteDetail), token.data)
  526. .then((res) => {
  527. console.log('最终阶段')
  528. this.$message({
  529. type: 'success',
  530. message: '投票成功!',
  531. })
  532. this.getActivityForVote()
  533. })
  534. .catch((error) => {
  535. this.resetToken()
  536. })
  537. })
  538. },
  539. getActivityForVote() {
  540. getActivityForVotes().then((res) => {
  541. console.log(res, '最初数据')
  542. this.activityInfos = res.data.activityForVotes[0]
  543. this.activityDesc = res.data.activityForVotes[0].activityDesc
  544. this.voteImg = res.data.activityForVotes[0].coverPictureUrl
  545. this.activityId = res.data.activityForVotes[0].id
  546. this.maxNumOneday = res.data.activityForVotes[0].maxNumOneday
  547. // console.log('=================', this.activityId)
  548. var nowtime = Date.parse(new Date())
  549. if (
  550. Date.parse(this.activityInfos.voteStartDate) > nowtime ||
  551. Date.parse(this.activityInfos.voteEndDate) < nowtime
  552. ) {
  553. this.startflag = false
  554. }
  555. if (Date.parse(this.activityInfos.voteStartDate) < nowtime) {
  556. this.endflag = true
  557. }
  558. getItemForVotes({
  559. activityId: this.activityId,
  560. voteItemTypeDict: this.voteItemTypeDict,
  561. }).then((res) => {
  562. console.log(res, '列表数据')
  563. this.newlist = res.data.itemForVotes
  564. this.sortVotenumGet(this.newlist, 'id')
  565. this.nowDayTotalVotes = res.data.itemForVotes[0].totalVotes
  566. this.totalVotes = res.data.itemForVotes[0].totalVotes
  567. this.newlist.forEach((item, index) => {
  568. index += 1
  569. this.itemNums = index
  570. console.log(this.itemNums, '列表数量')
  571. // console.log('xxxxxxxxxxx',this.activityInfos.isRevoteOneitem)
  572. if (
  573. (this.activityInfos.isRevoteOneitem == 'No' &&
  574. item.totalVotesForOneItem > 0) ||
  575. item.nowDayTotalVotesForOneItem ==
  576. this.activityInfos.maxNumOneitemOneday ||
  577. this.activityInfos.maxNumTotal == this.totalVotes
  578. ) {
  579. this.$set(item, 'votecolor', '#949494')
  580. }
  581. })
  582. if (this.activityInfos.maxNumTotal == this.totalVotes) {
  583. this.maxVoteflag = true
  584. }
  585. // console.log('xxxxxxx',this.newlist)
  586. })
  587. })
  588. },
  589. toHome() {
  590. console.log('nihao')
  591. this.$router.push({ path: 'home' })
  592. },
  593. //tab栏
  594. select(index) {
  595. this.sign = index
  596. this.voteItemTypeDict = this.voteItemTypeDicts[index].value
  597. console.log(this.voteItemTypeDict, '========================')
  598. this.getActivityForVote()
  599. },
  600. //按字母排序
  601. getLocaleZh(array, property) {
  602. this.seeLittlePic = false
  603. array.sort(function (a, b) {
  604. return a[property].localeCompare(b[property], 'zh')
  605. })
  606. },
  607. //按票数排序
  608. sortVotenum(array, property) {
  609. this.seeLittlePic = true
  610. array.sort(function (a, b) {
  611. return b[property] - a[property]
  612. })
  613. },
  614. sortVotenumGet(array, property) {
  615. this.seeLittlePic = true
  616. array.sort(function (a, b) {
  617. return Math.random() - 0.5
  618. })
  619. },
  620. },
  621. }
  622. </script>
  623. <style scoped>
  624. * {
  625. padding: 0;
  626. margin: 0;
  627. box-sizing: border-box;
  628. /* vertical-align: text-top; */
  629. }
  630. html,
  631. body,
  632. #app {
  633. width: 100%;
  634. height: 100%;
  635. }
  636. .bigbox {
  637. position: relative;
  638. width: 1080px;
  639. margin: auto;
  640. padding-bottom: 65px;
  641. }
  642. .topimg {
  643. width: 1080px;
  644. /* height: 450px; */
  645. }
  646. .topimg > img {
  647. width: 100%;
  648. }
  649. .voteIntro {
  650. width: 1080px;
  651. /* height: 300px; */
  652. border-left: 2px dotted #cccccc;
  653. border-right: 2px dotted #cccccc;
  654. border-bottom: 2px dotted #cccccc;
  655. margin-top: 45px;
  656. padding: 0px 20px;
  657. }
  658. .voteButton {
  659. width: 100%;
  660. height: 115px;
  661. padding: 50px 0px 20px 0px;
  662. }
  663. .uservote {
  664. width: 50%;
  665. float: left;
  666. }
  667. .addupVote {
  668. display: inline-block;
  669. margin-left: 20px;
  670. }
  671. .addupVote > span {
  672. display: inline-block;
  673. margin-bottom: 8px;
  674. font-size: 26px;
  675. color: #468ff7;
  676. }
  677. .todayVote {
  678. display: inline-block;
  679. margin-left: 40px;
  680. }
  681. .todayVote > span {
  682. display: inline-block;
  683. margin-bottom: 8px;
  684. font-size: 26px;
  685. color: #e56d2c;
  686. }
  687. .maxdayVote {
  688. display: inline-block;
  689. margin-left: 40px;
  690. }
  691. .maxdayVote > span {
  692. display: inline-block;
  693. margin-bottom: 8px;
  694. font-size: 26px;
  695. color: #71b96c;
  696. }
  697. .maxVote {
  698. display: inline-block;
  699. margin-left: 40px;
  700. font-size: 26px;
  701. margin-bottom: 13px;
  702. color: red;
  703. }
  704. .votestart {
  705. width: 50%;
  706. height: 100%;
  707. float: left;
  708. font-size: 30px;
  709. padding-top: 24px;
  710. }
  711. .buttonA {
  712. width: 166px;
  713. height: 40px;
  714. float: right;
  715. /* margin-top: 25px; */
  716. border-radius: 10px;
  717. background-color: #f7b500;
  718. text-align: center;
  719. line-height: 40px;
  720. margin-right: 25px;
  721. color: white;
  722. cursor: pointer;
  723. }
  724. .buttonB {
  725. position: relative;
  726. width: 166px;
  727. height: 40px;
  728. float: right;
  729. /* margin-top: 25px; */
  730. border-radius: 10px;
  731. background-color: #44d7b6;
  732. text-align: center;
  733. line-height: 40px;
  734. color: white;
  735. cursor: pointer;
  736. }
  737. .buttonB > img {
  738. position: absolute;
  739. top: 10px;
  740. left: 20px;
  741. width: 20px;
  742. height: 20px;
  743. }
  744. .classify {
  745. display: inline-block;
  746. width: 140px;
  747. height: 40px;
  748. line-height: 40px;
  749. text-align: center;
  750. border: 1px dotted black;
  751. cursor: pointer;
  752. }
  753. .votebox1 {
  754. border-top: 2px dotted #cccccc;
  755. display: flex;
  756. flex-wrap: wrap;
  757. justify-content: space-around;
  758. }
  759. .votebox1:after {
  760. content: '';
  761. width: 70%;
  762. height: 0;
  763. visibility: hidden;
  764. }
  765. .votebox2 {
  766. border-top: 2px dotted #cccccc;
  767. display: flex;
  768. flex-wrap: wrap;
  769. justify-content: space-around;
  770. }
  771. .votebox2:after {
  772. content: '';
  773. width: 30%;
  774. height: 0;
  775. visibility: hidden;
  776. }
  777. .votelist {
  778. width: 30%;
  779. height: 320px;
  780. margin-top: 30px;
  781. }
  782. .voteCount {
  783. width: 45%;
  784. height: 40px;
  785. line-height: 40px;
  786. text-align: center;
  787. }
  788. .span {
  789. width: 18px;
  790. height: 18px;
  791. display: inline-block;
  792. border-radius: 5px;
  793. text-align: center;
  794. color: white;
  795. font-size: 10px;
  796. margin: 3px 8px 0px 0px;
  797. vertical-align: top;
  798. }
  799. .backButton {
  800. width: 100px;
  801. height: 30px;
  802. background-color: #b4d5ff;
  803. position: fixed;
  804. top: 0px;
  805. right: 2%;
  806. border-radius: 8px;
  807. text-align: center;
  808. line-height: 30px;
  809. cursor: pointer;
  810. }
  811. .voteButtonInfo {
  812. width: 200px;
  813. height: 80px;
  814. background: linear-gradient(90deg, #62bf00 0%, #47ab16 100%);
  815. color: #fff;
  816. vertical-align: center;
  817. line-height: 35px;
  818. position: fixed;
  819. top: 50%;
  820. left: 50%;
  821. transform: translateX(200%);
  822. cursor: pointer;
  823. }
  824. </style>