From 1d1e327a1cbf8bd822078a9f71894f25ddcee437 Mon Sep 17 00:00:00 2001
From: queenwuli <942534046@qq.com>
Date: Mon, 11 Jan 2021 10:32:49 +0800
Subject: [PATCH] gx

---
 hive-app/pages/workbench/selectProduct/index.vue |  106 ++++++++++++++++++++++++++++++++++++++++++++--------
 1 files changed, 89 insertions(+), 17 deletions(-)

diff --git a/hive-app/pages/workbench/selectProduct/index.vue b/hive-app/pages/workbench/selectProduct/index.vue
index 2fa735d..fbc7de0 100644
--- a/hive-app/pages/workbench/selectProduct/index.vue
+++ b/hive-app/pages/workbench/selectProduct/index.vue
@@ -18,7 +18,7 @@
 				    </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>
@@ -39,6 +39,9 @@
 						</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">
@@ -60,12 +63,14 @@
 	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{
@@ -74,7 +79,9 @@
 				goodsList: [],
 				cateId: null,//当前产品类别id
 				selectItems: [],
-				queryKey: ''
+				queryKey: '',
+				loadStatus: 'more',
+				pageNum: 1
 			}
 		},
 		computed:{
@@ -105,7 +112,24 @@
 			});
 			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()
 			},
@@ -122,15 +146,32 @@
 				})
 			},
 			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;
+								}
+							})
 						});
 					}
 				})
@@ -138,7 +179,7 @@
 			// 搜索
 			search(val){
 				this.queryKey = val;
-				this.loadGoodsList();
+				this.reloadData();
 			},
 			getParentId(){
 				let arr = this.goodsTypeList.filter((item) => {
@@ -160,31 +201,59 @@
 					return item.parentId===0
 				})
 				this.changeGoodsType(result[index].id);
-				console.log(result)
 			},
 			// 切换商品类型
 			changeGoodsType(id){
 				this.cateId = id;
-				this.loadGoodsList();
+				this.reloadData();
 			},
 			addGoods(goods){
-				let index = this.selectItems.indexOf(goods);
-				goods.num++;
+				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(index > -1){
-					this.selectItems[index].num = goods.num;
+				if(selectIndex > -1){
+					this.selectItems[selectIndex].num = goods.num;
 				}else{
 					this.selectItems.push(goods);
 				}
+				
 			},
 			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(){
@@ -262,6 +331,9 @@
 		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;

--
Gitblit v1.9.1