From eefe1e37f6111a4a138efd382d3b1382a988d8a1 Mon Sep 17 00:00:00 2001 From: Net Date: Fri, 30 May 2025 17:22:30 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8F=90=E7=8E=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/api/base/server.ts | 9 + src/config.ts | 8 +- src/pages.json | 7 +- .../course-selection/club-selection copy.vue | 1026 +++++++++++++++++ .../base/course-selection/club-selection.vue | 328 +++--- src/pages/base/course-selection/enrolled.vue | 528 ++++++--- src/pages/base/course-selection/index.vue | 226 ++-- src/pages/base/course-selection/notice.vue | 18 +- src/pages/base/course-selection/payment.vue | 137 +-- src/pages/base/home/index.vue | 746 ++++++++---- src/pages/base/interest-class/index.vue | 1 - src/pages/system/launchPage/launchPage.vue | 1 - src/pages/system/login/login.vue | 2 +- src/utils/request/index.ts | 294 +++-- 14 files changed, 2469 insertions(+), 862 deletions(-) create mode 100644 src/pages/base/course-selection/club-selection copy.vue diff --git a/src/api/base/server.ts b/src/api/base/server.ts index 4ea7670..bb21b53 100644 --- a/src/api/base/server.ts +++ b/src/api/base/server.ts @@ -19,3 +19,12 @@ export const xkXkqdApi = async (params: any) => { export const kcjhFindKcjhByKcIdApi = async (params: any) => { return await get("/api/kcjh/findKcjhByKcId", params); }; +export const xkgzsApi = async (params: any) => { + return await get("/api/gzs/findPage", params); +}; +export const xkxkbmInfoApi = async (params: any) => { + return await get("/mobile/xk/xkbmInfo", params); +}; +export const xkqddeleteApi = async (params: any) => { + return await post("/api/xkqd/delete?ids=" + params.ids); +}; diff --git a/src/config.ts b/src/config.ts index 0170b30..27b7e0a 100644 --- a/src/config.ts +++ b/src/config.ts @@ -1,5 +1,5 @@ -// const ip: string = "119.29.194.155:8893"; -const ip: string = "yufangzc.com"; +const ip: string = "119.29.194.155:8893"; +// const ip: string = "yufangzc.com"; const fwqip: string = "yufangzc.com"; //打包服务器接口代理标识 const SERVERAGENT: string = "/jzd-api"; @@ -7,11 +7,11 @@ const SERVERAGENT: string = "/jzd-api"; export const HOMEAGENT: string = ""; // 接口地址 export const BASE_URL: string = - process.env.NODE_ENV == "development" ? `https://${ip}/zhxy` : SERVERAGENT; + process.env.NODE_ENV == "development" ? `http://${ip}/zhxy` : SERVERAGENT; // WebSocket地址 export const BASE_WS_URL: string = `wss://${ip}`; //图片地址 -export const BASE_IMAGE_URL: string = process.env.NODE_ENV == "development" ? `https://${ip}` : `https://${fwqip}`; +export const BASE_IMAGE_URL: string = process.env.NODE_ENV == "development" ? `http://${ip}` : `http://${fwqip}`; //存token的key export const AUTH_KEY: string = "satoken"; //token过期返回状态码 diff --git a/src/pages.json b/src/pages.json index 6a8587a..f314304 100644 --- a/src/pages.json +++ b/src/pages.json @@ -215,6 +215,11 @@ "navigationBarTitleText": "uni-app", "navigationBarBackgroundColor": "#fff", "backgroundColor": "#F8F8F8", - "orientation": "portrait" + "orientation": "portrait", + "navigationStyle": "custom", + "app-plus": { + "background": "#efeff4", + "titleView": false + } } } diff --git a/src/pages/base/course-selection/club-selection copy.vue b/src/pages/base/course-selection/club-selection copy.vue new file mode 100644 index 0000000..2fcf235 --- /dev/null +++ b/src/pages/base/course-selection/club-selection copy.vue @@ -0,0 +1,1026 @@ + + + + + diff --git a/src/pages/base/course-selection/club-selection.vue b/src/pages/base/course-selection/club-selection.vue index 92b16f6..f9f7d57 100644 --- a/src/pages/base/course-selection/club-selection.vue +++ b/src/pages/base/course-selection/club-selection.vue @@ -97,10 +97,12 @@ - - 已选 {{ getSelectedCount }} 门课程 + + + 点击报名 (已选{{ selectedCoursesCount }}门) + + 点击报名 - 点击报名 @@ -157,15 +159,26 @@ @@ -875,12 +957,6 @@ const getSelectedCount = computed(() => { z-index: 10; box-shadow: 0 -2px 10px rgba(0, 0, 0, 0.05); - .selected-count-info { - font-size: 14px; - color: #666; - margin-bottom: 8px; - } - .register-btn { height: 50px; line-height: 50px; @@ -891,12 +967,6 @@ const getSelectedCount = computed(() => { font-size: 16px; font-weight: 500; } - - .multi-select-tip { - font-size: 12px; - color: #909399; - text-align: center; - } } /* 学生选择器弹窗样式 */ diff --git a/src/pages/base/course-selection/enrolled.vue b/src/pages/base/course-selection/enrolled.vue index 4fb6a61..daa32d6 100644 --- a/src/pages/base/course-selection/enrolled.vue +++ b/src/pages/base/course-selection/enrolled.vue @@ -31,73 +31,111 @@ - + - 已报名课程 + 已报名课程 ({{ enrolledCourse.length }}门) - - - - {{ enrolledCourse.title }} - 开课老师:{{ enrolledCourse.teacher }} - 上课时间:{{ enrolledCourse.time }} - 上课地点:{{ enrolledCourse.location }} - - + + + + + {{ item.title }} + ¥{{ item.fee }} + - - - - 报名时间: - {{ enrolledCourse.enrollDate }} - - - 课程费用: - ¥{{ enrolledCourse.fee }} - - - 支付状态: - - {{ enrolledCourse.isPaid ? "已支付" : "未支付" }} - + + + + + {{ item.teacher }} + + + + {{ item.time }} + + + + + + + {{ item.location }} + + + + {{ formatDate(item.enrollDate) }} + + + + + + + - - + + + + + + + {{ + isAllPaid ? "支付完成" : "待支付" + }} + {{ + isAllPaid ? "所有课程费用已支付" : "请完成课程费用支付" + }} + - - 1. 课程一经报名成功,不可取消或更换; - 2. 如有特殊情况需要请假,请提前与老师联系; - 3. 请按时上课,迟到将影响学习效果。 + + + + 课程总数 + {{ enrolledCourse.length }}门 + + + 总费用 + ¥{{ totalAmount }} + + + 待支付 + ¥{{ totalAmount }} + - --> + @@ -106,110 +144,100 @@ @@ -217,6 +245,7 @@ onMounted(() => { .enrolled-page { background-color: #f5f7fa; padding: 15px; + padding-bottom: 80px; /* 为底部固定按钮留出空间 */ } .status-card { @@ -310,72 +339,151 @@ onMounted(() => { } } -.course-info { - display: flex; - margin-bottom: 15px; +.course-list { + .course-item { + border-bottom: 1px solid #f0f0f0; - .course-image { - width: 100px; - height: 100px; - border-radius: 8px; - margin-right: 15px; - flex-shrink: 0; - } - - .course-details { - flex: 1; - - .course-name { - font-size: 18px; - font-weight: 500; - color: #333; - margin-bottom: 8px; + &.last-item { + border-bottom: none; } - .course-teacher, - .course-time, - .course-location { - font-size: 14px; - color: #666; - margin-bottom: 5px; + .course-header { + display: flex; + justify-content: space-between; + align-items: center; + margin-bottom: 12px; + + .course-name { + font-size: 16px; + font-weight: 500; + color: #333; + } + + .course-fee { + font-size: 16px; + font-weight: 500; + color: #ff6b01; + } + } + + .course-details { + margin-bottom: 12px; + + .detail-row { + display: flex; + justify-content: space-between; + margin-bottom: 8px; + + &:last-child { + margin-bottom: 0; + } + + .detail-item { + display: flex; + align-items: center; + flex: 1; + + text { + margin-left: 5px; + font-size: 13px; + color: #666; + } + } + } + } + + .course-actions { + display: flex; + justify-content: flex-end; + align-items: center; + + :deep(.u-button) { + margin-left: 10px; + } } } } -.enrollment-info { - background-color: #f9f9f9; - border-radius: 8px; - padding: 12px; +.payment-status-card { + background-color: #fff; + border-radius: 12px; + padding: 15px; + margin-bottom: 15px; + box-shadow: 0 2px 6px rgba(0, 0, 0, 0.05); + border-left: 4px solid #ddd; - .info-item { + &.paid { + border-left-color: #3fbf72; + background: linear-gradient(135deg, #f0f9ff, #e6f7ff); + } + + &.unpaid { + border-left-color: #ff9900; + background: linear-gradient(135deg, #fff9f0, #fff2e6); + } + + .status-header { display: flex; - justify-content: space-between; - margin-bottom: 8px; + align-items: center; + margin-bottom: 15px; - &:last-child { - margin-bottom: 0; + .status-icon { + width: 24px; + height: 24px; + margin-right: 12px; + display: flex; + align-items: center; + justify-content: center; } - .info-label { - color: #666; - font-size: 14px; + .status-text { + flex: 1; + + .status-title { + font-size: 16px; + font-weight: bold; + color: #333; + display: block; + margin-bottom: 4px; + } + + .status-desc { + font-size: 13px; + color: #666; + display: block; + } } + } - .info-value { - font-size: 14px; - color: #333; + .payment-details { + .detail-item { + display: flex; + justify-content: space-between; + align-items: center; + margin-bottom: 8px; - &.highlight { - color: #ff6b01; - font-weight: 500; + &:last-child { + margin-bottom: 0; } - &.paid { - color: #3fbf72; + .detail-label { + font-size: 14px; + color: #666; } - &.unpaid { - color: #ff5252; + .detail-value { + font-size: 14px; + color: #333; + + &.amount { + font-weight: bold; + color: #333; + } + + &.unpaid-amount { + color: #ff5252; + font-weight: bold; + } } } } @@ -415,14 +523,62 @@ onMounted(() => { } .bottom-actions { - padding: 15px; + position: fixed; + bottom: 0; + left: 0; + right: 0; + padding: 12px 20px; background-color: #fff; display: flex; justify-content: space-between; + align-items: center; + box-shadow: 0 -2px 10px rgba(0, 0, 0, 0.1); + border-top: 1px solid #f0f0f0; + z-index: 100; + safe-area-inset-bottom: env(safe-area-inset-bottom); + + .payment-info { + flex: 1; + display: flex; + flex-direction: column; + justify-content: center; + + .payment-label { + font-size: 12px; + color: #999; + margin-bottom: 2px; + line-height: 1; + } + + .payment-amount { + font-size: 18px; + font-weight: bold; + color: #ff6b01; + line-height: 1.2; + } + } + + .payment-button { + flex: 0 0 auto; + margin-left: 15px; + } :deep(.u-button) { - flex: 1; - margin: 0 5px; + width: 120px !important; + height: 40px !important; + border-radius: 20px !important; + font-size: 15px !important; + font-weight: 500 !important; + + .u-button__text { + font-size: 15px !important; + font-weight: 500 !important; + } + + &.u-button--primary { + background-color: #2879ff !important; + border-color: #2879ff !important; + } } } diff --git a/src/pages/base/course-selection/index.vue b/src/pages/base/course-selection/index.vue index 5b99327..3ae027b 100644 --- a/src/pages/base/course-selection/index.vue +++ b/src/pages/base/course-selection/index.vue @@ -155,14 +155,26 @@ diff --git a/src/pages/base/course-selection/notice.vue b/src/pages/base/course-selection/notice.vue index c635be3..30632ab 100644 --- a/src/pages/base/course-selection/notice.vue +++ b/src/pages/base/course-selection/notice.vue @@ -1,10 +1,10 @@ diff --git a/src/pages/base/home/index.vue b/src/pages/base/home/index.vue index e0a0228..2d4364e 100644 --- a/src/pages/base/home/index.vue +++ b/src/pages/base/home/index.vue @@ -1,61 +1,68 @@