myMission.js 27 KB

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