myClass.js 38 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321
  1. const app = require('../../utils/util.js');
  2. const tools = require('../../utils/tools.js');
  3. Page({
  4. data: {
  5. isRz: false,
  6. showMore: false, //更多
  7. showzs: false, //证书显示
  8. show: false, //协议显示
  9. notice: "暂无未读通知",
  10. classInfo: {}, //班级信息
  11. kcArr: [], //课程列表
  12. sfmArr: [], //换算时分秒数组
  13. studentName: "", //学生名字
  14. status: '', //状态
  15. myCanvasId: 0, //画布id
  16. byzsbj: app.globalData.imgUrl+"/images/zsbj.jpg", //结业证背景 用于合成图片
  17. IngCourseArr: [], //如果有正在进行的课就存一下
  18. istask: false, //判断班级群是否添加
  19. istask1: false, //学员登记表是否完成
  20. istask2: false, //课程是否完成
  21. istask3: false, //期末考试是否完成
  22. istask4: false, //综合反馈是否完成
  23. currentId: null,
  24. currentName: "",
  25. tva: 32,
  26. noticeVis: false,
  27. defAvatarm:app.globalData.imgUrl+ "/images/mm.jpg",
  28. defAvatarf: app.globalData.imgUrl+"/images/fm.jpg",
  29. gender_icon_m:app.globalData.imgUrl+ "/images/g_m.png",
  30. gender_icon_f: app.globalData.imgUrl+"/images/g_f.png",
  31. cardVis: false,
  32. stuItem: null,
  33. pageNum: 1,
  34. pageSize: 20,
  35. stuInfo: {},
  36. jobArr: [],
  37. classVis: false,
  38. classErrVis: false,
  39. classNVis: false,
  40. scheduleList: [],
  41. icon_school:app.globalData.imgUrl+"/images/icon_school.png",
  42. icon_doc:app.globalData.imgUrl+"/images/icon_doc.png",
  43. icon_stu:"/images/icon_stu.png"
  44. },
  45. // 查询我是否认证
  46. isRz(sessionKey) {
  47. wx.request({
  48. url: app.globalData.publicUrl + '/wx/student/selStudentSessionKey',
  49. method: "post",
  50. data: {
  51. sessionKey
  52. },
  53. success: (res) => {
  54. if (res.data.code == 0 && (res.data.data !== null || res.data.data !== "")) {
  55. this.setData({
  56. isRz: false
  57. })
  58. this.isClass(sessionKey)
  59. } else {
  60. wx.hideLoading();
  61. this.setData({
  62. isRz: true
  63. })
  64. }
  65. },
  66. fail:()=>{
  67. wx.hideLoading()
  68. }
  69. })
  70. },
  71. // 取消认证
  72. escRz() {
  73. wx.switchTab({
  74. url: '/pages/index/index',
  75. })
  76. },
  77. // 确认认证
  78. goRz() {
  79. wx.navigateTo({
  80. url: '/pages/Identity/Identity',
  81. })
  82. },
  83. // 查询我是否有班&&班级名字
  84. isClass(sessionKey) {
  85. var that = this;
  86. wx.request({
  87. url: app.globalData.publicUrl + '/wx/student/selMyClas',
  88. method: "post",
  89. data: {
  90. sessionKey
  91. },
  92. success: (res) => {
  93. wx.hideLoading()
  94. if (res.data.code == 0) {
  95. let classInfo = res.data.data;
  96. classInfo.clasBegin = app.timeFmt(classInfo.clasBegin, "yyyy\/MM\/dd hh:mm ");
  97. classInfo.clasEnd = app.timeFmt(classInfo.clasEnd, "yyyy\/MM\/dd hh:mm ");
  98. console.log(classInfo);
  99. // classInfo.clasBegin=app.timeFilter(classInfo.clasBegin);
  100. // classInfo.clasEnd=app.timeFilter(classInfo.clasEnd);
  101. //console.log("classInfo.clasBegin:",app.timeFilter(classInfo.clasBegin));
  102. that.setData({
  103. classInfo: classInfo,
  104. classVis: true
  105. })
  106. this.isAgree(sessionKey);
  107. this.getMynotice(sessionKey);
  108. // this.getMycourse(sessionKey);
  109. // this.checkTaskList(sessionKey);
  110. // this.checkTaskList3(sessionKey, res.data.data.id);
  111. // this.checkTaskList4(sessionKey, res.data.data.id);
  112. } else {
  113. if (res.data.msg == "运行时异常:学员不可同时存在两个班级中。") {
  114. that.setData({ classErrVis: true });
  115. // wx.showModal({
  116. // content: "学员不可同时存在多个班级中哦",
  117. // showCancel: false,
  118. // success(res) {
  119. // if (res.confirm) {
  120. // wx.switchTab({
  121. // url: '../index/index'
  122. // })
  123. // }
  124. // }
  125. // })
  126. return false;
  127. } else {
  128. that.setData({ classNVis: true });
  129. wx.request({
  130. url: app.globalData.publicUrl + '/wx/student/selClasToo',
  131. method: "post",
  132. data: {
  133. sessionKey,
  134. isActive: 0
  135. },
  136. success: (res) => {
  137. console.log(res);
  138. let list = res.data.data.map(item => {
  139. item.clasBegin = app.timeFmt(item.clasBegin, "yyyy\/MM\/dd hh:mm ");
  140. item.clasEnd = app.timeFmt(item.clasEnd, "yyyy\/MM\/dd hh:mm ");
  141. return item;
  142. })
  143. that.setData({ scheduleList: list })
  144. }
  145. })
  146. // wx.showModal({
  147. // content: "您当前还没有正在开放的班级!",
  148. // showCancel: false,
  149. // success(res) {
  150. // if (res.confirm) {
  151. // wx.switchTab({
  152. // url: '../index/index'
  153. // })
  154. // }
  155. // }
  156. // })
  157. return false;
  158. }
  159. }
  160. },
  161. fail:()=>{
  162. wx.hideLoading();
  163. }
  164. })
  165. },
  166. // 协议是否已同意
  167. isAgree(sessionKey) {
  168. wx.request({
  169. url: app.globalData.publicUrl + '/wx/student/selStudentSessionKey',
  170. method: "post",
  171. data: {
  172. sessionKey
  173. },
  174. success: (res) => {
  175. if (res.data.code == 0 && res.data.data) {
  176. if (res.data.data.agreement == 0) {
  177. this.setData({
  178. studentName: res.data.data.studentName,
  179. show: false
  180. });
  181. } else {
  182. this.setData({
  183. studentName: res.data.data.studentName,
  184. show: true
  185. });
  186. }
  187. }
  188. }
  189. })
  190. },
  191. // 点击同意协议 并且记一下
  192. hidePopup() {
  193. wx.request({
  194. url: app.globalData.publicUrl + '/wx/student/verification',
  195. method: "post",
  196. data: {
  197. sessionKey: this.data.sessionKey
  198. },
  199. success: (res) => {
  200. this.setData({
  201. show: false
  202. });
  203. }
  204. })
  205. },
  206. moreThink() {
  207. wx.switchTab({
  208. url: '../index/index'
  209. })
  210. },
  211. // 检查班级群是否加了 && 学员登记任务check
  212. checkTaskList(sessionKey) {
  213. wx.request({
  214. url: app.globalData.publicUrl + '/wx/student/selStudentSessionKey',
  215. method: "post",
  216. data: {
  217. sessionKey
  218. },
  219. success: (res) => {
  220. if (res.data.code == 0) {
  221. console.log(res)
  222. this.setData({
  223. studentName: res.data.data.studentName,
  224. })
  225. if (res.data.data.joinClas == 0) {
  226. this.setData({
  227. istask: true
  228. })
  229. }
  230. if (res.data.data.register == 0) {
  231. this.setData({
  232. istask1: true
  233. })
  234. }
  235. }
  236. }
  237. })
  238. },
  239. // 期末考试任务检查
  240. checkTaskList3(sessionKey, id) {
  241. wx.request({
  242. url: app.globalData.publicUrl + '/wx/exam/clasExamstatus',
  243. method: "post",
  244. data: {
  245. sessionKey: sessionKey,
  246. clasId: id
  247. },
  248. success: (res) => {
  249. console.log(res)
  250. if (res.data.code == 0 && res.data.status == 1) {
  251. this.setData({
  252. istask3: true
  253. })
  254. }
  255. }
  256. })
  257. },
  258. // 综合反馈任务check
  259. checkTaskList4(sessionKey, id) {
  260. wx.request({
  261. url: app.globalData.publicUrl + '/wx/exam/status',
  262. method: "post",
  263. data: {
  264. sessionKey: sessionKey,
  265. clasId: id
  266. },
  267. success: (res) => {
  268. if (res.data.code == 0 && res.data.status == 1) {
  269. this.setData({
  270. istask4: true
  271. })
  272. }
  273. }
  274. })
  275. },
  276. // 页面上显示的我的未读通知
  277. getMynotice(sessionKey) {
  278. wx.request({
  279. url: app.globalData.publicUrl + '/wx/eduNoticeSee/list',
  280. method: "post",
  281. data: {
  282. sessionKey: sessionKey,
  283. isSee: 1
  284. // isNotice: 0
  285. },
  286. fail: () => {
  287. this.setData({
  288. noticeVis: false
  289. })
  290. },
  291. success: (res) => {
  292. if (res.data.code == 0) {
  293. if (res.data.list && res.data.list.length !== 0) {
  294. this.setData({
  295. notice: res.data.list[0].noticeContent,
  296. noticeVis: true
  297. });
  298. } else {
  299. this.setData({
  300. noticeVis: false
  301. });
  302. }
  303. } else {
  304. this.setData({
  305. noticeVis: false
  306. });
  307. }
  308. }
  309. })
  310. },
  311. // 跳转通知页
  312. gomyNotice() {
  313. wx.navigateTo({
  314. url: '../myNotice/myNotice'
  315. })
  316. },
  317. // 学员登记表
  318. goWrite() {
  319. if (this.data.classInfo.id == -1) {
  320. wx.navigateTo({
  321. url: '../studentRegistration/studentRegistration'
  322. })
  323. } else {
  324. if (!this.data.istask) {
  325. wx.showModal({
  326. showCancel: false,
  327. content: "请先去扫描二维码加入班级群吧",
  328. success(res) {
  329. if (res.confirm) {
  330. wx.switchTab({
  331. url: '../myMission/myMission'
  332. })
  333. }
  334. }
  335. })
  336. return false
  337. }
  338. wx.navigateTo({
  339. url: '../studentRegistration/studentRegistration'
  340. })
  341. }
  342. },
  343. // 学院介绍
  344. toAdd1() {
  345. wx.navigateTo({
  346. url: '../schoolIntrouce/schoolIntrouce'
  347. })
  348. },
  349. // 学员名单
  350. toAdd2() {
  351. wx.navigateTo({
  352. url: '../studentList/studentList?id=' + this.data.classInfo.id
  353. })
  354. },
  355. // 项目组名单
  356. toAdd3() {
  357. wx.navigateTo({
  358. url: '../groupsList/groupsList'
  359. })
  360. },
  361. // 我的课程
  362. getMycourse(sessionKey) {
  363. wx.request({
  364. url: app.globalData.publicUrl + '/wx/course/selectBySessionKey',
  365. method: "post",
  366. data: {
  367. sessionKey: sessionKey
  368. },
  369. success: (res) => {
  370. console.log(res, "我的课程")
  371. this.setData({
  372. kcArr: res.data.list,
  373. istask2: res.data.allDone,
  374. currentName: "",
  375. currentId: null
  376. });
  377. for (let i = 0; i < res.data.list.length; i++) {
  378. if (res.data.list[i].isLive == -1) {
  379. // 这个节课未全部完成
  380. if (res.data.list[i].isDone == "0") {
  381. // 这个视频已经进行了 看一半或者看完了
  382. if (res.data.list[i].isStudyDone == 0 || res.data.list[i].isStudyDone == 1) {
  383. this.setData({
  384. currentName: res.data.list[i].courseName,
  385. currentId: res.data.list[i].id
  386. })
  387. }
  388. }
  389. }
  390. }
  391. let result = [];
  392. if (res.data.list)
  393. for (let i = 0; i < res.data.list.length; i++) {
  394. result.push({
  395. courseTime: res.data.list[i].courseTime
  396. });
  397. }
  398. const timesArr = result.map((item) => {
  399. return item.courseTime;
  400. });
  401. let sfmArr = [];
  402. for (let i = 0; i < timesArr.length; i++) {
  403. let value = timesArr[i];
  404. const resultValue = this.handler(value);
  405. sfmArr.push({
  406. courseTime: resultValue
  407. })
  408. this.setData({
  409. sfmArr: sfmArr
  410. })
  411. }
  412. }
  413. })
  414. },
  415. // 时间换算
  416. handler(value) {
  417. //换算为秒 进制1000
  418. const second = Math.floor(value / 1000); //判断是否够1秒
  419. if (second < 1) {
  420. return "0秒";
  421. }
  422. const secondValue = second % 60; // 秒
  423. const minutes = Math.floor(second / 60); //判断是否够1分钟
  424. if (minutes < 1) {
  425. return `${secondValue}秒`;
  426. }
  427. const minutesValue = minutes % 60; //分
  428. const hours = Math.floor(minutes / 60); //判断是否够1小时
  429. if (hours < 1) {
  430. return `${minutesValue}分${secondValue}秒`;
  431. }
  432. const hoursValue = hours % 60; //小时
  433. return `${hoursValue}时${minutesValue}分${secondValue}秒`;
  434. },
  435. // 查看更多列表展开
  436. listToggle: function () {
  437. this.setData({
  438. showMore: !this.data.showMore
  439. })
  440. },
  441. // 去学习
  442. goStudy(e) {
  443. let id = e.currentTarget.dataset.item.id //此课程的id
  444. let courseUrl = e.currentTarget.dataset.item.courseUrl //此课程的id
  445. let courseName = e.currentTarget.dataset.item.courseName //此课程的id
  446. let courseInfo = e.currentTarget.dataset.item.courseInfo //此课程的id
  447. if (this.data.classInfo.id == -1) {
  448. if (e.currentTarget.dataset.item.isLive == 1) {
  449. if (e.currentTarget.dataset.item.isActive == 1) {
  450. wx.navigateTo({
  451. url: '../zbDetails/zbDetails?id=' + id
  452. })
  453. } else if (e.currentTarget.dataset.item.isActive == -1) {
  454. if (courseUrl == null || courseUrl == "") {
  455. wx.showModal({
  456. showCancel: false,
  457. content: "直播回放还未上传噢"
  458. })
  459. } else {
  460. wx.navigateTo({
  461. url: '../livePlayback/livePlayback?courseName=' + courseName + '&courseUrl=' + courseUrl + '&courseInfo=' + courseInfo
  462. })
  463. }
  464. } else {
  465. wx.showModal({
  466. showCancel: false,
  467. content: "直播还未开始哦"
  468. })
  469. return false;
  470. }
  471. } else {
  472. wx.navigateTo({
  473. url: '../dbDetails/dbDetails?id=' + id
  474. })
  475. }
  476. } else {
  477. console.log(this.data.istask)
  478. if (!this.data.istask) {
  479. wx.showModal({
  480. showCancel: false,
  481. content: "请先去扫描二维码加入班级群吧",
  482. success(res) {
  483. if (res.confirm) {
  484. wx.switchTab({
  485. url: '../myMission/myMission'
  486. })
  487. }
  488. }
  489. })
  490. return false
  491. }
  492. if (!this.data.istask1) {
  493. wx.showModal({
  494. showCancel: false,
  495. content: "请先填写学员登记表再来学习哦!"
  496. })
  497. return false
  498. }
  499. // 直播
  500. if (e.currentTarget.dataset.item.isLive == 1) {
  501. if (e.currentTarget.dataset.item.isActive == 1) {
  502. wx.navigateTo({
  503. url: '../zbDetails/zbDetails?id=' + id
  504. })
  505. } else if (e.currentTarget.dataset.item.isActive == -1) {
  506. if (courseUrl == null || courseUrl == "") {
  507. wx.showModal({
  508. showCancel: false,
  509. content: "直播回放还未上传噢"
  510. })
  511. } else {
  512. wx.navigateTo({
  513. url: '../livePlayback/livePlayback?courseName=' + courseName + '&courseUrl=' + courseUrl + '&courseInfo=' + courseInfo
  514. })
  515. }
  516. } else {
  517. wx.showModal({
  518. showCancel: false,
  519. content: "直播还未开始哦"
  520. })
  521. return false;
  522. }
  523. } else {
  524. if (this.data.currentId != null) {
  525. // 没学或者没学完
  526. if (e.currentTarget.dataset.item.isDone == 0) {
  527. if (id == this.data.currentId) {
  528. wx.navigateTo({
  529. url: '../dbDetails/dbDetails?id=' + id
  530. })
  531. } else {
  532. // 有未完成的但不是我 就不能跳转
  533. wx.showModal({
  534. showCancel: false,
  535. content: "请确认您的 ‘" + this.data.currentName + "’ 这节课中的学习、考试、评价是否都已完成?"
  536. })
  537. }
  538. } else {
  539. // 我看完了这个视频 还能看
  540. wx.navigateTo({
  541. url: '../dbDetails/dbDetails?id=' + id
  542. })
  543. }
  544. } else {
  545. wx.navigateTo({
  546. url: '../dbDetails/dbDetails?id=' + id
  547. })
  548. }
  549. }
  550. }
  551. },
  552. // 去考试
  553. gokhAnswer(e) {
  554. console.log(e)
  555. wx.showLoading({
  556. mask: true,
  557. title: '加载中',
  558. })
  559. if (this.data.classInfo.id == -1) {
  560. this.examination(e.currentTarget.dataset.item.id);
  561. wx.hideLoading();
  562. } else {
  563. wx.hideLoading();
  564. if (!this.data.istask) {
  565. wx.showModal({
  566. showCancel: false,
  567. content: "请先去扫描二维码加入班级群吧",
  568. success(res) {
  569. if (res.confirm) {
  570. wx.switchTab({
  571. url: '../myMission/myMission'
  572. })
  573. }
  574. }
  575. })
  576. return false
  577. }
  578. if (!this.data.istask1) {
  579. wx.showModal({
  580. showCancel: false,
  581. content: "请先填写学员登记表再来学习哦!"
  582. })
  583. return false
  584. }
  585. let isStudyDone = e.currentTarget.dataset.item.isStudyDone
  586. console.log(isStudyDone, '我是学习的')
  587. if (isStudyDone != 1) {
  588. wx.showModal({
  589. showCancel: false,
  590. content: "您当前的学习课程还未完成哦,请先完成再来考试吧!"
  591. })
  592. return false
  593. } else {
  594. this.examination(e.currentTarget.dataset.item.id);
  595. }
  596. }
  597. },
  598. // 考试方法单拿出来
  599. examination(id) {
  600. wx.request({
  601. url: app.globalData.publicUrl + '/wx/exam/examList',
  602. method: "post",
  603. data: {
  604. sessionKey: this.data.sessionKey,
  605. courseId: id,
  606. clasId: this.data.classInfo.id
  607. },
  608. success: (res) => {
  609. if (res.data.code == 0) {
  610. if (res.data.list.length == 0) {
  611. wx.showModal({
  612. showCancel: false,
  613. content: '老师还未出考试题哦'
  614. })
  615. } else {
  616. console.log(res, '1111')
  617. if (res.data.list[0]) {
  618. if (res.data.list[0].answersId) {
  619. this.toPath(res.data.list[0].id, res.data.list[0].paperId, res.data.list[0].answersId, 'answerAfterclass');
  620. } else {
  621. this.beginKao(res.data.list[0].id, res.data.list[0].paperId, this.data.sessionKey, 'answerAfterclass');
  622. }
  623. }
  624. }
  625. }
  626. }
  627. })
  628. },
  629. //去评价
  630. gopjClass(e) {
  631. if (this.data.classInfo.id == -1) {
  632. this.evaluate(e.currentTarget.dataset.item.id)
  633. } else {
  634. if (!this.data.istask) {
  635. wx.showModal({
  636. showCancel: false,
  637. content: "请先去扫描二维码加入班级群吧",
  638. success(res) {
  639. if (res.confirm) {
  640. wx.switchTab({
  641. url: '../myMission/myMission'
  642. })
  643. }
  644. }
  645. })
  646. return false
  647. }
  648. if (!this.data.istask1) {
  649. wx.showModal({
  650. showCancel: false,
  651. content: "请先填写学员登记表再来学习哦!"
  652. })
  653. return false
  654. }
  655. let isStudyDone = e.currentTarget.dataset.item.isStudyDone
  656. if (isStudyDone != 1) {
  657. wx.showModal({
  658. showCancel: false,
  659. content: "您的学习课程还未完成哦,请先完成再来评价吧!"
  660. })
  661. return false
  662. } else {
  663. this.evaluate(e.currentTarget.dataset.item.id)
  664. }
  665. }
  666. },
  667. // 评价方法单拿出来
  668. evaluate(id) {
  669. wx.request({
  670. url: app.globalData.publicUrl + '/wx/exam/quesExamList',
  671. method: "post",
  672. data: {
  673. sessionKey: this.data.sessionKey,
  674. courseId: id,
  675. clasId: this.data.classInfo.id
  676. },
  677. success: (res) => {
  678. if (res.data.code == 0) {
  679. if (res.data.list.length == 0) {
  680. wx.showModal({
  681. showCancel: false,
  682. content: '老师还未出评价模板哦'
  683. })
  684. } else {
  685. if (res.data.list[0]) {
  686. if (res.data.list[0].answersId) {
  687. this.toPath(res.data.list[0].id, res.data.list[0].paperId, res.data.list[0].answersId, 'evaluationCourse');
  688. } else {
  689. this.beginKao(res.data.list[0].id, res.data.list[0].paperId, this.data.sessionKey, 'evaluationCourse');
  690. }
  691. }
  692. }
  693. }
  694. }
  695. })
  696. },
  697. // 查看详情成绩
  698. gockcj(e) {
  699. console.log(e.currentTarget.dataset.item.isExamId)
  700. if (e.currentTarget.dataset.item.isExamId) {
  701. wx.request({
  702. url: app.globalData.publicUrl + '/wx/answer/detail',
  703. method: "post",
  704. data: {
  705. answersId: e.currentTarget.dataset.item.isExamId
  706. },
  707. success: (res) => {
  708. if (res.data.list[0] && res.data.list[0].answerScore >= 0 && res.data.list[0].answerScore != null) {
  709. wx.navigateTo({
  710. url: '/pages/grade/grade?answersId=' + e.currentTarget.dataset.item.isExamId,
  711. })
  712. } else {
  713. wx.showModal({
  714. showCancel: false,
  715. content: '当前老师批阅中,请耐心等待'
  716. })
  717. }
  718. },
  719. fail: () => {
  720. wx.showModal({
  721. showCancel: false,
  722. content: '当前老师批阅中,请耐心等待'
  723. })
  724. }
  725. })
  726. }
  727. },
  728. // 查看详情评价
  729. gockpj(e) {
  730. wx.navigateTo({
  731. url: '/pages/evaluationCourseDetail/evaluationCourseDetail?answersId=' + e.currentTarget.dataset.item.isFeedbackId,
  732. })
  733. },
  734. // 期末考试
  735. goQmks() {
  736. if (this.data.classInfo.id == -1) {
  737. wx.request({
  738. url: app.globalData.publicUrl + '/wx/exam/examList',
  739. method: "post",
  740. data: {
  741. sessionKey: this.data.sessionKey,
  742. clasId: this.data.classInfo.id
  743. },
  744. success: (res) => {
  745. if (res.data.code == 0) {
  746. if (res.data.list.length == 0) {
  747. wx.showModal({
  748. showCancel: false,
  749. content: '期末考试还未开始哦!'
  750. })
  751. } else {
  752. if (res.data.list[0].answersId) {
  753. if (res.data.list[0].status == '1') {
  754. wx.request({
  755. url: app.globalData.publicUrl + '/wx/answer/detail',
  756. method: "post",
  757. data: {
  758. answersId: res.data.list[0].answersId
  759. },
  760. success: (res1) => {
  761. if (res1.data.list[0].answerScore >= 0 && res1.data.list[0].answerScore != null) {
  762. wx.navigateTo({
  763. url: '/pages/grade/grade?answersId=' + res.data.list[0].answersId,
  764. })
  765. } else {
  766. wx.showModal({
  767. showCancel: false,
  768. content: '当前老师批阅中,请耐心等待'
  769. })
  770. }
  771. }
  772. })
  773. } else {
  774. this.toPath(res.data.list[0].id, res.data.list[0].paperId, res.data.list[0].answersId, 'answerAfterclass');
  775. }
  776. } else {
  777. this.beginKao(res.data.list[0].id, res.data.list[0].paperId, this.data.sessionKey, 'answerAfterclass');
  778. }
  779. }
  780. }
  781. }
  782. })
  783. } else {
  784. if (!this.data.istask) {
  785. wx.showModal({
  786. showCancel: false,
  787. content: "请先去扫描二维码加入班级群吧",
  788. success(res) {
  789. if (res.confirm) {
  790. wx.switchTab({
  791. url: '../myMission/myMission'
  792. })
  793. }
  794. }
  795. })
  796. return false
  797. }
  798. if (!this.data.istask2) {
  799. wx.showModal({
  800. showCancel: false,
  801. content: "您的课程任务还未全部完成哦!请先去完成再来期末考试吧!"
  802. })
  803. return false
  804. }
  805. wx.request({
  806. url: app.globalData.publicUrl + '/wx/exam/examList',
  807. method: "post",
  808. data: {
  809. sessionKey: this.data.sessionKey,
  810. clasId: this.data.classInfo.id
  811. },
  812. success: (res) => {
  813. if (res.data.code == 0) {
  814. if (res.data.list.length == 0) {
  815. wx.showModal({
  816. showCancel: false,
  817. content: '期末考试还未开始哦!'
  818. })
  819. } else {
  820. if (res.data.list[0].answersId) {
  821. if (res.data.list[0].status == '1') {
  822. wx.request({
  823. url: app.globalData.publicUrl + '/wx/answer/detail',
  824. method: "post",
  825. data: {
  826. answersId: res.data.list[0].answersId
  827. },
  828. success: (res1) => {
  829. if (res1.data.list[0].answerScore >= 0 && res1.data.list[0].answerScore != null) {
  830. wx.navigateTo({
  831. url: '/pages/grade/grade?answersId=' + res.data.list[0].answersId,
  832. })
  833. } else {
  834. wx.showModal({
  835. showCancel: false,
  836. content: '当前老师批阅中,请耐心等待'
  837. })
  838. }
  839. }
  840. })
  841. } else {
  842. this.toPath(res.data.list[0].id, res.data.list[0].paperId, res.data.list[0].answersId, 'answerAfterclass');
  843. }
  844. } else {
  845. this.beginKao(res.data.list[0].id, res.data.list[0].paperId, this.data.sessionKey, 'answerAfterclass');
  846. }
  847. }
  848. }
  849. }
  850. })
  851. }
  852. },
  853. // 综合反馈表
  854. goWrite2() {
  855. if (this.data.istask4) {
  856. wx.request({
  857. url: app.globalData.publicUrl + '/wx/exam/quesExamList',
  858. method: "post",
  859. data: {
  860. sessionKey: this.data.sessionKey,
  861. questSub: '1',
  862. clasId: this.data.classInfo.id
  863. },
  864. success: (res) => {
  865. if (res.data.code == 0) {
  866. if (res.data.list[0]) {
  867. if (res.data.list[0].answersId) {
  868. wx.navigateTo({
  869. url: '/pages/feedBackDetail/feedBackDetail?answersId=' + res.data.list[0].answersId,
  870. })
  871. } else {
  872. this.beginKao(res.data.list[0].id, res.data.list[0].paperId, this.data.sessionKey, 'feedBack');
  873. }
  874. }
  875. }
  876. }
  877. })
  878. } else {
  879. wx.request({
  880. url: app.globalData.publicUrl + '/wx/exam/quesExamList',
  881. method: "post",
  882. data: {
  883. sessionKey: this.data.sessionKey,
  884. questSub: '1',
  885. clasId: this.data.classInfo.id
  886. },
  887. success: (res) => {
  888. if (res.data.code == 0) {
  889. if (res.data.list.length == 0) {
  890. wx.showModal({
  891. showCancel: false,
  892. content: '当前综合反馈还不可以填写哦!'
  893. })
  894. } else {
  895. if (res.data.list[0].answersId) {
  896. if (res.data.list[0].status == '1') {
  897. wx.navigateTo({
  898. url: '/pages/feedBackDetail/feedBackDetail?answersId=' + res.data.list[0].answersId,
  899. })
  900. } else {
  901. this.toPath(res.data.list[0].id, res.data.list[0].paperId, res.data.list[0].answersId, 'feedBack');
  902. }
  903. } else {
  904. this.beginKao(res.data.list[0].id, res.data.list[0].paperId, this.data.sessionKey, 'feedBack');
  905. }
  906. }
  907. }
  908. }
  909. })
  910. }
  911. },
  912. // 我的积分
  913. goMyPoints() {
  914. wx.navigateTo({
  915. url: '../myPoints/myPoints'
  916. })
  917. },
  918. // 领取结业证
  919. // lq() {
  920. // if (!this.data.istask3) {
  921. // wx.showModal({
  922. // showCancel: false,
  923. // content: "您的期末考试还未完成哦!"
  924. // })
  925. // return false
  926. // }
  927. // wx.showLoading({
  928. // mask: true,
  929. // title: '加载中',
  930. // })
  931. // this.setData({
  932. // myCanvasId: this.data.myCanvasId + 1
  933. // })
  934. // let str = this.data.studentName + "同志:"
  935. // let str1 = "于" + this.data.classInfo.beginDate + "至" + this.data.classInfo.endDate + "参加学习" + this.data.classInfo.clasName + "完成规定培训内容。准予结业,特发此证。"
  936. // let strArr1 = [];
  937. // // let a = str1.slice(0, 22);
  938. // // let b = str1.slice(22, 36);
  939. // // let c = str1.slice(36, 50);
  940. // // let d = str1.slice(50, 67);
  941. // // strArr1.push(a, b, c, d);
  942. // // const ctx = wx.createCanvasContext(this.data.myCanvasId);
  943. // // ctx.drawImage(this.data.byzsbj, 0, 0, 300, 415); //里面的参数无非就是图片放置的位置即图片的横纵坐标,图片的宽高
  944. // // ctx.setFillStyle("#000");
  945. // // ctx.setFontSize(15); //字大小
  946. // // ctx.font = 'normal bold 15px sans-serif'
  947. // // ctx.setTextAlign('left'); //是否居中显示,参考点画布中线
  948. // let a = str1.slice(0, 22);
  949. // let b = str1.slice(22, 37);
  950. // let c = str1.slice(37, 52);
  951. // let d = str1.slice(52, 67);
  952. // strArr1.push(a, b, c, d);
  953. // const ctx = wx.createCanvasContext(this.data.myCanvasId);
  954. // ctx.drawImage(this.data.byzsbj, 0, 0, 300, 415); //里面的参数无非就是图片放置的位置即图片的横纵坐标,图片的宽高
  955. // ctx.setFillStyle("#000");
  956. // ctx.setFontSize(15); //字大小
  957. // ctx.font = 'normal bold 15px sans-serif'
  958. // ctx.setTextAlign('left'); //是否居中显示,参考点画布中线
  959. // let leftPositionAarr = [60, 30, 30, 30]
  960. // ctx.fillText(str, 30, 160);
  961. // for (let i = 0; i < strArr1.length; i++) {
  962. // ctx.fillText(strArr1[i], leftPositionAarr[i], 190 + i * 30);
  963. // }
  964. // ctx.draw();
  965. // wx.hideLoading();
  966. // this.setData({
  967. // showzs: true
  968. // });
  969. // wx.request({
  970. // url: app.globalData.publicUrl + '/wx/student/wxGraduation',
  971. // method: "post",
  972. // data: {
  973. // sessionKey: this.data.sessionKey
  974. // },
  975. // success: (res) => {
  976. // console.log(res.data, "领取结业证提交")
  977. // }
  978. // })
  979. // },
  980. //孙喆 2020-9-22 10:38最后更改
  981. lq() {
  982. var that = this;
  983. if (!this.data.istask3) {
  984. wx.showModal({
  985. showCancel: false,
  986. content: "您的期末考试还未完成哦!"
  987. })
  988. return false
  989. }
  990. wx.showLoading({
  991. mask: true,
  992. title: '加载中',
  993. })
  994. wx.request({
  995. url: app.globalData.publicUrl + '/wx/student/wxGraduation',
  996. method: "post",
  997. data: {
  998. sessionKey: this.data.sessionKey
  999. },
  1000. success: (res) => {
  1001. console.log(res);
  1002. console.log(res.data, "领取结业证提交")
  1003. wx.hideLoading();
  1004. if (res.data.code == 500) {
  1005. wx.showModal({
  1006. showCancel: false,
  1007. content: "领取失败,请稍后再试"
  1008. })
  1009. } else {
  1010. that.setData({
  1011. myCanvasId: that.data.myCanvasId + 1
  1012. })
  1013. let str = that.data.studentName + " 同志于" + app.dateFilter(that.data.classInfo.beginDate) + "-" + app.dateFilter(that.data.classInfo.endDate) + "参加" + that.data.classInfo.clasName + ",完成规定培训内容。准予结业,特发此证。"
  1014. //汉字占两格,英文数字占一格
  1015. let re = /^[\u4e00-\u9fa5]$/;
  1016. let stra = str.split("");
  1017. let tva = 30; //阈值
  1018. let strTar = [];
  1019. let num = 0;
  1020. let st = "";
  1021. for (let i = 0; i < str.length; i++) {
  1022. let s = stra.shift()
  1023. st = st + s;
  1024. num += re.test(s) ? 2 : 1;
  1025. tva = strTar.length < 1 ? that.data.tva - 4 : that.data.tva;
  1026. if (num >= tva || i == str.length - 1) {
  1027. strTar.push(st);
  1028. num = 0;
  1029. st = "";
  1030. }
  1031. }
  1032. const ctx = wx.createCanvasContext(that.data.myCanvasId);
  1033. ctx.drawImage(that.data.byzsbj, 0, 0, 300, 415); //里面的参数无非就是图片放置的位置即图片的横纵坐标,图片的宽高
  1034. ctx.setFillStyle("#000");
  1035. ctx.setFontSize(14); //字大小
  1036. ctx.font = 'normal bold 14px sans-serif'
  1037. ctx.setTextAlign('left'); //是否居中显示,参考点画布中线
  1038. let leftPositionAarr = [59, 30]
  1039. let graduationNum = res.data.data.graduationNum != "" ? "编号:" + res.data.data.graduationNum : "";
  1040. ctx.fillText(graduationNum, 130, 150);
  1041. let topPt = 190 - (strTar.length - 4) * 5;
  1042. let lineHeight = 30 - (strTar.length > 4 ? strTar.length > 6 ? 10 : (strTar.length - 4) * 5 : 0)
  1043. for (let i = 0; i < strTar.length; i++) {
  1044. ctx.fillText(strTar[i], i == 0 ? leftPositionAarr[0] : leftPositionAarr[1], topPt + i * lineHeight);
  1045. }
  1046. ctx.draw();
  1047. that.setData({
  1048. showzs: true
  1049. });
  1050. }
  1051. },
  1052. fail: () => {
  1053. wx.hideLoading();
  1054. wx.showModal({
  1055. showCancel: false,
  1056. content: "网络错误,请稍后再试"
  1057. })
  1058. }
  1059. })
  1060. },
  1061. // 存储结业证
  1062. saveZs() {
  1063. wx.canvasToTempFilePath({ //把当前画布指定区域的内容导出生成指定大小的图片
  1064. canvasId: this.data.myCanvasId,
  1065. success(res) {
  1066. wx.authorize({ //向用户发起授权请求
  1067. scope: 'scope.writePhotosAlbum', //保存相册授权
  1068. success: () => {
  1069. wx.saveImageToPhotosAlbum({ //保存图片到系统相册
  1070. filePath: res.tempFilePath,
  1071. success: () => {
  1072. wx.showToast({
  1073. title: '图片保存成功'
  1074. })
  1075. }
  1076. })
  1077. }
  1078. })
  1079. }
  1080. })
  1081. },
  1082. // 证书隐藏
  1083. onClose1() {
  1084. this.setData({
  1085. showzs: false
  1086. });
  1087. },
  1088. toPath(id, paperId, answersId, address, status) {
  1089. wx.navigateTo({
  1090. url: '/pages/' + address + '/' + address + '?id=' + id + '&paperId=' + paperId + '&answersId=' + answersId + '&status=' + status,
  1091. })
  1092. },
  1093. beginKao(id, paperId, sessionKey, address) {
  1094. wx.request({
  1095. url: app.globalData.publicUrl + '/wx/exam/begin',
  1096. method: "post",
  1097. data: {
  1098. sessionKey: sessionKey,
  1099. id: id,
  1100. paperId: paperId
  1101. },
  1102. success: (res) => {
  1103. if (res.data.code == 0) {
  1104. this.setData({
  1105. status: res.data.status
  1106. })
  1107. this.toPath(id, paperId, res.data.answersId, address);
  1108. }
  1109. }
  1110. })
  1111. },
  1112. onClickShow(e) {
  1113. this.setData({ stuItem: e.currentTarget.dataset.item });
  1114. this.setData({ cardVis: true });
  1115. },
  1116. onClickHide() {
  1117. this.setData({ cardVis: false });
  1118. },
  1119. onUnload() {
  1120. this.setData({ cardVis: false });
  1121. },
  1122. onHide() {
  1123. this.setData({ cardVis: false });
  1124. },
  1125. studentList(page) {
  1126. var that = this;
  1127. return new Promise((resolve, reject) => {
  1128. wx.request({
  1129. url: app.globalData.publicUrl + '/wx/student/progress',
  1130. method: "post",
  1131. data: {
  1132. sessionKey: that.data.sessionKey,
  1133. pageNum: page,
  1134. pageSize: that.data.pageSize
  1135. },
  1136. success: (res) => {
  1137. if (res.data.code == 0) {
  1138. let info = res.data.data;
  1139. info.list = info.list.map(item => {
  1140. if (item.studentHead == "" || item.studentHead == null) {
  1141. item.avatar = item.studentSex == 1 ? that.data.defAvatarf : that.data.defAvatarm;
  1142. } else {
  1143. item.avatar = item.studentHead;
  1144. }
  1145. return item;
  1146. })
  1147. console.log(info);
  1148. resolve(info)
  1149. }
  1150. },
  1151. fail: (error) => {
  1152. reject(error)
  1153. }
  1154. })
  1155. })
  1156. },
  1157. getjob(sessionKey) {
  1158. wx.request({
  1159. url: app.globalData.publicUrl + '/wx/student/position',
  1160. method: "get",
  1161. data: {
  1162. sessionKey
  1163. },
  1164. success: (res) => {
  1165. console.log(res, '我是获取到的数组')
  1166. let Arr = [];
  1167. res.data.data.forEach(item => {
  1168. let newdata = {};
  1169. newdata.dictLabel = item.dictLabel;
  1170. newdata.dictValue = item.dictValue;
  1171. Arr.push(newdata);
  1172. });
  1173. this.setData({
  1174. jobArr: Arr
  1175. })
  1176. },
  1177. fail: () => {
  1178. wx.hideLoading();
  1179. }
  1180. })
  1181. },
  1182. onReachBottom() {
  1183. console.log("下拉刷新");
  1184. var that = this;
  1185. if (that.data.classVis && that.data.stuInfo.list.length > 0) {
  1186. var page = that.data.pageNum;
  1187. page++;
  1188. that.setData({ pageNum: page });
  1189. wx.showLoading({
  1190. title: '加载更多',
  1191. })
  1192. that.studentList(this.data.pageNum).then(res => {
  1193. wx.hideLoading();
  1194. let oldList = that.data.stuInfo.list.slice();
  1195. let newInfo = Object.assign({}, that.data.stuInfo, res)
  1196. console.log("that.data.pageNum",that.data.pageNum);
  1197. console.log("res.pages:",res.pages);
  1198. if (that.data.pageNum <= res.pages) {
  1199. newInfo.list=oldList.concat(newInfo.list)
  1200. that.setData({
  1201. stuInfo:newInfo
  1202. });
  1203. }else{
  1204. wx.showToast({
  1205. title: '没有更多了',
  1206. })
  1207. }
  1208. console.log(res)
  1209. },()=>{
  1210. wx.hideLoading();
  1211. wx.showToast({
  1212. title: '加载失败',
  1213. })
  1214. })
  1215. }
  1216. },
  1217. // onReachBottom: function () {
  1218. // var that = this;
  1219. // console.log(that)
  1220. // var page = that.data.page
  1221. // page++;
  1222. // that.setData({
  1223. // page: page
  1224. // })
  1225. // // 显示加载图标
  1226. // wx.showLoading({
  1227. // title: '玩命加载中',
  1228. // })
  1229. // wx.request({
  1230. // url: '', //请求的接口地址
  1231. // data: {
  1232. // page: that.data.page, // 页数
  1233. // },
  1234. // header: {
  1235. // 'content-type': 'application/json'
  1236. // },
  1237. // method: 'GET',
  1238. // success: function (res) {
  1239. // console.log(res)
  1240. // var goods = that.data.grade.concat(res.data.data.list) //grade 为一进入页面请求完数据定义的集合
  1241. // if (res.data.data.list == '') {
  1242. // console.log(1)
  1243. // wx.showToast({
  1244. // title: '暂无更多',
  1245. // icon: 'none',
  1246. // })
  1247. // } else {
  1248. // that.setData({
  1249. // grade : goods,
  1250. // });
  1251. // }
  1252. // wx.hideLoading();
  1253. // },
  1254. // })
  1255. // },
  1256. async onShow() {
  1257. console.log(app.globalData.imgUrl);
  1258. wx.showLoading({
  1259. title: '正在加载',
  1260. })
  1261. this.setData({ cardVis: false, classVis: false,
  1262. classErrVis: false,
  1263. classNVis: false,pageNum:1,stuInfo:{} });
  1264. var that = this;
  1265. const sessionKey = await tools.checkSessionAndLogin();
  1266. this.setData({
  1267. sessionKey
  1268. });
  1269. await this.isRz(sessionKey)
  1270. that.getjob(sessionKey)
  1271. console.log(that.data.classVis);
  1272. this.studentList(this.data.pageNum).then((info) => {
  1273. this.setData({ stuInfo: info });
  1274. console.log(this.data.stuInfo)
  1275. })
  1276. }
  1277. })