myMission.js 22 KB

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