litian
2024-03-21 20a26aa0c12c05c3f96afc163c6532c6b1b5cf8e
Merge refs/remotes/origin/master into refs/heads/master
41个文件已修改
1个文件已添加
858 ■■■■ 已修改文件
custom-tab-bar/index.js 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
custom-tab-bar/index.wxml 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
packageBookService/pages/bookServices/detail/components/tree/index.js 104 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
packageBookService/pages/bookServices/detail/components/tree/index.wxml 5 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
packageBookService/pages/bookServices/detail/index.js 36 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
packageBookService/pages/bookServices/detail/index.wxml 15 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
packageBookService/pages/bookServices/detail/index.wxss 26 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
packageBookService/pages/bookServices/examination/examination.js 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
packageBookService/pages/bookServices/examination/examination.wxml 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
packageBookService/pages/bookServices/examination/questionList/index.wxml 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
packageBookService/pages/bookServices/examination/questionList/index.wxss 15 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
packageBookService/pages/bookServices/examination/questionOptions/index.js 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
packageBookService/pages/bookServices/examination/questionOptions/index.wxml 16 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
packageBookService/pages/bookServices/examination/questionOptions/index.wxss 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
packageBookService/pages/bookServices/examination/questionSchedule/index.js 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
packageBookService/pages/bookServices/list/index.js 18 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
packageBookService/pages/bookServices/list/index.json 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
packageBookService/pages/bookServices/list/index.wxml 17 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
packageBookService/pages/bookServices/list/index.wxss 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
packageDomain/pages/resourceDetails/myAudio/index.js 36 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
packageDomain/pages/resourceDetails/myAudio/index.json 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
packageDomain/pages/resourceDetails/myAudio/index.wxml 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
packageDomain/pages/resourceDetails/myAudio/index.wxss 33 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/bookExhibitionList/index.js 7 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/bookExhibitionList/index.json 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/bookExhibitionList/index.wxml 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/bookExhibitionList/index.wxss 94 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/bookServices/assort/index.js 59 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/bookServices/assort/index.wxml 31 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/bookServices/assort/index.wxss 60 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/cart/index.js 9 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/cart/index.wxml 9 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/cart/paymentPage/index.js 80 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/cart/paymentPage/index.wxml 9 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/home/home.js 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/home/home.wxml 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/retrievalPage/index.js 26 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/retrievalPage/index.json 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/retrievalPage/index.wxml 23 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/retrievalPage/index.wxss 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
services/home/home.js 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
static/images/bookService/detail/square.png 补丁 | 查看 | 原始文档 | blame | 历史
custom-tab-bar/index.js
@@ -8,6 +8,7 @@
  methods: {
    onChange(event) {
      this.setData({ active: event.detail.value });
      console.log(this.data.active);
      wx.switchTab({
        url: this.data.list[event.detail.value].url.startsWith('/')
          ? this.data.list[event.detail.value].url
custom-tab-bar/index.wxml
@@ -3,8 +3,9 @@
    <view class="custom-tab-bar-wrapper">
      <!-- <t-icon prefix="wr" name="{{item.icon}}" size="48rpx" />
      <view class="text">{{ item.text }}</view> -->
      <t-image wx:if="{{active !== index}}" class="tabImg" src="{{item.icon}}" mode="heightFix" width="22" height="22" />
      <t-image wx:else class="tabImg" src="{{item.activeIcon}}" mode="heightFix" width="22" height="22" />
      <!-- <t-image wx:if="{{active !== index}}" class="tabImg" src="{{item.icon}}" mode="heightFix" width="22" height="22" />
      <t-image wx:else class="tabImg" src="{{item.activeIcon}}" mode="heightFix" width="22" height="22" /> -->
      <t-image class="tabImg" src="{{active == index ? item.activeIcon : item.icon}}" width="22" height="22"></t-image>
      <view class="text">{{ item.text }}</view>
    </view>
  </t-tab-bar-item>
packageBookService/pages/bookServices/detail/components/tree/index.js
@@ -3,6 +3,8 @@
const util = require('./components/util') // 引入封装过的加载提示
const app = getApp()
Component({
  // checked: false,
  properties: {
    treeList: {
      type: Array,
@@ -35,7 +37,8 @@
  },
  data: {
    activeValues: [0],
    webpageSrc: ''
    webpageSrc: '',
    cloudShoppingCart: []
  },
  onShow() {
@@ -45,10 +48,11 @@
  methods: {
    // 节点展开
    handleChange(e) {
      // console.log(this.properties.treeList, 'this.properties.treeList');
      this.setData({
        activeValues: e.detail.value,
      });
      console.log('传递', this.properties.buyIds);
      // console.log('传递', this.properties.buyIds);
    },
    handleCheck(data) {
      for (let index = 0; index < data.length; index++) {
@@ -83,7 +87,7 @@
    // 跳转音视频播放器
    goPlayer(e) {
      console.log(e);
      debugger
      // debugger
      const item = e.currentTarget.dataset.item
      const parent = e.currentTarget.dataset.parent
      let url
@@ -168,7 +172,7 @@
          result.push(...item.children);
        }
      }
      console.log(this.properties.treeList);
      console.log(this.properties.treeList, 'this.properties.treeList');
      this.properties.treeList.forEach(item => {
        findChildren(item);
      });
@@ -176,20 +180,30 @@
    },
    // 拿到当前项子项
    flattenTree(tree) {
      let result = [];
      function flatten(node) {
        result.push(node);
        if (node.children && node.children.length > 0) {
          node.children.forEach(child => {
            flatten(child);
          });
        }
      }
      tree.forEach(node => {
        flatten(node);
      });
      // console.log(result, 'result');
      return result
    },
    findAndUpdateItemById(tree, id) {
      function findAndUpdate(node) {
        if (node.id === id) {
@@ -214,9 +228,12 @@
    },
    // 变为true
    findAndUpdateItemsByIds(tree, ids) {
      function findAndUpdate(node) {
        if (ids.includes(node.id)) {
          node.checked = true; // 将目标项的 check 属性设置为 true
          // console.log(node, 'node');
          node.checked = !node.checked  // 将目标项的 check 属性设置为 true
        }
        if (node.children && node.children.length > 0) {
          for (let child of node.children) {
@@ -226,30 +243,87 @@
      }
      for (let node of tree) {
        findAndUpdate(node); // 对每个顶层节点执行查找和更新操作
      }
      // console.log(tree, 'tree345');
      return tree; // 返回修改后的完整数组
    },
    // 章节勾选
    checkResourceTitle(e) {
      // 这个时候checked的值是fals
      const item = e.currentTarget.dataset.item
      console.log(item, 'item');
      let list = this.flattenTree([item])
      let ids = []
      list.forEach(item => {
        ids.push(item.id)
      })
      const tab = this.findAndUpdateItemsByIds([item], ids)
      console.log(ids, tab);
      const updatedTreeList = this.findAndUpdateItemsByIds(this.properties.treeList, ids);
      // console.log(updatedTreeList, 'updatedTreeList');   //这个时候checked的值就变成了true
      this.setData({
        treeList: updatedTreeList  // 更新 treeList 数据
      });
      console.log(list, 'list');
      list.forEach(items => {
        console.log(items.checked, 'itesasd');
        if (!items.checked) {
          this.setData({
            cloudShoppingCart: items
          })
    }
      })
      this.onCloudShoppingCart()
  },
  onCloudShoppingCart() {
    console.log(this.properties.treeList);
    // 子项勾选
    checkResource(e) {
      const item = e.currentTarget.dataset.item
      // let list = this.flattenTree([item])
      // console.log(list, 'list121');
      // let ids = []
      // list.forEach(items => {
      //   console.log(items.id, 'itemsId');
      //   ids.push(items.id)
      // })
  },
  oncheckbox() {
    console.log(111);
  },
  logdata(e) {
    console.log(e);
    // 加入购物车
    async onCloudShoppingCart() {
      let requests = []
      const item = this.data.cloudShoppingCart
      console.log(item, 'item');
      item.forEach((items) => {
        if (items.saleMethod.length) {
          requests.push({
            saleMethodId: items.saleMethod[0].Id,
            count: 1
          })
  }
})
      let query = {
        remarks: '云学习',
        requests
      }
      // 查询订单
      let initOrderRes = await app.MG.store.initOrder(query)
      let parameter = {
        orderNum: initOrderRes.orderNumber
      }
      const confirmOrderRes = await app.MG.store.confirmOrder(parameter)
      // if (confirmOrderRes.orderNumber) {
      //   wx.navigateTo({
      //     url: `/pages/cart/paymentPage/index?orderNumber=${confirmOrderRes.orderNumber}`,
      //   })
      //   requests = []
      // }
    },
  },
})
packageBookService/pages/bookServices/detail/components/tree/index.wxml
@@ -4,6 +4,8 @@
      <view slot="header" class="header-title">
        <view wx:if="{{tab == 'jsek_cloudLearning'}}">
          <t-checkbox icon="rectangle" checked="{{item.checked}}" data-item="{{item}}" bind:change="checkResourceTitle" />
          <!-- <t-checkbox icon="rectangle" checked="{{true}}" data-item="{{item}}" bind:change="checkResourceTitle" /> -->
        </view>
        <text>{{item.name}}</text>
      </view>
@@ -16,7 +18,8 @@
              <view class="box-image" style="{{ tab == 'jsek_teachingResources' ? 'width: 350rpx;' : 'width: 450rpx;'}}">
                <view class="checkBox" wx:if="{{tab == 'jsek_cloudLearning'}}">
                  <!-- checked="{{citem.checked}}"  -->
                  <t-checkbox icon="rectangle" checked="{{citem.checked}}" disabled="{{citem.selectType=='webpage' || citem.isDownload != 1 || citem.fileMap[citem.file].protectType == 'Private'}}" catch:change="checkResource" data-item="{{citem}}" />
                  <!-- <t-checkbox icon="rectangle" checked="{{citem.checked}}" disabled="{{citem.selectType=='webpage' || citem.isDownload != 1 || citem.fileMap[citem.file].protectType == 'Private'}}" catch:change="checkResource" data-item="{{citem}}" /> -->
                  <t-checkbox icon="rectangle" checked="{{citem.checked}}" data-item="{{citem}}" catch:change="checkResource" />
                </view>
                <!-- 教学资源图标 -->
                <view class="teach-icon">
packageBookService/pages/bookServices/detail/index.js
@@ -428,11 +428,11 @@
              })
              this.findChildIds(this.data.teach, this.data.openTeachids = [])
            } else if (type.refCode == 'jsek_cloudLearning') {
              // res.datas.cmsDatas[0].datas.forEach(item => {
              //   item.checked = false
              // })
              // const list = await this.getAllResource(res.datas.cmsDatas[0].datas)
              console.log(list, 'currentlist');
              res.datas.cmsDatas[0].datas.forEach(item => {
                item.checked = false
              })
              const list = await this.getAllResource(res.datas.cmsDatas[0].datas)
              console.log(list, 'list');
              this.setData({
                learn: list,
                loading: false
@@ -994,14 +994,14 @@
  async allAddShoppiingCar() {
    const child = this.selectComponent('#learn-resource')
    const token = wx.getStorageSync('jsek-token')
    if (!token) {
      return wx.getUserProfile({
        desc: '用户登录',
        success: (res) => {
          console.log(res);
        }
      })
    }
    // if (!token) {
    //   return wx.getUserProfile({
    //     desc: '用户登录',
    //     success: (res) => {
    //       console.log(res);
    //     }
    //   })
    // }
    let shopList = this.handleTreeData(this.data.learn).filter((item) => this.resourceIsBuy(item))
    this.getShoppingCartProductGet()
    if (!shopList.length) return wx.showToast({
@@ -1146,7 +1146,6 @@
        })
        res = await app.MG.store.initOrder(query)
      }
      if (res.orderNumber && this.data.mockData.price) {
        wx.navigateTo({
          url: `/pages/cart/paymentPage/index?orderNumber=${res.orderNumber}`,
@@ -1197,11 +1196,16 @@
      this.buyBook()
    }
    else if (this.data.tabValue == 'jsek_cloudLearning') {
      console.log('云学习');
      const tree = this.selectComponent('#tree')
      tree.onCloudShoppingCart()
    } else if (this.data.tabValue == 'questionBank') {
      this.buyMock()
    } else {
      console.log(this.data.tabValue);
    }
  }
  },
})
packageBookService/pages/bookServices/detail/index.wxml
@@ -35,20 +35,20 @@
      <view class="detail-right">
        <view class="book-name">{{bookDetail.name}}</view>
        <view class="book-message">
          <view class="message-li">
          <view class="message-li" wx:if="{{bookDetail.seriesName}}">
            <view class="li-title">丛书名:</view>
            <view class="li-content">{{bookDetail.seriesName}}</view>
          </view>
          <view class="message-li">
            <view class="li-title">作者:</view>
            <view class="li-title" wx:if="{{bookDetail.author}}">作者:</view>
            <view class="li-content">{{bookDetail.author}}</view>
          </view>
          <view class="message-li">
          <view class="message-li" wx:if="{{bookDetail.isbn}}">
            <view class="li-title">ISBN:</view>
            <view class="li-content">{{bookDetail.isbn}}</view>
          </view>
          <view class="message-li">
            <view class="li-title">出版时间:</view>
            <view class="li-title" wx:if="{{bookDetail.publicationDate}}">出版时间:</view>
            <view class="li-content">{{bookDetail.publicationDate}}</view>
          </view>
          <view class="message-li" wx:if="{{bookDetail.class}}" style="height: 80rpx">
@@ -56,6 +56,7 @@
            <view class="class-name showTow">{{bookDetail.class}}</view>
          </view>
        </view>
        <t-image src="/static/images/bookService/detail/square.png" class="right-background"></t-image>
      </view>
    </view>
    <!-- 销售信息 -->
@@ -109,7 +110,7 @@
      <t-tab-panel label="云学习" value="jsek_cloudLearning" style="{{tabPanelstyle}}">
        <view wx:if="{{!loading && learn.length}}">
          <learn-resource bind:getFreeResource="getFreeResource" bind:allAddShoppiingCar="allAddShoppiingCar" id="learn-resource"></learn-resource>
          <tree bookInfo="{{bookDetail}}" tab="{{tabValue}}" treeList="{{learn}}" buyIds="{{buyIdList}}" openLearnids="{{openLearnids}}"></tree>
          <tree id="tree" bookInfo="{{bookDetail}}" tab="{{tabValue}}" treeList="{{learn}}" buyIds="{{buyIdList}}" openLearnids="{{openLearnids}}"></tree>
        </view>
      </t-tab-panel>
      <t-tab-panel label="云测试" value="questionBank" style="{{tabPanelstyle}}">
@@ -136,8 +137,8 @@
      </view>
      <view class="btn-text">纸质样书申请</view>
    </view>
    <view class="shopCar" bind:tap="addBookShopcCar">加入购物车</view>
    <view class="buy" bind:tap="buyBtn">立即购买</view>
    <view class="shopCar {{tabValue == 'jsek_teachingResources' ? 'disabledColor' : 'shopCarColor' }}" bind:tap="addBookShopcCar">加入购物车</view>
    <view class="buy  {{tabValue == 'jsek_teachingResources' ? 'disabledColor' : 'buyColor' }}" bind:tap="buyBtn">立即购买</view>
  </view>
</scroll-view>
<!-- 我要建议弹窗 -->
packageBookService/pages/bookServices/detail/index.wxss
@@ -32,6 +32,19 @@
  margin-right: 36rpx;
}
.detail-right {
  position: relative;
}
.right-background {
  position: absolute;
  top: 80rpx;
  right: -80rpx;
  z-index: 0;
  width: 160rpx;
  height: 160rpx;
}
.detail-right .book-name {
  width: 420rpx;
  font-weight: bold;
@@ -76,7 +89,7 @@
}
.class-name {
  height: 2.5em;
  height: 2.8em;
  width: 280rpx;
  font-size: 28rpx;
}
@@ -249,21 +262,22 @@
  color: #fff;
}
.shopCar {
.shopCarColor {
  background-color: #F1AC37;
}
.buy {
.buyColor {
  background-color: #F14B3B;
}
.disabledColor {
  background-color: #d9d9d9;
}
.tab-box {
  min-height: 550rpx;
}
.note-list {
  /* margin-bottom: 80rpx; */
}
.tab-class {
  --td-loading-color: #ff6c00
packageBookService/pages/bookServices/examination/examination.js
@@ -282,13 +282,15 @@
      } else {
        return false
      }
    } else {
    } else if (typeof data == 'object') {
      const answer = data.find((item) => item.length > 0)
      if (answer) {
        return true
      } else {
        return false
      }
    } else {
      return false
    }
  },
  // 提交逻辑
@@ -712,7 +714,7 @@
      loading: false,
    })
  },
  // 批改题目 (练习,我的错题,我的收藏)
  // 批改题目 (练习,我的错题,我的收藏,,组卷)
  handleQuestion(num) {
    const questionList = this.data.questionDataList
    const index = num - 1 >= 0 ? num - 1 : 0
@@ -1332,7 +1334,6 @@
  },
  // 获取组卷题目列表
  async getMockDataList(questionList, oldList) {
    console.log(questionList, oldList);
    const questionDataList = this.data.questionDataList
    questionList.forEach(async (pathitem, pathindex) => {
      let itemIds = []
@@ -1451,7 +1452,6 @@
          })
          let questionList = []
          const cardUpdatedList = this.data.cardList
          // if (flag == this.data.idPathList.length) {
          cardUpdatedList.forEach(aitem => {
            aitem.infoList.forEach((bitem, bindex) => {
              questionList.push(bitem)
@@ -1462,6 +1462,7 @@
            questionDataList: questionList,
            cardList: cardUpdatedList
          })
          console.log('组卷题目列表', this.data.questionDataList);
        })
      })
    })
packageBookService/pages/bookServices/examination/examination.wxml
@@ -43,7 +43,7 @@
    bind:onChangeInput="onChangeInput"
    bind:changeSwiper="changeSwiper"
  ></question-list>
  <view class="lodaing-box">
  <view class="lodaing-box" wx:if="{{loading}}">
    <t-loading
      theme="circular"
      size="80rpx"
packageBookService/pages/bookServices/examination/questionList/index.wxml
@@ -39,8 +39,8 @@
        <!-- 单选题 -->
        <t-radio-group wx:if="{{item.questionType == 'singleChoice' || item.questionType == 'judge'}}" defaultValue="{{item.userAnswer}}" disabled="{{item.isComplete}}" bind:change="onChangeRadio" class="radio-group" data-value="{{item.option}}" data-id="{{item.id}}">
          <view wx:for="{{item.option}}" wx:for-item="contentItem" wx:for-index="contentIndex" wx:key="contentIndex">
            <t-radio value="{{contentItem.value}}" icon="none" placement="right" borderless style="color: {{isNight ? '#fff' : '#000'}}; background-color:{{isNight ? '#000' : '#fff'}}">
              <view class="radio-item {{item.answer == contentItem.value && item.answer == item.userAnswer  ? 'radio-correct' : item.userAnswer == contentItem.value && item.userAnswer != item.answer ?'radio-error' :''}}" style="color: {{isNight ? '#fff' : '#000'}}; background-color:{{isNight ? '#000' : '#fff'}}">
            <t-radio value="{{contentItem.value}}" icon="none" placement="right" borderless>
              <view class="radio-item {{item.answer == contentItem.value && item.answer == item.userAnswer  ? 'radio-correct' : item.userAnswer == contentItem.value && item.userAnswer != item.answer ?'radio-error' :''}}">
                <!-- 仅文字 -->
                <text wx:if="{{item.optionStyle == 'Txt'}}">{{contentItem.value}}、{{contentItem.txt}}</text>
                <!-- 仅图片 -->
@@ -96,15 +96,15 @@
      <!-- 解析 -->
      <view class="analysis" wx:if="{{item.isComplete}}">
        <view class="analysis-answer">
          <view class="answer-correct">
          <view class="answer-correct answer-center">
            <text class="analysis-title-box">正确答案:</text>
            <rich-text nodes="{{item.answer}}" style="font-size: 40rpx"></rich-text>
          </view>
          <view class="answer-error">
          <view class="answer-center marginL {{item.isRight ? 'answer-correct' : 'answer-error'}}" wx:if="{{item.questionType !== 'shortAnswer'}}">
            <text class="analysis-title-box">您的答案:</text><text class="answer-text">{{item.userAnswer}}</text>
          </view>
        </view>
        <view class="analysis-text" wx:if="{{item.analysisCon}}">
        <view class="analysis-text" wx:if="{{item.analysisCon}}" style="color: {{isNight ? '#fff' : '#000'}};">
          答案解析:<rich-text nodes="{{item.analysisCon}}" class="analysis-content"></rich-text>
        </view>
      </view>
packageBookService/pages/bookServices/examination/questionList/index.wxss
@@ -1,7 +1,7 @@
/* pages/bookServices/examination/questionList/index.wxss */
.question-list {
  width: 100%;
  height: 90%;
  width: 95%;
  height: 86%;
  padding: 20rpx;
  background-color: #ffffff;
  border-radius: 20rpx;
@@ -113,7 +113,7 @@
.analysis-answer {
  display: flex;
  justify-content: space-between;
  /* justify-content: space-between; */
}
.answer-correct {
@@ -124,6 +124,15 @@
  color: #EE1818;
}
.marginL {
  margin-left: 140rpx;
}
.answer-center {
  display: flex;
  align-items: center;
}
.answer-text {
  font-size: 40rpx;
}
packageBookService/pages/bookServices/examination/questionOptions/index.js
@@ -48,6 +48,10 @@
    mockSumTime: {
      type: Number,
      value: 0,
    },
    isNight: {
      type: Boolean,
      value: false
    }
  },
@@ -60,7 +64,7 @@
    questionCardState: false,
    setUpPopup: false,
    testReportState: false,
    sliderValue: 0,
    sliderValue: 10,
    useTime: '',
    radioItem: 'daytime'
  },
packageBookService/pages/bookServices/examination/questionOptions/index.wxml
@@ -1,19 +1,19 @@
<!--pages/bookServices/examination/questionOptions/index.wxml-->
<view class="page-bottom">
  <view class="li-option" bind:tap="setCollect">
<view class="page-bottom" style="color: {{isNight ? '#fff' : '#000'}}; background-color:{{isNight ? '#000' : '#fff'}}">
  <view class="li-option" bind:tap="setCollect" style="color: {{isNight ? '#fff' : '#000'}};">
    <t-image src="{{ questionDataList[currentIndex].isCollect ? '/static/images/bookService/detail/collecting.png' : '/static/images/bookService/examination/collect.png'}}">
    </t-image>
    收藏
  </view>
  <view class="li-option" bind:tap="handlePopup">
  <view class="li-option" bind:tap="handlePopup" style="color: {{isNight ? '#fff' : '#000'}};">
    <t-image src="/static/images/bookService/examination/questionCard.png"></t-image>
    答题卡
  </view>
  <view class="li-option" bind:tap="setUpBtn">
  <view class="li-option" bind:tap="setUpBtn" style="color: {{isNight ? '#fff' : '#000'}};">
    <t-image src="/static/images/bookService/examination/setting.png"></t-image>
    设置
  </view>
  <view class="li-option" bind:tap="resterBtn" wx:if="{{answerType == 'option' || answerType == 'mock'}}">
  <view class="li-option" bind:tap="resterBtn" wx:if="{{answerType == 'option' || (answerType == 'mock' && !submitStatus)}}" style="color: {{isNight ? '#fff' : '#000'}};">
    <t-image src="/static/images/bookService/examination/reset.png"></t-image>
    重做
  </view>
@@ -66,7 +66,7 @@
    <view class="brightness">
      <text>A-</text>
      <view class="brightness-slider">
        <t-slider defaultValue="{{30}}" theme="capsule" />
        <t-slider value="{{sliderValue}}" theme="capsule" step="{{10}}" bind:change="onChangeSlider" />
      </view>
      <text>A+</text>
@@ -77,7 +77,7 @@
        <view class="card {{radioItem == 'daytime' ? 'card--active' : ''}}">
          <t-radio value="daytime" icon="none" borderless>
            <view class="radio-content" slot="content">
              <t-image src="{{ radioItem == 'daytime' ? '/static/images/bookService/detail/practice-icon.png' : '/static/images/bookService/detail/notest.png'}}"></t-image>
              <t-image src="{{ radioItem == 'daytime' ? '/static/images/bookService/examination/rijian.png' : '/static/images/bookService/detail/notest.png'}}"></t-image>
              <text style="color: {{radioItem == 'daytime' ? '#fff':''}};">日间模式</text>
            </view>
          </t-radio>
@@ -85,7 +85,7 @@
        <view class="card {{radioItem == 'night' ? 'card--active' : ''}}">
          <t-radio value="night" icon="none" borderless>
            <view class="radio-content" slot="content">
              <t-image src="{{ radioItem == 'night' ? '/static/images/bookService/detail/practice-icon.png' : '/static/images/bookService/detail/notest.png'}}"></t-image>
              <t-image src="{{ radioItem == 'night' ? '/static/images/bookService/detail/practice-icon.png' : '/static/images/bookService/examination/yejian.png'}}"></t-image>
              <text style="color: {{radioItem == 'night' ? '#fff':''}};">夜间模式</text>
            </view>
          </t-radio>
packageBookService/pages/bookServices/examination/questionOptions/index.wxss
@@ -195,6 +195,7 @@
.brightness-slider {
  width: 80%;
  --td-slider-active-color: #ff6c00;
}
.test-radio {
@@ -208,6 +209,7 @@
.test-radio image {
  width: 34rpx;
  height: 34rpx;
  margin-right: 18rpx;
}
.card {
packageBookService/pages/bookServices/examination/questionSchedule/index.js
@@ -90,13 +90,15 @@
        } else {
          return false
        }
      } else {
      } else if (typeof data == 'object') {
        const answer = data.find((item) => item.length > 0)
        if (answer) {
          return true
        } else {
          return false
        }
      } else {
        return false
      }
    },
    // // 格式化时间
