yuminge-app/yun-min-program-plugin-master/packageG/mycomponent/goods/goods.js

503 lines
16 KiB
JavaScript
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.

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