myClass.js 38 KB

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