packageBookService/pages/bookServices/list/index.js
@@ -47,6 +47,8 @@
    loadingProps: {
      size: '50rpx',
    },
    loading: false,
    noData: false
  },
  /**
   * 生命周期函数--监听页面加载
@@ -138,7 +140,6 @@
   * 页面上拉触底事件的处理函数
   */
  onReachBottom(e) {
    console.log('底部');
    const flag = this.data.bookList.length < this.data.pageCount.total
    if (flag) {
      this.setData({
@@ -275,6 +276,10 @@
  },
  // 获取图书列表
  getBookList(path) {
    this.setData({
      loading: true,
      noData: false
    })
    let sort;
    let pathObj = {};
    if (this.data.pathList.length) {
@@ -336,9 +341,15 @@
      this.setData({
        bookList: res.datas,
        enable: false,
        "pageCount.total": res.total
        "pageCount.total": res.total,
        loading: false
      });
      console.log('图书列表', res, this.data.pageCount);
      console.log('图书列表', res.datas);
      if (!res.datas.length) {
        this.setData({
          noData: true
        })
      }
    });
  },
  // 一级分类切换
@@ -371,7 +382,6 @@
      pathList: pathList,
      'secondList.value': e.detail.value,
    });
  },
  // 
  onConfirmSecond() {
packageBookService/pages/bookServices/list/index.json
@@ -6,7 +6,8 @@
    "t-image": "tdesign-miniprogram/image/image",
    "t-search": "tdesign-miniprogram/search/search",
    "t-pull-down-refresh": "tdesign-miniprogram/pull-down-refresh/pull-down-refresh",
    "t-loading": "tdesign-miniprogram/loading/loading"
    "t-loading": "tdesign-miniprogram/loading/loading",
    "t-empty": "tdesign-miniprogram/empty/empty"
  },
  "navigationStyle": "custom"
}
packageBookService/pages/bookServices/list/index.wxml
@@ -10,8 +10,8 @@
<view class="bookServices-list">
  <view class="list-header">
    <scroll-view scroll-x="{{true}}" class="header-scroll">
      <t-dropdown-menu>
        <t-dropdown-item options="{{stairList.options}}" value="{{stairList.value}}" bindchange="onChangeStair" />
      <t-dropdown-menu style="width: 800rpx;">
        <t-dropdown-item options="{{stairList.options}}" value="{{stairList.value}}" bindchange="onChangeStair" style="background-color: #F6F6F6;" />
        <t-dropdown-item label="二级" options="{{secondList.options}}" optionsColumns="2" multiple value="{{secondList.value}}" bind:confirm="onConfirmSecond" bind:change="onChangeSecond" />
        <t-dropdown-item label="重点项目" options="{{majorProjectList.options}}" optionsColumns="2" multiple defaultValue="{{majorProjectList.value}}" bind:confirm="changeMajorProject" bind:reset="resetMajorProject" />
        <t-dropdown-item label="新形态教材" options="{{newTextBook.options}}" optionsColumns="2" multiple defaultValue="{{newTextBook.value}}" bind:confirm="changeNewText" bind:reset="resetNewText" />
