share.vue 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. <template>
  2. <div>
  3. <el-button type="primary" icon="Share" @click="show = true"
  4. >分 享</el-button
  5. >
  6. <el-dialog v-model="show" title="分享" width="450px" :show-close="false">
  7. <div>
  8. <el-empty
  9. v-if="qrCodeText.length === 0"
  10. description="正在生成二维码,请稍后..."
  11. />
  12. <div v-else class="flex flex-center flex-col">
  13. <vue-qr
  14. :currentLevel="3"
  15. :logoCornerRadius="4"
  16. :logoScale="0.25"
  17. :logoSrc="logoSrc"
  18. :text="qrCodeText"
  19. size="360"
  20. />
  21. <el-input disabled v-model="qrCodeText" class="mt-20">
  22. <template #append>
  23. <el-button>复 制</el-button>
  24. </template>
  25. </el-input>
  26. </div>
  27. </div>
  28. </el-dialog>
  29. </div>
  30. </template>
  31. <script>
  32. import VueQr from 'vue-qr/src/packages/vue-qr.vue'
  33. import website from '@/config/website.js'
  34. export default {
  35. components: {
  36. VueQr
  37. },
  38. props: {
  39. row: {
  40. type: Object,
  41. default: null
  42. }
  43. },
  44. watch: {
  45. show: {
  46. handler(val) {
  47. if (val) {
  48. this.getQrCode()
  49. }
  50. },
  51. immediate: true
  52. }
  53. },
  54. data() {
  55. return {
  56. show: false,
  57. url: 'http://localhost:5173/resource?id=64b79edd8ce2593744685a3e&type=0',
  58. logoSrc: new URL('@/assets/img/logo.png', import.meta.url).href,
  59. qrCodeText: ''
  60. }
  61. },
  62. methods: {
  63. getQrCode() {
  64. this.$api.resource.shareFiles({ ids: this.row.id }).then(res => {
  65. if (res.code === 200) {
  66. this.qrCodeText = website.baseUrl + 'resource?shareId=' + res.data
  67. } else {
  68. this.$message.error(res.msg)
  69. }
  70. })
  71. }
  72. }
  73. }
  74. </script>
  75. <style lang="scss" scoped></style>