From d7b7435558c15789e9a2c650389cd28ce88d443b Mon Sep 17 00:00:00 2001 From: 闫增涛 <1829501689@qq.com> Date: 星期二, 06 五月 2025 15:05:42 +0800 Subject: [PATCH] 资源查看判断是否购买 --- packageDomain/pages/resourceDetails/document/index.wxss | 20 + packageDomain/pages/resourceDetails/document/index.wxml | 66 +++- packageBookService/pages/bookServices/detail/index.wxml | 16 packageDomain/pages/resourceDetails/myVideo/index.js | 30 ++ packageDomain/pages/resourceDetails/myAudio/index.js | 72 ++++- packageDomain/pages/resourceDetails/document/index.json | 1 packageDomain/pages/resourceDetails/document/index.js | 129 ++++----- packageBookService/pages/bookServices/detail/components/tree/index.wxml | 7 packageDomain/pages/resourceDetails/myVideo/index.wxml | 53 ++- packageBookService/pages/bookServices/detail/components/suggestDialog/index.js | 1 packageBookService/pages/bookServices/detail/components/note/note.js | 13 packageBookService/pages/bookServices/detail/components/tree/index.js | 28 ++ packageBookService/pages/bookServices/detail/index.js | 50 +++ packageDomain/pages/resourceDetails/myVideo/index.wxss | 16 packageDomain/pages/resourceDetails/myAudio/index.wxss | 16 packageDomain/pages/resourceDetails/myAudio/index.wxml | 213 +++++++++++++-- packageBookService/pages/bookServices/detail/components/suggestDialog/index.wxml | 4 packageBookService/pages/bookServices/detail/components/suggestDialog/index.wxss | 2 18 files changed, 533 insertions(+), 204 deletions(-) diff --git a/packageBookService/pages/bookServices/detail/components/note/note.js b/packageBookService/pages/bookServices/detail/components/note/note.js index 5daf2d0..3da3213 100644 --- a/packageBookService/pages/bookServices/detail/components/note/note.js +++ b/packageBookService/pages/bookServices/detail/components/note/note.js @@ -66,12 +66,21 @@ }); }, openDialog() { - loginInfo(app, (data) => {}) - if (data) + const token = wx.getStorageSync(app.config.tokenKey); + if (token) { this.setData({ submitTitle: this.properties.bookInfo.name, showNoteDialog: true, }); + } else { + loginInfo(app, (data) => { + if (data) + this.setData({ + submitTitle: this.properties.bookInfo.name, + showNoteDialog: true, + }); + }) + } }, closeDialog() { this.setData({ diff --git a/packageBookService/pages/bookServices/detail/components/suggestDialog/index.js b/packageBookService/pages/bookServices/detail/components/suggestDialog/index.js index 9ec3c1d..82aa7a5 100644 --- a/packageBookService/pages/bookServices/detail/components/suggestDialog/index.js +++ b/packageBookService/pages/bookServices/detail/components/suggestDialog/index.js @@ -36,6 +36,7 @@ */ data: { inputStyle: 'border: 2rpx solid rgba(220,220,220,1);border-radius: 12rpx; padding: 0 0 0 16rpx;', + textareaStyle: 'border: 2rpx solid rgba(220,220,220,1);border-radius: 12rpx; padding: 0 0 0 16rpx;height:240rpx', showIndex: null, //鎵撳紑寮圭獥鐨勫搴斾笅鏍� height: '', //灞忓箷楂樺害 inputvalue: '', diff --git a/packageBookService/pages/bookServices/detail/components/suggestDialog/index.wxml b/packageBookService/pages/bookServices/detail/components/suggestDialog/index.wxml index 8350c32..e875221 100644 --- a/packageBookService/pages/bookServices/detail/components/suggestDialog/index.wxml +++ b/packageBookService/pages/bookServices/detail/components/suggestDialog/index.wxml @@ -2,7 +2,7 @@ <view class="popup-box" wx:if="{{showIndex=='1'}}" bindtap="closePopup"></view> <view class="info-center" - style="top:{{height*0.3}}px" + style="top:{{height*0.1}}px" wx:if="{{showIndex=='1'}}" > <view class="top-icon"> @@ -52,7 +52,7 @@ disableDefaultPadding="{{true}}" indicator bind:change="textareaChange" - style="{{inputStyle}}" + style="{{textareaStyle}}" placeholder-style="{{placeholderstyle}}" /> </view> diff --git a/packageBookService/pages/bookServices/detail/components/suggestDialog/index.wxss b/packageBookService/pages/bookServices/detail/components/suggestDialog/index.wxss index 3bedf03..f6d1865 100644 --- a/packageBookService/pages/bookServices/detail/components/suggestDialog/index.wxss +++ b/packageBookService/pages/bookServices/detail/components/suggestDialog/index.wxss @@ -142,7 +142,7 @@ .popup-content { width: 100%; - height: 680rpx; + height: 550rpx; display: flex; flex-direction: column; } diff --git a/packageBookService/pages/bookServices/detail/components/tree/index.js b/packageBookService/pages/bookServices/detail/components/tree/index.js index d7151ef..a36aa4a 100644 --- a/packageBookService/pages/bookServices/detail/components/tree/index.js +++ b/packageBookService/pages/bookServices/detail/components/tree/index.js @@ -59,6 +59,12 @@ }, isCloundHaveSaleMethod: { type: Boolean + }, + activeId: { + type: String + }, + source: { + type: String } }, data: { @@ -71,7 +77,27 @@ canExecute: true, purchaseList: [] }, - ready() {}, + ready() { + var query = this.createSelectorQuery() + const that = this + try { + if (this.data.activeId) + setTimeout(() => { + query.select('.cms-' + this.data.activeId).boundingClientRect(function (res) { + if (res && res.top > 0) { + var myEventDetail = { + top: res.top + }; + var myEventOption = { + bubbles: true, + composed: true, + }; + that.triggerEvent("handleScrollTop", myEventDetail, myEventOption); + } + }).exec() + }, 500) + } catch (err) {} + }, onLoad() {}, observers: { treeList: function (newValue) { diff --git a/packageBookService/pages/bookServices/detail/components/tree/index.wxml b/packageBookService/pages/bookServices/detail/components/tree/index.wxml index aeb2510..a7d6e82 100644 --- a/packageBookService/pages/bookServices/detail/components/tree/index.wxml +++ b/packageBookService/pages/bookServices/detail/components/tree/index.wxml @@ -8,7 +8,7 @@ wx:if="{{item.sysType== 'CmsItem' }}" > <view - class="listItems" + class="listItems {{'cms-' + item.id}}" wx:if="{{item.childrenFolderCount <= 0 && item.sysType == 'CmsItem'}}" > <view class="itemsInfo" data-item="{{item}}" data-index="{{index}}"> @@ -136,7 +136,7 @@ value="{{item.id}}" wx:if="{{item.sysType == 'CmsFolder' }}" > - <view slot="header" class="header-title"> + <view slot="header" class=" {{'cms-' + item.id}} header-title"> <view class="title-checkBox" catchtap="catchTap"> <t-checkbox style="align-items: center" @@ -183,7 +183,7 @@ > <!-- // 鍒ゆ柇 鏃犲瓙椤� 涓斾负鍟嗗搧item 鐩存帴鏄剧ず --> <view - class="listItems" + class="listItems {{'cms-' + citem.id}}" wx:if="{{citem.childrenFolderCount <= 0 && citem.sysType == 'CmsItem'}}" > <view class="itemsInfo" data-item="{{citem}}" data-index="{{cindex}}"> @@ -314,6 +314,7 @@ buyIds="{{buyIds}}" openIds="{{openIds}}" learnMenu="{{learnMenu}}" + activeId="{{activeId}}" isCloundHaveSaleMethod="{{isCloundHaveSaleMethod}}" ></tree> </view> diff --git a/packageBookService/pages/bookServices/detail/index.js b/packageBookService/pages/bookServices/detail/index.js index 4a1ea38..f25d147 100644 --- a/packageBookService/pages/bookServices/detail/index.js +++ b/packageBookService/pages/bookServices/detail/index.js @@ -212,9 +212,19 @@ protocolTxt: '', learnMenu: null, md5List: [], - editDialog: false + editDialog: false, + scrollTop: 0, // 鎵爜杩涜祫婧愭粴鍔� + source: '', + activeId: '', + qrTabValue: '' }, - + // 鎵爜鍒拌祫婧愬垪琛紝婊氬姩鍒拌璧勬簮浣嶇疆 + handleScrollTop(e) { + if (this.data.tabValue == this.data.qrTabValue) + this.setData({ + scrollTop: e.detail.top + }) + }, resetTree: function (e) { this.setData({ currentCheck: e.detail.checkedItem, @@ -258,7 +268,11 @@ name: decodeURI(options.name), storeInfo: options.storeInfo, }, + source: options.source, + activeId: options.resourceId, + qrTabValue: options.tabValue }); + console.log('浼犲弬', this.data); wx.setNavigationBarTitle({ title: decodeURI(options.name), }) @@ -1086,7 +1100,11 @@ } let result = []; if (type.refCode == "jsek_teachingResources") { - this.findChildIds(list, result); + if (this.data.activeId) { + result = this.findChildIdsByCode(res.datas.cmsDatas[0].datas) + } else { + this.findChildIds(list, result); + } this.setData({ openTeachids: result, loading: false, @@ -1105,14 +1123,21 @@ ) || (flags && cloundSaleMethod.Price == 0) // 鍒ゆ柇浜戝涔犲叏閮ㄨ喘涔版寜閽槸鍚︽樉绀� let isShowBuyCloundMenu = flags && cloundSaleMethod.Price > 0 && !this.data.buyIdList.includes(cloundSaleMethod.Id) - // 鍒ゆ柇璧勬簮璐拱鎸夐挳鏄惁鏄剧ず - let isShowBuyCloundBtn = !flags && res.datas.cmsDatas[0].datas.some(citem => citem.saleMethod.length != 0) + // 鍒ゆ柇璧勬簮璐拱鎸夐挳鏄惁鏄剧ず 锛堜簯瀛︿範鏃犻攢鍞柟寮忥紝璧勬簮鍜岀洰褰曚腑鏈夐攢鍞柟寮忥紝涓斿敭浠峰ぇ浜�0锛� + let isShowBuyCloundBtn = !flags && 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()) // 鍒ゆ柇璐墿杞︽寜閽拰閿佹寜閽槸鍚︽樉绀� this.handleTreeData(list).forEach(item => { item.isbuy = this.resourceIsBuy(item); item.isShopCar = this.isShoppingCart(item); }) - this.findChildIds(list, result); + if (this.data.activeId) { + result = this.findChildIdsByCode(res.datas.cmsDatas[0].datas) + } else { + this.findChildIds(list, result); + } this.setData({ isshowDrawBtn, isShowBuyCloundMenu, @@ -1124,7 +1149,7 @@ learnPath: type.productLinkPath }); } - console.log('1', this.data.teach); + console.log('1', result); }) }, // 鑾峰彇 浜戞祴璇� @@ -1275,6 +1300,17 @@ } }, + // 鑾峰彇鐩綍鎵爜灞曞紑椤� + findChildIdsByCode(list) { + let arr = [] + const data = list.find(item => item.id == this.data.activeId) + if (data) { + const ids = data.productLinkInfo.find(item => item.CmsItemId == data.id).LinkPath.split('\\') + arr = [data.id, ...ids].map(item => Number(item)) + } + return arr + }, + // 鍥句功娣诲姞璐墿杞� addBookShopcCar() { const addFun = async () => { diff --git a/packageBookService/pages/bookServices/detail/index.wxml b/packageBookService/pages/bookServices/detail/index.wxml index d8164b8..e130935 100644 --- a/packageBookService/pages/bookServices/detail/index.wxml +++ b/packageBookService/pages/bookServices/detail/index.wxml @@ -16,6 +16,8 @@ scroll-y="{{true}}" class="book" bindscrolltolower="onReachBottom" + scroll-with-animation="{{true}}" + scroll-top="{{scrollTop}}" > <!-- 鍥句功璇︽儏 --> <view class="book-box"> @@ -195,13 +197,7 @@ <empty /> </view> </t-tab-panel> - <!-- <t-tab-panel - label="鐢靛瓙涔�" - icon="{{tabValue == 'jsek_eBook' ? eBookClickIcon : eBookIcon}}" - value="jsek_eBook" - style="{{tabPanelstyle}}" - > - </t-tab-panel> --> + <t-tab-panel label="鏁欏璧勬簮" icon="{{tabValue == 'jsek_teachingResources' ? teachResourcesClickIcon : teachResourcesIcon}}" @@ -229,9 +225,12 @@ bind:downloadTeach="downloadTeach" bind:handleTree="handleTree" openTeachids="{{openTeachids}}" + source="{{source}}" + activeId="{{activeId}}" wx:if="{{teach.length}}" isShoppingCart="isShoppingCart" bind:updateCloudLearning="updateCloudLearning" + bind:handleScrollTop="handleScrollTop" ></tree> </view> <view wx:if="{{loading}}" style="width: 100%; height: min-content"> @@ -280,9 +279,12 @@ cloundMenuIsBuy="{{cloundMenuIsBuy}}" learnMenu="{{learnMenu}}" isCloundHaveSaleMethod="{{isCloundHaveSaleMethod}}" + source="{{source}}" + activeId="{{activeId}}" bind:updateShoppingCartHidden="updateShoppingCartHidden" bind:updateCloudLearning="updateCloudLearning" bind:getCloundIsBuy="getCloundIsBuy" + bind:handleScrollTop="handleScrollTop" ></tree> </view> <view wx:if="{{noResources && !loading}}" class="noData"> diff --git a/packageDomain/pages/resourceDetails/document/index.js b/packageDomain/pages/resourceDetails/document/index.js index dac4ffc..03edf9b 100644 --- a/packageDomain/pages/resourceDetails/document/index.js +++ b/packageDomain/pages/resourceDetails/document/index.js @@ -55,7 +55,13 @@ learnTimeList: [], learnTimeData: 0, threeLeveData: [], - selectTypeData: '' + selectTypeData: '', + promptVisable: false, + showMd5: '', + confirmBtn: { + content: '纭畾', + variant: 'base', + }, }, /** * 鐢熷懡鍛ㄦ湡鍑芥暟--鐩戝惉椤甸潰鍔犺浇 @@ -385,12 +391,10 @@ }) if (this.data.source == 'qrcode') { let qrData = this.data.threeLeveData.find(ditem => ditem.id == this.data.activeId) - if (qrData && this.data.isLearnDataBuy) { - if (qrData) { - this.setData({ - threeLeveData: [qrData] - }) - } + if (qrData && this.cmsItemIsBuy(qrData)) { + this.setData({ + threeLeveData: [qrData] + }) } else { this.setData({ threeLeveData: [] @@ -500,7 +504,8 @@ let that = this //鍥剧墖 if (item.selectType == 'picture' || item.learnSelectType == 'picture') { - let file = item.file ? item.file : item.protectedFile ? item.protectedFile : item.freeFile + const isBuy = this.cmsItemIsBuy(item) + let file = isBuy ? item.protectedFile || item.file : item.freeFile this.setData({ showData: app.config.requestCtx + '/file/api/ApiDownload?md5=' + file, }) @@ -520,21 +525,14 @@ }) wx.hideLoading(); } - // if (item.selectType == 'pdf') { - // console.log('pdf', item); - // wx.hideLoading() - // let md5 = item.file ? item.file : item.freeFile - // let pdfSrc = app.config.pdfUrl + "?MD5=" + md5 + "&url=" + app.config.requestCtx + '¤tPage=' + "1" + "&isPreview=" + false + "&warterMark=" + "鍖椾含甯堣寖澶у鍑虹増绀�" + "&previewPages=" + 30 + "&token=" + wx.getStorageSync(app.config.tokenKey) - // this.setData({ - // pdfSrc: pdfSrc - // }) - // } //鏂囨。绛� if (item.selectType == 'document' || item.selectType == 'pdf' || item.learnSelectType == 'document' || item.learnSelectType == 'pdf') { - let md5 = item.file ? item.file : item.protectedFile ? item.protectedFile : item.freeFile + const isBuy = this.cmsItemIsBuy(item) + let md5 = isBuy ? item.protectedFile || item.file || item.freeFile : item.freeFile if (item.fileMap[md5]?.extension == 'xlsx' || item.fileMap[md5]?.extension == 'xls') { this.setData({ - selectTypeData: 'excel' + selectTypeData: 'excel', + showMd5: md5, }) wx.request({ url: app.config.requestCtx + '/file/api/ApiDownload?md5=' + md5, @@ -625,56 +623,45 @@ urls: urls // 闇�瑕侀瑙堢殑鍥剧墖http閾炬帴鍒楄〃 }) }, - - // myTouchStart(e) { - // //---------------------璁板綍缂╂斁浜嬩欢淇℃伅--------------------- - // // 褰撲袱鏍规墜鎸囨斁涓婂幓鐨勬椂鍊欙紝灏嗚窛绂�(distance)鍒濆鍖栥�� - // let xMove = e.touches[1].clientX - e.touches[0].clientX; - // let yMove = e.touches[1].clientY - e.touches[0].clientY; - // //璁$畻寮�濮嬭Е鍙戜袱涓墜鎸囧潗鏍囩殑璺濈 - // const distance = Math.sqrt(xMove * xMove + yMove * yMove); - // this.setData({ - // distance: distance - // }) - // //---------------------璁板綍缂╂斁浜嬩欢淇℃伅end--------------------- - // }, - // myTouchMove(e) { - // // ----------------鐩戝惉鎵嬪娍缂╁皬鏀惧ぇ浜嬩欢---------------- - // // 鍗曟墜鎸囩缉鏀句笉鍋氫换浣曟搷浣� - // if (e.touches.length != 1) { - // //鍙屾墜鎸囪繍鍔� x绉诲姩鍚庣殑鍧愭爣鍜寉绉诲姩鍚庣殑鍧愭爣 - // let xMove = e.touches[1].clientX - e.touches[0].clientX; - // let yMove = e.touches[1].clientY - e.touches[0].clientY; - // //鍙屾墜鎸囪繍鍔ㄦ柊鐨� ditance - // let newDistance = Math.sqrt(xMove * xMove + yMove * yMove); - // //璁$畻绉诲姩鐨勮繃绋嬩腑瀹為檯绉诲姩浜嗗灏戠殑璺濈 - // let distanceDiff = newDistance - this.data.distance; - // // newScale = scale + 0.005 * distanceDiff - // console.log('绉诲姩璺濈', distanceDiff); - // this.setData({ - // newScale: this.data.newScale + 0.005 * distanceDiff - // }) - // // 鎵撳紑缂╂斁鐩戝惉 - // // zoomFlag = true - // this.setData({ - // lzoomFlag: true - // }) - // return - // } - // // ----------------鐩戝惉鎵嬪娍缂╁皬鏀惧ぇ浜嬩欢end---------------- - // }, - // myTouchEnd() { - // if (this.data.lzoomFlag) { - // if (this.data.newScale > 1.3) { - // console.log("鏀惧ぇ浜�", this.data.newScale); - // } else if (this.data.newScale < 0.7, this.data.newScale) { - // console.log("缂╁皬浜�"); - // } - // // 鍏抽棴缂╂斁鐩戝惉 - // // zoomFlag = false - // this.setData({ - // lzoomFlag: false - // }) - // } - // }, + // 鍒ゆ柇褰撳墠鐐瑰嚮鐨勬暟鎹槸鍚﹁喘涔� + cmsItemIsBuy(item) { + let flag = false + // 涔颁簡 + if (this.data.buyList.length) { + if (this.data.buyList.some(citem => item.productLinkPath.includes(citem.productLinkPath))) + flag = true + } else { + // 娌′拱涓旀棤閿�鍞柟寮� + if (!item.saleMethod.length) { + flag = true + } else { + // 娌′拱涓旈攢鍞柟寮忚繃鏈�//娌′拱锛岄攢鍞柟寮忎环鏍间负0 + const itemSaleMethod = item.saleMethod.find(citem => citem.SaleType == 'Normal') + if (new Date().getTime() > new Date(itemSaleMethod.EndDate).getTime() || itemSaleMethod.Price == 0) flag = true + } + } + return flag + }, + // + scrolltolower(e) { + const activeData = this.data.threeLeveData.find(item => item.id == this.data.activeId) + const flag = this.data.naturalResources.some(item => item.includes(activeData.freeFile)) + if ((this.data.showMd5 == activeData.freeFile || flag) && activeData.protectedFile) + this.setData({ + promptVisable: true + }) + }, + // 鎻愮ず寮圭獥鍏抽棴 + closePromapDialog() { + this.setData({ + promptVisable: false + }) + if (this.data.source == 'qrcode') { + wx.navigateTo({ + url: `/packageBookService/pages/bookServices/detail/index?id=${this.data.bookDetail.id}&name=${this.data.bookDetail.name}&tabValue=jsek_cloudLearning`, + }); + } else { + wx.navigateBack() + } + } }) \ No newline at end of file diff --git a/packageDomain/pages/resourceDetails/document/index.json b/packageDomain/pages/resourceDetails/document/index.json index 65c32cd..2293025 100644 --- a/packageDomain/pages/resourceDetails/document/index.json +++ b/packageDomain/pages/resourceDetails/document/index.json @@ -5,6 +5,7 @@ "t-button": "tdesign-miniprogram/button/button", "t-image": "tdesign-miniprogram/image/image", "t-toast": "tdesign-miniprogram/toast/toast", + "t-dialog": "tdesign-miniprogram/dialog/dialog", "t-image-viewer": "tdesign-miniprogram/image-viewer/image-viewer" } } \ No newline at end of file diff --git a/packageDomain/pages/resourceDetails/document/index.wxml b/packageDomain/pages/resourceDetails/document/index.wxml index 3702219..f4e3b5a 100644 --- a/packageDomain/pages/resourceDetails/document/index.wxml +++ b/packageDomain/pages/resourceDetails/document/index.wxml @@ -1,19 +1,13 @@ -<!-- <view style="width: 100%; height: {{barHeight}}px; "></view> -<view class="nacigationBar" style="width: 70%; height: {{navBarHeight}}px;"> - <view> - <t-icon name="chevron-left" size="30" data-name="{{item}}" bind:click="goBack" /> - </view> - <view class="navbar-title">璧勬簮璇︽儏</view> -</view> - ---> - -<view class="titleNameBox" wx:if="{{selectType != 'webpage' && learnSelectType != 'webpage'}}"> +<view + class="titleNameBox" + wx:if="{{selectType != 'webpage' && learnSelectType != 'webpage'}}" +> {{titleName}} </view> -<!-- bind:tap="onClick" --> -<view class="pictureBox" wx:if="{{selectType == 'picture' || learnSelectType == 'picture'}}"> - <!-- style="width: {{(newScale <= 5 ? newScale: 5) * 100}}%;" --> +<view + class="pictureBox" + wx:if="{{selectType == 'picture' || learnSelectType == 'picture'}}" +> <image src="{{showData}}" mode="widthFix" @@ -34,20 +28,34 @@ </view> </view> -<view wx:if="{{(selectType == 'document' || learnSelectType == 'document') && selectTypeData == 'excel'}}" class="excelBox"> - <!-- <rich-text nodes="{{webpageSrc}}" ></rich-text> --> - <view wx:for="{{naturalResources}}" +<view + wx:if="{{(selectType == 'document' || learnSelectType == 'document') && selectTypeData == 'excel'}}" + class="excelBox" +> + <view + wx:for="{{naturalResources}}" wx:key="key" wx:for-item="item" wx:for-index="index" class="textBox" + > + <view + class="textWidth" + wx:for="{{item}}" + wx:key="key1" + wx:for-index="index1" + wx:for-item="item1" + >{{item1}}</view > - <view class="textWidth" wx:for="{{item}}" wx:key="key1" wx:for-index="index1" wx:for-item="item1" >{{item1}}</view> </view> - </view> -<view wx:if="{{(selectType == 'pdf' || selectType == 'document' || learnSelectType == 'pdf' || learnSelectType == 'document') && selectTypeData != 'excel'}}"> +<scroll-view + wx:if="{{(selectType == 'pdf' || selectType == 'document' || learnSelectType == 'pdf' || learnSelectType == 'document') && selectTypeData != 'excel'}}" + scroll-y="{{true}}" + bindscrolltolower="scrolltolower" + class="scrollBox" +> <view wx:for="{{naturalResources}}" wx:key="index" @@ -66,11 +74,12 @@ <view class="divider">绗� {{index + 1}} 椤�</view> </view> <!-- <web-view src="{{pdfSrc}}" id="web-view-pdf" /> --> -</view> +</scroll-view> - - -<web-view wx:if="{{selectType == 'webpage' || learnSelectType == 'webpage'}}" src="{{webpageSrc}}"></web-view> +<web-view + wx:if="{{selectType == 'webpage' || learnSelectType == 'webpage'}}" + src="{{webpageSrc}}" +></web-view> <!-- <button bind:tap="handleTap">鐐逛綅</button> --> <!-- <t-button theme="primary" size="large" variant="outline" block>鍩虹鍥剧墖棰勮</t-button> --> @@ -86,3 +95,12 @@ bind:delete="onDelete" bind:close="onClose" ></t-image-viewer> + +<t-dialog + class="prompDialog" + visible="{{promptVisable}}" + title="鎻愮ず" + content="璇曠湅缁撴潫锛岃璐拱姝e紡璧勬簮" + confirm-btn="{{ confirmBtn }}" + bind:confirm="closePromapDialog" +/> diff --git a/packageDomain/pages/resourceDetails/document/index.wxss b/packageDomain/pages/resourceDetails/document/index.wxss index 118f1e9..126a4b7 100644 --- a/packageDomain/pages/resourceDetails/document/index.wxss +++ b/packageDomain/pages/resourceDetails/document/index.wxss @@ -63,10 +63,7 @@ height: 100%; } -.pictureBox image { - /* width: 100%; - height: auto; */ -} + .download-btn { width: 100%; @@ -125,4 +122,19 @@ .textWidth { text-align: center; flex: 1; +} + +.scrollBox { + height: calc(100vh - env(safe-area-inset-bottom) - 60px); +} + +.prompDialog { + --td-button-primary-bg-color: #ff6c00; + --td-button-primary-border-color: #ff6c00; + --td-button-primary-active-bg-color: #ff984d; + --td-button-primary-active-border-color: #ff984d; +} + +.prompDialog .t-dialog__header { + margin-top: 30rpx; } \ No newline at end of file diff --git a/packageDomain/pages/resourceDetails/myAudio/index.js b/packageDomain/pages/resourceDetails/myAudio/index.js index 85e1bc6..209e23a 100644 --- a/packageDomain/pages/resourceDetails/myAudio/index.js +++ b/packageDomain/pages/resourceDetails/myAudio/index.js @@ -63,6 +63,11 @@ learnTimeList: [], learnTimeData: 0, toView: 'activeName', + promptVisable: false, + confirmBtn: { + content: '纭畾', + variant: 'base', + }, }, format(time) { @@ -139,6 +144,13 @@ onShow() { this.setData({ startTime: Date.now() + }) + myAudio.onEnded((e) => { + const data = this.data.threeLeveData.find(item => item.id == this.data.activeId) + if (data.freeFile && this.data.showData.includes(data.freeFile) && data.protectedFile) + this.setData({ + promptVisable: true + }) }) }, @@ -296,7 +308,6 @@ const buyList = res.datas.cmsDatas[0].datas.filter(item => item.saleMethod.length && this.data.buyIdList.includes(item.saleMethod.find(citem => citem.SaleType == 'Normal').Id)) if (this.data.learnClassData && this.data.learnClassData.saleMethod.length) { const learnSaleMethod = this.data.learnClassData.saleMethod.find(citem => citem.SaleType == 'Normal') - // if (this.data.buyIdList.includes(learnSaleMethod.Id)) buyList.push(learnClassData) if (this.data.buyIdList.includes(learnSaleMethod.Id)) { buyList.push(this.data.learnClassData) } else { @@ -380,11 +391,6 @@ let showDataUrl = ''; let titleName = ''; res.datas.cmsDatas[0].datas.forEach((item, index) => { - // if (this.data.source == 'qrcode') { - // if (item.id == this.data.activeId) { - // this.data.threeLeveData.push(item); - // } - // } else { if (item.selectType === "audio" || item.learnSelectType === "audio") { if (this.data.storeInfo == 'jsek_digitalCourses') { if (item.sysType == 'CmsItem') { @@ -399,7 +405,7 @@ this.data.threeLeveData.push(item) } } else { - // if (!item.saleMethod.length) this.data.threeLeveData.push(item) + if (!item.saleMethod.length) { // 娌′拱涓旀棤閿�鍞柟寮� this.data.threeLeveData.push(item) @@ -410,21 +416,22 @@ this.data.threeLeveData.push(item) } // 娌′拱涓斿彧鏈夎瘯璇昏祫婧� - if (!item.file && item.freeFile) this.data.threeLeveData.push(item) + if ((!item.file && !item.protectedFile) && item.freeFile) { + const state = this.data.threeLeveData.find(citem => citem.id == item.id) + if (!state) + this.data.threeLeveData.push(item) + } } } } } - // } }); if (this.data.source == 'qrcode') { let qrData = this.data.threeLeveData.find(ditem => ditem.id == this.data.activeId) - if (qrData && this.data.isLearnDataBuy) { - if (qrData) { - this.setData({ - threeLeveData: [qrData] - }) - } + if (qrData && this.cmsItemIsBuy(qrData)) { + this.setData({ + threeLeveData: [qrData] + }) } else { this.setData({ threeLeveData: [] @@ -440,7 +447,7 @@ if (selectedId !== -1) { let datas = this.data.threeLeveData[selectedId]; if (this.data.formPath == 'jsek_cloudLearning') { - let file = datas.protectedFile ? datas.protectedFile : datas.freeFile + let file = this.cmsItemIsBuy(datas) ? datas.protectedFile || datas.freeFile : datas.freeFile showDataUrl = app.config.requestCtx + '/file/api/ApiDownloadForAuthorize?md5=' + file + '&token=' + wx.getStorageSync(app.config.tokenKey); } else { showDataUrl = datas.file ? app.config.requestCtx + '/file/api/ApiDownload?md5=' + datas.file : app.config.requestCtx + '/file/api/ApiDownload?md5=' + datas.freeFile @@ -824,7 +831,6 @@ } setTimeout(() => { - myAudio.startTime = this.data.myAudioDuration //寮�濮嬫椂闂� myAudio.playbackRate = this.data.speed; // 鎾斁閫熺巼 }, 200); @@ -925,4 +931,36 @@ .then((res) => {}) } }, + // 鍒ゆ柇褰撳墠鐐瑰嚮鐨勬暟鎹槸鍚﹁喘涔� + cmsItemIsBuy(item) { + let flag = false + // 涔颁簡 + if (this.data.buyList.length) { + if (this.data.buyList.some(citem => item.productLinkPath.includes(citem.productLinkPath))) + flag = true + } else { + // 娌′拱涓旀棤閿�鍞柟寮� + if (!item.saleMethod.length) { + flag = true + } else { + // 娌′拱涓旈攢鍞柟寮忚繃鏈�//娌′拱锛岄攢鍞柟寮忎环鏍间负0 + const itemSaleMethod = item.saleMethod.find(citem => citem.SaleType == 'Normal') + if (new Date().getTime() > new Date(itemSaleMethod.EndDate).getTime() || itemSaleMethod.Price == 0) flag = true + } + } + return flag + }, + // 鎻愮ず寮圭獥鍏抽棴 + closePromapDialog() { + this.setData({ + promptVisable: false + }) + if (this.data.source == 'qrcode') { + wx.navigateTo({ + url: `/packageBookService/pages/bookServices/detail/index?id=${this.data.bookDetail.id}&name=${this.data.bookDetail.name}&tabValue=jsek_cloudLearning`, + }); + } else { + wx.navigateBack() + } + } }) \ No newline at end of file diff --git a/packageDomain/pages/resourceDetails/myAudio/index.wxml b/packageDomain/pages/resourceDetails/myAudio/index.wxml index cd941e2..14764ec 100644 --- a/packageDomain/pages/resourceDetails/myAudio/index.wxml +++ b/packageDomain/pages/resourceDetails/myAudio/index.wxml @@ -16,27 +16,43 @@ </view> --> <view class="audioPlayerBox"> - <view class="audioBackground" style="background-image: url('https://jsek.bnuic.com/home/image/video-bg.png');"> + <view + class="audioBackground" + style="background-image: url('https://jsek.bnuic.com/home/image/video-bg.png')" + > <image src="/static/images/resourceDetailsMyAudio/cd.png" alt="" /> </view> <!-- 瑙嗛鎾斁鐨勬寜閽� --> <view class="bigFunctionBox"> <view class="functionBox"> - - <!-- 鏆傚仠鎾斁 --> - <view class="audioIconBox color" style="margin-left: 30rpx; margin-right: 10rpx"> + <view + class="audioIconBox color" + style="margin-left: 30rpx; margin-right: 10rpx" + > <view wx:if="{{isplay}}" bind:tap="play" class="pauseCircleBox"> <!-- <t-icon name="play-circle-stroke" size="24" /> --> - <image src="/static/images/resourceDetailsMyAudio/play@2x.png" mode="" /> + <image + src="/static/images/resourceDetailsMyAudio/play@2x.png" + mode="" + /> </view> <view wx:if="{{!isplay}}" bind:tap="stop" class="pauseCircleBox"> <!-- <t-icon name="pause-circle-stroke" size="24" /> --> - <image src="/static/images/resourceDetailsMyAudio/zanting@2x.png" mode="" /> + <image + src="/static/images/resourceDetailsMyAudio/zanting@2x.png" + mode="" + /> </view> </view> - <slider style="width: 300rpx" activeColor="#FF6C00" class="mp-slider-bar" block-size="16" value="{{myAudioPos}}" bindchange="hanle_slider_change"></slider> - + <slider + style="width: 300rpx" + activeColor="#FF6C00" + class="mp-slider-bar" + block-size="16" + value="{{myAudioPos}}" + bindchange="hanle_slider_change" + ></slider> <!-- 鏃堕棿 --> <view class="timeBox"> @@ -49,14 +65,46 @@ <view class="publicBtn color"> <view class="publicText" bind:tap="toggleDropdown"> <view> {{"x "+speed}} </view> - <t-icon style="margin-top: 10rpx" wx:if="{{showDropdown}}" name="caret-up-small" size="14" bind:click="onIconTap" /> - <t-icon style="margin-top: 10rpx" wx:else name="caret-down-small" size="14" bind:click="onIconTap" /> + <t-icon + style="margin-top: 10rpx" + wx:if="{{showDropdown}}" + name="caret-up-small" + size="14" + bind:click="onIconTap" + /> + <t-icon + style="margin-top: 10rpx" + wx:else + name="caret-down-small" + size="14" + bind:click="onIconTap" + /> </view> <view class="multipleBox" wx:if="{{showDropdown}}"> - <view style="margin: 10rpx 0" wx:if="{{speed != 0.5}}" bind:tap="smallSpeed">x0.5</view> - <view style="margin: 10rpx 0" wx:if="{{speed != 1}}" bind:tap="smallSpeeDmultiple">x1</view> - <view style="margin: 10rpx 0" wx:if="{{speed != 1.5}}" bind:tap="centreSpeed">x1.5</view> - <view style="margin: 10rpx 0" wx:if="{{speed != 2}}" bind:tap="bigSpeed">x2</view> + <view + style="margin: 10rpx 0" + wx:if="{{speed != 0.5}}" + bind:tap="smallSpeed" + >x0.5</view + > + <view + style="margin: 10rpx 0" + wx:if="{{speed != 1}}" + bind:tap="smallSpeeDmultiple" + >x1</view + > + <view + style="margin: 10rpx 0" + wx:if="{{speed != 1.5}}" + bind:tap="centreSpeed" + >x1.5</view + > + <view + style="margin: 10rpx 0" + wx:if="{{speed != 2}}" + bind:tap="bigSpeed" + >x2</view + > </view> </view> </view> @@ -66,23 +114,52 @@ <!-- 鏍囬 --> <view class="titleBox">{{titleName}}</view> <view class="contentBox"> - <t-tabs defaultValue="{{0}}" bind:change="onTabsChange" bind:click="onTabsClick" t-class="custom-tabs" t-class-content="custom-panel" split="{{false}}"> + <t-tabs + defaultValue="{{0}}" + bind:change="onTabsChange" + bind:click="onTabsClick" + t-class="custom-tabs" + t-class-content="custom-panel" + split="{{false}}" + > <!-- 璧勬簮鍒楄〃 --> - <t-tab-panel label="璧勬簮鍒楄〃" value="0" style="{{tabPanelstyle}}" style="width: 750rpx"> - <scroll-view style="height:700rpx" scroll-y scroll-into-view="{{toView}}"> - <view class="wrapper"> - <!-- <t-collapse value="{{activeValues}}" bind:change="handleChange"> + <t-tab-panel + label="璧勬簮鍒楄〃" + value="0" + style="{{tabPanelstyle}}" + style="width: 750rpx" + > + <scroll-view + style="height: 700rpx" + scroll-y + scroll-into-view="{{toView}}" + > + <view class="wrapper"> + <!-- <t-collapse value="{{activeValues}}" bind:change="handleChange"> <t-collapse-panel header="{{parentName}}" value="{{0}}" expandIcon> </t-collapse-panel> </t-collapse> --> - <view class="outsideDetailsName"> - <view class="titleBox"> {{parentName}}</view> - <view class="detailsName" wx:for="{{threeLeveData}}" wx:key="index" wx:for-item="item" wx:for-index="index" bind:tap="onVideo" data-item="{{item}}" data-index="{{index}}" id="{{selectedId == index ? 'activeName'+index : ''}}"> - <view style="color: {{selectedId == index ? '#ff6c00' : '#000'}} ">{{item.name}}</view> + <view class="outsideDetailsName"> + <view class="titleBox"> {{parentName}}</view> + <view + class="detailsName" + wx:for="{{threeLeveData}}" + wx:key="index" + wx:for-item="item" + wx:for-index="index" + bind:tap="onVideo" + data-item="{{item}}" + data-index="{{index}}" + id="{{selectedId == index ? 'activeName'+index : ''}}" + > + <view + style="color: {{selectedId == index ? '#ff6c00' : '#000'}} " + >{{item.name}}</view + > + </view> </view> </view> - </view> </scroll-view> </t-tab-panel> <!-- 绗旇灞曠ず --> @@ -94,9 +171,16 @@ <empty /> </view> - <t-collapse-panel value="{{item.id}}" expandIcon wx:for="{{noteList}}"> + <t-collapse-panel + value="{{item.id}}" + expandIcon + wx:for="{{noteList}}" + > <view slot="header" class="collapse-header"> - <t-image class="note-icon" src="/static/images/bookService/detail/note-icon.png"></t-image> + <t-image + class="note-icon" + src="/static/images/bookService/detail/note-icon.png" + ></t-image> <view class="header-name">{{item.name}}</view> </view> <view> @@ -104,9 +188,19 @@ <view class="note-bottom"> <view class="note-time">{{item.createDate}}</view> <view class="bottom-btn"> - <t-image src="/static/images/bookService/detail/compliceHover.png" class="complice" bind:tap="editNote" data-note="{{item}}"></t-image> + <t-image + src="/static/images/bookService/detail/compliceHover.png" + class="complice" + bind:tap="editNote" + data-note="{{item}}" + ></t-image> <view></view> - <t-image src="/static/images/bookService/detail/deleteHover.png" class="delete" bind:tap="deleteNote" data-id="{{item.id}}"></t-image> + <t-image + src="/static/images/bookService/detail/deleteHover.png" + class="delete" + bind:tap="deleteNote" + data-id="{{item.id}}" + ></t-image> </view> </view> </view> @@ -119,7 +213,10 @@ <!-- 璁扮瑪璁� --> <view class="takeNotes" data-key="showCloseBtn" bind:tap="showDialog"> <view class="takeNotesLining"> - <image src="/static/images/resourceDetails/jibiji锛廼con@2x.png" mode="" /> + <image + src="/static/images/resourceDetails/jibiji锛廼con@2x.png" + mode="" + /> 璁扮瑪璁� </view> </view> @@ -127,28 +224,72 @@ </view> <!-- 璁扮瑪璁板脊绐� --> - <t-popup visible="{{dialogKey}}" bind:visible-change="onVisibleChange" placement="center"> + <t-popup + visible="{{dialogKey}}" + bind:visible-change="onVisibleChange" + placement="center" + > <view class="popup"> <view slot="title"> <view class="title-text" wx:if="{{!flag}}"> <text class="note-title">{{submitTitle}}</text> - <t-image src="/static/images/bookService/detail/edit.png" class="edit-icon" bind:tap="changeTitle" data-value="{{true}}"></t-image> + <t-image + src="/static/images/bookService/detail/edit.png" + class="edit-icon" + bind:tap="changeTitle" + data-value="{{true}}" + ></t-image> </view> <view wx:else> - <t-input value="{{submitTitle}}" style="{{inputStyle}}" data-value="{{false}}" bind:enter="changeTitle" bind:blur="changeTitle" maxlength="{{50}}" bind:change="inputChange"></t-input> + <t-input + value="{{submitTitle}}" + style="{{inputStyle}}" + data-value="{{false}}" + bind:enter="changeTitle" + bind:blur="changeTitle" + maxlength="{{50}}" + bind:change="inputChange" + ></t-input> </view> </view> <view slot="content"> <view class="textarea-example"> <text class="textarea-example__label">鍐呭:</text> - <t-textarea value="{{textvalue}}" t-class="external-class" placeholder="璇疯緭鍏ユ枃瀛�" bordered maxlength="500" disableDefaultPadding="{{true}}" indicator style="{{inputStyle}}" bind:change="textareaChange" /> + <t-textarea + value="{{textvalue}}" + t-class="external-class" + placeholder="璇疯緭鍏ユ枃瀛�" + bordered + maxlength="500" + disableDefaultPadding="{{true}}" + indicator + style="{{inputStyle}}" + bind:change="textareaChange" + /> </view> <view class="submit-btn"> - <t-button theme="primary" size="large" block bind:tap="confirmSuggest">鎻愪氦</t-button> + <t-button theme="primary" size="large" block bind:tap="confirmSuggest" + >鎻愪氦</t-button + > </view> </view> </view> - <t-icon t-class="close-btn" name="close-circle" size="32" color="#fff" bind:tap="closeDialog" /> + <t-icon + t-class="close-btn" + name="close-circle" + size="32" + color="#fff" + bind:tap="closeDialog" + /> </t-popup> -</view> \ No newline at end of file +</view> + +<t-dialog +class="prompDialog" + visible="{{promptVisable}}" + title="鎻愮ず" + content="璇曞惉缁撴潫锛岃璐拱姝e紡璧勬簮" + confirm-btn="{{ confirmBtn }}" + bind:confirm="closePromapDialog" +/> diff --git a/packageDomain/pages/resourceDetails/myAudio/index.wxss b/packageDomain/pages/resourceDetails/myAudio/index.wxss index 477b3a0..2e9d805 100644 --- a/packageDomain/pages/resourceDetails/myAudio/index.wxss +++ b/packageDomain/pages/resourceDetails/myAudio/index.wxss @@ -407,8 +407,16 @@ flex-direction: row; } -.wrapper { - /* overflow-y: scroll; - overflow-x: hidden; - height: 50vh; */ +.t-dialog__header { + margin-top: 30rpx; +} + +.prompDialog { + --td-button-primary-bg-color: #ff6c00; + --td-button-primary-border-color: #ff6c00; + --td-button-primary-active-bg-color: #ff984d; + --td-button-primary-active-border-color: #ff984d; +} +.prompDialog .t-dialog__header { + margin-top: 30rpx; } \ No newline at end of file diff --git a/packageDomain/pages/resourceDetails/myVideo/index.js b/packageDomain/pages/resourceDetails/myVideo/index.js index 15c01ed..d31a296 100644 --- a/packageDomain/pages/resourceDetails/myVideo/index.js +++ b/packageDomain/pages/resourceDetails/myVideo/index.js @@ -61,6 +61,12 @@ learnTimeList: [], learnTimeData: 0, toView: 'activeName', + promptVisable: false, + confirmBtn: { + content: '纭畾', + variant: 'base', + }, + showMd5: '' }, // 鏍煎紡鍖栫瑪璁版椂闂� convertTimestamp(timestamp) { @@ -458,7 +464,6 @@ wx.navigateTo({ url: `/packageBookService/pages/bookServices/detail/index?id=${this.data.bookDetail.id}&name=${this.data.bookDetail.name}&tabValue=jsek_cloudLearning`, }); - } this.setData({ loading: false, @@ -520,6 +525,9 @@ appRefCode: app.config.appRefCode } app.MG.file.getAliVod(query).then((res) => { + this.setData({ + showMd5: md5 + }) if (res) { if (res && res.data == '') { this.setData({ @@ -877,5 +885,25 @@ } } return flag + }, + videoEnd() { + const data = this.data.threeLeveData.find(item => item.id == this.data.activeId) + if (data.freeFile && (this.data.showDataVod.includes(data.freeFile) || this.data.showMd5 == data.freeFile) && data.protectedFile) + this.setData({ + promptVisable: true + }) + }, + // 鎻愮ず寮圭獥鍏抽棴 + closePromapDialog() { + this.setData({ + promptVisable: false + }) + if (this.data.source == 'qrcode') { + wx.navigateTo({ + url: `/packageBookService/pages/bookServices/detail/index?id=${this.data.bookDetail.id}&name=${this.data.bookDetail.name}&tabValue=jsek_cloudLearning`, + }); + } else { + wx.navigateBack() + } } }) \ No newline at end of file diff --git a/packageDomain/pages/resourceDetails/myVideo/index.wxml b/packageDomain/pages/resourceDetails/myVideo/index.wxml index 70cea7c..67706a1 100644 --- a/packageDomain/pages/resourceDetails/myVideo/index.wxml +++ b/packageDomain/pages/resourceDetails/myVideo/index.wxml @@ -16,6 +16,7 @@ src="{{showDataVod}}" style="width: 100%" bindvideoloaded="loadedmetadata" + bindEnded="videoEnd" bindTimeupdate="timeUpdate" wx:if="{{!videoLoading}}" > @@ -50,28 +51,33 @@ loading="true" ></t-skeleton> </view> - <scroll-view style="height:700rpx" scroll-y scroll-into-view="{{toView}}"> - <view class="wrapper" wx:if="{{!loading}}"> - <view class="outsideDetailsName"> - <view class="titleBox">{{parentName}}</view> - <view - wx:for="{{threeLeveData}}" - wx:key="index" - wx:for-item="item" - wx:for-index="index" - bind:tap="onVideo" - data-item="{{item}}" - data-index="{{index}}" - class="detailsName" - id="{{selectedId == index ? 'activeName'+index : ''}}" - > - <view style="color: {{selectedId == index ? '#ff6c00' : '#000'}}" - >{{item.name}}</view + <scroll-view + style="height: 700rpx" + scroll-y + scroll-into-view="{{toView}}" + > + <view class="wrapper" wx:if="{{!loading}}"> + <view class="outsideDetailsName"> + <view class="titleBox">{{parentName}}</view> + <view + wx:for="{{threeLeveData}}" + wx:key="index" + wx:for-item="item" + wx:for-index="index" + bind:tap="onVideo" + data-item="{{item}}" + data-index="{{index}}" + class="detailsName" + id="{{selectedId == index ? 'activeName'+index : ''}}" > + <view + style="color: {{selectedId == index ? '#ff6c00' : '#000'}}" + >{{item.name}}</view + > + </view> </view> </view> - </view> - </scroll-view> + </scroll-view> </t-tab-panel> <!-- 绗旇灞曠ず --> <t-tab-panel label="绗旇" value="1" style="{{tabPanelstyle}}"> @@ -194,3 +200,12 @@ /> </t-popup> </view> + +<t-dialog + class="prompDialog" + visible="{{promptVisable}}" + title="鎻愮ず" + content="璇曠湅缁撴潫锛岃璐拱姝e紡璧勬簮" + confirm-btn="{{ confirmBtn }}" + bind:confirm="closePromapDialog" +/> diff --git a/packageDomain/pages/resourceDetails/myVideo/index.wxss b/packageDomain/pages/resourceDetails/myVideo/index.wxss index 3e52b3e..4388e7f 100644 --- a/packageDomain/pages/resourceDetails/myVideo/index.wxss +++ b/packageDomain/pages/resourceDetails/myVideo/index.wxss @@ -356,12 +356,18 @@ } -.wrapper { - /* overflow-y: scroll; - overflow-x: hidden; */ - /* height: 50vh; */ -} .demo-section__content { margin: 40rpx; +} + +.prompDialog { + --td-button-primary-bg-color: #ff6c00; + --td-button-primary-border-color: #ff6c00; + --td-button-primary-active-bg-color: #ff984d; + --td-button-primary-active-border-color: #ff984d; +} + +.prompDialog .t-dialog__header { + margin-top: 30rpx; } \ No newline at end of file -- Gitblit v1.9.1