index.vue 53 KB

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