yiming
2024-06-17 bbd3feaa30f2d980eb55c17f8cb492eae4372b5b
专题讨论
12个文件已修改
8个文件已添加
771 ■■■■ 已修改文件
app.json 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
assets/js/config.js 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
packageBookService/pages/bookServices/detail/index.js 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/digitalCourses/index.js 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/digitalCourses/index.wxml 65 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/digitalCourses/index.wxss 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/digitalTextbooks/digitalTextbooksDetails/index.js 18 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/digitalTextbooks/digitalTextbooksDetails/index.json 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/digitalTextbooks/digitalTextbooksDetails/index.wxml 36 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/digitalTextbooks/digitalTextbooksDetails/index.wxss 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/digitalTextbooks/index.wxss 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/specialDiscussion/index.js 315 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/specialDiscussion/index.json 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/specialDiscussion/index.wxml 75 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/specialDiscussion/index.wxss 136 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/specialDiscussion/webView/index.js 69 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/specialDiscussion/webView/index.json 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/specialDiscussion/webView/index.wxml 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/specialDiscussion/webView/index.wxss 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
services/home/home.js 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
app.json
@@ -20,7 +20,9 @@
    "pages/digitalTextbooks/digitalTextbooksDetails/index",
    "pages/digitalTextbooks/digitalTextbooksDetails/components/webView/index",
    "pages/digitalCourses/index",
    "pages/digitalCourses/digitalCoursesDetails/index"
    "pages/digitalCourses/digitalCoursesDetails/index",
    "pages/specialDiscussion/index",
    "pages/specialDiscussion/webView/index"
  ],
  "subPackages": [
    {
assets/js/config.js
@@ -1,7 +1,7 @@
export const requestCtx = "http://182.92.203.7:3001"; // 请求地址
export const appId = 27;
// export const requestCtx = "https://jsek.bnuic.com"; // 请求地址
// export const appId = 3;
// export const requestCtx = "http://182.92.203.7:3001"; // 请求地址
// export const appId = 27;
export const requestCtx = "https://jsek.bnuic.com"; // 请求地址
export const appId = 3;
// export const epubUrl = "http://182.92.203.7:3007/epubReadMobile/";
export const epubUrl = "https://jsek.bnuic.com/epubReadMobile/#/";
export const pdfUrl = "http://182.92.203.7:3007/pdfRead/";
packageBookService/pages/bookServices/detail/index.js
@@ -640,6 +640,8 @@
      this.setData({
        showIndex: '1'
      })
    console.log(this.data.bookDetail.icon, '0111111');
    console.log(this.data.bookDetail.name, '45688');
  },
  // 跳转网店
  goShop(e) {
pages/digitalCourses/index.js
@@ -84,7 +84,6 @@
  },
  onTabsChange(event) {
    const value = event.detail.value
    this.getCourseList(this.data.tabList[value])
  },
pages/digitalCourses/index.wxml
@@ -25,47 +25,42 @@
        </view>
      </view>
      <scroll-view scroll-y="{{true}}" class="outsideContentBox" bindscrolltolower="onScrollToLower">
        <view class="ExternalInformationBox">
          <view class="informationBox" wx:for="{{courseList}}" wx:key="index" wx:for-item="item" data-item="{{item}}" bind:tap="courseDetail">
      <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="viewCount">
            {{item.viewCount }}次点击
          </view>
          <view class="author">
            <view>
              {{ item.courseLeader}}
            <view class="book-img">
              <image src="{{item.icon}}" mode="aspectFit" />
            </view>
            <view>
              {{ item.classHours}}课时
            <view class="book-name">
              {{item.name}}
            </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 class="viewCount">
              {{item.viewCount }}次点击
            </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>
      <view wx:if="{{courseList.length <= 0}}" class="noDataBox">
        <t-empty icon="folder-open" description="暂无数据" font-size="80" />
      </view>
        <view wx:if="{{courseList.length <= 0}}" class="noDataBox">
          <t-empty icon="folder-open" description="暂无数据" font-size="80" />
        </view>
      </scroll-view>
    </view>
  </t-tab-panel>
</t-tabs>
pages/digitalCourses/index.wxss
@@ -36,7 +36,6 @@
.t-tabs__track {
  background-color: #FF6C00 !important;
  /* height: var(--td-tab-track-thickness, 0rpx) !important; */
}
.t-tabs .t-tabs__item--active {
@@ -157,4 +156,15 @@
  font-weight: 400;
  font-size: 22rpx;
  color: #AEAFC0;
}
.outsideContentBox {
  /* padding: 30rpx; */
  background: #F2F3F8;
  border-radius: 18rpx 18rpx 18rpx 18rpx;
  /* padding-bottom: 325rpx; */
  height: calc(100vh - 450rpx);
  /* width: calc(100vw - 60rpx); */
}
pages/digitalTextbooks/digitalTextbooksDetails/index.js
@@ -637,12 +637,20 @@
        })
      }
    }
  },
  // 我要建议
  suggestBtn() {
    // 检查登录状态
    const token = wx.getStorageSync(app.config.tokenKey);
    console.log(465);
  }
    const child = this.selectComponent("#suggest-component");
    // if (token)
    //   // child.showDialog();
    //   this.setData({
    //     showIndex: '1'
    //   })
  },
})
pages/digitalTextbooks/digitalTextbooksDetails/index.json
@@ -5,6 +5,7 @@
    "t-tab-panel": "tdesign-miniprogram/tab-panel/tab-panel",
    "t-image": "tdesign-miniprogram/image/image",
    "t-toast": "tdesign-miniprogram/toast/toast",
    "t-empty": "tdesign-miniprogram/empty/empty"
    "t-empty": "tdesign-miniprogram/empty/empty",
    "suggest": "/packageBookService/pages/bookServices/detail/components/suggest/suggest"
  }
}
pages/digitalTextbooks/digitalTextbooksDetails/index.wxml
@@ -45,7 +45,7 @@
        </view>
        <view class="certificate">
          <view class="proposal">
          <view class="proposal" bind:tap="suggestBtn">
            <view class="suggestion">
              <image src="/static/images/digitalTextbooks/Suggestion@2x.png" mode="" />
            </view>
