Browse Source

商品0库存时没有提示,选择立即购买报错

zyh
Gao xiaosong 4 years ago
parent
commit
bd1c576620
  1. 183
      pages/shop/GoodsCon/index.vue

183
pages/shop/GoodsCon/index.vue

@ -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;
} }

Loading…
Cancel
Save