// pages/digitalTextbooks/digitalTextbooksDetails/index.js
|
import Toast from "tdesign-miniprogram/toast";
|
import {
|
loginInfo
|
} from '../../../assets/js/login';
|
import {
|
worksDataBytool
|
} from "../../../assets/js/toolClass.js";
|
const app = getApp()
|
Page({
|
|
/**
|
* 页面的初始数据
|
*/
|
data: {
|
type: 'basicInformation',
|
digitalTextId: '',
|
digitalsData: {},
|
expire: false, //商品或子商品销售方式是否过期
|
tabValue: "brief",
|
relatedBookData: [],
|
publicationDate: '',
|
isBuy: false,
|
loading: true,
|
briefIcon: {
|
name: "/static/images/digitalTextbooks/jibenxinxi-t@2x.png",
|
},
|
briefIconClick: {
|
name: "/static/images/digitalTextbooks/jibenxinxi-t-click@3x.png",
|
},
|
eBookIcon: {
|
name: "/static/images/digitalTextbooks/zuozhejianjie-t@2x.png",
|
},
|
eBookClickIcon: {
|
name: "/static/images/digitalTextbooks/zuozhejianjie@2x.png",
|
},
|
teachResourcesIcon: {
|
name: "/static/images/digitalTextbooks/zuozhejianjie-t@2x.png",
|
},
|
teachResourcesClickIcon: {
|
name: "/static/images/digitalTextbooks/zuozhejianjie-t-click@3x.png",
|
},
|
learnResourceIcon: {
|
name: "/static/images/digitalTextbooks/shengshu-t@2x.png",
|
},
|
learnResourceClickIcon: {
|
name: "/static/images/digitalTextbooks/zhengshu-t-click@3x.png",
|
},
|
testResourceIocn: {
|
name: "/static/images/digitalTextbooks/link-t@3x.png",
|
},
|
testResourceClickIocn: {
|
name: "/static/images/digitalTextbooks/link-t-click@3x.png",
|
},
|
|
catalogue: {
|
name: "/static/images/digitalTextbooks/mulu-t@3x.png",
|
},
|
catalogueClickIcon: {
|
name: "/static/images/digitalTextbooks/mulu-t-click@3x.png",
|
},
|
userInfo: {
|
fullName: '' //名称
|
},
|
worksInfo: [],
|
isCertificate: {},
|
isLearn: false,
|
isTest: false,
|
},
|
|
/**
|
* 生命周期函数--监听页面加载
|
*/
|
onLoad(options) {
|
console.log(options);
|
this.setData({
|
digitalTextId: options.id
|
})
|
this.digitalTextbooksDetailsGet(this.data.digitalTextId)
|
this.getType()
|
this.getCertificateList()
|
},
|
// 格式化日期
|
// 格式化日期
|
formatDate(dateString) {
|
if (!dateString) {
|
return "";
|
}
|
const match = dateString.match(
|
/^(\d{4})\/(\d{1,2})\/(\d{1,2}) (\d{1,2}):(\d{1,2}):(\d{1,2})$/
|
);
|
if (!match) {
|
throw new Error("Invalid date format");
|
}
|
|
const [, year, month, day, hours, minutes, seconds] = match;
|
const date = new Date(
|
parseInt(year, 10),
|
parseInt(month, 10) - 1,
|
parseInt(day, 10),
|
parseInt(hours, 10),
|
parseInt(minutes, 10),
|
parseInt(seconds, 10)
|
);
|
|
if (isNaN(date.getTime())) {
|
throw new Error("Invalid date");
|
}
|
|
// 由于小程序环境可能不支持 Intl.DateTimeFormat,我们使用简化的格式化方法
|
const formatted = `${year}年${this.formatMonth(month)}`;
|
return formatted;
|
}, // 简化的月份格式化函数,返回月份的中文表达
|
formatMonth(month) {
|
const months = [
|
"1月",
|
"2月",
|
"3月",
|
"4月",
|
"5月",
|
"6月",
|
"7月",
|
"8月",
|
"9月",
|
"10月",
|
"11月",
|
"12月",
|
];
|
return months[parseInt(month, 10) - 1];
|
},
|
/**
|
* 生命周期函数--监听页面初次渲染完成
|
*/
|
onReady() {
|
|
},
|
|
/**
|
* 生命周期函数--监听页面显示
|
*/
|
onShow() {
|
|
},
|
|
/**
|
* 生命周期函数--监听页面隐藏
|
*/
|
onHide() {
|
|
},
|
|
/**
|
* 生命周期函数--监听页面卸载
|
*/
|
onUnload() {
|
this.setData({
|
digitalsData: {}
|
})
|
},
|
|
/**
|
* 页面相关事件处理函数--监听用户下拉动作
|
*/
|
onPullDownRefresh() {
|
|
},
|
|
/**
|
* 页面上拉触底事件的处理函数
|
*/
|
onReachBottom() {
|
|
},
|
|
/**
|
* 用户点击右上角分享
|
*/
|
onShareAppMessage() {
|
|
},
|
|
|
digitalTextbooksDetailsGet(digitalId) {
|
|
let query = {
|
path: '*',
|
queryType: '*',
|
productId: digitalId,
|
storeInfo: 'jsek_digitalTextbooks',
|
coverSize: {
|
height: 300
|
},
|
fields: {
|
seriesName: [],
|
author: [],
|
isbn: [],
|
publicationDate: [],
|
bookClassification: [],
|
paperPrice: [],
|
JDLink: [],
|
tmallLink: [],
|
dangdangLink: [],
|
weidianLink: [],
|
content: [],
|
authorIntroduction: [],
|
isApplyBook: [],
|
isSell: [],
|
pdf: [],
|
protectedEpub: [],
|
probationPage: [], //pdf试读页数
|
freeEpubPage: [],
|
catalogue: []
|
//epub试读百分比
|
}
|
}
|
app.MG.store.getProductDetail(query).then(res => {
|
if (res.datas.purchasedSaleMethodIdList.includes(res.datas.defaultSaleMethodId)) {
|
this.setData({
|
isBuy: true
|
})
|
} else {
|
this.setData({
|
isBuy: false
|
})
|
}
|
// res.datas.publicationDate =
|
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)
|
|
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,
|
})
|
|
this.getAboutBook(res.datas.productLinkInfo[res.datas.productLinkInfo.length - 1].LinkPath)
|
console.log(this.data.isBuy);
|
this.setData({
|
loading: false,
|
type: 'basicInformation',
|
|
});
|
|
// this.onCe()
|
|
})
|
},
|
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 = {
|
path,
|
queryType: '*',
|
coverSize: {
|
height: 243
|
},
|
paging: {
|
start: 0,
|
size: 99
|
},
|
fields: {
|
author: [],
|
publicationDate: []
|
}
|
}
|
app.MG.store.getProductList(query).then(res => {
|
const Arr = res.datas.filter(
|
(item) => item.id != this.data.digitalsData.id
|
);
|
let bookArr = []
|
if (Arr.length) {
|
if (Arr.length > 9) {
|
for (var i = 0; i < 9; i++) {
|
var _num = Math.floor(Math.random() * Arr.length)
|
var mm = Arr[_num]
|
Arr.splice(_num, 1)
|
bookArr.push(mm)
|
}
|
} else {
|
bookArr = Arr
|
}
|
bookArr.forEach(item => {
|
if (item.icon == '') {
|
item.icon = '/static/images/default-book-img.png'
|
}
|
})
|
this.setData({
|
relatedBookData: bookArr
|
})
|
console.log(this.data.relatedBookData);
|
} else {
|
this.setData({
|
relatedBookData: []
|
})
|
}
|
})
|
},
|
onCorrelationBook(e) {
|
const item = e.currentTarget.dataset.item
|
// const event = {
|
// detail: {
|
// value: "brief"
|
// }
|
// }
|
// this.onTabsChange(event)
|
// this.digitalTextbooksDetailsGet(item.id)
|
this.onLoad({
|
id: item.id
|
})
|
},
|
// 图书添加购物车
|
async addBookShopcCar() {
|
if (!this.data.expire) {
|
const shoppingCartGetId = [];
|
let query = {
|
start: 0,
|
size: 9999,
|
filterList: [],
|
searchList: [],
|
};
|
const res = await app.MG.store.getShoppingCartProductList(query);
|
res.datas.forEach((item) => {
|
shoppingCartGetId.push(item.saleMethod.id);
|
});
|
const determine = shoppingCartGetId.some(
|
(item) => item == this.data.digitalsData.defaultSaleMethodId
|
);
|
if (!determine) {
|
let query = {
|
requests: [{
|
saleMethodId: this.data.digitalsData.defaultSaleMethodId,
|
storeEventId: null,
|
agentCode: "电子书",
|
}, ],
|
};
|
const addRes = app.MG.store.addShoppingCart(query);
|
this.showSuccessToast();
|
} else {
|
Toast({
|
context: this,
|
selector: "#t-toast",
|
message: "该书已在购物车,请勿重复添加",
|
theme: "warning",
|
direction: "column",
|
});
|
}
|
} else {
|
wx.showToast({
|
title: "商品不在有效期",
|
icon: "none",
|
duration: 1000,
|
});
|
}
|
},
|
showSuccessToast() {
|
Toast({
|
context: this,
|
selector: "#t-toast",
|
message: "添加成功",
|
theme: "success",
|
direction: "column",
|
});
|
},
|
|
|
//购买按钮
|
async buyBtn() {
|
if (!this.data.expire) {
|
let bookOrdersId = "";
|
let query = {
|
remarks: "电子书",
|
requests: [{
|
saleMethodId: this.data.digitalsData.defaultSaleMethodId,
|
count: 1,
|
}, ],
|
};
|
// 发起订单初始化请求并等待结果
|
const res = await app.MG.store.initOrder(query);
|
// 获取订单号并赋值给 orderNumber.value
|
console.log(res, 'res456');
|
bookOrdersId = res.orderNumber;
|
// 检查订单号是否存在
|
if (bookOrdersId) {
|
if (this.data.digitalsData.price == "0.00") {
|
app.MG.store
|
.confirmOrder({
|
orderNum: bookOrdersId,
|
})
|
.then((res) => {
|
this.digitalTextbooksDetailsGet(this.data.digitalTextId)
|
if (res) {
|
wx.showToast({
|
title: "领取成功",
|
icon: "none",
|
duration: 1000,
|
});
|
this.getBookInfo(this.data.bookDetail.id);
|
}
|
});
|
} else {
|
const url = "/pages/cart/paymentPage/index?orderNumber=" + bookOrdersId + '&onNorderSaleMethod=' + res.saleMethodLinks[0].orderSaleMethod.id;
|
wx.navigateTo({
|
url,
|
});
|
}
|
} else {
|
console.log(222);
|
}
|
} else {
|
wx.showToast({
|
title: "商品不在有效期",
|
icon: "none",
|
duration: 1000,
|
});
|
}
|
},
|
|
// console.log(item, app.config.textReaderUrl);
|
// console.log(token);
|
goRead() {
|
// 首页测试登录功能,后续注释
|
// 检查登录状态
|
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) {
|
|
|
|
|
// }
|
|
|
},
|
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-component");
|
// if (token)
|
// // child.showDialog();
|
// this.setData({
|
// showIndex: '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: "您申请的证书正在审核中",
|
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,
|
});
|
},
|
confirmM() {
|
if (this.data.userInfo.fullName) {
|
let data = {}
|
data = {
|
topicIdOrRefCode: 'applyTextbookCertificate',
|
name: this.data.userInfo.fullName,
|
content: JSON.stringify(this.data.digitalsData),
|
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: ['/static/images/certificate/cbzs.jpg'],
|
showIndex: true,
|
visible: true,
|
})
|
},
|
onClick2() {
|
this.setData({
|
images: ['/static/images/certificate/rzzs.jpg'],
|
showIndex: true,
|
visible: true,
|
})
|
},
|
onClose(e) {
|
const {
|
trigger
|
} = e.detail;
|
this.setData({
|
visible: false,
|
});
|
}
|
|
})
|