diff --git a/src/pages.json b/src/pages.json index 100bf55..6ab5f55 100644 --- a/src/pages.json +++ b/src/pages.json @@ -144,14 +144,14 @@ } }, { - "path": "pages/base/interest-class/index", + "path": "pages/base/xk/xqk", "style": { "navigationBarTitleText": "兴趣课", "enablePullDownRefresh": false } }, { - "path": "pages/base/club/index", + "path": "pages/base/xk/jlb", "style": { "navigationBarTitleText": "俱乐部", "enablePullDownRefresh": false @@ -193,28 +193,49 @@ } }, { - "path": "pages/base/course-selection/index", + "path": "pages/base/xk/qk/xqk", "style": { - "navigationBarTitleText": "课程选择", + "navigationBarTitleText": "兴趣课选课", "enablePullDownRefresh": false } }, { - "path": "pages/base/course-selection/detail", + "path": "pages/base/xk/qk/jlb", + "style": { + "navigationBarTitleText": "俱乐部选课", + "enablePullDownRefresh": false + } + }, + { + "path": "pages/base/xk/qk/wks", + "style": { + "navigationBarTitleText": "未开始选课", + "enablePullDownRefresh": false + } + }, + { + "path": "pages/base/xk/qk/yjz", + "style": { + "navigationBarTitleText": "已截止选课", + "enablePullDownRefresh": false + } + }, + { + "path": "pages/base/xk/detail", "style": { "navigationBarTitleText": "课程详情", "enablePullDownRefresh": false } }, { - "path": "pages/base/course-selection/payment", + "path": "pages/base/xk/pay/index", "style": { "navigationBarTitleText": "支付", "enablePullDownRefresh": false } }, { - "path": "pages/base/course-selection/pay-wait", + "path": "pages/base/xk/pay/wait", "style": { "navigationBarTitleText": "", "enablePullDownRefresh": false, @@ -224,60 +245,32 @@ } }, { - "path": "pages/base/course-selection/payment-success", + "path": "pages/base/xk/pay/success", "style": { "navigationBarTitleText": "支付成功", "enablePullDownRefresh": false } }, { - "path": "pages/base/course-selection/payment-fail", + "path": "pages/base/xk/pay/fail", "style": { "navigationBarTitleText": "支付失败", "enablePullDownRefresh": false } }, { - "path": "pages/base/course-selection/club-selection", + "path": "pages/base/gzs/xkXqk", "style": { - "navigationBarTitleText": "俱乐部选课", + "navigationBarTitleText": "兴趣课告知书", "enablePullDownRefresh": false } }, { - "path": "pages/base/course-selection/notice", + "path": "pages/base/gzs/xkJlb", "style": { - "navigationBarTitleText": "告知书", + "navigationBarTitleText": "俱乐部告知书", "enablePullDownRefresh": false } - }, - { - "path": "pages/base/course-selection/noticeclub", - "style": { - "navigationBarTitleText": "告知书", - "enablePullDownRefresh": false - } - }, - { - "path": "pages/base/course-selection/enrolled", - "style": { - "navigationBarTitleText": "已报名", - "enablePullDownRefresh": false - } - } , { - "path": "pages/base/course-selection/notopen", - "style": { - "navigationBarTitleText": "未开放", - "enablePullDownRefresh": false - } - }, - { - "path": "pages/base/course-selection/enrollment-ended", - "style": { - "navigationBarTitleText": "选课已结束", - "enablePullDownRefresh": false, - "navigationStyle": "custom" - } } ], "globalStyle": { diff --git a/src/pages/base/club/index - 副本.vue b/src/pages/base/club/index - 副本.vue deleted file mode 100644 index b42039f..0000000 --- a/src/pages/base/club/index - 副本.vue +++ /dev/null @@ -1,433 +0,0 @@ - - - - - diff --git a/src/pages/base/components/XkPicker/index.vue b/src/pages/base/components/XkPicker/index.vue index ad09b08..9cefba9 100644 --- a/src/pages/base/components/XkPicker/index.vue +++ b/src/pages/base/components/XkPicker/index.vue @@ -8,20 +8,38 @@ 切换 - + 选择俱乐部 - + {{ xk.xkmc }} + 已选择 - + @@ -40,14 +58,14 @@ const { setData } = useDataStore(); // 接收外部传入属性 const props = defineProps<{ - isQk: boolean, // 是否抢课, - xsId: string, - xklxId: string, // 选课类型Id(962488654:兴趣课 / 816059832:俱乐部) - title: string, + isQk: boolean; // 是否抢课, + xsId: string; + xklxId: string; // 选课类型Id(962488654:兴趣课 / 816059832:俱乐部) + title: string; }>(); // 定义一个上级传入的emit响应事件用于接收数据变更 -const emit = defineEmits(['change']) +const emit = defineEmits(["change"]); // 学生列表数据 const xkList = ref([]); @@ -58,7 +76,14 @@ const showFlag = ref(false); // 显示选择器 const showPicker = () => { showFlag.value = true; -} +}; + +const goToWks = () => { + setData({ title: props.title }); + uni.reLaunch({ + url: "/pages/base/xk/qk/wks", + }); +}; // 加载选课列表 const loadXkList = async () => { @@ -68,7 +93,7 @@ const loadXkList = async () => { const params = { xsId: props.xsId, njmcId: getCurXs.njmcId, - xklxId: props.xklxId + xklxId: props.xklxId, }; if (!props.isQk) { const res = await xsYxListApi(params); @@ -85,46 +110,41 @@ const loadXkList = async () => { uni.hideLoading(); if (res.resultCode === 1) { const result = res.result || {}; - if (result.type && result.type === 1) { + if (result.type === 1) { + // 有待支付的选课,跳转到支付页面 + setData(result); + uni.reLaunch({ + url: "/pages/base/xk/pay/index", + }); + return; + } else if (result.type === 2 || result.type === 3) { + // 正常选课列表或已支付但有选课列表供切换 if (result.xkList && result.xkList.length) { xkList.value = result.xkList; switchXk(result.xkList[0]); - } else { - uni.reLaunch({ - url: "/pages/base/course-selection/notopen", - }); + return; } - } else if (result.type && result.type === 2) { - // 跳转到支付页面 - setData(result); - uni.reLaunch({ - url: "/pages/base/course-selection/payment", - }); - } else { - uni.reLaunch({ - url: "/pages/base/course-selection/notopen", - }); } - } else { - uni.reLaunch({ - url: "/pages/base/course-selection/notopen", - }); } + goToWks(); } -} +}; // 切换选课 const switchXk = (xk: any) => { curXk.value = xk; showFlag.value = false; emit("change", xk); -} +}; // 监听当前学生信息变更 -watch(() => props.xsId, (newVal) => { - console.log("当前学生信息变更", newVal); - loadXkList(); -}); +watch( + () => props.xsId, + (newVal) => { + console.log("当前学生信息变更", newVal); + loadXkList(); + } +); // 初始化加载数据 if (props.xsId) { @@ -155,7 +175,7 @@ if (props.xsId) { font-size: 14px; opacity: 0.8; } - + .switch-btn { padding: 5px 15px; background-color: rgba(255, 255, 255, 0.2); @@ -203,6 +223,11 @@ if (props.xsId) { background-color: rgba(64, 158, 255, 0.05); } + &-selected { + background-color: rgba(64, 158, 255, 0.1); + border-left: 3px solid #409eff; + } + .xk-info { flex: 1; margin-left: 12px; @@ -212,11 +237,18 @@ if (props.xsId) { font-weight: 500; color: #303133; margin-bottom: 4px; + display: block; + } + + .xk-selected-tip { + font-size: 12px; + color: #409eff; + background-color: rgba(64, 158, 255, 0.1); + padding: 2px 6px; + border-radius: 4px; } } } } } - - - \ No newline at end of file + diff --git a/src/pages/base/components/XkkcList/index.vue b/src/pages/base/components/XkkcList/index.vue index b9ab1d9..de308e9 100644 --- a/src/pages/base/components/XkkcList/index.vue +++ b/src/pages/base/components/XkkcList/index.vue @@ -111,7 +111,7 @@ const toggleSelection = (xkkc: any) => { const goToDetail = (xkkc: any) => { setKcData(xkkc); uni.navigateTo({ - url: `/pages/base/course-selection/detail`, + url: `/pages/base/xk/detail`, }); }; @@ -120,11 +120,15 @@ const switchXk = (xk: any) => { if (!props.canSelected) { return; } + // 获取本地存储的已选课程ID数组 let selectedXkkcIds = uni.getStorageSync("selectedXkkcIds") || []; - let newSelectedXkkcIds = []; + let newSelectedXkkcIds: string[] = []; + for (let i = 0; i < xkkcList.value.length; i++) { const xkkc = xkkcList.value[i]; + + // 只检查本地存储的已选课程 if (selectedXkkcIds.includes(xkkc.id)) { xkkc.isSelected = true; newSelectedXkkcIds.push(xkkc.id); @@ -132,6 +136,7 @@ const switchXk = (xk: any) => { xkkc.isSelected = false; } } + uni.setStorageSync("selectedXkkcIds", newSelectedXkkcIds); emit("change", newSelectedXkkcIds); } diff --git a/src/pages/base/course-selection/club-selection copy.vue b/src/pages/base/course-selection/club-selection copy.vue deleted file mode 100644 index 8210a6b..0000000 --- a/src/pages/base/course-selection/club-selection copy.vue +++ /dev/null @@ -1,1026 +0,0 @@ - - - - - diff --git a/src/pages/base/course-selection/enrolled.vue b/src/pages/base/course-selection/enrolled.vue deleted file mode 100644 index 36f007d..0000000 --- a/src/pages/base/course-selection/enrolled.vue +++ /dev/null @@ -1,584 +0,0 @@ - - - - - diff --git a/src/pages/base/course-selection/index.vue b/src/pages/base/course-selection/index.vue deleted file mode 100644 index 2471310..0000000 --- a/src/pages/base/course-selection/index.vue +++ /dev/null @@ -1,284 +0,0 @@ - - - - - diff --git a/src/pages/base/gzs/jc.vue b/src/pages/base/gzs/jc.vue new file mode 100644 index 0000000..fa0726e --- /dev/null +++ b/src/pages/base/gzs/jc.vue @@ -0,0 +1,63 @@ + + + + + diff --git a/src/pages/base/course-selection/noticeclub.vue b/src/pages/base/gzs/xkJlb.vue similarity index 91% rename from src/pages/base/course-selection/noticeclub.vue rename to src/pages/base/gzs/xkJlb.vue index 9da6f1e..01e563c 100644 --- a/src/pages/base/course-selection/noticeclub.vue +++ b/src/pages/base/gzs/xkJlb.vue @@ -50,16 +50,16 @@ async function submit() { sign_file: sign_file.value, }); uni.reLaunch({ - url: "/pages/base/course-selection/club-selection", + url: "/pages/base/xk/qk/jlb", }); /*if (getGlobal.type == 1) { uni.reLaunch({ - url: "/pages/base/course-selection/index", + url: "/pages/base/xk/qk/xqk", }); } if (getGlobal.type == 2) { uni.reLaunch({ - url: "/pages/base/course-selection/club-selection", + url: "/pages/base/xk/qk/jlb", }); }*/ } diff --git a/src/pages/base/course-selection/notice.vue b/src/pages/base/gzs/xkXqk.vue similarity index 98% rename from src/pages/base/course-selection/notice.vue rename to src/pages/base/gzs/xkXqk.vue index 4d4cfb4..8eeaa1e 100644 --- a/src/pages/base/course-selection/notice.vue +++ b/src/pages/base/gzs/xkXqk.vue @@ -80,7 +80,7 @@ async function submit() { // 跳转到下一页 uni.reLaunch({ - url: "/pages/base/course-selection/index", + url: "/pages/base/xk/qk/xqk", }); } catch (error) { diff --git a/src/pages/base/home/index.vue b/src/pages/base/home/index.vue index ceae315..64b1432 100644 --- a/src/pages/base/home/index.vue +++ b/src/pages/base/home/index.vue @@ -200,25 +200,25 @@ const menuItems = ref([ { title: "兴趣课", icon: "/static/base/home/file-text-line.png", - path: "/pages/base/interest-class/index", + path: "/pages/base/xk/xqk", permissionKey: "school-xqk", // 兴趣课权限编码 }, { title: "俱乐部", icon: "/static/base/home/contacts-book-3-line.png", - path: "/pages/base/club/index", + path: "/pages/base/xk/jlb", permissionKey: "school-jlb", // 俱乐部权限编码 }, { title: "兴趣课选课", icon: "/static/base/home/file-text-line.png", - path: "/pages/base/course-selection/notice", + path: "/pages/base/gzs/xkXqk", permissionKey: "school-xqkxk", // 兴趣课选课权限编码 }, { title: "俱乐部选课", icon: "/static/base/home/contacts-book-3-line.png", - path: "/pages/base/course-selection/noticeclub", + path: "/pages/base/gzs/xkJlb", permissionKey: "school-jlbxk", // 俱乐部选课权限编码 }, ]); diff --git a/src/pages/base/interest-class/index - 副本.vue b/src/pages/base/interest-class/index - 副本.vue deleted file mode 100644 index 13089b0..0000000 --- a/src/pages/base/interest-class/index - 副本.vue +++ /dev/null @@ -1,305 +0,0 @@ - - - - - diff --git a/src/pages/base/course-selection/detail.vue b/src/pages/base/xk/detail.vue similarity index 100% rename from src/pages/base/course-selection/detail.vue rename to src/pages/base/xk/detail.vue diff --git a/src/pages/base/club/index.vue b/src/pages/base/xk/jlb.vue similarity index 100% rename from src/pages/base/club/index.vue rename to src/pages/base/xk/jlb.vue diff --git a/src/pages/base/course-selection/payment-fail.vue b/src/pages/base/xk/pay/fail.vue similarity index 97% rename from src/pages/base/course-selection/payment-fail.vue rename to src/pages/base/xk/pay/fail.vue index 20f6e1c..e27681d 100644 --- a/src/pages/base/course-selection/payment-fail.vue +++ b/src/pages/base/xk/pay/fail.vue @@ -36,7 +36,7 @@ import { ref, onMounted } from 'vue'; // 返回选课页面 const reselect = () => { uni.redirectTo({ - url: '/pages/base/course-selection/index' + url: '/pages/base/xk/qk/xqk' }); }; diff --git a/src/pages/base/course-selection/payment.vue b/src/pages/base/xk/pay/index.vue similarity index 96% rename from src/pages/base/course-selection/payment.vue rename to src/pages/base/xk/pay/index.vue index 1462dad..2826ed7 100644 --- a/src/pages/base/course-selection/payment.vue +++ b/src/pages/base/xk/pay/index.vue @@ -136,7 +136,7 @@ const payNow = async () => { ...res.result }); uni.redirectTo({ - url: `/pages/base/course-selection/pay-wait?payUrl=${encodeURIComponent(res.result.cashierPayHtml)}` + url: `/pages/base/xk/pay/wait?payUrl=${encodeURIComponent(res.result.cashierPayHtml)}` }); } } catch (error) { @@ -147,7 +147,7 @@ const payNow = async () => { }); // const url = "https://www.baidu.com"; // uni.redirectTo({ - // url: `/pages/base/course-selection/pay-wait?payUrl=${encodeURIComponent(url)}` + // url: `/pages/base/xk/pay/wait?payUrl=${encodeURIComponent(url)}` // }); } }; diff --git a/src/pages/base/course-selection/payment-success.vue b/src/pages/base/xk/pay/success.vue similarity index 100% rename from src/pages/base/course-selection/payment-success.vue rename to src/pages/base/xk/pay/success.vue diff --git a/src/pages/base/course-selection/pay-wait.vue b/src/pages/base/xk/pay/wait.vue similarity index 97% rename from src/pages/base/course-selection/pay-wait.vue rename to src/pages/base/xk/pay/wait.vue index ca8aae2..4894d81 100644 --- a/src/pages/base/course-selection/pay-wait.vue +++ b/src/pages/base/xk/pay/wait.vue @@ -135,7 +135,7 @@ setWsCallback((type: string, res: any) => { // 跳转到支付成功页面 setTimeout(() => { uni.reLaunch({ - url: "/pages/base/course-selection/payment-success", + url: "/pages/base/xk/pay/success", }); }, 1000) } @@ -226,11 +226,11 @@ onLoad(async (options: any) => { // if ("0000000000" === respCode) { // if ("02" === orderStat) { // uni.reLaunch({ - // url: "/pages/base/course-selection/payment-success", + // url: "/pages/base/xk/pay/success", // }); // } else if ("03" === orderStat) { // uni.reLaunch({ - // url: "/pages/base/course-selection/payment-fail", + // url: "/pages/base/xk/pay/fail", // }); // } // } else { diff --git a/src/pages/base/course-selection/club-selection.vue b/src/pages/base/xk/qk/jlb.vue similarity index 79% rename from src/pages/base/course-selection/club-selection.vue rename to src/pages/base/xk/qk/jlb.vue index 522804a..ff08c5e 100644 --- a/src/pages/base/course-selection/club-selection.vue +++ b/src/pages/base/xk/qk/jlb.vue @@ -17,11 +17,19 @@ - + + + + + {{ curXk.message || '您已经选择了该选课下的课程,如果需要重新选课,请联系教师进行处理' }} + + + + - + 已选 {{ selectedXkkcIds.length }} 门课程 @@ -61,7 +69,7 @@ const checkEnrollmentStatus = (xk: any) => { // 选课已结束,跳转到结束页面 const courseInfo = encodeURIComponent(JSON.stringify(xk)); uni.navigateTo({ - url: `/pages/base/course-selection/enrollment-ended?courseInfo=${courseInfo}` + url: `/pages/base/xk/qk/yjz?courseInfo=${courseInfo}` }); return true; } @@ -71,6 +79,10 @@ const checkEnrollmentStatus = (xk: any) => { // 切换选课 const switchXk = (xk: any) => { curXk.value = xk; + // 清空之前的选择状态 + selectedXkkcIds.value = []; + uni.setStorageSync("selectedXkkcIds", []); + // 检查选课状态 if (checkEnrollmentStatus(xk)) { return; @@ -104,6 +116,15 @@ const submit = async () => { return; } + // 检查当前选课是否已被选择 + if (curXk.value && curXk.value.selected) { + uni.showToast({ + title: "您已经选择了该选课下的课程,如需重新选课,请联系教师进行处理", + icon: "none", + }); + return; + } + // 检查选课时间 if (curXk.value && curXk.value.xkkstime) { const now = dayjs().valueOf(); @@ -138,7 +159,7 @@ const submit = async () => { if (res.resultCode === 1) { selectedXkkcIds.value = []; uni.setStorageSync("selectedXkkcIds", []); - res.result.backUrl = "/pages/base/course-selection/club-selection"; + res.result.backUrl = "/pages/base/xk/qk/jlb"; setData(res.result); xsFlag.value = true; setTimeout(() => { @@ -147,12 +168,12 @@ const submit = async () => { if (curXk.value.sfjf === 1) { // 跳转到支付页面 uni.navigateTo({ - url: "/pages/base/course-selection/payment", + url: "/pages/base/xk/pay/index", }); } else { // 不需要支付,直接跳转到支付成功页面 uni.navigateTo({ - url: "/pages/base/course-selection/payment-success", + url: "/pages/base/xk/pay/success", }); } } else { @@ -260,6 +281,28 @@ const submit = async () => { -webkit-overflow-scrolling: touch; // 增强iOS滚动体验 } +// 已选择提示信息样式 +.selected-notice { + padding: 20px 15px; + + .notice-content { + display: flex; + align-items: flex-start; + gap: 12px; + background: linear-gradient(135deg, #e3f2fd, #f3e5f5); + padding: 16px; + border-radius: 12px; + border-left: 4px solid #409EFF; + + .notice-text { + flex: 1; + font-size: 14px; + line-height: 1.5; + color: #333; + } + } +} + .register-btn-container { position: sticky; bottom: 0; diff --git a/src/pages/base/course-selection/notopen.vue b/src/pages/base/xk/qk/wks.vue similarity index 91% rename from src/pages/base/course-selection/notopen.vue rename to src/pages/base/xk/qk/wks.vue index 77fa91a..cac397d 100644 --- a/src/pages/base/course-selection/notopen.vue +++ b/src/pages/base/xk/qk/wks.vue @@ -19,9 +19,9 @@ 温馨提示 - 1. 学校将按计划开放兴趣课程报名,敬请关注学校通知; + 1. 学校将按计划开放{{title}}课程报名,敬请关注学校通知; 2. 为保证公平,课程报名将统一时间开放; - 3. 开放报名后,您可以为孩子选择合适的兴趣课程; + 3. 开放报名后,您可以为孩子选择合适的{{title}}课程; 4. 如有疑问,请联系班主任老师咨询详情。 @@ -48,6 +48,13 @@ diff --git a/src/pages/base/xk/xqk.vue b/src/pages/base/xk/xqk.vue new file mode 100644 index 0000000..66112d1 --- /dev/null +++ b/src/pages/base/xk/xqk.vue @@ -0,0 +1,107 @@ + + + + + diff --git a/src/pages/system/launchPage/launchPage.vue b/src/pages/system/launchPage/launchPage.vue index 8c79c74..c5deb02 100644 --- a/src/pages/system/launchPage/launchPage.vue +++ b/src/pages/system/launchPage/launchPage.vue @@ -12,20 +12,24 @@