From f4ed2c4a1412f7256614e04e18683ca15a89bb25 Mon Sep 17 00:00:00 2001
From: 祖安之光 <11848914+light-of-zuan@user.noreply.gitee.com>
Date: Wed, 05 Nov 2025 08:58:21 +0800
Subject: [PATCH] 新增

---
 pages/tabBar/firstPage/firstPage.vue | 1068 +++++++++++++++++++++++++++++++---------------------------
 1 files changed, 572 insertions(+), 496 deletions(-)

diff --git a/pages/tabBar/firstPage/firstPage.vue b/pages/tabBar/firstPage/firstPage.vue
index 5dac134..615a143 100644
--- a/pages/tabBar/firstPage/firstPage.vue
+++ b/pages/tabBar/firstPage/firstPage.vue
@@ -1,161 +1,195 @@
 <template>
+	<!-- 自定义导航栏 -->
 	<view>
-		<!-- 自定义导航栏 -->
-<!-- 		<view class="navBarBox fix">
-			<view class="statusBar" :style="{ paddingTop: statusBarHeight + 'px' }"></view>
-			<view class="navBar">
-				<view class="barText">首页</view>
+		<view class="custom-navbar">
+			<view class="navbar-content">
+				<view class="nav-left" @click="handleBack">
+					<view class="back-btn">
+						<text class="back-text">返回</text>
+					</view>
+				</view>
+				<text class="navbar-title">安全教育</text>
+				<view class="nav-right"></view>
 			</view>
-		</view> -->
-    <view style="width: 100%;padding: 0 15px;box-sizing: border-box;margin: 20px 0">
-      <u-swiper :list="swiperList" indicatorMode="dot" bgColor="#f5f7fa" circular height="160" indicator previousMargin="30" nextMargin="30"></u-swiper>
-    </view>
-
-    <scroll-view scroll-y="true" class="scroll-Y" @scrolltoupper="upper"
-                 @scrolltolower="lower" lower-threshold="150" @scroll="scrollView" style="height:calc(100vh - 180px)">
-    <view class="m-p-15">
-      <view class="card" style="width:100%">
-        <view class="card-t">
-          <span class="card-t-l">我的线上课程</span>
-          <span class="card-t-r" @click="toCourses">查看全部</span>
-        </view>
-        <view class="card-c" v-if="Array.isArray(classList) && classList.length>0">
-          <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>
-		<view class="card-c" v-else>
-			<span style="font-size: 28rpx;color: #999;">暂无课程信息</span>
 		</view>
-      </view>
-    </view>
-    <view class="m-p-15">
-      <view class="card" style="width:100%">
-        <view class="card-t">
-          <span class="card-t-l">我的考试</span>
-<!--          <uni-data-select
+		<view class="page-content" :style="{ paddingTop: navbarHeight + 'px' }">
+			<view style="width: 100%;padding: 0 15px;box-sizing: border-box;margin: 20px 0">
+				<u-swiper :list="swiperList" indicatorMode="dot" bgColor="#f5f7fa" circular height="160" indicator
+					previousMargin="30" nextMargin="30"></u-swiper>
+			</view>
+			<scroll-view scroll-y="true" class="scroll-Y" @scrolltoupper="upper" @scrolltolower="lower"
+				lower-threshold="150" @scroll="scrollView" style="height:calc(100vh - 244px)">
+				<view class="m-p-15">
+					<view class="card" style="width:100%">
+						<view class="card-t">
+							<span class="card-t-l">我的线上课程</span>
+							<span class="card-t-r" @click="toCourses">查看全部</span>
+						</view>
+						<view class="card-c" v-if="Array.isArray(classList) && classList.length>0">
+							<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>
+						<view class="card-c" v-else>
+							<span style="font-size: 28rpx;color: #999;">暂无课程信息</span>
+						</view>
+					</view>
+				</view>
+				<view class="m-p-15">
+					<view class="card" style="width:100%">
+						<view class="card-t">
+							<span class="card-t-l">我的考试</span>
+							<!--          <uni-data-select
               v-model="examParams.state"
               placeholder="完成状态"
               :localdata="examSelect"
               :clear="true"
               @change="changeExam"
           ></uni-data-select> -->
