index.ts 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166
  1. // pages/faceRecognition/index.ts
  2. import { base } from "../../config/index";
  3. Page({
  4. /**
  5. * 页面的初始数据
  6. */
  7. data: {
  8. videoSrc: '', // 录制的视频临时路径
  9. isBack: false, // 是否返回上一页,用于页面隐藏时判断
  10. id_card: '',
  11. program_id: ''
  12. },
  13. /**
  14. * 生命周期函数--监听页面加载
  15. */
  16. onLoad(opt) {
  17. this.setData({
  18. id_card: opt.IDCard,
  19. program_id: opt.program_id
  20. })
  21. console.log(this.data.program_id)
  22. console.log(this.data.id_card)
  23. },
  24. /**
  25. * 生命周期函数--监听页面初次渲染完成
  26. */
  27. onReady() {
  28. },
  29. /**
  30. * 生命周期函数--监听页面显示
  31. */
  32. onShow() {
  33. console.log('页面显示')
  34. this.setData({
  35. isBack: true
  36. })
  37. },
  38. /**
  39. * 生命周期函数--监听页面隐藏
  40. */
  41. onHide() {
  42. // 在录制中退出后台页面隐藏,返回上一页,确保重新进入当前页
  43. // 防止在录制中退出后台导致下次重新录制失败 "operateCamera:fail:is stopping"
  44. console.log('页面隐藏')
  45. if (this.data.isBack) wx.navigateBack()
  46. },
  47. /**
  48. * 生命周期函数--监听页面卸载
  49. */
  50. onUnload() {
  51. },
  52. /**
  53. * 页面相关事件处理函数--监听用户下拉动作
  54. */
  55. onPullDownRefresh() {
  56. },
  57. /**
  58. * 页面上拉触底事件的处理函数
  59. */
  60. onReachBottom() {
  61. },
  62. /**
  63. * 用户点击右上角分享
  64. */
  65. onShareAppMessage() {
  66. },
  67. // 当取消授权或者打开设置授权
  68. handleNoAuth(res:any) {
  69. console.log("用户拒绝授权:", res)
  70. // 因为在设置里授权摄像头不会立即生效,所以要返回上一页,确保重新进入当前页使摄像头生效
  71. setTimeout(() => {
  72. wx.navigateBack()
  73. }, 500)
  74. },
  75. // 版本号过低的回调
  76. handleCannotuse() {
  77. console.log('版本号过低无法使用, 组件内已经弹窗提示过了')
  78. wx.navigateBack()
  79. },
  80. // 视频录制完成
  81. handleComplete(e:WechatMiniprogram.CustomEvent) {
  82. console.log('视频文件路径:', e.detail)
  83. // e.detail: 视频临时路径
  84. this.setData({
  85. videoSrc: e.detail.toString(),
  86. isBack: false
  87. })
  88. // 打印视频信息文件
  89. const fileSystemManager = wx.getFileSystemManager();
  90. fileSystemManager.getFileInfo({
  91. filePath: e.detail.toString(),
  92. success: (res) => {
  93. const {
  94. size
  95. } = res
  96. console.log("视频文件大小M:", size / Math.pow(1024, 2))
  97. },
  98. fail: (err) => {
  99. console.log("获取视频文件失败", err)
  100. }
  101. })
  102. this.uploadVideo()
  103. },
  104. uploadVideo() {
  105. var src = this.data.videoSrc
  106. wx.showLoading({
  107. title: '上传进度:0%',
  108. mask: true //是否显示透明蒙层,防止触摸穿透
  109. })
  110. console.log(this.data.program_id)
  111. // todo: 添加上传服务器的接口
  112. const uploadTask = wx.uploadFile({
  113. // 仅为示例,非真实的接口地址,视频上传
  114. url: base.url + '/v3/upload',
  115. filePath: src,
  116. name: 'file', //服务器定义的Key值
  117. formData: {},
  118. header: {
  119. Authorization: wx.getStorageSync("token")
  120. },
  121. success: function (res) {
  122. console.log(res)
  123. console.log('视频上传成功')
  124. wx.showToast({
  125. title: "上传成功"
  126. })
  127. },
  128. fail: function (res) {
  129. console.log(res)
  130. console.log('接口调用失败')
  131. }
  132. })
  133. //监听上传进度变化事件
  134. uploadTask.onProgressUpdate((res) => {
  135. wx.showLoading({
  136. title: '上传进度:' + res.progress + '%',
  137. mask: true //是否显示透明蒙层,防止触摸穿透
  138. })
  139. console.log("上传进度", res.progress)
  140. console.log("已经上传的数据长度,单位 Bytes:", res.totalBytesSent)
  141. console.log("预期需要上传的数据总长度,单位 Bytes:", res.totalBytesExpectedToSend)
  142. })
  143. }
  144. })