myClass.js 38 KB

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