商品0库存时没有提示,选择立即购买报错
This commit is contained in:
@ -2,18 +2,33 @@
|
|||||||
<view :class="productConClass">
|
<view :class="productConClass">
|
||||||
<view v-if="storeInfo.id">
|
<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">
|
<view class="wrapper">
|
||||||
<view class="share acea-row row-between row-bottom">
|
<view class="share acea-row row-between row-bottom">
|
||||||
<view class="money font-color-red">
|
<view class="money font-color-red">
|
||||||
<text>¥</text>
|
<text>¥</text>
|
||||||
<text class="num">{{ attr.productSelect.price || storeInfo.price }}</text>
|
<text class="num">{{
|
||||||
<text class="vip-money" v-if="storeInfo.vipPrice && storeInfo.vipPrice > 0">¥{{ attr.productSelect.vipPrice || storeInfo.vipPrice }}</text>
|
attr.productSelect.price || storeInfo.price
|
||||||
<image src="@/static/images/vip.png" class="image" v-if="storeInfo.vipPrice && storeInfo.vipPrice > 0" />
|
}}</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"
|
||||||
|
/>
|
||||||
</view>
|
</view>
|
||||||
<view class="iconfont icon-fenxiang" @click="listenerActionSheet"></view>
|
<view
|
||||||
|
class="iconfont icon-fenxiang"
|
||||||
|
@click="listenerActionSheet"
|
||||||
|
></view>
|
||||||
</view>
|
</view>
|
||||||
<view class="introduce">{{ storeInfo.storeName }}</view>
|
<view class="introduce">{{ storeInfo.storeName }}</view>
|
||||||
<view class="label acea-row row-between-wrapper">
|
<view class="label acea-row row-between-wrapper">
|
||||||
@ -21,11 +36,19 @@
|
|||||||
<text>库存:{{ storeInfo.stock }}{{ storeInfo.unitName }}</text>
|
<text>库存:{{ storeInfo.stock }}{{ storeInfo.unitName }}</text>
|
||||||
<text>销量:{{ storeInfo.sales }}{{ storeInfo.unitName }}</text>
|
<text>销量:{{ storeInfo.sales }}{{ storeInfo.unitName }}</text>
|
||||||
</view>
|
</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 class="hide line1">
|
||||||
<text>优惠券:</text>
|
<text>优惠券:</text>
|
||||||
<text class="activity" v-for="(item, couponListEq) in couponList"
|
<text
|
||||||
:key="couponListEq">满{{ item.useMinPrice }}减{{ item.couponPrice }}</text>
|
class="activity"
|
||||||
|
v-for="(item, couponListEq) in couponList"
|
||||||
|
:key="couponListEq"
|
||||||
|
>满{{ item.useMinPrice }}减{{ item.couponPrice }}</text
|
||||||
|
>
|
||||||
</text>
|
</text>
|
||||||
<view class="iconfont icon-jiantou"></view>
|
<view class="iconfont icon-jiantou"></view>
|
||||||
</view>
|
</view>
|
||||||
@ -40,7 +63,10 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!-- 规格 -->
|
<!-- 规格 -->
|
||||||
<view class="attribute acea-row row-between-wrapper" @click="selecAttrTap">
|
<view
|
||||||
|
class="attribute acea-row row-between-wrapper"
|
||||||
|
@click="selecAttrTap"
|
||||||
|
>
|
||||||
<view>
|
<view>
|
||||||
<text>{{ attrTxt }}:</text>
|
<text>{{ attrTxt }}:</text>
|
||||||
<text class="atterTxt">{{ attrValue }}</text>
|
<text class="atterTxt">{{ attrValue }}</text>
|
||||||
@ -64,14 +90,22 @@
|
|||||||
</view>
|
</view>
|
||||||
<view class="text">
|
<view class="text">
|
||||||
<view class="name line1">{{ systemStore.name }}</view>
|
<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="addressTxt">{{ systemStore.address }}</text>
|
||||||
<text class="iconfont icon-youjian"></text>
|
<text class="iconfont icon-youjian"></text>
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
<view class="addressBox">
|
<view class="addressBox">
|
||||||
<a class="iconfont icon-dadianhua01 font-color-red phone" @click="telPhone(systemStore.phone)"></a>
|
<a
|
||||||
<view class="addressTxt corlor-yshop">距离{{systemStore.distance}}千米</view>
|
class="iconfont icon-dadianhua01 font-color-red phone"
|
||||||
|
@click="telPhone(systemStore.phone)"
|
||||||
|
></a>
|
||||||
|
<view class="addressTxt corlor-yshop"
|
||||||
|
>距离{{ systemStore.distance }}千米</view
|
||||||
|
>
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
@ -122,13 +156,13 @@
|
|||||||
<view class="conter" v-html="storeInfo.description"></view>
|
<view class="conter" v-html="storeInfo.description"></view>
|
||||||
</view>
|
</view>
|
||||||
|
|
||||||
<view style="height:100rpx;"></view>
|
<view style="height: 100rpx"></view>
|
||||||
<!-- 操作栏 -->
|
<!-- 操作栏 -->
|
||||||
<view class="footer acea-row row-between-wrapper">
|
<view class="footer acea-row row-between-wrapper">
|
||||||
<!-- #ifdef MP-WEIXIN -->
|
<!-- #ifdef MP-WEIXIN -->
|
||||||
<view class="item">
|
<view class="item">
|
||||||
<button open-type="contact" class='contacButton'>
|
<button open-type="contact" class="contacButton">
|
||||||
<view style="padding-bottom: 8rpx;" class="item">
|
<view style="padding-bottom: 8rpx" class="item">
|
||||||
<view class="iconfont icon-kefu"></view>
|
<view class="iconfont icon-kefu"></view>
|
||||||
<text>客服</text>
|
<text>客服</text>
|
||||||
</view>
|
</view>
|
||||||
@ -147,15 +181,23 @@
|
|||||||
<view class="iconfont icon-shoucang"></view>
|
<view class="iconfont icon-shoucang"></view>
|
||||||
<text>收藏</text>
|
<text>收藏</text>
|
||||||
</view>
|
</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">
|
<view class="iconfont icon-gouwuche1">
|
||||||
<text class="num bg-color-red" v-if="CartCount > 0">{{CartCount}}</text>
|
<text class="num bg-color-red" v-if="CartCount > 0">{{
|
||||||
|
CartCount
|
||||||
|
}}</text>
|
||||||
</view>
|
</view>
|
||||||
<text>购物车</text>
|
<text>购物车</text>
|
||||||
</view>
|
</view>
|
||||||
<view @click="goShoppingCart()" class="item animated" v-if="!animated">
|
<view @click="goShoppingCart()" class="item animated" v-if="!animated">
|
||||||
<view class="iconfont icon-gouwuche1">
|
<view class="iconfont icon-gouwuche1">
|
||||||
<text class="num bg-color-red" v-if="CartCount > 0">{{CartCount}}</text>
|
<text class="num bg-color-red" v-if="CartCount > 0">{{
|
||||||
|
CartCount
|
||||||
|
}}</text>
|
||||||
</view>
|
</view>
|
||||||
<text>购物车</text>
|
<text>购物车</text>
|
||||||
</view>
|
</view>
|
||||||
@ -172,12 +214,23 @@
|
|||||||
<!-- 优惠券 -->
|
<!-- 优惠券 -->
|
||||||
<CouponPop v-on:changeFun="changeFun" :coupon="coupon"></CouponPop>
|
<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"
|
<StorePoster
|
||||||
:posterData="posterData" :goodId="id"></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="generate-posters acea-row row-middle on" v-if="posters">
|
||||||
<view class="item" @click="setPosterImageStatus">
|
<view class="item" @click="setPosterImageStatus">
|
||||||
@ -191,7 +244,12 @@
|
|||||||
<view>生成海报</view>
|
<view>生成海报</view>
|
||||||
</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">
|
<view class="posterCanvasWarp">
|
||||||
<canvas class="posterCanvas" canvas-id="myCanvas"></canvas>
|
<canvas class="posterCanvas" canvas-id="myCanvas"></canvas>
|
||||||
</view>
|
</view>
|
||||||
@ -226,17 +284,11 @@
|
|||||||
PosterCanvas,
|
PosterCanvas,
|
||||||
handleQrCode,
|
handleQrCode,
|
||||||
handleUrlParam,
|
handleUrlParam,
|
||||||
getCurrentPageUrlWithArgs
|
getCurrentPageUrlWithArgs,
|
||||||
} from "@/utils";
|
} from "@/utils";
|
||||||
import {
|
import { wechatEvevt } from "@/libs/wechat";
|
||||||
wechatEvevt
|
import { imageBase64 } from "@/api/public";
|
||||||
} from "@/libs/wechat";
|
import { mapGetters } from "vuex";
|
||||||
import {
|
|
||||||
imageBase64
|
|
||||||
} from "@/api/public";
|
|
||||||
import {
|
|
||||||
mapGetters
|
|
||||||
} from "vuex";
|
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: "GoodsCon",
|
name: "GoodsCon",
|
||||||
@ -311,7 +363,7 @@
|
|||||||
this.$store.commit("get_to", "goodcon");
|
this.$store.commit("get_to", "goodcon");
|
||||||
let url = handleQrCode();
|
let url = handleQrCode();
|
||||||
if (!url) {
|
if (!url) {
|
||||||
url = handleUrlParam(getCurrentPageUrlWithArgs())
|
url = handleUrlParam(getCurrentPageUrlWithArgs());
|
||||||
}
|
}
|
||||||
this.coupons();
|
this.coupons();
|
||||||
if (url && url.id) {
|
if (url && url.id) {
|
||||||
@ -341,20 +393,24 @@
|
|||||||
return {
|
return {
|
||||||
title: this.storeInfo.storeName,
|
title: this.storeInfo.storeName,
|
||||||
imageUrl: this.storeInfo.image,
|
imageUrl: this.storeInfo.image,
|
||||||
path: "pages/shop/GoodsCon/index?id=" + this.storeInfo.id + "&spread=" + uni.getStorageSync("uid") +
|
path:
|
||||||
|
"pages/shop/GoodsCon/index?id=" +
|
||||||
|
this.storeInfo.id +
|
||||||
|
"&spread=" +
|
||||||
|
uni.getStorageSync("uid") +
|
||||||
"&pageType=good&codeType=routine",
|
"&pageType=good&codeType=routine",
|
||||||
success(res) {
|
success(res) {
|
||||||
uni.showToast({
|
uni.showToast({
|
||||||
title: '分享成功'
|
title: "分享成功",
|
||||||
})
|
});
|
||||||
},
|
},
|
||||||
fail(res) {
|
fail(res) {
|
||||||
uni.showToast({
|
uni.showToast({
|
||||||
title: '分享失败',
|
title: "分享失败",
|
||||||
icon: 'none'
|
icon: "none",
|
||||||
})
|
});
|
||||||
}
|
},
|
||||||
}
|
};
|
||||||
},
|
},
|
||||||
goHome() {
|
goHome() {
|
||||||
this.$yrouter.switchTab("/pages/home/index");
|
this.$yrouter.switchTab("/pages/home/index");
|
||||||
@ -385,7 +441,7 @@
|
|||||||
phoneNumber: phoneNumber,
|
phoneNumber: phoneNumber,
|
||||||
fail() {
|
fail() {
|
||||||
console.log("取消拨打");
|
console.log("取消拨打");
|
||||||
}
|
},
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
showChang: function (data) {
|
showChang: function (data) {
|
||||||
@ -421,7 +477,7 @@
|
|||||||
}
|
}
|
||||||
uni.showLoading({
|
uni.showLoading({
|
||||||
title: "加载中",
|
title: "加载中",
|
||||||
mask: true
|
mask: true,
|
||||||
});
|
});
|
||||||
getProductDetail(that.id, from)
|
getProductDetail(that.id, from)
|
||||||
.then((res) => {
|
.then((res) => {
|
||||||
@ -467,7 +523,8 @@
|
|||||||
})
|
})
|
||||||
.catch((err) => {
|
.catch((err) => {
|
||||||
uni.showToast({
|
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",
|
icon: "none",
|
||||||
duration: 2000,
|
duration: 2000,
|
||||||
});
|
});
|
||||||
@ -594,7 +651,6 @@
|
|||||||
limit: 20,
|
limit: 20,
|
||||||
};
|
};
|
||||||
getCoupon(q).then((res) => {
|
getCoupon(q).then((res) => {
|
||||||
|
|
||||||
that.$set(that, "couponList", res.data || []);
|
that.$set(that, "couponList", res.data || []);
|
||||||
that.$set(that.coupon, "list", res.data);
|
that.$set(that.coupon, "list", res.data);
|
||||||
});
|
});
|
||||||
@ -615,7 +671,7 @@
|
|||||||
// 修改了规格
|
// 修改了规格
|
||||||
|
|
||||||
let productSelect = this.productValue[res.value];
|
let productSelect = this.productValue[res.value];
|
||||||
console.log(productSelect)
|
console.log(productSelect);
|
||||||
if (productSelect) {
|
if (productSelect) {
|
||||||
this.attr.productAttr[res.indexw].index = res.indexn;
|
this.attr.productAttr[res.indexw].index = res.indexn;
|
||||||
this.$set(this.attr.productSelect, "image", productSelect.image);
|
this.$set(this.attr.productSelect, "image", productSelect.image);
|
||||||
@ -687,14 +743,25 @@
|
|||||||
productId: that.id,
|
productId: that.id,
|
||||||
cartNum: that.attr.productSelect.cart_num,
|
cartNum: that.attr.productSelect.cart_num,
|
||||||
new: news,
|
new: news,
|
||||||
uniqueId: that.attr.productSelect !== undefined ?
|
uniqueId:
|
||||||
that.attr.productSelect.unique : "",
|
that.attr.productSelect !== undefined
|
||||||
|
? that.attr.productSelect.unique
|
||||||
|
: "",
|
||||||
};
|
};
|
||||||
postCartAdd(q)
|
postCartAdd(q)
|
||||||
.then(function (res) {
|
.then(function (res) {
|
||||||
that.isOpen = false;
|
that.isOpen = false;
|
||||||
that.attr.cartAttr = false;
|
that.attr.cartAttr = false;
|
||||||
if (news) {
|
if (news) {
|
||||||
|
if (!res.data) {
|
||||||
|
uni.showToast({
|
||||||
|
title:
|
||||||
|
res.msg || res.data.msg || res.data.message,
|
||||||
|
icon: "none",
|
||||||
|
duration: 2000,
|
||||||
|
});
|
||||||
|
return;
|
||||||
|
}
|
||||||
that.$yrouter.push({
|
that.$yrouter.push({
|
||||||
path: "/pages/order/OrderSubmission/index",
|
path: "/pages/order/OrderSubmission/index",
|
||||||
query: {
|
query: {
|
||||||
@ -761,9 +828,9 @@
|
|||||||
if (this.isLogin) {
|
if (this.isLogin) {
|
||||||
getUserInfo().then((res) => {
|
getUserInfo().then((res) => {
|
||||||
href =
|
href =
|
||||||
href.indexOf("?") === -1 ?
|
href.indexOf("?") === -1
|
||||||
href + "?spread=" + res.data.uid :
|
? href + "?spread=" + res.data.uid
|
||||||
href + "&spread=" + res.data.uid;
|
: href + "&spread=" + res.data.uid;
|
||||||
var configAppMessage = {
|
var configAppMessage = {
|
||||||
desc: data.storeInfo,
|
desc: data.storeInfo,
|
||||||
title: data.storeName,
|
title: data.storeName,
|
||||||
@ -774,11 +841,8 @@
|
|||||||
["updateAppMessageShareData", "updateTimelineShareData"],
|
["updateAppMessageShareData", "updateTimelineShareData"],
|
||||||
configAppMessage
|
configAppMessage
|
||||||
)
|
)
|
||||||
.then((res) => {
|
.then((res) => {})
|
||||||
|
|
||||||
})
|
|
||||||
.catch((res) => {
|
.catch((res) => {
|
||||||
|
|
||||||
if (res.is_ready) {
|
if (res.is_ready) {
|
||||||
res.wx.updateAppMessageShareData(configAppMessage);
|
res.wx.updateAppMessageShareData(configAppMessage);
|
||||||
res.wx.updateTimelineShareData(configAppMessage);
|
res.wx.updateTimelineShareData(configAppMessage);
|
||||||
@ -796,11 +860,8 @@
|
|||||||
["updateAppMessageShareData", "updateTimelineShareData"],
|
["updateAppMessageShareData", "updateTimelineShareData"],
|
||||||
configAppMessage
|
configAppMessage
|
||||||
)
|
)
|
||||||
.then((res) => {
|
.then((res) => {})
|
||||||
|
|
||||||
})
|
|
||||||
.catch((res) => {
|
.catch((res) => {
|
||||||
|
|
||||||
if (res.is_ready) {
|
if (res.is_ready) {
|
||||||
res.wx.updateAppMessageShareData(configAppMessage);
|
res.wx.updateAppMessageShareData(configAppMessage);
|
||||||
res.wx.updateTimelineShareData(configAppMessage);
|
res.wx.updateTimelineShareData(configAppMessage);
|
||||||
@ -981,8 +1042,6 @@
|
|||||||
filter: blur(2px);
|
filter: blur(2px);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
.product-con .product-intro .conter view {
|
.product-con .product-intro .conter view {
|
||||||
width: 100% !important;
|
width: 100% !important;
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user