// pages/bookExhibitionList/index.js import Toast from 'tdesign-miniprogram/toast/index'; import watch from './watch/watch' const app = getApp() Page({ /** * 页面的初始数据 */ data: { name: "测试watch", newPrice: '', 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', label: '高等教育', }, { value: 'jsek_bFVocationalEducation', label: '职业教育', }, { value: 'jsek_bFTeacherEducation', label: '教师教育', }, ], }, multipleSelect: { value: [], options: [], }, navBarHeight: '', barHeight: '', windowHeight: '', sorter: { value: 'timeAsc', options: [{ value: 'nameAsc', label: '名称正序', }, { value: 'nameDesc', label: '名称倒序', }, { value: 'timeAsc', label: '出版时间正序', }, { value: 'timeDesc', label: '出版时间倒序', }, ], }, newValue: '' }, /** * 生命周期函数--监听页面加载 */ onLoad(options) { // this.setData({ // 'product.value': '*', // }); const systInfo = wx.getSystemInfoSync(); const menu = wx.getMenuButtonBoundingClientRect(); // 胶囊信息 const navBarHeight = (menu.top - systInfo.statusBarHeight) * 2 + menu.height; // 导航栏高度 this.setData({ navBarHeight: navBarHeight, barHeight: systInfo.statusBarHeight, }) // watch.setWatcher(this); // let that = this; // setTimeout(function () { // that.data.name = "测试watch变化了" // }, 500) console.log(11111); }, watch: { name: function (newVal, oldVal) { //这里的this和onLoad里的this指向一样 console.log(newVal, oldVal); }, newPrice: function (newVal, oldVal) { console.log(newVal, oldVal); } }, /** * 生命周期函数--监听页面初次渲染完成 */ onReady() { }, /** * 生命周期函数--监听页面显示 */ onShow() { this.bookExhibitionGet() this.keyProjectsGet(this.data.newPrice) }, /** * 生命周期函数--监听页面隐藏 */ 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: this.data.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({ filteredItems: [] // 如果存在子项则赋值,否则赋值为空数组 }); //骨架屏 this.setData({ loading: true, hidden: true, }) // 参数 let parms = { refCodes: ['bookClassification'] } //请求数据 app.MG.store.getProductTypeField(parms).then(res => { // 格式化数据 const checkData = JSON.parse(res[0].config) console.log(checkData); // 循环然后判断相匹配的数据赋值给filteredItems checkData.option.forEach(item => { if (newPrice == item.value) { this.setData({ filteredItems: item.child || [] // 如果存在子项则赋值,否则赋值为空数组 }); } }) let singleSelectOptions = [] // 单列选择器选项 // 单列选择器选项 this.data.filteredItems.forEach(item => { singleSelectOptions.push({ label: item.name, value: item.value, }); }); if (singleSelectOptions.length === 0) { singleSelectOptions.push({ label: '暂无数据', }); } // 更新数据 this.setData({ 'multipleSelect.options': singleSelectOptions, }); // 取消骨架屏 this.setData({ loading: false, hidden: false, }) }) // if (newPrice) { // this.setData({ // keynoteDisabled: false // }) // } // if (!newPrice) { // this.setData({ // keynoteDisabled: true // }) // } }, // 总分类 // 总分类 onChange(e) { const newValue = e.detail.value; this.setData({ 'product.value': newValue, newValue: newValue }); let newPrice = '' if (newValue == 'jsek_bFHigherEducation') { newPrice = 'jsek_higherEducation' // this.setData({ // newPrice: 'jsek_higherEducation' // }) } else if (newValue == 'jsek_bFVocationalEducation') { // this.setData({ // newPrice: 'jsek_vocationalEducation' // }) newPrice = 'jsek_vocationalEducation' } else if (newValue == 'jsek_bFTeacherEducation') { // this.setData({ // newPrice: 'jsek_teacherEducation' // }) newPrice = 'jsek_teacherEducation' } else { newPrice = '' } this.keyProjectsGet(newPrice) this.bookExhibitionGet(newValue); if (this.data.keynoteValue) { //如果有数据就清空并刷新页面 this.data.keynoteValue = [] this.bookExhibitionGet(newValue) } this.onLoad() }, // 重点项目 handleMultipleSelect(e) { console.log(e); this.setData({ 'multipleSelect.value': e.detail.value, }); }, handleConfirm(event) { console.log(event); const { value } = event.detail; // 确认操作的处理逻辑 // this.data.keynoteValue = value this.setData({ 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() { } })