const app = getApp(); import { loginInfo } from '../../../../assets/js/login'; Page({ /** * 页面的初始数据 */ data: { barHeight: '', navBarHeight: '', searchValue: '', path: '', pathList: [], pageCount: { page: 1, total: 0, }, isMore: null, assortCheck: { name: '', code: '', }, bookList: [], stairList: { value: '', options: [{ value: '', label: '一级', }, ], }, secondList: { value: [], options: [], disabled: false, }, majorProjectList: { value: [], options: [], }, sortList: { value: 'default', options: [{ value: 'default', label: '默认排序', }, { value: 'name-asc', label: '名称正序' }, { value: 'name-desc', label: '名称倒叙' }, { value: 'time-asc', label: '出版时间正序' }, { value: 'time-desc', label: '出版时间倒叙' } ], }, newTextBook: { value: [], options: [], }, stairCode: '', // 一级分类选中项 secondCode: '', // 二级分类选中项 sort: '', // 排序 enable: false, loadingProps: { size: '50rpx' }, loading: false, noData: false, showDropdown: false, isRequesting: false, disabledStair: false, disabledSecondList: false, disabledProject: false, disabledNewForms: false, triggered: false, }, /** * 生命周期函数--监听页面加载 */ onLoad(options) { const systInfo = wx.getSystemInfoSync(); const menu = wx.getMenuButtonBoundingClientRect(); // 胶囊信息 const navBarHeight = (menu.top - systInfo.statusBarHeight) * 2 + menu.height; // 导航栏高度 this.setData({ barHeight: systInfo.statusBarHeight, navBarHeight: navBarHeight, }); // 搜索赋值 if (options.searchValue) { this.setData({ searchValue: options.searchValue, }); } // 高级分类赋值 this.setData({ assortCheck: { name: options.assorName, code: options.assortCode, }, }); if (this.data.assortCheck.code) { this.setData({}); } // 获取一级分类 this.getStairList(options.assortCode); // 一级分类和path赋值 if (options.stairCode) { this.setData({ 'stairList.value': options.stairCode, stairCode: options.stairCode, path: `${options.assortCode}\\${options.stairCode}`, }); } // 二级分类赋值 if (options.secondCode) { this.setData({ secondCode: options.secondCode, pathList: [{ Path: options.secondCode, Type: '*', StoreRefCode: app.config.goodsStore, }], }) } // 获取二级分类 this.getSecondList(`${options.assortCode}\\${options.stairCode}`); this.getBookList(`${options.assortCode}\\${options.stairCode}`); // 获取重点项目 this.getProjectList('bookClassification'); this.getProjectList('newFormsTextbooks'); }, /** * 生命周期函数--监听页面初次渲染完成 */ onReady() {}, /** * 生命周期函数--监听页面显示 */ onShow() {}, /** * 生命周期函数--监听页面隐藏 */ onHide() {}, /** * 生命周期函数--监听页面卸载 */ onUnload() {}, /** * 页面相关事件处理函数--监听用户下拉动作 */ onPullDownRefresh() { this.setData({ triggered: true }) this.setData({ 'pageCount.page': 1 }) this.getBookList(this.data.path); }, /** * 页面上拉触底事件的处理函数 */ onReachBottom(e) { const flag = this.data.bookList.length < this.data.pageCount.total if (flag) { if (!this.data.isRequesting) { this.setData({ isMore: true, "pageCount.page": this.data.pageCount.page + 1 }) this.getBookList(this.data.path) } } else { this.setData({ isMore: true, }) setTimeout(() => { this.setData({ isMore: false }) }, 100) console.log('没有更多了'); } }, /** * 用户点击右上角分享 */ onShareAppMessage() {}, goBack() { wx.navigateBack(); }, // 获取一级列表 getStairList(path) { this.setData({ disabledStair: false }) const query = { path, filterList: [], queryType: '\\', searchList: [], size: '30', start: '0', storeRefCode: app.config.goodsStore, sort: { type: 'Asc', field: 'LinkOrder' }, }; app.MG.store.getStoreChannelList(query).then(async (res) => { const options = [{ value: '', label: '一级', }, ]; for (let index = 0; index < res.datas.length; index++) { const item = res.datas[index]; options.push({ value: item.refCode, label: item.name, }); } this.setData({ 'stairList.options': options, 'stairList.value': this.data.stairCode, }); if (!options.length) { this.setData({ disabledStair: true }) } }); }, // 获取一级分类下二级分类 getSecondList(path) { const options = []; const query = { path, filterList: [], queryType: '\\', searchList: [], size: '30', start: '0', storeRefCode: app.config.goodsStore, sort: { type: 'Asc', field: 'LinkOrder' }, }; app.MG.store.getStoreChannelList(query).then((res) => { for (let index = 0; index < res.datas.length; index++) { const item = res.datas[index]; options.push({ value: `${item.pathLinks[0].linkPath}\\${item.id}`, label: item.name, }); } this.setData({ 'secondList.options': options, }); const second = [this.data.secondCode] this.setData({ 'secondList.value': second }) }); }, // 获取重点项目 getProjectList(type) { this.setData({ disabledProject: false, disabledNewForms: false }) const options = []; const arr = []; let array = []; const query = { refCodes: [type], }; app.MG.store.getProductTypeField(query).then((res) => { array = JSON.parse(res[0].config).option.filter(item => item.value == this.data.assortCheck.code); for (let index = 0; index < array.length; index++) { const element = array[index]; if (element.child) { for (let index = 0; index < element.child.length; index++) { const item = element.child[index]; arr.push(item); } } } if (type == 'bookClassification') { for (let index = 0; index < arr.length; index++) { const element = arr[index]; options.push({ value: element.value, label: element.name, }); } if (!options.length) { this.setData({ disabledProject: true }) } this.setData({ 'majorProjectList.options': options, }); } else if (type == 'newFormsTextbooks') { for (let index = 0; index < arr.length; index++) { const element = arr[index]; options.push({ value: element.value, label: element.name, }); } if (!options.length) { this.setData({ disabledNewForms: true }) } this.setData({ 'newTextBook.options': options, }); console.log('重点项目', this.data.newTextBook); } }); }, // 获取图书列表 getBookList(path) { if (this.data.isRequesting) { return false; } this.setData({ loading: true, noData: false, isRequesting: true }) let sort; let pathObj = {}; if (this.data.pathList.length) { pathObj = { subAccess: this.data.pathList, }; } else { pathObj = { path, queryType: '*', }; } if (this.data.sortList.value == 'name-asc') { sort = { Name: 'Asc', BaseType: '' } } else if (this.data.sortList.value == 'name-desc') { sort = { Name: 'Desc', BaseType: '' } } else if (this.data.sortList.value == 'time-asc') { sort = { PublicationDate: 'Asc', BaseType: 'DateTime' } } else if (this.data.sortList.value == 'time-desc') { debugger sort = { PublicationDate: 'Desc', BaseType: 'DateTime' } } else if (this.data.sortList.value == 'default') { sort = { field: 'order', type: 'Desc' } } // if (this.data.sort) { // sort = { // Name: this.data.sort, // BaseType: '', // }; // } else { // sort = { // type: 'Desc', // field: 'ViewCount', // }; // } // 搜索 let searchObj = {}; if (this.data.searchValue) { searchObj = { 'Name*': this.data.searchValue, '||author*': this.data.searchValue, '||isbn*': this.data.searchValue, '||seriesName*': this.data.searchValue, }; } const query = { ...pathObj, filterList: [{ value: 'Normal', field: 'state', }, ], sort, paging: { start: 0, size: this.data.pageCount.page * 8, }, fields: { author: [], publicationDate: [], ...searchObj, 'bookClassification*': this.data.majorProjectList.value, 'newFormsTextbooks*': this.data.newTextBook.value, }, }; app.MG.store.getProductList(query).then((res) => { this.setData({ bookList: res.datas, enable: false, "pageCount.total": res.total, loading: false, isRequesting: false }); if (!res.datas.length) { this.setData({ noData: true, }) if (!this.data.pathList.length) { // 未选择二级分类,且无图书 this.setData({ disabledSecondList: true }) } else { this.setData({ disabledSecondList: false }) } } if (this.data.triggered) { this.setData({ triggered: false }) wx.showToast({ title: '刷新成功', }) } }); }, // 一级分类切换 onChangeStair(e) { const path = e.detail.value.length ? `${this.data.assortCheck.code}\\${e.detail.value}` : this.data.assortCheck.code; console.log(this.data.path); this.setData({ pathList: [], stairCode: e.detail.value, secondCode: '', path: path, 'stairList.value': e.detail.value, }); this.getBookList(path); this.getSecondList(path); if (e.detail.value == '') { this.setData({ disabledSecondList: true }) } else { this.setData({ disabledSecondList: false }) } console.log(this.data.disabledSecondList); }, // 二级分类切换 onChangeSecond(e) { const pathList = []; for (let index = 0; index < e.detail.value.length; index++) { const element = e.detail.value[index]; pathList.push({ Path: element, Type: '*', StoreRefCode: app.config.goodsStore, }); } this.setData({ pathList: pathList, 'secondList.value': e.detail.value, }); }, // onConfirmSecond() { this.getBookList(this.data.path); }, // 重点项目改变 changeMajorProject(e) { this.setData({ 'majorProjectList.value': e.detail.value, }); this.getBookList(this.data.path); }, // 重点项目重置 resetMajorProject() { this.setData({ 'majorProjectList.value': [], }); this.getBookList(this.data.path); }, // 排序切换 onSortChange(e) { this.setData({ 'sortList.value': e.detail.value }) let path; if (this.data.secondCode) { path = this.data.secondCode; } else if (this.data.stairCode) { path = `${this.data.assortCheck.code}\\${this.data.stairCode}`; } else { path = this.data.assortCheck.code; } this.setData({ path: path, }); this.getBookList(path); }, changeNewText(e) { this.setData({ 'newTextBook.value': e.detail.value, }); this.getBookList(this.data.path); }, resetNewText() { this.setData({ 'newTextBook.value': [], }); this.getBookList(this.data.path); }, // 排序按钮 // sortClick() { // if (!this.data.sort.length) { // this.setData({ // sort: 'Desc', // }); // } else if (this.data.sort == 'Desc') { // this.setData({ // sort: 'Asc', // }); // } else if (this.data.sort == 'Asc') { // this.setData({ // sort: '', // }); // } // let path; // if (this.data.secondCode) { // path = this.data.secondCode; // } else if (this.data.stairCode) { // path = `${this.data.assortCheck.code}\\${this.data.stairCode}`; // } else { // path = this.data.assortCheck.code; // } // this.setData({ // path: path, // }); // this.getBookList(path); // }, // 搜索图书 searchBook(e) { console.log(e.detail.value); this.setData({ searchValue: e.detail.value, }); this.getBookList(this.data.path); }, // 跳转图书详情 goDetail(e) { const { book } = e.currentTarget.dataset; wx.navigateTo({ url: `/packageBookService/pages/bookServices/detail/index?id=${book.id}&name=${book.name}`, }); }, onRefresh() { this.setData({ enable: true }); this.getBookList(this.data.path) }, openDropdown() { console.log('展开哦', ); this.setData({ showDropdown: true }) }, closeDropdown() { console.log('关闭'); this.setData({ showDropdown: false }) } });