-		  <div>
-<!-- 			  <span @click="showSelect = true" class="uni-stat__select"><text>{{examSelect[0][examParams.state].text}}</text><u-icon name="arrow-down" color="#999" size="14"></u-icon></span>
+							<div>
+								<!-- 			  <span @click="showSelect = true" class="uni-stat__select"><text>{{examSelect[0][examParams.state].text}}</text><u-icon name="arrow-down" color="#999" size="14"></u-icon></span>
 			  <u-picker :show="showSelect" :columns="examSelect" @confirm="confirm" @cancel="showSelect = false" keyName="text"></u-picker> -->
-			  <u-tabs :list="examSelect" :current="currentTab" @click="changeState"></u-tabs>
-		  </div>
-		  
-		  		
-        </view>
-        <view class="card-c card-d" v-if="examList && examList.length>0">
-            <view class="paper-card" v-for="(item,index) in examList" :key="index" @click="toExam(item)">
-              <view class="paper-card-t">
-				  <!-- <span :class="item.state == 0?'blue':item.state == 1?'red':'green'">[{{item.state == 0?'待考试':item.state == 1?'待批阅':'批阅完成'}}]</span> -->
-				  {{item.examPaper.name}}</view>
-              <view class="tag-area">
-				 <u-tag :text="item.examPaper.categoryName" plain size="mini"></u-tag>
-				 <u-tag :text="item.examPaper.limited == 1?'时长:' + item.examPaper.limitTime + '分钟':'不限时'" type="warning" plain size="mini"></u-tag> 
-			  </view>
-              <view class="paper-card-b">
-                <view style="font-size: 12px;margin-top: 5px;color: #999">
-                  <view style="margin-bottom: 2px">创建人:{{item.createName}}</view>
-                  <view>截止日期:{{item.examPaper.deadline.substring(0,10)}}</view>
-                </view>
-<!--                <view class="btn-area" v-if="item.state == 0">
+								<u-tabs :list="examSelect" :current="currentTab" @click="changeState"></u-tabs>
+							</div>
+
+
+						</view>
+						<view class="card-c card-d" v-if="examList && examList.length>0">
+							<view class="paper-card" v-for="(item,index) in examList" :key="index"
+								@click="toExam(item)">
+								<view class="paper-card-t">
+									<!-- <span :class="item.state == 0?'blue':item.state == 1?'red':'green'">[{{item.state == 0?'待考试':item.state == 1?'待批阅':'批阅完成'}}]</span> -->
+									{{item.examPaper.name}}
+								</view>
+								<view class="tag-area">
+									<u-tag :text="item.examPaper.categoryName" plain size="mini"></u-tag>
+									<u-tag
+										:text="item.examPaper.limited == 1?'时长:' + item.examPaper.limitTime + '分钟':'不限时'"
+										type="warning" plain size="mini"></u-tag>
+								</view>
+								<view class="paper-card-b">
+									<view style="font-size: 12px;margin-top: 5px;color: #999">
+										<view style="margin-bottom: 2px">创建人:{{item.createName}}</view>
+										<view>截止日期:{{item.examPaper.deadline.substring(0,10)}}</view>
+									</view>
+									<!--                <view class="btn-area" v-if="item.state == 0">
                   <u-button @click="toExam(item,1)" class="exam-button" type="primary" text="开始考试" shape="circle" size="small"></u-button>
                 </view> -->
