From 9542d6812f2864d68a9133336c29bdb778946dac Mon Sep 17 00:00:00 2001
From: lion <120344285@qq.com>
Date: Tue, 19 Aug 2025 15:00:35 +0800
Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
packages/course/detail.vue | 54 +++++++++++++++++++++++++++++++
packages/courseCalendar/index.vue | 29 ++++-------------
packages/library/index.vue | 29 ++++++++++-------
packages/sign/index.vue | 10 +++++-
4 files changed, 87 insertions(+), 35 deletions(-)
diff --git a/packages/course/detail.vue b/packages/course/detail.vue
index 15cad5e..29c7333 100644
--- a/packages/course/detail.vue
+++ b/packages/course/detail.vue
@@ -27,6 +27,14 @@
我要报名
+
+
+
+
+
+ {{ info.url_title }}
+
+
@@ -242,6 +250,15 @@
url: '/packages/register/index?id=' + this.course_id
})
},
+
+ // 打开webview页面
+ openWebview() {
+ if (this.info.url) {
+ uni.navigateTo({
+ url: `/packages/webview/index?type=3&url=${this.info.url}`
+ })
+ }
+ },
}
@@ -338,6 +355,43 @@
}
}
+ .floating-btn {
+ position: fixed;
+ bottom: 180rpx;
+ right: 0rpx;
+ z-index: 10;
+ width: 100%;
+ display: flex;
+ justify-content: center;
+ .url-container {
+ width: 614rpx;
+ height: 172rpx;
+ position: relative;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ overflow: hidden;
+ padding: 23rpx 100rpx 40rpx 50rpx;
+
+ .url-bg {
+ position: absolute;
+ top: 0;
+ left: 0;
+ width: 100%;
+ height: 100%;
+ z-index: 1;
+ }
+
+ .url-text {
+ font-size: 27rpx;
+ color: #28499a;
+ text-align: left;
+ position: relative;
+ z-index: 2;
+ }
+ }
+ }
+
.modal {
::v-deep .u-drawer-bottom {
border-radius: 40rpx;
diff --git a/packages/courseCalendar/index.vue b/packages/courseCalendar/index.vue
index b8f8d50..fbc35af 100644
--- a/packages/courseCalendar/index.vue
+++ b/packages/courseCalendar/index.vue
@@ -55,8 +55,8 @@
{{ ev.title }}
- {{ getCourseTypeName(ev.type) }}
- | {{ formatDateTimeRange(ev.start_time, ev.end_time) }}
+
+ {{ formatDateTimeRange(ev.start_time, ev.end_time) }}
@@ -78,10 +78,10 @@
-
+
开始时间
{{ formatDateTime(detailData.start_time) }}
@@ -233,33 +233,16 @@ export default {
},
showCourseDetail(ev) {
// 跳转逻辑:
- // type=1 课程:
- // - 有 end_time 且当前时间 <= end_time:跳课程详情 packages/course/detail?id=course_id
- // - 否则:若 url 有值跳 webview;否则跳课程详情
+ // type=1 课程:直接跳转课程详情页面
// type=3 自定义事件:弹出详情,使用 v-html 渲染 content
// type=4 资讯:跳 webview
const type = ev.type
if (type === 1) {
- const now = new Date()
- const end = ev.end_time ? this.parseDateTime(ev.end_time) : null
- const inTime = end ? (now.getTime() <= end.getTime()) : true
- if (inTime) {
- if (ev.course_id) {
- uni.navigateTo({ url: `/packages/course/detail?id=${ev.course_id}` })
- return
- }
- }
- // 超时或无 end_time:优先 url
- if (ev.url) {
- const encoded = ev.url
- uni.navigateTo({ url: `/packages/webview/index?type=3&url=${encoded}` })
- return
- }
if (ev.course_id) {
uni.navigateTo({ url: `/packages/course/detail?id=${ev.course_id}` })
return
}
- // 兜底:弹窗
+ // 没有 course_id 则弹窗兜底
this.detailData = ev
this.showDetail = true
return
diff --git a/packages/library/index.vue b/packages/library/index.vue
index baa4223..e3e2d69 100644
--- a/packages/library/index.vue
+++ b/packages/library/index.vue
@@ -102,7 +102,6 @@
// 加载分类数据
loadCategories() {
this.$u.api.bookOther().then(res => {
- console.log('分类接口返回数据:', res);
if (res && res.category) {
// 构建分类列表,第一个是"全部"
const categories = [{
@@ -112,16 +111,24 @@
}];
// 处理返回的分类数据(对象格式:{id: name})
- if (typeof res.category === 'object' && !Array.isArray(res.category)) {
- Object.keys(res.category).forEach(categoryId => {
- const categoryName = res.category[categoryId];
- categories.push({
- name: categoryName,
- value: categoryName,
- id: categoryId
- });
+ // if (typeof res.category === 'object' && !Array.isArray(res.category)) {
+ // Object.keys(res.category).forEach(categoryId => {
+ // const categoryName = res.category[categoryId];
+ // categories.push({
+ // name: categoryName,
+ // value: categoryName,
+ // id: categoryId
+ // });
+ // });
+ // }
+ res.category.map((item,index) => {
+ console.log(item,index)
+ categories.push({
+ name: item,
+ value: item,
+ id: index
});
- }
+ });
this.tabsList = categories;
console.log('设置分类列表:', this.tabsList);
@@ -156,7 +163,7 @@
// 添加分类筛选
if (this.currentTab > 0 && this.tabsList[this.currentTab]) {
- params.category = this.tabsList[this.currentTab].id;
+ params.category = this.tabsList[this.currentTab].name;
console.log('使用分类筛选:', this.tabsList[this.currentTab]);
}
diff --git a/packages/sign/index.vue b/packages/sign/index.vue
index 513e4f0..44fc8ab 100644
--- a/packages/sign/index.vue
+++ b/packages/sign/index.vue
@@ -156,8 +156,16 @@ export default {
const res = await this.$u.api.myCourseContent({
date: this.course.date
});
- this.courseContentList = res.list.filter(item => item.id != this.course.id)
+ // 检查返回的数据是否为空
+ if (!res.list || res.list.length === 0) {
+ // 如果没有课程数据,禁用签到按钮
+ this.canCheckin = false;
+ this.courseContentList = [];
+ return;
+ }
+
+ this.courseContentList = res.list.filter(item => item.id != this.course.id)
},
async checkPermissionAndInit() {
console.log('开始检查权限...')