From a81a1a31ce7ee003e0006168e4d4e57da97c2bb6 Mon Sep 17 00:00:00 2001 From: litian <C21AF165> Date: 星期二, 05 三月 2024 18:46:46 +0800 Subject: [PATCH] 个人中心 --- pages/personalCenter/feedBackSubmit/index.wxss | 31 + pages/home/home.js | 126 ++++ pages/personalCenter/myCollection/index.json | 10 pages/personalCenter/feedBack/index.js | 169 ++++++ pages/personalCenter/feedBack/index.json | 10 pages/personalCenter/components/user-center-card/index.wxml | 2 services/home/home.js | 4 static/images/personal/suggestion.png | 0 pages/personalCenter/myCollection/index.wxss | 145 +++++ pages/personalCenter/myCollection/index.wxml | 51 + pages/personalCenter/myOrder/index.js | 186 ++++++ pages/personalCenter/feedBackSubmit/index.js | 88 +++ pages/home/home.wxml | 53 +- pages/personalCenter/index.js | 4 pages/home/home.wxss | 56 + static/images/default-book-img.png | 0 pages/personalCenter/myOrder/index.json | 12 pages/personalCenter/feedBack/index.wxss | 104 +++ pages/personalCenter/feedBack/index.wxml | 57 ++ static/images/personal/quxiaoshoucang.png | 0 pages/personalCenter/myCollection/index.js | 171 +++++ pages/personalCenter/myMassage/index.js | 3 pages/personalCenter/myOrder/index.wxml | 76 ++ pages/personalCenter/feedBackSubmit/index.wxml | 27 pages/personalCenter/myOrder/index.wxss | 169 ++++++ 25 files changed, 1,438 insertions(+), 116 deletions(-) diff --git a/pages/home/home.js b/pages/home/home.js index 250f062..4575a24 100644 --- a/pages/home/home.js +++ b/pages/home/home.js @@ -24,7 +24,8 @@ booksList: [], readBookList: [], //鏁板瓧闃呰 textbookList: [], //鏁板瓧鏁欐潗 - rankingList: []//鎺掕姒� + rankingList: [],//鎺掕姒� + shoppingCartGetId: [] }, onShow() { this.getTabBar().init(); @@ -60,7 +61,8 @@ this.getBookTypeList(); this.getReadBookList(); this.getTextbookListList(); - this.getRankingList() + this.getRankingList(); + this.getShoppingCartList() }, // 鑾峰彇娴嬭瘯鐧诲綍鏃剁殑token getTestLoginInfo() { @@ -181,9 +183,15 @@ 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: "寤鸿涓�", @@ -222,6 +230,7 @@ }) }) }, + //绮鹃�夎绋嬪垎绫� getCourseTypeListList() { @@ -329,6 +338,7 @@ //鍥句功鏈嶅姟 tabBookClick(item) { let info = this.data.bookTypeList[item.detail.value] + console.log(info, 123) this.getBooksList(info) }, //鏁板瓧闃呰 @@ -378,17 +388,29 @@ //鑾峰彇鎺掕姒� 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) => { @@ -397,6 +419,94 @@ }) }) }, + // 璺宠浆鍥句功璇︽儏 + 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({ diff --git a/pages/home/home.wxml b/pages/home/home.wxml index 547af8b..d96f714 100644 --- a/pages/home/home.wxml +++ b/pages/home/home.wxml @@ -28,13 +28,13 @@ <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" /> @@ -57,7 +57,7 @@ <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> @@ -69,7 +69,7 @@ </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" /> @@ -83,7 +83,7 @@ <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> @@ -97,7 +97,7 @@ <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> @@ -109,8 +109,8 @@ </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> @@ -129,13 +129,13 @@ <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" /> @@ -151,14 +151,14 @@ <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" /> @@ -170,7 +170,7 @@ <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> @@ -184,23 +184,22 @@ <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" /> diff --git a/pages/home/home.wxss b/pages/home/home.wxss index fa02cf0..446c24a 100644 --- a/pages/home/home.wxss +++ b/pages/home/home.wxss @@ -201,13 +201,18 @@ } .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, @@ -217,7 +222,7 @@ } .listBox1 .priceBox { - margin-top: 14rpx; + margin-top: 10rpx; } .listBox2 { @@ -240,7 +245,7 @@ } .listBox2 .specialSubject-img { - height: 300rpx; + height: 280rpx; width: 100%; box-shadow: 0px 0px 20rpx 2px #f1f1f1; } @@ -273,7 +278,7 @@ .listBox3 .textbooksItemBox .specialSubject-img { width: 190rpx; - height: 260rpx; + height: 250rpx; box-shadow: 0px 0px 20rpx 2px #f1f1f1; } @@ -313,4 +318,43 @@ .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; } \ No newline at end of file diff --git a/pages/personalCenter/components/user-center-card/index.wxml b/pages/personalCenter/components/user-center-card/index.wxml index d6af2e3..60d1830 100644 --- a/pages/personalCenter/components/user-center-card/index.wxml +++ b/pages/personalCenter/components/user-center-card/index.wxml @@ -4,7 +4,7 @@ <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> diff --git a/pages/personalCenter/feedBack/index.js b/pages/personalCenter/feedBack/index.js index f904417..13d7ca0 100644 --- a/pages/personalCenter/feedBack/index.js +++ b/pages/personalCenter/feedBack/index.js @@ -1,10 +1,41 @@ // 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, }, @@ -13,6 +44,11 @@ */ onLoad(options) { console.log(options); + // if (this.data.activeName == "proposition") { + // this.getDataList("bookOpinion", false); + // } else { + // this.getDataList("feedback", false); + // } }, /** @@ -28,14 +64,6 @@ onShow() { }, - - /** - * 鐢熷懡鍛ㄦ湡鍑芥暟--鐩戝惉椤甸潰闅愯棌 - */ - onHide() { - - }, - /** * 鐢熷懡鍛ㄦ湡鍑芥暟--鐩戝惉椤甸潰鍗歌浇 */ @@ -43,18 +71,141 @@ }, + 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", + }); }, /** diff --git a/pages/personalCenter/feedBack/index.json b/pages/personalCenter/feedBack/index.json index 8f9ad0c..07a4e72 100644 --- a/pages/personalCenter/feedBack/index.json +++ b/pages/personalCenter/feedBack/index.json @@ -1,4 +1,12 @@ { "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" + } } \ No newline at end of file diff --git a/pages/personalCenter/feedBack/index.wxml b/pages/personalCenter/feedBack/index.wxml index 134e541..2825540 100644 --- a/pages/personalCenter/feedBack/index.wxml +++ b/pages/personalCenter/feedBack/index.wxml @@ -1,2 +1,55 @@ -<!--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="姝e湪鍒锋柊..." 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> \ No newline at end of file diff --git a/pages/personalCenter/feedBack/index.wxss b/pages/personalCenter/feedBack/index.wxss index 62d1b32..6e24a8b 100644 --- a/pages/personalCenter/feedBack/index.wxss +++ b/pages/personalCenter/feedBack/index.wxss @@ -1 +1,103 @@ -/* pages/personalCenter/feedBack/index.wxss */ \ No newline at end of file +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; +} \ No newline at end of file diff --git a/pages/personalCenter/feedBackSubmit/index.js b/pages/personalCenter/feedBackSubmit/index.js index fe4eb7e..0762189 100644 --- a/pages/personalCenter/feedBackSubmit/index.js +++ b/pages/personalCenter/feedBackSubmit/index.js @@ -1,11 +1,15 @@ // pages/personalCenter/feedBackSubmit/index.js +const app = getApp(); Page({ /** * 椤甸潰鐨勫垵濮嬫暟鎹� */ data: { - + userName: "", + mannder: "", + content: "", + lock: true, }, /** @@ -26,7 +30,6 @@ * 鐢熷懡鍛ㄦ湡鍑芥暟--鐩戝惉椤甸潰鏄剧ず */ onShow() { - }, /** @@ -56,11 +59,82 @@ 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 + }) + } + } } }) \ No newline at end of file diff --git a/pages/personalCenter/feedBackSubmit/index.wxml b/pages/personalCenter/feedBackSubmit/index.wxml index 675b7b0..b631d1c 100644 --- a/pages/personalCenter/feedBackSubmit/index.wxml +++ b/pages/personalCenter/feedBackSubmit/index.wxml @@ -1,2 +1,25 @@ -<!--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> \ No newline at end of file diff --git a/pages/personalCenter/feedBackSubmit/index.wxss b/pages/personalCenter/feedBackSubmit/index.wxss index 5445ab2..1cd14bb 100644 --- a/pages/personalCenter/feedBackSubmit/index.wxss +++ b/pages/personalCenter/feedBackSubmit/index.wxss @@ -1 +1,30 @@ -/* pages/personalCenter/feedBackSubmit/index.wxss */ \ No newline at end of file +/* 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; +} \ No newline at end of file diff --git a/pages/personalCenter/index.js b/pages/personalCenter/index.js index 9256f51..2c1760e 100644 --- a/pages/personalCenter/index.js +++ b/pages/personalCenter/index.js @@ -59,7 +59,7 @@ { title: '寤鸿涓庡弽棣�', icon: '/static/images/personal/feedback.png', - url: '/pages/personalCenter/feedback/index', + url: '/pages/personalCenter/feedBack/index', type: 'feedback', } ]; @@ -179,7 +179,7 @@ //鐐瑰嚮鐩綍 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 diff --git a/pages/personalCenter/myCollection/index.js b/pages/personalCenter/myCollection/index.js index 358d636..d5bdf97 100644 --- a/pages/personalCenter/myCollection/index.js +++ b/pages/personalCenter/myCollection/index.js @@ -1,10 +1,35 @@ +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, }, /** @@ -12,6 +37,7 @@ */ onLoad(options) { console.log(options); + this.getDataList(); }, /** @@ -21,41 +47,142 @@ }, - /** - * 鐢熷懡鍛ㄦ湡鍑芥暟--鐩戝惉椤甸潰鏄剧ず - */ - 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, + // }); + }, + + /** * 鐢ㄦ埛鐐瑰嚮鍙充笂瑙掑垎浜� */ diff --git a/pages/personalCenter/myCollection/index.json b/pages/personalCenter/myCollection/index.json index c1b3d78..a901f19 100644 --- a/pages/personalCenter/myCollection/index.json +++ b/pages/personalCenter/myCollection/index.json @@ -1,4 +1,12 @@ { "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" + } } \ No newline at end of file diff --git a/pages/personalCenter/myCollection/index.wxml b/pages/personalCenter/myCollection/index.wxml index 85d5124..c07d67f 100644 --- a/pages/personalCenter/myCollection/index.wxml +++ b/pages/personalCenter/myCollection/index.wxml @@ -1 +1,50 @@ -<text>鎴戠殑鏀惰棌</text> \ No newline at end of file +<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="姝e湪鍒锋柊..." 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> \ No newline at end of file diff --git a/pages/personalCenter/myCollection/index.wxss b/pages/personalCenter/myCollection/index.wxss index e69de29..ed8b651 100644 --- a/pages/personalCenter/myCollection/index.wxss +++ b/pages/personalCenter/myCollection/index.wxss @@ -0,0 +1,145 @@ +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; +} \ No newline at end of file diff --git a/pages/personalCenter/myMassage/index.js b/pages/personalCenter/myMassage/index.js index 19ad1e3..a4fbd0f 100644 --- a/pages/personalCenter/myMassage/index.js +++ b/pages/personalCenter/myMassage/index.js @@ -43,6 +43,7 @@ res.datas.forEach((item) => { item.createDate = moment(item.createDate).format("YYYY-MM-DD HH:mm"); }); + let dataList = res.datas; //瑙﹀簳鍔犺浇鏂版暟鎹苟淇濈暀鑰佹暟鎹� @@ -51,7 +52,7 @@ } this.setData({ list: dataList, - pageTotalCount: res.total, + pageTotalCount: res.totalSize, bottomLoading: false, isMoreData: dataList.length > 0 ? false : true, skeletonLoding: false, diff --git a/pages/personalCenter/myOrder/index.js b/pages/personalCenter/myOrder/index.js index 358d636..4537c2f 100644 --- a/pages/personalCenter/myOrder/index.js +++ b/pages/personalCenter/myOrder/index.js @@ -1,10 +1,49 @@ +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: [] }, /** @@ -12,6 +51,7 @@ */ onLoad(options) { console.log(options); + this.getDataList(false) }, /** @@ -20,40 +60,148 @@ 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 = "姝e湪鏀粯"; + } + 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); }, /** diff --git a/pages/personalCenter/myOrder/index.json b/pages/personalCenter/myOrder/index.json index aa73fde..4900e5b 100644 --- a/pages/personalCenter/myOrder/index.json +++ b/pages/personalCenter/myOrder/index.json @@ -1,4 +1,14 @@ { "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" + } } \ No newline at end of file diff --git a/pages/personalCenter/myOrder/index.wxml b/pages/personalCenter/myOrder/index.wxml index 2413eb4..5140519 100644 --- a/pages/personalCenter/myOrder/index.wxml +++ b/pages/personalCenter/myOrder/index.wxml @@ -1,2 +1,74 @@ -<!--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="姝e湪鍒锋柊..." 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> \ No newline at end of file diff --git a/pages/personalCenter/myOrder/index.wxss b/pages/personalCenter/myOrder/index.wxss index e69de29..8ac30eb 100644 --- a/pages/personalCenter/myOrder/index.wxss +++ b/pages/personalCenter/myOrder/index.wxss @@ -0,0 +1,169 @@ +.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; +} \ No newline at end of file diff --git a/services/home/home.js b/services/home/home.js index 598c2dd..dc57e72 100644 --- a/services/home/home.js +++ b/services/home/home.js @@ -9,7 +9,7 @@ text: '鍥句功鏈嶅姟', key: 0, icon: '/static/images/home/zhutichuban@2x.png', - url: '/pages/bookServices/assort/index.wxml', + url: '/pages/bookServices/assort/index', }, { text: '鏁板瓧闃呰', @@ -39,7 +39,7 @@ text: '绾夸笂涔﹀睍', key: 5, icon: '/static/images/home/xianshangshuzhan@2x.png', - url: '', + url: '/pages/bookExhibitionList/index', }, { text: '涔︾洰涓嬭浇', diff --git a/static/images/default-book-img.png b/static/images/default-book-img.png new file mode 100644 index 0000000..3ee5005 --- /dev/null +++ b/static/images/default-book-img.png Binary files differ diff --git a/static/images/personal/quxiaoshoucang.png b/static/images/personal/quxiaoshoucang.png new file mode 100644 index 0000000..c9c6227 --- /dev/null +++ b/static/images/personal/quxiaoshoucang.png Binary files differ diff --git a/static/images/personal/suggestion.png b/static/images/personal/suggestion.png new file mode 100644 index 0000000..530d7b3 --- /dev/null +++ b/static/images/personal/suggestion.png Binary files differ -- Gitblit v1.9.1