| | |
| | | // pages/bookServices/detail/index.js |
| | | import Message from 'tdesign-miniprogram/message/index.js'; |
| | | import Toast from 'tdesign-miniprogram/toast'; |
| | | import tool from '../../../../assets/js/toolClass' |
| | | import Toast from "tdesign-miniprogram/toast"; |
| | | import tool from "../../../../assets/js/toolClass"; |
| | | import moment from 'moment' |
| | | import { |
| | | loginInfo |
| | | } from "../../../../assets/js/login"; |
| | | import FormData from '../../../../utils/formdata/index.js'; |
| | | const app = getApp(); |
| | | Page({ |
| | | /** |
| | | * 页面的初始数据 |
| | | */ |
| | | data: { |
| | | bookId: '', |
| | | barHeight: '', |
| | | navBarHeight: '', |
| | | // 进页面默认切换 展开的id |
| | | // defaultactiveTeachid 教学资源 |
| | | // defaultactiveLearnid 云学习 |
| | | bookId: "", |
| | | barHeight: "", |
| | | navBarHeight: "", |
| | | options: { |
| | | id: '', |
| | | name: '', |
| | | id: "", |
| | | name: "", |
| | | storeInfo: '', |
| | | }, |
| | | bookDetail: {}, |
| | | bookClass: [], |
| | | bookItemDetail: {}, |
| | | link: { |
| | | jd: '', |
| | | tamll: '', |
| | | dang: '', |
| | | micro: '', |
| | | jd: "", |
| | | tamll: "", |
| | | dang: "", |
| | | micro: "", |
| | | }, |
| | | tabValue: 'brief', |
| | | tabValue: "brief", |
| | | cmsDatas: [], // 资源refCode列表 |
| | | ids: [1], |
| | | list: [], |
| | |
| | | teach: [], |
| | | learn: [], |
| | | test: [], |
| | | jslx: true, |
| | | openTeachids: [], |
| | | openLearnids: [], |
| | | openTestids: [], |
| | | isGoBuyResource: true, |
| | | learnPath: '', |
| | | applyResourceState: false, // 申请教学资源按钮防抖 |
| | | resourceClassList: [], // 资源所属分类 |
| | | applyState: "", // 教学资源申请状态 |
| | | deadline: "", // 教学资源申请有效日期 |
| | | rejectCause: "", // 下载拒绝原因 |
| | | applyState: "", // 教学资源申请状态 |
| | | deadline: "", // 教学资源申请有效日期, |
| | | isshowDrawBtn: true, // 云学习领取查看按钮是否显示 |
| | | isShowBuyCloundMenu: false, // 云学习全部购买按钮是否显示 |
| | | isCloundHaveSaleMethod: false, // 云学习是否有销售方式 |
| | | cloundMenuIsBuy: false, |
| | | rejectCause: "", // 下载拒绝原因 |
| | | buyIdList: [], |
| | | shoppingCartGetId: [], // 已购买id列表 |
| | | shoppingList: [], |
| | | loading: false, |
| | | isShowTeachDownload: false, // 提示PC下载弹窗状态 |
| | | confirmBtn: { content: '我知道了', variant: 'base' }, |
| | | isShowTeachDownload: false, // 提示PC下载弹窗状态 |
| | | confirmBtn: { |
| | | content: "我知道了", |
| | | variant: "base", |
| | | }, |
| | | mockData: { |
| | | id: 0, // 销售id |
| | | price: 0, // 售价 |
| | | count: 0, // 组卷已购买次数 |
| | | useCount: 0, // 组件已使用次数 |
| | | residue: 0, // 组卷剩余次数 |
| | | mockList: [] // 用户组卷提交信息 |
| | | mockList: [], // 用户组卷提交信息 |
| | | }, |
| | | relatedBookLoading: false, |
| | | noRelatedBookData: false, |
| | | relatedBookPath: "", // 相关图书path |
| | | relatedBookData: [], // 相关图书列表 |
| | | flag: true, |
| | | applyResourceLoading: false, |
| | | noResources: false, |
| | | selectedIds: "",//商品或子商品销售方式 |
| | | selectedIds: "", //商品或子商品销售方式 |
| | | bookBuy: false, //商品或子商品是否购买 |
| | | expire: false,//商品或子商品销售方式是否过期 |
| | | expire: false, //商品或子商品销售方式是否过期 |
| | | noFile: false, //商品或子商有无电子书文件 |
| | | num: 0, //样书申请单数量 |
| | | alreadyPaperBookList: [], //已申请纸质样书 |
| | |
| | | electronicBookList: [], //样书单电子书 |
| | | paperBookCount: 0, //纸质书剩余次数 |
| | | ebookCount: 0, //电子书剩余次数 |
| | | resourceCodeList: [], // 资源refcode列表 |
| | | userInfo: {}, |
| | | pageLoading: true, |
| | | fileInfo: { |
| | | bookName: "", |
| | | fileType: "", |
| | | md5: "", |
| | | freePage: "" |
| | | }, //阅读器数据 |
| | | freePage: "", |
| | | }, //阅读器数据 |
| | | buyResourceData: { |
| | | productLinkPath: '', |
| | | refCode: '', |
| | | } |
| | | productLinkPath: "", |
| | | refCode: "", |
| | | }, |
| | | briefIcon: { |
| | | name: "/static/images/bookService/detail/tushujianjie-g.png", |
| | | }, |
| | | briefIconClick: { |
| | | name: "/static/images/bookService/detail/tushujianjie-click.png", |
| | | }, |
| | | eBookIcon: { |
| | | name: "/static/images/bookService/detail/ebook-g.png", |
| | | }, |
| | | eBookClickIcon: { |
| | | name: "/static/images/bookService/detail/ebook-click.png", |
| | | }, |
| | | teachResourcesIcon: { |
| | | name: "/static/images/bookService/detail/jiaoxueziyuan.png", |
| | | }, |
| | | teachResourcesClickIcon: { |
| | | name: "/static/images/bookService/detail/jiaoxueziyuan-click.png", |
| | | }, |
| | | learnResourceIcon: { |
| | | name: "/static/images/bookService/detail/yunxuexi.png", |
| | | }, |
| | | learnResourceClickIcon: { |
| | | name: "/static/images/bookService/detail/yunxuexi-click.png", |
| | | }, |
| | | testResourceIocn: { |
| | | name: "/static/images/bookService/detail/test-icon-g.png", |
| | | }, |
| | | testResourceClickIocn: { |
| | | name: "/static/images/bookService/detail/test-click-icon.png", |
| | | }, |
| | | noteIcon: { |
| | | name: "/static/images/bookService/detail/biji-icon-g.png", |
| | | }, |
| | | noteClickIcon: { |
| | | name: "/static/images/bookService/detail/biji-click-icon.png", |
| | | }, |
| | | linkIcon: { |
| | | name: "/static/images/bookService/detail/link.png", |
| | | }, |
| | | linkClickIcon: { |
| | | name: "/static/images/bookService/detail/link-click.png", |
| | | }, |
| | | icon1: { |
| | | name: "/static/images/bookService/detail/dangdang.png", |
| | | }, |
| | | rowCol: [{ |
| | | width: '50%', |
| | | }, |
| | | { |
| | | width: '100%' |
| | | }, |
| | | { |
| | | width: '80%' |
| | | }, |
| | | { |
| | | width: '100%' |
| | | }, { |
| | | width: '100%' |
| | | }, |
| | | ], |
| | | showIndex: '', |
| | | successOrderNumber: '', |
| | | applicationState: '', // 电子样书申请状态 |
| | | dialogBox: false, |
| | | resourceInfo: { |
| | | resourceName: '', |
| | | fileType: '', |
| | | description: '', |
| | | agree: false |
| | | }, |
| | | resourceVisible: false, |
| | | resourceValue: [], |
| | | fileTypeList: [{ |
| | | label: '音频', |
| | | value: '音频' |
| | | }, |
| | | { |
| | | label: '视频', |
| | | value: '视频' |
| | | }, |
| | | { |
| | | label: '图片', |
| | | value: '图片' |
| | | }, |
| | | { |
| | | label: 'PDF', |
| | | value: 'PDF' |
| | | }, |
| | | { |
| | | label: '资源包', |
| | | value: '资源包' |
| | | }, |
| | | { |
| | | label: '文档', |
| | | value: '文档' |
| | | }, |
| | | { |
| | | label: '其他', |
| | | value: '其他' |
| | | } |
| | | ], |
| | | fileList: [], |
| | | isShowUp: true, |
| | | protocolShow: false, |
| | | protocolTxt: '' |
| | | }, |
| | | |
| | | |
| | | resetTree: function (e) { |
| | | this.setData({ |
| | | currentCheck: e.detail.checkedItem, |
| | | list: e.detail.changeList |
| | | }) |
| | | list: e.detail.changeList, |
| | | }); |
| | | }, |
| | | /** |
| | | * 生命周期函数--监听页面加载 |
| | |
| | | onLoad(options) { |
| | | const systInfo = wx.getSystemInfoSync(); |
| | | const menu = wx.getMenuButtonBoundingClientRect(); // 胶囊信息 |
| | | const navBarHeight = (menu.top - systInfo.statusBarHeight) * 2 + menu.height; // 导航栏高度 |
| | | const navBarHeight = |
| | | (menu.top - systInfo.statusBarHeight) * 2 + menu.height; // 导航栏高度 |
| | | this.setData({ |
| | | bookId: options.id, |
| | | bookId: options.id + "", |
| | | barHeight: systInfo.statusBarHeight, |
| | | navBarHeight: navBarHeight, |
| | | }); |
| | | this.setData({ |
| | | options: { |
| | | id: options.id, |
| | | name: options.name, |
| | | name: decodeURI(options.name), |
| | | storeInfo: options.storeInfo, |
| | | }, |
| | | }); |
| | | |
| | | wx.setNavigationBarTitle({ |
| | | title: decodeURI(options.name), |
| | | }) |
| | | let token = wx.getStorageSync(app.config.tokenKey) |
| | | if (!token) { |
| | | loginInfo(app, (data) => { |
| | | if (data) {} else {} |
| | | }) |
| | | } |
| | | this.getBookInfo(options.id); |
| | | this.getResourceClass() // 获取资源所属分类 |
| | | const token = wx.getStorageSync('jsek-token') |
| | | // this.getResourceClass(); // 获取资源所属分类 |
| | | token = wx.getStorageSync(app.config.tokenKey) |
| | | if (token) { |
| | | this.getShoppingCartProductGet() |
| | | this.getApplyInfo(options.id) |
| | | this.getMockData() |
| | | this.getShoppingCartProductGet(); |
| | | this.getApplyInfo(options.id); |
| | | this.getAlreadyPBookList(); |
| | | this.getAlreadyEBookList(); |
| | | } |
| | | if (wx.getStorageSync(app.config.userInfoKey)) { |
| | | this.setData({ |
| | | userInfo: JSON.parse(wx.getStorageSync(app.config.userInfoKey)) |
| | | }) |
| | | userInfo: JSON.parse(wx.getStorageSync(app.config.userInfoKey)), |
| | | }); |
| | | // 获取申请次数 |
| | | this.getSelectPaperBookCount(); |
| | | this.getSelectBookCount(); |
| | | } |
| | | if (wx.getStorageSync("paperBookList")) { |
| | | if (options.tabValue) { |
| | | this.setData({ |
| | | paperBookList: wx.getStorageSync("paperBookList"), |
| | | }) |
| | | } |
| | | if (wx.getStorageSync("electronicBookList")) { |
| | | this.setData({ |
| | | electronicBookList: wx.getStorageSync("electronicBookList"), |
| | | }) |
| | | } |
| | | this.setData({ |
| | | num: this.data.paperBookList.length + this.data.electronicBookList.length |
| | | }) |
| | | }, |
| | | tabValue: options.tabValue, |
| | | }); |
| | | |
| | | /** |
| | | * 生命周期函数--监听页面初次渲染完成 |
| | | */ |
| | | onReady() { |
| | | |
| | | } |
| | | }, |
| | | |
| | | /** |
| | | * 生命周期函数--监听页面显示 |
| | | */ |
| | | onShow() { }, |
| | | |
| | | /** |
| | | * 生命周期函数--监听页面隐藏 |
| | | */ |
| | | onHide() { }, |
| | | |
| | | /** |
| | | * 生命周期函数--监听页面卸载 |
| | | */ |
| | | onUnload() { }, |
| | | |
| | | /** |
| | | * 页面相关事件处理函数--监听用户下拉动作 |
| | | */ |
| | | onPullDownRefresh() { |
| | | |
| | | |
| | | onShow() { |
| | | if (wx.getStorageSync("paperBookList")) { |
| | | this.setData({ |
| | | paperBookList: JSON.parse(wx.getStorageSync("paperBookList")), |
| | | }); |
| | | } |
| | | if (wx.getStorageSync("electronicBookList")) { |
| | | this.setData({ |
| | | electronicBookList: JSON.parse(wx.getStorageSync("electronicBookList")), |
| | | }); |
| | | } |
| | | this.setData({ |
| | | num: Number(this.data.paperBookList.length) + Number(this.data.electronicBookList.length), |
| | | }); |
| | | }, |
| | | |
| | | /** |
| | | * 页面上拉触底事件的处理函数 |
| | | */ |
| | | onReachBottom() { |
| | | if (this.data.tabValue == 'jsek_note') { |
| | | const child = this.selectComponent('#note') |
| | | child.onReachBottom() |
| | | if (this.data.tabValue == "jsek_note") { |
| | | const child = this.selectComponent("#note"); |
| | | if (!child.data.noList) child.onReachBottom(); |
| | | } |
| | | }, |
| | | |
| | | /** |
| | | * 用户点击右上角分享 |
| | | */ |
| | | onShareAppMessage() { }, |
| | | // 格式化日期 |
| | | formatDate(dateString) { |
| | | if (!dateString) { |
| | | return 'Invalid date'; |
| | | return ""; |
| | | } |
| | | const match = dateString.match(/^(\d{4})\/(\d{1,2})\/(\d{1,2}) (\d{1,2}):(\d{1,2}):(\d{1,2})$/); |
| | | 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'); |
| | | throw new Error("Invalid date format"); |
| | | } |
| | | |
| | | const [, year, month, day, hours, minutes, seconds] = match; |
| | |
| | | parseInt(day, 10), |
| | | parseInt(hours, 10), |
| | | parseInt(minutes, 10), |
| | | parseInt(seconds, 10), |
| | | parseInt(seconds, 10) |
| | | ); |
| | | |
| | | if (isNaN(date.getTime())) { |
| | | throw new Error('Invalid date'); |
| | | throw new Error("Invalid date"); |
| | | } |
| | | |
| | | // 由于小程序环境可能不支持 Intl.DateTimeFormat,我们使用简化的格式化方法 |
| | |
| | | }, |
| | | // 简化的月份格式化函数,返回月份的中文表达 |
| | | formatMonth(month) { |
| | | const months = ['1月', '2月', '3月', '4月', '5月', '6月', '7月', '8月', '9月', '10月', '11月', '12月']; |
| | | 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'; |
| | | 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('.'); |
| | | 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(); // 拿到小数部分 |
| | |
| | | }, |
| | | // 返回 |
| | | goBack() { |
| | | wx.navigateBack(); |
| | | let bookPathList = wx.getStorageSync("bookPathList"); |
| | | if (bookPathList && JSON.parse(bookPathList).length) { |
| | | bookPathList = JSON.parse(bookPathList); |
| | | this.setData({ |
| | | pageLoading: true, |
| | | tabValue: "brief", |
| | | }); |
| | | this.onLoad(bookPathList[bookPathList.length - 1]); |
| | | bookPathList.pop(); |
| | | wx.setStorageSync("bookPathList", JSON.stringify(bookPathList)); |
| | | } else { |
| | | wx.navigateBack(); |
| | | } |
| | | }, |
| | | // 获取图书详情 |
| | | getBookInfo(id) { |
| | | this.setData({ |
| | | "mockData'.id": 0, |
| | | "mockData.price": 0, |
| | | "mockData.count": 0 |
| | | }) |
| | | "mockData.count": 0, |
| | | }); |
| | | const query = { |
| | | path: '*', |
| | | queryType: '*', |
| | | storeInfo: this.data.options.storeInfo, |
| | | path: "*", |
| | | queryType: "*", |
| | | productId: id, |
| | | favoriteTypes: 'FavoriteBookCity', |
| | | favoriteTypes: "FavoriteBookCity", |
| | | itemFields: { |
| | | 'SysType=': 'CmsFolder', |
| | | "SysType=": "CmsFolder", |
| | | }, |
| | | coverSize: { |
| | | height: 300, |
| | |
| | | dangdangLink: [], |
| | | weidianLink: [], |
| | | content: [], |
| | | catalogue: [], |
| | | authorIntroduction: [], |
| | | // isApplyPaperBook: [], |
| | | // isApplyEBook: [], |
| | |
| | | }, |
| | | }; |
| | | app.MG.store.getProductDetail(query).then(async (res) => { |
| | | this.getResourceCode(id, res.datas.rootCmsItemId) |
| | | this.setData({ |
| | | bookDetail: res.datas, |
| | | cmsDatas: res.datas.cmsDatas[0].datas, |
| | | buyIdList: res.datas.purchasedSaleMethodIdList |
| | | buyIdList: res.datas.purchasedSaleMethodIdList, |
| | | pageLoading: false |
| | | }); |
| | | if (res.datas.cmsDatas && res.datas.cmsDatas.length) { |
| | | this.setData({ |
| | | cmsDatas: res.datas.cmsDatas[0].datas, |
| | | }) |
| | | } |
| | | if (res.datas.datas.ProductLinkInfo) { |
| | | if (JSON.parse(res.datas.datas.ProductLinkInfo).length) this.setData({ |
| | | relatedBookPath: JSON.parse(res.datas.datas.ProductLinkInfo)[0] |
| | | .LinkPath, |
| | | }) |
| | | } |
| | | this.getSubTtem(); |
| | | // 获取图书分类 |
| | | 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) |
| | | if (res.datas.bookClassification) { |
| | | let classData = [] |
| | | const bookClassification = JSON.parse(res.datas.bookClassification); |
| | | if (Array.isArray(bookClassification) && bookClassification.length) { |
| | | for (let index = 0; index < bookClassification.length; index++) { |
| | | const element = bookClassification[index]; |
| | | const iconType = element[0]; |
| | | const classType = element[1]; |
| | | classData.push({ |
| | | iconType, |
| | | classType |
| | | }) |
| | | } |
| | | await this.getBookClass(classData); |
| | | } |
| | | } |
| | | if (this.data.tabValue == 'questionBank' || this.data.tabValue == 'jsek_cloudLearning' || this.data.tabValue == 'jsek_teachingResources') { |
| | | const checkData = this.data.cmsDatas.find( |
| | | (item) => item.refCode == this.data.tabValue |
| | | ); |
| | | if (this.data.tabValue == "questionBank") { |
| | | this.getResourceData(checkData) |
| | | } else { |
| | | this.getResourceDataList(checkData) |
| | | } |
| | | } |
| | | |
| | | // 获取组卷销售id |
| | | if (res.datas.saleMethod && res.datas.saleMethod.length) { |
| | | res.datas.saleMethod.forEach((item) => { |
| | | if (item.SaleType == 'combinationTestPaper') { |
| | | if (item.SaleType == "combinationTestPaper") { |
| | | this.setData({ |
| | | 'mockData.id': item.Id, |
| | | 'mockData.price': item.Price |
| | | }) |
| | | "mockData.id": item.Id, |
| | | "mockData.price": item.Price, |
| | | }); |
| | | } |
| | | }) |
| | | }); |
| | | } |
| | | // 获取组卷已购买次数 |
| | | if (res.datas.purchasedSaleMethodIdList && res.datas.purchasedSaleMethodIdList.length) { |
| | | 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 |
| | | ).length; |
| | | this.setData({ |
| | | 'mockData.count': count |
| | | }) |
| | | "mockData.count": count, |
| | | }); |
| | | } |
| | | } |
| | | 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), |
| | | }); |
| | | console.log('图书信息', this.data.bookDetail); |
| | | }); |
| | | "bookDetail.publicationDate": moment(this.data.bookDetail.publicationDate).format("YYYY年MM月"), |
| | | "bookDetail.price": this.numFormat(this.data.bookDetail.price), |
| | | "bookDetail.oldPrice": this.numFormat(this.data.bookDetail.oldPrice), |
| | | "bookDetail.paperPrice": this.numFormat( |
| | | this.data.bookDetail.paperPrice |
| | | ), |
| | | |
| | | }); |
| | | }); |
| | | }, |
| | | getResourceCode(bookId, cmsId) { |
| | | let query = { |
| | | path: '*', |
| | | queryType: '*', |
| | | productId: bookId, |
| | | cmsPath: cmsId, |
| | | itemFields: { |
| | | SysType: 'Cms' |
| | | }, |
| | | pading: { |
| | | start: 99, |
| | | size: 0 |
| | | } |
| | | } |
| | | app.MG.store.getProductDetail(query).then((res) => { |
| | | this.setData({ |
| | | resourceCodeList: res.datas.cmsDatas[0].datas, |
| | | }) |
| | | console.log('refcode', this.data.resourceCodeList); |
| | | }) |
| | | }, |
| | | //请求子商品的文件 |
| | | getSubTtem() { |
| | | const obj = { |
| | | path: '*', |
| | | queryType: 'SubProduct', |
| | | path: "*", |
| | | queryType: "SubProduct", |
| | | sort: { |
| | | type: 'Desc', |
| | | field: 'CreateDate' |
| | | type: "Desc", |
| | | field: "CreateDate", |
| | | }, |
| | | paging: { |
| | | start: 0, |
| | | size: 6 |
| | | size: 6, |
| | | }, |
| | | mainProductId: this.data.bookDetail.id, |
| | | fields: { |
| | |
| | | bookshelf_pdf: [], |
| | | bookshelf_protectedEpub: [], |
| | | bookshelf_freeEpub: [], //epub试读百分比 |
| | | bookshelf_probationPage: [] //pdf试读页数 |
| | | } |
| | | } |
| | | bookshelf_probationPage: [], //pdf试读页数 |
| | | }, |
| | | }; |
| | | app.MG.store.getProductList(obj).then((res) => { |
| | | if (res.datas && res.datas.length > 0) { |
| | | this.setData({ |
| | | bookItemDetail: res.datas[0], |
| | | selectedIds: res.datas[0].defaultSaleMethod.id, |
| | | bookBuy: res.datas[0].purchasedSaleMethodIdList.indexOf(res.datas[0].defaultSaleMethodId) > -1 |
| | | bookBuy: res.datas[0].purchasedSaleMethodIdList.indexOf( |
| | | res.datas[0].defaultSaleMethodId |
| | | ) > -1, |
| | | "bookDetail.price": this.numFormat(res.datas[0].price), |
| | | }); |
| | | console.log(this.data.bookItemDetail, 'bookItemData.value'); |
| | | let times = new Date(res.datas[0].defaultSaleMethod.endDate).getTime() |
| | | let startTime = new Date(res.datas[0].defaultSaleMethod.beginDate).getTime() |
| | | let times = new Date(res.datas[0].defaultSaleMethod.endDate).getTime(); |
| | | let startTime = new Date( |
| | | res.datas[0].defaultSaleMethod.beginDate |
| | | ).getTime(); |
| | | |
| | | if (times < new Date().getTime() || new Date().getTime() < startTime) { |
| | | this.setData({ |
| | | expire: true |
| | | expire: true, |
| | | }); |
| | | } else { |
| | | this.setData({ |
| | | expire: false |
| | | expire: false, |
| | | }); |
| | | } |
| | | if (res.datas[0].bookshelf_pdf || res.datas[0].bookshelf_protectedEpub) { |
| | | if ( |
| | | res.datas[0].bookshelf_pdf || |
| | | res.datas[0].bookshelf_protectedEpub |
| | | ) { |
| | | this.setData({ |
| | | noFile: true |
| | | noFile: true, |
| | | }); |
| | | if (res.datas[0].bookshelf_pdf) { |
| | | this.setData({ |
| | | "fileInfo.bookName": this.data.bookDetail.name, |
| | | "fileInfo.fileType": 'pdf', |
| | | "fileInfo.fileType": "pdf", |
| | | "fileInfo.md5": res.datas[0].bookshelf_pdf, |
| | | "fileInfo.freePage": res.datas[0].bookshelf_probationPage, |
| | | "fileInfo.freePage": res.datas[0].bookshelf_probationPage ? res.datas[0].bookshelf_probationPage : 30, |
| | | }); |
| | | } else if (res.datas[0].bookshelf_protectedEpub) { |
| | | this.setData({ |
| | | "fileInfo.bookName": this.data.bookDetail.name, |
| | | "fileInfo.fileType": 'epub', |
| | | "fileInfo.fileType": "epub", |
| | | "fileInfo.md5": res.datas[0].bookshelf_protectedEpub, |
| | | "fileInfo.freePage": res.datas[0].bookshelf_freeEpub, |
| | | "fileInfo.freePage": res.datas[0].bookshelf_freeEpub ? res.datas[0].bookshelf_freeEpub : 30, |
| | | }); |
| | | } |
| | | } |
| | | } else { |
| | | if (this.data.bookDetail.pdf || this.data.bookDetail.protectedEpub) { |
| | | this.setData({ |
| | | noFile: true |
| | | noFile: true, |
| | | }); |
| | | if (this.data.bookDetail.pdf) { |
| | | this.setData({ |
| | | "fileInfo.bookName": this.data.bookDetail.name, |
| | | "fileInfo.fileType": 'pdf', |
| | | "fileInfo.fileType": "pdf", |
| | | "fileInfo.md5": this.data.bookDetail.pdf, |
| | | "fileInfo.freePage": this.data.bookDetail.probationPage, |
| | | "fileInfo.freePage": this.data.bookDetail.probationPage ? this.data.bookDetail.probationPage : 30, |
| | | }); |
| | | } else if (this.data.bookDetail.protectedEpub) { |
| | | |
| | | this.setData({ |
| | | "fileInfo.bookName": this.data.bookDetail.name, |
| | | "fileInfo.fileType": 'epub', |
| | | "fileInfo.fileType": "epub", |
| | | "fileInfo.md5": this.data.bookDetail.protectedEpub, |
| | | "fileInfo.freePage": this.data.bookDetail.freeEpubPage, |
| | | "fileInfo.freePage": this.data.bookDetail.freeEpubPage ? this.data.bookDetail.freeEpubPage : 30, |
| | | }); |
| | | } |
| | | } |
| | | console.log(this.data.fileInfo, 456) |
| | | this.setData({ |
| | | selectedIds: this.data.bookDetail.defaultSaleMethodId, |
| | | bookBuy: this.data.bookDetail.purchasedSaleMethodIdList.indexOf(this.data.bookDetail.defaultSaleMethodId) > -1 |
| | | bookBuy: this.data.bookDetail.purchasedSaleMethodIdList.indexOf( |
| | | this.data.bookDetail.defaultSaleMethodId |
| | | ) > -1, |
| | | }); |
| | | let times = new Date(this.data.bookDetail.defaultSaleMethod.endDate).getTime() |
| | | let startTime = new Date(this.data.bookDetail.defaultSaleMethod.beginDate).getTime() |
| | | let times = new Date( |
| | | this.data.bookDetail.defaultSaleMethod.endDate |
| | | ).getTime(); |
| | | let startTime = new Date( |
| | | this.data.bookDetail.defaultSaleMethod.beginDate |
| | | ).getTime(); |
| | | if (times < new Date().getTime() || new Date().getTime() < startTime) { |
| | | this.setData({ |
| | | expire: true |
| | | expire: true, |
| | | }); |
| | | } else { |
| | | this.setData({ |
| | | expire: false |
| | | expire: false, |
| | | }); |
| | | } |
| | | } |
| | | }) |
| | | }); |
| | | }, |
| | | // 获取图书分类 |
| | | async getBookClass(iconType, classType) { |
| | | let name = ''; |
| | | async getBookClass(list) { |
| | | let name = ""; |
| | | const query = { |
| | | refCodes: ['bookClassification'], |
| | | 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; |
| | | for (let aindex = 0; aindex < list.length; aindex++) { |
| | | const aitem = list[aindex]; |
| | | const iconType = aitem.iconType |
| | | const classType = aitem.classType |
| | | JSON.parse(res[0].config).option.forEach((item) => { |
| | | if (item.value == iconType) { |
| | | if (item.child && item.child.length) { |
| | | item.child.forEach((citem) => { |
| | | if (citem.value == classType) { |
| | | const flag = this.data.bookClass.findIndex((ditem) => ditem == citem.name) |
| | | if (flag == -1) { |
| | | let list = this.data.bookClass |
| | | list.push(citem.name) |
| | | this.setData({ |
| | | bookClass: list |
| | | }) |
| | | } |
| | | } |
| | | }); |
| | | } |
| | | }); |
| | | } |
| | | }); |
| | | |
| | | } |
| | | }); |
| | | } |
| | | |
| | | }); |
| | | 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 |
| | | const token = wx.getStorageSync(app.config.tokenKey); |
| | | if (!token) { |
| | | // 检查登录状态 |
| | | loginInfo(app, (data) => { |
| | | // 如果不是第一次登录,会执行回调 |
| | | if (data) { |
| | | // 登录成功,自动记录token和用户信息,并返回true |
| | | this.getBookInfo(this.data.bookId); |
| | | } else { |
| | | // 出现错误,返回false |
| | | } |
| | | }); |
| | | } else { |
| | | if (this.data.bookDetail.isFavourite) { |
| | | app.MG.store |
| | | .delProductLink({ |
| | | productIds: [this.data.bookDetail.id], |
| | | linkType: "FavoriteBookCity", |
| | | }) |
| | | Message.success({ |
| | | context: this, |
| | | offset: [20, 32], |
| | | duration: 5000, |
| | | content: '这是一条成功的提示消息', |
| | | .then(() => { |
| | | this.setData({ |
| | | "bookDetail.isFavourite": false, |
| | | }); |
| | | }); |
| | | } else { |
| | | const params = { |
| | | productIds: [this.data.bookDetail.id], |
| | | linkType: "FavoriteBookCity", |
| | | }; |
| | | app.MG.store.addProductLink(params).then((res) => { |
| | | this.setData({ |
| | | "bookDetail.isFavourite": true, |
| | | }); |
| | | }); |
| | | } 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() |
| | | // 检查登录状态 |
| | | const token = wx.getStorageSync(app.config.tokenKey); |
| | | const child = this.selectComponent("#suggest-component"); |
| | | if (token) |
| | | // child.showDialog(); |
| | | this.setData({ |
| | | showIndex: '1' |
| | | }) |
| | | }, |
| | | // 跳转网店 |
| | | goShop(e) { |
| | | const { link } = e.currentTarget.dataset; |
| | | const { |
| | | link |
| | | } = e.currentTarget.dataset; |
| | | wx.navigateTo({ |
| | | url: `/packageBookService/pages/bookServices/webpage/index?url=${link}`, |
| | | }) |
| | | url: `/packageBookService/pages/bookServices/linkPage/index?path=${link}`, |
| | | }); |
| | | }, |
| | | // tag切换 |
| | | onTabsChange(e) { |
| | | const token = wx.getStorageSync(app.config.tokenKey); |
| | | this.setData({ |
| | | tabValue: e.detail.value, |
| | | noResources: false |
| | | }) |
| | | if (e.detail.label == '教学资源' || e.detail.label == '云学习' || e.detail.label == '云测试') { |
| | | const checkData = this.data.cmsDatas.find(item => item.refCode == e.detail.value) |
| | | noResources: false, |
| | | }); |
| | | if ( |
| | | e.detail.label == "教学资源" || |
| | | e.detail.label == "云学习" || |
| | | e.detail.label == "云测试" |
| | | ) { |
| | | const checkData = this.data.cmsDatas.find( |
| | | (item) => item.refCode == this.data.tabValue |
| | | ); |
| | | if (!this.data.resourceClassList.length) this.getResourceClass() |
| | | if (checkData) { |
| | | if (e.detail.value == 'jsek_cloudLearning') { |
| | | if (e.detail.value == "jsek_cloudLearning") { |
| | | this.setData({ |
| | | 'buyResourceData.productLinkPath': checkData.productLinkPath, |
| | | 'buyResourceData.refCode': checkData.refCode |
| | | }) |
| | | "buyResourceData.productLinkPath": checkData.productLinkPath, |
| | | "buyResourceData.refCode": checkData.refCode, |
| | | }); |
| | | } |
| | | 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) |
| | | // 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) |
| | | // ) { |
| | | // if (e.detail.value == "jsek_teachingResources") { |
| | | // wx.setStorageSync('teachResourcesPath', checkData.productLinkPath) |
| | | // } |
| | | // this.getResourceData(checkData); |
| | | // } |
| | | if ((e.detail.value == "jsek_teachingResources" && !this.data.teach.length) || (e.detail.value == "jsek_cloudLearning" && !this.data.learn.length)) { |
| | | wx.setStorageSync('teachResourcesPath', checkData.productLinkPath) |
| | | this.getResourceDataList(checkData) |
| | | } else if (e.detail.value == "questionBank" && !this.data.test.length) { |
| | | this.getResourceData(checkData); |
| | | } |
| | | if (e.detail.value == "questionBank" && token) this.getMockData(); |
| | | } else { |
| | | this.setData({ |
| | | noResources: true |
| | | }) |
| | | noResources: true, |
| | | }); |
| | | } |
| | | } else if (e.detail.label == '云笔记') { |
| | | const token = wx.getStorageSync('jsek-token') |
| | | const child = this.selectComponent('#note') |
| | | child.handleSubmitTitle() |
| | | } else if (e.detail.label == "云笔记") { |
| | | const token = wx.getStorageSync(app.config.tokenKey); |
| | | const child = this.selectComponent("#note"); |
| | | child.handleSubmitTitle(); |
| | | if (token) { |
| | | child.changeLoading() |
| | | child.getNoteList() |
| | | child.changeLoading(); |
| | | child.getNoteList(); |
| | | } else { |
| | | child.changeNoList(); |
| | | } |
| | | |
| | | } else if (e.detail.label == '电子书') { |
| | | const child = this.selectComponent('#eBook') |
| | | } else if (e.detail.label == "电子书") { |
| | | const child = this.selectComponent("#eBook"); |
| | | if (child) { |
| | | child.getProgress() |
| | | child.getProgress(); |
| | | } |
| | | |
| | | } else if (e.detail.label == "相关图书") { |
| | | this.getAboutBook(this.data.relatedBookPath); |
| | | } |
| | | }, |
| | | // 获取资源所属分类 |
| | | getResourceClass() { |
| | | let query = { |
| | | refCodes: ['resourcesClassification'] |
| | | } |
| | | refCodes: ["resourcesClassification"], |
| | | }; |
| | | app.MG.store.getProductTypeField(query).then((res) => { |
| | | this.setData({ |
| | | resourceClassList: JSON.parse(res[0].config).option |
| | | }) |
| | | }) |
| | | resourceClassList: JSON.parse(res[0].config).option, |
| | | }); |
| | | }); |
| | | }, |
| | | // 获取教学资源 云学习 云测试 |
| | | getResourceData(type) { |
| | | |
| | | // 获取所有子项数量 |
| | | getChildrenItem(data) { |
| | | let num = 0 |
| | | |
| | | function getNum(data) { |
| | | for (let index = 0; index < data.length; index++) { |
| | | const item = data[index]; |
| | | if (item.sysType == 'CmsItem') { |
| | | num += 1 |
| | | } else if (item.sysType == 'CmsFolder') { |
| | | if (item.children && item.children.length) |
| | | getNum(item.children) |
| | | } |
| | | } |
| | | } |
| | | getNum(data) |
| | | return num |
| | | }, |
| | | |
| | | // 给目录添加子项数量 |
| | | changeResourceChildren(list) { |
| | | const changeList = (list) => { |
| | | for (let index = 0; index < list.length; index++) { |
| | | const item = list[index]; |
| | | if (item.sysType == 'CmsFolder' && item.children && item.children.length) { |
| | | item.childrenItem = this.getChildrenItem([item]) |
| | | changeList(item.children) |
| | | } else if (item.sysType == 'CmsFolder' && item.children && !item.children.length) { |
| | | item.childrenItem = 0 |
| | | } else if (item.sysType == 'CmsFolder' && !item.children) { |
| | | item.childrenItem = 0 |
| | | } |
| | | } |
| | | } |
| | | changeList(list) |
| | | return list |
| | | }, |
| | | |
| | | // 扁平化数据转换tree |
| | | getTreeList(rootList, newArr, path) { |
| | | for (const item of rootList) { |
| | | if (path == item.productLinkPath.replace('\\' + item.id, '')) { |
| | | if (item.sysType == 'CmsItem') { |
| | | if (item.selectType == 'webpage') { |
| | | item.disabled = true |
| | | } else { |
| | | if (item.isDownload != 1) { |
| | | item.disabled = true |
| | | } |
| | | } |
| | | if (item.file && item.fileMap && item.fileMap[item.file]) { |
| | | if (item.fileMap[item.file].protectType == 'Private') item.disabled = true |
| | | } |
| | | } |
| | | // newArr.push(item) |
| | | // 在插入过程中对数据进行排序 |
| | | newArr = this.insertAndSortObjectsByProductLinkPath(newArr, item) |
| | | // 插进数组后 从原数据中删除 |
| | | rootList = rootList.filter(nitem => nitem.id != item.id) |
| | | } |
| | | } |
| | | //给数组里面再添加一个children的空数组 |
| | | for (const i of newArr) { |
| | | i.children = [] |
| | | this.getTreeList(rootList, i.children, i.productLinkPath) |
| | | if (i.children.length == 0) { |
| | | delete i.children |
| | | } |
| | | } |
| | | return newArr |
| | | }, |
| | | |
| | | // 去除树结构多余项 |
| | | ensureTreeConsistency(tree) { |
| | | for (let index = 0; index < tree.length; index++) { |
| | | const item = tree[index]; |
| | | if (item.children && item.children.length) { |
| | | const isFloder = item.children.findIndex(citem => citem.sysType == 'CmsFolder') |
| | | const isItem = item.children.findIndex(citem => citem.sysType == 'CmsItem') |
| | | if (isFloder > -1 && isItem > -1) { |
| | | item.children = item.children.filter(ditem => ditem.sysType == 'CmsItem') |
| | | } |
| | | this.ensureTreeConsistency(item.children) |
| | | } |
| | | } |
| | | return tree |
| | | }, |
| | | |
| | | // 排序数组 按照productLinkPath |
| | | insertAndSortObjectsByProductLinkPath(array, newObj) { |
| | | // 查找新对象应该插入的位置 |
| | | let insertIndex = array.findIndex(obj => newObj.id < obj.id); |
| | | // 如果没有找到合适的位置,则放在数组末尾 |
| | | if (insertIndex === -1) { |
| | | insertIndex = array.length; |
| | | } |
| | | // 插入新对象到数组 |
| | | array.splice(insertIndex, 0, newObj); |
| | | // 对数组进行排序 |
| | | array.sort((a, b) => { |
| | | if (a.id < b.id) return -1; |
| | | if (a.id > b.id) return 1; |
| | | return 0; |
| | | }); |
| | | // 返回更新后的数组 |
| | | return array; |
| | | }, |
| | | // 递归树结构,如果父级有销售方式(有效期),去掉所有子集的销售方式 |
| | | clearTreeSealmethod(clearSaleMethod, tree) { |
| | | for (let item of tree) { |
| | | const saleData = item.saleMethod && |
| | | item.saleMethod.length ? |
| | | item.saleMethod.find((citem) => citem.SaleType == 'Normal') : null |
| | | if ( |
| | | ((saleData && new Date(saleData.EndDate).getTime() >= new Date().getTime() && new Date(saleData.BeginDate).getTime() <= new Date().getTime()) || |
| | | clearSaleMethod) && item.children && item.children.length |
| | | ) { |
| | | item.children.forEach((ditem) => (ditem.saleMethod = [])) |
| | | } |
| | | if (item.children && item.children.length) |
| | | this.clearTreeSealmethod( |
| | | saleData && new Date(saleData.EndDate).getTime() >= new Date().getTime() && new Date(saleData.BeginDate).getTime() <= new Date().getTime(), |
| | | item.children |
| | | ) |
| | | } |
| | | return tree |
| | | }, |
| | | // 教学资源 云学习 获取 |
| | | getResourceDataList(type) { |
| | | this.setData({ |
| | | loading: true, |
| | | noResources: false |
| | | }) |
| | | noResources: false, |
| | | }); |
| | | let query = { |
| | | path: '*', |
| | | queryType: '*', |
| | | // storeInfo: this.data.options.storeInfo, |
| | | productId: this.data.bookDetail.id, |
| | | cmsPath: type.productLinkPath, |
| | | cmsType: '*', |
| | | itemFields: { |
| | | SysType: 'CmsFolder', |
| | | // 资源类型,试读文件,是否允许下载等参数 |
| | | selectType: [], |
| | | learnSelectType: [], |
| | | freeFile: [], |
| | | file: [], |
| | | protectedFile: [], |
| | | resourcesClassification: [], |
| | | isDownload: [], |
| | | jsek_resourceBrief: [], |
| | |
| | | size: 999 |
| | | }, |
| | | } |
| | | app.MG.store |
| | | .getProductDetail(query) |
| | | .then(async (res) => { |
| | | if (!res.datas.cmsDatas[0].datas.length) { |
| | | return this.setData({ |
| | | noResources: true, |
| | | loading: false |
| | | }) |
| | | } |
| | | // 云测试,递归请求里层数据 |
| | | 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) { |
| | | res.datas.cmsDatas[0].datas.forEach(item => { |
| | | item.checked = false |
| | | }) |
| | | const list = await this.getAllResource(res.datas.cmsDatas[0].datas) |
| | | let result = [] |
| | | if (type.refCode == 'jsek_teachingResources') { |
| | | this.findChildIds(list, result) |
| | | this.setData({ |
| | | teach: list, |
| | | loading: false, |
| | | openTeachids: result |
| | | }) |
| | | console.log('教学资源', this.data.teach); |
| | | } else if (type.refCode == 'jsek_cloudLearning') { |
| | | // res.datas.cmsDatas[0].datas.forEach(item => { |
| | | // item.checked = false |
| | | // }) |
| | | // const list = await this.getAllResource(res.datas.cmsDatas[0].datas) |
| | | this.findChildIds(list, result) |
| | | this.setData({ |
| | | learn: list, |
| | | loading: false, |
| | | openLearnids: result |
| | | }) |
| | | } |
| | | } 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) |
| | | app.MG.store.getProductDetailNoChildren(query).then((res) => { |
| | | console.log('未处理资源', res.datas.cmsDatas[0].datas); |
| | | if (!res.datas.cmsDatas[0].datas.length) { |
| | | return this.setData({ |
| | | noResources: true, |
| | | loading: false, |
| | | }); |
| | | } |
| | | } |
| | | return data |
| | | let list = [] |
| | | // 判断云学习有无销售方式和有效期 |
| | | const cloundSaleMethod = |
| | | type.saleMethod && type.saleMethod.length ? |
| | | type.saleMethod.find((citem) => citem.SaleType == 'Normal') : |
| | | null |
| | | let flags = |
| | | type.refCode == 'jsek_cloudLearning' && |
| | | cloundSaleMethod && |
| | | new Date().getTime() <= new Date(cloundSaleMethod.EndDate).getTime() && |
| | | new Date().getTime() >= new Date(cloundSaleMethod.BeginDate).getTime() |
| | | res.datas.cmsDatas[0].datas.forEach((item) => { |
| | | // 云学习上有销售方式,去掉云学习下所有销售方式 |
| | | if (flags) item.saleMethod = [] |
| | | item.checked = false; |
| | | if (item.sysType == 'CmsItem') { |
| | | // 教学资源 类型名称赋值 |
| | | this.data.resourceClassList.forEach((type) => { |
| | | if (type.value == item.resourcesClassification) |
| | | item.resourceClass = type.name; |
| | | }); |
| | | // if (this.data.tabValue == "jsek_teachingResources") {} else if (this.data.tabValue == "jsek_cloudLearning") { |
| | | // item.isbuy = this.isShowNeedBuy(item); |
| | | // item.isShopCar = this.isShoppingCart(item); |
| | | // } |
| | | } |
| | | }); |
| | | // 判断处理资源 |
| | | if (res.datas.cmsDatas[0].datas.some((item) => item.sysType == 'CmsFolder')) { |
| | | if (!res.datas.cmsDatas[0].datas.some((item) => item.sysType == 'CmsItem')) { |
| | | // 1.只有目录,没有资源 |
| | | list = res.datas.cmsDatas[0].datas |
| | | } else { |
| | | this.getTreeList(res.datas.cmsDatas[0].datas, list, query.cmsPath) |
| | | list = this.ensureTreeConsistency(list) |
| | | list = this.changeResourceChildren(list) |
| | | } |
| | | } else { |
| | | // 3.只有资源,没有目录 |
| | | list = res.datas.cmsDatas[0].datas |
| | | } |
| | | let result = []; |
| | | if (type.refCode == "jsek_teachingResources") { |
| | | this.findChildIds(list, result); |
| | | this.setData({ |
| | | openTeachids: result, |
| | | loading: false, |
| | | teach: list, |
| | | }); |
| | | } else if (type.refCode == "jsek_cloudLearning") { |
| | | // 云学习上无销售方式,走目录 资源 销售方式去除方法 |
| | | if (!flags) list = this.clearTreeSealmethod(false, list) |
| | | // 判断领取查看是否显示(云学习,或资源目录,有售价为0) |
| | | let isshowDrawBtn = res.datas.cmsDatas[0].datas.some( |
| | | (item) => |
| | | item.saleMethod.length && |
| | | item.saleMethod.find((citem) => citem.SaleType == 'Normal').Price == 0 && |
| | | new Date(item.saleMethod.find((citem) => citem.SaleType == 'Normal').EndDate).getTime() >= new Date().getTime() && |
| | | new Date(item.saleMethod.find((citem) => citem.SaleType == 'Normal').BeginDate).getTime() <= new Date().getTime() |
| | | ) || (flags && cloundSaleMethod.Price == 0) |
| | | // 判断云学习全部购买按钮是否显示 |
| | | let isShowBuyCloundMenu = flags && cloundSaleMethod.Price >= 0 |
| | | // 判断购物车按钮和锁按钮是否显示 |
| | | this.handleTreeData(list).forEach(item => { |
| | | item.isbuy = this.resourceIsBuy(item); |
| | | item.isShopCar = this.isShoppingCart(item); |
| | | }) |
| | | this.findChildIds(list, result); |
| | | this.setData({ |
| | | isshowDrawBtn, |
| | | isShowBuyCloundMenu, |
| | | isCloundHaveSaleMethod: flags, |
| | | learn: list, |
| | | loading: false, |
| | | openLearnids: result, |
| | | learnPath: type.productLinkPath |
| | | }); |
| | | } |
| | | }) |
| | | }, |
| | | // 获取资源接口 |
| | | async getFolderItem(path) { |
| | | // 获取 云测试 |
| | | getResourceData(type) { |
| | | var that = this |
| | | that.setData({ |
| | | loading: true, |
| | | noResources: false, |
| | | }); |
| | | let query = { |
| | | path: '*', |
| | | queryType: '*', |
| | | productId: this.data.bookDetail.id, |
| | | cmsPath: path, |
| | | path: "*", |
| | | queryType: "*", |
| | | storeInfo: that.data.options.storeInfo, |
| | | productId: that.data.bookDetail.id, |
| | | cmsPath: type.productLinkPath, |
| | | cmsType: '*', |
| | | itemFields: { |
| | | SysType: 'CmsFolder', |
| | | SysType: "CmsFolder", |
| | | // 资源类型,试读文件,是否允许下载等参数 |
| | | selectType: [], |
| | | freeFile: [], |
| | | file: [], |
| | | protectedFile: [], |
| | | resourcesClassification: [], |
| | | isDownload: [], |
| | | jsek_resourceBrief: [], |
| | | jsek_link: [], |
| | | accessType: [], |
| | | learnSelectType: [] |
| | | jsek_questionBank: [], |
| | | }, |
| | | pading: { |
| | | start: 0, |
| | | size: 999 |
| | | 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 |
| | | }; |
| | | app.MG.store |
| | | .getProductDetail(query) |
| | | .then(async (res) => { |
| | | // 云测试,递归请求里层数据 |
| | | if (type.refCode == "questionBank") { |
| | | let data = [] |
| | | let result = []; |
| | | const isTSFW = res.datas.cmsDatas[0].datas.filter( |
| | | (item) => |
| | | item.type == 'questionBankFolder' && |
| | | (item.name == '填空题' || |
| | | item.name == '判断题' || |
| | | item.name == '单选题' || |
| | | item.name == '多选题' || |
| | | item.name == '简答题') |
| | | ) |
| | | if (that.data.options.storeInfo == 'jsek_jslx') { |
| | | data = res.datas.cmsDatas[0].datas.filter((item) => item.type == 'questionBankFolder'); |
| | | if (data.length > 0) { |
| | | that.setData({ |
| | | test: data, |
| | | loading: false, |
| | | openTeachids: result, |
| | | }); |
| | | } else { |
| | | that.setData({ |
| | | noResources: true, |
| | | loading: false, |
| | | }); |
| | | } |
| | | } else { |
| | | if (isTSFW.length > 0) { |
| | | data = res.datas.cmsDatas[0].datas.filter((item) => item.type == 'questionBankFolder' && item.childrenFolderCount > 0) |
| | | that.setData({ |
| | | jslx: false, |
| | | }); |
| | | } else { |
| | | data = res.datas.cmsDatas[0].datas.filter((item) => item.type == 'questionBankFolder') |
| | | that.setData({ |
| | | jslx: true, |
| | | }); |
| | | } |
| | | if (data.length > 0) { |
| | | let list = [] |
| | | that.getTreeList(data, list, query.cmsPath) |
| | | list = that.ensureTreeConsistency(list) |
| | | that.findChildIds(list[0].children, result); |
| | | that.setData({ |
| | | test: list.length == 1 && list[0].name == '题库' ? list[0].children : list, |
| | | loading: false, |
| | | openTeachids: result, |
| | | }); |
| | | } else { |
| | | that.setData({ |
| | | noResources: true, |
| | | loading: false, |
| | | }); |
| | | } |
| | | } |
| | | } |
| | | 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.checked = false |
| | | item.isbuy = this.resourceIsBuy(item) |
| | | item.isShopCar = this.isShoppingCart(item) |
| | | } |
| | | }) |
| | | return data.datas.cmsDatas[0].datas |
| | | }) |
| | | .catch((e) => { |
| | | console.log(e); |
| | | }); |
| | | }, |
| | | |
| | | // 获取展开项 |
| | | 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 |
| | | if (data) |
| | | for (let i = 0; i < data.length; i++) { |
| | | if (index < 3) { |
| | | const item = data[i] |
| | | if (item.children && item.children.length > 0) { |
| | | result.push(item.id) |
| | | if (item.children) { |
| | | 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 { |
| | | break |
| | | } |
| | | } else if (item.childrenCount > 0) { |
| | | result.push(item.id) |
| | | index += 1 |
| | | } |
| | | } else if (item.childrenCount > 0) { |
| | | result.push(item.id) |
| | | index += 1 |
| | | } else { |
| | | break |
| | | } |
| | | } else { |
| | | break |
| | | } |
| | | } |
| | | }, |
| | | |
| | | // 图书添加购物车 |
| | | async addBookShopcCar() { |
| | | |
| | | if (!this.data.expire) { |
| | | |
| | | const token = wx.getStorageSync('jsek-token') |
| | | if (!token) { |
| | | return wx.getUserProfile({ |
| | | desc: '用户登录', |
| | | success: (res) => { |
| | | console.log(res); |
| | | } |
| | | }) |
| | | } |
| | | |
| | | const shoppingCartGetId = [] |
| | | |
| | | const shoppingCartGetId = []; |
| | | let query = { |
| | | start: 0, |
| | | size: 9999, |
| | | filterList: [], |
| | | searchList: [] |
| | | } |
| | | const res = await app.MG.store.getShoppingCartProductList(query) |
| | | 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.selectedIds, '销售方式id'); |
| | | const determine = shoppingCartGetId.some((item) => item == this.data.selectedIds) |
| | | console.log(determine); |
| | | shoppingCartGetId.push(item.saleMethod.id); |
| | | }); |
| | | const determine = shoppingCartGetId.some( |
| | | (item) => item == this.data.selectedIds |
| | | ); |
| | | if (!determine) { |
| | | let query = { |
| | | requests: [ |
| | | { |
| | | saleMethodId: this.data.selectedIds, |
| | | storeEventId: null, |
| | | agentCode: '电子书' |
| | | } |
| | | ] |
| | | } |
| | | const addRes = app.MG.store.addShoppingCart(query) |
| | | this.showSuccessToast() |
| | | |
| | | requests: [{ |
| | | saleMethodId: this.data.selectedIds, |
| | | storeEventId: null, |
| | | agentCode: "电子书", |
| | | }, ], |
| | | }; |
| | | const addRes = app.MG.store.addShoppingCart(query); |
| | | this.showSuccessToast(); |
| | | } else { |
| | | Toast({ |
| | | context: this, |
| | | selector: '#t-toast', |
| | | message: '已添加', |
| | | theme: 'success', |
| | | direction: 'column', |
| | | selector: "#t-toast", |
| | | message: "该书已在购物车,请勿重复添加", |
| | | theme: "warning", |
| | | direction: "column", |
| | | }); |
| | | } |
| | | } else { |
| | | wx.showToast({ |
| | | title: "商品不在有效期", |
| | | icon: 'none', |
| | | icon: "none", |
| | | duration: 1000, |
| | | }) |
| | | }); |
| | | } |
| | | |
| | | |
| | | }, |
| | | |
| | | showSuccessToast() { |
| | | Toast({ |
| | | context: this, |
| | | selector: '#t-toast', |
| | | message: '添加成功', |
| | | theme: 'success', |
| | | direction: 'column', |
| | | selector: "#t-toast", |
| | | message: "添加成功", |
| | | theme: "success", |
| | | direction: "column", |
| | | }); |
| | | }, |
| | | |
| | | |
| | | |
| | | async buyBook() { |
| | | if (!this.data.expire) { |
| | | let bookOrdersId = '' |
| | | let bookOrdersId = ""; |
| | | let query = { |
| | | remarks: '电子书', |
| | | requests: [ |
| | | { |
| | | saleMethodId: this.data.bookItemDetail.defaultSaleMethodId ? this.data.bookItemDetail.defaultSaleMethodId : this.data.bookDetail.defaultSaleMethodId, |
| | | count: 1 |
| | | } |
| | | ] |
| | | } |
| | | remarks: "电子书", |
| | | requests: [{ |
| | | saleMethodId: this.data.bookItemDetail.defaultSaleMethodId ? |
| | | this.data.bookItemDetail.defaultSaleMethodId : this.data.bookDetail.defaultSaleMethodId, |
| | | count: 1, |
| | | }, ], |
| | | }; |
| | | // 发起订单初始化请求并等待结果 |
| | | const res = await app.MG.store.initOrder(query) |
| | | const res = await app.MG.store.initOrder(query); |
| | | // 获取订单号并赋值给 orderNumber.value |
| | | bookOrdersId = res.orderNumber |
| | | console.log(bookOrdersId); |
| | | bookOrdersId = res.orderNumber; |
| | | // 检查订单号是否存在 |
| | | if (bookOrdersId) { |
| | | const url = '/pages/cart/paymentPage/index?orderNumber=' + bookOrdersId |
| | | wx.navigateTo({ |
| | | url |
| | | }) |
| | | } else { |
| | | console.log(222); |
| | | } |
| | | if (this.data.bookDetail.price == "0.00") { |
| | | app.MG.store |
| | | .confirmOrder({ |
| | | orderNum: bookOrdersId, |
| | | }) |
| | | .then((res) => { |
| | | 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 {} |
| | | } else { |
| | | wx.showToast({ |
| | | title: "商品不在有效期", |
| | | icon: 'none', |
| | | icon: "none", |
| | | duration: 1000, |
| | | }) |
| | | }); |
| | | } |
| | | }, |
| | | |
| | | // 获取教学资源下载是否申请通过 |
| | | getApplyInfo(id) { |
| | | async getApplyInfo(id) { |
| | | // 获取当前时间 |
| | | const currentDate = new Date() |
| | | const currentDate = new Date(); |
| | | let query = { |
| | | sort: { |
| | | type: 'Desc', |
| | | field: 'CreateDate' |
| | | type: "Desc", |
| | | field: "CreateDate", |
| | | }, |
| | | start: 0, |
| | | size: 99999, |
| | | appRefCode: app.config.appRefCode, |
| | | topicIdOrRefCode: 'productDownLoad' |
| | | } |
| | | app.MG.ugc.getTopicMessageList(query).then((res) => { |
| | | topicIdOrRefCode: "productDownLoad", |
| | | }; |
| | | await app.MG.ugc.getTopicMessageList(query).then((res) => { |
| | | const applyResource = res.datas.find((item) => { |
| | | let content = [] |
| | | let content = []; |
| | | try { |
| | | content = JSON.parse(item.content) |
| | | content = JSON.parse(item.content); |
| | | } catch (error) { |
| | | content = [] |
| | | content = []; |
| | | } |
| | | if (Array.isArray(content)) return content.find((citem) => citem.id == id) |
| | | return false |
| | | }) |
| | | if (Array.isArray(content)) |
| | | return content.find((citem) => citem.id == id); |
| | | return false; |
| | | }); |
| | | // 有申请记录 |
| | | if (applyResource) { |
| | | if (applyResource.state == 'Reject') { |
| | | 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 |
| | | 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 == '永久') { |
| | | if (endDate == "永久") { |
| | | this.setData({ |
| | | applyState: 'Normal', |
| | | deadline: '永久', |
| | | }) |
| | | console.log('有效日期', this.data.deadline); |
| | | applyState: "Normal", |
| | | deadline: "永久", |
| | | }); |
| | | } else { |
| | | |
| | | let endTime = new Date(endDate + ' 23:59:59').getTime() |
| | | let endTime = new Date(endDate + " 23:59:59").getTime(); |
| | | this.setData({ |
| | | deadline: endDate + ' 23:59:59' |
| | | }) |
| | | deadline: endDate + " 23:59:59", |
| | | }); |
| | | if (currentDate.getTime() < endTime) { |
| | | // 未超时 |
| | | this.setData({ |
| | | applyState: 'Normal' |
| | | }) |
| | | applyState: "Normal", |
| | | }); |
| | | } else { |
| | | this.setData({ |
| | | applyState: 'none' |
| | | }) |
| | | applyState: "none", |
| | | }); |
| | | } |
| | | } |
| | | } else { |
| | | this.setData({ |
| | | applyState: applyResource.state |
| | | }) |
| | | applyState: applyResource.state, |
| | | }); |
| | | } |
| | | } else { |
| | | this.setData({ |
| | | applyState: 'none' |
| | | }) |
| | | applyState: "none", |
| | | }); |
| | | } |
| | | }) |
| | | }); |
| | | this.setData({ |
| | | applyResourceLoading: false |
| | | }) |
| | | applyResourceState: false, |
| | | }); |
| | | wx.hideLoading(); |
| | | }, |
| | | // 申请教学资源 |
| | | applyResource() { |
| | | this.setData({ |
| | | applyResourceLoading: true |
| | | }) |
| | | // 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) { |
| | | wx.showToast({ |
| | | title: '申请已提交,请待审核通过后下载', |
| | | }) |
| | | } |
| | | this.getApplyInfo(this.data.bookDetail.id) |
| | | }) |
| | | // } else { |
| | | // ElMessageBox.confirm('请先进行教师认证!', '尊敬的用户,您好!', { |
| | | // confirmButtonText: '去认证', |
| | | // cancelButtonText: '取消', |
| | | // type: 'warning' |
| | | // }) |
| | | // .then(() => { |
| | | // isShow.value = true |
| | | // }) |
| | | // .catch(() => { }) |
| | | // } |
| | | // } else { |
| | | // // logIn() |
| | | // if (this.data.applyResourceState) { |
| | | // return wx.showToast({ |
| | | // icon: "error", |
| | | // title: "请勿重复点击", |
| | | // }); |
| | | // } |
| | | this.setData({ |
| | | applyResourceState: true, |
| | | }); |
| | | let role = JSON.parse(wx.getStorageSync(app.config.userInfoKey)).role; |
| | | if (role) { |
| | | if (role == "Teacher") { |
| | | wx.showLoading({ |
| | | title: "加载中", |
| | | }); |
| | | // 申请教学资源 |
| | | 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(async (res) => { |
| | | if (res) { |
| | | wx.showToast({ |
| | | title: "申请已提交", |
| | | duration: 2000, |
| | | }); |
| | | } |
| | | await this.getApplyInfo(this.data.bookDetail.id); |
| | | }); |
| | | } else { |
| | | wx.showModal({ |
| | | title: "尊敬的用户,您好!", |
| | | content: "请先进行教师认证!", |
| | | confirmColor: "#ff6c00", |
| | | cancelColor: "#949494", |
| | | complete: (res) => { |
| | | if (res.cancel) {} |
| | | if (res.confirm) { |
| | | wx.navigateTo({ |
| | | url: "/packageDomain/pages/teacherCertification/index", |
| | | }); |
| | | } |
| | | }, |
| | | }); |
| | | } |
| | | } else { |
| | | wx.showModal({ |
| | | title: "尊敬的用户,您好!", |
| | | content: "请先进行教师认证!", |
| | | confirmColor: "#ff6c00", |
| | | cancelColor: "#949494", |
| | | complete: (res) => { |
| | | if (res.cancel) {} |
| | | if (res.confirm) { |
| | | wx.navigateTo({ |
| | | url: "/packageDomain/pages/teacherCertification/index", |
| | | }); |
| | | } |
| | | }, |
| | | }); |
| | | } |
| | | }, |
| | | // 教学资源下载前往PC提示Diialog |
| | | closeTeachDownload() { |
| | | this.setData({ |
| | | isShowTeachDownload: false |
| | | }) |
| | | isShowTeachDownload: false, |
| | | }); |
| | | }, |
| | | // 下载功能 |
| | | downloadTeach(e) { |
| | | this.setData({ |
| | | isShowTeachDownload: true |
| | | }) |
| | | console.log('zhuan', this.data.isShowTeachDownload); |
| | | let role = JSON.parse(wx.getStorageSync(app.config.userInfoKey)).role; |
| | | if (role && role == "Teacher") { |
| | | this.setData({ |
| | | isShowTeachDownload: true, |
| | | }); |
| | | } else { |
| | | wx.showModal({ |
| | | title: "尊敬的用户,您好!", |
| | | content: "请先进行教师认证!", |
| | | confirmColor: "#ff6c00", |
| | | cancelColor: "#949494", |
| | | complete: (res) => { |
| | | if (res.cancel) {} |
| | | if (res.confirm) { |
| | | wx.navigateTo({ |
| | | url: "/packageDomain/pages/teacherCertification/index", |
| | | }); |
| | | } |
| | | }, |
| | | }); |
| | | } |
| | | // const data = e.detail.value |
| | | // // const data |
| | | // // let role = userStore.userInfo ? userStore.userInfo.role : null |
| | |
| | | tempFilePath: res.tempFilePath, |
| | | success: function (res) { |
| | | wx.showToast({ |
| | | title: '下载成功', |
| | | icon: 'success' |
| | | }) |
| | | title: "下载成功", |
| | | icon: "success", |
| | | }); |
| | | }, |
| | | fail: function (res) { |
| | | wx.showToast({ |
| | | title: '下载失败', |
| | | icon: 'none' |
| | | }) |
| | | } |
| | | }) |
| | | title: "下载失败", |
| | | icon: "none", |
| | | }); |
| | | }, |
| | | }); |
| | | }, |
| | | fail: function (res) { |
| | | wx.showToast({ |
| | | title: '下载失败', |
| | | icon: 'none' |
| | | }) |
| | | } |
| | | }) |
| | | 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 |
| | | const saleData = data.saleMethod.find((item) => item.SaleType == 'Normal') |
| | | if (saleData.State == 'Disable') return false |
| | | const isShow = this.data.buyIdList.some( |
| | | (item) => item == saleData.Id |
| | | ); |
| | | // 已经购买 |
| | | if (isShow) return false |
| | | // 未购买,查看销售方式是否过期 |
| | | if (!isShow) { |
| | | const flag = new Date(saleData.EndDate).getTime() >= new Date().getTime() && |
| | | new Date(saleData.BeginDate).getTime() <= new Date().getTime() |
| | | if (flag) { |
| | | // 为过期 ,需要购买 |
| | | return true |
| | | } else { |
| | | // 已过期 无需购买 |
| | | return false |
| | | } |
| | | } |
| | | } else { |
| | | return false |
| | | return false; |
| | | } |
| | | }, |
| | | // 云学习资源是否显示锁图标(未购买,且资源售价大于零) |
| | | isShowNeedBuy(data) { |
| | | if (data.saleMethod && data.saleMethod.length) { |
| | | const isSHow = this.data.buyIdList.some( |
| | | (item) => item == data.saleMethod[0].Id |
| | | ); |
| | | if (isSHow) { |
| | | return false; |
| | | } else { |
| | | return data.saleMethod[0].Price > 0 ? true : false; |
| | | } |
| | | return !isSHow; |
| | | } else { |
| | | return false; |
| | | } |
| | | }, |
| | | // 获取已购买商品 |
| | |
| | | start: 0, |
| | | size: 999, |
| | | filterList: [], |
| | | searchList: [] |
| | | } |
| | | searchList: [], |
| | | }; |
| | | app.MG.store.getShoppingCartProductList(query).then((res) => { |
| | | const list = [] |
| | | const list = []; |
| | | res.datas.forEach((item) => { |
| | | list.push(item.saleMethod.id) |
| | | }) |
| | | list.push(item.saleMethod.id); |
| | | }); |
| | | this.setData({ |
| | | shoppingList: res.datas, |
| | | shoppingCartGetId: list |
| | | }) |
| | | }) |
| | | shoppingCartGetId: list, |
| | | }); |
| | | }); |
| | | }, |
| | | // 判断资源加入购物车按钮是否显示 |
| | | isShoppingCart(data) { |
| | | if (data.saleMethod && data.saleMethod.length) { |
| | | if (data.saleMethod[0].Price <= 0) return false |
| | | const saleData = data.saleMethod.find((item) => item.SaleType == 'Normal') |
| | | // 先判断是否免费 |
| | | if (saleData.Price <= 0) return false |
| | | // 再判断是否购买 |
| | | const isBuy = this.data.buyIdList.some((item) => item == data.saleMethod[0].Id) |
| | | const isBuy = this.data.buyIdList.some((item) => item == saleData.Id) |
| | | if (isBuy) { |
| | | // 购买了 |
| | | return false |
| | | } else { |
| | | // 判断是否加入购物车 |
| | | const isSHow = this.data.shoppingCartGetId.some((item) => item == data.saleMethod[0].Id) |
| | | return !isSHow |
| | | const isShow = this.data.shoppingCartGetId.some((item) => item == saleData.Id) |
| | | if (isShow) return false |
| | | // 未购买,查看销售方式是否过期 |
| | | if (!isShow) { |
| | | const flag = new Date(saleData.EndDate).getTime() >= new Date().getTime() && |
| | | new Date(saleData.BeginDate).getTime() <= new Date().getTime() |
| | | if (flag) { |
| | | // 为过期 ,需要购买 |
| | | return true |
| | | } else { |
| | | // 已过期 无需购买 |
| | | return false |
| | | } |
| | | } |
| | | } |
| | | } else { |
| | | return false |
| | | return false; |
| | | } |
| | | }, |
| | | |
| | | updateShoppingCartHidden() { |
| | | const isSHow = this.data.shoppingCartGetId.some( |
| | | (item) => item == data.saleMethod[0].Id |
| | | ); |
| | | return !isSHow; |
| | | }, |
| | | //刷新购物车图标 |
| | | updateCloudLearning() { |
| | | this.getBookInfo() |
| | | this.getShoppingCartProductGet() |
| | | const checkData = this.data.cmsDatas.find( |
| | | (item) => item.refCode == "jsek_cloudLearning" |
| | | ); |
| | | this.getResourceDataList(checkData); |
| | | }, |
| | | // 遍历树结构转换为数组方法 |
| | | handleTreeData(array) { |
| | | const flattenedArray = [] |
| | | const flattenedArray = []; |
| | | array.forEach((node) => { |
| | | // 将当前节点添加到展开的数组中 |
| | | flattenedArray.push(node) |
| | | flattenedArray.push(node); |
| | | // 递归处理子节点 |
| | | if (node.children && node.children.length > 0) { |
| | | const childrenArray = this.handleTreeData(node.children) |
| | | flattenedArray.push(...childrenArray) |
| | | const childrenArray = this.handleTreeData(node.children); |
| | | flattenedArray.push(...childrenArray); |
| | | } |
| | | }) |
| | | return flattenedArray.filter((item) => item.sysType == 'CmsItem') |
| | | }); |
| | | return flattenedArray; |
| | | }, |
| | | // 云学习一键领取 |
| | | async getFreeResource() { |
| | | const child = this.selectComponent('#learn-resource') |
| | | const token = wx.getStorageSync('jsek-token') |
| | | const child = this.selectComponent("#learn-resource"); |
| | | const token = wx.getStorageSync(app.config.tokenKey); |
| | | if (!token) { |
| | | return wx.getUserProfile({ |
| | | desc: '用户登录', |
| | | success: (res) => { |
| | | console.log(res); |
| | | loginInfo(app, (data) => { |
| | | // 如果不是第一次登录,会执行回调 |
| | | if (data) { |
| | | // 登录成功,自动记录token和用户信息,并返回true |
| | | } else { |
| | | // 出现错误,返回false |
| | | } |
| | | }) |
| | | }); |
| | | } |
| | | 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, |
| | | // 领取查看 ,先看云学习上的 再看资源上的 |
| | | const cloundMenu = this.data.resourceCodeList.find((item) => item.refCode == 'jsek_cloudLearning') |
| | | const cloundMenuSaleMethod = |
| | | cloundMenu.saleMethod && cloundMenu.saleMethod.length ? |
| | | cloundMenu.saleMethod.find((ditem) => ditem.SaleType == 'Normal') : |
| | | undefined |
| | | let query = {} |
| | | if (this.data.isCloundHaveSaleMethod && !cloundMenuSaleMethod.Price) { |
| | | // 云学习上有销售方式,且为0元,直接领取云学习 |
| | | query = { |
| | | remarks: '云学习', |
| | | requests: [{ |
| | | saleMethodId: cloundMenuSaleMethod.Id, |
| | | count: 1 |
| | | }) |
| | | }] |
| | | } |
| | | }) |
| | | |
| | | let query = { |
| | | remarks: '云学习', |
| | | requests, |
| | | } else { |
| | | // 领取资源 |
| | | let arr = this.handleTreeData(this.data.learn).filter(item => this.resourceIsBuy(item)) |
| | | let freeIds = arr.filter((item) => { |
| | | return item.saleMethod.find((citem) => citem.SaleType == 'Normal').Price == 0 |
| | | }) |
| | | if (!freeIds.length) |
| | | return wx.showToast({ |
| | | icon: "error", |
| | | title: "暂无免费资源", |
| | | }); |
| | | let requests = []; |
| | | freeIds.forEach((item, index) => { |
| | | if (this.resourceIsBuy(item)) { |
| | | requests.push({ |
| | | saleMethodId: item.saleMethod[0].Id, |
| | | count: 1, |
| | | }); |
| | | } |
| | | }); |
| | | query = { |
| | | remarks: "云学习", |
| | | requests, |
| | | }; |
| | | } |
| | | child.changeReceive(true); |
| | | try { |
| | | const initOrderRes = await app.MG.store.initOrder(query) |
| | | const initOrderRes = await app.MG.store.initOrder(query); |
| | | let parameter = { |
| | | orderNum: initOrderRes.orderNumber |
| | | } |
| | | orderNum: initOrderRes.orderNumber, |
| | | }; |
| | | // 确认订单 |
| | | const confirmOrderRes = await app.MG.store.confirmOrder(parameter) |
| | | const confirmOrderRes = await app.MG.store.confirmOrder(parameter); |
| | | if (confirmOrderRes.orderNumber) { |
| | | child.changeReceive(false) |
| | | child.changeReceive(false); |
| | | wx.showToast({ |
| | | title: '领取成功', |
| | | title: "领取成功", |
| | | }); |
| | | this.getBookInfo(this.data.bookId); |
| | | this.getResourceDataList({ |
| | | refCode: 'jsek_cloudLearning', |
| | | productLinkPath: this.data.learnPath |
| | | }) |
| | | this.getBookInfo(this.data.bookId) |
| | | this.setData({ |
| | | successOrderNumber: confirmOrderRes.orderNumber |
| | | }) |
| | | } |
| | | } catch (error) { |
| | | console.log(error) |
| | | console.log(error); |
| | | } |
| | | }, |
| | | // 云学习一键购买 |
| | | async allAddShoppiingCar() { |
| | | const child = this.selectComponent('#learn-resource') |
| | | const token = wx.getStorageSync('jsek-token') |
| | | const child = this.selectComponent("#learn-resource"); |
| | | const token = wx.getStorageSync("jsek-token"); |
| | | if (!token) { |
| | | return wx.getUserProfile({ |
| | | desc: '用户登录', |
| | | 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 = [] |
| | | let shopList = this.handleTreeData(this.data.learn).filter(item => item.cmsType == 'cmsItem') |
| | | shopList = shopList.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: '云学习', |
| | | remarks: "云学习", |
| | | requests, |
| | | } |
| | | const initOrderRes = await app.MG.store.initOrder(query) |
| | | child.changeBuy(false) |
| | | }; |
| | | 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: '请重试', |
| | | }) |
| | | title: "请重试", |
| | | }); |
| | | } |
| | | }, |
| | | // 云学习字段购买 |
| | | async buyCloundMenu() { |
| | | const cloundData = this.data.resourceCodeList.find(item => item.refCode == 'jsek_cloudLearning') |
| | | |
| | | }, |
| | | // 变为所有check true |
| | | findAndUpdateItemsByIds(tree, ids) { |
| | |
| | | // 组卷格式化日期显示 |
| | | DateFormat(date, fmt) { |
| | | if (date && fmt) { |
| | | let _date = new Date(date) |
| | | 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() //毫秒 |
| | | } |
| | | "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)) |
| | | fmt = fmt.replace( |
| | | RegExp.$1, |
| | | (_date.getFullYear() + "").substr(4 - RegExp.$1.length) |
| | | ); |
| | | } |
| | | for (var k in o) { |
| | | if (new RegExp('(' + k + ')').test(fmt)) { |
| | | if (new RegExp("(" + k + ")").test(fmt)) { |
| | | fmt = fmt.replace( |
| | | RegExp.$1, |
| | | RegExp.$1.length == 1 |
| | | ? (o)[k] |
| | | : ('00' + (o)[k]).substr(('' + (o)[k]).length) |
| | | ) |
| | | RegExp.$1.length == 1 ? |
| | | o[k] : |
| | | ("00" + o[k]).substr(("" + o[k]).length) |
| | | ); |
| | | } |
| | | } |
| | | return fmt |
| | | return fmt; |
| | | } else { |
| | | return '' |
| | | return ""; |
| | | } |
| | | }, |
| | | // 获取组卷答题数据 |
| | | getMockData() { |
| | | // const child = this.selectComponent("#test-resource"); |
| | | // if (child) child.changeTestLoaidng(true); |
| | | this.setData({ |
| | | 'mockData.useCount': 0, |
| | | 'mockData.mockList': [] |
| | | }) |
| | | "mockData.useCount": 0, |
| | | "mockData.mockList": [], |
| | | }); |
| | | app.MG.identity |
| | | .getUserKey({ |
| | | domain: 'mockData', |
| | | keys: [this.data.bookId] |
| | | 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') |
| | | }) |
| | | const mock = JSON.parse(res[0].value); |
| | | mock.forEach((item) => { |
| | | item.createDate = this.DateFormat(item.createDate, "yyyy-MM-dd"); |
| | | }); |
| | | this.setData({ |
| | | 'mockData.mockList': mock |
| | | }) |
| | | "mockData.mockList": mock, |
| | | }); |
| | | // 组卷已使用次数 |
| | | res.forEach((item) => { |
| | | // 已经有答题分数等数据,证明组卷已经使用完毕 |
| | | if (item.resultData) { |
| | | this.setData({ |
| | | 'mockData.useCount': this.data.mockData.useCount + 1 |
| | | }) |
| | | "mockData.useCount": this.data.mockData.useCount + 1, |
| | | }); |
| | | } |
| | | }) |
| | | }); |
| | | } |
| | | }) |
| | | }); |
| | | }, |
| | | // 购买组卷 |
| | | async buyMock() { |
| | | let res |
| | | if (!this.data.mockData.id) return wx.showToast({ |
| | | icon: "error", |
| | | title: '暂无组卷', |
| | | mask: true |
| | | }) |
| | | let res; |
| | | if (!this.data.mockData.id) |
| | | return wx.showToast({ |
| | | icon: "error", |
| | | title: "暂无组卷", |
| | | mask: true, |
| | | }); |
| | | // 构建订单查询对象 |
| | | try { |
| | | let query = { |
| | | remarks: '组卷', |
| | | requests: [ |
| | | { |
| | | saleMethodId: this.data.mockData.id, |
| | | count: 1 |
| | | } |
| | | ] |
| | | } |
| | | remarks: "组卷", |
| | | requests: [{ |
| | | saleMethodId: this.data.mockData.id, |
| | | count: 1, |
| | | }, ], |
| | | }; |
| | | if (this.data.flag) { |
| | | this.setData({ |
| | | flag: false |
| | | }) |
| | | res = await app.MG.store.initOrder(query) |
| | | flag: false, |
| | | }); |
| | | res = await app.MG.store.initOrder(query); |
| | | } |
| | | if (res.orderNumber && this.data.mockData.price) { |
| | | wx.navigateTo({ |
| | | url: `/pages/cart/paymentPage/index?orderNumber=${res.orderNumber}`, |
| | | }) |
| | | }); |
| | | } else { |
| | | // 0元直接领取 |
| | | // 确认订单 |
| | | const confirmOrderRes = await app.MG.store.confirmOrder({ orderNum: res.orderNumber }) |
| | | const confirmOrderRes = await app.MG.store.confirmOrder({ |
| | | orderNum: res.orderNumber, |
| | | }); |
| | | if (confirmOrderRes) { |
| | | wx.showToast({ |
| | | icon: "success", |
| | | title: '领取成功', |
| | | }) |
| | | title: "领取成功", |
| | | }); |
| | | this.setData({ |
| | | flag: true |
| | | }) |
| | | await this.recordBuyMock() // 记录购买时间 |
| | | flag: true, |
| | | }); |
| | | await this.recordBuyMock(); // 记录购买时间 |
| | | } |
| | | } |
| | | } catch (error) { |
| | | console.log(error) |
| | | console.log(error); |
| | | } |
| | | }, |
| | | // 记录购买组卷时间 |
| | | recordBuyMock() { |
| | | const num = this.data.mockData.mockList.length |
| | | const id = tool.uuid(8) |
| | | const createDate = new Date().getTime() |
| | | const mockList = this.data.mockData.mockList |
| | | mockList.push({ id, createDate, name: `第${num + 1}套试卷`, state: '0' }) |
| | | const num = this.data.mockData.mockList.length; |
| | | const id = tool.uuid(8); |
| | | const createDate = this.DateFormat(new Date().getTime(), "yyyy-MM-dd"); |
| | | const mockList = this.data.mockData.mockList; |
| | | mockList.push({ |
| | | id, |
| | | createDate, |
| | | name: `第${num + 1}套试卷`, |
| | | state: "0", |
| | | }); |
| | | this.setData({ |
| | | 'mockData.mockList': mockList |
| | | }) |
| | | "mockData.mockList": mockList, |
| | | }); |
| | | // 记录购买时间,并设状态state为1,表示刚购买完成组卷 |
| | | app.MG.identity.setUserKey({ |
| | | setKeyRequests: [ |
| | | { |
| | | domain: 'mockData', |
| | | key: this.data.bookDetail.id + '', |
| | | value: JSON.stringify(this.data.mockData.mockList) |
| | | setKeyRequests: [{ |
| | | domain: "mockData", |
| | | key: this.data.bookDetail.id + "", |
| | | value: JSON.stringify(this.data.mockData.mockList), |
| | | }, ], |
| | | }); |
| | | }, |
| | | // 获取相关图书 |
| | | getAboutBook(path) { |
| | | this.setData({ |
| | | relatedBookLoading: true, |
| | | noRelatedBookData: false, |
| | | }); |
| | | 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.bookDetail.id |
| | | ); |
| | | let bookArr = []; |
| | | 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; |
| | | } |
| | | this.setData({ |
| | | relatedBookData: bookArr, |
| | | relatedBookLoading: false, |
| | | }); |
| | | if (!this.data.relatedBookData.length) |
| | | this.setData({ |
| | | noRelatedBookData: true, |
| | | }); |
| | | }); |
| | | }, |
| | | goBookDetails(e) { |
| | | this.setData({ |
| | | tabValue: "brief", |
| | | pageLoading: true, |
| | | }); |
| | | let bookPathList = wx.getStorageSync("bookPathList"); |
| | | const bookPath = { |
| | | id: this.data.bookDetail.id, |
| | | name: this.data.bookDetail.name, |
| | | }; |
| | | if (bookPathList) { |
| | | bookPathList = JSON.parse(bookPathList); |
| | | if (bookPathList.length > 8) bookPathList.shift(); |
| | | bookPathList.push(bookPath); |
| | | } else { |
| | | bookPathList = [bookPath]; |
| | | } |
| | | |
| | | wx.setStorageSync("bookPathList", JSON.stringify(bookPathList)); |
| | | this.setData({ |
| | | learn: [], |
| | | teach: [] |
| | | }) |
| | | this.onLoad({ |
| | | id: e.detail.id, |
| | | name: e.detail.name, |
| | | }); |
| | | }, |
| | | // 底部购买按钮 |
| | | buyBtn() { |
| | | if (this.data.tabValue == 'brief') { |
| | | this.buyBook() |
| | | } |
| | | else if (this.data.tabValue == 'jsek_cloudLearning') { |
| | | const tree = this.selectComponent('#tree') |
| | | tree.onCloudShoppingCart() |
| | | } else if (this.data.tabValue == 'questionBank') { |
| | | this.buyMock() |
| | | if (this.data.tabValue == "brief" && !this.data.bookBuy) { |
| | | this.buyBook(); |
| | | } else if (this.data.tabValue == "jsek_cloudLearning") { |
| | | const tree = this.selectComponent("#tree"); |
| | | tree.onCloudShoppingCart(); |
| | | } else { |
| | | console.log(this.data.tabValue); |
| | | } |
| | |
| | | goRead() { |
| | | if (!this.data.noFile) { |
| | | wx.showToast({ |
| | | title: '暂无阅读文件', |
| | | icon: 'none', |
| | | duration: 2000 |
| | | }) |
| | | title: "暂无阅读文件", |
| | | icon: "none", |
| | | duration: 2000, |
| | | }); |
| | | return false; |
| | | } |
| | | wx.navigateTo({ |
| | | url: '/packageBookService/pages/components/webView/index?md5=' + this.data.fileInfo.md5 + '&fileName=' + this.data.fileInfo.bookName + '&fileType=' + this.data.fileInfo.fileType + '&freePage=' + this.data.fileInfo.freePage |
| | | }) |
| | | url: "/packageBookService/pages/components/webView/index?md5=" + |
| | | this.data.fileInfo.md5 + |
| | | "&fileName=" + |
| | | this.data.fileInfo.bookName + |
| | | "&fileType=" + |
| | | this.data.fileInfo.fileType + |
| | | "&freePage=" + |
| | | this.data.fileInfo.freePage + |
| | | "&bookBuy=" + |
| | | this.data.bookBuy + |
| | | "&bookId=" + |
| | | this.data.bookDetail.id, |
| | | |
| | | }); |
| | | }, |
| | | |
| | | //样书申请 |
| | | //申请电子样书 |
| | | appplyElectronicBook() { |
| | | console.log(this.data.bookDetail) |
| | | if (this.data.bookDetail.isApplyBook == 2 || this.data.bookDetail.isApplyBook == 4) { |
| | | |
| | | let role = this.data.userInfo != null ? this.data.userInfo.role : null |
| | | if (role) { |
| | | if (role == 'Teacher') { |
| | | if (this.data.noFile) { |
| | | this.getSelectBookCount() |
| | | //获取已申请纸质样书 |
| | | getAlreadyPBookList() { |
| | | const data = { |
| | | start: 0, |
| | | size: 9999, |
| | | topicIdOrRefCode: "applyEntityBook", |
| | | appRefCode: app.config.appRefCode, |
| | | sort: { |
| | | type: "Desc", |
| | | field: "CreateDate", |
| | | }, |
| | | }; |
| | | app.MG.ugc.getTopicMessageList(data).then((res) => { |
| | | let list = []; |
| | | res.datas.map((item) => { |
| | | if (item.content) { |
| | | item.content = JSON.parse(item.content); |
| | | } |
| | | list.push(item); |
| | | }); |
| | | this.setData({ |
| | | alreadyPaperBookList: list, |
| | | }); |
| | | }); |
| | | }, |
| | | //获取已申请电子样书 |
| | | getAlreadyEBookList() { |
| | | const data = { |
| | | start: 0, |
| | | size: 9999, |
| | | topicIdOrRefCode: "applyBook", |
| | | appRefCode: app.config.appRefCode, |
| | | sort: { |
| | | type: "Desc", |
| | | field: "CreateDate", |
| | | }, |
| | | }; |
| | | app.MG.ugc.getTopicMessageList(data).then((res) => { |
| | | let list = []; |
| | | if (res.datas.length > 0) { |
| | | res.datas.map((item) => { |
| | | if (item.feedBack) { |
| | | item.feedBack = JSON.parse(item.feedBack); |
| | | if (item.feedBack.endDate) { |
| | | let times = new Date( |
| | | item.feedBack.endDate + " 23:59:59" |
| | | ).getTime(); |
| | | let currentDate = new Date().getTime(); |
| | | if (times < currentDate) { |
| | | item.isExpiry = true; |
| | | } |
| | | } |
| | | } |
| | | if (item.content) { |
| | | item.content = JSON.parse(item.content); |
| | | } |
| | | if (item.state != "Reject") { |
| | | list.push(item); |
| | | } |
| | | }); |
| | | const smBook = list.find(item => item.content[0].id == this.data.bookDetail.id) |
| | | if (smBook && smBook.state == 'Normal') { |
| | | const flag = new Date(smBook.feedBack.endDate + ' 23:59:59').getTime() > new Date().getTime() |
| | | if (flag) { |
| | | this.setData({ |
| | | applicationState: 'Normal' |
| | | }) |
| | | } else { |
| | | wx.showToast({ |
| | | title: "暂无电子书文件,请联系管理员!", |
| | | icon: 'none', |
| | | duration: 1000, |
| | | this.setData({ |
| | | applicationState: 'overdue' |
| | | }) |
| | | } |
| | | } else { |
| | | wx.showModal({ |
| | | title: '尊敬的用户,您好!', //提示的标题 |
| | | content: '请先进行教师认证?', //提示的内容 |
| | | success: function (res) { |
| | | if (res.confirm) { |
| | | wx.navigateTo({ |
| | | url: "/packageDomain/pages/teacherCertification/index", |
| | | }); |
| | | } else if (res.cancel) { |
| | | } |
| | | } |
| | | }) |
| | | } |
| | | this.setData({ |
| | | alreadyElectronicBookList: list, |
| | | }); |
| | | } |
| | | } else { |
| | | wx.showToast({ |
| | | title: "该书不能申请电子样书", |
| | | icon: 'none', |
| | | duration: 1000, |
| | | }) |
| | | } |
| | | }); |
| | | }, |
| | | //申请纸质样书 |
| | | appplyPaperBook() { |
| | | if (this.data.bookDetail.isApplyBook == 3 || this.data.bookDetail.isApplyBook == 4) { |
| | | let role = this.data.userInfo != null ? this.data.userInfo.role : null |
| | | if (role) { |
| | | if (role == 'Teacher') { |
| | | this.getSelectPaperBookCount() |
| | | } else { |
| | | wx.showModal({ |
| | | title: '尊敬的用户,您好!', //提示的标题 |
| | | content: '请先进行教师认证?', //提示的内容 |
| | | success: function (res) { |
| | | if (res.confirm) { |
| | | wx.navigateTo({ |
| | | url: "/packageDomain/pages/teacherCertification/index", |
| | | }); |
| | | } else if (res.cancel) { |
| | | } |
| | | } |
| | | }) |
| | | } |
| | | } |
| | | } else { |
| | | wx.showToast({ |
| | | title: "该书不能申请纸质样书", |
| | | icon: 'none', |
| | | duration: 1000, |
| | | }) |
| | | } |
| | | }, |
| | | |
| | | //获取当前已申请次数(纸质) |
| | | getSelectPaperBookCount() { |
| | | app.MG.app |
| | | .getTicketResult({ |
| | | ticketRefCodeOrGuid: 'paperSampleBookapplyNum', |
| | | roleId: this.data.userInfo.roleId |
| | | ticketRefCodeOrGuid: "paperSampleBookapplyNum", |
| | | roleId: this.data.userInfo.roleId, |
| | | }) |
| | | .then((res) => { |
| | | this.setData({ |
| | | paperBookCount: res.totalCount - res.usedCount |
| | | }) |
| | | this.getAlreadyBookList(this.data.bookDetail, 'pBook') |
| | | }) |
| | | paperBookCount: res.totalCount - res.usedCount, |
| | | }); |
| | | }); |
| | | }, |
| | | //获取当前已申请次数(电子) |
| | | getSelectBookCount() { |
| | | app.MG.app |
| | | .getTicketResult({ |
| | | ticketRefCodeOrGuid: 'electronicSampleBookapplyNum', |
| | | roleId: this.data.userInfo.roleId |
| | | ticketRefCodeOrGuid: "electronicSampleBookapplyNum", |
| | | roleId: this.data.userInfo.roleId, |
| | | }) |
| | | .then((res) => { |
| | | this.setData({ |
| | | ebookCount: res.totalCount - res.usedCount |
| | | }) |
| | | this.getAlreadyBookList(this.data.bookDetail, 'eBook') |
| | | }) |
| | | ebookCount: res.totalCount - res.usedCount, |
| | | }); |
| | | }); |
| | | }, |
| | | //获取已申请的样书列表 |
| | | getAlreadyBookList(item, type) { |
| | | let topicIdOrRefCode = null |
| | | if (type == 'eBook') { |
| | | topicIdOrRefCode = 'applyBook' |
| | | } else { |
| | | topicIdOrRefCode = 'applyEntityBook' |
| | | |
| | | //申请电子样书 |
| | | appplyElectronicBook() { |
| | | // 先判断下教师认证,未对原有逻辑修改 |
| | | let role = this.data.userInfo != null ? this.data.userInfo.role : null; |
| | | if (role && role == "Teacher") {} else { |
| | | return wx.showModal({ |
| | | title: "尊敬的用户,您好!", //提示的标题 |
| | | content: "请先进行教师认证?", //提示的内容 |
| | | confirmColor: "#ff6c00", |
| | | cancelColor: "#949494", |
| | | success: function (res) { |
| | | if (res.confirm) { |
| | | wx.navigateTo({ |
| | | url: "/packageDomain/pages/teacherCertification/index", |
| | | }); |
| | | } else if (res.cancel) {} |
| | | }, |
| | | }); |
| | | } |
| | | const data = { |
| | | start: 0, |
| | | size: 9999, |
| | | topicIdOrRefCode, |
| | | appRefCode: app.config.appRefCode, |
| | | sort: { |
| | | type: 'Desc', |
| | | field: 'CreateDate' |
| | | } |
| | | } |
| | | app.MG.ugc.getTopicMessageList(data).then((res) => { |
| | | let itemAttr = null |
| | | let isHas = false |
| | | itemAttr = { |
| | | id: item.id, |
| | | title: item.name || '--', |
| | | icon: item.icon, |
| | | checked: false, |
| | | defaultSaleMethodId: item.defaultSaleMethodId, |
| | | md5: item.datas.Icon, |
| | | author: item.author || '--', |
| | | price: item.price || '--', |
| | | isbn: item.isbn || '--', |
| | | publicationDate: item.publicationDate |
| | | } |
| | | res.datas.map((item) => { |
| | | if (item.feedBack) { |
| | | item.feedBack = JSON.parse(item.feedBack) |
| | | if (item.feedBack.endDate) { |
| | | const currentDate = new Date() |
| | | let times = new Date(item.feedBack.endDate + ' 23:59:59').getTime() |
| | | if (times < currentDate.getTime()) { |
| | | item.isExpiry = true |
| | | } |
| | | } |
| | | if ( |
| | | this.data.bookDetail.isApplyBook == 2 || |
| | | this.data.bookDetail.isApplyBook == 4 |
| | | ) { |
| | | let role = this.data.userInfo != null ? this.data.userInfo.role : null; |
| | | if (role && role == "Teacher") { |
| | | if (!this.data.noFile) { |
| | | wx.showToast({ |
| | | title: "暂无电子书文件,请联系管理员!", |
| | | icon: "none", |
| | | duration: 1000, |
| | | }); |
| | | return; |
| | | } |
| | | if (item.content) { |
| | | item.content = JSON.parse(item.content) |
| | | item.content.map((e) => (item.productId = e.id)) |
| | | if (this.data.ebookCount == 0) { |
| | | wx.showToast({ |
| | | title: "您的电子样书申请次数已用尽,若要继续,请联系管理员!", |
| | | icon: "none", |
| | | duration: 1000, |
| | | }); |
| | | return false; |
| | | } |
| | | }) |
| | | let objVal = null |
| | | if (type != 'eBook') { |
| | | objVal = res.datas.find( |
| | | (i) => i.productId == item.id && i.state != 'Reject' && i.state == 'WaitAudit' |
| | | ) |
| | | } else { |
| | | objVal = res.datas.find((i) => i.productId == item.id && i.state != 'Reject') |
| | | } |
| | | if (objVal && !objVal.isExpiry && type == 'eBook') { |
| | | wx.showToast({ |
| | | title: "您已申请该样书", |
| | | icon: 'none', |
| | | duration: 1000, |
| | | }) |
| | | } else if (objVal && type != 'eBook') { |
| | | wx.showToast({ |
| | | title: "您已申请该样书", |
| | | icon: 'none', |
| | | duration: 1000, |
| | | }) |
| | | } else { |
| | | if (type == 'eBook') { |
| | | if (this.data.ebookCount > 0) { |
| | | const eBookData = this.data.electronicBookList |
| | | if (eBookData.length == 2) { |
| | | wx.showToast({ |
| | | title: "每次最多只可申请2本样书", |
| | | icon: 'none', |
| | | duration: 1000, |
| | | }) |
| | | return false |
| | | } |
| | | if (eBookData.length > 0) { |
| | | for (let i = 0; i < eBookData.length; i++) { |
| | | if (eBookData[i].id == item.id) { |
| | | isHas = true |
| | | } |
| | | } |
| | | if (!isHas) { |
| | | wx.showToast({ |
| | | title: "添加成功,在样书申请单等您哦~", |
| | | icon: "none", |
| | | duration: 1000, |
| | | }) |
| | | this.setData({ |
| | | electronicBookList: [...this.data.electronicBookList, ...[itemAttr]], |
| | | num: this.data.electronicBookList.length + this.data.paperBookList.length |
| | | }) |
| | | wx.setStorageSync("electronicBookList", this.data.electronicBookList); |
| | | } else { |
| | | wx.showToast({ |
| | | title: "该书已在清单列表中", |
| | | icon: "none", |
| | | duration: 1000, |
| | | }) |
| | | } |
| | | } else { |
| | | wx.showToast({ |
| | | title: "添加成功,在样书申请单等您哦~", |
| | | icon: "none", |
| | | duration: 1000, |
| | | }) |
| | | this.setData({ |
| | | electronicBookList: [itemAttr], |
| | | num: 1 + this.data.paperBookList.length |
| | | }) |
| | | wx.setStorageSync("electronicBookList", [itemAttr]); |
| | | } |
| | | } else { |
| | | |
| | | let isHas = this.data.electronicBookList.find( |
| | | (eitem) => eitem.id == this.data.bookDetail.id |
| | | ); |
| | | if (isHas) { |
| | | wx.showToast({ |
| | | title: "该书已在清单列表中", |
| | | icon: "none", |
| | | duration: 1000, |
| | | }); |
| | | return false; |
| | | } |
| | | let isApply = this.data.alreadyElectronicBookList.find( |
| | | (eitem) => eitem.content[0].id == this.data.bookDetail.id |
| | | ); |
| | | if (isApply) { |
| | | if (isApply.state == 'WaitAudit') { |
| | | wx.showToast({ |
| | | title: "您的电子样书申请次数已用尽,若要继续,请联系管理员!", |
| | | title: "该书已申请!", |
| | | icon: "none", |
| | | duration: 1000, |
| | | }) |
| | | } |
| | | } else { |
| | | if (this.data.paperBookCount > 0) { |
| | | const pBookData = this.data.paperBookList |
| | | if (pBookData.length == 2) { |
| | | }); |
| | | return false; |
| | | } else if (isApply.state == 'Normal') { |
| | | const flag = new Date(isApply.feedBack.endDate + ' 23:59:59').getTime() > new Date().getTime() |
| | | if (flag) { |
| | | wx.showToast({ |
| | | title: "每次最多只可申请2本样书", |
| | | icon: 'none', |
| | | title: "该书已申请!", |
| | | icon: "none", |
| | | duration: 1000, |
| | | }) |
| | | return false |
| | | }); |
| | | return false; |
| | | } |
| | | if (pBookData.length > 0) { |
| | | for (let i = 0; i < pBookData.length; i++) { |
| | | if (pBookData[i].id == item.id) { |
| | | isHas = true |
| | | } |
| | | } |
| | | if (!isHas) { |
| | | wx.showToast({ |
| | | title: "添加成功,在样书申请单等您哦~", |
| | | icon: 'none', |
| | | duration: 1000, |
| | | }) |
| | | this.setData({ |
| | | paperBookList: [...this.data.paperBookList, ...[itemAttr]], |
| | | num: this.data.paperBookList.lenght + this.data.electronicBookList.length |
| | | }) |
| | | wx.setStorageSync("paperBookList", this.data.paperBookList); |
| | | } else { |
| | | wx.showToast({ |
| | | title: "该书已在清单列表中", |
| | | icon: "none", |
| | | duration: 1000, |
| | | }) |
| | | } |
| | | } else { |
| | | wx.showToast({ |
| | | title: "添加成功,在样书申请单等您哦~", |
| | | icon: 'none', |
| | | duration: 1000, |
| | | }) |
| | | this.setData({ |
| | | paperBookList: [itemAttr], |
| | | num: 1 + this.data.electronicBookList.length |
| | | }) |
| | | wx.setStorageSync("paperBookList", [itemAttr]); |
| | | } |
| | | } else { |
| | | wx.showToast({ |
| | | title: "您的纸质样书申请次数已用尽,若要继续,请联系管理员!", |
| | | icon: 'none', |
| | | duration: 1000, |
| | | }) |
| | | } |
| | | } |
| | | if (this.data.electronicBookList.length >= 2) { |
| | | wx.showToast({ |
| | | title: "每次最多只可申请2本样书", |
| | | icon: "none", |
| | | duration: 1000, |
| | | }); |
| | | return false; |
| | | } |
| | | this.addBookFun(this.data.bookDetail, "eBook"); |
| | | } else { |
| | | wx.showModal({ |
| | | title: "尊敬的用户,您好!", //提示的标题 |
| | | content: "请先进行教师认证?", //提示的内容 |
| | | confirmColor: "#ff6c00", |
| | | cancelColor: "#949494", |
| | | success: function (res) { |
| | | if (res.confirm) { |
| | | wx.navigateTo({ |
| | | url: "/packageDomain/pages/teacherCertification/index", |
| | | }); |
| | | } else if (res.cancel) {} |
| | | }, |
| | | }); |
| | | } |
| | | }) |
| | | } else { |
| | | wx.showToast({ |
| | | title: "该书不能申请电子样书", |
| | | icon: "none", |
| | | duration: 1000, |
| | | }); |
| | | } |
| | | }, |
| | | //申请纸质样书 |
| | | appplyPaperBook() { |
| | | let role = this.data.userInfo != null ? this.data.userInfo.role : null; |
| | | if (role && role == "Teacher") {} else { |
| | | return wx.showModal({ |
| | | title: "尊敬的用户,您好!", //提示的标题 |
| | | content: "请先进行教师认证?", //提示的内容 |
| | | confirmColor: "#ff6c00", |
| | | cancelColor: "#949494", |
| | | success: function (res) { |
| | | if (res.confirm) { |
| | | wx.navigateTo({ |
| | | url: "/packageDomain/pages/teacherCertification/index", |
| | | }); |
| | | } else if (res.cancel) {} |
| | | }, |
| | | }); |
| | | } |
| | | if ( |
| | | this.data.bookDetail.isApplyBook == 3 || |
| | | this.data.bookDetail.isApplyBook == 4 |
| | | ) { |
| | | let role = this.data.userInfo != null ? this.data.userInfo.role : null; |
| | | if (role && role == "Teacher") { |
| | | // 点击选中 |
| | | if (this.data.paperBookCount == 0) { |
| | | wx.showToast({ |
| | | title: "您的纸质样书申请次数已用尽,若要继续,请联系管理员!", |
| | | icon: "none", |
| | | duration: 1000, |
| | | }); |
| | | return false; |
| | | } |
| | | let isApply = this.data.alreadyPaperBookList.find( |
| | | (pitem) => pitem.content[0].id == this.data.bookDetail.id |
| | | ); |
| | | if (isApply) { |
| | | wx.showToast({ |
| | | title: "该书已申请!", |
| | | icon: "none", |
| | | duration: 1000, |
| | | }); |
| | | return false; |
| | | } |
| | | |
| | | let isHas = this.data.paperBookList.find( |
| | | (pitem) => pitem.id == this.data.bookDetail.id |
| | | ); |
| | | if (isHas) { |
| | | wx.showToast({ |
| | | title: "该书已在清单列表中", |
| | | icon: "none", |
| | | duration: 1000, |
| | | }); |
| | | return false; |
| | | } |
| | | if (this.data.paperBookList.length >= 2) { |
| | | wx.showToast({ |
| | | title: "每次最多只可申请2本样书", |
| | | icon: "none", |
| | | duration: 1000, |
| | | }); |
| | | return false; |
| | | } |
| | | this.addBookFun(this.data.bookDetail, "pBook"); |
| | | } else { |
| | | wx.showModal({ |
| | | title: "尊敬的用户,您好!", //提示的标题 |
| | | content: "请先进行教师认证?", //提示的内容 |
| | | confirmColor: "#ff6c00", |
| | | cancelColor: "#949494", |
| | | success: function (res) { |
| | | if (res.confirm) { |
| | | wx.navigateTo({ |
| | | url: "/packageDomain/pages/teacherCertification/index", |
| | | }); |
| | | } else if (res.cancel) {} |
| | | }, |
| | | }); |
| | | } |
| | | } else { |
| | | wx.showToast({ |
| | | title: "该书不能申请纸质样书", |
| | | icon: "none", |
| | | duration: 1000, |
| | | }); |
| | | } |
| | | }, |
| | | // 添加样书 |
| | | addBookFun(item, type) { |
| | | let itemAttr = null; |
| | | const eList = this.data.electronicBookList; |
| | | const pList = this.data.paperBookList; |
| | | itemAttr = { |
| | | id: item.id, |
| | | title: item.name || "-", |
| | | icon: item.icon, |
| | | checked: false, |
| | | defaultSaleMethodId: item.defaultSaleMethodId, |
| | | md5: item.datas.Icon, |
| | | author: item.author || "-", |
| | | price: item.price || "-", |
| | | isbn: item.isbn || "-", |
| | | publicationDate: item.publicationDate, |
| | | }; |
| | | if (type == "eBook") { |
| | | eList.push(itemAttr); |
| | | this.setData({ |
| | | electronicBookList: eList, |
| | | }); |
| | | wx.setStorageSync("electronicBookList", JSON.stringify(eList)); |
| | | } else { |
| | | pList.push(itemAttr); |
| | | this.setData({ |
| | | paperBookList: pList, |
| | | }); |
| | | wx.setStorageSync("paperBookList", JSON.stringify(pList)); |
| | | } |
| | | this.setData({ |
| | | num: this.data.num + 1, |
| | | }); |
| | | wx.showToast({ |
| | | title: "添加成功,在样书申请单等您哦~", |
| | | icon: "none", |
| | | duration: 1000, |
| | | }); |
| | | }, |
| | | |
| | | //去样书申请单 |
| | | goApply() { |
| | | wx.navigateTo({ |
| | | url: "/packageDomain/pages/sampleBookList/applicationForm/index", |
| | | }); |
| | | }, |
| | | handleTree() { |
| | | // const child = this.selectComponent('#teach-tree') |
| | | let tree; |
| | | // let openIds = child.data.openIds |
| | | if (this.data.tabValue == "jsek_teachingResources") { |
| | | tree = this.data.teach; |
| | | } else { |
| | | tree = this.data.learn; |
| | | } |
| | | for (let index = 0; index < tree.length; index++) { |
| | | const item = tree[index]; |
| | | if (item.children && item.children.length > 0) { |
| | | const num = this.data.openTeachids.findIndex( |
| | | (citem) => item.id == citem |
| | | ); |
| | | if (num >= 0) { |
| | | item.open = true; |
| | | } else { |
| | | item.open = false; |
| | | } |
| | | this.handleTree(item.children); |
| | | } |
| | | } |
| | | this.setData({ |
| | | teach: tree, |
| | | }); |
| | | }, |
| | | |
| | | }) |
| | | // 剔除树结构多余,只保留初始需要展开的 |
| | | // 第一步:保留树结构前两层,并将展开项加入数组 |
| | | deleteTreeData(list, openids) { |
| | | let resultList = [] |
| | | for (let index = 0; index < list.length; index++) { |
| | | const item = list[index]; |
| | | if (item.children.length > 0) { |
| | | for (let cindex = 0; cindex < item.children.length; cindex++) { |
| | | const citem = item.children[cindex]; |
| | | citem.children = [] |
| | | } |
| | | } |
| | | resultList.push(item) |
| | | } |
| | | for (let index = 0; index < openids.length; index++) { |
| | | const id = openids[index]; |
| | | // 展开项加入数组 |
| | | this.increaseTreeData(list, resultList, id) |
| | | } |
| | | return resultList |
| | | }, |
| | | // 传递ids,将需要展开的id的children 赋值 |
| | | increaseTreeData(treeList, list, openid) { |
| | | let num = 0; |
| | | // let useData = treeList.find(item => item.id == openid) |
| | | for (let index = 0; index < treeList.length; index++) { |
| | | const item = treeList[index]; |
| | | if (item.id == openid && num >= 3) { |
| | | let useArr = item.children ? item.children : [] |
| | | this.changeList(list, openid, useArr) |
| | | } else { |
| | | num += 1 |
| | | this.increaseTreeData(item.children, list, openid) |
| | | } |
| | | } |
| | | |
| | | }, |
| | | // 递归前两层,找出需要展开的 |
| | | changeList(isList, id, childrenList) { |
| | | for (let dindex = 0; dindex < isList.length; dindex++) { |
| | | const ditem = isList[dindex]; |
| | | if (ditem.id == id) { |
| | | ditem.children = childrenList |
| | | return true |
| | | } else { |
| | | this.changeList(ditem.children, id, childrenList) |
| | | } |
| | | } |
| | | return childrenList |
| | | }, |
| | | uploadFile(e) { |
| | | this.setData({ |
| | | dialogBox: true, |
| | | isShowUp: true |
| | | }); |
| | | }, |
| | | closeDialog() { |
| | | this.setData({ |
| | | dialogBox: false, |
| | | resourceInfo: { |
| | | resourceName: '', |
| | | fileType: '', |
| | | description: '', |
| | | agree: false |
| | | }, |
| | | }); |
| | | }, |
| | | onCloseProtocol() { |
| | | this.setData({ |
| | | protocolShow: false, |
| | | }); |
| | | }, |
| | | onVisibleChange(e) { |
| | | this.setData({ |
| | | protocolShow: e.detail.visible, |
| | | }); |
| | | }, |
| | | //查看协议 |
| | | getAgreement() { |
| | | let query = { |
| | | path: 'jsek_protocol', |
| | | fields: { |
| | | content: [], |
| | | } |
| | | } |
| | | app.MG.resource.getItem(query).then((res) => { |
| | | try { |
| | | |
| | | const data = res.datas.find((e) => e.refCode == 'jsek_authorizationAndConsentLetter') |
| | | this.setData({ |
| | | protocolTxt: data && data.content ? data.content : '暂无协议', |
| | | protocolShow: true |
| | | }); |
| | | } catch (error) { |
| | | this.setData({ |
| | | protocolTxt: '暂无协议', |
| | | protocolShow: true, |
| | | }); |
| | | } |
| | | }) |
| | | |
| | | }, |
| | | onNameInput(e) { |
| | | this.setData({ |
| | | 'resourceInfo.resourceName': e.detail.value, |
| | | }); |
| | | }, |
| | | onResourcePicker(e) { |
| | | this.setData({ |
| | | resourceValue: [this.data.resourceInfo.fileType], |
| | | resourceVisible: true, |
| | | }); |
| | | }, |
| | | onPickerChange(e) { |
| | | const { |
| | | value |
| | | } = e.detail; |
| | | this.setData({ |
| | | resourceVisible: false, |
| | | resourceValue: value, |
| | | 'resourceInfo.fileType': value.join(' '), |
| | | }); |
| | | }, |
| | | onPickerCancel(e) { |
| | | this.setData({ |
| | | resourceVisible: false, |
| | | }); |
| | | }, |
| | | textareaChange(e) { |
| | | this.setData({ |
| | | 'resourceInfo.description': e.detail.value, |
| | | }); |
| | | }, |
| | | onChange() { |
| | | if (this.data.resourceInfo.agree) { |
| | | this.setData({ |
| | | 'resourceInfo.agree': false, |
| | | }); |
| | | } else { |
| | | this.setData({ |
| | | 'resourceInfo.agree': true, |
| | | }); |
| | | } |
| | | }, |
| | | uploadPicture() { |
| | | var that = this; |
| | | wx.chooseMessageFile({ |
| | | count: 1, |
| | | type: 'file', |
| | | success(res) { |
| | | const isLt2M = res.tempFiles[0].size / 1024 / 1024 < 50 |
| | | if (!isLt2M) { |
| | | return wx.showToast({ |
| | | title: "上传文件大小不能超过 50MB!", |
| | | icon: "none", |
| | | duration: 1000, |
| | | }); |
| | | } |
| | | const FileName = res.tempFiles[0].name.split('.')[0] |
| | | const Extension = res.tempFiles[0].name.split('.')[1] |
| | | var medioType = '' |
| | | const audioData = ['mp3', 'mp3'] |
| | | const videoData = ['mp4', 'avi'] |
| | | const pdfData = ['pdf'] |
| | | const Compression = ['rar', 'zip'] |
| | | const pictureData = ['jpg', 'png'] |
| | | const documentData = ['doc', 'docx', 'xls', 'xlsx', "ppt", "pptx"] |
| | | if (audioData.indexOf(Extension) > -1) { |
| | | medioType = '音频' |
| | | } else if (videoData.indexOf(Extension) > -1) { |
| | | medioType = '视频' |
| | | } else if (pdfData.indexOf(Extension) > -1) { |
| | | medioType = 'PDF' |
| | | } else if (Compression.indexOf(Extension) > -1) { |
| | | medioType = '资源包' |
| | | } else if (pictureData.indexOf(Extension) > -1) { |
| | | medioType = '图片' |
| | | } else if (documentData.indexOf(Extension) > -1) { |
| | | medioType = '文档' |
| | | } else { |
| | | medioType = '其他' |
| | | } |
| | | wx.getFileSystemManager().getFileInfo({ |
| | | filePath: res.tempFiles[0].path, //选择图片返回的相对路径 |
| | | // encoding: 'binary', //编码格式 |
| | | success: ress => { |
| | | //成功的回调 |
| | | let md5 = ress.digest; |
| | | let formData = new FormData(); |
| | | formData.append('Md5', md5); |
| | | formData.append('FileName', FileName); |
| | | formData.append('FileType', res.tempFiles[0].type); |
| | | formData.appendFile("file", res.tempFiles[0].path); |
| | | 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(res1) { |
| | | resolve(res1.data); |
| | | if (res1.data) { |
| | | let file = [{ |
| | | name: res.tempFiles[0].name, |
| | | md5: md5, |
| | | type: medioType, |
| | | FileType: Extension |
| | | }] |
| | | that.setData({ |
| | | "resourceInfo.resourceName": FileName, |
| | | "resourceInfo.fileType": medioType, |
| | | |
| | | fileList: file, |
| | | isShowUp: false |
| | | }) |
| | | } |
| | | } |
| | | }) |
| | | }) |
| | | } |
| | | }) |
| | | } |
| | | }) |
| | | |
| | | }, |
| | | handleRemove(e) { |
| | | this.setData({ |
| | | isShowUp: true, |
| | | fileList: [] |
| | | }); |
| | | }, |
| | | confirmM() { |
| | | if (this.data.resourceInfo.resourceName == '') { |
| | | return wx.showToast({ |
| | | icon: "error", |
| | | title: "请填写资源名称", |
| | | }); |
| | | } |
| | | if (this.data.resourceInfo.fileType == '') { |
| | | return wx.showToast({ |
| | | icon: "error", |
| | | title: "请选择资源类型", |
| | | }); |
| | | } |
| | | |
| | | if (!this.data.fileList.length) { |
| | | return wx.showToast({ |
| | | icon: "error", |
| | | title: "请上传资源文件", |
| | | }); |
| | | } |
| | | if (!this.data.resourceInfo.agree) { |
| | | return wx.showToast({ |
| | | icon: "none", |
| | | title: "请同意《授权同意书》!", |
| | | }); |
| | | } |
| | | let query = { |
| | | topicIdOrRefCode: "uploadFiles", |
| | | name: this.data.bookDetail.name, |
| | | content: JSON.stringify(JSON.parse(JSON.stringify(this.data.fileList))), |
| | | type: 'UserSubmit', |
| | | description: this.data.resourceInfo.description, |
| | | cmsTypeRefCode: '', |
| | | newDataListRequest: [] |
| | | } |
| | | app.MG.ugc.newTopicMessage(query).then((res) => { |
| | | wx.showToast({ |
| | | icon: "success", |
| | | title: "请上传资源文件", |
| | | }); |
| | | this.closeDialog() |
| | | }) |
| | | }, |
| | | getCloundIsBuy() { |
| | | let flag = false |
| | | if (!this.data.isCloundHaveSaleMethod) flag = false |
| | | const cloundData = this.data.resourceCodeList.find(item => item.refCode == 'jsek_cloudLearning') |
| | | const saleData = cloundData.saleMethod.find(item => item.SaleType == "Normal") |
| | | if (!saleData) flag = false |
| | | flag = this.data.buyIdList.some(item => item == saleData.Id) |
| | | this.setData({ |
| | | cloundMenuIsBuy: flag |
| | | }) |
| | | } |
| | | }) |