|
|
|
@ -12,7 +12,34 @@ Page({ |
|
|
|
needPhoneAuth: false, |
|
|
|
// 测试模式开关,用于在未完成微信认证时进行测试
|
|
|
|
testMode: true, |
|
|
|
partnerstatus: '' // 用户入驻状态,用于显示入驻/未入驻
|
|
|
|
partnerstatus: '', // 用户入驻状态,用于显示入驻/未入驻
|
|
|
|
|
|
|
|
// 侧边栏相关
|
|
|
|
showSidebar: false, |
|
|
|
isDragging: false, |
|
|
|
startY: 0, |
|
|
|
currentY: 0, |
|
|
|
sidebarBtnTop: 500, // 初始位置,单位rpx
|
|
|
|
|
|
|
|
// 搜索相关
|
|
|
|
searchKeyword: '', |
|
|
|
selectedRegion: '全国', |
|
|
|
showRegionPicker: false, |
|
|
|
regions: ['全国', '北京', '上海', '广州', '深圳', '天津', '重庆', '河北', '山西', '辽宁', '吉林', '黑龙江', '江苏', '浙江', '安徽', '福建', '江西', '山东', '河南', '湖北', '湖南', '广东', '海南', '四川', '贵州', '云南', '陕西', '甘肃', '青海', '台湾', '内蒙古', '广西', '西藏', '宁夏', '新疆', '香港', '澳门'], |
|
|
|
|
|
|
|
// 商品相关
|
|
|
|
goods: [], |
|
|
|
filteredGoods: [], |
|
|
|
selectedCategory: '全部', |
|
|
|
loadingMore: false, |
|
|
|
hasMoreData: true, |
|
|
|
page: 1, |
|
|
|
pageSize: 10, |
|
|
|
|
|
|
|
// 图片预览相关状态
|
|
|
|
previewImageUrls: [], // 预览的图片URL列表
|
|
|
|
previewImageIndex: 0, // 当前预览图片的索引
|
|
|
|
showImagePreview: false, // 控制图片预览弹窗显示
|
|
|
|
}, |
|
|
|
|
|
|
|
// 跳转到聊天页面
|
|
|
|
@ -67,11 +94,80 @@ Page({ |
|
|
|
} |
|
|
|
}); |
|
|
|
}, |
|
|
|
|
|
|
|
// 切换侧边栏显示
|
|
|
|
toggleSidebar() { |
|
|
|
if (this.data.isDragging) { |
|
|
|
return; |
|
|
|
} |
|
|
|
this.setData({ |
|
|
|
showSidebar: !this.data.showSidebar |
|
|
|
}); |
|
|
|
}, |
|
|
|
|
|
|
|
// 触摸开始事件
|
|
|
|
handleTouchStart(e) { |
|
|
|
this.setData({ |
|
|
|
isDragging: false, |
|
|
|
startY: e.touches[0].clientY |
|
|
|
}); |
|
|
|
}, |
|
|
|
|
|
|
|
// 触摸移动事件
|
|
|
|
handleTouchMove(e) { |
|
|
|
const moveY = e.touches[0].clientY; |
|
|
|
const diffY = moveY - this.data.startY; |
|
|
|
|
|
|
|
// 如果移动距离超过20px,视为拖动
|
|
|
|
if (Math.abs(diffY) > 20) { |
|
|
|
this.setData({ |
|
|
|
isDragging: true |
|
|
|
}); |
|
|
|
|
|
|
|
// 更新按钮位置
|
|
|
|
let newTop = this.data.sidebarBtnTop + diffY * 2; // 转换为rpx
|
|
|
|
|
|
|
|
// 限制按钮在屏幕范围内
|
|
|
|
const screenHeight = wx.getSystemInfoSync().screenHeight * 2; // 转换为rpx
|
|
|
|
const btnHeight = 80; // 按钮高度,单位rpx
|
|
|
|
|
|
|
|
if (newTop < 100) { |
|
|
|
newTop = 100; |
|
|
|
} else if (newTop > screenHeight - btnHeight - 100) { |
|
|
|
newTop = screenHeight - btnHeight - 100; |
|
|
|
} |
|
|
|
|
|
|
|
this.setData({ |
|
|
|
sidebarBtnTop: newTop, |
|
|
|
startY: moveY |
|
|
|
}); |
|
|
|
} |
|
|
|
}, |
|
|
|
|
|
|
|
// 触摸结束事件
|
|
|
|
handleTouchEnd(e) { |
|
|
|
// 如果拖动距离超过屏幕高度的1/3,隐藏按钮
|
|
|
|
const moveY = e.changedTouches[0].clientY; |
|
|
|
const diffY = moveY - this.data.startY; |
|
|
|
const screenHeight = wx.getSystemInfoSync().screenHeight * 2; // 转换为rpx
|
|
|
|
|
|
|
|
if (Math.abs(diffY) > screenHeight / 3) { |
|
|
|
this.setData({ |
|
|
|
sidebarBtnTop: -100 // 隐藏按钮
|
|
|
|
}); |
|
|
|
} |
|
|
|
|
|
|
|
this.setData({ |
|
|
|
isDragging: false |
|
|
|
}); |
|
|
|
}, |
|
|
|
|
|
|
|
onLoad() { |
|
|
|
console.log('首页初始化') |
|
|
|
// 检查本地缓存并恢复登录状态
|
|
|
|
this.checkAndRestoreLoginStatus() |
|
|
|
// 初始化加载商品数据
|
|
|
|
this.loadGoods() |
|
|
|
}, |
|
|
|
|
|
|
|
onShow: function () { |
|
|
|
@ -86,13 +182,442 @@ Page({ |
|
|
|
const app = getApp(); |
|
|
|
app.updateCurrentTab('index'); |
|
|
|
|
|
|
|
// 重新显示tabBar
|
|
|
|
app.globalData.showTabBar = true; |
|
|
|
|
|
|
|
// 检查并恢复登录状态
|
|
|
|
this.checkAndRestoreLoginStatus() |
|
|
|
|
|
|
|
// 刷新商品数据
|
|
|
|
this.refreshGoodsList() |
|
|
|
}, |
|
|
|
|
|
|
|
// 跳转到估价页面
|
|
|
|
|
|
|
|
|
|
|
|
// 格式化毛重显示的辅助函数
|
|
|
|
formatGrossWeight: function(grossWeight, weight) { |
|
|
|
if (grossWeight !== null && grossWeight !== undefined && grossWeight !== '') { |
|
|
|
return grossWeight; |
|
|
|
} |
|
|
|
if (weight !== null && weight !== undefined && weight !== '') { |
|
|
|
return weight; |
|
|
|
} |
|
|
|
return ""; |
|
|
|
}, |
|
|
|
|
|
|
|
// 提取地区中的省份信息
|
|
|
|
extractProvince: function(region) { |
|
|
|
if (!region || typeof region !== 'string') { |
|
|
|
return region; |
|
|
|
} |
|
|
|
|
|
|
|
const provinceEndIndex = region.indexOf('省'); |
|
|
|
const autonomousRegionEndIndex = region.indexOf('自治区'); |
|
|
|
const municipalityEndIndex = region.indexOf('市'); |
|
|
|
const specialRegionEndIndex = region.indexOf('特别行政区'); |
|
|
|
|
|
|
|
if (provinceEndIndex !== -1) { |
|
|
|
return region.substring(0, provinceEndIndex + 1); |
|
|
|
} else if (autonomousRegionEndIndex !== -1) { |
|
|
|
return region.substring(0, autonomousRegionEndIndex + 3); |
|
|
|
} else if (specialRegionEndIndex !== -1) { |
|
|
|
return region.substring(0, specialRegionEndIndex + 5); |
|
|
|
} else if (municipalityEndIndex === 2) { |
|
|
|
return region.substring(0, municipalityEndIndex + 1); |
|
|
|
} |
|
|
|
|
|
|
|
return region; |
|
|
|
}, |
|
|
|
|
|
|
|
// 加载商品数据
|
|
|
|
loadGoods: function(isLoadMore = false) { |
|
|
|
if (isLoadMore && !this.data.hasMoreData) { |
|
|
|
return |
|
|
|
} |
|
|
|
|
|
|
|
const currentPage = isLoadMore ? this.data.page : 1 |
|
|
|
const currentPageSize = this.data.pageSize |
|
|
|
|
|
|
|
this.setData({ |
|
|
|
loadingMore: true |
|
|
|
}) |
|
|
|
|
|
|
|
// 添加时间戳参数防止请求缓存
|
|
|
|
const timestamp = new Date().getTime(); |
|
|
|
|
|
|
|
API.getProductList('published', { |
|
|
|
timestamp: timestamp, |
|
|
|
viewMode: 'shopping', |
|
|
|
page: currentPage, |
|
|
|
pageSize: currentPageSize, |
|
|
|
// 增加搜索关键词和分类参数,与buyer页面保持一致
|
|
|
|
keyword: this.data.searchKeyword, |
|
|
|
category: this.data.selectedCategory === '全部' ? '' : this.data.selectedCategory |
|
|
|
}) |
|
|
|
.then(res => { |
|
|
|
wx.hideLoading(); |
|
|
|
|
|
|
|
if (res.success && res.products) { |
|
|
|
let newGoods = res.products.map(product => { |
|
|
|
// 处理grossWeight为null或无效的情况
|
|
|
|
const grossWeightValue = product.grossWeight !== null && product.grossWeight !== undefined ? product.grossWeight : ''; |
|
|
|
|
|
|
|
// 计算预约人数,增强逻辑确保能正确处理各种情况
|
|
|
|
const selectedValue = product.selected; |
|
|
|
const reservedCountValue = product.reservedCount; |
|
|
|
const reservationCountValue = product.reservationCount; |
|
|
|
|
|
|
|
const finalReservationCount = selectedValue !== undefined && selectedValue !== null ? selectedValue : |
|
|
|
(reservedCountValue !== undefined && reservedCountValue !== null ? reservedCountValue : |
|
|
|
(reservationCountValue || 0)); |
|
|
|
|
|
|
|
// 转换supplyStatus字段值
|
|
|
|
let supplyStatusValue = product.supplyStatus || ''; |
|
|
|
if (['平台货源', '三方认证'].includes(supplyStatusValue)) { |
|
|
|
supplyStatusValue = '现货'; |
|
|
|
} else if (supplyStatusValue === '三方未认证') { |
|
|
|
supplyStatusValue = '预售'; |
|
|
|
} |
|
|
|
|
|
|
|
// 处理图片URL,确保imageUrls字段存在且为数组
|
|
|
|
const imageUrls = product.imageUrls || product.images || []; |
|
|
|
// 确保imageUrls是数组
|
|
|
|
const formattedImageUrls = Array.isArray(imageUrls) ? imageUrls : [imageUrls]; |
|
|
|
|
|
|
|
return { |
|
|
|
...product, |
|
|
|
fullRegion: product.region || '', // 保存完整地区数据
|
|
|
|
region: product.region ? this.extractProvince(product.region) : '', // 只显示省份
|
|
|
|
grossWeight: grossWeightValue, |
|
|
|
displayGrossWeight: this.formatGrossWeight(grossWeightValue, product.weight), |
|
|
|
status: product.status || 'published', |
|
|
|
createdAt: product.created_at || product.createTime || null, |
|
|
|
reservedCount: finalReservationCount, |
|
|
|
product_contact: product.product_contact || '', |
|
|
|
contact_phone: product.contact_phone || '', |
|
|
|
supplyStatus: supplyStatusValue, |
|
|
|
sourceType: product.sourceType || '', |
|
|
|
isReserved: false, |
|
|
|
isFavorite: false, |
|
|
|
currentImageIndex: 0, |
|
|
|
// 确保imageUrls字段存在且为数组
|
|
|
|
imageUrls: formattedImageUrls |
|
|
|
} |
|
|
|
}) |
|
|
|
|
|
|
|
// 过滤掉hidden状态的商品
|
|
|
|
newGoods = newGoods.filter(item => { |
|
|
|
const itemStatus = (item.status || '').toLowerCase() |
|
|
|
return itemStatus !== 'hidden' |
|
|
|
}) |
|
|
|
|
|
|
|
let updatedGoods = [] |
|
|
|
if (isLoadMore) { |
|
|
|
// 加载更多:合并数据,但要去重
|
|
|
|
const existingIds = new Set(this.data.goods.map(item => item.id)); |
|
|
|
const uniqueNewGoods = newGoods.filter(item => !existingIds.has(item.id)); |
|
|
|
updatedGoods = [...this.data.goods, ...uniqueNewGoods]; |
|
|
|
} else { |
|
|
|
updatedGoods = newGoods |
|
|
|
} |
|
|
|
|
|
|
|
// 应用筛选条件
|
|
|
|
const filteredGoods = this.applyFilters(updatedGoods) |
|
|
|
|
|
|
|
// 计算是否还有更多数据
|
|
|
|
const totalGoods = res.total || 0; |
|
|
|
const totalPages = res.totalPages || Math.ceil(totalGoods / currentPageSize); |
|
|
|
const hasMoreData = currentPage < totalPages && newGoods.length > 0; |
|
|
|
|
|
|
|
this.setData({ |
|
|
|
goods: updatedGoods, |
|
|
|
filteredGoods: filteredGoods, |
|
|
|
loadingMore: false, |
|
|
|
page: currentPage + 1, |
|
|
|
hasMoreData: hasMoreData, |
|
|
|
totalGoods: totalGoods, |
|
|
|
totalPages: totalPages |
|
|
|
}) |
|
|
|
} else { |
|
|
|
this.setData({ |
|
|
|
loadingMore: false |
|
|
|
}) |
|
|
|
} |
|
|
|
}) |
|
|
|
.catch(err => { |
|
|
|
console.error('加载商品数据失败:', err) |
|
|
|
this.setData({ |
|
|
|
loadingMore: false |
|
|
|
}) |
|
|
|
}) |
|
|
|
}, |
|
|
|
|
|
|
|
// 刷新商品列表
|
|
|
|
refreshGoodsList: function() { |
|
|
|
this.setData({ |
|
|
|
page: 1, |
|
|
|
hasMoreData: true, |
|
|
|
goods: [], |
|
|
|
filteredGoods: [], |
|
|
|
loadingMore: false |
|
|
|
}, () => { |
|
|
|
this.loadGoods() |
|
|
|
}) |
|
|
|
}, |
|
|
|
|
|
|
|
// 应用筛选条件
|
|
|
|
applyFilters: function(goods) { |
|
|
|
let filtered = [...goods] |
|
|
|
|
|
|
|
// 按品种筛选
|
|
|
|
if (this.data.selectedCategory !== '全部') { |
|
|
|
const category = this.data.selectedCategory |
|
|
|
let keyword = category |
|
|
|
|
|
|
|
// 根据品种确定对应的关键字
|
|
|
|
if (category === '粉壳') { |
|
|
|
keyword = '粉' |
|
|
|
} else if (category === '绿壳') { |
|
|
|
keyword = '绿' |
|
|
|
} else if (category === '红壳') { |
|
|
|
keyword = '红' |
|
|
|
} else if (category === '白壳') { |
|
|
|
keyword = '白' |
|
|
|
} |
|
|
|
|
|
|
|
filtered = filtered.filter(item => { |
|
|
|
const name = item.name || '' |
|
|
|
return name.includes(keyword) |
|
|
|
}) |
|
|
|
} |
|
|
|
|
|
|
|
// 按搜索关键词筛选(商品名称和地区都要匹配)
|
|
|
|
if (this.data.searchKeyword) { |
|
|
|
const keyword = this.data.searchKeyword.toLowerCase() |
|
|
|
filtered = filtered.filter(item => { |
|
|
|
const name = item.name || '' |
|
|
|
const region = item.region || '' |
|
|
|
return name.toLowerCase().includes(keyword) || region.toLowerCase().includes(keyword) |
|
|
|
}) |
|
|
|
} |
|
|
|
|
|
|
|
// 按地区筛选
|
|
|
|
if (this.data.selectedRegion !== '全国') { |
|
|
|
filtered = filtered.filter(item => { |
|
|
|
return item.region === this.data.selectedRegion |
|
|
|
}) |
|
|
|
} |
|
|
|
|
|
|
|
// 优先排序:按收藏人数、价格、创建时间排序
|
|
|
|
filtered.sort((a, b) => { |
|
|
|
// 首先按收藏人数降序排序
|
|
|
|
const reservedCountA = a.reservedCount || 0 |
|
|
|
const reservedCountB = b.reservedCount || 0 |
|
|
|
if (reservedCountB !== reservedCountA) { |
|
|
|
return reservedCountB - reservedCountA |
|
|
|
} |
|
|
|
|
|
|
|
// 然后按价格升序排序
|
|
|
|
const priceA = parseFloat(a.price || 0) |
|
|
|
const priceB = parseFloat(b.price || 0) |
|
|
|
if (!isNaN(priceB) && !isNaN(priceA) && priceA !== priceB) { |
|
|
|
return priceA - priceB |
|
|
|
} |
|
|
|
|
|
|
|
// 最后按创建时间降序排序
|
|
|
|
const createdAtA = new Date(a.createdAt || 0).getTime() |
|
|
|
const createdAtB = new Date(b.createdAt || 0).getTime() |
|
|
|
return createdAtB - createdAtA |
|
|
|
}) |
|
|
|
|
|
|
|
return filtered |
|
|
|
}, |
|
|
|
|
|
|
|
// 搜索输入
|
|
|
|
onSearchInput: function(e) { |
|
|
|
this.setData({ |
|
|
|
searchKeyword: e.detail.value |
|
|
|
}) |
|
|
|
}, |
|
|
|
|
|
|
|
// 搜索商品
|
|
|
|
searchGoods: function() { |
|
|
|
// 重新显示tabBar
|
|
|
|
const app = getApp(); |
|
|
|
if (app && app.globalData) { |
|
|
|
app.globalData.showTabBar = true; |
|
|
|
} |
|
|
|
|
|
|
|
const filteredGoods = this.applyFilters(this.data.goods) |
|
|
|
this.setData({ |
|
|
|
filteredGoods: filteredGoods |
|
|
|
}) |
|
|
|
}, |
|
|
|
|
|
|
|
// 切换地区选择器
|
|
|
|
toggleRegionPicker: function() { |
|
|
|
this.setData({ |
|
|
|
showRegionPicker: !this.data.showRegionPicker |
|
|
|
}) |
|
|
|
}, |
|
|
|
|
|
|
|
// 选择地区
|
|
|
|
selectRegion: function(e) { |
|
|
|
const region = e.currentTarget.dataset.region |
|
|
|
this.setData({ |
|
|
|
selectedRegion: region |
|
|
|
}) |
|
|
|
}, |
|
|
|
|
|
|
|
// 确认地区选择
|
|
|
|
confirmRegion: function() { |
|
|
|
// 重新显示tabBar
|
|
|
|
const app = getApp(); |
|
|
|
if (app && app.globalData) { |
|
|
|
app.globalData.showTabBar = true; |
|
|
|
} |
|
|
|
|
|
|
|
const filteredGoods = this.applyFilters(this.data.goods) |
|
|
|
this.setData({ |
|
|
|
filteredGoods: filteredGoods, |
|
|
|
showRegionPicker: false |
|
|
|
}) |
|
|
|
}, |
|
|
|
|
|
|
|
// 阻止事件冒泡
|
|
|
|
stopPropagation: function() { |
|
|
|
// 空函数,用于阻止事件冒泡
|
|
|
|
}, |
|
|
|
|
|
|
|
// 选择品种
|
|
|
|
selectCategory: function(e) { |
|
|
|
// 重新显示tabBar
|
|
|
|
const app = getApp(); |
|
|
|
if (app && app.globalData) { |
|
|
|
app.globalData.showTabBar = true; |
|
|
|
} |
|
|
|
|
|
|
|
const category = e.currentTarget.dataset.category |
|
|
|
this.setData({ |
|
|
|
selectedCategory: category |
|
|
|
}) |
|
|
|
|
|
|
|
const filteredGoods = this.applyFilters(this.data.goods) |
|
|
|
this.setData({ |
|
|
|
filteredGoods: filteredGoods |
|
|
|
}) |
|
|
|
}, |
|
|
|
|
|
|
|
// 查看商品详情
|
|
|
|
viewGoodsDetail: function(e) { |
|
|
|
const item = e.currentTarget.dataset.item |
|
|
|
// 确保productId存在,优先使用id,其次使用productId
|
|
|
|
const productId = String(item.id || item.productId || '') |
|
|
|
|
|
|
|
if (!productId) { |
|
|
|
console.error('商品ID不存在,无法查看详情'); |
|
|
|
wx.showToast({ |
|
|
|
title: '商品信息有误', |
|
|
|
icon: 'none', |
|
|
|
duration: 2000 |
|
|
|
}) |
|
|
|
return; |
|
|
|
} |
|
|
|
|
|
|
|
// 将完整的商品数据传递给详情页,包含联系人信息,与buyer页面保持一致
|
|
|
|
wx.navigateTo({ |
|
|
|
url: `/pages/goods-detail/goods-detail?goodsData=${encodeURIComponent(JSON.stringify(item))}&productId=${productId}` |
|
|
|
}) |
|
|
|
}, |
|
|
|
|
|
|
|
// 跳转到入驻页面
|
|
|
|
navigateToSettlement: function() { |
|
|
|
wx.navigateTo({ |
|
|
|
url: '/pages/settlement/index' |
|
|
|
}) |
|
|
|
}, |
|
|
|
|
|
|
|
// 预览图片
|
|
|
|
previewImage: function(e) { |
|
|
|
// 阻止事件冒泡,避免触发商品点击事件
|
|
|
|
e.stopPropagation(); |
|
|
|
|
|
|
|
// 获取图片信息
|
|
|
|
const item = e.currentTarget.dataset.item; |
|
|
|
const index = e.currentTarget.dataset.index; |
|
|
|
|
|
|
|
if (!item) { |
|
|
|
return; |
|
|
|
} |
|
|
|
|
|
|
|
// 确保图片URL存在且为数组
|
|
|
|
let imageUrls = item.imageUrls || item.images || []; |
|
|
|
if (!Array.isArray(imageUrls)) { |
|
|
|
imageUrls = [imageUrls]; |
|
|
|
} |
|
|
|
|
|
|
|
// 过滤掉无效的图片URL
|
|
|
|
const validImageUrls = imageUrls.filter(url => url && typeof url === 'string' && url.trim() !== ''); |
|
|
|
|
|
|
|
if (validImageUrls.length === 0) { |
|
|
|
return; |
|
|
|
} |
|
|
|
|
|
|
|
// 显示图片预览弹窗
|
|
|
|
this.setData({ |
|
|
|
previewImageUrls: validImageUrls, |
|
|
|
previewImageIndex: parseInt(index || 0), |
|
|
|
showImagePreview: true |
|
|
|
}); |
|
|
|
}, |
|
|
|
|
|
|
|
// 关闭图片预览
|
|
|
|
closeImagePreview: function() { |
|
|
|
this.setData({ |
|
|
|
showImagePreview: false |
|
|
|
}); |
|
|
|
}, |
|
|
|
|
|
|
|
// 预览图片切换事件
|
|
|
|
onPreviewImageChange: function(e) { |
|
|
|
this.setData({ |
|
|
|
previewImageIndex: e.detail.current |
|
|
|
}); |
|
|
|
}, |
|
|
|
|
|
|
|
// 滚动事件处理
|
|
|
|
onScroll: function(e) { |
|
|
|
// 获取滚动信息
|
|
|
|
const { scrollTop, scrollHeight, clientHeight } = e.detail; |
|
|
|
const distanceToBottom = scrollHeight - scrollTop - clientHeight; |
|
|
|
|
|
|
|
// 获取全局状态
|
|
|
|
const app = getApp(); |
|
|
|
if (!app || !app.globalData) { |
|
|
|
return; |
|
|
|
} |
|
|
|
|
|
|
|
// 当滚动到底部且没有更多数据时,隐藏tabBar
|
|
|
|
if (distanceToBottom < 100 && !this.data.hasMoreData) { |
|
|
|
app.globalData.showTabBar = false; |
|
|
|
} |
|
|
|
// 当往上滚动不在底部时,立即重新显示tabBar
|
|
|
|
else { |
|
|
|
app.globalData.showTabBar = true; |
|
|
|
} |
|
|
|
}, |
|
|
|
|
|
|
|
// 上拉加载更多
|
|
|
|
onReachBottom: function() { |
|
|
|
if (this.data.hasMoreData && !this.data.loadingMore) { |
|
|
|
this.loadGoods(true) |
|
|
|
} else if (!this.data.hasMoreData) { |
|
|
|
// 没有更多数据时,隐藏tabBar
|
|
|
|
const app = getApp(); |
|
|
|
if (app && app.globalData) { |
|
|
|
app.globalData.showTabBar = false; |
|
|
|
} |
|
|
|
} |
|
|
|
}, |
|
|
|
|
|
|
|
// 显示一键登录弹窗
|
|
|
|
showOneKeyLogin() { |
|
|
|
this.setData({ |
|
|
|
|