litian
2024-08-27 366de5b4636679392a1e3d2984fc23bd5eaa5ac3
wenti
30个文件已修改
4个文件已添加
1341 ■■■■ 已修改文件
app.json 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
assets/js/middleGround/api/app.js 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
packageBookService/pages/bookServices/detail/components/tree/index.js 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
packageBookService/pages/bookServices/list/index.js 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
packageBookService/pages/bookServices/list/index.wxml 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
packageBookService/pages/components/webView/index.js 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
packageDomain/pages/publickBookForm/index.js 313 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
packageDomain/pages/publickBookForm/index.json 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
packageDomain/pages/publickBookForm/index.wxml 103 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
packageDomain/pages/publickBookForm/index.wxss 84 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
packageDomain/pages/resourceDetails/myVideo/index.wxml 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
packagePersonal/pages/publishBooks/index.js 143 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
packagePersonal/pages/publishBooks/index.json 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
packagePersonal/pages/publishBooks/index.wxml 72 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
packagePersonal/pages/publishBooks/index.wxss 122 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/bookExhibitionList/index.js 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/bookExhibitionList/index.wxml 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/bookExhibitionList/index.wxss 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/bookServices/assort/index.wxml 89 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/cart/index.js 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/digitalCourses/index.js 19 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/digitalCourses/index.wxml 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/digitalTextbooks/index.wxml 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/home/home.js 60 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/home/home.skeleton.wxml 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/home/home.wxml 69 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/personalCenter/index.js 71 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/personalCenter/index.json 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/personalCenter/index.wxml 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/personalCenter/index.wxss 59 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/retrievalPage/index.js 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/specialDiscussion/index.js 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/test/testCover.js 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
services/home/home.js 17 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app.json
@@ -37,7 +37,8 @@
        "pages/resourceDetails/document/index",
        "pages/sampleBookList/index",
        "pages/sampleBookList/applicationForm/index",
        "pages/teacherCertification/index"
        "pages/teacherCertification/index",
        "pages/publickBookForm/index"
      ],
      "plugins": {
        "t-video": {
assets/js/middleGround/api/app.js
@@ -52,6 +52,22 @@
      data
    });
  },
  // 新建用户行为
  creatUserBehavior(data) {
    return request({
      url: '/app/api/NewUserBehavior',
      method: 'post',
      data
    })
  },
  // 获取用户行为记录
  getUserBehaviorList(data) {
    return request({
      url: '/app/api/GetUserBehaviorList',
      method: 'post',
      data
    })
  }
};
export default appApi;
packageBookService/pages/bookServices/detail/components/tree/index.js
@@ -169,7 +169,7 @@
          item.learnSelectType == "audio"
        ) {
          url = "/packageDomain/pages/resourceDetails/myAudio/index";
        } else if (item.selectType == "picture" || item.selectType == "zip") {
        } else if (item.selectType == "picture") {
          url = "/packageDomain/pages/resourceDetails/document/index";
        }
        if (
packageBookService/pages/bookServices/list/index.js
@@ -411,6 +411,7 @@
        "||author*": this.data.searchValue,
        "||isbn*": this.data.searchValue,
        "||seriesName*": this.data.searchValue,
        "||projectLeader*": this.data.searchValue
      };
    }
    const query = {
packageBookService/pages/bookServices/list/index.wxml
@@ -9,7 +9,7 @@
    <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" />
    <t-search model:value="{{searchValue}}" shape="round" placeholder="请输入关键词/书名/ISBN/作者/项目负责人" class="navBar-search" style="width: 464rpx" bind:submit="searchBook" />
  </view>
  <view class="bookServices-list">
packageBookService/pages/components/webView/index.js
@@ -21,6 +21,19 @@
   */
  onLoad(options) {
    console.log(options)
    const token = wx.getStorageSync(app.config.tokenKey)
    if (!token) {
      loginInfo(app, (data) => {
        // 如果不是第一次登录,会执行回调
        if (data) {
          // 登录成功,自动记录token和用户信息,并返回true
        } else {
          // 出现错误,返回false
        }
      })
    } else {
      // 如果是第一次登录,会跳转至绑定用户信息页面,填写完用户信息后进行登录并储存token和用户信息,结束后跳转回当前页面(携带页面参数)
    }
    if (options && options.link) {
      this.setData({
        src: decodeURIComponent(options.link),
packageDomain/pages/publickBookForm/index.js
New file
@@ -0,0 +1,313 @@
// packageDomain/pages/publickBookForm/index.js
const app = getApp();
import tool from "../../../assets/js/toolClass.js";
import {
  loginInfo
} from '../../../assets/js/login';
Page({
  /**
   * 页面的初始数据
   */
  data: {
    teacherInfo: {
      topicName: '', //选题名称
      declarer: '', //申报人
      declarationUnit: '', //"申报单位"
      disciplineMajor: '', //学科专业
      authorBasicInformation: '', //"作者基本情况
      phone: '', //联系电话
      email: '', //联系邮箱
      targetReaders: '', //读者对象
      topicFeatures: '', //选题特色
      topicImpactAndExpected: '', //选题学术影响与预期社会效益
      topicProgress: '', //选题的进度安排
      marketAnalysis: '', //市场分析
      marketingAndPromotionPlan: '', //营销与宣传推广计划
      digitalResourceDevelopmentPlan: '', //配套数字资源开发方案
      otherExistingIssues: '' //存在的其他问题
    },
    worksInfo: [],
    keyboardHeight: 0,
    autosize: {
      maxHeight: 120,
      minHeight: 80,
    },
    phoneError: false,
    emailError: false,
    loading: false
  },
  /**
   * 生命周期函数--监听页面加载
   */
  onLoad() {
    const token = wx.getStorageSync(app.config.tokenKey)
    if (!token) {
      loginInfo(app, (data) => {
        if (data) {}
      })
    } else {}
    this.getType()
  },
  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady() {
  },
  /**
   * 生命周期函数--监听页面显示
   */
  onShow() {
  },
  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide() {
  },
  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload() {
  },
  //获取字段
  getType() {
    app.MG.resource.getCmsTypeByRefCode({
      refCodes: ['jsek_publicationApplication']
    }).then((res) => {
      this.setData({
        worksInfo: res[0].cmsTypeLinks[0].children,
      })
    })
  },
  onTopicNameInput(e) {
    this.setData({
      "teacherInfo.topicName": e.detail.value,
    });
  },
  onDeclarerInput(e) {
    this.setData({
      "teacherInfo.declarer": e.detail.value,
    });
  },
  ondeclarationUnitInput(e) {
    this.setData({
      "teacherInfo.declarationUnit": e.detail.value,
    });
  },
  onDisciplineMajorInput(e) {
    this.setData({
      "teacherInfo.disciplineMajor": e.detail.value,
    });
  },
  onAuthorBasicInfoInput(e) {
    this.setData({
      "teacherInfo.authorBasicInformation": e.detail.value,
    });
  },
  //输入手机号
  onPhoneInput(e) {
    const {
      phoneError
    } = this.data;
    if (e.detail.value) {
      const isPhoneNumber = /^(13[0-9]|14[01456879]|15[0-35-9]|16[2567]|17[0-8]|18[0-9]|19[0-35-9])\d{8}$/.test(e.detail.value);
      if (phoneError === isPhoneNumber) {
        this.setData({
          phoneError: !isPhoneNumber,
          "teacherInfo.phone": e.detail.value,
        });
      }
    } else {
      this.setData({
        phoneError: false,
      });
    }
  },
  onEmailInput(e) {
    const {
      emailError
    } = this.data;
    if (e.detail.value) {
      const isPhoneNumber = /^[a-zA-Z0-9_.-]+@[a-zA-Z0-9-]+(\.[a-zA-Z0-9-]+)*\.[a-zA-Z0-9]{2,6}$/.test(e.detail.value);
      if (emailError === isPhoneNumber) {
        this.setData({
          emailError: !isPhoneNumber,
          "teacherInfo.email": e.detail.value,
        });
      }
    } else {
      this.setData({
        emailError: false,
      });
    }
  },
  onTargetReadersInput(e) {
    this.setData({
      "teacherInfo.targetReaders": e.detail.value,
    });
  },
  onTopicFeaturesInput(e) {
    this.setData({
      "teacherInfo.topicFeatures": e.detail.value,
    });
  },
  onTopicImpactAndExpectedInput(e) {
    this.setData({
      "teacherInfo.topicImpactAndExpected": e.detail.value,
    });
  },
  onTopicProgressInput(e) {
    this.setData({
      "teacherInfo.topicProgress": e.detail.value,
    });
  },
  onMarketAnalysisInput(e) {
    this.setData({
      "teacherInfo.marketAnalysis": e.detail.value,
    });
  },
  onMarketingAndPromotionPlanInput(e) {
    this.setData({
      "teacherInfo.marketingAndPromotionPlan": e.detail.value,
    });
  },
  ondigitalResourceInput(e) {
    this.setData({
      "teacherInfo.digitalResourceDevelopmentPlan": e.detail.value,
    });
  },
  onOtherExistingIssuesInput(e) {
    this.setData({
      "teacherInfo.otherExistingIssues": e.detail.value,
    });
  },
  submit() {
    let that = this;
    if (!that.data.teacherInfo.topicName) {
      wx.showToast({
        title: "请填写选题名称!",
        icon: 'none',
        duration: 1000,
      })
      return
    }
    if (!that.data.teacherInfo.declarer) {
      wx.showToast({
        title: "请填写申报人姓名!",
        icon: 'none',
        duration: 1000,
      })
      return
    }
    if (!that.data.teacherInfo.declarationUnit) {
      wx.showToast({
        title: "请填写申报单位!",
        icon: 'none',
        duration: 1000,
      })
      return
    }
    if (!that.data.teacherInfo.disciplineMajor) {
      wx.showToast({
        title: "请填写学科专业!",
        icon: 'none',
        duration: 1000,
      })
      return
    }
    if (!that.data.teacherInfo.authorBasicInformation) {
      wx.showToast({
        title: "请填写作者基本情况!",
        icon: 'none',
        duration: 1000,
      })
      return
    }
    if (!that.data.teacherInfo.phone) {
      wx.showToast({
        title: "请填写联系电话!",
        icon: 'none',
        duration: 1000,
      })
      return
    }
    if (!that.data.teacherInfo.email) {
      wx.showToast({
        title: "请填写联系邮箱!",
        icon: 'none',
        duration: 1000,
      })
      return
    }
    if (!that.data.teacherInfo.targetReaders) {
      wx.showToast({
        title: "请填写读者对象!",
        icon: 'none',
        duration: 1000,
      })
      return
    }
    if (!that.data.teacherInfo.topicFeatures) {
      wx.showToast({
        title: "请填写选题特色!",
        icon: 'none',
        duration: 1000,
      })
      return
    }
    that.setData({
      loading: true,
    });
    const data = {
      topicIdOrRefCode: 'bookApplication',
      name: that.data.teacherInfo.topicName,
      content: '',
      state: 'WaitAudit',
      type: 'bookApplication',
      cmsTypeRefCode: 'jsek_publicationApplication',
      newDataListRequest: tool.worksDataBytool(that.data.worksInfo, that.data.teacherInfo)
    }
    let basicInfo = JSON.parse(JSON.stringify(that.data.teacherInfo))
    delete basicInfo.worksInfo
    delete basicInfo.state
    app.MG.ugc.newTopicMessage(data).then((res) => {
      console.log(res)
      if (res) {
        wx.showToast({
          title: "提交成功!请等待联系...",
          icon: 'none',
          duration: 1000,
        })
        that.setData({
          loading: false,
          "teacherInfo.topicName": '',
          "teacherInfo.declarer": '',
          "teacherInfo.declarationUnit": '',
          "teacherInfo.disciplineMajor": '',
          "teacherInfo.authorBasicInformation": '',
          "teacherInfo.phone": '',
          "teacherInfo.email": '',
          "teacherInfo.targetReaders": '',
          "teacherInfo.topicImpactAndExpected": '',
          "teacherInfo.topicProgress": '',
          "teacherInfo.marketAnalysis": '',
          "teacherInfo.marketingAndPromotionPlan": '',
          "teacherInfo.digitalResourceDevelopmentPlan": '',
          "teacherInfo.otherExistingIssues": '',
        });
      }
    })
  }
})
packageDomain/pages/publickBookForm/index.json
New file
@@ -0,0 +1,12 @@
{
  "navigationBarTitleText": "出书申请",
  "usingComponents": {
    "t-cell": "tdesign-miniprogram/cell/cell",
    "t-picker": "tdesign-miniprogram/picker/picker",
    "t-picker-item": "tdesign-miniprogram/picker-item/picker-item",
    "t-input": "tdesign-miniprogram/input/input",
    "t-textarea": "tdesign-miniprogram/textarea/textarea",
    "t-icon": "tdesign-miniprogram/icon/icon",
    "t-loading": "tdesign-miniprogram/loading/loading"
  }
}
packageDomain/pages/publickBookForm/index.wxml
New file
@@ -0,0 +1,103 @@
<view class="container" style="height:calc(100vh + {{keyboardHeight ? (keyboardHeight + 'px'):'0'}});padding-bottom:calc(180rpx +  {{keyboardHeight ?  120 + 'px':0}}) ">
  <scroll-view class="scroll content" scroll-y>
    <view class="tips"> 诚挚的欢迎您投稿出书,并郑重承诺:我们将认真审阅所有的来稿,以令人信服的效率、质量和稿酬择优出版! </view>
    <view class="page-body">
      <view class=" baseInfoBox">
        <view class="from-item">
          <view class="label"> <text class="icon">*</text>选题名称: </view>
          <view class="item-content">
            <t-textarea placeholder="丛书要列出总名称和各本书的名称" value="{{teacherInfo.topicName}}" disableDefaultPadding="{{true}}" autosize="{{autosize}}" bindchange="onTopicNameInput" />
          </view>
        </view>
        <view class="from-item">
          <view class="label"> <text class="icon">*</text>申报人: </view>
          <view class="item-content">
            <t-input placeholder="请输入申报人姓名" borderless value="{{teacherInfo.declarer}}" bindchange="onDeclarerInput" />
          </view>
        </view>
        <view class="from-item">
          <view class="label"> <text class="icon">*</text>申报单位: </view>
          <view class="item-content">
            <t-input placeholder="请输入申报单位" borderless value="{{teacherInfo.declarationUnit}}" bindchange="ondeclarationUnitInput" />
          </view>
        </view>
        <view class="from-item">
          <view class="label"> <text class="icon">*</text>学科专业: </view>
          <view class="item-content">
            <t-input placeholder="请输入学科专业" borderless value="{{teacherInfo.disciplineMajor}}" bindchange="onDisciplineMajorInput" />
          </view>
        </view>
        <view class="from-item">
          <view class="label"> <text class="icon">*</text>作者基本情况: </view>
          <view class="item-content">
            <t-textarea placeholder="姓名、职务、研究领域、思想倾向、师德师风、学术水平、研究成果等" value="{{teacherInfo.authorBasicInformation}}" disableDefaultPadding="{{true}}" autosize="{{autosize}}" bindchange="onAuthorBasicInfoInput" />
          </view>
        </view>
        <view class="from-item">
          <view class="label"> <text class="icon">*</text>手机号: </view>
          <view class="item-content">
            <t-input placeholder="输入手机号码" borderless value="{{teacherInfo.phone}}" type="number" tips="{{phoneError ? '手机号输入不正确' : ''}}" bindchange="onPhoneInput" />
          </view>
        </view>
        <view class="from-item">
          <view class="label"> <text class="icon">*</text>邮箱: </view>
          <view class="item-content">
            <t-input placeholder="输入邮箱" borderless value="{{teacherInfo.email}}" tips="{{emailError ? '邮箱输入不正确' : ''}}" bindchange="onEmailInput" />
          </view>
        </view>
        <view class="from-item">
          <view class="label"> <text class="icon">*</text>读者对象: </view>
          <view class="item-content">
            <t-input placeholder="定位、范围、数量等" borderless value="{{teacherInfo.targetReaders}}" bindchange="onTargetReadersInput" />
          </view>
        </view>
        <view class="from-item">
          <view class="label"> <text class="icon">*</text>选题特色: </view>
          <view class="item-content">
            <t-textarea placeholder="选题背景、主要内容、出版价值等" value="{{teacherInfo.topicFeatures}}" disableDefaultPadding="{{true}}" autosize="{{autosize}}" bindchange="onTopicFeaturesInput" />
          </view>
        </view>
        <view class="from-item">
          <view class="label"> <text class="empty"></text>选题学术影响与预期社会效益: </view>
          <view class="item-content">
            <t-textarea placeholder="选题学术影响与预期社会效益" value="{{teacherInfo.topicImpactAndExpected}}" disableDefaultPadding="{{true}}" autosize="{{autosize}}" bindchange="onTopicImpactAndExpectedInput" />
          </view>
        </view>
        <view class="from-item">
          <view class="label"> <text class="empty"></text>选题的进度安排: </view>
          <view class="item-content">
            <t-textarea placeholder="预计来稿时间、出版时间等" value="{{teacherInfo.topicProgress}}" disableDefaultPadding="{{true}}" autosize="{{autosize}}" bindchange="onTopicProgressInput" />
          </view>
        </view>
        <view class="from-item">
          <view class="label"> <text class="empty"></text>市场分析: </view>
          <view class="item-content">
            <t-textarea placeholder="市场需求、与同类书的差异和优势、定价标准、预计销量、盈亏分析等,是否有出版资助费" value="{{teacherInfo.marketAnalysis}}" disableDefaultPadding="{{true}}" autosize="{{autosize}}" bindchange="onMarketAnalysisInput" />
          </view>
        </view>
        <view class="from-item">
          <view class="label"> <text class="empty"></text>营销与宣传推广计划: </view>
          <view class="item-content">
            <t-textarea placeholder="市场需求、与同类书的差异和优势、定价标准、预计销量、盈亏分析等,是否有出版资助费" value="{{teacherInfo.marketingAndPromotionPlan}}" disableDefaultPadding="{{true}}" autosize="{{autosize}}" bindchange="onMarketingAndPromotionPlanInput" />
          </view>
        </view>
        <view class="from-item">
          <view class="label"> <text class="empty"></text>配套数字资源开发方案: </view>
          <view class="item-content">
            <t-textarea placeholder="配套数字资源名称、类型、内容、经费预算、效益分析等" value="{{teacherInfo.digitalResourceDevelopmentPlan}}" disableDefaultPadding="{{true}}" autosize="{{autosize}}" bindchange="ondigitalResourceInput" />
          </view>
        </view>
        <view class="from-item">
          <view class="label"> <text class="empty"></text>存在的其他问题: </view>
          <view class="item-content">
            <t-textarea placeholder="请输入其他问题" value="{{teacherInfo.otherExistingIssues}}" disableDefaultPadding="{{true}}" autosize="{{autosize}}" bindchange="onOtherExistingIssuesInput" />
          </view>
        </view>
        <view class="btn-area">
          <button class="submit" bindtap="submit" loading="{{loading}}">提交</button>
        </view>
      </view>
    </view>
  </scroll-view>
</view>
packageDomain/pages/publickBookForm/index.wxss
New file
@@ -0,0 +1,84 @@
/* packageDomain/pages/publickBookForm/index.wxss */
page {
  background: #F2F3F8;
}
.container {
  width: 100vw;
  height: 100vh;
}
.content {
  height: calc(100vh - env(safe-area-inset-bottom));
  box-sizing: border-box;
}
.tips {
  line-height: 24px;
  font-size: 28rpx;
  padding: 5px;
  background: rgba(255, 108, 0, 0.1);
  color: #ff6c00;
  /* text-align: center; */
  margin: 0 auto 20rpx auto;
}
.page-body {
  font-size: 28rpx;
}
.baseInfoBox {
  background: #fff;
  margin-top: 20rpx;
  border-radius: 10rpx;
  padding: 30rpx;
}
.baseInfoBox .from-item {
  margin-bottom: 20rpx;
}
.baseInfoBox .from-item .label {
  /* height: 68rpx; */
  line-height: 68rpx;
}
.t-input__tips,
.from-item .label .icon {
  color: #f56c6c !important;
  margin-right: 5rpx;
}
.empty {
  /* padding: 0 10rpx; */
}
.t-input {
  padding: 0 !important;
}
.t-input__content,
.t-textarea {
  border: 2rpx solid #D9D9D9 !important;
  padding: 10rpx !important;
}
.from-item .item-content {
  width: 100%;
}
.t-input__placeholder,
.t-textarea__placeholder {
  font-size: 28rpx !important
}
.t-input__wrap .t-input__content,
.t-input__control {
  font-size: 28rpx !important;
}
.submit {
  background: #ff6c00;
  color: #fff;
  border-radius: 50rpx;
}
packageDomain/pages/resourceDetails/myVideo/index.wxml
@@ -19,6 +19,7 @@
      />
    </view>
    <!-- <video show-center-play-btn="{{false}}" src="{{showData}}" bindloadedmetadata="loadedmetadata" bindtimeupdate="timeUpdate"></video> -->
<<<<<<< Updated upstream
    <t-video
      id="tvd"
      src="{{showData}}"
@@ -26,6 +27,9 @@
      bindvideoloaded="loadedmetadata"
      bindtimeupdate="timeUpdate"
    >
=======
    <t-video id="tvd" src="{{showData}}" style="width:100%;" bindvideoloaded="loadedmetadata" bindtimeupdate="timeUpdate" wx:if="{{!videoLoaidng}}">
>>>>>>> Stashed changes
    </t-video>
  </view>
packagePersonal/pages/publishBooks/index.js
@@ -1,11 +1,28 @@
// pages/personalCenter/publishBooks/index.js
import moment from 'moment'
const app = getApp();
import {
  getTopicMsgCmsItemFile
} from '../../../assets/js/middleGround/tool.js'
Page({
  /**
   * 页面的初始数据
   */
  data: {
    list: [],
    //分页
    page: 1,
    limit: 10,
    pageTotalCount: 0,
    bottomLoading: false,
    isMoreData: false,
    // 返回顶部
    isBackTop: false,
    setScrollValue: 0,
    skeletonLoding: true,
    worksInfo: [],
    info: {},
    visible: false
  },
  /**
@@ -13,8 +30,79 @@
   */
  onLoad(options) {
    console.log(options);
    this.getType()
  },
  getType() {
    const data = {
      refCodes: ['jsek_publicationApplication']
    }
    app.MG.resource.getCmsTypeByRefCode(data).then((res) => {
      this.setData({
        worksInfo: res[0].cmsTypeLinks[0].children,
      })
      this.getDataList(false)
    })
  },
  getDataList(isReachBottom) {
    app.MG.ugc.getTopicMessageList({
        appRefCode: app.config.appRefCode,
        topicIdOrRefCode: 'bookApplication',
        start: this.data.page * this.data.limit - this.data.limit,
        size: this.data.limit,
        sort: {
          type: "Desc",
          field: "CreateDate"
        }
      })
      .then(res => {
        try {
          if (res.datas.length > 0) {
            res.datas.forEach((item) => {
              item.createDate = moment(item.createDate).format("YYYY-MM-DD");
              let info = getTopicMsgCmsItemFile(this.data.worksInfo, item.cmsItemDataList)
              if (info) {
                item.info = info
              }
            });
            let dataList = res.datas;
            //触底加载新数据并保留老数据
            if (isReachBottom) {
              dataList = [...this.data.list, ...dataList] //将新数据加入老数据中
            }
            this.setData({
              list: dataList,
              pageTotalCount: res.totalSize,
              bottomLoading: false,
              isMoreData: dataList.length > 0 ? false : true,
              skeletonLoding: false,
            })
          } else {
            this.setData({
              skeletonLoding: false,
            })
          }
        } catch (error) {
          console.log(error)
        }
      })
  },
  toList(itemData) {
    let info = itemData.currentTarget.dataset.info;
    this.setData({
      info: info.info,
      visible: true
    })
  },
  onVisibleChange(e) {
    this.setData({
      visible: e.detail.visible,
    });
  },
  onClose() {
    this.setData({
      visible: false,
    });
  },
  /**
   * 生命周期函数--监听页面初次渲染完成
   */
@@ -47,16 +135,59 @@
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh() {
    if (this._freshing) return
    this.setData({
      page: 1,
      limit: 10,
      pageTotalCount: 0,
      bottomLoading: false,
      isMoreData: false
    })
    this._freshing = true;
    this.setData({
      triggered: false,
    })
    this.getDataList(false);
    this._freshing = false
  },
  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom() {
    this.setData({
      bottomLoading: true,
      isMoreData: false
    })
    let bool = false;
    if (this.data.pageTotalCount > this.data.list.length) {
      bool = true;
      this.setData({
        page: this.data.page + 1,
      })
    } else {
      setTimeout(() => {
        this.setData({
          bottomLoading: false,
          isMoreData: true
        })
      }, 100)
      return false;
    }
    this.getDataList(bool);
  },
  // 监听滚动距离
  onPageScroll(e) {
    if (e && e.scrollTop >= 1000) {
      this.setData({
        isBackTop: true
      })
    } else {
      this.setData({
        isBackTop: false
      })
    }
  },
  /**
   * 用户点击右上角分享
   */
packagePersonal/pages/publishBooks/index.json
@@ -1,4 +1,13 @@
{
  "navigationBarTitleText": "出书申请",
  "usingComponents": {}
  "usingComponents": {
    "t-back-top": "tdesign-miniprogram/back-top/back-top",
    "t-image": "tdesign-miniprogram/image/image",
    "t-pull-down-refresh": "tdesign-miniprogram/pull-down-refresh/pull-down-refresh",
    "t-loading": "tdesign-miniprogram/loading/loading",
    "t-popup": "tdesign-miniprogram/popup/popup",
    "t-icon": "tdesign-miniprogram/icon/icon",
    "t-empty": "tdesign-miniprogram/empty/empty",
    "empty": "/components/empty/index"
  }
}
packagePersonal/pages/publishBooks/index.wxml
@@ -1,2 +1,70 @@
<!--pages/personalCenter/publishBooks/index.wxml-->
<text>pages/personalCenter/publishBooks/index.wxml</text>
<view class="container" wx:if="{{!skeletonLoding}}">
  <scroll-view class="scroll content" bind:scroll="onPageScroll" model:scroll-top="{{setScrollValue}}" scroll-y refresher-enabled="{{true}}" lower-threshold="{{200}}" refresher-threshold="{{80}}" refresher-default-style="none" refresher-triggered="{{triggered}}" bindrefresherpulling="{{refresh.onPulling}}" bindrefresherrefresh="onPullDownRefresh" bindscrolltolower="onReachBottom">
    <view slot="refresher" class="refresh-container">
      <view class="loading">
        <t-loading theme="circular" size="40rpx" text="正在刷新..." class="wrapper" />
      </view>
    </view>
    <view class="pageInfo" wx:if="{{list.length > 0 && !skeletonLoding}}">
      <view class="pageTotalCount">共{{pageTotalCount}}条记录</view>
      <view class="content-item" wx:for="{{list}}" wx:for-item="item" wx:for-index="index" wx:key="index">
        <view class="item-con" data-info="{{item}}" bindtap="toList">
          <view class="titleBox">
            <view class="item-title">{{item.name}}</view>
          </view>
          <view class="createDate">{{item.createDate}}</view>
        </view>
      </view>
    </view>
    <view wx:if="{{list.length == 0 && !skeletonLoding}}" class="empyt">
      <empty />
    </view>
    <view class="bottom-loading" wx:if="{{bottomLoading}}">
      <t-loading theme="circular" size="40rpx" text="加载中..." class="wrapper" />
    </view>
    <view class="bottom-loading" style="color: #ccc;font-size: 28rpx;" wx:if="{{isMoreData}}">
      <text>没有更多了</text>
    </view>
  </scroll-view>
  <t-popup visible="{{visible}}" bind:visible-change="onVisibleChange" placement="center">
    <view class="block">
      <scroll-view class="srcolbox" scroll-y scroll-height-animation="true">
        <view class="block-content">
          <view class="label">选题名称:</view>
          <view class="infoCon">{{info.topicName}}</view>
          <view class="label">申报人:</view>
          <view class="infoCon">{{info.declarer}}</view>
          <view class="label">申报单位:</view>
          <view class="infoCon">{{info.declarationUnit}}</view>
          <view class="label">学科专业:</view>
          <view class="infoCon">{{info.disciplineMajor}}</view>
          <view class="label">作者基本情况:</view>
          <view class="infoCon">{{info.authorBasicInformation}}</view>
          <view class="label">联系电话:</view>
          <view class="infoCon">{{info.phone}}</view>
          <view class="label">邮箱:</view>
          <view class="infoCon">{{info.email}}</view>
          <view class="label">读者对象:</view>
          <view class="infoCon">{{info.targetReaders}}</view>
          <view class="label">选题特色:</view>
          <view class="infoCon">{{info.topicFeatures}}</view>
          <view class="label">选题学术影响与预期社会效益:</view>
          <view class="infoCon">{{info.topicImpactAndExpected || '-'}}</view>
          <view class="label">选题的进度安排:</view>
          <view class="infoCon">{{info.topicProgress || '-'}}</view>
          <view class="label">市场分析:</view>
          <view class="infoCon">{{info.marketAnalysis || '-'}}</view>
          <view class="label">营销与宣传推广计划:</view>
          <view class="infoCon">{{info.marketingAndPromotionPlan || '-'}}</view>
          <view class="label">配套数字资源开发方案:</view>
          <view class="infoCon">{{info.digitalResourceDevelopmentPlan|| '-'}}</view>
          <view class="label">存在的其他问题:</view>
          <view class="infoCon">{{info.otherExistingIssues || '-'}}</view>
        </view>
      </scroll-view>
      <t-icon t-class="close-btn" name="close-circle" size="64rpx" color="#fff" bind:tap="onClose" />
    </view>
  </t-popup>
  <t-back-top theme="round" wx:if="{{isBackTop}}" text="顶部" bind:to-top="onToTop"></t-back-top>
</view>
packagePersonal/pages/publishBooks/index.wxss
@@ -1 +1,121 @@
/* pages/personalCenter/publishBooks/index.wxss */
.container {
  width: 100vw;
  height: 100vh;
  background: #F2F3F8;
}
.content {
  height: calc(100vh - env(safe-area-inset-bottom));
  box-sizing: border-box;
}
.pageInfo {
  padding: 40rpx 20rpx;
}
.pageTotalCount {
  font-size: 28rpx;
}
.content-item {
  padding: 20rpx 0;
  background: #fff;
  border-radius: 10rpx;
  margin: 30rpx 0;
}
.content-item .icon {
  width: 58rpx;
  height: 58rpx;
}
.content-item .icon .img {
  width: 100%;
  height: 100%;
}
.item-con {
  margin-left: 30rpx;
}
.titleBox .item-title {
  font-weight: bold;
  flex: 1;
  height: 40rpx;
  line-height: 40rpx;
  display: -webkit-box;
  margin-top: 20rpx;
  -webkit-box-orient: vertical;
  -webkit-line-clamp: 1;
  overflow: hidden;
  text-overflow: ellipsis;
}
.createDate {
  font-size: 24rpx;
  margin: 20rpx 0;
}
.description {
  font-size: 24rpx;
  height: 80rpx;
  line-height: 40rpx;
  display: -webkit-box;
  margin-top: 20rpx;
  -webkit-box-orient: vertical;
  -webkit-line-clamp: 2;
  overflow: hidden;
  text-overflow: ellipsis;
}
.refresh-container {
  margin: 0 auto;
}
.bottom-loading,
.loading {
  padding: 20rpx;
  text-align: center;
}
.body-loading {
  padding: 200rpx 0;
  text-align: center;
}
.block {
  position: relative;
  width: 90vw;
  height: 80vh;
  background: var(--td-bg-color-container);
  border-radius: 16rpx;
}
.srcolbox {
  width: 100%;
  height: 78vh;
  white-space: nowrap;
}
.block-content {
  padding: 20rpx;
}
.label {
  font-weight: bold;
  font-size: 28rpx;
}
.infoCon {
  padding: 10rpx 0;
  font-size: 28rpx;
  color: #666;
}
.close-btn {
  position: absolute;
  left: 50%;
  margin-left: -32rpx;
  bottom: calc(-1 * (48rpx + 64rpx));
}
pages/bookExhibitionList/index.js
@@ -69,11 +69,11 @@
        },
        {
          value: "timeAsc",
          label: "出版时间正序",
          label: "创建时间正序",
        },
        {
          value: "timeDesc",
          label: "出版时间倒序",
          label: "创建时间倒序",
        },
      ],
    },
@@ -420,7 +420,6 @@
    this.setData({
      "product.value": e.detail.value,
    });
    this.bookExhibitionGet();
  },
  onOpend() {},
pages/bookExhibitionList/index.wxml
@@ -24,7 +24,6 @@
      <view class="menuBox">
        <t-dropdown-menu>
          <t-dropdown-item options="{{product.options}}" default-value="{{product.value}}" bindchange="onChange" />
          <!-- disabled="{{keynoteDisabled}}" -->
          <t-dropdown-item label=" 重点项目" disabled="{{disbaleProject}}" options="{{multipleSelect.options}}" bindchange="handleMultipleSelect" multiple bind:confirm="handleConfirm" bind:reset="handleReset" value="{{multipleSelect.value}}">
          </t-dropdown-item>
pages/bookExhibitionList/index.wxss
@@ -149,7 +149,7 @@
.assembleContent {
  background-color: #F2F3F8;
  min-height: 90vh;
  margin-top: 240rpx;
  margin-top: 268rpx;
}
.t-dropdown-menu:after,
@@ -251,7 +251,7 @@
  position: fixed;
  top: 0px;
  background-color: #fff;
  height: 120px;
  height: 268rpx;
  z-index: 999;
}
pages/bookServices/assort/index.wxml
@@ -6,21 +6,8 @@
  <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-style="{{placeholderstyle}}"
      >
        <t-icon
          slot="left-icon"
          prefix="wr"
          name="search"
          size="40rpx"
          color="#bbb"
        />
      <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>
@@ -29,13 +16,7 @@
    <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-item wx:for="{{assortList}}" wx:key="id" value="{{item.refCode}}" label="{{item.name}}" badge-props="{{item.badgeProps}}" />
        </t-side-bar>
      </view>
      <view class="page-right">
@@ -44,76 +25,30 @@
          <!-- 一级分类 -->
          <view class="tab-top">
            <view class="myScroll">
              <view
                wx:for="{{startList}}"
                wx:key="id"
                class="row {{startCheck.id == item.id ? 'tab-active' : ''}}"
                bind:tap="tabClick"
                data-tabData="{{item}}"
                >{{item.name}}</view
              >
              <view wx:for="{{startList}}" wx:key="id" class="row {{startCheck.id == item.id ? 'tab-active' : ''}}" bind:tap="tabClick" data-tabData="{{item}}">{{item.name}}</view>
            </view>
          </view>
          <!-- 内容 -->
          <scroll-view
            scroll-y="{{true}}"
            class="class-list"
            scroll-into-view="{{ 'list' + startCheck.id}}"
          >
            <view
              wx:for="{{startList}}"
              wx:for-item="item"
              wx:key="id"
              id="{{ 'list' + item.id}}"
              class="class-box"
              wx:if="{{!stairListLoading}}"
            >
          <scroll-view scroll-y="{{true}}" class="class-list" scroll-into-view="{{ 'list' + startCheck.id}}">
            <view wx:for="{{startList}}" wx:for-item="item" wx:key="id" id="{{ 'list' + item.id}}" class="class-box" wx:if="{{!stairListLoading}}">
              <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 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/default-book-img.png'}}"
                      mode="aspectFit"
                    />
                    <image src="{{citem.icon ? citem.icon : '/static/images/default-book-img.png'}}" mode="aspectFit" />
                  </view>
                  <view class="classify">{{citem.name}}</view>
                </view>
                <view
                  wx:if="{{!item.children.length}}"
                  class="book-box"
                  bind:tap="goPageList"
                  data-tabData="{{item}}"
                >
                <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/default-book-img.png'}}"
                      mode="aspectFit"
                    />
                    <image src="{{item.icon ? item.icon : '/static/images/default-book-img.png'}}" mode="aspectFit" />
                  </view>
                  <text class="classify">全部</text>
                </view>
              </view>
            </view>
            <view
              wx:if="{{stairListLoading}}"
              style="width: 100%; height: min-content"
            >
              <t-skeleton
                row-col="{{rowCol}}"
                theme="paragraph"
                animation="gradient"
                loading="{{stairListLoading}}"
              ></t-skeleton>
            <view wx:if="{{stairListLoading}}" style="width: 100%; height: min-content">
              <t-skeleton row-col="{{rowCol}}" theme="paragraph" animation="gradient" loading="{{stairListLoading}}"></t-skeleton>
            </view>
            <view class="bottom-box"> </view>
          </scroll-view>
pages/cart/index.js
@@ -1,5 +1,4 @@
const app = getApp();
// import { getPublicImage } from '@/assets/js/middleGround/tool.js'
import {
  loginInfo
} from '../../assets/js/login';
pages/digitalCourses/index.js
@@ -17,6 +17,7 @@
    tabList: [],
    courseList: [],
    searchValue: '',
    active: 0,
    activeItem: null,
    loading: false,
    shoppingCartGetId: []
@@ -34,6 +35,11 @@
      barHeight: systInfo.statusBarHeight,
      navBarHeight: navBarHeight,
    });
    if (options.courseTypeActive) {
      this.setData({
        active: JSON.parse(options.courseTypeActive),
      });
    }
    this.getCourseTypeListList()
    this.getShoppingCartList()
  },
