myMission.js 29 KB

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