EP-WachatApp/eaterplanet_ecommerce/moduleA/solitaire/addGood.js

248 lines
5.5 KiB
JavaScript

var app = getApp();
Page({
/**
* 页面的初始数据
*/
data: {
tabs: [{
id: 0,
name: '社区商品'
},
{
id: 1,
name: '仅快递'
}
],
currentIdx: 0,
list: [],
loadText: "加载中...",
noData: 0,
loadMore: true,
checkedAll: false,
checkedCount: 0
},
page: 1,
keyword: '',
handlerGobackClick(delta) {
const pages = getCurrentPages();
if (pages.length >= 2) {
wx.navigateBack({
delta: delta
});
} else {
wx.switchTab({
url: '/eaterplanet_ecommerce/pages/index/index'
});
}
},
handlerGohomeClick(url) {
wx.switchTab({
url: '/eaterplanet_ecommerce/pages/index/index'
});
},
/**
* 生命周期函数--监听页面加载
*/
onLoad: function(options) {
let currentIdx = options.type || 0;
let that = this;
this.setData({
currentIdx
}, ()=>{
that.getData();
})
},
initFn: function() {
this.page = 1;
this.setData({
list: [],
loadText: "加载中...",
noData: 0,
loadMore: true,
checkedAll: false,
checkedCount: 0
},()=>{
this.getData();
})
},
/**
* 切换导航
*/
changeTabs: function(e) {
let that = this;
let currentIdx = e.currentTarget.dataset.type || 0;
this.page = 1;
this.setData({
currentIdx,
list: [],
noData: 0,
showEmpty: false,
loadMore: true,
loadOver: false
}, () => {
that.getData();
})
},
/**
* 获取列表
*/
getData: function() {
let that = this;
let keyword = this.keyword || '';
const token = wx.getStorageSync('token');
app.util.request({
url: 'entry/wxapp/index',
data: {
controller: 'solitaire.search_head_goodslist',
token: token,
page: this.page,
is_only_express: this.data.currentIdx,
keyword,
is_soli: 1
},
dataType: 'json',
success: function(res) {
wx.hideLoading();
if (res.data.code == 0) {
let h = {};
let list = res.data.data;
if (list.length < 20) h.noMore = true;
let oldList = that.data.list;
list = oldList.concat(list);
that.page++;
that.setData({ list, ...h, checkedAll: false })
} else if (res.data.code == 1) {
// 无数据
if (that.page == 1) that.setData({ noData: 1 })
that.setData({ loadMore: false, noMore: false, loadText: "没有更多记录了~" })
} else if (res.data.code == 2) {
app.util.message('您还未登录', 'switchTo:/eaterplanet_ecommerce/pages/index/index', 'error');
return;
} else {
app.util.message(res.data.msg, 'switchTo:/eaterplanet_ecommerce/pages/index/index', 'error');
return;
}
}
})
},
/**
* selType: 0单选 1多选
*/
selectGoods: function(t){
let selType = t.currentTarget.dataset.type || 0;
let currentIdx = this.data.currentIdx;
var pages = getCurrentPages();
var prevPage = pages[pages.length - 2]; //上一个页面
let goods = prevPage.data.goods || [];
let goodsItem = t.detail;
if (selType==0) {
if(goods.length>0) {
let idx = goods.findIndex(item => { return (item.gid == goodsItem.gid) })
if (idx === -1) goods.push(goodsItem);
} else {
goods.push(goodsItem);
}
} else {
let list = this.data.list || [];
let selGoods = list.filter(item => item.checked==1 );
let newGoods = goods.concat(selGoods);
let uniq = new Map()
// 去重合并
for (let i = 0; i < newGoods.length; i++) {
let gid = newGoods[i].gid, val = newGoods[i];
if (uniq.has(gid)) uniq.set(gid, val)
else uniq.set(gid, val)
}
let res = [];
// 放入数组
for (let comb of uniq) {
console.log(comb[1])
res.push(comb[1])
}
goods = res;
}
prevPage.setData({
goods,
type: currentIdx
})
wx.navigateBack({
delta: 1
})
},
/**
* 勾选
*/
checkboxChange: function (e) {
var type = e.currentTarget.dataset.type,
idx = e.currentTarget.dataset.index,
list = this.data.list,
checkedAll = this.data.checkedAll;
if ("all" === type) {
let ck = 0;
if (checkedAll) {
list.forEach(function (item) {
item.checked = 0;
})
} else {
list.forEach(function (item) {
item.checked = 1;
})
ck = list.length;
}
this.setData({
checkedCount: ck,
list,
checkedAll: !checkedAll
})
} else if ("item" === type) {
list.forEach(function (item, t) {
if (idx == t) {
if (item.checked) {
item.checked = 0
} else {
item.checked = 1
}
}
})
var ck = 0;
list.forEach(function (item) {
if (item.checked) {
ck++;
}
})
this.setData({
checkedCount: ck,
list,
checkedAll: ck == list.length ? true : false
})
}
},
goResult: function(e){
let keyword = e.detail.value || '';
(this.keyword = keyword), this.initFn();
},
/**
* 页面相关事件处理函数--监听用户下拉动作
*/
onPullDownRefresh: function() {
},
/**
* 页面上拉触底事件的处理函数
*/
onReachBottom: function() {
if (!this.data.loadMore) return false;
this.getData();
}
})