myMission.js 28 KB

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