@@ -31,14 +31,23 @@
        <view class="title-box"></view>
        <view class="title-name">{{assortCheck.name}}</view>
      </view>
      <view class="book-list">
      <view class="page-content">
        <view class="book-list" wx:if="{{!loaidng}}">
        <view class="book-box" wx:for="{{bookList}}" wx:key="id" bind:tap="goDetail" data-book="{{item}}">
          <view class="book-img">
            <t-image src="{{item.icon}}" width="105" height="145" aria-label="{item.name{}}" />
              <t-image src="{{item.icon ? item.icon : '/static/images/default-book-img.png'}}" width="105" height="145" aria-label="{item.name{}}" />
          </view>
          <view class="book-name book-color">{{ item.name}}</view>
          <view class="book-author book-color">{{item.author}}</view>
        </view>
          <view wx:if="{{noData}}" class="noData">
            <t-empty icon="folder-open" description="暂无数据" />
          </view>
        </view>
        <!-- loading -->
        <view class="loading-box" wx:if="{{loaidng}}">
          <t-loading theme="circular" size="60rpx" class="wrapper" loading="{{loaidng}}" wx:if="{{loaidng}}" />
        </view>
      </view>
      <view class="bottom-box">
        <t-loading theme="circular" size="40rpx" class="wrapper" wx:if="{{isMore == true}}" />
