litian
2024-03-05 a81a1a31ce7ee003e0006168e4d4e57da97c2bb6
个人中心
22个文件已修改
3个文件已添加
1554 ■■■■■ 已修改文件
pages/home/home.js 126 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/home/home.wxml 53 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/home/home.wxss 56 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/personalCenter/components/user-center-card/index.wxml 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/personalCenter/feedBack/index.js 169 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/personalCenter/feedBack/index.json 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/personalCenter/feedBack/index.wxml 57 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/personalCenter/feedBack/index.wxss 104 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/personalCenter/feedBackSubmit/index.js 88 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/personalCenter/feedBackSubmit/index.wxml 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/personalCenter/feedBackSubmit/index.wxss 31 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/personalCenter/index.js 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/personalCenter/myCollection/index.js 171 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/personalCenter/myCollection/index.json 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/personalCenter/myCollection/index.wxml 51 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/personalCenter/myCollection/index.wxss 145 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/personalCenter/myMassage/index.js 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/personalCenter/myOrder/index.js 186 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/personalCenter/myOrder/index.json 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/personalCenter/myOrder/index.wxml 76 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/personalCenter/myOrder/index.wxss 169 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
services/home/home.js 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
static/images/default-book-img.png 补丁 | 查看 | 原始文档 | blame | 历史
static/images/personal/quxiaoshoucang.png 补丁 | 查看 | 原始文档 | blame | 历史
static/images/personal/suggestion.png 补丁 | 查看 | 原始文档 | blame | 历史
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({
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" />
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;
}
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>
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",
    });
  },
  /**
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"
  }
}
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="正在刷新..." class="wrapper" />
            </view>
          </view>
          {{list}}
          <view class="list">
            <view wx:if="{{activeName == 'bookOpinion'}}" class="listBox">
              <view class="content-item" wx:for="{{list}}" wx:for-item="item" wx:for-index="index" wx:key="index">
                <view class="icon">
                  <t-image src="{{item.icon}}" mode="heightFix" class="img" />
                </view>
                <view class="item-con">
                  <view class="titleBox">
                    <view class="item-title">{{item.name}}</view>
                  </view>
                </view>
              </view>
            </view>
            <!-- <view wx:if="{{activeName == 'feedback'}}">
              <view class="content-item" wx:for="{{list}}" wx:for-item="item" wx:for-index="index" wx:key="index">
                <view class="item-con">
                  <view class="titleBox">
                    <view class="item-title">{{item.name}}</view>
                  </view>
                </view>
              </view>
            </view> -->
          </view>
          <view wx:if="{{list.length == 0}}" class="empyt">
            <t-empty icon="folder-open" description="暂无数据" />
          </view>
          <view class="bottom-loading" wx:if="{{bottomLoading}}">
            <t-loading theme="circular" size="40rpx" text="加载中..." class="wrapper" />
          </view>
          <view class="bottom-loading" style="color: #ccc;font-size: 28rpx;" wx:if="{{isMoreData}}">
            <text>没有更多了</text>
          </view>
        </scroll-view>
      </view>
    </t-tab-panel>
  </t-tabs>
  <view class="submitBox" bindtap="goSubmit" wx:if="{{activeName == 'feedback'}}">
    <view class="box">
      <t-image src="/static/images/personal/suggestion.png" mode="heightFix" class="img" />
      <text>我要反馈</text>
    </view>
  </view>
  <t-back-top theme="round" wx:if="{{isBackTop}}" text="顶部" bind:to-top="onToTop"></t-back-top>
</view>
pages/personalCenter/feedBack/index.wxss
@@ -1 +1,103 @@
/* pages/personalCenter/feedBack/index.wxss */
page {
  background-color: #f0f2f5;
  box-sizing: border-box;
  padding: 0 24rpx;
}
.t-tabs__track {
  display: none;
}
.t-tabs {
  margin-top: 20rpx;
  background: none !important;
}
.t-tabs__wrapper {
  background: none !important;
}
.t-tabs__nav :nth-child(1) {
  border-radius: 30rpx 30rpx 0 0rpx;
}
.t-tabs__nav :nth-child(2) {
  border-radius: 0rpx 30rpx 0 30rpx;
}
.t-tabs__item {
  flex: 1 !important;
  background: #E6E8F1;
  height: 76rpx !important;
  margin-top: 16rpx;
  border-radius: 30rpx 0 30rpx 0rpx !important;
}
.t-tabs__item--active {
  color: #333 !important;
  background: #fff;
  height: 96rpx;
  font-size: 32rpx;
  margin-top: 0;
  height: 96rpx !important;
  border-radius: 30rpx 30rpx 0 0rpx !important;
}
.t-tabs__item--active+.t-tabs__item {
  border-radius: 0 30rpx 0 30rpx !important;
}
.refresh-container {
  margin: 0 auto;
}
.bottom-loading,
.loading {
  padding: 20rpx;
  text-align: center;
}
.content {
  height: calc(100vh - env(safe-area-inset-bottom));
  box-sizing: border-box;
}
.content-item {
  background: #fff;
}
.listBox:nth-child(1) {
  margin-top: -30rpx;
  padding-top: 30rpx;
}
.submitBox {
  width: 220rpx;
  height: 80rpx;
  line-height: 80rpx;
  background: #ff6d00;
  color: #fff;
  border-radius: 50rpx 0 0 50rpx;
  position: fixed;
  bottom: 20%;
  right: 0;
}
.submitBox .box {
  display: flex;
  margin: 0 auto;
  width: 160rpx;
  align-items: center;
  text-align: center;
  font-size: 28rpx;
}
.submitBox .img {
  width: 40rpx;
  height: 40rpx;
  margin-right: 10rpx;
}
.empyt {
  padding: 200rpx 0;
}
pages/personalCenter/feedBackSubmit/index.js
@@ -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
        })
      }
    }
  }
})
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>
pages/personalCenter/feedBackSubmit/index.wxss
@@ -1 +1,30 @@
/* pages/personalCenter/feedBackSubmit/index.wxss */
/* pages/personalCenter/feedBackSubmit/index.wxss */
page {
  box-sizing: border-box;
  padding: 0 24rpx;
}
.page-body {
  padding: 20rpx;
  font-size: 28rpx;
}
.from-item {
  margin-bottom: 20rpx;
}
.from-item .label {
  width: 240rpx;
  height: 68rpx;
  line-height: 68rpx;
}
.from-item .item-content {
  border: 2rpx solid #D9D9D9;
  padding: 10rpx;
}
.submit {
  background: #ff6c00;
  color: #fff;
}
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
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,
    // });
  },
  /**
   * 用户点击右上角分享
   */
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"
  }
}
pages/personalCenter/myCollection/index.wxml
@@ -1 +1,50 @@
<text>我的收藏</text>
<view class="container">
  <t-tabs t-class="t-tabs" t-class-active="tabs-external__active" t-class-item="tabs-external__item" defaultValue="{{active}}" space-evenly="{{false}}" bind:change="tabBookClick">
    <t-tab-panel wx:for="{{tabList}}" wx:for-index="index" wx:key="index" label="{{item.label}}" value="{{index}}">
      <view class="pageInfo">
        <scroll-view class="scroll content" bind:scroll="onPageScroll" model:scroll-top="{{setScrollValue}}" scroll-y refresher-enabled="{{true}}" lower-threshold="{{200}}" refresher-threshold="{{80}}" refresher-default-style="none" refresher-triggered="{{triggered}}" bindrefresherpulling="{{refresh.onPulling}}" bindrefresherrefresh="onPullDownRefresh" bindscrolltolower="onReachBottom">
          <view slot="refresher" class="refresh-container">
            <view class="loading">
              <t-loading theme="circular" size="40rpx" text="正在刷新..." class="wrapper" />
            </view>
          </view>
          <view class="list" wx:if="{{list.length > 0}}">
            <view wx:if="{{activeName == 'FavoriteBookCity'}}" class="listBox">
              <view class="content-item" wx:for="{{list}}" wx:for-item="item" wx:for-index="index" wx:key="index">
                <view class="icon" data-info="{{item}}" bindtap="goBookDetails">
                  <t-image src="{{item.icon}}" mode="" class="img" />
                </view>
                <view class="body-info" data-info="{{item}}" bindtap="goBookDetails">
                  <view class="name">{{item.name}}</view>
                  <view class="author">{{item.author}}</view>
                </view>
                <view class="currentBtn" data-info="{{item}}" bindtap="setCoolect">
                  <t-image src="/static/images/personal/quxiaoshoucang.png" mode="heightFix" class="img" />
                </view>
              </view>
            </view>
            <!-- <view wx:if="{{activeName == 'Favoriteclass'}}">
              <view class="content-item" wx:for="{{list}}" wx:for-item="item" wx:for-index="index" wx:key="index">
                <view class="item-con">
                  <view class="titleBox">
                    <view class="item-title">{{item.name}}</view>
                  </view>
                </view>
              </view>
            </view> -->
          </view>
          <view wx:if="{{list.length == 0}}" class="empyt">
            <t-empty icon="folder-open" description="暂无数据" />
          </view>
          <view class="bottom-loading" wx:if="{{bottomLoading}}">
            <t-loading theme="circular" size="40rpx" text="加载中..." class="wrapper" />
          </view>
          <view class="bottom-loading" style="color: #ccc;font-size: 28rpx;" wx:if="{{isMoreData}}">
            <text>没有更多了</text>
          </view>
        </scroll-view>
      </view>
    </t-tab-panel>
  </t-tabs>
  <t-back-top theme="round" wx:if="{{isBackTop}}" text="顶部" bind:to-top="onToTop"></t-back-top>
</view>
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;
}
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,
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 = "正在支付";
            }
            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);
  },
  /**
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"
  }
}
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="正在刷新..." 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>
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;
}
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: '书目下载',
static/images/default-book-img.png
static/images/personal/quxiaoshoucang.png
static/images/personal/suggestion.png