Commit 0bda9efecb78d2453ed3aed490be6f1eda6a2665

Authored by BigBoss
1 parent ba260b3f99
Exists in master

购物车功能修改

src/pages/cart/cart.vue
... ... @@ -46,28 +46,14 @@
46 46 class="goodName"
47 47 @tap="toGoods(item.pid,item.sk_id)"
48 48 >{{item.p_name}}</view>
49   - <!-- <view class="describ"> -->
50   - <uni-collapse accordion="true" style="justify-content: space-around;width: 196px;">
51   - <uni-collapse-item
52   - showAnimation='true'
53   - :title="item.tag.prod_tag_fun[0].label&&item.tag.prod_tag_fun[1].label?item.tag.prod_tag_fun[0].label+'/'+item.tag.prod_tag_fun[1].label+'...':'暂无数据'">
54   - <text class="describ">
55   - <block
56   - v-for="tag in item.tag.prod_tag_fun"
57   - :key="tag.value"
58   - >
59   - {{tag.label+`&nbsp;&nbsp;`}}
60   - </block>
61   - </text>
62   - <!-- <text>
63   - <block v-for="tag in item.tag.prod_tag_style" :key="tag.value">
64   - {{tag.label+`&nbsp;&nbsp;`}}
65   - </block>
66   - </text> -->
67   - </uni-collapse-item>
68   - </uni-collapse>
69   - <!-- <view v-bind:class="collapseList[index]? 'icon':'iconed'"></view> -->
70   - <!-- </view> -->
  49 + <view class="describ">
  50 + <view class="people">
  51 + 使用人:{{item.peopleName}}
  52 + </view>
  53 + <view class="skuInfo">
  54 + {{item.sku_name}}
  55 + </view>
  56 + </view>
71 57 <view class="priceBox">
72 58 <view class="price">¥{{item.nowPrice*item.num}}</view>
73 59 <text class="maxCount">(限购{{maxCount}}副)</text>
... ... @@ -95,12 +81,7 @@
95 81 <view class="footer">
96 82 <view class="footerLeft">实付金额:<text>¥{{totalPrice}}</text></view>
97 83 <view class="footerRight">
98   - <navigator
99   - url="/pages/confirmOrder/confirmOrder"
100   - hover-class="navigator-hover"
101   - >
102   - <view class="paybtn">立即结算</view>
103   - </navigator>
  84 + <view class="paybtn" @click="toComfirmOrder">立即结算</view>
104 85 </view>
105 86 </view>
106 87  
... ... @@ -108,12 +89,10 @@
108 89 </template>
109 90  
110 91 <script>
111   -import UniCollapse from '@/components/UniCollapse/UniCollapse.vue'
112   -import UniCollapseItem from '@/components/UniCollapseItem/UniCollapseItem.vue'
  92 +