packageBookService/pages/bookServices/list/index.wxss
@@ -124,3 +124,30 @@
  font-size: 28rpx;
  --td-loading-color: #ff6c00
}
.loading-box {
  width: 100%;
  height: calc(100vh - 500rpx);
  display: flex;
  align-items: center;
  justify-content: center;
  --td-loading-color: #ff6c00;
}
.noData {
  width: 100%;
  display: flex;
  justify-content: center;
}
.t-dropdown-menu {
  display: flex;
  align-items: center;
}
.t-dropdown-menu__item {
  background-color: #F6F6F6;
  border-radius: 80rpx;
  height: 70%;
  margin-left: 20rpx;
}
packageDomain/pages/resourceDetails/myAudio/index.js
@@ -7,6 +7,7 @@
   * 页面的初始数据
   */
  data: {
    showDropdown: false,
    noteList: [],
    navBarHeight: '',
    barHeight: '',
@@ -521,7 +522,7 @@
    myAudio.onCanplay(() => {
      myAudio.duration; //必须写,不然获取不到。。。
      setTimeout(() => {
        console.log(myAudio.duration);
        console.log(myAudio.duration, 'myAudio.duration');
        this.setData({
          myAudioDuration: this.format(myAudio.duration),
          myAudioCurrent: this.format(myAudio.currentTime)
@@ -665,7 +666,36 @@
      myAudioPos: position,
      myAudioCurrent: this.format(currentTime)
    })
  },
  toggleDropdown() {
    this.setData({
      showDropdown: !this.data.showDropdown
    });
  },
  smallSpeed() {
    this.setData({
      speed: 0.5,
      showDropdown: !this.data.showDropdown
    })
  },
  centreSpeed() {
    this.setData({
      speed: 1.5,
      showDropdown: !this.data.showDropdown
    })
  },
  bigSpeed() {
    this.setData({
      speed: 2,
      showDropdown: !this.data.showDropdown
    })
  },
  smallSpeeDmultiple() {
    this.setData({
      speed: 1,
      showDropdown: !this.data.showDropdown
    })
  }
})
packageDomain/pages/resourceDetails/myAudio/index.json
@@ -13,7 +13,9 @@
    "t-textarea": "tdesign-miniprogram/textarea/textarea",
    "t-loading": "tdesign-miniprogram/loading/loading",
    "t-popup": "tdesign-miniprogram/popup/popup",
    "t-slider": "tdesign-miniprogram/slider/slider"
    "t-slider": "tdesign-miniprogram/slider/slider",
    "t-dropdown-menu": "tdesign-miniprogram/dropdown-menu/dropdown-menu",
    "t-dropdown-item": "tdesign-miniprogram/dropdown-item/dropdown-item"
  },
  "navigationStyle": "custom"
}
packageDomain/pages/resourceDetails/myAudio/index.wxml
@@ -9,15 +9,13 @@
<view class="audioPlayerBox">
  <view class="audioBackground" style="background-image: url('/static/images/resourceDetailsMyAudio/video-bg.png');">
    <image src="/static/images/resourceDetailsMyAudio/cd.png" alt="" />
  </view>
  <!-- 视频播放的按钮 -->
  <view class="bigFunctionBox">
    <view class="functionBox">
      <!-- 左切换 -->
      <!-- <view class="leftSwitchBox  color" bind:tap="onLeftSwitch">
