615 lines
17 KiB
Vue
615 lines
17 KiB
Vue
|
|
<template>
|
|||
|
|
<view :style="colorStyle">
|
|||
|
|
<view class="px-20">
|
|||
|
|
<view class="w-full bg--w111-fff rd-24rpx p-24 mt-24"v-show="showCardOne">
|
|||
|
|
<view class='flex-y-center'>
|
|||
|
|
<text class="iconfont icon-icon_WeChat_1 fs-36"></text>
|
|||
|
|
<text class="fs-30 lh-42rpx fw-500 pl-8">方式一:商品卡片分享</text>
|
|||
|
|
</view>
|
|||
|
|
<view class="mt-24 w-full h-256 bg--w111-f9f9f9 rd-12rpx relative bg-cover" :style="[shareCardBg]">
|
|||
|
|
<view class="flex-y-center card-site">
|
|||
|
|
<image :src="mpData.logo_url" class="site-logo"></image>
|
|||
|
|
<text class="site-name line1">{{mpData.site_name}}</text>
|
|||
|
|
</view>
|
|||
|
|
<image :src="storeInfo.image" class="w-210 h-168 card-center-image" mode="aspectFill"></image>
|
|||
|
|
<!-- -->
|
|||
|
|
</view>
|
|||
|
|
<!-- #ifdef MP-WEIXIN -->
|
|||
|
|
<button class="w-full bg-gradient h-80 rd-40rpx flex-center fs-28 text--w111-fff mt-24" open-type="share" hover-class="none">分享商品卡片</button>
|
|||
|
|
<!-- #endif -->
|
|||
|
|
<!-- #ifdef APP || H5 -->
|
|||
|
|
<view class="w-full bg-gradient h-80 rd-40rpx flex-center fs-28 text--w111-fff mt-24" @tap="cardShare">分享商品卡片</view>
|
|||
|
|
<!-- #endif -->
|
|||
|
|
</view>
|
|||
|
|
<view class="w-full bg--w111-fff rd-24rpx p-24 mt-32">
|
|||
|
|
<view class="flex-between-center">
|
|||
|
|
<view class='flex-y-center'>
|
|||
|
|
<image src="../static/share_picture.png" class="w-36 h-36"></image>
|
|||
|
|
<text class="fs-30 lh-42rpx fw-500 pl-8">方式{{showCardOne ? '二' : '一'}}:商品图片分享</text>
|
|||
|
|
</view>
|
|||
|
|
<text class="iconfont fs-28 text--w111-666"
|
|||
|
|
v-if="storeInfo.slider_image.length > 1"
|
|||
|
|
:class="isGrid ? 'icon-a-ic_Imageandtextsorting' : 'icon-a-ic_Picturearrangement'"
|
|||
|
|
@tap="()=>{isGrid = !isGrid}"></text>
|
|||
|
|
</view>
|
|||
|
|
<view v-if="storeInfo.slider_image.length == 1">
|
|||
|
|
<view class="mt-24 flex-x-center" >
|
|||
|
|
<view class="load-box poster-img" v-show="!posterImage"></view>
|
|||
|
|
<image v-show="posterImage" :src="posterImage" @tap="proviewPhoto(0)" class="poster-img" mode="aspectFill"></image>
|
|||
|
|
</view>
|
|||
|
|
<view class="w-full flex-between-center">
|
|||
|
|
<!-- #ifdef MP-WEIXIN || APP-PLUS -->
|
|||
|
|
<view class="w-full bg-gradient h-80 rd-40rpx flex-center fw-500 fs-28 text--w111-fff mt-24" @tap="savePoster">保存商品海报图片</view>
|
|||
|
|
<!-- #endif -->
|
|||
|
|
<!-- #ifdef H5 -->
|
|||
|
|
<view class="w-full bg-gradient h-80 rd-40rpx flex-center fs-28 text--w111-fff mt-24" @tap="proviewPhoto(0)">保存分享</view>
|
|||
|
|
<!-- #endif -->
|
|||
|
|
</view>
|
|||
|
|
</view>
|
|||
|
|
<view v-else>
|
|||
|
|
<view class="mt-24" v-show="!isGrid">
|
|||
|
|
<scroll-view scroll-x="true" class="white-nowrap vertical-middle w-full" show-scrollbar="false">
|
|||
|
|
<view class="inline-block mr-16" v-show="!posterImage">
|
|||
|
|
<view class="load-box w-192 h-192 rd-8rpx"></view>
|
|||
|
|
</view>
|
|||
|
|
<view class="inline-block mr-16" v-for="(item,index) in productSwiper" :key="index">
|
|||
|
|
<view class="w-192 h-192 relative text--w111-fff" @tap="proviewPhoto(index)">
|
|||
|
|
<image :src="item.pic" class="w-full h-full rd-8rpx"
|
|||
|
|
:class="{'b-e': item.isQrcode}" mode="aspectFill"></image>
|
|||
|
|
<view class="qr-tag flex-center fs-18 text--w111-fff" v-if="posterImage && item.isQrcode">二维码推广图</view>
|
|||
|
|
<!-- #ifdef MP-WEIXIN || APP-PLUS -->
|
|||
|
|
<text class="iconfont fs-36 select-icon"
|
|||
|
|
:class="item.select ? 'icon-a-ic_CompleteSelect' : 'icon-ic_unselect'" @tap.stop="selectPic(item)"></text>
|
|||
|
|
<!-- #endif -->
|
|||
|
|
</view>
|
|||
|
|
</view>
|
|||
|
|
</scroll-view>
|
|||
|
|
</view>
|
|||
|
|
<view class="w-full grid-column-3 grid-gap-16rpx mt-24" v-show="isGrid">
|
|||
|
|
<view class="load-box w-full h-210 rd-12rpx" v-show="!posterImage"></view>
|
|||
|
|
<view class="w-full h-210 relative text--w111-fff"
|
|||
|
|
:class="{'b-e rd-12rpx': item.isQrcode}"
|
|||
|
|
v-for="(item,index) in productSwiper" :key="index"
|
|||
|
|
@tap="proviewPhoto(index)">
|
|||
|
|
<image :src="item.pic" class="w-full h-full rd-12rpx"
|
|||
|
|
mode="aspectFill"></image>
|
|||
|
|
<view class="qr-tag flex-center fs-18 text--w111-fff" v-if="posterImage && item.isQrcode">二维码推广图</view>
|
|||
|
|
<!-- #ifdef MP-WEIXIN || APP-PLUS -->
|
|||
|
|
<text class="iconfont fs-36 select-icon"
|
|||
|
|
:class="item.select ? 'icon-a-ic_CompleteSelect' : 'icon-ic_unselect'"
|
|||
|
|
@tap.stop="selectPic(item)"></text>
|
|||
|
|
<!-- #endif -->
|
|||
|
|
</view>
|
|||
|
|
</view>
|
|||
|
|
<view class="w-full flex-between-center">
|
|||
|
|
<!-- #ifdef MP-WEIXIN || APP-PLUS -->
|
|||
|
|
<view class="w-320 h-80 rd-40rpx flex-center fs-26 view-border fw-500 font-num mt-24" @tap="savePhoto('pic')">保存选中图片</view>
|
|||
|
|
<view class="w-320 bg-gradient h-80 rd-40rpx flex-center fw-500 fs-28 text--w111-fff mt-24" @tap="savePhoto('poster')">保存商品海报图片</view>
|
|||
|
|
<!-- #endif -->
|
|||
|
|
<!-- #ifdef H5 -->
|
|||
|
|
<view class="w-full bg-gradient h-80 rd-40rpx flex-center fs-28 text--w111-fff mt-24" @tap="proviewPhoto(0)">保存分享</view>
|
|||
|
|
<!-- #endif -->
|
|||
|
|
</view>
|
|||
|
|
</view>
|
|||
|
|
</view>
|
|||
|
|
<view class="w-full bg--w111-fff rd-24rpx p-24 mt-24">
|
|||
|
|
<view class='flex-y-center'>
|
|||
|
|
<image src="../static/share_text.png" class="w-36 h-36"></image>
|
|||
|
|
<text class="fs-30 lh-42rpx fw-500 pl-8">方式{{showCardOne ? '三' : '二'}}:文案分享</text>
|
|||
|
|
</view>
|
|||
|
|
<!-- #ifdef MP-WEIXIN -->
|
|||
|
|
<view class="mt-24 bg--w111-f9f9f9 rd-12rpx p-16 fs-26 lh-36rpx space-line">
|
|||
|
|
{{storeInfo.share_content || storeInfo.store_name}}
|
|||
|
|
<text><br/>{{shortLink}}</text>
|
|||
|
|
</view>
|
|||
|
|
<!-- #endif -->
|
|||
|
|
<!-- #ifdef H5 || APP-PLUS -->
|
|||
|
|
<view class="mt-24 bg--w111-f9f9f9 rd-12rpx p-16 fs-26 lh-36rpx space-line">
|
|||
|
|
{{storeInfo.share_content || storeInfo.store_name}}
|
|||
|
|
<text><br/>{{codeVal}}</text>
|
|||
|
|
</view>
|
|||
|
|
<!-- #endif -->
|
|||
|
|
<view class="w-full flex-between-center">
|
|||
|
|
<view class="w-320 h-80 rd-40rpx flex-center fs-26 view-border fw-500 font-num mt-24" @tap="copyShare(0)">仅复制链接</view>
|
|||
|
|
<view class="w-320 bg-gradient h-80 rd-40rpx flex-center fw-500 fs-28 text--w111-fff mt-24" @tap="copyShare(1)">复制文案及链接</view>
|
|||
|
|
</view>
|
|||
|
|
</view>
|
|||
|
|
<view class="pb-safe">
|
|||
|
|
<view class="h-80"></view>
|
|||
|
|
</view>
|
|||
|
|
</view>
|
|||
|
|
<!-- #ifdef H5 || APP-PLUS -->
|
|||
|
|
<zb-code ref="qrcode" onval loadMake :show="codeShow" cid="1" :val="codeVal" @result="qrR" />
|
|||
|
|
<!-- #endif -->
|
|||
|
|
<canvas class="canvas" canvas-id="myCanvas" v-if="canvasStatus"></canvas>
|
|||
|
|
</view>
|
|||
|
|
</template>
|
|||
|
|
|
|||
|
|
<script>
|
|||
|
|
import colors from "@/mixins/color";
|
|||
|
|
import {HTTP_REQUEST_URL} from '@/config/app';
|
|||
|
|
import { getProductDetail, getProductCode, getShortLinkApi } from "@/api/store.js";
|
|||
|
|
import { getUserInfo, userShare } from '@/api/user.js';
|
|||
|
|
import { toLogin } from '@/libs/login.js';
|
|||
|
|
import { mapGetters } from 'vuex';
|
|||
|
|
import zbCode from '@/components/zb-code/zb-code.vue'
|
|||
|
|
export default {
|
|||
|
|
data() {
|
|||
|
|
return {
|
|||
|
|
imgHost: HTTP_REQUEST_URL,
|
|||
|
|
id: 0,
|
|||
|
|
canvasStatus: false,
|
|||
|
|
//二维码参数
|
|||
|
|
codeShow: false,
|
|||
|
|
codeVal: "", // 要生成的二维码值
|
|||
|
|
shareQrcode: 0,
|
|||
|
|
PromotionCode: '',
|
|||
|
|
followCode: '',
|
|||
|
|
siteName: '', //商城名称
|
|||
|
|
posterTitle: '',
|
|||
|
|
themeColor: '#e93323',
|
|||
|
|
fontColor: '#e93323',
|
|||
|
|
posterImage: '', //海报路径
|
|||
|
|
storeImage: '', //海报产品图
|
|||
|
|
isDown: true,
|
|||
|
|
posterImageStatus: false,
|
|||
|
|
storeInfo:{
|
|||
|
|
slider_image: []
|
|||
|
|
},
|
|||
|
|
productSwiper: [],
|
|||
|
|
showCardOne: true,
|
|||
|
|
shortLink: '',
|
|||
|
|
isGrid: true,
|
|||
|
|
mpData:{}
|
|||
|
|
};
|
|||
|
|
},
|
|||
|
|
components: { zbCode },
|
|||
|
|
computed:{
|
|||
|
|
...mapGetters(['isLogin', 'uid']),
|
|||
|
|
shareCardBg(){
|
|||
|
|
return {
|
|||
|
|
backgroundImage: 'url('+this.imgHost+'/statics/images/promoter/promoter_group9.png'+')'
|
|||
|
|
}
|
|||
|
|
},
|
|||
|
|
},
|
|||
|
|
mixins: [colors],
|
|||
|
|
onLoad(options) {
|
|||
|
|
// #ifdef H5
|
|||
|
|
this.showCardOne = this.$wechat.isWeixin() ? true : false;
|
|||
|
|
// #endif
|
|||
|
|
if (!options.id) {
|
|||
|
|
return this.$util.Tips({
|
|||
|
|
title: '缺少参数无法查看商品'
|
|||
|
|
}, {
|
|||
|
|
tab: 3
|
|||
|
|
});
|
|||
|
|
}
|
|||
|
|
this.id = options.id || 0;
|
|||
|
|
this.getInfo();
|
|||
|
|
// #ifdef MP-WEIXIN
|
|||
|
|
this.mpData = uni.getStorageSync('BASIC_CONFIG');
|
|||
|
|
this.getShortLink();
|
|||
|
|
// #endif
|
|||
|
|
},
|
|||
|
|
onReady: function() {
|
|||
|
|
this.isNodes++;
|
|||
|
|
let uid = this.isLogin ? this.$store.state.app.uid : ''
|
|||
|
|
// #ifdef H5
|
|||
|
|
this.codeVal = window.location.origin + '/pages/goods_details/index?id=' + this.id +
|
|||
|
|
'&spid=' + uid
|
|||
|
|
// #endif
|
|||
|
|
// #ifdef APP-PLUS
|
|||
|
|
this.codeVal = HTTP_REQUEST_URL + '/pages/goods_details/index?id=' + this.id +
|
|||
|
|
'&spid=' + uid
|
|||
|
|
// #endif
|
|||
|
|
},
|
|||
|
|
methods:{
|
|||
|
|
async getInfo(){
|
|||
|
|
let res = await getProductDetail(this.id, {promotions_type: 0});
|
|||
|
|
let storeInfo = res.data.storeInfo;
|
|||
|
|
this.$set(this, 'storeInfo', storeInfo);
|
|||
|
|
this.$set(this, 'shareQrcode', res.data.share_qrcode);
|
|||
|
|
this.$set(this, 'siteName', res.data.site_name);
|
|||
|
|
this.$set(this, 'posterTitle', res.data.product_poster_title);
|
|||
|
|
this.productSwiper = storeInfo.slider_image.map(item=>{
|
|||
|
|
return {
|
|||
|
|
pic: item,
|
|||
|
|
select: false,
|
|||
|
|
isQrcode: false,
|
|||
|
|
}
|
|||
|
|
})
|
|||
|
|
setTimeout(()=>{
|
|||
|
|
this.goPoster();
|
|||
|
|
},500)
|
|||
|
|
},
|
|||
|
|
getShortLink(){
|
|||
|
|
getShortLinkApi(this.id).then(res=>{
|
|||
|
|
this.shortLink = res.data.code;
|
|||
|
|
}).catch(err=>{
|
|||
|
|
return this.$util.Tips({
|
|||
|
|
title: err
|
|||
|
|
});
|
|||
|
|
})
|
|||
|
|
},
|
|||
|
|
copyShare(type){
|
|||
|
|
let that = this;
|
|||
|
|
let shareText = this.storeInfo.share_content || this.storeInfo.store_name;
|
|||
|
|
let copyText = '';
|
|||
|
|
// #ifdef MP-WEIXIN
|
|||
|
|
copyText = type == 1 ? shareText + ' ' + this.shortLink : this.shortLink;
|
|||
|
|
// #endif
|
|||
|
|
// #ifdef APP-PLUS || H5
|
|||
|
|
copyText = type == 1 ? shareText + ' ' + this.codeVal : this.codeVal;
|
|||
|
|
// #endif
|
|||
|
|
uni.setClipboardData({
|
|||
|
|
data: copyText,
|
|||
|
|
success:()=>{
|
|||
|
|
uni.showToast({
|
|||
|
|
title: '复制成功,快去分享吧',
|
|||
|
|
icon: 'none'
|
|||
|
|
})
|
|||
|
|
}
|
|||
|
|
})
|
|||
|
|
},
|
|||
|
|
qrR(res) {
|
|||
|
|
// #ifdef H5
|
|||
|
|
if (!this.$wechat.isWeixin() || this.shareQrcode != '1') {
|
|||
|
|
this.PromotionCode = res;
|
|||
|
|
this.followCode = ''
|
|||
|
|
}
|
|||
|
|
// #endif
|
|||
|
|
// #ifdef APP-PLUS
|
|||
|
|
this.PromotionCode = res;
|
|||
|
|
// #endif
|
|||
|
|
},
|
|||
|
|
//替换安全域名
|
|||
|
|
setDomain: function(url) {
|
|||
|
|
url = url ? url.toString() : '';
|
|||
|
|
//本地调试打开,生产请注销
|
|||
|
|
if (url.indexOf('https://') > -1) return url;
|
|||
|
|
else return url.replace('http://', 'https://');
|
|||
|
|
},
|
|||
|
|
//图片转符合安全域名路径
|
|||
|
|
downloadFileImage(url) {
|
|||
|
|
url = this.setDomain(url)
|
|||
|
|
return new Promise((resolve, reject) => {
|
|||
|
|
let that = this;
|
|||
|
|
uni.downloadFile({
|
|||
|
|
url: url,
|
|||
|
|
success: function(res) {
|
|||
|
|
resolve(res.tempFilePath);
|
|||
|
|
},
|
|||
|
|
fail: function(err) {
|
|||
|
|
console.error(err.errMsg);
|
|||
|
|
}
|
|||
|
|
});
|
|||
|
|
})
|
|||
|
|
},
|
|||
|
|
async goPoster() {
|
|||
|
|
let that = this;
|
|||
|
|
let storeImage = await this.downloadFileImage(this.storeInfo.image);
|
|||
|
|
let posterbackgd = await this.downloadFileImage(this.imgHost + '/statics/images/product/posterbackgd.png');
|
|||
|
|
// #ifdef MP-WEIXIN
|
|||
|
|
// 小程序端获取小程序码
|
|||
|
|
let res = await getProductCode(that.id);
|
|||
|
|
if(!res.data.code){
|
|||
|
|
return that.$util.Tips({
|
|||
|
|
title: '小程序二维码需要发布正式版后才能获取到'
|
|||
|
|
});
|
|||
|
|
}
|
|||
|
|
let PromotionCode = await this.downloadFileImage(res.data.code)
|
|||
|
|
// #endif
|
|||
|
|
// #ifdef H5
|
|||
|
|
let PromotionCode = '';
|
|||
|
|
if(this.$wechat.isWeixin()){
|
|||
|
|
// 公众号端获取公众号二维码
|
|||
|
|
let res = await getProductCode(that.id);
|
|||
|
|
PromotionCode = await this.downloadFileImage(res.data.code)
|
|||
|
|
}else{
|
|||
|
|
// h5端获取本地生成的二维码
|
|||
|
|
PromotionCode = this.PromotionCode;
|
|||
|
|
}
|
|||
|
|
// #endif
|
|||
|
|
// #ifdef APP-PLUS
|
|||
|
|
let PromotionCode = this.PromotionCode;
|
|||
|
|
// #endif
|
|||
|
|
that.$set(that, 'canvasStatus', true);
|
|||
|
|
|
|||
|
|
let arr2 = [posterbackgd, storeImage, PromotionCode];
|
|||
|
|
that.$nextTick(function() {
|
|||
|
|
setTimeout(()=>{
|
|||
|
|
that.$util.PosterCanvas(that.fontColor, that.themeColor, that.siteName,arr2,
|
|||
|
|
that.storeInfo.store_name,
|
|||
|
|
that.storeInfo.price,
|
|||
|
|
that.storeInfo.ot_price,
|
|||
|
|
that.posterTitle,
|
|||
|
|
function(tempFilePath) {
|
|||
|
|
that.$set(that, 'posterImage', tempFilePath);
|
|||
|
|
that.$set(that, 'posterImageStatus', true);
|
|||
|
|
that.$set(that, 'canvasStatus', false);
|
|||
|
|
that.productSwiper.unshift({
|
|||
|
|
pic:tempFilePath,
|
|||
|
|
select: false,
|
|||
|
|
isQrcode:true
|
|||
|
|
})
|
|||
|
|
});
|
|||
|
|
},1000)
|
|||
|
|
})
|
|||
|
|
},
|
|||
|
|
cardShare(){
|
|||
|
|
// #ifdef H5
|
|||
|
|
this.ShareInfo();
|
|||
|
|
uni.showToast({
|
|||
|
|
title: '请点击右上角三个点进行分享',
|
|||
|
|
icon: 'none'
|
|||
|
|
})
|
|||
|
|
// #endif
|
|||
|
|
// #ifdef APP-PLUS
|
|||
|
|
this.appShare();
|
|||
|
|
// #endif
|
|||
|
|
},
|
|||
|
|
//#ifdef H5
|
|||
|
|
ShareInfo() {
|
|||
|
|
let data = this.storeInfo;
|
|||
|
|
if (this.$wechat.isWeixin()) {
|
|||
|
|
let configAppMessage = {
|
|||
|
|
desc: data.store_info,
|
|||
|
|
title: data.store_name,
|
|||
|
|
link: '/pages/goods_details/index?id=' + this.id + '&spid=' + this.uid,
|
|||
|
|
imgUrl: data.image
|
|||
|
|
};
|
|||
|
|
this.$wechat.wechatEvevt([
|
|||
|
|
'updateAppMessageShareData',
|
|||
|
|
'updateTimelineShareData',
|
|||
|
|
'onMenuShareAppMessage',
|
|||
|
|
'onMenuShareTimeline'
|
|||
|
|
], configAppMessage).then(res => {}).catch(err => {});
|
|||
|
|
}
|
|||
|
|
},
|
|||
|
|
//#endif
|
|||
|
|
appShare() {
|
|||
|
|
let that = this;
|
|||
|
|
uni.share({
|
|||
|
|
provider: "weixin",
|
|||
|
|
scene: 'WXSceneSession',
|
|||
|
|
type: 0,
|
|||
|
|
href: `${HTTP_REQUEST_URL}/pages/goods_details/index?id=${that.id}&spid=${that.uid}`,
|
|||
|
|
title: that.storeInfo.store_name,
|
|||
|
|
summary: that.storeInfo.store_info,
|
|||
|
|
imageUrl: that.storeInfo.small_image,
|
|||
|
|
success: function(res) {
|
|||
|
|
|
|||
|
|
},
|
|||
|
|
fail: function(err) {
|
|||
|
|
uni.showToast({
|
|||
|
|
title: '分享失败',
|
|||
|
|
icon: 'none',
|
|||
|
|
duration: 2000
|
|||
|
|
})
|
|||
|
|
}
|
|||
|
|
});
|
|||
|
|
},
|
|||
|
|
selectPic(item){
|
|||
|
|
item.select = !item.select;
|
|||
|
|
},
|
|||
|
|
savePhoto(type){
|
|||
|
|
// #ifdef MP-WEIXIN
|
|||
|
|
let that = this;
|
|||
|
|
uni.getSetting({
|
|||
|
|
success(res){
|
|||
|
|
if (!res.authSetting['scope.writePhotosAlbum']) {
|
|||
|
|
uni.authorize({
|
|||
|
|
scope: 'scope.writePhotosAlbum',
|
|||
|
|
success() {
|
|||
|
|
if(type == 'poster'){
|
|||
|
|
that.savePoster()
|
|||
|
|
}else{
|
|||
|
|
that.mpSave();
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
});
|
|||
|
|
}else{
|
|||
|
|
if(type == 'poster'){
|
|||
|
|
that.savePoster()
|
|||
|
|
}else{
|
|||
|
|
that.mpSave();
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
})
|
|||
|
|
// #endif
|
|||
|
|
// #ifdef APP-PLUS
|
|||
|
|
if(type == 'poster'){
|
|||
|
|
this.savePoster()
|
|||
|
|
}else{
|
|||
|
|
this.mpSave();
|
|||
|
|
}
|
|||
|
|
// #endif
|
|||
|
|
},
|
|||
|
|
mpSave(){
|
|||
|
|
let that = this;
|
|||
|
|
let arr = this.productSwiper.filter(val => val.select);
|
|||
|
|
let picLength = arr.length; // 要下载的总条数
|
|||
|
|
let index = 0;
|
|||
|
|
uni.showLoading({
|
|||
|
|
title: '图片下载中',
|
|||
|
|
mask: true
|
|||
|
|
});
|
|||
|
|
for (let i = 0; i < arr.length; i++) {
|
|||
|
|
if(arr[i].isQrcode){
|
|||
|
|
this.savePoster();
|
|||
|
|
}else{
|
|||
|
|
uni.downloadFile({
|
|||
|
|
url: arr[i].pic,
|
|||
|
|
success: function(res) {
|
|||
|
|
var temp = res.tempFilePath
|
|||
|
|
uni.saveImageToPhotosAlbum({
|
|||
|
|
filePath: temp,
|
|||
|
|
success(res1) {
|
|||
|
|
index++;
|
|||
|
|
// 全部下载完后触发
|
|||
|
|
if (index == picLength) {
|
|||
|
|
uni.hideLoading()
|
|||
|
|
that.$util.Tips({
|
|||
|
|
title: '保存成功',
|
|||
|
|
icon: 'success'
|
|||
|
|
});
|
|||
|
|
}
|
|||
|
|
},
|
|||
|
|
fail: function(res) {
|
|||
|
|
uni.hideLoading()
|
|||
|
|
that.$util.Tips({
|
|||
|
|
title: '保存失败'
|
|||
|
|
});
|
|||
|
|
}
|
|||
|
|
})
|
|||
|
|
},
|
|||
|
|
fail(err) {
|
|||
|
|
uni.hideLoading()
|
|||
|
|
}
|
|||
|
|
})
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
},
|
|||
|
|
savePoster(){
|
|||
|
|
let that = this;
|
|||
|
|
uni.saveImageToPhotosAlbum({
|
|||
|
|
filePath: that.posterImage,
|
|||
|
|
success(res1) {
|
|||
|
|
that.$util.Tips({
|
|||
|
|
title: '保存成功',
|
|||
|
|
icon: 'success'
|
|||
|
|
});
|
|||
|
|
},
|
|||
|
|
fail: function(res) {
|
|||
|
|
that.$util.Tips({
|
|||
|
|
title: '保存失败'
|
|||
|
|
});
|
|||
|
|
}
|
|||
|
|
})
|
|||
|
|
},
|
|||
|
|
proviewPhoto(index){
|
|||
|
|
let list = this.productSwiper.map(item=> item.pic);
|
|||
|
|
uni.previewImage({
|
|||
|
|
current: index,
|
|||
|
|
urls: list
|
|||
|
|
});
|
|||
|
|
},
|
|||
|
|
},
|
|||
|
|
// #ifdef MP
|
|||
|
|
onShareAppMessage: function() {
|
|||
|
|
let that = this;
|
|||
|
|
userShare();
|
|||
|
|
return {
|
|||
|
|
title: that.storeInfo.store_name || '',
|
|||
|
|
imageUrl: that.storeInfo.image || '',
|
|||
|
|
path: '/pages/goods_details/index?id=' + that.id + '&spid=' + that.uid
|
|||
|
|
};
|
|||
|
|
},
|
|||
|
|
onShareTimeline() {
|
|||
|
|
let that = this;
|
|||
|
|
userShare();
|
|||
|
|
return {
|
|||
|
|
title: that.storeInfo.store_name || '',
|
|||
|
|
imageUrl: that.storeInfo.image || '',
|
|||
|
|
path: '/pages/goods_details/index?id=' + that.id + '&spid=' + that.uid
|
|||
|
|
};
|
|||
|
|
},
|
|||
|
|
// #endif
|
|||
|
|
}
|
|||
|
|
</script>
|
|||
|
|
|
|||
|
|
<style lang="scss">
|
|||
|
|
.icon-icon_WeChat_1{
|
|||
|
|
color: rgba(11, 190, 36, 1);
|
|||
|
|
}
|
|||
|
|
.h-256{
|
|||
|
|
height: 256rpx;
|
|||
|
|
}
|
|||
|
|
.bg-cover{
|
|||
|
|
background-size: cover;
|
|||
|
|
}
|
|||
|
|
.card-site{
|
|||
|
|
position: absolute;
|
|||
|
|
left: 50%;
|
|||
|
|
top: 24rpx;
|
|||
|
|
transform: translateX(-50%);
|
|||
|
|
width: 210rpx;
|
|||
|
|
.site-logo{
|
|||
|
|
width: 18rpx;
|
|||
|
|
height: 18rpx;
|
|||
|
|
border-radius: 50%;
|
|||
|
|
}
|
|||
|
|
.site-name{
|
|||
|
|
width: 152rpx;
|
|||
|
|
font-size: 18rpx;
|
|||
|
|
color: #727272;
|
|||
|
|
line-height: 16rpx;
|
|||
|
|
padding-left: 4rpx;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
.card-center-image{
|
|||
|
|
position: absolute;
|
|||
|
|
left: 50%;
|
|||
|
|
top: 48rpx;
|
|||
|
|
transform: translateX(-50%);
|
|||
|
|
}
|
|||
|
|
.poster-img{
|
|||
|
|
width: 254rpx;
|
|||
|
|
height: 438rpx;
|
|||
|
|
border-radius: 12rpx;
|
|||
|
|
border: 1rpx solid #EEEEEE;
|
|||
|
|
}
|
|||
|
|
.load-box{
|
|||
|
|
animation: looming-gray 1s infinite linear;
|
|||
|
|
background-color: #e3e3e3;
|
|||
|
|
}
|
|||
|
|
.view-border{
|
|||
|
|
border: 1px solid var(--view-theme);
|
|||
|
|
}
|
|||
|
|
.icon-a-ic_CompleteSelect{
|
|||
|
|
color: var(--view-theme);
|
|||
|
|
}
|
|||
|
|
.space-line{
|
|||
|
|
white-space: pre-line
|
|||
|
|
}
|
|||
|
|
.select-icon{
|
|||
|
|
position: absolute;
|
|||
|
|
top: 12rpx;
|
|||
|
|
right: 12rpx;
|
|||
|
|
}
|
|||
|
|
.b-e{
|
|||
|
|
border: 1rpx solid #EEEEEE;
|
|||
|
|
}
|
|||
|
|
.qr-tag{
|
|||
|
|
position: absolute;
|
|||
|
|
bottom: 0;
|
|||
|
|
left: 0;
|
|||
|
|
width: 100%;
|
|||
|
|
height: 40rpx;
|
|||
|
|
border-radius: 0 0 8rpx 8rpx;
|
|||
|
|
background-color: rgba(0, 0, 0, 0.5);
|
|||
|
|
}
|
|||
|
|
.canvas {
|
|||
|
|
position: fixed;
|
|||
|
|
top: -1300px;
|
|||
|
|
left: 0;
|
|||
|
|
width: 750px;
|
|||
|
|
height: 1300px;
|
|||
|
|
}
|
|||
|
|
@keyframes looming-gray {
|
|||
|
|
0% {
|
|||
|
|
background-color: #e3e3e3aa;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
50% {
|
|||
|
|
background-color: #e3e3e3;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
100% {
|
|||
|
|
background-color: #e3e3e3aa;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
</style>
|