queenwuli
2021-01-13 6e54af776db885ad1a22ec582bdc97d7e1273c6c
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">
@@ -51,7 +54,7 @@
         </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>
@@ -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:{
@@ -90,7 +97,9 @@
         totalAmount(){
            let amount = 0;
            this.selectItems.forEach((item) => {
               amount += item.price * item.num;
               if(!item.isFree){
                  amount += item.price * item.num;
               }
            })
            return amount;
         },
@@ -105,7 +114,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 +148,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 +181,7 @@
         // 搜索
         search(val){
            this.queryKey = val;
            this.loadGoodsList();
            this.reloadData();
         },
         getParentId(){
            let arr = this.goodsTypeList.filter((item) => {
@@ -160,31 +203,64 @@
               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(){
@@ -237,9 +313,11 @@
      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;
   }
@@ -262,6 +340,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;