packageBookService/pages/bookServices/detail/buyResource/index.js | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
packageBookService/pages/bookServices/detail/components/tree/index.wxml | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
packageBookService/pages/bookServices/detail/index.js | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
packageBookService/pages/bookServices/detail/index.wxml | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
packageBookService/pages/bookServices/list/index.js | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
packageBookService/pages/bookServices/list/index.wxml | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
packageDomain/pages/sampleBookList/applicationForm/index.js | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
packageDomain/pages/sampleBookList/applicationForm/index.wxml | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
packageDomain/pages/sampleBookList/index.js | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
packageDomain/pages/sampleBookList/index.wxml | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
packageDomain/pages/sampleBookList/index.wxss | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
packageBookService/pages/bookServices/detail/buyResource/index.js
@@ -86,6 +86,44 @@ wx.navigateBack(); }, // 获取所有子项数量 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, pathLength, newArr, path) { for (const item of rootList) { @@ -103,8 +141,12 @@ } } // newArr.push(item) // 在插入过程中对数据进行排序 // 在插入过程中对数据进行排序 并且去除已经领取和购买的 if (item.sysType == 'CmsFolder') { newArr = this.insertAndSortObjectsByProductLinkPath(newArr, item) } else if (item.sysType == 'CmsItem' && this.resourceIsBuy(item)) { newArr = this.insertAndSortObjectsByProductLinkPath(newArr, item) } } } //给数组里面再添加一个children的空数组 @@ -237,16 +279,18 @@ } }); // 显示 需要购买的和需要免费领取的 const arr = res.datas.cmsDatas[0].datas.filter(item => this.resourceIsBuy(item)) if (!arr.length) { return this.setData({ loading: false, haider: true, noData: true }) } this.getTreeList(arr, 17, list, '\\') // const arr = res.datas.cmsDatas[0].datas.filter(item => this.resourceIsBuy(item)) // if (!arr.length) { // return this.setData({ // loading: false, // haider: true, // noData: true // }) // } // debugger this.getTreeList(res.datas.cmsDatas[0].datas, 17, list, '\\') list = this.ensureTreeConsistency(list) list = this.changeResourceChildren(list) console.log('修改后云', list); let result = []; if (type.refCode == "jsek_teachingResources") { packageBookService/pages/bookServices/detail/components/tree/index.wxml
@@ -154,7 +154,7 @@ <view class="title-box"> <view class="title-name">{{item.name}} </view> <view wx:if="{{item.sysType =='CmsFolder'}}" class="title-num"> ({{item.children ? item.children.length : 0}}) ({{item.childrenItem}}) </view> </view> </view> packageBookService/pages/bookServices/detail/index.js
@@ -726,6 +726,44 @@ }); }, // 获取所有子项数量 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, pathLength, newArr, path) { for (const item of rootList) { @@ -861,6 +899,7 @@ }); this.getTreeList(res.datas.cmsDatas[0].datas, 17, list, '\\') list = this.ensureTreeConsistency(list) list = this.changeResourceChildren(list) console.log('修改后云', list); let result = []; if (type.refCode == "jsek_teachingResources") { @@ -2083,6 +2122,23 @@ //申请电子样书 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) {} }, }); } if ( this.data.bookDetail.isApplyBook == 2 || this.data.bookDetail.isApplyBook == 4 @@ -2162,6 +2218,22 @@ }, //申请纸质样书 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 @@ -2254,13 +2326,13 @@ this.setData({ electronicBookList: eList, }); wx.setStorageSync("electronicBookList", eList); wx.setStorageSync("electronicBookList", JSON.stringify(eList)); } else { pList.push(itemAttr); this.setData({ paperBookList: pList, }); wx.setStorageSync("paperBookList", pList); wx.setStorageSync("paperBookList", JSON.stringify(pList)); } this.setData({ num: this.data.num + 1, packageBookService/pages/bookServices/detail/index.wxml
@@ -4,7 +4,12 @@ <!-- pageLoading --> <!--导航区域 --> <suggest-dialog class="suggest-dialog" showIndex="{{showIndex}}" bookIcon="{{bookDetail.icon}}" bookName="{{bookDetail.name}}"></suggest-dialog> <suggest-dialog class="suggest-dialog" showIndex="{{showIndex}}" bookIcon="{{bookDetail.icon}}" bookName="{{bookDetail.name}}" ></suggest-dialog> <!-- <popup showIndex="{{showIndex}}"></popup> --> <view class="page-bookService" wx:if="{{!pageLoading}}"> <!-- <view style="width: 100%; height: {{barHeight}}px; "></view> @@ -23,25 +28,45 @@ </view> --> <t-toast id="t-toast" /> <movable-area class="movable-area"> <scroll-view scroll-y="{{true}}" class="book" bindscrolltolower="onReachBottom"> <scroll-view scroll-y="{{true}}" class="book" bindscrolltolower="onReachBottom" > <!-- 图书详情 --> <view class="book-box"> <view class="book-detail" id="book-detail"> <view class="detail-left"> <view class="book-img"> <image loading="" src="{{bookDetail.icon ? bookDetail.icon : '/static/images/default-book-img.png'}}" mode="aspectFit" aria-label="{{bookDetail.name}}" /> <image loading="" src="{{bookDetail.icon ? bookDetail.icon : '/static/images/default-book-img.png'}}" mode="aspectFit" aria-label="{{bookDetail.name}}" /> </view> <view class="book-use"> <view class="collect" bind:tap="setCollect"> <view> <image loading="" src="/static/images/bookService/detail/collect.png" wx:if="{{!bookDetail.isFavourite}}" /> <image loading="" src="/static/images/bookService/detail/collecting.png" wx:if="{{bookDetail.isFavourite}}" /> <image loading="" src="/static/images/bookService/detail/collect.png" wx:if="{{!bookDetail.isFavourite}}" /> <image loading="" src="/static/images/bookService/detail/collecting.png" wx:if="{{bookDetail.isFavourite}}" /> </view> <view class="use-title">收藏</view> </view> <view class="suggest" bind:tap="suggestBtn"> <view> <image loading="" src="/static/images/bookService/detail/suggest.png" /> <image loading="" src="/static/images/bookService/detail/suggest.png" /> </view> <view class="use-title">我要建议</view> </view> @@ -66,12 +91,19 @@ <view class="li-title">出版时间:</view> <view class="li-content">{{bookDetail.publicationDate}}</view> </view> <view class="message-li" wx:if="{{bookClass.length}}" style="height: 80rpx"> <view class="message-li" wx:if="{{bookClass.length}}" style="height: 80rpx" > <view class="li-title">图书分类:</view> <view class="class-name showTow">{{bookClass}}</view> </view> </view> <image src="/static/images/bookService/detail/square.png" class="right-background" /> <image src="/static/images/bookService/detail/square.png" class="right-background" /> </view> </view> <!-- 销售信息 --> @@ -80,12 +112,19 @@ <!-- 电子书售价 --> <view class="electron-price" wx:if="{{bookDetail.price}}"> <view> <image src="/static/images/bookService/detail/electon-price.png" /> <image src="/static/images/bookService/detail/electon-price.png" /> </view> <view class="price"> <view class="price-text">{{bookDetail.price == '0.00' ? '免费' : '¥'+ bookDetail.price}}</view> <view class="price-old" wx:if="{{bookDetail.oldPrice != '0.00'}}">¥{{bookDetail.oldPrice}} <view class="price-text" >{{bookDetail.price == '0.00' ? '免费' : '¥'+ bookDetail.price}}</view > <view class="price-old" wx:if="{{bookDetail.oldPrice != '0.00'}}" >¥{{bookDetail.oldPrice}} </view> </view> <view> </view> @@ -93,28 +132,71 @@ <!-- 纸质书售价 --> <view class="paper-price" wx:if="{{bookDetail.paperPrice}}"> <view> <image src="/static/images/bookService/detail/paper-price.png" /> <image src="/static/images/bookService/detail/paper-price.png" /> </view> <view class="price">{{bookDetail.paperPrice == '0.00' ? '免费' : '¥'+bookDetail.paperPrice}}</view> <view class="price" >{{bookDetail.paperPrice == '0.00' ? '免费' : '¥'+bookDetail.paperPrice}}</view > </view> </view> <!-- 网店 --> <view class="book-web"> <image src="/static/images/bookService/detail/jd.png" wx:if="{{bookDetail.JDLink}}" bind:tap="goShop" data-link="{{bookDetail.JDLink}}" data-type="jd" /> <image class="tmall-image" src="/static/images/bookService/detail/tmall.png" bind:tap="goShop" data-link="{{bookDetail.tmallLink}}" wx:if="{{bookDetail.tmallLink}}" /> <image src="/static/images/bookService/detail/dangdang.png" bind:tap="goShop" data-link="{{bookDetail.dangdangLink}}" wx:if="{{bookDetail.dangdangLink}}" /> <image src="/static/images/bookService/detail/weidian.png" bind:tap="goShop" data-link="{{bookDetail.weidianLink}}" wx:if="{{bookDetail.weidianLink}}" /> <image src="/static/images/bookService/detail/jd.png" wx:if="{{bookDetail.JDLink}}" bind:tap="goShop" data-link="{{bookDetail.JDLink}}" data-type="jd" /> <image class="tmall-image" src="/static/images/bookService/detail/tmall.png" bind:tap="goShop" data-link="{{bookDetail.tmallLink}}" wx:if="{{bookDetail.tmallLink}}" /> <image src="/static/images/bookService/detail/dangdang.png" bind:tap="goShop" data-link="{{bookDetail.dangdangLink}}" wx:if="{{bookDetail.dangdangLink}}" /> <image src="/static/images/bookService/detail/weidian.png" bind:tap="goShop" data-link="{{bookDetail.weidianLink}}" wx:if="{{bookDetail.weidianLink}}" /> </view> </view> </view> <view class="book-resource"> <t-tabs value="{{tabValue}}" bind:change="onTabsChange" t-class="custom-tabs" t-class-content="custom-panel" class="tab-class"> <t-tab-panel label="图书简介" icon="{{ tabValue == 'brief' ? briefIconClick : briefIcon}}" value="brief" style="{{tabPanelstyle}}"> <book-brief content="{{bookDetail.content}}" authorIntroduction="{{bookDetail.authorIntroduction}}" wx:if="{{bookDetail.content || bookDetail.authorIntroduction}}"></book-brief> <view wx:if="{{!bookDetail.content && !bookDetail.authorIntroduction}}" class="noData"> <t-tabs value="{{tabValue}}" bind:change="onTabsChange" t-class="custom-tabs" t-class-content="custom-panel" class="tab-class" > <t-tab-panel label="图书简介" icon="{{ tabValue == 'brief' ? briefIconClick : briefIcon}}" value="brief" style="{{tabPanelstyle}}" > <book-brief content="{{bookDetail.content}}" authorIntroduction="{{bookDetail.authorIntroduction}}" wx:if="{{bookDetail.content || bookDetail.authorIntroduction}}" ></book-brief> <view wx:if="{{!bookDetail.content && !bookDetail.authorIntroduction}}" class="noData" > <t-empty icon="folder-open" description="暂无数据" /> </view> </t-tab-panel> @@ -125,10 +207,36 @@ style="{{tabPanelstyle}}" > </t-tab-panel> --> <t-tab-panel label="教学资源" icon="{{tabValue == 'jsek_teachingResources' ? teachResourcesClickIcon : teachResourcesIcon}}" value="jsek_teachingResources" class="{{loading ? 'loading': ''}}"> <view wx:if="{{!loading && teach.length && !noResources && applyState}}"> <teach-resource applyState="{{applyState}}" rejectCause="{{rejectCause}}" deadline="{{deadline}}" bind:applyResource="applyResource" applyResourceLoading="{{applyResourceLoading}}"></teach-resource> <tree id="teach-tree" openIds="{{openTeachids}}" bookInfo="{{bookDetail}}" treeList="{{teach}}" tab="{{tabValue}}" applyState="{{applyState}}" bind:downloadTeach="downloadTeach" bind:handleTree="handleTree" openTeachids="{{openTeachids}}" wx:if="{{teach.length}}" isShoppingCart="isShoppingCart" bind:updateCloudLearning="updateCloudLearning"></tree> <t-tab-panel label="教学资源" icon="{{tabValue == 'jsek_teachingResources' ? teachResourcesClickIcon : teachResourcesIcon}}" value="jsek_teachingResources" class="{{loading ? 'loading': ''}}" > <view wx:if="{{!loading && teach.length && !noResources && applyState}}" > <teach-resource applyState="{{applyState}}" rejectCause="{{rejectCause}}" deadline="{{deadline}}" bind:applyResource="applyResource" applyResourceLoading="{{applyResourceLoading}}" ></teach-resource> <tree id="teach-tree" openIds="{{openTeachids}}" bookInfo="{{bookDetail}}" treeList="{{teach}}" tab="{{tabValue}}" applyState="{{applyState}}" bind:downloadTeach="downloadTeach" bind:handleTree="handleTree" openTeachids="{{openTeachids}}" wx:if="{{teach.length}}" isShoppingCart="isShoppingCart" bind:updateCloudLearning="updateCloudLearning" ></tree> </view> <!-- <t-loading theme="circular" @@ -137,75 +245,167 @@ loading="{{loading }}" /> --> <view wx:if="{{loading}}" style="width: 100%; height: min-content"> <t-skeleton row-col="{{rowCol}}" theme="paragraph" animation="gradient" loading="{{loading}}"></t-skeleton> <t-skeleton row-col="{{rowCol}}" theme="paragraph" animation="gradient" loading="{{loading}}" ></t-skeleton> </view> <view wx:if="{{noResources}}" class="noData"> <t-empty icon="folder-open" description="暂无数据" /> </view> </t-tab-panel> <t-tab-panel label="云学习" icon="{{tabValue == 'jsek_cloudLearning' ? learnResourceClickIcon : learnResourceIcon}}" value="jsek_cloudLearning" style="{{tabPanelstyle}}"> <t-tab-panel label="云学习" icon="{{tabValue == 'jsek_cloudLearning' ? learnResourceClickIcon : learnResourceIcon}}" value="jsek_cloudLearning" style="{{tabPanelstyle}}" > <view wx:if="{{!loading && learn.length}}"> <learn-resource bind:getFreeResource="getFreeResource" bind:allAddShoppiingCar="allAddShoppiingCar" id="learn-resource" buyResourceData="{{buyResourceData}}" bookId="{{bookDetail.id}}" isshowDrawBtn="{{isshowDrawBtn}}" successOrderNumber="{{successOrderNumber}}"></learn-resource> <learn-resource bind:getFreeResource="getFreeResource" bind:allAddShoppiingCar="allAddShoppiingCar" id="learn-resource" buyResourceData="{{buyResourceData}}" bookId="{{bookDetail.id}}" isshowDrawBtn="{{isshowDrawBtn}}" successOrderNumber="{{successOrderNumber}}" ></learn-resource> <tree id="tree" openIds="{{openLearnids}}" bookInfo="{{bookDetail}}" tab="{{tabValue}}" treeList="{{learn}}" buyIds="{{buyIdList}}" openLearnids="{{openLearnids}}" bind:updateShoppingCartHidden="updateShoppingCartHidden" bind:updateCloudLearning="updateCloudLearning"></tree> <tree id="tree" openIds="{{openLearnids}}" bookInfo="{{bookDetail}}" tab="{{tabValue}}" treeList="{{learn}}" buyIds="{{buyIdList}}" openLearnids="{{openLearnids}}" bind:updateShoppingCartHidden="updateShoppingCartHidden" bind:updateCloudLearning="updateCloudLearning" ></tree> </view> <view wx:if="{{noResources}}" class="noData"> <t-empty icon="folder-open" description="暂无数据" /> </view> </t-tab-panel> <t-tab-panel label="云测试" icon="{{tabValue == 'questionBank' ? testResourceClickIocn : testResourceIocn}}" value="questionBank" style="{{tabPanelstyle}}"> <t-tab-panel label="云测试" icon="{{tabValue == 'questionBank' ? testResourceClickIocn : testResourceIocn}}" value="questionBank" style="{{tabPanelstyle}}" > <view wx:if="{{!loading}}"> <test-resource id="test-resource" list="{{test}}" bookInfo="{{bookDetail}}" mockData="{{mockData}}" bind:buyMock="buyMock"></test-resource> <test-resource id="test-resource" list="{{test}}" bookInfo="{{bookDetail}}" mockData="{{mockData}}" bind:buyMock="buyMock" ></test-resource> </view> </t-tab-panel> <t-tab-panel label="云笔记" icon="{{tabValue == 'jsek_note' ? noteClickIcon: noteIcon}}" value="jsek_note" style="{{tabPanelstyle}}"> <t-tab-panel label="云笔记" icon="{{tabValue == 'jsek_note' ? noteClickIcon: noteIcon}}" value="jsek_note" style="{{tabPanelstyle}}" > <note bookInfo="{{bookDetail}}" id="note" class="note-list"></note> </t-tab-panel> <t-tab-panel label="相关图书" icon="{{tabValue == 'related_books' ? linkClickIcon: linkIcon}}" value="related_books" style="{{tabPanelstyle}}"> <related-books relatedBookData="{{relatedBookData}}" relatedBookLoading="{{relatedBookLoading}}" noRelatedBookData="{{noRelatedBookData}}" bind:goBookDetails="goBookDetails"></related-books> <t-tab-panel label="相关图书" icon="{{tabValue == 'related_books' ? linkClickIcon: linkIcon}}" value="related_books" style="{{tabPanelstyle}}" > <related-books relatedBookData="{{relatedBookData}}" relatedBookLoading="{{relatedBookLoading}}" noRelatedBookData="{{noRelatedBookData}}" bind:goBookDetails="goBookDetails" ></related-books> </t-tab-panel> </t-tabs> </view> </scroll-view> <movable-view class="movable-view" :x="{{x}}" :y="{{y}}" direction="all"> <view class="applyBox" bindtap="goApply"> <view class="box"> <t-image src="/static/images/home/yangshuForm1.png" mode="heightFix" class="img" /> <t-image src="/static/images/home/yangshuForm1.png" mode="heightFix" class="img" /> <view class="num" wx:if="{{num > 0}}">{{num}}</view> </view> </view> </movable-view> </movable-area> <!-- 我要建议弹窗 --> <suggest class="suggest-component" id="suggest-component" bookIcon="{{bookDetail.icon}}" bookName="{{bookDetail.name}}"></suggest> <suggest class="suggest-component" id="suggest-component" bookIcon="{{bookDetail.icon}}" bookName="{{bookDetail.name}}" ></suggest> <!-- 教学资源下载提示弹窗 --> <t-dialog class="teachDownloadDialog" visible="{{isShowTeachDownload}}" title="提示" content="请前往PC端下载" confirm-btn="{{ confirmBtn }}" bind:confirm="closeTeachDownload" /> <t-dialog class="teachDownloadDialog" visible="{{isShowTeachDownload}}" title="提示" content="请前往PC端下载" confirm-btn="{{ confirmBtn }}" bind:confirm="closeTeachDownload" /> <!-- 购买按钮 --> <view class="box-bottom"> <view class="bottom-btn" bind:tap="appplyElectronicBook"> <view> <t-image loading="" src="/static/images/bookService/detail/ebook.png"></t-image> <t-image loading="" src="/static/images/bookService/detail/ebook.png" ></t-image> </view> <view class="btn-text">电子样书申请</view> </view> <view class="bottom-btn" bind:tap="appplyPaperBook"> <view> <t-image src="/static/images/bookService/detail/paper-book.png"></t-image> <t-image src="/static/images/bookService/detail/paper-book.png" ></t-image> </view> <view class="btn-text">纸质样书申请</view> </view> <view class="{{!bookBuy && bookDetail.isSell ? 'bottom-btn tryRead' : 'bottom-btn try'}}" bind:tap="goRead" wx:if="{{!bookBuy}}"> <view class="{{!bookBuy && bookDetail.isSell ? 'bottom-btn tryRead' : 'bottom-btn try'}}" bind:tap="goRead" wx:if="{{!bookBuy}}" > <view> <t-image src="/static/images/bookService/detail/shidu.png"></t-image> </view> <view class="btn-text">试读</view> </view> <view class="shopCar shopCarColor" bind:tap="addBookShopcCar" wx:if="{{!bookBuy && bookDetail.price !== '0.00' && bookDetail.isSell == '1'}}">加入购物车</view> <view class="buy buyColor" bind:tap="buyBtn" wx:if="{{!bookBuy && bookDetail.price !== '0.00' && bookDetail.isSell == '1'}}">立即购买</view> <view class="buy receiveColor" bind:tap="buyBtn" wx:if="{{!bookBuy && bookDetail.price == '0.00' && bookDetail.isSell == '1'}}">免费领取</view> <view class="shopCar shopCarColor" bind:tap="addBookShopcCar" wx:if="{{!bookBuy && bookDetail.price !== '0.00' && bookDetail.isSell == '1'}}" >加入购物车</view > <view class="buy buyColor" bind:tap="buyBtn" wx:if="{{!bookBuy && bookDetail.price !== '0.00' && bookDetail.isSell == '1'}}" >立即购买</view > <view class="buy receiveColor" bind:tap="buyBtn" wx:if="{{!bookBuy && bookDetail.price == '0.00' && bookDetail.isSell == '1'}}" >免费领取</view > <view class="buy read" bind:tap="goRead" wx:if="{{bookBuy}}">立即查看</view> </view> </view> packageBookService/pages/bookServices/list/index.js
@@ -491,10 +491,34 @@ // } await this.getBookList(path); }, // 二级分类切换 onChangeSecond(e) { console.log(789); // // 二级分类切换 // onChangeSecond(e) { // const pathList = []; // for (let index = 0; index < e.detail.value.length; index++) { // const element = e.detail.value[index]; // pathList.push({ // Path: element, // Type: "*", // StoreRefCode: app.config.goodsStore, // }); // } // this.setData({ // backTop: "#assort-title", // pathList: pathList, // "secondList.value": e.detail.value, // }); // }, // 二级分类重置 resetSecond() { this.setData({ backTop: "#assort-title", pathList: [], "secondList.value": [], }); this.getBookList(this.data.path); }, // 二级分类确定 onConfirmSecond(e) { const pathList = []; for (let index = 0; index < e.detail.value.length; index++) { const element = e.detail.value[index]; @@ -509,11 +533,6 @@ pathList: pathList, "secondList.value": e.detail.value, }); }, // onConfirmSecond() { this.getBookList(this.data.path); }, // 重点项目改变 packageBookService/pages/bookServices/list/index.wxml
@@ -3,24 +3,78 @@ <import src="index.skeleton.wxml" /> <template is="skeleton" wx:if="{{loading}}" /> <page-meta page-style="{{showDropdown ? 'overflow: hidden;' : ''}}" wx:if="{{!loading}}"> <page-meta page-style="{{showDropdown ? 'overflow: hidden;' : ''}}" wx:if="{{!loading}}" > <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" /> <t-icon name="chevron-left" size="30" data-name="{{item}}" bind:click="goBack" /> </view> <t-search model:value="{{searchValue}}" shape="round" placeholder="请输入关键词/书名/ISBN/作者" class="navBar-search" style="width: 464rpx" bind:submit="searchBook" /> <t-search model:value="{{searchValue}}" shape="round" placeholder="请输入关键词/书名/ISBN/作者" class="navBar-search" style="width: 464rpx" bind:submit="searchBook" /> </view> <view class="bookServices-list"> <view class="list-header"> <view class="header-scroll"> <t-dropdown-menu style="width: 1200rpx"> <t-dropdown-item disabled="{{disabledStair}}" optionsColumns="2" options="{{stairList.options}}" value="{{stairList.value}}" bindchange="onChangeStair" /> <t-dropdown-item disabled="{{disabledSecondList}}" label="二级" bind:open="openDropdown" bind:close="closeDropdown" options="{{secondList.options}}" optionsColumns="2" multiple value="{{secondList.value}}" bind:confirm="onConfirmSecond" bind:change="onChangeSecond" /> <t-dropdown-item label="重点项目" disabled="{{disabledProject}}" options="{{majorProjectList.options}}" optionsColumns="2" multiple defaultValue="{{majorProjectList.value}}" bind:confirm="changeMajorProject" bind:reset="resetMajorProject" /> <t-dropdown-item label="新形态教材" disabled="{{disabledNewForms}}" options="{{newTextBook.options}}" optionsColumns="2" multiple defaultValue="{{newTextBook.value}}" bind:confirm="changeNewText" bind:reset="resetNewText" /> <t-dropdown-item options="{{sortList.options}}" value="{{sortList.value}}" bindchange="onSortChange" /> <t-dropdown-item disabled="{{disabledStair}}" optionsColumns="2" options="{{stairList.options}}" value="{{stairList.value}}" bindchange="onChangeStair" /> <t-dropdown-item disabled="{{disabledSecondList}}" label="二级" bind:open="openDropdown" bind:close="closeDropdown" options="{{secondList.options}}" optionsColumns="2" multiple defaultValue="{{secondList.value}}" bind:confirm="onConfirmSecond" bind:reset="resetSecond" /> <t-dropdown-item label="重点项目" disabled="{{disabledProject}}" options="{{majorProjectList.options}}" optionsColumns="2" multiple defaultValue="{{majorProjectList.value}}" bind:confirm="changeMajorProject" bind:reset="resetMajorProject" /> <t-dropdown-item label="新形态教材" disabled="{{disabledNewForms}}" options="{{newTextBook.options}}" optionsColumns="2" multiple defaultValue="{{newTextBook.value}}" bind:confirm="changeNewText" bind:reset="resetNewText" /> <t-dropdown-item options="{{sortList.options}}" value="{{sortList.value}}" bindchange="onSortChange" /> </t-dropdown-menu> </view> <!-- <view class="header-sort"> @@ -29,10 +83,28 @@ </t-dropdown-menu> </view> --> </view> <scroll-view scroll-y="{{true}}" scroll-into-view="{{backTop}}" refresher-enabled="{{true}}" lower-threshold="{{200}}" refresher-threshold="{{80}}" refresher-default-style="none" refresher-triggered="{{triggered}}" bindrefresherrefresh="onPullDownRefresh" bindrefresherpulling="{{refresh.onPulling}}" class="list-container" bindrefresherrefresh="onPullDownRefresh" bindscrolltolower="onReachBottom"> <scroll-view scroll-y="{{true}}" scroll-into-view="{{backTop}}" refresher-enabled="{{true}}" lower-threshold="{{200}}" refresher-threshold="{{80}}" refresher-default-style="none" refresher-triggered="{{triggered}}" bindrefresherrefresh="onPullDownRefresh" bindrefresherpulling="{{refresh.onPulling}}" class="list-container" 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="assort-title" id="assort-title"> @@ -41,9 +113,19 @@ </view> <view class="page-content"> <view class="book-list" wx:if="{{!loaidng}}"> <view class="book-box" wx:for="{{bookList}}" wx:key="id" bind:tap="goDetail" data-book="{{item}}"> <view class="book-box" wx:for="{{bookList}}" wx:key="id" bind:tap="goDetail" data-book="{{item}}" > <view class="book-img"> <image src="{{item.icon ? item.icon : '/static/images/default-book-img.png'}}" aria-label="{item.name{}}" mode="aspectFit" /> <image src="{{item.icon ? item.icon : '/static/images/default-book-img.png'}}" aria-label="{item.name{}}" mode="aspectFit" /> </view> <view class="book-name book-color">{{ item.name}}</view> <view class="book-author book-color">{{item.author}}</view> @@ -54,7 +136,13 @@ </view> </view> <view class="bottom-box" wx:if="{{bookList.length}}"> <t-loading theme="circular" size="40rpx" class="wrapper" wx:if="{{isMore == true}}" loading="{{isMore}}" /> <t-loading theme="circular" size="40rpx" class="wrapper" wx:if="{{isMore == true}}" loading="{{isMore}}" /> <text wx:if="{{isMore == false}}">没有更多了</text> </view> </scroll-view> packageDomain/pages/sampleBookList/applicationForm/index.js
@@ -68,19 +68,48 @@ }) } if (wx.getStorageSync("paperBookList")) { const paperBookList = JSON.parse(wx.getStorageSync("paperBookList")) for (let index = 0; index < paperBookList.length; index++) { const item = paperBookList[index]; if (item.publicationDate) item.publicationDate = this.formatDate(item.publicationDate) } that.setData({ paperBookList: JSON.parse(wx.getStorageSync("paperBookList")), bookList: JSON.parse(wx.getStorageSync("paperBookList")) paperBookList: paperBookList, bookList: paperBookList }) } if (wx.getStorageSync("electronicBookList")) { const electronicBookList = JSON.parse(wx.getStorageSync("electronicBookList")) for (let index = 0; index < electronicBookList.length; index++) { const item = electronicBookList[index]; if (item.publicationDate) item.publicationDate = this.formatDate(item.publicationDate) } that.setData({ electronicBookList: JSON.parse(wx.getStorageSync("electronicBookList")) electronicBookList: electronicBookList }) } that.getSelectBookCount(); that.getSelectPaperBookCount(); that.getPaperType(); } }, formatDate(inputDate) { // 使用正则表达式匹配日期部分 const dateMatch = inputDate.match(/^(\d{4})\/(\d{1,2})\/(\d{1,2})/); if (dateMatch) { // 提取年、月、日 const year = dateMatch[1]; const month = dateMatch[2].padStart(2, '0'); // 确保月份为两位数 const day = dateMatch[3].padStart(2, '0'); // 确保日期为两位数 // 拼接并返回格式化后的日期 return `${year}-${month}-${day}`; } else { // 如果没有匹配到日期部分,则返回原始输入或抛出错误 return inputDate; // 或者 throw new Error('Invalid date format'); } }, @@ -310,7 +339,7 @@ that.setData({ bookList: eList }) wx.setStorageSync("electronicBookList", eList); wx.setStorageSync("electronicBookList", JSON.stringify(eList)); } else { let pList = that.data.paperBookList; pList.forEach((obj, index) => { @@ -321,7 +350,7 @@ that.setData({ bookList: pList }) wx.setStorageSync("paperBookList", pList); wx.setStorageSync("paperBookList", JSON.stringify(pList)); } } else if (res.cancel) {} } packageDomain/pages/sampleBookList/applicationForm/index.wxml
@@ -1,5 +1,14 @@ <view class="container" style="height:calc(100vh + {{keyboardHeight ? (keyboardHeight + 'px'):'0'}});padding-bottom:calc(180rpx+ {{keyboardHeight ? 120 + 'px':0}})"> <t-tabs t-class="t-tabs" defaultValue="{{active}}" split="{{false}}" bind:change="tabClick" show-bottom-line="false"> <view class="container" style="height:calc(100vh + {{keyboardHeight ? (keyboardHeight + 'px'):'0'}});padding-bottom:calc(180rpx+ {{keyboardHeight ? 120 + 'px':0}})" > <t-tabs t-class="t-tabs" defaultValue="{{active}}" split="{{false}}" bind:change="tabClick" show-bottom-line="false" > <t-tab-panel label="纸质样书" value="0" /> <t-tab-panel label="电子样书" value="1" /> </t-tabs> @@ -12,23 +21,47 @@ </view> <view class="bookList"> <view wx:if="{{bookList.length > 0}}"> <view wx:for="{{bookList}}" wx:for-item="item" wx:for-index="index" wx:key="index" class="textbooksItemBox"> <view wx:for="{{bookList}}" wx:for-item="item" wx:for-index="index" wx:key="index" class="textbooksItemBox" > <t-swipe-cell> <t-cell title="左滑单操作" note="辅助信息" bordered="{{false}}"> <view class="listItem flex"> <view class="specialSubject-img"> <image src="{{item.icon}}" mode="aspectFill" class="img" wx:if="{{item.icon}}" /> <image src="/static/images/default-book-img.png" mode="aspectFill" class="img" wx:else="" /> <image src="{{item.icon}}" mode="aspectFill" class="img" wx:if="{{item.icon}}" /> <image src="/static/images/default-book-img.png" mode="aspectFill" class="img" wx:else="" /> </view> <view class="body-info"> <view class="name">{{item.title}}</view> <view class="author">作者:{{item.author}}</view> <view class="author">ISBN:{{item.isbn}}</view> <view class="author">出版时间:{{item.publicationDate}}</view> <view class="author" wx:if="{{item.publicationDate}}" >出版时间:{{item.publicationDate}}</view > </view> </view> </t-cell> <view slot="right" class="btn delete-btn" bind:tap="onDelete" data-book="{{item}}">删除</view> <view slot="right" class="btn delete-btn" bind:tap="onDelete" data-book="{{item}}" >删除</view > </t-swipe-cell> </view> </view> @@ -38,9 +71,7 @@ </view> </view> <view class="formBox"> <view class="title"> 授课情况 </view> <view class="title"> 授课情况 </view> <view class="teachingInfo"> <view class="item"> <text class="label">学校:</text> @@ -51,26 +82,53 @@ <text>{{teacherInfo.courseName}}</text> </view> </view> <view class="title" wx:if="{{active =='0'}}"> 收货人情况 </view> <view class="title" wx:if="{{active =='0'}}"> 收货人情况 </view> <view class="receiverInfo" wx:if="{{active =='0'}}"> <view class="item form-input-1"> <text class="label">姓名:</text> <view class="item-content"> <t-input placeholder="请输入真实姓名" borderless value="{{contactInfo.fullName}}" bindchange="onFullNameInput" adjust-position="{{isIos?false:true}}" bindkeyboardheightchange="bindkeyboardheightchange" bindblur="changeParam" data-class="form-input-1" /> <t-input placeholder="请输入真实姓名" borderless value="{{contactInfo.fullName}}" bindchange="onFullNameInput" adjust-position="{{isIos?false:true}}" bindkeyboardheightchange="bindkeyboardheightchange" bindblur="changeParam" data-class="form-input-1" /> </view> </view> <view class="item form-input-2"> <text class="label">联系电话:</text> <view class="item-content"> <t-input placeholder="输入联系电话" borderless value="{{contactInfo.phone}}" type="number" tips="{{phoneError ? '手机号输入不正确' : ''}}" bindchange="onPhoneInput" adjust-position="{{isIos?false:true}}" bindkeyboardheightchange="bindkeyboardheightchange" bindblur="changeParam" data-class="form-input-2" /> <t-input placeholder="输入联系电话" borderless value="{{contactInfo.phone}}" type="number" tips="{{phoneError ? '手机号输入不正确' : ''}}" bindchange="onPhoneInput" adjust-position="{{isIos?false:true}}" bindkeyboardheightchange="bindkeyboardheightchange" bindblur="changeParam" data-class="form-input-2" /> </view> </view> <view class="item form-input-3"> <text class="label">详细地址:</text> <view class="item-content"> <t-input placeholder="请输入详细地址" borderless value="{{contactInfo.detailedAddress}}" bindchange="onAddressInput" adjust-position="{{isIos?false:true}}" bindkeyboardheightchange="bindkeyboardheightchange" bindblur="changeParam" data-class="form-input-3" /> <t-input placeholder="请输入详细地址" borderless value="{{contactInfo.detailedAddress}}" bindchange="onAddressInput" adjust-position="{{isIos?false:true}}" bindkeyboardheightchange="bindkeyboardheightchange" bindblur="changeParam" data-class="form-input-3" /> </view> </view> </view> packageDomain/pages/sampleBookList/index.js
@@ -152,14 +152,17 @@ // 获取申请次数 that.getSelectPaperBookCount() that.getSelectBookCount() } }) } else { that.setData({ userInfo: JSON.parse(wx.getStorageSync(app.config.userInfoKey)) }) const paperBookList = wx.getStorageSync('paperBookList') ? JSON.parse(wx.getStorageSync('paperBookList')).length : 0 const electronicBookList = wx.getStorageSync('electronicBookList') ? JSON.parse(wx.getStorageSync('electronicBookList')).length : 0 this.setData({ num: paperBookList + electronicBookList }) } }, @@ -541,7 +544,7 @@ this.getSecondList(path); }, // 二级分类切换 onChangeSecond(e) { onConfirmSecond(e) { const pathList = []; for (let index = 0; index < e.detail.value.length; index++) { const element = e.detail.value[index]; @@ -556,10 +559,6 @@ pathList: pathList, 'secondList.value': e.detail.value, }); }, // onConfirmSecond() { this.getBookList(false); }, onResetSecond() { packageDomain/pages/sampleBookList/index.wxml
@@ -2,21 +2,60 @@ <view clas="container"> <view class="page-header" wx:if="{{!skeletonLoding}}"> <view style="width: 100%; height: {{barHeight}}px;"></view> <view class="nacigationBar" style="width: 100%; height: {{navBarHeight}}px;"> <view class="nacigationBar" style="width: 100%; height: {{navBarHeight}}px;" > <view> <t-icon name="chevron-left" size="30" data-name="{{item}}" bind:click="goBack" /> <t-icon name="chevron-left" size="30" data-name="{{item}}" bind:click="goBack" /> </view> <t-search model:value="{{searchValue}}" shape="round" placeholder="请输入关键词/书名/ISBN/作者" class="navBar-search" style="width: 464rpx" bind:submit="searchBook" /> <t-search model:value="{{searchValue}}" shape="round" placeholder="请输入关键词/书名/ISBN/作者" class="navBar-search" style="width: 464rpx" bind:submit="searchBook" /> </view> <view class="list-header"> <view class="header-scroll"> <!-- <scroll-view scroll-x scroll-with-animation='true' class="srcolbox"> --> <view class="srcolbox"> <t-dropdown-menu> <t-dropdown-item options="{{iconList.options}}" value="{{iconList.value}}" optionsColumns="2" bindchange="onChangeIcon" /> <t-dropdown-item options="{{stairList.options}}" value="{{stairList.value}}" optionsColumns="2" bindchange="onChangeStair" disabled="{{assortCheck.code == '' || stairList.options.length == 0}}" /> <t-dropdown-item label=" 二级" options="{{secondList.options}}" optionsColumns="2" multiple value="{{secondList.value}}" bind:confirm="onConfirmSecond" bind:change="onChangeSecond" bind:reset="onResetSecond" disabled="{{stairCode == '' || assortCheck.code == '' || secondList.options.length == 0}}" /> <t-dropdown-item options="{{sortList.options}}" value="{{sortList.value}}" bindchange="onSortChange" /> <t-dropdown-item options="{{iconList.options}}" value="{{iconList.value}}" optionsColumns="2" bindchange="onChangeIcon" /> <t-dropdown-item options="{{stairList.options}}" value="{{stairList.value}}" optionsColumns="2" bindchange="onChangeStair" disabled="{{assortCheck.code == '' || stairList.options.length == 0}}" /> <t-dropdown-item label=" 二级" options="{{secondList.options}}" optionsColumns="2" multiple defaultValue="{{secondList.value}}" bind:confirm="onConfirmSecond" bind:reset="onResetSecond" disabled="{{stairCode == '' || assortCheck.code == '' || secondList.options.length == 0}}" /> <t-dropdown-item options="{{sortList.options}}" value="{{sortList.value}}" bindchange="onSortChange" /> </t-dropdown-menu> </view> <!-- </scroll-view> --> @@ -33,29 +72,83 @@ <view class="bookServices-list" wx:if="{{!skeletonLoding}}"> <view class="list-body"> <movable-area class="movable-area"> <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="title"> <view class="line"></view> <view class="icon"> <image src="/static/images/home/yangshuliebiao.png" mode="aspectFit" class="iconImage" /> <image src="/static/images/home/yangshuliebiao.png" mode="aspectFit" class="iconImage" /> </view> </view> <view class="book-list" wx:if="{{bookList.length > 0}}"> <view class="book-box" wx:for="{{bookList}}" wx:key="id"> <view class="book-img" bind:tap="goDetail" data-book="{{item}}"> <image src="{{item.icon}}" aria-label="{{item.name}}" mode="aspectFit" wx:if="{{item.icon}}" /> <image src="/static/images/default-book-img.png" aria-label="{{item.name}}" mode="aspectFit" wx:else /> <image src="{{item.icon}}" aria-label="{{item.name}}" mode="aspectFit" wx:if="{{item.icon}}" /> <image src="/static/images/default-book-img.png" aria-label="{{item.name}}" mode="aspectFit" wx:else /> </view> <view class="book-name book-color" bind:tap="goDetail" data-book="{{item}}">{{ item.name}}</view> <view class="book-name book-color" bind:tap="goDetail" data-book="{{item}}" >{{ item.name}}</view > <view class="book-author book-color">{{item.author}}</view> <view class="checkbox"> <t-checkbox label="纸质样书" icon="rectangle" borderless='true' checked="{{item.paperChecked}}" disabled="{{item.paperDisabled || item.isApplyBook == '1' || item.isApplyBook == '2'}}" data-book="{{item}}" bind:change="onChangePaper" /> <t-checkbox label="电子样书" icon="rectangle" borderless='true' class="eBook" checked="{{item.electronChecked}}" disabled="{{item.electronDisabled || item.isApplyBook=='1' || item.isApplyBook=='3' }}" data-book="{{item}}" bind:change="onChangeElectron" /> <t-checkbox label="纸质样书" icon="rectangle" borderless="true" checked="{{item.paperChecked}}" disabled="{{item.paperDisabled || item.isApplyBook == '1' || item.isApplyBook == '2'}}" data-book="{{item}}" bind:change="onChangePaper" /> <t-checkbox label="电子样书" icon="rectangle" borderless="true" class="eBook" checked="{{item.electronChecked}}" disabled="{{item.electronDisabled || item.isApplyBook=='1' || item.isApplyBook=='3' }}" data-book="{{item}}" bind:change="onChangeElectron" /> </view> </view> </view> @@ -63,16 +156,34 @@ <t-empty icon="folder-open" description="暂无数据" /> </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> <movable-view class="movable-view" :x="{{x}}" :y="{{y}}" direction="all"> <movable-view class="movable-view" :x="{{x}}" :y="{{y}}" direction="all" > <view class="applyBox" bindtap="goApply"> <view class="box"> <t-image src="/static/images/home/yangshuForm1.png" mode="heightFix" class="img" /> <t-image src="/static/images/home/yangshuForm1.png" mode="heightFix" class="img" /> <view class="num" wx:if="{{num > 0}}">{{num}}</view> </view> </view> @@ -80,8 +191,12 @@ </movable-area> </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> </view> <import src="index.skeleton.wxml" /> <template is="skeleton" wx:if="{{skeletonLoding}}" /> packageDomain/pages/sampleBookList/index.wxss
@@ -14,7 +14,7 @@ } .bookServices-list { padding-top: 310rpx; padding-top: 294rpx; background: #F2F3F8; } @@ -205,7 +205,7 @@ flex-direction: column; align-items: center; margin-bottom: 40rpx; padding: 50rpx 16rpx 32rpx 16rpx; padding: 50rpx 16rpx 8rpx 16rpx; box-shadow: 0rpx 0rpx 18rpx 2rpx rgba(0, 0, 0, 0.08); background: #fff; }