yiming
2024-04-15 f86bd75868eb9b0e81d5cb43d6e76c08a0da3083
pages/cart/index.js
@@ -1,17 +1,32 @@
const app = getApp();
// import { getPublicImage } from '@/assets/js/middleGround/tool.js'
import { getPublicImage } from '../../assets/js/middleGround/tool';
import {
  loginInfo
} from '../../assets/js/login';
import {
  getPublicImage
} from '../../assets/js/middleGround/tool';
import Toast from 'tdesign-miniprogram/toast/index';
Page({
  data: {
    loading: true,
    hidden: true,
    swipeOpened: false,
    onDisabled: false,
    imgUrl: [],
    shoppingCartData: [],
    checkAll: false,
    checkedList: [],
    selectedCount: 0,
    totalPrice: 0.00,
    type: ''
    type: '',
    start: 1,
    totalSize: '',
    isMore: null,
    bookId: '',
    bookName: ''
  },
  onLoad(options) {
@@ -19,7 +34,28 @@
      title: '购物车'
    });
    this.shoppingCartGet();
    this.setData({
      swipeOpened: true
    })
  },
  onShow() {
    this.setData({
      swipeOpened: false
    })
    if (typeof this.getTabBar === 'function' && this.getTabBar()) {
      this.getTabBar().setData({
        active: 3
      })
    }
    this.shoppingCartGet();
    this.setData({
      totalPrice: 0.00,
      selectedCount: 0,
      checkAll: false,
    })
  },
  onDelete(e) {
    const item = e.currentTarget.dataset.item;
@@ -27,32 +63,67 @@
      ids: [item.id]
    }).then(res => {
      this.shoppingCartGet();
      wx.showToast({ title: '你点击了删除', icon: 'none' });
      wx.showToast({
        title: '删除图书成功',
        icon: 'none'
      });
      this.setData({
        totalPrice: 0.00,
        selectedCount: 0,
        checkAll: false,
      })
    });
  },
  shoppingCartGet() {
    let query = {
      start: 0,
      size: 999,
      size: this.data.start * 4,
      filterList: [],
      searchList: []
    };
    app.MG.store.getShoppingCartProductList(query).then(res => {
      res.datas.forEach(item => {
        item.imgUrl = getPublicImage(item.productMonWithLinkDto.product.icon, '', '160');
        console.log(item);
        console.log(item.saleMethod.type, 'item.saleMethod.type')
        this.setData({
          type: item.saleMethod.type == 'createProductItemSaleMethod' ? 'item' : 'product'
        })
      this.setData({
        totalSize: res.totalSize
      })
      res.datas.forEach(item => {
        this.setData({
          bookId: res.id,
          bookName: res.name
        })
        item.imgUrl = getPublicImage(item.productMonWithLinkDto.product.icon, '', '160');
        // this.setData({
        //   type: item.saleMethod.type == 'createProductItemSaleMethod' ? 'item' : 'product'
        // })
        const type = item.saleMethod.type == 'createProductItemSaleMethod' ? 'item' : 'product';
        item.type = type; // 将type设置为item对象的属性,而不是使用setData
        item.name = item.linkCmsItems[0].name ? item.productMonWithLinkDto.product.name + ':' + item.linkCmsItems[0].name : item.productMonWithLinkDto.product.name
      });
      this.setData({
        shoppingCartData: res.datas
      });
      if (this.data.shoppingCartData.length === 0) {
        this.setData({
          onDisabled: true
        })
      } else {
        this.setData({
          onDisabled: false
        })
      }
      setTimeout(() => {
        this.setData({
          loading: false,
          hidden: false,
        })
      }, 600)
    });
    wx.stopPullDownRefresh()
  },
  bottomChange(e) {
@@ -70,18 +141,17 @@
  },
  HandelItemChange(e) {
    const { item } = e.target.dataset;
    const {
      item
    } = e.target.dataset;
    const items = this.data.shoppingCartData
    items.map(eitem => {
      if (eitem.id == item.id) {
        eitem.checked = e.detail.checked
      }
    })
    const data = items.filter(item => item.checked)
    const checkAll = data.length == this.data.shoppingCartData.length
    this.setData({
      shoppingCartData: items,
      checkAll
@@ -105,31 +175,130 @@
      totalPrice: totalPrice.toFixed(2)
    });
  },
  goPaymentPage() {
    const selectedItems = this.data.shoppingCartData.filter(item => item.checked);
    // console.log(selectedItems, 789);
    const selectedIds = selectedItems.map(item => item.id);
    console.log('选中的商品 id:', selectedIds);
    if (selectedIds.length) {
      app.MG.store.shoppingCartCreateOrder({ linkIds: selectedIds }).then(res => {
        console.log(res, 456);
        const url = '/pages/cart/paymentPage/index?orderNumber=' + res.orderNumber
        wx.navigateTo({
          url
        });
    // 首页测试登录功能,后续注释
    // 检查登录状态
    const token = wx.getStorageSync(app.config.tokenKey)
    if (!token) {
      loginInfo(app, (data) => {
        // 如果不是第一次登录,会执行回调
        if (data) {
          const selectedItems = this.data.shoppingCartData.filter(item => item.checked);
          // console.log(selectedItems, 789);
          const selectedIds = selectedItems.map(item => item.id);
          console.log('选中的商品 id:', selectedIds);
          if (selectedIds.length) {
            let data = {
              linkIds: selectedIds
            }
            // '&onNorderSaleMethod=' +
            app.MG.store.shoppingCartCreateOrder(data).then(res => {
              const url = '/pages/cart/paymentPage/index?orderNumber=' + res.orderNumber
              wx.navigateTo({
                url
              });
            })
          } else {
            Toast({
              context: this,
              selector: '#t-toast',
              message: '请选择商品',
              theme: 'warning',
              direction: 'column',
            });
          }
        } else {
          // 出现错误,返回false
        }
      })
    } else {
      Toast({
        context: this,
        selector: '#t-toast',
        message: '请选择商品',
        theme: 'warning',
        direction: 'column',
      });
      const selectedItems = this.data.shoppingCartData.filter(item => item.checked);
      // console.log(selectedItems, 789);
      const selectedIds = selectedItems.map(item => item.id);
      console.log('选中的商品 id:', selectedIds);
      if (selectedIds.length) {
        let data = {
          linkIds: selectedIds
        }
        app.MG.store.shoppingCartCreateOrder(data).then(res => {
          console.log(res.saleMethodLinks[0].orderSaleMethod.id, 'ressss798');
          const url = '/pages/cart/paymentPage/index?orderNumber=' + res.orderNumber + '&onNorderSaleMethod=' + res.saleMethodLinks[0].orderSaleMethod.id
          wx.navigateTo({
            url
          });
        })
      } else {
        Toast({
          context: this,
          selector: '#t-toast',
          message: '请选择商品',
          theme: 'warning',
          direction: 'column',
        });
      }
    }
  },
  onLogin() {
    wx.navigateTo({
      url: '/pages/testLogin/index'
    });
  },
  onScrollToLower() {
    if (this.data.shoppingCartData.length < this.data.totalSize) {
      this.setData({
        isMore: true,
        start: this.data.start + 1
      })
      this.shoppingCartGet()
    } else {
      this.setData({
        isMore: true,
      })
      setTimeout(() => {
        this.setData({
          isMore: false
        })
        console.log('300');
      }, 300)
    }
  },
  // 下拉函数
  onPullDownRefresh() {
    this.setData({
      start: 1,
      checkAll: false,
      selectedCount: 0,
      totalPrice: 0.00,
    })
    console.log(978);
    this.shoppingCartGet()
  },
  async onBook(e) {
    const item = e.currentTarget.dataset.item
    console.log(item);
    let parentData = null;
    parentData = await app.MG.store.getProductBySaleMethod({
      'saleMethodId': item.saleMethod.id
    })
    console.log(parentData)
    let bookId = item.productMonWithLinkDto.product.id;
    if (parentData.parentProduct.length > 0) {
      bookId = parentData.parentProduct[parentData.parentProduct.length - 1].id;
    }
    wx.navigateTo({
      url: '/packageBookService/pages/bookServices/detail/index?id=' + bookId + '&name=' + item.productMonWithLinkDto.product.name
    })
  }
});
});