// pages/bookExhibitionList/index.js import Toast from 'tdesign-miniprogram/toast/index'; const app = getApp() Page({ /** * 页面的初始数据 */ data: { loading: true, hidden: true, totalSize: '', start: 0, isMore: null, keynoteDisabled: true, value: '', keyword: '', nameSort: null, total: null, page: { start: 0, size: 16 }, keynoteValue: null, filteredItems: [], newValue: null, bookExhibitionList: [], sorter: { value: 'default', }, product: { value: '*', options: [{ value: '*', label: '总分类', }, { value: 'jsek_bFHigherEducation', //重点项目 price: 'jsek_higherEducation', label: '高等教育', }, { value: 'jsek_bFVocationalEducation', //重点项目 price: 'jsek_vocationalEducation', label: '职业教育', }, { value: 'jsek_bFTeacherEducation', //重点项目 price: 'jsek_teacherEducation', label: '教师教育', }, ], }, multipleSelect: { value: [], options: [], }, navBarHeight: '', barHeight: '', windowHeight: '', sorter: { value: 'timeAsc', options: [{ value: 'nameAsc', label: '名称正序', }, { value: 'nameDesc', label: '名称倒序', }, { value: 'timeAsc', label: '出版时间正序', }, { value: 'timeDesc', label: '出版时间倒序', }, ], }, }, /** * 生命周期函数--监听页面加载 */ onLoad(options) { const systInfo = wx.getSystemInfoSync(); const menu = wx.getMenuButtonBoundingClientRect(); // 胶囊信息 const navBarHeight = (menu.top - systInfo.statusBarHeight) * 2 + menu.height; // 导航栏高度 this.setData({ navBarHeight: navBarHeight, barHeight: systInfo.statusBarHeight, }) // 单列选择器选项 const singleSelectOptions = this.data.filteredItems.map(item => ({ label: item.name, value: item.value, disabled: false, })) if (this.data.filteredItems = []) { // singleSelectOptions.push({ // label: '暂无数据', // value: 'disabled', // disabled: true, // }); } else { console.log(7889); } // 更新数据 this.setData({ 'multipleSelect.options': singleSelectOptions, }); // }, /** * 生命周期函数--监听页面初次渲染完成 */ onReady() { }, /** * 生命周期函数--监听页面显示 */ onShow() { this.bookExhibitionGet() this.keyProjectsGet() }, /** * 生命周期函数--监听页面隐藏 */ onHide() { }, /** * 生命周期函数--监听页面卸载 */ onUnload() { }, /** * 页面相关事件处理函数--监听用户下拉动作 */ onPullDownRefresh() { }, // onPullDownRefresh() { // this.data.page.size = 16 //更改显示的值 // this.bookExhibitionGet(); // 调用方法加载更多数据 // }, onScrollToLower() { if (this.data.bookExhibitionList.length < this.data.totalSize) { this.setData({ isMore: true, start: this.data.start + 1 }) this.bookExhibitionGet() } else { this.setData({ isMore: true, }) setTimeout(() => { this.setData({ isMore: false }) }, 300) } }, /** * 页面上拉触底事件的处理函数 */ onReachBottom() { if (this.data.page.size >= this.data.total) { Toast({ context: this, selector: '#t-toast', message: '没有更多了', direction: 'column', duration: 1000, preventScrollThrough: true, icon: 'poweroff', }); } else { // const currentPage = this.data.page.start + 1; // 获取当前页数并加1 const newSize = this.data.page.size + 10; // 原来的基础上加10 this.setData({ // 'page.start': currentPage, 'page.size': newSize }); // this.bookExhibitionGet(); // 调用方法加载更多数据 } }, /** * 用户点击右上角分享 */ onShareAppMessage() { }, // 图片数据的接口 bookExhibitionGet(newValue) { wx.showLoading({ title: '加载中...', }) let searchObj = { 'Name*': this.data.keyword, '||subtitle*': this.data.keyword } let sort = {}; const sortOptions = { '*': { CreateDate: 'Asc' }, 'nameAsc': { Name: 'Asc' }, 'nameDesc': { Name: 'Desc' }, 'timeAsc': { CreateDate: 'Asc' }, 'timeDesc': { CreateDate: 'Desc' } }; sort = sortOptions[this.data.product.value] || {}; app.MG.store.getProductList({ storeInfo: 'jsek_bookFair', path: newValue, queryType: '*', fields: { jsek_link: [], subtitle: [], 'bookClassification*': this.data.keynoteValue || [], ...searchObj }, paging: { start: '0', size: this.data.start * 10 }, sort: sort, // coverSize: { // width: 100 // }, }).then(res => { res.datas.forEach((item) => { if (item.subtitle == undefined) { item.subtitle = '' } item.subtitleName = item.subtitle + item.name }) this.data.total = res.total // list.push(res.datas) if (res.datas.length == 0) { this.setData({ keynoteDisabled: true }) } const list = [...res.datas] this.setData({ bookExhibitionList: list, totalSize: res.total }) //取消 wx.hideLoading() this.setData({ loading: false, hidden: false, }) }) }, //重点项目接口 keyProjectsGet(newPrice) { this.setData({ loading: true, hidden: true, }) let parms = { refCodes: ['bookClassification'] } app.MG.store.getProductTypeField(parms).then(res => { const checkData = JSON.parse(res[0].config) checkData.option.forEach(item => { if (newPrice == item.value) { this.setData({ filteredItems: item.child || [] // 如果存在子项则赋值,否则赋值为空数组 }); } }) this.onLoad(); this.setData({ loading: false, hidden: false, }) }) }, // 总分类 // 总分类 onChange(e) { this.data.page.size = 16 //更改显示的值 const newValue = e.detail.value; const selectedOption = this.data.product.options.find(option => option.value === newValue); const newPrice = selectedOption ? selectedOption.price : null; // const bookExhibitionListsubsidiary = [] // this.setData({ // bookExhibitionListsubsidiary: this.data.bookExhibitionList // }) if (newPrice) { this.setData({ keynoteDisabled: false }) } if (!newPrice) { this.setData({ keynoteDisabled: true }) } this.setData({ 'product.value': newValue, 'product.price': newPrice, // 将选中的 price 值保存在数据中 }); this.bookExhibitionGet(newValue); this.keyProjectsGet(newPrice); // 调用更新页面数据的函数,传入新的 value 和 price 值 if (this.data.keynoteValue) { //如果有数据就清空并刷新页面 this.data.keynoteValue = [] this.bookExhibitionGet(newValue) this.onLoad() } // e.stopImmediatePropagation() }, // 重点项目 handleMultipleSelect(e) { this.setData({ 'multipleSelect.value': e.detail.value, }); }, handleConfirm(event) { const { value } = event.detail; // 确认操作的处理逻辑 this.data.keynoteValue = value this.bookExhibitionGet() }, handleReset(e) { // 重置操作的处理逻辑 this.data.keynoteValue = [] this.bookExhibitionGet() }, onSwapRight() { if (!this.data.nameSort) { this.setData({ nameSort: 'Desc', }); } else if (this.data.nameSort == 'Desc') { this.setData({ nameSort: 'Asc', }); } else if (this.data.nameSort == 'Asc') { this.setData({ nameSort: '', }); } this.bookExhibitionGet() }, onSwapLeft() { this.data.nameSort = 'Desc' this.bookExhibitionGet() }, onBookExhibitionDetails: function (event) { const item = event.currentTarget.dataset.item; wx.navigateTo({ url: '/pages/bookExhibitionDetails/index?id=' + item.id + '&bookName=' + item.name + '&subtitleName=' + item.subtitleName // 假设跳转到详情页面,并传递了id参数 }); }, // 搜索框 onSearchSubmit(e) { this.setData({ keyword: e.detail.value }) this.bookExhibitionGet() }, goBack() { wx.navigateBack(); }, onSort(e) { this.setData({ 'product.value': e.detail.value, }); this.bookExhibitionGet() }, onOpend() { } })