yiming
2024-06-13 afa97d5f4e0ed176a556d9fe04d4655e005e6991
数字课程
11个文件已修改
60个文件已添加
886 ■■■■ 已修改文件
app.json 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/digitalCourses/digitalCoursesDetails/index.js 66 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/digitalCourses/digitalCoursesDetails/index.json 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/digitalCourses/digitalCoursesDetails/index.wxml 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/digitalCourses/digitalCoursesDetails/index.wxss 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/digitalCourses/index.js 204 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/digitalCourses/index.json 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/digitalCourses/index.wxml 68 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/digitalCourses/index.wxss 149 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/digitalTextbooks/digitalTextbooksDetails/index.js 39 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/digitalTextbooks/digitalTextbooksDetails/index.wxml 48 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/digitalTextbooks/digitalTextbooksDetails/index.wxss 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/digitalTextbooks/index.js 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/digitalTextbooks/index.json 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/digitalTextbooks/index.wxml 113 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/digitalTextbooks/index.wxss 147 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
services/home/home.js 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
static/images/digitalCourses/zhuantitaolun@2x.png 补丁 | 查看 | 原始文档 | blame | 历史
static/images/digitalTextbooks/Link.png 补丁 | 查看 | 原始文档 | blame | 历史
static/images/digitalTextbooks/Link@3x.png 补丁 | 查看 | 原始文档 | blame | 历史
static/images/digitalTextbooks/Suggestion.png 补丁 | 查看 | 原始文档 | blame | 历史
static/images/digitalTextbooks/Suggestion@3x.png 补丁 | 查看 | 原始文档 | blame | 历史
static/images/digitalTextbooks/jibenxinxi .png 补丁 | 查看 | 原始文档 | blame | 历史
static/images/digitalTextbooks/jibenxinxi @3x.png 补丁 | 查看 | 原始文档 | blame | 历史
static/images/digitalTextbooks/jibenxinxi-t-click.png 补丁 | 查看 | 原始文档 | blame | 历史
static/images/digitalTextbooks/jibenxinxi-t-click@2x.png 补丁 | 查看 | 原始文档 | blame | 历史
static/images/digitalTextbooks/jibenxinxi-t-click@3x.png 补丁 | 查看 | 原始文档 | blame | 历史
static/images/digitalTextbooks/jibenxinxi-t.png 补丁 | 查看 | 原始文档 | blame | 历史
static/images/digitalTextbooks/jibenxinxi-t@2x.png 补丁 | 查看 | 原始文档 | blame | 历史
static/images/digitalTextbooks/jibenxinxi-t@3x.png 补丁 | 查看 | 原始文档 | blame | 历史
static/images/digitalTextbooks/link-t-click.png 补丁 | 查看 | 原始文档 | blame | 历史
static/images/digitalTextbooks/link-t-click@2x.png 补丁 | 查看 | 原始文档 | blame | 历史
static/images/digitalTextbooks/link-t-click@3x.png 补丁 | 查看 | 原始文档 | blame | 历史
static/images/digitalTextbooks/link-t.png 补丁 | 查看 | 原始文档 | blame | 历史
static/images/digitalTextbooks/link-t@3x.png 补丁 | 查看 | 原始文档 | blame | 历史
static/images/digitalTextbooks/mulu-t-click.png 补丁 | 查看 | 原始文档 | blame | 历史
static/images/digitalTextbooks/mulu-t-click@2x.png 补丁 | 查看 | 原始文档 | blame | 历史
static/images/digitalTextbooks/mulu-t-click@3x.png 补丁 | 查看 | 原始文档 | blame | 历史
static/images/digitalTextbooks/mulu-t.png 补丁 | 查看 | 原始文档 | blame | 历史
static/images/digitalTextbooks/mulu-t@2x.png 补丁 | 查看 | 原始文档 | blame | 历史
static/images/digitalTextbooks/mulu-t@3x.png 补丁 | 查看 | 原始文档 | blame | 历史
static/images/digitalTextbooks/mulu.png 补丁 | 查看 | 原始文档 | blame | 历史
static/images/digitalTextbooks/mulu@3x.png 补丁 | 查看 | 原始文档 | blame | 历史
static/images/digitalTextbooks/shidu.png 补丁 | 查看 | 原始文档 | blame | 历史
static/images/digitalTextbooks/shidu@3x.png 补丁 | 查看 | 原始文档 | blame | 历史
static/images/digitalTextbooks/square.png 补丁 | 查看 | 原始文档 | blame | 历史
static/images/digitalTextbooks/square@3x.png 补丁 | 查看 | 原始文档 | blame | 历史
static/images/digitalTextbooks/wodeshoucang.png 补丁 | 查看 | 原始文档 | blame | 历史
static/images/digitalTextbooks/wodeshoucang@3x.png 补丁 | 查看 | 原始文档 | blame | 历史
static/images/digitalTextbooks/zhengshu-t-click.png 补丁 | 查看 | 原始文档 | blame | 历史
static/images/digitalTextbooks/zhengshu-t-click@2x.png 补丁 | 查看 | 原始文档 | blame | 历史
static/images/digitalTextbooks/zhengshu-t-click@3x.png 补丁 | 查看 | 原始文档 | blame | 历史
static/images/digitalTextbooks/zhengshu-t-g.png 补丁 | 查看 | 原始文档 | blame | 历史
static/images/digitalTextbooks/zhengshu-t-g@2x.png 补丁 | 查看 | 原始文档 | blame | 历史
static/images/digitalTextbooks/zhengshu-t-g@3x.png 补丁 | 查看 | 原始文档 | blame | 历史
static/images/digitalTextbooks/zhengshu.png 补丁 | 查看 | 原始文档 | blame | 历史
static/images/digitalTextbooks/zhengshu@3x.png 补丁 | 查看 | 原始文档 | blame | 历史
static/images/digitalTextbooks/zhengshushenqing-bottom.png 补丁 | 查看 | 原始文档 | blame | 历史
static/images/digitalTextbooks/zhengshushenqing-bottom@2x.png 补丁 | 查看 | 原始文档 | blame | 历史
static/images/digitalTextbooks/zhengshushenqing-bottom@3x.png 补丁 | 查看 | 原始文档 | blame | 历史
static/images/digitalTextbooks/zuozhejianjie(1).png 补丁 | 查看 | 原始文档 | blame | 历史
static/images/digitalTextbooks/zuozhejianjie-t-click.png 补丁 | 查看 | 原始文档 | blame | 历史
static/images/digitalTextbooks/zuozhejianjie-t-click@2x.png 补丁 | 查看 | 原始文档 | blame | 历史
static/images/digitalTextbooks/zuozhejianjie-t-click@3x.png 补丁 | 查看 | 原始文档 | blame | 历史
static/images/digitalTextbooks/zuozhejianjie-t.png 补丁 | 查看 | 原始文档 | blame | 历史
static/images/digitalTextbooks/zuozhejianjie-t@3x.png 补丁 | 查看 | 原始文档 | blame | 历史
static/images/digitalTextbooks/zuozhejianjie.png 补丁 | 查看 | 原始文档 | blame | 历史
static/images/digitalTextbooks/zuozhejianjie@2x(1).png 补丁 | 查看 | 原始文档 | blame | 历史
static/images/digitalTextbooks/zuozhejianjie@2x.png 补丁 | 查看 | 原始文档 | blame | 历史
static/images/digitalTextbooks/zuozhejianjie@3x(1).png 补丁 | 查看 | 原始文档 | blame | 历史
static/images/digitalTextbooks/zuozhejianjie@3x.png 补丁 | 查看 | 原始文档 | blame | 历史
app.json
@@ -18,7 +18,9 @@
    "pages/bookExhibitionList/select/select",
    "pages/digitalTextbooks/index",
    "pages/digitalTextbooks/digitalTextbooksDetails/index",
    "pages/digitalTextbooks/digitalTextbooksDetails/components/webView/index"
    "pages/digitalTextbooks/digitalTextbooksDetails/components/webView/index",
    "pages/digitalCourses/index",
    "pages/digitalCourses/digitalCoursesDetails/index"
  ],
  "subPackages": [
    {
pages/digitalCourses/digitalCoursesDetails/index.js
New file
@@ -0,0 +1,66 @@
// pages/digitalCourses/digitalCoursesDetails/index.js
Page({
  /**
   * 页面的初始数据
   */
  data: {
  },
  /**
   * 生命周期函数--监听页面加载
   */
  onLoad(options) {
    console.log(options);
  },
  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady() {
  },
  /**
   * 生命周期函数--监听页面显示
   */
  onShow() {
  },
  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide() {
  },
  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload() {
  },
  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh() {
  },
  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom() {
  },
  /**
   * 用户点击右上角分享
   */
  onShareAppMessage() {
  }
})
pages/digitalCourses/digitalCoursesDetails/index.json
New file
@@ -0,0 +1,3 @@
{
  "usingComponents": {}
}
pages/digitalCourses/digitalCoursesDetails/index.wxml
New file
@@ -0,0 +1,2 @@
<!--pages/digitalCourses/digitalCoursesDetails/index.wxml-->
<text>数字课程详情页</text>
pages/digitalCourses/digitalCoursesDetails/index.wxss
New file
@@ -0,0 +1 @@
/* pages/digitalCourses/digitalCoursesDetails/index.wxss */
pages/digitalCourses/index.js
New file
@@ -0,0 +1,204 @@
// pages/digitalCourses/index.js
const app = getApp()
Page({
  /**
   * 页面的初始数据
   */
  data: {
    barHeight: "",
    navBarHeight: "",
    tabPanelstyle: 'display:flex;justify-content:center;align-items:center;',
    tabList: [],
    courseList: [],
    searchValue: '',
    activeItem: null
  },
  /**
   * 生命周期函数--监听页面加载
   */
  onLoad(options) {
    const systInfo = wx.getSystemInfoSync();
    const menu = wx.getMenuButtonBoundingClientRect(); // 胶囊信息
    const navBarHeight =
      (menu.top - systInfo.statusBarHeight) * 2 + menu.height; // 导航栏高度
    this.setData({
      barHeight: systInfo.statusBarHeight,
      navBarHeight: navBarHeight,
    });
    this.getCourseTypeListList()
  },
  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady() {
  },
  /**
   * 生命周期函数--监听页面显示
   */
  onShow() {
  },
  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide() {
  },
  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload() {
  },
  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh() {
  },
  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom() {
  },
  /**
   * 用户点击右上角分享
   */
  onShareAppMessage() {
  },
  onTabsChange(event) {
    const value = event.detail.value
    this.getCourseList(this.data.tabList[value])
  },
  goBack() {
    wx.navigateBack();
  },
  getCourseTypeListList() {
    const data = {
      path: '*',
      filterList: [{
        value: 'Normal',
        field: 'state'
      }],
      queryType: '\\',
      searchList: [],
      size: '20',
      start: '0',
      storeRefCode: app.config.digitalCourses,
      sort: {
        type: 'Asc',
        field: 'LinkOrder'
      }
    }
    app.MG.store.getStoreChannelList(data).then((res) => {
      // 去除数组最后一个元素
      const newData = res.datas.slice(0, res.datas.length - 1)
      this.setData({
        tabList: newData,
        activeItem: newData[0]
      })
      this.getCourseList(newData[0])
    })
  },
  getCourseList(item) {
    let searchObj = {}
    // let sort = {}
    // // 搜索框
    if (this.data.searchValue) {
      searchObj = {
        'Name*': this.data.searchValue.trim()
        // '||subtitle*': searchInputValue.value.trim()
      }
    }
    // if (timeSort.value) {
    //     sort = {
    //         CreateDate: timeSort.value || 'Desc'
    //     }
    // } else {
    //     sort = {
    //         ViewCount: nameSort.value || 'Desc'
    //     }
    //     // 组合的写法 要查询的字段:升序和降序
    //     // Name: "Desc"
    //     //一般的排序传法
    //     // type: "Asc",
    //     // field: "CreateDate",
    // }
    // courseList.value = [];
    const obj = {
      storeInfo: app.config.goodsStore,
      path: item.pathList + '\\' + item.id,
      coverSize: {
        width: 260
      },
      paging: {
        start: 0,
        size: 99
      },
      filterList: [{
        value: 'Normal',
        field: 'state'
      }],
      // sort: sort,
      fields: {
        courseLeader: [],
        affiliatedUnit: [],
        publishingUnit: [],
        classHours: [],
        ViewCount: [],
        ...searchObj
      }
    }
    app.MG.store.getProductList(obj).then((res) => {
      console.log(res, '7895')
      res.datas.forEach(item => {
        item.price = item.price.toFixed(2)
      })
      this.setData({
        courseList: res.datas
      })
      console.log(this.data.courseList);
    })
  },
  searchBook() {
    console.log(this.data.searchValue);
    this.getCourseList(this.data.activeItem)
  },
  courseDetail(e) {
    console.log(e);
    const item = e.currentTarget.dataset.item
    wx.navigateTo({
      url: '/pages/digitalCourses/digitalCoursesDetails/index?id=' + item.id,
    })
  }
})
pages/digitalCourses/index.json
New file
@@ -0,0 +1,11 @@
{
  "usingComponents": {
    "t-icon": "tdesign-miniprogram/icon/icon",
    "t-search": "tdesign-miniprogram/search/search",
    "t-empty": "tdesign-miniprogram/empty/empty",
    "t-tabs": "tdesign-miniprogram/tabs/tabs",
    "t-tab-panel": "tdesign-miniprogram/tab-panel/tab-panel"
  },
  "navigationStyle": "custom",
  "disableScroll": false
}
pages/digitalCourses/index.wxml
New file
@@ -0,0 +1,68 @@
<view style="width: 100%; height: {{barHeight}}px;"></view>
<view class="nacigationBar" style="width: 70%; height: {{navBarHeight}}px;">
  <view>
    <t-icon name="chevron-left" size="30" data-name="{{item}}" bind:click="goBack" />
  </view>
  <t-search model:value="{{searchValue}}" shape="round" placeholder="请输入关键词/书名/ISBN/作者" class="navBar-search" style="width: 464rpx" bind:submit="searchBook" />
</view>
<t-tabs defaultValue="{{0}}" bind:change="onTabsChange" t-class="custom-tabs" t-class-content="custom-panel">
  <t-tab-panel wx:for="{{tabList}}" wx:key="index" wx:for-item="item" wx:for-index="index" label="{{item.name}}" value="{{index}}" style="{{tabPanelstyle}}">
    <view class="contentBox">
      <view class="titleBox">
        <view class="frameBox"></view>
        <view class="titleTextBox">
          <image src="/static/images/digitalCourses/zhuantitaolun@2x.png" mode="aspectFit" />
          <!-- <view>数字课程列表</view> -->
        </view>
      </view>
      <view class="ExternalInformationBox">
        <view class="informationBox" wx:for="{{courseList}}" wx:key="index" wx:for-item="item" data-item="{{item}}" bind:tap="courseDetail">
          <view class="book-img">
            <image src="{{item.icon}}" mode="aspectFit" />
          </view>
          <view class="book-name">
            {{item.name}}
          </view>
          <view class="author">
            <view>
              {{ item.courseLeader}}
            </view>
            <view>
              {{ item.classHours}}课时
            </view>
          </view>
          <view class="money">
            <view wx:if="{{item.price != 0}}">¥{{item.price }}</view>
            <view wx:else> 免费</view>
            <view>
              <t-icon name="cart" size="16" />
            </view>
          </view>
        </view>
      </view>
      <view wx:if="{{courseList.length <= 0}}" class="noDataBox">
        <t-empty icon="folder-open" description="暂无数据" font-size="80" />
      </view>
    </view>
  </t-tab-panel>
</t-tabs>
pages/digitalCourses/index.wxss
New file
@@ -0,0 +1,149 @@
/* pages/digitalCourses/index.wxss */
image {
  width: 100%;
  height: 100%;
}
.nacigationBar {
  display: flex;
  align-items: center;
  --td-search-font-size: 28rpx;
  margin-bottom: 30rpx;
}
.nacigationBar .t-icon-base {
  font-size: 38rpx;
}
.custom-tabs {
  margin-bottom: 32rpx;
}
.custom-panel {
  /* height: ; */
  height: calc(100vh - 300rpx);
  color: var(--td-text-color-primary);
}
.t-tabs__item--active {
  color: #FF6C00 !important;
}
.t-tabs__track {
  background-color: #FF6C00 !important;
  /* height: var(--td-tab-track-thickness, 0rpx) !important; */
}
.t-tabs .t-tabs__item--active {
  background-repeat: no-repeat;
  /* background-size: 100% 100%;
  background-position: 100% 100%; */
  background-image: url(https://jsek.bnuic.com/home/image/click-icon.png);
  background-position: 85% center;
  background-size: 20% 50%;
  /* 将背景图片位置设置为靠右 */
}
.contentBox {
  width: 100%;
  height: 100%;
  background-color: #f2f3f7;
}
.titleBox {
  display: flex;
  align-items: center;
  margin: 10px;
  margin-left: 0;
  padding-top: 30rpx;
}
.frameBox {
  width: 7rpx;
  height: 54rpx;
  background: #FF6C00;
  border-radius: 0rpx 9rpx 9rpx 0rpx;
}
.titleTextBox {
  margin-left: 10px;
  width: 180rpx;
  height: 36rpx;
  /*宽 3.7   高1 */
}
.titleTextBox image {
  width: 100%;
  height: 100%;
  image-rendering: -webkit-optimize-contrast;
}
.informationBox {
  width: 340rpx;
  height: 470rpx;
  border-radius: 9rpx 9rpx 9rpx 9rpx;
  background-color: #fff;
  margin-bottom: 40rpx;
  box-shadow: 0px 3px 6px 1px rgba(0, 0, 0, 0.16);
}
.book-img {
  width: 100%;
  height: 250rpx;
  margin: 0 auto;
  /* box-shadow: 0px 3px 6px 1px rgba(0, 0, 0, 0.16); */
}
.book-name {
  margin: 15rpx 30rpx;
  color: #333;
  font-size: 28rpx;
  font-weight: 700;
  word-break: break-all;
  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
  overflow: hidden;
  text-align: left;
}
.author {
  margin: 0 30rpx;
  display: flex;
  flex-direction: row;
  justify-content: space-between;
  margin-bottom: 15rpx;
  font-weight: bold;
}
.money {
  margin: 0 30rpx;
  display: flex;
  flex-direction: row;
  justify-content: space-between;
  color: #ff6c00;
}
.ExternalInformationBox {
  display: flex;
  justify-content: space-between;
  flex-wrap: wrap;
  padding: 0 15rpx;
  margin-top: 40rpx;
}
.noDataBox {
  width: 100%;
  /* margin-top: 200rpx; */
  height: 620rpx;
  display: flex;
  justify-content: center;
  align-items: center;
}
pages/digitalTextbooks/digitalTextbooksDetails/index.js
@@ -28,7 +28,7 @@
      name: "/static/images/digitalTextbooks/jibenxinxi-t@2x.png",
    },
    briefIconClick: {
      name: "/static/images/digitalTextbooks/jibenxinxi @2x.png",
      name: "/static/images/digitalTextbooks/jibenxinxi-t-click@3x.png",
    },
    eBookIcon: {
      name: "/static/images/digitalTextbooks/zuozhejianjie-t@2x.png",
@@ -40,26 +40,26 @@
      name: "/static/images/digitalTextbooks/zuozhejianjie-t@2x.png",
    },
    teachResourcesClickIcon: {
      name: "/static/images/digitalTextbooks/zuozhejianjie@2x.png",
      name: "/static/images/digitalTextbooks/zuozhejianjie-t-click@3x.png",
    },
    learnResourceIcon: {
      name: "/static/images/digitalTextbooks/shengshu-t@2x.png",
    },
    learnResourceClickIcon: {
      name: "/static/images/digitalTextbooks/zhengshu@2x.png",
      name: "/static/images/digitalTextbooks/zhengshu-t-click@3x.png",
    },
    testResourceIocn: {
      name: "/static/images/digitalTextbooks/link-t@2x.png",
      name: "/static/images/digitalTextbooks/link-t@3x.png",
    },
    testResourceClickIocn: {
      name: "/static/images/digitalTextbooks/Link@2x.png",
      name: "/static/images/digitalTextbooks/link-t-click@3x.png",
    },
    catalogue: {
      name: "/static/images/digitalTextbooks/mulu@2x.png",
      name: "/static/images/digitalTextbooks/mulu-t@3x.png",
    },
    catalogueClickIcon: {
      name: "/static/images/digitalTextbooks/mulu@2x.png",
      name: "/static/images/digitalTextbooks/mulu-t-click@3x.png",
    },
  },
@@ -68,17 +68,11 @@
   * 生命周期函数--监听页面加载
   */
  onLoad(options) {
    console.log(options.id);
    console.log(options);
    this.setData({
      digitalTextId: options.id
    })
    this.digitalTextbooksDetailsGet(this.data.digitalTextId)
  },
  // 格式化日期
  // 格式化日期
@@ -254,6 +248,7 @@
      });
      // this.onCe()
    })
  },