@@ -44,19 +42,29 @@
      <view class="color" style="margin: 0 10rpx;">/</view>
      <view class="duration-time color"> {{myAudioDuration}} </view>
      <view class="publicBtn color" style="margin-left:40rpx ; width: 80rpx;" bind:tap="onSpeed">
        <text class="publicText">{{"x "+speed}}</text>
      <!-- bind:tap="onSpeed" -->
      <view class="publicBtn color">
        <view class="publicText" bind:tap="toggleDropdown">
          <view>
            {{"x "+speed}}
          </view>
          <t-icon style="margin-top: 10rpx;" wx:if="{{showDropdown}}" name="caret-up-small" size="14" bind:click="onIconTap" />
          <t-icon style="margin-top: 10rpx;" wx:else name="caret-down-small" size="14" bind:click="onIconTap" />
        </view>
        <view class="multipleBox" wx:if="{{showDropdown}}">
          <view wx:if="{{speed != 0.5}}" style="margin: 5rpx  0;" bind:tap="smallSpeed">x0.5</view>
          <view wx:if="{{speed != 1}}" style="margin: 5rpx  0;" bind:tap="smallSpeeDmultiple">x1</view>
          <view wx:if="{{speed != 1.5}}" style="margin: 5rpx  0;" bind:tap="centreSpeed">x1.5</view>
          <view wx:if="{{speed != 2}}" style="margin: 5rpx  0;" bind:tap="bigSpeed">x2</view>
      </view>
    </view>
  </view>
  </view>
</view>
<!-- 标题 -->
<view class="titleBox">{{titleName}}</view>
<view class="contentBox">
  <t-tabs defaultValue="{{0}}" bind:change="onTabsChange" bind:click="onTabsClick" t-class="custom-tabs" t-class-content="custom-panel">
    <!-- 资源列表 -->
packageDomain/pages/resourceDetails/myAudio/index.wxss
@@ -269,7 +269,10 @@
.audioBackground {
  flex: 1;
  background-size: 100% 110%;
  /* background-image: no-repeat; */
  background-repeat: no-repeat;
  background-position: center center;
  background-size: 100% 100%;
  background-color: #f9f9f9;
  display: flex;
  justify-content: center;
@@ -311,7 +314,6 @@
.t-tabs__item--active {
  color: #FF6C00 !important;
}
.t-tabs__track {
@@ -321,3 +323,30 @@
.audioIconBox {
  /* margin-top: 10rpx; */
}
.publicBtn {
  margin-right: 10rpx;
  /* margin-left: 40rpx; */
  margin-left: 20rpx;
  width: 120rpx;
  position: relative;
}
.multipleBox {
  position: absolute;
  /* top: 0; */
  bottom: 60rpx;
  right: 10rpx;
  background-color: #000;
  padding: 15rpx;
  font-size: 25rpx;
  /* padding-bottom: 100rpx; */
}
.publicText {
  display: flex;
}
pages/bookExhibitionList/index.js
@@ -143,7 +143,10 @@
  onPullDownRefresh() {
  },
  onPullDownRefresh() {
    this.data.page.size = 16 //更改显示的值
    this.bookExhibitionGet(); // 调用方法加载更多数据
  },
  /**
   * 页面上拉触底事件的处理函数
   */
@@ -169,7 +172,7 @@
        'page.size': newSize
      });
      this.bookExhibitionGet(); // 调用方法加载更多数据
      console.log(1111);
    }
pages/bookExhibitionList/index.json
@@ -9,5 +9,6 @@
    "t-icon": "tdesign-miniprogram/icon/icon"
  },
  "onReachBottomDistance": 200,
  "navigationStyle": "custom"
  "navigationStyle": "custom",
  "enablePullDownRefresh": true
}
pages/bookExhibitionList/index.wxml
@@ -23,6 +23,10 @@
  </t-dropdown-menu>
  <view class="outsideSortBox">
  <view class="sortBox" bind:tap="onSwapRight">
    <text>排序</text>
    <view class="iconBox">
@@ -32,6 +36,8 @@
  </view>
</view>
</view>
<view class="assembleContent">
  <view class="titleBox">
    <view class="frameBox"></view>