@@ -96,7 +102,6 @@
    wx.navigateBack();
  },
  getCourseTypeListList() {
    this.setData({
      loading: true
    })
@@ -119,15 +124,19 @@
    app.MG.store.getStoreChannelList(data).then((res) => {
      // 去除数组最后一个元素
      const newData = res.datas.slice(0, res.datas.length - 1)
      this.setData({
        tabList: newData,
        activeItem: newData[0],
        loading: false
      })
      if (this.data.active) {
        this.getCourseList(newData[this.data.active])
      } else {
        this.setData({
          activeItem: newData[0],
        })
      this.getCourseList(newData[0])
      }
    })
  },
pages/digitalCourses/index.wxml
@@ -8,7 +8,7 @@
    </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-tabs defaultValue="{{active}}" 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}}">
      <view class="contentBox">
        <view class="titleBox">
pages/digitalTextbooks/index.wxml
@@ -18,7 +18,7 @@
          <view class="frameBox"></view>
          <view class="titleTextBox">
            <!-- <image src="/static/images/digitalCourses/zhuantitaolun@2x.png" mode="aspectFit" /> -->
            <view>数字课程列表</view>
            <view>数字教材列表</view>
          </view>
        </view>
pages/home/home.js
@@ -27,6 +27,7 @@
    activeItem: 0, //精选课程默认选中
    courseTypeList: [], //精选课程分类
    courseList: [],
    courseTypeActive: [],
    bookTypeList: [], //图书类型
    activeItem1: 0,
    bookTypeData: {},
