shareModal.vue 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158
  1. <template>
  2. <div class="shareModal">
  3. <div class="shareModal-content" ref="shareImg">
  4. <div class="shareImg">
  5. <img
  6. style="min-height: 15.5vh"
  7. crossOrigin="anonymous"
  8. :src="`https://4dscene.4dage.com/new4dkk/v2/images/_/common/data/images/bbhhbw.c24ca41.png`"
  9. alt=""
  10. />
  11. </div>
  12. <div class="shareinfo">
  13. <img
  14. class="watermark"
  15. src="@/assets/images/home/watermark.png"
  16. alt=""
  17. />
  18. <div class="text">
  19. <h2>花垣县双龙镇十八洞村</h2>
  20. <p>山峰叠嶂,云雾缭绕 溪流潺潺,古树参天</p>
  21. </div>
  22. <div class="shareCode">
  23. <span>扫码下载照片</span>
  24. <div style="margin-top: 7px">
  25. <vue-qr :text="baseUrl" margin="0" :size="68"></vue-qr>
  26. </div>
  27. </div>
  28. </div>
  29. <div class="butList">
  30. <img class="edit" src="@/assets/images/home/edit.png" alt="" />
  31. <img class="down" @click="downImg" src="@/assets/images/home/down.png" alt="" />
  32. <img
  33. class="clear"
  34. src="@/assets/images/home/clear.png"
  35. @click="$store.commit('setModalState', false)"
  36. alt=""
  37. />
  38. </div>
  39. </div>
  40. </div>
  41. </template>
  42. <script>
  43. import vueQr from "vue-qr";
  44. import html2canvas from "html2canvas"
  45. export default {
  46. name: "feedbackModal",
  47. data() {
  48. return {
  49. baseUrl: "http://localhost:8080/staticData",
  50. };
  51. },
  52. components: {
  53. vueQr,
  54. },
  55. methods: {
  56. downImg() {
  57. var opts = {
  58. logging: false, //日志开关,便于查看html2canvas的内部执行流程
  59. useCORS: true // 【重要】开启跨域配置
  60. };
  61. html2canvas(this.$refs.shareImg, opts).then(canvas => {
  62. // 转成图片,生成图片地址
  63. let imgUrl = canvas.toDataURL("image/png");
  64. // 创建隐藏的可下载链接
  65. var eleLink = document.createElement("a");
  66. eleLink.href = imgUrl; // 转换后的图片地址
  67. eleLink.download = "分享图片.png"; // 下载的文件名
  68. // 触发点击
  69. document.body.appendChild(eleLink);
  70. eleLink.click();
  71. // 然后移除
  72. document.body.removeChild(eleLink);
  73. });
  74. }
  75. },
  76. };
  77. </script>
  78. <style lang="less" scoped>
  79. .shareModal {
  80. position: absolute;
  81. left: 0;
  82. right: 0;
  83. top: 0;
  84. bottom: 0;
  85. background: rgba(10, 59, 64, 0.9);
  86. z-index: 10;
  87. &-content {
  88. padding: 35px 35px 25px 35px;
  89. width: 711.6px;
  90. min-height: 540px;
  91. position: absolute;
  92. top: 50%;
  93. left: 50%;
  94. transform: translate(-50%, -50%);
  95. background-image: url(@/assets/images/home/sharediv.png);
  96. background-size: 100%;
  97. background-repeat: no-repeat;
  98. // background: url(@/assets/images/home/sharediv.png) 100% 100% no-repeat;
  99. .shareImg {
  100. margin-bottom: 18px;
  101. img {
  102. height: 357px;
  103. width: 100%;
  104. object-fit: cover;
  105. }
  106. }
  107. .shareinfo {
  108. position: relative;
  109. display: flex;
  110. justify-content: space-between;
  111. text-align: center;
  112. .shareCode {
  113. padding: 5px 7px;
  114. background: rgba(255, 255, 255, 0.8);
  115. box-shadow: 0px 4px 8px 0px rgba(0, 0, 0, 0.2);
  116. border-radius: 10px 10px 10px 10px;
  117. font-weight: bold;
  118. font-size: 10px;
  119. color: rgba(143, 143, 143, 0.8);
  120. line-height: 12px;
  121. span {
  122. margin-bottom: 5px;
  123. }
  124. }
  125. .watermark {
  126. position: absolute;
  127. right: 10px;
  128. top: -130px;
  129. }
  130. .text {
  131. text-align: left;
  132. font-weight: 500;
  133. font-size: 16px;
  134. color: rgba(0, 0, 0, 0.6);
  135. line-height: 19px;
  136. letter-spacing: 3px;
  137. h2 {
  138. font-weight: 500;
  139. font-size: 20px;
  140. color: #535353;
  141. line-height: 23px;
  142. margin-bottom: 11px;
  143. }
  144. }
  145. }
  146. }
  147. .butList {
  148. display: flex;
  149. justify-content: space-between;
  150. width: 184px;
  151. margin: 31px auto;
  152. height: 30px;
  153. img {
  154. cursor: pointer;
  155. }
  156. }
  157. }
  158. </style>