TaskCard.vue 23 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746
  1. <!-- 工作台任务卡片 -->
  2. <template>
  3. <div class="task-card">
  4. <div class="top-title-box">
  5. <p>工作台任务</p>
  6. </div>
  7. <div class="card-max-big-box">
  8. <div class="year-card-box for-max-big-box">
  9. <div class="year-card-top-title-box">
  10. <p>学年数据统计</p>
  11. <p>按学年统计历年考试通过情况与成绩</p>
  12. </div>
  13. <div class="bottom-content-box scrollbar-box">
  14. <p class="null-p" v-if="!yearMinList[0]">暂无数据</p>
  15. <div class="bottom-big-box-1" v-for="(item,index) in yearMinList">
  16. <p>{{item.academicYear}}</p>
  17. <p>{{item.statusCode==0?'未开始':(item.statusCode==2?'通过丨'+item.score:(item.statusCode==1?'进行中':'未通过'))}}</p>
  18. </div>
  19. </div>
  20. </div>
  21. <!--任务卡列表-->
  22. <div class="year-card-box for-max-big-box">
  23. <div class="year-card-top-title-box">
  24. <p>学习考试任务</p>
  25. <p>待完成的学习任务</p>
  26. </div>
  27. <div class="bottom-content-box scrollbar-box">
  28. <p class="null-p" v-if="!dataList2[0]">暂无数据</p>
  29. <div class="bottom-big-box-5" v-for="(item,index) in dataList2" @click="tableButtonOne(item.conditionType,item)">
  30. <p class="text-name-p">{{item.examName}}</p>
  31. <div class="text-flex-box" v-if="item.conditionType == 1">
  32. <p>考前学习</p>
  33. <p>{{item.completedStudyHours}} / {{item.studyHoursRequirement}} 学时</p>
  34. </div>
  35. <div class="text-flex-box" v-if="item.conditionType == 2">
  36. <p>考前学习</p>
  37. <p>未完成</p>
  38. </div>
  39. <div class="text-flex-box" v-if="item.conditionType == 3">
  40. <p>模拟考试</p>
  41. <p>未完成</p>
  42. </div>
  43. <div class="text-flex-box" v-if="item.examKind==1&&item.conditionType == 4">
  44. <p>在线考试</p>
  45. <p>
  46. <span :class="!item.isPassed&&item.attemptCount==0?'color-A':(!item.isPassed&&item.attemptCount>0?'color-B':(item.isPassed?'color-C':''))">{{!item.isPassed&&item.attemptCount==0?'未开始':(!item.isPassed&&item.attemptCount>0?'未通过':(item.isPassed?'已通过':''))}}</span>
  47. <span style="margin-left:20px;">{{item.attemptCount>0?'成绩:'+item.maxScore+'分':''}}</span>
  48. </p>
  49. </div>
  50. <div class="text-flex-box" v-if="item.examKind==2&&item.conditionType == 4">
  51. <p>补考</p>
  52. <p>未完成</p>
  53. </div>
  54. <p class="time-p">{{parseTime(item.startTime,"{y}-{m}-{d} {h}:{i}")}} 至 {{parseTime(item.endTime,"{y}-{m}-{d} {h}:{i}")}}</p>
  55. </div>
  56. </div>
  57. </div>
  58. <!--模拟练习卡-->
  59. <div class="examination-card-box for-max-big-box">
  60. <div class="year-card-top-title-box">
  61. <p>模拟练习</p>
  62. <p>刷题进度和正确率</p>
  63. </div>
  64. <div class="bottom-content-box scrollbar-box" style="cursor: pointer;" @click="goPracticeQuestions()">
  65. <div class="bottom-big-box-6">
  66. <p>{{summaryData.completedCount}} / {{summaryData.totalCount}}</p>
  67. <p >已完成题目数 / 题库总数</p>
  68. </div>
  69. <div class="bottom-big-box-6">
  70. <p>{{summaryData.correctRate}}%</p>
  71. <p >当前模拟练习正确率</p>
  72. </div>
  73. </div>
  74. </div>
  75. <!--在线任务卡-->
  76. <div class="for-max-big-box" v-for="(item,index) in dataList" :key="index">
  77. <div class="year-card-top-title-box">
  78. <p>{{item.examName}}</p>
  79. <p v-if="item.examKind==1&&item.conditionType != 4">满足前置条件后可参加考试</p>
  80. <p v-if="item.examKind==1&&item.conditionType == 4">
  81. <span>{{parseTime(item.startTime,"{y}-{m}-{d} {h}:{i}")}} 至 {{parseTime(item.endTime,"{y}-{m}-{d} {h}:{i}")}}</span>
  82. </p>
  83. <p v-if="item.examKind==1&&item.conditionType == 4">
  84. <span :class="!item.isPassed&&item.attemptCount==0?'color-A':(!item.isPassed&&item.attemptCount>0?'color-B':(item.isPassed?'color-C':''))">{{!item.isPassed&&item.attemptCount==0?'未考试':(!item.isPassed&&item.attemptCount>0?'未通过':(item.isPassed?'已通过':''))}}</span>
  85. <span v-if="item.maxScore>0" style="margin-left:15px;">{{item.attemptCount>0?'成绩:'+item.maxScore+'分':''}}</span>
  86. </p>
  87. </div>
  88. <div class="bottom-content-box scrollbar-box">
  89. <div class="bottom-big-box-4">
  90. <p :class="item.completedStudyHours<item.studyHoursRequirement?'text-name':''">学时要求</p>
  91. <p class="colorA" v-if="item.needStudy" @click="tableButton(1,item)">开始学习</p>
  92. <p class="position-p-1" v-if="item.completedStudyHours<item.studyHoursRequirement">{{item.completedStudyHours}} / {{item.studyHoursRequirement}} 学时</p>
  93. <p class="text-type" v-if="item.completedStudyHours>=item.studyHoursRequirement">已达标</p>
  94. </div>
  95. <div class="bottom-big-box-4" v-if="item.examStudy">
  96. <p>考前学习</p>
  97. <p class="colorA" @click="tableButton(2,item)">开始学习</p>
  98. <!--<p class="colorA" v-if="!item.needStudy" @click="tableButton(2,item)">开始学习</p>-->
  99. <!--<p class="colorC" v-if="item.needStudy">待满足学时要求后解锁</p>-->
  100. </div>
  101. <div class="bottom-big-box-4" v-if="item.mockExam">
  102. <p>模拟考试</p>
  103. <p class="colorA" v-if="!item.examStudy" @click="tableButton(3,item)">开始考试</p>
  104. <p class="colorC" v-if="item.examStudy">待完成学习任务后解锁</p>
  105. </div>
  106. <div class="bottom-big-box-4">
  107. <p>在线考试</p>
  108. <p class="colorA" v-if="item.examKind==1&&item.conditionType == 4" @click="tableButton(4,item)">开始考试</p>
  109. <p class="colorC" v-if="item.examKind==1&&item.conditionType != 4">待通过模拟考试后解锁</p>
  110. <p class="colorB" v-if="item.examKind==2">考试未通过</p>
  111. </div>
  112. <div class="bottom-big-box-4" v-if="item.examKind == 2">
  113. <p>参加补考</p>
  114. <p class="colorA" @click="tableButton(4,item)">开始考试</p>
  115. </div>
  116. </div>
  117. </div>
  118. </div>
  119. <el-dialog class="preExam-dialog"
  120. :modal-append-to-body="false"
  121. :close-on-click-modal="false" :close-on-press-escape="false"
  122. title="考试承诺书"
  123. :visible.sync="preExamDialogType"
  124. v-if="preExamDialogType"
  125. width="840px"
  126. append-to-body>
  127. <div style="height:600px;" class="scrollbar-box">
  128. <richTextPdf ref="richTextPdf" :content="richTextHtml" />
  129. </div>
  130. <div slot="footer" class="dialog-footer dialog-footer-box">
  131. <p class="dialog-footer-button-null"></p>
  132. <p class="dialog-footer-button-border" v-if="preButtonType" @click="preExamDialogCancel">下载</p>
  133. <p class="dialog-footer-button-primary" @click="examUserExamStart">确认</p>
  134. <p class="dialog-footer-button-null"></p>
  135. </div>
  136. </el-dialog>
  137. </div>
  138. </template>
  139. <script>
  140. import { Encrypt,Decrypt} from '@/utils/secret'
  141. import {
  142. examUserCoursewareLearningRestart,examElLabEduRelationAcademicYearProgress,
  143. examUserExamStudyTaskList,examUserExamStart,examUserPracticeSummary,
  144. examUserExamCommitmentConfirm,examUserExamAttemptFinished,
  145. } from "@/api/safetyEducationExaminationNew/index";
  146. import richTextPdf from '@/views/safetyEducationExaminationNew/components/richTextPdf.vue';
  147. export default {
  148. name: 'TaskCard',
  149. components: { richTextPdf },
  150. data() {
  151. return {
  152. //学年数据
  153. yearType:true,
  154. yearMinList:[],
  155. studyMinList:[],
  156. examinationMinList:[],
  157. dataList:[],
  158. dataList2:[],
  159. summaryData:{
  160. totalCount:0,
  161. completedCount:0,
  162. correctRate:0,
  163. },
  164. //考前承诺相关
  165. preExamDialogType:false,
  166. preButtonType:false,
  167. richTextHtml: '',
  168. preData:null,
  169. }
  170. },
  171. created() {
  172. },
  173. mounted() {
  174. this.initialization();
  175. },
  176. methods: {
  177. initialization(){
  178. this.examUserPracticeSummary();
  179. this.examElLabEduRelationAcademicYearProgress();
  180. this.examUserExamStudyTaskList();
  181. this.examUserExamStudyTaskList2();
  182. },
  183. //下载承诺书
  184. preExamDialogCancel(){
  185. this.msgSuccess('正在下载,请耐心等候')
  186. this.$refs['richTextPdf'].downloadPDF();
  187. },
  188. //确认承诺-并考试
  189. examUserExamStart(){
  190. if(this.preData.attemptId){
  191. this.examUserExamCommitmentConfirm(1,this.preData.attemptId);
  192. }else{
  193. examUserExamStart({examId:this.preData.examId,examScene:1,}).then(response => {
  194. if(response.data.attemptId){
  195. this.examUserExamCommitmentConfirm(2,response.data.attemptId);
  196. }else{
  197. this.msgError(response.message)
  198. }
  199. })
  200. }
  201. },
  202. //确认考试承诺书
  203. examUserExamCommitmentConfirm(type,attemptId){
  204. examUserExamCommitmentConfirm({attemptId:attemptId}).then(response => {
  205. let obj = {
  206. examId: this.preData.examId,
  207. attemptId: attemptId,
  208. type: '1',
  209. examKind:this.preData.examKind,
  210. attemptLimit:this.preData.attemptLimit,
  211. attemptCount:this.preData.attemptCount,
  212. }
  213. this.examUserExamAttemptFinished(1,obj);
  214. })
  215. },
  216. //开始考试判断是否有承诺书
  217. setRichExamData(item){
  218. if(item.commitmentEnabled == 1 && !item.commitmentConfirmed){
  219. this.$set(this,'preButtonType',item.commitmentPrintEnabled == 1?true:false);
  220. this.$set(this,'richTextHtml',item.commitmentContent);
  221. this.$set(this,'preData',item);
  222. this.$set(this,'preExamDialogType',true);
  223. }else{
  224. if(item.attemptId){
  225. this.examUserExamAttemptFinished(1,item);
  226. }else{
  227. this.examUserExamStartPlay(1,item);
  228. }
  229. }
  230. },
  231. //跳转刷题练习
  232. goPracticeQuestions(){
  233. this.$router.push({
  234. path: '/safetyEducationExaminationNew/safetyTest/practiceQuestions',
  235. query: {}
  236. })
  237. },
  238. //考试跳转
  239. tableButtonOne(type,item){
  240. let self = this;
  241. if(type == 1){
  242. if(item.examStudy&&item.courseId){
  243. //学习课程
  244. this.$router.push({
  245. path: '/learningCourse',
  246. query: {
  247. courseId: item.courseId,
  248. examId: item.examId,
  249. }
  250. })
  251. }else{
  252. //学时要求
  253. let obj = {
  254. examName:item.examName,
  255. knowledgePointIds:item.knowledgePointIds,
  256. completedStudyHours:item.completedStudyHours,
  257. studyHoursRequirement:item.studyHoursRequirement,
  258. }
  259. let text = Encrypt(JSON.stringify(obj))
  260. self.$router.push({
  261. path: '/safetyEducationExaminationNew/safetyEducation/knowledgeLearning',
  262. query: {
  263. text : text
  264. }
  265. })
  266. }
  267. }else if(type == 2){
  268. //学习课程
  269. this.$router.push({
  270. path: '/learningCourse',
  271. query: {
  272. courseId: item.courseId,
  273. examId: item.examId,
  274. }
  275. })
  276. }else if(type == 3){
  277. //模拟考试
  278. if(item.mockExamId){
  279. let obj = {
  280. examId: item.examId,
  281. attemptId: item.mockExamId,
  282. };
  283. this.examUserExamAttemptFinished(2,obj);
  284. }else{
  285. let obj = {
  286. examId: item.examId,
  287. };
  288. this.examUserExamStartPlay(2,obj);
  289. }
  290. }else if(type == 4){
  291. //在线考试//补考
  292. this.setRichExamData(item);
  293. }
  294. },
  295. //考试跳转
  296. tableButton(type,item){
  297. let self = this;
  298. if(type == 1){
  299. if(item.examStudy&&item.courseId){
  300. //学习课程
  301. this.$router.push({
  302. path: '/learningCourse',
  303. query: {
  304. courseId: item.courseId,
  305. examId: item.examId,
  306. }
  307. })
  308. }else{
  309. //学时要求
  310. let obj = {
  311. examName:item.examName,
  312. knowledgePointIds:item.knowledgePointIds,
  313. completedStudyHours:item.completedStudyHours,
  314. studyHoursRequirement:item.studyHoursRequirement,
  315. }
  316. let text = Encrypt(JSON.stringify(obj))
  317. self.$router.push({
  318. path: '/safetyEducationExaminationNew/safetyEducation/knowledgeLearning',
  319. query: {
  320. text : text
  321. }
  322. })
  323. }
  324. }else if(type == 2){
  325. //学习课程
  326. this.$router.push({
  327. path: '/learningCourse',
  328. query: {
  329. courseId: item.courseId,
  330. examId: item.examId,
  331. }
  332. })
  333. }else if(type == 3){
  334. //模拟考试
  335. if(item.mockExamId){
  336. let obj = {
  337. examId: item.examId,
  338. attemptId: item.mockExamId,
  339. };
  340. this.examUserExamAttemptFinished(2,obj);
  341. }else{
  342. let obj = {
  343. examId: item.examId,
  344. };
  345. this.examUserExamStartPlay(2,obj);
  346. }
  347. }else if(type == 4){
  348. //在线考试//补考
  349. this.setRichExamData(item);
  350. }
  351. },
  352. //二次验证考试是否已结束
  353. examUserExamAttemptFinished(type,item){
  354. examUserExamAttemptFinished({attemptId:item.attemptId}).then(response => {
  355. if(response.data){
  356. //已结束
  357. if(type == 1){
  358. //在线考试
  359. if(item.attemptLimit == 0 || item.attemptCount < item.attemptLimit){
  360. //获取新试卷
  361. this.examUserExamStartPlay(type,item)
  362. }else{
  363. //无可用次数 提示并刷新数据列表
  364. this.msgError('当前考试已结束')
  365. this.examUserExamStudyTaskList();
  366. this.examUserExamStudyTaskList2();
  367. }
  368. }else if(type == 2){
  369. //模拟考试-获取新试卷
  370. this.examUserExamStartPlay(type,item)
  371. }
  372. }else{
  373. //未结束
  374. this.confirmTitle(type,item);
  375. }
  376. })
  377. },
  378. //获取考试试卷
  379. examUserExamStartPlay(type,item){
  380. examUserExamStart({examId:item.examId,examScene:type,}).then(response => {
  381. if(response.data.attemptId){
  382. let obj = {
  383. examId: item.examId,
  384. attemptId: response.data.attemptId,
  385. };
  386. if(type == 1){
  387. obj.type = 1;
  388. obj.examKind = item.examKind;
  389. }
  390. this.confirmTitle(type,obj);
  391. }else{
  392. this.msgError(response.message)
  393. }
  394. })
  395. },
  396. //提示与跳转
  397. confirmTitle(type,obj){
  398. let self = this;
  399. if(type == 1){
  400. this.$confirm(
  401. '考试期间未完成答题请勿离开页面,离开后倒计时仍会继续,超时将自动交卷并记录成绩,扣除 1 次考试机会。',
  402. '进入考试页面',
  403. {
  404. confirmButtonText: '确定进入',
  405. cancelButtonText: '取消',
  406. type: 'warning',
  407. closeOnClickModal: false,
  408. closeOnPressEscape: false
  409. }
  410. ).then(() => {
  411. //在线考试
  412. this.$router.push({
  413. path: '/startTheExam',
  414. query: obj
  415. })
  416. }).catch(() => {})
  417. }else if(type == 2){
  418. //模拟考试
  419. self.$router.push({
  420. path: '/mockExam',
  421. query: obj
  422. })
  423. }
  424. },
  425. //查询学年进度列表
  426. examElLabEduRelationAcademicYearProgress(){
  427. examElLabEduRelationAcademicYearProgress({}).then(response => {
  428. this.$set(this, 'yearMinList', response.data)
  429. })
  430. },
  431. //特殊考试
  432. examUserExamStudyTaskList(){
  433. let obj = {
  434. page:1,
  435. pageSize:5,
  436. examStatus:2,
  437. isSpecialExam:true,
  438. }
  439. examUserExamStudyTaskList(obj).then(response => {
  440. this.$set(this, 'dataList', response.data.records)
  441. })
  442. },
  443. //在线考试
  444. examUserExamStudyTaskList2(){
  445. let obj = {
  446. page:1,
  447. pageSize:5,
  448. examStatus:2,
  449. isSpecialExam:false,
  450. }
  451. examUserExamStudyTaskList(obj).then(response => {
  452. this.$set(this, 'dataList2', response.data.records)
  453. })
  454. },
  455. //在线考试
  456. examUserPracticeSummary(){
  457. examUserPracticeSummary({}).then(response => {
  458. this.$set(this, 'summaryData', response.data)
  459. })
  460. },
  461. },
  462. }
  463. </script>
  464. <style scoped lang="scss">
  465. .task-card {
  466. background: #fff;
  467. /*border-radius: 6px;*/
  468. padding: 16px 0 0 0;
  469. margin-bottom: 12px;
  470. /*box-shadow: 0 1px 4px rgba(0,0,0,0.06);*/
  471. background: rgba(255, 255, 255, 0.95);
  472. border: 1px solid #e8edf5;
  473. border-radius: 16px;
  474. box-shadow: 0 4px 20px rgba(37, 50, 74, 0.06);
  475. .top-title-box{
  476. display: flex;
  477. flex-direction: column;
  478. padding-left:20px;
  479. p{
  480. flex:1;
  481. line-height:20px;
  482. }
  483. p:nth-child(1){
  484. font-size:16px;
  485. font-weight:700;
  486. }
  487. p:nth-child(2){
  488. font-size:14px;
  489. }
  490. p:nth-child(3){
  491. font-size:14px;
  492. }
  493. }
  494. .card-max-big-box{
  495. margin-top:20px;
  496. .year-card-box{
  497. }
  498. .study-card-box{
  499. }
  500. .examination-card-box{
  501. }
  502. .for-max-big-box{
  503. display: inline-block;
  504. width:360px;
  505. height:300px;
  506. margin: 0 0 20px 20px;
  507. /*border-radius:6px;*/
  508. /*border:1px solid #dedede;*/
  509. /*box-shadow: 0 0 15px rgba(0, 0, 0, 0.2);*/
  510. overflow: hidden;
  511. background: linear-gradient(180deg, #fff, #f7faff);
  512. border: 1px solid #eaf0f8;
  513. border-radius: 14px;
  514. .year-card-top-title-box{
  515. padding:20px 20px 0 20px;
  516. position: relative;
  517. height:64px;
  518. p:nth-child(1){
  519. font-size:15px;
  520. font-weight:700;
  521. line-height:20px;
  522. display:block;
  523. overflow:hidden;
  524. text-overflow:ellipsis;
  525. white-space:nowrap;
  526. }
  527. p:nth-child(2){
  528. font-size:14px;
  529. line-height:20px;
  530. margin-top:6px;
  531. color:#60708a;
  532. }
  533. p:nth-child(3){
  534. cursor: pointer;
  535. font-size:12px;
  536. line-height:26px;
  537. color:#60708a;
  538. text-align: right;
  539. position: absolute;
  540. top:0;
  541. right:10px;
  542. }
  543. .color-A{
  544. color:#999;
  545. }
  546. .color-B{
  547. color:#f56c6c;
  548. }
  549. .color-C{
  550. color:#4fbe7e;
  551. }
  552. }
  553. .bottom-content-box{
  554. height:208px;
  555. margin-top:6px;
  556. padding:8px 14px 0 20px;
  557. .null-p{
  558. text-align: center;
  559. font-size: 14px;
  560. color:#999;
  561. line-height: 100px;
  562. }
  563. .bottom-big-box-1{
  564. display: flex;
  565. /*background-color: rgba(1, 131, 250, 0.1);*/
  566. border-radius:6px;
  567. padding:12px 14px;
  568. margin-bottom:12px;
  569. height:68px;
  570. border: 1px solid #e5edf8;
  571. background-color: #fff;
  572. p{
  573. font-size:14px;
  574. line-height:44px;
  575. }
  576. p:nth-child(1){
  577. flex:1;
  578. font-size:15px;
  579. font-weight:700;
  580. }
  581. p:nth-child(2){
  582. width:80px;
  583. text-align: center;
  584. }
  585. }
  586. .bottom-big-box-2{
  587. /*background-color: rgba(1, 131, 250, 0.1);*/
  588. border-radius:6px;
  589. padding:12px 14px;
  590. margin-bottom:12px;
  591. height:68px;
  592. cursor: pointer;
  593. border: 1px solid #e5edf8;
  594. background-color: #fff;
  595. p{
  596. font-size:14px;
  597. line-height:22px;
  598. }
  599. p:nth-child(1){
  600. font-size:15px;
  601. font-weight:700;
  602. }
  603. }
  604. .bottom-big-box-3{
  605. /*background-color: rgba(1, 131, 250, 0.1);*/
  606. border-radius:6px;
  607. padding:12px 14px;
  608. margin-bottom:12px;
  609. height:68px;
  610. cursor: pointer;
  611. border: 1px solid #e5edf8;
  612. background-color: #fff;
  613. p{
  614. font-size:14px;
  615. line-height:22px;
  616. }
  617. p:nth-child(1){
  618. font-size:15px;
  619. font-weight:700;
  620. }
  621. }
  622. .bottom-big-box-4{
  623. /*background-color: rgba(1, 131, 250, 0.1);*/
  624. border-radius:6px;
  625. padding:12px 14px;
  626. margin-bottom:12px;
  627. height:68px;
  628. display: flex;
  629. position: relative;
  630. border: 1px solid #e5edf8;
  631. background-color: #fff;
  632. p{
  633. font-size:14px;
  634. line-height:44px;
  635. }
  636. p:nth-child(1){
  637. }
  638. p:nth-child(2){
  639. flex: 1;
  640. text-align: right;
  641. }
  642. .colorA{
  643. color:#0183fa;
  644. cursor: pointer;
  645. }
  646. .colorB{
  647. color:#D9001B;
  648. }
  649. .colorC{
  650. color:#60708a;
  651. }
  652. .position-p-1{
  653. position: absolute;
  654. bottom:0;
  655. left:15px;
  656. width: 120px;
  657. font-size:12px;
  658. color:#60708a;
  659. }
  660. .text-name{
  661. margin-top:-10px;
  662. }
  663. .text-type{
  664. color: #4fbe7e;
  665. }
  666. }
  667. .bottom-big-box-5{
  668. /*background-color: rgba(1, 131, 250, 0.1);*/
  669. border-radius:6px;
  670. padding:8px 14px;
  671. margin-bottom:12px;
  672. height:76px;
  673. position: relative;
  674. border: 1px solid #e5edf8;
  675. background-color: #fff;
  676. cursor: pointer;
  677. .text-name-p{
  678. font-size:14px;
  679. font-weight:700;
  680. line-height:20px;
  681. }
  682. .text-flex-box{
  683. display: flex;
  684. color:#60708a;
  685. p{
  686. font-size:14px;
  687. line-height:20px;
  688. }
  689. p:nth-child(1){
  690. margin-right:20px;
  691. }
  692. p:nth-child(2){
  693. color:#60708a;
  694. .color-A{
  695. color:#999;
  696. }
  697. .color-B{
  698. color:#f56c6c;
  699. }
  700. .color-C{
  701. color:#4fbe7e;
  702. }
  703. }
  704. }
  705. .time-p{
  706. color:#60708a;
  707. font-size:14px;
  708. line-height:20px;
  709. }
  710. }
  711. .bottom-big-box-6{
  712. /*background-color: rgba(1, 131, 250, 0.1);*/
  713. border-radius:6px;
  714. padding:13px 14px;
  715. margin-bottom:12px;
  716. height:78px;
  717. position: relative;
  718. border: 1px solid #e5edf8;
  719. background-color: #fff;
  720. p:nth-child(1){
  721. display: block;
  722. font-size: 22px;
  723. color: #25324a;
  724. font-weight:700;
  725. line-height:26px;
  726. }
  727. p:nth-child(2){
  728. font-size:14px;
  729. line-height:26px;
  730. color:#60708a;
  731. }
  732. }
  733. }
  734. }
  735. }
  736. }
  737. </style>