// pages/bookServices/detail/index.js
|
import Message from 'tdesign-miniprogram/message/index.js';
|
import Toast from 'tdesign-miniprogram/toast/index';
|
const app = getApp();
|
Page({
|
/**
|
* 页面的初始数据
|
*/
|
data: {
|
bookId: '',
|
barHeight: '',
|
navBarHeight: '',
|
options: {
|
id: '',
|
name: '',
|
},
|
bookDetail: {},
|
link: {
|
jd: '',
|
tamll: '',
|
dang: '',
|
micro: '',
|
},
|
tabValue: 'brief',
|
cmsDatas: [], // 资源refCode列表
|
ids: [1],
|
list: [],
|
teachResources: [],
|
teach: [],
|
learn: [],
|
test: [],
|
openTeachids: [],
|
openLearnids: [],
|
openTestids: [],
|
resourceClassList: [], // 资源所属分类
|
applyState: "", // 教学资源申请状态
|
deadline: "", // 教学资源申请有效日期
|
rejectCause: "", // 下载拒绝原因
|
buyIdList: [],
|
shoppingCartGetId: [], // 已购买id列表
|
shoppingList: [],
|
loading: false,
|
isShowTeachDownload: false, // 提示PC下载弹窗状态
|
confirmBtn: { content: '我知道了', variant: 'base' },
|
mockData: {
|
id: 0, // 销售id
|
price: 0, // 售价
|
count: 0, // 组卷已购买次数
|
useCount: 0, // 组件已使用次数
|
residue: 0, // 组卷剩余次数
|
mockList: [] // 用户组卷提交信息
|
}
|
},
|
|
|
resetTree: function (e) {
|
this.setData({
|
currentCheck: e.detail.checkedItem,
|
list: e.detail.changeList
|
})
|
},
|
/**
|
* 生命周期函数--监听页面加载
|
*/
|
onLoad(options) {
|
const systInfo = wx.getSystemInfoSync();
|
const menu = wx.getMenuButtonBoundingClientRect(); // 胶囊信息
|
const navBarHeight = (menu.top - systInfo.statusBarHeight) * 2 + menu.height; // 导航栏高度
|
this.setData({
|
bookId: options.id,
|
barHeight: systInfo.statusBarHeight,
|
navBarHeight: navBarHeight,
|
});
|
this.setData({
|
options: {
|
id: options.id,
|
name: options.name,
|
},
|
});
|
this.getBookInfo(options.id);
|
this.getResourceClass() // 获取资源所属分类
|
const token = wx.getStorageSync('jsek-token')
|
if (token) {
|
this.getShoppingCartProductGet()
|
this.getApplyInfo(options.id)
|
this.getMockData()
|
}
|
},
|
|
/**
|
* 生命周期函数--监听页面初次渲染完成
|
*/
|
onReady() {
|
|
},
|
|
/**
|
* 生命周期函数--监听页面显示
|
*/
|
onShow() { },
|
|
/**
|
* 生命周期函数--监听页面隐藏
|
*/
|
onHide() { },
|
|
/**
|
* 生命周期函数--监听页面卸载
|
*/
|
onUnload() { },
|
|
/**
|
* 页面相关事件处理函数--监听用户下拉动作
|
*/
|
onPullDownRefresh() {
|
|
|
},
|
|
/**
|
* 页面上拉触底事件的处理函数
|
*/
|
onReachBottom() {
|
if (this.data.tabValue == 'jesk_note') {
|
const child = this.selectComponent('#note')
|
child.onReachBottom()
|
}
|
},
|
|
/**
|
* 用户点击右上角分享
|
*/
|
onShareAppMessage() { },
|
// 格式化日期
|
formatDate(dateString) {
|
if (!dateString) {
|
return 'Invalid date';
|
}
|
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];
|
},
|
// 金额显示.00格式
|
numFormat(value) {
|
if (!value) return '0.00';
|
value = Number(value).toFixed(2);
|
var intPart = Math.trunc(value); // 获取整数部分
|
var intPartFormat = intPart.toString().replace(/(\d)(?=(?:\d{3})+$)/g, '$1,'); // 将整数部分逢三一断
|
var floatPart = '.00'; // 预定义小数部分
|
var value2Array = value.split('.');
|
// =2表示数据有小数位
|
if (value2Array.length === 2) {
|
floatPart = value2Array[1].toString(); // 拿到小数部分
|
if (floatPart.length === 1) {
|
return `${intPartFormat}.${floatPart}0`;
|
}
|
return `${intPartFormat}.${floatPart}`;
|
}
|
return intPartFormat + floatPart;
|
},
|
// 返回
|
goBack() {
|
wx.navigateBack();
|
},
|
// 获取图书详情
|
getBookInfo(id) {
|
this.setData({
|
"mockData'.id": 0,
|
"mockData.price": 0,
|
"mockData.count": 0
|
})
|
const query = {
|
path: '*',
|
queryType: '*',
|
productId: id,
|
favoriteTypes: 'FavoriteBookCity',
|
itemFields: {
|
'SysType=': 'CmsFolder',
|
},
|
coverSize: {
|
height: 300,
|
},
|
fields: {
|
seriesName: [],
|
author: [],
|
isbn: [],
|
publicationDate: [],
|
bookClassification: [],
|
paperPrice: [],
|
JDLink: [],
|
tmallLink: [],
|
dangdangLink: [],
|
weidianLink: [],
|
content: [],
|
authorIntroduction: [],
|
// isApplyPaperBook: [],
|
// isApplyEBook: [],
|
isApplyBook: [],
|
isSell: [],
|
pdf: [],
|
protectedEpub: [],
|
probationPage: [], //pdf试读页数
|
freeEpubPage: [], //epub试读百分比
|
},
|
};
|
app.MG.store.getProductDetail(query).then(async (res) => {
|
console.log(res.datas);
|
this.setData({
|
bookDetail: res.datas,
|
cmsDatas: res.datas.cmsDatas[0].datas,
|
buyIdList: res.datas.purchasedSaleMethodIdList
|
});
|
// 获取图书分类
|
const iconType = JSON.parse(res.datas.bookClassification)[0][0];
|
const classType = JSON.parse(res.datas.bookClassification)[0][1];
|
const className = await this.getBookClass(iconType, classType)
|
// 获取组卷销售id
|
if (res.datas.saleMethod && res.datas.saleMethod.length) {
|
res.datas.saleMethod.forEach((item) => {
|
if (item.SaleType == 'combinationTestPaper') {
|
this.setData({
|
'mockData.id': item.Id,
|
'mockData.price': item.Price
|
})
|
}
|
})
|
}
|
// 获取组卷已购买次数
|
if (res.datas.purchasedSaleMethodIdList && res.datas.purchasedSaleMethodIdList.length) {
|
if (this.data.mockData.id) {
|
let count = res.datas.purchasedSaleMethodIdList.filter(
|
(item) => item == this.data.mockData.id
|
).length
|
this.setData({
|
'mockData.count': count
|
})
|
}
|
}
|
console.log('组卷信息', this.data.mockData);
|
this.setData({
|
'bookDetail.publicationDate': this.formatDate(this.data.bookDetail.publicationDate),
|
'bookDetail.class': className,
|
'bookDetail.price': this.numFormat(this.data.bookDetail.price),
|
'bookDetail.oldPrice': this.numFormat(this.data.bookDetail.oldPrice),
|
'bookDetail.paperPrice': this.numFormat(this.data.bookDetail.paperPrice),
|
});
|
});
|
|
},
|
// 获取图书分类
|
async getBookClass(iconType, classType) {
|
let name = '';
|
const query = {
|
refCodes: ['bookClassification'],
|
};
|
await app.MG.store.getProductTypeField(query).then((res) => {
|
JSON.parse(res[0].config).option.forEach((item) => {
|
if (item.value == iconType) {
|
item.child.forEach((citem) => {
|
if (citem.value == classType) {
|
name = citem.name;
|
}
|
});
|
}
|
});
|
});
|
return name;
|
},
|
// 收藏
|
setCollect() {
|
if (this.data.bookDetail.isFavourite) {
|
app.MG.store
|
.delProductLink({
|
productIds: [this.data.bookDetail.id],
|
linkType: 'FavoriteBookCity',
|
})
|
.then(() => {
|
this.setData({
|
'bookDetail.isFavourite': false
|
})
|
Message.success({
|
context: this,
|
offset: [20, 32],
|
duration: 5000,
|
content: '这是一条成功的提示消息',
|
});
|
});
|
} else {
|
const params = {
|
productIds: [this.data.bookDetail.id],
|
linkType: 'FavoriteBookCity',
|
};
|
app.MG.store.addProductLink(params).then((res) => {
|
this.setData({
|
'bookDetail.isFavourite': true
|
})
|
Message.success({
|
context: this,
|
offset: ['20rpx', '32rpx'],
|
duration: 2000,
|
content: '收藏成功',
|
});
|
});
|
}
|
},
|
// 我要建议
|
suggestBtn() {
|
const child = this.selectComponent('#suggest-component')
|
child.showDialog()
|
},
|
// 跳转网店
|
goShop(e) {
|
const { link } = e.currentTarget.dataset;
|
wx.navigateTo({
|
url: `/pages/bookServices/webpage/index?url=${link}`,
|
})
|
},
|
onTabsChange(e) {
|
this.setData({
|
tabValue: e.detail.value
|
})
|
if (e.detail.label == '教学资源' || e.detail.label == '云学习' || e.detail.label == '云测试') {
|
const checkData = this.data.cmsDatas.find(item => item.refCode == e.detail.value)
|
if (checkData) {
|
if ((e.detail.value == 'jsek_teachingResources' && !this.data.teach.length)
|
|| (e.detail.value == 'jsek_cloudLearning' && !this.data.learn.length)
|
|| (e.detail.value == 'questionBank' && !this.data.test.length)) {
|
this.getResourceData(checkData)
|
}
|
|
}
|
} else if (e.detail.label == '云笔记') {
|
const token = wx.getStorageSync('jsek-token')
|
const child = this.selectComponent('#note')
|
child.handleSubmitTitle()
|
if (token) {
|
child.changeLoading()
|
child.getNoteList()
|
}
|
|
}
|
},
|
// 获取资源所属分类
|
getResourceClass() {
|
let query = {
|
refCodes: ['resourcesClassification']
|
}
|
app.MG.store.getProductTypeField(query).then((res) => {
|
this.setData({
|
resourceClassList: JSON.parse(res[0].config).option
|
})
|
})
|
},
|
// 获取教学资源 云学习 云测试
|
getResourceData(type) {
|
this.setData({
|
loading: true
|
})
|
let query = {
|
path: '*',
|
queryType: '*',
|
productId: this.data.bookDetail.id,
|
cmsPath: type.productLinkPath,
|
itemFields: {
|
SysType: 'CmsFolder',
|
// 资源类型,试读文件,是否允许下载等参数
|
selectType: [],
|
freeFile: [],
|
file: [],
|
resourcesClassification: [],
|
isDownload: [],
|
jsek_resourceBrief: [],
|
jsek_link: [],
|
jsek_questionBank: []
|
},
|
pading: {
|
start: 0,
|
size: 999
|
},
|
}
|
app.MG.store
|
.getProductDetail(query)
|
.then(async (res) => {
|
// 云测试,递归请求里层数据
|
if (type.refCode == 'questionBank') {
|
const data = res.datas.cmsDatas[0].datas.filter(
|
(item) => item.refCode == 'jsek_questionBank'
|
)
|
if (data.length) return this.getResourceData(data[0])
|
}
|
//教学资源 云学习
|
if (type.refCode == 'jsek_teachingResources' || type.refCode == 'jsek_cloudLearning') {
|
if (res.datas.cmsDatas[0].datas.length > 0) {
|
if (type.refCode == 'jsek_teachingResources') {
|
res.datas.cmsDatas[0].datas.forEach(item => {
|
item.checked = false
|
})
|
const list = await this.getAllResource(res.datas.cmsDatas[0].datas)
|
|
console.log(list, 'list');
|
this.setData({
|
teach: list,
|
loading: false
|
})
|
this.findChildIds(this.data.teach, this.data.openTeachids = [])
|
} else if (type.refCode == 'jsek_cloudLearning') {
|
const list = await this.getAllResource(res.datas.cmsDatas[0].datas)
|
this.setData({
|
learn: list,
|
loading: false
|
})
|
this.findChildIds(this.data.learn, this.data.openLearnids = [])
|
}
|
} else {
|
// 无数据
|
}
|
} else if (type.refCode == 'jsek_questionBank') {
|
// const list = await this.getAllResource(res.datas.cmsDatas[0].datas)
|
this.setData({
|
test: res.datas.cmsDatas[0].datas,
|
loading: false
|
})
|
} else {
|
console.log('其他');
|
}
|
})
|
.catch((e) => {
|
console.log(e)
|
})
|
},
|
// 获取tag下所有资源
|
async getAllResource(data) {
|
if (!data.length) return false
|
for (let i = 0; i < data.length; i++) {
|
let item = data[i]
|
if (item.sysType == 'CmsFolder' && item.childrenCount > 0) {
|
item.children = []
|
item.children = await this.getFolderItem(item.productLinkPath)
|
await this.getAllResource(item.children)
|
}
|
}
|
return data
|
},
|
// 获取资源接口
|
async getFolderItem(path) {
|
let query = {
|
path: '*',
|
queryType: '*',
|
productId: this.data.bookDetail.id,
|
cmsPath: path,
|
itemFields: {
|
SysType: 'CmsFolder',
|
// 资源类型,试读文件,是否允许下载等参数
|
selectType: [],
|
freeFile: [],
|
file: [],
|
protectedFile: [],
|
resourcesClassification: [],
|
isDownload: [],
|
jsek_resourceBrief: [],
|
jsek_link: [],
|
accessType: []
|
},
|
pading: {
|
start: 0,
|
size: 999
|
},
|
}
|
const data = await app.MG.store.getProductDetail(query)
|
data.datas.cmsDatas[0].datas.forEach((item) => {
|
this.data.resourceClassList.forEach((type) => {
|
if (type.value == item.resourcesClassification) item.resourceClass = type.name
|
})
|
// 网页 不能下载 私有文件
|
if (item.sysType == 'CmsItem') {
|
if (item.selectType == 'webpage') {
|
item.disabled = true
|
} else {
|
if (item.isDownload != 1) {
|
item.disabled = true
|
}
|
}
|
if (item.file) {
|
if (item.fileMap[item.file].protectType == 'Private') item.disabled = true
|
}
|
}
|
})
|
data.datas.cmsDatas[0].datas.forEach(item => {
|
if (this.data.tabValue == 'jsek_teachingResources') {
|
item.checked = false
|
} else if (this.data.tabValue == 'jsek_cloudLearning') {
|
item.isbuy = this.resourceIsBuy(item)
|
item.isShopCar = this.isShoppingCart(item)
|
}
|
})
|
return data.datas.cmsDatas[0].datas
|
},
|
// 获取展开项
|
findChildIds(data, result) {
|
let index = 0
|
for (let i = 0; i < data.length; i++) {
|
if (index < 3) {
|
const item = data[i]
|
if (item.childrenFolderCount > 0) {
|
result.push(item.id)
|
for (let j = 0; j < item.children.length; j++) {
|
if (index < 3) {
|
const childrenItme = item.children[j]
|
if (item.childrenCount > 0) {
|
result.push(childrenItme.id)
|
index += 1
|
}
|
} else {
|
break
|
}
|
}
|
} else if (item.childrenCount > 0) {
|
result.push(item.id)
|
index += 1
|
}
|
} else {
|
break
|
}
|
}
|
},
|
|
// 图书添加购物车
|
async addBookShopcCar() {
|
const shoppingCartGetId = []
|
|
let query = {
|
start: 0,
|
size: 999,
|
filterList: [],
|
searchList: []
|
}
|
const res = await app.MG.store.getShoppingCartProductList(query)
|
res.datas.forEach((item) => {
|
shoppingCartGetId.push(item.saleMethod.id)
|
})
|
console.log(shoppingCartGetId, 'shoppingCartGetId');
|
console.log(this.data.bookDetail.defaultSaleMethodId, 'this.data.bookDetail.defaultSaleMethodId');
|
const determine = shoppingCartGetId.some((item) => item == this.data.bookDetail.defaultSaleMethodId)
|
console.log(determine);
|
|
if (!determine) {
|
let query = {
|
requests: [
|
{
|
saleMethodId: this.data.bookDetail.defaultSaleMethodId,
|
storeEventId: null,
|
agentCode: '电子书'
|
}
|
]
|
}
|
const addRes = app.MG.store.addShoppingCart(query)
|
this.showSuccessToast()
|
|
} else {
|
Toast({
|
context: this,
|
selector: '#t-toast',
|
message: '已添加',
|
theme: 'success',
|
direction: 'column',
|
});
|
}
|
|
},
|
|
showSuccessToast() {
|
Toast({
|
context: this,
|
selector: '#t-toast',
|
message: '添加成功',
|
theme: 'success',
|
direction: 'column',
|
});
|
},
|
|
|
|
async buyBook() {
|
let bookOrdersId = ''
|
let query = {
|
remarks: '电子书',
|
requests: [
|
{
|
saleMethodId: this.data.bookDetail.defaultSaleMethodId,
|
count: 1
|
}
|
]
|
}
|
// 发起订单初始化请求并等待结果
|
const res = await app.MG.store.initOrder(query)
|
// 获取订单号并赋值给 orderNumber.value
|
bookOrdersId = res.orderNumber
|
console.log(bookOrdersId);
|
// 检查订单号是否存在
|
if (bookOrdersId) {
|
const url = '/pages/cart/paymentPage/index?orderNumber=' + bookOrdersId
|
wx.navigateTo({
|
url
|
})
|
} else {
|
console.log(222);
|
}
|
|
},
|
|
// 获取教学资源下载是否申请通过
|
getApplyInfo(id) {
|
// 获取当前时间
|
const currentDate = new Date()
|
let query = {
|
sort: {
|
type: 'Desc',
|
field: 'CreateDate'
|
},
|
start: 0,
|
size: 99999,
|
appRefCode: app.config.appRefCode,
|
topicIdOrRefCode: 'productDownLoad'
|
}
|
app.MG.ugc.getTopicMessageList(query).then((res) => {
|
const applyResource = res.datas.find((item) => {
|
let content = []
|
try {
|
content = JSON.parse(item.content)
|
} catch (error) {
|
content = []
|
}
|
if (Array.isArray(content)) return content.find((citem) => citem.id == id)
|
return false
|
})
|
// 有申请记录
|
if (applyResource) {
|
if (applyResource.state == 'Reject') {
|
this.setData({
|
rejectCause: JSON.parse(applyResource.feedBack).reason,
|
applyState: 'Reject'
|
})
|
} else if (applyResource.state == 'Normal') {
|
const endDate = JSON.parse(applyResource.feedBack).endDate
|
// const endDate = new Date(JSON.parse(applyResource.feedBack).endDate + ' 23:59:59').getTime()
|
if (endDate == '永久') {
|
this.setData({
|
applyState: 'Normal',
|
deadline: '永久',
|
})
|
console.log('有效日期', this.data.deadline);
|
} else {
|
|
let endTime = new Date(endDate + ' 23:59:59').getTime()
|
this.setData({
|
deadline: endDate + ' 23:59:59'
|
})
|
if (currentDate.getTime() < endTime) {
|
// 未超时
|
this.setData({
|
applyState: 'Normal'
|
})
|
} else {
|
this.setData({
|
applyState: 'none'
|
})
|
}
|
}
|
} else {
|
this.setData({
|
applyState: applyResource.state
|
})
|
}
|
} else {
|
this.setData({
|
applyState: 'none'
|
})
|
}
|
})
|
console.log('有效日期', this.data.deadline);
|
},
|
// 申请教学资源
|
applyResource() {
|
// let role = userStore.userInfo ? userStore.userInfo.role : null
|
// if (role) {
|
// if (role == 'Teacher') {
|
// 申请教学资源
|
let query = {
|
topicIdOrRefCode: 'productDownLoad',
|
type: 'applyForDownload',
|
state: 'WaitAudit',
|
cmsTypeRefCode: '',
|
newDataListRequest: [],
|
name: this.data.bookDetail.name, // name为申请的书本名称
|
content: JSON.stringify([
|
{
|
name: this.data.bookDetail.name,
|
id: this.data.bookDetail.id,
|
// defaultSaleMethodId: bookData.value.defaultSaleMethodId,
|
icon: this.data.bookDetail.icon
|
}
|
])
|
}
|
app.MG.ugc.newTopicMessage(query).then((res) => {
|
if (res) {
|
Message.success('申请已提交,请待审核通过后下载')
|
}
|
this.getApplyInfo(this.data.bookDetail.id)
|
})
|
// } else {
|
// ElMessageBox.confirm('请先进行教师认证!', '尊敬的用户,您好!', {
|
// confirmButtonText: '去认证',
|
// cancelButtonText: '取消',
|
// type: 'warning'
|
// })
|
// .then(() => {
|
// isShow.value = true
|
// })
|
// .catch(() => { })
|
// }
|
// } else {
|
// // logIn()
|
// }
|
},
|
// 教学资源下载前往PC提示Diialog
|
closeTeachDownload() {
|
this.setData({
|
isShowTeachDownload: false
|
})
|
},
|
// 下载功能
|
downloadTeach(e) {
|
this.setData({
|
isShowTeachDownload: true
|
})
|
console.log('zhuan', this.data.isShowTeachDownload);
|
// const data = e.detail.value
|
// // const data
|
// // let role = userStore.userInfo ? userStore.userInfo.role : null
|
// // if (role) {
|
// // if (role == 'Teacher') {
|
// if (this.properties.applyState == 'Normal' || this.properties.applyState == 'none') {
|
// // 是否允许下载
|
// if (data.isDownload == 1) {
|
// // 申请通过
|
// let url = app.config.requestCtx + '/file/api/ApiDownloadForAuthorize?md5='
|
// if (data.file) {
|
// // 判断是否私有
|
// if (data.fileMap[data.file].protectType == 'Private')
|
// return Message.error({
|
// context: this,
|
// offset: ['20rpx', '32rpx'],
|
// duration: 5000,
|
// content: '该文件无法下载'
|
// })
|
// url = url + data.file + '&token=' + wx.getStorageSync('jsek-token')
|
// } else if (data.freeFile) {
|
// url = url + data.freeFile + '&token=' + wx.getStorageSync('jsek-token')
|
// } else {
|
// Message.error({
|
// context: this,
|
// offset: ['20rpx', '32rpx'],
|
// duration: 5000,
|
// content: '暂无资源',
|
// })
|
// }
|
// this.downloadFile(url)
|
// } else {
|
// Message.error({
|
// context: this,
|
// offset: ['20rpx', '32rpx'],
|
// duration: 5000,
|
// content: '该资源无法下载',
|
// })
|
// }
|
// } else if (this.properties.applyState == 'WaitAudit') {
|
// // ElMessageBox.confirm('请先申请下载!', '尊敬的用户,您好!', {
|
// // confirmButtonText: '申请',
|
// // cancelButtonText: '取消',
|
// // type: 'warning'
|
// // })
|
// // .then(() => applyBookInfo())
|
// // .catch()
|
// Message.error({
|
// context: this,
|
// offset: ['20rpx', '32rpx'],
|
// duration: 5000,
|
// content: '该资源下载申请审核中',
|
// })
|
// } else if (this.properties.applyState == 'Reject') {
|
// Message.error({
|
// context: this,
|
// offset: ['20rpx', '32rpx'],
|
// duration: 5000,
|
// content: '资源下载申请未通过'
|
// })
|
|
// } else {
|
// // Message.error({
|
// // context: this,
|
// // offset: ['20rpx', '32rpx'],
|
// // duration: 5000,
|
// // content: '请先申请下载'
|
// // })
|
// console.log('请先申请下载');
|
// }
|
// // } else {
|
// // ElMessageBox.confirm('请先进行教师认证!', '尊敬的用户,您好!', {
|
// // confirmButtonText: '去认证',
|
// // cancelButtonText: '取消',
|
// // type: 'warning'
|
// // })
|
// // .then(() => {
|
// // isShow.value = true
|
// // })
|
// // .catch(() => { })
|
// // }
|
// // } else {
|
// // logIn()
|
// // }
|
},
|
downloadFile(url) {
|
wx.downloadFile({
|
url: url,
|
success: function (res) {
|
// 下载成功后,调用saveImageToPhotosAlbum函数保存图片到本地
|
wx.saveFile({
|
tempFilePath: res.tempFilePath,
|
success: function (res) {
|
wx.showToast({
|
title: '下载成功',
|
icon: 'success'
|
})
|
},
|
fail: function (res) {
|
wx.showToast({
|
title: '下载失败',
|
icon: 'none'
|
})
|
}
|
})
|
},
|
fail: function (res) {
|
wx.showToast({
|
title: '下载失败',
|
icon: 'none'
|
})
|
}
|
})
|
},
|
// 判断资源是否购买
|
resourceIsBuy(data) {
|
if (data.saleMethod && data.saleMethod.length) {
|
const isSHow = this.data.buyIdList.some((item) => item == data.saleMethod[0].Id)
|
return !isSHow
|
} else {
|
return false
|
}
|
},
|
// 获取已购买商品
|
getShoppingCartProductGet() {
|
let query = {
|
start: 0,
|
size: 999,
|
filterList: [],
|
searchList: []
|
}
|
app.MG.store.getShoppingCartProductList(query).then((res) => {
|
const list = []
|
res.datas.forEach((item) => {
|
list.push(item.saleMethod.id)
|
})
|
this.setData({
|
shoppingList: res.datas,
|
shoppingCartGetId: list
|
})
|
})
|
},
|
// 判断资源加入购物车按钮是否显示
|
isShoppingCart(data) {
|
if (data.saleMethod && data.saleMethod.length) {
|
if (data.saleMethod[0].Price <= 0) return false
|
// 再判断是否购买
|
const isBuy = this.data.buyIdList.some((item) => item == data.saleMethod[0].Id)
|
if (isBuy) {
|
// 购买了
|
return false
|
} else {
|
// 判断是否加入购物车
|
const isSHow = this.data.shoppingCartGetId.some((item) => item == data.saleMethod[0].Id)
|
return !isSHow
|
}
|
} else {
|
return false
|
}
|
},
|
// 遍历树结构转换为数组方法
|
handleTreeData(array) {
|
const flattenedArray = []
|
array.forEach((node) => {
|
// 将当前节点添加到展开的数组中
|
flattenedArray.push(node)
|
// 递归处理子节点
|
if (node.children && node.children.length > 0) {
|
const childrenArray = this.handleTreeData(node.children)
|
flattenedArray.push(...childrenArray)
|
}
|
})
|
return flattenedArray.filter((item) => item.sysType == 'CmsItem')
|
},
|
// 云学习一键领取
|
async getFreeResource() {
|
const child = this.selectComponent('#learn-resource')
|
const token = wx.getStorageSync('jsek-token')
|
if (!token) {
|
return wx.getUserProfile({
|
desc: '用户登录',
|
success: (res) => {
|
console.log(res);
|
}
|
})
|
}
|
let arr = this.handleTreeData(this.data.learn).filter((item) => this.resourceIsBuy(item))
|
let freeIds = arr.filter((item) => {
|
return item.saleMethod[0].Price == 0
|
})
|
if (!freeIds.length) return wx.showToast({
|
icon: "error",
|
title: '暂无免费资源',
|
})
|
child.changeReceive(true)
|
let requests = []
|
freeIds.forEach((item, index) => {
|
if (this.resourceIsBuy(item)) {
|
requests.push({
|
saleMethodId: item.saleMethod[0].Id,
|
count: 1
|
})
|
}
|
})
|
|
let query = {
|
remarks: '云学习',
|
requests,
|
}
|
try {
|
const initOrderRes = await app.MG.store.initOrder(query)
|
let parameter = {
|
orderNum: initOrderRes.orderNumber
|
}
|
// 确认订单
|
const confirmOrderRes = await app.MG.store.confirmOrder(parameter)
|
if (confirmOrderRes.orderNumber) {
|
child.changeReceive(false)
|
wx.showToast({
|
title: '领取成功',
|
})
|
this.getBookInfo(this.data.bookId)
|
}
|
} catch (error) {
|
console.log(error)
|
}
|
},
|
// 云学习一键购买
|
async allAddShoppiingCar() {
|
const child = this.selectComponent('#learn-resource')
|
const token = wx.getStorageSync('jsek-token')
|
if (!token) {
|
return wx.getUserProfile({
|
desc: '用户登录',
|
success: (res) => {
|
console.log(res);
|
}
|
})
|
}
|
let shopList = this.handleTreeData(this.data.learn).filter((item) => this.resourceIsBuy(item))
|
this.getShoppingCartProductGet()
|
if (!shopList.length) return wx.showToast({
|
icon: "error",
|
title: '已全部购买',
|
})
|
child.changeBuy(true)
|
let requests = []
|
shopList.forEach((item) => {
|
requests.push({
|
saleMethodId: item.saleMethod[0].Id,
|
count: 1,
|
})
|
})
|
let query = {
|
remarks: '云学习',
|
requests,
|
}
|
const initOrderRes = await app.MG.store.initOrder(query)
|
child.changeBuy(false)
|
// 检查订单号是否存在
|
if (initOrderRes.orderNumber) {
|
// bookService: orderNumber.value, 少传这个 ,暂时不知道有什么用
|
wx.navigateTo({
|
url: `/pages/cart/paymentPage/index?&bookId=${this.data.bookDetail.id}&bookName=${this.data.bookDetail.name}&orderNumber=${initOrderRes.orderNumber}`,
|
})
|
} else {
|
// 订单号不存在,显示警告消息
|
wx.showToast({
|
icon: "error",
|
title: '请重试',
|
})
|
}
|
},
|
// 变为所有check true
|
findAndUpdateItemsByIds(tree, ids) {
|
function findAndUpdate(node) {
|
if (ids.includes(node.id)) {
|
node.checked = true; // 将目标项的 check 属性设置为 true
|
}
|
if (node.children && node.children.length > 0) {
|
for (let child of node.children) {
|
findAndUpdate(child); // 递归处理子节点
|
}
|
}
|
}
|
|
for (let node of tree) {
|
findAndUpdate(node); // 对每个顶层节点执行查找和更新操作
|
}
|
return tree; // 返回修改后的完整数组
|
},
|
handleTrue() {
|
// findAndUpdateItemsByIds(this.date.)
|
},
|
// 组卷格式化日期显示
|
DateFormat(date, fmt) {
|
if (date && fmt) {
|
let _date = new Date(date)
|
var o = {
|
'M+': _date.getMonth() + 1, //月份
|
'd+': _date.getDate(), //日
|
'h+': _date.getHours(), //小时
|
'm+': _date.getMinutes(), //分
|
's+': _date.getSeconds(), //秒
|
'q+': Math.floor((_date.getMonth() + 3) / 3), //季度
|
S: _date.getMilliseconds() //毫秒
|
}
|
if (/(y+)/.test(fmt)) {
|
fmt = fmt.replace(RegExp.$1, (_date.getFullYear() + '').substr(4 - RegExp.$1.length))
|
}
|
for (var k in o) {
|
if (new RegExp('(' + k + ')').test(fmt)) {
|
fmt = fmt.replace(
|
RegExp.$1,
|
RegExp.$1.length == 1
|
? (o)[k]
|
: ('00' + (o)[k]).substr(('' + (o)[k]).length)
|
)
|
}
|
}
|
return fmt
|
} else {
|
return ''
|
}
|
},
|
// 获取组卷答题数据
|
getMockData() {
|
this.setData({
|
'mockData.useCount': 0,
|
'mockData.mockList': []
|
})
|
app.MG.identity
|
.getUserKey({
|
domain: 'mockData',
|
keys: [this.data.bookId]
|
})
|
.then((res) => {
|
console.log(JSON.parse(res[0].value));
|
if (res && res.length) {
|
const mock = JSON.parse(res[0].value)
|
mock.forEach(item => {
|
item.createDate = this.DateFormat(item.createDate, 'yyyy-MM-dd')
|
})
|
this.setData({
|
'mockData.mockList': mock
|
})
|
// 组卷已使用次数
|
res.forEach((item) => {
|
// 已经有答题分数等数据,证明组卷已经使用完毕
|
if (item.resultData) {
|
this.setData({
|
'mockData.useCount': this.data.mockData.useCount + 1
|
})
|
}
|
})
|
}
|
})
|
}
|
|
})
|