qrcode.vue 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129
  1. <script setup lang="ts">
  2. import { ref, unref } from "vue";
  3. import { message } from "@/utils/message";
  4. import ReQrcode from "@/components/ReQrcode";
  5. defineOptions({
  6. name: "QrCode"
  7. });
  8. const qrcodeText = "vue-pure-admin";
  9. const asyncTitle = ref("");
  10. setTimeout(() => {
  11. asyncTitle.value = unref(qrcodeText);
  12. }, 3000);
  13. const codeClick = () => {
  14. message("点击事件", { type: "info" });
  15. };
  16. const disabledClick = () => {
  17. message("失效", { type: "info" });
  18. };
  19. </script>
  20. <template>
  21. <div>
  22. <el-card shadow="never">
  23. <template #header>
  24. <div class="font-medium">
  25. 二维码(基于
  26. <el-link
  27. href="https://github.com/soldair/node-qrcode"
  28. target="_blank"
  29. style="margin: 0 5px 4px 0; font-size: 16px"
  30. >
  31. qrcode
  32. </el-link>
  33. 生成)
  34. </div>
  35. <el-link
  36. class="mt-2"
  37. href="https://github.com/pure-admin/vue-pure-admin/blob/main/src/views/able/qrcode.vue"
  38. target="_blank"
  39. >
  40. 代码位置 src/views/able/qrcode.vue
  41. </el-link>
  42. </template>
  43. <el-row :gutter="20" justify="space-between">
  44. <el-col :xl="6" :lg="6" :md="12" :sm="24" :xs="24">
  45. <el-card shadow="hover" class="mb-[10px] text-center">
  46. <div class="font-bold">基础用法</div>
  47. <ReQrcode :text="qrcodeText" />
  48. </el-card>
  49. </el-col>
  50. <el-col :xl="6" :lg="6" :md="12" :sm="24" :xs="24">
  51. <el-card shadow="hover" class="mb-[10px] text-center">
  52. <div class="font-bold">img标签</div>
  53. <ReQrcode :text="qrcodeText" tag="img" />
  54. </el-card>
  55. </el-col>
  56. <el-col :xl="6" :lg="6" :md="12" :sm="24" :xs="24">
  57. <el-card shadow="hover" class="mb-[10px] text-center">
  58. <div class="font-bold">样式配置</div>
  59. <ReQrcode
  60. :text="qrcodeText"
  61. :options="{
  62. color: {
  63. dark: '#55D187',
  64. light: '#2d8cf0'
  65. }
  66. }"
  67. />
  68. </el-card>
  69. </el-col>
  70. <el-col :xl="6" :lg="6" :md="12" :sm="24" :xs="24">
  71. <el-card shadow="hover" class="mb-[10px] text-center">
  72. <div class="font-bold">点击事件</div>
  73. <ReQrcode :text="qrcodeText" @click="codeClick" />
  74. </el-card>
  75. </el-col>
  76. <el-col :xl="6" :lg="6" :md="12" :sm="24" :xs="24">
  77. <el-card shadow="hover" class="mb-[10px] text-center">
  78. <div class="font-bold">异步内容</div>
  79. <ReQrcode :text="asyncTitle" />
  80. </el-card>
  81. </el-col>
  82. <el-col :xl="6" :lg="6" :md="12" :sm="24" :xs="24">
  83. <el-card shadow="hover" class="mb-[10px] text-center">
  84. <div class="font-bold">失效</div>
  85. <ReQrcode
  86. :text="qrcodeText"
  87. disabled
  88. @disabled-click="disabledClick"
  89. />
  90. </el-card>
  91. </el-col>
  92. <el-col :xl="6" :lg="6" :md="12" :sm="24" :xs="24">
  93. <el-card shadow="hover" class="mb-[10px] text-center">
  94. <div class="font-bold">logo配置</div>
  95. <ReQrcode
  96. :text="qrcodeText"
  97. logo="https://avatars.githubusercontent.com/u/44761321?v=4"
  98. />
  99. </el-card>
  100. </el-col>
  101. <el-col :xl="6" :lg="6" :md="12" :sm="24" :xs="24">
  102. <el-card shadow="hover" class="mb-[10px] text-center">
  103. <div class="font-bold">logo样式</div>
  104. <ReQrcode
  105. :text="qrcodeText"
  106. :logo="{
  107. src: 'https://avatars.githubusercontent.com/u/44761321?v=4',
  108. logoSize: 0.2,
  109. borderSize: 0.05,
  110. borderRadius: 50,
  111. bgColor: 'blue'
  112. }"
  113. />
  114. </el-card>
  115. </el-col>
  116. <el-col :xl="6" :lg="6" :md="12" :sm="24" :xs="24">
  117. <el-card shadow="hover" class="mb-[10px] text-center">
  118. <div class="font-bold">大小配置</div>
  119. <ReQrcode :text="qrcodeText" :width="100" />
  120. </el-card>
  121. </el-col>
  122. </el-row>
  123. </el-card>
  124. </div>
  125. </template>