113 93 import store from '@/store'
114 94  
115 95 export default {
116   - components: { UniCollapse, UniCollapseItem },
117 96 data() {
118 97 return {
119 98 totalPrice: 0,
... ... @@ -123,10 +102,12 @@ export default {
123 102 }
124 103 },
125 104 computed: {
126   -
  105 + // skInfo(){
  106 + // return filters()
  107 + // }
127 108 cartList() {
128 109 // console.log('cart-list', this.$store.state.cart.cartList);
129   - this.totalPrice=0
  110 + // this.totalPrice=0
130 111 return this.$store.state.cart.cartList
131 112 },
132 113 childIsOpen() {
... ... @@ -165,6 +146,14 @@ export default {
165 146 complete: () => {},
166 147 })
167 148 },
  149 + toComfirmOrder(){
  150 + uni.navigateTo({
  151 + url:`../confirmOrder/confirmOrder`,
  152 + fail(res) {
  153 + console.log(res)
  154 + }
  155 + })
  156 + },
168 157 counter(index, isadd, item) {
169 158 // console.log('===>>counter ===>num',num)
170 159 // console.log('===>>counter ===>isadd',isadd)
... ... @@ -410,49 +399,16 @@ export default {
410 399 }
411 400 .describ {
412 401 width: 100%;
413   - // min-height: 80rpx;
  402 + min-height: 80rpx;
414 403 // box-sizing: border-box;
415 404 // padding: 10rpx;
416 405 font-size: 20rpx;
417 406 letter-spacing: -0.23px;
418 407 text-align: justify;
419 408 color: #999999;
420   - // background: #F9F9F9;
421   - // display: flex;
422   - // justify-content: center;
423   - // align-items: center;
424   - // text{
425   - // text-overflow: -o-ellipsis-lastline;
426   - // overflow: hidden;
427   - // text-overflow: ellipsis;
428   - // display: -webkit-box;
429   - // -webkit-line-clamp: 2;
430   - // line-clamp: 2;
431   - // -webkit-box-orient: vertical;
432   - // }
433   - // .icon {
434   - // width: 0;
435   - // height: 0;
436   - // border-left: 5px transparent;
437   - // border-right: 5px transparent;
438   - // border-top: 5px #979797;
439   - // border-bottom: 0 transparent;
440   - // border-style: solid;
441   - // position: relative;
442   - // margin-left: 10px;
443   - // // transform: scaleY(-1);
444   - // }
445   - // .icon::after{
446   - // content: '';
447   - // position: absolute;
448   - // top: -6.5px;
449   - // left: -5px;
450   - // border-left: 5px transparent;
451   - // border-right: 5px transparent;
452   - // border-top: 5px #FFFFFF;
453   - // border-bottom: 0 transparent;
454   - // border-style: solid;
455   - // }
  409 + view{
  410 + margin: 10rpx 0 10rpx 0 ;
  411 + }
456 412 }
457 413 .priceBox {
458 414 display: flex;
... ...
src/pages/frameDetail/components/BottomSheet.vue
... ... @@ -241,7 +241,15 @@
241 241 </view>
242 242 <view
243 243 class="button"
  244 + @click.native="addCart"
  245 + v-if="isCart"
  246 + >
  247 + 加入购物车
  248 + </view>
  249 + <view
  250 + class="button"
244 251 @click="toComfirmOrder"
  252 + v-else
245 253 >
246 254 立即结算
247 255 </view>
... ... @@ -262,7 +270,8 @@ import store from &#39;@/store&#39;
262 270 props: {
263 271 isShowBottom : Boolean,
264 272 pid: Number,
265   - goodInfo:Object
  273 + goodInfo:Object,
  274 + isCart:Boolean
266 275 },
267 276 data() {
268 277 return {
... ... @@ -379,6 +388,26 @@ import store from &#39;@/store&#39;
379 388 },
380 389 name : "bottomSheet",
381 390 methods: {
  391 + addCart(){
  392 + const that = this
  393 + const checkedSKUName = [that.goodInfo.attrList[0].meta_name,that.goodInfo.attrList[1].meta_name]
  394 + const checkedSKU = []
  395 + let j;
  396 + for (let i = 0;i<that.current.length;i++) {
  397 + checkedSKU.push(that.goodInfo.attrList[i].attr[that.current[i]])
  398 + // console.log('i', i, j, i !== this.current.length - 1)
  399 + if (i !== this.current.length - 1) {
  400 + // 后续需修改算法:目前暂定只有两个参数选择,后续若有多个参数需要修改实现自适应
  401 + j = this.current[i] * this.attrList[1].attr.length
  402 + } else {
  403 + j += this.current[i]
  404 + }
  405 + }
  406 + let sk_id = this.skuList[j].sk_id
  407 + console.log('选择的商品sk_id',sk_id,'选择的商品参数',checkedSKU)
  408 + this.$emit("addCart",this.mp_id,this.count,checkedSKU,sk_id)//添加购物车
  409 + this.$emit("closeBottom")//关闭弹窗
  410 + },
382 411 onClickLoveItem(index,name){
383 412 const loveList = this.loveList
384 413 for (let index = 0; index < loveList.length; index++) {
... ...
src/pages/frameDetail/frameDetail.vue
... ... @@ -317,16 +317,17 @@
317 317 <view class="botton_2">
318 318 <view
319 319 class="botton_input"
320   - @tap="addCart()"
  320 + @tap="showBottom(true)"
321 321 >加入购物车</view>
322 322 <view
323 323 class="botton_now"
324 324  
325   - @click="showBottom()"
  325 + @click="showBottom(false)"
326 326 >立即购买</view>
327 327 </view>
328 328 </view>
329   - <BottomSheet v-if="isShowBottom" :pid="pid" :goodInfo="goodInfo" :isShowBottom="isShowBottom" @closeBottom="closeBottom"></BottomSheet>
  329 + <BottomSheet v-if="isShowBottom" :isCart="isCart" @addCart="addCart"
  330 + :pid="pid" :goodInfo="goodInfo" :isShowBottom="isShowBottom" @closeBottom="closeBottom"></BottomSheet>
330 331 </view>
331 332 </template>
332 333  
... ... @@ -339,17 +340,10 @@ export default {
339 340 },
340 341 data () {
341 342 return {
  343 + isCart:Boolean,
342 344 isShowBottom : false, //底部弹窗开关
343 345 test: '',
344 346 goodType: 2,
345   - pid: 0,
346   - // 购物车数据
347   - addCartList: {
348   - mp_id: 0,
349   - sk_id: 0,
350   - num: 1,
351   - price: '',
352   - },
353 347 screenItems: [
354 348 { current: 0, text: '商品介绍' },
355 349 { current: 1, text: '规格参数' },
... ... @@ -388,7 +382,20 @@ export default {
388 382 label: '眼镜盒',
389 383 value: '262',
390 384 }],
391   - },
  385 + },
  386 +
  387 + pid: 0,
  388 + // 购物车数据
  389 + addCartList: {
  390 + uid: Number,//用户的唯一识别码
  391 + openid: String,
  392 + mp_id: Number,//使用人
  393 + sk_id: Number,//产品的sku_id
  394 + num: Number,//购买数量
  395 + pid: Number,//产品id
  396 + price: Number,//价格
  397 + checkedSKU:Object//产品信息
  398 + },
392 399 }
393 400 },
394 401 onLoad: function ({ pid, sk_id: skId }) {
... ... @@ -407,10 +414,11 @@ export default {
407 414 this.tag = this.goodInfo.tag
408 415 this.test = this.goodInfo.prodIntro1
409 416 this.test = this.test.replace(/\<img/gi, '<img style="max-width:100%;height:auto"')
410   - // addCart
  417 + // addCart
  418 + this.addCartList.uid = this.$store.state.user.userInfo.uid
  419 + this.addCartList.openid = this.$store.state.user.userInfo.openid
  420 + this.addCartList.pid = this.goodInfo.pid
411 421 this.addCartList.price = this.goodInfo.priceArea.Min_Price
412   - this.addCartList.sk_id = this.goodInfo.skuList[0].sk_id
413   - this.addCartList.mp_id = this.goodInfo.glassData.mp_id
414 422 })
415 423 store.dispatch('cart/getCartList')
416 424 // console.log(this.$store.state.user.userInfo.uid + 'ssss')
... ... @@ -429,7 +437,8 @@ export default {
429 437 },
430 438 methods: {
431 439 //底部弹窗开关
432   - showBottom(){
  440 + showBottom(isCart){
  441 + this.isCart = isCart;
433 442 this.isShowBottom = true;
434 443 },
435 444 closeBottom(){
... ... @@ -445,20 +454,19 @@ export default {
445 454 })
446 455 },
447 456 // 加入购物车
448   - addCart () {
449   - store.dispatch('cart/addCart', {
450   - uid: this.$store.state.user.userInfo.uid,
451   - openid: this.$store.state.user.userInfo.openid,
452   - mp_id: this.addCartList.mp_id,
453   - sk_id: this.addCartList.sk_id,
454   - num: this.addCartList.num,
455   - pid: this.pid,
456   - price: this.addCartList.price,
457   - })
458   - // 再次请求购物车接口,实现实时更新
459   - store.dispatch('cart/getCartList', {
460   - uid: this.$store.state.user.userInfo.uid,
461   - })
  457 + addCart (mp_id,num,checkedSKU,sk_id) {
  458 + this.addCartList.mp_id = mp_id
  459 + this.addCartList.sk_id = sk_id
  460 + this.addCartList.num = num
  461 + this.addCartList.checkedSKU = checkedSKU
  462 + console.log('添加购物车的参数',this.addCartList)
  463 + store.dispatch('cart/addCart', this.addCartList).then((res)=>{
  464 + console.log('*-*-*-*--*-',res)
  465 + // 再次请求购物车接口,实现实时更新
  466 + store.dispatch('cart/getCartList', {
  467 + uid: this.$store.state.user.userInfo.uid,
  468 + })
  469 + })
462 470 },
463 471 goPerchase () {
464 472 // switch (this.updateGoodType) {
... ...
src/store/modules/cart.js
... ... @@ -28,21 +28,16 @@ const mutations = {
28 28  
29 29 const actions = {
30 30 // 获取购物车列表
31   - getCartList({ commit }, param) {
32   - request({
  31 + getCartList({ commit }, param) {
  32 + return new Promise((resolve) => request({
33 33 url: cartList,
34 34 data: param,
35 35 success: (res) => {
36 36 console.log('cart===>接口数据', res.data.data)
37   - commit('INIT', res.data.data)
  37 + commit('INIT', res.data.data)
  38 + resolve(res.data.data)
38 39 },
39   - // fail: (res) => {
40   - // console.log('fail status === > ', res)
41   - // },
42   - // complete: (res) => {
43   - // console.log('complete status === > ', res)
44   - // },
45   - })
  40 + }))
46 41 },
47 42 // 修改购物车数量
48 43 modiCart({ commit }, param) {
... ... @@ -87,21 +82,22 @@ const actions = {
87 82 // 添加到购物车
88 83 addCart({ commit }, param) {
89 84 console.log('请求接口开始')
90   - request({
  85 + return new Promise((resolve) => request({
91 86 url: cartAdd,
92 87 data: param,
93 88 success: (res) => {
94 89 console.log('add-parm', param)
95 90 console.log('addcart===>res.data===>', res.data)
96   - // commit('INIT', res.data.data)
  91 + // commit('INIT', res.data.data)
  92 + resolve(res.data)
97 93 },
98 94 fail: (res) => {
99   - console.log('fail status === > ', res)
  95 + console.log('添加购物车失败 === > ', res)
100 96 },
101 97 complete: (res) => {
102   - console.log('complete status === > ', res)
  98 + console.log('添加购物车完成 === > ', res)
103 99 },
104   - })
  100 + }))
105 101 },
106 102 }
107 103  
... ...