From 3e1b8917a833df60a65ce354e2fe0aaabf85d604 Mon Sep 17 00:00:00 2001 From: chenghuan Date: Thu, 9 Apr 2026 09:29:24 +0800 Subject: [PATCH] =?UTF-8?q?feat(=E8=AF=BE=E7=A8=8B=E6=A8=A1=E5=9D=97):=20?= =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E8=B4=AD=E8=AF=BE=E6=98=8E=E7=BB=86=E5=8A=9F?= =?UTF-8?q?=E8=83=BD=E5=8F=8A=E7=9B=B8=E5=85=B3=E8=B7=AF=E7=94=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 在课程模块中新增购课明细页面,支持查看课程购买详情 - 更新路由配置,添加购课明细的路由路径 - 在课程列表中添加“查看购课明细”按钮,优化用户操作体验 - 更新状态管理,支持动态更新主标签的查询和参数信息 --- src/router/index.js | 1 + src/store/modules/common.js | 10 + src/views/main-sidebar.vue | 14 +- src/views/modules/course/courseList.vue | 34 ++- .../modules/course/coursePurchaseDetails.vue | 205 ++++++++++++++++++ 5 files changed, 254 insertions(+), 10 deletions(-) create mode 100644 src/views/modules/course/coursePurchaseDetails.vue diff --git a/src/router/index.js b/src/router/index.js index c3cb486..dbd2c01 100644 --- a/src/router/index.js +++ b/src/router/index.js @@ -65,6 +65,7 @@ const mainRoutes = { { path: '/course-courseCatalogue', component: _import('modules/course/courseCatalogue'), name: 'course-courseCatalogue', meta: { title: '课程目录列表', isTab: true } }, { path: '/course-courseChapter', component: _import('modules/course/courseChapter'), name: 'course-courseChapter', meta: { title: '课程目录章节列表', isTab: true } }, { path: '/course-courseVideo', component: _import('modules/course/courseVideo'), name: 'course-courseVideo', meta: { title: '课程目录章节视频列表', isTab: true } }, + { path: '/course-coursePurchaseDetails', component: _import('modules/course/coursePurchaseDetails'), name: 'course-coursePurchaseDetails', meta: { title: '购课明细', isTab: true } }, { path: '/course-sociologyList', component: _import('modules/course/sociologyList'), name: 'course-sociologyList', meta: { title: '国学标签列表', isTab: true } }, { path: '/userCourse', component: _import('modules/user/userCourse'), name: 'userCourse', meta: { title: '用户课程列表', isTab: true } }, { path: '/userCertificate', component: _import('modules/user/userCertificate'), name: 'userCertificate', meta: { title: '用户证书列表', isTab: true } }, diff --git a/src/store/modules/common.js b/src/store/modules/common.js index 1903bb4..590e39a 100644 --- a/src/store/modules/common.js +++ b/src/store/modules/common.js @@ -43,6 +43,16 @@ export default { updateMainTabs (state, tabs) { state.mainTabs = tabs }, + updateMainTabRoute (state, { name, query, params }) { + const tabIndex = state.mainTabs.findIndex(item => item.name === name) + if (tabIndex === -1) return + const tab = state.mainTabs[tabIndex] + state.mainTabs.splice(tabIndex, 1, { + ...tab, + query: query != null ? query : tab.query, + params: params != null ? params : tab.params + }) + }, updateMainTabsActiveName (state, name) { state.mainTabsActiveName = name } diff --git a/src/views/main-sidebar.vue b/src/views/main-sidebar.vue index 690ecd8..534a8c1 100644 --- a/src/views/main-sidebar.vue +++ b/src/views/main-sidebar.vue @@ -132,15 +132,11 @@ export default { }; this.mainTabs = this.mainTabs.concat(tab); } else { - - // this.mainTabs = this.mainTabs.concat({ - // ...tab, - // params: route.params, - // query: route.query - // }); - this.mainTabs[tabIndex].query=route.query - this.mainTabs[tabIndex].params=route.query - console.log("at line 107:", "存在先添加",tab); + this.$store.commit("common/updateMainTabRoute", { + name: route.name, + query: route.query, + params: route.params + }); } this.menuActiveName = tab.menuId + ""; this.mainTabsActiveName = tab.name; diff --git a/src/views/modules/course/courseList.vue b/src/views/modules/course/courseList.vue index 56d23e4..ad82385 100644 --- a/src/views/modules/course/courseList.vue +++ b/src/views/modules/course/courseList.vue @@ -210,7 +210,7 @@ fixed="right" header-align="center" align="center" - width="280" + width="360" label="操作" > @@ -872,6 +879,31 @@ export default { this.$forceUpdate(); // row ? (this.courseId = row.id) : ""; }, + showCoursePurchaseDetails(row) { + const list = (row && row.courseCatalogueEntityList) || []; + const catalogue = Array.isArray(list) + ? list.map(item => ({ + id: item.id, + title: item.title + })) + : []; + if (!catalogue.length) { + this.$message.warning("该课程未设置目录,无法查看购买明细。"); + return; + } + const firstCatalogueId = + catalogue && catalogue.length > 0 ? String(catalogue[0].id) : ""; + + this.$router.push({ + name: "course-coursePurchaseDetails", + query: { + courseId: row.id, + courseName: row.title || "", + catalogueId: firstCatalogueId, + catalogue: encodeURIComponent(JSON.stringify(catalogue || [])) + } + }); + }, // 删除 deleteHandle(id) { var ids = id diff --git a/src/views/modules/course/coursePurchaseDetails.vue b/src/views/modules/course/coursePurchaseDetails.vue new file mode 100644 index 0000000..7272a61 --- /dev/null +++ b/src/views/modules/course/coursePurchaseDetails.vue @@ -0,0 +1,205 @@ + + + + +