index.vue 57 KB

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