myMission.js 16 KB

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