You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
274 lines
7.2 KiB
274 lines
7.2 KiB
5 months ago
|
// +----------------------------------------------------------------------
|
||
|
// | CRMEB [ CRMEB赋能开发者,助力企业发展 ]
|
||
|
// +----------------------------------------------------------------------
|
||
|
// | Copyright (c) 2016~2021 https://www.crmeb.com All rights reserved.
|
||
|
// +----------------------------------------------------------------------
|
||
|
// | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权
|
||
|
// +----------------------------------------------------------------------
|
||
|
// | Author: CRMEB Team <admin@crmeb.com>
|
||
|
// +----------------------------------------------------------------------
|
||
|
import {
|
||
|
imageBase64
|
||
|
} from "@/api/public";
|
||
|
import {
|
||
|
getProductCode, // 普通商品小程序code
|
||
|
} from "@/api/store.js";
|
||
|
import {
|
||
|
scombinationCode, // 拼团code
|
||
|
seckillCode // 秒杀
|
||
|
} from '@/api/activity.js';
|
||
|
import i18n from '../utils/lang.js';
|
||
|
let sysHeight = uni.getSystemInfoSync().statusBarHeight + 'px';
|
||
|
export const sharePoster = {
|
||
|
data() {
|
||
|
return {
|
||
|
//二维码参数
|
||
|
codeShow: false,
|
||
|
cid: '1',
|
||
|
codeVal: "", // 要生成的二维码值
|
||
|
size: 200, // 二维码大小
|
||
|
unit: 'upx', // 单位
|
||
|
background: '#FFF', // 背景色
|
||
|
foreground: '#000', // 前景色
|
||
|
pdground: '#000', // 角标色
|
||
|
codeIcon: '', // 二维码图标
|
||
|
iconsize: 40, // 二维码图标大小
|
||
|
lv: 3, // 二维码容错级别 , 一般不用设置,默认就行
|
||
|
onval: true, // val值变化时自动重新生成二维码
|
||
|
loadMake: true, // 组件加载完成后自动生成二维码
|
||
|
base64Show: 0,
|
||
|
shareQrcode: 0,
|
||
|
followCode: '',
|
||
|
selectSku: {},
|
||
|
currentPage: false,
|
||
|
sysHeight: sysHeight,
|
||
|
isShow: 0,
|
||
|
storeImageBase64: ''
|
||
|
};
|
||
|
},
|
||
|
methods: {
|
||
|
qrR(res) {
|
||
|
// #ifdef H5
|
||
|
if (!this.$wechat.isWeixin() || this.shareQrcode != '1') {
|
||
|
this.PromotionCode = res;
|
||
|
this.followCode = ''
|
||
|
}
|
||
|
// #endif
|
||
|
// #ifdef APP-PLUS
|
||
|
this.PromotionCode = res;
|
||
|
// #endif
|
||
|
},
|
||
|
getImageBase64() {
|
||
|
let that = this;
|
||
|
imageBase64(that.storeImage, this.storeInfo.wechat_code)
|
||
|
.then((res) => {
|
||
|
that.storeImageBase64 = res.data.image;
|
||
|
if (this.storeInfo.wechat_code) {
|
||
|
that.PromotionCode = res.data.code;
|
||
|
}
|
||
|
})
|
||
|
.catch(() => {});
|
||
|
},
|
||
|
initPoster(arr2) {
|
||
|
let that = this;
|
||
|
uni.getImageInfo({
|
||
|
src: that.PromotionCode,
|
||
|
success() {
|
||
|
if (arr2[2] == "") {
|
||
|
//海报二维码不存在则从新下载
|
||
|
that.downloadFilePromotionCode(function(
|
||
|
msgPromotionCode) {
|
||
|
arr2[2] = msgPromotionCode;
|
||
|
if (arr2[2] == "")
|
||
|
return that.$util.Tips({
|
||
|
title: i18n.t(
|
||
|
`海报二维码生成失败`
|
||
|
),
|
||
|
});
|
||
|
that.$util.PosterCanvas(
|
||
|
arr2,
|
||
|
that.storeInfo.store_name,
|
||
|
that.storeInfo.price,
|
||
|
that.storeInfo.ot_price,
|
||
|
function(tempFilePath) {
|
||
|
that.$set(that,
|
||
|
"posterImage",
|
||
|
tempFilePath);
|
||
|
that.$set(that,
|
||
|
"posterImageStatus",
|
||
|
true);
|
||
|
that.$set(that,
|
||
|
"canvasStatus",
|
||
|
false);
|
||
|
that.$set(that,
|
||
|
"actionSheetHidden",
|
||
|
!that
|
||
|
.actionSheetHidden
|
||
|
);
|
||
|
}
|
||
|
);
|
||
|
});
|
||
|
} else {
|
||
|
//生成推广海报
|
||
|
that.$nextTick(e => {
|
||
|
that.$util.PosterCanvas(
|
||
|
arr2,
|
||
|
that.storeInfo.store_name,
|
||
|
that.storeInfo.price,
|
||
|
that.storeInfo.ot_price,
|
||
|
function(tempFilePath) {
|
||
|
that.$set(that,
|
||
|
"posterImage",
|
||
|
tempFilePath);
|
||
|
that.$set(that,
|
||
|
"posterImageStatus",
|
||
|
true);
|
||
|
that.$set(that,
|
||
|
"canvasStatus",
|
||
|
false);
|
||
|
that.$set(that,
|
||
|
"actionSheetHidden",
|
||
|
!that
|
||
|
.actionSheetHidden
|
||
|
);
|
||
|
}
|
||
|
);
|
||
|
})
|
||
|
|
||
|
}
|
||
|
},
|
||
|
fail: function(res) {
|
||
|
// #ifdef H5
|
||
|
return that.$util.Tips({
|
||
|
title: res,
|
||
|
});
|
||
|
// #endif
|
||
|
// #ifdef MP
|
||
|
return that.$util.Tips({
|
||
|
title: i18n.t(`正在下载海报,请稍后再试`),
|
||
|
});
|
||
|
// #endif
|
||
|
},
|
||
|
});
|
||
|
},
|
||
|
/**
|
||
|
* 生成海报
|
||
|
*/
|
||
|
async goPoster(type) {
|
||
|
let that = this;
|
||
|
that.posters = false;
|
||
|
that.$set(that, "canvasStatus", true);
|
||
|
let arr2
|
||
|
// #ifdef MP
|
||
|
let met = type === 'scombination' ? scombinationCode(that.id) : type === 'seckill' ? seckillCode(
|
||
|
that
|
||
|
.id) : getProductCode(that.id)
|
||
|
met.then((res) => {
|
||
|
uni.downloadFile({
|
||
|
url: that.setDomain(res.data.code),
|
||
|
success: function(res) {
|
||
|
that.$set(that, "isDown", false);
|
||
|
that.$set(that, "PromotionCode", res.tempFilePath)
|
||
|
if (typeof successFn == "function")
|
||
|
successFn && successFn(res.tempFilePath);
|
||
|
arr2 = [that.posterbackgd, that.storeImage, that.PromotionCode];
|
||
|
that.initPoster(arr2)
|
||
|
},
|
||
|
fail: function() {
|
||
|
that.$set(that, "isDown", false);
|
||
|
that.$set(that, "PromotionCode", "");
|
||
|
},
|
||
|
});
|
||
|
})
|
||
|
.catch((err) => {
|
||
|
that.$set(that, "isDown", false);
|
||
|
that.$set(that, "PromotionCode", "");
|
||
|
return that.$util.Tips({
|
||
|
title: err,
|
||
|
});
|
||
|
});
|
||
|
// #endif
|
||
|
// #ifdef H5 || APP-PLUS
|
||
|
arr2 = [that.posterbackgd, that.storeImageBase64, that.PromotionCode];
|
||
|
if (!that.storeImageBase64)
|
||
|
return that.$util.Tips({
|
||
|
title: i18n.t(`正在下载海报,请稍后再试`),
|
||
|
});
|
||
|
that.initPoster(arr2)
|
||
|
// #endif
|
||
|
},
|
||
|
//替换安全域名
|
||
|
setDomain(url) {
|
||
|
url = url ? url.toString() : "";
|
||
|
//本地调试打开,生产请注销
|
||
|
if (url.indexOf("https://") > -1) return url;
|
||
|
else return url.replace("http://", "https://");
|
||
|
},
|
||
|
//获取海报产品图
|
||
|
downloadFilestoreImage() {
|
||
|
let that = this;
|
||
|
uni.downloadFile({
|
||
|
url: that.setDomain(that.storeInfo.image),
|
||
|
success: function(res) {
|
||
|
that.storeImage = res.tempFilePath;
|
||
|
that.storeImageBase64 = res.tempFilePath;
|
||
|
},
|
||
|
fail: function() {
|
||
|
return that.$util.Tips({
|
||
|
title: "",
|
||
|
});
|
||
|
that.storeImage = "";
|
||
|
},
|
||
|
});
|
||
|
},
|
||
|
/**
|
||
|
* 获取产品分销二维码
|
||
|
* @param function successFn 下载完成回调
|
||
|
*
|
||
|
*/
|
||
|
downloadFilePromotionCode(successFn) {
|
||
|
let that = this;
|
||
|
// #ifdef MP
|
||
|
getProductCode(that.id)
|
||
|
.then((res) => {
|
||
|
uni.downloadFile({
|
||
|
url: that.setDomain(res.data.code),
|
||
|
success: function(res) {
|
||
|
that.$set(that, "isDown", false);
|
||
|
that.$set(that, "PromotionCode", res.tempFilePath)
|
||
|
if (typeof successFn == "function")
|
||
|
successFn && successFn(res.tempFilePath);
|
||
|
},
|
||
|
fail: function() {
|
||
|
that.$set(that, "isDown", false);
|
||
|
that.$set(that, "PromotionCode", "");
|
||
|
},
|
||
|
});
|
||
|
})
|
||
|
.catch((err) => {
|
||
|
that.$set(that, "isDown", false);
|
||
|
that.$set(that, "PromotionCode", "");
|
||
|
return that.$util.Tips({
|
||
|
title: err,
|
||
|
});
|
||
|
});
|
||
|
// #endif
|
||
|
// #ifdef APP-PLUS
|
||
|
uni.downloadFile({
|
||
|
url: that.setDomain(that.PromotionCode),
|
||
|
success: function(res) {
|
||
|
that.$set(that, "isDown", false);
|
||
|
if (typeof successFn == "function")
|
||
|
successFn && successFn(res.tempFilePath);
|
||
|
else that.$set(that, "PromotionCode", res.tempFilePath);
|
||
|
},
|
||
|
fail: function() {
|
||
|
that.$set(that, "isDown", false);
|
||
|
that.$set(that, "PromotionCode", "");
|
||
|
},
|
||
|
});
|
||
|
// #endif
|
||
|
},
|
||
|
}
|
||
|
};
|