From aff8d054df4a638f399dc8f15d98c19b9c9aa785 Mon Sep 17 00:00:00 2001 From: litian <C21AF165> Date: 星期二, 29 四月 2025 10:11:25 +0800 Subject: [PATCH] 扫码视频播放 --- pages/digitalTextbooks/digitalTextbooksDetails/index.js | 826 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 822 insertions(+), 4 deletions(-) diff --git a/pages/digitalTextbooks/digitalTextbooksDetails/index.js b/pages/digitalTextbooks/digitalTextbooksDetails/index.js index 1e62a7d..3dd83b4 100644 --- a/pages/digitalTextbooks/digitalTextbooksDetails/index.js +++ b/pages/digitalTextbooks/digitalTextbooksDetails/index.js @@ -1,20 +1,155 @@ // pages/digitalTextbooks/digitalTextbooksDetails/index.js +import Toast from "tdesign-miniprogram/toast"; +import moment from 'moment' +import { + loginInfo +} from '../../../assets/js/login'; +import { + worksDataBytool +} from "../../../assets/js/toolClass.js"; +import SparkMD5 from 'spark-md5' +import FormData from '../../../utils/formdata/index.js'; +const app = getApp() Page({ /** * 椤甸潰鐨勫垵濮嬫暟鎹� */ data: { - + type: 'basicInformation', + digitalTextId: '', + digitalsData: {}, + expire: false, //鍟嗗搧鎴栧瓙鍟嗗搧閿�鍞柟寮忔槸鍚﹁繃鏈� + tabValue: "brief", + relatedBookData: [], + publicationDate: '', + isBuy: false, + loading: true, + briefIcon: { + name: "/static/images/digitalTextbooks/jibenxinxi-t@2x.png", + }, + briefIconClick: { + name: "/static/images/digitalTextbooks/jibenxinxi-t-click@3x.png", + }, + eBookIcon: { + name: "/static/images/digitalTextbooks/zuozhejianjie-t@2x.png", + }, + eBookClickIcon: { + name: "/static/images/digitalTextbooks/zuozhejianjie@2x.png", + }, + teachResourcesIcon: { + name: "/static/images/digitalTextbooks/zuozhejianjie-t@2x.png", + }, + teachResourcesClickIcon: { + name: "/static/images/digitalTextbooks/zuozhejianjie-t-click@3x.png", + }, + learnResourceIcon: { + name: "/static/images/digitalTextbooks/shengshu-t@2x.png", + }, + learnResourceClickIcon: { + name: "/static/images/digitalTextbooks/zhengshu-t-click@3x.png", + }, + testResourceIocn: { + name: "/static/images/digitalTextbooks/link-t@3x.png", + }, + testResourceClickIocn: { + name: "/static/images/digitalTextbooks/link-t-click@3x.png", + }, + showIndex1: '', + catalogue: { + name: "/static/images/digitalTextbooks/mulu-t@3x.png", + }, + catalogueClickIcon: { + name: "/static/images/digitalTextbooks/mulu-t-click@3x.png", + }, + userInfo: { + fullName: '', //鍚嶇О + userPicture: '' //鐢宠璇佷功鐢ㄦ埛鍥剧墖 + }, + pictureMd5: '', + worksInfo: [], + isCertificate: {}, + isLearn: false, + isTest: false, + publishingUnit: '', + cbzsImg: '', //鍑虹増璇佷功base64 + rzzsImg: '', //璁よ瘉璇佷功base64 + visible: false, + showIndex: false, + closeBtn: false, + deleteBtn: false, + images: [], }, /** * 鐢熷懡鍛ㄦ湡鍑芥暟--鐩戝惉椤甸潰鍔犺浇 */ onLoad(options) { - console.log(options.id); + this.setData({ + digitalTextId: options.id + }) + this.digitalTextbooksDetailsGet(this.data.digitalTextId) + this.getType() + this.getCertificateList() }, + logInFun(callback) { + loginInfo(app, (data) => { + if (data) { + this.digitalTextbooksDetailsGet(this.data.digitalTextId) + this.getType() + this.getCertificateList() + callback() + } + }) + }, + // 鏍煎紡鍖栨棩鏈� + // 鏍煎紡鍖栨棩鏈� + formatDate(dateString) { + if (!dateString) { + return ""; + } + const match = dateString.match( + /^(\d{4})\/(\d{1,2})\/(\d{1,2}) (\d{1,2}):(\d{1,2}):(\d{1,2})$/ + ); + if (!match) { + throw new Error("Invalid date format"); + } + const [, year, month, day, hours, minutes, seconds] = match; + const date = new Date( + parseInt(year, 10), + parseInt(month, 10) - 1, + parseInt(day, 10), + parseInt(hours, 10), + parseInt(minutes, 10), + parseInt(seconds, 10) + ); + + if (isNaN(date.getTime())) { + throw new Error("Invalid date"); + } + + // 鐢变簬灏忕▼搴忕幆澧冨彲鑳戒笉鏀寔 Intl.DateTimeFormat锛屾垜浠娇鐢ㄧ畝鍖栫殑鏍煎紡鍖栨柟娉� + const formatted = `${year}骞�${this.formatMonth(month)}`; + return formatted; + }, // 绠�鍖栫殑鏈堜唤鏍煎紡鍖栧嚱鏁帮紝杩斿洖鏈堜唤鐨勪腑鏂囪〃杈� + formatMonth(month) { + const months = [ + "1鏈�", + "2鏈�", + "3鏈�", + "4鏈�", + "5鏈�", + "6鏈�", + "7鏈�", + "8鏈�", + "9鏈�", + "10鏈�", + "11鏈�", + "12鏈�", + ]; + return months[parseInt(month, 10) - 1]; + }, /** * 鐢熷懡鍛ㄦ湡鍑芥暟--鐩戝惉椤甸潰鍒濇娓叉煋瀹屾垚 */ @@ -40,7 +175,9 @@ * 鐢熷懡鍛ㄦ湡鍑芥暟--鐩戝惉椤甸潰鍗歌浇 */ onUnload() { - + this.setData({ + digitalsData: {} + }) }, /** @@ -60,7 +197,688 @@ /** * 鐢ㄦ埛鐐瑰嚮鍙充笂瑙掑垎浜� */ - onShareAppMessage() { + onShareAppMessage() {}, + onShareTimeline() {}, + + digitalTextbooksDetailsGet(digitalId) { + + let query = { + path: '*', + queryType: '*', + productId: digitalId, + storeInfo: 'jsek_digitalTextbooks', + coverSize: { + height: 300 + }, + fields: { + seriesName: [], + author: [], + isbn: [], + editorUnit: [], + publicationDate: [], + publishingUnit: [], + bookClassification: [], + paperPrice: [], + JDLink: [], + tmallLink: [], + dangdangLink: [], + weidianLink: [], + content: [], + authorIntroduction: [], + isApplyBook: [], + isSell: [], + pdf: [], + protectedEpub: [], + probationPage: [], //pdf璇曡椤垫暟 + freeEpubPage: [], + catalogue: [] + //epub璇曡鐧惧垎姣� + } + } + app.MG.store.getProductDetail(query).then(async res => { + if (res.datas.purchasedSaleMethodIdList.includes(res.datas.defaultSaleMethodId)) { + this.setData({ + isBuy: true + }) + } else { + this.setData({ + isBuy: false + }) + } + res.datas.publicationDate = res.datas.publicationDate ? moment(res.datas.publicationDate).format('YYYY骞碝M鏈�') : '' + if (res.datas.icon == '') { + res.datas.icon = '/static/images/default-book-img.png' + } + res.datas.price = res.datas.price.toFixed(2) + + this.setData({ + digitalsData: res.datas + }) + let times = new Date(res.datas.defaultSaleMethod.endDate).getTime() + let startTime = new Date(res.datas.defaultSaleMethod.beginDate).getTime() + if (times < new Date().getTime() || new Date().getTime() < startTime) { + this.setData({ + expire: true + }) + } else { + this.setData({ + expire: res.false + }) + } + wx.setNavigationBarTitle({ + title: res.datas.name, + }) + if (res.datas.publishingUnit) { + await this.getBookPublishUnit(res.datas.publishingUnit) + } + + this.getAboutBook(res.datas.productLinkInfo[res.datas.productLinkInfo.length - 1].LinkPath) + this.setData({ + loading: false, + type: 'basicInformation', + + }); + + // this.onCe() + + }) + }, + //鑾峰彇鍥句功鍑虹増鍗曚綅 + async getBookPublishUnit(listStr) { + let query = { + refCodes: ['publishingUnit'] + } + await app.MG.store.getProductTypeField(query).then((res) => { + const list = JSON.parse(listStr) + let dataList = [] + list.forEach((unit) => { + JSON.parse(res[0].config).option.forEach((item) => { + if (item.value == unit) { + dataList.push(item.name) + } + }) + }) + if (dataList.length == list.length) { + this.setData({ + publishingUnit: dataList.join(' '), + }) + } + }) + }, + + onTabsChange(event) { + this.setData({ + tabValue: event.detail.value, + }) + }, + + // 鑾峰彇鐩稿叧鏁欐潗 + getAboutBook(path) { + let query = { + path, + queryType: '*', + coverSize: { + height: 243 + }, + paging: { + start: 0, + size: 99 + }, + fields: { + author: [], + publicationDate: [] + } + } + app.MG.store.getProductList(query).then(res => { + const Arr = res.datas.filter( + (item) => item.id != this.data.digitalsData.id + ); + let bookArr = [] + if (Arr.length) { + if (Arr.length > 9) { + for (var i = 0; i < 9; i++) { + var _num = Math.floor(Math.random() * Arr.length) + var mm = Arr[_num] + Arr.splice(_num, 1) + bookArr.push(mm) + } + } else { + bookArr = Arr + } + bookArr.forEach(item => { + if (item.icon == '') { + item.icon = '/static/images/default-book-img.png' + } + }) + this.setData({ + relatedBookData: bookArr + }) + } else { + this.setData({ + relatedBookData: [] + }) + } + }) + }, + onCorrelationBook(e) { + const item = e.currentTarget.dataset.item + // const event = { + // detail: { + // value: "brief" + // } + // } + // this.onTabsChange(event) + // this.digitalTextbooksDetailsGet(item.id) + this.onLoad({ + id: item.id + }) + }, + // 鍥句功娣诲姞璐墿杞� + addBookShopcCar() { + const addFun = async () => { + if (!this.data.expire) { + const shoppingCartGetId = []; + let query = { + start: 0, + size: 9999, + filterList: [], + searchList: [], + }; + const res = await app.MG.store.getShoppingCartProductList(query); + res.datas.forEach((item) => { + shoppingCartGetId.push(item.saleMethod.id); + }); + const determine = shoppingCartGetId.some( + (item) => item == this.data.digitalsData.defaultSaleMethodId + ); + if (!determine) { + let query = { + requests: [{ + saleMethodId: this.data.digitalsData.defaultSaleMethodId, + storeEventId: null, + agentCode: "鐢靛瓙涔�", + }, ], + }; + const addRes = app.MG.store.addShoppingCart(query); + this.showSuccessToast(); + } else { + Toast({ + context: this, + selector: "#t-toast", + message: "璇ユ暀鏉愬凡鍦ㄨ喘鐗╄溅锛岃鍕块噸澶嶆坊鍔�", + theme: "warning", + direction: "column", + }); + } + } else { + wx.showToast({ + title: "鍟嗗搧涓嶅湪鏈夋晥鏈�", + icon: "none", + duration: 1000, + }); + } + } + const token = wx.getStorageSync(app.config.tokenKey) + if (!token) { + this.logInFun(() => {}) + } else { + addFun() + } + }, + showSuccessToast() { + Toast({ + context: this, + selector: "#t-toast", + message: "娣诲姞鎴愬姛", + theme: "success", + direction: "column", + }); + }, + + + //璐拱鎸夐挳 + buyBtn() { + const buyFun = async () => { + if (!this.data.expire) { + let bookOrdersId = ""; + let query = { + remarks: "鐢靛瓙涔�", + requests: [{ + saleMethodId: this.data.digitalsData.defaultSaleMethodId, + count: 1, + }, ], + }; + // 鍙戣捣璁㈠崟鍒濆鍖栬姹傚苟绛夊緟缁撴灉 + const res = await app.MG.store.initOrder(query); + // 鑾峰彇璁㈠崟鍙峰苟璧嬪�肩粰 orderNumber.value + bookOrdersId = res.orderNumber; + // 妫�鏌ヨ鍗曞彿鏄惁瀛樺湪 + if (bookOrdersId) { + if (this.data.digitalsData.price == "0.00") { + app.MG.store + .confirmOrder({ + orderNum: bookOrdersId, + }) + .then((res) => { + this.digitalTextbooksDetailsGet(this.data.digitalTextId) + if (res) { + wx.showToast({ + title: "棰嗗彇鎴愬姛", + icon: "none", + duration: 1000, + }); + this.getBookInfo(this.data.bookDetail.id); + } + }); + } else { + const url = "/pages/cart/paymentPage/index?orderNumber=" + bookOrdersId + '&onNorderSaleMethod=' + res.saleMethodLinks[0].orderSaleMethod.id; + wx.navigateTo({ + url, + }); + } + } else {} + } else { + wx.showToast({ + title: "鍟嗗搧涓嶅湪鏈夋晥鏈�", + icon: "none", + duration: 1000, + }); + } + } + const token = wx.getStorageSync(app.config.tokenKey) + if (!token) { + this.logInFun(() => {}) + } else { + buyFun() + } + }, + + goRead() { + const gotoPageFun = () => { + const item = this.data.digitalsData + wx.navigateTo({ + url: '/pages/digitalTextbooks/digitalTextbooksDetails/components/webView/index?refCode=' + item.refCode + "&tryPageCount=" + item.probationPage + }); + } + const token = wx.getStorageSync(app.config.tokenKey) + if (!token) { + this.logInFun(() => {}) + } else { + gotoPageFun() + } + }, + onTabClick(e) { + let tab = e.currentTarget.dataset.tab; + this.setData({ + type: tab, + + }) + + if (tab == 'basicInformation') { + this.setData({ + topPos: 0 + }) + } else if (tab == 'certificateInformation') { + this.setData({ + topPos: this.certificateInformation + }) + } else if (tab == 'authorSynopsis') { + this.setData({ + topPos: this.authorSynopsis + }) + } else if (tab == 'listings') { + this.setData({ + topPos: this.listings + }) + } else if (tab == 'relatedTextbooks') { + this.setData({ + topPos: this.relatedTextbooks + }) + } + + }, + + + onScroll(e) { + + let scrollTop = e.detail.scrollTop + // this.setData({ + // type: scrollTop + // }) + + + if (scrollTop < this.basicInformation) { + this.setData({ + type: 'basicInformation' + }) + } else if (scrollTop >= this.basicInformation && scrollTop < this.certificateInformation) { + this.setData({ + type: 'certificateInformation' + }) + } else if (scrollTop >= this.certificateInformation && scrollTop < this.authorSynopsis) { + this.setData({ + type: 'authorSynopsis' + }) + } else if (scrollTop >= this.authorSynopsis && scrollTop < this.listings) { + this.setData({ + type: 'listings' + }) + } else if (scrollTop >= this.listings && scrollTop < this.relatedTextbooks) { + this.setData({ + type: 'relatedTextbooks' + }) + } + + + + }, + onCe() { + + let that = this; + var query = wx.createSelectorQuery() + //鑾峰彇鏉垮潡涓�绂籹croll-view椤堕儴鐨勮窛绂�,绗竴鏉垮潡瀹為檯璺濈涓�0锛屾澶勮幏鍙栧彧涓虹粰绗簩鍙婄涓夋澘鍧楀噺鍘荤涓�鏉垮潡璺濈scroll-view鐨勯《閮ㄨ窛绂� + wx.createSelectorQuery().select('#basicInformation').boundingClientRect(function (res) { + that.basicInformation = res.top + }).exec() + //鑾峰彇鏉垮潡浜岀scroll-view椤堕儴鐨勮窛绂� + query.select('#certificateInformation').boundingClientRect(function (res) { + that.certificateInformation = res.top - that.basicInformation + }).exec() + //鑾峰彇鏉垮潡涓夌scroll-view椤堕儴鐨勮窛绂� + query.select('#authorSynopsis').boundingClientRect(function (res) { + that.authorSynopsis = res.top - that.basicInformation + }).exec() + //鑾峰彇鏉垮潡鍥涚scroll-view椤堕儴鐨勮窛绂� + query.select('#listings').boundingClientRect(function (res) { + that.listings = res.top - that.basicInformation + }).exec() + //鑾峰彇鏉垮潡浜旂scroll-view椤堕儴鐨勮窛绂� + query.select('#relatedTextbooks').boundingClientRect(function (res) { + that.relatedTextbooks = res.top - that.basicInformation + }).exec() + }, + setCoolect() { + const collectFun = () => { + if (this.data.digitalsData.isFavourite) { + app.MG.store + .delProductLink({ + productIds: [this.data.digitalsData.id], + linkType: 'FavoriteTextBooks' + }) + .then(() => { + this.setData({ + "digitalsData.isFavourite": false + }) + }) + } else { + let params = { + productIds: [this.data.digitalsData.id], + linkType: 'FavoriteTextBooks' + } + app.MG.store.addProductLink(params).then((res) => { + this.setData({ + "digitalsData.isFavourite": true + }) + }) + } + } + const token = wx.getStorageSync(app.config.tokenKey) + if (!token) { + this.logInFun(() => {}) + } else { + collectFun() + } + }, + // 鎴戣寤鸿 + suggestBtn() { + // 妫�鏌ョ櫥褰曠姸鎬� + const token = wx.getStorageSync(app.config.tokenKey); + const child = this.selectComponent("#suggest-component1"); + if (token) + // child.showDialog(); + this.setData({ + showIndex1: '1' + }) + }, + + //鐢宠璇佷功 + //鑾峰彇瀛楁 + getType() { + app.MG.resource.getCmsTypeByRefCode({ + refCodes: ['jsek_textbookCertificate'] + }).then((res) => { + this.setData({ + worksInfo: res[0].cmsTypeLinks[0].children, + }) + }) + }, + getCertificateList() { + const data = { + start: 0, + size: 9999, + topicIdOrRefCode: 'applyTextbookCertificate', + appRefCode: app.config.appRefCode, + sort: { + type: 'Desc', + field: 'CreateDate' + } + } + app.MG.ugc.getTopicMessageList(data).then((res) => { + res.datas.map((item) => { + item.content = JSON.parse(item.content) + if (item.content.id == this.data.digitalsData.id) { + this.setData({ + isCertificate: item + }) + } + }) + }) + }, + + onCertificate() { + const cateFun = () => { + if (!this.data.isBuy) { + wx.showToast({ + title: "璇峰厛璐拱锛屼綋楠屽畬鏁存湇鍔�", + icon: "none", + duration: 1000, + }); + return false + } + // if (!this.data.isLearn) { + // wx.showToast({ + // title: "鎮ㄧ殑瀛︿範浠诲姟杩樻湭瀹屾垚锛屾殏涓嶈兘鐢宠璇佷功锛屽姞娌瑰摝锛�", + // icon: "none", + // duration: 1000, + // }); + // return false + // } + if (this.data.isCertificate && this.data.isCertificate.state == 'WaitAudit') { + wx.showToast({ + title: this.data.isCertificate.state == 'WaitAudit' ? "鎮ㄧ敵璇风殑璇佷功姝e湪瀹℃牳涓�" : this.data.isCertificate.state == 'Normal' ? '鎮ㄥ凡鐢宠璇佷功' : '', + icon: "none", + duration: 1000, + }); + return false + } + + var page = getCurrentPages().pop(); // 鑾峰彇褰撳墠椤甸潰瀹炰緥 + page.setData({ + // 鍔ㄦ�佽缃姝㈡粴鍔ㄧ殑鏍峰紡 + disableScrollStyle: 'overflow: hidden;' + }); + this.setData({ + dialogBox: true, + scrollJudge: '' + }) + } + const token = wx.getStorageSync(app.config.tokenKey) + if (!token) { + this.logInFun(() => {}) + } else { + cateFun() + } + }, + closeDialog() { + this.setData({ + dialogBox: false, + scrollJudge: true + }) + }, + + //濮撳悕 + onFullNameInput(e) { + this.setData({ + "userInfo.fullName": e.detail.value, + }); + }, + uploadPicture() { + var that = this; + wx.chooseMedia({ + count: 1, // 榛樿9 + sizeType: ['original', 'compressed'], // 鍙互鎸囧畾鏄師鍥捐繕鏄帇缂╁浘锛岄粯璁や簩鑰呴兘鏈� + sourceType: ['album', 'camera'], // 鍙互鎸囧畾鏉ユ簮鏄浉鍐岃繕鏄浉鏈猴紝榛樿浜岃�呴兘鏈� + success: function (res) { + wx.getFileSystemManager().readFile({ + filePath: res.tempFiles[0].tempFilePath, //閫夋嫨鍥剧墖杩斿洖鐨勭浉瀵硅矾寰� + // encoding: 'binary', //缂栫爜鏍煎紡 + success: ress => { + //鎴愬姛鐨勫洖璋� + let spark = new SparkMD5.ArrayBuffer(); + spark.append(ress.data); + let md5 = spark.end(false); + let formData = new FormData(); + formData.append('Md5', md5); + formData.append('FileName', md5); + formData.append('FileType', res.tempFiles[0].fileType); + formData.appendFile("file", res.tempFiles[0].tempFilePath); + const data = formData.getData(); + let _token = wx.getStorageSync(app.config.tokenKey); + let header = {}; + if (_token == null) { + header["Authorization"] = `Basic ${Base64.encode(website.clientId + ":" + website.clientSecret)}`; + } else { + header["Authorization"] = `Bearer ` + _token; + } + new Promise((resolve, reject) => { + wx.request({ + url: app.config.requestCtx + '/file/api/ApiUpload', + method: 'POST', + header: { + 'content-type': data.contentType, + ...header + }, + data: data.buffer, + success(res) { + if (res.statusCode == 200) { + resolve(res.data); + if (res.data) { + that.setData({ + 'userInfo.userPicture': app.config.requestCtx + `/file/GetPreViewImage?md5=` + md5, + pictureMd5: md5 + }); + } + } else { + reject('杩愯鏃堕敊璇�,璇风◢鍚庡啀璇�'); + } + } + }) + }) + } + }) + } + }); + }, + + confirmM() { + let currentDate = new Date() + let year = currentDate.getFullYear() + let month = currentDate.getMonth() + 1 + let day = currentDate.getDate() + if (this.data.userInfo.fullName) { + if (this.data.pictureMd5 == '') { + wx.showToast({ + title: "璇蜂笂浼犵収鐗�", + icon: "none", + duration: 1000, + }); + return false + } + let data = {} + let bookInfo = { + bookId: this.data.digitalsData.id, + icon: this.data.digitalsData.icon, + name: this.data.digitalsData.name, + author: this.data.digitalsData.author, + ISBN: this.data.digitalsData.isbn, + publicationDate: this.data.digitalsData.publicationDate, + publicationDate: this.data.digitalsData.publicationDate, + userName: this.data.userInfo.fullName, + userPicture: this.data.pictureMd5, + studyTime: this.data.digitalsData.beginDate + '-' + year + '-' + month + '-' + day, + website: this.data.website + } + data = { + topicIdOrRefCode: 'applyTextbookCertificate', + name: this.data.userInfo.fullName, + content: JSON.stringify(bookInfo), + state: 'WaitAudit', + cmsTypeRefCode: 'jsek_textbookCertificate', + type: 'applyTextbook', + newDataListRequest: worksDataBytool(this.data.worksInfo, this.data.userInfo) + } + app.MG.ugc + .newTopicMessage(data) + .then((res) => { + wx.showToast({ + title: "宸叉彁浜ょ敵璇�", + icon: "none", + duration: 1000, + }); + this.setData({ + "userInfo.fullName": "", + dialogBox: false, + scrollJudge: true + }) + this.getCertificateList() + }) + .catch(() => { + this.setData({ + "userInfo.fullName": "", + }) + }) + } else { + wx.showToast({ + title: "濮撳悕涓嶈兘涓虹┖", + icon: "none", + duration: 1000, + }); + } + }, + + //璇佷功鏌ョ湅 + onClick1() { + this.setData({ + images: ['https://jsek.bnuic.com/home/certificate/szjc.jpg'], + showIndex: true, + visible: true, + }) + }, + onClick2() { + this.setData({ + images: ['https://jsek.bnuic.com/home/certificate/jczs.jpg'], + showIndex: true, + visible: true, + }) + }, + onClose(e) { + const { + trigger + } = e.detail; + this.setData({ + visible: false, + }); } + }) \ No newline at end of file -- Gitblit v1.9.1