| | |
| | | </uni-collapse-item> |
| | | </uni-collapse> |
| | | </scroll-view> |
| | | <scroll-view class="list-right" scroll-y="true"> |
| | | <scroll-view class="list-right" scroll-y="true" @scrolltolower="scrolltolower()"> |
| | | <navigator :url="'../productDetail/index?goodsType='+item.goodsType+'&id='+item.id" hover-class="none" v-for="item in goodsList"> |
| | | <view class="list-right-row"> |
| | | <image class="product-img" :src="item.img?item.img:'../../../static/images/no-img.png'"></image> |
| | |
| | | </view> |
| | | </view> |
| | | </navigator> |
| | | <view v-if="goodsList.length"> |
| | | <uni-load-more :status="loadStatus" color="#a5abaf"></uni-load-more> |
| | | </view> |
| | | </scroll-view> |
| | | </view> |
| | | <view class="footer"> |
| | |
| | | </view> |
| | | <button class="blue-btn btn mr-0" @click="submit" :disabled="isEnableSumbit">提交订单</button> |
| | | </view> |
| | | <shopping-cart ref="shopCart" :list="selectItems" @addGoods="addGoods" @decreaseGoods="decreaseGoods" @reset="clearShopCart"></shopping-cart> |
| | | <shopping-cart ref="shopCart" :list="selectItems" @freeChange="freeChange" @addGoods="addGoods" @decreaseGoods="decreaseGoods" @reset="clearShopCart"></shopping-cart> |
| | | </view> |
| | | </template> |
| | | |
| | |
| | | import uniCollapseItem from '../../../components/uni-collapse-item/uni-collapse-item.vue' |
| | | import searchBar from '../../../components/searchBar/index.vue'; |
| | | import shoppingCart from './shoppingCart.vue' |
| | | import uniLoadMore from '@/components/uni-load-more/uni-load-more.vue'; |
| | | export default { |
| | | components:{ |
| | | uniCollapse, |
| | | uniCollapseItem, |
| | | searchBar, |
| | | shoppingCart |
| | | shoppingCart, |
| | | uniLoadMore |
| | | }, |
| | | data(){ |
| | | return{ |
| | |
| | | goodsList: [], |
| | | cateId: null,//当前产品类别id |
| | | selectItems: [], |
| | | queryKey: '' |
| | | queryKey: '', |
| | | loadStatus: 'more', |
| | | pageNum: 1 |
| | | } |
| | | }, |
| | | computed:{ |
| | |
| | | totalAmount(){ |
| | | let amount = 0; |
| | | this.selectItems.forEach((item) => { |
| | | amount += item.price * item.num; |
| | | if(!item.isFree){ |
| | | amount += item.price * item.num; |
| | | } |
| | | }) |
| | | return amount; |
| | | }, |
| | |
| | | }); |
| | | this.loadGoodsTypeList() |
| | | }, |
| | | onPullDownRefresh(){ |
| | | this.reloadData(); |
| | | let timer = setTimeout(function () { |
| | | uni.startPullDownRefresh(); |
| | | clearTimeout(timer); |
| | | timer = null; |
| | | }, 800); |
| | | }, |
| | | methods:{ |
| | | reloadData(){ |
| | | this.goodsList = []; |
| | | this.pageNum = 1; |
| | | this.loadStatus = 'more'; |
| | | this.loadGoodsList(); |
| | | }, |
| | | scrolltolower(){ |
| | | this.loadGoodsList() |
| | | }, |
| | | openShoppingCart(){ |
| | | this.$refs.shopCart.toggle() |
| | | }, |
| | |
| | | }) |
| | | }, |
| | | loadGoodsList(){ |
| | | if(this.loadStatus!=='more'){ |
| | | return; |
| | | } |
| | | this.$httpUtils.request('/api/order/findShoppingGoods',{ |
| | | cateId: this.cateId, |
| | | pageNum: 1, |
| | | pageSize: 100, |
| | | pageNum: this.pageNum, |
| | | pageSize: 10, |
| | | queryKey: this.queryKey |
| | | },'POST').then((res) => { |
| | | if(res.status == 200){ |
| | | this.goodsList = res.rows.map((item) => { |
| | | let result = res.rows.map((item) => { |
| | | return Object.assign(item, {num: 0}); |
| | | }); |
| | | if(result.length < 10){ |
| | | this.loadStatus = 'noMore'; |
| | | } else { |
| | | this.pageNum ++ ; |
| | | this.loadStatus = 'more'; |
| | | } |
| | | this.goodsList = this.goodsList.concat(result); |
| | | this.goodsList.forEach((item) => { |
| | | this.selectItems.forEach((op) => { |
| | | if(item.id == op.id){ |
| | | item.num = op.num; |
| | | } |
| | | }) |
| | | }); |
| | | } |
| | | }) |
| | |
| | | // 搜索 |
| | | search(val){ |
| | | this.queryKey = val; |
| | | this.loadGoodsList(); |
| | | this.reloadData(); |
| | | }, |
| | | getParentId(){ |
| | | let arr = this.goodsTypeList.filter((item) => { |
| | |
| | | return item.parentId===0 |
| | | }) |
| | | this.changeGoodsType(result[index].id); |
| | | console.log(result) |
| | | }, |
| | | // 切换商品类型 |
| | | changeGoodsType(id){ |
| | | this.cateId = id; |
| | | this.loadGoodsList(); |
| | | this.reloadData(); |
| | | }, |
| | | freeChange(data){ |
| | | data.goods.isFree = !data.goods.isFree; |
| | | this.$set(this.selectItems, data.index, data.goods) |
| | | }, |
| | | // 添加商品 |
| | | addGoods(goods){ |
| | | let index = this.selectItems.indexOf(goods); |
| | | goods.num++; |
| | | // 该商品若已在购物车,则购物车数量上+1,否则加入购物车 |
| | | if(index > -1){ |
| | | this.selectItems[index].num = goods.num; |
| | | }else{ |
| | | this.selectItems.push(goods); |
| | | goods.num ++ |
| | | // 所有商品列表的下标 |
| | | let ids = this.goodsList.map((item) => { |
| | | return item.id; |
| | | }) |
| | | let index = ids.indexOf(goods.id); |
| | | if(index>-1){ |
| | | this.goodsList[index].num = goods.num; |
| | | } |
| | | |
| | | // 选中商品的下标 |
| | | let selectIds = this.selectItems.map((item) => { |
| | | return item.id; |
| | | }) |
| | | let selectIndex = selectIds.indexOf(goods.id); |
| | | |
| | | // 该商品若已在购物车,则购物车数量上+1,否则加入购物车 |
| | | if(selectIndex > -1){ |
| | | this.selectItems[selectIndex].num = goods.num; |
| | | }else{ |
| | | this.selectItems.push(Object.assign(goods, {isFree: false})); |
| | | } |
| | | |
| | | }, |
| | | decreaseGoods(goods){ |
| | | let index = this.selectItems.indexOf(goods); |
| | | goods.num = goods.num <= 0 ? 0 : goods.num - 1; |
| | | // 所有商品列表的下标 |
| | | let ids = this.goodsList.map((item) => { |
| | | return item.id; |
| | | }) |
| | | let index = ids.indexOf(goods.id); |
| | | if(index>-1){ |
| | | this.goodsList[index].num = goods.num; |
| | | } |
| | | |
| | | // 选中商品的下标 |
| | | let selectIds = this.selectItems.map((item) => { |
| | | return item.id; |
| | | }) |
| | | let selectIndex = selectIds.indexOf(goods.id); |
| | | |
| | | // 该商品若已在购物车,则购物车数量上-1,否则从购物车删除 |
| | | if(index > -1 && this.selectItems[index].num >= 1){ |
| | | this.selectItems[index].num = goods.num; |
| | | if(goods.num >= 1){ |
| | | this.selectItems[selectIndex].num = goods.num; |
| | | }else{ |
| | | this.selectItems.splice(index, 1); |
| | | this.selectItems.splice(selectIndex, 1); |
| | | } |
| | | }, |
| | | clearShopCart(){ |
| | |
| | | border-bottom: 0; |
| | | } |
| | | .uni-collapse{ |
| | | background: transparent; |
| | | background-color: #F6F6F8!important; |
| | | } |
| | | |
| | | .uni-collapse-cell{ |
| | | border-color: #F6F6F8!important; |
| | | } |
| | | .uni-collapse-cell__title:active, .uni-collapse-cell--hover, .uni-collapse-cell--open, .uni-collapse-cell--disabled{ |
| | | background-color: #FFFFFF!important; |
| | | } |
| | |
| | | border-radius: 4px; |
| | | font-size: 13px; |
| | | } |
| | | .list-right-row:nth-last-of-type(1){ |
| | | margin-bottom: 0; |
| | | } |
| | | .list-right-row .product-img{ |
| | | width: 66px; |
| | | height: 66px; |