index.vue 51 KB

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