20个文件已删除
19个文件已修改
12个文件已添加
3 文件已重命名
| | |
| | | { |
| | | "pages": [ |
| | | "pages/resourceDetails/index", |
| | | "pages/retrievalPage/index", |
| | | "pages/cart/paymentPage/index", |
| | | "pages/cart/index", |
| | | "pages/home/home", |
| | | "pages/aboutUs/index", |
| | |
| | | // pages/aboutUs/index.js |
| | | const app = getApp() |
| | | import drawQrcode from './js/weapp.qrcode' |
| | | // import drawQrcode from './js/weapp.qrcode' |
| | | Page({ |
| | | |
| | | /** |
| | |
| | | data: { |
| | | aboutText: null, |
| | | swiperList: null, |
| | | qrcodeWidth: 0, |
| | | current: 1,//轮播图参数 |
| | | autoplay: true, //轮播图参数 |
| | | duration: '500',//轮播图参数 |
| | |
| | | |
| | | }, |
| | | getBanner() { |
| | | |
| | | app.MG.resource.getItem({ |
| | | path: 'jsek_banner\\jsek_aboutUsBanner', |
| | | paging: { start: 0, size: 9 }, |
| | | coverSize: { |
| | | width: 250 |
| | | }, |
| | | |
| | | fields: { |
| | | jsek_link: [] |
| | | } |
| | | }).then(res => { |
| | | // console.log(res.datas[0].icon, 'res'); |
| | | |
| | | this.setData({ |
| | | bannerList: res.datas[0].icon, |
| | | swiperList: res.datas[0].icon |
| | | }) |
| | | // console.log(this.data.swiperList); |
| | | console.log(this.data.bannerList, 789); |
| | | }) |
| | | }, |
| | | getAboutText() { |
| | |
| | | fields: { |
| | | content: [] |
| | | }, |
| | | coverSize: { |
| | | width: 750 |
| | | }, |
| | | }).then(res => { |
| | | console.log(res); |
| | | |
| | |
| | | aboutText: res.datas[0].content |
| | | }) |
| | | |
| | | console.log(this.data.aboutText); |
| | | |
| | | }) |
| | | } |
| | | }) |
| | |
| | | { |
| | | "component": true, |
| | | "usingComponents": { |
| | | "t-swiper": "tdesign-miniprogram/swiper/swiper", |
| | | "t-swiper-nav": "tdesign-miniprogram/swiper-nav/swiper-nav" |
| | |
| | | <!--pages/aboutUs/index.wxml--> |
| | | <!-- <text>关于我们</text> --> |
| | | <view class="swiper-wrap"> |
| | | <t-swiper wx:if="{{bannerList.length > 0}}" list="{{bannerList}}" current="{{current}}" autoplay="{{autoplay}}" duration="{{duration}}" interval="{{interval}}" navigation="{{navigation}}" bind:click="navToActivityDetail" /> |
| | | </view> |
| | | |
| | | |
| | | |
| | | <!-- 二维码展示 --> |
| | |
| | | <canvas style="width: 200px; height: 200px;margin:0 auto" canvas-id="myQrcode"></canvas> |
| | | </view> --> |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | <!-- <view class="swiper-wrap"> |
| | | <t-swiper list="{{bannerList}}" current="{{current}}" autoplay="{{autoplay}}" duration="{{duration}}" interval="{{interval}}" navigation="{{navigation}}" /> |
| | | </view> --> |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | <view class="aboutUs"> |
| | | <view class="imageBox"> |
| | | <image src="{{swiperList}}" alt="" /> |
| | |
| | | higherList: [], |
| | | vocationalList: [], |
| | | teacherList: [], |
| | | higherTotal: null, |
| | | vocationalTotal: null, |
| | | teacherTotal: null, |
| | | higherTotal: 0, |
| | | vocationalTotal: 0, |
| | | teacherTotal: 0, |
| | | value: '', |
| | | BarHeight: '', |
| | | navBarHeight: '' |
| | |
| | | this.setData({ |
| | | BarHeight: sysInfo.statusBarHeight, navBarHeight: navBarHeight |
| | | }) |
| | | |
| | | |
| | | |
| | | |
| | |
| | | |
| | | }, |
| | | downloadData(event) { |
| | | console.log(111); |
| | | const item = event.currentTarget.dataset.item; |
| | | // console.log(item.datas.freeFile.Value); |
| | | const URL = 'http://182.92.203.7:3001/file/api/ApiDownload?md5=' + item.datas.freeFile.Value |
| | |
| | | "t-tab-panel": "tdesign-miniprogram/tab-panel/tab-panel", |
| | | "t-search": "tdesign-miniprogram/search/search" |
| | | }, |
| | | "navigationBarTitleText": "书目", |
| | | "navigationBarTextStyle": "white", |
| | | "navigationStyle": "custom" |
| | | } |
| | |
| | | <!--pages/bibliographyList/index.wxml--> |
| | | |
| | | <view class="example-search"> |
| | | <t-search model:value="{{value}}" placeholder="搜索预设文案" bind:submit="onSearchSubmit" /> |
| | | <t-search model:value="{{value}}" placeholder="请输入书目名称" bind:submit="onSearchSubmit" /> |
| | | </view> |
| | | |
| | | |
| | |
| | | * 页面的初始数据 |
| | | */ |
| | | data: { |
| | | bookName: null, |
| | | bookBeginDate: null, |
| | | bookCreator: null, |
| | | bookContent: null, |
| | | bookImage: null, |
| | | bookName: '', |
| | | bookBeginDate: '', |
| | | bookCreator: '', |
| | | bookContent: '', |
| | | bookImage: '', |
| | | bookExhibitionList: [] |
| | | }, |
| | | |
| | |
| | | /* pages/bookExhibitionDetails/index.wxss */ |
| | | .headBox { |
| | | /* width: 750rpx; */ |
| | | text-align: center; |
| | | |
| | | } |
| | | .headBox {} |
| | | |
| | | .titleBox { |
| | | font-weight: 800; |
| | | font-size: 45rpx; |
| | | display: flex; |
| | | justify-content: center; |
| | | padding: 0 30rpx; |
| | | /* text-indent: 6%; */ |
| | | } |
| | | |
| | | .informationBox { |
| | |
| | | margin: 20rpx; |
| | | background: #FFFFFF; |
| | | box-shadow: 0rpx 0rpx 18rpx 2rpx rgba(0, 0, 0, 0.08); |
| | | padding: 10rpx; |
| | | box-sizing: border-box; |
| | | } |
| | | |
| | | .booksImageBox { |
| | | width: 240rpx; |
| | | height: 300rpx; |
| | | margin: 30rpx; |
| | | |
| | | } |
| | | |
| | | .outsideBooksImageBox { |
| | | background: #F5F5F5; |
| | | width: 300rpx; |
| | | width: 100%; |
| | | margin: 0 auto; |
| | | margin-top: 15rpx; |
| | | |
| | | } |
| | | |
| | | .booksTextBox { |
| | |
| | | }, |
| | | onSwapRight() { |
| | | // console.log('xxxxxx'); |
| | | this.data.nameSort = 'Asc' |
| | | // this.data.nameSort = 'Asc' |
| | | |
| | | |
| | | if (!this.data.nameSort) { |
| | | this.setData({ |
| | | nameSort: 'Desc', |
| | | }); |
| | | } else if (this.data.nameSort == 'Desc') { |
| | | this.setData({ |
| | | nameSort: 'Asc', |
| | | }); |
| | | } else if (this.data.nameSort == 'Asc') { |
| | | this.setData({ |
| | | nameSort: '', |
| | | }); |
| | | } |
| | | |
| | | this.bookExhibitionGet() |
| | | |
| | | }, |
| | | onSwapLeft() { |
| | | this.data.nameSort = 'Desc' |
| | | // console.log('sssssss'); |
| | | this.bookExhibitionGet() |
| | | |
| | | |
| | | }, |
| | | onBookExhibitionDetails: function (event) { |
| | | const item = event.currentTarget.dataset.item; |
| | |
| | | |
| | | |
| | | </t-dropdown-menu> |
| | | <view class="sortBox"> |
| | | <view class="sortBox" bind:tap="onSwapRight"> |
| | | <text>排序</text> |
| | | <view class="iconBox"> |
| | | <t-icon class="swapRight" name="swap-right" size="48rpx" bind:click="onSwapRight" /> |
| | | <t-icon class="swapLeft" name="swap-right" size="48rpx" bind:click="onSwapLeft" /> |
| | | <t-icon class="swapRight" name="swap-right" size="35rpx" color="{{nameSort == 'Asc' ? '#ff6c00' : ''}}" /> |
| | | <t-icon class="swapLeft" name="swap-right" size="35rpx" color="{{nameSort == 'Desc' ? '#ff6c00' : ''}}" /> |
| | | </view> |
| | | </view> |
| | | </view> |
| | | |
| | | <view class="assembleContent"> |
| | | <view class="titleBox"> |
| | | <view class="frameBox"></view> <text class="titleTextBox"> 线上书展</text> |
| | | </view> |
| | |
| | | |
| | | <view class="contentBox" wx:for="{{bookExhibitionList}}" wx:key="index" wx:for-item="item" wx:for-index="index" bindtap="onBookExhibitionDetails" data-item="{{item}}"> |
| | | <image wx:if="{{item.icon}}" src="{{item.icon}}" mode="" /> |
| | | <image wx:else="" src="./img/banner.png" mode="" /> |
| | | <view class="textBox"> <text>{{item.name}}</text></view> |
| | | <image wx:else="" src="/static/images/bookExhibitionList/banner.png" mode="" /> |
| | | <view class="textBox" title="{{item.name}}"> <text>{{item.name}}</text></view> |
| | | </view> |
| | | |
| | | </view> |
| | | </view> |
| | |
| | | flex-wrap: wrap; |
| | | justify-content: space-between; |
| | | margin: 15px; |
| | | |
| | | |
| | | } |
| | | |
| | | .contentBox { |
| | | width: 330rpx; |
| | | height: 130rpx; |
| | | /* height: 231rpx; */ |
| | | /* border: 1px #000 solid; */ |
| | | margin: 10px 0; |
| | | background-color: #fff; |
| | | |
| | | } |
| | | |
| | | image { |
| | | width: 100%; |
| | | height: 85%; |
| | | width: 327rpx; |
| | | height: 128rpx; |
| | | } |
| | | |
| | | |
| | | .textBox { |
| | | width: 280rpx; |
| | | /* height: 75rpx; */ |
| | | font-size: 25rpx; |
| | | |
| | | width: 320rpx; |
| | | font-size: 20rpx; |
| | | /* display: flex; |
| | | justify-content: center; */ |
| | | overflow: hidden; |
| | | text-overflow: ellipsis; |
| | | display: -webkit-box; |
| | | -webkit-box-orient: vertical; |
| | | -webkit-line-clamp: 1; |
| | | text-align: center; |
| | | -webkit-line-clamp: 2; |
| | | /* text-align: center; */ |
| | | margin: 20rpx; |
| | | |
| | | } |
| | | |
| | |
| | | |
| | | .iconBox { |
| | | transform: rotate(90deg); |
| | | /* margin: 10px; |
| | | margin-right: 20px; */ |
| | | margin-left: 30rpx; |
| | | margin-left: 10rpx; |
| | | } |
| | | |
| | | .swapRight { |
| | | /* margin-right: 10px; */ |
| | | |
| | | height: 20rpx; |
| | | } |
| | | |
| | | .swapLeft { |
| | |
| | | } |
| | | |
| | | .sortBox { |
| | | color: #999999; |
| | | display: flex; |
| | | border-bottom: 1px #ededed solid; |
| | | /* border-bottom: 1px #ededed solid; */ |
| | | align-items: center; |
| | | height: 86rpx; |
| | | width: 195rpx; |
| | | margin-top: 8rpx; |
| | | font-size: 30rpx; |
| | | } |
| | | |
| | | |
| | |
| | | display: flex; |
| | | margin: 10px; |
| | | margin-left: 0; |
| | | padding-top: 30rpx; |
| | | } |
| | | |
| | | .frameBox { |
| | |
| | | |
| | | .classification { |
| | | width: 550rpx; |
| | | /* margin-bottom: 50rpx; */ |
| | | |
| | | } |
| | | |
| | | .menuBox { |
| | | display: flex; |
| | | height: 75rpx; |
| | | |
| | | } |
| | | |
| | | .assembleContent { |
| | | background-color: #F2F3F8; |
| | | } |
| | |
| | | sort: { type: 'Asc', field: 'LinkOrder' }, |
| | | }; |
| | | app.MG.store.getStoreChannelList(query).then((res) => { |
| | | |
| | | const list = res.datas.filter((item) => item.refCode != 'jsek_homepageBookService'); |
| | | |
| | | this.setData({ |
| | | assortList: list, |
| | | }); |
| | |
| | | sort: { type: 'Asc', field: 'LinkOrder' }, |
| | | }; |
| | | app.MG.store.getStoreChannelList(query).then(async (res) => { |
| | | |
| | | console.log(res, 'res'); |
| | | // 一级分类选中 |
| | | this.setData({ |
| | | startCheck: res.datas[0].refCode, |
| | |
| | | // pages/cart/index.js |
| | | const app = getApp(); |
| | | // import { getPublicImage } from '@/assets/js/middleGround/tool.js' |
| | | import { getPublicImage } from '../../assets/js/middleGround/tool'; |
| | | |
| | | Page({ |
| | | |
| | | /** |
| | | * 页面的初始数据 |
| | | */ |
| | | data: { |
| | | |
| | | imgUrl: [], |
| | | shoppingCartData: [], |
| | | checkAll: false, |
| | | checkedList: [], |
| | | selectedCount: 0, |
| | | totalPrice: 0.00 |
| | | }, |
| | | |
| | | /** |
| | | * 生命周期函数--监听页面加载 |
| | | */ |
| | | onLoad(options) { |
| | | |
| | | wx.setNavigationBarTitle({ |
| | | title: '购物车' |
| | | }); |
| | | this.shoppingCartGet(); |
| | | }, |
| | | |
| | | /** |
| | | * 生命周期函数--监听页面初次渲染完成 |
| | | */ |
| | | onReady() { |
| | | |
| | | onDelete(e) { |
| | | const item = e.currentTarget.dataset.item; |
| | | app.MG.store.delShoppingCart({ |
| | | ids: [item.id] |
| | | }).then(res => { |
| | | this.shoppingCartGet(); |
| | | wx.showToast({ title: '你点击了删除', icon: 'none' }); |
| | | }); |
| | | }, |
| | | |
| | | /** |
| | | * 生命周期函数--监听页面显示 |
| | | */ |
| | | onShow() { |
| | | shoppingCartGet() { |
| | | let query = { |
| | | start: 0, |
| | | size: 999, |
| | | filterList: [], |
| | | searchList: [] |
| | | }; |
| | | app.MG.store.getShoppingCartProductList(query).then(res => { |
| | | res.datas.forEach(item => { |
| | | item.imgUrl = getPublicImage(item.productMonWithLinkDto.product.icon, '', '160'); |
| | | }); |
| | | |
| | | this.setData({ |
| | | shoppingCartData: res.datas |
| | | }); |
| | | }); |
| | | }, |
| | | |
| | | /** |
| | | * 生命周期函数--监听页面隐藏 |
| | | */ |
| | | onHide() { |
| | | |
| | | bottomChange(e) { |
| | | const checked = e.detail.value.length > 0; |
| | | const items = this.data.shoppingCartData.map(item => { |
| | | item.checked = checked; |
| | | return item; |
| | | }); |
| | | this.setData({ |
| | | shoppingCartData: items, |
| | | checkAll: checked |
| | | }); |
| | | this.calculateSelectedCount(); |
| | | this.calculateTotalPrice(); |
| | | }, |
| | | |
| | | /** |
| | | * 生命周期函数--监听页面卸载 |
| | | */ |
| | | onUnload() { |
| | | HandelItemChange(e) { |
| | | const { item } = e.target.dataset; |
| | | const items = this.data.shoppingCartData |
| | | items.map(eitem => { |
| | | if (eitem.id == item.id) { |
| | | eitem.checked = e.detail.checked |
| | | } |
| | | |
| | | |
| | | }) |
| | | const data = items.filter(item => item.checked) |
| | | const checkAll = data.length == this.data.shoppingCartData.length |
| | | |
| | | this.setData({ |
| | | shoppingCartData: items, |
| | | checkAll |
| | | }); |
| | | this.calculateSelectedCount(); |
| | | this.calculateTotalPrice(); |
| | | }, |
| | | |
| | | /** |
| | | * 页面相关事件处理函数--监听用户下拉动作 |
| | | */ |
| | | onPullDownRefresh() { |
| | | |
| | | calculateSelectedCount() { |
| | | const selectedItems = this.data.shoppingCartData.filter(item => item.checked); |
| | | const selectedCount = selectedItems.length; |
| | | this.setData({ |
| | | selectedCount |
| | | }); |
| | | }, |
| | | |
| | | /** |
| | | * 页面上拉触底事件的处理函数 |
| | | */ |
| | | onReachBottom() { |
| | | |
| | | calculateTotalPrice() { |
| | | const selectedItems = this.data.shoppingCartData.filter(item => item.checked); |
| | | const totalPrice = selectedItems.reduce((total, item) => total + parseFloat(item.saleMethod.price), 0); |
| | | this.setData({ |
| | | totalPrice: totalPrice.toFixed(2) |
| | | }); |
| | | }, |
| | | goPaymentPage() { |
| | | |
| | | /** |
| | | * 用户点击右上角分享 |
| | | */ |
| | | onShareAppMessage() { |
| | | |
| | | const selectedItems = this.data.shoppingCartData.filter(item => item.checked); |
| | | console.log(selectedItems, 789); |
| | | const selectedIds = selectedItems.map(item => item.id); |
| | | console.log('选中的商品 id:', selectedIds); |
| | | |
| | | app.MG.store.shoppingCartCreateOrder({ linkIds: selectedIds }).then(res => { |
| | | console.log(res.orderNumber, 456); |
| | | const url = '/pages/cart/paymentPage/index?orderNumber=' + res.orderNumber |
| | | wx.navigateTo({ |
| | | url |
| | | }); |
| | | |
| | | |
| | | }) |
| | | |
| | | |
| | | } |
| | | }) |
| | | }); |
| | |
| | | { |
| | | "component": true, |
| | | "usingComponents": { |
| | | "t-checkbox": "tdesign-miniprogram/checkbox/checkbox", |
| | | "t-swipe-cell": "tdesign-miniprogram/swipe-cell/swipe-cell", |
| | | "t-cell": "tdesign-miniprogram/cell/cell" |
| | | "t-cell": "tdesign-miniprogram/cell/cell", |
| | | "t-button": "tdesign-miniprogram/button/button" |
| | | } |
| | | } |
| | |
| | | <!--pages/cart/index.wxml--> |
| | | <text>pages/cart/index.wxml</text> |
| | | <view class="outsideContentBox"> |
| | | <!-- <checkbox-group bindchange="HandelItemChange"> --> |
| | | <t-swipe-cell wx:for="{{shoppingCartData}}" wx:key="index" wx:for-item="item" wx:for-index="index"> |
| | | <!-- <view class="contentBox"> --> |
| | | <!-- <view class="contentCheckbox"> |
| | | <checkbox value="{{item.id}}" checked="{{item.checked}}"></checkbox> |
| | | </view> --> |
| | | <view class="itemWarp"> |
| | | <t-cell bordered="{{false}}" title="{{item.productMonWithLinkDto.product.name}}" description="¥{{item.saleMethod.price}}"> |
| | | <view slot="left-icon" class="left-icon"> |
| | | <view class="contentCheckbox"> |
| | | <t-checkbox icon="rectangle" value=" {{item.id}}" data-item="{{item}}" checked="{{item.checked}}" bindchange="HandelItemChange" /> |
| | | </view> |
| | | <view class="left-image"> |
| | | <image src="{{item.imgUrl}}" class="imageStyle" mode="" /> |
| | | </view> |
| | | </view> |
| | | </t-cell> |
| | | </view> |
| | | <!-- </view> --> |
| | | <view slot="right" class="btn delete-btn" bind:tap="onDelete" data-item="{{item}}">删除</view> |
| | | </t-swipe-cell> |
| | | <!-- </checkbox-group> --> |
| | | </view> |
| | | |
| | | <view class="bottomBox"> |
| | | <view class="checkGroupBox"> |
| | | <checkbox-group bindchange="bottomChange"> |
| | | <checkbox value="全选" checked="{{checkAll}}">全选</checkbox> |
| | | </checkbox-group> |
| | | </view> |
| | | <view class="settlementBox"> |
| | | <view class="totalPrice">总价:<text class="totalPriceText">¥{{totalPrice}}</text></view> |
| | | <view class="buttonBox"> |
| | | <t-button class="tButtonBox" size="small" shape="round" bind:tap="goPaymentPage">去结算({{selectedCount}})</t-button> |
| | | </view> |
| | | </view> |
| | | </view> |
| | |
| | | .favor-btn { |
| | | background-color: #0052d9; |
| | | } |
| | | |
| | | .outsideContentBox { |
| | | padding: 30rpx; |
| | | background: #F2F3F8; |
| | | border-radius: 18rpx 18rpx 18rpx 18rpx; |
| | | padding-bottom: 230rpx; |
| | | /* height: 260rpx; */ |
| | | } |
| | | |
| | | .bottomBox { |
| | | background-color: #0052d9; |
| | | position: fixed; |
| | | bottom: 0; |
| | | left: 0; |
| | | right: 0; |
| | | |
| | | padding-bottom: 53px; |
| | | height: 112rpx; |
| | | background: #FFFFFF; |
| | | box-shadow: 0rpx -2rpx 0rpx 2rpx rgba(0, 0, 0, 0.08); |
| | | display: flex; |
| | | align-items: center; |
| | | } |
| | | |
| | | .checkGroupBox { |
| | | /* flex: 1; */ |
| | | margin: 0 30rpx; |
| | | width: 120rpx; |
| | | } |
| | | |
| | | |
| | | |
| | | .settlementBox { |
| | | /* width: 100%; */ |
| | | display: flex; |
| | | align-items: center; |
| | | /* justify-content: space-between; */ |
| | | } |
| | | |
| | | .totalPrice { |
| | | /* margin: 0 50rpx; */ |
| | | |
| | | } |
| | | |
| | | .buttonBox { |
| | | |
| | | /* margin: 0 30rpx; */ |
| | | margin-left: 140rpx; |
| | | } |
| | | |
| | | .tButtonBox { |
| | | background-color: #FF6C00; |
| | | width: 200rpx; |
| | | height: 80rpx; |
| | | } |
| | | |
| | | checkbox .wx-checkbox-input { |
| | | /* border-radius: 50%; */ |
| | | /* 圆角 */ |
| | | /* width: 46rpx; */ |
| | | /* 背景的宽 */ |
| | | /* height: 46rpx; */ |
| | | /* 背景的高 */ |
| | | width: 30rpx; |
| | | height: 30rpx; |
| | | } |
| | | |
| | | /* 选中后的 背景样式*/ |
| | | checkbox .wx-checkbox-input.wx-checkbox-input-checked { |
| | | border: 1rpx solid #FF6C00; |
| | | background: #FF6C00; |
| | | } |
| | | |
| | | checkbox .wx-checkbox-input.wx-checkbox-input-checked::before { |
| | | border-radius: 50%; |
| | | /* 圆角 */ |
| | | width: 40rpx; |
| | | /* 选中后对勾大小,不要超过背景的尺寸 */ |
| | | height: 40rpx; |
| | | /* 选中后对勾大小,不要超过背景的尺寸 */ |
| | | line-height: 40rpx; |
| | | text-align: center; |
| | | font-size: 30rpx; |
| | | /* 对勾大小 30rpx */ |
| | | color: #fff; |
| | | /* 对勾颜色 白色 */ |
| | | background: transparent; |
| | | transform: translate(-50%, -50%) scale(1); |
| | | -webkit-transform: translate(-50%, -50%) scale(1); |
| | | } |
| | | |
| | | |
| | | .contentBox { |
| | | display: flex; |
| | | align-items: center; |
| | | background-color: #fff; |
| | | margin: 30rpx 0; |
| | | border-radius: 18rpx 18rpx 18rpx 18rpx; |
| | | height: 260rpx; |
| | | } |
| | | |
| | | .totalPriceText { |
| | | color: #FF6C00; |
| | | } |
| | | |
| | | .LaelBox { |
| | | margin: 50rpx; |
| | | } |
| | | |
| | | .itemWarp { |
| | | margin: 15rpx 0; |
| | | } |
| | | |
| | | .t-cell { |
| | | border-radius: 18rpx; |
| | | } |
| | | |
| | | .t-cell__left-image { |
| | | width: 150rpx; |
| | | height: 210rpx; |
| | | } |
| | | |
| | | |
| | | .contentCheckbox { |
| | | width: 100rpx; |
| | | } |
| | | |
| | | .left-icon { |
| | | display: flex; |
| | | justify-content: flex-start; |
| | | align-items: center; |
| | | } |
| | | |
| | | .left-image { |
| | | width: 152rpx; |
| | | height: 212rpx; |
| | | background: #FFFFFF; |
| | | border-radius: 0rpx 0rpx 0rpx 0rpx; |
| | | } |
| | | |
| | | .imageStyle { |
| | | width: 100%; |
| | | height: 100%; |
| | | } |
New file |
| | |
| | | // pages/cart/paymentPage/index.js |
| | | const app = getApp() |
| | | import { getPublicImage } from '../../../assets/js/middleGround/tool'; |
| | | import drawQrcode from './js/weapp.qrcode' |
| | | Page({ |
| | | |
| | | /** |
| | | * 页面的初始数据 |
| | | */ |
| | | data: { |
| | | orderNumber: null, |
| | | navBarHeight: '', |
| | | barHeight: '', |
| | | selectedIds: '', |
| | | purchasedIds: [], |
| | | productList: [], |
| | | payPrice: '', |
| | | drawQrcodeText: 'https://www.baidu.com/', |
| | | orderGoods: '', |
| | | |
| | | |
| | | confirmBtn: { content: '确定', variant: 'base' }, |
| | | dialogKey: 'false', |
| | | |
| | | }, |
| | | |
| | | /** |
| | | * 生命周期函数--监听页面加载 |
| | | */ |
| | | onLoad(options) { |
| | | |
| | | const systInfo = wx.getSystemInfoSync(); |
| | | const menu = wx.getMenuButtonBoundingClientRect(); // 胶囊信息 |
| | | const navBarHeight = (menu.top - systInfo.statusBarHeight) * 2 + menu.height; // 导航栏高度 |
| | | this.setData({ |
| | | orderNumber: options.orderNumber, |
| | | navBarHeight: navBarHeight, |
| | | barHeight: systInfo.statusBarHeight, |
| | | selectedIds: options.selectedIds |
| | | }) |
| | | console.log('接收到的订单号:', this.data.orderNumber); |
| | | |
| | | |
| | | this.getOrderByOrderNum() |
| | | |
| | | |
| | | |
| | | |
| | | drawQrcode({ |
| | | |
| | | width: 200, // 必须,二维码宽度,与canvas的width保持一致 |
| | | |
| | | height: 200, // 必须,二维码高度,与canvas的height保持一致 |
| | | |
| | | canvasId: 'myQrcode', |
| | | |
| | | background: '#ffffff', // 非必须,二维码背景颜色,默认值白色 |
| | | |
| | | foreground: '#2bb15e', // 非必须,二维码前景色,默认值黑色 '#000000' |
| | | |
| | | // ctx: wx.createCanvasContext('myQrcode'), // 非必须,绘图上下文,可通过 wx.createCanvasContext('canvasId') 获取,v1.0.0+版本支持 |
| | | |
| | | text: this.data.drawQrcodeText, // 必须,二维码内容 |
| | | // v1.0.0+版本支持在二维码上绘制图片 |
| | | |
| | | image: { |
| | | // imageResource: '../../images/icon.png', // 指定二维码小图标 |
| | | dx: 70, |
| | | dy: 70, |
| | | dWidth: 60, |
| | | dHeight: 60 |
| | | } |
| | | }) |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | }, |
| | | |
| | | /** |
| | | * 生命周期函数--监听页面初次渲染完成 |
| | | */ |
| | | onReady() { |
| | | |
| | | }, |
| | | |
| | | /** |
| | | * 生命周期函数--监听页面显示 |
| | | */ |
| | | onShow() { |
| | | |
| | | }, |
| | | |
| | | /** |
| | | * 生命周期函数--监听页面隐藏 |
| | | */ |
| | | onHide() { |
| | | |
| | | }, |
| | | |
| | | /** |
| | | * 生命周期函数--监听页面卸载 |
| | | */ |
| | | onUnload() { |
| | | |
| | | }, |
| | | |
| | | /** |
| | | * 页面相关事件处理函数--监听用户下拉动作 |
| | | */ |
| | | onPullDownRefresh() { |
| | | |
| | | }, |
| | | |
| | | /** |
| | | * 页面上拉触底事件的处理函数 |
| | | */ |
| | | onReachBottom() { |
| | | |
| | | }, |
| | | |
| | | /** |
| | | * 用户点击右上角分享 |
| | | */ |
| | | onShareAppMessage() { |
| | | |
| | | }, |
| | | goBack() { |
| | | wx.navigateBack(); |
| | | }, |
| | | |
| | | |
| | | getOrderByOrderNum() { |
| | | let query = { |
| | | orderNum: this.data.orderNumber, |
| | | fields: { |
| | | content: [], |
| | | subtitle: [], |
| | | |
| | | |
| | | } |
| | | } |
| | | app.MG.store.getOrderByOrderNum(query).then(res => { |
| | | this.setData({ |
| | | orderGoods: res.orderNumber |
| | | }) |
| | | console.log(this.data.orderGoods, 'res.orderNumber'); |
| | | |
| | | console.log(res.payPrice); |
| | | this.setData({ |
| | | payPrice: res.payPrice.toFixed(2) |
| | | }) |
| | | res.saleMethodLinks.forEach(item => { |
| | | |
| | | item.paymentIcon = getPublicImage(item.orderSaleMethod.product.icon) |
| | | |
| | | |
| | | this.setData({ |
| | | productList: res.saleMethodLinks |
| | | }) |
| | | |
| | | }) |
| | | }) |
| | | }, |
| | | confirmOrderGet() { |
| | | let query = { |
| | | orderNum: this.data.orderGoods |
| | | } |
| | | app.MG.store.confirmOrder(query).then(res => { |
| | | this.makeWeChatQrPayGet() |
| | | }) |
| | | // 调取微信二维码支付 |
| | | |
| | | }, |
| | | // 调取微信二维码支付 |
| | | makeWeChatQrPayGet() { |
| | | let query = { |
| | | orderNum: this.data.orderGoods |
| | | } |
| | | app.MG.store.makeWeChatQrPay(query).then((res) => { |
| | | |
| | | this.setData({ |
| | | drawQrcodeText: res |
| | | }) |
| | | this.data.dialogKey = true |
| | | console.log(this.data.drawQrcodeText, 'drawQrcodeText'); |
| | | }) |
| | | }, |
| | | showDialog(e) { |
| | | const { key } = e.currentTarget.dataset; |
| | | this.setData({ [key]: true, dialogKey: key }); |
| | | }, |
| | | closeDialog() { |
| | | const { dialogKey } = this.data; |
| | | this.setData({ [dialogKey]: false }); |
| | | }, |
| | | |
| | | }) |
New file |
| | |
| | | { |
| | | "component": true, |
| | | |
| | | "usingComponents": { |
| | | "t-icon": "tdesign-miniprogram/icon/icon", |
| | | "t-button": "tdesign-miniprogram/button/button", |
| | | "t-dialog": "tdesign-miniprogram/dialog/dialog" |
| | | }, |
| | | "navigationStyle": "custom" |
| | | } |
New file |
| | |
| | | <!--pages/cart/paymentPage/index.wxml--> |
| | | <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="content"> |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | <t-button t-class="wrapper" theme="primary" size="large" variant="outline" data-key="showCloseBtn" bind:tap="showDialog" block> |
| | | 带关闭按钮 |
| | | </t-button> |
| | | <t-dialog visible="{{showCloseBtn}}" close-btn bind:confirm="closeDialog" bind:cancel="closeDialog"> |
| | | <view slot="content" class="slotContent"> |
| | | <view class="myQrcodeBox"> |
| | | <canvas style="width: 200px; height: 200px;margin:0 auto" canvas-id="myQrcode"></canvas> |
| | | <view class="myQrcodeTextBox">微信扫码支付</view> |
| | | </view> |
| | | </view> |
| | | </t-dialog> |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | <view class="shoppingCartList"> |
| | | <view class="cartList" wx:for="{{productList}}" wx:key="index" wx:for-item="item" wx:for-index="index"> |
| | | <image src="{{item.paymentIcon }}" mode="" /> |
| | | <view class="cartListContent"> |
| | | <view class="cartListDetails">{{item.orderSaleMethod.product.name}}</view> |
| | | <view class="textBox">图书服务-电子书</view> |
| | | <view class="priceBox">¥{{item.payPrice}}</view> |
| | | |
| | | </view> |
| | | |
| | | </view> |
| | | |
| | | |
| | | </view> |
| | | |
| | | <view class="priceBreakdown"> |
| | | <view class="priceBreakdownContent">价格明细</view> |
| | | <view class="amountMoney"> |
| | | <view>商品金额</view> |
| | | <view>¥{{payPrice}}</view> |
| | | </view> |
| | | <view class="amount"> |
| | | <view>合计:¥{{payPrice}}</view> |
| | | </view> |
| | | </view> |
| | | |
| | | |
| | | |
| | | <view class="interval"></view> |
| | | |
| | | <view class="paymentBox"> |
| | | <view class="residue">待支付:<text class="residueTextBox">¥{{payPrice}}</text></view> |
| | | <view> |
| | | <t-button class="buttonBox" shape="round" bind:tap="confirmOrderGet">微信支付</t-button> |
| | | </view> |
| | | </view> |
| | | |
| | | </view> |
New file |
| | |
| | | /* pages/cart/paymentPage/index.wxss */ |
| | | .nacigationBar { |
| | | background-color: #fff; |
| | | display: flex; |
| | | align-items: center; |
| | | |
| | | } |
| | | |
| | | .navbar-title { |
| | | white-space: nowrap; |
| | | overflow: hidden; |
| | | text-overflow: ellipsis; |
| | | color: #0F1214; |
| | | font-size: 40rpx; |
| | | font-weight: bold; |
| | | margin-bottom: 5rpx; |
| | | } |
| | | |
| | | .content { |
| | | width: 100%; |
| | | height: 1250rpx; |
| | | background-color: #F2F3F8; |
| | | padding: 40rpx 0; |
| | | padding-top: 1rpx; |
| | | } |
| | | |
| | | .shoppingCartList { |
| | | height: 1000rpx; |
| | | background: #FFFFFF; |
| | | border-radius: 20px; |
| | | margin: 30rpx 0; |
| | | } |
| | | |
| | | image { |
| | | width: 150rpx; |
| | | height: 210rpx; |
| | | margin: 30rpx; |
| | | } |
| | | |
| | | .cartListContent { |
| | | /* margin: 0 auto; */ |
| | | } |
| | | |
| | | .cartList { |
| | | display: flex; |
| | | } |
| | | |
| | | .cartListContent { |
| | | margin-top: 30rpx; |
| | | } |
| | | |
| | | .cartListDetails { |
| | | margin-bottom: 50rpx; |
| | | font-family: PingFang SC, PingFang SC; |
| | | font-weight: bold; |
| | | font-size: 29rpx; |
| | | color: #333333; |
| | | } |
| | | |
| | | .textBox { |
| | | font-family: PingFang SC, PingFang SC; |
| | | font-weight: 400; |
| | | font-size: 25rpx; |
| | | color: #333333; |
| | | /* margin: 10rpx 0; */ |
| | | margin-bottom: 20rpx; |
| | | } |
| | | |
| | | .priceBox { |
| | | font-weight: 500; |
| | | font-size: 31rpx; |
| | | color: #0F1214; |
| | | |
| | | } |
| | | |
| | | .priceBreakdown { |
| | | height: 280rpx; |
| | | background: #fff; |
| | | padding: 30rpx; |
| | | |
| | | } |
| | | |
| | | .priceBreakdownContent { |
| | | font-weight: bold; |
| | | font-size: 32rpx; |
| | | color: #0F1214; |
| | | margin-bottom: 50rpx; |
| | | } |
| | | |
| | | .amountMoney { |
| | | display: flex; |
| | | justify-content: space-between; |
| | | font-weight: 500; |
| | | font-size: 33rpx; |
| | | color: #0F1214; |
| | | border-bottom: 2rpx solid #EDEDED; |
| | | padding-bottom: 38rpx; |
| | | } |
| | | |
| | | .amount { |
| | | display: flex; |
| | | justify-content: flex-end; |
| | | margin: 30rpx 0; |
| | | } |
| | | |
| | | |
| | | |
| | | .interval { |
| | | width: 100%; |
| | | height: 30rpx; |
| | | background-color: #F2F3F8; |
| | | } |
| | | |
| | | .paymentBox { |
| | | /* margin-top: 50rpx; */ |
| | | display: flex; |
| | | justify-content: space-between; |
| | | padding: 30rpx; |
| | | align-items: center; |
| | | } |
| | | |
| | | .residue { |
| | | color: #949494; |
| | | } |
| | | |
| | | .residueTextBox { |
| | | font-weight: bold; |
| | | font-size: 38rpx; |
| | | color: #FF6C00; |
| | | } |
| | | |
| | | .buttonBox { |
| | | background-color: #FF6C00; |
| | | border: #fff; |
| | | } |
| | | |
| | | .myQrcodeBox { |
| | | margin: 30rpx; |
| | | } |
| | | |
| | | .myQrcodeTextBox { |
| | | text-align: center; |
| | | margin: 30rpx 0; |
| | | } |
| | |
| | | |
| | | data: { |
| | | fillPrice: false, |
| | | shoppingCartGetId: null |
| | | }, |
| | | |
| | | methods: { |
| | |
| | | const { isStock } = this.properties; |
| | | if (!isStock) return; |
| | | this.triggerEvent('toAddCart'); |
| | | // let query = { |
| | | // start: 0, |
| | | // size: 999, |
| | | // filterList: [], |
| | | // searchList: [] |
| | | // } |
| | | // app.MG.store.getShoppingCartProductList(query).then(res => { |
| | | // res.datas.forEach((item) => { |
| | | // console.log(item.saleMethod.id, 'item.saleMethod.id'); |
| | | // this.setData({ |
| | | // shoppingCartGetId: item.saleMethod.id |
| | | // }) |
| | | |
| | | // }) |
| | | // }) |
| | | |
| | | |
| | | |
| | | }, |
| | | |
| | | toBuyNow(e) { |
| | |
| | | </view> |
| | | <view class="footer-cont flex flex-between wr-class"> |
| | | <view class="flex flex-between bottom-operate-left" wx:if="{{jumpArray.length > 0}}"> |
| | | <view |
| | | wx:for="{{jumpArray}}" |
| | | wx:key="index" |
| | | class="icon-warp operate-wrap" |
| | | bindtap="toNav" |
| | | data-ele="foot_navigation" |
| | | data-index="{{index}}" |
| | | data-url="{{item.url}}" |
| | | > |
| | | <view wx:for="{{jumpArray}}" wx:key="index" class="icon-warp operate-wrap" bindtap="toNav" data-ele="foot_navigation" data-index="{{index}}" data-url="{{item.url}}"> |
| | | <view> |
| | | <text wx:if="{{shopCartNum > 0 && item.showCartNum}}" class="tag-cart-num"> |
| | | {{shopCartNum > 99 ? '99+' : shopCartNum}} |
| | |
| | | <slot name="buyButton" /> |
| | | </block> |
| | | </view> |
| | | |
New file |
| | |
| | | // pages/resourceDetails/index.js |
| | | Page({ |
| | | |
| | | /** |
| | | * 页面的初始数据 |
| | | */ |
| | | data: { |
| | | navBarHeight: '', |
| | | barHeight: '', |
| | | vURL: 'http://wxsnsdy.tc.qq.com/105/20210/snsdyvideodownload?filekey=30280201010421301f0201690402534804102ca905ce620b1241b726bc41dcff44e00204012882540400&bizid=1023&hy=SH&fileparam=302c020101042530230204136ffd93020457e3c4ff02024ef202031e8d7f02030f42400204045a320a0201000400' |
| | | }, |
| | | |
| | | /** |
| | | * 生命周期函数--监听页面加载 |
| | | */ |
| | | onLoad(options) { |
| | | const systInfo = wx.getSystemInfoSync(); |
| | | const menu = wx.getMenuButtonBoundingClientRect(); // 胶囊信息 |
| | | const navBarHeight = (menu.top - systInfo.statusBarHeight) * 2 + menu.height; // 导航栏高度 |
| | | this.setData({ |
| | | |
| | | navBarHeight: navBarHeight, |
| | | barHeight: systInfo.statusBarHeight, |
| | | |
| | | }) |
| | | }, |
| | | |
| | | /** |
| | | * 生命周期函数--监听页面初次渲染完成 |
| | | */ |
| | | onReady() { |
| | | |
| | | }, |
| | | |
| | | /** |
| | | * 生命周期函数--监听页面显示 |
| | | */ |
| | | onShow() { |
| | | |
| | | }, |
| | | |
| | | /** |
| | | * 生命周期函数--监听页面隐藏 |
| | | */ |
| | | onHide() { |
| | | |
| | | }, |
| | | |
| | | /** |
| | | * 生命周期函数--监听页面卸载 |
| | | */ |
| | | onUnload() { |
| | | |
| | | }, |
| | | |
| | | /** |
| | | * 页面相关事件处理函数--监听用户下拉动作 |
| | | */ |
| | | onPullDownRefresh() { |
| | | |
| | | }, |
| | | |
| | | /** |
| | | * 页面上拉触底事件的处理函数 |
| | | */ |
| | | onReachBottom() { |
| | | |
| | | }, |
| | | |
| | | /** |
| | | * 用户点击右上角分享 |
| | | */ |
| | | onShareAppMessage() { |
| | | |
| | | } |
| | | }) |
File was renamed from pages/cart/components/cart-bar/index.json |
| | |
| | | { |
| | | "component": true, |
| | | "usingComponents": { |
| | | "t-icon": "tdesign-miniprogram/icon/icon" |
| | | } |
| | | }, |
| | | "navigationStyle": "custom" |
| | | } |
New file |
| | |
| | | <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="videoBox"> |
| | | <video src="{{vURL}}" play-btn-position='center' object-fit='fill' controls enable-play-gesture enable-auto-rotation></video> |
| | | </view> |
New file |
| | |
| | | /* pages/resourceDetails/index.wxss */ |
| | | .nacigationBar { |
| | | background-color: #fff; |
| | | display: flex; |
| | | align-items: center; |
| | | |
| | | } |
| | | |
| | | .navbar-title { |
| | | white-space: nowrap; |
| | | /* overflow: hidden; */ |
| | | text-overflow: ellipsis; |
| | | color: #0F1214; |
| | | font-size: 40rpx; |
| | | font-weight: bold; |
| | | margin-bottom: 5rpx; |
| | | } |
| | | |
| | | .videoBox { |
| | | width: 100%; |
| | | } |
| | | |
| | | .videoBox video { |
| | | width: 100vw; |
| | | } |
New file |
| | |
| | | // pages/retrievalPage/index.js |
| | | import request from '../../assets/request/index' |
| | | |
| | | import { handleQueryResourceListData } from '../../assets/js/middleGround/tool' |
| | | const app = getApp() |
| | | Page({ |
| | | |
| | | /** |
| | | * 页面的初始数据 |
| | | */ |
| | | data: { |
| | | tabPanelstyle: 'display:flex;justify-content:center;align-items:center;', |
| | | navBarHeight: '', |
| | | barHeight: '', |
| | | searchVal: '', |
| | | bookData: [], //图书 |
| | | bookTotal: 0, |
| | | courseData: [], //课程 |
| | | courseTotal: 0, |
| | | digitalTextbooksData: [], //数字教材 |
| | | digitalTextbooksTotal: 0, |
| | | seminarData: [], //专题研讨 |
| | | seminarTotal: 0, |
| | | biblioClassificationData: [],//书展 |
| | | biblioClassificationTotal: 0, |
| | | bookFairData: [],//书目 |
| | | bookFairTotal: 0 |
| | | }, |
| | | |
| | | /** |
| | | * 生命周期函数--监听页面加载 |
| | | */ |
| | | onLoad(options) { |
| | | const systInfo = wx.getSystemInfoSync(); |
| | | const menu = wx.getMenuButtonBoundingClientRect(); // 胶囊信息 |
| | | const navBarHeight = (menu.top - systInfo.statusBarHeight) * 2 + menu.height; // 导航栏高度 |
| | | this.setData({ |
| | | |
| | | navBarHeight: navBarHeight, |
| | | barHeight: systInfo.statusBarHeight, |
| | | |
| | | }) |
| | | |
| | | |
| | | this.retrievalPageGet() |
| | | this.bibliographyGet() |
| | | }, |
| | | |
| | | /** |
| | | * 生命周期函数--监听页面初次渲染完成 |
| | | */ |
| | | onReady() { |
| | | |
| | | }, |
| | | |
| | | /** |
| | | * 生命周期函数--监听页面显示 |
| | | */ |
| | | onShow() { |
| | | |
| | | }, |
| | | |
| | | /** |
| | | * 生命周期函数--监听页面隐藏 |
| | | */ |
| | | onHide() { |
| | | |
| | | }, |
| | | |
| | | /** |
| | | * 生命周期函数--监听页面卸载 |
| | | */ |
| | | onUnload() { |
| | | |
| | | }, |
| | | |
| | | /** |
| | | * 页面相关事件处理函数--监听用户下拉动作 |
| | | */ |
| | | onPullDownRefresh() { |
| | | |
| | | }, |
| | | |
| | | /** |
| | | * 页面上拉触底事件的处理函数 |
| | | */ |
| | | onReachBottom() { |
| | | |
| | | }, |
| | | |
| | | /** |
| | | * 用户点击右上角分享 |
| | | */ |
| | | onShareAppMessage() { |
| | | |
| | | }, |
| | | goBack() { |
| | | wx.navigateBack(); |
| | | }, |
| | | //取消按钮 |
| | | onCancellation() { |
| | | this.setData({ |
| | | searchVal: '' |
| | | }) |
| | | this.retrievalPageGet() |
| | | this.bibliographyGet() |
| | | }, |
| | | onTabsChange(event) { |
| | | console.log(`Change tab, tab-panel searchVal is ${event.detail.searchVal}.`); |
| | | }, |
| | | |
| | | onTabsClick(event) { |
| | | console.log(`Click tab, tab-panel searchVal is ${event.detail.searchVal}.`); |
| | | }, |
| | | |
| | | |
| | | retrievalPageGet() { |
| | | |
| | | let fields = { |
| | | liveTime: [], |
| | | lecturer: [], |
| | | startTime: [], |
| | | jsek_link: [], |
| | | courseLeader: [], |
| | | affiliatedUnit: [], |
| | | publishingUnit: [], |
| | | classHours: [], |
| | | author: [], |
| | | subtitle: [] |
| | | } |
| | | let searchObj = {} |
| | | if (this.data.searchVal) { |
| | | searchObj = { |
| | | 'Name*': this.data.searchVal.trim(), |
| | | '||author*': this.data.searchVal.trim(), |
| | | '||isbn*': this.data.searchVal.trim(), |
| | | '||seriesName*': this.data.searchVal.trim() |
| | | } |
| | | |
| | | } |
| | | let url = '/store/api/ApiQueryProductByAppUser' |
| | | //图书 |
| | | let queryBook = { |
| | | AccessControl: { |
| | | Path: '*', |
| | | StoreRefCode: 'defaultGoodsStore27', |
| | | Type: '*', |
| | | LinkType: '' |
| | | }, |
| | | PageQuery: { |
| | | Start: 0, |
| | | Size: 999 |
| | | }, |
| | | SortQuery: [ |
| | | { |
| | | LinkOrder: 'Desc' |
| | | } |
| | | ], |
| | | CreateDate: [], |
| | | Description: [], |
| | | Name: [], |
| | | Icon: [], |
| | | RefCode: [], |
| | | TypeId: [], |
| | | SysType: [], |
| | | State: [], |
| | | Tag: [], |
| | | BeginDate: [], |
| | | EndDate: [], |
| | | ProductLinkInfo: [], |
| | | AllowDonate: [], |
| | | ...searchObj, |
| | | ...fields |
| | | } |
| | | |
| | | |
| | | let courseObj = {} |
| | | if (this.data.searchVal) { |
| | | courseObj = { |
| | | 'Name*': this.data.searchVal.trim(), |
| | | '||author*': this.data.searchVal.trim(), |
| | | '||isbn*': this.data.searchVal.trim(), |
| | | '||seriesName*': this.data.searchVal.trim() |
| | | } |
| | | |
| | | } |
| | | //课程 |
| | | let queryCourse = { |
| | | AccessControl: { |
| | | Path: '*', |
| | | StoreRefCode: 'jsek_digitalCourses', |
| | | Type: '*', |
| | | LinkType: '' |
| | | }, |
| | | PageQuery: { |
| | | Start: 0, |
| | | Size: 999 |
| | | }, |
| | | SortQuery: [ |
| | | { |
| | | LinkOrder: 'Desc' |
| | | } |
| | | ], |
| | | CreateDate: [], |
| | | Description: [], |
| | | Name: [], |
| | | Icon: [], |
| | | RefCode: [], |
| | | TypeId: [], |
| | | SysType: [], |
| | | State: [], |
| | | Tag: [], |
| | | BeginDate: [], |
| | | EndDate: [], |
| | | ProductLinkInfo: [], |
| | | AllowDonate: [], |
| | | ...courseObj, |
| | | ...fields |
| | | } |
| | | |
| | | let digitalTextbooksObj = {} |
| | | if (this.data.searchVal) { |
| | | digitalTextbooksObj = { |
| | | 'Name*': this.data.searchVal.trim(), |
| | | '||author*': this.data.searchVal.trim(), |
| | | '||isbn*': this.data.searchVal.trim(), |
| | | '||seriesName*': this.data.searchVal.trim() |
| | | } |
| | | |
| | | } |
| | | // 数字教材 |
| | | let queryDigitalTextbooks = { |
| | | AccessControl: { |
| | | Path: '*', |
| | | StoreRefCode: 'jsek_digitalTextbooks', |
| | | Type: '*', |
| | | LinkType: '' |
| | | }, |
| | | PageQuery: { |
| | | Start: 0, |
| | | Size: 999 |
| | | }, |
| | | SortQuery: [ |
| | | { |
| | | LinkOrder: 'Desc' |
| | | } |
| | | ], |
| | | CreateDate: [], |
| | | Description: [], |
| | | Name: [], |
| | | Icon: [], |
| | | RefCode: [], |
| | | TypeId: [], |
| | | SysType: [], |
| | | State: [], |
| | | Tag: [], |
| | | BeginDate: [], |
| | | EndDate: [], |
| | | ProductLinkInfo: [], |
| | | AllowDonate: [], |
| | | ...digitalTextbooksObj, |
| | | ...fields |
| | | } |
| | | |
| | | |
| | | let seminarObj = {} |
| | | if (this.data.searchVal) { |
| | | seminarObj = { |
| | | 'Name*': this.data.searchVal.trim(), |
| | | '||author*': this.data.searchVal.trim(), |
| | | '||isbn*': this.data.searchVal.trim(), |
| | | '||seriesName*': this.data.searchVal.trim() |
| | | } |
| | | |
| | | } |
| | | // 专题研讨 |
| | | let querySeminar = { |
| | | AccessControl: { |
| | | Path: '*', |
| | | StoreRefCode: 'jsek_seminar', |
| | | Type: '*', |
| | | LinkType: '' |
| | | }, |
| | | PageQuery: { |
| | | Start: 0, |
| | | Size: 999 |
| | | }, |
| | | SortQuery: [ |
| | | { |
| | | LinkOrder: 'Desc' |
| | | } |
| | | ], |
| | | CreateDate: [], |
| | | Description: [], |
| | | Name: [], |
| | | Icon: [], |
| | | RefCode: [], |
| | | TypeId: [], |
| | | SysType: [], |
| | | State: [], |
| | | Tag: [], |
| | | BeginDate: [], |
| | | EndDate: [], |
| | | ProductLinkInfo: [], |
| | | AllowDonate: [], |
| | | ...fields, |
| | | ...seminarObj |
| | | } |
| | | let biblioClassificationObj = {} |
| | | if (this.data.searchVal) { |
| | | biblioClassificationObj = { |
| | | 'Name*': this.data.searchVal.trim(), |
| | | '||author*': this.data.searchVal.trim(), |
| | | '||isbn*': this.data.searchVal.trim(), |
| | | '||seriesName*': this.data.searchVal.trim() |
| | | } |
| | | |
| | | } |
| | | //书展 |
| | | let queryBiblioClassification = { |
| | | AccessControl: { |
| | | Path: '*', |
| | | StoreRefCode: 'jsek_bookFair', |
| | | Type: '*', |
| | | LinkType: '' |
| | | }, |
| | | |
| | | PageQuery: { |
| | | Start: 0, |
| | | Size: 999 |
| | | }, |
| | | SortQuery: [ |
| | | { |
| | | LinkOrder: 'Desc' |
| | | } |
| | | ], |
| | | CreateDate: [], |
| | | Description: [], |
| | | Name: [], |
| | | Icon: [], |
| | | RefCode: [], |
| | | TypeId: [], |
| | | SysType: [], |
| | | State: [], |
| | | Tag: [], |
| | | BeginDate: [], |
| | | EndDate: [], |
| | | ProductLinkInfo: [], |
| | | AllowDonate: [], |
| | | content: [], |
| | | backgroundSelection: [], |
| | | ...fields, |
| | | ...biblioClassificationObj |
| | | } |
| | | let body = { |
| | | query: JSON.stringify({ |
| | | Query: [{ |
| | | queryBook: queryBook |
| | | }, { |
| | | queryCourse: queryCourse |
| | | }, { |
| | | queryDigitalTextbooks: queryDigitalTextbooks |
| | | }, { |
| | | querySeminar: querySeminar |
| | | }, { |
| | | queryBiblioClassification: queryBiblioClassification |
| | | }] |
| | | }) |
| | | } |
| | | request({ |
| | | url: url, |
| | | method: 'post', |
| | | data: body |
| | | }).then((resp) => { |
| | | // console.log(resp); |
| | | |
| | | //图书 0 |
| | | const data1 = resp[0] |
| | | const datas1 = handleQueryResourceListData({ |
| | | datas: data1.datas, |
| | | fields |
| | | }) |
| | | this.setData({ |
| | | bookData: datas1, |
| | | bookTotal: data1.totalCount |
| | | }) |
| | | |
| | | |
| | | |
| | | |
| | | //数字课程 1 |
| | | const data2 = resp[1] |
| | | const datas2 = handleQueryResourceListData({ |
| | | datas: data2.datas, |
| | | fields |
| | | }) |
| | | this.setData({ |
| | | courseData: datas2, |
| | | courseTotal: data2.totalCount |
| | | }) |
| | | |
| | | |
| | | |
| | | // 数字教材 2 |
| | | const data3 = resp[2] |
| | | const datas3 = handleQueryResourceListData({ |
| | | datas: data3.datas, |
| | | fields |
| | | }) |
| | | this.setData({ |
| | | digitalTextbooksData: datas3, |
| | | digitalTextbooksTotal: data3.totalCount |
| | | }) |
| | | |
| | | // 专题研讨 3 |
| | | |
| | | const data4 = resp[3] |
| | | const datas4 = handleQueryResourceListData({ |
| | | datas: data4.datas, |
| | | fields |
| | | }) |
| | | |
| | | this.setData({ |
| | | seminarData: datas4, |
| | | seminarTotal: data4.totalCount |
| | | }) |
| | | // 书展 4 |
| | | const data5 = resp[4] |
| | | const datas5 = handleQueryResourceListData({ |
| | | datas: data5.datas, |
| | | fields |
| | | }) |
| | | |
| | | this.setData({ |
| | | biblioClassificationData: datas5, |
| | | biblioClassificationTotal: data5.totalCount |
| | | }) |
| | | |
| | | |
| | | |
| | | |
| | | }) |
| | | |
| | | }, |
| | | bibliographyGet() { |
| | | let bibliographyObj = {} |
| | | if (this.data.searchVal) { |
| | | bibliographyObj = { |
| | | 'Name*': this.data.searchVal.trim(), |
| | | '||author*': this.data.searchVal.trim(), |
| | | '||isbn*': this.data.searchVal.trim(), |
| | | '||seriesName*': this.data.searchVal.trim() |
| | | } |
| | | |
| | | } |
| | | app.MG.resource.getItem({ |
| | | path: 'jsek_biblioClassification', |
| | | queryType: '*', |
| | | paging: { |
| | | start: 0, |
| | | size: 999 |
| | | }, |
| | | coverSize: { |
| | | width: 260 |
| | | }, |
| | | fields: { |
| | | jsek_link: [], |
| | | content: [], |
| | | subtitle: [], |
| | | fileType: [], |
| | | jsek_resource: [], |
| | | freeFile: [], |
| | | ...bibliographyObj |
| | | }, |
| | | SysType: "CmsItem" |
| | | }).then(res => { |
| | | // console.log(res); |
| | | this.setData({ |
| | | bookFairData: res.datas, |
| | | bookFairTotal: res.total |
| | | }) |
| | | |
| | | }) |
| | | }, |
| | | downloadData(event) { |
| | | console.log(111); |
| | | const item = event.currentTarget.dataset.item; |
| | | // console.log(item.datas.freeFile.searchVal); |
| | | const URL = 'http://182.92.203.7:3001/file/api/ApiDownload?md5=' + item.datas.freeFile.searchVal |
| | | item.determine = false |
| | | |
| | | setTimeout(() => { |
| | | if (URL) { |
| | | item.determine = true |
| | | } |
| | | }, 600) |
| | | wx.downloadFile({ |
| | | url: URL, |
| | | success: function (res) { |
| | | const filePath = res.tempFilePath; |
| | | wx.openDocument({ |
| | | filePath: filePath, |
| | | success: function (res) { |
| | | console.log('打开文档成功'); |
| | | }, |
| | | fail: function (res) { |
| | | console.log('打开文档失败', res); |
| | | } |
| | | }); |
| | | }, |
| | | fail: function (res) { |
| | | console.log('下载文件失败', res); |
| | | } |
| | | }); |
| | | }, |
| | | onSearchSubmit() { |
| | | console.log(this.data.searchVal); |
| | | this.retrievalPageGet() |
| | | this.bibliographyGet() |
| | | } |
| | | |
| | | }) |
New file |
| | |
| | | { |
| | | "component": true, |
| | | "usingComponents": { |
| | | "t-icon": "tdesign-miniprogram/icon/icon", |
| | | "t-search": "tdesign-miniprogram/search/search", |
| | | "t-tabs": "tdesign-miniprogram/tabs/tabs", |
| | | "t-tab-panel": "tdesign-miniprogram/tab-panel/tab-panel" |
| | | }, |
| | | "navigationStyle": "custom" |
| | | } |
New file |
| | |
| | | <!--pages/retrievalPage/index.wxml--> |
| | | <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="example-search"> |
| | | <t-search bind:submit="onSearchSubmit" class="searchBox" model:value="{{searchVal}}" placeholder="请输入关键词/书名/ISBN/作者" /> |
| | | |
| | | <view class="cancellation" bind:tap="onCancellation">取消</view> |
| | | </view> |
| | | |
| | | |
| | | |
| | | |
| | | <t-tabs defaultValue="{{0}}" bind:change="onTabsChange" bind:click="onTabsClick" t-class="custom-tabs" t-class-content="custom-panel"> |
| | | <t-tab-panel label="图书({{bookTotal}})" value="0"> |
| | | <view class="bookDataBox"> |
| | | |
| | | |
| | | <view class="bookDataForBox" wx:for="{{bookData}}" wx:key="index" wx:for-item="item" wx:for-index="index"> |
| | | <view class="imageBox"> |
| | | <image src="{{item.icon}}" mode="" /> |
| | | </view> |
| | | <view class="bookDataNmae"> |
| | | {{item.name}} |
| | | </view> |
| | | <view class="bookDataAuthor">{{item.author}}</view> |
| | | </view> |
| | | </view> |
| | | |
| | | |
| | | |
| | | |
| | | </t-tab-panel> |
| | | <t-tab-panel label="课程({{courseTotal}})" value="1"> |
| | | |
| | | |
| | | <view class="listBox1"> |
| | | <view wx:if="{{courseData.length>0}}"> |
| | | <view wx:for="{{courseData}}" wx:for-item="item" wx:for-index="index" wx:key="index" bindtap="toList" data-info="{{item}}" class="listItemBox"> |
| | | <view class="listItem flex"> |
| | | <view class="specialSubject-img"> |
| | | <image src="{{item.icon}}" mode="aspectFill" class="img" /> |
| | | </view> |
| | | <view class="body-info"> |
| | | <view class="name">{{item.name}}</view> |
| | | <view class="flex jc-sb"> |
| | | <text class="author">{{item.courseLeader}}</text> |
| | | <text>{{item.classHours}}课时</text> |
| | | </view> |
| | | <view class="priceBox flex jc-sb"> |
| | | <text class="price" wx:if="{{item.price == 0}}">免费</text> |
| | | <text class="price" wx:if="{{item.price !== 0}}">¥{{item.price}}</text> |
| | | <image src="/static/images/home/home-cart.png" mode="aspectFill" class="addCartImg" /> |
| | | </view> |
| | | </view> |
| | | </view> |
| | | </view> |
| | | </view> |
| | | <view class="empyt" wx:else> |
| | | <t-empty icon="folder-open" description="暂无数据" font-size="80" /> |
| | | </view> |
| | | </view> |
| | | |
| | | |
| | | </t-tab-panel> |
| | | <t-tab-panel label="数字教材({{digitalTextbooksTotal}})" value="2"> |
| | | |
| | | |
| | | |
| | | |
| | | <view class="bookDataBox"> |
| | | |
| | | |
| | | <view class="bookDataForBox" wx:for="{{digitalTextbooksData}}" wx:key="index" wx:for-item="item" wx:for-index="index"> |
| | | <view class="imageBox"> |
| | | <image src="{{item.icon}}" mode="" /> |
| | | </view> |
| | | <view class="bookDataNmae"> |
| | | {{item.name}} |
| | | </view> |
| | | <view class="bookDataAuthor">{{item.author}}</view> |
| | | </view> |
| | | </view> |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | </t-tab-panel> |
| | | <t-tab-panel label="专题({{seminarTotal}})" value="3"> |
| | | <view class="listBox"> |
| | | <view wx:for="{{seminarData}}" wx:for-item="item" wx:for-index="index" wx:key="index" bindtap="toList" data-info="{{item}}" class="listItemBox"> |
| | | <view class="listItem"> |
| | | <view class="specialSubject-img"> |
| | | <image src="{{item.icon}}" mode="aspectFill" class="img" /> |
| | | </view> |
| | | <view class="body-info"> |
| | | <view class="name">{{item.name}}</view> |
| | | <view class="time" wx:if="{{item.liveTime}}">直播时间:<text>{{item.liveTime}}</text></view> |
| | | <view class="time" wx:if="{{item.startTime}}">开播时间:<text>{{ item.startTime }}</text></view> |
| | | <view class="time" wx:if="{{!item.liveTime && !item.startTime}}">开播时间:<text class="grey">待定</text></view> |
| | | <view class="flex jc-sb"> |
| | | <text class="author">{{item.lecturer}}</text> |
| | | <text class="price" wx:if="{{item.price == 0}}">免费</text> |
| | | <text class="price" wx:if="{{item.price !== 0}}">¥{{item.price}}</text> |
| | | </view> |
| | | </view> |
| | | </view> |
| | | </view> |
| | | </view> |
| | | |
| | | |
| | | |
| | | </t-tab-panel> |
| | | <t-tab-panel label="书目({{bookFairTotal}})" value="4"> |
| | | |
| | | |
| | | |
| | | |
| | | <view class="outsideHigherBox"> |
| | | <view class="higherBox" wx:for="{{bookFairData}}" wx:key="index" wx:for-item="item" wx:for-index="index"> |
| | | <view class="outsideHigherImageBox"> |
| | | <image class="higherImageBox" src="{{item.icon}}" mode="" /> |
| | | <view class="downloadIcon" bind:tap="downloadData" data-item="{{item}}"> |
| | | |
| | | <image wx:if="{{determine}}" class="download" src="/static/images/bibliographyList/downloadshiftin.png" mode="" /> |
| | | <image wx:else="" class="downloadshiftin" src="/static/images/bibliographyList/download.png" mode="" /> |
| | | </view> |
| | | </view> |
| | | |
| | | <view class="higherTextBox">{{item.name}}</view> |
| | | </view> |
| | | |
| | | </view> |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | </t-tab-panel> |
| | | <t-tab-panel label="书展({{biblioClassificationTotal}})" value="5"> |
| | | <view class="outside"> |
| | | <view class="contentBox" wx:for="{{biblioClassificationData}}" wx:key="index" wx:for-item="item" wx:for-index="index" bindtap="onBookExhibitionDetails" data-item="{{item}}"> |
| | | <image class="bookFairImage" wx:if="{{item.icon}}" src="{{item.icon}}" mode="" /> |
| | | <image class="bookFairImage" wx:else="" src="/static/images/bookExhibitionList/banner.png" mode="" /> |
| | | <view class="textBox" title="{{item.name}}"> <text>{{item.name}}</text></view> |
| | | </view> |
| | | |
| | | </view> |
| | | |
| | | |
| | | |
| | | </t-tab-panel> |
| | | </t-tabs> |
New file |
| | |
| | | /* pages/retrievalPage/index.wxss */ |
| | | |
| | | .nacigationBar { |
| | | background-color: #fff; |
| | | display: flex; |
| | | align-items: center; |
| | | |
| | | } |
| | | |
| | | .navbar-title { |
| | | white-space: nowrap; |
| | | /* overflow: hidden; */ |
| | | text-overflow: ellipsis; |
| | | color: #0F1214; |
| | | font-size: 40rpx; |
| | | font-weight: bold; |
| | | margin-bottom: 5rpx; |
| | | } |
| | | |
| | | .example-search { |
| | | background-color: #fff; |
| | | padding: 16rpx 32rpx; |
| | | display: flex; |
| | | align-items: center; |
| | | /* font-size: 25rpx; */ |
| | | color: #999999; |
| | | } |
| | | |
| | | .searchBox { |
| | | width: 614rpx; |
| | | /* margin-right: 20rpx; */ |
| | | } |
| | | |
| | | .cancellation { |
| | | width: 80rpx; |
| | | margin-left: 15rpx; |
| | | } |
| | | |
| | | |
| | | .custom-tabs { |
| | | margin-bottom: 32rpx; |
| | | } |
| | | |
| | | .custom-panel { |
| | | /* height: 120px; */ |
| | | } |
| | | |
| | | .imageBox { |
| | | width: 190rpx; |
| | | height: 280rpx; |
| | | box-shadow: 10rpx 10rpx 10rpx 10rpx rgba(0, 0, 0, 0.08); |
| | | } |
| | | |
| | | image { |
| | | width: 100%; |
| | | height: 100%; |
| | | } |
| | | |
| | | .bookDataBox { |
| | | display: flex; |
| | | flex-wrap: wrap; |
| | | } |
| | | |
| | | .bookDataForBox { |
| | | width: 190rpx; |
| | | margin: 30rpx; |
| | | } |
| | | |
| | | .bookDataNmae { |
| | | margin: 20rpx 0; |
| | | font-family: PingFang SC, PingFang SC; |
| | | font-weight: bold; |
| | | font-size: 25rpx; |
| | | color: #333333; |
| | | word-break: break-all; |
| | | display: -webkit-box; |
| | | -webkit-line-clamp: 2; |
| | | -webkit-box-orient: vertical; |
| | | overflow: hidden; |
| | | |
| | | } |
| | | |
| | | |
| | | |
| | | .bookDataAuthor { |
| | | font-family: PingFang SC, PingFang SC; |
| | | font-weight: 400; |
| | | font-size: 22rpx; |
| | | color: #333333; |
| | | } |
| | | |
| | | |
| | | .listBox { |
| | | padding: 20rpx 0; |
| | | display: flex; |
| | | flex-flow: row wrap; |
| | | justify-content: space-between; |
| | | margin: 20rpx; |
| | | |
| | | } |
| | | |
| | | .listBox .listItemBox { |
| | | width: 49%; |
| | | margin-bottom: 50rpx; |
| | | |
| | | } |
| | | |
| | | .listItemBox .listItem { |
| | | background: #fff; |
| | | box-sizing: border-box; |
| | | border-radius: 5px; |
| | | overflow: hidden; |
| | | box-shadow: 0px 0px 20rpx 2px #f1f1f1; |
| | | } |
| | | |
| | | |
| | | .listBox .specialSubject-img { |
| | | width: 100%; |
| | | height: 120rpx; |
| | | } |
| | | |
| | | .specialSubject-img image { |
| | | width: 100%; |
| | | height: 100%; |
| | | object-fit: contain; |
| | | } |
| | | |
| | | .body-info { |
| | | padding: 20rpx; |
| | | font-size: 28rpx; |
| | | } |
| | | |
| | | .body-info .name { |
| | | font-size: 32rpx; |
| | | height: 88rpx; |
| | | color: #333333; |
| | | font-weight: bold; |
| | | line-height: 44rpx; |
| | | display: -webkit-box; |
| | | margin-bottom: 10rpx; |
| | | -webkit-box-orient: vertical; |
| | | -webkit-line-clamp: 2; |
| | | overflow: hidden; |
| | | text-overflow: ellipsis; |
| | | } |
| | | |
| | | .body-info .time { |
| | | font-size: 26rpx; |
| | | margin-bottom: 10rpx; |
| | | } |
| | | |
| | | .body-info .author { |
| | | font-size: 26rpx; |
| | | display: flex; |
| | | justify-content: space-between; |
| | | } |
| | | |
| | | .body-info .price { |
| | | font-size: 26rpx; |
| | | color: #ff6d00; |
| | | } |
| | | |
| | | .flex { |
| | | display: flex; |
| | | } |
| | | |
| | | .jc-sb { |
| | | justify-content: space-between |
| | | } |
| | | |
| | | |
| | | .listBox1, |
| | | .listBox2 { |
| | | padding: 50rpx 0; |
| | | } |
| | | |
| | | .listBox1 .listItemBox { |
| | | height: 220rpx; |
| | | margin-bottom: 30rpx; |
| | | } |
| | | |
| | | .listBox1 .specialSubject-img { |
| | | width: 400rpx; |
| | | height: 218rpx; |
| | | } |
| | | |
| | | .listBox1 .addCartImg, |
| | | .listBox3 .addCartImg { |
| | | width: 30rpx; |
| | | height: 30rpx; |
| | | } |
| | | |
| | | .listBox1 .priceBox { |
| | | margin-top: 14rpx; |
| | | } |
| | | |
| | | .outside { |
| | | display: flex; |
| | | flex-wrap: wrap; |
| | | justify-content: space-between; |
| | | margin: 15px; |
| | | |
| | | |
| | | } |
| | | |
| | | .contentBox { |
| | | width: 330rpx; |
| | | /* height: 231rpx; */ |
| | | /* border: 1px #000 solid; */ |
| | | margin: 10px 0; |
| | | background-color: #fff; |
| | | |
| | | } |
| | | |
| | | .textBox { |
| | | width: 280rpx; |
| | | /* height: 75rpx; */ |
| | | font-size: 25rpx; |
| | | |
| | | overflow: hidden; |
| | | text-overflow: ellipsis; |
| | | display: -webkit-box; |
| | | -webkit-box-orient: vertical; |
| | | -webkit-line-clamp: 2; |
| | | /* text-align: center; */ |
| | | margin: 20rpx; |
| | | |
| | | } |
| | | |
| | | .bookFairImage { |
| | | width: 327rpx; |
| | | height: 128rpx; |
| | | } |
| | | |
| | | .outsideHigherBox { |
| | | display: flex; |
| | | flex-wrap: wrap; |
| | | } |
| | | |
| | | .higherBox { |
| | | width: 220rpx; |
| | | /* height: 390rpx; */ |
| | | box-shadow: 10rpx 10rpx 10rpx 10rpx rgba(0, 0, 0, 0.08); |
| | | margin: 30rpx 15rpx; |
| | | } |
| | | |
| | | .outsideHigherImageBox { |
| | | |
| | | position: relative; |
| | | } |
| | | |
| | | .higherImageBox { |
| | | width: 190rpx; |
| | | height: 255rpx; |
| | | margin: 15rpx; |
| | | } |
| | | |
| | | .downloadIcon { |
| | | width: 34rpx; |
| | | height: 34rpx; |
| | | |
| | | border-radius: 5rpx 5rpx 5rpx 5rpx; |
| | | background: rgba(0, 0, 0, 0.3); |
| | | position: absolute; |
| | | top: 15rpx; |
| | | right: 15rpx; |
| | | padding: 10rpx; |
| | | } |
| | | |
| | | |
| | | .download { |
| | | /* background-color: #8bc34a; */ |
| | | width: 100%; |
| | | height: 100%; |
| | | |
| | | } |
| | | |
| | | .downloadshiftin { |
| | | width: 100%; |
| | | height: 100%; |
| | | } |
| | | |
| | | .higherTextBox { |
| | | font-weight: bold; |
| | | font-size: 25rpx; |
| | | color: #333333; |
| | | padding: 15rpx; |
| | | margin-bottom: 10rpx; |
| | | } |