1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283 |
- export default{
- namespaced:true,
- state:()=>({
- //购物车的数组,用来储存购物车中每个商品的信息对象
- //每个商品的信息对象,都包含如下六个属性
- //{goods_id,goods_name,goods_price,goods_count,goods_small_logo,goods_state}
- cart:JSON.parse(uni.getStorageSync('cart')||'[]')
- }),
- mutations:{
- addToCart(state,goods){
- const findResult = state.cart.find(x => x.goods_id===goods.goods_id)
- //console.log(findResult);
- if(!findResult){
- state.cart.push(goods)
- }
- else{
- findResult.goods_count++
- }
- //console.log(state.cart);
- this.commit('m_cart/saveToStorage')
- },
- saveToStorage(state){
- uni.setStorageSync('cart',JSON.stringify(state.cart))
- },
- //更新购物车中商品的勾选状态
- updateGoodsState(state,goods){
- const findResult = state.cart.find(x=>x.goods_id===goods.goods_id)
- //console.log(findResult);
- if(findResult){
- findResult.goods_state=goods.goods_state
- //持久化储存本地
- this.commit('m_cart/saveToStorage')
- }
- },
- //更新商品的数量
- updateGoodsCount(state,goods){
- const findResult = state.cart.find(x=>x.goods_id===goods.goods_id)
- if(findResult){
- findResult.goods_count=goods.goods_count
- this.commit('m_cart/saveToStorage')
- }
- },
- //根据ID删除对应的商品
- removeGoodsById(state,goods_id){
- state.cart = state.cart.filter(x=>x.goods_id!==goods_id)
- this.commit('m_cart/saveToStorage')
- },
- //更新购物车中所有 商品的勾选状态
- updateAllGoodsState(state,newState){
- state.cart.forEach(x=>x.goods_state = newState)
- this.commit('m_cart/saveToStorage')
- },
- //清空购物车
- clearCart(state){
- state.cart = []
- this.commit('m_cart/saveToStorage')
- }
- },
- getters:{
- //购物车所有商品的总数量
- total(state){
- // let c=0
- // state.cart.forEach(x=>c+=x.goods_count)
- // return c
- return state.cart.reduce((total,item)=>total+=item.goods_count,0)
- },
- //购物车中已勾选商品的数量
- checkedCount(state){
- return state.cart.filter(x=>x.goods_state).reduce((total,item)=> total += item.goods_count,0)
- },
- //以勾选商品的总价格
- checkedGoodsAmount(state){
- return state.cart.filter(x=>x.goods_state).reduce((total,item)=>total+=item.goods_count*item.goods_price,0).toFixed(2)
- },
- getCart(state){
- return state.cart
- }
- }
- }
|