Browse Source

修改秒杀详情无法更改数量的问题

master
Gao xiaosong 4 years ago
parent
commit
3233ff782f
  1. 2
      pages/activity/GoodsSeckill/index.vue
  2. 248
      pages/activity/SeckillDetails/index.vue

2
pages/activity/GoodsSeckill/index.vue

@ -50,7 +50,7 @@
<view class="grab" v-if="item.status === 1 && itemSeckill.stock <= 0">已售磬</view> <view class="grab" v-if="item.status === 1 && itemSeckill.stock <= 0">已售磬</view>
<view class="grab bg-color-red" @click="goDetail(itemSeckill.id,item.status)" v-if="item.status === 2">即将开始 <view class="grab bg-color-red" @click="goDetail(itemSeckill.id,item.status)" v-if="item.status === 2">即将开始
</view> </view>
<view class="grab bg-color-red" v-if="item.status === 0">已结束</view> <view class="grab bg-color-red" @click="goDetail(itemSeckill.id,item.status)" v-if="item.status === 0">已结束</view>
</view> </view>
</view> </view>
<view class="noCommodity" style="background-color: #f5f5f5;" v-if="seckillList.length === 0 && page > 1"> <view class="noCommodity" style="background-color: #f5f5f5;" v-if="seckillList.length === 0 && page > 1">

248
pages/activity/SeckillDetails/index.vue

