examCamera.vue 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. <template>
  2. <view class="phone-sztqr-page">
  3. <!-- 导航区域 -->
  4. <customNavbarVue title="摄像头确认" :show-back-btn="true" @back="handleBack"></customNavbarVue>
  5. <zhuapaiConfirm ref="zhuapaiConfirmRef" @success="zpConfirmSuccess" key="1"></zhuapaiConfirm>
  6. <button type="default" class="phone-green-btn zp-qr-btn" @click="zpConfirmSuccess">确认</button>
  7. <view class="sztqr-tip-content">
  8. 注:<br/>
  9. 1.考试过程中切换应用程序,会退出当前考试,返回应用后,需重新进入考试。<br/>
  10. 2.考生进入考试页面后,小程序自动请求摄像头权限。授权通过后,摄像头开启,实时显示考生画面。考试期间系统将会使用您的摄像头进行拍照,抓拍照片自动上传至服务器,仅用于考试核验,照片将严格保密。<br/>
  11. 3.请您确保摄像头设备可以正常使用,并赋予了小程序摄像头权限(设置→摄像头→开启)
  12. </view>
  13. </view>
  14. </template>
  15. <script setup>
  16. import {
  17. onLoad,
  18. onShow,
  19. onHide
  20. } from "@dcloudio/uni-app";
  21. import {
  22. ref,nextTick
  23. } from "vue";
  24. import zhuapaiConfirm from "@/components/zhuapaiConfirm/index.vue";
  25. import customNavbarVue from "@/components/custom-navbar/custom-navbar.vue";
  26. const opt = ref(null);
  27. const zhuapaiConfirmRef = ref(null);
  28. onLoad((options) => {
  29. opt.value = options;
  30. setTimeout(() => {
  31. zhuapaiConfirmRef.value.showDialog()
  32. },1000)
  33. })
  34. function zpConfirmSuccess() {
  35. uni.redirectTo({
  36. url: `/pages/client/Kaoshi/exam?ksId=${opt.value.ksId}&zhuapai=${opt.value.zhuapai}&userKaozhengId=${opt.value.userKaozhengId}&from=${opt.value.from}`
  37. })
  38. }
  39. function zpConfirmError(e) {
  40. uni.showToast({
  41. icon: 'none',
  42. title: '考试环境异常请检测摄像头是否正常',
  43. duration: 3000,
  44. mask: true // 防止触摸穿透
  45. })
  46. setTimeout(() => {
  47. handleBack();
  48. }, 3000)
  49. }
  50. function zpConfirmCancel() {
  51. handleBack();
  52. }
  53. function handleBack() {
  54. const pages = getCurrentPages();
  55. if (pages.length > 1) {
  56. uni.navigateBack()
  57. } else {
  58. history.back();
  59. }
  60. }
  61. </script>
  62. <style>
  63. </style>