questionBankExplain.vue 30 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141
  1. <template>
  2. <view class="questionBank">
  3. <nav-bar title="解析"></nav-bar>
  4. <swiper
  5. class="swiper"
  6. :current="current"
  7. @change="swiperChange"
  8. :interval="interval"
  9. >
  10. <swiper-item v-for="(bank, bankIndex) in questionList" :key="bankIndex">
  11. <view class="pageContent">
  12. <view class="pad_8 titBox">
  13. <view class="firstLetter">
  14. <view class="leftLetters">
  15. <view class="btnType">
  16. <text v-if="bank.type == 1">单选</text>
  17. <text v-if="bank.type == 2">多选</text>
  18. <text v-if="bank.type == 3">判断</text>
  19. <text v-if="bank.type == 4">案例</text>
  20. <text v-if="bank.type == 5">简答</text>
  21. </view>
  22. <text>{{ bankIndex + 1 }}/{{ questionList.length }}</text>
  23. </view>
  24. <view style="color: #666; font-size: 28rpx"></view>
  25. <view class="leftLetters"></view>
  26. </view>
  27. <view class="titles">
  28. <rich-text :nodes="bank.content"></rich-text>
  29. </view>
  30. </view>
  31. <template v-if="bank.type == 1">
  32. <view class="pad_8 titBox no-margin">
  33. <view>
  34. <view
  35. v-for="(item, index) in bank.jsonStr"
  36. :key="index"
  37. class="lisSty"
  38. >
  39. <text
  40. :class="{
  41. right:
  42. item.optionsId == bank.ques ||
  43. item.optionsId == bank.ans,
  44. wrong:
  45. item.optionsId == bank.ques && bank.ques != bank.ans,
  46. }"
  47. class="activeTI"
  48. >{{ ast[index] }}</text
  49. >
  50. <view class="flex_auto">
  51. {{ item.content }}
  52. <view v-if="item.imgUrl">
  53. <image
  54. style="width: 600rpx"
  55. mode="widthFix"
  56. :src="$method.splitImgHost(item.imgUrl)"
  57. ></image>
  58. </view>
  59. </view>
  60. </view>
  61. </view>
  62. </view>
  63. <view>
  64. <view class="pad_8 answer">
  65. <view>正确答案:{{ ast[bank.ans - 1] }}</view>
  66. </view>
  67. <view class="pad_8 answerInfos">
  68. <view class="answerTitle">答案解析</view>
  69. <view class="answerContent">
  70. <rich-text :nodes="bank.analysisContent"></rich-text>
  71. </view>
  72. </view>
  73. </view>
  74. </template>
  75. <template v-if="bank.type == 2">
  76. <view class="pad_8 titBox no-margin">
  77. <view>
  78. <view
  79. v-for="(item, index) in bank.jsonStr"
  80. :key="index"
  81. class="lisSty"
  82. >
  83. <text
  84. :class="{
  85. right:
  86. bank.ques.indexOf(item.optionsId) != -1 ||
  87. bank.ans.indexOf(item.optionsId) != -1,
  88. wrong:
  89. bank.ques.indexOf(item.optionsId) != -1 &&
  90. bank.ans.indexOf(item.optionsId) == -1,
  91. }"
  92. class="activeTI"
  93. >{{ ast[index] }}</text
  94. >
  95. <view class="flex_auto">
  96. {{ item.content }}
  97. <view v-if="item.imgUrl">
  98. <image
  99. style="width: 600rpx"
  100. mode="widthFix"
  101. :src="$method.splitImgHost(item.imgUrl)"
  102. ></image>
  103. </view>
  104. </view>
  105. </view>
  106. </view>
  107. </view>
  108. <view>
  109. <view class="pad_8 answer">
  110. <view
  111. >正确答案:
  112. <text
  113. :key="ansItemIndex"
  114. v-for="(ansItem, ansItemIndex) in bank.ans"
  115. >{{ ast[ansItem - 1] }}</text
  116. >
  117. </view>
  118. </view>
  119. <view class="pad_8 answerInfos">
  120. <view class="answerTitle">答案解析</view>
  121. <view class="answerContent">
  122. <rich-text :nodes="bank.analysisContent"></rich-text>
  123. </view>
  124. </view>
  125. </view>
  126. </template>
  127. <template v-if="bank.type == 3">
  128. <view class="pad_8 titBox no-margin">
  129. <view>
  130. <view
  131. v-for="(item, index) in judge"
  132. :key="index"
  133. class="lisSty"
  134. >
  135. <text
  136. :class="{
  137. right: index == bank.ques || index == bank.ans,
  138. wrong: index == bank.ques && bank.ques != bank.ans,
  139. }"
  140. class="activeTI"
  141. >{{ ast[index] }}</text
  142. >
  143. <view class="flex_auto">
  144. {{ item }}
  145. <view v-if="item.imgUrl">
  146. <image
  147. style="width: 600rpx"
  148. mode="widthFix"
  149. :src="$method.splitImgHost(item.imgUrl)"
  150. ></image>
  151. </view>
  152. </view>
  153. </view>
  154. </view>
  155. </view>
  156. <view>
  157. <view class="pad_8 answer">
  158. <view>正确答案:{{ ast[bank.ans] }}</view>
  159. </view>
  160. <view class="pad_8 answerInfos">
  161. <view class="answerTitle">答案解析</view>
  162. <view class="answerContent">
  163. <rich-text :nodes="bank.analysisContent"></rich-text>
  164. </view>
  165. </view>
  166. </view>
  167. </template>
  168. <!-- 简答题 -->
  169. <template v-if="bank.type == 5">
  170. <view class="pad_8 titBox">
  171. <view>
  172. <view class="pad_8 answerInfos">
  173. <view class="answerTitle">答案解析:</view>
  174. <view class="answerContent">
  175. <rich-text :nodes="bank.analysisContent"></rich-text>
  176. </view>
  177. </view>
  178. </view>
  179. </view>
  180. </template>
  181. <!-- 案例题 -->
  182. <template v-if="bank.type == 4">
  183. <view class="tabs">
  184. <view
  185. class="tab"
  186. :class="{ current: tabIndex == bank.current }"
  187. :key="tabIndex"
  188. v-for="(tab, tabIndex) in bank.jsonStr"
  189. @click="tabSelect(tabIndex, bankIndex)"
  190. >
  191. 问题{{ tabIndex + 1 }}
  192. </view>
  193. </view>
  194. <view
  195. v-for="(ansItem, ansIndex) in bank.jsonStr"
  196. v-if="bank.current == ansIndex"
  197. :key="ansIndex"
  198. >
  199. <template v-if="ansItem.type == 1">
  200. <view class="pad_8 titBox">
  201. <view class="leftLetters">
  202. <view class="btnType">
  203. <text>单选</text>
  204. </view>
  205. </view>
  206. <view class="titles">
  207. <rich-text :nodes="ansItem.content"></rich-text>
  208. </view>
  209. <view>
  210. <view
  211. v-for="(option, childIndex) in ansItem.optionsList"
  212. :key="childIndex"
  213. class="lisSty"
  214. >
  215. <text
  216. :class="{
  217. right:
  218. option.optionsId == bank.ques[ansIndex] ||
  219. option.optionsId == bank.ans[ansIndex],
  220. wrong:
  221. option.optionsId == bank.ques[ansIndex] &&
  222. bank.ques[ansIndex] != bank.ans[ansIndex],
  223. }"
  224. class="activeTI"
  225. >{{ ast[childIndex] }}</text
  226. >
  227. <view class="flex_auto">
  228. <rich-text :nodes="option.content"></rich-text>
  229. <view v-if="option.imgUrl">
  230. <image
  231. style="width: 600rpx"
  232. mode="widthFix"
  233. :src="$method.splitImgHost(option.imgUrl)"
  234. ></image>
  235. </view>
  236. </view>
  237. </view>
  238. </view>
  239. </view>
  240. <view>
  241. <view class="pad_8 answer">
  242. <view>正确答案:{{ ast[bank.ans[ansIndex] - 1] }}</view>
  243. </view>
  244. <view class="pad_8 answerInfos">
  245. <view class="answerTitle">答案解析</view>
  246. <view class="answerContent">
  247. <rich-text :nodes="option.analysisContent"></rich-text>
  248. </view>
  249. </view>
  250. </view>
  251. </template>
  252. <template v-if="ansItem.type == 2">
  253. <view class="pad_8 titBox">
  254. <view class="leftLetters">
  255. <view class="btnType">
  256. <text>多选</text>
  257. </view>
  258. </view>
  259. <view class="titles">
  260. <rich-text :nodes="ansItem.content"></rich-text>
  261. </view>
  262. <view>
  263. <view
  264. v-for="(option, childindex) in ansItem.optionsList"
  265. :key="childindex"
  266. class="lisSty"
  267. >
  268. <text
  269. :class="{
  270. right: right(bankIndex, ansIndex, option),
  271. wrong: wrong(bankIndex, ansIndex, option),
  272. }"
  273. class="activeTI"
  274. >{{ ast[childindex] }}</text
  275. >
  276. <view class="flex_auto">
  277. <rich-text :nodes="option.content"></rich-text>
  278. <view v-if="option.imgUrl">
  279. <image
  280. style="width: 600rpx"
  281. mode="widthFix"
  282. :src="$method.splitImgHost(option.imgUrl)"
  283. ></image>
  284. </view>
  285. </view>
  286. </view>
  287. </view>
  288. </view>
  289. <view v-if="bank.ques[ansIndex]">
  290. <view class="pad_8 answer">
  291. <view
  292. >正确答案:
  293. <text
  294. :key="ansItemIndex1"
  295. v-for="(ansItem1, ansItemIndex1) in bank.ans[ansIndex]"
  296. >{{ ast[ansItem1 - 1] }}</text
  297. >
  298. </view>
  299. </view>
  300. <view class="pad_8 answerInfos">
  301. <view class="answerTitle">答案解析</view>
  302. <view class="answerContent">
  303. <rich-text :nodes="ansItem.analysisContent"></rich-text>
  304. </view>
  305. </view>
  306. </view>
  307. </template>
  308. <template v-if="ansItem.type == 3">
  309. <view class="pad_8 titBox">
  310. <view class="leftLetters">
  311. <view class="btnType">
  312. <text>判断</text>
  313. </view>
  314. </view>
  315. <view class="titles">
  316. <rich-text :nodes="ansItem.content"></rich-text>
  317. </view>
  318. <view>
  319. <view
  320. v-for="(option, childindex) in judge"
  321. :key="childindex"
  322. class="lisSty"
  323. >
  324. <text
  325. :class="{
  326. right:
  327. childindex == bank.ques[ansIndex] ||
  328. childindex == bank.ans[ansIndex],
  329. wrong:
  330. childindex == bank.ques[ansIndex] &&
  331. bank.ques[ansIndex] != bank.ans[ansIndex],
  332. }"
  333. class="activeTI"
  334. >{{ ast[childindex] }}</text
  335. >
  336. <view class="flex_auto">
  337. {{ option }}
  338. <view v-if="option.imgUrl">
  339. <image
  340. style="width: 600rpx"
  341. mode="widthFix"
  342. :src="$method.splitImgHost(option.imgUrl)"
  343. ></image>
  344. </view>
  345. </view>
  346. </view>
  347. </view>
  348. </view>
  349. <view>
  350. <view class="pad_8 answer">
  351. <view>正确答案:{{ ast[bank.ans[ansIndex]] }}</view>
  352. </view>
  353. <view class="pad_8 answerInfos">
  354. <view class="answerTitle">答案解析</view>
  355. <view class="answerContent">
  356. <rich-text :nodes="ansItem.analysisContent"></rich-text>
  357. </view>
  358. </view>
  359. </view>
  360. </template>
  361. <!-- 简答题 -->
  362. <template v-if="ansItem.type == 5">
  363. <view class="pad_8 titBox">
  364. <view class="leftLetters">
  365. <view class="btnType">
  366. <text>简答</text>
  367. </view>
  368. </view>
  369. <view class="titles">
  370. <rich-text :nodes="ansItem.content"></rich-text>
  371. </view>
  372. </view>
  373. <view>
  374. <view class="pad_8 answerInfos">
  375. <view class="answerTitle">答案解析</view>
  376. <view class="answerContent">
  377. <rich-text :nodes="ansItem.analysisContent"></rich-text>
  378. </view>
  379. </view>
  380. </view>
  381. </template>
  382. </view>
  383. </template>
  384. <view class="footer_btn">
  385. <view class="collect">
  386. <view>
  387. <image src="/static/icon/collect.png" mode=""></image>
  388. <view>收藏</view>
  389. </view>
  390. </view>
  391. <view class="flex_center" @click="openFooterTab">
  392. <view class="up-icon">
  393. <image src="/static/up.png"></image>
  394. </view>
  395. 答题卡
  396. </view>
  397. <view class="collect">
  398. <view>
  399. <image src="/static/jj.png" mode=""></image>
  400. <view>交卷</view>
  401. </view>
  402. </view>
  403. </view>
  404. </view>
  405. </swiper-item>
  406. </swiper>
  407. <u-popup v-model="show" mode="bottom" border-radius="14" height="680rpx">
  408. <view class="popupView">
  409. <view class="popupTops">
  410. <view class="topIcon"></view>
  411. 点击编号即可跳转至对应题目
  412. </view>
  413. <view class="popupContent">
  414. <scroll-view scroll-y="true" style="height: 506rpx">
  415. <view class="boxSty">
  416. <view
  417. v-for="(item, index) in questionList"
  418. :key="index"
  419. @click="changeIndex(index)"
  420. :class="{
  421. isRight: isRight(item, index),
  422. isWrong: isWrong(item, index),
  423. }"
  424. class="liListSty"
  425. >{{ index + 1 }}</view
  426. >
  427. </view>
  428. </scroll-view>
  429. </view>
  430. </view>
  431. </u-popup>
  432. <view class="dialog" v-if="showDialog">
  433. <view class="text">左右滑动切换上下题</view>
  434. <view class="btn" @click="hideDialog">我知道了</view>
  435. </view>
  436. </view>
  437. </template>
  438. <script>
  439. export default {
  440. data() {
  441. return {
  442. id: "",
  443. current: 0,
  444. showpopups: false,
  445. questionList: [],
  446. ast: ["A", "B", "C", "D", "E", "F", "G"],
  447. judge: ["错误", "正确"],
  448. show: false,
  449. showDialog: false,
  450. bankList: [],
  451. collectList: [],
  452. goodsId: "",
  453. recordId: "",
  454. chapterId: "",
  455. moduleId: "",
  456. };
  457. },
  458. onLoad(option) {
  459. this.id = option.id || "";
  460. this.goodsId = option.goodsid || "";
  461. this.chapterId = option.chapterId || "";
  462. this.moduleId = option.moduleId || "";
  463. this.recordId = option.recordId || "";
  464. let showDialog = uni.getStorageSync("showDialog");
  465. if (showDialog) {
  466. this.showDialog = false;
  467. } else {
  468. this.showDialog = true;
  469. uni.setStorageSync("showDialog", "1");
  470. }
  471. this.goodsQuestionList();
  472. },
  473. onUnload() {},
  474. methods: {
  475. /**
  476. * 是否有上传图片
  477. */
  478. hasImgs(bank) {
  479. return bank.ansText.imageList.length == 0;
  480. },
  481. goodsQuestionList() {
  482. //解析
  483. this.$api
  484. .goodsQuestionList({
  485. examId: this.id,
  486. })
  487. .then((res) => {
  488. res.data.data.forEach((item, index) => {
  489. if (typeof item.jsonStr == "string") {
  490. item.jsonStr = JSON.parse(item.jsonStr);
  491. if (item.type == 2) {
  492. //多选
  493. item.jsonStr.forEach((str) => {
  494. str.optionsId = "" + str.optionsId;
  495. });
  496. let arr = item.answerQuestion.split(",");
  497. arr.forEach((a, i) => {
  498. arr[i] = "" + a;
  499. });
  500. item.ans = arr;
  501. item.ques = item.ans;
  502. return;
  503. } else if (item.type == 5) {
  504. item.ansText = {
  505. text: item.analysisContent,
  506. imageList: [],
  507. };
  508. item.ques = {
  509. text: item.analysisContent,
  510. imageList: [],
  511. };
  512. return;
  513. } else if (item.type == 4) {
  514. console.log(item.jsonStr);
  515. item.ques = [];
  516. item.current = 0;
  517. let ansArr = [];
  518. item.jsonStr.forEach((json, index) => {
  519. if (json.type == 1) {
  520. ansArr[index] = json.answerQuestion;
  521. } else if (json.type == 2) {
  522. json.optionsList.forEach((str) => {
  523. str.optionsId = "" + str.optionsId;
  524. });
  525. let arr = json.answerQuestion.split(",");
  526. arr.forEach((a, i) => {
  527. arr[i] = "" + a;
  528. });
  529. ansArr[index] = arr;
  530. } else if (json.type == 3) {
  531. ansArr[index] = json.answerQuestion;
  532. } else if (json.type == 5) {
  533. ansArr[index] = {
  534. text: "",
  535. imageList: [],
  536. };
  537. json.ansText = {
  538. text: "",
  539. imageList: [],
  540. };
  541. }
  542. });
  543. item.ans = ansArr;
  544. item.ques = item.ans;
  545. return;
  546. }
  547. item.ans = item.answerQuestion;
  548. item.ques = item.ans;
  549. } else {
  550. item.ques = item.ans;
  551. }
  552. });
  553. this.questionList = res.data.data;
  554. });
  555. },
  556. openFooterTab() {
  557. this.show = true;
  558. },
  559. hideDialog() {
  560. this.showDialog = false;
  561. },
  562. changeIndex(index) {
  563. this.current = index;
  564. },
  565. swiperChange(e) {
  566. this.current = e.detail.current;
  567. },
  568. isRight(item, index) {
  569. //单选
  570. if (this.questionList[index].ques) {
  571. if (item.type == 1) {
  572. return this.questionList[index].ques == this.questionList[index].ans;
  573. //多选
  574. } else if (item.type == 2) {
  575. //每一项都相等
  576. return this.questionList[index].ans.every((item, i) => {
  577. return item == this.questionList[index].ques[i];
  578. });
  579. //判断
  580. } else if (item.type == 3) {
  581. return this.questionList[index].ques == this.questionList[index].ans;
  582. } else {
  583. return false;
  584. }
  585. } else {
  586. return false;
  587. }
  588. },
  589. right(bankIndex, ansIndex, option) {
  590. if (
  591. this.questionList[bankIndex].ques[ansIndex] &&
  592. this.questionList[bankIndex].ans[ansIndex]
  593. ) {
  594. if (
  595. this.questionList[bankIndex].ques[ansIndex].indexOf(
  596. option.optionsId
  597. ) != -1 ||
  598. this.questionList[bankIndex].ans[ansIndex].indexOf(
  599. option.optionsId
  600. ) != -1
  601. ) {
  602. return true;
  603. } else {
  604. return false;
  605. }
  606. } else {
  607. return false;
  608. }
  609. },
  610. wrong(bankIndex, ansIndex, option) {
  611. if (
  612. this.questionList[bankIndex].ques[ansIndex] &&
  613. this.questionList[bankIndex].ans[ansIndex]
  614. ) {
  615. if (
  616. this.questionList[bankIndex].ques[ansIndex].indexOf(
  617. option.optionsId
  618. ) != -1 &&
  619. this.questionList[bankIndex].ans[ansIndex].indexOf(
  620. option.optionsId
  621. ) == -1
  622. ) {
  623. return true;
  624. } else {
  625. return false;
  626. }
  627. } else {
  628. return false;
  629. }
  630. },
  631. isWrong(item, index) {
  632. if (this.questionList[index].ques) {
  633. //单选
  634. if (item.type == 1) {
  635. return this.questionList[index].ques != this.questionList[index].ans;
  636. //多选
  637. } else if (item.type == 2) {
  638. //每一项都相等
  639. return this.questionList[index].ans.some((item, i) => {
  640. return item != this.questionList[index].ques[i];
  641. });
  642. //判断
  643. } else if (item.type == 3) {
  644. return this.questionList[index].ques != this.questionList[index].ans;
  645. } else {
  646. return false;
  647. }
  648. } else {
  649. return false;
  650. }
  651. },
  652. tabSelect(index, bankindex) {
  653. this.$set(this.questionList[bankindex], "current", index);
  654. },
  655. },
  656. };
  657. </script>
  658. <style lang="scss" scoped>
  659. .questionBank {
  660. width: 100%;
  661. height: 100vh;
  662. display: flex;
  663. flex-direction: column;
  664. }
  665. .swiper {
  666. width: 100%;
  667. flex: 1;
  668. }
  669. .lisSty {
  670. margin-bottom: 16rpx;
  671. display: flex;
  672. align-items: center;
  673. .flex_auto {
  674. flex: 1;
  675. }
  676. }
  677. .activeTI {
  678. vertical-align: middle;
  679. display: inline-block;
  680. border: 1rpx solid #eee;
  681. border-radius: 50rpx;
  682. height: 48rpx;
  683. line-height: 46rpx;
  684. text-align: center;
  685. width: 48rpx;
  686. margin-right: 15rpx;
  687. color: #666;
  688. font-size: 30rpx;
  689. &.right {
  690. color: #fff;
  691. background: #36c75a;
  692. }
  693. &.wrong {
  694. color: #fff;
  695. background: #ff3b30;
  696. }
  697. &.checked {
  698. color: #fff;
  699. background: #007aff;
  700. }
  701. }
  702. .submit_checkbox {
  703. position: fixed;
  704. left: 0;
  705. right: 0;
  706. bottom: 120rpx;
  707. margin: 20rpx auto;
  708. width: 526rpx;
  709. height: 80rpx;
  710. background: rgba(0, 122, 255, 1);
  711. color: #fff;
  712. text-align: center;
  713. line-height: 80rpx;
  714. font-size: 30rpx;
  715. border-radius: 40rpx;
  716. }
  717. .titles {
  718. overflow: hidden;
  719. margin-bottom: 24rpx;
  720. }
  721. .titBox {
  722. padding: 41rpx 25rpx 24rpx 25rpx;
  723. }
  724. .titBox_title {
  725. padding: 21rpx;
  726. }
  727. .tabs {
  728. margin: 10rpx;
  729. display: flex;
  730. .tab {
  731. margin: 0 4rpx;
  732. padding: 10rpx 13rpx;
  733. text-align: center;
  734. color: #007aff;
  735. font-size: 28rpx;
  736. border-radius: 16rpx;
  737. background: #fff;
  738. &.current {
  739. color: #fff;
  740. background: #007aff;
  741. }
  742. }
  743. }
  744. .ans {
  745. margin: 8rpx 8rpx 8rpx;
  746. .ans_input {
  747. border-radius: 16rpx;
  748. background: #fff;
  749. .top {
  750. border-bottom: 1rpx solid #eeeeee;
  751. padding: 16rpx;
  752. display: flex;
  753. align-items: center;
  754. .icon {
  755. margin-right: 20rpx;
  756. width: 40rpx;
  757. height: 38rpx;
  758. }
  759. .progress {
  760. flex: 1;
  761. }
  762. .submit {
  763. width: 168rpx;
  764. height: 48rpx;
  765. line-height: 48rpx;
  766. text-align: center;
  767. color: #fff;
  768. font-size: 30rpx;
  769. background: #007aff;
  770. border-radius: 24rpx;
  771. &.disabled {
  772. opacity: 0.6;
  773. }
  774. }
  775. }
  776. .textarea {
  777. textarea {
  778. width: 100%;
  779. height: 287rpx;
  780. padding: 10rpx;
  781. }
  782. }
  783. .imgs {
  784. overflow: hidden;
  785. display: flex;
  786. width: 100%;
  787. .img {
  788. width: 104rpx;
  789. height: 104rpx;
  790. border-radius: 8rpx;
  791. position: relative;
  792. margin: 20rpx;
  793. text {
  794. position: absolute;
  795. right: -15rpx;
  796. top: -15rpx;
  797. width: 30rpx;
  798. height: 30rpx;
  799. text-align: center;
  800. line-height: 30rpx;
  801. color: #fff;
  802. background: #ff3b30;
  803. border-radius: 50%;
  804. }
  805. image {
  806. width: 100%;
  807. height: 100%;
  808. }
  809. }
  810. }
  811. }
  812. .ans_submit {
  813. padding: 16rpx;
  814. border-radius: 16rpx;
  815. background: #fff;
  816. .imgs {
  817. overflow: hidden;
  818. display: flex;
  819. width: 100%;
  820. .img {
  821. width: 104rpx;
  822. height: 104rpx;
  823. border-radius: 8rpx;
  824. position: relative;
  825. margin: 20rpx;
  826. image {
  827. width: 100%;
  828. height: 100%;
  829. }
  830. }
  831. }
  832. }
  833. }
  834. .leftLetters {
  835. display: flex;
  836. align-items: center;
  837. width: 220rpx;
  838. .btnType {
  839. padding: 5rpx 10rpx;
  840. border: 1rpx solid #007aff;
  841. border-radius: 10rpx;
  842. background-color: rgba(0, 122, 255, 0.1);
  843. font-size: 28rpx;
  844. color: #007aff;
  845. margin-right: 15rpx;
  846. }
  847. }
  848. .firstLetter {
  849. display: flex;
  850. justify-content: space-between;
  851. align-items: center;
  852. margin-bottom: 30rpx;
  853. }
  854. .popupView {
  855. height: 100%;
  856. padding-bottom: 100rpx;
  857. .popupTops {
  858. height: 77rpx;
  859. border-bottom: 1rpx solid #eee;
  860. text-align: center;
  861. line-height: 77rpx;
  862. font-size: 24rpx;
  863. color: #999;
  864. position: relative;
  865. .topIcon {
  866. position: absolute;
  867. top: 10rpx;
  868. left: 50%;
  869. transform: translateX(-50%);
  870. width: 80rpx;
  871. height: 8rpx;
  872. background-color: #999;
  873. border-radius: 4rpx;
  874. }
  875. }
  876. .popupContent {
  877. }
  878. }
  879. .pageContent {
  880. position: relative;
  881. background-color: #eaeef1;
  882. height: 100%;
  883. overflow-y: scroll;
  884. padding-top: 8rpx;
  885. padding-bottom: 100rpx;
  886. }
  887. .pad_8 {
  888. background-color: #fff;
  889. margin: 0rpx 8rpx 8rpx;
  890. border-radius: 16rpx;
  891. &.no-margin {
  892. margin-top: -16rpx;
  893. border-radius: 0 0 16rpx 16rpx;
  894. }
  895. }
  896. .answer {
  897. height: 80rpx;
  898. line-height: 80rpx;
  899. padding: 0rpx 24rpx;
  900. display: flex;
  901. align-items: center;
  902. justify-content: space-between;
  903. color: #666;
  904. font-size: 30rpx;
  905. }
  906. .footer_btn {
  907. background-color: #fff;
  908. z-index: 10078;
  909. position: fixed;
  910. bottom: 0rpx;
  911. display: flex;
  912. align-items: center;
  913. justify-content: space-between;
  914. width: 100%;
  915. height: 98rpx;
  916. padding: 0rpx 38rpx;
  917. border-top: 1rpx solid #eee;
  918. .flex_center {
  919. flex: 1;
  920. display: flex;
  921. justify-content: center;
  922. align-items: center;
  923. flex-direction: column;
  924. margin: 0 200rpx;
  925. font-size: 24rpx;
  926. color: #999999;
  927. .up-icon {
  928. margin-bottom: 18rpx;
  929. width: 100%;
  930. display: flex;
  931. justify-content: center;
  932. image {
  933. width: 58rpx;
  934. height: 21rpx;
  935. }
  936. }
  937. }
  938. .collect {
  939. visibility: hidden;
  940. width: 100rpx;
  941. &.show {
  942. visibility: visible;
  943. }
  944. > view {
  945. display: flex;
  946. flex-direction: column;
  947. align-items: center;
  948. justify-content: center;
  949. image {
  950. width: 32rpx;
  951. height: 32rpx;
  952. margin-bottom: 6rpx;
  953. }
  954. view {
  955. font-size: 24rpx;
  956. color: #999999;
  957. }
  958. }
  959. }
  960. }
  961. .boxSty {
  962. padding: 44rpx 41rpx 0rpx;
  963. }
  964. .liListSty {
  965. border: 1rpx solid #eeeeee;
  966. width: 88rpx;
  967. height: 88rpx;
  968. border-radius: 32rpx;
  969. text-align: center;
  970. line-height: 88rpx;
  971. color: #333;
  972. font-size: 32rpx;
  973. float: left;
  974. margin: 20rpx 23rpx;
  975. &.isRight {
  976. border: 1rpx solid #eeeeee;
  977. color: #fff;
  978. background: #36c75a;
  979. }
  980. &.isWrong {
  981. border: 1rpx solid #eeeeee;
  982. color: #fff;
  983. background: #ff3b30;
  984. }
  985. }
  986. .answerInfos {
  987. padding: 25rpx 25rpx 25rpx 23rpx;
  988. }
  989. .answerTitle {
  990. margin-bottom: 28rpx;
  991. color: #666;
  992. font-size: 30rpx;
  993. }
  994. .answerContent {
  995. font-size: 30rpx;
  996. color: #666;
  997. }
  998. .textChild {
  999. display: inline-block;
  1000. vertical-align: middle;
  1001. }
  1002. .dialog {
  1003. position: fixed;
  1004. left: 0;
  1005. top: 0;
  1006. width: 100%;
  1007. height: 100%;
  1008. background-color: rgba(0, 0, 0, 0.8);
  1009. display: flex;
  1010. flex-direction: column;
  1011. align-items: center;
  1012. justify-content: center;
  1013. z-index: 20000;
  1014. .pointer {
  1015. width: 338rpx;
  1016. height: 240rpx;
  1017. }
  1018. .text {
  1019. font-size: 32rpx;
  1020. color: #ffffff;
  1021. text-align: center;
  1022. }
  1023. .btn {
  1024. width: 242rpx;
  1025. height: 82rpx;
  1026. border: 2rpx solid #ffffff;
  1027. border-radius: 16rpx;
  1028. text-align: center;
  1029. line-height: 82rpx;
  1030. margin: 41rpx auto;
  1031. color: #fff;
  1032. font-size: 32rpx;
  1033. }
  1034. }
  1035. .popboxs {
  1036. width: 100%;
  1037. height: 100%;
  1038. display: flex;
  1039. flex-direction: column;
  1040. align-items: center;
  1041. }
  1042. .classTops {
  1043. flex-shrink: 0;
  1044. padding: 39rpx 0rpx 4rpx;
  1045. font-weight: bold;
  1046. color: #333;
  1047. font-size: 30rpx;
  1048. }
  1049. .textStys {
  1050. width: 100%;
  1051. flex: 1;
  1052. padding: 36rpx;
  1053. }
  1054. .classFootsty {
  1055. flex-shrink: 0;
  1056. display: flex;
  1057. align-items: center;
  1058. justify-content: center;
  1059. padding: 10rpx 0rpx 40rpx;
  1060. .btnsty {
  1061. width: 200rpx;
  1062. height: 80rpx;
  1063. border-radius: 40rpx;
  1064. font-weight: bold;
  1065. font-size: 30rpx;
  1066. text-align: center;
  1067. line-height: 80rpx;
  1068. }
  1069. .btns1 {
  1070. background-color: #f5f5f5;
  1071. color: #007aff;
  1072. }
  1073. .btns2 {
  1074. margin-left: 40rpx;
  1075. background-color: #007aff;
  1076. color: #ffffff;
  1077. }
  1078. }
  1079. </style>