// pages/retrievalPage/index.js import request from '../../assets/request/index' import { handleQueryResourceListData } from '../../assets/js/middleGround/tool' const app = getApp() Page({ /** * 页面的初始数据 */ data: { loading: true, hidden: true, input: '', dialogKey: '', showWithInput: false, showTextAndTitleWithInput: false, downloadLoadin: false, isMore: null, navBarHeight: '', barHeight: '', searchVal: '', bookData: [], //图书 bookTotal: 0, courseData: [], //课程 courseTotal: 0, digitalTextbooksData: [], //数字教材 digitalTextbooksTotal: 0, seminarData: [], //专题研讨 seminarTotal: 0, biblioClassificationData: [], //书展 biblioClassificationTotal: 0, bookFairData: [], //书目 bookFairTotal: 0, pageCount: { page: 1, total: 0, }, tabValue: '0', tabPanelstyle: 'display:flex;justify-content:center;align-items:center;', // tab选项 tabList: [{ title: "图书", index: "0", bookTotal: 0 }, { title: "课程", index: "1", bookTotal: 0 }, { title: "数字教材", index: "2", bookTotal: 0 }, { title: "专题", index: "3", bookTotal: 0 }, { title: "书目", index: "4", bookTotal: 0 }, { title: "书展", index: "5", bookTotal: 0 }, ], tabsId: 0, //默认选型为装备 height: '', inputStyle: 'border: 2rpx solid rgba(220,220,220,1);border-radius: 12rpx; padding: 0 0 0 16rpx;height:70rpx', }, /** * 生命周期函数--监听页面加载 */ 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, searchVal: options.searchVal }) this.retrievalPageGet() this.bibliographyGet() let e = { detail: { value: "0" } } this.onTabsChange(e) // 检查登录状态 const token = wx.getStorageSync(app.config.tokenKey) if (!token) { loginInfo(app, (data) => { if (data) { this.getUserInfo() } }) } else { this.getUserInfo() } var that = this; // 动态获取屏幕高度 wx.getSystemInfo({ success: (result) => { that.setData({ height: result.windowHeight }); }, }) }, // 获取登录用户身份 getUserInfo() { app.MG.identity.getCurrentAppUser().then(res => { // 用户信息优先级:教师认证 > 微信 > 学生(注册时默认) if (res) { //获取用户类型 let teacherRole = res.roleLinks.find((item) => item.role.refCode == 'teacher') let teacherInfos = res.infoList.find((item) => item.type == 'teacherInfo') let eMailData = res.secretList.find(i => i.type == 'EMail') if (eMailData) { this.setData({ input: eMailData.credential }) } else if (teacherRole && teacherInfos) { this.setData({ input: JSON.parse(teacherInfos.data).email }) } else { this.setData({ input: '' }) } } }); }, /** * 生命周期函数--监听页面初次渲染完成 */ onReady() { }, /** * 生命周期函数--监听页面显示 */ onShow() { }, /** * 生命周期函数--监听页面隐藏 */ onHide() { }, /** * 生命周期函数--监听页面卸载 */ onUnload() { }, /** * 页面相关事件处理函数--监听用户下拉动作 */ onPullDownRefresh() { }, /** * 页面上拉触底事件的处理函数 */ onReachBottom() { }, /** * 用户点击右上角分享 */ onShareAppMessage() {}, onShareTimeline() {}, goBack() { wx.navigateBack(); }, //取消按钮 onCancellation() { this.setData({ searchVal: '' }) this.retrievalPageGet() this.bibliographyGet() }, //标签的切换 onTabsChange(event) { const value = event.detail.value this.setData({ tabValue: value, isMore: false }) if (value === '4') { this.bibliographyGet() } else { this.retrievalPageGet() } }, retrievalPageGet() { let fields = { liveTime: [], lecturer: [], startTime: [], jsek_link: [], courseLeader: [], affiliatedUnit: [], publishingUnit: [], classHours: [], author: [], subtitle: [] } let searchObj = {} if (this.data.searchVal) { searchObj = { 'Name*': this.data.searchVal.trim(), '||author*': this.data.searchVal.trim(), '||isbn*': this.data.searchVal.trim(), '||seriesName*': this.data.searchVal.trim(), '||projectLeader*': this.data.searchVal.trim() } } let url = '/store/api/ApiQueryProductByAppUser' //图书 let queryBook = { AccessControl: { Path: '*', StoreRefCode: `defaultGoodsStore${app.config.appId}`, Type: '*', LinkType: '' }, PageQuery: { Start: 0, Size: this.data.pageCount.page * 9, }, SortQuery: [{ LinkOrder: 'Desc' }], CreateDate: [], Description: [], Name: [], Icon: [], RefCode: [], TypeId: [], SysType: [], State: [], Tag: [], BeginDate: [], EndDate: [], ProductLinkInfo: [], AllowDonate: [], ...searchObj, ...fields } let courseObj = {} if (this.data.searchVal) { courseObj = { 'Name*': this.data.searchVal.trim(), '||author*': this.data.searchVal.trim(), '||isbn*': this.data.searchVal.trim(), '||seriesName*': this.data.searchVal.trim(), '||projectLeader*': this.data.searchVal.trim() } } //课程 let queryCourse = { AccessControl: { Path: '*', StoreRefCode: 'jsek_digitalCourses', Type: '*', LinkType: '' }, PageQuery: { Start: 0, Size: this.data.pageCount.page * 4 }, SortQuery: [{ LinkOrder: 'Desc' }], CreateDate: [], Description: [], Name: [], Icon: [], RefCode: [], TypeId: [], SysType: [], State: [], Tag: [], BeginDate: [], EndDate: [], ProductLinkInfo: [], AllowDonate: [], ...courseObj, ...fields } let digitalTextbooksObj = {} if (this.data.searchVal) { digitalTextbooksObj = { 'Name*': this.data.searchVal.trim(), '||author*': this.data.searchVal.trim(), '||isbn*': this.data.searchVal.trim(), '||seriesName*': this.data.searchVal.trim() } } // 数字教材 let queryDigitalTextbooks = { AccessControl: { Path: '*', StoreRefCode: 'jsek_digitalTextbooks', Type: '*', LinkType: '' }, PageQuery: { Start: 0, Size: this.data.pageCount.page * 9, }, SortQuery: [{ LinkOrder: 'Desc' }], CreateDate: [], Description: [], Name: [], Icon: [], RefCode: [], TypeId: [], SysType: [], State: [], Tag: [], BeginDate: [], EndDate: [], ProductLinkInfo: [], AllowDonate: [], ...digitalTextbooksObj, ...fields } let seminarObj = {} if (this.data.searchVal) { seminarObj = { 'Name*': this.data.searchVal.trim(), '||author*': this.data.searchVal.trim(), '||isbn*': this.data.searchVal.trim(), '||seriesName*': this.data.searchVal.trim() } } // 专题研讨 let querySeminar = { AccessControl: { Path: '*', StoreRefCode: 'jsek_seminar', Type: '*', LinkType: '' }, PageQuery: { Start: 0, Size: this.data.pageCount.page * 6, }, SortQuery: [{ LinkOrder: 'Desc' }], CreateDate: [], Description: [], Name: [], Icon: [], RefCode: [], TypeId: [], SysType: [], State: [], Tag: [], BeginDate: [], EndDate: [], ProductLinkInfo: [], AllowDonate: [], ...fields, ...seminarObj } let biblioClassificationObj = {} if (this.data.searchVal) { biblioClassificationObj = { 'Name*': this.data.searchVal.trim(), '||author*': this.data.searchVal.trim(), '||isbn*': this.data.searchVal.trim(), '||seriesName*': this.data.searchVal.trim() } } //书展 let queryBiblioClassification = { AccessControl: { Path: '*', StoreRefCode: 'jsek_bookFair', Type: '*', LinkType: '' }, PageQuery: { Start: 0, Size: this.data.pageCount.page * 10 }, SortQuery: [{ LinkOrder: 'Desc' }], CreateDate: [], Description: [], Name: [], Icon: [], RefCode: [], TypeId: [], SysType: [], State: [], Tag: [], BeginDate: [], EndDate: [], ProductLinkInfo: [], AllowDonate: [], content: [], backgroundSelection: [], ...fields, ...biblioClassificationObj } let body = { query: JSON.stringify({ Query: [{ queryBook: queryBook }, { queryCourse: queryCourse }, { queryDigitalTextbooks: queryDigitalTextbooks }, { querySeminar: querySeminar }, { queryBiblioClassification: queryBiblioClassification }] }) } request({ url: url, method: 'post', data: body }).then((resp) => { //图书 0 const data1 = resp[0] const datas1 = handleQueryResourceListData({ datas: data1.datas, fields }) this.setData({ bookData: datas1, bookTotal: data1.totalCount, [`tabList[${0}].bookTotal`]: data1.totalCount }) //数字课程 1 const data2 = resp[1] const datas2 = handleQueryResourceListData({ datas: data2.datas, fields }) this.setData({ courseData: datas2, courseTotal: data2.totalCount, [`tabList[${1}].bookTotal`]: data2.totalCount }) // 数字教材 2 const data3 = resp[2] const datas3 = handleQueryResourceListData({ datas: data3.datas, fields }) this.setData({ digitalTextbooksData: datas3, digitalTextbooksTotal: data3.totalCount, [`tabList[${2}].bookTotal`]: data3.totalCount }) // 专题研讨 3 const data4 = resp[3] const datas4 = handleQueryResourceListData({ datas: data4.datas, fields }) this.setData({ seminarData: datas4, seminarTotal: data4.totalCount, [`tabList[${3}].bookTotal`]: data4.totalCount }) // 书展 4 const data5 = resp[4] const datas5 = handleQueryResourceListData({ datas: data5.datas, fields }) datas5.forEach((items) => { items.subtitleName = items.subtitle + items.name }) this.setData({ biblioClassificationData: datas5, biblioClassificationTotal: data5.totalCount, [`tabList[${5}].bookTotal`]: data5.totalCount }) this.setData({ loading: false, hidden: false, }) }) wx.stopPullDownRefresh() }, bibliographyGet() { let bibliographyObj = {} if (this.data.searchVal) { bibliographyObj = { 'Name*': this.data.searchVal.trim(), '||author*': this.data.searchVal.trim(), '||isbn*': this.data.searchVal.trim(), '||seriesName*': this.data.searchVal.trim() } } app.MG.resource.getItem({ path: 'jsek_biblioClassification', queryType: '*', paging: { start: 0, size: this.data.pageCount.page * 9, }, coverSize: { width: 260 }, fields: { jsek_link: [], content: [], subtitle: [], fileType: [], jsek_resource: [], freeFile: [], ...bibliographyObj }, SysType: "CmsItem" }).then(res => { this.setData({ bookFairData: res.datas, bookFairTotal: res.total, [`tabList[${4}].bookTotal`]: res.total }) }) wx.stopPullDownRefresh() }, downloadData(event) { const item = event.currentTarget.dataset.item; const URL = app.config.requestCtx + '/file/api/ApiDownload?md5=' + item.datas.freeFile.Value item.determine = false setTimeout(() => { if (URL) { item.determine = true } }, 600) wx.downloadFile({ url: URL, success: function (res) { const filePath = res.tempFilePath; wx.openDocument({ filePath: filePath, success: function (res) { console.log('打开文档成功'); }, fail: function (res) { console.log('打开文档失败', res); } }); }, fail: function (res) { console.log('下载文件失败', res); } }); }, openBookFair(event) { const item = event.currentTarget.dataset.item if (item.fileType == "pdf") { wx.navigateTo({ url: "/packageBookService/pages/components/webView/index?md5=" + item.freeFile + "&fileName=" + item.name + "&fileType=" + item.fileType + "&bookBuy=true" // "&freePage=" + // this.data.fileInfo.freePage + + "&bookId=" + item.id, }); } else { Toast({ context: this, selector: '#t-toast', message: '此书不能查看', theme: 'warning', direction: 'column', }); } }, onSearchSubmit() { this.setData({ loading: true, hidden: true, }) this.retrievalPageGet() this.bibliographyGet() }, onBook(e) { const item = e.currentTarget.dataset.item wx.navigateTo({ url: '/packageBookService/pages/bookServices/detail/index?id=' + item.id + '&name=' + item.name }) }, onBookExhibitionDetails(e) { const item = e.currentTarget.dataset.item wx.navigateTo({ url: '/pages/bookExhibitionDetails/index?id=' + item.id + '&bookName=' + item.name // 假设跳转到详情页面,并传递了id参数 }); }, //上拉函数 onPullDownRefresh() { console.log("下拉刷新..."); }, /** * 页面上拉触底事件的处理函数 */ onReachBottom(e) { if (this.data.tabValue == 0) { if (this.data.bookData.length < this.data.bookTotal) { this.setData({ isMore: true, "pageCount.page": this.data.pageCount.page + 1 }) this.retrievalPageGet() } else { this.setData({ isMore: true, }) setTimeout(() => { this.setData({ isMore: false }) }, 100) } } else if (this.data.tabValue == 1) { if (this.data.courseData.length < this.data.courseTotal) { this.setData({ isMore: true, "pageCount.page": this.data.pageCount.page + 1 }) this.retrievalPageGet() } else { this.setData({ isMore: true, }) setTimeout(() => { this.setData({ isMore: false }) }, 100) } } else if (this.data.tabValue == 2) { if (this.data.digitalTextbooksData.length < this.data.digitalTextbooksTotal && this.data.digitalTextbooksData.length > 9) { this.setData({ isMore: true, "pageCount.page": this.data.pageCount.page + 1 }) this.retrievalPageGet() } else { this.setData({ isMore: true, }) setTimeout(() => { this.setData({ isMore: false }) }, 100) } } else if (this.data.tabValue == 3) { if (this.data.seminarData.length < this.data.seminarTotal) { this.setData({ isMore: true, "pageCount.page": this.data.pageCount.page + 1 }) this.retrievalPageGet() } else { this.setData({ isMore: true, }) setTimeout(() => { this.setData({ isMore: false }) }, 100) } } else if (this.data.tabValue == 4) { if (this.data.bookFairData.length < this.data.bookFairTotal) { this.setData({ isMore: true, "pageCount.page": this.data.pageCount.page + 1 }) this.bibliographyGet() } else { this.setData({ isMore: true, }) setTimeout(() => { this.setData({ isMore: false }) }, 100) } } else if (this.data.tabValue == 5) { if (this.data.biblioClassificationData.length < this.data.biblioClassificationTotal) { this.setData({ isMore: true, "pageCount.page": this.data.pageCount.page + 1 }) this.retrievalPageGet() } else { this.setData({ isMore: true, }) setTimeout(() => { this.setData({ isMore: false }) }, 100) } } }, // 下拉函数 onPullDownRefresh() { if (this.data.tabValue == 4) { this.setData({ "pageCount.page": 1 }) this.bibliographyGet() } else { this.setData({ "pageCount.page": 1 }) this.retrievalPageGet() } }, underConstruction() { wx.showToast({ title: "建设中", icon: 'none', duration: 1000 }) }, // 邮箱点击 mailbox(e) { const key = e.currentTarget.dataset.key; const item = e.currentTarget.dataset.item; this.setData({ [key]: true, dialogKey: key, Md5: item.datas.freeFile.FileList[0].Md5 }); }, //邮箱的校验 onEmailInput(e) { const isEmailValid = /^[a-zA-Z0-9_.-]+@[a-zA-Z0-9-]+(\.[a-zA-Z0-9-]+)*\.[a-zA-Z0-9]{2,6}$/.test(e.detail.value); this.setData({ emailError: !isEmailValid, "input": e.detail.value, }); }, //弹窗确认 onConfirm() { if (!this.data.emailError && this.data.input) { const { dialogKey } = this.data; this.setData({ [dialogKey]: false }); if (this.data.input) { let query = { eMail: this.data.input, md5s: [this.data.Md5] } app.MG.file.sendFileWithEmail(query).then(res => { console.log(res); }) } } else { // 校验不通过,给出错误提示 wx.showToast({ title: '邮箱格式不正确', icon: 'none', }); } }, // 弹窗取消 closeDialog() { const { dialogKey } = this.data; this.setData({ [dialogKey]: false }); }, onScrollToLower() { if (this.data.tabValue == 0) { if (this.data.bookData.length < this.data.bookTotal) { this.setData({ isMore: true, "pageCount.page": this.data.pageCount.page + 1 }) this.retrievalPageGet() } else { this.setData({ isMore: true, }) setTimeout(() => { this.setData({ isMore: false }) }, 100) } } else if (this.data.tabValue == 1) { if (this.data.courseData.length < this.data.courseTotal) { this.setData({ isMore: true, "pageCount.page": this.data.pageCount.page + 1 }) this.retrievalPageGet() } else { this.setData({ isMore: true, }) setTimeout(() => { this.setData({ isMore: false }) }, 100) } } else if (this.data.tabValue == 2) { if (this.data.digitalTextbooksData.length < this.data.digitalTextbooksTotal && this.data.digitalTextbooksData.length > 9) { this.setData({ isMore: true, "pageCount.page": this.data.pageCount.page + 1 }) this.retrievalPageGet() } else { this.setData({ isMore: true, }) setTimeout(() => { this.setData({ isMore: false }) }, 100) } } else if (this.data.tabValue == 3) { if (this.data.seminarData.length < this.data.seminarTotal) { this.setData({ isMore: true, "pageCount.page": this.data.pageCount.page + 1 }) this.retrievalPageGet() } else { this.setData({ isMore: true, }) setTimeout(() => { this.setData({ isMore: false }) }, 100) } } else if (this.data.tabValue == 4) { if (this.data.bookFairData.length < this.data.bookFairTotal) { this.setData({ isMore: true, "pageCount.page": this.data.pageCount.page + 1 }) this.bibliographyGet() } else { this.setData({ isMore: true, }) setTimeout(() => { this.setData({ isMore: false }) }, 100) } } else if (this.data.tabValue == 5) { if (this.data.biblioClassificationData.length < this.data.biblioClassificationTotal) { this.setData({ isMore: true, "pageCount.page": this.data.pageCount.page + 1 }) this.retrievalPageGet() } else { this.setData({ isMore: true, }) setTimeout(() => { this.setData({ isMore: false }) }, 100) } } }, // 滑动时触发的事件 slideOn(e) { // 拿到当前索引并动态改变 this.setData({ tabsId: e.detail.current }) }, //点击tab时触发 tabsOn(e) { this.setData({ //拿到当前索引并动态改变 tabsId: e.currentTarget.dataset.idx }) }, })