courseData.vue 59 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800
  1. <template>
  2. <div id="courseData">
  3. <el-dialog title="切换科目" :visible.sync="dialogVisible" width="1100px">
  4. <div class="headerStyle" v-if="Object.keys(activeItem).length">
  5. <p class="title">当前科目</p>
  6. <div
  7. class="course-items"
  8. >
  9. <div class="course-items__header">
  10. <div
  11. class="time"
  12. v-if="activeItem.serviceStartTime && activeItem.serviceEndTime"
  13. >
  14. 学习服务期:{{
  15. $tools.timestampToTime(activeItem.serviceStartTime, false)
  16. }}
  17. {{ $tools.timestampToTime(activeItem.serviceEndTime, false) }}
  18. </div>
  19. <div class="state">
  20. <template
  21. v-if="
  22. activeItem.serviceStartTime &&
  23. (sysTime < activeItem.serviceStartTime ||
  24. sysTime > activeItem.serviceEndTime)
  25. "
  26. >
  27. <div class="red">不在学习服务期,不可以学习了哦</div>
  28. </template>
  29. <template v-else>
  30. <template
  31. v-if="
  32. !(activeItem.classEndTime && activeItem.classEndTime < sysTime) &&
  33. !(activeItem.classStartTime && activeItem.classStartTime > sysTime)
  34. "
  35. >
  36. <template
  37. v-if="activeItem.periodStatus == -1 || activeItem.periodStatus == 2"
  38. >
  39. <template
  40. v-if="
  41. activeItem.classStatus == 1 || activeItem.classStatus === null
  42. "
  43. >
  44. <template
  45. v-if="
  46. sysTime >= activeItem.serviceStartTime &&
  47. sysTime <= activeItem.serviceEndTime
  48. "
  49. >
  50. 学习状态:
  51. <div
  52. class="note"
  53. v-if="activeItem.stuAllNum + activeItem.recordNum == 0"
  54. >
  55. 未学习
  56. </div>
  57. <div
  58. class="note note--yellow"
  59. v-else-if="
  60. activeItem.stuAllNum + activeItem.recordNum > 0 &&
  61. activeItem.stuAllNum + activeItem.recordNum <
  62. activeItem.secAllNum + activeItem.examNum
  63. "
  64. >
  65. 学习中
  66. </div>
  67. <div
  68. class="note note--green"
  69. v-else-if="
  70. activeItem.stuAllNum + activeItem.recordNum >=
  71. activeItem.secAllNum + activeItem.examNum
  72. "
  73. >
  74. 已学完
  75. </div>
  76. </template>
  77. <template v-else>
  78. <span class="red" v-if="activeItem.serviceStartTime">
  79. 已过学习服务期,不可以学习了哦!</span
  80. >
  81. </template>
  82. </template>
  83. <!-- <template v-if="activeItem.profileTpStatus == 1">
  84. 资料审核状态:
  85. <div class="note" v-if="activeItem.profileStatus == null">
  86. 未提交资料
  87. </div>
  88. <div
  89. class="note note--green"
  90. v-else-if="activeItem.profileStatus == 1"
  91. >
  92. 已通过
  93. </div>
  94. <div
  95. class="note note--yellow"
  96. v-else-if="activeItem.profileStatus == 2"
  97. >
  98. 审核中
  99. </div>
  100. <div
  101. class="note note--yellow"
  102. v-else-if="activeItem.profileStatus == 3"
  103. >
  104. 待完善
  105. </div>
  106. </template> -->
  107. </template>
  108. <!-- 学时审核状态可以审核 -->
  109. <template v-if="activeItem.periodStatus != -1">
  110. <template v-if="activeItem.periodStatus == 0"
  111. >机构审核:
  112. <div class="note">学时审核不通过</div>
  113. </template>
  114. <!-- <template v-else-if="activeItem.periodStatus == 2"
  115. >机构审核:
  116. <div class="note note--yellow">学时待审核</div></template
  117. > -->
  118. <template v-else-if="activeItem.periodStatus == 1">
  119. <template v-if="activeItem.periodPlush > 0"
  120. ><div class="note note--green">
  121. 学时已上报注册中心
  122. </div></template
  123. >
  124. <template v-else
  125. >机构审核:
  126. <div class="note note--green">
  127. 学时审核通过
  128. </div></template
  129. >
  130. </template>
  131. <template
  132. v-if="
  133. activeItem.subscribeId != null && activeItem.periodStatus == 1
  134. "
  135. >
  136. <template v-if="activeItem.subExamStatus === null">
  137. 待预约考试
  138. </template>
  139. <template
  140. v-else-if="
  141. activeItem.subExamStatus === 0 &&
  142. sysTime <
  143. $tools.TimeTotimestamp(
  144. $tools.timestampToTime(
  145. activeItem.subApplySiteExamTime,
  146. true
  147. ) +
  148. ' ' +
  149. activeItem.subApplySiteStartTime
  150. )
  151. "
  152. >
  153. 待考试,考试时间:{{
  154. $tools.timestampToTime(
  155. activeItem.subApplySiteExamTime,
  156. true
  157. ) +
  158. " " +
  159. activeItem.subApplySiteStartTime
  160. }}
  161. -
  162. {{
  163. $tools.timestampToTime(
  164. activeItem.subApplySiteExamTime,
  165. true
  166. ) +
  167. " " +
  168. activeItem.subApplySiteEndTime
  169. }}
  170. </template>
  171. <template v-else-if="activeItem.subExamStatus === 0"
  172. >待出考试结果</template
  173. >
  174. <template v-else-if="activeItem.subExamStatus === 1">
  175. <span v-if="activeItem.subResult === null"
  176. >待出考试结果</span
  177. >
  178. <span v-if="activeItem.subResult === 0"
  179. >考试结果:不通过,需补考</span
  180. >
  181. <span v-else-if="activeItem.subResult === 1"
  182. >考试结果:通过,考试成绩为{{
  183. activeItem.subPerformance
  184. }}</span
  185. >
  186. </template>
  187. <template v-else-if="activeItem.subExamStatus === 2">
  188. 缺考,无成绩,需补考
  189. </template>
  190. <template v-else-if="activeItem.subExamStatus === 3">
  191. 作弊,无成绩,需补考
  192. </template>
  193. <template v-else-if="activeItem.subExamStatus === 4">
  194. 替考,无成绩,需补考
  195. </template>
  196. </template>
  197. </template>
  198. </template>
  199. </template>
  200. </div>
  201. </div>
  202. <div class="course-items__body clearfix">
  203. <div class="img">
  204. <img :src="$tools.splitImgHost(activeItem.coverUrl, true)" alt="" />
  205. </div>
  206. <div class="text">
  207. <div class="title">
  208. {{ activeItem.goodsName }}
  209. <div class="note">
  210. {{ activeItem.courseNum }}课程
  211. {{ activeItem.secAllNum + activeItem.examNum }}节
  212. {{ activeItem.classHours }}学时
  213. </div>
  214. </div>
  215. <div class="progress">
  216. 学习进度
  217. <el-progress
  218. class="progress-line"
  219. :stroke-width="16"
  220. :format="progressText(activeItem)"
  221. :percentage="
  222. ((activeItem.stuAllNum + activeItem.recordNum) /
  223. (activeItem.secAllNum + activeItem.examNum) || 0) * 100
  224. "
  225. ></el-progress>
  226. </div>
  227. </div>
  228. <div class="btns-wrap">
  229. <div class="btns">
  230. <el-button
  231. type="primary"
  232. class="btn btn--normal"
  233. :class="{
  234. disabled:
  235. (activeItem.serviceStartTime &&
  236. (sysTime <= activeItem.serviceStartTime ||
  237. sysTime >= activeItem.serviceEndTime)) ||
  238. (activeItem.classStartTime &&
  239. sysTime <= activeItem.classStartTime) ||
  240. (activeItem.classEndTime && sysTime >= activeItem.classEndTime) ||
  241. activeItem.learningStatus == 2 ||
  242. activeItem.classStatus == 0 ||
  243. (activeItem.learningStatus == 3 &&
  244. sysTime < activeItem.learningTimeStart),
  245. }"
  246. @click="goCourseDetail(activeItem)"
  247. >进入学习</el-button
  248. >
  249. <el-button
  250. type="primary"
  251. class="btn"
  252. @click="appointment(activeItem)"
  253. v-if="
  254. activeItem.applyStatus === 1 &&
  255. !(
  256. sysTime <= activeItem.serviceStartTime ||
  257. sysTime >= activeItem.serviceEndTime ||
  258. (activeItem.classStartTime &&
  259. sysTime <= activeItem.classStartTime) ||
  260. (activeItem.classEndTime && sysTime >= activeItem.classEndTime) ||
  261. activeItem.learningStatus == 2 ||
  262. activeItem.classStatus == 0 ||
  263. (activeItem.learningStatus == 3 &&
  264. sysTime < activeItem.learningTimeStart) || !activeItem.examApplyGoodsList.length
  265. )
  266. "
  267. >预约考试</el-button
  268. >
  269. <el-button
  270. type="danger"
  271. class="btn btn--warm"
  272. @click="selectClass(activeItem)"
  273. v-if="
  274. activeItem.gradeStatus == 1 &&
  275. activeItem.status == 1 &&
  276. activeItem.serviceEndTime > sysTime &&
  277. activeItem.serviceStartTime < sysTime &&
  278. activeItem.classEndTime &&
  279. activeItem.classEndTime < sysTime &&
  280. (activeItem.periodStatus == 0 || activeItem.periodStatus == -1) &&
  281. activeItem.studyCount > 0
  282. "
  283. >
  284. 选班重学
  285. </el-button>
  286. <el-button
  287. type="primary"
  288. class="btn"
  289. v-if="
  290. activeItem.beforeStatus === 1 &&
  291. !(
  292. sysTime <= activeItem.serviceStartTime ||
  293. sysTime >= activeItem.serviceEndTime ||
  294. (activeItem.classStartTime &&
  295. sysTime <= activeItem.classStartTime) ||
  296. (activeItem.classEndTime && sysTime >= activeItem.classEndTime) ||
  297. activeItem.learningStatus == 2 ||
  298. activeItem.classStatus == 0 ||
  299. (activeItem.learningStatus == 3 &&
  300. sysTime < activeItem.learningTimeStart)
  301. )
  302. "
  303. @click="appBeforeAddress(activeItem)"
  304. >进入刷题</el-button
  305. >
  306. </div>
  307. </div>
  308. </div>
  309. <template
  310. v-if="
  311. !(
  312. sysTime < activeItem.serviceStartTime ||
  313. sysTime > activeItem.serviceEndTime
  314. )
  315. "
  316. >
  317. <div
  318. class="course-items__footer"
  319. v-if="activeItem.classEndTime && activeItem.classEndTime < sysTime"
  320. >
  321. <span class="text"
  322. >班级有效期:{{
  323. $tools.timestampToTime(activeItem.classStartTime, true, true)
  324. }}
  325. -
  326. {{
  327. $tools.timestampToTime(activeItem.classEndTime, true, true)
  328. }}</span
  329. >
  330. <span class="text text--red"
  331. >班级状态:已过期,有疑问请联系020-87085982</span
  332. >
  333. </div>
  334. <div
  335. class="course-items__footer"
  336. v-else-if="
  337. activeItem.classStartTime && activeItem.classStartTime > sysTime
  338. "
  339. >
  340. <span class="text"
  341. >班级有效期:{{
  342. $tools.timestampToTime(activeItem.classStartTime, true, true)
  343. }}
  344. -
  345. {{
  346. $tools.timestampToTime(activeItem.classEndTime, true, true)
  347. }}</span
  348. >
  349. <span class="text"
  350. >班级状态:未到学习时间,有疑问请联系 020-87085982</span
  351. >
  352. </div>
  353. <template v-else>
  354. <div
  355. class="course-items__footer"
  356. v-if="
  357. activeItem.gradeId != 0 &&
  358. activeItem.gradeStatus == 1 &&
  359. activeItem.classStatus != null
  360. "
  361. >
  362. <span class="text"
  363. >班级状态:
  364. {{
  365. activeItem.classStatus == 1
  366. ? "已开班"
  367. : activeItem.classStatus == 0
  368. ? "未开班"
  369. : ""
  370. }}
  371. </span>
  372. <span class="text"
  373. >班级有效期:{{
  374. $tools.timestampToTime(activeItem.classStartTime, true, true)
  375. }}-{{
  376. $tools.timestampToTime(activeItem.classEndTime, true, true)
  377. }}</span
  378. >
  379. </div>
  380. <div class="course-items__footer" v-if="activeItem.classStatus == 0">
  381. <span class="text">教务处正在为您开通班级,请耐心等待</span>
  382. </div>
  383. </template>
  384. </template>
  385. </div>
  386. </div>
  387. <div class="my-course">
  388. <div class="my-course__header">
  389. <el-tabs :value="activeName" @tab-click="tabChange">
  390. <el-tab-pane
  391. v-for="(tab, tabIndex) in tabList"
  392. :key="tabIndex"
  393. :label="tab.educationName"
  394. :name="tab.id"
  395. ></el-tab-pane>
  396. </el-tabs>
  397. </div>
  398. <div class="my-course__body">
  399. <div class="list">
  400. <div
  401. class="course-item"
  402. v-for="(item, index) in courseList"
  403. :key="index"
  404. >
  405. <div class="course-item__header">
  406. <div
  407. class="time"
  408. v-if="item.serviceStartTime && item.serviceEndTime"
  409. >
  410. 学习服务期:{{
  411. $tools.timestampToTime(item.serviceStartTime, false)
  412. }}
  413. {{ $tools.timestampToTime(item.serviceEndTime, false) }}
  414. </div>
  415. <div class="state">
  416. <template
  417. v-if="
  418. item.serviceStartTime &&
  419. (sysTime < item.serviceStartTime ||
  420. sysTime > item.serviceEndTime)
  421. "
  422. >
  423. <div class="red">不在学习服务期,不可以学习了哦</div>
  424. </template>
  425. <template v-else>
  426. <template
  427. v-if="
  428. !(item.classEndTime && item.classEndTime < sysTime) &&
  429. !(item.classStartTime && item.classStartTime > sysTime)
  430. "
  431. >
  432. <template
  433. v-if="item.periodStatus == -1 || item.periodStatus == 2"
  434. >
  435. <template
  436. v-if="
  437. item.classStatus == 1 || item.classStatus === null
  438. "
  439. >
  440. <template
  441. v-if="
  442. sysTime >= item.serviceStartTime &&
  443. sysTime <= item.serviceEndTime
  444. "
  445. >
  446. 学习状态:
  447. <div
  448. class="note"
  449. v-if="item.stuAllNum + item.recordNum == 0"
  450. >
  451. 未学习
  452. </div>
  453. <div
  454. class="note note--yellow"
  455. v-else-if="
  456. item.stuAllNum + item.recordNum > 0 &&
  457. item.stuAllNum + item.recordNum <
  458. item.secAllNum + item.examNum
  459. "
  460. >
  461. 学习中
  462. </div>
  463. <div
  464. class="note note--green"
  465. v-else-if="
  466. item.stuAllNum + item.recordNum >=
  467. item.secAllNum + item.examNum
  468. "
  469. >
  470. 已学完
  471. </div>
  472. </template>
  473. <template v-else>
  474. <span class="red" v-if="item.serviceStartTime">
  475. 已过学习服务期,不可以学习了哦!</span
  476. >
  477. </template>
  478. </template>
  479. <!-- <template v-if="item.profileTpStatus == 1">
  480. 资料审核状态:
  481. <div class="note" v-if="item.profileStatus == null">
  482. 未提交资料
  483. </div>
  484. <div
  485. class="note note--green"
  486. v-else-if="item.profileStatus == 1"
  487. >
  488. 已通过
  489. </div>
  490. <div
  491. class="note note--yellow"
  492. v-else-if="item.profileStatus == 2"
  493. >
  494. 审核中
  495. </div>
  496. <div
  497. class="note note--yellow"
  498. v-else-if="item.profileStatus == 3"
  499. >
  500. 待完善
  501. </div>
  502. </template> -->
  503. </template>
  504. <!-- 学时审核状态可以审核 -->
  505. <template v-if="item.periodStatus != -1">
  506. <template v-if="item.periodStatus == 0"
  507. >机构审核:
  508. <div class="note">学时审核不通过</div>
  509. </template>
  510. <!-- <template v-else-if="item.periodStatus == 2"
  511. >机构审核:
  512. <div class="note note--yellow">学时待审核</div></template
  513. > -->
  514. <template v-else-if="item.periodStatus == 1">
  515. <template v-if="item.periodPlush > 0"
  516. ><div class="note note--green">
  517. 学时已上报注册中心
  518. </div></template
  519. >
  520. <template v-else
  521. >机构审核:
  522. <div class="note note--green">
  523. 学时审核通过
  524. </div></template
  525. >
  526. </template>
  527. <template
  528. v-if="
  529. item.subscribeId != null && item.periodStatus == 1
  530. "
  531. >
  532. <template v-if="item.subExamStatus === null">
  533. 待预约考试
  534. </template>
  535. <template
  536. v-else-if="
  537. item.subExamStatus === 0 &&
  538. sysTime <
  539. $tools.TimeTotimestamp(
  540. $tools.timestampToTime(
  541. item.subApplySiteExamTime,
  542. true
  543. ) +
  544. ' ' +
  545. item.subApplySiteStartTime
  546. )
  547. "
  548. >
  549. 待考试,考试时间:{{
  550. $tools.timestampToTime(
  551. item.subApplySiteExamTime,
  552. true
  553. ) +
  554. " " +
  555. item.subApplySiteStartTime
  556. }}
  557. -
  558. {{
  559. $tools.timestampToTime(
  560. item.subApplySiteExamTime,
  561. true
  562. ) +
  563. " " +
  564. item.subApplySiteEndTime
  565. }}
  566. </template>
  567. <template v-else-if="item.subExamStatus === 0"
  568. >待出考试结果</template
  569. >
  570. <template v-else-if="item.subExamStatus === 1">
  571. <span v-if="item.subResult === null"
  572. >待出考试结果</span
  573. >
  574. <span v-if="item.subResult === 0"
  575. >考试结果:不通过,需补考</span
  576. >
  577. <span v-else-if="item.subResult === 1"
  578. >考试结果:通过,考试成绩为{{
  579. item.subPerformance
  580. }}</span
  581. >
  582. </template>
  583. <template v-else-if="item.subExamStatus === 2">
  584. 缺考,无成绩,需补考
  585. </template>
  586. <template v-else-if="item.subExamStatus === 3">
  587. 作弊,无成绩,需补考
  588. </template>
  589. <template v-else-if="item.subExamStatus === 4">
  590. 替考,无成绩,需补考
  591. </template>
  592. </template>
  593. </template>
  594. </template>
  595. </template>
  596. </div>
  597. </div>
  598. <div class="course-item__body clearfix">
  599. <div class="img">
  600. <img :src="$tools.splitImgHost(item.coverUrl, true)" alt="" />
  601. </div>
  602. <div class="text">
  603. <div class="title">
  604. {{ item.goodsName }}
  605. <div class="note">
  606. {{ item.courseNum }}课程
  607. {{ item.secAllNum + item.examNum }}节
  608. {{ item.classHours }}学时
  609. </div>
  610. </div>
  611. <div class="progress">
  612. 学习进度
  613. <el-progress
  614. class="progress-line"
  615. :stroke-width="16"
  616. :format="progressText(item)"
  617. :percentage="
  618. ((item.stuAllNum + item.recordNum) /
  619. (item.secAllNum + item.examNum) || 0) * 100
  620. "
  621. ></el-progress>
  622. </div>
  623. </div>
  624. <div class="btns-wrap">
  625. <div class="btns">
  626. <el-button
  627. type="primary"
  628. class="btn btn--normal"
  629. :class="{
  630. disabled:
  631. (item.serviceStartTime &&
  632. (sysTime <= item.serviceStartTime ||
  633. sysTime >= item.serviceEndTime)) ||
  634. (item.classStartTime &&
  635. sysTime <= item.classStartTime) ||
  636. (item.classEndTime && sysTime >= item.classEndTime) ||
  637. item.learningStatus == 2 ||
  638. item.classStatus == 0 ||
  639. (item.learningStatus == 3 &&
  640. sysTime < item.learningTimeStart),
  641. }"
  642. @click="goCourseDetail(item)"
  643. >进入学习</el-button
  644. >
  645. <el-button
  646. type="primary"
  647. class="btn"
  648. @click="appointment(item)"
  649. v-if="
  650. item.applyStatus === 1 &&
  651. !(
  652. sysTime <= item.serviceStartTime ||
  653. sysTime >= item.serviceEndTime ||
  654. (item.classStartTime &&
  655. sysTime <= item.classStartTime) ||
  656. (item.classEndTime && sysTime >= item.classEndTime) ||
  657. item.learningStatus == 2 ||
  658. item.classStatus == 0 ||
  659. (item.learningStatus == 3 &&
  660. sysTime < item.learningTimeStart) || !item.examApplyGoodsList.length
  661. )
  662. "
  663. >预约考试</el-button
  664. >
  665. <el-button
  666. type="danger"
  667. class="btn btn--warm"
  668. @click="selectClass(item)"
  669. v-if="
  670. item.gradeStatus == 1 &&
  671. item.status == 1 &&
  672. item.serviceEndTime > sysTime &&
  673. item.serviceStartTime < sysTime &&
  674. item.classEndTime &&
  675. item.classEndTime < sysTime &&
  676. (item.periodStatus == 0 || item.periodStatus == -1) &&
  677. item.studyCount > 0
  678. "
  679. >
  680. 选班重学
  681. </el-button>
  682. <el-button
  683. type="primary"
  684. class="btn"
  685. v-if="
  686. item.beforeStatus === 1 &&
  687. !(
  688. sysTime <= item.serviceStartTime ||
  689. sysTime >= item.serviceEndTime ||
  690. (item.classStartTime &&
  691. sysTime <= item.classStartTime) ||
  692. (item.classEndTime && sysTime >= item.classEndTime) ||
  693. item.learningStatus == 2 ||
  694. item.classStatus == 0 ||
  695. (item.learningStatus == 3 &&
  696. sysTime < item.learningTimeStart)
  697. )
  698. "
  699. @click="appBeforeAddress(item)"
  700. >进入刷题</el-button
  701. >
  702. </div>
  703. </div>
  704. </div>
  705. <template
  706. v-if="
  707. !(
  708. sysTime < item.serviceStartTime ||
  709. sysTime > item.serviceEndTime
  710. )
  711. "
  712. >
  713. <div
  714. class="course-item__footer"
  715. v-if="item.classEndTime && item.classEndTime < sysTime"
  716. >
  717. <span class="text"
  718. >班级有效期:{{
  719. $tools.timestampToTime(item.classStartTime, true, true)
  720. }}
  721. -
  722. {{
  723. $tools.timestampToTime(item.classEndTime, true, true)
  724. }}</span
  725. >
  726. <span class="text text--red"
  727. >班级状态:已过期,有疑问请联系020-87085982</span
  728. >
  729. </div>
  730. <div
  731. class="course-item__footer"
  732. v-else-if="
  733. item.classStartTime && item.classStartTime > sysTime
  734. "
  735. >
  736. <span class="text"
  737. >班级有效期:{{
  738. $tools.timestampToTime(item.classStartTime, true, true)
  739. }}
  740. -
  741. {{
  742. $tools.timestampToTime(item.classEndTime, true, true)
  743. }}</span
  744. >
  745. <span class="text"
  746. >班级状态:未到学习时间,有疑问请联系 020-87085982</span
  747. >
  748. </div>
  749. <template v-else>
  750. <div
  751. class="course-item__footer"
  752. v-if="
  753. item.gradeId != 0 &&
  754. item.gradeStatus == 1 &&
  755. item.classStatus != null
  756. "
  757. >
  758. <span class="text"
  759. >班级状态:
  760. {{
  761. item.classStatus == 1
  762. ? "已开班"
  763. : item.classStatus == 0
  764. ? "未开班"
  765. : ""
  766. }}
  767. </span>
  768. <span class="text"
  769. >班级有效期:{{
  770. $tools.timestampToTime(item.classStartTime, true, true)
  771. }}-{{
  772. $tools.timestampToTime(item.classEndTime, true, true)
  773. }}</span
  774. >
  775. </div>
  776. <div class="course-item__footer" v-if="item.classStatus == 0">
  777. <span class="text">教务处正在为您开通班级,请耐心等待</span>
  778. </div>
  779. </template>
  780. </template>
  781. </div>
  782. </div>
  783. <div class="pagination" v-if="total > 0">
  784. <el-pagination
  785. @current-change="currentChange"
  786. background
  787. layout="prev, pager, next"
  788. :total="total"
  789. :pager-count="5"
  790. :page-size="param.pageSize"
  791. >
  792. </el-pagination>
  793. </div>
  794. </div>
  795. <SelectClassModal
  796. ref="selectClassModal"
  797. @selectClassOk="selectClassOk"
  798. ></SelectClassModal>
  799. <RebuildModal
  800. ref="rebuildModal"
  801. @rebuildSubmit="rebuildSubmit($event)"
  802. ></RebuildModal>
  803. <ExercisesModal ref="exercisesModal"></ExercisesModal>
  804. </div>
  805. </el-dialog>
  806. <!-- 预约考试弹窗 -->
  807. <appoint-test :appointModal.sync="appointModal" :appointItem='appointItem'></appoint-test>
  808. <!-- <el-dialog
  809. title="预约考试"
  810. :visible.sync="appointModal"
  811. width="600px"
  812. class="appoint-modal"
  813. :close-on-click-modal="false"
  814. :close-on-press-escape="false"
  815. >
  816. <div class="appoint-modal__content">
  817. <el-radio
  818. v-for="(
  819. appointChild, appointIndex
  820. ) in appointItem.examApplyGoodsList"
  821. v-model="applyId"
  822. :key="appointIndex"
  823. :label="appointChild.applyId"
  824. >{{ appointChild.applyName }}</el-radio
  825. >
  826. </div>
  827. <span slot="footer" class="dialog-footer">
  828. <el-button @click="appointModal = false">取 消</el-button>
  829. <el-button type="primary" @click="confirmAppoint"
  830. >立即预约</el-button
  831. >
  832. </span>
  833. </el-dialog> -->
  834. <el-dialog
  835. title="实名验证确认"
  836. :visible.sync="showConfirm"
  837. width="600px"
  838. class="showconfirm"
  839. :close-on-click-modal="false"
  840. :close-on-press-escape="false"
  841. :show-close="false"
  842. >
  843. <div class="showconfirm__content">
  844. <div class="text">
  845. 为避免个人信息不正确导致您的学习时长无效,请认真核对以下信息是否正确,如信息有误请取消当前操作,立刻联系020-38946666
  846. </div>
  847. <el-descriptions :column="1">
  848. <el-descriptions-item label="姓名">{{
  849. userInfo && userInfo.realname
  850. }}</el-descriptions-item>
  851. <el-descriptions-item label="手机号">{{
  852. userInfo && userInfo.telphone
  853. }}</el-descriptions-item>
  854. <el-descriptions-item label="身份证号">{{
  855. userInfo && userInfo.idCard
  856. }}</el-descriptions-item>
  857. </el-descriptions>
  858. <div class="">
  859. <el-checkbox v-model="confirmChecked"
  860. >确认个人信息无误</el-checkbox
  861. >
  862. </div>
  863. </div>
  864. <span slot="footer" class="dialog-footer">
  865. <el-button @click="showConfirm = false">取 消</el-button>
  866. <el-button
  867. type="primary"
  868. @click="confirmUser()"
  869. :disabled="confirmCount > 0"
  870. :loading="confirmLoading"
  871. >{{
  872. confirmCount > 0 ? "确 定(" + confirmCount + ")" : "确 定"
  873. }}</el-button
  874. >
  875. </span>
  876. </el-dialog>
  877. </div>
  878. </template>
  879. <script>
  880. import { mapGetters, mapActions } from "vuex";
  881. import SelectClassModal from "@/components/selectClassModal";
  882. import RebuildModal from "@/components/rebuildModal";
  883. import ExercisesModal from "@/components/exercisesModal";
  884. import AppointTest from './components/AppointTest.vue'
  885. import * as baseUrls from "@/axios.js";
  886. export default {
  887. name: "MyCourse",
  888. components: {
  889. SelectClassModal,
  890. RebuildModal,
  891. ExercisesModal,
  892. AppointTest,
  893. },
  894. data() {
  895. return {
  896. dialogVisible: false,
  897. appointItem: {},
  898. applyId: "",
  899. appointModal: false,
  900. activeItem: {},
  901. confirmChecked: false,
  902. confirmTimer: null,
  903. confirmLoading: false,
  904. confirmCount: 10,
  905. showConfirm: false,
  906. tabList: [],
  907. sysTime: 0,
  908. activeName: "-1",
  909. param: {
  910. pageNum: 1,
  911. pageSize: 10,
  912. },
  913. total: 0,
  914. courseList: [],
  915. loading: null,
  916. showExercisesModal: false,
  917. };
  918. },
  919. computed: {
  920. ...mapGetters(["userInfo"]),
  921. },
  922. async mounted() {
  923. this.getUserInfo();
  924. this.sysTime = this.$tools.timest();
  925. // await this.orderUserEduList();
  926. this.courseGoodsList();
  927. },
  928. methods: {
  929. ...mapActions(["getUserInfo"]),
  930. openBoxs(data) {
  931. console.log(data);
  932. this.activeItem = data
  933. this.dialogVisible = true;
  934. },
  935. activeFunc() {},
  936. tabChange(e) {
  937. if (this.activeName == e.name) {
  938. return;
  939. }
  940. this.activeName = e.name;
  941. this.courseGoodsList();
  942. },
  943. confirmUser() {
  944. if (!this.confirmChecked) {
  945. this.$message.warning("请勾选确认个人信息无误");
  946. return;
  947. }
  948. this.confirmLoading = true;
  949. let infoJson = {
  950. realname: this.userInfo.realname,
  951. idCard: this.userInfo.idCard,
  952. telphone: this.userInfo.telphone,
  953. };
  954. this.$request
  955. .userConfirminfo({
  956. infoJson: JSON.stringify(infoJson),
  957. orderGoodsId: this.activeItem.orderGoodsId,
  958. })
  959. .then((res) => {
  960. if (res.data.pushInfo) {
  961. this.$message.success("提交成功");
  962. } else {
  963. this.$confirm(
  964. "开通信息推送不成功,无法进入学习,请联系020-87085982!",
  965. "提示",
  966. {
  967. confirmButtonText: "确定",
  968. closeOnClickModal: false,
  969. closeOnPressEscape: false,
  970. distinguishCancelAndClose: false,
  971. showClose: false,
  972. showCancelButton: false,
  973. }
  974. )
  975. .then((_) => {})
  976. .catch((_) => {});
  977. }
  978. this.showConfirm = false;
  979. this.confirmLoading = false;
  980. });
  981. },
  982. orderUserEduList() {
  983. return new Promise((resolve) => {
  984. this.$request
  985. .orderUserEduList({
  986. goodsType: 1,
  987. })
  988. .then((res) => {
  989. res.rows.forEach((row) => {
  990. row.id = row.id + "";
  991. });
  992. this.tabList.push(
  993. {
  994. educationName: "全部课程",
  995. id: "-1",
  996. },
  997. ...res.rows
  998. );
  999. resolve();
  1000. });
  1001. });
  1002. },
  1003. currentChange(e) {
  1004. this.param.pageNum = e;
  1005. this.courseGoodsList();
  1006. },
  1007. async goCourseDetail(item) {
  1008. this.$emit("backData", item);
  1009. this.dialogVisible = false;
  1010. return;
  1011. this.activeItem = item;
  1012. if (item.interfaceAccountId > 0) {
  1013. //学习账号已开通
  1014. if (item.learnStatus == 1) {
  1015. //跳转第三方h5
  1016. this.$router.push({
  1017. path: `/my-course-detail/${item.goodsId}`,
  1018. query: {
  1019. gradeId: item.gradeId,
  1020. orderGoodsId: item.orderGoodsId,
  1021. isOther: 1,
  1022. },
  1023. });
  1024. return;
  1025. } else {
  1026. this.$message({
  1027. type: "warning",
  1028. message:
  1029. "您的学习账号未开通,请稍后再尝试,有疑问,请联系020-87085982!",
  1030. });
  1031. return;
  1032. }
  1033. }
  1034. if (
  1035. (item.serviceStartTime && this.sysTime <= item.serviceStartTime) ||
  1036. (item.serviceEndTime && this.sysTime >= item.serviceEndTime)
  1037. ) {
  1038. this.$message({
  1039. type: "warning",
  1040. message: "不在学习服务期,不能进入学习",
  1041. });
  1042. return;
  1043. }
  1044. if (
  1045. (item.classStartTime && this.sysTime <= item.classStartTime) ||
  1046. (item.classEndTime && this.sysTime >= item.classEndTime)
  1047. ) {
  1048. this.$message({
  1049. type: "warning",
  1050. message: "不在班级有效期,不能进入学习",
  1051. });
  1052. return;
  1053. }
  1054. if (item.learningStatus == 2) {
  1055. this.$message({
  1056. type: "warning",
  1057. message: "开放学习时间待定,不能进入学习",
  1058. });
  1059. return;
  1060. }
  1061. if (item.classStatus == 0) {
  1062. this.$message({
  1063. type: "warning",
  1064. message: "尚未开班,不能进入学习",
  1065. });
  1066. return;
  1067. }
  1068. if (item.learningStatus == 3 && this.sysTime < item.learningTimeStart) {
  1069. this.$message({
  1070. type: "warning",
  1071. message: "不在开放学习时间,不能进入学习",
  1072. });
  1073. return;
  1074. }
  1075. var confirmDetail = true;
  1076. if (item.educationName == "继续教育") {
  1077. if (
  1078. item.officialName &&
  1079. item.businessName == "二级" &&
  1080. item.projectName == "建造师"
  1081. ) {
  1082. confirmDetail = await this.userConfirmInfoDetail();
  1083. }
  1084. }
  1085. // //内部系统
  1086. // if (item.interfacePushId > 0 && item.officialStatus != 1) {
  1087. // this.$message({
  1088. // type: "warning",
  1089. // message: "机构正在为您报名中,请耐心等待,有疑问请联系020-87085982!",
  1090. // });
  1091. // return;
  1092. // }
  1093. if (!confirmDetail) {
  1094. return;
  1095. }
  1096. let rebuildStatus = await this.courseGoodsRebuildStatus(
  1097. item.goodsId,
  1098. item.gradeId
  1099. );
  1100. if (rebuildStatus == 0) {
  1101. this.$refs.rebuildModal.showModal(item);
  1102. return;
  1103. }
  1104. // if (item.educationName == "继续教育") {
  1105. this.$request
  1106. .lockLockStatus({
  1107. action: "jxjy",
  1108. uuid: sessionStorage.getItem("uuid"),
  1109. })
  1110. .then((res) => {
  1111. //有其他端在操作,不能学习
  1112. this.$message({
  1113. type: "warning",
  1114. message: res.msg,
  1115. });
  1116. })
  1117. .catch((err) => {
  1118. //可以学习
  1119. this.$request
  1120. .courseCourseList({
  1121. pageNum: 1,
  1122. pageSize: 1,
  1123. goodsId: item.goodsId,
  1124. gradeId: item.gradeId,
  1125. })
  1126. .then((res) => {
  1127. if (res.rows.length) {
  1128. // if (
  1129. // item.officialName &&
  1130. // item.businessName == "二级" &&
  1131. // item.projectName == "建造师"
  1132. // ) {
  1133. // this.userConfirmInfoDetail().then((res) => {
  1134. // this.$router.push({
  1135. // path: `/my-course-detail/${item.goodsId}`,
  1136. // query: {
  1137. // gradeId: item.gradeId,
  1138. // orderGoodsId: item.orderGoodsId,
  1139. // courseId: res.rows[0].courseId || "",
  1140. // },
  1141. // });
  1142. // });
  1143. // } else {
  1144. this.$emit("backData", item);
  1145. this.dialogVisible = false;
  1146. return;
  1147. this.$router.push({
  1148. path: `/my-course-detail/${item.goodsId}`,
  1149. query: {
  1150. gradeId: item.gradeId,
  1151. orderGoodsId: item.orderGoodsId,
  1152. courseId: res.rows[0].courseId || "",
  1153. },
  1154. });
  1155. // }
  1156. } else {
  1157. this.$message({
  1158. type: "warning",
  1159. message: "课程内暂无可以学习的科目",
  1160. });
  1161. }
  1162. });
  1163. });
  1164. // } else {
  1165. // this.$request
  1166. // .courseCourseList({
  1167. // pageNum: 1,
  1168. // pageSize: 1,
  1169. // goodsId: item.goodsId,
  1170. // gradeId: item.gradeId,
  1171. // })
  1172. // .then((res) => {
  1173. // if (res.rows.length) {
  1174. // this.$router.push({
  1175. // path: `/my-course-detail/${item.goodsId}`,
  1176. // query: {
  1177. // gradeId: item.gradeId,
  1178. // orderGoodsId: item.orderGoodsId,
  1179. // courseId: res.rows[0].courseId || "",
  1180. // },
  1181. // });
  1182. // } else {
  1183. // this.$message({
  1184. // type: "warning",
  1185. // message: "课程内暂无可以学习的科目",
  1186. // });
  1187. // }
  1188. // });
  1189. // }
  1190. },
  1191. userConfirmInfoDetail() {
  1192. return new Promise((resolve) => {
  1193. this.$request
  1194. .userConfirmInfoDetail({
  1195. orderGoodsId: this.activeItem.orderGoodsId,
  1196. })
  1197. .then((res) => {
  1198. if (!res.data) {
  1199. clearInterval(this.confirmTimer);
  1200. this.confirmCount = 10;
  1201. this.showConfirm = true;
  1202. this.confirmTimer = setInterval(() => {
  1203. if (this.confirmCount > 0) {
  1204. this.confirmCount--;
  1205. } else {
  1206. clearInterval(this.confirmTimer);
  1207. }
  1208. }, 1000);
  1209. } else {
  1210. if (res.data.pushInfo) {
  1211. resolve(true);
  1212. } else {
  1213. this.$confirm(
  1214. "开通信息推送不成功,无法进入学习,请联系020-87085982!",
  1215. "提示",
  1216. {
  1217. confirmButtonText: "确定",
  1218. closeOnClickModal: false,
  1219. closeOnPressEscape: false,
  1220. distinguishCancelAndClose: false,
  1221. showClose: false,
  1222. showCancelButton: false,
  1223. }
  1224. )
  1225. .then((_) => {})
  1226. .catch((_) => {});
  1227. resolve(false);
  1228. }
  1229. }
  1230. });
  1231. });
  1232. },
  1233. appBeforeAddress(item) {
  1234. this.$refs.exercisesModal.showModal(item);
  1235. },
  1236. rebuildSubmit(item) {
  1237. this.$router.push({
  1238. path: `/my-course-detail/${item.goodsId}`,
  1239. query: {
  1240. gradeId: item.gradeId,
  1241. orderGoodsId: item.orderGoodsId,
  1242. rebuild: 1,
  1243. },
  1244. });
  1245. },
  1246. selectClass(item) {
  1247. this.$refs.selectClassModal.showModal(item);
  1248. },
  1249. selectClassOk() {
  1250. this.courseGoodsList();
  1251. },
  1252. /**
  1253. * @param {Object} goodsId 商品id
  1254. * 查询商品重修状态
  1255. */
  1256. courseGoodsRebuildStatus(goodsId, gradeId) {
  1257. return new Promise((resolve) => {
  1258. this.$request
  1259. .courseGoodsRebuildStatus({
  1260. goodsId: goodsId,
  1261. gradeId: gradeId,
  1262. })
  1263. .then((res) => {
  1264. resolve(res.data);
  1265. });
  1266. });
  1267. },
  1268. courseGoodsList() {
  1269. let param = JSON.parse(JSON.stringify(this.param));
  1270. if (this.activeName == "-1") {
  1271. param.educationTypeId = "";
  1272. } else {
  1273. param.educationTypeId = this.activeName;
  1274. }
  1275. this.$request.courseGoodsList(param).then((res) => {
  1276. this.courseList = res.rows;
  1277. this.total = res.total;
  1278. });
  1279. },
  1280. progressText(item) {
  1281. return () => {
  1282. return (
  1283. item.stuAllNum +
  1284. item.recordNum +
  1285. "/" +
  1286. (item.secAllNum + item.examNum)
  1287. );
  1288. };
  1289. },
  1290. appointment(item) {
  1291. this.applyId = "";
  1292. this.appointItem = item;
  1293. this.appointModal = true;
  1294. },
  1295. confirmAppoint() {
  1296. if (!this.applyId) {
  1297. this.$message.warning("请选择要预约的考试");
  1298. return;
  1299. }
  1300. var data = {
  1301. goodsId: this.appointItem.goodsId,
  1302. gradeId: this.appointItem.gradeId,
  1303. applyId: this.applyId,
  1304. orderGoodsId: this.appointItem.orderGoodsId,
  1305. };
  1306. this.$request
  1307. .getApplysubscribe(data)
  1308. .then((res) => {
  1309. this.$router.push({
  1310. path: "/person-center/my-classhour/appointment",
  1311. query: {
  1312. goodsId: this.appointItem.goodsId,
  1313. gradeId: this.appointItem.gradeId,
  1314. orderGoodsId: this.appointItem.orderGoodsId,
  1315. applyId: this.applyId,
  1316. },
  1317. });
  1318. })
  1319. .catch((err) => {
  1320. this.$message({
  1321. type: "warning",
  1322. message: err.msg,
  1323. });
  1324. });
  1325. },
  1326. },
  1327. };
  1328. </script>
  1329. <!-- Add "scoped" attribute to limit CSS to this component only -->
  1330. <style scoped lang="scss">
  1331. /deep/ .el-dialog {
  1332. margin-top: 6vh !important;
  1333. }
  1334. .my-course {
  1335. max-height: 50vh;
  1336. overflow: auto;
  1337. &__header {
  1338. /deep/ .el-tabs__header {
  1339. margin-bottom: 0;
  1340. }
  1341. }
  1342. &__body {
  1343. .list {
  1344. .course-item {
  1345. margin-top: 24px;
  1346. background: #fafbfc;
  1347. border-radius: 8px;
  1348. overflow: hidden;
  1349. &__header {
  1350. height: 40px;
  1351. border-bottom: 1px solid #eee;
  1352. padding: 0 18px;
  1353. .state {
  1354. margin-top: 8px;
  1355. float: left;
  1356. font-size: 14px;
  1357. font-family: Microsoft YaHei;
  1358. font-weight: 400;
  1359. color: #666666;
  1360. .red {
  1361. color: #ff3b30;
  1362. }
  1363. .note {
  1364. vertical-align: middle;
  1365. display: inline-block;
  1366. padding: 0 10px;
  1367. height: 24px;
  1368. background: #ffeceb;
  1369. border: 1px solid #ff3b30;
  1370. border-radius: 12px;
  1371. font-size: 14px;
  1372. font-family: Microsoft YaHei;
  1373. font-weight: 400;
  1374. color: #ff3b30;
  1375. text-align: center;
  1376. line-height: 24px;
  1377. margin-right: 10px;
  1378. &--yellow {
  1379. border-color: #ffb001;
  1380. color: #ffb001;
  1381. background: #fff8e8;
  1382. }
  1383. &--green {
  1384. border-color: #56dc68;
  1385. color: #56dc68;
  1386. background: #e6feea;
  1387. }
  1388. }
  1389. }
  1390. .time {
  1391. float: right;
  1392. line-height: 40px;
  1393. text-align: right;
  1394. font-size: 12px;
  1395. font-family: Microsoft YaHei;
  1396. font-weight: 400;
  1397. color: #666666;
  1398. &--red {
  1399. color: #ff3b30;
  1400. }
  1401. }
  1402. }
  1403. &__body {
  1404. .img {
  1405. float: left;
  1406. width: 160px;
  1407. height: 90px;
  1408. img {
  1409. max-width: 100%;
  1410. max-height: 100%;
  1411. }
  1412. }
  1413. .text {
  1414. float: left;
  1415. margin-left: 12px;
  1416. .title {
  1417. margin-top: 10px;
  1418. font-size: 16px;
  1419. font-family: Microsoft YaHei;
  1420. font-weight: bold;
  1421. color: #333333;
  1422. .note {
  1423. display: inline-block;
  1424. vertical-align: middle;
  1425. border: 1px solid #333333;
  1426. border-radius: 4px;
  1427. font-size: 12px;
  1428. font-family: Microsoft YaHei;
  1429. font-weight: 400;
  1430. color: #333333;
  1431. padding: 2px 5px;
  1432. margin-left: 12px;
  1433. }
  1434. }
  1435. .progress {
  1436. margin-top: 30px;
  1437. font-size: 14px;
  1438. font-family: Microsoft YaHei;
  1439. font-weight: 400;
  1440. color: #333333;
  1441. &-line {
  1442. width: 220px;
  1443. display: inline-block;
  1444. }
  1445. /deep/ .el-progress-bar {
  1446. padding-right: 70px;
  1447. margin-right: -70px;
  1448. }
  1449. }
  1450. }
  1451. .btns-wrap {
  1452. display: table;
  1453. float: right;
  1454. height: 90px;
  1455. width: 130px;
  1456. .btns {
  1457. display: table-cell;
  1458. vertical-align: middle;
  1459. text-align: center;
  1460. .btn {
  1461. cursor: pointer;
  1462. margin: 2px 0;
  1463. width: 122px;
  1464. height: 32px;
  1465. padding: 0;
  1466. border-radius: 16px;
  1467. display: inline-block;
  1468. text-align: center;
  1469. line-height: 32px;
  1470. color: #fff;
  1471. &--normal {
  1472. &.disabled {
  1473. background: rgb(101, 164, 253);
  1474. border-color: rgb(101, 164, 253);
  1475. }
  1476. }
  1477. &--warm {
  1478. background: #ff3b30;
  1479. &:hover {
  1480. background: #f56c6c;
  1481. }
  1482. }
  1483. }
  1484. }
  1485. }
  1486. }
  1487. &__footer {
  1488. padding: 20px 18px;
  1489. font-size: 14px;
  1490. color: #333;
  1491. .text {
  1492. margin-right: 20px;
  1493. &--red {
  1494. color: #ff3b30;
  1495. }
  1496. }
  1497. }
  1498. }
  1499. }
  1500. .pagination {
  1501. padding: 30px 0;
  1502. text-align: center;
  1503. }
  1504. }
  1505. .exercises-modal {
  1506. &__content {
  1507. > div {
  1508. font-size: 16px;
  1509. line-height: 30px;
  1510. text-align: center;
  1511. img {
  1512. display: inline;
  1513. }
  1514. }
  1515. }
  1516. }
  1517. .appoint-modal {
  1518. &__content {
  1519. .el-radio {
  1520. display: block;
  1521. margin: 10px 30px 10px 0;
  1522. }
  1523. }
  1524. }
  1525. }
  1526. .headerStyle{
  1527. .title{
  1528. padding: 6px 12px;
  1529. color: #3f8dfd;
  1530. background-color: #F8F8F9;
  1531. }
  1532. }
  1533. .course-items {
  1534. margin-top: 10px;
  1535. background: #fafbfc;
  1536. border-radius: 8px;
  1537. overflow: hidden;
  1538. padding-bottom: 24px;
  1539. margin-bottom: 24px;
  1540. border-bottom: 2px solid #eee;
  1541. &__header {
  1542. height: 40px;
  1543. border-bottom: 1px solid #eee;
  1544. padding: 0 18px;
  1545. .state {
  1546. margin-top: 8px;
  1547. float: left;
  1548. font-size: 14px;
  1549. font-family: Microsoft YaHei;
  1550. font-weight: 400;
  1551. color: #666666;
  1552. .red {
  1553. color: #ff3b30;
  1554. }
  1555. .note {
  1556. vertical-align: middle;
  1557. display: inline-block;
  1558. padding: 0 10px;
  1559. height: 24px;
  1560. background: #ffeceb;
  1561. border: 1px solid #ff3b30;
  1562. border-radius: 12px;
  1563. font-size: 14px;
  1564. font-family: Microsoft YaHei;
  1565. font-weight: 400;
  1566. color: #ff3b30;
  1567. text-align: center;
  1568. line-height: 24px;
  1569. margin-right: 10px;
  1570. &--yellow {
  1571. border-color: #ffb001;
  1572. color: #ffb001;
  1573. background: #fff8e8;
  1574. }
  1575. &--green {
  1576. border-color: #56dc68;
  1577. color: #56dc68;
  1578. background: #e6feea;
  1579. }
  1580. }
  1581. }
  1582. .time {
  1583. float: right;
  1584. line-height: 40px;
  1585. text-align: right;
  1586. font-size: 12px;
  1587. font-family: Microsoft YaHei;
  1588. font-weight: 400;
  1589. color: #666666;
  1590. &--red {
  1591. color: #ff3b30;
  1592. }
  1593. }
  1594. }
  1595. &__body {
  1596. .img {
  1597. float: left;
  1598. width: 160px;
  1599. height: 90px;
  1600. img {
  1601. max-width: 100%;
  1602. max-height: 100%;
  1603. }
  1604. }
  1605. .text {
  1606. float: left;
  1607. margin-left: 12px;
  1608. .title {
  1609. margin-top: 10px;
  1610. font-size: 16px;
  1611. font-family: Microsoft YaHei;
  1612. font-weight: bold;
  1613. color: #333333;
  1614. .note {
  1615. display: inline-block;
  1616. vertical-align: middle;
  1617. border: 1px solid #333333;
  1618. border-radius: 4px;
  1619. font-size: 12px;
  1620. font-family: Microsoft YaHei;
  1621. font-weight: 400;
  1622. color: #333333;
  1623. padding: 2px 5px;
  1624. margin-left: 12px;
  1625. }
  1626. }
  1627. .progress {
  1628. margin-top: 30px;
  1629. font-size: 14px;
  1630. font-family: Microsoft YaHei;
  1631. font-weight: 400;
  1632. color: #333333;
  1633. &-line {
  1634. width: 220px;
  1635. display: inline-block;
  1636. }
  1637. /deep/ .el-progress-bar {
  1638. padding-right: 70px;
  1639. margin-right: -70px;
  1640. }
  1641. }
  1642. }
  1643. .btns-wrap {
  1644. display: table;
  1645. float: right;
  1646. height: 90px;
  1647. width: 130px;
  1648. .btns {
  1649. display: table-cell;
  1650. vertical-align: middle;
  1651. text-align: center;
  1652. .btn {
  1653. cursor: pointer;
  1654. margin: 2px 0;
  1655. width: 122px;
  1656. height: 32px;
  1657. padding: 0;
  1658. border-radius: 16px;
  1659. display: inline-block;
  1660. text-align: center;
  1661. line-height: 32px;
  1662. color: #fff;
  1663. &--normal {
  1664. &.disabled {
  1665. background: rgb(101, 164, 253);
  1666. border-color: rgb(101, 164, 253);
  1667. }
  1668. }
  1669. &--warm {
  1670. background: #ff3b30;
  1671. &:hover {
  1672. background: #f56c6c;
  1673. }
  1674. }
  1675. }
  1676. }
  1677. }
  1678. }
  1679. &__footer {
  1680. padding: 20px 18px;
  1681. font-size: 14px;
  1682. color: #333;
  1683. .text {
  1684. margin-right: 20px;
  1685. &--red {
  1686. color: #ff3b30;
  1687. }
  1688. }
  1689. }
  1690. }
  1691. </style>