| | |
| | | booksList: [], |
| | | readBookList: [], //数字阅读 |
| | | textbookList: [], //数字教材 |
| | | rankingList: []//排行榜 |
| | | rankingList: [],//排行榜 |
| | | shoppingCartGetId: [] |
| | | }, |
| | | onShow() { |
| | | this.getTabBar().init(); |
| | |
| | | this.getBookTypeList(); |
| | | this.getReadBookList(); |
| | | this.getTextbookListList(); |
| | | this.getRankingList() |
| | | this.getRankingList(); |
| | | this.getShoppingCartList() |
| | | }, |
| | | // 获取测试登录时的token |
| | | getTestLoginInfo() { |
| | |
| | | toPages(item) { |
| | | let info = item.target.dataset.info |
| | | if (info.url) { |
| | | wx.navigateTo({ |
| | | url: info.url |
| | | }) |
| | | if (info.text == "图书服务") { |
| | | wx.switchTab({ |
| | | url: info.url |
| | | }) |
| | | } else { |
| | | wx.navigateTo({ |
| | | url: info.url |
| | | }) |
| | | } |
| | | } else { |
| | | wx.showToast({ |
| | | title: "建设中", |
| | |
| | | }) |
| | | }) |
| | | }, |
| | | |
| | | |
| | | //精选课程分类 |
| | | getCourseTypeListList() { |
| | |
| | | //图书服务 |
| | | tabBookClick(item) { |
| | | let info = this.data.bookTypeList[item.detail.value] |
| | | console.log(info, 123) |
| | | this.getBooksList(info) |
| | | }, |
| | | //数字阅读 |
| | |
| | | //获取排行榜 |
| | | getRankingList() { |
| | | const obj = { |
| | | storeInfo: app.config.digitalTextbooks, |
| | | path: 'jsek_homepageDigitalTextbooks', |
| | | storeInfo: app.config.goodsStore, |
| | | path: '*', |
| | | queryType: '*', |
| | | coverSize: { |
| | | width: 150 |
| | | }, |
| | | paging: { |
| | | start: 0, |
| | | size: 6 |
| | | size: 10 |
| | | }, |
| | | fields: { |
| | | author: [], |
| | | }, |
| | | filterList: [ |
| | | { |
| | | value: 'Normal', |
| | | field: 'state' |
| | | } |
| | | ], |
| | | sort: { |
| | | Name: 'Asc', |
| | | BaseType: '' |
| | | |
| | | } |
| | | } |
| | | app.MG.store.getProductList(obj).then((res) => { |
| | |
| | | }) |
| | | }) |
| | | }, |
| | | // 跳转图书详情 |
| | | goDetail(e) { |
| | | const { book } = e.currentTarget.dataset; |
| | | wx.navigateTo({ |
| | | url: `/pages/bookServices/detail/index?id=${book.id}&name=${book.name}`, |
| | | }); |
| | | }, |
| | | getShoppingCartList() { |
| | | let query = { |
| | | start: 0, |
| | | size: 999, |
| | | filterList: [], |
| | | searchList: [] |
| | | } |
| | | app.MG.store.getShoppingCartProductList(query).then((res) => { |
| | | let idList = []; |
| | | res.datas.forEach((item) => { |
| | | idList.push(item.saleMethod.id) |
| | | }) |
| | | this.setData({ |
| | | shoppingCartGetId: idList |
| | | }) |
| | | }) |
| | | }, |
| | | addCart(e) { |
| | | const { info } = e.currentTarget.dataset; |
| | | console.log(info) |
| | | if (wx.getStorageSync(app.config.tokenKey)) { |
| | | let query = { |
| | | start: 0, |
| | | size: 999, |
| | | filterList: [], |
| | | searchList: [] |
| | | } |
| | | try { |
| | | if ( |
| | | this.data.shoppingCartGetId.includes( |
| | | info.defaultSaleMethodId |
| | | ) |
| | | ) { |
| | | wx.showToast({ |
| | | title: "该书已在购物车,请勿重复添加空", |
| | | icon: 'none', |
| | | duration: 1000 |
| | | }) |
| | | } else { |
| | | let query = { |
| | | requests: [ |
| | | { |
| | | saleMethodId: info.defaultSaleMethodId, |
| | | storeEventId: null, |
| | | agentCode: '电子书' |
| | | } |
| | | ] |
| | | } |
| | | const addRes = app.MG.store.addShoppingCart(query) |
| | | if (addRes) { |
| | | wx.showToast({ |
| | | title: "添加成功", |
| | | icon: 'success', |
| | | duration: 1000 |
| | | }) |
| | | } |
| | | this.getShoppingCartList() |
| | | } |
| | | } catch (error) { |
| | | console.error('出错了:', error) |
| | | } |
| | | } |
| | | |
| | | }, |
| | | onMoreGuide(e) { |
| | | let type = e.currentTarget.dataset.info |
| | | console.log(e, 1) |
| | | if (type == "tushufuwu") { |
| | | wx.navigateTo({ |
| | | url: '/pages/bookServices/list/index' |
| | | }) |
| | | } else { |
| | | wx.showToast({ |
| | | title: "建设中", |
| | | icon: 'none', |
| | | duration: 2000 |
| | | }) |
| | | } |
| | | |
| | | }, |
| | | |
| | | |
| | | onPageScroll(e) { |
| | | this.setData({ |
| | |
| | | <view class="icon"> |
| | | <t-image src="/static/images/home/zhuantitaolun.png" mode="heightFix" class="iconImage" /> |
| | | </view> |
| | | <view bindtap="onMoreGuide" class="flex"> |
| | | <view data-info="{{'zhuantitaolun'}}" bindtap="onMoreGuide" class="flex"> |
| | | <text class="more">更多</text> |
| | | <t-icon name="chevron-right" size="32rpx" color="#ff6d00" /> |
| | | </view> |
| | | </view> |
| | | <view class="listBox"> |
| | | <view wx:for="{{specialSubjectList}}" wx:for-item="item" wx:for-index="index" wx:key="index" bindtap="toList" data-info="{{item}}" class="listItemBox"> |
| | | <view wx:for="{{specialSubjectList}}" wx:for-item="item" wx:for-index="index" wx:key="index" class="listItemBox"> |
| | | <view class="listItem"> |
| | | <view class="specialSubject-img"> |
| | | <image src="{{item.icon}}" mode="aspectFill" class="img" /> |
| | |
| | | <view class="icon"> |
| | | <t-image src="/static/images/home/jingxuankecheng@2x.png" mode="heightFix" class="iconImage" /> |
| | | </view> |
| | | <view bindtap="onMoreGuide" class="flex"> |
| | | <view data-info="{{'jingxuankecheng'}}" bindtap="onMoreGuide" class="flex"> |
| | | <text class="more">更多</text> |
| | | <t-icon name="chevron-right" size="32rpx" color="#ff6d00" /> |
| | | </view> |
| | |
| | | </view> |
| | | <view class="listBox1"> |
| | | <view wx:if="{{courseList.length>0}}"> |
| | | <view wx:for="{{courseList}}" wx:for-item="item" wx:for-index="index" wx:key="index" bindtap="toList" data-info="{{item}}" class="listItemBox"> |
| | | <view wx:for="{{courseList}}" wx:for-item="item" wx:for-index="index" wx:key="index" class="listItemBox"> |
| | | <view class="listItem flex"> |
| | | <view class="specialSubject-img"> |
| | | <image src="{{item.icon}}" mode="aspectFill" class="img" /> |
| | |
| | | <view class="priceBox flex jc-sb"> |
| | | <text class="price" wx:if="{{item.price == 0}}">免费</text> |
| | | <text class="price" wx:if="{{item.price !== 0}}">¥{{item.price}}</text> |
| | | <image src="/static/images/home/home-cart.png" mode="aspectFill" class="addCartImg" /> |
| | | <image src="/static/images/home/home-cart.png" mode="aspectFill" class="addCartImg" bind:tap="addCart" data-info="{{item}}" /> |
| | | </view> |
| | | </view> |
| | | </view> |
| | |
| | | <view class="icon"> |
| | | <t-image src="/static/images/home/tushufuwu@2x.png" mode="heightFix" class="iconImage" /> |
| | | </view> |
| | | <view bindtap="onMoreGuide" class="flex"> |
| | | <view data-info="{{'tushufuwu'}}" bindtap="onMoreGuide" class="flex"> |
| | | <text class="more">更多</text> |
| | | <t-icon name="chevron-right" size="32rpx" color="#ff6d00" /> |
| | | </view> |
| | |
| | | </view> |
| | | <view class="listBox2"> |
| | | <view wx:if="{{booksList.length > 0}}" class="flex"> |
| | | <view wx:for="{{booksList}}" wx:for-item="item" wx:for-index="index" wx:key="index" bindtap="toList" data-info="{{item}}" class="booksListItemBox"> |
| | | <view class="listItem"> |
| | | <view wx:for="{{booksList}}" wx:for-item="item" wx:for-index="index" wx:key="index" class="booksListItemBox"> |
| | | <view class="listItem" bind:tap="goDetail" data-book="{{item}}"> |
| | | <view class="specialSubject-img"> |
| | | <image src="{{item.icon}}" mode="aspectFill" class="img" /> |
| | | </view> |
| | |
| | | <view class="icon"> |
| | | <t-image src="/static/images/home/shuziyuedu1@2x.png" mode="heightFix" class="iconImage" /> |
| | | </view> |
| | | <view bindtap="onMoreGuide" class="flex"> |
| | | <view data-info="{{'shuziyuedu'}}" bindtap="onMoreGuide" class="flex"> |
| | | <text class="more">更多</text> |
| | | <t-icon name="chevron-right" size="32rpx" color="#ff6d00" /> |
| | | </view> |
| | | </view> |
| | | <view class="listBox2 flex"> |
| | | <view wx:for="{{readBookList}}" wx:for-item="item" wx:for-index="index" wx:key="index" bindtap="toList" data-info="{{item}}" class="booksListItemBox"> |
| | | <view wx:for="{{readBookList}}" wx:for-item="item" wx:for-index="index" wx:key="index" class="booksListItemBox"> |
| | | <view class="listItem"> |
| | | <view class="specialSubject-img"> |
| | | <image src="{{item.icon}}" mode="aspectFill" class="img" /> |
| | |
| | | <view class="icon"> |
| | | <t-image src="/static/images/home/shuzijiaocai1@2x.png" mode="heightFix" class="iconImage" /> |
| | | </view> |
| | | <view bindtap="onMoreGuide" class="flex"> |
| | | <view data-info="{{'shuzijiaocai'}}" bindtap="onMoreGuide" class="flex"> |
| | | <text class="more">更多</text> |
| | | <t-icon name="chevron-right" size="32rpx" color="#ff6d00" /> |
| | | </view> |
| | | </view> |
| | | <view class="listBox3"> |
| | | <view wx:if="{{textbookList.length > 0}}" class="listBox3"> |
| | | <view wx:for="{{textbookList}}" wx:for-item="item" wx:for-index="index" wx:key="index" bindtap="toList" data-info="{{item}}" class="textbooksItemBox"> |
| | | <view wx:for="{{textbookList}}" wx:for-item="item" wx:for-index="index" wx:key="index" class="textbooksItemBox"> |
| | | <view class="listItem flex"> |
| | | <view class="specialSubject-img"> |
| | | <image src="{{item.icon}}" mode="aspectFill" class="img" /> |
| | |
| | | <view class="priceBox flex jc-sb"> |
| | | <text class="price" wx:if="{{item.price == 0}}">免费</text> |
| | | <text class="price" wx:if="{{item.price !== 0}}">¥{{item.price}}</text> |
| | | <image src="/static/images/home/home-cart.png" mode="aspectFill" class="addCartImg" /> |
| | | <image src="/static/images/home/home-cart.png" mode="aspectFill" class="addCartImg" bind:tap="addCart" data-info="{{item}}" /> |
| | | </view> |
| | | </view> |
| | | </view> |
| | |
| | | <view class="icon"> |
| | | <t-image src="/static/images/home/paihangbang@2x.png" mode="heightFix" class="iconImage" /> |
| | | </view> |
| | | <view bindtap="onMoreGuide" class="flex"> |
| | | <text class="more">更多</text> |
| | | <t-icon name="chevron-right" size="32rpx" color="#ff6d00" /> |
| | | </view> |
| | | </view> |
| | | <view class="listBox2 rankingList flex"> |
| | | <view wx:for="{{rankingList}}" wx:for-item="item" wx:for-index="index" wx:key="index" bindtap="toList" data-info="{{item}}" class="booksListItemBox"> |
| | | <view class="listItem"> |
| | | <view class="specialSubject-img"> |
| | | <image src="{{item.icon}}" mode="aspectFill" class="img" /> |
| | | </view> |
| | | <view class="body-info"> |
| | | <view class="name">{{item.name}}</view> |
| | | <view class="author">{{item.author}}</view> |
| | | <view class="rankingList"> |
| | | <scroll-view class="srcolbox" scroll-x scroll-with-animation='true'> |
| | | <view wx:for="{{rankingList}}" wx:for-item="item" wx:for-index="index" wx:key="index" class="booksListItemBox"> |
| | | <view class="listItem" bind:tap="goDetail" data-book="{{item}}"> |
| | | <view class="specialSubject-img"> |
| | | <image src="{{item.icon}}" mode="aspectFill" class="img" wx:if="{{item.icon}}" /> |
| | | <image src="/static/images/default-book-img.png" mode="aspectFill" class="img" wx:else /> |
| | | </view> |
| | | <view class="body-info"> |
| | | <view class="name">{{item.name}}</view> |
| | | <view class="author">{{item.author}}</view> |
| | | </view> |
| | | </view> |
| | | </view> |
| | | </view> |
| | | </scroll-view> |
| | | </view> |
| | | </view> |
| | | <load-more list-is-empty="{{!goodsList.length}}" status="{{goodsListLoadStatus}}" bind:retry="onReTry" /> |
| | |
| | | } |
| | | |
| | | .listBox1 .listItemBox { |
| | | height: 220rpx; |
| | | height: 210rpx; |
| | | margin-bottom: 30rpx; |
| | | } |
| | | |
| | | .listBox1 .specialSubject-img { |
| | | width: 400rpx; |
| | | height: 218rpx; |
| | | width: 480rpx; |
| | | height: 210rpx; |
| | | flex: 1; |
| | | } |
| | | |
| | | .listBox1 .body-info { |
| | | flex: 1; |
| | | } |
| | | |
| | | .listBox1 .addCartImg, |
| | |
| | | } |
| | | |
| | | .listBox1 .priceBox { |
| | | margin-top: 14rpx; |
| | | margin-top: 10rpx; |
| | | } |
| | | |
| | | .listBox2 { |
| | |
| | | } |
| | | |
| | | .listBox2 .specialSubject-img { |
| | | height: 300rpx; |
| | | height: 280rpx; |
| | | width: 100%; |
| | | box-shadow: 0px 0px 20rpx 2px #f1f1f1; |
| | | } |
| | |
| | | |
| | | .listBox3 .textbooksItemBox .specialSubject-img { |
| | | width: 190rpx; |
| | | height: 260rpx; |
| | | height: 250rpx; |
| | | box-shadow: 0px 0px 20rpx 2px #f1f1f1; |
| | | } |
| | | |
| | |
| | | |
| | | .readList { |
| | | overflow: auto; |
| | | } |
| | | |
| | | .rankingList .listItem { |
| | | padding: 20rpx 0; |
| | | } |
| | | |
| | | .srcolbox { |
| | | width: 100%; |
| | | height: 480rpx; |
| | | white-space: nowrap; |
| | | } |
| | | |
| | | .srcolbox .booksListItemBox { |
| | | display: inline-block; |
| | | width: 188rpx; |
| | | margin-right: 30rpx; |
| | | } |
| | | |
| | | .rankingList .specialSubject-img { |
| | | height: 254rpx; |
| | | width: 100%; |
| | | box-shadow: 0px 0px 20rpx 2px #f1f1f1; |
| | | } |
| | | |
| | | .rankingList .body-info { |
| | | padding: 20rpx 0; |
| | | } |
| | | |
| | | .rankingList .author { |
| | | height: 30rpx; |
| | | color: #333333; |
| | | font-weight: bold; |
| | | line-height: 30rpx; |
| | | display: -webkit-box; |
| | | margin-bottom: 10rpx; |
| | | -webkit-box-orient: vertical; |
| | | -webkit-line-clamp: 1; |
| | | overflow: hidden; |
| | | text-overflow: ellipsis; |
| | | } |
| | |
| | | <view class="user-center-card__header" bind:tap="gotoUserEditPage"> |
| | | <t-avatar image="{{userInfo.avatarUrl || defaultAvatarUrl}}" class="user-center-card__header__avatar" /> |
| | | <view class="user-center-card__header__name">{{'请登录'}}</view> |
| | | <view class="setting"> |
| | | <view class="setting" bind:tap="gotoUserEditPage"> |
| | | <image src="/static/images/personal/setting.png" mode="heightFix" class="img" /> |
| | | <text>设置</text> |
| | | </view> |
| | |
| | | // pages/personalCenter/feedBack/index.js |
| | | import moment from 'moment' |
| | | const app = getApp(); |
| | | Page({ |
| | | |
| | | /** |
| | | * 页面的初始数据 |
| | | */ |
| | | data: { |
| | | active: 0, |
| | | activeName: "proposition", |
| | | tabList: [ |
| | | { |
| | | label: '图书建议', |
| | | key: 0, |
| | | value: 'proposition' |
| | | }, |
| | | { |
| | | label: '意见反馈', |
| | | key: 1, |
| | | value: "feedback" |
| | | } |
| | | ], |
| | | list: [ |
| | | { |
| | | name: "ceshi", |
| | | } |
| | | ], |
| | | //分页 |
| | | page: 1, |
| | | limit: 10, |
| | | pageTotalCount: 0, |
| | | bottomLoading: false, |
| | | isMoreData: false, |
| | | // 返回顶部 |
| | | isBackTop: false, |
| | | setScrollValue: 0, |
| | | skeletonLoding: true, |
| | | |
| | | }, |
| | | |
| | |
| | | */ |
| | | onLoad(options) { |
| | | console.log(options); |
| | | // if (this.data.activeName == "proposition") { |
| | | // this.getDataList("bookOpinion", false); |
| | | // } else { |
| | | // this.getDataList("feedback", false); |
| | | // } |
| | | }, |
| | | |
| | | /** |
| | |
| | | onShow() { |
| | | |
| | | }, |
| | | |
| | | /** |
| | | * 生命周期函数--监听页面隐藏 |
| | | */ |
| | | onHide() { |
| | | |
| | | }, |
| | | |
| | | /** |
| | | * 生命周期函数--监听页面卸载 |
| | | */ |
| | |
| | | |
| | | }, |
| | | |
| | | tabBookClick(item) { |
| | | console.log(item, 1) |
| | | let that = this; |
| | | let info = this.data.tabList[item.detail.value] |
| | | that.setData({ |
| | | skeletonLoding: true, |
| | | active: item.detail.value, |
| | | activeName: info.value, |
| | | list: [], |
| | | page: 1, |
| | | bottomLoading: false, |
| | | isMoreData: false, |
| | | }) |
| | | if (info.value == "proposition") { |
| | | that.getDataList("bookOpinion", false); |
| | | } else { |
| | | that.getDataList("feedback", false); |
| | | } |
| | | }, |
| | | |
| | | getDataList(code, isReachBottom) { |
| | | app.MG.ugc.getTopicMessageList({ |
| | | appRefCode: app.config.appRefCode, |
| | | topicIdOrRefCode: code, |
| | | start: this.data.page * this.data.limit - this.data.limit, |
| | | size: this.data.limit, |
| | | sort: { |
| | | type: "Desc", |
| | | field: "CreateDate" |
| | | } |
| | | }) |
| | | .then(res => { |
| | | try { |
| | | if (res.datas.length > 0) { |
| | | // res.datas.forEach((item) => { |
| | | // item.title = JSON.parse(item.content).content; |
| | | // item.createDate = moment(item.createDate).format("YYYY-MM-DD"); |
| | | // item.updateDate = moment(item.updateDate).format("YYYY-MM-DD");; |
| | | // item.feedBack = item.feedBack ? item.feedBack : "-"; |
| | | // }); |
| | | let dataList = res.datas; |
| | | //触底加载新数据并保留老数据 |
| | | if (isReachBottom) { |
| | | dataList = [...this.data.list, ...dataList] //将新数据加入老数据中 |
| | | } |
| | | this.setData({ |
| | | list: dataList, |
| | | pageTotalCount: res.totalSize, |
| | | bottomLoading: false, |
| | | isMoreData: dataList.length > 0 ? false : true, |
| | | skeletonLoding: false, |
| | | }) |
| | | console.log(this.data.list, 333) |
| | | } else { |
| | | this.setData({ |
| | | skeletonLoding: false, |
| | | }) |
| | | } |
| | | } catch (error) { |
| | | console.log(error) |
| | | } |
| | | }) |
| | | }, |
| | | |
| | | /** |
| | | * 页面相关事件处理函数--监听用户下拉动作 |
| | | */ |
| | | onPullDownRefresh() { |
| | | |
| | | if (this._freshing) return |
| | | this.setData({ |
| | | page: 1, |
| | | limit: 10, |
| | | pageTotalCount: 0, |
| | | bottomLoading: false, |
| | | isMoreData: false |
| | | }) |
| | | this._freshing = true; |
| | | this.setData({ |
| | | triggered: false, |
| | | }) |
| | | if (this.data.activeName == "proposition") { |
| | | this.getDataList("bookOpinion", false); |
| | | } else { |
| | | this.getDataList("feedback", false); |
| | | } |
| | | this._freshing = false |
| | | }, |
| | | |
| | | /** |
| | | * 页面上拉触底事件的处理函数 |
| | | */ |
| | | onReachBottom() { |
| | | this.setData({ |
| | | bottomLoading: true, |
| | | isMoreData: false |
| | | }) |
| | | let bool = false; |
| | | if (this.data.pageTotalCount > this.data.list.length) { |
| | | bool = true; |
| | | this.setData({ |
| | | page: this.data.page + 1, |
| | | }) |
| | | } else { |
| | | setTimeout(() => { |
| | | this.setData({ |
| | | bottomLoading: false, |
| | | isMoreData: true |
| | | }) |
| | | }, 100) |
| | | return false; |
| | | } |
| | | if (this.data.activeName == "proposition") { |
| | | this.getDataList("bookOpinion", bool); |
| | | } else { |
| | | this.getDataList("feedback", bool); |
| | | } |
| | | }, |
| | | |
| | | // 监听滚动距离 |
| | | onPageScroll(e) { |
| | | if (e && e.scrollTop >= 1000) { |
| | | this.setData({ |
| | | isBackTop: true |
| | | }) |
| | | } else { |
| | | this.setData({ |
| | | isBackTop: false |
| | | }) |
| | | } |
| | | }, |
| | | |
| | | goSubmit() { |
| | | wx.navigateTo({ |
| | | url: "/pages/personalCenter/feedBackSubmit/index", |
| | | }); |
| | | }, |
| | | |
| | | /** |
| | |
| | | { |
| | | "navigationBarTitleText": "建议与反馈", |
| | | "usingComponents": {} |
| | | "usingComponents": { |
| | | "t-tabs": "tdesign-miniprogram/tabs/tabs", |
| | | "t-tab-panel": "tdesign-miniprogram/tab-panel/tab-panel", |
| | | "t-back-top": "tdesign-miniprogram/back-top/back-top", |
| | | "t-pull-down-refresh": "tdesign-miniprogram/pull-down-refresh/pull-down-refresh", |
| | | "t-loading": "tdesign-miniprogram/loading/loading", |
| | | "t-image": "tdesign-miniprogram/image/image", |
| | | "t-empty": "tdesign-miniprogram/empty/empty" |
| | | } |
| | | } |
| | |
| | | <!--pages/personalCenter/feedBack/index.wxml--> |
| | | <text>pages/personalCenter/feedBack/index.wxml</text> |
| | | <view class="container"> |
| | | <t-tabs t-class="t-tabs" t-class-active="tabs-external__active" t-class-item="tabs-external__item" defaultValue="{{active}}" space-evenly="{{false}}" bind:change="tabBookClick"> |
| | | <t-tab-panel wx:for="{{tabList}}" wx:for-index="index" wx:key="index" label="{{item.label}}" value="{{index}}"> |
| | | <view class="pageInfo"> |
| | | <scroll-view class="scroll content" bind:scroll="onPageScroll" model:scroll-top="{{setScrollValue}}" scroll-y refresher-enabled="{{true}}" lower-threshold="{{200}}" refresher-threshold="{{80}}" refresher-default-style="none" refresher-triggered="{{triggered}}" bindrefresherpulling="{{refresh.onPulling}}" bindrefresherrefresh="onPullDownRefresh" bindscrolltolower="onReachBottom"> |
| | | <view slot="refresher" class="refresh-container"> |
| | | <view class="loading"> |
| | | <t-loading theme="circular" size="40rpx" text="正在刷新..." class="wrapper" /> |
| | | </view> |
| | | </view> |
| | | {{list}} |
| | | <view class="list"> |
| | | <view wx:if="{{activeName == 'bookOpinion'}}" class="listBox"> |
| | | <view class="content-item" wx:for="{{list}}" wx:for-item="item" wx:for-index="index" wx:key="index"> |
| | | <view class="icon"> |
| | | <t-image src="{{item.icon}}" mode="heightFix" class="img" /> |
| | | </view> |
| | | <view class="item-con"> |
| | | <view class="titleBox"> |
| | | <view class="item-title">{{item.name}}</view> |
| | | </view> |
| | | </view> |
| | | </view> |
| | | </view> |
| | | <!-- <view wx:if="{{activeName == 'feedback'}}"> |
| | | <view class="content-item" wx:for="{{list}}" wx:for-item="item" wx:for-index="index" wx:key="index"> |
| | | <view class="item-con"> |
| | | <view class="titleBox"> |
| | | <view class="item-title">{{item.name}}</view> |
| | | </view> |
| | | </view> |
| | | </view> |
| | | </view> --> |
| | | </view> |
| | | <view wx:if="{{list.length == 0}}" class="empyt"> |
| | | <t-empty icon="folder-open" description="暂无数据" /> |
| | | </view> |
| | | <view class="bottom-loading" wx:if="{{bottomLoading}}"> |
| | | <t-loading theme="circular" size="40rpx" text="加载中..." class="wrapper" /> |
| | | </view> |
| | | <view class="bottom-loading" style="color: #ccc;font-size: 28rpx;" wx:if="{{isMoreData}}"> |
| | | <text>没有更多了</text> |
| | | </view> |
| | | </scroll-view> |
| | | </view> |
| | | </t-tab-panel> |
| | | </t-tabs> |
| | | <view class="submitBox" bindtap="goSubmit" wx:if="{{activeName == 'feedback'}}"> |
| | | <view class="box"> |
| | | <t-image src="/static/images/personal/suggestion.png" mode="heightFix" class="img" /> |
| | | <text>我要反馈</text> |
| | | </view> |
| | | </view> |
| | | <t-back-top theme="round" wx:if="{{isBackTop}}" text="顶部" bind:to-top="onToTop"></t-back-top> |
| | | </view> |
| | |
| | | /* pages/personalCenter/feedBack/index.wxss */ |
| | | page { |
| | | background-color: #f0f2f5; |
| | | box-sizing: border-box; |
| | | padding: 0 24rpx; |
| | | } |
| | | |
| | | .t-tabs__track { |
| | | display: none; |
| | | } |
| | | |
| | | .t-tabs { |
| | | margin-top: 20rpx; |
| | | background: none !important; |
| | | } |
| | | |
| | | .t-tabs__wrapper { |
| | | background: none !important; |
| | | } |
| | | |
| | | .t-tabs__nav :nth-child(1) { |
| | | border-radius: 30rpx 30rpx 0 0rpx; |
| | | } |
| | | |
| | | .t-tabs__nav :nth-child(2) { |
| | | border-radius: 0rpx 30rpx 0 30rpx; |
| | | } |
| | | |
| | | .t-tabs__item { |
| | | flex: 1 !important; |
| | | background: #E6E8F1; |
| | | height: 76rpx !important; |
| | | margin-top: 16rpx; |
| | | border-radius: 30rpx 0 30rpx 0rpx !important; |
| | | } |
| | | |
| | | .t-tabs__item--active { |
| | | color: #333 !important; |
| | | background: #fff; |
| | | height: 96rpx; |
| | | font-size: 32rpx; |
| | | margin-top: 0; |
| | | height: 96rpx !important; |
| | | border-radius: 30rpx 30rpx 0 0rpx !important; |
| | | } |
| | | |
| | | .t-tabs__item--active+.t-tabs__item { |
| | | border-radius: 0 30rpx 0 30rpx !important; |
| | | } |
| | | |
| | | .refresh-container { |
| | | margin: 0 auto; |
| | | } |
| | | |
| | | .bottom-loading, |
| | | .loading { |
| | | padding: 20rpx; |
| | | text-align: center; |
| | | } |
| | | |
| | | .content { |
| | | height: calc(100vh - env(safe-area-inset-bottom)); |
| | | box-sizing: border-box; |
| | | } |
| | | |
| | | .content-item { |
| | | background: #fff; |
| | | } |
| | | |
| | | .listBox:nth-child(1) { |
| | | margin-top: -30rpx; |
| | | padding-top: 30rpx; |
| | | } |
| | | |
| | | .submitBox { |
| | | width: 220rpx; |
| | | height: 80rpx; |
| | | line-height: 80rpx; |
| | | background: #ff6d00; |
| | | color: #fff; |
| | | border-radius: 50rpx 0 0 50rpx; |
| | | position: fixed; |
| | | bottom: 20%; |
| | | right: 0; |
| | | } |
| | | |
| | | .submitBox .box { |
| | | display: flex; |
| | | margin: 0 auto; |
| | | width: 160rpx; |
| | | align-items: center; |
| | | text-align: center; |
| | | font-size: 28rpx; |
| | | } |
| | | |
| | | .submitBox .img { |
| | | width: 40rpx; |
| | | height: 40rpx; |
| | | margin-right: 10rpx; |
| | | } |
| | | |
| | | .empyt { |
| | | padding: 200rpx 0; |
| | | } |
| | |
| | | // pages/personalCenter/feedBackSubmit/index.js |
| | | const app = getApp(); |
| | | Page({ |
| | | |
| | | /** |
| | | * 页面的初始数据 |
| | | */ |
| | | data: { |
| | | |
| | | userName: "", |
| | | mannder: "", |
| | | content: "", |
| | | lock: true, |
| | | }, |
| | | |
| | | /** |
| | |
| | | * 生命周期函数--监听页面显示 |
| | | */ |
| | | onShow() { |
| | | |
| | | }, |
| | | |
| | | /** |
| | |
| | | onReachBottom() { |
| | | |
| | | }, |
| | | bindTnputBlur: function (e) { |
| | | this.setData({ |
| | | userName: e.detail.value, |
| | | }); |
| | | }, |
| | | bindTnputBlur1: function (e) { |
| | | this.setData({ |
| | | mannder: e.detail.value, |
| | | }); |
| | | }, |
| | | bindTextAreaBlur: function (e) { |
| | | this.setData({ |
| | | content: e.detail.value, |
| | | }); |
| | | }, |
| | | |
| | | /** |
| | | * 用户点击右上角分享 |
| | | */ |
| | | onShareAppMessage() { |
| | | |
| | | submit() { |
| | | if (this.data.lock) { |
| | | this.data.lock = false; |
| | | if (this.data.userName) { |
| | | if (this.data.mannder) { |
| | | if (this.data.content) { |
| | | let submitData = { |
| | | content: this.data.content, |
| | | name: this.data.userName, |
| | | email: "", |
| | | phone: this.data.mannder |
| | | }; |
| | | var data = { |
| | | topicIdOrRefCode: "feedback", |
| | | name: "意见反馈", |
| | | content: JSON.stringify(submitData), |
| | | type: "opinionFeedback", |
| | | state: "WaitAudit", |
| | | cmsTypeRefCode: "", |
| | | newDataListRequest: [] |
| | | }; |
| | | app.MG.ugc.newTopicMessage(data).then(res => { |
| | | this.data.lock = true; |
| | | if (res) { |
| | | wx.showToast({ |
| | | title: "提交成功", |
| | | icon: 'success', |
| | | duration: 1000, |
| | | success: function () { |
| | | setTimeout(function () { |
| | | wx.navigateBack(); |
| | | }, 1000) //延迟时间 |
| | | } |
| | | }) |
| | | } |
| | | }); |
| | | } else { |
| | | this.data.lock = true; |
| | | wx.showToast({ |
| | | title: "反馈内容不能为空", |
| | | icon: 'none', |
| | | duration: 1000 |
| | | }) |
| | | } |
| | | } else { |
| | | this.data.lock = true; |
| | | wx.showToast({ |
| | | title: "联系方式不能为空", |
| | | icon: 'none', |
| | | duration: 1000 |
| | | }) |
| | | } |
| | | } else { |
| | | this.data.lock = true; |
| | | wx.showToast({ |
| | | title: "联系人不能为空不能为空", |
| | | icon: 'none', |
| | | duration: 1000 |
| | | }) |
| | | } |
| | | } |
| | | } |
| | | }) |
| | |
| | | <!--pages/personalCenter/feedBackSubmit/index.wxml--> |
| | | <text>pages/personalCenter/feedBackSubmit/index.wxml</text> |
| | | <view class="container"> |
| | | <view class="page-body"> |
| | | <view class="from-item"> |
| | | <view class="label"> 联系人: </view> |
| | | <view class="item-content"> |
| | | <input class="weui-input" name="userName" auto-focus="true" adjust-position="true" value="{{userName}}" placeholder="请输入联系人" bindinput="bindTnputBlur" /> |
| | | </view> |
| | | </view> |
| | | <view class="from-item"> |
| | | <view class="label"> 联系方式: </view> |
| | | <view class="item-content"> |
| | | <input class="weui-input" name="mannder" auto-focus="true" adjust-position="true" value="{{mannder}}" placeholder="请输入联系方式" bindinput="bindTnputBlur1" /> |
| | | </view> |
| | | </view> |
| | | <view class="from-item"> |
| | | <view class="label"> 反馈内容: </view> |
| | | <view class="item-content"> |
| | | <textarea name="content" rows="4" cols="52" placeholder="请输入反馈内容" auto-focus="true" adjust-position="true" value="{{content}}" bindinput="bindTextAreaBlur"></textarea> |
| | | </view> |
| | | </view> |
| | | <view class="btn-area"> |
| | | <button class="submit" bindtap="submit">提交</button> |
| | | </view> |
| | | </view> |
| | | </view> |
| | |
| | | /* pages/personalCenter/feedBackSubmit/index.wxss */ |
| | | /* pages/personalCenter/feedBackSubmit/index.wxss */ |
| | | page { |
| | | box-sizing: border-box; |
| | | padding: 0 24rpx; |
| | | } |
| | | |
| | | .page-body { |
| | | padding: 20rpx; |
| | | font-size: 28rpx; |
| | | } |
| | | |
| | | .from-item { |
| | | margin-bottom: 20rpx; |
| | | } |
| | | |
| | | .from-item .label { |
| | | width: 240rpx; |
| | | height: 68rpx; |
| | | line-height: 68rpx; |
| | | } |
| | | |
| | | .from-item .item-content { |
| | | border: 2rpx solid #D9D9D9; |
| | | padding: 10rpx; |
| | | } |
| | | |
| | | .submit { |
| | | background: #ff6c00; |
| | | color: #fff; |
| | | } |
| | |
| | | { |
| | | title: '建议与反馈', |
| | | icon: '/static/images/personal/feedback.png', |
| | | url: '/pages/personalCenter/feedback/index', |
| | | url: '/pages/personalCenter/feedBack/index', |
| | | type: 'feedback', |
| | | } |
| | | ]; |
| | |
| | | //点击目录 |
| | | toPages(item) { |
| | | console.log(item) |
| | | let info = item.target.dataset.info |
| | | let info = item.currentTarget.dataset.info |
| | | if (info.url) { |
| | | wx.navigateTo({ |
| | | url: info.url |
| | |
| | | const app = getApp(); |
| | | Page({ |
| | | |
| | | /** |
| | | * 页面的初始数据 |
| | | */ |
| | | data: { |
| | | |
| | | active: 0, |
| | | activeName: "FavoriteBookCity", |
| | | tabList: [ |
| | | { |
| | | label: '图书', |
| | | key: 0, |
| | | linkType: 'FavoriteBookCity', |
| | | }, |
| | | { |
| | | label: '课程', |
| | | key: 1, |
| | | linkType: 'Favoriteclass', |
| | | } |
| | | ], |
| | | list: [], |
| | | //分页 |
| | | page: 1, |
| | | limit: 12, |
| | | pageTotalCount: 0, |
| | | bottomLoading: false, |
| | | isMoreData: false, |
| | | // 返回顶部 |
| | | isBackTop: false, |
| | | setScrollValue: 0, |
| | | skeletonLoding: true, |
| | | }, |
| | | |
| | | /** |
| | |
| | | */ |
| | | onLoad(options) { |
| | | console.log(options); |
| | | this.getDataList(); |
| | | }, |
| | | |
| | | /** |
| | |
| | | |
| | | }, |
| | | |
| | | /** |
| | | * 生命周期函数--监听页面显示 |
| | | */ |
| | | onShow() { |
| | | |
| | | tabBookClick(item) { |
| | | console.log(item, 1) |
| | | let that = this; |
| | | let info = this.data.tabList[item.detail.value] |
| | | that.setData({ |
| | | skeletonLoding: true, |
| | | active: item.detail.value, |
| | | activeName: info.linkType, |
| | | list: [], |
| | | page: 1, |
| | | bottomLoading: false, |
| | | isMoreData: false, |
| | | }) |
| | | that.getDataList(false); |
| | | }, |
| | | |
| | | /** |
| | | * 生命周期函数--监听页面隐藏 |
| | | */ |
| | | onHide() { |
| | | |
| | | getDataList(isReachBottom) { |
| | | app.MG.store.getProductList({ |
| | | handelEBooK: true, |
| | | queryType: "AppUserProductLink", |
| | | linkType: this.data.activeName, |
| | | paging: { |
| | | start: this.data.page * this.data.limit - this.data.limit, |
| | | size: this.data.limit |
| | | }, |
| | | fields: { |
| | | author: [] |
| | | } |
| | | }).then((res) => { |
| | | try { |
| | | if (res.datas.length > 0) { |
| | | let dataList = res.datas; |
| | | //触底加载新数据并保留老数据 |
| | | if (isReachBottom) { |
| | | dataList = [...this.data.list, ...dataList] //将新数据加入老数据中 |
| | | } |
| | | this.setData({ |
| | | list: dataList, |
| | | pageTotalCount: res.total, |
| | | bottomLoading: false, |
| | | isMoreData: dataList.length > 0 ? false : true, |
| | | skeletonLoding: false, |
| | | loading: false |
| | | }) |
| | | } else { |
| | | this.setData({ |
| | | skeletonLoding: false, |
| | | loading: false |
| | | }) |
| | | } |
| | | } catch (error) { |
| | | console.log(error) |
| | | } |
| | | }) |
| | | }, |
| | | |
| | | /** |
| | | * 生命周期函数--监听页面卸载 |
| | | */ |
| | | onUnload() { |
| | | |
| | | }, |
| | | |
| | | /** |
| | | * 页面相关事件处理函数--监听用户下拉动作 |
| | | */ |
| | | onPullDownRefresh() { |
| | | |
| | | if (this._freshing) return |
| | | this.setData({ |
| | | // list: [], |
| | | page: 1, |
| | | limit: 18, |
| | | pageTotalCount: 0, |
| | | bottomLoading: false, |
| | | isMoreData: false |
| | | }) |
| | | this._freshing = true; |
| | | this.setData({ |
| | | triggered: false, |
| | | }) |
| | | this.getDataList(false); |
| | | this._freshing = false |
| | | }, |
| | | |
| | | /** |
| | | * 页面上拉触底事件的处理函数 |
| | | */ |
| | | onReachBottom() { |
| | | |
| | | this.setData({ |
| | | bottomLoading: true, |
| | | isMoreData: false |
| | | }) |
| | | let bool = false; |
| | | if (this.data.pageTotalCount > this.data.list.length) { |
| | | bool = true; |
| | | this.setData({ |
| | | page: this.data.page + 1, |
| | | }) |
| | | } else { |
| | | setTimeout(() => { |
| | | this.setData({ |
| | | bottomLoading: false, |
| | | isMoreData: true |
| | | }) |
| | | }, 100) |
| | | return false; |
| | | } |
| | | this.getDataList(bool); |
| | | }, |
| | | |
| | | setCoolect(itemData) { |
| | | let that = this; |
| | | let info = itemData.currentTarget.dataset.info; |
| | | wx.showModal({ |
| | | title: '提示', //提示的标题 |
| | | content: '确定要取消收藏?', //提示的内容 |
| | | success: function (res) { |
| | | if (res.confirm) { |
| | | app.MG.store |
| | | .delProductLink({ |
| | | productIds: [info.id], |
| | | linkType: that.data.activeName, |
| | | }) |
| | | .then(() => { |
| | | wx.showToast({ |
| | | title: "收藏已取消", |
| | | icon: 'success', |
| | | duration: 1000, |
| | | }) |
| | | this.getDataList(false) |
| | | }); |
| | | } else if (res.cancel) { |
| | | console.log('用户点击了取消') |
| | | } |
| | | } |
| | | }) |
| | | }, |
| | | goBookDetails(itemData) { |
| | | let info = itemData.currentTarget.dataset.info; |
| | | // wx.navigateTo({ |
| | | // url: "/pages/personalCenter/myMassage/massageDetail/index?id=" + info.id, |
| | | // }); |
| | | }, |
| | | |
| | | |
| | | /** |
| | | * 用户点击右上角分享 |
| | | */ |
| | |
| | | { |
| | | "navigationBarTitleText": "我的收藏", |
| | | "usingComponents": {} |
| | | "usingComponents": { |
| | | "t-tabs": "tdesign-miniprogram/tabs/tabs", |
| | | "t-tab-panel": "tdesign-miniprogram/tab-panel/tab-panel", |
| | | "t-back-top": "tdesign-miniprogram/back-top/back-top", |
| | | "t-pull-down-refresh": "tdesign-miniprogram/pull-down-refresh/pull-down-refresh", |
| | | "t-loading": "tdesign-miniprogram/loading/loading", |
| | | "t-image": "tdesign-miniprogram/image/image", |
| | | "t-empty": "tdesign-miniprogram/empty/empty" |
| | | } |
| | | } |
| | |
| | | <text>我的收藏</text> |
| | | <view class="container"> |
| | | <t-tabs t-class="t-tabs" t-class-active="tabs-external__active" t-class-item="tabs-external__item" defaultValue="{{active}}" space-evenly="{{false}}" bind:change="tabBookClick"> |
| | | <t-tab-panel wx:for="{{tabList}}" wx:for-index="index" wx:key="index" label="{{item.label}}" value="{{index}}"> |
| | | <view class="pageInfo"> |
| | | <scroll-view class="scroll content" bind:scroll="onPageScroll" model:scroll-top="{{setScrollValue}}" scroll-y refresher-enabled="{{true}}" lower-threshold="{{200}}" refresher-threshold="{{80}}" refresher-default-style="none" refresher-triggered="{{triggered}}" bindrefresherpulling="{{refresh.onPulling}}" bindrefresherrefresh="onPullDownRefresh" bindscrolltolower="onReachBottom"> |
| | | <view slot="refresher" class="refresh-container"> |
| | | <view class="loading"> |
| | | <t-loading theme="circular" size="40rpx" text="正在刷新..." class="wrapper" /> |
| | | </view> |
| | | </view> |
| | | <view class="list" wx:if="{{list.length > 0}}"> |
| | | <view wx:if="{{activeName == 'FavoriteBookCity'}}" class="listBox"> |
| | | <view class="content-item" wx:for="{{list}}" wx:for-item="item" wx:for-index="index" wx:key="index"> |
| | | <view class="icon" data-info="{{item}}" bindtap="goBookDetails"> |
| | | <t-image src="{{item.icon}}" mode="" class="img" /> |
| | | </view> |
| | | <view class="body-info" data-info="{{item}}" bindtap="goBookDetails"> |
| | | <view class="name">{{item.name}}</view> |
| | | <view class="author">{{item.author}}</view> |
| | | </view> |
| | | <view class="currentBtn" data-info="{{item}}" bindtap="setCoolect"> |
| | | <t-image src="/static/images/personal/quxiaoshoucang.png" mode="heightFix" class="img" /> |
| | | </view> |
| | | </view> |
| | | </view> |
| | | <!-- <view wx:if="{{activeName == 'Favoriteclass'}}"> |
| | | <view class="content-item" wx:for="{{list}}" wx:for-item="item" wx:for-index="index" wx:key="index"> |
| | | <view class="item-con"> |
| | | <view class="titleBox"> |
| | | <view class="item-title">{{item.name}}</view> |
| | | </view> |
| | | </view> |
| | | </view> |
| | | </view> --> |
| | | </view> |
| | | <view wx:if="{{list.length == 0}}" class="empyt"> |
| | | <t-empty icon="folder-open" description="暂无数据" /> |
| | | </view> |
| | | <view class="bottom-loading" wx:if="{{bottomLoading}}"> |
| | | <t-loading theme="circular" size="40rpx" text="加载中..." class="wrapper" /> |
| | | </view> |
| | | <view class="bottom-loading" style="color: #ccc;font-size: 28rpx;" wx:if="{{isMoreData}}"> |
| | | <text>没有更多了</text> |
| | | </view> |
| | | </scroll-view> |
| | | </view> |
| | | </t-tab-panel> |
| | | </t-tabs> |
| | | <t-back-top theme="round" wx:if="{{isBackTop}}" text="顶部" bind:to-top="onToTop"></t-back-top> |
| | | </view> |
| | |
| | | page { |
| | | background-color: #F2F3F8; |
| | | box-sizing: border-box; |
| | | } |
| | | |
| | | .t-tabs__track { |
| | | display: none; |
| | | } |
| | | |
| | | .t-tabs { |
| | | margin-top: 20rpx; |
| | | background: none !important; |
| | | } |
| | | |
| | | .t-tabs__wrapper { |
| | | background: none !important; |
| | | } |
| | | |
| | | .t-tabs__nav :nth-child(1) { |
| | | border-radius: 30rpx 30rpx 0 0rpx; |
| | | } |
| | | |
| | | .t-tabs__nav :nth-child(2) { |
| | | border-radius: 0rpx 30rpx 0 30rpx; |
| | | } |
| | | |
| | | .t-tabs__item { |
| | | flex: 1 !important; |
| | | background: #E6E8F1; |
| | | height: 76rpx !important; |
| | | margin-top: 16rpx; |
| | | border-radius: 30rpx 0 30rpx 0rpx !important; |
| | | } |
| | | |
| | | .t-tabs__item--active { |
| | | color: #333 !important; |
| | | background: #fff; |
| | | height: 96rpx; |
| | | font-size: 32rpx; |
| | | margin-top: 0; |
| | | height: 96rpx !important; |
| | | border-radius: 30rpx 30rpx 0 0rpx !important; |
| | | } |
| | | |
| | | .t-tabs__item--active+.t-tabs__item { |
| | | border-radius: 0 30rpx 0 30rpx !important; |
| | | } |
| | | |
| | | .refresh-container { |
| | | margin: 0 auto; |
| | | } |
| | | |
| | | .bottom-loading, |
| | | .loading { |
| | | padding: 20rpx; |
| | | text-align: center; |
| | | } |
| | | |
| | | .content { |
| | | height: calc(100vh - env(safe-area-inset-bottom)); |
| | | box-sizing: border-box; |
| | | } |
| | | |
| | | .t-tabs__content { |
| | | background: #fff !important; |
| | | margin-top: -30rpx; |
| | | padding-top: 30rpx; |
| | | } |
| | | |
| | | .listBox { |
| | | display: flex; |
| | | flex-flow: row wrap; |
| | | padding: 30rpx 0; |
| | | } |
| | | |
| | | |
| | | .content-item { |
| | | width: calc(100%/3 - 40rpx); |
| | | margin-bottom: 30rpx; |
| | | margin: 0 20rpx; |
| | | align-self: stretch; |
| | | position: relative; |
| | | } |
| | | |
| | | .content-item .icon { |
| | | height: 300rpx; |
| | | width: 210rpx; |
| | | box-shadow: 0px 0px 20rpx 2px rgba(0, 0, 0, 0.16); |
| | | } |
| | | |
| | | .content-item .icon .t-image { |
| | | width: 100%; |
| | | height: 100%; |
| | | object-fit: contain; |
| | | } |
| | | |
| | | .body-info { |
| | | padding: 20rpx 0; |
| | | } |
| | | |
| | | .body-info .name { |
| | | font-size: 32rpx; |
| | | height: 88rpx; |
| | | color: #333333; |
| | | font-weight: bold; |
| | | line-height: 44rpx; |
| | | display: -webkit-box; |
| | | margin-bottom: 10rpx; |
| | | -webkit-box-orient: vertical; |
| | | -webkit-line-clamp: 2; |
| | | overflow: hidden; |
| | | text-overflow: ellipsis; |
| | | } |
| | | |
| | | .body-info .author { |
| | | height: 30rpx; |
| | | color: #333333; |
| | | line-height: 30rpx; |
| | | display: -webkit-box; |
| | | margin-bottom: 10rpx; |
| | | -webkit-box-orient: vertical; |
| | | -webkit-line-clamp: 1; |
| | | overflow: hidden; |
| | | text-overflow: ellipsis; |
| | | } |
| | | |
| | | .currentBtn { |
| | | position: absolute; |
| | | top: 10rpx; |
| | | right: 10rpx; |
| | | background: #FF6C00; |
| | | border-radius: 8rpx; |
| | | padding: 6rpx; |
| | | width: 36rpx; |
| | | height: 36rpx; |
| | | } |
| | | |
| | | .currentBtn .img { |
| | | width: 100%; |
| | | height: 100%; |
| | | } |
| | | |
| | | .empyt { |
| | | padding: 200rpx 0; |
| | | } |
| | |
| | | res.datas.forEach((item) => { |
| | | item.createDate = moment(item.createDate).format("YYYY-MM-DD HH:mm"); |
| | | }); |
| | | |
| | | let dataList = res.datas; |
| | | |
| | | //触底加载新数据并保留老数据 |
| | |
| | | } |
| | | this.setData({ |
| | | list: dataList, |
| | | pageTotalCount: res.total, |
| | | pageTotalCount: res.totalSize, |
| | | bottomLoading: false, |
| | | isMoreData: dataList.length > 0 ? false : true, |
| | | skeletonLoding: false, |
| | |
| | | const app = getApp(); |
| | | import moment from 'moment' |
| | | import tool2 from "../../../assets/js/toolClass.js" |
| | | import { getPublicImage } from "../../../assets/js/middleGround/tool.js"; |
| | | Page({ |
| | | |
| | | /** |
| | | * 页面的初始数据 |
| | | */ |
| | | data: { |
| | | |
| | | active: 0, |
| | | activeName: "FavoriteBookCity", |
| | | tabList: [ |
| | | { |
| | | label: '全部', |
| | | key: 0, |
| | | value: 'all', |
| | | }, |
| | | { |
| | | label: '待支付', |
| | | key: 1, |
| | | value: 'WaitPay', |
| | | }, |
| | | { |
| | | label: '已完成', |
| | | key: 1, |
| | | value: 'Success', |
| | | }, |
| | | { |
| | | label: '已取消', |
| | | key: 1, |
| | | value: 'Cancel', |
| | | } |
| | | ], |
| | | list: [], |
| | | //分页 |
| | | page: 1, |
| | | limit: 12, |
| | | pageTotalCount: 0, |
| | | bottomLoading: false, |
| | | isMoreData: false, |
| | | // 返回顶部 |
| | | isBackTop: false, |
| | | setScrollValue: 0, |
| | | skeletonLoding: true, |
| | | queryFilter: [] |
| | | }, |
| | | |
| | | /** |
| | |
| | | */ |
| | | onLoad(options) { |
| | | console.log(options); |
| | | this.getDataList(false) |
| | | }, |
| | | |
| | | /** |
| | |
| | | onReady() { |
| | | |
| | | }, |
| | | |
| | | /** |
| | | * 生命周期函数--监听页面显示 |
| | | */ |
| | | onShow() { |
| | | |
| | | tabBookClick(item) { |
| | | console.log(item, 1) |
| | | let that = this; |
| | | let info = this.data.tabList[item.detail.value] |
| | | that.setData({ |
| | | skeletonLoding: true, |
| | | active: item.detail.value, |
| | | activeName: info.value, |
| | | queryFilter: info.value == 'all' ? [] : [{ field: 'State', value: info.value }], |
| | | list: [], |
| | | page: 1, |
| | | bottomLoading: false, |
| | | isMoreData: false, |
| | | }) |
| | | that.getDataList(false); |
| | | }, |
| | | |
| | | /** |
| | | * 生命周期函数--监听页面隐藏 |
| | | */ |
| | | onHide() { |
| | | getDataList(isReachBottom) { |
| | | const data = { |
| | | start: this.data.page * this.data.limit - this.data.limit, |
| | | size: this.data.limit, |
| | | filterList: this.data.queryFilter, |
| | | sort: { |
| | | type: 'Desc', |
| | | field: 'CreateDate' |
| | | } |
| | | } |
| | | app.MG.store.getUserOrderList(data).then((res) => { |
| | | try { |
| | | if (res.datas.length > 0) { |
| | | res.datas.forEach((item, index) => { |
| | | item.payPrice = tool2.toDecimal2(item.payPrice) |
| | | item.createDate = moment(item.createDate).format("YYYY-MM-DD HH:mm:ss"); |
| | | item.finishedDate = moment(item.finishedDate).format("YYYY-MM-DD HH:mm:ss"); |
| | | if (item.state == "Success") { |
| | | item.colorName = 'success'; |
| | | item.CustomState = "已完成"; |
| | | } |
| | | if (item.state == "Cancel") { |
| | | item.colorName = 'cancal'; |
| | | item.CustomState = "已取消"; |
| | | } |
| | | if (item.state == "WaitPay") { |
| | | item.colorName = 'waitPay'; |
| | | item.CustomState = "待支付"; |
| | | } |
| | | if (item.state == "WaitDeliver") { |
| | | item.colorName = 'waitDeliver'; |
| | | item.CustomState = "正在支付"; |
| | | } |
| | | if (item.state == "GroupPaySuccess") { |
| | | item.colorName = 'success'; |
| | | item.CustomState = "等待拼团" |
| | | } |
| | | if (item.state == "ReFounding") { |
| | | item.colorName = 'ReFounding'; |
| | | item.CustomState = "退款中" |
| | | } |
| | | if (item.state == "ReFoundFinished") { |
| | | item.colorName = 'ReFoundFinished'; |
| | | item.CustomState = "退款完成" |
| | | } |
| | | let oldlist = []; |
| | | oldlist = item.saleMethodLinks |
| | | oldlist.forEach(istrue => { |
| | | istrue.name = istrue.orderSaleMethod.product.name |
| | | istrue.payPrice = tool2.toDecimal2(istrue.payPrice) |
| | | istrue.icon = getPublicImage(istrue.orderSaleMethod.product.icon, "", 400) |
| | | }) |
| | | |
| | | }) |
| | | let dataList = res.datas; |
| | | //触底加载新数据并保留老数据 |
| | | if (isReachBottom) { |
| | | dataList = [...this.data.list, ...dataList] //将新数据加入老数据中 |
| | | } |
| | | this.setData({ |
| | | list: dataList, |
| | | pageTotalCount: res.total, |
| | | bottomLoading: false, |
| | | isMoreData: dataList.length > 0 ? false : true, |
| | | skeletonLoding: false, |
| | | loading: false |
| | | }) |
| | | } else { |
| | | this.setData({ |
| | | skeletonLoding: false, |
| | | loading: false |
| | | }) |
| | | } |
| | | } catch (error) { |
| | | console.log(error) |
| | | } |
| | | }) |
| | | }, |
| | | |
| | | /** |
| | | * 生命周期函数--监听页面卸载 |
| | | */ |
| | | onUnload() { |
| | | |
| | | }, |
| | | |
| | | /** |
| | | * 页面相关事件处理函数--监听用户下拉动作 |
| | | */ |
| | | onPullDownRefresh() { |
| | | |
| | | if (this._freshing) return |
| | | this.setData({ |
| | | // list: [], |
| | | page: 1, |
| | | limit: 18, |
| | | pageTotalCount: 0, |
| | | bottomLoading: false, |
| | | isMoreData: false |
| | | }) |
| | | this._freshing = true; |
| | | this.setData({ |
| | | triggered: false, |
| | | }) |
| | | this.getDataList(false); |
| | | this._freshing = false |
| | | }, |
| | | |
| | | /** |
| | | * 页面上拉触底事件的处理函数 |
| | | */ |
| | | onReachBottom() { |
| | | |
| | | this.setData({ |
| | | bottomLoading: true, |
| | | isMoreData: false |
| | | }) |
| | | let bool = false; |
| | | if (this.data.pageTotalCount > this.data.list.length) { |
| | | bool = true; |
| | | this.setData({ |
| | | page: this.data.page + 1, |
| | | }) |
| | | } else { |
| | | setTimeout(() => { |
| | | this.setData({ |
| | | bottomLoading: false, |
| | | isMoreData: true |
| | | }) |
| | | }, 100) |
| | | return false; |
| | | } |
| | | this.getDataList(bool); |
| | | }, |
| | | |
| | | /** |
| | |
| | | { |
| | | "navigationBarTitleText": "我的订单", |
| | | "usingComponents": {} |
| | | "usingComponents": { |
| | | "t-search": "tdesign-miniprogram/search/search", |
| | | "t-icon": "tdesign-miniprogram/icon/icon", |
| | | "t-tabs": "tdesign-miniprogram/tabs/tabs", |
| | | "t-tab-panel": "tdesign-miniprogram/tab-panel/tab-panel", |
| | | "t-back-top": "tdesign-miniprogram/back-top/back-top", |
| | | "t-pull-down-refresh": "tdesign-miniprogram/pull-down-refresh/pull-down-refresh", |
| | | "t-loading": "tdesign-miniprogram/loading/loading", |
| | | "t-image": "tdesign-miniprogram/image/image", |
| | | "t-empty": "tdesign-miniprogram/empty/empty" |
| | | } |
| | | } |
| | |
| | | <!--pages/personalCenter/myOrder/index.wxml--> |
| | | <text>pages/personalCenter/myOrder/index.wxml</text> |
| | | <view class="container"> |
| | | <view class="search"> |
| | | <t-search t-class-input="t-search__input" t-class-input-container="t-search__input-container" placeholder="请输入订单编号" leftIcon=""> |
| | | <t-icon slot="left-icon" prefix="wr" name="search" size="40rpx" color="#bbb" bind:tap="navToSearchPage" /> |
| | | </t-search> |
| | | </view> |
| | | <t-tabs t-class="t-tabs" t-class-active="tabs-external__active" t-class-item="tabs-external__item" defaultValue="{{active}}" space-evenly="{{false}}" bind:change="tabBookClick"> |
| | | <t-tab-panel wx:for="{{tabList}}" wx:for-index="index" wx:key="index" label="{{item.label}}" value="{{index}}"> |
| | | <view class="pageInfo"> |
| | | <scroll-view class="scroll content" bind:scroll="onPageScroll" model:scroll-top="{{setScrollValue}}" scroll-y refresher-enabled="{{true}}" lower-threshold="{{200}}" refresher-threshold="{{80}}" refresher-default-style="none" refresher-triggered="{{triggered}}" bindrefresherpulling="{{refresh.onPulling}}" bindrefresherrefresh="onPullDownRefresh" bindscrolltolower="onReachBottom"> |
| | | <view slot="refresher" class="refresh-container"> |
| | | <view class="loading"> |
| | | <t-loading theme="circular" size="40rpx" text="正在刷新..." class="wrapper" /> |
| | | </view> |
| | | </view> |
| | | <view class="list" wx:if="{{list.length > 0}}"> |
| | | <view class="content-item" wx:for="{{list}}" wx:for-item="items" wx:for-index="index" wx:key="index"> |
| | | <view class="order-cent"> |
| | | <text class="order-cent-one">订单号: {{items.orderNumber}}</text> |
| | | <text class="right {{items.colorName}}">{{items.CustomState}}</text> |
| | | </view> |
| | | <view class="order-centent"> |
| | | <view class="bookBox {{items.saleMethodLinks.length == 1 ? 'flex' : ''}}" wx:for="{{items.saleMethodLinks}}" wx:for-item="itemes" wx:for-index="idx" wx:key="idx" bindtap="onOrderDetail" data-info="{{itemes}}"> |
| | | <view class="leftCon {{items.saleMethodLinks.length == 1 ? 'fl' : ''}}"> |
| | | <!-- 获取图片 --> |
| | | <image class="purchasedIcon" wx:if="{{itemes.icon}}" src="{{itemes.icon}}" mode="aspectFit" /> |
| | | <image class="purchasedIcon" wx:else src="/static/images/default-book-img.png" mode="aspectFit" /> |
| | | </view> |
| | | <!-- 获取名称 --> |
| | | <view class="rightCon"> |
| | | <view class="productTitle">{{itemes.name}}</view> |
| | | <view> |
| | | <text class="typeBox">{{ |
| | | itemes.orderSaleMethod.type == 'defaultSaleMethod' |
| | | ? '图书服务-电子书' |
| | | : itemes.orderSaleMethod.type == 'createProductSaleMethod' && itemes.orderSaleMethod.cmsItemList == 0 ? '图书服务-组卷' : '图书服务-云学习' |
| | | }}</text> |
| | | </view> |
| | | <!-- <text wx:if="{{itemes.payPrice >0}}" class="price">¥{{itemes.payPrice}}<text wx:if="{{itemes.oldPrice >0}}" class="oldPrice">(原定价:¥{{items.oldPrice}})</text></text> |
| | | <text wx:else class="freePrice">免费</text> --> |
| | | <!-- <text class="productTop"><text>创建时间</text>:{{items.createDate}}</text> --> |
| | | </view> |
| | | </view> |
| | | <view class="count"> |
| | | <text wx:if="{{items.saleMethodLinks.length > 1 }}">共{{items.saleMethodLinks.length}}件</text> |
| | | <text wx:if="{{items.saleMethodLinks.length == 1 }}">¥{{items.payPrice}}</text> |
| | | </view> |
| | | </view> |
| | | <view class="order-top"> |
| | | <text class="finishedDate" wx:if="{{items.state == 'Success'}}">{{items.finishedDate}}</text> |
| | | <text class="order-top-price" wx:if="{{items.state == 'WaitPay'}}">应付:<text class="">¥{{items.payPrice}}</text></text> |
| | | <view class="button-example" wx:if="{{items.state == 'WaitPay'}}"> |
| | | <button class="button" bindtap="onCancel" data-order-num="{{items.orderNumber}}">取消订单</button> |
| | | <button class="unfollow" bindtap="onPayment" data-order-num="{{items.orderNumber}}">立即支付</button> |
| | | </view> |
| | | <view wx:if="{{items.state == 'Cancel'}}" class="button-bottem">总计:<text class="price">¥{{items.payPrice}}</text> </view> |
| | | </view> |
| | | </view> |
| | | </view> |
| | | <view wx:if="{{list.length == 0}}" class="empyt"> |
| | | <t-empty icon="folder-open" description="暂无数据" /> |
| | | </view> |
| | | <view class="bottom-loading" wx:if="{{bottomLoading}}"> |
| | | <t-loading theme="circular" size="40rpx" text="加载中..." class="wrapper" /> |
| | | </view> |
| | | <view class="bottom-loading" style="color: #ccc;font-size: 28rpx;" wx:if="{{isMoreData}}"> |
| | | <text>没有更多了</text> |
| | | </view> |
| | | </scroll-view> |
| | | </view> |
| | | </t-tab-panel> |
| | | </t-tabs> |
| | | <t-back-top theme="round" wx:if="{{isBackTop}}" text="顶部" bind:to-top="onToTop"></t-back-top> |
| | | </view> |
| | |
| | | .t-search__input { |
| | | font-size: 28rpx !important; |
| | | color: rgb(116, 116, 116) !important; |
| | | } |
| | | |
| | | .t-search { |
| | | width: 90%; |
| | | margin: 0 auto; |
| | | } |
| | | |
| | | .t-search__input-box--square { |
| | | border-radius: 50rpx !important; |
| | | } |
| | | |
| | | .t-tabs__item { |
| | | flex: 1 !important; |
| | | } |
| | | |
| | | .t-tabs__track { |
| | | /* left: 28rpx !important; */ |
| | | background-color: #FF6C00 !important; |
| | | } |
| | | |
| | | .t-tabs__item--active { |
| | | font-size: 30rpx; |
| | | color: #FF6C00 !important; |
| | | } |
| | | |
| | | .pageInfo { |
| | | background: #F2F3F8; |
| | | } |
| | | |
| | | .list { |
| | | padding: 0 24rpx; |
| | | } |
| | | |
| | | .content-item { |
| | | background-color: #fff; |
| | | border-radius: 18rpx; |
| | | margin-top: 20rpx; |
| | | padding: 30rpx; |
| | | box-shadow: 0px 0px 20rpx 2px #f1f1f1; |
| | | } |
| | | |
| | | .order-cent { |
| | | padding: 10rpx 0; |
| | | } |
| | | |
| | | .right { |
| | | float: right; |
| | | } |
| | | |
| | | .cancal { |
| | | color: #949494 |
| | | } |
| | | |
| | | .success { |
| | | color: #1FBC1F |
| | | } |
| | | |
| | | .waitPay { |
| | | color: #F03939 |
| | | } |
| | | |
| | | .price { |
| | | color: #FF6C00; |
| | | font-weight: bold; |
| | | } |
| | | |
| | | .order-centent { |
| | | display: flex; |
| | | border-bottom: 2rpx solid #EFF0F1; |
| | | } |
| | | |
| | | |
| | | .bookBox { |
| | | flex: 1; |
| | | padding: 30rpx 0; |
| | | } |
| | | |
| | | |
| | | |
| | | .bookBox .leftCon { |
| | | width: 150rpx; |
| | | height: 210rpx; |
| | | box-shadow: 0px 0px 20rpx 2px #f1f1f1; |
| | | } |
| | | |
| | | .fl { |
| | | float: left; |
| | | margin-right: 20rpx; |
| | | } |
| | | |
| | | .bookBox .leftCon .purchasedIcon { |
| | | width: 100%; |
| | | height: 100%; |
| | | object-fit: contain; |
| | | } |
| | | |
| | | .productTitle { |
| | | font-size: 32rpx; |
| | | height: 88rpx; |
| | | color: #333333; |
| | | font-weight: bold; |
| | | line-height: 44rpx; |
| | | display: -webkit-box; |
| | | margin-bottom: 30rpx; |
| | | -webkit-box-orient: vertical; |
| | | -webkit-line-clamp: 2; |
| | | overflow: hidden; |
| | | text-overflow: ellipsis; |
| | | } |
| | | |
| | | .flex .rightCon { |
| | | margin-left: 160rpx; |
| | | } |
| | | |
| | | .rightCon { |
| | | margin-top: 10rpx; |
| | | margin-right: 20rpx; |
| | | } |
| | | |
| | | .count { |
| | | display: flex; |
| | | align-items: center; |
| | | margin-left: 30rpx; |
| | | } |
| | | |
| | | .typeBox { |
| | | background: rgba(255, 108, 0, 0.24); |
| | | border-radius: 9rpx 9rpx 9rpx 9rpx; |
| | | padding: 8rpx 20rpx; |
| | | color: #FF6C00; |
| | | |
| | | } |
| | | |
| | | .order-top { |
| | | padding-top: 30rpx; |
| | | display: flex; |
| | | justify-content: space-between; |
| | | align-items: center; |
| | | } |
| | | |
| | | .button-example { |
| | | display: flex; |
| | | } |
| | | |
| | | .button { |
| | | background-color: #fff; |
| | | height: 60rpx; |
| | | line-height: 60rpx; |
| | | font-size: 28rpx; |
| | | } |
| | | |
| | | .unfollow { |
| | | height: 60rpx; |
| | | line-height: 60rpx; |
| | | font-size: 28rpx; |
| | | background: #FF6C00; |
| | | color: #fff; |
| | | margin-left: 10rpx; |
| | | border-color: #FF6C00; |
| | | } |
| | | |
| | | |
| | | .empyt { |
| | | padding: 200rpx 0; |
| | | background: #fff; |
| | | } |
| | |
| | | text: '图书服务', |
| | | key: 0, |
| | | icon: '/static/images/home/zhutichuban@2x.png', |
| | | url: '/pages/bookServices/assort/index.wxml', |
| | | url: '/pages/bookServices/assort/index', |
| | | }, |
| | | { |
| | | text: '数字阅读', |
| | |
| | | text: '线上书展', |
| | | key: 5, |
| | | icon: '/static/images/home/xianshangshuzhan@2x.png', |
| | | url: '', |
| | | url: '/pages/bookExhibitionList/index', |
| | | }, |
| | | { |
| | | text: '书目下载', |