myMission.js 21 KB

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