pages/bookExhibitionList/index.wxss
@@ -63,6 +63,7 @@
  /* width: 300px; */
  background-color: #fff;
  /* padding: 16rpx 32rpx; */
}
.iconBox {
@@ -81,15 +82,27 @@
.sortBox {
  color: #999999;
  display: flex;
  /* border-bottom: 1px #ededed solid; */
  align-items: center;
  height: 86rpx;
  width: 195rpx;
  margin-top: 8rpx;
  font-size: 30rpx;
  font-size: 25rpx;
}
.outsideSortBox {
  width: 96rpx;
  height: 95rpx;
  margin: 0 15rpx;
  box-shadow: 0px 0px 1px 0px rgba(0, 0, 0, 0.16);
  padding: 0 10rpx;
}
.sortBox text {
  font-family: PingFang SC, PingFang SC;
  font-weight: 400;
  font-size: 25rpx;
  color: #999999;
}
.titleBox {
  display: flex;
@@ -104,31 +117,92 @@
  height: 54rpx;
  background: #FF6C00;
  border-radius: 0rpx 9rpx 9rpx 0rpx;
}
.titleTextBox {
  margin-left: 5px;
  width: 150rpx;
  height: 37rpx;
}
.classification {
  width: 550rpx;
  /* margin-bottom: 50rpx; */
  margin: 0 30rpx;
}
.menuBox {
  display: flex;
  height: 75rpx;
}
.assembleContent {
  background-color: #F2F3F8;
}
/* .t-dropdown-menu__item--active {
  color: #0F1214;
} */
.t-dropdown-menu:after,
.t-dropdown-menu::after {
  height: 0px;
}
.t-dropdown-item__body,
.t-dropdown-item__footer,
.t-radio {
  background: #F6F6F6 !important;
}
.t-dropdown-item__body {
  padding: 40rpx 0;
}
.t-dropdown-menu__item {
  margin: 10rpx 10rpx 0 10rpx;
  border-radius: 40rpx;
  height: 68rpx;
  background: #F6F6F6 !important;
}
.t-dropdown-menu__item--active {
  height: 68rpx !important;
  background: #F6F6F6 !important;
  /* border-radius: 40rpx 40rpx 0 0; */
}
.t-dropdown-menu__item--active,
.t-radio__icon--checked,
.t-checkbox__icon--checked {
  color: #FF6C00 !important
}
.t-checkbox__icon--disabled {
  color: #c0c4cc !important;
}
.t-radio--block {
  padding: 20rpx !important;
}
.t-radio__border {
  height: 0 !important;
}
/* .t-button--primary {
  color: #fff !important;
  background-color: #FF6C00 !important;
}
.t-button--light {
  color: #fff !important;
  /* background-color: #FF6C00 !important; */
/* } */
/* .menu--t-dropdown-menu::after {
  background-color: var(--td-component-border, var(--td-gray-color-4, #fff)) !important;
}
 */
pages/bookServices/assort/index.js
@@ -6,14 +6,20 @@
   * 页面的初始数据
   */
  data: {
    placeholderstyle: 'font-size:28rpx',
    assortList: [],
    assortCheck: {
      name: '',
      code: '',
    },
    startList: [],
    startCheck: '',
    startCheck: {
      id: '',
      code: ''
    },
    bookList: [],
    loading: false,
    listLoding: false,
  },
@@ -21,8 +27,7 @@
   * 生命周期函数--监听页面加载
   */
  onLoad(options) {
    // this.getAssortList()
    console.log(options);
    this.getAssortList();
  },
  /**
@@ -34,7 +39,6 @@
   * 生命周期函数--监听页面显示
   */
  onShow() {
    this.getAssortList();
  },
  /**
@@ -64,6 +68,9 @@
  // 获取侧边栏列表
  getAssortList() {
    this.setData({
      loading: true
    })
    const query = {
      path: '*',
      filterList: [
@@ -83,6 +90,7 @@
      const list = res.datas.filter((item) => item.refCode != 'jsek_homepageBookService');
      this.setData({
        assortList: list,
        loading: false
      });
      this.setData({
        assortCheck: {
@@ -94,14 +102,14 @@
    });
  },
  // 侧边栏切换
  changeAssort(data) {
  changeAssort(e) {
    this.setData({
      assortCheck: {
        name: data.detail.label,
        code: data.detail.value,
        name: e.detail.label,
        code: e.detail.value,
      },
    });
    this.getStairList(data.detail.value);
    this.getStairList(e.detail.value);
  },
  // 获取一级分类
  getStairList(path) {
@@ -110,7 +118,12 @@
    });
    const query = {
      path,
      filterList: [],
      filterList: [
        {
          value: 'Normal',
          field: 'state'
        }
      ],
      queryType: '\\',
      searchList: [],
      size: '30',
@@ -119,23 +132,20 @@
      sort: { type: 'Asc', field: 'LinkOrder' },
    };
    app.MG.store.getStoreChannelList(query).then(async (res) => {
      // 一级分类选中
      // this.setData({
      //   startCheck: res.datas[0].refCode,
      // });
      // 获取二级分类
      for (let index = 0; index < res.datas.length; index++) {
        const item = res.datas[index];
        item.icon ? item.icon = getPublicImage(item.icon, 58, 72) : item.icon = item.icon
        item.children = await this.getSecondList(item);
      }
      console.log(res.datas);
      // 一级分类赋值
      this.setData({
        startList: res.datas,
      });
    });
    this.setData({
      listLoding: false,
        'startCheck.id': res.datas[0].id,
        'startCheck..code': ''
      });
    });
  },
@@ -145,7 +155,12 @@
    let datas;
    const query = {
      path,
      filterList: [],
      filterList: [
        {
          value: 'Normal',
          field: 'state'
        }
      ],
      queryType: '\\',
      searchList: [],
      size: '30',
@@ -167,7 +182,8 @@
  tabClick(e) {
    const data = e.currentTarget.dataset.tabdata;
    this.setData({
      startCheck: data.refCode,
      'startCheck.id': data.id,
      'startCheck.code': data.refCode,
    });
    console.log(data);
  },
@@ -176,12 +192,13 @@
    const tab = e.currentTarget.dataset.tabdata
    const stair = e.currentTarget.dataset.stair
    this.setData({
      startCheck: tab.refCode
      'startCheck.id': tab.id,
      'startCheck.code': tab.refCode
    })
    if (stair) {
      const secondCode = `${stair.pathLinks[0].linkPath}\\${stair.id}`;
      wx.navigateTo({
        url: `/packageBookService/pages/bookServices/list/index?assorName=${this.data.assortCheck.name}&assortCode=${this.data.assortCheck.code}&stairCode=${this.data.startCheck}&secondCode=${secondCode}`,
        url: `/packageBookService/pages/bookServices/list/index?assorName=${this.data.assortCheck.name}&assortCode=${this.data.assortCheck.code}&stairCode=${this.data.startCheck.code}&secondCode=${secondCode}`,
      });
    } else {
      wx.navigateTo({
@@ -192,7 +209,7 @@
  },
  navToSearchPage(e) {
    wx.navigateTo({
      url: `/packageBookService/pages/bookServices/list/index?assorName=${this.data.assortCheck.name}&assortCode=${this.data.assortCheck.code}&stairCode=${this.data.startCheck}&searchValue=${e.detail.value}`,
      url: `/packageBookService/pages/bookServices/list/index?assorName=${this.data.assortCheck.name}&assortCode=${this.data.assortCheck.code}&stairCode=${this.data.startCheck.code}&searchValue=${e.detail.value}`,
    });
  },
});
pages/bookServices/assort/index.wxml
@@ -2,45 +2,62 @@
<view class="page-header">
  <!-- 搜索框 -->
  <view class="search">
    <t-search t-class-input="t-search__input" t-class-input-container="t-search__input-container" placeholder="请输入关键词/书名/ISBN/作者" leftIcon="" bind:submit="navToSearchPage" placeholder-class="placeholder" placeholder-style="font-size:28rpx;">
    <t-search t-class-input="t-search__input" t-class-input-container="t-search__input-container" placeholder="请输入关键词/书名/ISBN/作者" leftIcon="" bind:submit="navToSearchPage" placeholder-style="{{placeholderstyle}}">
      <t-icon slot="left-icon" prefix="wr" name="search" size="40rpx" color="#bbb" />
    </t-search>
  </view>
</view>
<view class="page-container">
  <view class="side-bar-wrapper">
  <view class="side-bar-wrapper" wx:if="{{!loading}}">
    <view class="tab-left">
      <t-side-bar value="{{assortCheck.code}}" bind:change="changeAssort">
        <t-side-bar-item wx:for="{{assortList}}" wx:key="id" value="{{item.refCode}}" label="{{item.name}}" badge-props="{{item.badgeProps}}" />
      </t-side-bar>
    </view>
    <view class="side-bar-content">
    <view class="page-right">
      <!-- 右侧 -->
      <view class="side-bar-content" wx:if="{{!listLoding}}">
      <!-- 一级分类 -->
      <view class="tab-top">
        <scroll-view scroll-x="{{true}}" class="myScroll">
          <view wx:for="{{startList}}" wx:key="id" class="row {{startCheck == item.refCode ? 'tab-active' : ''}}" bind:tap="tabClick" data-tabData="{{item}}">{{item.name}}</view>
          <scroll-view scroll-x="{{true}}" class="myScroll" show-scrollbar="{{false}}">
            <view wx:for="{{startList}}" wx:key="id" class="row {{startCheck.id == item.id ? 'tab-active' : ''}}" bind:tap="tabClick" data-tabData="{{item}}">{{item.name}}</view>
        </scroll-view>
      </view>
      <!-- 内容 -->
      <scroll-view scroll-y="{{true}}" class="class-list" scroll-into-view="{{startCheck}}">
        <scroll-view scroll-y="{{true}}" class="class-list" scroll-into-view="{{ 'list' + startCheck.id}}">
        <view wx:if="{{listLoading}}">
          <t-loading theme="spinner" size="400rpx" loading="{{listLoading}}"></t-loading>
        </view>
        <view wx:for="{{startList}}" wx:for-item="item" wx:key="item.refCode" id="{{item.refCode}}" class="class-box" wx:if="{{!listLoading}}">
          <view wx:for="{{startList}}" wx:for-item="item" wx:key="item.id" id="{{ 'list' + item.id}}" class="class-box" wx:if="{{!listLoading}}">
          <view class="class-name">{{item.name}}</view>
          <view class="class-content">
            <view wx:for="{{item.children}}" wx:for-item="citem" wx:key="id" class="book-box" bind:tap="goPageList" data-stair="{{citem}}" data-tabData="{{item}}" wx:if="{{item.children.length}}">
                <view class="assort-img">
              <image src="{{citem.icon ? citem.icon : '/static/images/bookService/assort/book-img.png'}}" mode="heightFix" />
                </view>
              <view class="classify">{{citem.name}}</view>
            </view>
            <view wx:if="{{!item.children.length}}" class="book-box" bind:tap="goPageList" data-tabData="{{item}}">
                <view class="assort-img">
              <image src="{{item.icon ? item.icon : '/static/images/bookService/assort/book-img.png'}}" mode="heightFix"></image>
                </view>
              <text class="classify">全部</text>
            </view>
          </view>
        </view>
          <view class="bottom-box">
          </view>
      </scroll-view>
    </view>
      <!-- loading -->
      <view class="loading-box" wx:if="{{listLoding}}">
        <t-loading theme="circular" size="60rpx" class="wrapper" loading="{{listLoding}}" wx:if="{{listLoding}}" />
      </view>
    </view>
  </view>
  <view class="loading-box" wx:if="{{loading}}">
    <t-loading theme="circular" size="60rpx" class="wrapper" loading="{{loading}}" wx:if="{{loading}}" />
  </view>
</view>
pages/bookServices/assort/index.wxss
@@ -13,14 +13,12 @@
  left: 0;
  width: 100%;
  z-index: 99;
  font-size: 28rpx;
  --td-search-font-size: 28rpx;
}
.placeholder {
  font-size: 28rpx;
}
.page-header .t-search__input-container {
.page-header .search .t-search__input-container {
  font-size: 28rpx !important;
  border-radius: 15rpx !important;
  margin: 0 24rpx;
  height: 64rpx !important;
@@ -29,15 +27,17 @@
.page-container {
  padding: 120rpx 0 20rpx 0;
  width: 100%;
  height: 90%;
}
.side-bar-wrapper {
  height: 100%;
  background-color: #f2f3f8;
  display: flex;
}
.side-bar-content {
  width: 70%;
  width: 100%;
  padding: 0 20rpx;
}
@@ -88,19 +88,20 @@
.class-list {
  /* overflow-y: auto; */
  height: 72.5vh;
  width: 262px;
  height: calc(100vh - 326rpx);
  width: calc(100vw - 210rpx);
}
.class-box {
  background-color: #fff;
  margin-bottom: 10rpx;
  margin-bottom: 20rpx;
  padding: 10rpx 12rpx;
  border-radius: 12rpx;
  /* height: 60rpx; */
}
.class-name {
  padding: 20rpx 0 0 20rpx;
  font-size: 32rpx;
  font-weight: 700;
}
@@ -113,8 +114,11 @@
}
.book-box {
  width: 48%;
  margin: 0 10rpx 20rpx 0
  display: flex;
  flex-direction: column;
  align-items: center;
  width: 50%;
  margin-bottom: 26rpx;
}
.book-box:nth-child(2n) {
@@ -123,13 +127,39 @@
.book-box image {
  height: 142rpx;
  object-fit: contain;
  object-fit: contain !important;
}
.classify {
  max-width: 90%;
  white-space: nowrap;
  word-break: break-all;
  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
  overflow: hidden;
  text-overflow: ellipsis;
  font-size: 14px;
}
.assort-img {
  width: 116rpx;
  height: 142rpx;
  box-shadow: 0px 3px 6px 1px rgba(0, 0, 0, 0.16);
  margin-bottom: 20rpx;
}
.page-right {
  width: 100%;
}
.loading-box {
  width: 100%;
  height: 100%;
  display: flex;
  align-items: center;
  justify-content: center;
  --td-loading-color: #ff6c00;
}
.bottom-box {
  height: 40rpx;
}
pages/cart/index.js
@@ -20,7 +20,9 @@
    });
    this.shoppingCartGet();
  },
  onShow() {
    this.shoppingCartGet();
  },
  onDelete(e) {
    const item = e.currentTarget.dataset.item;
    app.MG.store.delShoppingCart({
@@ -125,5 +127,10 @@
        direction: 'column',
      });
    }
  },
  onLogin() {
    wx.navigateTo({
      url: '/pages/testLogin/index'
    });
  }
});
pages/cart/index.wxml
@@ -1,10 +1,14 @@
<view class="outsideContentBox">
  <!-- <checkbox-group bindchange="HandelItemChange"> -->
  <view wx:if="{{!shoppingCartData}}" class="noDataBox">
  <view wx:if="{{shoppingCartData.length <= 0}}" class="noDataBox">
    <t-empty icon="folder-open" description="暂无数据" font-size="80" />
  </view>
  <!-- <button bind:tap="onLogin"> 去登录</button> -->
  <t-swipe-cell wx:for="{{shoppingCartData}}" wx:key="index" wx:for-item="item" wx:for-index="index">
    <!-- <view class="contentBox"> -->
    <!-- <view class="contentCheckbox">
          <checkbox value="{{item.id}}" checked="{{item.checked}}"></checkbox>
