myMission.js 20 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670
  1. const app = require('../../utils/util.js');
  2. const tools = require('../../utils/tools.js');
  3. Page({
  4. /**
  5. * 页面的初始数据
  6. */
  7. data: {
  8. showewm: false,
  9. showzs: false,
  10. kcArr: [],
  11. // ewmurl: '',
  12. sfmArr: [],
  13. // className: '',
  14. istask1: false,
  15. istask2: false,
  16. istask3: false,
  17. istask4: false,
  18. istask5: false,
  19. studentName: "",
  20. classInfo: {},
  21. byzsbj: "../../images/zsbj.jpg",
  22. myCanvasId: 0,
  23. IngCourseArr: [] //如果有正在进行的课就存一下
  24. },
  25. selectBtn0() {
  26. this.setData({
  27. select: 0
  28. });
  29. },
  30. selectBtn1() {
  31. this.setData({
  32. select: 1
  33. });
  34. },
  35. gokhAnswer(e) {
  36. if (this.data.istask2 == false) {
  37. wx.showModal({
  38. showCancel: false,
  39. content: "请按照任务顺序执行哦!"
  40. })
  41. return false
  42. }
  43. console.log(e.currentTarget.dataset.item, "8888")
  44. let isStudyDone = e.currentTarget.dataset.item.isStudyDone
  45. let isExam = e.currentTarget.dataset.item.isExam
  46. // let courseName = e.currentTarget.dataset.item.courseName
  47. if (isStudyDone != 1) {
  48. wx.showModal({
  49. showCancel: false,
  50. content: "您的学习课程还未完成哦,请先完成学习任务后再来考试吧!"
  51. })
  52. return false
  53. } else {
  54. if (isExam == 0) {
  55. wx.navigateTo({
  56. url: '../answerAfterclass/answerAfterclass'
  57. })
  58. } else {
  59. wx.showModal({
  60. showCancel: false,
  61. content: "您已经考完试了!"
  62. })
  63. }
  64. }
  65. },
  66. gopjClass(e) {
  67. if (this.data.istask2 == false) {
  68. wx.showModal({
  69. showCancel: false,
  70. content: "请按照任务顺序执行哦!"
  71. })
  72. return false
  73. }
  74. console.log(e.currentTarget.dataset.item, "8888")
  75. let isStudyDone = e.currentTarget.dataset.item.isStudyDone
  76. let isFeedback = e.currentTarget.dataset.item.isFeedback
  77. if (isStudyDone != 1) {
  78. wx.showModal({
  79. showCancel: false,
  80. content: "您的学习课程还未完成哦,请先完成学习任务后再来评价吧!"
  81. })
  82. return false
  83. } else {
  84. if (isFeedback == 0) {
  85. wx.navigateTo({
  86. url: '../evaluationCourse/evaluationCourse'
  87. })
  88. } else {
  89. wx.showModal({
  90. showCancel: false,
  91. content: "您已经评价过了!"
  92. })
  93. }
  94. }
  95. },
  96. // startAnswer() {
  97. // wx.navigateTo({
  98. // url: '/pages/answerAfterclass/answerAfterclass',
  99. // })
  100. // },
  101. goWrite() {
  102. if (this.data.istask2 == false) {
  103. wx.showModal({
  104. showCancel: false,
  105. content: "请按照任务顺序执行哦!"
  106. })
  107. return false
  108. }
  109. console.log(this.data.sessionKey);
  110. wx.request({
  111. url: app.globalData.publicUrl + '/wx/exam/quesExamList',
  112. method: "post",
  113. data: {
  114. sessionKey: this.data.sessionKey,
  115. questSub: '0'
  116. },
  117. success: (res) => {
  118. if (res.data.code == 0) {
  119. console.log(res.data);
  120. //let answersId = res.data.list[0].answersId ;
  121. console.log(res.data.list.length);
  122. if (res.data.list[0]) {
  123. if (res.data.list[0].answersId) {
  124. if (res.data.list[0].status) {
  125. wx.navigateTo({
  126. url: '/pages/studentRegistrationDeyail/studentRegistrationDeyail?answersId=' + res.data.list[0].answersId,
  127. })
  128. } else {
  129. this.toPath(res.data.list[0].id, res.data.list[0].paperId, res.data.list[0].answersId, 'studentRegistration');
  130. }
  131. } else {
  132. console.log('777777');
  133. this.beginKao(res.data.list[0].id, res.data.list[0].paperId, this.data.sessionKey, 'studentRegistration');
  134. }
  135. }
  136. }
  137. }
  138. })
  139. },
  140. // 综合反馈表 、、、、、、
  141. goWrite2() {
  142. if (this.data.istask3 == false) {
  143. wx.showModal({
  144. showCancel: false,
  145. content: "请按照任务顺序执行哦!"
  146. })
  147. return false
  148. }
  149. console.log(this.data.sessionKey, "dayin");
  150. console.log(this.data.classInfo.id);
  151. wx.request({
  152. url: app.globalData.publicUrl + '/wx/exam/quesExamList',
  153. method: "post",
  154. data: {
  155. sessionKey: this.data.sessionKey,
  156. questSub: '1',
  157. clasId: this.data.classInfo.id
  158. },
  159. success: (res) => {
  160. if (res.data.code == 0) {
  161. console.log(res.data, "zonghe");
  162. //let answersId = res.data.list[0].answersId ;
  163. console.log(res.data.list.length);
  164. if (res.data.list[0]) {
  165. if (res.data.list[0].answersId) {
  166. if (res.data.list[0].status == '1') {
  167. wx.navigateTo({
  168. url: '/pages/feedBackDetail/feedBackDetail?answersId=' + res.data.list[0].answersId,
  169. })
  170. } else {
  171. this.toPath(res.data.list[0].id, res.data.list[0].paperId, res.data.list[0].answersId, 'feedBack');
  172. }
  173. } else {
  174. this.beginKao(res.data.list[0].id, res.data.list[0].paperId, this.data.sessionKey, 'feedBack');
  175. }
  176. }
  177. }
  178. }
  179. })
  180. },
  181. toPath(id, paperId, answersId, address, status) {
  182. wx.navigateTo({
  183. url: '/pages/' + address + '/' + address + '?id=' + id + '&paperId=' + paperId + '&answersId=' + answersId + '&status=' + status,
  184. })
  185. },
  186. beginKao(id, paperId, sessionKey, address) {
  187. console.log(paperId, "8888888");
  188. wx.request({
  189. url: app.globalData.publicUrl + '/wx/exam/begin',
  190. method: "post",
  191. data: {
  192. sessionKey: sessionKey,
  193. id: id,
  194. paperId: paperId
  195. },
  196. success: (res) => {
  197. console.log(res);
  198. if (res.data.code == 0) {
  199. console.log(res, "为我么我们微妙"); // 提交答案是后
  200. this.setData({
  201. status: res.data.status
  202. })
  203. this.toPath(id, paperId, res.data.answersId, address, );
  204. }
  205. }
  206. })
  207. },
  208. // 领取结业证
  209. lq() {
  210. if (this.data.istask4 == false) {
  211. wx.showModal({
  212. showCancel: false,
  213. content: "请按照任务顺序执行哦!"
  214. })
  215. return false
  216. }
  217. wx.showLoading({
  218. mask: true,
  219. title: '加载中',
  220. })
  221. this.setData({
  222. myCanvasId: this.data.myCanvasId + 1
  223. })
  224. console.log(this.data.myCanvasId)
  225. let str = this.data.studentName + "同志于" + this.data.classInfo.beginDate + " 至 " + this.data.classInfo.endDate + "参加学习完成规定培训内容,准予结业,特发此证。"
  226. let strArr = [];
  227. //每15个字截取一下
  228. // let n = 15;
  229. // for (let i = 0, l = str.length; i < l / n; i++) {
  230. // let a = str.slice(n * i, n * (i + 1));
  231. // strArr.push(a);
  232. // }
  233. let a = str.slice(0, 18);
  234. let b = str.slice(16, 36);
  235. let c = str.slice(36, 56);
  236. strArr.push(a, b, c);
  237. console.log(strArr, "我是截取之后的")
  238. const ctx = wx.createCanvasContext(this.data.myCanvasId);
  239. ctx.drawImage(this.data.byzsbj, 0, 0, 300, 415); //里面的参数无非就是图片放置的位置即图片的横纵坐标,图片的宽高
  240. ctx.setFillStyle("#000");
  241. ctx.setFontSize(16); //字大小
  242. ctx.setTextAlign('left'); //是否居中显示,参考点画布中线
  243. let leftPositionAarr = [60, 30, 30, 30]
  244. for (let i = 0; i < strArr.length; i++) {
  245. console.log(i);
  246. ctx.fillText(strArr[i], leftPositionAarr[i], 160 + i * 30);
  247. }
  248. // ctx.fillText(str, 150, 160); //150:canvas画布宽300,取1/2,中间,280:纵向位置
  249. ctx.draw();
  250. wx.hideLoading();
  251. this.setData({
  252. showzs: true,
  253. istask5: true
  254. });
  255. wx.request({
  256. url: app.globalData.publicUrl + '/wx/student/wxGraduation',
  257. method: "post",
  258. data: {
  259. sessionKey: this.data.sessionKey
  260. },
  261. success: (res) => {
  262. console.log(res.data, "领取结业证提交")
  263. }
  264. })
  265. },
  266. saveZs() {
  267. wx.canvasToTempFilePath({ //把当前画布指定区域的内容导出生成指定大小的图片
  268. canvasId: this.data.myCanvasId,
  269. success(res) {
  270. console.log(res)
  271. wx.authorize({ //向用户发起授权请求
  272. scope: 'scope.writePhotosAlbum', //保存相册授权
  273. success: () => {
  274. wx.saveImageToPhotosAlbum({ //保存图片到系统相册
  275. filePath: res.tempFilePath,
  276. success: () => {
  277. wx.showToast({
  278. title: '图片保存成功'
  279. })
  280. }
  281. })
  282. }
  283. })
  284. }
  285. })
  286. },
  287. // 点击去学习转直播点播页面
  288. goStudy(e) {
  289. if (this.data.istask2 == false) {
  290. wx.showModal({
  291. showCancel: false,
  292. content: "请按照任务顺序执行哦!"
  293. })
  294. return false
  295. }
  296. let id = e.currentTarget.dataset.item.id //此课程的id
  297. console.log(id)
  298. console.log(this.data.IngCourseArr, "我是筛选的列表")
  299. if (this.data.IngCourseArr.length == 0) {
  300. if (e.currentTarget.dataset.item.isLive == 1) {
  301. if (e.currentTarget.dataset.item.isActive == 1) {
  302. wx.navigateTo({
  303. url: '../zbDetails/zbDetails?id=' + id
  304. })
  305. } else {
  306. wx.showModal({
  307. showCancel: false,
  308. content: "直播还未开始哦"
  309. })
  310. return false;
  311. }
  312. } else {
  313. wx.navigateTo({
  314. url: '../dbDetails/dbDetails?id=' + id
  315. })
  316. }
  317. } else {
  318. if (id == this.data.IngCourseArr.id) {
  319. if (e.currentTarget.dataset.item.isLive == 1) {
  320. if (e.currentTarget.dataset.item.isActive == 1) {
  321. wx.navigateTo({
  322. url: '../zbDetails/zbDetails?id=' + id
  323. })
  324. } else {
  325. wx.showModal({
  326. showCancel: false,
  327. content: "直播还未开始哦"
  328. })
  329. return false;
  330. }
  331. } else {
  332. wx.navigateTo({
  333. url: '../dbDetails/dbDetails?id=' + id
  334. })
  335. }
  336. } else {
  337. wx.showModal({
  338. showCancel: false,
  339. content: "您有未完成的学习课程,请先完成学习任务后再进行其他课程学习!"
  340. })
  341. }
  342. }
  343. },
  344. // 获取我的课表
  345. getMycourse(sessionKey) {
  346. wx.request({
  347. url: app.globalData.publicUrl + '/wx/course/selectBySessionKey',
  348. method: "post",
  349. data: {
  350. sessionKey: sessionKey
  351. },
  352. success: (res) => {
  353. console.log(res, "我的任务之课程")
  354. if (res.data.code == 0 && res.data.list.length !== 0) {
  355. this.setData({
  356. kcArr: res.data.list,
  357. istask3: res.data.allDone
  358. });
  359. // 过滤数组
  360. for (let i = 0; i < res.data.list.length; i++) {
  361. if (res.data.list[i].isStudyDone == 0) {
  362. this.setData({
  363. IngCourseArr: res.data.list[i]
  364. })
  365. }
  366. }
  367. // 换算时间
  368. let result = [];
  369. if (res.data.list)
  370. for (let i = 0; i < res.data.list.length; i++) {
  371. result.push({
  372. courseTime: res.data.list[i].courseTime
  373. });
  374. }
  375. const timesArr = result.map((item) => {
  376. return item.courseTime;
  377. });
  378. let sfmArr = [];
  379. for (let i = 0; i < timesArr.length; i++) {
  380. let value = timesArr[i];
  381. const resultValue = this.handler(value);
  382. sfmArr.push({
  383. courseTime: resultValue
  384. })
  385. this.setData({
  386. sfmArr: sfmArr
  387. })
  388. }
  389. }
  390. }
  391. })
  392. },
  393. handler(value) {
  394. //换算为秒 进制1000
  395. const second = Math.floor(value / 1000); //判断是否够1秒
  396. if (second < 1) {
  397. return "0秒";
  398. }
  399. const secondValue = second % 60; // 秒
  400. const minutes = Math.floor(second / 60); //判断是否够1分钟
  401. if (minutes < 1) {
  402. return `${secondValue}秒`;
  403. }
  404. const minutesValue = minutes % 60; //分
  405. const hours = Math.floor(minutes / 60); //判断是否够1小时
  406. if (hours < 1) {
  407. return `${minutesValue}分${secondValue}秒`;
  408. }
  409. const hoursValue = hours % 60; //小时
  410. return `${hoursValue}时${minutesValue}分${secondValue}秒`;
  411. },
  412. // 学员身份认证 检查第一个任务
  413. checkTaskList(sessionKey) {
  414. wx.request({
  415. url: app.globalData.publicUrl + '/wx/student/selStudentSessionKey',
  416. method: "post",
  417. data: {
  418. sessionKey: sessionKey
  419. },
  420. success: (res) => {
  421. console.log(res.data, "检查第一个任务")
  422. if (res.data.code == 0) {
  423. if (res.data.data.joinClas == 0) {
  424. this.setData({
  425. istask1: true
  426. })
  427. }
  428. this.setData({
  429. studentName: res.data.data.studentName,
  430. })
  431. }
  432. }
  433. })
  434. },
  435. // 检查第二个任务 学院登记表
  436. checkTaskList2(sessionKey) {
  437. wx.request({
  438. url: app.globalData.publicUrl + '/wx/student/selStudentSessionKey',
  439. method: "post",
  440. data: {
  441. sessionKey: sessionKey
  442. },
  443. success: (res) => {
  444. console.log(res.data, "我是第二个任务的检查状态")
  445. if (res.data.code == 0 && res.data.data.register == 0) {
  446. this.setData({
  447. istask2: true
  448. })
  449. }
  450. }
  451. })
  452. },
  453. // 检查第四个任务 综合反馈表
  454. checkTaskList4(sessionKey) {
  455. wx.request({
  456. url: app.globalData.publicUrl + '/wx/exam/status',
  457. method: "post",
  458. data: {
  459. sessionKey: sessionKey
  460. },
  461. success: (res) => {
  462. console.log(res.data, "我是第四个任务的检查状态")
  463. if (res.data.code == 0 && res.data.status == 0) {
  464. this.setData({
  465. istask4: true
  466. })
  467. }
  468. }
  469. })
  470. },
  471. checkTaskList5(sessionKey) {
  472. wx.request({
  473. url: app.globalData.publicUrl + '/wx/student/wxGraduation',
  474. method: "post",
  475. data: {
  476. sessionKey: sessionKey
  477. },
  478. success: (res) => {
  479. console.log(res.data, "我是第五个任务的检查状态")
  480. if (res.data.code == 0 && res.data.code == 0) {
  481. this.setData({
  482. istask5: true
  483. })
  484. }
  485. }
  486. })
  487. },
  488. // 查询我是否有班&&班级名字
  489. isClass(sessionKey) {
  490. wx.request({
  491. url: app.globalData.publicUrl + '/wx/student/selMyClas',
  492. method: "post",
  493. data: {
  494. sessionKey: sessionKey
  495. },
  496. success: (res) => {
  497. console.log(res, "我是返回是否有班级")
  498. if (res.data.code == 0) {
  499. this.setData({
  500. classInfo: res.data.data
  501. })
  502. } else {
  503. wx.showModal({
  504. content: "您当前还没有开放的班级!",
  505. showCancel: false,
  506. success(res) {
  507. if (res.confirm) {
  508. wx.switchTab({
  509. url: '../index/index'
  510. })
  511. }
  512. }
  513. })
  514. return false;
  515. }
  516. }
  517. })
  518. },
  519. // 记录二维码已经点击
  520. ewmClick(sessionKey) {
  521. wx.request({
  522. url: app.globalData.publicUrl + '/wx/student/wxGroup',
  523. method: "post",
  524. data: {
  525. sessionKey: sessionKey
  526. },
  527. success: (res) => {
  528. this.setData({
  529. showewm: true,
  530. istask1: true
  531. })
  532. }
  533. })
  534. },
  535. async showEwm() {
  536. const sessionKey = await tools.checkSessionAndLogin();
  537. this.ewmClick(sessionKey)
  538. },
  539. onClose() {
  540. wx.hideLoading()
  541. this.setData({
  542. showewm: false
  543. });
  544. },
  545. onClose1() {
  546. this.setData({
  547. showzs: false
  548. });
  549. },
  550. /**
  551. * 生命周期函数--监听页面初次渲染完成
  552. */
  553. saveImg() {
  554. wx.getSetting({
  555. success: (res) => {
  556. if (!res.authSetting['scope.writePhotosAlbum']) {
  557. wx.authorize({
  558. scope: 'scope.writePhotosAlbum',
  559. success() {
  560. console.log(res, "我点击同意啦")
  561. wx.showLoading({
  562. title: '保存中...'
  563. })
  564. let imgSrc = this.data.ewmurl;
  565. wx.downloadFile({
  566. url: imgSrc,
  567. success: function (res) {
  568. console.log(res, '我下载完成啦');
  569. //图片保存到本地
  570. wx.saveImageToPhotosAlbum({
  571. filePath: res.tempFilePath,
  572. success: function (data) {
  573. console.log(data, '我保存成功啦')
  574. wx.hideLoading();
  575. wx.showToast({
  576. title: '保存成功',
  577. icon: 'success',
  578. duration: 2000
  579. })
  580. },
  581. fail: function (err) {
  582. console.log(err, '我保存失败啦')
  583. wx.hideLoading();
  584. if (err.errMsg === "saveImageToPhotosAlbum:fail auth deny") {
  585. console.log("当初用户拒绝,再次发起授权")
  586. wx.openSetting({
  587. success(settingdata) {
  588. console.log(settingdata)
  589. if (settingdata.authSetting['scope.writePhotosAlbum']) {
  590. console.log('获取权限成功,给出再次点击图片保存到相册的提示。')
  591. } else {
  592. console.log('获取权限失败,给出不给权限就无法正常使用的提示')
  593. }
  594. }
  595. })
  596. }
  597. },
  598. complete(res) {
  599. console.log(res);
  600. }
  601. })
  602. }
  603. })
  604. }
  605. })
  606. } else {
  607. let imgSrc = this.data.ewmurl
  608. wx.downloadFile({
  609. url: imgSrc,
  610. success: function (res) {
  611. console.log(res, '我下载完成啦');
  612. wx.hideLoading();
  613. //图片保存到本地
  614. wx.saveImageToPhotosAlbum({
  615. filePath: res.tempFilePath,
  616. success: function (data) {
  617. console.log(data, '我保存成功啦')
  618. wx.hideLoading();
  619. wx.showToast({
  620. title: '保存成功',
  621. icon: 'success',
  622. duration: 2000
  623. })
  624. },
  625. fail: function (err) {
  626. console.log(err, '我保存失败啦')
  627. wx.hideLoading();
  628. if (err.errMsg === "saveImageToPhotosAlbum:fail auth deny") {
  629. console.log("当初用户拒绝,再次发起授权")
  630. wx.openSetting({
  631. success(settingdata) {
  632. console.log(settingdata)
  633. if (settingdata.authSetting['scope.writePhotosAlbum']) {
  634. console.log('获取权限成功,给出再次点击图片保存到相册的提示。')
  635. } else {
  636. console.log('获取权限失败,给出不给权限就无法正常使用的提示')
  637. }
  638. }
  639. })
  640. }
  641. },
  642. complete(res) {
  643. console.log(res);
  644. }
  645. })
  646. }
  647. })
  648. }
  649. }
  650. })
  651. },
  652. async onShow() {
  653. const sessionKey = await tools.checkSessionAndLogin();
  654. this.setData({
  655. sessionKey
  656. })
  657. this.checkTaskList(sessionKey)
  658. this.isClass(sessionKey);
  659. this.getMycourse(sessionKey);
  660. this.checkTaskList2(sessionKey)
  661. this.checkTaskList4(sessionKey)
  662. this.checkTaskList5(sessionKey)
  663. // this.canvasImg();
  664. // this.getbyzsText();
  665. }
  666. })