packageBookService/pages/bookServices/detail/components/testResource/testResource.js | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
packageBookService/pages/bookServices/detail/components/testResource/testResource.wxml | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
packageBookService/pages/bookServices/detail/components/testResource/testResource.wxss | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
packageBookService/pages/bookServices/detail/index.js | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
packageBookService/pages/bookServices/detail/index.wxml | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
packagePersonal/pages/myOrder/index.js | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
packagePersonal/pages/myOrder/index.wxml | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
pages/cart/paymentPage/index.js | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
packageBookService/pages/bookServices/detail/components/testResource/testResource.js
@@ -5,6 +5,12 @@ * 组件的属性列表 */ properties: { isBuyBank: { type: Boolean }, bankSaleData: { type: Object }, list: { type: Array, value: [], @@ -70,12 +76,15 @@ }, }); } if (!this.data.isBuyBank) return wx.showToast({ icon: 'error', title: '请先购买题库', }) wx.showLoading({ title: "加载中", }); // 获取章节下是否有题目 let idPathList = []; if (this.properties.storeInfo || this.properties.jslx) { idPathList.push({ id: this.properties.bookInfo.id, @@ -197,5 +206,14 @@ loading: type, }); }, // 题库购买 buyBank() { var myEventDetail = {} // detail对象,提供给事件监听函数 var myEventOption = { bubbles: true, composed: true } // 触发事件的选项 this.triggerEvent('buyBank', myEventDetail, myEventOption) } }, }); packageBookService/pages/bookServices/detail/components/testResource/testResource.wxml
@@ -2,15 +2,27 @@ <view class="test-resource"> <view class="top-btn"> <view class="test-radio"> <view class="test-btn card {{radioItem == 'test' ? 'card--active' : ''}}" bind:tap="testBtn"> <view class="test-btn card {{radioItem == 'test' ? 'card--active' : ''}}" bind:tap="testBtn" > <view class="image-box"> <image class="test-icon" src="{{ radioItem == 'test' ? '/static/images/bookService/detail/practice-icon.png' : '/static/images/bookService/detail/notest.png'}}" mode="aspectFit"></image> <image class="test-icon" src="{{ radioItem == 'test' ? '/static/images/bookService/detail/practice-icon.png' : '/static/images/bookService/detail/notest.png'}}" mode="aspectFit" ></image> </view> <view class="btn-content-text">练习</view> </view> <view class="test-btn card {{radioItem == 'mock' ? 'card--active' : ''}}" bind:tap="mockBtn"> <view class="test-btn card {{radioItem == 'mock' ? 'card--active' : ''}}" bind:tap="mockBtn" > <view class="image-box"> <image src="{{ radioItem == 'mock' ? '/static/images/bookService/detail/checkpaper.png' : '/static/images/bookService/detail/zujuan.png'}}"></image> <image src="{{ radioItem == 'mock' ? '/static/images/bookService/detail/checkpaper.png' : '/static/images/bookService/detail/zujuan.png'}}" ></image> </view> <view class="btn-content-text">组卷</view> </view> @@ -48,15 +60,31 @@ </view> </t-radio-group> --> <view class="btn-box"> <t-button class="error-btn" theme="default" size="medium" style="padding: 0 12rpx" bind:tap="goMycollect" data-answerType="errorQuestion"> <t-button class="error-btn" theme="default" size="medium" style="padding: 0 12rpx" bind:tap="goMycollect" data-answerType="errorQuestion" > <view slot="content" class="btn-content"> <image src="/static/images/bookService/detail/cuoti.png"></image> <text class="primary-color">我的错题</text> </view> </t-button> <t-button class="collect-btn" theme="default" size="medium" style="padding: 0 12rpx" bind:tap="goMycollect" data-answerType="collectQuestion"> <t-button class="collect-btn" theme="default" size="medium" style="padding: 0 12rpx" bind:tap="goMycollect" data-answerType="collectQuestion" > <view slot="content" class="btn-content"> <image src="/static/images/bookService/detail/wodeshoucang.png"></image> <image src="/static/images/bookService/detail/wodeshoucang.png" ></image> <text class="primary-color"> 我的收藏</text> </view> </t-button> @@ -74,16 +102,41 @@ </view> --> <!-- 练习列表树结构 --> <view wx:if="{{radioItem == 'test'}}"> <tree id="test-tree" openIds="{{openIds}}" bookInfo="{{bookInfo}}" tab="{{tab}}" treeList="{{list}}" bind:goTest="goTest"></tree> <view class="buy-question-btn" wx:if="{{!isBuyBank}}"> <t-button class="error-btn" theme="default" size="medium" style="padding: 0 12rpx" bind:tap="buyBank" data-answerType="errorQuestion" > <view slot="content" class="btn-content"> <image src="/static/images/bookService/detail/yijiangoumai.png" /> <text class="primary-color" >{{bankSaleData.Price > 0 ? "全部购买" : "免费领取"}}</text > </view> <view wx:if="{{noResources}}" class="noData" wx:if="{{radioItem == 'test' && !list.length}}"> </t-button> </view> <tree id="test-tree" openIds="{{openIds}}" bookInfo="{{bookInfo}}" tab="{{tab}}" treeList="{{list}}" bind:goTest="goTest" ></tree> </view> <view wx:if="{{noResources}}" class="noData" wx:if="{{radioItem == 'test' && !list.length}}" > <!-- <t-empty icon="folder-open" description="暂无数据" /> --> <empty /> </view> </view> <!-- 组卷列表 --> <view class="mock-data" wx:if="{{radioItem == 'mock'}}"> @@ -93,25 +146,45 @@ <t-button class="buy-mock-btn" bind:tap="buyMock">购买组卷</t-button> </view> <view class="mock-list" wx:if="{{mockData.mockList.length}}"> <view class="mock-list-box" wx:for="{{mockData.mockList}}" wx:key="id" data-item="{{item}}" bind:tap="goMackPaper"> <view class="mock-list-box" wx:for="{{mockData.mockList}}" wx:key="id" data-item="{{item}}" bind:tap="goMackPaper" > <view class="mock-title">{{item.name}}</view> <view class="mock-message"> <view class="message-box"> <view class="mack-state"> <text wx:if="{{item.state == '3'}}" class="complete state-pad">已完成</text> <text wx:elif="{{item.state == '2' || item.state == '1'}}" class="Incomplete state-pad">未完成</text> <text wx:if="{{item.state == '3'}}" class="complete state-pad" >已完成</text > <text wx:elif="{{item.state == '2' || item.state == '1'}}" class="Incomplete state-pad" >未完成</text > <text wx:else class="Incomplete state-pad">未开始</text> </view> <view class="mock-time">{{item.createDate}}</view> </view> <view class="mock-score" wx:if="{{item.state == '3'}}">{{item.report.userScore}}分</view> <view class="mock-score" wx:if="{{item.state == '3'}}" >{{item.report.userScore}}分</view > </view> </view> </view> <view wx:else class="not-mock"> <image src="/static/images/bookService/examination/zhuangtai-icon.png"></image> <view class="not-mock-message note-mock-text">组卷是收费功能,请购买后使用!</view> <view class="note-mock-price note-mock-text">价格:<text class="mock-price">¥{{mockData.price}}</text> 元/次</view> <image src="/static/images/bookService/examination/zhuangtai-icon.png" ></image> <view class="not-mock-message note-mock-text" >组卷是收费功能,请购买后使用!</view > <view class="note-mock-price note-mock-text" >价格:<text class="mock-price">¥{{mockData.price}}</text> 元/次</view > <t-button class="buy-mock-btn" bind:tap="buyMock">购买组卷</t-button> </view> </view> packageBookService/pages/bookServices/detail/components/testResource/testResource.wxss
@@ -66,7 +66,8 @@ margin-right: 4rpx; } .btn-box image { .btn-box image, .buy-question-btn image { width: 36rpx; height: 36rpx; } @@ -291,3 +292,13 @@ .t-radio__description { width: 102%; } .buy-question-btn { padding-right: 5rpx; display: flex; justify-content: flex-end; } .buy-question-btn image { margin-right: 4rpx; } packageBookService/pages/bookServices/detail/index.js
@@ -74,6 +74,8 @@ residue: 0, // 组卷剩余次数 mockList: [], // 用户组卷提交信息 }, isBuyBank: false, bankSaleData: null, relatedBookLoading: false, noRelatedBookData: false, relatedBookPath: "", // 相关图书path @@ -275,7 +277,7 @@ /** * 生命周期函数--监听页面显示 */ onShow() { onShow(options) { if (wx.getStorageSync("paperBookList")) { this.setData({ paperBookList: JSON.parse(wx.getStorageSync("paperBookList")), @@ -289,6 +291,9 @@ this.setData({ num: Number(this.data.paperBookList.length) + Number(this.data.electronicBookList.length), }); if (this.data.bookDetail) { this.getBookInfo(this.data.bookDetail.id) } }, /** @@ -526,9 +531,24 @@ } } app.MG.store.getProductDetail(query).then((res) => { console.log(111, res.datas.cmsDatas[0].datas); let isBuyBank = true let bankSaleData = null // 判断题库是否整体购买 const bank = res.datas.cmsDatas[0].datas.find((item) => item.refCode == 'questionBank') if (bank) { if (bank.saleMethod.length) { bankSaleData = bank.saleMethod.find((item) => item.SaleType == 'Normal') if (bankSaleData) { isBuyBank = this.data.buyIdList.includes(bankSaleData.Id) } } } this.setData({ resourceCodeList: res.datas.cmsDatas[0].datas, learnTaskData: res.datas.cmsDatas[0].datas.filter((item) => item.refCode == 'jsek_learningTasks')[0] learnTaskData: res.datas.cmsDatas[0].datas.filter((item) => item.refCode == 'jsek_learningTasks')[0], isBuyBank, bankSaleData }) if (res.datas.cmsDatas[0].datas.length) this.setData({ learnMenu: res.datas.cmsDatas[0].datas.find(item => item.refCode == 'jsek_cloudLearning') @@ -876,7 +896,7 @@ } // newArr.push(item) // 在插入过程中对数据进行排序 newArr = this.insertAndSortObjectsByProductLinkPath(newArr, item) newArr = this.insertAndSortObjectsById(newArr, item) // 插进数组后 从原数据中删除 rootList = rootList.filter(nitem => nitem.id != item.id) } @@ -908,8 +928,8 @@ return tree }, // 排序数组 按照productLinkPath insertAndSortObjectsByProductLinkPath(array, newObj) { // 排序数组 按照id insertAndSortObjectsById(array, newObj) { // 查找新对象应该插入的位置 let insertIndex = array.findIndex(obj => newObj.id < obj.id); // 如果没有找到合适的位置,则放在数组末尾 @@ -1907,6 +1927,42 @@ handleTrue() { // findAndUpdateItemsByIds(this.date.) }, // 题库购买 async buyBank() { console.log(11, this.data.bankSaleData); let query = { remarks: '云测试', requests: [{ saleMethodId: this.data.bankSaleData.Id, count: 1 }] } const initOrderRes = await app.MG.store.initOrder(query) if (this.data.bankSaleData.Price) { // 购买 const url = "/pages/cart/paymentPage/index?orderNumber=" + initOrderRes.orderNumber + '&onNorderSaleMethod=' + initOrderRes.saleMethodLinks[0].orderSaleMethod.id; wx.navigateTo({ url, }); } else { // 免费领取 app.MG.store .confirmOrder({ orderNum: initOrderRes.orderNumber, }) .then((res) => { if (res) { wx.showToast({ title: "领取成功", icon: "none", duration: 1000, }); this.getBookInfo(this.data.bookDetail.id); } }); } }, // 组卷格式化日期显示 DateFormat(date, fmt) { if (date && fmt) { packageBookService/pages/bookServices/detail/index.wxml
@@ -290,6 +290,8 @@ <test-resource id="test-resource" list="{{test}}" bankSaleData="{{bankSaleData}}" isBuyBank="{{isBuyBank}}" bookInfo="{{bookDetail}}" openIds="{{openLearnids}}" mockData="{{mockData}}" @@ -297,6 +299,7 @@ storeInfo="{{options.storeInfo}}" jslx="{{jslx}}" bind:buyMock="buyMock" bind:buyBank="buyBank" ></test-resource> </view> </t-tab-panel> packagePersonal/pages/myOrder/index.js
@@ -356,8 +356,13 @@ } else if (book.orderSaleMethod.type == 'createProductSaleMethod' && book.orderSaleMethod.cmsItemList == 0) { title = '图书服务-组卷' } else { debugger if (book.orderSaleMethod.cmsItemList.length && book.orderSaleMethod.cmsItemList[0].type == "questionBankFolder") { title = '图书服务-云测试' } else { title = '图书服务-云学习' } } } else if (type == 'jsek_digitalCourses') { title = '数字教材' } else { packagePersonal/pages/myOrder/index.wxml
@@ -1,61 +1,161 @@ <view class="container"> <view class="page-header" wx:if="{{!skeletonLoding}}"> <view class="search"> <t-search model:value="{{searchText}}" shape="round" clearable="{{false}}" placeholder="请输入订单编号" class="navBar-search" style="width: 90%" bind:submit="onSearchOrder" /> <t-search model:value="{{searchText}}" shape="round" clearable="{{false}}" placeholder="请输入订单编号" class="navBar-search" style="width: 90%" bind:submit="onSearchOrder" /> </view> <t-tabs t-class="t-tabs" defaultValue="{{active}}" split="{{false}}" bind:change="tabBookClick"> <t-tab-panel wx:for="{{tabList}}" wx:for-index="index" wx:key="index" label="{{item.label}}" value="{{index}}" /> <t-tabs t-class="t-tabs" defaultValue="{{active}}" split="{{false}}" bind:change="tabBookClick" > <t-tab-panel wx:for="{{tabList}}" wx:for-index="index" wx:key="index" label="{{item.label}}" value="{{index}}" /> </t-tabs> </view> <view class="pageInfo" wx:if="{{!skeletonLoding}}"> <scroll-view class="scroll content" bind:scroll="onPageScroll" model:scroll-top="{{setScrollValue}}" scroll-y refresher-enabled="{{true}}" lower-threshold="{{200}}" refresher-threshold="{{80}}" refresher-default-style="none" refresher-triggered="{{triggered}}" bindrefresherpulling="{{refresh.onPulling}}" bindrefresherrefresh="onPullDownRefresh" bindscrolltolower="onReachBottom"> <scroll-view class="scroll content" bind:scroll="onPageScroll" model:scroll-top="{{setScrollValue}}" scroll-y refresher-enabled="{{true}}" lower-threshold="{{200}}" refresher-threshold="{{80}}" refresher-default-style="none" refresher-triggered="{{triggered}}" bindrefresherpulling="{{refresh.onPulling}}" bindrefresherrefresh="onPullDownRefresh" bindscrolltolower="onReachBottom" > <view slot="refresher" class="refresh-container"> <view class="loading"> <t-loading theme="circular" size="40rpx" text="正在刷新..." class="wrapper" /> <t-loading theme="circular" size="40rpx" text="正在刷新..." class="wrapper" /> </view> </view> <view class="list" wx:if="{{list.length > 0}}"> <view class="content-item" wx:for="{{list}}" wx:for-item="items" wx:for-index="index" wx:key="index"> <view class="content-item" wx:for="{{list}}" wx:for-item="items" wx:for-index="index" wx:key="index" > <view class="order-cent"> <text class="order-cent-one">订单号: {{items.orderNumber}}</text> <text class="right {{items.colorName}}">{{items.CustomState}}</text> </view> <view class="order-centent"> <scroll-view class="srcolbox" scroll-x scroll-with-animation='true'> <view class="bookBox {{items.saleMethodLinks.length == 1 ? 'flex' : ''}}" wx:for="{{items.saleMethodLinks}}" wx:for-item="itemes" wx:for-index="idx" wx:key="idx" bindtap="goBookDetails" data-book="{{itemes}}" data-remarks="{{items.remarks}}"> <view class="leftCon {{items.saleMethodLinks.length == 1 ? 'fl' : ''}}"> <scroll-view class="srcolbox" scroll-x scroll-with-animation="true"> <view class="bookBox {{items.saleMethodLinks.length == 1 ? 'flex' : ''}}" wx:for="{{items.saleMethodLinks}}" wx:for-item="itemes" wx:for-index="idx" wx:key="idx" bindtap="goBookDetails" data-book="{{itemes}}" data-remarks="{{items.remarks}}" > <view class="leftCon {{items.saleMethodLinks.length == 1 ? 'fl' : ''}}" > <!-- 获取图片 --> <image class="purchasedIcon" wx:if="{{itemes.icon}}" src="{{itemes.icon}}" mode="aspectFit" /> <image class="purchasedIcon" wx:else src="/static/images/default-book-img.png" mode="aspectFit" /> <image class="purchasedIcon" wx:if="{{itemes.icon}}" src="{{itemes.icon}}" mode="aspectFit" /> <image class="purchasedIcon" wx:else src="/static/images/default-book-img.png" mode="aspectFit" /> </view> <!-- 获取名称 --> <view class="rightCon"> <view class="productTitle">{{itemes.name}}</view> <view class="cmsName" wx:if="{{itemes.orderSaleMethod.type != 'defaultSaleMethod'}}">{{itemes.orderSaleMethod.cmsItemList[0].name}}</view> <view class="{{items.saleMethodLinks.length == 1 ? 'top' : ''}}"> <text class="typeBox">{{ itemes.orderSaleMethod.product.cmsTypeRefCode == 'jsek_mediaBook' ? itemes.orderSaleMethod.type == 'defaultSaleMethod' ? '图书服务-电子书' : itemes.orderSaleMethod.type == 'createProductSaleMethod' && itemes.orderSaleMethod.cmsItemList == 0 ? '图书服务-组卷' : '图书服务-云学习' : itemes.orderSaleMethod.product.cmsTypeRefCode == 'jsek_digitalCourses' ? '数字课程' : '数字教材' }}</text> <view class="cmsName" wx:if="{{itemes.orderSaleMethod.type != 'defaultSaleMethod'}}" >{{itemes.orderSaleMethod.cmsItemList[0].name}}</view > <view class="{{items.saleMethodLinks.length == 1 ? 'top' : ''}}" > <text class="typeBox" >{{ itemes.orderSaleMethod.product.cmsTypeRefCode == 'jsek_mediaBook' ? itemes.orderSaleMethod.type == 'defaultSaleMethod' ? '图书服务-电子书' : itemes.orderSaleMethod.type == 'createProductSaleMethod' && itemes.orderSaleMethod.cmsItemList == 0 ? '图书服务-组卷' : itemes.orderSaleMethod.cmsItemList.length && itemes.orderSaleMethod.cmsItemList[0].type == "questionBankFolder" ? '图书服务-云测试' : '图书服务-云学习' : itemes.orderSaleMethod.product.cmsTypeRefCode == 'jsek_digitalCourses' ? '数字课程' : '数字教材' }}</text > </view> </view> </view> </scroll-view> <view class="count"> <text wx:if="{{items.saleMethodLinks.length > 1 }}">共{{items.saleMethodLinks.length}}件</text> <text wx:if="{{items.saleMethodLinks.length == 1 }}">¥{{items.payPrice}}</text> <text wx:if="{{items.saleMethodLinks.length > 1 }}" >共{{items.saleMethodLinks.length}}件</text > <text wx:if="{{items.saleMethodLinks.length == 1 }}" >¥{{items.payPrice}}</text > </view> </view> <view class="order-top"> <text class="finishedDate" wx:if="{{items.state == 'Success'}}">{{items.finishedDate}}</text> <text class="order-top-price" wx:if="{{items.state == 'WaitPay'}}">应付:<text class="">¥{{items.payPrice}}</text></text> <text class="finishedDate" wx:if="{{items.state == 'Success'}}" >{{items.finishedDate}}</text > <text class="order-top-price" wx:if="{{items.state == 'WaitPay'}}" >应付:<text class="">¥{{items.payPrice}}</text></text > <view class="button-example" wx:if="{{items.state == 'WaitPay'}}"> <button class="button" bindtap="onCancel" data-order-num="{{items.orderNumber}}">取消订单</button> <button class="unfollow" bindtap="onPayment" data-order-num="{{items.orderNumber}}">立即支付</button> <button class="button" bindtap="onCancel" data-order-num="{{items.orderNumber}}" > 取消订单 </button> <button class="unfollow" bindtap="onPayment" data-order-num="{{items.orderNumber}}" > 立即支付 </button> </view> <view wx:if="{{items.state == 'Cancel'}}" class="button-bottem">总计:<text class="price">¥{{items.payPrice}}</text> </view> <view wx:if="{{items.state == 'Cancel'}}" class="button-bottem" >总计:<text class="price">¥{{items.payPrice}}</text> </view> </view> </view> </view> @@ -64,14 +164,28 @@ <empty /> </view> <view class="bottom-loading" wx:if="{{bottomLoading}}"> <t-loading theme="circular" size="40rpx" text="加载中..." class="wrapper" /> <t-loading theme="circular" size="40rpx" text="加载中..." class="wrapper" /> </view> <view class="bottom-loading" style="color: #ccc;font-size: 28rpx;" wx:if="{{isMoreData}}"> <view class="bottom-loading" style="color: #ccc; font-size: 28rpx" wx:if="{{isMoreData}}" > <text>没有更多了</text> </view> </scroll-view> </view> </view> <t-back-top theme="round" wx:if="{{isBackTop}}" text="顶部" bind:to-top="onToTop"></t-back-top> <t-back-top theme="round" wx:if="{{isBackTop}}" text="顶部" bind:to-top="onToTop" ></t-back-top> <import src="index.skeleton.wxml" /> <template is="skeleton" wx:if="{{skeletonLoding}}" /> pages/cart/paymentPage/index.js
@@ -177,6 +177,10 @@ item.typeTxt = '云学习' item.productType = "图书服务-云学习" } if (item.orderSaleMethod.cmsItemList.length && item.orderSaleMethod.cmsItemList[0].type == "questionBankFolder") { item.typeTxt = '题库' item.productType = "图书服务-云测试" } } }) this.setData({