@@ -163,7 +163,7 @@
          <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 style="margin-bottom: 30rpx;" wx:for="{{relatedBookData}}" wx:key="index" wx:for-item="item" wx:for-index="index" data-item="{{item}}" bind:tap="onCorrelationBook">
              <view class="correlationImage">
                <image src="{{item.icon}}" mode="" />
@@ -172,11 +172,7 @@
              <view class="correlationName">{{item.name}}</view>
              <view class="correlationAuthor">{{digitalsData.author}}</view>
            </view>
          </view>
        </t-tab-panel>
      </t-tabs>
@@ -184,34 +180,10 @@
    <!-- 我要建议弹窗 -->
    <suggest class="suggest-component" id="suggest-component" bookIcon="{{bookDetail.icon}}" bookName="{{bookDetail.name}}"></suggest>
    <view class="box-bottom">
      <view style="border-top:  1rpx solid #DDDDDD;  display: flex;">
        <view class="collection" bind:tap="setCoolect">
          <view class="collectionImage">
            <image wx:if="{{!digitalsData.isFavourite}}" src="/static/images/digitalTextbooks/wodeshoucang@2x.png" mode="" />
pages/digitalTextbooks/digitalTextbooksDetails/index.wxss
@@ -180,8 +180,10 @@
.correlation {
  display: flex;
  flex-direction: row;
  justify-content: space-around;
  margin: 30rpx;
  justify-content: space-between;
  flex-wrap: wrap;
  margin: 30rpx 50rpx;
  margin-bottom: 160rpx;
}
.correlationName {
@@ -192,7 +194,6 @@
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
  overflow: hidden;
  font-weight: bold;
  font-size: 25rpx;
  color: #333333;
pages/digitalTextbooks/index.wxss
@@ -202,7 +202,6 @@
  margin: 0 20rpx;
  height: 75rpx;
  color: #333;
  font-size: 28rpx;
  font-weight: 700;
  word-break: break-all;
@@ -221,6 +220,7 @@
  overflow: hidden;
  text-overflow: ellipsis;
  text-align: left;
  width: 150rpx;
}
.price {
pages/specialDiscussion/index.js
New file
@@ -0,0 +1,315 @@
// pages/specialDiscussion/index.js
const app = getApp()
Page({
  /**
   * 页面的初始数据
   */
  data: {
    barHeight: "",
    navBarHeight: "",
    tabList: [{
      name: '即将直播',
      amount: ''
    }, {
      name: '直播回放',
      amount: 20
    }],
    tabIndex: 0,
    specialSubjectList: [],
    now: new Date(), // 假设这是当前时间
    formattedDate: '', // 用于存储格式化后的日期时间字符串
    batList: [],
    specialDiscussionList: [],
    searchValue: '',
    batListValue: ''
  },
  /**
   * 生命周期函数--监听页面加载
   */
  onLoad(options) {
    this.formatDateTime()
    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.ceShiList()
    this.getCourseTypeListList()
  },
  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady() {
  },
  /**
   * 生命周期函数--监听页面显示
   */
  onShow() {
  },
  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide() {
  },
  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload() {
  },
  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh() {
  },
  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom() {
  },
  /**
   * 用户点击右上角分享
   */
  onShareAppMessage() {
  },
  goBack() {
    wx.navigateBack();
  },
  onTabsChange(event) {
    console.log(event.detail.value);
    const value = event.detail.value
    this.setData({
      batListValue: value
    })
    this.specialDiscussionGet(this.data.batList[value])
  },
  onTabsTap(event) {
    const index = event.currentTarget.dataset.index
    console.log(index);
    this.setData({
      tabIndex: index
    })
    this.specialDiscussionGet(this.data.batList[0])
  },
  // 获取图片文字列表
  ceShiList() {
    let searchObj = {}
    if (this.data.searchValue) {
      searchObj = {
        'Name*': this.data.searchValue.trim()
        // '||subtitle*': searchInputValue.value.trim()
      }
    }
    app.MG.store
      .getProductList({
        storeInfo: 'jsek_seminar',
        path: '*',
        queryType: '*',
        paging: {
          start: 0,
          size: 99
        },
        fields: {
          content: [],
          subtitle: [],
          backgroundSelection: [],
          author: [],
          viewCount: [],
          startTime: [], //开播时间
          // "liveTime>=": [formattedDate.value], //直播时间
          liveTime: [],
          lecturer: [],
          position: [],
          jsek_link: [],
          ...searchObj
        }
      })
      .then((res) => {
        console.log(res, '000');
        const specialSubjectList = []
        res.datas.forEach((item) => {
          item.price = item.price.toFixed(2)
          const date1 = new Date(this.data.formattedDate)
          const date2 = new Date(item.liveTime)
          // 比较两个日期
          if (date1 > date2) {
            // console.log('直播结束,请看回放')
          } else if (date1 < date2) {
            // console.log('直播还没开始,请看即将开播')
            specialSubjectList.push(item)
            console.log(specialSubjectList);
          } else {
            // console.log('两个时间相同,')
          }
        })
        this.setData({
          specialSubjectList,
          "tabList[0].amount": specialSubjectList.length
        })
      })
  },
  // 格式化日期时间的方法
  formatDateTime: function () {
    let date = new Date();
    const year = date.getFullYear();
    const month = (date.getMonth() + 1).toString().padStart(2, '0');
    const day = date.getDate().toString().padStart(2, '0');
    const hour = date.getHours().toString().padStart(2, '0');
    const minute = date.getMinutes().toString().padStart(2, '0');
    const second = date.getSeconds().toString().padStart(2, '0');
    const formattedDate = `${year}-${month}-${day} ${hour}:${minute}:${second}`;
    this.setData({
      formattedDate: formattedDate
    });
  },
  onLink(e) {
    const item = e.currentTarget.dataset.item
    console.log(item.jsek_link);
    wx.navigateTo({
      url: '/pages/specialDiscussion/webView/index?link=' + item.jsek_link
    });
  },
  async getCourseTypeListList() {
    const quer = {
      path: '*',
      filterList: [{
        value: 'Normal',
        field: 'state'
      }],
      queryType: '\\',
      searchList: [],
      size: '20',
      start: '0',
      storeRefCode: app.config.seminar,
      sort: {
        type: 'Asc',
        field: 'LinkOrder'
      },
    }
    const data = await app.MG.store.getStoreChannelList(quer)
    let dataList = data.datas
    // data.datas.forEach(item => {
    //   if (item.refCode != "jsek_homepageSeminar") {
    //     console.log(item);
    //     dataList.push(item)
    //   }
    // })
    this.setData({
      batList: dataList
    })
    this.specialDiscussionGet(data.datas[0])
  },
  specialDiscussionGet(item) {
    let searchObj = {}
    if (this.data.searchValue) {
      searchObj = {
        'Name*': this.data.searchValue.trim()
        // '||subtitle*': searchInputValue.value.trim()
      }
    }
    const data = []
    app.MG.store
      .getProductList({
        storeInfo: 'jsek_seminar',
        path: item.refCode,
        queryType: '*',
        paging: {
          start: 0,
          size: 99
        },
        fields: {
          content: [],
          subtitle: [],
          backgroundSelection: [],
          author: [],
          viewCount: [],
          startTime: [],
          liveTime: [],
          lecturer: [],
          position: [],
          jsek_link: [],
          ...searchObj
        }
      })
      .then((res) => {
        res.datas.forEach((item) => {
          const date1 = new Date(this.data.formattedDate)
          const date2 = new Date(item.liveTime)
          // 比较两个日期
          if (date1 > date2) {
            // console.log('直播结束,请看回放')
            data.push(item)
          } else if (date1 < date2) {
            // console.log('直播还没开始,请看即将开播')
          } else {
            // console.log('两个时间相同,')
          }
        })
        this.setData({
          specialDiscussionList: data,
          "tabList[1].amount": data.length
        })
        console.log(this.data.specialDiscussionList);
      })
  },
  searchBook() {
    console.log(this.data.searchValue);
    this.ceShiList()
    this.specialDiscussionGet(this.data.batList[this.data.batListValue])
  },
})
pages/specialDiscussion/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/specialDiscussion/index.wxml
New file
@@ -0,0 +1,75 @@
<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="请输入关键词/书名/作者" class="navBar-search" style="width: 464rpx" bind:submit="searchBook" />
</view>
<view class="tabsBox">
  <view wx:for="{{tabList}}" wx:key="index" wx:for-item="item" data-index="{{index}}" bind:tap="onTabsTap" class="{{ index == tabIndex  ?' tabsSelect ' : 'tabsNameBox'}}">
    <view class="{{ index == tabIndex  ?' tabsNameSelect ' : 'tabsName'}}">{{item.name}} ({{item.amount}})</view>
    <view class="{{index == tabIndex ? 'selectLine' :''}}"></view>
  </view>
</view>
<view wx:if="{{tabIndex == 0}}">
  <view wx:for="{{specialSubjectList}}" wx:key="index" wx:for-item="item" data-item="{{item}}" bind:tap="onLink" class="displayContent">
    <view class="imageBox">
      <image src="{{item.icon}}" mode="aspectFit" />
    </view>
    <view class="tltieBox">
      <view class="nameTltieBox">
        {{item.name}}
      </view>
      <view class="directSeeding">
        直播时间:{{ item.liveTime }}
      </view>
      <view class="position">
        <view style="color: #333;"> {{item.lecturer }}</view>
        <view wx:if="{{item.price == 0}}" style="color: #FF6C00;">免费</view>
        <view wx:else="" style="color: #FF6C00;">¥{{item.price}}</view>
      </view>
    </view>
  </view>
</view>
<view wx:else>
  <t-tabs defaultValue="{{0}}" bind:change="onTabsChange" t-class="custom-tabs" t-class-content="custom-panel">
    <t-tab-panel wx:for="{{batList}}" wx:key="index" wx:for-item="item" data-item="{{item}}" label="{{item.name}}" value="{{index}}" style="{{tabPanelstyle}}">
      <view wx:for="{{specialDiscussionList}}" wx:key="index" wx:for-item="item" data-item="{{item}}" bind:tap="onLink" class="displayContent">
        <view class="imageBox">
          <image src="{{item.icon}}" mode="aspectFit" />
        </view>
        <view class="tltieBox">
          <view class="nameTltieBox">
            {{item.name}}
          </view>
          <view class="directSeeding">
            直播时间:{{ item.liveTime }}
          </view>
          <view class="position">
            <view style="color: #333;"> {{item.lecturer }}</view>
            <view wx:if="{{item.price == 0}}" style="color: #FF6C00;">免费</view>
            <view wx:else="" style="color: #FF6C00;">¥{{item.price}}</view>
          </view>
        </view>
      </view>
    </t-tab-panel>
  </t-tabs>
</view>
pages/specialDiscussion/index.wxss
New file
@@ -0,0 +1,136 @@
/* pages/specialDiscussion/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;
}
.t-tabs__item--active {
  color: #FF6C00 !important;
}
.t-tabs__track {
  background-color: #FF6C00 !important;
}
.tabsBox {
  width: 100%;
  display: flex;
  justify-content: flex-start;
  border-bottom: 1rpx solid #ccc;
}
.tabsNameBox {
  margin: 0 50rpx;
}
.tabsSelect {
  margin: 0 50rpx;
  color: #FF6C00;
}
.tabsNameSelect {
  min-width: 170rpx;
  height: 40rpx;
  background-repeat: no-repeat;
  background-image: url(https://jsek.bnuic.com/home/image/click-icon.png);
  background-position: 75% center;
  background-size: 40% 60%;
  /* 将背景图片位置设置为靠右 */
  font-weight: bold;
  font-size: 29rpx;
  color: #FF6C00;
}
.tabsName {
  min-width: 170rpx;
  height: 40rpx;
  font-weight: 400;
  font-size: 29rpx;
  color: #333333;
}
.selectLine {
  width: 40rpx;
  height: 6rpx;
  background-color: #FF6C00;
  border-radius: 8px;
  margin: 0 auto;
  margin-top: 20rpx;
  margin-bottom: 1rpx;
}
.displayContent {
  width: 692rpx;
  height: 250rpx;
  background: #FFFFFF;
  box-shadow: 0rpx 0rpx 18rpx 2rpx rgba(0, 0, 0, 0.08);
  border-radius: 9rpx;
  margin: 0 auto;
  margin-top: 50rpx;
  display: flex;
  flex-direction: row;
}
.imageBox {
  width: 464rpx;
  height: 100%;
  background: #EAEAEA;
  border-radius: 9rpx 0rpx 0rpx 9rpx;
  object-fit: contain;
}
.tltieBox {
  margin: 15rpx;
}
.nameTltieBox {
  width: 290rpx;
  min-height: 76rpx;
  font-weight: bold;
  font-size: 29rpx;
  color: #333333;
  display: -webkit-box;
  -webkit-box-orient: vertical;
  -webkit-line-clamp: 2;
  overflow: hidden;
  text-overflow: ellipsis;
}
.directSeeding {
  font-weight: 400;
  font-size: 25rpx;
  color: #9D9D9D;
  margin: 20rpx 0;
}
.position {
  display: flex;
  justify-content: space-between;
  font-weight: 400;
  font-size: 25rpx;
}
.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: right center;
  background-size: 30% 50%;
  /* 将背景图片位置设置为靠右 */
}
pages/specialDiscussion/webView/index.js
New file
@@ -0,0 +1,69 @@
// pages/specialDiscussion/webView/index.js
Page({
  /**
   * 页面的初始数据
   */
  data: {
      link:''
  },
  /**
   * 生命周期函数--监听页面加载
   */
  onLoad(options) {
    console.log(options);
    this.setData({
      link:options.link
    })
  },
  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady() {
  },
  /**
   * 生命周期函数--监听页面显示
   */
  onShow() {
  },
  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide() {
  },
  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload() {
  },
  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh() {
  },
  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom() {
  },
  /**
   * 用户点击右上角分享
   */
  onShareAppMessage() {
  }
})
pages/specialDiscussion/webView/index.json
New file
@@ -0,0 +1,3 @@
{
  "usingComponents": {}
}
pages/specialDiscussion/webView/index.wxml
New file
@@ -0,0 +1 @@
<web-view src="{{link}}"></web-view>
pages/specialDiscussion/webView/index.wxss
New file
@@ -0,0 +1 @@
/* pages/specialDiscussion/webView/index.wxss */
services/home/home.js
@@ -43,7 +43,7 @@
          text: '专题讨论',
          key: 4,
          icon: '/static/images/home/zhuantitaolun@2x.png',
          url: '',
          url: '/pages/specialDiscussion/index',
        },
        {
          text: '线上书展',