503 lines
16 KiB
JavaScript
503 lines
16 KiB
JavaScript
// packageE/goods/goods.js
|
||
var app = getApp();
|
||
Component({
|
||
properties: {
|
||
datas: {
|
||
type: null,
|
||
},
|
||
component_id: {
|
||
type: null,
|
||
},
|
||
page_id: {
|
||
type: null,
|
||
},
|
||
index: {
|
||
type: null,
|
||
},
|
||
U_tabcontrol: {
|
||
type: null,
|
||
},
|
||
bottomShowBol: {
|
||
type: null,
|
||
},
|
||
bottomShowBolIndex: {
|
||
type: null,
|
||
},
|
||
isLast: {
|
||
type: null,
|
||
},
|
||
plugin_active: {
|
||
// 会员中心商品加载
|
||
type: null,
|
||
},
|
||
store_alone_temp: {
|
||
// 门店独立判断
|
||
type: null,
|
||
},
|
||
childComponent: {
|
||
type: null,
|
||
value: 'goods'
|
||
},
|
||
// 多项选项卡 start
|
||
childStyle: {
|
||
type: null,
|
||
value: ''
|
||
},
|
||
indTab: {
|
||
type: null
|
||
},
|
||
indexTab: {
|
||
type: null
|
||
},
|
||
infoTab: {
|
||
type: null
|
||
},
|
||
second_list_key: {
|
||
type: null
|
||
},
|
||
all: {
|
||
type: null
|
||
},
|
||
totalAll: {
|
||
type: null
|
||
}
|
||
// 多项选项卡 start
|
||
|
||
},
|
||
// 私有数据,可用于模板渲染
|
||
data: {
|
||
integral: "积分",
|
||
|
||
showList: false,
|
||
emptyImage: "https://mini-app-img-1251768088.cos.ap-guangzhou.myqcloud.com/image.png",
|
||
clientWidth: "375",
|
||
list: [],
|
||
language: "",
|
||
alreadyHandleArray: [],
|
||
arrIndex: 1,
|
||
market_price_text: '',
|
||
price_text: '',
|
||
goods_cofig: [],
|
||
per_page: 12,
|
||
|
||
page: 1,
|
||
total_page: 0,
|
||
isLoadMore: true,
|
||
allLoaded: false, // 全部数据已经加载完成
|
||
},
|
||
|
||
lifetimes: {
|
||
// 生命周期函数,可以为函数,或一个在methods段中定义的方法名
|
||
attached() {
|
||
let language = wx.getStorageSync("langIndex");
|
||
this.setData({
|
||
language: language.en
|
||
});
|
||
let price_text = wx.getStorageSync("yz_basic_info").lang.goods && wx.getStorageSync("yz_basic_info").lang.goods.price ? wx.getStorageSync("yz_basic_info").lang.goods.price : "现价";
|
||
let market_price_text =
|
||
wx.getStorageSync("yz_basic_info").lang.goods && wx.getStorageSync("yz_basic_info").lang.goods.market_price ? wx.getStorageSync("yz_basic_info").lang.goods.market_price : "原价";
|
||
this.setData({
|
||
price_text: price_text,
|
||
market_price_text: market_price_text,
|
||
});
|
||
|
||
let value = wx.getStorageSync("integral");
|
||
if (value) {
|
||
this.setData({
|
||
integral: value,
|
||
});
|
||
}
|
||
},
|
||
moved() {},
|
||
detached() {},
|
||
},
|
||
|
||
// 生命周期函数,可以为函数,或一个在methods段中定义的方法名
|
||
attached() {},
|
||
// 此处attached的声明会被lifetimes字段中的声明覆盖
|
||
ready() {
|
||
this.setData({
|
||
clientWidth: wx.getSystemInfoSync().windowWidth,
|
||
});
|
||
let basic_info = wx.getStorageSync("yz_basic_info");
|
||
if (basic_info.home.plugin && basic_info.home.plugin.goods_show) {
|
||
this.setData({
|
||
goods_cofig: basic_info.home.plugin.goods_show.goods_group,
|
||
});
|
||
}
|
||
if (this.data.childComponent == 'goods') {
|
||
if (this.data.datas.list.data) {
|
||
this.setData({
|
||
total_page: this.data.datas.list.last_page,
|
||
page: this.data.datas.list.current_page,
|
||
per_page: this.data.datas.list.per_page,
|
||
alreadyHandleArray: this.data.datas.list.data,
|
||
list: this.data.datas.list.data.slice(0, this.data.per_page)
|
||
});
|
||
if (this.data.total_page <= this.data.page) {
|
||
this.setData({
|
||
isLoadMore: false,
|
||
allLoaded: true,
|
||
});
|
||
}
|
||
|
||
// this.datas.get_number 限制数量
|
||
if (this.data.datas.get_number && this.data.datas.get_number <= this.data.per_page) {
|
||
this.setData({
|
||
isLoadMore: false,
|
||
allLoaded: true,
|
||
list: this.data.datas.list.data.slice(0, this.data.datas.get_number)
|
||
});
|
||
}
|
||
} else {
|
||
this.setData({
|
||
isLoadMore: false,
|
||
allLoaded: true,
|
||
list: this.data.datas.list,
|
||
});
|
||
}
|
||
}
|
||
|
||
|
||
this.setData({
|
||
showList: true,
|
||
});
|
||
},
|
||
|
||
pageLifetimes: {
|
||
// 组件所在页面的生命周期函数
|
||
show() {},
|
||
hide() {},
|
||
resize() {},
|
||
},
|
||
methods: {
|
||
// 多项选项卡 加载更多
|
||
getKeyInd(allinfo, info) {
|
||
return new Promise((resove, reject) => {
|
||
let ainfo = allinfo[this.data.indexTab];
|
||
ainfo.forEach((element, i) => {
|
||
if (element.tabSelectShow == element.id) {
|
||
resove(element);
|
||
}
|
||
});
|
||
});
|
||
},
|
||
getAllKey(list, totalAll) {
|
||
return new Promise((resove, reject) => {
|
||
let all = totalAll.second_list;
|
||
all.forEach((element, i) => {
|
||
if (element.id == list.id) {
|
||
resove(i);
|
||
}
|
||
});
|
||
});
|
||
},
|
||
async getMoreDataTest(e) {
|
||
let index = this.data.indexTab; // 点击是第几个一级导航
|
||
let ind = this.data.indTab; //点击的是第几个商品组模块
|
||
let info = this.data.infoTab;
|
||
let json = {
|
||
page: info.remote_data.list.current_page + 1,
|
||
decorate_id: this.data.page_id,
|
||
component_id: this.data.component_id,
|
||
component_key: "U_moretabcontrol"
|
||
};
|
||
let secondList = await this.getKeyInd(this.data.all, info);
|
||
let secondkey = await this.getAllKey(secondList, this.data.totalAll);
|
||
json.component_info = {
|
||
list_key: index,
|
||
second_list_key: secondkey,
|
||
components_key: ind
|
||
};
|
||
json.component_info = JSON.stringify(json.component_info);
|
||
console.log(json);
|
||
wx.showLoading({
|
||
title: '加载中',
|
||
});
|
||
let urlStr = app.getNetAddresss("home-page.get-decorate-page");
|
||
app._getNetWork({
|
||
url: urlStr,
|
||
data: json,
|
||
success: (resdata) => {
|
||
if (resdata.data.result == 1) {
|
||
let res = resdata.data.data;
|
||
let arr = [];
|
||
arr = this.data.list.concat(res.data);
|
||
console.log(resdata);
|
||
this.setData({
|
||
total_page: res.last_page,
|
||
page: res.current_page,
|
||
['infoTab.remote_data.list.current_page']: res.current_page,
|
||
['infoTab.remote_data.list.last_page']: res.last_page,
|
||
list: arr
|
||
});
|
||
}
|
||
wx.hideLoading({
|
||
success: (res) => {},
|
||
});
|
||
},
|
||
fail: (res) => {
|
||
wx.hideLoading({
|
||
success: (res) => {},
|
||
});
|
||
console.log(res);
|
||
},
|
||
});
|
||
},
|
||
gotoDetail(e) {
|
||
let id = e.currentTarget.dataset.item.id;
|
||
let option_id = e.currentTarget.dataset.item.category_option_id?`&coid=${e.currentTarget.dataset.item.category_option_id}`:'';
|
||
if (e.currentTarget.dataset.item.plugin_id == 69) {
|
||
wx.navigateTo({
|
||
url: "/packageA/detail_v2/detail_v2?id=" + id + "&name=69" +option_id
|
||
});
|
||
} else if (e.currentTarget.dataset.item.plugin_id == 78) {
|
||
wx.navigateTo({
|
||
url: '/packageA/detail_v2/detail_v2?id=' + id + '&md=1'+option_id
|
||
});
|
||
} else {
|
||
wx.navigateTo({
|
||
url: "/packageA/detail_v2/detail_v2?id=" + id+option_id,
|
||
});
|
||
}
|
||
},
|
||
openShare(e) {
|
||
let item = e.target.dataset.item || e.currentTarget.dataset.item;
|
||
this.triggerEvent("componentGoodShare", item);
|
||
},
|
||
// 获取更多数据
|
||
getMoreData() {
|
||
let that = this;
|
||
if (this.data.alreadyHandleArray.slice(this.data.per_page * this.data.arrIndex).length >= this.data.per_page) {
|
||
that.setData({
|
||
list: this.data.list.concat(this.data.alreadyHandleArray.slice(this.data.per_page * this.data.arrIndex, this.data.per_page * (this.data.arrIndex + 1))),
|
||
arrIndex: this.data.arrIndex + 1
|
||
});
|
||
|
||
if (this.data.datas.get_number && this.data.list.length > this.data.datas.get_number) {
|
||
this.setData({
|
||
isLoadMore: false,
|
||
allLoaded: true,
|
||
list: this.data.list.slice(0, this.data.datas.get_number)
|
||
});
|
||
}
|
||
return;
|
||
}
|
||
this.setData({
|
||
isLoadMore: false,
|
||
});
|
||
if (that.data.page >= that.data.total_page) {
|
||
if (this.data.alreadyHandleArray.slice(this.data.per_page * this.data.arrIndex).length > 0) {
|
||
that.setData({
|
||
list: this.data.list.concat(this.data.alreadyHandleArray.slice(this.data.per_page * this.data.arrIndex, this.data.per_page * (this.data.arrIndex + 1))),
|
||
arrIndex: this.data.arrIndex + 1
|
||
});
|
||
}
|
||
|
||
if (this.data.datas.get_number && this.data.list.length > this.data.datas.get_number) {
|
||
this.setData({
|
||
list: this.data.list.slice(0, this.data.datas.get_number)
|
||
});
|
||
}
|
||
} else {
|
||
that.setData({
|
||
page: that.data.page + 1,
|
||
});
|
||
let urlStr = app.getNetAddresss("home-page.get-decorate-page");
|
||
urlStr += "&page=" + that.data.page;
|
||
urlStr += "&decorate_id=" + that.data.page_id;
|
||
urlStr += "&component_id=" + that.data.component_id;
|
||
|
||
if (this.data.U_tabcontrol) {
|
||
urlStr += "&component_key=U_tabcontrol";
|
||
urlStr += "&component_info=" + JSON.stringify({
|
||
list_key: this.data.index
|
||
});
|
||
} else {
|
||
urlStr += "&component_key=U_goods";
|
||
}
|
||
app._getNetWork({
|
||
url: urlStr,
|
||
success: (resdata) => {
|
||
var res = resdata.data;
|
||
if (res.result == 1) {
|
||
let data = that.data.list;
|
||
if (this.data.U_tabcontrol) {
|
||
that.setData({
|
||
page: res.data[0].remote_data.list.current_page || this.data.page,
|
||
alreadyHandleArray: this.data.alreadyHandleArray.concat(res.data[0].remote_data.list.data),
|
||
});
|
||
that.setData({
|
||
list: data.concat(this.data.alreadyHandleArray.slice(this.data.per_page * this.data.arrIndex, this.data.per_page * (this.data.arrIndex + 1))),
|
||
arrIndex: this.data.arrIndex + 1
|
||
});
|
||
if (this.data.alreadyHandleArray.slice(this.data.per_page * this.data.arrIndex).length > 0 || that.data.page < that.data.total_page) {
|
||
that.setData({
|
||
isLoadMore: true,
|
||
});
|
||
} else {
|
||
that.setData({
|
||
allLoaded: true,
|
||
});
|
||
}
|
||
} else {
|
||
that.setData({
|
||
page: res.data.current_page || this.data.page,
|
||
alreadyHandleArray: this.data.alreadyHandleArray.concat(res.data.data),
|
||
});
|
||
that.setData({
|
||
list: data.concat(this.data.alreadyHandleArray.slice(this.data.per_page * this.data.arrIndex, this.data.per_page * (this.data.arrIndex + 1))),
|
||
arrIndex: this.data.arrIndex + 1
|
||
});
|
||
if (this.data.alreadyHandleArray.slice(this.data.per_page * this.data.arrIndex).length > 0 || that.data.page < that.data.total_page) {
|
||
// 判断是否最后一页 和 是否数据都加载完
|
||
that.setData({
|
||
isLoadMore: true,
|
||
});
|
||
} else {
|
||
that.setData({
|
||
allLoaded: true,
|
||
});
|
||
}
|
||
}
|
||
|
||
if (this.data.datas.get_number && this.data.list.length > this.data.datas.get_number) {
|
||
this.setData({
|
||
isLoadMore: false,
|
||
allLoaded: true,
|
||
list: this.data.list.slice(0, this.data.datas.get_number)
|
||
});
|
||
}
|
||
} else {
|
||
that.setData({
|
||
page: that.data.page - 1,
|
||
isLoadMore: false,
|
||
allLoaded: true,
|
||
});
|
||
}
|
||
},
|
||
fail: function (res) {
|
||
console.log(res);
|
||
},
|
||
});
|
||
}
|
||
},
|
||
// 会员中心用的
|
||
loadMoreMemberData() {
|
||
let that = this;
|
||
that.setData({
|
||
isLoadMore: false,
|
||
});
|
||
if (that.data.page >= that.data.total_page) {
|
||
if (this.data.alreadyHandleArray.slice(12 * this.data.arrIndex).length > 0) {
|
||
that.setData({
|
||
list: this.data.list.concat(this.data.alreadyHandleArray.slice(12 * this.data.arrIndex, 12 * (this.data.arrIndex + 1))),
|
||
arrIndex: this.data.arrIndex + 1,
|
||
});
|
||
}
|
||
return;
|
||
} else {
|
||
that.setData({
|
||
page: that.data.page + 1,
|
||
});
|
||
let urlStr = app.getNetAddresss("member.member.plugin-data");
|
||
if (this.data.store_alone_temp == 1) {
|
||
// 门店独立
|
||
urlStr = app.getNetAddresss("plugin.store-alone-temp.frontend.member.nav-data");
|
||
} else if (this.data.store_alone_temp == 2) {
|
||
// 门店独立
|
||
urlStr = app.getNetAddresss("plugin.store-alone-temp.frontend.home.nav-data");
|
||
}
|
||
urlStr += "&page=" + that.data.page;
|
||
urlStr += "&code=" + that.data.plugin_active;
|
||
|
||
app._getNetWork({
|
||
url: urlStr,
|
||
success: (resdata) => {
|
||
var res = resdata.data;
|
||
if (res.result == 1) {
|
||
let data = that.data.list;
|
||
that.setData({
|
||
page: res.data.data.current_page || this.data.page,
|
||
alreadyHandleArray: this.data.alreadyHandleArray.concat(res.data.data.data),
|
||
});
|
||
that.setData({
|
||
list: data.concat(this.data.alreadyHandleArray.slice(12 * this.data.arrIndex, 12 * (this.data.arrIndex + 1))),
|
||
arrIndex: this.data.arrIndex + 1,
|
||
});
|
||
if (that.data.page < that.data.total_page) {
|
||
that.setData({
|
||
isLoadMore: true,
|
||
});
|
||
} else {
|
||
that.setData({
|
||
allLoaded: true,
|
||
});
|
||
}
|
||
that.triggerEvent("setLoadMore", {
|
||
isLoadMore: that.data.isLoadMore,
|
||
});
|
||
} else {
|
||
that.setData({
|
||
page: that.data.page - 1,
|
||
isLoadMore: false,
|
||
allLoaded: true,
|
||
});
|
||
}
|
||
},
|
||
fail: function (res) {
|
||
console.log(res);
|
||
},
|
||
});
|
||
}
|
||
},
|
||
},
|
||
observers: {
|
||
datas: function (data) {
|
||
if (this.data.childComponent == 'tab') {
|
||
this.setData({
|
||
total_page: this.data.datas.list.last_page,
|
||
page: this.data.datas.list.current_page,
|
||
per_page: this.data.datas.list.per_page,
|
||
alreadyHandleArray: this.data.datas.list.data,
|
||
list: this.data.datas.list.data
|
||
});
|
||
if (this.data.total_page <= this.data.page) {
|
||
this.setData({
|
||
isLoadMore: false,
|
||
allLoaded: true,
|
||
});
|
||
}
|
||
}
|
||
},
|
||
// page_id: function (id) {
|
||
// console.log(id, 'aaa');
|
||
// },
|
||
bottomShowBol: function (flag) {
|
||
if (this.data.U_tabcontrol) {
|
||
// 选项卡this.isLast判断商品列表是最后一个组件
|
||
if (flag && this.data.isLast && this.data.datas.sort_style.choose_icon != 5 && this.data.isLoadMore) {
|
||
this.getMoreData();
|
||
} else if (this.data.page >= this.data.total_page) {
|
||
if (this.data.alreadyHandleArray.slice(this.data.per_page * this.data.arrIndex).length > 0) {
|
||
this.setData({
|
||
list: this.data.list.concat(this.data.alreadyHandleArray.slice(this.data.per_page * this.data.arrIndex, this.data.per_page * (this.data.arrIndex + 1))),
|
||
arrIndex: this.data.arrIndex + 1
|
||
});
|
||
}
|
||
}
|
||
} else {
|
||
if (flag && this.data.bottomShowBolIndex == this.data.index && this.data.datas.sort_style.choose_icon != 5 && this.data.isLoadMore) {
|
||
this.getMoreData();
|
||
} else if (this.data.page >= this.data.total_page) {
|
||
if (this.data.alreadyHandleArray.slice(this.data.per_page * this.data.arrIndex).length > 0) {
|
||
this.setData({
|
||
list: this.data.list.concat(this.data.alreadyHandleArray.slice(this.data.per_page * this.data.arrIndex, this.data.per_page * (this.data.arrIndex + 1))),
|
||
arrIndex: this.data.arrIndex + 1
|
||
});
|
||
}
|
||
}
|
||
}
|
||
},
|
||
},
|
||
}); |