|
|
|
@ -2,9 +2,7 @@
|
|
|
|
|
<view :class="productConClass"> |
|
|
|
|
<view v-if="storeInfo.id"> |
|
|
|
|
<!-- 轮播图 --> |
|
|
|
|
<product-con-swiper |
|
|
|
|
:img-urls="storeInfo.sliderImageArr" |
|
|
|
|
></product-con-swiper> |
|
|
|
|
<product-con-swiper :img-urls="storeInfo.sliderImageArr"></product-con-swiper> |
|
|
|
|
|
|
|
|
|
<!-- 商品信息描述 --> |
|
|
|
|
<view class="wrapper"> |
|
|
|
@ -14,21 +12,11 @@
|
|
|
|
|
<text class="num">{{ |
|
|
|
|
attr.productSelect.price || storeInfo.price |
|
|
|
|
}}</text> |
|
|
|
|
<text |
|
|
|
|
class="vip-money" |
|
|
|
|
v-if="storeInfo.vipPrice && storeInfo.vipPrice > 0" |
|
|
|
|
>¥{{ attr.productSelect.vipPrice || storeInfo.vipPrice }}</text |
|
|
|
|
> |
|
|
|
|
<image |
|
|
|
|
src="@/static/images/vip.png" |
|
|
|
|
class="image" |
|
|
|
|
v-if="storeInfo.vipPrice && storeInfo.vipPrice > 0" |
|
|
|
|
/> |
|
|
|
|
<text class="vip-money" |
|
|
|
|
v-if="storeInfo.vipPrice && storeInfo.vipPrice > 0">¥{{ attr.productSelect.vipPrice || storeInfo.vipPrice }}</text> |
|
|
|
|
<image src="@/static/images/vip.png" class="image" v-if="storeInfo.vipPrice && storeInfo.vipPrice > 0" /> |
|
|
|
|
</view> |
|
|
|
|
<view |
|
|
|
|
class="iconfont icon-fenxiang" |
|
|
|
|
@click="listenerActionSheet" |
|
|
|
|
></view> |
|
|
|
|
<view class="iconfont icon-fenxiang" @click="listenerActionSheet"></view> |
|
|
|
|
</view> |
|
|
|
|
<view class="introduce">{{ storeInfo.storeName }}</view> |
|
|
|
|
<view class="label acea-row row-between-wrapper"> |
|
|
|
@ -36,19 +24,11 @@
|
|
|
|
|
<text>库存:{{ storeInfo.stock }}{{ storeInfo.unitName }}</text> |
|
|
|
|
<text>销量:{{ storeInfo.sales }}{{ storeInfo.unitName }}</text> |
|
|
|
|
</view> |
|
|
|
|
<view |
|
|
|
|
class="coupon acea-row row-between-wrapper" |
|
|
|
|
@click="couponTap" |
|
|
|
|
v-if="couponList.length" |
|
|
|
|
> |
|
|
|
|
<view class="coupon acea-row row-between-wrapper" @click="couponTap" v-if="couponList.length"> |
|
|
|
|
<text class="hide line1"> |
|
|
|
|
<text>优惠券:</text> |
|
|
|
|
<text |
|
|
|
|
class="activity" |
|
|
|
|
v-for="(item, couponListEq) in couponList" |
|
|
|
|
:key="couponListEq" |
|
|
|
|
>满{{ item.useMinPrice }}减{{ item.couponPrice }}</text |
|
|
|
|
> |
|
|
|
|
<text class="activity" v-for="(item, couponListEq) in couponList" |
|
|
|
|
:key="couponListEq">满{{ item.useMinPrice }}减{{ item.couponPrice }}</text> |
|
|
|
|
</text> |
|
|
|
|
<view class="iconfont icon-jiantou"></view> |
|
|
|
|
</view> |
|
|
|
@ -63,10 +43,7 @@
|
|
|
|
|
</div> |
|
|
|
|
|
|
|
|
|
<!-- 规格 --> |
|
|
|
|
<view |
|
|
|
|
class="attribute acea-row row-between-wrapper" |
|
|
|
|
@click="selecAttrTap" |
|
|
|
|
> |
|
|
|
|
<view class="attribute acea-row row-between-wrapper" @click="selecAttrTap"> |
|
|
|
|
<view> |
|
|
|
|
<text>{{ attrTxt }}:</text> |
|
|
|
|
<text class="atterTxt">{{ attrValue }}</text> |
|
|
|
@ -90,22 +67,14 @@
|
|
|
|
|
</view> |
|
|
|
|
<view class="text"> |
|
|
|
|
<view class="name line1">{{ systemStore.name }}</view> |
|
|
|
|
<view |
|
|
|
|
class="address acea-row row-middle" |
|
|
|
|
@click="showChang(systemStore)" |
|
|
|
|
> |
|
|
|
|
<view class="address acea-row row-middle" @click="showChang(systemStore)"> |
|
|
|
|
<text class="addressTxt">{{ systemStore.address }}</text> |
|
|
|
|
<text class="iconfont icon-youjian"></text> |
|
|
|
|
</view> |
|
|
|
|
</view> |
|
|
|
|
<view class="addressBox"> |
|
|
|
|
<a |
|
|
|
|
class="iconfont icon-dadianhua01 font-color-red phone" |
|
|
|
|
@click="telPhone(systemStore.phone)" |
|
|
|
|
></a> |
|
|
|
|
<view class="addressTxt corlor-yshop" |
|
|
|
|
>距离{{ systemStore.distance }}千米</view |
|
|
|
|
> |
|
|
|
|
<a class="iconfont icon-dadianhua01 font-color-red phone" @click="telPhone(systemStore.phone)"></a> |
|
|
|
|
<view class="addressTxt corlor-yshop">距离{{ systemStore.distance }}千米</view> |
|
|
|
|
</view> |
|
|
|
|
</view> |
|
|
|
|
</view> |
|
|
|
@ -181,11 +150,7 @@
|
|
|
|
|
<view class="iconfont icon-shoucang"></view> |
|
|
|
|
<text>收藏</text> |
|
|
|
|
</view> |
|
|
|
|
<view |
|
|
|
|
@click="goShoppingCart()" |
|
|
|
|
v-if="animated" |
|
|
|
|
class="item animated bounceIn" |
|
|
|
|
> |
|
|
|
|
<view @click="goShoppingCart()" v-if="animated" class="item animated bounceIn"> |
|
|
|
|
<view class="iconfont icon-gouwuche1"> |
|
|
|
|
<text class="num bg-color-red" v-if="CartCount > 0">{{ |
|
|
|
|
CartCount |
|
|
|
@ -214,23 +179,12 @@
|
|
|
|
|
<!-- 优惠券 --> |
|
|
|
|
<CouponPop v-on:changeFun="changeFun" :coupon="coupon"></CouponPop> |
|
|
|
|
<!-- 商品规格弹窗 --> |
|
|
|
|
<ProductWindow |
|
|
|
|
v-on:changeFun="changeFun" |
|
|
|
|
:attr="attr" |
|
|
|
|
:cartNum="cart_num" |
|
|
|
|
></ProductWindow> |
|
|
|
|
<ProductWindow v-on:changeFun="changeFun" :attr="attr" :cartNum="cart_num"></ProductWindow> |
|
|
|
|
<!-- 分享海报 --> |
|
|
|
|
<StorePoster |
|
|
|
|
v-on:setPosterImageStatus="setPosterImageStatus" |
|
|
|
|
:posterImageStatus="posterImageStatus" |
|
|
|
|
:posterData="posterData" |
|
|
|
|
:goodId="id" |
|
|
|
|
></StorePoster> |
|
|
|
|
<StorePoster v-on:setPosterImageStatus="setPosterImageStatus" :posterImageStatus="posterImageStatus" |
|
|
|
|
:posterData="posterData" :goodId="id"></StorePoster> |
|
|
|
|
<!-- 分享弹窗 --> |
|
|
|
|
<ShareInfo |
|
|
|
|
v-on:setShareInfoStatus="setShareInfoStatus" |
|
|
|
|
:shareInfoStatus="shareInfoStatus" |
|
|
|
|
></ShareInfo> |
|
|
|
|
<ShareInfo v-on:setShareInfoStatus="setShareInfoStatus" :shareInfoStatus="shareInfoStatus"></ShareInfo> |
|
|
|
|
|
|
|
|
|
<view class="generate-posters acea-row row-middle on" v-if="posters"> |
|
|
|
|
<view class="item" @click="setPosterImageStatus"> |
|
|
|
@ -244,12 +198,7 @@
|
|
|
|
|
<view>生成海报</view> |
|
|
|
|
</view> |
|
|
|
|
</view> |
|
|
|
|
<view |
|
|
|
|
class="mask" |
|
|
|
|
@touchmove.prevent |
|
|
|
|
@click="listenerActionClose" |
|
|
|
|
v-show="posters" |
|
|
|
|
></view> |
|
|
|
|
<view class="mask" @touchmove.prevent @click="listenerActionClose" v-show="posters"></view> |
|
|
|
|
<view class="posterCanvasWarp"> |
|
|
|
|
<canvas class="posterCanvas" canvas-id="myCanvas"></canvas> |
|
|
|
|
</view> |
|
|
|
@ -286,9 +235,15 @@ import {
|
|
|
|
|
handleUrlParam, |
|
|
|
|
getCurrentPageUrlWithArgs, |
|
|
|
|
} from "@/utils"; |
|
|
|
|
import { wechatEvevt } from "@/libs/wechat"; |
|
|
|
|
import { imageBase64 } from "@/api/public"; |
|
|
|
|
import { mapGetters } from "vuex"; |
|
|
|
|
import { |
|
|
|
|
wechatEvevt |
|
|
|
|
} from "@/libs/wechat"; |
|
|
|
|
import { |
|
|
|
|
imageBase64 |
|
|
|
|
} from "@/api/public"; |
|
|
|
|
import { |
|
|
|
|
mapGetters |
|
|
|
|
} from "vuex"; |
|
|
|
|
|
|
|
|
|
export default { |
|
|
|
|
name: "GoodsCon", |
|
|
|
@ -356,6 +311,7 @@ export default {
|
|
|
|
|
qqmapsdk: null, |
|
|
|
|
productConClass: "product-con", |
|
|
|
|
tempName: "全国包邮", |
|
|
|
|
isIntegral: "false" |
|
|
|
|
}; |
|
|
|
|
}, |
|
|
|
|
computed: mapGetters(["isLogin", "location"]), |
|
|
|
@ -393,8 +349,7 @@ export default {
|
|
|
|
|
return { |
|
|
|
|
title: this.storeInfo.storeName, |
|
|
|
|
imageUrl: this.storeInfo.image, |
|
|
|
|
path: |
|
|
|
|
"pages/shop/GoodsCon/index?id=" + |
|
|
|
|
path: "pages/shop/GoodsCon/index?id=" + |
|
|
|
|
this.storeInfo.id + |
|
|
|
|
"&spread=" + |
|
|
|
|
uni.getStorageSync("uid") + |
|
|
|
@ -523,8 +478,7 @@ export default {
|
|
|
|
|
}) |
|
|
|
|
.catch((err) => { |
|
|
|
|
uni.showToast({ |
|
|
|
|
title: |
|
|
|
|
err.msg || err.response.data.msg || err.response.data.message, |
|
|
|
|
title: err.msg || err.response.data.msg || err.response.data.message, |
|
|
|
|
icon: "none", |
|
|
|
|
duration: 2000, |
|
|
|
|
}); |
|
|
|
@ -743,10 +697,9 @@ export default {
|
|
|
|
|
productId: that.id, |
|
|
|
|
cartNum: that.attr.productSelect.cart_num, |
|
|
|
|
new: news, |
|
|
|
|
uniqueId: |
|
|
|
|
that.attr.productSelect !== undefined |
|
|
|
|
? that.attr.productSelect.unique |
|
|
|
|
: "", |
|
|
|
|
uniqueId: that.attr.productSelect !== undefined ? |
|
|
|
|
that.attr.productSelect.unique : |
|
|
|
|
"", |
|
|
|
|
}; |
|
|
|
|
postCartAdd(q) |
|
|
|
|
.then(function (res) { |
|
|
|
@ -755,8 +708,7 @@ export default {
|
|
|
|
|
if (news) { |
|
|
|
|
if (!res.data) { |
|
|
|
|
uni.showToast({ |
|
|
|
|
title: |
|
|
|
|
res.msg || res.data.msg || res.data.message, |
|
|
|
|
title: res.msg || res.data.msg || res.data.message, |
|
|
|
|
icon: "none", |
|
|
|
|
duration: 2000, |
|
|
|
|
}); |
|
|
|
@ -828,9 +780,9 @@ export default {
|
|
|
|
|
if (this.isLogin) { |
|
|
|
|
getUserInfo().then((res) => { |
|
|
|
|
href = |
|
|
|
|
href.indexOf("?") === -1 |
|
|
|
|
? href + "?spread=" + res.data.uid |
|
|
|
|
: href + "&spread=" + res.data.uid; |
|
|
|
|
href.indexOf("?") === -1 ? |
|
|
|
|
href + "?spread=" + res.data.uid : |
|
|
|
|
href + "&spread=" + res.data.uid; |
|
|
|
|
var configAppMessage = { |
|
|
|
|
desc: data.storeInfo, |
|
|
|
|
title: data.storeName, |
|
|
|
|