const app = getApp();
|
// import { getPublicImage } from '@/assets/js/middleGround/tool.js'
|
import {
|
loginInfo
|
} from '../../assets/js/login';
|
import {
|
getPublicImage
|
} from '../../assets/js/middleGround/tool';
|
import Toast from 'tdesign-miniprogram/toast/index';
|
|
|
Page({
|
data: {
|
price: '',
|
loading: true,
|
hidden: true,
|
swipeOpened: false,
|
onDisabled: false,
|
imgUrl: [],
|
shoppingCartData: [],
|
checkAll: false,
|
checkedList: [],
|
selectedCount: 0,
|
totalPrice: 0.00,
|
type: '',
|
start: 1,
|
totalSize: '',
|
isMore: null,
|
bookId: '',
|
bookName: ''
|
},
|
|
onLoad(options) {
|
wx.setNavigationBarTitle({
|
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,
|
})
|
},
|
|
// 金额显示.00格式
|
numFormat(value) {
|
if (!value) return "0.00";
|
value = Number(value).toFixed(2);
|
var intPart = Math.trunc(value); // 获取整数部分
|
var intPartFormat = intPart
|
.toString()
|
.replace(/(\d)(?=(?:\d{3})+$)/g, "$1,"); // 将整数部分逢三一断
|
var floatPart = ".00"; // 预定义小数部分
|
var value2Array = value.split(".");
|
// =2表示数据有小数位
|
if (value2Array.length === 2) {
|
floatPart = value2Array[1].toString(); // 拿到小数部分
|
if (floatPart.length === 1) {
|
return `${intPartFormat}.${floatPart}0`;
|
}
|
return `${intPartFormat}.${floatPart}`;
|
}
|
return intPartFormat + floatPart;
|
},
|
onDelete(e) {
|
const item = e.currentTarget.dataset.item;
|
app.MG.store.delShoppingCart({
|
ids: [item.id]
|
}).then(res => {
|
this.shoppingCartGet();
|
wx.showToast({
|
title: '删除图书成功',
|
icon: 'none'
|
});
|
this.setData({
|
totalPrice: 0.00,
|
selectedCount: 0,
|
checkAll: false,
|
})
|
});
|
},
|
|
shoppingCartGet() {
|
let query = {
|
start: 0,
|
size: this.data.start * 4,
|
filterList: [],
|
searchList: []
|
};
|
app.MG.store.getShoppingCartProductList(query).then(res => {
|
console.log(res);
|
this.setData({
|
totalSize: res.totalSize
|
})
|
res.datas.forEach(item => {
|
this.setData({
|
bookId: res.id,
|
bookName: res.name,
|
price: item.saleMethod.price.toFixed(2),
|
})
|
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
|
item.saleMethod.price = this.numFormat(item.saleMethod.price)
|
});
|
|
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) {
|
const checked = e.detail.value.length > 0;
|
const items = this.data.shoppingCartData.map(item => {
|
item.checked = checked;
|
return item;
|
});
|
this.setData({
|
shoppingCartData: items,
|
checkAll: checked
|
});
|
this.calculateSelectedCount();
|
this.calculateTotalPrice();
|
},
|
|
HandelItemChange(e) {
|
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
|
});
|
this.calculateSelectedCount();
|
this.calculateTotalPrice();
|
},
|
|
calculateSelectedCount() {
|
const selectedItems = this.data.shoppingCartData.filter(item => item.checked);
|
const selectedCount = selectedItems.length;
|
this.setData({
|
selectedCount
|
});
|
},
|
|
calculateTotalPrice() {
|
const selectedItems = this.data.shoppingCartData.filter(item => item.checked);
|
const totalPrice = selectedItems.reduce((total, item) => total + parseFloat(item.saleMethod.price), 0);
|
this.setData({
|
totalPrice: totalPrice.toFixed(2)
|
});
|
},
|
|
|
|
|
|
goPaymentPage() {
|
|
// 首页测试登录功能,后续注释
|
// 检查登录状态
|
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 {
|
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
|
})
|
}
|
});
|