index.vue 31 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171
  1. <template>
  2. <div class="my-message">
  3. <div class="my-message__header">
  4. <el-tabs :value="formData.systemStatusList" @tab-click="tabChange">
  5. <el-tab-pane
  6. :label="item.label"
  7. :name="item.systemStatus"
  8. v-for="(item, index) in tabList"
  9. :key="index"
  10. ></el-tab-pane>
  11. </el-tabs>
  12. </div>
  13. <div class="my-message__body">
  14. <div class="content">
  15. <div class="content__header">
  16. <div class="text">
  17. 未读共
  18. <span class="note">{{ receiptNum }}</span>
  19. </div>
  20. <el-button
  21. type="danger"
  22. @click="clearMsg"
  23. round
  24. plain
  25. class="btn btn--red"
  26. >清空</el-button
  27. >
  28. <el-button
  29. type="primary"
  30. round
  31. plain
  32. class="btn"
  33. @click="uploadMsgStatus"
  34. >全部标为已读</el-button
  35. >
  36. </div>
  37. <div class="content__body">
  38. <div class="no-data" v-if="list.length == 0">暂无消息</div>
  39. <template v-else>
  40. <div class="message-list" v-if="listListStatus">
  41. <div
  42. class="message-list__item"
  43. v-for="(item, index) in list"
  44. :key="index"
  45. >
  46. <div
  47. class="icon"
  48. :class="{ 'icon--blue': item.systemStatus === 1 ? '' : true }"
  49. >
  50. <i
  51. v-if="item.systemStatus === 1"
  52. class="el-icon-message-solid"
  53. ></i>
  54. <i v-else class="el-icon-s-custom"></i>
  55. </div>
  56. <div class="text">
  57. <div class="desc">
  58. {{ $tools.timestampToTime(item.sendTime, false) }}
  59. </div>
  60. <div class="title">
  61. {{
  62. item.systemStatus === 2
  63. ? item.informVo.informName
  64. : item.systemStatus === 1
  65. ? item.text
  66. : "接口异常"
  67. }}
  68. </div>
  69. </div>
  70. <el-button type="primary" class="btn" @click="showDetail(item)"
  71. >查看详情</el-button
  72. >
  73. </div>
  74. </div>
  75. <div class="pagination">
  76. <el-pagination
  77. @current-change="currentChange"
  78. background
  79. layout="prev, pager, next"
  80. :total="total"
  81. :pager-count="5"
  82. :page-size="formData.pageSize"
  83. >
  84. </el-pagination>
  85. </div>
  86. </template>
  87. </div>
  88. </div>
  89. </div>
  90. <el-dialog
  91. width="600px"
  92. class="my-message-modal"
  93. :visible.sync="showDetailModal"
  94. :close-on-click-modal="false"
  95. :close-on-press-escape="false"
  96. :show-close="false"
  97. >
  98. <div class="my-message-modal__content">
  99. <div class="my-message-modal__close" @click="showDetailModal = false">
  100. X
  101. </div>
  102. <div class="my-message-modal__header">通知详情</div>
  103. <div class="my-message-modal__body">
  104. <div class="content">
  105. <div class="content__body">
  106. <div class="title">
  107. {{
  108. listData.systemStatus === 2
  109. ? listData.informVo.informName
  110. : listData.systemStatus === 1
  111. ? listData.remind
  112. : ""
  113. }}
  114. </div>
  115. <div class="desc">
  116. {{ $tools.timestampToTime(listData.sendTime, false) }}
  117. </div>
  118. <div
  119. class="content"
  120. v-if="listData.systemStatus === 2"
  121. v-html="listData.informVo.affiche"
  122. ></div>
  123. <div class="content" v-if="listData.systemStatus === 1">
  124. {{ listData.text }}
  125. </div>
  126. <div class="list" v-if="listData.informVo">
  127. <div
  128. class="item"
  129. v-for="(item, index) in listData.informVo.informCourseVo"
  130. :key="index"
  131. >
  132. <div class="item__title">{{ item.goodsName }}</div>
  133. <div class="item__desc">
  134. {{ item.courseName
  135. }}{{ item.moduleName ? "/" + item.moduleName : ""
  136. }}{{ item.chapterName ? "/" + item.chapterName : ""
  137. }}{{ item.sectionName }}
  138. </div>
  139. <div class="item__content" @click="jumpSection(item)">
  140. {{ $tools.secondToTime(item.topicNum) }}(点击可直接跳转)
  141. </div>
  142. </div>
  143. <div
  144. class="item"
  145. v-for="(item, index) in listData.informVo.informExamVo"
  146. :key="index"
  147. >
  148. <div class="item__title">{{ item.goodsName }}</div>
  149. <div class="item__desc">
  150. {{ item.moduleName ? "/" + item.moduleName : ""
  151. }}{{ item.chapterName ? "/" + item.chapterName : ""
  152. }}{{ item.examName }}
  153. </div>
  154. <div class="item__content" @click="jumpExam(item)">
  155. 第{{ item.topicNum }}道题(点击可直接跳转)
  156. </div>
  157. </div>
  158. </div>
  159. </div>
  160. </div>
  161. </div>
  162. <div
  163. class="my-message-modal__footer"
  164. v-if="
  165. (statusGO &&
  166. listData.systemStatus === 1 &&
  167. getNames(listData.remindId) !== '') ||
  168. (listData.systemStatus === 2 && listData.receiptStatus === 0)
  169. "
  170. >
  171. <el-button
  172. type="primary"
  173. class="confirm"
  174. @click="isOk"
  175. v-if="listData.systemStatus === 2 && listData.receiptStatus === 0"
  176. >
  177. 我已阅读
  178. </el-button>
  179. <el-button
  180. type="primary"
  181. class="confirm"
  182. @click="jumpFuns(goodsData, listData.remindId)"
  183. v-if="
  184. statusGO &&
  185. listData.systemStatus === 1 &&
  186. getNames(listData.remindId) !== ''
  187. "
  188. >
  189. {{ getNames(listData.remindId) }}
  190. </el-button>
  191. </div>
  192. </div>
  193. </el-dialog>
  194. <el-dialog
  195. width="800px"
  196. class="rebuild"
  197. :visible.sync="showRebuildDetailModal"
  198. :close-on-click-modal="false"
  199. :close-on-press-escape="false"
  200. :show-close="false"
  201. >
  202. <div class="rebuild__content">
  203. <div class="rebuild__close" @click="showRebuildDetailModal = false">
  204. X
  205. </div>
  206. <div class="rebuild__header">审核详情</div>
  207. <div class="rebuild__body">
  208. <div class="content">
  209. <div class="content__header">
  210. <div class="title">重要提示:</div>
  211. <div class="desc">
  212. 如对审核结果有异议,请勿点击确认重学。致电020-87085982咨询
  213. </div>
  214. </div>
  215. <div class="content__body">
  216. <div class="list">
  217. <div
  218. class="list__item"
  219. v-for="(item, index) in rebuildItems"
  220. :key="index"
  221. >
  222. <div class="title">
  223. <span class="note" v-if="item.type == 0"> 测试 </span>
  224. <span class="note note--yellow" v-if="item.type == 1"
  225. >录播</span
  226. >
  227. <span class="note note--yellow" v-if="item.type == 2"
  228. >直播</span
  229. >
  230. <span class="note note--yellow" v-if="item.type == 3"
  231. >回放</span
  232. >
  233. {{ index + 1 }}、{{ item.name }}
  234. </div>
  235. <div class="desc">
  236. <div class="imgs">
  237. <div
  238. class="img"
  239. v-for="(items, indexs) in item.userStudyRecordPhoto"
  240. :key="indexs"
  241. >
  242. <img :src="$tools.splitImgHost(items.photo)" />
  243. <div class="note">
  244. {{ $tools.timestampToTime(items.createTime, false) }}
  245. </div>
  246. </div>
  247. </div>
  248. </div>
  249. <div class="desc">
  250. 原因:
  251. <span class="note">拍照异常/时间异常</span>
  252. </div>
  253. </div>
  254. </div>
  255. </div>
  256. </div>
  257. </div>
  258. <div class="rebuild__footer">
  259. <el-button class="confirm" @click="rebuildSubmit" type="primary"
  260. >确认重学</el-button
  261. >
  262. </div>
  263. </div>
  264. </el-dialog>
  265. </div>
  266. </template>
  267. <script>
  268. export default {
  269. name: "MyMessage",
  270. data() {
  271. return {
  272. showRebuildDetailModal: false,
  273. showDetailModal: false,
  274. tabList: [
  275. {
  276. label: "系统消息",
  277. systemStatus: "1",
  278. },
  279. {
  280. label: "教务消息",
  281. systemStatus: "2",
  282. },
  283. ],
  284. formData: {
  285. systemStatusList: "1", //1系统消息2教务消息
  286. pageNum: 1,
  287. pageSize: 10,
  288. },
  289. goodsData: {},
  290. list: [],
  291. listData: {},
  292. messageId: 0,
  293. sysTime: 0,
  294. statusGO: true,
  295. total: 0,
  296. rebuildItems: {},
  297. listListStatus: true,
  298. receiptNum: 0, //未读数量
  299. };
  300. },
  301. mounted() {
  302. this.getappinformUserlist();
  303. },
  304. methods: {
  305. getreceiptStatus() {
  306. this.$request
  307. .getappinformUserlist({
  308. systemStatusList: this.formData.systemStatusList,
  309. receiptStatus: 0,
  310. })
  311. .then((res) => {
  312. this.receiptNum = res.total;
  313. });
  314. },
  315. /**
  316. * 全部已读
  317. */
  318. uploadMsgStatus() {
  319. this.$confirm("确定全部标记为已读?")
  320. .then((_) => {
  321. this.$request
  322. .courseappinformUserupdateAllRead({
  323. systemStatus: this.formData.systemStatusList,
  324. })
  325. .then((res) => {
  326. this.$message.success("成功");
  327. this.getappinformUserlist();
  328. });
  329. })
  330. .catch((_) => {});
  331. },
  332. currentChange(e) {
  333. this.formData.pageNum = e;
  334. this.getappinformUserlist();
  335. },
  336. tabChange(e) {
  337. if (this.formData.systemStatusList == e.name) return;
  338. this.formData.systemStatusList = e.name;
  339. this.formData.pageNum = 1;
  340. this.getappinformUserlist();
  341. },
  342. getappinformUserlist() {
  343. this.listListStatus = false;
  344. this.$request
  345. .getappinformUserlist(this.formData)
  346. .then((res) => {
  347. this.list = res.rows;
  348. this.total = res.total;
  349. this.getreceiptStatus();
  350. })
  351. .finally(() => {
  352. this.listListStatus = true;
  353. });
  354. },
  355. /**
  356. * 清空消息
  357. */
  358. clearMsg() {
  359. this.$confirm("清空消息吗?")
  360. .then((_) => {
  361. this.$request.appInformUserRemoveAll().then((res) => {
  362. this.formData.pageNum = 1;
  363. this.getappinformUserlist();
  364. });
  365. })
  366. .catch((_) => {});
  367. },
  368. getNames(int) {
  369. var arsty = "";
  370. switch (int) {
  371. case 1:
  372. case 3:
  373. case 5:
  374. case 6:
  375. case 7:
  376. case 19:
  377. case 21:
  378. case 22:
  379. case 23:
  380. arsty = "立刻学习";
  381. break;
  382. case 2:
  383. case 4:
  384. case 24:
  385. arsty = "马上填写";
  386. break;
  387. case 10:
  388. case 12:
  389. case 18:
  390. arsty = "立即重学";
  391. break;
  392. case 11:
  393. arsty = "立即预约";
  394. break;
  395. case 13:
  396. arsty = "预约考试";
  397. break;
  398. case 20:
  399. arsty = "重新购买";
  400. break;
  401. default:
  402. break;
  403. }
  404. return arsty;
  405. },
  406. //跳转页面
  407. async jumpFuns(item, remindId) {
  408. switch (remindId) {
  409. case 1:
  410. case 3:
  411. case 5:
  412. case 6:
  413. case 7:
  414. case 19:
  415. case 21:
  416. case 22:
  417. case 23:
  418. case 10:
  419. case 12:
  420. case 18:
  421. //课程
  422. if (item.goodsType == 1) {
  423. let currentTime = this.$tools.timest();
  424. console.log(currentTime);
  425. console.log(item);
  426. console.log(item.studyStartTime);
  427. console.log(item.studyEndTime);
  428. console.log(
  429. currentTime < item.studyStartTime ||
  430. currentTime > item.studyEndTime
  431. );
  432. if (
  433. currentTime < item.studyStartTime ||
  434. currentTime > item.studyEndTime
  435. ) {
  436. this.$message({
  437. type: "warning",
  438. message: "不在学习有效期,不可以学习了哦",
  439. });
  440. return;
  441. }
  442. if (
  443. (item.classStartTime && currentTime <= item.classStartTime) ||
  444. (item.classEndTime && currentTime >= item.classEndTime)
  445. ) {
  446. this.$message({
  447. type: "warning",
  448. message: "不在班级有效期,不能进入学习",
  449. });
  450. return;
  451. }
  452. if (item.learningStatus == 2) {
  453. this.$message({
  454. type: "warning",
  455. message: "开放学习时间待定,不能进入学习",
  456. });
  457. return;
  458. }
  459. if (item.classStatus == 0) {
  460. this.$message({
  461. type: "warning",
  462. message: "尚未开班,不能进入学习",
  463. });
  464. return;
  465. }
  466. if (
  467. item.learningStatus == 3 &&
  468. currentTime < item.learningTimeStart
  469. ) {
  470. this.$message({
  471. type: "warning",
  472. message: "不在开放学习时间,不能进入学习",
  473. });
  474. return;
  475. }
  476. if (
  477. item.gradeStatus == 1 &&
  478. item.status == 1 &&
  479. item.studyEndTime > currentTime &&
  480. item.classEndTime &&
  481. item.classEndTime < currentTime &&
  482. (item.periodStatus == 0 || item.periodStatus == -1) &&
  483. item.studyCount > 0
  484. ) {
  485. this.$confirm("班级已过期,需要重新选班", "提示", {
  486. confirmButtonText: "确定",
  487. cancelButtonText: "取消",
  488. closeOnClickModal: false,
  489. closeOnPressEscape: false,
  490. distinguishCancelAndClose: false,
  491. showClose: false,
  492. })
  493. .then((_) => {
  494. this.$router.push({
  495. path: "/person-center/my-course",
  496. });
  497. })
  498. .catch((_) => {});
  499. }
  500. let rebuildStatus = await this.courseGoodsRebuildStatus(
  501. item.goodsId,
  502. item.gradeId
  503. );
  504. if (rebuildStatus == 0) {
  505. this.rebuildItem = item;
  506. this.$request
  507. .getcourseperiodcheat({
  508. goodsId: item.goodsId,
  509. gradeId: item.gradeId,
  510. })
  511. .then((res) => {
  512. this.rebuildItems = res.rows;
  513. });
  514. this.showRebuildDetailModal = true;
  515. return;
  516. }
  517. if (item.courseNum == 1) {
  518. this.$request
  519. .courseCourseList({
  520. pageNum: 1,
  521. pageSize: 1,
  522. goodsId: item.goodsId,
  523. gradeId: item.gradeId,
  524. })
  525. .then((res) => {
  526. this.$router.push({
  527. path: "/my-course-detail/" + item.goodsId,
  528. query: {
  529. id: res.rows[0].courseId,
  530. },
  531. });
  532. });
  533. return;
  534. }
  535. this.$router.push({
  536. path: "/person-center/my-course",
  537. });
  538. // arsty = '立刻学习';
  539. //题库
  540. } else if (item.goodsType == 2) {
  541. this.$router.push({
  542. path: "/person-center/my-bank",
  543. });
  544. }
  545. break;
  546. case 2:
  547. case 4:
  548. this.$navTo.togo("/pages2/verify/input", {
  549. id: item.goodsId,
  550. });
  551. break;
  552. case 24:
  553. this.$navTo.togo("/pages2/verify/input2", {
  554. id: item.goodsId,
  555. });
  556. break;
  557. case 11:
  558. case 13:
  559. var data = {
  560. goodsId: item.goodsId,
  561. gradeId: item.gradeId,
  562. };
  563. this.$request
  564. .getApplysubscribe(data)
  565. .then((res) => {
  566. this.$router.push({
  567. path: "/person-center/my-classhour/appointment",
  568. query: {
  569. goodsId: item.goodsId,
  570. gradeId: item.gradeId,
  571. },
  572. });
  573. })
  574. .catch((err) => {
  575. this.$message({
  576. type: "warning",
  577. message: err.msg,
  578. });
  579. });
  580. break;
  581. case 20:
  582. this.$router.push({
  583. path: "/my-course-detail/" + item.goodsId,
  584. query: {
  585. gradeId: item.gradeId,
  586. },
  587. });
  588. break;
  589. default:
  590. break;
  591. }
  592. },
  593. /**
  594. * @param {Object} goodsId 商品id
  595. * 查询商品重修状态
  596. */
  597. courseGoodsRebuildStatus(goodsId, gradeId) {
  598. return new Promise((resolve) => {
  599. this.$request
  600. .courseGoodsRebuildStatus({
  601. goodsId: goodsId,
  602. gradeId: gradeId,
  603. })
  604. .then((res) => {
  605. resolve(res.data);
  606. });
  607. });
  608. },
  609. rebuildSubmit() {
  610. this.$confirm(
  611. "如对审核结果有异议,请勿点击确认重学。致电020-87085982咨询",
  612. "注意",
  613. {
  614. confirmButtonText: "确认重学",
  615. cancelButtonText: "取消",
  616. closeOnClickModal: false,
  617. closeOnPressEscape: false,
  618. distinguishCancelAndClose: false,
  619. showClose: false,
  620. }
  621. )
  622. .then((_) => {
  623. this.$request
  624. .courseperiodrebuild({
  625. goodsId: this.rebuildItem.goodsId,
  626. gradeId: this.rebuildItem.gradeId,
  627. })
  628. .then((res) => {
  629. this.showRebuildDetailModal = false;
  630. this.$router.push({
  631. path: `/my-course-detail/${this.rebuildItem.goodsId}`,
  632. query: {
  633. gradeId: this.rebuildItem.gradeId,
  634. orderGoodsId: this.rebuildItem.orderGoodsId,
  635. },
  636. });
  637. });
  638. })
  639. .catch((_) => {});
  640. },
  641. showDetail(item) {
  642. this.sysTime = this.$tools.timest();
  643. this.messageId = item.id;
  644. this.getMessage();
  645. this.showDetailModal = true;
  646. },
  647. isOk() {
  648. this.$request
  649. .courseappinformUser({ id: this.listData.id, receiptStatus: 1 })
  650. .then((res) => {
  651. this.getappinformUserlist();
  652. });
  653. this.showDetailModal = false;
  654. },
  655. getMessage() {
  656. this.$request.getappinformUserId(this.messageId).then((res) => {
  657. if (
  658. res.data.receiptStatus === 1 &&
  659. (res.data.remindId === 2 ||
  660. res.data.remindId === 4 ||
  661. res.data.remindId === 24)
  662. ) {
  663. this.$request
  664. .getbaseprofiletpgetInfo({ goodsId: res.data.goodsId })
  665. .then((k) => {
  666. if (
  667. (k.data.status === 3 && k.data.changeStatus === 2) ||
  668. k.data.status === 2 ||
  669. k.data.status === 1
  670. ) {
  671. this.statusGO = false;
  672. }
  673. });
  674. }
  675. if (!res.data.receiptStatus) {
  676. this.$request
  677. .courseappinformUser({ id: res.data.id, receiptStatus: 1 })
  678. .then((res) => {});
  679. }
  680. if (res.data.informVo && res.data.informVo.affiche) {
  681. res.data.informVo.affiche = res.data.informVo.affiche.replace(
  682. /<img/gi,
  683. '<img style="max-width:100%;"'
  684. );
  685. }
  686. this.listData = res.data;
  687. if (res.data.goodsId) {
  688. if (res.data.gradeId) {
  689. this.$request.goodsDetail(res.data.goodsId).then((rs) => {
  690. this.goodsData = rs.data;
  691. if (
  692. rs.data.goodsType === 3 &&
  693. (res.data.remindId === 1 ||
  694. res.data.remindId === 3 ||
  695. res.data.remindId === 5 ||
  696. res.data.remindId === 6 ||
  697. res.data.remindId === 7 ||
  698. res.data.remindId === 19 ||
  699. res.data.remindId === 21 ||
  700. res.data.remindId === 22)
  701. ) {
  702. this.statusGO = false;
  703. }
  704. });
  705. } else {
  706. this.$request.commonGoodsDetail(res.data.goodsId).then((rs) => {
  707. this.goodsData = rs.data;
  708. if (
  709. rs.data.goodsType === 3 &&
  710. (res.data.remindId === 1 ||
  711. res.data.remindId === 3 ||
  712. res.data.remindId === 5 ||
  713. res.data.remindId === 6 ||
  714. res.data.remindId === 7 ||
  715. res.data.remindId === 19 ||
  716. res.data.remindId === 21 ||
  717. res.data.remindId === 22)
  718. ) {
  719. this.statusGO = false;
  720. }
  721. });
  722. }
  723. }
  724. });
  725. },
  726. //跳转节视频
  727. jumpSection(item) {
  728. item.noteSecond = Number(item.topicNum) * 60; //转秒数\
  729. this.$router.push({
  730. path: "/my-course-detail/" + item.goodsId,
  731. query: {
  732. courseId: item.courseId,
  733. sectionId: item.sectionId,
  734. moduleId: item.moduleId || 0,
  735. chapterId: item.chapterId || 0,
  736. recordingUrl: item.recordingUrl,
  737. noteSecond: item.noteSecond,
  738. },
  739. });
  740. },
  741. //跳转题库题目
  742. jumpExam(item) {
  743. this.$router.push({
  744. path: "/bank-exam/" + item.goodsId,
  745. query: {
  746. current: item.topicNum - 1,
  747. examId: item.examId,
  748. moduleId: item.moduleId || 0,
  749. chapterId: item.chapterId || 0,
  750. },
  751. });
  752. console.log(item);
  753. uni.navigateTo({
  754. url:
  755. "/pages2/bank/questionBank?current=" +
  756. (item.topicNum - 1) +
  757. "&id=" +
  758. item.examId +
  759. "&goodsid=" +
  760. item.goodsId +
  761. "&chapterId=" +
  762. item.moduleId +
  763. "&moduleId=" +
  764. item.moduleId,
  765. });
  766. },
  767. },
  768. };
  769. </script>
  770. <!-- Add "scoped" attribute to limit CSS to this component only -->
  771. <style scoped lang="scss">
  772. .my-message {
  773. &__header {
  774. /deep/ .el-tabs__header {
  775. margin-bottom: 0;
  776. }
  777. }
  778. &__body {
  779. .content {
  780. &__header {
  781. height: 64px;
  782. display: flex;
  783. align-items: center;
  784. .text {
  785. flex: 1;
  786. padding-left: 28px;
  787. font-size: 14px;
  788. font-family: Microsoft YaHei;
  789. font-weight: 400;
  790. color: #999999;
  791. .note {
  792. font-size: 14px;
  793. font-family: Microsoft YaHei;
  794. font-weight: 400;
  795. color: #3f8dfd;
  796. }
  797. }
  798. .btn {
  799. cursor: pointer;
  800. margin: 0 14px;
  801. width: 122px;
  802. height: 32px;
  803. border-radius: 16px;
  804. padding: 0;
  805. text-align: center;
  806. line-height: 30px;
  807. font-size: 16px;
  808. &--red {
  809. border-color: #ff3b30;
  810. }
  811. }
  812. }
  813. &__body {
  814. .message-list {
  815. &__item {
  816. margin-bottom: 24px;
  817. display: flex;
  818. border: 1px solid #eee;
  819. padding: 30px 24px;
  820. align-items: center;
  821. border-radius: 8px;
  822. .icon {
  823. width: 40px;
  824. height: 40px;
  825. background: rgba(255, 209, 0, 1);
  826. border-radius: 50%;
  827. display: flex;
  828. align-items: center;
  829. justify-content: center;
  830. center &--blue {
  831. background: rgba(0, 122, 255, 1);
  832. }
  833. i {
  834. font-size: 24px;
  835. color: #fff;
  836. }
  837. }
  838. .text {
  839. flex: 1;
  840. padding-left: 16px;
  841. .title {
  842. font-size: 16px;
  843. font-family: Microsoft YaHei;
  844. font-weight: 400;
  845. color: #333333;
  846. margin-top: 10px;
  847. }
  848. .desc {
  849. font-size: 12px;
  850. font-family: Microsoft YaHei;
  851. font-weight: 400;
  852. color: #999999;
  853. }
  854. .content {
  855. font-size: 14px;
  856. font-family: Microsoft YaHei;
  857. font-weight: 400;
  858. color: #666;
  859. }
  860. }
  861. .btn {
  862. cursor: pointer;
  863. width: 122px;
  864. height: 32px;
  865. padding: 0;
  866. border-radius: 16px;
  867. text-align: center;
  868. line-height: 32px;
  869. font-size: 16px;
  870. }
  871. }
  872. }
  873. .no-data {
  874. text-align: center;
  875. padding: 50px 0;
  876. color: #666;
  877. font-size: 16px;
  878. }
  879. .pagination {
  880. padding: 30px 0;
  881. text-align: center;
  882. }
  883. }
  884. }
  885. }
  886. .rebuild {
  887. /deep/ .el-dialog__header {
  888. display: none;
  889. }
  890. /deep/ .el-dialog__body {
  891. padding: 0;
  892. overflow: unset;
  893. }
  894. &__close {
  895. cursor: pointer;
  896. position: absolute;
  897. right: 0;
  898. top: -28px;
  899. width: 24px;
  900. height: 24px;
  901. line-height: 24px;
  902. text-align: center;
  903. color: #eee;
  904. border: 1px solid #eee;
  905. border-radius: 50%;
  906. }
  907. &__header {
  908. height: 40px;
  909. border-bottom: 1px solid #eee;
  910. line-height: 40px;
  911. font-size: 16px;
  912. font-family: Microsoft YaHei;
  913. font-weight: bold;
  914. color: #333333;
  915. padding-left: 24px;
  916. }
  917. &__body {
  918. height: 400px;
  919. padding: 0 24px;
  920. .content {
  921. height: 100%;
  922. overflow-y: auto;
  923. &__header {
  924. padding: 16px 0;
  925. border-bottom: 1px solid #eee;
  926. .title {
  927. font-size: 16px;
  928. font-family: Microsoft YaHei;
  929. font-weight: bold;
  930. color: #ff3b30;
  931. line-height: 24px;
  932. }
  933. .desc {
  934. margin-top: 10px;
  935. font-size: 16px;
  936. font-family: Microsoft YaHei;
  937. font-weight: 400;
  938. color: #ff3b30;
  939. line-height: 24px;
  940. }
  941. }
  942. &__body {
  943. .list {
  944. &__item {
  945. padding: 16px 0;
  946. border-bottom: 1px solid #eee;
  947. .title {
  948. font-size: 14px;
  949. font-family: Microsoft YaHei;
  950. font-weight: 400;
  951. color: #333333;
  952. .note {
  953. width: 32px;
  954. height: 20px;
  955. border: 1px solid #3f8dfd;
  956. border-radius: 4px;
  957. color: #3f8dfd;
  958. font-size: 12px;
  959. &--yellow {
  960. border: 1px solid #ff9500;
  961. color: #ff9500;
  962. }
  963. }
  964. }
  965. .desc {
  966. margin-top: 10px;
  967. font-size: 14px;
  968. font-family: Microsoft YaHei;
  969. font-weight: 400;
  970. color: #333333;
  971. .note {
  972. color: #ff3b30;
  973. line-height: 20px;
  974. }
  975. .img {
  976. width: 100px;
  977. height: 100px;
  978. display: inline-block;
  979. text-align: center;
  980. img {
  981. max-width: 100%;
  982. max-height: 100%;
  983. }
  984. }
  985. }
  986. }
  987. }
  988. }
  989. }
  990. }
  991. &__footer {
  992. height: 90px;
  993. border-top: 1px solid #eee;
  994. text-align: center;
  995. .confirm {
  996. width: 200px;
  997. height: 40px;
  998. padding: 0;
  999. border-radius: 20px;
  1000. text-align: center;
  1001. line-height: 40px;
  1002. color: #fff;
  1003. margin: 24px auto;
  1004. }
  1005. }
  1006. }
  1007. .my-message-modal {
  1008. /deep/ .el-dialog__header {
  1009. display: none;
  1010. }
  1011. /deep/ .el-dialog__body {
  1012. padding: 0;
  1013. overflow: unset;
  1014. }
  1015. &__close {
  1016. cursor: pointer;
  1017. position: absolute;
  1018. right: 0;
  1019. top: -24px;
  1020. width: 24px;
  1021. height: 24px;
  1022. line-height: 24px;
  1023. text-align: center;
  1024. color: #fff;
  1025. border: 1px solid #eee;
  1026. border-radius: 50%;
  1027. }
  1028. &__header {
  1029. height: 40px;
  1030. line-height: 40px;
  1031. font-size: 16px;
  1032. font-family: Microsoft YaHei;
  1033. font-weight: bold;
  1034. color: #333333;
  1035. padding-left: 24px;
  1036. border-bottom: 1px solid #eee;
  1037. }
  1038. &__body {
  1039. height: auto;
  1040. padding: 0 24px 24px;
  1041. .content {
  1042. &__body {
  1043. .title {
  1044. margin-top: 10px;
  1045. font-size: 16px;
  1046. font-family: Microsoft YaHei;
  1047. font-weight: 400;
  1048. color: #333333;
  1049. line-height: 24px;
  1050. }
  1051. .desc {
  1052. margin-top: 8px;
  1053. font-size: 12px;
  1054. font-family: Microsoft YaHei;
  1055. font-weight: 400;
  1056. color: #999999;
  1057. line-height: 24px;
  1058. }
  1059. .list {
  1060. .item {
  1061. margin-top: 18px;
  1062. font-size: 14px;
  1063. font-family: Microsoft YaHei;
  1064. font-weight: 400;
  1065. line-height: 28px;
  1066. &__title {
  1067. color: #333;
  1068. font-size: 16px;
  1069. }
  1070. &__desc {
  1071. color: #666;
  1072. font-size: 16px;
  1073. }
  1074. &__content {
  1075. font-size: 14px;
  1076. cursor: pointer;
  1077. color: #3f8dfd;
  1078. }
  1079. }
  1080. }
  1081. }
  1082. }
  1083. }
  1084. &__footer {
  1085. height: 90px;
  1086. overflow: hidden;
  1087. border-top: 1px solid #eee;
  1088. .confirm {
  1089. display: block;
  1090. margin: 25px auto 0;
  1091. width: 200px;
  1092. height: 40px;
  1093. padding: 0;
  1094. border-radius: 20px;
  1095. text-align: center;
  1096. line-height: 40px;
  1097. }
  1098. }
  1099. }
  1100. }
  1101. </style>