index.vue 61 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861
  1. <template>
  2. <div id="bankDetailCopy" class="bank-detail">
  3. <section class="section">
  4. <div class="section__body">
  5. <div class="left-box">
  6. <el-tabs v-model="activeName" @tab-click="tabChange">
  7. <el-tab-pane label="全部" name="0">
  8. <div class="goods-menu">
  9. <div class="goods-menu__body">
  10. <div
  11. class="item"
  12. v-for="(item, index) in bankList"
  13. :key="index"
  14. >
  15. <template v-if="item.type == 1">
  16. <div class="item__title" @click="moduleExam(item)">
  17. {{ item.name }}
  18. </div>
  19. <div class="item__content" v-if="item.showList">
  20. <div class="bank-chapter">
  21. <div
  22. class="bank-chapter__item"
  23. v-for="(chapter, chapterIndex) in item.list"
  24. :key="chapterIndex"
  25. >
  26. <div
  27. class="bank-chapter__item__text"
  28. @click="chapterExam(chapter, item.majorId)"
  29. >
  30. <span
  31. style="
  32. margin-left: 21px;
  33. margin-right: 8px;
  34. color: #a7b0b8;
  35. "
  36. ><span v-if="chapterIndex + 1 < 10"
  37. >0{{ chapterIndex + 1 }}</span
  38. ><span v-else>
  39. {{ chapterIndex + 1 }}
  40. </span></span
  41. >{{ chapter.name }}
  42. </div>
  43. <div class="bank-section" v-if="chapter.showList">
  44. <div
  45. class="bank-section__item"
  46. v-for="(section, sectionIndex) in chapter.list"
  47. :key="sectionIndex"
  48. >
  49. <div class="bank-section__item__text">
  50. <span
  51. style="margin-right: 8px; color: #a7b0b8"
  52. >●</span
  53. >
  54. {{ section.examName }}
  55. <el-button
  56. size="mini"
  57. type="primary"
  58. plain
  59. v-if="section.newRecordStatus"
  60. >上次做到</el-button
  61. >
  62. </div>
  63. <div class="btn_div">
  64. <!-- 正确率
  65. <span style="color: rgb(52, 216, 71)"
  66. >{{
  67. computedNums(
  68. section.doQuestionNum,
  69. section.questionNum
  70. )
  71. }}%</span
  72. > -->
  73. <span style="margin-left: 6px">题目数: </span
  74. ><span style="color: blue">{{
  75. section.doQuestionNum || 0
  76. }}</span>
  77. /
  78. {{ section.questionNum || 0 }}
  79. </div>
  80. <el-button
  81. v-if="section.recordStatus == -1"
  82. type="primary"
  83. @click="
  84. toDo(
  85. section,
  86. chapter.chapterExamId,
  87. item.majorId
  88. )
  89. "
  90. class="btn"
  91. >开始做题</el-button
  92. >
  93. <el-button
  94. v-if="
  95. section.recordStatus == 0 &&
  96. section.doType == 1
  97. "
  98. type="primary"
  99. @click="
  100. continueDo(
  101. section,
  102. chapter.chapterExamId,
  103. item.majorId
  104. )
  105. "
  106. class="btn"
  107. >继续做题</el-button
  108. >
  109. <el-button
  110. v-if="
  111. section.recordStatus == 1 ||
  112. (section.recordStatus == 0 &&
  113. section.doType == 2)
  114. "
  115. :disabled="
  116. section.answerNum > 0 &&
  117. section.doNum >= section.answerNum
  118. "
  119. type="primary"
  120. @click="
  121. doRepeat(
  122. section,
  123. chapter.chapterExamId,
  124. item.majorId
  125. )
  126. "
  127. class="btn"
  128. >重新做题</el-button
  129. >
  130. </div>
  131. </div>
  132. </div>
  133. </div>
  134. </div>
  135. </template>
  136. <template v-if="item.type == 2">
  137. <div class="item__content">
  138. <div class="bank-chapter">
  139. <div class="bank-chapter__item">
  140. <div
  141. class="bank-chapter__item__text"
  142. @click="chapterExam(item, 0)"
  143. >
  144. <span
  145. style="
  146. margin-left: 21px;
  147. margin-right: 8px;
  148. color: #a7b0b8;
  149. "
  150. ><span v-if="index + 1 < 10"
  151. >0{{ index + 1 }}</span
  152. ><span v-else>
  153. {{ index + 1 }}
  154. </span></span
  155. >{{ item.name }}
  156. </div>
  157. <div class="bank-section" v-if="item.showList">
  158. <div
  159. class="bank-section__item"
  160. v-for="(section, sectionIndex) in item.list"
  161. :key="sectionIndex"
  162. >
  163. <div class="bank-section__item__text">
  164. <span
  165. style="margin-right: 8px; color: #a7b0b8"
  166. >●</span
  167. >
  168. {{ section.examName }}
  169. <el-button
  170. size="mini"
  171. type="primary"
  172. plain
  173. v-if="section.newRecordStatus"
  174. >上次做到</el-button
  175. >
  176. </div>
  177. <div
  178. style="width: auto; padding: 0px 14px"
  179. class="btn_div"
  180. >
  181. <!-- 正确率
  182. <span style="color: rgb(52, 216, 71)"
  183. >{{
  184. computedNums(
  185. section.doQuestionNum,
  186. section.questionNum
  187. )
  188. }}%</span
  189. > -->
  190. <span style="margin-left: 6px">题目数: </span
  191. ><span style="color: blue">{{
  192. section.doQuestionNum || 0
  193. }}</span>
  194. /
  195. {{ section.questionNum || 0 }}
  196. </div>
  197. <el-button
  198. v-if="section.recordStatus == -1"
  199. type="primary"
  200. @click="toDo(section, item.majorId, 0)"
  201. class="btn"
  202. >开始做题</el-button
  203. >
  204. <el-button
  205. v-if="
  206. section.recordStatus == 0 &&
  207. section.doType == 1
  208. "
  209. type="primary"
  210. @click="continueDo(section, item.majorId, 0)"
  211. class="btn"
  212. >继续做题</el-button
  213. >
  214. <el-button
  215. v-if="
  216. section.recordStatus == 1 ||
  217. (section.recordStatus == 0 &&
  218. section.doType == 2)
  219. "
  220. :disabled="
  221. section.answerNum > 0 &&
  222. section.doNum >= section.answerNum
  223. "
  224. type="primary"
  225. @click="doRepeat(section, item.majorId, 0)"
  226. class="btn"
  227. >重新做题</el-button
  228. >
  229. </div>
  230. </div>
  231. </div>
  232. </div>
  233. </div>
  234. </template>
  235. <template v-if="item.type == 3">
  236. <div class="item__content">
  237. <div class="bank-section">
  238. <div class="bank-section__item">
  239. <div class="bank-section__item__text">
  240. <span style="margin-right: 8px; color: #a7b0b8"
  241. >●</span
  242. >
  243. {{ item.name }}
  244. <el-button
  245. size="mini"
  246. type="primary"
  247. plain
  248. v-if="item.newRecordStatus"
  249. >上次做到</el-button
  250. >
  251. </div>
  252. <div
  253. style="width: auto; padding: 0px 14px"
  254. class="btn_div"
  255. >
  256. <!-- 正确率
  257. <span style="color: rgb(52, 216, 71)"
  258. >{{
  259. computedNums(
  260. item.doQuestionNum,
  261. item.questionNum
  262. )
  263. }}%</span
  264. > -->
  265. <span style="margin-left: 6px">题目数: </span
  266. ><span style="color: blue">{{
  267. item.doQuestionNum || 0
  268. }}</span>
  269. / {{ item.questionNum || 0 }}
  270. </div>
  271. <el-button
  272. v-if="item.recordStatus == -1"
  273. type="primary"
  274. @click="toDo(item, 0, 0)"
  275. class="btn"
  276. >开始做题</el-button
  277. >
  278. <el-button
  279. v-if="item.recordStatus == 0 && item.doType == 1"
  280. type="primary"
  281. @click="continueDo(item, 0, 0)"
  282. class="btn"
  283. >继续做题</el-button
  284. >
  285. <el-button
  286. v-if="
  287. item.recordStatus == 1 ||
  288. (item.recordStatus == 0 && item.doType == 2)
  289. "
  290. :disabled="
  291. item.answerNum > 0 &&
  292. item.doNum >= item.answerNum
  293. "
  294. type="primary"
  295. @click="doRepeat(item, 0, 0)"
  296. class="btn"
  297. >重新做题</el-button
  298. >
  299. </div>
  300. </div>
  301. </div>
  302. </template>
  303. </div>
  304. </div>
  305. </div>
  306. </el-tab-pane>
  307. <el-tab-pane
  308. v-for="(items, indexs) in newList"
  309. :key="indexs"
  310. :label="items.paperName"
  311. :name="items.paperId + ''"
  312. >
  313. <div
  314. v-for="(item, index) in examListNew"
  315. :key="index"
  316. class="_content"
  317. >
  318. <div class="bank-section">
  319. <div class="bank-section__item">
  320. <div class="bank-section__item__text">
  321. <span style="margin-right: 8px; color: #a7b0b8">●</span>
  322. {{ item.examName }}
  323. <el-button
  324. size="mini"
  325. type="primary"
  326. plain
  327. v-if="item.newRecordStatus"
  328. >上次做到</el-button
  329. >
  330. </div>
  331. <div style="width: auto; padding: 0px 14px" class="btn_div">
  332. <!-- 正确率
  333. <span style="color: rgb(52, 216, 71)"
  334. >{{
  335. computedNums(
  336. item.doQuestionNum,
  337. item.questionNum
  338. )
  339. }}%</span
  340. > -->
  341. <span style="margin-left: 6px">题目数: </span
  342. ><span style="color: blue">{{
  343. item.doQuestionNum || 0
  344. }}</span>
  345. / {{ item.questionNum || 0 }}
  346. </div>
  347. <el-button
  348. v-if="item.recordStatus == -1"
  349. type="primary"
  350. @click="toDo(item, 0, 0)"
  351. class="btn"
  352. >开始做题</el-button
  353. >
  354. <el-button
  355. v-if="item.recordStatus == 0 && item.doType == 1"
  356. type="primary"
  357. @click="continueDo(item, 0, 0)"
  358. class="btn"
  359. >继续做题</el-button
  360. >
  361. <el-button
  362. v-if="
  363. item.recordStatus == 1 ||
  364. (item.recordStatus == 0 && item.doType == 2)
  365. "
  366. :disabled="
  367. item.answerNum > 0 && item.doNum >= item.answerNum
  368. "
  369. type="primary"
  370. @click="doRepeat(item, 0, 0)"
  371. class="btn"
  372. >重新做题</el-button
  373. >
  374. </div>
  375. </div>
  376. </div>
  377. </el-tab-pane>
  378. <el-tab-pane label="收藏题集" name="-1">
  379. <div class="goods-collect">
  380. <div class="goods-collect__header">
  381. <div class="selects">
  382. <div class="selects__item">
  383. <el-select
  384. placeholder="请选择"
  385. v-model="collectSelect"
  386. @change="getCollectData"
  387. clearable
  388. @clear="getWrongData"
  389. >
  390. <el-option
  391. v-for="(item, index) in selectList"
  392. :key="index"
  393. :label="item.paperName"
  394. :value="item.paperId"
  395. ></el-option>
  396. </el-select>
  397. </div>
  398. </div>
  399. <div class="tabs">
  400. <el-tabs v-model="collectName" @tab-click="getCollectData">
  401. <el-tab-pane label="试卷归类" name="1"></el-tab-pane>
  402. <el-tab-pane label="题型归类" name="2"></el-tab-pane>
  403. </el-tabs>
  404. </div>
  405. </div>
  406. <div class="goods-collect__body">
  407. <div class="box">
  408. <div class="title">收藏统计</div>
  409. <div class="circle">
  410. <el-progress
  411. type="circle"
  412. :width="160"
  413. :stroke-width="12"
  414. color="#FFC53D"
  415. :format="() => collectTotal || '0'"
  416. :percentage="25"
  417. ></el-progress>
  418. </div>
  419. </div>
  420. <div class="list" v-if="collectName == '1'">
  421. <div
  422. class="list__item"
  423. v-for="(item, index) in collectExamList"
  424. :key="index"
  425. >
  426. <div class="title">
  427. {{ item.examName }}
  428. </div>
  429. <div class="content clearfix">
  430. <div class="left">
  431. 收藏题<span class="red">{{ item.questionNum }}</span>
  432. </div>
  433. <div class="right">
  434. <el-button
  435. type="primary"
  436. @click="
  437. go('/subject/collect-bank/' + item.examId, {
  438. orderGoodsId: orderGoodsId,
  439. })
  440. "
  441. round
  442. plain
  443. class="btn"
  444. >重做</el-button
  445. >
  446. <el-button
  447. type="primary"
  448. @click="
  449. go('/subject/collect-bank/' + item.examId, {
  450. explain: 1,
  451. orderGoodsId: orderGoodsId,
  452. })
  453. "
  454. round
  455. plain
  456. class="btn"
  457. >解析</el-button
  458. >
  459. </div>
  460. </div>
  461. </div>
  462. </div>
  463. <div class="list" v-if="collectName == '2'">
  464. <div
  465. class="list__item"
  466. v-for="(item, index) in collectTypeList"
  467. :key="index"
  468. >
  469. <div class="title">
  470. <template v-if="item.type == 1">单选题</template>
  471. <template v-if="item.type == 2">多选题</template>
  472. <template v-if="item.type == 3">判断题</template>
  473. <template v-if="item.type == 4">案例题</template>
  474. <template v-if="item.type == 5">简答题</template>
  475. </div>
  476. <div class="content clearfix">
  477. <div class="left">
  478. 收藏题<span class="red">{{ item.num }}</span>
  479. </div>
  480. <div class="right">
  481. <el-button
  482. type="primary"
  483. @click="
  484. go('/subject/collect-type-bank/' + item.type, {
  485. orderGoodsId: orderGoodsId,
  486. })
  487. "
  488. round
  489. plain
  490. class="btn"
  491. >重做</el-button
  492. >
  493. <el-button
  494. type="primary"
  495. @click="
  496. go('/subject/collect-type-bank/' + item.type, {
  497. explain: 1,
  498. orderGoodsId: orderGoodsId,
  499. })
  500. "
  501. round
  502. plain
  503. class="btn"
  504. >解析</el-button
  505. >
  506. </div>
  507. </div>
  508. </div>
  509. </div>
  510. </div>
  511. </div>
  512. </el-tab-pane>
  513. <el-tab-pane label="错题集" name="-2">
  514. <div class="goods-collect">
  515. <div class="goods-collect__header">
  516. <div class="selects">
  517. <div class="selects__item">
  518. <el-select
  519. placeholder="请选择试卷类型"
  520. v-model="wrongSelect"
  521. clearable
  522. @clear="getWrongData"
  523. @change="getWrongData"
  524. >
  525. <el-option
  526. v-for="(item, index) in selectList"
  527. :key="index"
  528. :label="item.paperName"
  529. :value="item.paperId"
  530. ></el-option>
  531. </el-select>
  532. </div>
  533. </div>
  534. <div class="tabs">
  535. <el-tabs v-model="wrongName" @tab-click="getWrongData">
  536. <el-tab-pane label="试卷归类" name="1"></el-tab-pane>
  537. <el-tab-pane label="题型归类" name="2"></el-tab-pane>
  538. </el-tabs>
  539. </div>
  540. </div>
  541. <div class="goods-collect__body">
  542. <div class="box">
  543. <div class="title">错题统计</div>
  544. <div class="circle">
  545. <el-progress
  546. type="circle"
  547. :width="160"
  548. :stroke-width="12"
  549. color="#F5222D"
  550. :format="() => wrongTotal || '0'"
  551. :percentage="25"
  552. ></el-progress>
  553. </div>
  554. </div>
  555. <div class="list" v-if="wrongName == '1'">
  556. <div
  557. class="list__item"
  558. v-for="(item, index) in wrongExamList"
  559. :key="index"
  560. >
  561. <div class="title">
  562. {{ item.examName }}
  563. </div>
  564. <div class="content clearfix">
  565. <div class="left">
  566. 错题数<span class="red">{{
  567. item.wrongQuestionNum
  568. }}</span>
  569. </div>
  570. <div class="right">
  571. <el-button
  572. type="primary"
  573. round
  574. plain
  575. class="btn"
  576. @click="
  577. go('/subject/wrong-bank/' + item.examId, {
  578. orderGoodsId: orderGoodsId,
  579. })
  580. "
  581. >重做</el-button
  582. >
  583. <el-button
  584. type="primary"
  585. round
  586. plain
  587. class="btn"
  588. @click="
  589. go('/subject/wrong-bank/' + item.examId, {
  590. explain: 1,
  591. orderGoodsId: orderGoodsId,
  592. })
  593. "
  594. >解析</el-button
  595. >
  596. </div>
  597. </div>
  598. </div>
  599. </div>
  600. <div class="list" v-if="wrongName == '2'">
  601. <div
  602. class="list__item"
  603. v-for="(item, index) in wrongTypeList"
  604. :key="index"
  605. >
  606. <div class="title">
  607. <template v-if="item.type == 1">单选题</template>
  608. <template v-if="item.type == 2">多选题</template>
  609. <template v-if="item.type == 3">判断题</template>
  610. <template v-if="item.type == 4">案例题</template>
  611. <template v-if="item.type == 5">简答题</template>
  612. </div>
  613. <div class="content clearfix">
  614. <div class="left">
  615. 错题数<span class="red">{{ item.num }}</span>
  616. </div>
  617. <div class="right">
  618. <el-button
  619. type="primary"
  620. round
  621. plain
  622. class="btn"
  623. @click="
  624. go('/subject/wrong-type-bank/' + item.type, {
  625. orderGoodsId: orderGoodsId,
  626. })
  627. "
  628. >重做</el-button
  629. >
  630. <el-button
  631. type="primary"
  632. round
  633. plain
  634. class="btn"
  635. @click="
  636. go('/subject/wrong-type-bank/' + item.type, {
  637. explain: 1,
  638. orderGoodsId: orderGoodsId,
  639. })
  640. "
  641. >解析</el-button
  642. >
  643. </div>
  644. </div>
  645. </div>
  646. </div>
  647. </div>
  648. </div>
  649. </el-tab-pane>
  650. </el-tabs>
  651. </div>
  652. <div v-if="false" class="right-box">
  653. <div class="right-box__header">
  654. <div class="title">
  655. <div
  656. @click="
  657. go('/person-center/my-bank/bank-statistics/' + goodsId, {
  658. orderGoodsId: orderGoodsId,
  659. })
  660. "
  661. >
  662. 做题统计>
  663. </div>
  664. </div>
  665. <div class="content">
  666. <div class="left">
  667. <div class="title">总进度</div>
  668. <div class="note">
  669. {{
  670. goodsCount.totalNum > 0
  671. ? (
  672. (goodsCount.doNum / goodsCount.totalNum) *
  673. 100
  674. ).toFixed(
  675. (goodsCount.doNum / goodsCount.totalNum) * 100 == 100
  676. ? 0
  677. : 1
  678. )
  679. : 0
  680. }}%
  681. </div>
  682. </div>
  683. <div class="right">
  684. <div class="title"><span class="blue">已答题</span>/未答题</div>
  685. <div class="note">
  686. <span class="blue">{{ goodsCount.doNum }}</span
  687. >/{{ goodsCount.totalNum - goodsCount.doNum }}
  688. </div>
  689. </div>
  690. </div>
  691. </div>
  692. <div
  693. class="right-box__body"
  694. v-if="recommendList.goodsList && recommendList.goodsList.length"
  695. >
  696. <div class="title">
  697. 推荐题库
  698. <span class="more" @click="go('/bank-list')">更多></span>
  699. </div>
  700. <ul class="list">
  701. <li
  702. class="course-item"
  703. v-for="(itemy, index) in compyRecommend(
  704. recommendList.goodsList
  705. )"
  706. :key="index"
  707. >
  708. <GoodsItem :item="itemy"></GoodsItem>
  709. <!-- <div
  710. class="course-item__img"
  711. :style="`background-image:url(${$tools.splitImgHost(
  712. itemy.coverUrl,
  713. true
  714. )})`"
  715. >
  716. <div class="note" v-if="itemy.year">{{ itemy.year }}</div>
  717. </div>
  718. <div class="course-item__title">
  719. {{ itemy.goodsName }}
  720. </div>
  721. <div class="course-item__desc">
  722. <div class="price">¥{{ itemy.standPrice }}</div>
  723. <a class="add" @click.stop="addCart(true, itemy.goodsId)"
  724. >加购物车</a
  725. >
  726. </div> -->
  727. </li>
  728. </ul>
  729. </div>
  730. </div>
  731. </div>
  732. </section>
  733. </div>
  734. </template>
  735. <script>
  736. import GoodsItem from "@/components/goodsItem/index";
  737. export default {
  738. name: "BankDetailCopy",
  739. components: {
  740. GoodsItem,
  741. },
  742. data() {
  743. return {
  744. newList: [],
  745. examListNew: [],
  746. orderGoodsId: "",
  747. activeName: "0",
  748. collectName: "1",
  749. wrongName: "1",
  750. goodsId: "",
  751. goodsDetail: {},
  752. goodsCount: {},
  753. bankList: [],
  754. selectList: [],
  755. collectSelect: "",
  756. wrongSelect: "",
  757. hasClickList: [],
  758. collectTypeList: [],
  759. collectExamList: [],
  760. wrongTypeList: [],
  761. wrongExamList: [],
  762. collectTotal: 0,
  763. wrongTotal: 0,
  764. recommendList: [],
  765. needOpen: true, //是否需要打开第一章节
  766. recordItem: null,
  767. };
  768. },
  769. mounted() {},
  770. computed: {
  771. compyRecommend: function () {
  772. return function (array) {
  773. let ary = [];
  774. if (array) {
  775. for (let i = 0; i < array.length; i++) {
  776. if (i >= 5) {
  777. break;
  778. } else {
  779. ary.push(array[i]);
  780. }
  781. }
  782. }
  783. return ary;
  784. };
  785. },
  786. computedNums: function () {
  787. return function (doNum, totalNum) {
  788. let ary = 0;
  789. ary = parseInt(doNum ? doNum : 0) / parseInt(totalNum ? totalNum : 0);
  790. return (ary * 100).toFixed(0);
  791. };
  792. },
  793. },
  794. methods: {
  795. async initData(data, recordItem) {
  796. this.recordItem = recordItem;
  797. this.orderGoodsId = data.orderGoodsId;
  798. this.goodsId = data.goodsId;
  799. await this.getExamType(data.goodsId);
  800. this.goodsBankQuestionNum();
  801. if (this.recordItem) {
  802. this.getRecordItem();
  803. } else {
  804. await this.goodsBank();
  805. }
  806. this.getDetail();
  807. this.examaperList();
  808. },
  809. getRecordItem() {
  810. this.$request
  811. .goodsBank({
  812. orderGoodsId: this.recordItem.orderGoodsId,
  813. goodsId: this.recordItem.goodsId,
  814. })
  815. .then(async (res) => {
  816. res.data.forEach((item) => {
  817. if (item.type == 2 || item.type == 1) {
  818. item.showList = false;
  819. item.list = [];
  820. }
  821. });
  822. this.bankList = res.data;
  823. // for (let i = 0; i < this.bankList.length; i++) {
  824. // if (this.bankList[i].type == 1) {
  825. // await this.moduleExam(this.bankList[i]);
  826. // break;
  827. // } else if (this.bankList[i].type == 2) {
  828. // this.needOpen = false;
  829. // await this.chapterExam(this.bankList[i], 0);
  830. // break;
  831. // }
  832. // }
  833. const DW = this.bankList.findIndex((item) => {
  834. if (
  835. item.type == 1 &&
  836. this.recordItem.moduleExamId > 0 &&
  837. this.recordItem.moduleExamId == item.majorId
  838. ) {
  839. return item;
  840. } else if (
  841. item.type == 2 &&
  842. !this.recordItem.moduleExamId &&
  843. this.recordItem.chapterExamId == item.majorId
  844. ) {
  845. return item;
  846. } else if (
  847. item.type == 3 &&
  848. !this.recordItem.moduleExamId &&
  849. !this.recordItem.chapterExamId &&
  850. this.recordItem.examId == item.majorId
  851. ) {
  852. return item;
  853. }
  854. });
  855. if (DW != -1) {
  856. if (this.bankList[DW].type == 1) {
  857. console.log(1)
  858. this.$request
  859. .goodsChapterList({
  860. orderGoodsId: this.orderGoodsId,
  861. moduleExamId: this.recordItem.moduleExamId,
  862. goodsId: this.goodsId,
  863. })
  864. .then(async (res) => {
  865. res.data.forEach((item) => {
  866. item.showList = false;
  867. item.list = [];
  868. });
  869. this.$set(
  870. this.bankList[DW],
  871. "showList",
  872. !this.bankList[DW].showList
  873. );
  874. this.$set(this.bankList[DW], "list", res.data);
  875. const DWChapter = this.bankList[DW].list.findIndex(
  876. (items) => {
  877. return (
  878. items.chapterExamId == this.recordItem.chapterExamId
  879. );
  880. }
  881. );
  882. if (DWChapter != -1) {
  883. this.$request
  884. .bankExamExamList({
  885. orderGoodsId: this.orderGoodsId,
  886. moduleExamId: this.bankList[DW].majorId,
  887. chapterExamId:
  888. this.bankList[DW].list[DWChapter].chapterExamId,
  889. goodsId: this.goodsId,
  890. })
  891. .then((res) => {
  892. this.$set(
  893. this.bankList[DW].list[DWChapter],
  894. "showList",
  895. !this.bankList[DW].list[DWChapter].showList
  896. );
  897. this.$set(
  898. this.bankList[DW].list[DWChapter],
  899. "list",
  900. res.data
  901. );
  902. const DWChapters = this.bankList[DW].list[
  903. DWChapter
  904. ].list.findIndex((itemsy) => {
  905. return itemsy.examId == this.recordItem.examId;
  906. });
  907. if (DWChapters != -1) {
  908. this.$set(
  909. this.bankList[DW].list[DWChapter].list[DWChapters],
  910. "newRecordStatus",
  911. true
  912. );
  913. }
  914. });
  915. }
  916. });
  917. } else if (this.bankList[DW].type == 2) {
  918. console.log(2)
  919. this.$request
  920. .bankExamExamList({
  921. orderGoodsId: this.orderGoodsId,
  922. moduleExamId: 0,
  923. chapterExamId: this.bankList[DW].majorId,
  924. goodsId: this.goodsId,
  925. })
  926. .then((res) => {
  927. this.$set(
  928. this.bankList[DW],
  929. "showList",
  930. !this.bankList[DW].showList
  931. );
  932. this.$set(this.bankList[DW], "list", res.data);
  933. const DWChapter = this.bankList[DW].list.findIndex(
  934. (items) => {
  935. return items.examId == this.recordItem.examId;
  936. }
  937. );
  938. if (DWChapter != -1) {
  939. this.$set(
  940. this.bankList[DW].list[DWChapter],
  941. "newRecordStatus",
  942. true
  943. );
  944. }
  945. });
  946. } else if (this.bankList[DW].type == 3) {
  947. console.log(3)
  948. this.$set(this.bankList[DW], "newRecordStatus", true);
  949. }
  950. }
  951. console.log("DW", DW,this.bankList);
  952. });
  953. },
  954. getExamType(id) {
  955. return new Promise((resolve, reject) => {
  956. this.$request.exampapergoodsExamPaper(id).then((res) => {
  957. this.newList = res.data;
  958. if (parseInt(this.activeName) > 0) {
  959. this.tabChange({ name: this.activeName });
  960. }
  961. resolve();
  962. });
  963. });
  964. },
  965. /**
  966. * 跳转
  967. */
  968. toGoodsDetail(item) {
  969. this.$router.push({
  970. path: "/bank-detail/" + item.goodsId,
  971. query: {
  972. orderGoodsId: item.orderGoodsId,
  973. },
  974. });
  975. },
  976. addCart(status, goodsId) {
  977. this.$request
  978. .addCart({ goodsId: status ? goodsId : this.goodsId })
  979. .then((res) => {
  980. this.$message({
  981. message: "加入购物车成功",
  982. type: "success",
  983. });
  984. })
  985. .catch((err) => {
  986. if (err.code == 500) {
  987. this.$message({
  988. message: err.msg,
  989. type: "warning",
  990. });
  991. }
  992. });
  993. },
  994. /**
  995. *
  996. 获取推荐列表
  997. */
  998. getRecommend() {
  999. this.$request
  1000. .appCommonActivityRecommendList({
  1001. businessId: this.goodsDetail.businessId,
  1002. type: 2,
  1003. })
  1004. .then((res) => {
  1005. if (res.rows.length) {
  1006. this.recommendList = res.rows[0];
  1007. }
  1008. });
  1009. },
  1010. go(path, query = {}) {
  1011. console.log(path, query);
  1012. this.$router.push({
  1013. path,
  1014. query,
  1015. });
  1016. },
  1017. examaperList() {
  1018. this.$request.examaperList().then((res) => {
  1019. this.selectList = res.rows;
  1020. });
  1021. },
  1022. /**
  1023. * 获取用户商品统计数据
  1024. */
  1025. goodsBankQuestionNum() {
  1026. this.$request.goodsBankQuestionNum(this.orderGoodsId).then((res) => {
  1027. this.goodsCount = res.data;
  1028. });
  1029. },
  1030. getDetail() {
  1031. this.$request.commonGoodsDetail(this.goodsId).then((res) => {
  1032. this.goodsDetail = res.data;
  1033. this.getRecommend();
  1034. });
  1035. },
  1036. /**
  1037. * 获取课程目录
  1038. */
  1039. goodsBank() {
  1040. return new Promise((resolve, reject) => {
  1041. this.$request
  1042. .goodsBank({
  1043. orderGoodsId: this.orderGoodsId,
  1044. goodsId: this.goodsId,
  1045. })
  1046. .then(async (res) => {
  1047. res.data.forEach((item) => {
  1048. if (item.type == 2 || item.type == 1) {
  1049. item.showList = false;
  1050. item.list = [];
  1051. }
  1052. });
  1053. this.bankList = res.data;
  1054. for (let i = 0; i < this.bankList.length; i++) {
  1055. if (this.bankList[i].type == 1) {
  1056. await this.moduleExam(this.bankList[i]);
  1057. break;
  1058. } else if (this.bankList[i].type == 2) {
  1059. this.needOpen = false;
  1060. await this.chapterExam(this.bankList[i], 0);
  1061. break;
  1062. }
  1063. }
  1064. resolve();
  1065. });
  1066. });
  1067. },
  1068. /**
  1069. * 展开模块卷
  1070. */
  1071. moduleExam(Module) {
  1072. return new Promise((resolve, reject) => {
  1073. if (Module.list.length) {
  1074. Module.showList = !Module.showList;
  1075. return;
  1076. }
  1077. this.$request
  1078. .goodsChapterList({
  1079. orderGoodsId: this.orderGoodsId,
  1080. moduleExamId: Module.majorId,
  1081. goodsId: this.goodsId,
  1082. })
  1083. .then(async (res) => {
  1084. console.log(res, "resresres");
  1085. res.data.forEach((item) => {
  1086. item.showList = false;
  1087. item.list = [];
  1088. });
  1089. Module.showList = !Module.showList;
  1090. Module.list = res.data;
  1091. if (this.needOpen) {
  1092. this.needOpen = false;
  1093. await this.chapterExam(Module.list[0], Module.majorId);
  1094. }
  1095. resolve();
  1096. });
  1097. });
  1098. },
  1099. /**
  1100. * 展开章卷
  1101. */
  1102. chapterExam(chapter, moduleId = 0) {
  1103. return new Promise((resolve, reject) => {
  1104. if (chapter.list.length) {
  1105. chapter.showList = !chapter.showList;
  1106. return;
  1107. }
  1108. this.$request
  1109. .bankExamExamList({
  1110. orderGoodsId: this.orderGoodsId,
  1111. moduleExamId: moduleId,
  1112. chapterExamId: chapter.chapterExamId || chapter.majorId,
  1113. goodsId: this.goodsId,
  1114. })
  1115. .then((res) => {
  1116. console.log(res, "res");
  1117. chapter.showList = !chapter.showList;
  1118. chapter.list = res.data;
  1119. resolve();
  1120. });
  1121. });
  1122. },
  1123. /**
  1124. * 去做题
  1125. */
  1126. async toDo(section, chapterId, moduleId) {
  1127. let count = await this.examRecordCount(section.examId || section.majorId);
  1128. let answerNum = await this.getExamDetail(
  1129. section.examId || section.majorId
  1130. );
  1131. //超过答题次数
  1132. if (answerNum > 0 && count >= answerNum) {
  1133. this.$message({
  1134. type: "warning",
  1135. message: "该试卷只能答题" + answerNum + "次!",
  1136. });
  1137. return;
  1138. }
  1139. this.$router.push({
  1140. path: "/bank-exam/" + this.goodsId,
  1141. query: {
  1142. examId: section.examId || section.majorId,
  1143. moduleId: moduleId || 0,
  1144. chapterId: chapterId || 0,
  1145. orderGoodsId: this.orderGoodsId,
  1146. },
  1147. });
  1148. },
  1149. /**
  1150. * 继续做题
  1151. */
  1152. continueDo(section, chapterId, moduleId) {
  1153. console.log(section);
  1154. this.$router.push({
  1155. path: "/bank-exam-continue/" + this.goodsId,
  1156. query: {
  1157. recordId: section.recordId,
  1158. examId: section.examId || section.majorId,
  1159. chapterId: chapterId,
  1160. moduleId: moduleId,
  1161. orderGoodsId: this.orderGoodsId,
  1162. },
  1163. });
  1164. },
  1165. /**
  1166. * 重做
  1167. * @param {Object} recordId
  1168. * @param {Object} examId
  1169. * @param {Object} goodsId
  1170. * @param {Object} chapterExamId
  1171. */
  1172. async doRepeat(section, chapterId = 0, moduleId = 0) {
  1173. let count = await this.examRecordCount(section.examId || section.majorId);
  1174. let answerNum = await this.getExamDetail(
  1175. section.examId || section.majorId
  1176. );
  1177. //超过答题次数
  1178. if (answerNum > 0 && count >= answerNum) {
  1179. this.$message({
  1180. type: "warning",
  1181. message: "该试卷只能答题" + answerNum + "次!",
  1182. });
  1183. return;
  1184. }
  1185. this.$confirm(`是否清空答案重做?`, "提示", {
  1186. confirmButtonText: "重做",
  1187. cancelButtonText: "查看上次",
  1188. closeOnClickModal: false,
  1189. closeOnPressEscape: false,
  1190. distinguishCancelAndClose: false,
  1191. showClose: false,
  1192. })
  1193. .then((_) => {
  1194. this.$router.push({
  1195. path: "/bank-exam/" + this.goodsId,
  1196. query: {
  1197. examId: section.examId || section.majorId,
  1198. moduleId: moduleId || 0,
  1199. chapterId: chapterId || 0,
  1200. orderGoodsId: this.orderGoodsId,
  1201. },
  1202. });
  1203. })
  1204. .catch((_) => {
  1205. this.$router.push({
  1206. path: "/bank-exam-all-explain/" + section.recordId,
  1207. query: {
  1208. examId: section.examId || section.majorId,
  1209. moduleId: moduleId || 0,
  1210. chapterId: chapterId || 0,
  1211. goodsId: this.goodsId,
  1212. orderGoodsId: this.orderGoodsId,
  1213. },
  1214. });
  1215. });
  1216. },
  1217. /**
  1218. * 查询试卷历史做题次数
  1219. */
  1220. examRecordCount(examId) {
  1221. return new Promise((resolve) => {
  1222. this.$request
  1223. .examRecordCount({
  1224. examId: examId,
  1225. orderGoodsId: this.orderGoodsId,
  1226. })
  1227. .then((res) => {
  1228. resolve(res.data);
  1229. });
  1230. });
  1231. },
  1232. /**
  1233. * @param {Object} exam_id
  1234. * 获取试卷可以做的次数
  1235. */
  1236. getExamDetail(exam_id) {
  1237. return new Promise((resolve) => {
  1238. this.$request.getExamDetail(exam_id).then((res) => {
  1239. resolve(res.data.answerNum);
  1240. });
  1241. });
  1242. },
  1243. getWrongData() {
  1244. if (this.wrongName == "1") {
  1245. //试卷归类
  1246. this.wrongRecordList();
  1247. } else if (this.wrongName == "2") {
  1248. //题型归类
  1249. this.wrongRecordTypeList();
  1250. }
  1251. },
  1252. wrongRecordList() {
  1253. this.$request
  1254. .wrongRecordList({
  1255. paperId: this.wrongSelect,
  1256. goodsId: this.goodsId,
  1257. })
  1258. .then((res) => {
  1259. this.wrongExamList = res.rows;
  1260. let total = 0;
  1261. res.rows.forEach((item) => {
  1262. total += item.wrongQuestionNum;
  1263. });
  1264. this.wrongTotal = total;
  1265. });
  1266. },
  1267. wrongRecordTypeList() {
  1268. this.$request
  1269. .wrongRecordTypeList({
  1270. paperId: this.wrongSelect,
  1271. goodsId: this.goodsId,
  1272. })
  1273. .then((res) => {
  1274. this.wrongTypeList = res.rows;
  1275. let total = 0;
  1276. res.rows.forEach((item) => {
  1277. total += item.num;
  1278. });
  1279. this.wrongTotal = total;
  1280. });
  1281. },
  1282. getCollectData() {
  1283. if (this.collectName == "1") {
  1284. //试卷归类
  1285. this.goodsCollectExamList();
  1286. } else if (this.collectName == "2") {
  1287. //题型归类
  1288. this.collectQuestionTypeList();
  1289. }
  1290. },
  1291. /**
  1292. * 收藏按试卷分类
  1293. */
  1294. goodsCollectExamList() {
  1295. this.$request
  1296. .goodsCollectExamList({
  1297. paperId: this.collectSelect,
  1298. goodsId: this.goodsId,
  1299. })
  1300. .then((res) => {
  1301. this.collectExamList = res.rows;
  1302. let total = 0;
  1303. res.rows.forEach((item) => {
  1304. total += item.questionNum;
  1305. });
  1306. this.collectTotal = total;
  1307. });
  1308. },
  1309. /**
  1310. * 收藏按题型分类
  1311. */
  1312. collectQuestionTypeList() {
  1313. this.$request
  1314. .collectQuestionTypeList({
  1315. paperId: this.wrongSelect,
  1316. goodsId: this.goodsId,
  1317. })
  1318. .then((res) => {
  1319. this.collectTypeList = res.rows;
  1320. let total = 0;
  1321. res.rows.forEach((item) => {
  1322. total += item.num;
  1323. });
  1324. this.collectTotal = total;
  1325. });
  1326. },
  1327. tabChange(e) {
  1328. if (parseInt(e.name) > 0) {
  1329. this.$request
  1330. .bankexamgetPaperExamList({
  1331. goodsId: this.goodsId,
  1332. paperId: e.name,
  1333. orderGoodsId: this.orderGoodsId,
  1334. })
  1335. .then((res) => {
  1336. console.log(res, "resssssss");
  1337. this.examListNew = res.data;
  1338. });
  1339. }
  1340. if (this.hasClickList.indexOf(e.name) != -1) {
  1341. return;
  1342. }
  1343. this.hasClickList.push(e.name);
  1344. if (e.name == "2") {
  1345. //收藏集
  1346. this.getCollectData();
  1347. } else if (e.name == "3") {
  1348. //错题集
  1349. this.getWrongData();
  1350. }
  1351. },
  1352. },
  1353. };
  1354. </script>
  1355. <!-- Add "scoped" attribute to limit CSS to this component only -->
  1356. <style scoped lang="scss">
  1357. .btn_div {
  1358. user-select: none;
  1359. color: #666666;
  1360. margin-right: 10px;
  1361. padding: 0px 14px;
  1362. height: 32px;
  1363. line-height: 32px;
  1364. }
  1365. .bank-detail {
  1366. .section {
  1367. &__header {
  1368. height: 40px;
  1369. display: flex;
  1370. align-items: center;
  1371. padding: 0 20px;
  1372. }
  1373. &__body {
  1374. .left-box {
  1375. // float: left;
  1376. // width: 768px;
  1377. /deep/.el-tabs__item {
  1378. height: 98px;
  1379. line-height: 98px;
  1380. }
  1381. .goods-menu {
  1382. // padding: 0 16px 16px;
  1383. // border-radius: 10px;
  1384. // background: #f5f7fa;
  1385. &__header {
  1386. display: flex;
  1387. padding-right: 8px;
  1388. align-items: center;
  1389. .title {
  1390. padding: 10px 0;
  1391. font-size: 16px;
  1392. font-family: Microsoft YaHei;
  1393. font-weight: bold;
  1394. color: #333333;
  1395. flex: 1;
  1396. }
  1397. .question-num {
  1398. font-size: 14px;
  1399. font-family: Microsoft YaHei;
  1400. font-weight: 400;
  1401. color: #999999;
  1402. text-align: center;
  1403. display: inline-block;
  1404. width: 80px;
  1405. }
  1406. .question-do {
  1407. width: 88px;
  1408. }
  1409. }
  1410. &__body {
  1411. .item {
  1412. overflow: hidden;
  1413. background: #fff;
  1414. // padding: 0 10px;
  1415. &__title {
  1416. padding: 20px 21px;
  1417. cursor: pointer;
  1418. font-size: 16px;
  1419. font-family: Microsoft YaHei;
  1420. font-weight: bold;
  1421. color: #333333;
  1422. background-color: #f8f8f9;
  1423. .note {
  1424. display: inline-block;
  1425. margin-left: 20px;
  1426. width: 40px;
  1427. height: 24px;
  1428. border: 1px solid #ff3b30;
  1429. border-radius: 8px;
  1430. line-height: 22px;
  1431. color: #ff3b30;
  1432. text-align: center;
  1433. }
  1434. }
  1435. &__content {
  1436. margin-top: 12px;
  1437. background: #fff;
  1438. .bank-chapter {
  1439. margin-left: 4px;
  1440. &__item {
  1441. font-size: 16px;
  1442. &__text {
  1443. padding-top: 20px;
  1444. padding-bottom: 20px;
  1445. border-bottom: 1px solid #eeeeee;
  1446. cursor: pointer;
  1447. flex: 1;
  1448. }
  1449. }
  1450. }
  1451. .bank-section {
  1452. margin-left: 25px;
  1453. color: #99a0a7;
  1454. &__item {
  1455. padding-top: 20px;
  1456. padding-bottom: 20px;
  1457. // border-bottom: 1px solid #eeeeee;
  1458. font-size: 16px;
  1459. display: flex;
  1460. &__text {
  1461. flex: 1;
  1462. }
  1463. .btn {
  1464. margin-right: 20px;
  1465. width: 88px;
  1466. height: 32px;
  1467. padding: 0;
  1468. border-radius: 16px;
  1469. line-height: 32px;
  1470. text-align: center;
  1471. cursor: pointer;
  1472. }
  1473. }
  1474. }
  1475. }
  1476. }
  1477. }
  1478. }
  1479. .goods-collect {
  1480. &__header {
  1481. .selects {
  1482. display: flex;
  1483. justify-content: space-between;
  1484. &__item {
  1485. width: 360px;
  1486. height: 40px;
  1487. border-radius: 8px;
  1488. .el-select {
  1489. width: 100%;
  1490. }
  1491. /deep/ .el-input__inner {
  1492. background: #fafafa;
  1493. border: 1px solid #d9d9d9;
  1494. }
  1495. }
  1496. }
  1497. }
  1498. &__body {
  1499. .box {
  1500. width: 300px;
  1501. height: 240px;
  1502. background: #ffffff;
  1503. border: 1px solid #d9d9d9;
  1504. border-radius: 8px;
  1505. padding: 16px;
  1506. .title {
  1507. font-size: 14px;
  1508. font-family: Microsoft YaHei;
  1509. font-weight: 400;
  1510. color: #333333;
  1511. }
  1512. .circle {
  1513. width: 160px;
  1514. height: 160px;
  1515. margin: 10px auto 0;
  1516. }
  1517. }
  1518. .list {
  1519. overflow: hidden;
  1520. &__item {
  1521. margin-top: 16px;
  1522. height: 98px;
  1523. background: #f7f9fc;
  1524. box-shadow: 0px 3px 6px 0px #e1e6ed;
  1525. border-radius: 8px;
  1526. .title {
  1527. padding: 10px 16px;
  1528. font-size: 16px;
  1529. font-family: Microsoft YaHei;
  1530. font-weight: bold;
  1531. color: #333333;
  1532. }
  1533. .content {
  1534. border-top: 1px solid #eee;
  1535. .left {
  1536. float: left;
  1537. margin-left: 16px;
  1538. margin-top: 10px;
  1539. padding: 4px 12px;
  1540. border: 1px solid #666666;
  1541. border-radius: 4px;
  1542. font-size: 14px;
  1543. .red {
  1544. margin-left: 12px;
  1545. color: #f5222d;
  1546. font-size: 14px;
  1547. }
  1548. }
  1549. .right {
  1550. float: right;
  1551. margin-right: 16px;
  1552. margin-top: 10px;
  1553. .btn {
  1554. width: 88px;
  1555. height: 32px;
  1556. border-radius: 16px;
  1557. text-align: center;
  1558. padding: 0;
  1559. line-height: 32px;
  1560. }
  1561. }
  1562. }
  1563. }
  1564. }
  1565. }
  1566. }
  1567. }
  1568. .right-box {
  1569. width: 300px;
  1570. float: right;
  1571. &__header {
  1572. height: 98px;
  1573. border-bottom: 2px solid #e4e7ed;
  1574. .title {
  1575. cursor: pointer;
  1576. height: 32px;
  1577. font-size: 14px;
  1578. font-family: Microsoft YaHei;
  1579. font-weight: 400;
  1580. color: #333333;
  1581. line-height: 32px;
  1582. }
  1583. .content {
  1584. height: 64px;
  1585. font-size: 0;
  1586. .left {
  1587. width: 50%;
  1588. display: inline-block;
  1589. border-right: 1px solid #e4e7ed;
  1590. .title {
  1591. font-size: 14px;
  1592. font-family: Microsoft YaHei;
  1593. font-weight: 400;
  1594. color: #999999;
  1595. }
  1596. .note {
  1597. font-size: 24px;
  1598. font-family: Microsoft YaHei;
  1599. font-weight: bold;
  1600. color: #3f8dfd;
  1601. }
  1602. }
  1603. .right {
  1604. text-align: center;
  1605. display: inline-block;
  1606. width: 50%;
  1607. .title {
  1608. font-size: 14px;
  1609. font-family: Microsoft YaHei;
  1610. font-weight: 400;
  1611. color: #999999;
  1612. .blue {
  1613. color: #3f8dfd;
  1614. }
  1615. }
  1616. .note {
  1617. font-size: 24px;
  1618. font-family: Microsoft YaHei;
  1619. color: #999999;
  1620. .blue {
  1621. font-size: 24px;
  1622. color: #3f8dfd;
  1623. }
  1624. }
  1625. }
  1626. }
  1627. }
  1628. &__body {
  1629. .title {
  1630. margin-top: 15px;
  1631. font-size: 16px;
  1632. font-family: Microsoft YaHei;
  1633. font-weight: 400;
  1634. color: #333333;
  1635. text-shadow: 0px 6px 6px rgba(85, 158, 255, 0.08);
  1636. position: relative;
  1637. .more {
  1638. cursor: pointer;
  1639. font-size: 16px;
  1640. font-family: Microsoft YaHei;
  1641. font-weight: 400;
  1642. color: #999999;
  1643. position: absolute;
  1644. right: 0;
  1645. }
  1646. }
  1647. .list {
  1648. .course-item {
  1649. // margin: 110px 0 0;
  1650. // width: 300px;
  1651. // height: 178px;
  1652. // background: #ffffff;
  1653. // box-shadow: 0px 10px 13px 3px rgba(63, 141, 253, 0.1);
  1654. // border-radius: 10px;
  1655. // position: relative;
  1656. // background: #fff;
  1657. // padding-top: 100px;
  1658. // &__img {
  1659. // width: 280px;
  1660. // height: 178px;
  1661. // background: #ffffff;
  1662. // box-shadow: 0px 0px 9px 1px rgba(0, 0, 0, 0.08);
  1663. // border-radius: 10px;
  1664. // position: absolute;
  1665. // left: 10px;
  1666. // top: -78px;
  1667. // background: rgba(122, 136, 246, 1);
  1668. // overflow: hidden;
  1669. // background: no-repeat center center;
  1670. // background-size: 280px 178px;
  1671. // .note {
  1672. // width: 80px;
  1673. // height: 24px;
  1674. // background: #d94404;
  1675. // box-shadow: 0px 1px 1px 0px rgba(248, 78, 5, 0.4);
  1676. // border-radius: 10px 0px 20px 0px;
  1677. // text-align: center;
  1678. // line-height: 24px;
  1679. // color: #fff;
  1680. // }
  1681. // }
  1682. // &__title {
  1683. // margin: 0 8px;
  1684. // font-size: 14px;
  1685. // font-family: Microsoft YaHei;
  1686. // font-weight: 400;
  1687. // color: #333333;
  1688. // line-height: 24px;
  1689. // }
  1690. // &__desc {
  1691. // height: 32px;
  1692. // position: absolute;
  1693. // left: 0;
  1694. // right: 0;
  1695. // bottom: 0;
  1696. // margin-left: 8px;
  1697. // display: flex;
  1698. // justify-content: space-between;
  1699. // .price {
  1700. // font-size: 18px;
  1701. // font-family: Microsoft YaHei;
  1702. // font-weight: bold;
  1703. // color: #ff2d55;
  1704. // line-height: 32px;
  1705. // }
  1706. // .add {
  1707. // display: block;
  1708. // width: 118px;
  1709. // height: 32px;
  1710. // line-height: 30px;
  1711. // background: #f2f4f7;
  1712. // border-radius: 10px 0px 10px 0px;
  1713. // font-size: 16px;
  1714. // color: #3f8dfd;
  1715. // text-align: center;
  1716. // &:hover {
  1717. // background: #3f8dfd;
  1718. // color: #f2f4f7;
  1719. // }
  1720. // }
  1721. // }
  1722. }
  1723. }
  1724. }
  1725. }
  1726. }
  1727. }
  1728. }
  1729. ._content {
  1730. margin-top: 6px;
  1731. background: #fff;
  1732. .bank-chapter {
  1733. margin-left: 4px;
  1734. &__item {
  1735. font-size: 16px;
  1736. &__text {
  1737. padding-top: 20px;
  1738. padding-bottom: 20px;
  1739. border-bottom: 1px solid #eeeeee;
  1740. cursor: pointer;
  1741. flex: 1;
  1742. }
  1743. }
  1744. }
  1745. .bank-section {
  1746. margin-left: 25px;
  1747. color: #99a0a7;
  1748. &__item {
  1749. padding-bottom: 6px;
  1750. // border-bottom: 1px solid #eeeeee;
  1751. font-size: 16px;
  1752. display: flex;
  1753. &__text {
  1754. flex: 1;
  1755. }
  1756. .btn {
  1757. margin-right: 20px;
  1758. width: 88px;
  1759. height: 32px;
  1760. padding: 0;
  1761. border-radius: 16px;
  1762. line-height: 32px;
  1763. text-align: center;
  1764. cursor: pointer;
  1765. }
  1766. }
  1767. }
  1768. }
  1769. </style>