105 lines
2.8 KiB
TypeScript
105 lines
2.8 KiB
TypeScript
import { apiGetCartList } from "../../api/index/index";
|
||
|
||
// pages/index/index.ts
|
||
Page({
|
||
data: {
|
||
isManage: false,
|
||
startX: 0,
|
||
commodities: [
|
||
/* {
|
||
id: 1,
|
||
name: "水果鲜花是非得失发多少覅是范德萨司法的",
|
||
icon: "🍎",
|
||
active: false,
|
||
},
|
||
{ id: 2, name: "蔬菜豆制品", icon: "🥬", active: false },
|
||
{ id: 3, name: "肉禽蛋", icon: "🥩", active: false },
|
||
{ id: 4, name: "海鲜水产", icon: "🐟", active: false },
|
||
{ id: 5, name: "乳品烘焙", icon: "🥛", active: false },
|
||
{ id: 6, name: "熟食快", icon: "🍱", active: false }, */
|
||
],
|
||
},
|
||
|
||
onLoad() {},
|
||
// 点击管理按钮
|
||
onManage() {
|
||
this.setData({ isManage: !this.data.isManage });
|
||
this.setData({
|
||
commodities: this.data.commodities.map((item) => ({
|
||
...item,
|
||
active: this.data.isManage,
|
||
})),
|
||
});
|
||
},
|
||
// 触摸开始
|
||
handleTouchStart(e: any) {
|
||
this.setData({
|
||
startX: e.touches[0].clientX, // 记录起始X坐标
|
||
});
|
||
},
|
||
// 触摸移动
|
||
handleTouchMove(e: any) {
|
||
const { id, active } = e.currentTarget.dataset.item;
|
||
const moveX = e.touches[0].clientX - this.data.startX;
|
||
// 只响应向左滑动(moveX为负值)
|
||
if (moveX < -20) {
|
||
if (active) return;
|
||
const data = this.data.commodities.map((item) => {
|
||
item.active = item.id === id;
|
||
return item;
|
||
});
|
||
this.setData({ commodities: data });
|
||
} else {
|
||
this.setData({
|
||
commodities: this.data.commodities.map((item) => ({
|
||
...item,
|
||
active: false,
|
||
})),
|
||
});
|
||
}
|
||
},
|
||
onChangeNum(e: any) {
|
||
const { type, id } = e.currentTarget.dataset;
|
||
const data = this.data.commodities.map((item) => {
|
||
if (item.id === id) {
|
||
item.num = type === "minus" ? item.num - 1 : item.num + 1;
|
||
item.price = item.num * item.singlePrice;
|
||
}
|
||
return item;
|
||
});
|
||
this.setData({
|
||
commodities: data,
|
||
});
|
||
},
|
||
onChangeCheckbox(e: any) {
|
||
// todo
|
||
},
|
||
// 删除商品
|
||
onDeleteItem(e: any) {
|
||
const { id } = e.currentTarget.dataset;
|
||
const data = this.data.commodities.filter((item) => item.id !== id);
|
||
this.setData({ commodities: data });
|
||
},
|
||
onShow() {
|
||
apiGetCartList({ buyerId: 2 }).then((res: any) => {
|
||
console.warn("----- my data is res2555: ", res);
|
||
this.setData({
|
||
commodities: res.data.rows.map((item: any) => ({
|
||
id: item.id,
|
||
name: item.productName,
|
||
icon: item.icon,
|
||
originalPrice: item.originalPrice,
|
||
singlePrice: item.singlePrice,
|
||
price: item.allPrice,
|
||
num: item.num,
|
||
checked: false,
|
||
attribute: JSON.parse(item.skuInfo)
|
||
.map((item) => item.propertyValue)
|
||
.join("-"),
|
||
active: false,
|
||
})),
|
||
});
|
||
});
|
||
},
|
||
});
|