@@ -73,7 +74,7 @@
    } else {
      // 如果是第一次登录,会跳转至绑定用户信息页面,填写完用户信息后进行登录并储存token和用户信息,结束后跳转回当前页面(携带页面参数)
    }
    this.registe()
    this.init();
  },
  onReachBottom() {},
@@ -98,6 +99,12 @@
        'baseRefresh.value': false,
      })
    }, 500);
  },
  registe() {
    app.MG.app.creatUserBehavior({
      refCode: "sign"
    }).then(res => {});
  },
  getBannerList() {
@@ -271,7 +278,8 @@
  tabChangeHandle(item) {
    let info = this.data.courseTypeList[item.detail.value]
    this.setData({
      courseList: []
      courseList: [],
      courseTypeActive: item.detail.value
    })
    this.getCourseList(info)
  },
@@ -438,24 +446,19 @@
    });
  },
  goSubjectDetail(e) {
    const {
      book
    } = e.currentTarget.dataset;
    wx.showToast({
      title: "建设中",
      icon: 'none',
      duration: 1000
    })
    const item = e.currentTarget.dataset.book
    console.log(item);
    wx.navigateTo({
      url: '/pages/specialDiscussion/webView/index?link=' + item.jsek_link
    });
  },
  goCourseDetail(e) {
    const {
      book
    } = e.currentTarget.dataset;
    wx.showToast({
      title: "建设中",
      icon: 'none',
      duration: 1000
    })
    wx.navigateTo({
      url: '/pages/digitalCourses/digitalCoursesDetails/index?id=' + book.id,
    });
  },
  goReadBookDetail(e) {
    const {
@@ -469,11 +472,9 @@
    const {
      book
    } = e.currentTarget.dataset;
    wx.showToast({
      title: "建设中",
      icon: 'none',
      duration: 1000
    })
    wx.navigateTo({
      url: '/pages/digitalTextbooks/digitalTextbooksDetails/index?id=' + book.id,
    });
  },
@@ -498,12 +499,6 @@
    const {
      info
    } = e.currentTarget.dataset;
    wx.showToast({
      title: "建设中",
      icon: 'none',
      duration: 1000
    })
    return;
    if (wx.getStorageSync(app.config.tokenKey)) {
      let query = {
        start: 0,
@@ -581,6 +576,19 @@
      wx.navigateTo({
        url: '/pages/home/digitalRead/index'
      })
    } else if (type == "zhuantitaolun") {
      wx.navigateTo({
        url: '/pages/specialDiscussion/index'
      })
    } else if (type == "jingxuankecheng") {
      wx.navigateTo({
        url: '/pages/digitalCourses/index?courseTypeActive=' + this.data.courseTypeActive
      })
    } else if (type == "shuzijiaocai") {
      wx.navigateTo({
        url: '/pages/digitalTextbooks/index'
      })
    } else {
      wx.showToast({
        title: "建设中",
pages/home/home.skeleton.wxml
@@ -135,7 +135,7 @@
                      </view>
                      <view class="t-grid-item__words item--t-grid-item__words t-grid-item__words--vertical item--t-grid-item__words--vertical" id="b8219551--t_grid_item_24">
                        <view class="t-grid-item__text item--t-grid-item__text t-grid-item__text--small item--t-grid-item__text--small t-grid-item__text--vertical item--t-grid-item__text--vertical sk-transparent sk-text-22-7273-927 sk-text" style="background-position-x: 50%;">
                          专题讨论
                          专题活动
                        </view>
                      </view>
                    </view>
pages/home/home.wxml
@@ -9,7 +9,7 @@
      </view>
      <view class="search">
        <image class="icon" src="/static/images/home/nav_icon_scan.png" bindtap="onIconScanTap" />
        <t-search t-class-input="t-search__input" t-class-input-container="t-search__input-container" placeholder="请输入关键词/书名/ISBN/作者" leftIcon="" bind:submit="onRetrievalPage" model:value="{{searchVal}}">
        <t-search t-class-input="t-search__input" t-class-input-container="t-search__input-container" placeholder="请输入关键词/书名/ISBN/作者/项目负责人" leftIcon="" bind:submit="onRetrievalPage" model:value="{{searchVal}}">
          <t-icon slot="left-icon" prefix="wr" name="search" size="40rpx" color="#bbb" bind:tap="navToSearchPage" />
        </t-search>
      </view>
@@ -62,6 +62,39 @@
        </view>
        <view class="tabCardPublic iconTwo">
          <view class="icon">
            <image src="/static/images/home/tushufuwu2.png" mode="aspectFit" class="iconImage" />
          </view>
          <view data-info="{{'tushufuwu'}}" bindtap="onMoreGuide" class="flex">
            <text class="more">更多</text>
            <t-icon name="chevron-right" size="32rpx" color="#ff6d00" />
          </view>
        </view>
        <view class="home-page-tabs">
          <t-tabs t-class="t-tabs" split="{{false}}" position="{{'home'}}" defaultValue="{{activeItem1}}" bind:change="tabBookClick">
            <t-tab-panel wx:for="{{bookTypeList}}" wx:for-index="index" wx:key="index" label="{{item.name}}" value="{{index}}" />
          </t-tabs>
        </view>
        <view class="listBox2">
          <view wx:if="{{booksList.length > 0}}" class="flex">
            <view wx:for="{{booksList}}" wx:for-item="item" wx:for-index="index" wx:key="index" class="booksListItemBox">
              <view class="listItem" bind:tap="goDetail" data-book="{{item}}">
                <view class="specialSubject-img">
                  <image src="{{item.icon ? item.icon : '/static/images/default-book-img.png'}}" mode="aspectFit" class="img" aria-label="{{item.name}}" />
                </view>
                <view class="body-info">
                  <view class="name">{{item.name}}</view>
                  <view class="author">{{item.author}}</view>
                </view>
              </view>
            </view>
          </view>
          <view class="empyt" wx:else>
            <!-- <t-empty icon="folder-open" description="暂无数据" font-size="80" /> -->
            <empty />
          </view>
        </view>
        <view class="tabCardPublic iconTwo">
          <view class="icon">
            <image src="/static/images/home/jingxuankecheng2.png" mode="aspectFit" class="iconImage" />
          </view>
          <view data-info="{{'jingxuankecheng'}}" bindtap="onMoreGuide" class="flex">
@@ -101,39 +134,7 @@
            <empty />
          </view>
        </view>
        <view class="tabCardPublic iconTwo">
          <view class="icon">
            <image src="/static/images/home/tushufuwu2.png" mode="aspectFit" class="iconImage" />
          </view>
          <view data-info="{{'tushufuwu'}}" bindtap="onMoreGuide" class="flex">
            <text class="more">更多</text>
            <t-icon name="chevron-right" size="32rpx" color="#ff6d00" />
          </view>
        </view>
        <view class="home-page-tabs">
          <t-tabs t-class="t-tabs" split="{{false}}" position="{{'home'}}" defaultValue="{{activeItem1}}" bind:change="tabBookClick">
            <t-tab-panel wx:for="{{bookTypeList}}" wx:for-index="index" wx:key="index" label="{{item.name}}" value="{{index}}" />
          </t-tabs>
        </view>
        <view class="listBox2">
          <view wx:if="{{booksList.length > 0}}" class="flex">
            <view wx:for="{{booksList}}" wx:for-item="item" wx:for-index="index" wx:key="index" class="booksListItemBox">
              <view class="listItem" bind:tap="goDetail" data-book="{{item}}">
                <view class="specialSubject-img">
                  <image src="{{item.icon ? item.icon : '/static/images/default-book-img.png'}}" mode="aspectFit" class="img" aria-label="{{item.name}}" />
                </view>
                <view class="body-info">
                  <view class="name">{{item.name}}</view>
                  <view class="author">{{item.author}}</view>
                </view>
              </view>
            </view>
          </view>
          <view class="empyt" wx:else>
            <!-- <t-empty icon="folder-open" description="暂无数据" font-size="80" /> -->
            <empty />
          </view>
        </view>
        <view class="tabCardPublic iconTwo">
          <view class="icon">
            <image src="/static/images/home/shuziyuedu2.png" mode="aspectFit" class="iconImage" />
pages/personalCenter/index.js
@@ -1,4 +1,5 @@
const app = getApp();
import moment from 'moment'
import {
  loginInfo
} from '../../assets/js/login';
@@ -47,7 +48,7 @@
  {
    title: '出书申请',
    icon: '/static/images/personal/chushu.png',
    url: '',
    url: '/packagePersonal/pages/publishBooks/index',
    type: 'publishBooks',
  }
];
@@ -124,6 +125,8 @@
      size: '10rpx',
    },
    scrollTop: 0,
    visibleIntegral: false,
    recordList: []
  },
  /**
   * 生命周期函数--监听页面加载
@@ -153,6 +156,7 @@
            currAuthStep: 2,
          });
          this.getUserInfo()
          this.getIntegral()
        }
      })
    } else {
@@ -160,6 +164,7 @@
        currAuthStep: 3,
      });
      this.getUserInfo()
      this.getIntegral()
    }
  },
  /**
@@ -170,6 +175,7 @@
      'baseRefresh.value': true,
    })
    this.getUserInfo()
    this.getIntegral()
    wx.stopPullDownRefresh()
  },
  /**
@@ -331,6 +337,69 @@
    });
  },
  getIntegral() {
    app.MG.store
      .getUserWallet({
        type: 'integral'
      })
      .then((res) => {
        this.setData({
          integral: res.balance,
        });
      })
  },
  getIntegralList() {
    app.MG.store
      .getWalletHistory({
        Size: 999,
        Start: 0,
        sort: {
          type: 'Desc',
          field: 'CreateDate'
        },
        type: 'integral'
      })
      .then((res) => {
        if (res.datas.length > 0) {
          res.datas.forEach((element) => {
            element.createDate = moment(element.createDate).format('YYYY-MM-DD HH:mm:ss')
            if (element.refType == 'sign') {
              element.type = '每日登录'
            }
            if (element.refType == 'Reward') {
              element.type = '上传资源奖励'
            }
            if (element.refType == 'OrderCoinBonus') {
              element.type = '订单支付奖励'
            }
            if (element.refType == 'Order' && element.value < 0) {
              element.type = '订单支付抵扣'
            }
            if (element.refType == 'Order' && element.value > 0) {
              element.type = '订单取消退回'
            }
            if (element.refType == 'AdminRecharge') {
              element.type = '管理员充值'
            }
          })
          this.setData({
            recordList: res.datas,
            visibleIntegral: true
          });
        }
      })
  },
  onVisibleIntegralChange(e) {
    this.setData({
      visibleIntegral: e.detail.visible,
    });
  },
  onClose() {
    this.setData({
      visibleIntegral: false,
    });
  },
  //点击目录
  toPages(item) {
    let info = item.currentTarget.dataset.info
pages/personalCenter/index.json
@@ -5,6 +5,7 @@
    "t-user-center-card": "./components/user-center-card/index",
    "t-image": "tdesign-miniprogram/image/image",
    "t-popup": "tdesign-miniprogram/popup/popup",
    "t-icon": "tdesign-miniprogram/icon/icon",
    "t-pull-down-refresh": "tdesign-miniprogram/pull-down-refresh/pull-down-refresh"
  },
  "enablePullDownRefresh": false
pages/personalCenter/index.wxml
@@ -24,7 +24,7 @@
              </view>
            </view>
            <view class="line"></view>
            <view>
            <view bindtap="getIntegralList">
              <view>{{integral}}</view>
              <view class="title">积分</view>
            </view>
@@ -86,6 +86,32 @@
          </view>
        </view>
      </t-popup>
      <t-popup visible="{{visibleIntegral}}" bind:visible-change="onVisibleIntegralChange" placement="center">
        <view class="blockIntegral">
          <scroll-view class="srcolbox" scroll-y scroll-height-animation="true">
            <view class="block-content">
              <view class="tableHeader">
                <view class="lable">类型</view>
                <view class="value">数量</view>
                <view class="createDate">时间</view>
              </view>
              <view class="content-item" wx:for="{{recordList}}" wx:for-item="item" wx:for-index="index" wx:key="index">
                <view class="lable">{{item.type}}</view>
                <view class="value yes" wx:if="item.value > 0">{{'+' + item.value}}</view>
                <view class="value no" wx:else>{{item.value}}</view>
                <view class="createDate">{{item.createDate ? item.createDate : '-'}}</view>
              </view>
              <view class="content-item">
                <view class="lable">总计</view>
                <view class="value totle">{{integral}}</view>
                <view class="createDate"></view>
              </view>
            </view>
          </scroll-view>
          <t-icon t-class="close-btn" name="close-circle" size="64rpx" color="#fff" bind:tap="onClose" />
        </view>
      </t-popup>
    </view>
  </t-pull-down-refresh>
</view>
pages/personalCenter/index.wxss
@@ -211,3 +211,62 @@
  color: #fff;
  border-radius: 50rpx;
}
.blockIntegral {
  position: relative;
  width: 90vw;
  height: 70vh;
  background: var(--td-bg-color-container);
  border-radius: 16rpx;
}
.srcolbox {
  width: 100%;
  height: 70vh;
  white-space: nowrap;
}
.block-content {
  padding: 20rpx;
  font-size: 28rpx;
  color: #606266
}
.tableHeader {
  display: flex;
  background-color: #f3f3f3;
  line-height: 48rpx;
  padding: 10rpx;
  border-bottom: 1px solid #f4f4f4;
}
.blockIntegral .content-item {
  display: flex;
  line-height: 48rpx;
  padding: 10rpx;
  border-bottom: 2rpx solid #f4f4f4;
}
.blockIntegral .lable {
  width: 260rpx;
}
.blockIntegral .value {
  width: 100rpx;
}
.blockIntegral .totle {
  font-weight: bold;
}
.blockIntegral .createDate {
  flex: 1;
}
.close-btn {
  position: absolute;
  left: 50%;
  margin-left: -32rpx;
  bottom: calc(-1 * (48rpx + 64rpx));
}
pages/retrievalPage/index.js
@@ -193,7 +193,8 @@
        'Name*': this.data.searchVal.trim(),
        '||author*': this.data.searchVal.trim(),
        '||isbn*': this.data.searchVal.trim(),
        '||seriesName*': this.data.searchVal.trim()
        '||seriesName*': this.data.searchVal.trim(),
        '||projectLeader*': this.data.searchVal.trim()
      }
    }
@@ -235,7 +236,8 @@
        'Name*': this.data.searchVal.trim(),
        '||author*': this.data.searchVal.trim(),
        '||isbn*': this.data.searchVal.trim(),
        '||seriesName*': this.data.searchVal.trim()
        '||seriesName*': this.data.searchVal.trim(),
        '||projectLeader*': this.data.searchVal.trim()
      }
    }
    //课程
pages/specialDiscussion/index.js
@@ -276,8 +276,6 @@
    console.log(this.data.searchValue);
    this.ceShiList()
    this.specialDiscussionGet(this.data.batList[this.data.batListValue])
  },
})
pages/test/testCover.js
@@ -96,7 +96,7 @@
      wx.redirectTo({
        url: `/packageBookService/pages/bookServices/examination/examination?bookId=${
          this.data.bookId
        }&productLinkPath=${this.data.productLinkPath}& =${
        }&productLinkPath=${this.data.productLinkPath}&rootCmsItemId=${
          this.data.rootCmsItemId
        }&idPathList=${JSON.stringify(idPathList)}&answerTitle=${
          this.data.answerTitle
services/home/home.js
@@ -21,22 +21,22 @@
          text: '数字课程',
          key: 2,
          icon: '/static/images/home/shuzikecheng@2x.png',
          // url: '/pages/digitalCourses/index',
          url: ''
          url: '/pages/digitalCourses/index',
          // url: ''
        },
        {
          text: '数字教材',
          key: 3,
          icon: '/static/images/home/shuzijiaocai@2x.png',
          // url: '/pages/digitalTextbooks/index',
          url: ''
          url: '/pages/digitalTextbooks/index',
          // url: ''
        },
        {
          text: '专题讨论',
          text: '专题活动',
          key: 4,
          icon: '/static/images/home/zhuantitaolun@2x.png',
          // url: '/pages/specialDiscussion/index',
          url: ''
          url: '/pages/specialDiscussion/index',
          // url: ''
        },
        {
          text: '线上书展',
@@ -66,7 +66,8 @@
          text: '我要出书',
          key: 9,
          icon: '/static/images/home/xueshuzhuzuo@2x.png',
          url: '',
          url: '/packageDomain/pages/publickBookForm/index',
          // url: '',
        },
      ],
    };