-				<view class="btn-area" v-if="item.state == 2">
-					<u-button @tap.stop="reExam(item)" class="exam-button" type="primary" text="重新考试" shape="circle" size="small"></u-button>
-					<!-- <u-button @click="toExam(item,2)" class="re-exam-button" type="primary" text="查看" shape="circle" size="small"></u-button> -->
+									<view class="btn-area" v-if="item.state == 2">
+										<u-button @tap.native.stop="reExam(item)" class="exam-button" type="primary"
+											text="重新考试" shape="circle" size="small"></u-button>
+										<!-- <u-button @click="toExam(item,2)" class="re-exam-button" type="primary" text="查看" shape="circle" size="small"></u-button> -->
+									</view>
+								</view>
+							</view>
+						</view>
+						<view class="card-c card-d" v-else>
+							<u-empty text="该状态暂无记录" mode="data"></u-empty>
+						</view>
+					</view>
 				</view>
-              </view>
-            </view>
-        </view>
-        <view class="card-c card-d" v-else>
-          <u-empty text="该状态暂无记录" mode="data"></u-empty>
-        </view>
-      </view>
-    </view>
 
-    </scroll-view>
+			</scroll-view>
+		</view>
 	</view>
 </template>
 
 <script>
-	import {getClassList, getExamList, getSwiperList} from '../../../api/index.js'
+	import {
+		getClassList,
+		getExamList,
+		getSwiperList
+	} from '../../../api/index.js'
 	import VUE_APP_BASE_URL from 'common/constant.js'
