QR-code.vue 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. <template>
  2. <div>
  3. <el-button type="primary" icon="iphone" @click="createQrCode"> 扫码上传</el-button>
  4. </div>
  5. <el-dialog v-model="dialogVisible" title="扫码上传" width="320px" :show-close="false" append-to-body :close-on-click-modal="false"
  6. draggable
  7. >
  8. <div class="m-2">
  9. <vue-qr :logoSrc="logoSrc"
  10. :size="291"
  11. :margin="0"
  12. :autoColor="true"
  13. :dotScale="1"
  14. :text="codeUrl"
  15. colorDark="green"
  16. colorLight="white"
  17. ref="qrcode"
  18. />
  19. </div>
  20. <template #footer>
  21. <div class="dialog-footer">
  22. <el-button @click="dialogVisible = false">取 消</el-button>
  23. <el-button type="primary" @click="onFinished">完成上传</el-button>
  24. </div>
  25. </template>
  26. </el-dialog>
  27. </template>
  28. <script setup>
  29. import logoSrc from '@/assets/logo.png'
  30. import vueQr from 'vue-qr/src/packages/vue-qr.vue'
  31. import { ref } from 'vue'
  32. import { useUserStore } from '@/pinia/modules/user'
  33. defineOptions({
  34. name: 'QRCodeUpload'
  35. })
  36. const emit = defineEmits(['on-success'])
  37. const props = defineProps({
  38. classId: {
  39. type: Number,
  40. default: 0
  41. }
  42. })
  43. const dialogVisible = ref(false)
  44. const userStore = useUserStore()
  45. const codeUrl = ref('')
  46. const createQrCode = () => {
  47. const local = window.location
  48. codeUrl.value = local.protocol + '//' + local.host + '/#/scanUpload?id=' + props.classId + '&token=' + userStore.token + '&t=' + Date.now()
  49. dialogVisible.value = true
  50. console.log(codeUrl.value)
  51. }
  52. const onFinished = () => {
  53. dialogVisible.value = false
  54. codeUrl.value = ''
  55. emit('on-success', '')
  56. }
  57. </script>