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