bug
闫增涛
2024-09-07 c6c73b7d709322052b9cd6777b3d6657e0d43d30
pages/digitalTextbooks/digitalTextbooksDetails/index.js
@@ -1,5 +1,14 @@
// pages/digitalTextbooks/digitalTextbooksDetails/index.js
import Toast from "tdesign-miniprogram/toast";
import moment from 'moment'
import {
  loginInfo
} from '../../../assets/js/login';
import {
  worksDataBytool
} from "../../../assets/js/toolClass.js";
import SparkMD5 from 'spark-md5'
import FormData from '../../../utils/formdata/index.js';
const app = getApp()
Page({
@@ -7,10 +16,10 @@
   * 页面的初始数据
   */
  data: {
    type: 'basicInformation',
    digitalTextId: '',
    digitalsData: {},
    isFavourite: true,
    richStyle: 'font-size: 28rpx;color: #333; line-height: 48rpx;text-align: justify;margin: 20rpx; ',
    expire: false, //商品或子商品销售方式是否过期
    tabValue: "brief",
    relatedBookData: [],
    publicationDate: '',
@@ -20,7 +29,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",
@@ -32,33 +41,63 @@
      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",
    },
    showIndex1: '',
    catalogue: {
      name: "/static/images/digitalTextbooks/mulu-t@3x.png",
    },
    catalogueClickIcon: {
      name: "/static/images/digitalTextbooks/mulu-t-click@3x.png",
    },
    userInfo: {
      fullName: '', //名称
      userPicture: '' //申请证书用户图片
    },
    pictureMd5: '',
    worksInfo: [],
    isCertificate: {},
    isLearn: false,
    isTest: false,
    publishingUnit: '',
    cbzsImg: '', //出版证书base64
    rzzsImg: '', //认证证书base64
    visible: false,
    showIndex: false,
    closeBtn: false,
    deleteBtn: false,
    images: [],
  },
  /**
   * 生命周期函数--监听页面加载
   */
  onLoad(options) {
    console.log(options.id);
    console.log(options);
    this.setData({
      digitalTextId: options.id
    })
    const token = wx.getStorageSync(app.config.tokenKey)
    if (!token) {
      loginInfo(app, (data) => {
        if (data) {} else {}
      })
    }
    this.digitalTextbooksDetailsGet(this.data.digitalTextId)
    this.getType()
    this.getCertificateList()
  },
  // 格式化日期
  // 格式化日期
@@ -174,7 +213,9 @@
        seriesName: [],
        author: [],
        isbn: [],
        editorUnit: [],
        publicationDate: [],
        publishingUnit: [],
        bookClassification: [],
        paperPrice: [],
        JDLink: [],
@@ -193,88 +234,88 @@
        //epub试读百分比
      }
    }
    app.MG.store.getProductDetail(query).then(res => {
      // console.log(res);
    app.MG.store.getProductDetail(query).then(async res => {
      if (res.datas.purchasedSaleMethodIdList.includes(res.datas.defaultSaleMethodId)) {
        this.setData({
          isBuy: true
        })
      } else {
        this.setData({
          isBuy: false
        })
      }
      // res.datas.publicationDate =
      res.datas.publicationDate = moment(res.datas.publicationDate).format('YYYY年MM月')
      if (res.datas.icon == '') {
        res.datas.icon = '/static/images/default-book-img.png'
      }
      this.setData({
        publicationDate: this.formatDate(res.datas.publicationDate)
      })
      res.datas.price = res.datas.price.toFixed(2)
      res.datas.isFavourite = false
      this.setData({
        digitalsData: res.datas
      })
      let times = new Date(res.datas.defaultSaleMethod.endDate).getTime()
      let startTime = new Date(res.datas.defaultSaleMethod.beginDate).getTime()
      if (times < new Date().getTime() || new Date().getTime() < startTime) {
        this.setData({
          expire: true
        })
      } else {
        this.setData({
          expire: res.false
        })
      }
      wx.setNavigationBarTitle({
        title: res.datas.name,
      })
      if (res.datas.publishingUnit) {
        await this.getBookPublishUnit(res.datas.publishingUnit)
      }
      this.getAboutBook(res.datas.productLinkInfo[res.datas.productLinkInfo.length - 1].LinkPath)
      console.log(this.data.isBuy);
      this.setData({
        loading: false,
        type: 'basicInformation',
      });
      // this.onCe()
    })
  },
  setCoolect() {
    console.log(this.data.digitalsData.id);
    console.log(this.data.digitalsData.isFavourite);
    this.setData({
      isFavourite: !this.data.isFavourite
    })
    if (this.data.digitalsData.isFavourite) {
      app.MG.store
        .delProductLink({
          productIds: [this.data.digitalsData.id],
          linkType: 'FavoriteBookCity'
        })
        .then(() => {
          this.data.digitalsData.isFavourite = false
        })
    } else {
      let params = {
        productIds: [this.data.digitalsData.id],
        linkType: 'FavoriteBookCity'
      }
      app.MG.store.addProductLink(params).then((res) => {
        this.data.digitalsData.isFavourite = true
      })
  //获取图书出版单位
  async getBookPublishUnit(listStr) {
    let query = {
      refCodes: ['publishingUnit']
    }
    await app.MG.store.getProductTypeField(query).then((res) => {
      const list = JSON.parse(listStr)
      let dataList = []
      list.forEach((unit) => {
        JSON.parse(res[0].config).option.forEach((item) => {
          if (item.value == unit) {
            dataList.push(item.name)
          }
        })
      })
      if (dataList.length == list.length) {
        this.setData({
          publishingUnit: dataList.join('  '),
        })
      }
    })
  },
  onTabsChange(event) {
  onTabsChange(event) {
    this.setData({
      tabValue: event.detail.value,
    })
    console.log(this.data.tabValue);
  },
  onTabsClick(event) {
    // console.log(`Click tab, tab-panel value is ${event.detail.value}.`);
  },
  // 获取相关教材
  getAboutBook(path) {
    let query = {
@@ -308,7 +349,6 @@
        } else {
          bookArr = Arr
        }
        bookArr.forEach(item => {
          if (item.icon == '') {
            item.icon = '/static/images/default-book-img.png'
@@ -326,13 +366,17 @@
    })
  },
  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() {
@@ -390,7 +434,6 @@
  //购买按钮
  async buyBtn() {
    if (!this.data.expire) {
      let bookOrdersId = "";
@@ -414,6 +457,7 @@
              orderNum: bookOrdersId,
            })
            .then((res) => {
              this.digitalTextbooksDetailsGet(this.data.digitalTextId)
              if (res) {
                wx.showToast({
                  title: "领取成功",
@@ -444,17 +488,431 @@
  // console.log(item, app.config.textReaderUrl);
  // console.log(token);
  goRead() {
    const item = this.data.digitalsData
    let token = wx.getStorageSync(app.config.tokenKey)
    console.log();
    const URL = app.config.textReaderUrl + '?bookId=' + item.refCode + "&tryPageCount=" + item.probationPage + "&token=" + token
    // 首页测试登录功能,后续注释
    // 检查登录状态
    const token = wx.getStorageSync(app.config.tokenKey)
    if (!token) {
      loginInfo(app, (data) => {
        // 如果不是第一次登录,会执行回调
        if (data) {
          // 登录成功,自动记录token和用户信息,并返回true
          const item = this.data.digitalsData
          wx.navigateTo({
            url: '/pages/digitalTextbooks/digitalTextbooksDetails/components/webView/index?refCode=' + item.refCode + "&tryPageCount=" + item.probationPage
          });
        } else {
          // 出现错误,返回false
        }
      })
    } else {
      // 如果是第一次登录,会跳转至绑定用户信息页面,填写完用户信息后进行登录并储存token和用户信息,结束后跳转回当前页面(携带页面参数)
      const item = this.data.digitalsData
      wx.navigateTo({
        url: '/pages/digitalTextbooks/digitalTextbooksDetails/components/webView/index?refCode=' + item.refCode + "&tryPageCount=" + item.probationPage
      });
    }
    // let token = wx.getStorageSync(app.config.tokenKey)
    // if (token) {
    wx.navigateTo({
      url: '/pages/digitalTextbooks/digitalTextbooksDetails/components/webView/index?refCode=' + item.refCode + "&tryPageCount=" + item.probationPage
    // }
  },
  onTabClick(e) {
    // debugger
    console.log(e);
    let tab = e.currentTarget.dataset.tab;
    this.setData({
      type: tab,
    })
    if (tab == 'basicInformation') {
      this.setData({
        topPos: 0
      })
    } else if (tab == 'certificateInformation') {
      this.setData({
        topPos: this.certificateInformation
      })
    } else if (tab == 'authorSynopsis') {
      this.setData({
        topPos: this.authorSynopsis
      })
    } else if (tab == 'listings') {
      this.setData({
        topPos: this.listings
      })
    } else if (tab == 'relatedTextbooks') {
      this.setData({
        topPos: this.relatedTextbooks
      })
    }
  },
  onScroll(e) {
    let scrollTop = e.detail.scrollTop
    console.log(scrollTop);
    // this.setData({
    //   type: scrollTop
    // })
    if (scrollTop < this.basicInformation) {
      this.setData({
        type: 'basicInformation'
      })
    } else if (scrollTop >= this.basicInformation && scrollTop < this.certificateInformation) {
      this.setData({
        type: 'certificateInformation'
      })
    } else if (scrollTop >= this.certificateInformation && scrollTop < this.authorSynopsis) {
      this.setData({
        type: 'authorSynopsis'
      })
    } else if (scrollTop >= this.authorSynopsis && scrollTop < this.listings) {
      this.setData({
        type: 'listings'
      })
    } else if (scrollTop >= this.listings && scrollTop < this.relatedTextbooks) {
      this.setData({
        type: 'relatedTextbooks'
      })
    }
  },
  onCe() {
    let that = this;
    var query = wx.createSelectorQuery()
    console.log(query, '12355');
    //获取板块一离scroll-view顶部的距离,第一板块实际距离为0,此处获取只为给第二及第三板块减去第一板块距离scroll-view的顶部距离
    wx.createSelectorQuery().select('#basicInformation').boundingClientRect(function (res) {
      console.log(res, '456882588');
      that.basicInformation = res.top
    }).exec()
    //获取板块二离scroll-view顶部的距离
    query.select('#certificateInformation').boundingClientRect(function (res) {
      that.certificateInformation = res.top - that.basicInformation
    }).exec()
    //获取板块三离scroll-view顶部的距离
    query.select('#authorSynopsis').boundingClientRect(function (res) {
      that.authorSynopsis = res.top - that.basicInformation
    }).exec()
    //获取板块四离scroll-view顶部的距离
    query.select('#listings').boundingClientRect(function (res) {
      that.listings = res.top - that.basicInformation
    }).exec()
    //获取板块五离scroll-view顶部的距离
    query.select('#relatedTextbooks').boundingClientRect(function (res) {
      that.relatedTextbooks = res.top - that.basicInformation
    }).exec()
  },
  setCoolect() {
    console.log(456);
    // 首页测试登录功能,后续注释
    // 检查登录状态
    const token = wx.getStorageSync(app.config.tokenKey)
    if (!token) {
      loginInfo(app, (data) => {
        // 如果不是第一次登录,会执行回调
        if (data) {
          if (this.data.digitalsData.isFavourite) {
            app.MG.store
              .delProductLink({
                productIds: [this.data.digitalsData.id],
                linkType: 'FavoriteTextBooks'
              })
              .then(() => {
                this.setData({
                  "digitalsData.isFavourite": false
                })
              })
          } else {
            let params = {
              productIds: [this.data.digitalsData.id],
              linkType: 'FavoriteTextBooks'
            }
            app.MG.store.addProductLink(params).then((res) => {
              this.setData({
                "digitalsData.isFavourite": true
              })
            })
          }
        } else {
          // 出现错误,返回false
        }
      })
    } else {
      if (this.data.digitalsData.isFavourite) {
        app.MG.store
          .delProductLink({
            productIds: [this.data.digitalsData.id],
            linkType: 'FavoriteTextBooks'
          })
          .then(() => {
            this.setData({
              "digitalsData.isFavourite": false
            })
          })
      } else {
        let params = {
          productIds: [this.data.digitalsData.id],
          linkType: 'FavoriteTextBooks'
        }
        app.MG.store.addProductLink(params).then((res) => {
          this.setData({
            "digitalsData.isFavourite": true
          })
        })
      }
    }
  },
  // 我要建议
  suggestBtn() {
    // 检查登录状态
    const token = wx.getStorageSync(app.config.tokenKey);
    console.log(465);
    const child = this.selectComponent("#suggest-component1");
    if (token)
      // child.showDialog();
      this.setData({
        showIndex1: '1'
      })
  },
  //申请证书
  //获取字段
  getType() {
    app.MG.resource.getCmsTypeByRefCode({
      refCodes: ['jsek_textbookCertificate']
    }).then((res) => {
      this.setData({
        worksInfo: res[0].cmsTypeLinks[0].children,
      })
    })
  },
  getCertificateList() {
    const data = {
      start: 0,
      size: 9999,
      topicIdOrRefCode: 'applyTextbookCertificate',
      appRefCode: app.config.appRefCode,
      sort: {
        type: 'Desc',
        field: 'CreateDate'
      }
    }
    app.MG.ugc.getTopicMessageList(data).then((res) => {
      res.datas.map((item) => {
        item.content = JSON.parse(item.content)
        if (item.content.id == this.data.digitalsData.id) {
          this.setData({
            isCertificate: item
          })
        }
      })
    })
  },
  onCertificate() {
    if (!this.data.isBuy) {
      wx.showToast({
        title: "请先购买,体验完整服务",
        icon: "none",
        duration: 1000,
      });
      return false
    }
    // if (!this.data.isLearn) {
    //   wx.showToast({
    //     title: "您的学习任务还未完成,暂不能申请证书,加油哦!",
    //     icon: "none",
    //     duration: 1000,
    //   });
    //   return false
    // }
    if (this.data.isCertificate && this.data.isCertificate.state == 'WaitAudit') {
      wx.showToast({
        title: this.data.isCertificate.state == 'WaitAudit' ? "您申请的证书正在审核中" : this.data.isCertificate.state == 'Normal' ? '您已申请证书' : '',
        icon: "none",
        duration: 1000,
      });
      return false
    }
    var page = getCurrentPages().pop(); // 获取当前页面实例
    page.setData({
      // 动态设置禁止滚动的样式
      disableScrollStyle: 'overflow: hidden;'
    });
    this.setData({
      dialogBox: true,
      scrollJudge: ''
    })
  },
  closeDialog() {
    this.setData({
      dialogBox: false,
      scrollJudge: true
    })
  },
  //姓名
  onFullNameInput(e) {
    this.setData({
      "userInfo.fullName": e.detail.value,
    });
  },
  uploadPicture() {
    var that = this;
    wx.chooseMedia({
      count: 1, // 默认9
      sizeType: ['original', 'compressed'], // 可以指定是原图还是压缩图,默认二者都有
      sourceType: ['album', 'camera'], // 可以指定来源是相册还是相机,默认二者都有
      success: function (res) {
        wx.getFileSystemManager().readFile({
          filePath: res.tempFiles[0].tempFilePath, //选择图片返回的相对路径
          // encoding: 'binary', //编码格式
          success: ress => {
            //成功的回调
            let spark = new SparkMD5.ArrayBuffer();
            spark.append(ress.data);
            let md5 = spark.end(false);
            let formData = new FormData();
            formData.append('Md5', md5);
            formData.append('FileName', md5);
            formData.append('FileType', res.tempFiles[0].fileType);
            formData.appendFile("file", res.tempFiles[0].tempFilePath);
            const data = formData.getData();
            let _token = wx.getStorageSync(app.config.tokenKey);
            let header = {};
            if (_token == null) {
              header["Authorization"] = `Basic ${Base64.encode(website.clientId + ":" + website.clientSecret)}`;
            } else {
              header["Authorization"] = `Bearer ` + _token;
            }
            new Promise((resolve, reject) => {
              wx.request({
                url: app.config.requestCtx + '/file/api/ApiUpload',
                method: 'POST',
                header: {
                  'content-type': data.contentType,
                  ...header
                },
                data: data.buffer,
                success(res) {
                  if (res.statusCode == 200) {
                    resolve(res.data);
                    if (res.data) {
                      that.setData({
                        'userInfo.userPicture': app.config.requestCtx + `/file/GetPreViewImage?md5=` + md5,
                        pictureMd5: md5
                      });
                    }
                  } else {
                    reject('运行时错误,请稍后再试');
                  }
                }
              })
            })
          }
        })
      }
    });
  },
  confirmM() {
    if (this.data.userInfo.fullName) {
      if (this.data.pictureMd5 == '') {
        wx.showToast({
          title: "请上传照片",
          icon: "none",
          duration: 1000,
        });
        return false
      }
      let data = {}
      let bookInfo = {
        bookId: this.data.digitalsData.id,
        icon: this.data.digitalsData.icon,
        name: this.data.digitalsData.name,
        author: this.data.digitalsData.author,
        ISBN: this.data.digitalsData.isbn,
        publicationDate: this.data.digitalsData.publicationDate,
        userPicture: this.data.pictureMd5,
        certificate: this.data.rzzsImg
      }
      data = {
        topicIdOrRefCode: 'applyTextbookCertificate',
        name: this.data.userInfo.fullName,
        content: JSON.stringify(bookInfo),
        state: 'WaitAudit',
        cmsTypeRefCode: 'jsek_textbookCertificate',
        type: 'applyTextbook',
        newDataListRequest: worksDataBytool(this.data.worksInfo, this.data.userInfo)
      }
      app.MG.ugc
        .newTopicMessage(data)
        .then((res) => {
          wx.showToast({
            title: "已提交申请",
            icon: "none",
            duration: 1000,
          });
          this.setData({
            "userInfo.fullName": "",
            dialogBox: false,
            scrollJudge: true
          })
          this.getCertificateList()
        })
        .catch(() => {
          this.setData({
            "userInfo.fullName": "",
          })
        })
    } else {
      wx.showToast({
        title: "姓名不能为空",
        icon: "none",
        duration: 1000,
      });
    }
  },
  //证书查看
  onClick1() {
    this.setData({
      images: ['https://jsek.bnuic.com/home/certificate/szjc.jpg'],
      showIndex: true,
      visible: true,
    })
  },
  onClick2() {
    this.setData({
      images: ['https://jsek.bnuic.com/home/certificate/jczs.jpg'],
      showIndex: true,
      visible: true,
    })
  },
  onClose(e) {
    const {
      trigger
    } = e.detail;
    this.setData({
      visible: false,
    });
  }
})