@@ -42,6 +46,7 @@
    </view>
    <view slot="right" class="btn delete-btn" bind:tap="onDelete" data-item="{{item}}">删除</view>
  </t-swipe-cell>
</view>
<view class="bottomBox">
pages/cart/paymentPage/index.js
@@ -15,20 +15,13 @@
    purchasedIds: [],
    productList: [],
    payPrice: '',
    drawQrcodeText: 'https://www.baidu.com/',
    orderGoods: '',
    confirmBtn: { content: '确定', variant: 'base' },
    dialogKey: 'false',
  },
  /**
   * 生命周期函数--监听页面加载
   */
  onLoad(options) {
    const systInfo = wx.getSystemInfoSync();
    const menu = wx.getMenuButtonBoundingClientRect(); // 胶囊信息
    const navBarHeight = (menu.top - systInfo.statusBarHeight) * 2 + menu.height; // 导航栏高度
@@ -39,44 +32,7 @@
      selectedIds: options.selectedIds
    })
    console.log('接收到的订单号:', this.data.orderNumber);
    this.getOrderByOrderNum()
    drawQrcode({
      width: 200, // 必须,二维码宽度,与canvas的width保持一致
      height: 200, // 必须,二维码高度,与canvas的height保持一致
      canvasId: 'myQrcode',
      background: '#ffffff', //    非必须,二维码背景颜色,默认值白色
      foreground: '#2bb15e', // 非必须,二维码前景色,默认值黑色     '#000000'
      // ctx: wx.createCanvasContext('myQrcode'), // 非必须,绘图上下文,可通过 wx.createCanvasContext('canvasId') 获取,v1.0.0+版本支持
      text: this.data.drawQrcodeText,  // 必须,二维码内容
      // v1.0.0+版本支持在二维码上绘制图片
      image: {
        // imageResource: '../../images/icon.png', // 指定二维码小图标
        dx: 70,
        dy: 70,
        dWidth: 60,
        dHeight: 60
      }
    })
  },
  /**
@@ -171,32 +127,20 @@
      orderNum: this.data.orderGoods
    }
    app.MG.store.confirmOrder(query).then(res => {
      this.makeWeChatQrPayGet()
    })
    // 调取微信二维码支付
      console.log(res.orderNumber, 'res');
      if (res.orderNumber) {
        const resOrderNum = {
          orderNum: res.orderNumber,
        };
  },
  // 调取微信二维码支付
  makeWeChatQrPayGet() {
    let query = {
      orderNum: this.data.orderGoods
        // 用户未绑定微信 报500
        app.MG.store.makeWeChatPay(resOrderNum).then(payRes => {
          const payVal = JSON.parse(payRes);
          console.log(payVal);
        })
    }
    app.MG.store.makeWeChatQrPay(query).then((res) => {
      this.setData({
        drawQrcodeText: res
      // this.makeWeChatQrPayGet()
      })
      this.data.dialogKey = true
      console.log(this.data.drawQrcodeText, 'drawQrcodeText');
    })
    // 调取微信二维码支付
  },
  showDialog(e) {
    const { key } = e.currentTarget.dataset;
    this.setData({ [key]: true, dialogKey: key });
  },
  closeDialog() {
    const { dialogKey } = this.data;
    this.setData({ [dialogKey]: false });
  },
})
pages/cart/paymentPage/index.wxml
@@ -11,14 +11,7 @@
<view class="paymentPageBox">
  <view class="content">
    <t-dialog visible="{{showCloseBtn}}" close-btn bind:confirm="closeDialog" bind:cancel="closeDialog">
      <view slot="content" class="slotContent">
        <view class="myQrcodeBox">
          <canvas style="width: 200px; height: 200px;margin:0 auto" canvas-id="myQrcode"></canvas>
          <view class="myQrcodeTextBox">微信扫码支付</view>
        </view>
      </view>
    </t-dialog>
    <view class="shoppingCartList">
      <view class="cartList" wx:for="{{productList}}" wx:key="index" wx:for-item="item" wx:for-index="index">
        <view class="imageBox">
pages/home/home.js
@@ -533,6 +533,7 @@
    })
  }
  },
});
pages/home/home.wxml
@@ -1,3 +1,8 @@
<view style="text-align: center; color: #b9b9b9" wx:if="{{pageLoading}}">
  <t-loading theme="circular" size="40rpx" text="加载中..." inherit-color />
</view>
pages/retrievalPage/index.js
@@ -433,7 +433,6 @@
      datas5.forEach((items) => {
        items.subtitleName = items.subtitle + items.name
      })
      console.log(datas5, 'sadasd');
      this.setData({
@@ -490,10 +489,10 @@
  downloadData(event) {
    console.log(111);
    const item = event.currentTarget.dataset.item;
    // console.log(item.datas.freeFile.searchVal);
    const URL = 'http://182.92.203.7:3001/file/api/ApiDownload?md5=' + item.datas.freeFile.searchVal
    // console.log(item.datas.freeFile.Value);
    const URL = app.config.requestCtx + '/file/api/ApiDownload?md5=' + item.datas.freeFile.Value
    item.determine = false
    console.log(URL, 'URL');
    setTimeout(() => {
      if (URL) {
        item.determine = true
@@ -531,6 +530,23 @@
    })
  }
  },
  onBookExhibitionDetails(e) {
    console.log(e.currentTarget.dataset.item);
    const item = e.currentTarget.dataset.item
    wx.navigateTo({
      url: '/pages/bookExhibitionDetails/index?id=' + item.id + '&bookName=' + item.name // 假设跳转到详情页面,并传递了id参数
    });
  },
  //触底函数
  onReachBottom() {
    console.log("上拉加载....");
  },
  //上拉函数
  onPullDownRefresh() {
    console.log("下拉刷新...");
  },
})
pages/retrievalPage/index.json
@@ -4,7 +4,9 @@
    "t-icon": "tdesign-miniprogram/icon/icon",
    "t-search": "tdesign-miniprogram/search/search",
    "t-tabs": "tdesign-miniprogram/tabs/tabs",
    "t-tab-panel": "tdesign-miniprogram/tab-panel/tab-panel"
    "t-tab-panel": "tdesign-miniprogram/tab-panel/tab-panel",
    "t-empty": "tdesign-miniprogram/empty/empty"
  },
  "navigationStyle": "custom"
  "navigationStyle": "custom",
  "enablePullDownRefresh": true
}
pages/retrievalPage/index.wxml
@@ -20,6 +20,9 @@
<t-tabs defaultValue="{{0}}" bind:change="onTabsChange" bind:click="onTabsClick" t-class="custom-tabs" t-class-content="custom-panel">
  <t-tab-panel label="图书({{bookTotal}})" value="0">
    <view class="bookDataBox">
      <view wx:if="{{bookData.length <= 0}}" class="noDataBox">
        <t-empty icon="folder-open" description="暂无数据" />
      </view>
      <view class="bookDataForBox" wx:for="{{bookData}}" wx:key="index" wx:for-item="item" wx:for-index="index" data-item="{{item}}" bind:tap="onBook">
@@ -41,6 +44,9 @@
    <view class="listBox1">
      <view wx:if="{{courseData.length <= 0}}" class="noDataBox">
        <t-empty icon="folder-open" description="暂无数据" />
      </view>
      <view wx:if="{{courseData.length>0}}">
        <view wx:for="{{courseData}}" wx:for-item="item" wx:for-index="index" wx:key="index" bindtap="toList" data-info="{{item}}" class="listItemBox">
          <view class="listItem flex">
@@ -62,9 +68,7 @@
          </view>
        </view>
      </view>
      <view class="empyt" wx:else>
        <t-empty icon="folder-open" description="暂无数据" font-size="80" />
      </view>
    </view>
@@ -76,7 +80,9 @@
    <view class="bookDataBox">
      <view wx:if="{{digitalTextbooksData.length <= 0}}" class="noDataBox">
        <t-empty icon="folder-open" description="暂无数据" />
      </view>
      <view class="bookDataForBox" wx:for="{{digitalTextbooksData}}" wx:key="index" wx:for-item="item" wx:for-index="index">
        <view class="imageBox">
          <image src="{{item.icon}}" mode="" />
@@ -96,6 +102,9 @@
  </t-tab-panel>
  <t-tab-panel label="专题({{seminarTotal}})" value="3">
    <view class="listBox">
      <view wx:if="{{seminarData.length <= 0}}" class="noDataBox">
        <t-empty icon="folder-open" description="暂无数据" />
      </view>
      <view wx:for="{{seminarData}}" wx:for-item="item" wx:for-index="index" wx:key="index" bindtap="toList" data-info="{{item}}" class="listItemBox">
        <view class="listItem">
          <view class="specialSubject-img">
@@ -125,6 +134,9 @@
    <view class="outsideHigherBox">
      <view wx:if="{{bookFairData.length <= 0 }}" class="noDataBox">
        <t-empty icon="folder-open" description="暂无数据" />
      </view>
      <view class="higherBox" wx:for="{{bookFairData}}" wx:key="index" wx:for-item="item" wx:for-index="index">
        <view class="outsideHigherImageBox">
          <image class="higherImageBox" src="{{item.icon}}" mode="" />
@@ -150,6 +162,9 @@
  </t-tab-panel>
  <t-tab-panel label="书展({{biblioClassificationTotal}})" value="5">
    <view class="outside">
      <view wx:if="{{biblioClassificationData.length <= 0}}" class="noDataBox">
        <t-empty icon="folder-open" description="暂无数据" />
      </view>
      <view class="contentBox" wx:for="{{biblioClassificationData}}" wx:key="index" wx:for-item="item" wx:for-index="index" bindtap="onBookExhibitionDetails" data-item="{{item}}">
        <image class="bookFairImage" wx:if="{{item.icon}}" src="{{item.icon}}" mode="" />
        <image class="bookFairImage" wx:else="" src="/static/images/bookExhibitionList/banner.png" mode="" />
pages/retrievalPage/index.wxss
@@ -294,3 +294,11 @@
.t-tabs__track {
  background-color: #FF6C00 !important;
}
.noDataBox {
  /* display: flex;
  justify-content: center;
  align-items: center */
  margin: 0 auto;
  margin-top: 250rpx;
}
services/home/home.js
@@ -45,7 +45,7 @@
          text: '书目下载',
          key: 6,
          icon: '/static/images/home/shumuxiazai@2x.png',
          url: '',
          url: '/pages/bibliographyList/index',
        },
        {
          text: '教师认证',
static/images/bookService/detail/square.png