index.vue 20 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765
  1. <template>
  2. <view @touchstart="touchStart" @touchend="touchEnd" class="box">
  3. <nav-bar :title="navTitle"> </nav-bar>
  4. <!-- <view style="text-align:center;">
  5. <van-count-down :time="time"></van-count-down>
  6. </view> -->
  7. <m-do-topic
  8. v-if="isGetQuery"
  9. type="mi"
  10. :bottomFunc="['previous', 'next', 'score', 'explain', 'selectCatalogue']"
  11. :midFunc="['collect', 'readQuestion', 'readQuestionAndAnswer', 'skill']"
  12. :trueNum.sync="trueNum"
  13. :falseNum.sync="falseNum"
  14. :query="query"
  15. :problemListIndex.sync="problemListIndex"
  16. :problemListTotal.sync="problemListTotal"
  17. ></m-do-topic>
  18. <!-- <view class="function-list">
  19. <div class="function-item">
  20. <van-icon name="star-o" size="25px" />
  21. <span>收藏</span>
  22. </div>
  23. <div
  24. @click="readQuestion(problemList[problemListIndex].issuemp3)"
  25. class="function-item"
  26. >
  27. <van-icon name="bullhorn-o" size="25px" />
  28. <span>读题</span>
  29. </div>
  30. </view> -->
  31. <van-overlay
  32. @click-overlay="
  33. () => {
  34. selectProblemListVisible = false;
  35. }
  36. "
  37. :show="selectProblemListVisible"
  38. >
  39. <view class="select-problem">
  40. <view class="problem-index">
  41. <view class="problem-header">
  42. <view class="problem-header-left">
  43. <view class="problem-dui">
  44. <icon
  45. class="icon-box-img"
  46. color="#06c05f"
  47. type="success"
  48. size="18"
  49. ></icon>
  50. <text
  51. style="color: #06c05f; font-size: 14px; margin-left: 8rpx"
  52. >{{ trueNum }}</text
  53. >
  54. </view>
  55. <view class="problem-cuo" style="margin-left: 16rpx">
  56. <icon class="icon-box-img" type="clear" size="18"></icon>
  57. <text style="color: red; font-size: 14px; margin-left: 8rpx">{{
  58. falseNum
  59. }}</text>
  60. </view>
  61. </view>
  62. <view class="problem-header-right">
  63. <van-icon size="18px" name="description" />
  64. <view style="font-size: 14px; display: flex; align-items: center"
  65. >{{ problemListIndex + 1 }}/{{ problemListTotal }}</view
  66. >
  67. </view>
  68. </view>
  69. <view class="problem-body">
  70. <view class="problem-listBody">
  71. <view
  72. class="problem-listItem"
  73. :key="index"
  74. v-for="(item, index) in problemList"
  75. :class="{
  76. 'problem-listItem_dui':
  77. item.userAnswer.length && item.userAnswer == item.answer,
  78. 'problem-listItem_cuo':
  79. item.userAnswer.length && item.userAnswer !== item.answer,
  80. }"
  81. >
  82. {{ index + 1 }}
  83. </view>
  84. </view>
  85. </view>
  86. <view class="problem-bottom">
  87. <view
  88. @click="
  89. () => {
  90. selectProblemListVisible = false;
  91. }
  92. "
  93. class="problem-bottom-sure"
  94. >确定
  95. </view>
  96. <view
  97. @click="
  98. () => {
  99. selectProblemListVisible = false;
  100. }
  101. "
  102. class="problem-bottom-close"
  103. >
  104. 关闭</view
  105. >
  106. </view>
  107. </view>
  108. </view>
  109. </van-overlay>
  110. </view>
  111. </template>
  112. <script>
  113. import navBar from "./components/navBar.vue";
  114. import api from "@/api/index";
  115. import utils from "@/utils/index";
  116. import explainJs from "./components/explainJs.vue";
  117. import tabbar from "./components/tabbar.vue";
  118. import mRadio from "@/components/m-radio/m-radio.vue";
  119. import mRadioGroup from "@/components/m-radio-group/m-radio-group.vue";
  120. import mCheckbox from "@/components/m-checkbox/m-checkbox.vue";
  121. import mCheckboxGroup from "@/components/m-checkbox-group/m-checkbox-group.vue";
  122. import mDoTopic from "@/components/m-do-topic/m-do-topic.vue";
  123. export default {
  124. data() {
  125. return {
  126. query: {
  127. cert: "",
  128. vehicle: "",
  129. subject: "",
  130. title: "",
  131. },
  132. isGetQuery:false,
  133. gsMap: {
  134. xc: "小车",
  135. hc: "货车",
  136. mtc: "摩托车",
  137. kc: "客车",
  138. },
  139. trueNum: 0,
  140. falseNum: 0,
  141. currentOptions: [
  142. {
  143. selected: false,
  144. value: "",
  145. isAnswer: false,
  146. },
  147. {},
  148. ],
  149. explainJsVisible: false,
  150. selectProblemListVisible: false,
  151. time: 45 * 60 * 1000,
  152. problemListTotal: 1,
  153. touchx: 0,
  154. touchy: 0,
  155. problemList: [
  156. {
  157. questionType: 2,
  158. answer: "×",
  159. answerkeyword: "",
  160. answermp3:
  161. "https://t1-1305573081.file.myqcloud.com/kt/answer_mp3/answer1389.mp3",
  162. classIssue: "54",
  163. classIssueName: "车内开关/装置",
  164. classSort: 16,
  165. createTime: "2022-04-21 13:33:46",
  166. excellIssue: "23",
  167. excellIssueName: "必学题三",
  168. excellSort: 4,
  169. explainGif:
  170. "https://t1-1305573081.file.myqcloud.com/kt/explain_gif/explain1389.gif",
  171. explainJq:
  172. "看图答题:红色圆圈套在杆子中间.答对;不在中间或没有圆圈的.答错。",
  173. explainJs:
  174. "图中所示为左右转向灯开关转向灯操作:上提是右转向灯亮起,下压是左转向灯。",
  175. explainMp3:
  176. "https://t1-1305573081.file.myqcloud.com/kt/explain_mp3/explain1389.mp3",
  177. explainjsmp3:
  178. "https://t1-1305573081.file.myqcloud.com/kt/explain_js_mp3/explainJS1389.mp3",
  179. id: 831,
  180. idKt: 1389,
  181. idYdt: 950,
  182. image:
  183. "https://t1-1305573081.file.myqcloud.com/kt/image/image1389.png",
  184. imageYdt:
  185. "https://t1-1305573081.file.myqcloud.com/kt/image_ydt/5eb4d75agw1e291vmniovj.jpg",
  186. issue: "将转向灯开关向上提,左转向灯亮。",
  187. issuemp3:
  188. "https://t1-1305573081.file.myqcloud.com/kt/issue_mp3/issue1389.mp3",
  189. liceBus: "1",
  190. liceCar: "1",
  191. liceMoto: null,
  192. liceTruck: "1",
  193. number: 831,
  194. opts: "√-×",
  195. optsArr: ["√", "×"],
  196. placeIssue: null,
  197. placeIssueName: null,
  198. placeSort: null,
  199. questionType: 1,
  200. sequeIssue: "7",
  201. sequeIssueName: "机械仪表",
  202. sequeSort: 25,
  203. skillkeyword: "没有圆圈-答错",
  204. subject: 1,
  205. titlekeyword: "",
  206. updateTime: "2022-04-22 13:43:07",
  207. userAnswer: [],
  208. },
  209. ],
  210. problemListIndex: 0,
  211. };
  212. },
  213. filters: {
  214. questionType: function (value) {
  215. let question = "";
  216. switch (value) {
  217. case 1:
  218. case "1":
  219. question = "判断题";
  220. break;
  221. case 2:
  222. case "2":
  223. question = "单选题";
  224. break;
  225. case 3:
  226. case "3":
  227. question = "多选题";
  228. break;
  229. }
  230. return question;
  231. },
  232. },
  233. methods: {
  234. touchStart(e) {
  235. var that = this;
  236. (this.touchx = e.changedTouches[0].clientX),
  237. (this.touchy = e.changedTouches[0].clientY);
  238. },
  239. touchEnd(e) {
  240. console.log(e);
  241. var that = this;
  242. let x = e.changedTouches[0].clientX;
  243. let y = e.changedTouches[0].clientY;
  244. let turn = "";
  245. if (x - that.touchx > 50 && Math.abs(y - that.touchy) < 50) {
  246. //右滑
  247. turn = "right";
  248. this.problemListIndex <= 0
  249. ? uni.showToast({
  250. title: "到底了",
  251. icon: "none",
  252. })
  253. : this.problemListIndex--;
  254. } else if (x - that.touchx < -50 && Math.abs(y - that.touchy) < 50) {
  255. //左滑
  256. turn = "left";
  257. this.problemListIndex >= this.problemListTotal - 1
  258. ? uni.showToast({
  259. title: "到底了",
  260. icon: "none",
  261. })
  262. : this.problemListIndex++;
  263. }
  264. if (y - that.touchy > 50 && Math.abs(x - that.touchx) < 50) {
  265. //下滑
  266. turn = "down";
  267. } else if (y - that.touchy < -50 && Math.abs(x - that.touchx) < 50) {
  268. //上滑
  269. turn = "up";
  270. }
  271. //根据方向进行操作
  272. if (turn == "down") {
  273. //下滑触发操作
  274. }
  275. console.log(turn);
  276. },
  277. isRightAnswer(item) {
  278. if (
  279. typeof item.userAnswer == "object" &&
  280. Array.isArray(item.userAnswer)
  281. ) {
  282. let answerArr = item.answer.split("-");
  283. answerArr.sort((a, b) => {
  284. return a - b;
  285. });
  286. item.userAnswer.sort((a, b) => {
  287. return a - b;
  288. });
  289. return answerArr.join("-") === item.userAnswer.join("-");
  290. } else if (typeof item.userAnswer == "string") {
  291. return item.answer === item.userAnswer;
  292. }
  293. },
  294. submitExam(e) {
  295. let score = 0;
  296. let query = this.query;
  297. this.problemList.forEach((item, index) => {
  298. if (
  299. typeof item.userAnswer == "object" &&
  300. Array.isArray(item.userAnswer)
  301. ) {
  302. let answerArr = item.answer.split("-");
  303. answerArr.sort((a, b) => {
  304. return a - b;
  305. });
  306. item.userAnswer.sort((a, b) => {
  307. return a - b;
  308. });
  309. if (answerArr.join("-") === item.userAnswer.join("-")) {
  310. score = score + 1;
  311. }
  312. } else if (typeof item.userAnswer == "string") {
  313. item.answer === item.userAnswer ? (score = score + 1) : "";
  314. }
  315. });
  316. uni.showModal({
  317. title: "是否交卷",
  318. content: "交卷后不可再修改了",
  319. success() {
  320. uni.navigateTo({
  321. url:
  322. "/otherPages/mockExamEnd/index?" +
  323. utils.mapToUrlQuery({
  324. score,
  325. ...query,
  326. }),
  327. });
  328. },
  329. fail() {},
  330. });
  331. },
  332. goBeforeTopics() {
  333. if (this.problemListIndex <= 0) {
  334. uni.showToast({
  335. title: "到底了",
  336. icon: "none",
  337. });
  338. return;
  339. }
  340. this.problemListIndex = this.problemListIndex - 1;
  341. },
  342. goNextTopics() {
  343. if (this.problemListIndex >= this.problemList.length - 1) {
  344. uni.showToast({
  345. title: "到底了",
  346. icon: "none",
  347. });
  348. return;
  349. }
  350. this.problemListIndex = this.problemListIndex + 1;
  351. },
  352. readQuestion(e) {
  353. let globalAudio = utils.wxUtils.getGlobAudio();
  354. if (globalAudio) {
  355. globalAudio.src = e;
  356. globalAudio.stop();
  357. globalAudio.play();
  358. }
  359. },
  360. confirmMult(e) {
  361. this.$set(this.problemList[this.problemListIndex], "isCompleted", true);
  362. if (
  363. JSON.stringify(
  364. this.problemList[this.problemListIndex].answer.split("-").sort()
  365. ) ===
  366. JSON.stringify(
  367. this.problemList[this.problemListIndex].userAnswer.sort()
  368. )
  369. ) {
  370. this.trueNum++;
  371. } else {
  372. this.falseNum++;
  373. api.exam.studentQuestionWrong({
  374. questionId: this.problemList[this.problemListIndex].id,
  375. carType: this.gsMap[this.query.gs],
  376. km: this.query.subject === "4" ? "科目四" : "科目一",
  377. });
  378. }
  379. // this.problemList[this.problemListIndex]
  380. },
  381. changeCheckboxGroup(e) {
  382. //console.log(e);
  383. // this.$set()
  384. // #ifdef MP-WEIXIN
  385. this.$set(
  386. this.problemList[this.problemListIndex],
  387. "userAnswer",
  388. e.detail
  389. );
  390. this.problemList[this.problemListIndex].optsArr.forEach((item) => {
  391. if (e.detail.includes(item.value)) {
  392. item.selected = true;
  393. } else {
  394. item.selected = false;
  395. }
  396. });
  397. //#endif
  398. // #ifdef MP-TOUTIAO
  399. this.$set(
  400. this.problemList[this.problemListIndex],
  401. "userAnswer",
  402. e.detail
  403. );
  404. this.problemList[this.problemListIndex].optsArr.forEach((item, index) => {
  405. if (e.detail.includes(item.value)) {
  406. item.selected = true;
  407. this.$set(
  408. this.problemList[this.problemListIndex].optsArr[index],
  409. "selected",
  410. true
  411. );
  412. } else {
  413. item.selected = false;
  414. this.$set(
  415. this.problemList[this.problemListIndex].optsArr[index],
  416. "selected",
  417. false
  418. );
  419. }
  420. });
  421. //#endif
  422. if (
  423. this.problemList[this.problemListIndex].answer
  424. .split("-")
  425. .sort()
  426. .toString() ===
  427. this.problemList[this.problemListIndex].userAnswer.sort().toString()
  428. ) {
  429. this.trueNum = this.trueNum + 1;
  430. } else {
  431. this.falseNum = this.falseNum + 1;
  432. }
  433. },
  434. changeRadioGroup(e) {
  435. console.log(e, "changeRadioGroup");
  436. // #ifdef MP-WEIXIN
  437. this.$set(this.problemList[this.problemListIndex], "isCompleted", true);
  438. this.$set(
  439. this.problemList[this.problemListIndex],
  440. "userAnswer",
  441. e.detail.value
  442. );
  443. e.detail.selected = true;
  444. this.$set(
  445. this.problemList[this.problemListIndex].optsArr,
  446. e.detail.index,
  447. e.detail
  448. );
  449. e.detail.value === this.problemList[this.problemListIndex].answer
  450. ? (this.trueNum = this.trueNum + 1)
  451. : (this.falseNum = this.falseNum + 1);
  452. //#endif
  453. // #ifdef MP-TOUTIAO
  454. this.$set(this.problemList[this.problemListIndex], "isCompleted", true);
  455. this.$set(
  456. this.problemList[this.problemListIndex],
  457. "userAnswer",
  458. e.detail
  459. );
  460. this.problemList[this.problemListIndex].optsArr.forEach((item, index) => {
  461. if (e.detail === item.value) {
  462. item.selected = true;
  463. this.$set(
  464. this.problemList[this.problemListIndex].optsArr[index],
  465. "selected",
  466. true
  467. );
  468. } else {
  469. item.selected = false;
  470. this.$set(
  471. this.problemList[this.problemListIndex].optsArr[index],
  472. "selected",
  473. false
  474. );
  475. }
  476. });
  477. if (e.detail.value === this.problemList[this.problemListIndex].answer) {
  478. this.trueNum = this.trueNum + 1;
  479. } else {
  480. this.falseNum = this.falseNum + 1;
  481. api.exam.studentQuestionWrong({
  482. questionId: this.problemList[this.problemListIndex].id,
  483. carType: this.gsMap[this.query.gs],
  484. km: this.query.subject === "4" ? "科目四" : "科目一",
  485. });
  486. }
  487. //#endif
  488. },
  489. changeCheckbox(e) {
  490. //specify
  491. // console.log(e);
  492. },
  493. numberToLetter(index) {
  494. index = Number(index);
  495. return String.fromCharCode(index + 65);
  496. },
  497. },
  498. onLoad(query) {
  499. let that = this;
  500. this.query = query;
  501. this.isGetQuery =true;
  502. },
  503. computed: {
  504. //liceCar=1&liceTruck=&liceBus=&liceMoto=&name=科目一&cert=C1/C2/C3&vehicle=轿车&subject=1&title=顺序练习&sort=3
  505. navTitle() {
  506. let subjectName = this.query.subject == 1 ? "科目一" : "科目四";
  507. return `(${this.query.cert})/${subjectName}/${this.query.title}`;
  508. },
  509. },
  510. watch: {
  511. problemListIndex: {
  512. handler(newValue, oldValue) {},
  513. immediate: true,
  514. },
  515. },
  516. components: {
  517. mDoTopic,
  518. navBar,
  519. explainJs,
  520. tabbar,
  521. mRadio,
  522. mRadioGroup,
  523. mCheckbox,
  524. mCheckboxGroup,
  525. },
  526. };
  527. </script>
  528. <style lang="scss" scoped>
  529. .select-problem {
  530. display: flex;
  531. width: 100vw;
  532. height: 100vh;
  533. align-content: flex-end;
  534. align-items: flex-end;
  535. .problem-index {
  536. width: 100vw;
  537. height: 650rpx;
  538. background: #fff;
  539. border-radius: 16rpx;
  540. padding-top: 50rpx;
  541. }
  542. .problem-bottom {
  543. width: 100%;
  544. display: flex;
  545. height: 80rpx;
  546. .problem-bottom-sure {
  547. width: 50%;
  548. height: 100%;
  549. border-right: 2rpx solid #d8d8d8;
  550. border-top: 2rpx solid #d8d8d8;
  551. text-align: center;
  552. color: #498ef5;
  553. line-height: 80rpx;
  554. }
  555. .problem-bottom-close {
  556. width: 50%;
  557. height: 100%;
  558. color: red;
  559. text-align: center;
  560. border-top: 2rpx solid #d8d8d8;
  561. line-height: 80rpx;
  562. }
  563. }
  564. .problem-header {
  565. display: flex;
  566. justify-content: space-between;
  567. align-content: center;
  568. align-items: center;
  569. padding: 0rpx 30rpx;
  570. .problem-header-left {
  571. display: flex;
  572. .problem-dui {
  573. display: flex;
  574. align-content: center;
  575. align-items: center;
  576. }
  577. .problem-cuo {
  578. display: flex;
  579. align-content: center;
  580. align-items: center;
  581. }
  582. }
  583. .problem-header-right {
  584. display: flex;
  585. align-content: center;
  586. }
  587. }
  588. .problem-body {
  589. height: 480rpx;
  590. padding-top: 30rpx;
  591. overflow-y: scroll;
  592. .problem-listBody {
  593. display: inline-block;
  594. overflow: hidden;
  595. .problem-listItem {
  596. display: inline-block;
  597. width: 99rpx;
  598. height: 99rpx;
  599. line-height: 100rpx;
  600. text-align: center;
  601. border-radius: 50%;
  602. border: 2rpx #d8d8d8 solid;
  603. margin-bottom: 15rpx;
  604. margin-left: 13rpx;
  605. margin-right: 13rpx;
  606. }
  607. .problem-listItem_dui {
  608. background: #01c18d;
  609. }
  610. .problem-listItem_cuo {
  611. background: red;
  612. }
  613. }
  614. }
  615. }
  616. .tabbar-item {
  617. display: flex;
  618. flex-wrap: wrap;
  619. justify-content: center;
  620. text-align: center;
  621. align-content: space-around;
  622. align-items: space-around;
  623. }
  624. .divider {
  625. width: 100%;
  626. height: 24rpx;
  627. background-color: #f2f3f5;
  628. }
  629. .h-full {
  630. height: 100%;
  631. }
  632. .inline-block {
  633. display: inline-block;
  634. }
  635. .flex-center {
  636. display: flex;
  637. justify-content: center;
  638. width: 100%;
  639. }
  640. .function-list {
  641. width: 100%;
  642. font-size: 13px;
  643. display: flex;
  644. justify-content: space-around;
  645. flex-wrap: wrap;
  646. padding: 15px;
  647. box-sizing: border-box;
  648. .function-item {
  649. margin-bottom: 20px;
  650. width: 30%;
  651. display: flex;
  652. flex-direction: column;
  653. align-items: center;
  654. font-size: 13px;
  655. font-weight: 400;
  656. color: #8a9099;
  657. span {
  658. margin-top: 5px;
  659. }
  660. }
  661. }
  662. .box {
  663. width: 100%;
  664. height: 100vh;
  665. background: #fff;
  666. .look-answer {
  667. margin-top: 30rpx;
  668. padding: 0 12rpx;
  669. background: #f2f3f5;
  670. font-size: 36rpx;
  671. line-height: 62rpx;
  672. }
  673. .last-subject {
  674. transform: rotate(90deg);
  675. }
  676. .problem-select {
  677. display: flex;
  678. align-content: center;
  679. align-items: center;
  680. margin-top: 15rpx;
  681. padding-left: 30rpx;
  682. }
  683. .problem-box {
  684. padding: 15rpx;
  685. padding-bottom: 70rpx;
  686. background: #fff;
  687. /deep/ .van-checkbox {
  688. padding-bottom: 15rpx;
  689. }
  690. /deep/ .van-radio {
  691. padding-bottom: 15rpx;
  692. }
  693. .problem-type {
  694. padding-left: 10rpx;
  695. padding-right: 10rpx;
  696. padding-top: 4rpx;
  697. padding-bottom: 4rpx;
  698. font-size: 24rpx;
  699. border-radius: 16rpx 16rpx 0 16rpx;
  700. background: #498ef5;
  701. margin-right: 10rpx;
  702. color: #fff;
  703. font-size: 32rpx;
  704. }
  705. .problem-issue {
  706. font-size: 42rpx;
  707. font-weight: 600;
  708. }
  709. .problem-ops {
  710. margin-top: 30rpx;
  711. padding-left: 30rpx;
  712. .problem-checkbox {
  713. height: 100rpx;
  714. }
  715. }
  716. .problem-op {
  717. width: 75rpx;
  718. height: 75rpx;
  719. line-height: 75rpx;
  720. border-radius: 50%;
  721. text-align: center;
  722. overflow: hidden;
  723. background: #fff;
  724. box-shadow: 0px 4rpx 12rpx rgba(0, 0, 0, 0.16);
  725. }
  726. .problem-op_green {
  727. width: 75rpx;
  728. height: 75rpx;
  729. line-height: 75rpx;
  730. border-radius: 50%;
  731. text-align: center;
  732. overflow: hidden;
  733. background: #01c18d;
  734. box-shadow: 0px 4rpx 12rpx rgba(0, 0, 0, 0.16);
  735. }
  736. .problem-opAnswer {
  737. font-size: 16px;
  738. margin-left: 12rpx;
  739. }
  740. .problem-op_selected {
  741. background: #498ef5;
  742. }
  743. .problem-img {
  744. width: 100%;
  745. margin-top: 20rpx;
  746. display: flex;
  747. justify-content: center;
  748. image {
  749. margin: 0 auto;
  750. }
  751. }
  752. }
  753. }
  754. </style>