scan-code.vue 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. <template>
  2. <view>
  3. <page-head :title="title"></page-head>
  4. <view class="uni-padding-wrap uni-common-mt">
  5. <view class="uni-title">扫码结果:</view>
  6. <view class="uni-list" v-if="result">
  7. <view class="uni-cell">
  8. <view class="scan-result">
  9. {{result}}
  10. </view>
  11. </view>
  12. </view>
  13. <view class="uni-btn-v">
  14. <button type="primary" @click="scan">扫一扫</button>
  15. </view>
  16. </view>
  17. </view>
  18. </template>
  19. <script>
  20. import permision from "@/common/permission.js"
  21. export default {
  22. data() {
  23. return {
  24. title: 'scanCode',
  25. result: ''
  26. }
  27. },
  28. methods: {
  29. async scan() {
  30. // #ifdef APP-PLUS
  31. let status = await this.checkPermission();
  32. if (status !== 1) {
  33. return;
  34. }
  35. // #endif
  36. uni.scanCode({
  37. success: (res) => {
  38. this.result = res.result
  39. },
  40. fail: (err) => {
  41. // 需要注意的是小程序扫码不需要申请相机权限
  42. }
  43. });
  44. }
  45. // #ifdef APP-PLUS
  46. ,
  47. async checkPermission(code) {
  48. let status = permision.isIOS ? await permision.requestIOS('camera') :
  49. await permision.requestAndroid('android.permission.CAMERA');
  50. if (status === null || status === 1) {
  51. status = 1;
  52. } else {
  53. uni.showModal({
  54. content: "需要相机权限",
  55. confirmText: "设置",
  56. success: function(res) {
  57. if (res.confirm) {
  58. permision.gotoAppSetting();
  59. }
  60. }
  61. })
  62. }
  63. return status;
  64. }
  65. // #endif
  66. }
  67. }
  68. </script>
  69. <style>
  70. .scan-result {
  71. min-height: 50rpx;
  72. line-height: 50rpx;
  73. }
  74. </style>