2025-11-05 10:33:46 +08:00

105 lines
2.8 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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,
})),
});
});
},
});