@ -1,5 +1,8 @@
<template> <template>
<view :class="[posterImageStatus ? 'noscroll product-con' : 'product-con']" v-show="domStatus"> <view
:class="[posterImageStatus ? 'noscroll product-con' : 'product-con']"
v-show="domStatus"
>
<product-con-swiper :imgUrls="imgUrls"></product-con-swiper> <product-con-swiper :imgUrls="imgUrls"></product-con-swiper>
<view class="nav acea-row row-between-wrapper"> <view class="nav acea-row row-between-wrapper">
<view class="money"> <view class="money">
@ -10,8 +13,15 @@
<view class="acea-row row-middle"> <view class="acea-row row-middle">
<view class="times"> <view class="times">
<view>距秒杀结束仅剩</view> <view>距秒杀结束仅剩</view>
<count-down :isDay="false" :tipText="' '" :dayText="' '" :hourText="' : '" :minuteText="' : '" <count-down
:secondText="' '" :datatime="datatime/1000"></count-down> :isDay="false"
:tipText="' '"
:dayText="' '"
:hourText="' : '"
:minuteText="' : '"
:secondText="' '"
:datatime="datatime / 1000"
></count-down>
</view> </view>
<view class="iconfont icon-jiantou"></view> <view class="iconfont icon-jiantou"></view>
</view> </view>
@ -40,12 +50,12 @@
</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>
@ -60,11 +70,10 @@
<view class="iconfont icon-shoucang"></view> <view class="iconfont icon-shoucang"></view>
<text>收藏</text> <text>收藏</text>
</view> </view>
<view class="bnt acea-row" v-if=" <view
seckillStatus == 1 && class="bnt acea-row"
storeInfo.num > 0 && v-if="seckillStatus == 1 && storeInfo.num > 0 && storeInfo.stock > 0"
storeInfo.stock > 0 >
">
<view class="joinCart" @click="openAlone"> <view class="joinCart" @click="openAlone">
<text>单独购买</text> <text>单独购买</text>
</view> </view>
@ -73,11 +82,10 @@
</view> </view>
</view> </view>
<div class="bnt acea-row" v-if=" <div
seckillStatus == 1 && class="bnt acea-row"
storeInfo.num <= 0 && v-if="seckillStatus == 1 && storeInfo.num <= 0 && storeInfo.stock <= 0"
storeInfo.stock <= 0 >
">
<div class="joinCart" @click="openAlone">原价购买</div> <div class="joinCart" @click="openAlone">原价购买</div>
<div class="buy bg-color-hui">已售罄</div> <div class="buy bg-color-hui">已售罄</div>
</div> </div>
@ -89,60 +97,60 @@
<div class="joinCart" @click="openAlone">原价购买</div> <div class="joinCart" @click="openAlone">原价购买</div>
<div class="buy bg-color-hui">已结束</div> <div class="buy bg-color-hui">已结束</div>
</div> </div>
</view> </view>
<ProductWindow v-on:changeFun="changeFun" :attr="attr" :cartNum="cartNum"></ProductWindow> <ProductWindow
<StorePoster v-on:setPosterImageStatus="setPosterImageStatus" :posterImageStatus="posterImageStatus" v-on:changeFun="changeFun"
:posterData="posterData"></StorePoster> :attr="attr"
:cartNum="cartNum"
></ProductWindow>
<StorePoster
v-on:setPosterImageStatus="setPosterImageStatus"
:posterImageStatus="posterImageStatus"
:posterData="posterData"
></StorePoster>
</view> </view>
</template> </template>
<style scoped lang="less"> <style scoped lang="less">
.noscroll { .noscroll {
height: 100%; height: 100%;
overflow: hidden; overflow: hidden;
} }
</style> </style>
<script> <script>
import ProductConSwiper from "@/components/ProductConSwiper"; import ProductConSwiper from "@/components/ProductConSwiper";
import CountDown from "@/components/CountDown"; import CountDown from "@/components/CountDown";
import ProductWindow from "@/components/ProductWindow"; import ProductWindow from "@/components/ProductWindow";
import StorePoster from "@/components/StorePoster"; import StorePoster from "@/components/StorePoster";
import { import { getSeckillDetail } from "@/api/activity";
getSeckillDetail import { postCartAdd } from "@/api/store";
} from "@/api/activity"; import { imageBase64 } from "@/api/public";
import { import {
postCartAdd
} from "@/api/store";
import {
imageBase64
} from "@/api/public";
import {
getCoupon, getCoupon,
getCollectAdd, getCollectAdd,
getCollectDel, getCollectDel,
getUserInfo getUserInfo,
} from "@/api/user"; } from "@/api/user";
const NAME = "SeckillDetails"; const NAME = "SeckillDetails";
export default { export default {
name: "SeckillDetails", name: "SeckillDetails",
components: { components: {
ProductConSwiper, ProductConSwiper,
CountDown, CountDown,
ProductWindow, ProductWindow,
StorePoster StorePoster,
}, },
props: {}, props: {},
data: function () { data: function () {
return { return {
seckillStatus: '', seckillStatus: "",
domStatus: false, domStatus: false,
posterData: { posterData: {
image: "", image: "",
title: "", title: "",
price: "", price: "",
code: "" code: "",
}, },
posterImageStatus: false, posterImageStatus: false,
action: "", action: "",
@ -160,7 +168,7 @@
productSelect: {}, productSelect: {},
}, },
datatime: 0, datatime: 0,
userCollect: false userCollect: false,
}; };
}, },
onShow: function () { onShow: function () {
@ -171,34 +179,38 @@
return { return {
title: this.storeInfo.title, title: this.storeInfo.title,
imageUrl: this.storeInfo.image, imageUrl: this.storeInfo.image,
path: "pages/activity/GoodsSeckill/index?id=" + this.storeInfo.id + "&spread=" + uni.getStorageSync("uid") + path:
"pages/activity/GoodsSeckill/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",
}) });
} },
} };
}, },
openAlone: function () { openAlone: function () {
this.$yrouter.push({ this.$yrouter.push({
path: "/pages/shop/GoodsCon/index", path: "/pages/shop/GoodsCon/index",
query: { query: {
id: this.storeInfo.productId id: this.storeInfo.productId,
} },
}); });
// this.$yrouter.replace({ path: "/detail/" + this.storeInfo.productId }); // this.$yrouter.replace({ path: "/detail/" + this.storeInfo.productId });
}, },
routerGo(item) { routerGo(item) {
this.$yrouter.push({ this.$yrouter.push({
path: '/pages/user/CustomerList/index' path: "/pages/user/CustomerList/index",
}) });
}, },
// //
setCollect: function () { setCollect: function () {
@ -217,11 +229,11 @@
}, },
mountedStart: function () { mountedStart: function () {
var that = this; var that = this;
console.log(this) console.log(this);
let id = that.$yroute.query.id; let id = that.$yroute.query.id;
this.seckillStatus = that.$yroute.query.status; this.seckillStatus = that.$yroute.query.status;
that.datatime = parseInt(that.$yroute.query.time); that.datatime = parseInt(that.$yroute.query.time);
getSeckillDetail(id).then(res => { getSeckillDetail(id).then((res) => {
that.userCollect = res.data.userCollect; that.userCollect = res.data.userCollect;
res.data.storeInfo.description = res.data.storeInfo.description.replace( res.data.storeInfo.description = res.data.storeInfo.description.replace(
/\<img/gi, /\<img/gi,
@ -245,7 +257,6 @@
// that.setProductSelect(); // that.setProductSelect();
that.domStatus = true; that.domStatus = true;
that.DefaultSelect(); that.DefaultSelect();
}); });
}, },
updateTitle() { updateTitle() {
@ -265,13 +276,9 @@
} }
//sort();:-- //sort();:--
let productSelect = this.productValue[value.sort().join(",")]; let productSelect = this.productValue[value.sort().join(",")];
console.log(productSelect) console.log(productSelect);
if (productSelect && productAttr.length) { if (productSelect && productAttr.length) {
this.$set( this.$set(this.attr.productSelect, "store_name", this.storeInfo.title);
this.attr.productSelect,
"store_name",
this.storeInfo.title
);
this.$set(this.attr.productSelect, "image", productSelect.image); this.$set(this.attr.productSelect, "image", productSelect.image);
this.$set(this.attr.productSelect, "price", productSelect.seckillPrice); this.$set(this.attr.productSelect, "price", productSelect.seckillPrice);
this.$set(this.attr.productSelect, "stock", productSelect.seckillStock); this.$set(this.attr.productSelect, "stock", productSelect.seckillStock);
@ -280,27 +287,31 @@
this.$set(this, "attrValue", value.sort().join(",")); this.$set(this, "attrValue", value.sort().join(","));
this.$set(this, "attrTxt", "已选择"); this.$set(this, "attrTxt", "已选择");
} else if (!productSelect && productAttr.length) { } else if (!productSelect && productAttr.length) {
this.$set(this.attr.productSelect, "store_name", this.storeInfo.title);
this.$set(this.attr.productSelect, "image", this.storeInfo.image);
this.$set( this.$set(
this.attr.productSelect, this.attr.productSelect,
"store_name", "price",
this.storeInfo.title this.storeInfo.seckillPrice
); );
this.$set(this.attr.productSelect, "image", this.storeInfo.image);
this.$set(this.attr.productSelect, "price", this.storeInfo.seckillPrice);
this.$set(this.attr.productSelect, "stock", 0); this.$set(this.attr.productSelect, "stock", 0);
this.$set(this.attr.productSelect, "unique", ""); this.$set(this.attr.productSelect, "unique", "");
this.$set(this.attr.productSelect, "cart_num", 0); this.$set(this.attr.productSelect, "cart_num", 0);
this.$set(this, "attrValue", ""); this.$set(this, "attrValue", "");
this.$set(this, "attrTxt", "请选择"); this.$set(this, "attrTxt", "请选择");
} else if (!productSelect && !productAttr.length) { } else if (!productSelect && !productAttr.length) {
this.$set(this.attr.productSelect, "store_name", this.storeInfo.title);
this.$set(this.attr.productSelect, "image", this.storeInfo.image);
this.$set( this.$set(
this.attr.productSelect, this.attr.productSelect,
"store_name", "price",
this.storeInfo.title this.storeInfo.seckillPrice
);
this.$set(
this.attr.productSelect,
"stock",
this.storeInfo.seckillStock
); );
this.$set(this.attr.productSelect, "image", this.storeInfo.image);
this.$set(this.attr.productSelect, "price", this.storeInfo.seckillPrice);
this.$set(this.attr.productSelect, "stock", this.storeInfo.seckillStock);
this.$set( this.$set(
this.attr.productSelect, this.attr.productSelect,
"unique", "unique",
@ -322,17 +333,50 @@
var that = this; var that = this;
that.attr.cartAttr = res; that.attr.cartAttr = res;
}, },
ChangeCartNum: function (res) { // ChangeCartNum: function (res) {
var that = this; // var that = this;
if (res) { // if (res) {
if (that.attr.productSelect.cart_num < that.storeInfo.seckillStock) { // if (that.attr.productSelect.cart_num < that.storeInfo.seckillStock) {
that.attr.productSelect.cart_num++; // that.attr.productSelect.cart_num += 1;
this.cartNum++; // this.cartNum += 1;
// console.log(this.cartNum)
// }
// } else {
// if (that.attr.productSelect.cart_num > 1) {
// that.attr.productSelect.cart_num -= 1;
// this.cartNum -= 1;
// }
// }
// },
ChangeCartNum: function (changeValue) {
//changeValue: |
//
let productSelect = this.productValue[this.attrValue];
//,
if (productSelect === undefined && !this.attr.productAttr.length) {
productSelect = this.attr.productSelect;
} }
//0
if (productSelect === undefined) return;
let stock = productSelect.stock || 0;
let num = this.attr.productSelect;
if (changeValue) {
num.cart_num++;
if (num.cart_num > stock) {
this.$set(this.attr.productSelect, "cart_num", stock);
this.$set(this, "cartNum", stock);
} else { } else {
if (that.attr.productSelect.cart_num > 1) { this.$set(this.attr.productSelect, "cart_num", num.cart_num);
that.attr.productSelect.cart_num--; this.$set(this, "cartNum", num.cart_num);
this.cartNum--; }
} else {
num.cart_num--;
if (num.cart_num < 1) {
this.$set(this.attr.productSelect, "cart_num", 1);
this.$set(this, "cartNum", 1);
} else {
this.$set(this.attr.productSelect, "cart_num", num.cart_num);
this.$set(this, "cartNum", num.cart_num);
} }
} }
}, },
@ -351,7 +395,11 @@
this.$set(this, "attrTxt", "已选择"); this.$set(this, "attrTxt", "已选择");
} else { } else {
this.$set(this.attr.productSelect, "image", this.storeInfo.image); this.$set(this.attr.productSelect, "image", this.storeInfo.image);
this.$set(this.attr.productSelect, "price", this.storeInfo.seckillPrice); this.$set(
this.attr.productSelect,
"price",
this.storeInfo.seckillPrice
);
this.$set(this.attr.productSelect, "stock", 0); this.$set(this.attr.productSelect, "stock", 0);
this.$set(this.attr.productSelect, "unique", ""); this.$set(this.attr.productSelect, "unique", "");
this.$set(this.attr.productSelect, "cart_num", 0); this.$set(this.attr.productSelect, "cart_num", 0);
@ -375,33 +423,33 @@
data.secKillId = that.storeInfo.id; data.secKillId = that.storeInfo.id;
data.new = 1; data.new = 1;
postCartAdd(data) postCartAdd(data)
.then(res => { .then((res) => {
that.$yrouter.push({ that.$yrouter.push({
path: "/pages/order/OrderSubmission/index", path: "/pages/order/OrderSubmission/index",
query: { query: {
id: res.data.cartId id: res.data.cartId,
} },
}); });
}) })
.catch(err => { .catch((err) => {
uni.showToast({ uni.showToast({
title: err.msg || err.response.data.msg || err.response.data.message, title:
icon: 'none', err.msg || err.response.data.msg || err.response.data.message,
duration: 2000 icon: "none",
duration: 2000,
}); });
}); });
} }
} },
} },
}; };
</script> </script>
<style scoped lang="less"> <style scoped lang="less">
.product-con .nav { .product-con .nav {
padding: 0 0.2*100rpx; padding: 0 0.2 * 100rpx;
} }
.product-con .footer .bnt .buy.bg-color-hui { .product-con .footer .bnt .buy.bg-color-hui {
background: #ccc; background: #ccc;
}
}
</style> </style>

Loading…
Cancel
Save