|
@@ -20,19 +20,30 @@
|
|
|
disabled
|
|
|
type="text"
|
|
|
maxlength="15"
|
|
|
- v-model="item.share"
|
|
|
+ :value="item.share + `&vr=${defaultscenesCode}&lang=${$lang}`"
|
|
|
/>
|
|
|
</li>
|
|
|
<li>
|
|
|
<span>{{ work_qrCode }} </span>
|
|
|
-
|
|
|
- <img :src="item.qrCode + `?${Math.random()}` || $thumb" alt="" />
|
|
|
+ <!-- :src="currentQRcode || 'assets/svg/loading.svg'" -->
|
|
|
+ <div
|
|
|
+ class="qrcode"
|
|
|
+ :style="{
|
|
|
+ backgroundImage: `url(${
|
|
|
+ currentQRcode || require('@/assets/svg/loading.svg')
|
|
|
+ })`,
|
|
|
+ }"
|
|
|
+ />
|
|
|
</li>
|
|
|
</ul>
|
|
|
</div>
|
|
|
|
|
|
<div class="ui-message-footer footer-material">
|
|
|
- <button @click="downloadImg(item)" class="ui-button">
|
|
|
+ <button
|
|
|
+ @click="downloadImg(item)"
|
|
|
+ class="ui-button"
|
|
|
+ :class="currentQRcode.length === 0 ? 'disable' : ''"
|
|
|
+ >
|
|
|
{{ download_qrCode }}
|
|
|
</button>
|
|
|
<button
|
|
@@ -48,20 +59,9 @@
|
|
|
|
|
|
<script>
|
|
|
import Popup from "@/components/shared/popup";
|
|
|
+import { getQrCode } from "@/api";
|
|
|
import { i18n } from "@/lang";
|
|
|
|
|
|
-let dataUrlToBold = function (url) {
|
|
|
- let arr = url.split(","),
|
|
|
- mime = arr[0].match(/:(.*?);/)[1],
|
|
|
- bStr = atob(arr[1]),
|
|
|
- n = bStr.length,
|
|
|
- u8arr = new Uint8Array(n);
|
|
|
- while (n--) {
|
|
|
- u8arr[n] = bStr.charCodeAt(n);
|
|
|
- }
|
|
|
- return new Blob([u8arr], { type: mime });
|
|
|
-};
|
|
|
-
|
|
|
export default {
|
|
|
props: ["show", "item"],
|
|
|
components: {
|
|
@@ -74,8 +74,8 @@ export default {
|
|
|
share: i18n.t("material.works.share"),
|
|
|
download_qrCode: i18n.t("material.works.download_qrCode"),
|
|
|
copy_link: i18n.t("material.works.copy_link"),
|
|
|
-
|
|
|
key: "",
|
|
|
+ currentQRcode: "",
|
|
|
};
|
|
|
},
|
|
|
computed: {
|
|
@@ -89,37 +89,34 @@ export default {
|
|
|
}
|
|
|
},
|
|
|
},
|
|
|
+ watch: {
|
|
|
+ item: {
|
|
|
+ handler: function (val) {
|
|
|
+ this.currentQRcode = "";
|
|
|
+ if (val.share) {
|
|
|
+ const shareLink =
|
|
|
+ val.share + `&vr=${this.defaultscenesCode}&lang=${this.$lang}`;
|
|
|
+ console.log("当前分享", shareLink);
|
|
|
+ const llogo = val.logo || "";
|
|
|
+ getQrCode({ logo: llogo, text: shareLink }).then((res) => {
|
|
|
+ if (res.code === 0) {
|
|
|
+ this.currentQRcode = res.data.img;
|
|
|
+ }
|
|
|
+ });
|
|
|
+ }
|
|
|
+ },
|
|
|
+ },
|
|
|
+ },
|
|
|
mounted() {},
|
|
|
methods: {
|
|
|
downloadImg(workItem) {
|
|
|
- let val = workItem.qrCode;
|
|
|
- // var a = document.createElement("a");
|
|
|
- // a.download = 'qrcode';
|
|
|
- // a.href = 'https://4dkk.4dage.com/720yun_fd_manage/620/qrCode.jpg';
|
|
|
- // a.target
|
|
|
- // console.log(workItem,11222);
|
|
|
- // val 为传入的图片地址
|
|
|
- let _type_index = val.lastIndexOf(".");
|
|
|
- let _type = val.substr(_type_index + 1); //原始图片类型
|
|
|
- let image = new Image();
|
|
|
- image.setAttribute("crossOrigin", "anonymous"); //消除跨域
|
|
|
- image.src = val;
|
|
|
- image.onload = function () {
|
|
|
- //借助canvas实现 消除 图片地址会先直接窗口打开图片地址
|
|
|
- let canvas = document.createElement("canvas");
|
|
|
- canvas.width = image.width;
|
|
|
- canvas.height = image.height;
|
|
|
- let context = canvas.getContext("2d");
|
|
|
- context.drawImage(image, 0, 0, image.width, image.height);
|
|
|
- let url = canvas.toDataURL("image/" + _type);
|
|
|
- let blob = dataUrlToBold(url);
|
|
|
- let obj_url = URL.createObjectURL(blob); // 消除Chrome下文件太大 导致下载失败(网络失败)的问题
|
|
|
- let a = document.createElement("a");
|
|
|
- let event = new MouseEvent("click");
|
|
|
- a.download = workItem.name || "qrcode";
|
|
|
- a.href = obj_url;
|
|
|
- a.dispatchEvent(event);
|
|
|
- };
|
|
|
+ if (this.currentQRcode) {
|
|
|
+ var a = document.createElement("a"); //Create <a>
|
|
|
+ a.href = this.currentQRcode; //Image Base64 Goes here
|
|
|
+ const defaultTitle = this.$lang === "zh" ? "无标题" : "No title";
|
|
|
+ a.download = `${workItem.name || defaultTitle}.png`; //File name Here
|
|
|
+ a.click();
|
|
|
+ }
|
|
|
},
|
|
|
copy(text) {
|
|
|
var textArea = document.createElement("textarea");
|
|
@@ -179,10 +176,13 @@ export default {
|
|
|
text-align: right;
|
|
|
margin-right: 16px;
|
|
|
}
|
|
|
- > img {
|
|
|
+ > .qrcode {
|
|
|
width: 120px;
|
|
|
+ height: 120px;
|
|
|
border: 1px solid #ebedf0;
|
|
|
border-radius: 4px;
|
|
|
+ background-size: contain;
|
|
|
+ // background-image: url("~@/assets/svg/loading.svg");
|
|
|
}
|
|
|
.ui-input {
|
|
|
width: 362px;
|