From 893ff90c6e21fa3a5241a8ae9b33836037cd5912 Mon Sep 17 00:00:00 2001 From: 马宇豪 <978517621@qq.com> Date: 星期四, 29 八月 2024 15:19:17 +0800 Subject: [PATCH] 提交 --- pages/tabBar/current/current.vue | 270 +++++++++++++++++++++++++++++++++++++++++++++++------ 1 files changed, 237 insertions(+), 33 deletions(-) diff --git a/pages/tabBar/current/current.vue b/pages/tabBar/current/current.vue index 37cd53f..3ba1601 100644 --- a/pages/tabBar/current/current.vue +++ b/pages/tabBar/current/current.vue @@ -5,20 +5,49 @@ <!-- 状态栏占位 --> <view class="statusBar" :style="{ paddingTop: statusBarHeight + 'px' }"></view> <!-- 真正的导航栏内容 --> - <view style="display: flex; flex-direction: column;"> - <view class="navBar"> - <u-icon style=" margin-left: -25px;" name="arrow-left" color="black" size="17" @click="goBack" /> - <view class="barText">信息</view> - </view> + <view class="navBar"> +<!-- <u-icon style=" margin-left: 13px;" name="arrow-left" color="black" size="17" @click="goBack"/>--> + <view class="barText">课程</view> +<!-- <view >--> +<!-- <u-button type="text" @click="loginOut" style="color: #1890ff;margin-right: 5px;width: 65px;">退出</u-button>--> +<!-- </view>--> </view> </view> - <text>通用信息详情</text> + <!-- 页面内容 --> + <view class="m-p-15"> + <view class="cardList" v-if="classList && classList.length>0"> + <scroll-view scroll-y="true" class="scroll-Y" @scrolltoupper="upper" + @scrolltolower="lower" lower-threshold="150" @scroll="scrollView" style="height:100%"> + <view style="padding: 20px 0 20px"> + <view class="card-i" v-for="(item,index) in classList" :key="index"> + <u-image radius="16px" width="200rpx" height="200rpx" :show-loading="true" :src="getImageUrl(item.course.logo)" mode="aspectFill"> + </u-image> + <!-- <view class="card-i-t">目前已学:{{item.totalProgress}}分钟</view>--> + <view class="card-i-r"> + <view class="card-i-r-t"> + <view>{{item.phaseName + '-' + item.course.name}}</view> + <span style="color: #999;font-size: 12px;display: flex;align-items: center"><u-icon name="account" color="#999" size="18" style="margin-bottom: 0;margin-right: 2px"></u-icon>{{item.createName +'('+ item.createTime +')'}}</span> + </view> + <view class="card-i-r-b"> + <u-tag icon="clock" :text="secondsToHms(item.course.period)" type="success" size="mini" shape="circle" plain plainFill></u-tag> + <u-button class="study-button" type="primary" text="开始学习" shape="circle" size="small" @click="toStudy(item)"></u-button> + </view> + </view> + </view> + </view> + </scroll-view> + </view> + <u-empty style="margin-top: 80px" v-else text="暂无记录" mode="data"></u-empty> + </view> <tabBar :currentPagePath="page"></tabBar> </view> </template> <script> import tabBar from '../tabBarIndex.vue' + import {getClassList} from '../../../api/index.js' + import tebBar from '../tabBarIndex.vue' + import VUE_APP_BASE_URL from "../../../common/constant"; export default { components:{ tabBar @@ -26,42 +55,102 @@ data() { return { page: 'pages/tabBar/current/current', - statusBarHeight: '' + statusBarHeight: 0, + classParams: { + pageNum: 1, + pageSize: 10, + }, + classList: [], + totalPage: 0 } - }, onLoad() { + // this.unitType = uni.getStorageSync('unittype') + 1; //获取手机状态栏高度 this.statusBarHeight = uni.getSystemInfoSync()['statusBarHeight']; - uni.hideTabBar(); + this.classParams.pageNum = 1 + this.getClass(); }, + onShow() { + // this.role = uni.getStorageSync('roleName'); + }, + created(){ + uni.hideTabBar() + }, methods: { + loginOut() { + uni.clearStorageSync(); + uni.clearStorage(); + uni.navigateTo({ + url: '/pages/index/index' + }) + }, goBack() { - console.log("1111") uni.switchTab({ url:'/pages/tabBar/firstPage/firstPage' }); }, + getClass(){ + getClassList(this.classParams).then(res => { + if(res.code == 200) { + let list = res.data.list?res.data.list: []; + if (res.data.pageNum != 1) { + this.classList = this.classList.concat(list) + } else { + this.classList = res.data.list + } + this.totalPage = res.data.totalPage + }else{ + uni.$u.toast(res.message) + } + }) + }, + + getImageUrl(logo) { + return logo ? VUE_APP_BASE_URL + '/api/' + logo : '/static/defaultCover.jpg'; + }, + + toStudy(item) { + uni.setStorageSync("prevPage", '/pages/tabBar/current/current'); + uni.navigateTo({ + url: `/pages/tabBar/current/detail?bank=` + encodeURIComponent(JSON.stringify(item)) + }) + }, + + secondsToHms(seconds) { + seconds = Number(seconds); + const h = Math.floor(seconds / 3600); + const m = Math.floor(seconds % 3600 / 60); + const s = Math.floor(seconds % 3600 % 60); + + const hDisplay = h > 0 ? String(h).padStart(2, '0') : '00'; + const mDisplay = m > 0 ? String(m).padStart(2, '0') : '00'; + const sDisplay = s > 0 ? String(s).padStart(2, '0') : '00'; + return `${hDisplay}:${mDisplay}:${sDisplay}`; + }, + + upper(e) { + // console.log(e) + }, + lower(e) { + //并且让页码+1,调用获取数据的方法获取第二页数据 + this.classParams.pageNum++ + if (this.classParams.pageNum > this.totalPage){ + uni.$u.toast('已加载全部数据') + return + } + //此处调用自己获取数据列表的方法 + this.getClass() + }, + scrollView(e) { + // console.log(e) + } } } </script> -<style> -.box { - display: flex; - flex-direction: column; - width: 100%; - height: 100%; -} -.fix{ - position: sticky; - top: 0; - left: 0; - right: 0; - width: 100%; - z-index: 1; -} +<style lang="scss" scoped> .navBarBox .navBar { background-color:#fff; height: 50px; @@ -70,16 +159,131 @@ justify-content: center; align-items: center; box-shadow: 0 3px 12px rgba(0,0,0,0.05); + } -.barText{ - /* margin-left: 20px; */ - text-align: center; - width: 85%; - font-size: 16px; - /* text-align: center; */ - font-weight: 600; +.fix{ + position: sticky; + top: 0; + left: 0; + right: 0; + width: 100%; + z-index: 1; } .statusBar{ - background-color:lightgrey; + background-color:lightgrey; } +.barText{ + /* text-align: center; */ + font-size: 16px; + font-weight: 600; + flex: 2; + margin-left: 45%; +} +.examineList{ + margin-top: 12px; + height: calc(100vh - 246px); + overflow: hidden; + overflow-y: scroll; +} + +.content{ + .tit{ + width: 100%; + text-overflow: ellipsis; + overflow: hidden; + white-space: nowrap; + } + .cont{ + width: 100%; + font-size: 14px; + color: #666; + display: block; + text-overflow: ellipsis; + overflow: hidden; + white-space: nowrap; + margin-bottom: 6px; + } + .btnGroup{ + width: 100%; + display: flex; + justify-content: space-between; + } +} +.buttonCo{ + margin-top: 5px; + margin-bottom: 10px; +} +.m-p-15{ + width: 100%; +} +.cardList{ + width: 100%; + height: calc(100vh - 130px); + box-sizing: border-box; + + .card-i{ + width: calc(100% - 30px); + background: #fff; + border-radius: 20px; + padding: 15px; + margin: 0 auto 15px; + position: relative; + display: flex; + align-items: flex-start; + box-sizing: border-box; + box-shadow: 4px 4px 12px rgba(150,150,150,.05); + + &:last-of-type{ + margin-bottom: 0; + } + .card-i-t{ + position: absolute; + width: 250rpx; + height: 30px; + border-radius: 20px; + line-height: 30px; + color: #fff; + padding: 0 10rpx; + box-sizing: border-box; + left: 0; + bottom: 0; + background: rgba(0,0,0,.4); + } + .card-i-r{ + width: 100%; + height: 200rpx; + margin-left: 20rpx; + display: flex; + flex-direction: column; + justify-content: space-between; + .card-i-r-t{ + view{ + font-size: 32rpx; + margin-bottom: 20rpx; + font-family: "PingFang SC"; + font-weight: 800; + overflow: hidden; + text-overflow: ellipsis; + display: -webkit-box; + -webkit-line-clamp: 2; + -webkit-box-orient: vertical; + } + } + .card-i-r-b{ + width: 100%; + display: flex; + align-items: center; + justify-content: space-between; + + .study-button{ + width: 220rpx; + margin: 0; + box-shadow: 3px 3px 12px rgba(51,133,217,.3), -2px -2px 6px #fff; + border: 1px solid rgba(255,255,255,.8); + } + } + } + } +} + </style> \ No newline at end of file -- Gitblit v1.9.2