diff --git a/src/api/base/server.ts b/src/api/base/server.ts index 4bb95bd..5120982 100644 --- a/src/api/base/server.ts +++ b/src/api/base/server.ts @@ -62,6 +62,13 @@ export const xsXkListApi = async (params: any) => { return await get("/mobile/jz/xsxk/list", params); }; +/** + * 查询学生选课列表 + */ +export const xsXkkcListApi = async (params: any) => { + return await get("/mobile/jz/xkkc/list", params); +}; + /** * 查询学生考试场次 */ diff --git a/src/pages/base/components/XkCountdown/index.vue b/src/pages/base/components/XkCountdown/index.vue new file mode 100644 index 0000000..e2a33de --- /dev/null +++ b/src/pages/base/components/XkCountdown/index.vue @@ -0,0 +1,208 @@ + + + + + \ No newline at end of file diff --git a/src/pages/base/components/XkPicker/index.vue b/src/pages/base/components/XkPicker/index.vue new file mode 100644 index 0000000..2ea5272 --- /dev/null +++ b/src/pages/base/components/XkPicker/index.vue @@ -0,0 +1,196 @@ + + + + + \ No newline at end of file diff --git a/src/pages/base/components/XsPicker/index.vue b/src/pages/base/components/XsPicker/index.vue new file mode 100644 index 0000000..ca4c860 --- /dev/null +++ b/src/pages/base/components/XsPicker/index.vue @@ -0,0 +1,353 @@ + + + + + \ No newline at end of file diff --git a/src/pages/base/course-selection/club-selection copy.vue b/src/pages/base/course-selection/club-selection copy.vue index 2fcf235..8210a6b 100644 --- a/src/pages/base/course-selection/club-selection copy.vue +++ b/src/pages/base/course-selection/club-selection copy.vue @@ -14,7 +14,7 @@ @@ -132,7 +132,7 @@ > diff --git a/src/pages/base/course-selection/club-selection.vue b/src/pages/base/course-selection/club-selection.vue index 46eb4c8..b324946 100644 --- a/src/pages/base/course-selection/club-selection.vue +++ b/src/pages/base/course-selection/club-selection.vue @@ -3,75 +3,29 @@ - - - {{ kcData.xkmc }} - 选课信息 - - - + + - - - - - - {{ curXs.xm }} - {{ curXs.njmc }} {{ curXs.bjmc }} - - 切换 - - - - - + + + - + {{ course.kcmc }} - 报名情况: + 上课人数: {{ course.ybmr }} - | {{ course.maxNum }} 详情暂无课程数据 - - - - - - 点击报名 (已选{{ selectedCoursesCount }}门) - - 点击报名 - - - - - - - - - 选择学生 - - - - - - - - - {{ xs.xm }} - {{ xs.njmc }} {{ xs.bjmc }} - - - - - - - - + + @@ -775,97 +192,6 @@ onBeforeUnmount(() => { flex-direction: column; gap: 15px; - .title-section { - .title { - font-size: 24px; - font-weight: bold; - } - - .subtitle { - font-size: 14px; - opacity: 0.8; - } - } - - // 学生选择栏样式 - .student-selector-bar { - display: flex; - align-items: center; - background-color: rgba(255, 255, 255, 0.1); - border-radius: 10px; - padding: 10px; - - .user-avatar { - width: 40px; - height: 40px; - border-radius: 50%; - background-color: #fff; - overflow: hidden; - margin-right: 10px; - } - - .student-info { - flex: 1; - display: flex; - flex-direction: column; - - .student-name { - font-size: 16px; - font-weight: 500; - margin-bottom: 2px; - } - - .student-class { - font-size: 12px; - opacity: 0.8; - } - } - - .switch-btn { - padding: 4px 12px; - background-color: rgba(255, 255, 255, 0.2); - color: #fff; - border-radius: 20px; - font-size: 13px; - } - } - - .countdown-section { - .countdown-title { - font-size: 14px; - margin-bottom: 8px; - } - - .countdown-timer { - display: flex; - align-items: center; - - .time-block { - background-color: rgba(255, 255, 255, 0.2); - border-radius: 6px; - min-width: 40px; - padding: 5px 8px; - text-align: center; - - .time-value { - font-size: 20px; - font-weight: bold; - display: block; - } - - .time-unit { - font-size: 12px; - opacity: 0.9; - } - } - - .time-separator { - font-size: 20px; - font-weight: bold; - margin: 0 5px; - } - } - } } } @@ -959,82 +285,6 @@ onBeforeUnmount(() => { } } -/* 学生选择器弹窗样式 */ -.student-selector { - background-color: #ffffff; - border-top-left-radius: 12px; - border-top-right-radius: 12px; - padding-bottom: 20px; - - .selector-header { - display: flex; - justify-content: space-between; - align-items: center; - padding: 15px; - border-bottom: 1px solid #f2f2f2; - - .selector-title { - font-size: 16px; - font-weight: 500; - color: #303133; - } - } - - .student-list { - padding: 0 15px; - - .student-item { - display: flex; - align-items: center; - padding: 15px 0; - border-bottom: 1px solid #f2f2f2; - - &:last-child { - border-bottom: none; - } - - &-active { - background-color: rgba(64, 158, 255, 0.05); - } - - .student-avatar { - width: 45px; - height: 45px; - border-radius: 50%; - background-color: #f0f0f0; - overflow: hidden; - flex-shrink: 0; - } - - .student-info { - flex: 1; - margin-left: 12px; - - .student-name { - font-size: 15px; - font-weight: 500; - color: #303133; - margin-bottom: 4px; - } - - .student-class { - font-size: 13px; - color: #606266; - } - } - } - } -} - -/* 全局图片样式 */ -.w-full { - width: 100%; -} - -.h-full { - height: 100%; -} - // 暂无数据样式 .empty-course-list { display: flex; diff --git a/src/pages/base/course-selection/enrolled.vue b/src/pages/base/course-selection/enrolled.vue index daa32d6..36f007d 100644 --- a/src/pages/base/course-selection/enrolled.vue +++ b/src/pages/base/course-selection/enrolled.vue @@ -18,7 +18,7 @@ @@ -164,7 +164,7 @@ const studentInfo = ref({ xm: getData.value.studentInfo.xm, njmc: getData.value.studentInfo.njmc, bjmc: getData.value.studentInfo.bjmc, - avatar: getData.value.studentInfo.avatar, + xstxUrl: getData.value.studentInfo.xstxUrl, }); // 已报名课程信息 diff --git a/src/pages/base/course-selection/index.vue b/src/pages/base/course-selection/index.vue index 3ae027b..860a208 100644 --- a/src/pages/base/course-selection/index.vue +++ b/src/pages/base/course-selection/index.vue @@ -14,7 +14,7 @@ @@ -129,7 +129,7 @@ > diff --git a/src/pages/base/home/index.vue b/src/pages/base/home/index.vue index ee1e696..129c70a 100644 --- a/src/pages/base/home/index.vue +++ b/src/pages/base/home/index.vue @@ -8,35 +8,15 @@ - - - - - - - {{ curXs.xm }} - - - {{ curXs.njmc }} {{ curXs.bjmc }} - - - - - - - 新增学生 - - - - 切换 - - + + + + + + 新增学生 - - - @@ -91,51 +71,16 @@ - - - - - 选择学生 - - - - - - - - - - - {{ xs.xm }} - {{ xs.njmc }} {{ xs.bjmc }} - - - - - - - - @@ -337,99 +251,29 @@ onMounted(async () => { } } - .user-content { + .glxs-btn { + position: absolute; + right: 0; + bottom: 0; display: flex; align-items: center; - position: relative; - z-index: 2; + justify-content: center; + gap: 4px; + padding: 8px 16px; + background: linear-gradient(135deg, #4A90E2 0%, #357ABD 100%); + color: #ffffff; + border-top-left-radius: 20px; + border-bottom-right-radius: 20px; + font-size: 13px; + font-weight: 500; + box-shadow: 0 4px 12px rgba(74, 144, 226, 0.3); + transition: all 0.3s ease; + flex-shrink: 0; + min-width: 60px; + height: 16px; - .user-avatar { - position: relative; - width: 70px; - height: 70px; - border-radius: 50%; - overflow: hidden; - box-shadow: 0 4px 16px rgba(74, 144, 226, 0.3); - border: 3px solid #ffffff; - flex-shrink: 0; - - .avatar-img { - width: 100%; - height: 100%; - object-fit: cover; - } - - .avatar-ring { - position: absolute; - top: -3px; - left: -3px; - width: calc(100% + 6px); - height: calc(100% + 6px); - border-radius: 50%; - border: 2px solid rgba(74, 144, 226, 0.3); - animation: pulse 2s infinite; - } - } - - .user-details { - flex: 1; - margin-left: 15px; - display: flex; - flex-direction: column; - justify-content: center; - - .user-name { - font-size: 18px; - font-weight: 600; - color: white; - margin-bottom: 8px; - line-height: 1.2; - } - - .user-class-container { - display: flex; - align-items: center; - - .class-tag { - background: linear-gradient(135deg, #4A90E2 0%, #357ABD 100%); - color: #ffffff; - padding: 4px 12px; - border-radius: 12px; - font-size: 12px; - font-weight: 500; - box-shadow: 0 2px 8px rgba(74, 144, 226, 0.3); - - .user-class { - line-height: 1; - } - } - } - } - - .switch-btn { - display: flex; - align-items: center; - justify-content: center; - gap: 4px; - padding: 8px 16px; - background: linear-gradient(135deg, #4A90E2 0%, #357ABD 100%); - color: #ffffff; - border-radius: 20px; - font-size: 13px; - font-weight: 500; - box-shadow: 0 4px 12px rgba(74, 144, 226, 0.3); - transition: all 0.3s ease; - flex-shrink: 0; - min-width: 60px; - height: 16px; - - &:active { - transform: scale(0.95); - } - - text { - line-height: 1; - } + text { + line-height: 1; } } } @@ -662,160 +506,12 @@ onMounted(async () => { } } -/* 学生选择器弹窗样式 */ -.student-selector { - background: linear-gradient(135deg, #ffffff 0%, #f8faff 100%); - border-top-left-radius: 20px; - border-top-right-radius: 20px; - padding-bottom: 30px; - - .selector-header { - display: flex; - justify-content: space-between; - align-items: center; - padding: 20px; - border-bottom: 1px solid #f0f2f5; - - .selector-title { - font-size: 18px; - font-weight: 600; - color: #303133; - line-height: 1; - } - - .close-btn { - width: 32px; - height: 32px; - background-color: #f5f7fa; - border-radius: 50%; - display: flex; - align-items: center; - justify-content: center; - transition: all 0.3s ease; - flex-shrink: 0; - - &:active { - transform: scale(0.9); - background-color: #e6e8eb; - } - } - } - - .student-list { - padding: 0 20px; - - .student-item { - display: flex; - align-items: center; - padding: 16px 0; - border-bottom: 1px solid #f5f7fa; - transition: all 0.3s ease; - border-radius: 12px; - margin-bottom: 8px; - - &:last-child { - border-bottom: none; - margin-bottom: 0; - } - - &-active { - background: linear-gradient(135deg, rgba(74, 144, 226, 0.08) 0%, rgba(53, 122, 189, 0.05) 100%); - padding: 16px 12px; - } - - .student-avatar { - width: 50px; - height: 50px; - border-radius: 50%; - overflow: hidden; - flex-shrink: 0; - box-shadow: 0 2px 8px rgba(74, 144, 226, 0.15); - border: 2px solid #ffffff; - - .avatar-img { - width: 100%; - height: 100%; - object-fit: cover; - } - } - - .student-info { - flex: 1; - margin-left: 15px; - display: flex; - flex-direction: column; - justify-content: center; - min-width: 0; - - .student-name { - font-size: 16px; - font-weight: 600; - color: #303133; - margin-bottom: 4px; - line-height: 1.2; - } - - .student-class { - font-size: 13px; - color: #606266; - font-weight: 400; - line-height: 1; - } - } - - .check-icon { - width: 24px; - height: 24px; - border-radius: 50%; - background: linear-gradient(135deg, #4A90E2 0%, #357ABD 100%); - display: flex; - align-items: center; - justify-content: center; - box-shadow: 0 2px 8px rgba(74, 144, 226, 0.3); - flex-shrink: 0; - } - } - } -} - -/* 动画效果 */ -@keyframes pulse { - 0% { - transform: scale(1); - opacity: 1; - } - 50% { - transform: scale(1.05); - opacity: 0.7; - } - 100% { - transform: scale(1); - opacity: 1; - } -} - -@keyframes fadeInUp { - from { - opacity: 0; - transform: translateY(30px); - } - to { - opacity: 1; - transform: translateY(0); - } -} - /* 响应式优化 */ @media (max-width: 375px) { .content-container { padding: 12px; } - - .user-info-card .user-content .user-avatar { - width: 60px; - height: 60px; - } - + .grid-menu .grid-item { padding: 15px 8px; }