@@ -323,12 +318,22 @@
  },
  onCorrelationBook(e) {
    const item = e.currentTarget.dataset.item
    console.log(item);
    this.digitalTextbooksDetailsGet(item.id)
    // const event = {
    //   detail: {
    //     value: "brief"
    //   }
    // }
    // this.onTabsChange(event)
    // this.digitalTextbooksDetailsGet(item.id)
    this.onLoad({
      id: item.id
    })
  },
  // 图书添加购物车
  async addBookShopcCar() {
pages/digitalTextbooks/digitalTextbooksDetails/index.wxml
@@ -27,7 +27,7 @@
            <view class="content">
              <view class="styleCssBox">
                <view style="width: 150rpx;"> 作者: </view>
                <view>{{ digitalsData.author}}</view>
                <view class="authorBox">{{ digitalsData.author}}</view>
              </view>
              <view class="styleCssBox">
                <view style="width: 150rpx;">ISBN:</view>
@@ -83,10 +83,13 @@
            </view>
            <view class="basic"> 基本信息</view>
          </view>
          <view style="margin: 30rpx; margin-bottom: 130rpx;">
          <view style="margin: 30rpx; margin-bottom: 130rpx;" wx:if="{{digitalsData.content}}">
            <rich-text nodes="{{digitalsData.content}}" style="{{richStyle}}"></rich-text>
          </view>
          <view class="noDataBox" wx:else>
            <t-empty icon="folder-open" description="暂无数据" font-size="80" />
          </view>
        </t-tab-panel>
        <t-tab-panel icon="{{tabValue == 'jsek_cloudLearning' ? learnResourceClickIcon : learnResourceIcon}}" value="jsek_cloudLearning" label="证书信息" style="{{tabPanelstyle}}">
          <view class="rubricBox">
@@ -102,13 +105,19 @@
          </view>
          <view class="certificateChart">
          <!-- <view class="certificateChart">
            <view class="chart">
              <image src="" mode="" />
            </view>
            <view class="chart">
              <image src="" mode="" />
            </view>
          </view> -->
          <view class="noDataBox">
            <t-empty icon="folder-open" description="暂无数据" font-size="80" />
          </view>
        </t-tab-panel>
        <t-tab-panel icon="{{tabValue == 'jsek_teachingResources' ? teachResourcesClickIcon : teachResourcesIcon}}" value="jsek_teachingResources" label="作者信息" style="{{tabPanelstyle}}">
@@ -118,29 +127,50 @@
            </view>
            <view class="basic"> 作者信息</view>
          </view>
          <view style="margin: 30rpx; margin-bottom: 130rpx;">
          <view style="margin: 30rpx; margin-bottom: 130rpx;" wx:if="{{digitalsData.authorIntroduction}}">
            <rich-text nodes="{{digitalsData.authorIntroduction}}" style="{{richStyle}}"></rich-text>
          </view>
          <view class="noDataBox" wx:else>
            <t-empty icon="folder-open" description="暂无数据" font-size="80" />
          </view>
        </t-tab-panel>
        <t-tab-panel icon="{{tabValue == 'catalogue' ? catalogueClickIcon : catalogue}}" value="catalogue" label="目录" style="{{tabPanelstyle}}">
          <view class="rubricBox">
            <view class="rubricimgBox">
              <image src="/static/images/bookService/detail/author.png" mode="" />
              <image src="/static/images/digitalTextbooks/mulu@3x.png" mode="" />
            </view>
            <view class="basic"> 目录</view>
          </view>
          <view style="margin: 30rpx; margin-bottom: 130rpx;">
          <view style="margin: 30rpx; margin-bottom: 130rpx;" wx:if="{{digitalsData.catalogue}}">
            <rich-text nodes="{{digitalsData.catalogue}}" style="{{richStyle}}"></rich-text>
          </view>
          <view class="noDataBox" wx:else>
            <t-empty icon="folder-open" description="暂无数据" font-size="80" />
          </view>
        </t-tab-panel>
        <t-tab-panel icon="{{tabValue == 'questionBank' ? testResourceClickIocn : testResourceIocn}}" value="questionBank" label="相关教材" style="{{tabPanelstyle}}">
          <view class="rubricBox">
            <view class="rubricimgBox">
              <image src="/static/images/digitalTextbooks/Link@3x.png" mode="" />
            </view>
            <view class="basic"> 相关教材</view>
          </view>
          <view class="noDataBox" wx:if="{{relatedBookData.length <= 0}}">
            <t-empty icon="folder-open" description="暂无数据" font-size="80" />
          <view class="correlation">
          </view>
          <view class="correlation" wx:else>
            <view wx:for="{{relatedBookData}}" wx:key="index" wx:for-item="item" wx:for-index="index" data-item="{{item}}" bind:tap="onCorrelationBook">
              <view class="correlationImage">
@@ -152,7 +182,11 @@
              <view class="correlationAuthor">{{digitalsData.author}}</view>
            </view>
          </view>
        </t-tab-panel>
      </t-tabs>
pages/digitalTextbooks/digitalTextbooksDetails/index.wxss
@@ -60,9 +60,14 @@
}
.headerText {
  width: 430rpx;
  font-weight: bold;
  font-size: 36rpx;
  color: #000000;
  overflow: hidden;
  white-space: nowrap;
  text-overflow: ellipsis;
  -o-text-overflow: ellipsis;
}
.certificate {
@@ -413,4 +418,20 @@
  font-size: 22rpx;
  color: #333333;
  margin: 15rpx 0;
}
.noDataBox {
  width: 100%;
  margin-top: 50rpx;
  display: flex;
  justify-content: center;
  align-items: center;
}
.authorBox {
  width: 200rpx;
  overflow: hidden;
  white-space: nowrap;
  text-overflow: ellipsis;
  -o-text-overflow: ellipsis;
}
pages/digitalTextbooks/index.js
@@ -134,8 +134,8 @@
  },
  selectTab(e) {
    // console.log(index);
    let index = e.currentTarget.dataset.index
    console.log(e);
    let index = e.detail.value
    console.log(index);
    this.setData({
      selectedIndex: index
pages/digitalTextbooks/index.json
@@ -2,7 +2,9 @@
  "usingComponents": {
    "t-icon": "tdesign-miniprogram/icon/icon",
    "t-search": "tdesign-miniprogram/search/search",
    "t-empty": "tdesign-miniprogram/empty/empty"
    "t-empty": "tdesign-miniprogram/empty/empty",
    "t-tabs": "tdesign-miniprogram/tabs/tabs",
    "t-tab-panel": "tdesign-miniprogram/tab-panel/tab-panel"
  },
  "navigationStyle": "custom",
  "disableScroll": false
pages/digitalTextbooks/index.wxml
@@ -6,66 +6,77 @@
<view wx:if="{{!loading}}">
  <view class="fixed-header">
    <view style="width: 100%; height: {{barHeight}}px;"></view>
    <view class="nacigationBar" style="width: 70%; height: {{navBarHeight}}px;">
      <view>
        <t-icon name="chevron-left" size="30" data-name="{{item}}" bind:click="goBack" />
      </view>
      <t-search model:value="{{searchValue}}" shape="round" placeholder="请输入关键词/书名/ISBN/作者" class="navBar-search" style="width: 464rpx" bind:submit="searchBook" />
  <view style="width: 100%; height: {{barHeight}}px;"></view>
  <view class="nacigationBar" style="width: 70%; height: {{navBarHeight}}px;">
    <view>
      <t-icon name="chevron-left" size="30" data-name="{{item}}" bind:click="goBack" />
    </view>
    <view class="tabBox">
      <view wx:for="{{tabList}}" wx:key="index" wx:for-item="item" wx:for-index="index" class="{{selectedIndex == index? 'nameBox' :''}}" data-index="{{index}}" bind:tap="selectTab">
        <view>
          {{item.name}}
        </view>
        <view style="margin-top: 20rpx; " class="{{selectedIndex == index? 'bottomLineBox' :''}}"></view>
      </view>
    </view>
    <t-search model:value="{{searchValue}}" shape="round" placeholder="请输入关键词/书名/ISBN/作者" class="navBar-search" style="width: 464rpx" bind:submit="searchBook" />
  </view>
  <view class="contentBox">
  <t-tabs defaultValue="{{0}}" bind:change="selectTab" t-class="custom-tabs" t-class-content="custom-panel">
    <t-tab-panel wx:for="{{tabList}}" wx:key="index" wx:for-item="item" wx:for-index="index" label="{{item.name}}" value="{{index}}" style="{{tabPanelstyle}}">
    <view class="titleBox">
      <view class="frameBox"></view>
      <view class="titleTextBox">
        <!-- <image src="/static/images/bookExhibitionList/zhuantitaolun.png" mode="aspectFit" /> -->
      <view class="contentBox">
        <view>数字教材列表</view>
      </view>
    </view>
    <view class="bookContentBox">
      <view class="external" wx:for="{{digitalTextbooksData}}" wx:key="index" wx:for-item="item" wx:for-index="index" data-item="{{item}}" bind:tap="jumpDetails">
        <view class="amountClick">
          <t-icon name="browse" size="15" data-name="{{item}}" bind:click="goBack" />
          <view style="margin-left: 5rpx;">{{item.viewCount}}</view>
        </view>
        <view class="imageBox">
          <image src="{{item.icon ? item.icon : '/static/images/default-book-img.png'}}" mode="" />
        </view>
        <view class="bookName">{{item.name}}</view>
        <view class="information">
          <view wx:if="{{item.author}}" class="book-author">
            {{ item.author }}
        <view class="titleBox">
          <view class="frameBox"></view>
          <view class="titleTextBox">
            <!-- <image src="/static/images/digitalCourses/zhuantitaolun@2x.png" mode="aspectFit" /> -->
            <view>数字课程列表</view>
          </view>
          <view wx:else>-</view>
          <view wx:if="{{item.price == 0}}" class="price"> 免费</view>
          <view wx:else class="price">¥{{ item.price }}</view>
        </view>
        <scroll-view scroll-y="{{true}}" class="outsideContentBox" bindscrolltolower="onScrollToLower">
          <view class="bookContentBox">
            <view class="external" wx:for="{{digitalTextbooksData}}" wx:key="index" wx:for-item="item" wx:for-index="index" data-item="{{item}}" bind:tap="jumpDetails">
              <view class="amountClick">
                <t-icon name="browse" size="15" data-name="{{item}}" bind:click="goBack" />
                <view style="margin-left: 5rpx;">{{item.viewCount}}</view>
              </view>
              <view class="imageBox">
                <image src="{{item.icon ? item.icon : '/static/images/default-book-img.png'}}" mode="" />
              </view>
              <view class="bookName">{{item.name}}</view>
              <view class="information">
                <view wx:if="{{item.author}}" class="book-author">
                  {{ item.author }}
                </view>
                <view wx:else>-</view>
                <view wx:if="{{item.price == 0}}" class="price"> 免费</view>
                <view wx:else class="price">¥{{ item.price }}</view>
              </view>
            </view>
            <view wx:if="{{!digitalTextbooksData.length }}" class="noData">
              <t-empty icon="folder-open" description="暂无数据" />
            </view>
          </view>
        </scroll-view>
      </view>
      <view wx:if="{{!digitalTextbooksData.length }}" class="noData">
        <t-empty icon="folder-open" description="暂无数据" />
      </view>
    </view>
  </view>
    </t-tab-panel>
  </t-tabs>
</view>
pages/digitalTextbooks/index.wxss
@@ -1,6 +1,15 @@
/* pages/digitalTextbooks/index.wxss */
@import "./index.skeleton.wxss";
/* pages/digitalCourses/index.wxss */
image {
  width: 100%;
  height: 100%;
}
.nacigationBar {
  display: flex;
  align-items: center;
@@ -13,51 +22,40 @@
  font-size: 38rpx;
}
.t-search__input-box {
  height: var(--td-search-height, 70rpx) !important;
.custom-tabs {
  margin-bottom: 32rpx;
}
.t-icon {
  font-family: t !important;
.custom-panel {
  /* height: ; */
  height: calc(100vh - 300rpx);
  color: var(--td-text-color-primary);
}
.tabBox {
  display: flex;
  flex-direction: row;
  justify-content: space-around;
  width: 750rpx;
  overflow-x: auto;
  /* 添加水平滚动条 */
  white-space: nowrap;
  /* 保持子元素在一行显示 */
.t-tabs__item--active {
  color: #FF6C00 !important;
}
.tabBox .nameBox {
  color: #FF6C00;
  height: 70rpx;
  /* border-bottom: 1px solid #FF6C00; */
.t-tabs__track {
  background-color: #FF6C00 !important;
  /* height: var(--td-tab-track-thickness, 0rpx) !important; */
}
.bottomLineBox {
  height: 5rpx;
  width: 50rpx;
  background-color: #FF6C00;
  margin: 0 auto;
}
page {
  background-color: #F2F3F8;
.t-tabs .t-tabs__item--active {
  background-repeat: no-repeat;
  /* background-size: 100% 100%;
  background-position: 100% 100%; */
  background-image: url(https://jsek.bnuic.com/home/image/click-icon.png);
  background-position: 85% center;
  background-size: 20% 50%;
  /* 将背景图片位置设置为靠右 */
}
.contentBox {
  background-color: #F2F3F8;
  width: 100%;
  height: 100%;
  margin-top: 268rpx;
  background-color: #f2f3f7;
}
.titleBox {
@@ -77,8 +75,8 @@
.titleTextBox {
  margin-left: 15px;
  min-width: 180rpx;
  min-height: 36rpx;
  width: 180rpx;
  height: 36rpx;
  /*宽 3.7   高1 */
}
@@ -87,6 +85,72 @@
  height: 100%;
  image-rendering: -webkit-optimize-contrast;
}
.informationBox {
  width: 340rpx;
  height: 470rpx;
  border-radius: 9rpx 9rpx 9rpx 9rpx;
  background-color: #fff;
  margin-bottom: 40rpx;
  box-shadow: 0px 3px 6px 1px rgba(0, 0, 0, 0.16);
}
.book-img {
  width: 100%;
  height: 250rpx;
  margin: 0 auto;
  /* box-shadow: 0px 3px 6px 1px rgba(0, 0, 0, 0.16); */
}
.book-name {
  margin: 15rpx 30rpx;
  color: #333;
  font-size: 28rpx;
  font-weight: 700;
  word-break: break-all;
  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
  overflow: hidden;
  text-align: left;
}
.author {
  margin: 0 30rpx;
  display: flex;
  flex-direction: row;
  justify-content: space-between;
  margin-bottom: 15rpx;
  font-weight: bold;
}
.money {
  margin: 0 30rpx;
  display: flex;
  flex-direction: row;
  justify-content: space-between;
  color: #ff6c00;
}
.ExternalInformationBox {
  display: flex;
  justify-content: space-between;
  flex-wrap: wrap;
  padding: 0 15rpx;
  margin-top: 40rpx;
}
.noDataBox {
  width: 100%;
  /* margin-top: 200rpx; */
  height: 620rpx;
  display: flex;
  justify-content: center;
  align-items: center;
}
.bookContentBox {
  display: flex;
@@ -138,7 +202,7 @@
  margin: 0 20rpx;
  height: 75rpx;
  color: #333;
  width: 100%;
  font-size: 28rpx;
  font-weight: 700;
  word-break: break-all;
@@ -189,4 +253,15 @@
  z-index: 999;
  /* 确保盒子在页面其他元素的上方 */
  /* 其他样式,如padding、box-shadow等 */
}
.outsideContentBox {
  /* padding: 30rpx; */
  background: #F2F3F8;
  border-radius: 18rpx 18rpx 18rpx 18rpx;
  /* padding-bottom: 325rpx; */
  height: calc(100vh - 450rpx);
  /* width: calc(100vw - 60rpx); */
}
services/home/home.js
@@ -21,7 +21,7 @@
          text: '数字课程',
          key: 2,
          icon: '/static/images/home/shuzikecheng@2x.png',
          url: '',
          url: '/pages/digitalCourses/index',
        },
static/images/digitalCourses/zhuantitaolun@2x.png
static/images/digitalTextbooks/Link.png
static/images/digitalTextbooks/Link@3x.png
static/images/digitalTextbooks/Suggestion.png
static/images/digitalTextbooks/Suggestion@3x.png
static/images/digitalTextbooks/jibenxinxi .png
static/images/digitalTextbooks/jibenxinxi @3x.png
static/images/digitalTextbooks/jibenxinxi-t-click.png
static/images/digitalTextbooks/jibenxinxi-t-click@2x.png
static/images/digitalTextbooks/jibenxinxi-t-click@3x.png
static/images/digitalTextbooks/jibenxinxi-t.png
static/images/digitalTextbooks/jibenxinxi-t@2x.png

static/images/digitalTextbooks/jibenxinxi-t@3x.png
static/images/digitalTextbooks/link-t-click.png
static/images/digitalTextbooks/link-t-click@2x.png
static/images/digitalTextbooks/link-t-click@3x.png
static/images/digitalTextbooks/link-t.png
static/images/digitalTextbooks/link-t@3x.png
static/images/digitalTextbooks/mulu-t-click.png
static/images/digitalTextbooks/mulu-t-click@2x.png
static/images/digitalTextbooks/mulu-t-click@3x.png
static/images/digitalTextbooks/mulu-t.png
static/images/digitalTextbooks/mulu-t@2x.png
static/images/digitalTextbooks/mulu-t@3x.png
static/images/digitalTextbooks/mulu.png
static/images/digitalTextbooks/mulu@3x.png
static/images/digitalTextbooks/shidu.png
static/images/digitalTextbooks/shidu@3x.png
static/images/digitalTextbooks/square.png
static/images/digitalTextbooks/square@3x.png
static/images/digitalTextbooks/wodeshoucang.png
static/images/digitalTextbooks/wodeshoucang@3x.png
static/images/digitalTextbooks/zhengshu-t-click.png
static/images/digitalTextbooks/zhengshu-t-click@2x.png
static/images/digitalTextbooks/zhengshu-t-click@3x.png
static/images/digitalTextbooks/zhengshu-t-g.png
static/images/digitalTextbooks/zhengshu-t-g@2x.png
static/images/digitalTextbooks/zhengshu-t-g@3x.png
static/images/digitalTextbooks/zhengshu.png
static/images/digitalTextbooks/zhengshu@3x.png
static/images/digitalTextbooks/zhengshushenqing-bottom.png
static/images/digitalTextbooks/zhengshushenqing-bottom@2x.png
static/images/digitalTextbooks/zhengshushenqing-bottom@3x.png
static/images/digitalTextbooks/zuozhejianjie(1).png
static/images/digitalTextbooks/zuozhejianjie-t-click.png
static/images/digitalTextbooks/zuozhejianjie-t-click@2x.png
static/images/digitalTextbooks/zuozhejianjie-t-click@3x.png
static/images/digitalTextbooks/zuozhejianjie-t.png
static/images/digitalTextbooks/zuozhejianjie-t@3x.png
static/images/digitalTextbooks/zuozhejianjie.png
static/images/digitalTextbooks/zuozhejianjie@2x(1).png
static/images/digitalTextbooks/zuozhejianjie@2x.png

static/images/digitalTextbooks/zuozhejianjie@3x(1).png
static/images/digitalTextbooks/zuozhejianjie@3x.png