myMission.js 30 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011
  1. const app = require('../../utils/util.js');
  2. const tools = require('../../utils/tools.js');
  3. const tips = {
  4. identify: {
  5. image: 'default',
  6. desc: '您还没有进行身份认证哦!',
  7. showBtn: true
  8. },
  9. openClass: {
  10. image: 'default',
  11. desc: '您当前还没有正在开放的班级!'
  12. },
  13. studentErr: {
  14. image: 'error',
  15. desc: '学员不可同时存在多个班级中哦!'
  16. }
  17. };
  18. Page({
  19. data: {
  20. isLoading: true,//是否正在加载数据
  21. pageTip: {
  22. show: false,
  23. detail: {}
  24. },
  25. isRz: false, // false -- 已认证 / true -- 未认证
  26. showewm: false, //是否显示班级群二维码
  27. showzs: false, //是否显示毕业证书
  28. show: false, //协议显示
  29. kcArr: [], //课程列表
  30. sfmArr: [], //课程的时间换算成(时分秒)
  31. istask1: false, //第一个任务加入班级群
  32. istask2: false, //第二个任务学员登记表
  33. istask3: false, //第三个任务所有课程是否学完
  34. istask4: false, //第四个任务是否完成期末开始
  35. istask5: false, //第五个任务综合反馈
  36. istask6: false, //第六个任务是否领取毕业证书
  37. studentName: "", //学生的名字用于毕业证书
  38. classInfo: {}, //有关我这个班级的所有信息
  39. byzsbj: "../../images/zsbj.jpg", //毕业证书的背景 用于合成图片
  40. myCanvasId: 0, //画布的id 再次绘制不成功的原因是id不能一致 所以id为变量++
  41. IngCourseArr: [], //如果有正在进行的课就存一下
  42. currentId: null,
  43. currentName: "",
  44. tva:32,
  45. fold:true,
  46. },
  47. showmore(){
  48. this.setData({
  49. fold:this.data.fold?false:true
  50. })
  51. },
  52. // 检查第一个任务 班级二维码是否点击 && 检查第二个任务 学员登记表 && 第六个任务 领取结业证
  53. checkTaskList(sessionKey) {
  54. wx.request({
  55. url: app.globalData.publicUrl + '/wx/student/selStudentSessionKey',
  56. method: "post",
  57. data: {
  58. sessionKey: sessionKey
  59. },
  60. success: (res) => {
  61. if (res.data.code == 0) {
  62. this.setData({
  63. studentName: res.data.data.studentName,
  64. })
  65. if (res.data.data.joinClas == 0) {
  66. this.setData({
  67. istask1: true
  68. })
  69. }
  70. if (res.data.data.register == 0) {
  71. this.setData({
  72. istask2: true
  73. })
  74. }
  75. if (res.data.data.graduation == 0) {
  76. this.setData({
  77. istask6: true
  78. })
  79. }
  80. }
  81. }
  82. })
  83. },
  84. //保存班级二维码
  85. saveImg() {
  86. console.log(this.data.classInfo.codeImg)
  87. wx.showLoading({
  88. title: '保存中...'
  89. })
  90. wx.downloadFile({
  91. url: this.data.classInfo.codeImg,
  92. success: (res) => {
  93. console.log(res)
  94. //图片保存到本地
  95. wx.saveImageToPhotosAlbum({
  96. filePath: res.tempFilePath,
  97. success: () => {
  98. wx.hideLoading()
  99. wx.showModal({
  100. title: '提示',
  101. content: '保存成功',
  102. showCancel: false,
  103. })
  104. },
  105. fail: (err) => {
  106. console.log(err, "我保存失败了")
  107. if (err.errMsg === "saveImageToPhotosAlbum:fail:auth denied" || err.errMsg === "saveImageToPhotosAlbum:fail auth deny") {
  108. wx.showModal({
  109. title: '提示',
  110. content: '需要您授权保存相册',
  111. showCancel: false,
  112. success: () => {
  113. wx.hideLoading()
  114. wx.openSetting({
  115. success(settingdata) {
  116. if (settingdata.authSetting['scope.writePhotosAlbum']) {
  117. wx.showModal({
  118. title: '提示',
  119. content: '获取权限成功,再次点击即可保存',
  120. showCancel: false,
  121. })
  122. } else {
  123. wx.showModal({
  124. title: '提示',
  125. content: '获取权限失败,将无法保存到相册哦~',
  126. showCancel: false,
  127. })
  128. }
  129. },
  130. fail(failData) {
  131. console.log("failData", failData)
  132. },
  133. complete(finishData) {
  134. console.log("finishData", finishData)
  135. }
  136. })
  137. }
  138. })
  139. }
  140. }
  141. })
  142. },
  143. fail: (res) => {
  144. console.log(res, "我下载失败了")
  145. wx.hideLoading()
  146. wx.showModal({
  147. title: '提示',
  148. content: '下载失败',
  149. showCancel: false,
  150. })
  151. }
  152. })
  153. },
  154. // (第三个任务在获取列表是做了 --getMycourse()) 第四个任务 期末考试
  155. checkTaskList4(sessionKey, id) {
  156. wx.request({
  157. url: app.globalData.publicUrl + '/wx/exam/clasExamstatus',
  158. method: "post",
  159. data: {
  160. sessionKey: sessionKey,
  161. clasId: id
  162. },
  163. success: (res) => {
  164. console.log(res)
  165. if (res.data.code == 0 && res.data.status == 1) {
  166. this.setData({
  167. istask4: true
  168. })
  169. }
  170. }
  171. })
  172. },
  173. // 检查第五个任务 综合反馈表
  174. checkTaskList5(sessionKey, id) {
  175. wx.request({
  176. url: app.globalData.publicUrl + '/wx/exam/status',
  177. method: "post",
  178. data: {
  179. sessionKey: sessionKey,
  180. clasId: id
  181. },
  182. success: (res) => {
  183. if (res.data.code == 0 && res.data.status == 1) {
  184. this.setData({
  185. istask5: true
  186. })
  187. }
  188. }
  189. })
  190. },
  191. // 是否认证
  192. isRz(sessionKey) {
  193. wx.request({
  194. url: app.globalData.publicUrl + '/wx/student/selStudentSessionKey',
  195. method: "post",
  196. data: {
  197. sessionKey: sessionKey
  198. },
  199. success: (res) => {
  200. if (res.data.code == 0 && (res.data.data !== null || res.data.data !== "")) {
  201. this.isClass(sessionKey)
  202. this.setData({
  203. isRz: false
  204. })
  205. } else {
  206. this.setData({
  207. isRz: true,
  208. pageTip: {
  209. show: true,
  210. detail: tips.identify
  211. }
  212. });
  213. this.stopLoading();
  214. // wx.showModal({
  215. // content: "您还没有进行身份认证哦",
  216. // showCancel: false,
  217. // success(res) {
  218. // if (res.confirm) {
  219. // wx.redirectTo({
  220. // url: '../Identity/Identity'
  221. // })
  222. // }
  223. // }
  224. // })
  225. }
  226. }
  227. })
  228. },
  229. escRz() {
  230. wx.switchTab({
  231. url: '/pages/index/index',
  232. })
  233. },
  234. goRz() {
  235. wx.navigateTo({
  236. url: '/pages/Identity/Identity',
  237. })
  238. },
  239. // 查询我是否有班&&班级名字
  240. isClass(sessionKey) {
  241. wx.request({
  242. url: app.globalData.publicUrl + '/wx/student/selMyClas',
  243. method: "post",
  244. data: {
  245. sessionKey: sessionKey
  246. },
  247. complete: () => {
  248. this.stopLoading();
  249. },
  250. success: (res) => {
  251. console.log(res);
  252. if (res.data.code == 0) {
  253. this.setData({
  254. classInfo: res.data.data,
  255. 'pageTip.show': false
  256. });
  257. this.isAgree(sessionKey);
  258. this.getMycourse(sessionKey);
  259. this.checkTaskList(sessionKey);
  260. this.checkTaskList4(sessionKey, res.data.data.id)
  261. this.checkTaskList5(sessionKey, res.data.data.id)
  262. } else {
  263. if (res.data.msg == "运行时异常:学员不可同时存在两个班级中。") {
  264. // wx.showModal({
  265. // content: "学员不可同时存在多个班级中哦",
  266. // showCancel: false,
  267. // success(res) {
  268. // if (res.confirm) {
  269. // wx.switchTab({
  270. // url: '../index/index'
  271. // })
  272. // }
  273. // }
  274. // })
  275. this.setData({
  276. pageTip: {
  277. show: true,
  278. detail: tips.studentErr
  279. }
  280. });
  281. return false;
  282. } else {
  283. // wx.showModal({
  284. // content: "您当前还没有正在开放的班级!",
  285. // showCancel: false,
  286. // success(res) {
  287. // if (res.confirm) {
  288. // wx.switchTab({
  289. // url: '../index/index'
  290. // })
  291. // }
  292. // }
  293. // })
  294. this.setData({
  295. pageTip: {
  296. show: true,
  297. detail: tips.openClass
  298. }
  299. });
  300. return false;
  301. }
  302. }
  303. }
  304. })
  305. },
  306. // 协议是否已同意
  307. isAgree(sessionKey) {
  308. wx.request({
  309. url: app.globalData.publicUrl + '/wx/student/selStudentSessionKey',
  310. method: "post",
  311. data: {
  312. sessionKey
  313. },
  314. success: (res) => {
  315. if (res.data.code == 0 && res.data.data) {
  316. if (res.data.data.agreement == 0) {
  317. this.setData({
  318. studentName: res.data.data.studentName,
  319. show: false
  320. });
  321. } else {
  322. this.setData({
  323. studentName: res.data.data.studentName,
  324. show: true
  325. });
  326. }
  327. }
  328. }
  329. })
  330. },
  331. moreThink() {
  332. wx.switchTab({
  333. url: '../index/index'
  334. })
  335. },
  336. // 点击同意协议 并且记一下
  337. hidePopup() {
  338. wx.request({
  339. url: app.globalData.publicUrl + '/wx/student/verification',
  340. method: "post",
  341. data: {
  342. sessionKey: this.data.sessionKey
  343. },
  344. success: (res) => {
  345. this.setData({
  346. show: false
  347. });
  348. }
  349. })
  350. },
  351. // 获取我的课程表
  352. getMycourse(sessionKey) {
  353. wx.request({
  354. url: app.globalData.publicUrl + '/wx/course/selectBySessionKey',
  355. method: "post",
  356. data: {
  357. sessionKey: sessionKey
  358. },
  359. success: (res) => {
  360. console.log(res,"我的课程")
  361. if (res.data.code == 0 && res.data.list.length !== 0) {
  362. this.setData({
  363. kcArr: res.data.list,
  364. istask3: res.data.allDone,
  365. currentName: "",
  366. currentId: null
  367. });
  368. // 过滤数组
  369. for (let i = 0; i < res.data.list.length; i++) {
  370. // 这个节课未全部完成
  371. if (res.data.list[i].isLive == -1) {
  372. if (res.data.list[i].isDone == 0) {
  373. // 这个视频已经进行了 看一半或者看完了
  374. if (res.data.list[i].isStudyDone == 0 || res.data.list[i].isStudyDone == 1) {
  375. this.setData({
  376. currentName: res.data.list[i].courseName,
  377. currentId: res.data.list[i].id
  378. })
  379. }
  380. }
  381. }
  382. }
  383. // 换算时间
  384. let result = [];
  385. if (res.data.list)
  386. for (let i = 0; i < res.data.list.length; i++) {
  387. result.push({
  388. courseTime: res.data.list[i].courseTime
  389. });
  390. }
  391. const timesArr = result.map((item) => {
  392. return item.courseTime;
  393. });
  394. let sfmArr = [];
  395. for (let i = 0; i < timesArr.length; i++) {
  396. let value = timesArr[i];
  397. const resultValue = this.handler(value);
  398. sfmArr.push({
  399. courseTime: resultValue
  400. })
  401. this.setData({
  402. sfmArr: sfmArr
  403. })
  404. }
  405. }
  406. }
  407. })
  408. },
  409. // 记录二维码已经点击
  410. showEwm() {
  411. wx.showLoading({
  412. title: '记载中',
  413. mask: true
  414. })
  415. wx.request({
  416. url: app.globalData.publicUrl + '/wx/student/wxGroup',
  417. method: "post",
  418. data: {
  419. sessionKey: this.data.sessionKey
  420. },
  421. success: () => {
  422. this.setData({
  423. showewm: true,
  424. istask1: true
  425. })
  426. wx.hideLoading();
  427. },
  428. fail: () => {
  429. wx.hideLoading();
  430. }
  431. })
  432. },
  433. // 二维码隐藏
  434. onClose() {
  435. wx.hideLoading()
  436. this.setData({
  437. showewm: false
  438. });
  439. },
  440. // 填写学员登记表
  441. goWrite() {
  442. if (this.data.istask1 == false) {
  443. wx.showModal({
  444. showCancel: false,
  445. content: "请先去扫描班级二维码加入班级群吧!"
  446. })
  447. return false
  448. }
  449. wx.navigateTo({
  450. url: '../studentRegistration/studentRegistration'
  451. })
  452. },
  453. // 去学习
  454. goStudy(e) {
  455. let id = e.currentTarget.dataset.item.id //此课程的id
  456. let courseUrl = e.currentTarget.dataset.item.courseUrl //此课程的id
  457. let courseName = e.currentTarget.dataset.item.courseName //此课程的id
  458. let courseInfo = e.currentTarget.dataset.item.courseInfo //此课程的id
  459. let courseitem=e.currentTarget.dataset.item
  460. if (!this.data.istask2) {
  461. wx.showModal({
  462. showCancel: false,
  463. content: "请先去填写学院登记表吧!"
  464. })
  465. return false
  466. }
  467. // 直播
  468. if (e.currentTarget.dataset.item.isLive == 1) {
  469. if (e.currentTarget.dataset.item.isActive == 1) {
  470. wx.navigateTo({
  471. url: '../zbDetails/zbDetails?id=' + id
  472. })
  473. }
  474. // else if (e.currentTarget.dataset.item.isActive == -1) {
  475. // wx.navigateTo({
  476. // url: '../livePlayback/livePlayback?courseName=' + courseName + '&courseUrl=' + courseUrl + '&courseInfo=' + courseInfo
  477. // })
  478. // }
  479. else if (e.currentTarget.dataset.item.isActive == -1) {
  480. if(courseUrl==null||courseUrl==""){
  481. wx.showModal({
  482. showCancel: false,
  483. content: "直播回放还未上传噢"
  484. })
  485. }else{
  486. wx.navigateTo({
  487. url: '../livePlayback/livePlayback?courseName=' + courseName + '&courseUrl=' + courseUrl + '&courseInfo=' + courseInfo
  488. })
  489. }
  490. }else {
  491. wx.showModal({
  492. showCancel: false,
  493. content: "直播还未开始哦"
  494. })
  495. return false;
  496. }
  497. } else {
  498. if (this.data.currentId != null) {
  499. // 没学或者没学完
  500. if (e.currentTarget.dataset.item.isDone == 0) {
  501. if (id == this.data.currentId) {
  502. if(courseitem.courseStart!=null&&this.checkStartTime(courseitem.courseStart)){
  503. wx.showModal({
  504. showCancel: false,
  505. content: "课程学习的时间还没到"
  506. })
  507. }else{
  508. wx.navigateTo({
  509. url: '../dbDetails/dbDetails?id=' + id
  510. })
  511. }
  512. } else {
  513. wx.showModal({
  514. showCancel: false,
  515. content: "请确认您的 ‘" + this.data.currentName + "’ 这节课中的学习、考试、评价是否都已完成?"
  516. })
  517. }
  518. } else {
  519. // 我看完了这个视频 还能看
  520. wx.navigateTo({
  521. url: '../dbDetails/dbDetails?id=' + id
  522. })
  523. }
  524. } else {
  525. if(courseitem.courseStart!=null&&this.checkStartTime(courseitem.courseStart)){
  526. wx.showModal({
  527. showCancel: false,
  528. content: "课程学习的时间还没到"
  529. })
  530. }else{
  531. wx.navigateTo({
  532. url: '../dbDetails/dbDetails?id=' + id
  533. })
  534. }
  535. }
  536. }
  537. },
  538. //checkStartTime
  539. checkStartTime(str){
  540. let date=Date.parse(str);
  541. let t=new Date(date)
  542. let n=new Date(Date.now());
  543. return n<t;
  544. },
  545. // 去考试
  546. gokhAnswer(e) {
  547. if (!this.data.istask2) {
  548. wx.showModal({
  549. showCancel: false,
  550. content: "请先去填写学院登记表吧!"
  551. })
  552. return false
  553. }
  554. let isStudyDone = e.currentTarget.dataset.item.isStudyDone
  555. if (isStudyDone != 1) {
  556. wx.showModal({
  557. showCancel: false,
  558. content: "您当前的学习课程还未完成哦,请先完成再来考试吧!"
  559. })
  560. return false
  561. } else {
  562. wx.request({
  563. url: app.globalData.publicUrl + '/wx/exam/examList',
  564. method: "post",
  565. data: {
  566. sessionKey: this.data.sessionKey,
  567. courseId: e.currentTarget.dataset.item.id,
  568. clasId: this.data.classInfo.id
  569. },
  570. success: (res) => {
  571. if (res.data.code == 0) {
  572. if (res.data.list.length == 0) {
  573. wx.showModal({
  574. showCancel: false,
  575. content: '此课程还没有考试噢'
  576. })
  577. } else {
  578. if (res.data.list[0]) {
  579. if (res.data.list[0].answersId) {
  580. this.toPath(res.data.list[0].id, res.data.list[0].paperId, res.data.list[0].answersId, 'answerAfterclass');
  581. } else {
  582. this.beginKao(res.data.list[0].id, res.data.list[0].paperId, this.data.sessionKey, 'answerAfterclass');
  583. }
  584. }
  585. }
  586. }
  587. }
  588. })
  589. }
  590. },
  591. //去评价
  592. gopjClass(e) {
  593. if (!this.data.istask2) {
  594. wx.showModal({
  595. showCancel: false,
  596. content: "请先去填写学院登记表吧!"
  597. })
  598. return false
  599. }
  600. let isStudyDone = e.currentTarget.dataset.item.isStudyDone
  601. if (isStudyDone != 1) {
  602. wx.showModal({
  603. showCancel: false,
  604. content: "您的学习课程还未完成哦,请先完成学习任务后再来评价吧!"
  605. })
  606. return false
  607. } else {
  608. wx.request({
  609. url: app.globalData.publicUrl + '/wx/exam/quesExamList',
  610. method: "post",
  611. data: {
  612. sessionKey: this.data.sessionKey,
  613. // questSub: '3',
  614. courseId: e.currentTarget.dataset.item.id,
  615. clasId: this.data.classInfo.id
  616. },
  617. success: (res) => {
  618. if (res.data.code == 0) {
  619. if (res.data.list.length == 0) {
  620. wx.showModal({
  621. showCancel: false,
  622. content: '此课程还不可以评价哦!'
  623. })
  624. } else {
  625. if (res.data.list[0]) {
  626. if (res.data.list[0].answersId) {
  627. this.toPath(res.data.list[0].id, res.data.list[0].paperId, res.data.list[0].answersId, 'evaluationCourse');
  628. } else {
  629. this.beginKao(res.data.list[0].id, res.data.list[0].paperId, this.data.sessionKey, 'evaluationCourse');
  630. }
  631. }
  632. }
  633. }
  634. }
  635. })
  636. }
  637. },
  638. // 期末考试
  639. goQmks() {
  640. if (!this.data.istask1) {
  641. wx.showModal({
  642. showCancel: false,
  643. content: "请先去扫描二维码加入班级群吧",
  644. success(res) {
  645. if (res.confirm) {
  646. wx.switchTab({
  647. url: '../myMission/myMission'
  648. })
  649. }
  650. }
  651. })
  652. return false
  653. }
  654. if (!this.data.istask3) {
  655. wx.showModal({
  656. showCancel: false,
  657. content: "您的课程任务还未全部完成哦!请先去完成再来期末考试吧!"
  658. })
  659. return false
  660. }
  661. wx.request({
  662. url: app.globalData.publicUrl + '/wx/exam/examList',
  663. method: "post",
  664. data: {
  665. sessionKey: this.data.sessionKey,
  666. clasId: this.data.classInfo.id
  667. },
  668. success: (res) => {
  669. if (res.data.code == 0) {
  670. if (res.data.list.length == 0) {
  671. wx.showModal({
  672. showCancel: false,
  673. content: '期末考试还未开始哦!'
  674. })
  675. } else {
  676. if (res.data.list[0].answersId) {
  677. if (res.data.list[0].status == '1') {
  678. wx.request({
  679. url: app.globalData.publicUrl + '/wx/answer/detail',
  680. method: "post",
  681. data: {
  682. answersId: res.data.list[0].answersId
  683. },
  684. success: (res1) => {
  685. if (res1.data.list[0].answerScore >= 0 && res1.data.list[0].answerScore != null) {
  686. wx.navigateTo({
  687. url: '/pages/grade/grade?answersId=' + res.data.list[0].answersId,
  688. })
  689. } else {
  690. wx.showModal({
  691. showCancel: false,
  692. content: '当前老师批阅中,请耐心等待'
  693. })
  694. }
  695. }
  696. })
  697. } else {
  698. this.toPath(res.data.list[0].id, res.data.list[0].paperId, res.data.list[0].answersId, 'answerAfterclass');
  699. }
  700. } else {
  701. this.beginKao(res.data.list[0].id, res.data.list[0].paperId, this.data.sessionKey, 'answerAfterclass');
  702. }
  703. }
  704. }
  705. }
  706. })
  707. },
  708. // 综合反馈表
  709. goWrite2() {
  710. wx.request({
  711. url: app.globalData.publicUrl + '/wx/exam/quesExamList',
  712. method: "post",
  713. data: {
  714. sessionKey: this.data.sessionKey,
  715. questSub: '1',
  716. clasId: this.data.classInfo.id
  717. },
  718. success: (res) => {
  719. if (res.data.code == 0) {
  720. if (res.data.list.length == 0) {
  721. wx.showModal({
  722. showCancel: false,
  723. content: '当前综合反馈还不可以填写哦!'
  724. })
  725. } else {
  726. if (res.data.list[0]) {
  727. if (res.data.list[0].answersId) {
  728. if (res.data.list[0].status == '1') {
  729. wx.navigateTo({
  730. url: '/pages/feedBackDetail/feedBackDetail?answersId=' + res.data.list[0].answersId,
  731. })
  732. } else {
  733. this.toPath(res.data.list[0].id, res.data.list[0].paperId, res.data.list[0].answersId, 'feedBack');
  734. }
  735. } else {
  736. this.beginKao(res.data.list[0].id, res.data.list[0].paperId, this.data.sessionKey, 'feedBack');
  737. }
  738. }
  739. }
  740. }
  741. }
  742. })
  743. },
  744. // 考试需要的方法
  745. toPath(id, paperId, answersId, address, status) {
  746. wx.navigateTo({
  747. url: '/pages/' + address + '/' + address + '?id=' + id + '&paperId=' + paperId + '&answersId=' + answersId + '&status=' + status,
  748. })
  749. },
  750. // 考试需要的方法
  751. beginKao(id, paperId, sessionKey, address) {
  752. wx.request({
  753. url: app.globalData.publicUrl + '/wx/exam/begin',
  754. method: "post",
  755. data: {
  756. sessionKey: sessionKey,
  757. id: id,
  758. paperId: paperId
  759. },
  760. success: (res) => {
  761. if (res.data.code == 0) {
  762. this.setData({
  763. status: res.data.status
  764. })
  765. this.toPath(id, paperId, res.data.answersId, address, );
  766. }
  767. }
  768. })
  769. },
  770. // 领取结业证
  771. // lq() {
  772. // if (!this.data.istask4) {
  773. // wx.showModal({
  774. // showCancel: false,
  775. // content: "请先去期末考试再来领取结业证吧!"
  776. // })
  777. // return false
  778. // }
  779. // wx.showLoading({
  780. // mask: true,
  781. // title: '加载中',
  782. // })
  783. // this.setData({
  784. // myCanvasId: this.data.myCanvasId + 1
  785. // })
  786. // let str = this.data.studentName + "同志:"
  787. // let str1 = "于" + this.data.classInfo.beginDate + "至" + this.data.classInfo.endDate + "参加学习" + this.data.classInfo.clasName + "完成规定培训内容。准予结业,特发此证。"
  788. // let strArr1 = [];
  789. // let a = str1.slice(0, 22);
  790. // let b = str1.slice(22, 37);
  791. // let c = str1.slice(37, 52);
  792. // let d = str1.slice(52, 67);
  793. // strArr1.push(a, b, c, d);
  794. // const ctx = wx.createCanvasContext(this.data.myCanvasId);
  795. // ctx.drawImage(this.data.byzsbj, 0, 0, 300, 415); //里面的参数无非就是图片放置的位置即图片的横纵坐标,图片的宽高
  796. // ctx.setFillStyle("#000");
  797. // ctx.setFontSize(15); //字大小
  798. // ctx.font = 'normal bold 15px sans-serif'
  799. // ctx.setTextAlign('left'); //是否居中显示,参考点画布中线
  800. // let leftPositionAarr = [60, 30, 30, 30]
  801. // ctx.fillText(str, 30, 160);
  802. // for (let i = 0; i < strArr1.length; i++) {
  803. // ctx.fillText(strArr1[i], leftPositionAarr[i], 190 + i * 30);
  804. // }
  805. // ctx.draw();
  806. // wx.hideLoading();
  807. // this.setData({
  808. // showzs: true
  809. // });
  810. // wx.request({
  811. // url: app.globalData.publicUrl + '/wx/student/wxGraduation',
  812. // method: "post",
  813. // data: {
  814. // sessionKey: this.data.sessionKey
  815. // },
  816. // success: (res) => {
  817. // console.log(res.data, "领取结业证提交")
  818. // }
  819. // })
  820. // },
  821. //孙喆 2020-9-22 10:38最后更改
  822. lq() {
  823. var that = this;
  824. if (!this.data.istask4) {
  825. wx.showModal({
  826. showCancel: false,
  827. content: "您的期末考试还未完成哦!"
  828. })
  829. return false
  830. }
  831. wx.showLoading({
  832. mask: true,
  833. title: '加载中',
  834. })
  835. wx.request({
  836. url: app.globalData.publicUrl + '/wx/student/wxGraduation',
  837. method: "post",
  838. data: {
  839. sessionKey: this.data.sessionKey
  840. },
  841. success: (res) => {
  842. console.log(res);
  843. console.log(res.data, "领取结业证提交")
  844. wx.hideLoading();
  845. if(res.data.code==500){
  846. wx.showModal({
  847. showCancel: false,
  848. content: "领取失败,请稍后再试"
  849. })
  850. }else{
  851. that.setData({
  852. myCanvasId: that.data.myCanvasId + 1
  853. })
  854. let str = that.data.studentName + " 同志于" + app.dateFilter(that.data.classInfo.beginDate) + "-" + app.dateFilter(that.data.classInfo.endDate) + "参加" + that.data.classInfo.clasName + ",完成规定培训内容。准予结业,特发此证。"
  855. //汉字占两格,英文数字占一格
  856. let re = /^[\u4e00-\u9fa5]$/;
  857. let stra = str.split("");
  858. let tva = 30; //阈值
  859. let strTar = [];
  860. let num = 0;
  861. let st = "";
  862. for (let i = 0; i < str.length; i++) {
  863. let s = stra.shift()
  864. st = st + s;
  865. num += re.test(s) ? 2 : 1;
  866. tva = strTar.length < 1 ? that.data.tva - 4 : that.data.tva;
  867. if (num >= tva || i == str.length - 1) {
  868. strTar.push(st);
  869. num = 0;
  870. st = "";
  871. }
  872. }
  873. const ctx = wx.createCanvasContext(that.data.myCanvasId);
  874. ctx.drawImage(that.data.byzsbj, 0, 0, 300, 415); //里面的参数无非就是图片放置的位置即图片的横纵坐标,图片的宽高
  875. ctx.setFillStyle("#000");
  876. ctx.setFontSize(14); //字大小
  877. ctx.font = 'normal bold 14px sans-serif'
  878. ctx.setTextAlign('left'); //是否居中显示,参考点画布中线
  879. let leftPositionAarr = [59, 30]
  880. let graduationNum =res.data.data.graduationNum!=""? "编号:" + res.data.data.graduationNum:"";
  881. ctx.fillText(graduationNum, 130, 150);
  882. let topPt=190-(strTar.length-4)*5;
  883. let lineHeight=30-(strTar.length>4?strTar.length>6?10:(strTar.length-4)*5:0)
  884. for (let i = 0; i < strTar.length; i++) {
  885. ctx.fillText(strTar[i], i == 0 ? leftPositionAarr[0] : leftPositionAarr[1], topPt + i * lineHeight);
  886. }
  887. ctx.draw();
  888. that.setData({
  889. showzs: true
  890. });
  891. }
  892. },
  893. fail: () => {
  894. wx.hideLoading();
  895. wx.showModal({
  896. showCancel: false,
  897. content: "网络错误,请稍后再试"
  898. })
  899. }
  900. })
  901. },
  902. // 保存结业证
  903. saveZs() {
  904. wx.canvasToTempFilePath({ //把当前画布指定区域的内容导出生成指定大小的图片
  905. canvasId: this.data.myCanvasId,
  906. success(res) {
  907. wx.authorize({ //向用户发起授权请求
  908. scope: 'scope.writePhotosAlbum', //保存相册授权
  909. success: () => {
  910. wx.saveImageToPhotosAlbum({ //保存图片到系统相册
  911. filePath: res.tempFilePath,
  912. success: () => {
  913. wx.showToast({
  914. title: '图片保存成功'
  915. })
  916. }
  917. })
  918. }
  919. })
  920. }
  921. })
  922. },
  923. // 视频时长换算 换成多少时多少分多少秒
  924. handler(value) {
  925. //换算为秒 进制1000
  926. const second = Math.floor(value / 1000); //判断是否够1秒
  927. if (second < 1) {
  928. return "0秒";
  929. }
  930. const secondValue = second % 60; // 秒
  931. const minutes = Math.floor(second / 60); //判断是否够1分钟
  932. if (minutes < 1) {
  933. return `${secondValue}秒`;
  934. }
  935. const minutesValue = minutes % 60; //分
  936. const hours = Math.floor(minutes / 60); //判断是否够1小时
  937. if (hours < 1) {
  938. return `${minutesValue}分${secondValue}秒`;
  939. }
  940. const hoursValue = hours % 60; //小时
  941. return `${hoursValue}时${minutesValue}分${secondValue}秒`;
  942. },
  943. // 结业证隐藏
  944. onClose1() {
  945. this.setData({
  946. showzs: false
  947. });
  948. },
  949. // 查看详情成绩
  950. gockcj(e) {
  951. if (e.currentTarget.dataset.item.isExamId) {
  952. wx.request({
  953. url: app.globalData.publicUrl + '/wx/answer/detail',
  954. method: "post",
  955. data: {
  956. answersId: e.currentTarget.dataset.item.isExamId
  957. },
  958. success: (res) => {
  959. if (res.data.list[0] &&res.data.list[0].answerScore >= 0 && res.data.list[0].answerScore != null) {
  960. wx.navigateTo({
  961. url: '/pages/grade/grade?answersId=' + e.currentTarget.dataset.item.isExamId,
  962. })
  963. } else {
  964. wx.showModal({
  965. showCancel: false,
  966. content: '当前老师批阅中,请耐心等待'
  967. })
  968. }
  969. }
  970. })
  971. }
  972. },
  973. // 查看详情评价
  974. gockpj(e) {
  975. wx.navigateTo({
  976. url: '/pages/evaluationCourseDetail/evaluationCourseDetail?answersId=' + e.currentTarget.dataset.item.isFeedbackId,
  977. })
  978. },
  979. async onShow() {
  980. wx.showLoading({
  981. title: '正在加载',
  982. });
  983. const sessionKey = await tools.checkSessionAndLogin();
  984. this.setData({
  985. sessionKey
  986. })
  987. this.isRz(sessionKey);
  988. },
  989. onHide(){
  990. this.setData({
  991. isLoading: true
  992. });
  993. },
  994. stopLoading() {
  995. this.setData({
  996. isLoading: false
  997. });
  998. wx.hideLoading();
  999. }
  1000. })