-	import {postEndExam, postAgainExam} from "../../../api/wearhouse";
+	import {
+		postEndExam,
+		postAgainExam
+	} from "../../../api/wearhouse";
 	export default {
-		components:{},
+		components: {},
 		data() {
 			return {
-				showSelect:false,
-        swiperList: [
-          '/static/defaultCover.jpg','/static/defaultCover.jpg','/static/defaultCover.jpg'
-        ],
-		titleList:[
-			{
-				label: '默认排序',
-				value: 1,
-			}
-		],
-        classList: [],
-        examList: [],
-        totalPage: 0,
-		page: 'pages/tabBar/firstPage/firstPage',
-		statusBarHeight: '',
-        classParams:{
-          pageNum: 1,
-          pageSize: 3,
-        },
-        examParams: {
-          pageNum: 1,
-          pageSize: 10,
-          state: 0
-        },
-		currentTab: 0,
-        examSelect: [
-          { name: "待考试" },
-          { name: "批阅完成" }
-        ],
+				navbarHeight: 0,
+				showSelect: false,
+				swiperList: [
+					'/static/defaultCover.jpg', '/static/defaultCover.jpg', '/static/defaultCover.jpg'
+				],
+				titleList: [{
+					label: '默认排序',
+					value: 1,
+				}],
+				classList: [],
+				examList: [],
+				totalPage: 0,
+				page: 'pages/tabBar/firstPage/firstPage',
+				statusBarHeight: '',
+				classParams: {
+					pageNum: 1,
+					pageSize: 3,
+				},
+				examParams: {
+					pageNum: 1,
+					pageSize: 10,
+					state: 0
+				},
+				currentTab: 0,
+				examSelect: [{
+						name: "待考试"
+					},
+					{
+						name: "批阅完成"
+					}
+				],
 				role: '',
-				realname:''
+				realname: ''
 			}
-			
+
 		},
 		onLoad() {
 			//获取手机状态栏高度
-			this.statusBarHeight = uni.getSystemInfoSync()['statusBarHeight'];
-	
-      this.examList = []
-      this.classParams.pageNum = 1
-      this.examParams.pageNum = 1
-      this.getSwiper()
-      this.getClass()
-      this.getExamList()
+			this.getNavbarHeight()
+
+			this.examList = []
+			this.classParams.pageNum = 1
+			this.examParams.pageNum = 1
+			this.getSwiper()
+			this.getClass()
+			this.getExamList()
 		},
-		onShow(){
-			// this.role = uni.getStorageSync('roleName');
-			// this.realname = uni.getStorageSync('user').realName
-      // this.tabBarLists = uni.getStorageSync('tabBarList');
+		onShow() {
 
 		},
-    created(){
-    },
+		created() {},
 		methods: {
+			getNavbarHeight() {
+				const systemInfo = uni.getSystemInfoSync()
+				const statusBarHeight = systemInfo.statusBarHeight
+				const navbarHeight = 44
+				this.navbarHeight = statusBarHeight + navbarHeight
+			},
+			handleBack() {
+				uni.navigateTo({
+					url: '/pages/menuPage/index'
+				})
+			},
 			loginOut() {
 				uni.clearStorageSync();
 				uni.clearStorage();
@@ -164,414 +198,456 @@
 				})
 			},
 
-	  confirm(e) {
-		this.examParams.state = e.value[0].value
-		this.examParams.pageNum = 1
-		this.getExamList()
-		this.showSelect = false
-	  },
+			confirm(e) {
+				this.examParams.state = e.value[0].value
+				this.examParams.pageNum = 1
+				this.getExamList()
+				this.showSelect = false
+			},
 
-		changeState(e){
-			this.currentTab = e.index
-			this.examParams.state = e.index == 0?0:2
-			this.examParams.pageNum = 1
-			this.getExamList()
-		},
+			changeState(e) {
+				this.currentTab = e.index
+				this.examParams.state = e.index == 0 ? 0 : 2
+				this.examParams.pageNum = 1
+				this.getExamList()
+			},
 
-      async getSwiper(){
-        const res = await getSwiperList()
-        if(res.code == 200){
-          let list = res.data.list || []
-          if(list.length>0){
-            this.swiperList = list.map(i=>VUE_APP_BASE_URL + '/api/' + i.imgUrl) || []
-          }
-        }else{
-          uni.$u.toast(res.message)
-        }
-      },
+			async getSwiper() {
+				const res = await getSwiperList()
+				if (res.code == 200) {
+					let list = res.data.list || []
+					if (list.length > 0) {
+						this.swiperList = list.map(i => VUE_APP_BASE_URL + '/api/' + i.imgUrl) || []
+					}
+				} else {
+					uni.$u.toast(res.message)
+				}
+			},
 
-      getClass(){
-        getClassList(this.classParams).then(res => {
-					if(res.code == 200) {
-						if(res.data && res.data.list.length > 0){
+			getClass() {
+				getClassList(this.classParams).then(res => {
+					if (res.code == 200) {
+						if (res.data && res.data.list.length > 0) {
 							this.classList = res.data.list
-						}else {
-              this.classList = []
+						} else {
+							this.classList = []
 						}
-					}else{
+					} else {
 						uni.$u.toast(res.message)
 					}
 				})
 			},
-      getExamList(){
-        getExamList(this.examParams).then(res => {
-          if(res.code == 200) {
-            let list = res.data.list?res.data.list: [];
-            if (res.data.pageNum != 1) {
-              this.examList = this.examList.concat(list)
-            } else {
-              this.examList = res.data.list
-            }
-            this.totalPage = res.data.totalPage
-          }else{
-            uni.$u.toast(res.message)
-          }
-        })
-      },
+			getExamList() {
+				getExamList(this.examParams).then(res => {
+					if (res.code == 200) {
+						let list = res.data.list ? res.data.list : [];
+						if (res.data.pageNum != 1) {
+							this.examList = this.examList.concat(list)
+						} else {
+							this.examList = 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';
-      },
+			getImageUrl(logo) {
+				return logo ? VUE_APP_BASE_URL + '/api/' + logo : '/static/defaultCover.jpg';
+			},
 
-      toStudy(item) {
-        uni.setStorageSync("prevPage", '/pages/tabBar/firstPage/firstPage');
-        uni.navigateTo({
-          url: `/pages/tabBar/current/detail?bank=` + encodeURIComponent(JSON.stringify(item))
-        })
-      },
+			toStudy(item) {
+				uni.setStorageSync("prevPage", '/pages/tabBar/firstPage/firstPage');
+				uni.navigateTo({
+					url: `/pages/tabBar/current/detail?bank=` + encodeURIComponent(JSON.stringify(item))
+				})
+			},
 
-      toExam(item){
-		  console.log(item,'item')
-		  if(item.state == 0 && item.examPaper.deadline){
-			const deadline = item.examPaper.deadline
-			const deadlineTime = new Date(deadline).getTime()
-			const currentTime = new Date().getTime()
-			if (currentTime > deadlineTime) {
-			  uni.$u.toast('已超过考试截止时间,不可重新考试')
-			  return
-			}
-		  }
-        if(item.state == 0){
-          uni.showModal({
-            title: '提示',
-            content: item.examPaper.limited == 1?'该考试限制时长为:' + item.examPaper.limitTime + '分钟,进入后开始计时,计时结束自动交卷,是否继续?':'是否确认考试?',
-            success: function (res) {
-              if (res.confirm) {
-                uni.setStorageSync("prevPage", '/pages/tabBar/firstPage/firstPage');
-                uni.navigateTo({
-                  url: `/pages/tabBar/firstPage/exam?bank=` + encodeURIComponent(JSON.stringify(item)) + `&type=` + encodeURIComponent(JSON.stringify(1))
-                })
-              } else if (res.cancel) {
-                console.log('用户点击取消');
-              }
-            }
-          })
-        }else{
-          uni.setStorageSync("prevPage", '/pages/tabBar/firstPage/firstPage');
-          uni.navigateTo({
-            url: `/pages/tabBar/firstPage/exam?bank=` + encodeURIComponent(JSON.stringify(item)) + `&type=` + encodeURIComponent(JSON.stringify(2))
-          })
-        }
-      },
-	  
-		async reExam(item){
-			const t = this
-			if(item.examPaper.deadline){
-				const deadline = item.examPaper.deadline
-				const deadlineTime = new Date(deadline).getTime()
-				const currentTime = new Date().getTime()
-				if (currentTime > deadlineTime) {
-				  uni.$u.toast('已超过考试截止时间,不可重新考试')
-				  return
+			toExam(item) {
+				if (item.state == 0 && item.examPaper.deadline) {
+					const deadline = item.examPaper.deadline
+					const deadlineTime = new Date(deadline).getTime()
+					const currentTime = new Date().getTime()
+					if (currentTime > deadlineTime) {
+						uni.$u.toast('已超过考试截止时间,不可重新考试')
+						return
+					}
 				}
-			}
-			uni.showModal({
-			  title: '提示',
-			  content: '是否重新考试?',
-			  success: async function (res) {
-			    if (res.confirm) {
-			      const res = await postAgainExam({paperId: item.paperId,studentId: uni.getStorageSync('uid')})
-			      if(res.code == 200){
-			      	uni.$u.toast(res.message)
-					t.currentTab = 0
-					t.examParams.state = 0
-			      	t.examParams.pageNum = 1
-			      	t.getExamList()
-			      }else{
-			      	uni.$u.toast(res.message)
-			      }
-			    } else if (res.cancel) {
-			      console.log('用户点击取消');
-			    }
-			  }
-			})
-		},
+				if (item.state == 0) {
+					uni.showModal({
+						title: '提示',
+						content: item.examPaper.limited == 1 ? '该考试限制时长为:' + item.examPaper.limitTime +
+							'分钟,进入后开始计时,计时结束自动交卷,是否继续?' : '是否确认考试?',
+						success: function(res) {
+							if (res.confirm) {
+								uni.setStorageSync("prevPage", '/pages/tabBar/firstPage/firstPage');
+								uni.navigateTo({
+									url: `/pages/tabBar/firstPage/exam?bank=` + encodeURIComponent(JSON
+										.stringify(item)) + `&type=` + encodeURIComponent(JSON
+										.stringify(1))
+								})
+							} else if (res.cancel) {
+								console.log('用户点击取消');
+							}
+						}
+					})
+				} else {
+					uni.setStorageSync("prevPage", '/pages/tabBar/firstPage/firstPage');
+					uni.navigateTo({
+						url: `/pages/tabBar/firstPage/exam?bank=` + encodeURIComponent(JSON.stringify(item)) +
+							`&type=` + encodeURIComponent(JSON.stringify(2))
+					})
+				}
+			},
 
-      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);
+			async reExam(item) {
+				const t = this
+				if (item.examPaper.deadline) {
+					const deadline = item.examPaper.deadline
+					const deadlineTime = new Date(deadline).getTime()
+					const currentTime = new Date().getTime()
+					if (currentTime > deadlineTime) {
+						uni.$u.toast('已超过考试截止时间,不可重新考试')
+						return
+					}
+				}
+				uni.showModal({
+					title: '提示',
+					content: '是否重新考试?',
+					success: async function(res) {
+						if (res.confirm) {
+							const res = await postAgainExam({
+								paperId: item.paperId,
+								studentId: uni.getStorageSync('uid')
+							})
+							if (res.code == 200) {
+								uni.$u.toast(res.message)
+								t.currentTab = 0
+								t.examParams.state = 0
+								t.examParams.pageNum = 1
+								t.getExamList()
+							} else {
+								uni.$u.toast(res.message)
+							}
+						} else if (res.cancel) {
+							console.log('用户点击取消');
+						}
+					}
+				})
+			},
 
-        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}`;
-      },
+			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);
 
-      upper(e) {
-        // console.log(e)
-      },
-      lower(e) {
-        //并且让页码+1,调用获取数据的方法获取第二页数据
-        this.examParams.pageNum++
-        //此处调用自己获取数据列表的方法
-        if (this.examParams.pageNum > this.totalPage){
-          uni.$u.toast('已加载全部数据')
-          return
-        }
-        this.getExamList()
-      },
-      scrollView(e) {
-        // console.log(e)
-      },
+				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}`;
+			},
 
-      toCourses(){
-        uni.switchTab({
-          url: '/pages/tabBar/current/current'
-        })
-      },
+			upper(e) {
+				// console.log(e)
+			},
+			lower(e) {
+				//并且让页码+1,调用获取数据的方法获取第二页数据
+				this.examParams.pageNum++
+				//此处调用自己获取数据列表的方法
+				if (this.examParams.pageNum > this.totalPage) {
+					uni.$u.toast('已加载全部数据')
+					return
+				}
+				this.getExamList()
+			},
+			scrollView(e) {
+				// console.log(e)
+			},
+
+			toCourses() {
+				uni.switchTab({
+					url: '/pages/tabBar/current/current'
+				})
+			},
 
 		}
 	}
-
 </script>
 
-<style lang="scss">
-.navBarBox .navBar {
-	background-color:#fff;
-	  height: 50px;
-	  display: flex;
-	  flex-direction: row;
-	  justify-content: center;
-	  align-items: center;
-  box-shadow: 0 3px 12px rgba(0,0,0,0.05);
-	
-}
-.fix{
-	position: sticky;
-	top: 0;
-	left: 0;
-	right: 0;
-	width: 100%;
-	z-index: 1;
-}
-.barText{
-  /* text-align: center; */
-  font-size: 16px;
-  font-weight: 600;
-  flex: 2;
-  margin-left: 45%;
-}
-.statusBar{
-	background-color:lightgrey;
-}
-.m-p-15{
-  width: 100%;
-  box-sizing: border-box;
-  padding: 0 15px;
-}
-.card{
-  width: 100%;
-  margin-bottom: 40rpx;
+<style lang="scss" scoped>
+	.custom-navbar {
+		position: fixed;
+		top: 0;
+		left: 0;
+		right: 0;
+		z-index: 999;
+		background: #ffffff;
+		border-bottom: 1px solid #f0f0f0;
 
-  .card-t{
-    width: 100%;
-    padding: 0 6rpx;
-    box-sizing: border-box;
-    display: flex;
-    align-items: center;
-    justify-content: space-between;
-    margin-bottom: 20rpx;
-
-    .card-t-l{
-      font-size: 36rpx;
-      font-weight: bold;
-    }
-    .card-t-r{
-      color: #999;
-      cursor: pointer;
-	  font-size: 28rpx;
-    }
-    .uni-stat__select{
-		display: flex;
-		align-items: center;
-		justify-content: center;
-		padding: 2rpx 20rpx;
-		border: 1rpx solid #ccc;
-		border-radius: 99rpx;
-		background: #fff;
-		cursor: pointer;
-		
-		
-		text{
-			color: #999;
-			font-size: 28rpx;
-			margin-right: 6rpx;
+		.navbar-content {
+			display: flex;
+			align-items: center;
+			justify-content: center;
+			height: 44px;
+			padding-top: var(--status-bar-height);
 		}
-    }
-  }
 
-  .card-c{
-    background: #fff;
-    border-radius: 20rpx;
-    padding: 15px;
+		.nav-left {
+			flex-shrink: 0;
+			width: 80px;
+			padding-left: 15px;
+			box-sizing: border-box;
+		}
 
-	::v-deep .u-empty{
-	  margin-top: 40rpx !important;
+		.back-btn {
+			display: flex;
+			align-items: center;
+			padding: 8px 12px 8px 0;
+		}
+
+		.back-text {
+			font-size: 16px;
+			color: #000000;
+		}
+
+		.navbar-title {
+			flex: 1;
+			font-size: 16px;
+			text-align: center;
+			font-weight: bold;
+			color: #000000;
+		}
+
+		.nav-right {
+			flex-shrink: 0;
+			width: 80px;
+		}
+
+
 	}
-	
-    .card-i{
-      padding-bottom: 15px;
-      margin-bottom: 15px;
-      border-bottom: 1px solid #f0f0f0;
-      position: relative;
-      display: flex;
-      align-items: flex-start;
-      box-sizing: border-box;
 
-      &:last-of-type{
-        margin-bottom: 0;
-        padding-bottom: 0;
-        border-bottom: none;
-      }
-      .card-i-t{
-        position: absolute;
-        width: 250rpx;
-        height: 30px;
-        border-radius: 8rpx;
-        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: 36rpx;
-            margin-bottom: 10rpx;
-            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;
+	.page-content {
+		min-height: calc(100vh - 44px);
+	}
 
-          ::v-deep .u-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);
-          }
-        }
-      }
-    }
-  }
-  .card-d{
-    background: none;
-    padding: 0 0 15px;
-    .paper-card{
-      background: #fff;
-      margin-bottom: 15px;
-      padding: 15px;
-      box-sizing: border-box;
-      position: relative;
-      border-radius: 20rpx;
+	.m-p-15 {
+		width: 100%;
+		box-sizing: border-box;
+		padding: 0 15px;
+	}
 
-      &:last-of-type{
-        margin-bottom: 0;
-      }
+	.card {
+		width: 100%;
+		margin-bottom: 40rpx;
 
-      .paper-card-t{
-        font-size: 36rpx;
-        margin-bottom: 10rpx;
-        font-family: "PingFang SC";
-        font-weight: 800;
-        white-space: nowrap;
-        overflow: hidden;
-        text-overflow: ellipsis;
-
-        .blue{
-          font-size: 32rpx;
-          color: #0f7ff9
-        }
-
-        .green{
-          font-size: 32rpx;
-          color: #5ac725
-        }
-        .red{
-          font-size: 32rpx;
-          color: #f56c6c
-        }
-      }
-
-		.tag-area{
+		.card-t {
 			width: 100%;
-			display: flex;
-			
-			::v-deep .u-tag-wrapper{
-				margin-right: 10rpx;
-			}
-		}
-
-      .paper-card-b{
-        display: flex;
-        align-items: flex-end;
-        justify-content: space-between;
-
-
-		.btn-area{
+			padding: 0 6rpx;
+			box-sizing: border-box;
 			display: flex;
 			align-items: center;
-			
-			::v-deep .u-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);
+			justify-content: space-between;
+			margin-bottom: 20rpx;
+
+			.card-t-l {
+				font-size: 36rpx;
+				font-weight: bold;
 			}
-		}
-		.btn-area2{
-			display: flex;
-			align-items: center;
-			
-			::v-deep .u-button{
-				width: 150rpx;
-				margin: 0;
-				
-				&:last-of-type{
-					box-shadow: 3px 3px 12px rgba(51,133,217,.3), -2px -2px 6px #fff;
-					border: 1px solid rgba(255,255,255,.8);
-					margin-left: 20rpx;
+
+			.card-t-r {
+				color: #999;
+				cursor: pointer;
+				font-size: 28rpx;
+			}
+
+			.uni-stat__select {
+				display: flex;
+				align-items: center;
+				justify-content: center;
+				padding: 2rpx 20rpx;
+				border: 1rpx solid #ccc;
+				border-radius: 99rpx;
+				background: #fff;
+				cursor: pointer;
+
+
+				text {
+					color: #999;
+					font-size: 28rpx;
+					margin-right: 6rpx;
 				}
 			}
 		}
-      }
-    }
-  }
-}
 
-.badge span{
-	text-align: center;
-	width: 100%;
-}
+		.card-c {
+			background: #fff;
+			border-radius: 20rpx;
+			padding: 15px;
 
+			::v-deep .u-empty {
+				margin-top: 40rpx !important;
+			}
+
+			.card-i {
+				padding-bottom: 15px;
+				margin-bottom: 15px;
+				border-bottom: 1px solid #f0f0f0;
+				position: relative;
+				display: flex;
+				align-items: flex-start;
+				box-sizing: border-box;
+
+				&:last-of-type {
+					margin-bottom: 0;
+					padding-bottom: 0;
+					border-bottom: none;
+				}
+
+				.card-i-t {
+					position: absolute;
+					width: 250rpx;
+					height: 30px;
+					border-radius: 8rpx;
+					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: 36rpx;
+							margin-bottom: 10rpx;
+							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;
+
+						::v-deep .u-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);
+						}
+					}
+				}
+			}
+		}
+
+		.card-d {
+			background: none;
+			padding: 0 0 15px;
+
+			.paper-card {
+				background: #fff;
+				margin-bottom: 15px;
+				padding: 15px;
+				box-sizing: border-box;
+				position: relative;
+				border-radius: 20rpx;
+
+				&:last-of-type {
+					margin-bottom: 0;
+				}
+
+				.paper-card-t {
+					font-size: 36rpx;
+					margin-bottom: 10rpx;
+					font-family: "PingFang SC";
+					font-weight: 800;
+					white-space: nowrap;
+					overflow: hidden;
+					text-overflow: ellipsis;
+
+					.blue {
+						font-size: 32rpx;
+						color: #0f7ff9
+					}
+
+					.green {
+						font-size: 32rpx;
+						color: #5ac725
+					}
+
+					.red {
+						font-size: 32rpx;
+						color: #f56c6c
+					}
+				}
+
+				.tag-area {
+					width: 100%;
+					display: flex;
+
+					::v-deep .u-tag-wrapper {
+						margin-right: 10rpx;
+					}
+				}
+
+				.paper-card-b {
+					display: flex;
+					align-items: flex-end;
+					justify-content: space-between;
+
+
+					.btn-area {
+						display: flex;
+						align-items: center;
+
+						::v-deep .u-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);
+						}
+					}
+
+					.btn-area2 {
+						display: flex;
+						align-items: center;
+
+						::v-deep .u-button {
+							width: 150rpx;
+							margin: 0;
+
+							&:last-of-type {
+								box-shadow: 3px 3px 12px rgba(51, 133, 217, .3), -2px -2px 6px #fff;
+								border: 1px solid rgba(255, 255, 255, .8);
+								margin-left: 20rpx;
+							}
+						}
+					}
+				}
+			}
+		}
+	}
+
+	.badge span {
+		text-align: center;
+		width: 100%;
+	}
 </style>
\ No newline at end of file

--
Gitblit v1.9.2