myMission.js 29 KB

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