index.vue 63 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780
  1. <template>
  2. <div class="course-exam">
  3. <Header></Header>
  4. <section class="section">
  5. <div class="container">
  6. <div class="section__header">
  7. <!-- <el-breadcrumb separator="/">
  8. <el-breadcrumb-item
  9. v-for="(item, index) in $route.matched"
  10. :key="index"
  11. :to="{ path: item.path }"
  12. >{{ item.name }}</el-breadcrumb-item
  13. >
  14. </el-breadcrumb> -->
  15. </div>
  16. <div class="section__body">
  17. <div class="explain-record">
  18. <div class="explain-record__body">
  19. <div class="left-box">
  20. <Header-tab-box
  21. :num="questionOverNum(true)"
  22. :allNum="questionList.length"
  23. @prevQuestion="prevQuestion"
  24. @nextQuestion="nextQuestion"
  25. ></Header-tab-box>
  26. <div class="left-box__body">
  27. <template v-for="(question, questionIndex) in questionList">
  28. <div
  29. class="question"
  30. v-if="question.type == 1 && current == questionIndex"
  31. :key="questionIndex"
  32. >
  33. <div class="question__title">
  34. {{ questionIndex + 1 }}、单选题
  35. </div>
  36. <div
  37. class="question__desc"
  38. v-html="question.content"
  39. ></div>
  40. <div class="question__content">
  41. <div class="question-list" v-if="!question.ques">
  42. <div
  43. class="radio"
  44. v-for="(item, index) in question.jsonStr"
  45. :key="index"
  46. >
  47. <div>
  48. {{ ast[index] }}. {{ item.content }}
  49. <div v-if="item.imgUrl">
  50. <img
  51. style="max-width: 100%"
  52. :src="$tools.splitImgHost(item.imgUrl)"
  53. alt=""
  54. />
  55. </div>
  56. </div>
  57. </div>
  58. </div>
  59. <div class="question-list" v-if="question.ques">
  60. <div
  61. class="radio"
  62. :class="{
  63. right:
  64. item.optionsId == question.ques ||
  65. item.optionsId == question.ans,
  66. wrong:
  67. item.optionsId == question.ques &&
  68. question.ques != question.ans,
  69. }"
  70. v-for="(item, index) in question.jsonStr"
  71. :key="index"
  72. >
  73. <div>
  74. {{ ast[index] }}. {{ item.content }}
  75. <div v-if="item.imgUrl">
  76. <img
  77. style="max-width: 100%"
  78. :src="$tools.splitImgHost(item.imgUrl)"
  79. alt=""
  80. />
  81. </div>
  82. </div>
  83. </div>
  84. </div>
  85. <div class="answer-list">
  86. <div class="answer-list__left">
  87. 正确答案:{{ ast[question.ans - 1] }}
  88. </div>
  89. <!-- <div class="answer-list__left">
  90. 我的答案:{{ ast[question.ques - 1] }}
  91. </div> -->
  92. </div>
  93. <div class="explain-list">
  94. <div class="explain-list__header">答案解析:</div>
  95. <div
  96. class="explain-list__body"
  97. v-html="question.analysisContent"
  98. ></div>
  99. </div>
  100. </div>
  101. <div class="question__btns"></div>
  102. </div>
  103. <div
  104. class="question"
  105. v-if="question.type == 2 && current == questionIndex"
  106. :key="questionIndex"
  107. >
  108. <div class="question__title">
  109. {{ questionIndex + 1 }}、多选题
  110. </div>
  111. <div
  112. class="question__desc"
  113. v-html="question.content"
  114. ></div>
  115. <div class="question__content">
  116. <div class="question-list" v-if="!question.ques">
  117. <el-checkbox
  118. disabled
  119. class="checkbox"
  120. v-for="(item, index) in question.jsonStr"
  121. :key="index"
  122. :label="item.optionsId"
  123. v-model="item.checked"
  124. >
  125. <div>
  126. {{ ast[index] }}. {{ item.content }}
  127. <div v-if="item.imgUrl">
  128. <img
  129. style="max-width: 100%"
  130. :src="$tools.splitImgHost(item.imgUrl)"
  131. alt=""
  132. />
  133. </div>
  134. </div>
  135. </el-checkbox>
  136. </div>
  137. <div class="question-list" v-if="question.ques">
  138. <el-checkbox
  139. disabled
  140. class="checkbox"
  141. :class="{
  142. right:
  143. question.ques.indexOf(item.optionsId) != -1 ||
  144. question.ans.indexOf(item.optionsId) != -1,
  145. wrong:
  146. question.ques.indexOf(item.optionsId) != -1 &&
  147. question.ans.indexOf(item.optionsId) == -1,
  148. }"
  149. v-for="(item, index) in question.jsonStr"
  150. :key="index"
  151. :label="item.optionsId"
  152. v-model="item.checked"
  153. >
  154. <div>
  155. {{ ast[index] }}. {{ item.content }}
  156. <div v-if="item.imgUrl">
  157. <img
  158. style="max-width: 100%"
  159. :src="$tools.splitImgHost(item.imgUrl)"
  160. alt=""
  161. />
  162. </div>
  163. </div>
  164. </el-checkbox>
  165. </div>
  166. <div class="answer-list">
  167. <div class="answer-list__left">
  168. 正确答案:
  169. <template v-for="ansItem in question.ans">{{
  170. ast[ansItem - 1]
  171. }}</template>
  172. </div>
  173. <!-- <div class="answer-list__left">
  174. 我的答案:
  175. <template v-for="quesItem in question.ques">{{
  176. ast[quesItem - 1]
  177. }}</template>
  178. </div> -->
  179. </div>
  180. <div class="explain-list">
  181. <div class="explain-list__header">答案解析:</div>
  182. <div
  183. class="explain-list__body"
  184. v-html="question.analysisContent"
  185. ></div>
  186. </div>
  187. </div>
  188. <div class="question__btns"></div>
  189. </div>
  190. <div
  191. class="question"
  192. v-if="question.type == 3 && current == questionIndex"
  193. :key="questionIndex"
  194. >
  195. <div class="question__title">
  196. {{ questionIndex + 1 }}、判断题
  197. </div>
  198. <div
  199. class="question__desc"
  200. v-html="question.content"
  201. ></div>
  202. <div class="question__content">
  203. <div class="question-list" v-if="!question.ques">
  204. <div
  205. class="radio"
  206. v-for="(item, index) in judge"
  207. :key="index"
  208. >
  209. <div>
  210. {{ ast[index] }}. {{ item }}
  211. <div v-if="item.imgUrl">
  212. <img
  213. style="max-width: 100%"
  214. :src="$tools.splitImgHost(item.imgUrl)"
  215. alt=""
  216. />
  217. </div>
  218. </div>
  219. </div>
  220. </div>
  221. <div class="question-list" v-if="question.ques">
  222. <div
  223. class="radio"
  224. :class="{
  225. right:
  226. index == question.ques || index == question.ans,
  227. wrong:
  228. index == question.ques &&
  229. question.ques != question.ans,
  230. }"
  231. v-for="(item, index) in judge"
  232. :key="index"
  233. >
  234. <div>
  235. {{ ast[index] }}. {{ item }}
  236. <div v-if="item.imgUrl">
  237. <img
  238. style="max-width: 100%"
  239. :src="$tools.splitImgHost(item.imgUrl)"
  240. alt=""
  241. />
  242. </div>
  243. </div>
  244. </div>
  245. </div>
  246. <div class="answer-list">
  247. <div class="answer-list__left">
  248. 正确答案:{{ ast[question.ans] }}
  249. </div>
  250. <!-- <div class="answer-list__left">
  251. 我的答案:{{ ast[question.ques] }}
  252. </div> -->
  253. </div>
  254. <div class="explain-list">
  255. <div class="explain-list__header">答案解析:</div>
  256. <div
  257. class="explain-list__body"
  258. v-html="question.analysisContent"
  259. ></div>
  260. </div>
  261. </div>
  262. <div class="question__btns"></div>
  263. </div>
  264. <div
  265. class="question"
  266. v-if="question.type == 4 && current == questionIndex"
  267. :key="questionIndex"
  268. >
  269. <div class="question__title">
  270. {{ questionIndex + 1 }}、案例题
  271. </div>
  272. <div
  273. class="question__desc"
  274. v-html="question.content"
  275. ></div>
  276. <div class="question__content">
  277. <el-tabs v-model="question.tabIndex">
  278. <el-tab-pane
  279. v-for="(json, jsonIndex) in question.jsonStr"
  280. :label="'问题' + (jsonIndex + 1)"
  281. :name="jsonIndex + ''"
  282. :key="jsonIndex"
  283. >
  284. <div
  285. class="question"
  286. v-if="json.type == 1"
  287. :key="questionIndex"
  288. >
  289. <div class="question__title">
  290. {{ jsonIndex + 1 }}、单选题
  291. </div>
  292. <div
  293. class="question__desc"
  294. v-html="json.content"
  295. ></div>
  296. <div class="question__content">
  297. <div
  298. class="question-list"
  299. v-if="!question.ques[jsonIndex]"
  300. >
  301. <div
  302. class="radio"
  303. v-for="(item, index) in json.optionsList"
  304. :key="index"
  305. >
  306. <div>
  307. {{ ast[index] }}. {{ item.content }}
  308. <div v-if="item.imgUrl">
  309. <img
  310. style="max-width: 100%"
  311. :src="
  312. $tools.splitImgHost(item.imgUrl)
  313. "
  314. alt=""
  315. />
  316. </div>
  317. </div>
  318. </div>
  319. </div>
  320. <div
  321. class="question-list"
  322. v-if="question.ques[jsonIndex]"
  323. >
  324. <div
  325. class="radio"
  326. :class="{
  327. right:
  328. item.optionsId ==
  329. question.ques[jsonIndex] ||
  330. item.optionsId ==
  331. question.ans[jsonIndex],
  332. wrong:
  333. item.optionsId ==
  334. question.ques[jsonIndex] &&
  335. question.ques[jsonIndex] !=
  336. question.ans[jsonIndex],
  337. }"
  338. v-for="(item, index) in json.optionsList"
  339. :key="index"
  340. >
  341. <div>
  342. {{ ast[index] }}. {{ item.content }}
  343. <div v-if="item.imgUrl">
  344. <img
  345. style="max-width: 100%"
  346. :src="
  347. $tools.splitImgHost(item.imgUrl)
  348. "
  349. alt=""
  350. />
  351. </div>
  352. </div>
  353. </div>
  354. </div>
  355. <div class="answer-list">
  356. <div class="answer-list__left">
  357. 正确答案:{{
  358. ast[question.ans[jsonIndex] - 1]
  359. }}
  360. </div>
  361. <!-- <div class="answer-list__left">
  362. 我的答案:{{
  363. ast[question.ques[jsonIndex] - 1]
  364. }}
  365. </div> -->
  366. </div>
  367. <div class="explain-list">
  368. <div class="explain-list__header">
  369. 答案解析:
  370. </div>
  371. <div
  372. class="explain-list__body"
  373. v-html="json.analysisContent"
  374. ></div>
  375. </div>
  376. </div>
  377. <div class="question__btns"></div>
  378. </div>
  379. <div
  380. class="question"
  381. v-if="json.type == 2"
  382. :key="jsonIndex"
  383. >
  384. <div class="question__title">
  385. {{ jsonIndex + 1 }}、多选题
  386. </div>
  387. <div
  388. class="question__desc"
  389. v-html="json.content"
  390. ></div>
  391. <div class="question__content">
  392. <div
  393. class="question-list"
  394. v-if="!question.ques[jsonIndex]"
  395. >
  396. <el-checkbox
  397. disabled
  398. class="checkbox"
  399. v-for="(item, index) in json.optionsList"
  400. :key="index"
  401. :label="item.optionsId"
  402. v-model="item.checked"
  403. >
  404. <div>
  405. {{ ast[index] }}. {{ item.content }}
  406. <div v-if="item.imgUrl">
  407. <img
  408. style="max-width: 100%"
  409. :src="
  410. $tools.splitImgHost(item.imgUrl)
  411. "
  412. alt=""
  413. />
  414. </div>
  415. </div>
  416. </el-checkbox>
  417. </div>
  418. <div
  419. class="question-list"
  420. v-if="question.ques[jsonIndex]"
  421. >
  422. <el-checkbox
  423. disabled
  424. class="checkbox"
  425. :class="{
  426. right:
  427. question.ques[jsonIndex].indexOf(
  428. item.optionsId
  429. ) != -1 ||
  430. question.ans[jsonIndex].indexOf(
  431. item.optionsId
  432. ) != -1,
  433. wrong:
  434. question.ques[jsonIndex].indexOf(
  435. item.optionsId
  436. ) != -1 &&
  437. question.ans[jsonIndex].indexOf(
  438. item.optionsId
  439. ) == -1,
  440. }"
  441. v-for="(item, index) in json.optionsList"
  442. :key="index"
  443. :label="item.optionsId"
  444. v-model="item.checked"
  445. >
  446. <div>
  447. {{ ast[index] }}. {{ item.content }}
  448. <div v-if="item.imgUrl">
  449. <img
  450. style="max-width: 100%"
  451. :src="
  452. $tools.splitImgHost(item.imgUrl)
  453. "
  454. alt=""
  455. />
  456. </div>
  457. </div>
  458. </el-checkbox>
  459. </div>
  460. <div class="answer-list">
  461. <div class="answer-list__left">
  462. 正确答案:
  463. <template
  464. v-for="ansItem in question.ans[jsonIndex]"
  465. >{{ ast[ansItem - 1] }}</template
  466. >
  467. </div>
  468. <!-- <div class="answer-list__left">
  469. 我的答案:
  470. <template
  471. v-for="quesItem in question.ques[
  472. jsonIndex
  473. ]"
  474. >{{ ast[quesItem - 1] }}</template
  475. >
  476. </div> -->
  477. </div>
  478. <div class="explain-list">
  479. <div class="explain-list__header">
  480. 答案解析:
  481. </div>
  482. <div
  483. class="explain-list__body"
  484. v-html="json.analysisContent"
  485. ></div>
  486. </div>
  487. </div>
  488. <div class="question__btns"></div>
  489. </div>
  490. <div
  491. class="question"
  492. v-if="json.type == 3"
  493. :key="jsonIndex"
  494. >
  495. <div class="question__title">
  496. {{ jsonIndex + 1 }}、判断题
  497. </div>
  498. <div
  499. class="question__desc"
  500. v-html="json.content"
  501. ></div>
  502. <div class="question__content">
  503. <div
  504. class="question-list"
  505. v-if="!question.ques[jsonIndex]"
  506. >
  507. <div
  508. class="radio"
  509. v-for="(item, index) in judge"
  510. :key="index"
  511. >
  512. <div>
  513. {{ ast[index] }}. {{ item }}
  514. <div v-if="item.imgUrl">
  515. <img
  516. style="max-width: 100%"
  517. :src="
  518. $tools.splitImgHost(item.imgUrl)
  519. "
  520. alt=""
  521. />
  522. </div>
  523. </div>
  524. </div>
  525. </div>
  526. <div
  527. class="question-list"
  528. v-if="question.ques[jsonIndex]"
  529. >
  530. <div
  531. class="radio"
  532. :class="{
  533. right:
  534. index == question.ques[jsonIndex] ||
  535. index == question.ans[jsonIndex],
  536. wrong:
  537. index == question.ques[jsonIndex] &&
  538. question.ques[jsonIndex] !=
  539. question.ans[jsonIndex],
  540. }"
  541. v-for="(item, index) in judge"
  542. :key="index"
  543. >
  544. <div>
  545. {{ ast[index] }}. {{ item }}
  546. <div v-if="item.imgUrl">
  547. <img
  548. style="max-width: 100%"
  549. :src="
  550. $tools.splitImgHost(item.imgUrl)
  551. "
  552. alt=""
  553. />
  554. </div>
  555. </div>
  556. </div>
  557. </div>
  558. <div class="answer-list">
  559. <div class="answer-list__left">
  560. 正确答案:{{ ast[question.ans[jsonIndex]] }}
  561. </div>
  562. <!-- <div class="answer-list__left">
  563. 我的答案:{{
  564. ast[question.ques[jsonIndex]]
  565. }}
  566. </div> -->
  567. </div>
  568. <div class="explain-list">
  569. <div class="explain-list__header">
  570. 答案解析:
  571. </div>
  572. <div
  573. class="explain-list__body"
  574. v-html="json.analysisContent"
  575. ></div>
  576. </div>
  577. </div>
  578. <div class="question__btns"></div>
  579. </div>
  580. <div
  581. class="question"
  582. v-if="json.type == 5"
  583. :key="jsonIndex"
  584. >
  585. <div class="question__title">
  586. {{ jsonIndex + 1 }}、简答题
  587. </div>
  588. <div
  589. class="question__desc"
  590. v-html="json.content"
  591. ></div>
  592. <div class="question__content">
  593. <div class="explain-list">
  594. <div class="explain-list__header">
  595. 我的答案:
  596. </div>
  597. <div class="explain-list__body">
  598. <div>
  599. {{
  600. question.ques[jsonIndex] &&
  601. question.ques[jsonIndex].text
  602. }}
  603. </div>
  604. <div class="upload clearfix">
  605. <div
  606. class="upload__imgs"
  607. v-for="(img, imgIndex) in question.ques[
  608. jsonIndex
  609. ] && question.ques[jsonIndex].imageList"
  610. :key="imgIndex"
  611. >
  612. <img
  613. :src="$tools.splitImgHost(img, true)"
  614. alt=""
  615. />
  616. </div>
  617. </div>
  618. </div>
  619. <div class="explain-list__header">
  620. 答案解析:
  621. </div>
  622. <div
  623. class="explain-list__body"
  624. v-html="question.analysisContent"
  625. ></div>
  626. </div>
  627. </div>
  628. <div class="question__btns"></div>
  629. </div>
  630. </el-tab-pane>
  631. </el-tabs>
  632. </div>
  633. <div class="question__btns"></div>
  634. </div>
  635. <div
  636. class="question"
  637. v-if="question.type == 5 && current == questionIndex"
  638. :key="questionIndex"
  639. >
  640. <div class="question__title">
  641. {{ questionIndex + 1 }}、简答题
  642. </div>
  643. <div
  644. class="question__desc"
  645. v-html="question.content"
  646. ></div>
  647. <div class="question__content">
  648. <div class="explain-list">
  649. <!-- <div class="explain-list__header">我的答案:</div>
  650. <div class="explain-list__body">
  651. <div>{{ question.ques.text }}</div>
  652. <div class="upload clearfix">
  653. <div
  654. class="upload__imgs"
  655. v-for="(img, imgIndex) in question.ques
  656. .imageList"
  657. :key="imgIndex"
  658. >
  659. <img
  660. :src="$tools.splitImgHost(img, true)"
  661. alt=""
  662. />
  663. </div>
  664. </div>
  665. </div> -->
  666. <div class="explain-list__header">答案解析:</div>
  667. <div
  668. class="explain-list__body"
  669. v-html="question.analysisContent"
  670. ></div>
  671. </div>
  672. </div>
  673. <div class="question__btns"></div>
  674. </div>
  675. </template>
  676. </div>
  677. </div>
  678. <div class="right-box">
  679. <div class="right-box__header">
  680. <el-button
  681. type="primary"
  682. round
  683. plain
  684. size="small"
  685. class="back-btn"
  686. @click="$router.back(-1)"
  687. >返回</el-button
  688. >
  689. </div>
  690. <div class="right-box__header">答题卡</div>
  691. <div class="right-box__body">
  692. <div class="card">
  693. <div class="card__note">
  694. <div class="item">
  695. <div class="box green"></div>
  696. 正确
  697. </div>
  698. <div class="item">
  699. <div class="box red"></div>
  700. 错误
  701. </div>
  702. <div class="item">
  703. <div class="box blue"></div>
  704. 已做未评改
  705. </div>
  706. <div class="item">
  707. <div class="box yellow"></div>
  708. 少选
  709. </div>
  710. <div class="item">
  711. <div class="box white"></div>
  712. 未做
  713. </div>
  714. </div>
  715. <div class="card__content">
  716. <ul class="list">
  717. <li
  718. class="item white"
  719. v-for="(item, index) in questionList"
  720. :key="index"
  721. :class="{
  722. green: isRight(item, index),
  723. red: isWrong(item, index),
  724. yellow: isPart(item, index),
  725. blue: isOver(item, index),
  726. }"
  727. @click="changeIndex(index)"
  728. >
  729. {{ index + 1 }}
  730. </li>
  731. </ul>
  732. </div>
  733. </div>
  734. </div>
  735. </div>
  736. </div>
  737. </div>
  738. </div>
  739. </div>
  740. </section>
  741. <ToolBar></ToolBar>
  742. <Footer></Footer>
  743. </div>
  744. </template>
  745. <script>
  746. import Footer from "@/components/footer/index";
  747. import Header from "@/components/header/index";
  748. import ToolBar from "@/components/toolbar/index";
  749. import HeaderTabBox from "../../components/exam/HeaderTabBox.vue";
  750. import { mapMutations } from "vuex";
  751. export default {
  752. name: "BankExplain",
  753. components: {
  754. Footer,
  755. Header,
  756. ToolBar,
  757. HeaderTabBox,
  758. },
  759. data() {
  760. return {
  761. checked: false,
  762. questionList: [],
  763. judge: ["错误", "正确"],
  764. ast: [
  765. "A",
  766. "B",
  767. "C",
  768. "D",
  769. "E",
  770. "F",
  771. "G",
  772. "H",
  773. "I",
  774. "J",
  775. "K",
  776. "L",
  777. "M",
  778. "N",
  779. "O",
  780. "P",
  781. "Q",
  782. "R",
  783. "S",
  784. "T",
  785. "U",
  786. "V",
  787. "W",
  788. "X",
  789. "Y",
  790. "Z",
  791. ],
  792. examId: 0,
  793. goodsId: 0,
  794. moduleId: 0,
  795. chapterId: 0,
  796. current: 0,
  797. };
  798. },
  799. async mounted() {
  800. this.recordId = this.$route.params.recordId;
  801. this.examId = this.$route.query.examId;
  802. this.moduleId = this.$route.query.moduleId;
  803. this.chapterId = this.$route.query.chapterId;
  804. this.goodsId = this.$route.query.goodsId;
  805. this.examType = this.$route.query.examType;
  806. this.$route.query.examType == 2
  807. ? this.goodsQuestionTempList()
  808. : this.goodsQuestionList();
  809. },
  810. methods: {
  811. ...mapMutations(["setExamResult"]),
  812. toFixed(num) {
  813. if (num) {
  814. let str = String(num).indexOf(".");
  815. if (str != -1) {
  816. return +num.toFixed(2);
  817. } else {
  818. return num;
  819. }
  820. } else {
  821. return 0;
  822. }
  823. },
  824. changeIndex(index) {
  825. this.current = index;
  826. },
  827. /**
  828. * 请求题目列表
  829. */
  830. goodsQuestionList() {
  831. this.$request
  832. .goodsQuestionList({
  833. examId: this.examId,
  834. })
  835. .then(async (res) => {
  836. res.data.forEach((item, index) => {
  837. // if (typeof item.jsonStr == "string") {
  838. item.jsonStr = JSON.parse(item.jsonStr);
  839. if (item.type == 2) {
  840. //多选
  841. item.jsonStr.forEach((str) => {
  842. str.optionsId = "" + str.optionsId;
  843. });
  844. let arr = item.answerQuestion.split(",");
  845. arr.forEach((a, i) => {
  846. arr[i] = "" + a;
  847. });
  848. item.ans = arr;
  849. item.ques = item.ans;
  850. return;
  851. } else if (item.type == 5) {
  852. item.ansText = {
  853. text: item.analysisContent,
  854. imageList: [],
  855. };
  856. item.ques = {
  857. text: item.analysisContent,
  858. imageList: [],
  859. };
  860. return;
  861. } else if (item.type == 4) {
  862. console.log(item.jsonStr);
  863. item.ques = [];
  864. item.current = 0;
  865. let ansArr = [];
  866. item.jsonStr.forEach((json, index) => {
  867. if (json.type == 1) {
  868. ansArr[index] = json.answerQuestion;
  869. } else if (json.type == 2) {
  870. json.optionsList.forEach((str) => {
  871. str.optionsId = "" + str.optionsId;
  872. });
  873. let arr = json.answerQuestion.split(",");
  874. arr.forEach((a, i) => {
  875. arr[i] = "" + a;
  876. });
  877. ansArr[index] = arr;
  878. } else if (json.type == 3) {
  879. ansArr[index] = json.answerQuestion;
  880. } else if (json.type == 5) {
  881. ansArr[index] = {
  882. text: "",
  883. imageList: [],
  884. };
  885. json.ansText = {
  886. text: "",
  887. imageList: [],
  888. };
  889. }
  890. });
  891. item.ans = ansArr;
  892. item.ques = item.ans;
  893. return;
  894. }
  895. item.ans = item.answerQuestion;
  896. item.ques = item.ans;
  897. // } else {
  898. // item.ques = item.ans;
  899. // }
  900. });
  901. this.questionList = res.data;
  902. });
  903. },
  904. // 随机练习试卷
  905. goodsQuestionTempList() {
  906. this.$request
  907. .goodsQuestionTempList({
  908. examId: this.examId,
  909. })
  910. .then(async (res) => {
  911. res.data.forEach((item, index) => {
  912. // if (typeof item.jsonStr == "string") {
  913. item.jsonStr = JSON.parse(item.jsonStr);
  914. if (item.type == 2) {
  915. //多选
  916. item.jsonStr.forEach((str) => {
  917. str.optionsId = "" + str.optionsId;
  918. });
  919. let arr = item.answerQuestion.split(",");
  920. arr.forEach((a, i) => {
  921. arr[i] = "" + a;
  922. });
  923. item.ans = arr;
  924. item.ques = item.ans;
  925. return;
  926. } else if (item.type == 5) {
  927. item.ansText = {
  928. text: item.analysisContent,
  929. imageList: [],
  930. };
  931. item.ques = {
  932. text: item.analysisContent,
  933. imageList: [],
  934. };
  935. return;
  936. } else if (item.type == 4) {
  937. console.log(item.jsonStr);
  938. item.ques = [];
  939. item.current = 0;
  940. let ansArr = [];
  941. item.jsonStr.forEach((json, index) => {
  942. if (json.type == 1) {
  943. ansArr[index] = json.answerQuestion;
  944. } else if (json.type == 2) {
  945. json.optionsList.forEach((str) => {
  946. str.optionsId = "" + str.optionsId;
  947. });
  948. let arr = json.answerQuestion.split(",");
  949. arr.forEach((a, i) => {
  950. arr[i] = "" + a;
  951. });
  952. ansArr[index] = arr;
  953. } else if (json.type == 3) {
  954. ansArr[index] = json.answerQuestion;
  955. } else if (json.type == 5) {
  956. ansArr[index] = {
  957. text: "",
  958. imageList: [],
  959. };
  960. json.ansText = {
  961. text: "",
  962. imageList: [],
  963. };
  964. }
  965. });
  966. item.ans = ansArr;
  967. item.ques = item.ans;
  968. return;
  969. }
  970. item.ans = item.answerQuestion;
  971. item.ques = item.ans;
  972. // } else {
  973. // item.ques = item.ans;
  974. // }
  975. });
  976. this.questionList = res.data;
  977. });
  978. },
  979. nextQuestion() {
  980. if (this.current >= this.questionList.length - 1) {
  981. this.$message({
  982. type: "warning",
  983. message: "已经是最后一题了!",
  984. });
  985. return;
  986. }
  987. this.current++;
  988. },
  989. prevQuestion() {
  990. if (this.current == 0) {
  991. this.$message({
  992. type: "warning",
  993. message: "已经是第一题了!",
  994. });
  995. return;
  996. } else {
  997. this.current--;
  998. }
  999. },
  1000. isOver(item, index) {
  1001. if (this.questionList[index].ques) {
  1002. if (item.type == 4) {
  1003. //案例题
  1004. let isOver = item.jsonStr.every((jsonItem, indexs) => {
  1005. if (
  1006. jsonItem.type == 1 ||
  1007. jsonItem.type == 2 ||
  1008. jsonItem.type == 3
  1009. ) {
  1010. if (item.ques[indexs]) {
  1011. return true;
  1012. } else {
  1013. return false;
  1014. }
  1015. } else if (jsonItem.type == 5) {
  1016. // if (
  1017. // item.ques[indexs] &&
  1018. // (item.ques[indexs].text || item.ques[indexs].imageList.length)
  1019. // ) {
  1020. // console.log("chil");
  1021. // return true;
  1022. // } else {
  1023. // return false;
  1024. // }
  1025. }
  1026. });
  1027. if (isOver) {
  1028. return true;
  1029. } else {
  1030. return false;
  1031. }
  1032. } else if (item.type == 5) {
  1033. //简答题
  1034. //每一项都相等
  1035. if (item.ques && (item.ques.imageList.length || item.ques.text)) {
  1036. return true;
  1037. }
  1038. //判断
  1039. } else {
  1040. return false;
  1041. }
  1042. } else {
  1043. return false;
  1044. }
  1045. },
  1046. isRight(item, index) {
  1047. //单选
  1048. if (this.questionList[index].ques) {
  1049. if (item.type == 1) {
  1050. console.log(
  1051. this.questionList[index].ques == this.questionList[index].ans
  1052. );
  1053. return this.questionList[index].ques == this.questionList[index].ans;
  1054. //多选
  1055. } else if (item.type == 2) {
  1056. //每一项都相等
  1057. return this.questionList[index].ans.every((item, i) => {
  1058. return item == this.questionList[index].ques[i];
  1059. });
  1060. //判断
  1061. } else if (item.type == 3) {
  1062. return this.questionList[index].ques == this.questionList[index].ans;
  1063. } else {
  1064. return false;
  1065. }
  1066. } else {
  1067. return false;
  1068. }
  1069. },
  1070. isWrong(item, index) {
  1071. if (this.questionList[index].ques) {
  1072. //单选
  1073. if (item.type == 1) {
  1074. return this.questionList[index].ques != this.questionList[index].ans;
  1075. //多选
  1076. } else if (item.type == 2) {
  1077. //每一项都相等
  1078. return this.questionList[index].ques.some((item, i) => {
  1079. return this.questionList[index].ans.indexOf(item) == -1;
  1080. });
  1081. //判断
  1082. } else if (item.type == 3) {
  1083. return this.questionList[index].ques != this.questionList[index].ans;
  1084. } else {
  1085. return false;
  1086. }
  1087. } else {
  1088. return false;
  1089. }
  1090. },
  1091. isPart(item, index) {
  1092. if (this.questionList[index].ques) {
  1093. if (item.type == 2) {
  1094. let isWrong = this.questionList[index].ques.some((item, i) => {
  1095. return this.questionList[index].ans.indexOf(item) == -1;
  1096. });
  1097. let isRight = this.questionList[index].ans.every((item, i) => {
  1098. return item == this.questionList[index].ques[i];
  1099. });
  1100. if (!isRight && !isWrong) {
  1101. return true;
  1102. }
  1103. }
  1104. } else {
  1105. return false;
  1106. }
  1107. },
  1108. right(bankIndex, ansIndex, option) {
  1109. if (
  1110. this.questionList[bankIndex].ques[ansIndex] &&
  1111. this.questionList[bankIndex].ans[ansIndex]
  1112. ) {
  1113. if (
  1114. this.questionList[bankIndex].ques[ansIndex].indexOf(
  1115. option.optionsId
  1116. ) != -1 ||
  1117. this.questionList[bankIndex].ans[ansIndex].indexOf(
  1118. option.optionsId
  1119. ) != -1
  1120. ) {
  1121. return true;
  1122. } else {
  1123. return false;
  1124. }
  1125. } else {
  1126. return false;
  1127. }
  1128. },
  1129. wrong(bankIndex, ansIndex, option) {
  1130. if (
  1131. this.questionList[bankIndex].ques[ansIndex] &&
  1132. this.questionList[bankIndex].ans[ansIndex]
  1133. ) {
  1134. if (
  1135. this.questionList[bankIndex].ques[ansIndex].indexOf(
  1136. option.optionsId
  1137. ) != -1 &&
  1138. this.questionList[bankIndex].ans[ansIndex].indexOf(
  1139. option.optionsId
  1140. ) == -1
  1141. ) {
  1142. return true;
  1143. } else {
  1144. return false;
  1145. }
  1146. } else {
  1147. return false;
  1148. }
  1149. },
  1150. /**
  1151. * 获取已经回答的题目数
  1152. * hasSpecail (是否包含简答和案例)
  1153. */
  1154. questionOverNum(hasSpecail) {
  1155. let count = 0;
  1156. this.questionList.forEach((item) => {
  1157. if (item.type == 1 || item.type == 2 || item.type == 3) {
  1158. if (item.ques) {
  1159. count++;
  1160. }
  1161. } else if (item.type == 4) {
  1162. //案例题
  1163. if (hasSpecail) {
  1164. let isOver = item.jsonStr.every((jsonItem, index) => {
  1165. if (
  1166. jsonItem.type == 1 ||
  1167. jsonItem.type == 2 ||
  1168. jsonItem.type == 3
  1169. ) {
  1170. if (item.ques[index]) {
  1171. return true;
  1172. } else {
  1173. return false;
  1174. }
  1175. } else if (jsonItem.type == 5) {
  1176. // if (
  1177. // item.ques[index] &&
  1178. // (item.ques[index].text || item.ques[index].imageList.length)
  1179. // ) {
  1180. // return true;
  1181. // } else {
  1182. // return false;
  1183. // }
  1184. }
  1185. });
  1186. if (isOver) {
  1187. count++;
  1188. console.log(item, 444);
  1189. }
  1190. }
  1191. } else if (item.type == 5) {
  1192. //简答题
  1193. if (hasSpecail) {
  1194. // if (item.ques && (item.ques.text || item.ques.imageList.length)) {
  1195. // console.log(5, item);
  1196. // count++;
  1197. // }
  1198. }
  1199. }
  1200. });
  1201. return count;
  1202. },
  1203. },
  1204. };
  1205. </script>
  1206. <!-- Add "scoped" attribute to limit CSS to this component only -->
  1207. <style scoped lang="scss">
  1208. .course-exam {
  1209. .section {
  1210. overflow: hidden;
  1211. &__header {
  1212. height: 20px;
  1213. margin-top: 20px;
  1214. }
  1215. &__body {
  1216. .explain-record {
  1217. &__header {
  1218. }
  1219. &__body {
  1220. margin-bottom: 20px;
  1221. border: 1px solid #eee;
  1222. .left-box {
  1223. float: left;
  1224. width: 970px;
  1225. min-height: 630px;
  1226. border: 1px solid #eee;
  1227. &__body {
  1228. border-bottom: 1px solid #eee;
  1229. .question {
  1230. padding: 12px 0 0 12px;
  1231. display: flex;
  1232. flex-direction: column;
  1233. height: 100%;
  1234. &__title {
  1235. padding-left: 12px;
  1236. font-size: 16px;
  1237. font-family: Microsoft YaHei;
  1238. font-weight: bold;
  1239. color: #333333;
  1240. line-height: 24px;
  1241. }
  1242. &__desc {
  1243. padding-left: 12px;
  1244. margin-top: 20px;
  1245. font-size: 16px;
  1246. font-family: Microsoft YaHei;
  1247. font-weight: 400;
  1248. color: #666666;
  1249. line-height: 24px;
  1250. /deep/ img {
  1251. max-width: 100% !important;
  1252. }
  1253. }
  1254. &__content {
  1255. /deep/ .el-tabs__item {
  1256. height: 40px;
  1257. line-height: 40px;
  1258. }
  1259. .question__content {
  1260. height: auto;
  1261. overflow: auto;
  1262. }
  1263. .question-list {
  1264. padding: 24px 0 0 24px;
  1265. .checkbox,
  1266. .radio {
  1267. cursor: pointer;
  1268. margin-right: 24px;
  1269. padding: 0 24px;
  1270. display: flex;
  1271. align-items: center;
  1272. margin-top: 2px;
  1273. min-height: 40px;
  1274. padding-top: 10px;
  1275. padding-bottom: 10px;
  1276. background: #f5f9ff;
  1277. border-radius: 8px;
  1278. box-sizing: border-box;
  1279. &.right {
  1280. background: #37c65b;
  1281. }
  1282. &.wrong {
  1283. background: #ff3a30;
  1284. }
  1285. }
  1286. &.textarea {
  1287. margin-right: 12px;
  1288. .upload {
  1289. margin-top: 10px;
  1290. &__imgs {
  1291. margin-right: 10px;
  1292. width: 80px;
  1293. height: 80px;
  1294. background: #ffffff;
  1295. border: 1px solid #eeeeee;
  1296. border-radius: 4px;
  1297. position: relative;
  1298. display: flex;
  1299. float: left;
  1300. align-items: center;
  1301. justify-content: center;
  1302. img {
  1303. max-width: 100%;
  1304. max-height: 100%;
  1305. }
  1306. }
  1307. &__btn {
  1308. margin-right: 10px;
  1309. width: 80px;
  1310. height: 80px;
  1311. background: #ffffff;
  1312. border: 1px solid #eeeeee;
  1313. border-radius: 4px;
  1314. position: relative;
  1315. display: flex;
  1316. float: left;
  1317. align-items: center;
  1318. justify-content: center;
  1319. flex-direction: column;
  1320. .icon {
  1321. font-size: 20px;
  1322. color: #3f8dfd;
  1323. }
  1324. p {
  1325. font-size: 12px;
  1326. font-family: Microsoft YaHei;
  1327. font-weight: 400;
  1328. color: #999999;
  1329. line-height: 24px;
  1330. }
  1331. input {
  1332. position: absolute;
  1333. left: 0;
  1334. top: 0;
  1335. display: block;
  1336. width: 100%;
  1337. height: 100%;
  1338. opacity: 0;
  1339. }
  1340. }
  1341. }
  1342. }
  1343. /deep/
  1344. .el-checkbox__input.is-checked
  1345. + .el-checkbox__label {
  1346. color: #000 !important;
  1347. }
  1348. /deep/
  1349. .el-checkbox__input.is-disabled
  1350. + span.el-checkbox__label {
  1351. color: #000;
  1352. }
  1353. /deep/ .el-checkbox {
  1354. white-space: normal;
  1355. }
  1356. }
  1357. .answer-list {
  1358. height: 40px;
  1359. border-top: 1px solid #eee;
  1360. border-bottom: 1px solid #eee;
  1361. margin-top: 24px;
  1362. display: flex;
  1363. align-items: center;
  1364. justify-content: space-between;
  1365. padding: 0 24px;
  1366. &__left {
  1367. font-size: 16px;
  1368. font-family: Microsoft YaHei;
  1369. font-weight: 400;
  1370. color: #333333;
  1371. line-height: 24px;
  1372. }
  1373. &__right {
  1374. font-size: 16px;
  1375. font-family: Microsoft YaHei;
  1376. font-weight: 400;
  1377. color: #333333;
  1378. line-height: 24px;
  1379. }
  1380. }
  1381. .explain-list {
  1382. padding: 12px 24px;
  1383. &__header {
  1384. font-size: 16px;
  1385. font-family: Microsoft YaHei;
  1386. font-weight: bold;
  1387. color: #666666;
  1388. line-height: 24px;
  1389. }
  1390. &__body {
  1391. margin-top: 12px;
  1392. font-size: 16px;
  1393. font-family: Microsoft YaHei;
  1394. font-weight: 400;
  1395. color: #666666;
  1396. line-height: 24px;
  1397. }
  1398. .upload {
  1399. margin-top: 10px;
  1400. &__imgs {
  1401. margin-right: 10px;
  1402. width: 80px;
  1403. height: 80px;
  1404. background: #ffffff;
  1405. border: 1px solid #eeeeee;
  1406. border-radius: 4px;
  1407. position: relative;
  1408. display: flex;
  1409. float: left;
  1410. align-items: center;
  1411. justify-content: center;
  1412. img {
  1413. max-width: 100%;
  1414. max-height: 100%;
  1415. }
  1416. }
  1417. }
  1418. }
  1419. }
  1420. &__btns {
  1421. position: relative;
  1422. height: 32px;
  1423. .submit {
  1424. cursor: pointer;
  1425. margin: 0 auto;
  1426. width: 140px;
  1427. height: 32px;
  1428. background: #3f8dfd;
  1429. box-shadow: 0px 0px 6px 0px rgba(0, 0, 0, 0.2);
  1430. border-radius: 16px;
  1431. text-align: center;
  1432. line-height: 32px;
  1433. color: #fff;
  1434. font-size: 16px;
  1435. }
  1436. .collect {
  1437. cursor: pointer;
  1438. position: absolute;
  1439. right: 0;
  1440. top: 5px;
  1441. font-size: 12px;
  1442. font-family: Microsoft YaHei;
  1443. font-weight: 400;
  1444. color: #3f8dfd;
  1445. line-height: 24px;
  1446. }
  1447. }
  1448. }
  1449. }
  1450. &__footer {
  1451. border-bottom: 1px solid #eee;
  1452. height: 40px;
  1453. display: flex;
  1454. justify-content: space-around;
  1455. align-items: center;
  1456. .btn {
  1457. cursor: pointer;
  1458. width: 140px;
  1459. height: 32px;
  1460. background: #ffffff;
  1461. border: 1px solid #3f8dfd;
  1462. border-radius: 16px;
  1463. line-height: 32px;
  1464. text-align: center;
  1465. color: #3f8dfd;
  1466. }
  1467. }
  1468. }
  1469. .right-box {
  1470. float: right;
  1471. width: 299px;
  1472. border-right: 1px solid #eee;
  1473. &__header {
  1474. height: 40px;
  1475. line-height: 40px;
  1476. font-size: 16px;
  1477. font-family: Microsoft YaHei;
  1478. font-weight: bold;
  1479. color: #333333;
  1480. text-align: center;
  1481. border-bottom: 1px solid #eeeeee;
  1482. .back-btn {
  1483. display: block;
  1484. margin: 0 auto;
  1485. width: 160px;
  1486. }
  1487. }
  1488. &__body {
  1489. height: 510px;
  1490. border-bottom: 1px solid #eee;
  1491. .card {
  1492. &__note {
  1493. display: flex;
  1494. height: 64px;
  1495. align-items: center;
  1496. border-bottom: 1px solid #eee;
  1497. flex-wrap: wrap;
  1498. .item {
  1499. display: flex;
  1500. align-items: center;
  1501. margin-left: 10px;
  1502. width: 84px;
  1503. font-size: 12px;
  1504. .box {
  1505. margin-right: 5px;
  1506. width: 16px;
  1507. height: 16px;
  1508. border-radius: 4px;
  1509. &.white {
  1510. background: #ffffff;
  1511. border: 1px solid #eeeeee;
  1512. }
  1513. &.green {
  1514. background: #37c65b;
  1515. }
  1516. &.red {
  1517. background: #ff3a30;
  1518. }
  1519. &.yellow {
  1520. background: #ffc53d;
  1521. }
  1522. &.blue {
  1523. background: #3f8dfd;
  1524. }
  1525. }
  1526. }
  1527. }
  1528. &__content {
  1529. height: 440px;
  1530. overflow-y: scroll;
  1531. &::-webkit-scrollbar {
  1532. width: 6px;
  1533. }
  1534. &::-webkit-scrollbar-track {
  1535. background-color: #fff;
  1536. -webkit-border-radius: 2em;
  1537. -moz-border-radius: 2em;
  1538. border-radius: 2em;
  1539. }
  1540. &::-webkit-scrollbar-thumb {
  1541. background-color: #eeeeee;
  1542. -webkit-border-radius: 2em;
  1543. -moz-border-radius: 2em;
  1544. border-radius: 2em;
  1545. }
  1546. .list {
  1547. display: flex;
  1548. flex-wrap: wrap;
  1549. .item {
  1550. width: 40px;
  1551. height: 40px;
  1552. border-radius: 10px;
  1553. text-align: center;
  1554. line-height: 40px;
  1555. margin-left: 16px;
  1556. margin-top: 16px;
  1557. cursor: pointer;
  1558. &.white {
  1559. line-height: 38px;
  1560. color: #333333;
  1561. background: #ffffff;
  1562. border: 1px solid #eeeeee;
  1563. }
  1564. &.green {
  1565. color: #fff;
  1566. background: #37c65b;
  1567. }
  1568. &.red {
  1569. color: #fff;
  1570. background: #ff3a30;
  1571. }
  1572. &.blue {
  1573. border: 1rpx solid #eeeeee;
  1574. color: #fff;
  1575. background: #3f8dfd;
  1576. }
  1577. &.yellow {
  1578. background: #ffc53d;
  1579. }
  1580. &.disabled {
  1581. cursor: not-allowed;
  1582. line-height: 38px;
  1583. color: #eeeeee;
  1584. background: #ffffff;
  1585. border: 1px solid #eeeeee;
  1586. }
  1587. }
  1588. }
  1589. }
  1590. }
  1591. }
  1592. &__footer {
  1593. border-bottom: 1px solid #eee;
  1594. height: 40px;
  1595. display: flex;
  1596. align-items: center;
  1597. justify-content: center;
  1598. .submit {
  1599. cursor: pointer;
  1600. width: 140px;
  1601. height: 32px;
  1602. background: #3f8dfd;
  1603. box-shadow: 0px 0px 6px 0px rgba(0, 0, 0, 0.2);
  1604. border-radius: 16px;
  1605. line-height: 32px;
  1606. text-align: center;
  1607. color: #fff;
  1608. font-size: 16px;
  1609. }
  1610. }
  1611. }
  1612. }
  1613. }
  1614. }
  1615. }
  1616. .take-photo {
  1617. /deep/ .el-dialog__header {
  1618. display: none;
  1619. }
  1620. /deep/ .el-dialog__body {
  1621. padding: 0;
  1622. overflow: unset;
  1623. }
  1624. &__close {
  1625. cursor: pointer;
  1626. position: absolute;
  1627. right: 0;
  1628. top: -28px;
  1629. width: 24px;
  1630. height: 24px;
  1631. line-height: 24px;
  1632. text-align: center;
  1633. color: #eee;
  1634. border: 1px solid #eee;
  1635. border-radius: 50%;
  1636. }
  1637. &__header {
  1638. height: 40px;
  1639. border-bottom: 1px solid #eee;
  1640. line-height: 40px;
  1641. font-size: 16px;
  1642. font-family: Microsoft YaHei;
  1643. font-weight: bold;
  1644. color: #333333;
  1645. padding-left: 24px;
  1646. }
  1647. &__body {
  1648. height: 400px;
  1649. padding: 40px 24px;
  1650. .left-box {
  1651. width: 336px;
  1652. float: left;
  1653. .title {
  1654. font-size: 16px;
  1655. font-family: Microsoft YaHei;
  1656. font-weight: bold;
  1657. color: #ff3b30;
  1658. line-height: 24px;
  1659. }
  1660. .content {
  1661. font-size: 14px;
  1662. font-family: Microsoft YaHei;
  1663. font-weight: 400;
  1664. color: #333333;
  1665. line-height: 28px;
  1666. margin-top: 32px;
  1667. }
  1668. }
  1669. .right-box {
  1670. float: right;
  1671. width: 400px;
  1672. height: 300px;
  1673. video {
  1674. width: 100%;
  1675. height: 100%;
  1676. }
  1677. }
  1678. }
  1679. &__footer {
  1680. height: 90px;
  1681. border-top: 1px solid #eee;
  1682. text-align: center;
  1683. .take {
  1684. display: inline-block;
  1685. width: 200px;
  1686. height: 40px;
  1687. padding: 0;
  1688. border-radius: 20px;
  1689. text-align: center;
  1690. line-height: 40px;
  1691. margin: 24px auto;
  1692. }
  1693. }
  1694. }
  1695. }
  1696. </style>