zhxy-jzd/src/pages/base/club/index - 副本.vue

434 lines
11 KiB
Vue
Raw Normal View History

<template>
<BasicLayout>
<view class="p-15">
<!-- 顶部蓝色背景横幅 -->
<view class="banner-section">
<view class="banner-placeholder">
<view class="banner-content">
<text class="banner-title">兴趣课程</text>
<text class="banner-school">泸州市实验小学城西学校</text>
</view>
</view>
</view>
<!-- 课程类型选项卡 -->
<view class="my-course-section">
<view class="section-title">
<u-icon name="calendar" size="18" color="#1976d2"></u-icon>
<text class="title-text">我的课程</text>
</view>
<view class="tabs-container">
<view
class="tab-item"
:class="{ 'active': activeTab === 'basketball' }"
@click="switchTab('basketball')"
>
<text>篮球</text>
</view>
<view
class="tab-item"
:class="{ 'active': activeTab === 'football' }"
@click="switchTab('football')"
>
<text>足球</text>
</view>
</view>
<!-- 篮球课程信息卡片 -->
<view class="course-card" v-if="activeTab === 'basketball'">
<view class="course-image-placeholder"></view>
<view class="course-info">
<text class="course-name">篮球</text>
<view class="course-detail">
<text class="detail-label">开课老师</text>
<text class="detail-value">叶老师</text>
</view>
<view class="course-detail">
<text class="detail-label">上课地点</text>
<text class="detail-value">教学楼3楼</text>
</view>
</view>
</view>
<!-- 足球课程信息卡片 -->
<view class="course-card" v-if="activeTab === 'football'">
<view class="course-image-placeholder"></view>
<view class="course-info">
<text class="course-name">足球</text>
<view class="course-detail">
<text class="detail-label">开课老师</text>
<text class="detail-value">王老师</text>
</view>
<view class="course-detail">
<text class="detail-label">上课地点</text>
<text class="detail-value">操场</text>
</view>
</view>
</view>
</view>
<!-- 教学计划 -->
<view class="teaching-plan-section">
<view class="section-title-bar">
<text class="title-text">教学计划</text>
</view>
<!-- 篮球教学计划 -->
<view class="plan-content" v-if="activeTab === 'basketball'">
<view class="plan-item">
<text class="plan-phase">第一阶段</text>
<text class="plan-desc">了解机器人的组成知道每个零件的名称及用途认识机器人的结构</text>
</view>
<view class="plan-item">
<text class="plan-phase">第二阶段</text>
<text class="plan-desc">在老师的引导下分组搭建机器人注意引导幼儿理解机器人的数据线连接和遥控器方向的关系</text>
</view>
<view class="plan-item">
<text class="plan-phase">第三阶段</text>
<text class="plan-desc">学会操控机器人的移动方向并练习把魔方根据要求推到指定位置</text>
</view>
<view class="plan-item">
<text class="plan-phase">第四阶段</text>
<text class="plan-desc">组织幼儿参加创客机器人比赛</text>
</view>
</view>
<!-- 足球教学计划 -->
<view class="plan-content" v-if="activeTab === 'football'">
<view class="plan-item">
<text class="plan-phase">第一阶段</text>
<text class="plan-desc">基础训练包括传球控球和基本规则学习</text>
</view>
<view class="plan-item">
<text class="plan-phase">第二阶段</text>
<text class="plan-desc">进阶技巧学习包括带球跑动射门和防守基础</text>
</view>
<view class="plan-item">
<text class="plan-phase">第三阶段</text>
<text class="plan-desc">团队配合训练学习简单的战术配合和位置意识</text>
</view>
<view class="plan-item">
<text class="plan-phase">第四阶段</text>
<text class="plan-desc">小型比赛实践培养学生的团队协作能力和比赛经验</text>
</view>
</view>
</view>
<!-- 课堂随拍 -->
<view class="class-photos-section">
<view class="section-title-bar">
<text class="title-text">课堂随拍</text>
</view>
<!-- 篮球课堂照片 -->
<view class="photos-grid" v-if="activeTab === 'basketball'">
<view class="photo-placeholder"></view>
<view class="photo-placeholder"></view>
<view class="photo-placeholder"></view>
<view class="photo-placeholder"></view>
</view>
<!-- 足球课堂照片 -->
<view class="photos-grid" v-if="activeTab === 'football'">
<view class="photo-placeholder football-photo"></view>
<view class="photo-placeholder football-photo"></view>
<view class="photo-placeholder football-photo"></view>
<view class="photo-placeholder football-photo"></view>
</view>
</view>
</view>
<template #bottom>
<view class="white-bg-color py-5">
<view class="flex-row items-center pb-10 pt-5">
<u-button text="取消" class="ml-15 mr-7" :plain="true" @click="navigateBack"/>
<u-button text="退课申请" class="mr-15 mr-7" type="primary" @click="submit"/>
</view>
</view>
</template>
</BasicLayout>
</template>
<script lang="ts" setup>
import { navigateBack } from "@/utils/uniapp";
import { ref } from "vue";
import { xkFindDqXsApi } from "@/api/base/server";
import { useUserStore } from "@/store/modules/user";
const { getCurXs } = useUserStore();
// 当前激活的选项卡,默认为篮球
const activeTab = ref('basketball');
// 切换选项卡
function switchTab(tab: string) {
activeTab.value = tab;
}
function submit() {
const courseName = activeTab.value === 'basketball' ? '篮球' : '足球';
uni.showModal({
title: '确认退课',
content: `确定要退出${courseName}课程吗?`,
success: (res) => {
if (res.confirm) {
uni.showToast({
title: `${courseName}退课申请已提交`,
icon: 'none'
});
}
}
});
}
onMounted(async () => {
// Make onMounted async
xkFindDqXsApi({
xsId: getCurXs.id,
xklxId: '816059832'
}).then(res => {
// 根据接口返回的result判断是否已报名
if (res && res.resultCode === 1) {
console.log(res)
} else {
// 接口调用成功但返回错误
console.warn("检查获取当前学期俱乐部接口返回错误:", res);
}
})
.catch((error) => {
// 接口调用失败
console.error("调用获取当前学期俱乐部接口失败:", error);
});
});
</script>
<style lang="scss" scoped>
/* 顶部蓝色背景横幅 */
.banner-section {
margin-bottom: 15px;
.banner-placeholder {
height: 120px;
background-color: #3986FF;
border-radius: 10px;
display: flex;
justify-content: center;
align-items: center;
.banner-content {
text-align: center;
.banner-title {
font-size: 22px;
color: #ffffff;
font-weight: 500;
margin-bottom: 8px;
display: block;
}
.banner-school {
font-size: 14px;
color: rgba(255, 255, 255, 0.9);
}
}
}
}
/* 我的课程 */
.my-course-section {
margin-bottom: 15px;
.section-title {
display: flex;
align-items: center;
margin-bottom: 12px;
.title-text {
font-size: 16px;
font-weight: 500;
color: #303133;
margin-left: 6px;
}
}
.tabs-container {
display: flex;
border-bottom: 1px solid #ebeef5;
margin-bottom: 15px;
.tab-item {
padding: 12px 0;
margin-right: 20px;
position: relative;
text {
color: #606266;
font-size: 15px;
}
&.active {
text {
color: #1976d2;
font-weight: 500;
}
&::after {
content: '';
position: absolute;
bottom: 0;
left: 0;
right: 0;
height: 2px;
background-color: #1976d2;
}
}
}
}
.course-card {
background-color: #ffffff;
border-radius: 10px;
padding: 15px;
display: flex;
align-items: center;
box-shadow: 0 1px 5px rgba(0, 0, 0, 0.05);
.course-image-placeholder {
width: 120px;
height: 100px;
background-color: #f0f0f0;
border-radius: 6px;
margin-right: 15px;
flex-shrink: 0;
}
.course-info {
flex: 1;
.course-name {
font-size: 18px;
font-weight: 500;
color: #303133;
margin-bottom: 10px;
}
.course-detail {
display: flex;
margin-bottom: 6px;
&:last-child {
margin-bottom: 0;
}
.detail-label {
color: #606266;
font-size: 14px;
}
.detail-value {
color: #303133;
font-size: 14px;
}
}
}
}
}
/* 教学计划 */
.teaching-plan-section {
margin-bottom: 15px;
background-color: #ffffff;
border-radius: 10px;
overflow: hidden;
box-shadow: 0 1px 5px rgba(0, 0, 0, 0.05);
.section-title-bar {
padding: 12px 15px;
border-bottom: 1px solid #f2f2f2;
.title-text {
font-size: 16px;
font-weight: 500;
color: #303133;
}
}
.plan-content {
padding: 15px;
.plan-item {
margin-bottom: 15px;
&:last-child {
margin-bottom: 0;
}
}
.plan-phase {
font-size: 15px;
font-weight: 500;
color: #303133;
}
.plan-desc {
font-size: 14px;
color: #606266;
line-height: 1.5;
}
}
}
/* 课堂随拍 */
.class-photos-section {
background-color: #ffffff;
border-radius: 10px;
overflow: hidden;
box-shadow: 0 1px 5px rgba(0, 0, 0, 0.05);
margin-bottom: 60px;
.section-title-bar {
padding: 12px 15px;
border-bottom: 1px solid #f2f2f2;
.title-text {
font-size: 16px;
font-weight: 500;
color: #303133;
}
}
.photos-grid {
display: flex;
flex-wrap: wrap;
padding: 15px;
.photo-placeholder {
width: calc(50% - 8px);
height: 110px;
background-color: #f0f0f0;
border-radius: 6px;
margin-right: 8px;
margin-bottom: 8px;
&:nth-child(2n) {
margin-right: 0;
}
&:nth-child(3), &:nth-child(4) {
margin-bottom: 0;
}
&.football-photo {
background-color: #f5f5f5;
}
}
}
}
</style>