From 8eb678e180fe9c0240b856727aa69aa62963073c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=B5=B5=E4=BE=9D=E6=A2=A6?= <15822465730@163.com> Date: Thu, 11 Dec 2025 18:07:58 +0800 Subject: [PATCH 01/15] =?UTF-8?q?=E6=95=99=E5=B8=88=E7=AB=AF1=E6=9C=9F?= =?UTF-8?q?=E9=9C=80=E6=B1=82ui=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/api/modules/course.js | 2 +- src/assets/styles/portal-index.scss | 31 + src/components/SimpleMessageBox/index.vue | 87 +++ src/icons/svg/jingti.svg | 11 + src/main.js | 8 + src/utils/index.js | 9 + src/utils/simpleMessageBox.js | 50 ++ src/views/course/TeacherList.vue | 671 +++++++++++----------- 8 files changed, 536 insertions(+), 333 deletions(-) create mode 100644 src/components/SimpleMessageBox/index.vue create mode 100644 src/icons/svg/jingti.svg create mode 100644 src/utils/simpleMessageBox.js diff --git a/src/api/modules/course.js b/src/api/modules/course.js index 58b15b2d..e014bb30 100644 --- a/src/api/modules/course.js +++ b/src/api/modules/course.js @@ -477,7 +477,7 @@ const saveTip = function() { * 获取我开发的课程列表 */ const courseList = function(data) { - return ajax.postJson('/xboe/m/course/manage/page', data); + return ajax.postJson('/xboe/m/course/manage/develop_page', data); } diff --git a/src/assets/styles/portal-index.scss b/src/assets/styles/portal-index.scss index 395f282e..6d75a378 100644 --- a/src/assets/styles/portal-index.scss +++ b/src/assets/styles/portal-index.scss @@ -432,6 +432,37 @@ color: #333333; } } +.el-message.new-message { + background-color: #edf2fc !important; + box-shadow: none !important; + border-color: #EBEEF5 !important; + min-width: 170px !important; + border-radius: 10px !important; + } +.el-message--success.new-message { + background-color: #f0f9eb !important; + box-shadow: none !important; + border-color: #e1f3d8 !important; + min-width: 170px !important; + border-radius: 10px !important + } +.el-message--error.new-message { + background-color: #fef0f0 !important; + box-shadow: none !important; + border-color: #fde2e2 !important; + min-width: 170px !important; + border-radius: 10px !important + } + .el-message--warning.new-message { + background-color: #fdf6ec !important; + box-shadow: none !important; + border-color: #faecd8 !important; + min-width: 170px !important; + border-radius: 10px !important + } + + + .el-badge__content{// badge去掉白色边框 border:1px solid #f56c6c; } diff --git a/src/components/SimpleMessageBox/index.vue b/src/components/SimpleMessageBox/index.vue new file mode 100644 index 00000000..b33871ba --- /dev/null +++ b/src/components/SimpleMessageBox/index.vue @@ -0,0 +1,87 @@ + + + diff --git a/src/icons/svg/jingti.svg b/src/icons/svg/jingti.svg new file mode 100644 index 00000000..2872c289 --- /dev/null +++ b/src/icons/svg/jingti.svg @@ -0,0 +1,11 @@ + + + jingti-copy + + + + + + + + \ No newline at end of file diff --git a/src/main.js b/src/main.js index 15f2fc68..2364806c 100644 --- a/src/main.js +++ b/src/main.js @@ -41,6 +41,14 @@ import 'swiper/dist/css/swiper.css'; Vue.use(VueAwesomeSwiper) import watermark from './utils/warterMark.js' import Bus from './utils/bus.js' +import {showMessage} from './utils/index.js' + +import MessageBoxService from './utils/simpleMessageBox.js' + + +Vue.use(MessageBoxService) + +Vue.prototype.$showMessage = showMessage Vue.prototype.$bus = Bus diff --git a/src/utils/index.js b/src/utils/index.js index 0507bcac..ceba34d4 100644 --- a/src/utils/index.js +++ b/src/utils/index.js @@ -455,4 +455,13 @@ export function resOwnerListMap(source) { }) let name = resOwnerList.get('GC005001') return name; +} + +export function showMessage(message, status) { + this.$message({ + message: message, + type: status, + duration: 5000, + customClass: 'new-message' + }); } \ No newline at end of file diff --git a/src/utils/simpleMessageBox.js b/src/utils/simpleMessageBox.js new file mode 100644 index 00000000..0687984b --- /dev/null +++ b/src/utils/simpleMessageBox.js @@ -0,0 +1,50 @@ +import Vue from 'vue' +import MessageBox from '@/components/SimpleMessageBox/index.vue' + +// 创建 MessageBox 构造器 +const MessageBoxConstructor = Vue.extend(MessageBox) + +let messageBoxInstance = null + +const MessageBoxService = { + open(options = {}) { + // 如果已有实例,先销毁 + if (messageBoxInstance) { + messageBoxInstance.$destroy() + const el = messageBoxInstance.$el + if (el && el.parentNode) { + el.parentNode.removeChild(el) + } + } + + // 创建新实例 + messageBoxInstance = new MessageBoxConstructor({ + el: document.createElement('div'), + data: options + }) + + // 挂载到 body + document.body.appendChild(messageBoxInstance.$el) + + // 显示并返回 Promise + return messageBoxInstance.open(options) + }, + + cancel() { + messageBoxInstance.cancel() + }, + + confirm(options) { + return this.open({ + ...options + }) + }, +} + +// 添加到 Vue 原型 +MessageBoxService.install = function (Vue) { + Vue.prototype.$messageBox = MessageBoxService +} + +// 导出 +export default MessageBoxService \ No newline at end of file diff --git a/src/views/course/TeacherList.vue b/src/views/course/TeacherList.vue index dc3208f6..5a2742d3 100644 --- a/src/views/course/TeacherList.vue +++ b/src/views/course/TeacherList.vue @@ -7,57 +7,58 @@ 4.有哪种几状态和哪几种操作,需要讨论定一下 。在哪种状态下可以有哪些操作
--> - - -
-
- -
- - + + +
+
+ +
+ + - -
-
+
+
+
- -
- - - - -
-
+ +
+ + + + +
+
- -
- + +
+ - -
-
- -
- 查 询 -
-
- -
- 重 置 -
-
- -
- 新建课程 -
-
- - +
+
+
+ +
+ 查 询 +
+
+ +
+ 重 置 +
+
+ +
+ 新建课程 +
+
+
-
+
@@ -65,8 +66,8 @@
- - {{ item.name }} + + {{ item.name }}
@@ -75,19 +76,26 @@
发布状态:{{ item.published ? '发布' : '未发布' }}
启停用状态:{{ item.enabled ? '启用' : '停用' }}
-
审核状态:{{getStatusLabel(item.status).label}}
+
审核状态:{{getStatusLabel(item.status).label}}
- {{it.label}} + {{it.label}}
-

加载中...

-
-
没有查询到相关内容
-
暂无数据
-
-

没有更多了

+

加载中...

+
+
没有查询到相关内容
+
暂无数据
+
+

没有更多了

- +
- - -
- -
- - 下载 -
+ + +
+ +
+ + 下载
- - - - - 复制 - - - 上述内容兼容PC端与移动端,您可按需分享。 - +
+
+ + + + 复制 + + + 上述内容兼容PC端与移动端,您可按需分享。 +
关 闭 -
@@ -146,7 +154,7 @@ - + @@ -158,62 +166,88 @@ @@ -618,7 +626,7 @@ export default { text-align: center; font-size: 13px; } -.list-wu{ +.list-wu { text-align: center; margin: 40px; color: #333; @@ -683,7 +691,7 @@ export default { box-shadow: 0 5px 15px rgba(0, 0, 0, 0.2); cursor: pointer; span { - color: #409EFF; + color: #409eff; display: block; font-size: 12px; line-height: 12px; @@ -697,10 +705,11 @@ export default { border-bottom: 1px solid #e8e8e8; padding: 20px 0px 15px 0px; margin: 0 32px 0 22px; - ::v-deep .uc-course-img { + ::v-deep .uc-course-img { width: 212px; img { - width: 212px;height:119px; + width: 212px; + height: 119px; border: 1px solid #f4f4f5; } } @@ -716,7 +725,7 @@ export default { font-size: 14px; overflow: hidden; width: 90%; - word-break:break-all; + word-break: break-all; display: -webkit-box; // overflow: hidden; -webkit-box-orient: vertical; @@ -725,13 +734,13 @@ export default { .uc-course-name { font-size: 16px; display: -webkit-box; - white-space:pre-wrap; - // word-wrap: break-word; - overflow: hidden; - text-overflow:ellipsis; - -webkit-box-orient: vertical; - -webkit-line-clamp: 1; - word-break:break-all; + white-space: pre-wrap; + // word-wrap: break-word; + overflow: hidden; + text-overflow: ellipsis; + -webkit-box-orient: vertical; + -webkit-line-clamp: 1; + word-break: break-all; // font-weight: 700; } .uc-course-item { @@ -752,11 +761,9 @@ export default { .btn-item { margin-right: 20px; } - } } .uc-course-btns { - text-align: right; .btn1 { height: 44px; From 489f4d6559627b52ffa62eabe398454abf0ae1d1 Mon Sep 17 00:00:00 2001 From: huweihang Date: Thu, 11 Dec 2025 18:47:15 +0800 Subject: [PATCH 02/15] =?UTF-8?q?feat:=20=E6=B7=BB=E5=8A=A0=E8=AF=BE?= =?UTF-8?q?=E7=A8=8B=E7=AE=A1=E7=90=86=E7=9B=B8=E5=85=B3=E5=8A=9F=E8=83=BD?= =?UTF-8?q?=EF=BC=8C=E6=96=B0=E5=A2=9E=E6=98=BE=E7=A4=BA=E7=BD=AE=E9=A1=B6?= =?UTF-8?q?=E5=8A=9F=E8=83=BD=E7=9A=84API=E6=8E=A5=E5=8F=A3=EF=BC=8C?= =?UTF-8?q?=E5=B9=B6=E4=BC=98=E5=8C=96ManageListRemote.vue=E7=9A=84?= =?UTF-8?q?=E8=BF=87=E6=BB=A4=E5=99=A8=E5=B8=83=E5=B1=80=E4=B8=8E=E6=A0=B7?= =?UTF-8?q?=E5=BC=8F=EF=BC=8C=E6=8F=90=E5=8D=87=E7=94=A8=E6=88=B7=E4=BD=93?= =?UTF-8?q?=E9=AA=8C=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit (cherry picked from commit 361675c36971efd05174dde28d4bb22b06d19a8e) --- src/api/modules/course.js | 8 + src/assets/images/svg/createCourse.svg | 9 + src/assets/images/svg/createCourse_active.svg | 9 + src/assets/images/svg/export.svg | 9 + src/assets/images/svg/export_active.svg | 12 + src/assets/images/svg/pintotop.svg | 9 + src/assets/images/svg/pintotop_active.svg | 12 + src/assets/images/svg/reset.svg | 9 + src/assets/images/svg/reset_active.svg | 12 + src/assets/images/svg/search.svg | 13 + src/assets/images/svg/search_active.svg | 12 + src/assets/images/svg/收起.svg | 11 + src/views/course/ManageListRemote.vue | 843 +++++++++++++----- 13 files changed, 725 insertions(+), 243 deletions(-) create mode 100644 src/assets/images/svg/createCourse.svg create mode 100644 src/assets/images/svg/createCourse_active.svg create mode 100644 src/assets/images/svg/export.svg create mode 100644 src/assets/images/svg/export_active.svg create mode 100644 src/assets/images/svg/pintotop.svg create mode 100644 src/assets/images/svg/pintotop_active.svg create mode 100644 src/assets/images/svg/reset.svg create mode 100644 src/assets/images/svg/reset_active.svg create mode 100644 src/assets/images/svg/search.svg create mode 100644 src/assets/images/svg/search_active.svg create mode 100644 src/assets/images/svg/收起.svg diff --git a/src/api/modules/course.js b/src/api/modules/course.js index e014bb30..39a88137 100644 --- a/src/api/modules/course.js +++ b/src/api/modules/course.js @@ -363,6 +363,13 @@ const setTop = function(data) { return ajax.post('/xboe/m/course/manage/top', data); } +/** + * 是否展示置顶相关功能 + */ +const showSetTop = function() { + return ajax.get('/xboe/m/course/manage/show-settop'); +} + /** * 获取置顶课程列表 */ @@ -509,6 +516,7 @@ export default { auditAndPublish, getAssess, setTop, + showSetTop, fetchTopCourseList, updateTopCourseSort, delSection, diff --git a/src/assets/images/svg/createCourse.svg b/src/assets/images/svg/createCourse.svg new file mode 100644 index 00000000..0b36cc79 --- /dev/null +++ b/src/assets/images/svg/createCourse.svg @@ -0,0 +1,9 @@ + + + 新建课程 + + + + + + \ No newline at end of file diff --git a/src/assets/images/svg/createCourse_active.svg b/src/assets/images/svg/createCourse_active.svg new file mode 100644 index 00000000..45290da5 --- /dev/null +++ b/src/assets/images/svg/createCourse_active.svg @@ -0,0 +1,9 @@ + + + 新建课程2 + + + + + + \ No newline at end of file diff --git a/src/assets/images/svg/export.svg b/src/assets/images/svg/export.svg new file mode 100644 index 00000000..9660890b --- /dev/null +++ b/src/assets/images/svg/export.svg @@ -0,0 +1,9 @@ + + + 导出 + + + + + + \ No newline at end of file diff --git a/src/assets/images/svg/export_active.svg b/src/assets/images/svg/export_active.svg new file mode 100644 index 00000000..a13586b4 --- /dev/null +++ b/src/assets/images/svg/export_active.svg @@ -0,0 +1,12 @@ + + + 导出 + + + + + + + + + \ No newline at end of file diff --git a/src/assets/images/svg/pintotop.svg b/src/assets/images/svg/pintotop.svg new file mode 100644 index 00000000..18c8f8a4 --- /dev/null +++ b/src/assets/images/svg/pintotop.svg @@ -0,0 +1,9 @@ + + + 置顶 + + + + + + \ No newline at end of file diff --git a/src/assets/images/svg/pintotop_active.svg b/src/assets/images/svg/pintotop_active.svg new file mode 100644 index 00000000..9a319918 --- /dev/null +++ b/src/assets/images/svg/pintotop_active.svg @@ -0,0 +1,12 @@ + + + 置顶 + + + + + + + + + \ No newline at end of file diff --git a/src/assets/images/svg/reset.svg b/src/assets/images/svg/reset.svg new file mode 100644 index 00000000..e23e0d3b --- /dev/null +++ b/src/assets/images/svg/reset.svg @@ -0,0 +1,9 @@ + + + 重置 + + + + + + \ No newline at end of file diff --git a/src/assets/images/svg/reset_active.svg b/src/assets/images/svg/reset_active.svg new file mode 100644 index 00000000..e23cdd86 --- /dev/null +++ b/src/assets/images/svg/reset_active.svg @@ -0,0 +1,12 @@ + + + zhongzhi- + + + + + + + + + \ No newline at end of file diff --git a/src/assets/images/svg/search.svg b/src/assets/images/svg/search.svg new file mode 100644 index 00000000..69870f6b --- /dev/null +++ b/src/assets/images/svg/search.svg @@ -0,0 +1,13 @@ + + + sousuo + + + + + + + + + + \ No newline at end of file diff --git a/src/assets/images/svg/search_active.svg b/src/assets/images/svg/search_active.svg new file mode 100644 index 00000000..cd151330 --- /dev/null +++ b/src/assets/images/svg/search_active.svg @@ -0,0 +1,12 @@ + + + chaxun + + + + + + + + + \ No newline at end of file diff --git a/src/assets/images/svg/收起.svg b/src/assets/images/svg/收起.svg new file mode 100644 index 00000000..88884817 --- /dev/null +++ b/src/assets/images/svg/收起.svg @@ -0,0 +1,11 @@ + + + 收起 + + + + + + + + \ No newline at end of file diff --git a/src/views/course/ManageListRemote.vue b/src/views/course/ManageListRemote.vue index 89423519..db1a4008 100644 --- a/src/views/course/ManageListRemote.vue +++ b/src/views/course/ManageListRemote.vue @@ -1,223 +1,189 @@ - - + + + + + + + - @@ -463,6 +425,7 @@ export default { sysTypeListMap: [], sysTypeList: [], resOwnerListMap: [], + showSetTopFeature: false, page: { pageIndex: 1,//第几页 pageSize: 10, // 每页多少条 @@ -575,6 +538,7 @@ export default { if (this.$route.query && this.$route.query.open && this.$route.query.open == 'new') { this.addNewCourse(); } + this.loadShowSetTopFlag(); // this.getTree(); // this.getTypeData(); // this.searchData(); @@ -610,13 +574,21 @@ export default { height: 8px; } #app::-webkit-scrollbar-thumb { - border-radius: 6px; - background-color: rgb(78, 166, 255); + border-radius: 4px; + background-color: #4284F7; } `; document.head.appendChild(style); this.scrollbarStyleApplied = true; }, + async loadShowSetTopFlag() { + try { + const res = await apiCourse.showSetTop(); + this.showSetTopFeature = res && res.status === 200 && res.result === true; + } catch (error) { + this.showSetTopFeature = false; + } + }, async remoteSearchTeacher(keyword) { const limited = (keyword || '').slice(0, 50); if (this.$refs.teacherSelect && this.$refs.teacherSelect.query !== limited) { @@ -841,6 +813,20 @@ export default { sortByDuration(a, b) { return this.getDurationNumber(a) - this.getDurationNumber(b); }, + formatSysTypeChain(row = {}) { + const codes = [row.sysType1, row.sysType2, row.sysType3]; + const names = codes + .filter(code => code !== undefined && code !== null && code !== '') + .map(code => this.sysTypeName(code)) + .filter(name => name && name !== ''); + return names.length ? names.join('/') : ''; + }, + sysTypeName(code) { + // console.log('code', code); + // console.log('this.sysTypeMap', this.sysTypeMap); + if (code == '') { return ''; } + return this.sysTypeMap.get(code); + }, getStudyCountNumber(row) { const count = row.studyCount !== undefined ? row.studyCount @@ -1047,7 +1033,7 @@ export default { }).catch(() => { this.$message({ type: 'error', message: '复制失败', duration: 5000 }); }); - }).catch(() => {}); + }).catch(() => { }); }, // 撤回接口 withdraw(row) { @@ -1066,7 +1052,7 @@ export default { }).catch(() => { this.$message({ type: 'error', message: '撤回失败', duration: 5000 }); }); - }).catch(() => {}); + }).catch(() => { }); }, reset() { this.resOwner = []; @@ -1111,10 +1097,6 @@ export default { const text = node.label || node.text || ''; return text.toLowerCase().includes(limited.toLowerCase()); }, - sysTypeName(code) { - if (code == '') { return ''; } - return this.sysTypeMap.get(code); - }, // 直接审核 examineData() { if (this.isExamine == 1) { @@ -1350,8 +1332,8 @@ export default { try { // {id:课程id,多个使用逗号分隔,Boolean erasable 是否物理删除,title:课程的名称, remark 备注} const { status } = await apiCourse.del(params); - if (status === 200) { - this.$message({ type: 'success', message: '删除成功', duration: 5000 }); //只是之前发布过的课程删除才可 + if (status === 200) { + this.$message({ type: 'success', message: '删除成功', duration: 5000 }); //只是之前发布过的课程删除才可 // if(!row.erasable){ // let event = { // key: "CourseDelete",//被管理员删除 @@ -1399,10 +1381,21 @@ export default { background-color: rgb(78, 166, 255); } -.manage-list-remote { - background-color: #fff; - // overflow: hidden; +.noSplitDatePicker { + + /* 初始隐藏范围选择器的分隔符与关闭图标 */ + ::v-deep .el-range-separator, + ::v-deep .el-range__close-icon { + display: none !important; + } } + +// .resetDatePicker { +// ::v-deep .el-date-editor { +// width: 250px; +// } +// } + .sou { padding: 0 0 0 0px !important; } @@ -1410,9 +1403,14 @@ export default { .el-col { padding: 0 0 0 10px !important; } + .table-wrapper { - padding: 0 20px; + padding: 16px; + background-color: #ffffff; + margin-top: 10px; + border-radius: 6px; } + .grid-content { padding-right: 0px; } @@ -1429,14 +1427,243 @@ export default { } .filter-wrapper { - padding: 12px 12px 10px 22px; + padding: 16px; + background-color: #ffffff; + border-radius: 6px; } -.filter-form { +.filter-row { + display: flex; + flex-wrap: nowrap; + align-items: center; + // margin-bottom: 10px; +} + +.filter-fields { display: flex; flex-wrap: wrap; - // align-items: center; - margin-bottom: 10px; +} + +.filter-field { + margin-right: 10px; + margin-bottom: 0; +} + +.filter-row--primary .filter-actions { +} + +.filter-row--advanced { + margin-top: 10px; +} + +.filter-field--name ::v-deep .el-input__inner { + width: 444px; + height: 32px; + background: #FFFFFF; + border-radius: 6px; + border: 1px solid rgba(0, 0, 0, .2); + line-height: 32px; + padding: 0 10px; +} + +.filter-field--category ::v-deep.el-cascader { + line-height: 32px; + .el-input__inner { + width: 180px; + height: 32px; + background: #FFFFFF; + border-radius: 6px; + border: 1px solid rgba(0, 0, 0, .2); + line-height: 32px; + padding: 0 10px; + } + .el-input { + line-height: 32px; + } + .el-input__suffix { + line-height: 32px; + } + .el-input__icon { + line-height: 32px; + } +} + +.filter-field--teacher ::v-deep.el-select { + .el-select__input { + margin-left: 10px; + } + .el-input__inner { + width: 180px; + height: 32px; + background: #FFFFFF; + border-radius: 6px; + border: 1px solid rgba(0, 0, 0, .2); + line-height: 32px; + padding: 0 10px; + } +} +.filter-field--status ::v-deep.el-select { + .el-select__input { + margin-left: 10px; + } + .el-input__inner { + width: 136px; + height: 32px; + background: #FFFFFF; + border-radius: 6px; + border: 1px solid rgba(0, 0, 0, .2); + line-height: 32px; + padding: 0 10px; + } + .el-input__icon { + line-height: 32px; + } +} +.filter-field--publish ::v-deep.el-select { + .el-select__input { + margin-left: 10px; + } + .el-input__inner { + width: 136px; + height: 32px; + background: #FFFFFF; + border-radius: 6px; + border: 1px solid rgba(0, 0, 0, .2); + line-height: 32px; + padding: 0 10px; + } + .el-input__icon { + line-height: 32px; + } +} + +.filter-field--enabled ::v-deep.el-select { + .el-select__input { + margin-left: 10px; + } + .el-input__inner { + width: 136px; + height: 32px; + background: #FFFFFF; + border-radius: 6px; + border: 1px solid rgba(0, 0, 0, .2); + line-height: 32px; + padding: 0 10px; + } + .el-input__icon { + line-height: 32px; + } +} + +.filter-field--open ::v-deep.el-select { + .el-select__input { + margin-left: 10px; + } + .el-input__inner { + width: 124px; + height: 32px; + background: #FFFFFF; + border-radius: 6px; + border: 1px solid rgba(0, 0, 0, .2); + line-height: 32px; + padding: 0 10px; + } + .el-input__icon { + line-height: 32px; + } +} + + +.filter-field--resowner ::v-deep.el-cascader { + line-height: 32px; + .el-input__inner { + width: 180px; + height: 32px; + background: #FFFFFF; + border-radius: 6px; + border: 1px solid rgba(0, 0, 0, .2); + line-height: 32px; + padding: 0 10px; + } + .el-input { + line-height: 32px; + } + .el-input__suffix { + line-height: 32px; + } + .el-input__icon { + line-height: 32px; + } +} + +.filter-field--creator ::v-deep.el-select { + .el-select__input { + margin-left: 10px; + } + .el-input__inner { + width: 136px; + height: 32px !important; + background: #FFFFFF; + border-radius: 6px; + border: 1px solid rgba(0, 0, 0, .2); + line-height: 32px; + padding: 0 10px; + } +} + +.filter-field--create-from ::v-deep.el-select { + .el-select__input { + margin-left: 10px; + } + .el-input__inner { + width: 180px; + height: 32px; + background: #FFFFFF; + border-radius: 6px; + border: 1px solid rgba(0, 0, 0, .2); + line-height: 32px; + padding: 0 10px; + } + .el-input__icon { + line-height: 32px; + } +} + +.filter-field--time { + ::v-deep .el-input__inner { + width: 210px; + height: 32px; + background: #FFFFFF; + border-radius: 6px; + border: 1px solid rgba(0, 0, 0, .2); + line-height: 32px; + padding: 0 10px; + .el-input__icon { + line-height: 32px; + &.el-icon-date { + position: absolute; + right: 0; + } + &.el-icon-close { + margin-right: 8px; + } + } + .el-range-input { + text-align: left; + } + + .el-range-separator { + line-height: 30px; + } + .el-range-input { + line-height: 30px; + } + } +} +.toggle-link { + padding: 0; + font-size: 14px; + color: #4284F7; } .option-code { @@ -1444,40 +1671,12 @@ export default { color: #999; } -.filter-form .el-form-item { - margin-right: 10px; - margin-bottom: 0; - width: 200px; -} -::v-deep .learning-time-range.el-form-item { - width: 300px; -} - .teacher-filter { ::v-deep .choice { width: 100%; } } -.filter-form--primary { - flex-wrap: nowrap; -} - -.filter-form--advanced { - flex-wrap: nowrap; -} - -.filter-form--primary .filter-fields, -.filter-form--advanced .filter-fields { - display: flex; - flex-wrap: wrap; -} - - -.filter-form--primary .filter-actions { - margin-left: 20px; -} - .filter-actions--inline { padding-top: 0; } @@ -1486,28 +1685,147 @@ export default { margin-left: 10px; } +.filter-actions { + display: flex; + align-items: center; +} + +.filter-actions .icon-btn+.icon-btn { + margin-left: 8px; +} + +.filter-actions .toggle-link { + margin-left: 12px; + margin-right: 10px; +} + +.icon-btn { + width: 32px; + height: 32px; + cursor: pointer; + background-repeat: no-repeat; + background-position: center; + background-size: 32px 32px; + background-color: transparent; + transition: all 0.2s ease; +} + +.icon-btn:disabled { + cursor: not-allowed; + opacity: 0.6; +} + +.icon-btn--search { + background-image: url('~@/assets/images/svg/search_active.svg'); +} + +.icon-btn--search:hover, +.icon-btn--search:active { + // background-image: url('~@/assets/images/svg/search_active.svg'); +} + +.icon-btn--reset { + background-image: url('~@/assets/images/svg/reset.svg'); + background-size: 18px 18px; +} + +.icon-btn--reset:hover, +.icon-btn--reset:active { + background-image: url('~@/assets/images/svg/reset_active.svg'); + background-size: 32px 32px; +} + +.icon-btn--top { + background-image: url('~@/assets/images/svg/pintotop.svg'); + background-size: 16px 16px; +} + +.icon-btn--top:hover, +.icon-btn--top:active { + background-image: url('~@/assets/images/svg/pintotop_active.svg'); + background-size: 32px 32px; +} + +.icon-btn--export { + background-image: url('~@/assets/images/svg/export.svg'); + background-size: 16px 16px; +} + +.icon-btn--export:hover, +.icon-btn--export:active { + background-image: url('~@/assets/images/svg/export_active.svg'); + background-size: 32px 32px; + +} + +.icon-btn.is-disabled { + cursor: not-allowed; + opacity: 0.6; + pointer-events: none; +} + +.filter-extra-actions { + display: flex; + align-items: center; + justify-content: flex-start; + padding-bottom: 20px; +} + +.filter-extra-actions .icon-btn, +.filter-extra-actions .create-course-btn { + margin-right: 10px; +} + +.create-course-btn { + width: 120px; + height: 32px; + padding-left: 36px; + padding-right: 16px; + border-radius: 6px; + border: 1px solid #4284F7; + background-color: #ffffff; + background-image: url('~@/assets/images/svg/createCourse.svg'); + background-repeat: no-repeat; + background-position: 12px center; + background-size: 16px 16px; + color: #4284F7; + font-weight: 400; + font-size: 14px; + line-height: 32px; + cursor: pointer; + transition: all 0.2s ease; +} + +.create-course-btn:hover, +.create-course-btn:active { + background-color: #4284F7; + border-color: transparent; + color: #ffffff; + background-image: url('~@/assets/images/svg/createCourse_active.svg'); +} + .toggle-link { padding: 0; } -.filter-extra-actions { - text-align: right; - padding-right: 10px; -} -::v-deep .el-table .el-table__body-wrapper::-webkit-scrollbar{ +/* 移除右对齐,保持左侧布局 */ +::v-deep .el-table .el-table__body-wrapper::-webkit-scrollbar { display: block; } + .advanced-filter { margin-top: 10px; } -.learning-time-range .el-date-editor { - width: 300px; -} +// .learning-time-range .el-date-editor { +// width: 250px; +// } + .pagination { text-align: center; padding: 40px 0 80px 0; } + .course-types { display: flex; justify-content: center; @@ -1563,16 +1881,55 @@ export default { } ::v-deep .el-table .el-table__body-wrapper::-webkit-scrollbar-thumb { - border-radius: 6px; - background-color: rgb(78, 166, 255); + border-radius: 4px; + background-color: #4284F7; } ::v-deep .el-table .el-table__body-wrapper::-webkit-scrollbar { width: 6px; - height: 8px; + height: 6px; } + ::v-deep .el-table .el-table__body-wrapper::-webkit-scrollbar-thumb { - border-radius: 6px; - background-color: rgb(78, 166, 255); + border-radius: 4px; + background-color: #4284F7 } + + + +::v-deep.el-table { + th.el-table__cell{ + background: rgba(66, 132, 247, 0.1); + padding: 3px 0; + .cell { + font-weight: bold; + font-size: 14px; + color: #60769D; + } + &.el-table--medium .el-table__cell{ + padding: 5px 0; + } + } + .course-name { + font-weight: 400; + font-size: 14px; + color: #000000; + line-height: 20px; + } + .common-cell { + font-weight: 400; + font-size: 14px; + color: #000000; + } + .status--pass { + color: #2EAD4D; + } + .status--reject { + color: #F41228; + } + ::v-deep .el-table--medium .el-table__cell{ + padding: 5px 0; + } +} + From 574897263c8fd56ed3b8a820276d4f20d5ec20f3 Mon Sep 17 00:00:00 2001 From: huweihang <916879598@qq.com> Date: Fri, 12 Dec 2025 01:12:54 +0800 Subject: [PATCH 03/15] =?UTF-8?q?style:=20=E6=B7=BB=E5=8A=A0=E8=87=AA?= =?UTF-8?q?=E5=AE=9A=E4=B9=89=E7=A1=AE=E8=AE=A4=E5=AF=B9=E8=AF=9D=E6=A1=86?= =?UTF-8?q?=E6=A0=B7=E5=BC=8F=EF=BC=8C=E4=BC=98=E5=8C=96ManageListRemote.v?= =?UTF-8?q?ue=E7=9A=84=E8=BF=87=E6=BB=A4=E5=99=A8=E5=B8=83=E5=B1=80?= =?UTF-8?q?=E4=B8=8E=E6=A0=B7=E5=BC=8F=EF=BC=8C=E6=9B=B4=E6=96=B0=E8=AF=BE?= =?UTF-8?q?=E7=A8=8B=E7=AE=A1=E7=90=86=E7=9B=B8=E5=85=B3=E5=8A=9F=E8=83=BD?= =?UTF-8?q?=E4=BB=A5=E6=8F=90=E5=8D=87=E7=94=A8=E6=88=B7=E4=BD=93=E9=AA=8C?= =?UTF-8?q?=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit (cherry picked from commit a34f87410f474c6cd4ac87d31ca0c0b854157e22) --- src/assets/styles/index.scss | 96 +++ src/views/course/ManageListRemote.vue | 848 +++++++++++++++++--------- 2 files changed, 665 insertions(+), 279 deletions(-) diff --git a/src/assets/styles/index.scss b/src/assets/styles/index.scss index cd08e918..8b1041d2 100644 --- a/src/assets/styles/index.scss +++ b/src/assets/styles/index.scss @@ -392,3 +392,99 @@ li{ } } +.custom-confirm-dialog { + max-width: 692px; + min-width: 692px; + min-height: 222px !important; + padding: 0px 0px 0px; + border-radius: 10px; + height: auto !important; + + .el-message-box__header { + // padding: 0 0 16px 0; + padding: 2px 8px 2px 16px; + display: block; + + .el-message-box__title { + font-size: 16px; + color: #000; + line-height: 32px; + } + + .el-message-box__headerbtn { + top: 8px; + right: 10px; + .el-message-box__close { + font-size: 22px; + color: #b2b2b2; + } + } + } + + .el-message-box__content { + padding: 0 0 28px 0; + margin-top: 30px; + .el-message-box__status { + margin-right: 14px; + font-size: 24px; + color: #e32e2e; + // display: block; + } + + .el-message-box__message { + margin-left: 0; + color: #000; + font-size: 16px; + line-height: 32px; + font-weight: normal; + display: flex; + align-items: center; + justify-content: center; + padding: 0 20px; + p{ + display: flex; + align-items: center; + justify-content: center; + .el-icon-warning-outline{ + margin-right: 6px; + font-size: 18px; + color: #e32e2e; + } + } + + } + } + + .el-message-box__btns { + padding: 0; + display: flex; + justify-content: flex-end; + padding-right: 20px; + margin-top: 40px; + padding-bottom: 20px; + + .el-button { + min-width: 120px; + height: 40px; + font-size: 16px; + border-radius: 6px; + padding: 0 18px; + } + + .el-button--default { + color: rgba(0, 0, 0, .2); + border-color: rgba(0, 0, 0, .1); + background-color: #FFFFFF; + } + + .el-button--primary { + background-color: #3b7cff; + border-color: #3b7cff; + color: #fff; + } + } +} + +.custom-message-dialog { + +} \ No newline at end of file diff --git a/src/views/course/ManageListRemote.vue b/src/views/course/ManageListRemote.vue index db1a4008..2da46c0d 100644 --- a/src/views/course/ManageListRemote.vue +++ b/src/views/course/ManageListRemote.vue @@ -31,15 +31,16 @@ !learningTimeRange || learningTimeRange.length === 0 ? 'noSplitDatePicker' : '' ]"> + value-format="yyyy-MM-dd 00:00:00" range-separator="至" start-placeholder="培训时间" + :picker-options="pickerOptions" @change="handleLearningTimeRangeChange">
+ - +
@@ -60,7 +61,7 @@
- +
@@ -71,18 +72,19 @@
-
+
- +
- + + 选择 +
{{ item.name }} @@ -112,20 +114,11 @@
新建课程
-
-
+
+
- + - + - + @@ -155,7 +147,7 @@ @@ -165,10 +157,10 @@ @@ -183,7 +175,7 @@ @@ -214,39 +206,56 @@ +
- + @@ -384,6 +393,7 @@
+
@@ -395,6 +405,7 @@ import auditCourse1 from '@/components/Course/auditCourse1.vue'; import auditCourse2 from '@/components/Course/auditCourse2.vue'; import adminPage from '@/components/Administration/adminPage.vue'; import TopCourseSorter from '@/components/Course/TopCourseSorter.vue'; +import chooseOrg from '@/components/System/chooseOrg.vue'; import apiResowner from '../../api/modules/resowner.js'; import apiType from '../../api/modules/type.js' import { courseType } from '../../utils/tools.js'; @@ -405,9 +416,9 @@ import apiUserbasic from "@/api/boe/userbasic.js" import apiTeacher from '../../api/modules/teacher.js'; export default { name: 'manageCourse', - components: { courseForm, manager, auditCourse1, auditCourse2, adminPage, TopCourseSorter }, + components: { courseForm, manager, auditCourse1, auditCourse2, adminPage, TopCourseSorter, chooseOrg }, computed: { - ...mapGetters(['resOwnerMap', 'sysTypeMap', 'userInfo']), + ...mapGetters(['resOwnerMap', 'sysTypeMap', 'userInfo', 'identity']), }, data() { return { @@ -434,6 +445,8 @@ export default { exportLoading: false, resOwner: [], resOwnerFilterWarned: false, + orgId: '', + orgName: '', defaultProps: { value: 'code', label: 'name', @@ -577,6 +590,12 @@ export default { border-radius: 4px; background-color: #4284F7; } + #app::-webkit-scrollbar { + width: 6px; + height: 6px; + background-color:rgba(0, 0, 0, .1); + border-radius: 4px; + } `; document.head.appendChild(style); this.scrollbarStyleApplied = true; @@ -767,14 +786,12 @@ export default { return true; }, formatCourseDuration(row) { - if (row.durationDesc) { - return row.durationDesc; - } - const duration = row.duration !== undefined - ? row.duration - : (row.studyDuration !== undefined ? row.studyDuration : row.totalDuration); - if (duration === undefined || duration === null) { - return '-'; + // if (row.durationDesc) { + // return row.durationDesc; + // } + const duration = row.courseDuration + if (duration === undefined || duration === null || duration === 0) { + return '0分钟'; } const minutes = Math.round(duration / 60); if (minutes >= 60) { @@ -793,13 +810,26 @@ export default { return count; }, formatScore(row) { - if (row.score || row.score === 0) { - return row.score; + let score; + // 优先取score,其次取avgScore + if (row.score !== undefined && (row.score || row.score === 0)) { + score = row.score; + } else if (row.avgScore !== undefined && (row.avgScore || row.avgScore === 0)) { + score = row.avgScore; + } else { + return '-'; } - if (row.avgScore || row.avgScore === 0) { - return row.avgScore; + + // 处理数值,四舍五入保留1位小数 + // 先转换为数字类型,避免字符串格式的数值问题 + const numScore = Number(score); + // 检查是否为有效数字 + if (isNaN(numScore)) { + return '-'; } - return '-'; + + // 四舍五入保留1位小数 + return numScore.toFixed(1); }, getDurationNumber(row) { const duration = row.duration !== undefined @@ -889,14 +919,13 @@ export default { delete query[key]; } }); - const [resOne = '', resTwo = '', resThree = ''] = this.resOwner || []; const [sysOne = '', sysTwo = '', sysThree = ''] = this.sysTypeList || []; - query.orgld = resOne; - query.orgName = resTwo; - query.orgFullName = resThree; query.sysType1 = sysOne; query.sysType2 = sysTwo; query.sysType3 = sysThree; + if (this.orgId) { + query.orgId = this.orgId; + } if (this.params.name) { query.keyword = this.params.name; } @@ -957,33 +986,28 @@ export default { console.log(row.isTop); if (row.isTop == false) { // console.log('fa') - this.$confirm('此操作将置顶此课程, 是否继续?', '提示', { - confirmButtonText: '确定', - cancelButtonText: '取消', - type: 'warning' - }).then(() => { - apiCourse.setTop(params).then(res => { - if (res.status === 200 && res.result === true) { - this.$message.success('置顶成功!') - this.searchData(); - } else { - this.$message({ - type: 'error', - message: res.message - }); - } - }) - }).catch(() => { - this.$message({ - type: 'info', - message: '置顶失败' - }); - }); + apiCourse.setTop(params).then(res => { + if (res.status === 200 && res.result === true) { + this.$message.success('置顶成功!') + this.searchData(); + } else if (res.status === 500) { + this.$message({ + type: 'error', + message: '已置顶10条课程,若需继续置顶,请对部分课程执行取消置顶操作' + }); + } else { + this.$message({ + type: 'error', + message: res.message + }); + } + }) } else if (row.isTop == true) { this.$confirm('此操作将取消置顶此课程, 是否继续?', '提示', { confirmButtonText: '确定', cancelButtonText: '取消', - type: 'warning' + type: 'warning', + customClass: 'custom-confirm-dialog' }).then(() => { apiCourse.setTop(params).then(res => { if (res.status === 200 && res.result === true) { @@ -1013,10 +1037,11 @@ export default { // 复制 copyCourse(item) { const confirmText = `确认复制${item.name}吗?`; - this.$confirm(confirmText, '提示', { + this.$confirm(confirmText, '复制确认', { confirmButtonText: '确定', cancelButtonText: '取消', - type: 'warning' + type: 'warning', + customClass: 'custom-confirm-dialog' }).then(() => { const reqdata = { id: item.id, @@ -1037,10 +1062,11 @@ export default { }, // 撤回接口 withdraw(row) { - this.$confirm(`确定撤回${row.name}的审核申请吗?`, '提示', { + this.$confirm(`确定撤回${row.name}的审核申请吗?`, '撤回确认', { confirmButtonText: '确定', cancelButtonText: '取消', - type: 'warning' + type: 'warning', + customClass: 'custom-confirm-dialog' }).then(() => { apiCourse.revokeSubmit(row.id).then((res) => { if (res.status === 200 && res.result) { @@ -1058,6 +1084,8 @@ export default { this.resOwner = []; this.sysTypeList = []; this.learningTimeRange = []; + this.orgId = ''; + this.orgName = ''; this.teacherFilterList = []; this.teacherSelected = []; this.teacherOptions = []; @@ -1131,10 +1159,11 @@ export default { const nextEnabled = !row.enabled; const actionText = nextEnabled ? '启用' : '停用'; try { - await this.$confirm(`确定${actionText}${row.name}吗?`, '提示', { + await this.$confirm(`确定${actionText}${row.name}吗?`, `${actionText}确认`, { confirmButtonText: '确定', cancelButtonText: '取消', - type: 'warning' + type: 'warning', + customClass: 'custom-confirm-dialog' }); } catch (error) { return; @@ -1181,6 +1210,14 @@ export default { }); }, + // 表格排序变化事件 + handleSortChange({ column, prop, order }) { + // order: ascending(升序) | descending(降序) | null(取消排序) + console.log('排序变化:', { column, prop, order }); + // TODO: 后续可以使用接口进行排序 + // 如果需要接口排序,可以在这里调用 searchData 方法重新查询 + // this.searchData(true); + }, viewTopic(row) { if (row.status == 1) { return this.$message.warning('请提交课程再预览!') @@ -1284,6 +1321,19 @@ export default { sessionStorage.setItem('courseDetail', JSON.stringify(row)); this.$router.push({ path: '/iframe/course/coursemanage-remote' }); }, + showChooseOrg() { + if (this.$refs.refChooseOrg) { + this.$refs.refChooseOrg.dlgShow = true; + } + }, + confirmChooseOrg(orgInfo) { + if (!orgInfo) return; + this.orgId = orgInfo.id || ''; + this.orgName = orgInfo.name || ''; + if (this.$refs.refChooseOrg) { + this.$refs.refChooseOrg.dlgShow = false; + } + }, showChooseCourse() { this.courseChooseShow = true; }, @@ -1319,10 +1369,14 @@ export default { // this.$message({ message: msg, type: 'success', offset: 50 }); // }, delItem(row) { - this.$confirm(`确认删除${row.name}吗?`, '提示', { + // this.$message({ type: 'success',customClass: 'custom-message-dialog', message: '删除成功', duration: 10000000 }); + // return false + this.$confirm(`确认删除${row.name}吗?`, '删除确认', { confirmButtonText: '确定', cancelButtonText: '取消', - type: 'warning' + dangerouslyUseHTMLString: true, + type: 'warning', + customClass: 'custom-confirm-dialog' }).then(async () => { let params = { id: row.id, @@ -1357,7 +1411,7 @@ export default { } }) .catch((err) => { - this.$message({ type: 'info', message: '已取消删除', duration: 5000 }); + // this.$message({ type: 'info', message: '已取消删除', duration: 5000 }); }); }, showAddCatalogZhang(bal) { @@ -1449,184 +1503,278 @@ export default { margin-bottom: 0; } -.filter-row--primary .filter-actions { -} +.filter-row--primary .filter-actions {} .filter-row--advanced { margin-top: 10px; } -.filter-field--name ::v-deep .el-input__inner { - width: 444px; - height: 32px; - background: #FFFFFF; - border-radius: 6px; - border: 1px solid rgba(0, 0, 0, .2); - line-height: 32px; - padding: 0 10px; +.filter-field--name { + ::v-deep .el-input__inner { + width: 444px; + height: 32px; + background: #FFFFFF; + border-radius: 6px; + border: 1px solid rgba(0, 0, 0, .2); + line-height: 32px; + padding: 0 10px; + &:focus { + border: 1px solid #4284F7; + } + } } -.filter-field--category ::v-deep.el-cascader { - line-height: 32px; - .el-input__inner { +.filter-field--category { + ::v-deep.el-cascader { + line-height: 32px; + .el-input__inner { + width: 180px; + height: 32px; + background: #FFFFFF; + border-radius: 6px; + border: 1px solid rgba(0, 0, 0, .2); + line-height: 32px; + padding: 0 10px; + color: #000000; + &:focus { + border: 1px solid #4284F7; + } + } + + .el-input { + line-height: 32px; + } + + .el-input__suffix { + line-height: 32px; + } + + .el-input__icon { + line-height: 32px; + } + } + + +} + +.filter-field--teacher { + ::v-deep.el-select { + .el-select__input { + margin-left: 10px; + } + .el-input { + &:focus { + border: 1px solid #4284F7; + } + } + .el-input__inner { + width: 180px; + height: 32px; + background: #FFFFFF; + border-radius: 6px; + border: 1px solid rgba(0, 0, 0, .2); + line-height: 32px; + padding: 0 10px; + + } + } +} + +.filter-field--status { + ::v-deep.el-select { + .el-select__input { + margin-left: 10px; + } + + .el-input__inner { + width: 136px; + height: 32px; + background: #FFFFFF; + border-radius: 6px; + border: 1px solid rgba(0, 0, 0, .2); + line-height: 32px; + padding: 0 10px; + &:focus { + border: 1px solid #4284F7; + } + } + + .el-input__icon { + line-height: 32px; + } + } +} + +.filter-field--publish { + ::v-deep.el-select { + .el-select__input { + margin-left: 10px; + } + + .el-input__inner { + width: 136px; + height: 32px; + background: #FFFFFF; + border-radius: 6px; + border: 1px solid rgba(0, 0, 0, .2); + line-height: 32px; + padding: 0 10px; + &:focus { + border: 1px solid #4284F7; + } + } + + .el-input__icon { + line-height: 32px; + } + } +} + +.filter-field--enabled { + ::v-deep.el-select { + .el-select__input { + margin-left: 10px; + } + + .el-input__inner { + width: 136px; + height: 32px; + background: #FFFFFF; + border-radius: 6px; + border: 1px solid rgba(0, 0, 0, .2); + line-height: 32px; + padding: 0 10px; + &:focus { + border: 1px solid #4284F7; + } + } + + .el-input__icon { + line-height: 32px; + } + } + +} + +.filter-field--open { + ::v-deep.el-select { + .el-select__input { + margin-left: 10px; + } + + .el-input__inner { + width: 124px; + height: 32px; + background: #FFFFFF; + border-radius: 6px; + border: 1px solid rgba(0, 0, 0, .2); + line-height: 32px; + padding: 0 10px; + &:focus { + border: 1px solid #4284F7; + } + } + + .el-input__icon { + line-height: 32px; + } + } + +} + + +// .filter-field--resowner ::v-deep.el-cascader { +// line-height: 32px; +// .el-input__inner { +// width: 180px; +// height: 32px; +// background: #FFFFFF; +// border-radius: 6px; +// border: 1px solid rgba(0, 0, 0, .2); +// line-height: 32px; +// padding: 0 10px; +// } +// .el-input { +// line-height: 32px; +// } +// .el-input__suffix { +// line-height: 32px; +// } +// .el-input__icon { +// line-height: 32px; +// } +// } + +.filter-field--resowner { + + // line-height: 32px; + ::v-deep .el-input__inner { width: 180px; height: 32px; background: #FFFFFF; - border-radius: 6px; + border-radius: 6px 0 0 6px; border: 1px solid rgba(0, 0, 0, .2); line-height: 32px; padding: 0 10px; } - .el-input { - line-height: 32px; - } - .el-input__suffix { - line-height: 32px; - } - .el-input__icon { - line-height: 32px; - } + + // .el-input { + // line-height: 32px; + // } + // .el-input__suffix { + // line-height: 32px; + // } + // .el-input__icon { + // line-height: 32px; + // } } -.filter-field--teacher ::v-deep.el-select { - .el-select__input { - margin-left: 10px; - } - .el-input__inner { - width: 180px; - height: 32px; - background: #FFFFFF; - border-radius: 6px; - border: 1px solid rgba(0, 0, 0, .2); - line-height: 32px; - padding: 0 10px; - } -} -.filter-field--status ::v-deep.el-select { - .el-select__input { - margin-left: 10px; - } - .el-input__inner { - width: 136px; - height: 32px; - background: #FFFFFF; - border-radius: 6px; - border: 1px solid rgba(0, 0, 0, .2); - line-height: 32px; - padding: 0 10px; - } - .el-input__icon { - line-height: 32px; - } -} -.filter-field--publish ::v-deep.el-select { - .el-select__input { - margin-left: 10px; - } - .el-input__inner { - width: 136px; - height: 32px; - background: #FFFFFF; - border-radius: 6px; - border: 1px solid rgba(0, 0, 0, .2); - line-height: 32px; - padding: 0 10px; - } - .el-input__icon { - line-height: 32px; +.filter-field--creator { + ::v-deep.el-select { + .el-select__input { + margin-left: 10px; + } + + .el-input__inner { + width: 136px; + height: 32px; + background: #FFFFFF; + border-radius: 6px; + border: 1px solid rgba(0, 0, 0, .2); + line-height: 32px; + padding: 0 10px; + &:focus { + border: 1px solid #4284F7; + } + } } + } -.filter-field--enabled ::v-deep.el-select { - .el-select__input { - margin-left: 10px; - } - .el-input__inner { - width: 136px; - height: 32px; - background: #FFFFFF; - border-radius: 6px; - border: 1px solid rgba(0, 0, 0, .2); - line-height: 32px; - padding: 0 10px; - } - .el-input__icon { - line-height: 32px; - } -} +.filter-field--create-from { + ::v-deep.el-select { + .el-select__input { + margin-left: 10px; + } -.filter-field--open ::v-deep.el-select { - .el-select__input { - margin-left: 10px; - } - .el-input__inner { - width: 124px; - height: 32px; - background: #FFFFFF; - border-radius: 6px; - border: 1px solid rgba(0, 0, 0, .2); - line-height: 32px; - padding: 0 10px; - } - .el-input__icon { - line-height: 32px; - } -} + .el-input__inner { + width: 180px; + height: 32px; + background: #FFFFFF; + border-radius: 6px; + border: 1px solid rgba(0, 0, 0, .2); + line-height: 32px; + padding: 0 10px; + &:focus { + border: 1px solid #4284F7; + } + } - -.filter-field--resowner ::v-deep.el-cascader { - line-height: 32px; - .el-input__inner { - width: 180px; - height: 32px; - background: #FFFFFF; - border-radius: 6px; - border: 1px solid rgba(0, 0, 0, .2); - line-height: 32px; - padding: 0 10px; - } - .el-input { - line-height: 32px; - } - .el-input__suffix { - line-height: 32px; - } - .el-input__icon { - line-height: 32px; - } -} - -.filter-field--creator ::v-deep.el-select { - .el-select__input { - margin-left: 10px; - } - .el-input__inner { - width: 136px; - height: 32px !important; - background: #FFFFFF; - border-radius: 6px; - border: 1px solid rgba(0, 0, 0, .2); - line-height: 32px; - padding: 0 10px; - } -} - -.filter-field--create-from ::v-deep.el-select { - .el-select__input { - margin-left: 10px; - } - .el-input__inner { - width: 180px; - height: 32px; - background: #FFFFFF; - border-radius: 6px; - border: 1px solid rgba(0, 0, 0, .2); - line-height: 32px; - padding: 0 10px; - } - .el-input__icon { - line-height: 32px; + .el-input__icon { + line-height: 32px; + } } + } .filter-field--time { @@ -1638,28 +1786,37 @@ export default { border: 1px solid rgba(0, 0, 0, .2); line-height: 32px; padding: 0 10px; + &:focus { + border: 1px solid #4284F7; + } + .el-input__icon { line-height: 32px; + &.el-icon-date { position: absolute; right: 0; } + &.el-icon-close { margin-right: 8px; } } + .el-range-input { text-align: left; } - + .el-range-separator { line-height: 30px; } + .el-range-input { line-height: 30px; } } } + .toggle-link { padding: 0; font-size: 14px; @@ -1676,6 +1833,11 @@ export default { width: 100%; } } +.creator-filter { + ::v-deep .choice { + width: 100%; + } +} .filter-actions--inline { padding-top: 0; @@ -1695,7 +1857,6 @@ export default { } .filter-actions .toggle-link { - margin-left: 12px; margin-right: 10px; } @@ -1707,7 +1868,7 @@ export default { background-position: center; background-size: 32px 32px; background-color: transparent; - transition: all 0.2s ease; + // transition: all 0.2s ease; } .icon-btn:disabled { @@ -1726,7 +1887,7 @@ export default { .icon-btn--reset { background-image: url('~@/assets/images/svg/reset.svg'); - background-size: 18px 18px; + background-size: 15px 15px; } .icon-btn--reset:hover, @@ -1737,7 +1898,7 @@ export default { .icon-btn--top { background-image: url('~@/assets/images/svg/pintotop.svg'); - background-size: 16px 16px; + background-size: 14px 14px; } .icon-btn--top:hover, @@ -1748,7 +1909,7 @@ export default { .icon-btn--export { background-image: url('~@/assets/images/svg/export.svg'); - background-size: 16px 16px; + background-size: 14px 14px; } .icon-btn--export:hover, @@ -1787,7 +1948,7 @@ export default { background-image: url('~@/assets/images/svg/createCourse.svg'); background-repeat: no-repeat; background-position: 12px center; - background-size: 16px 16px; + background-size: 14px 14px; color: #4284F7; font-weight: 400; font-size: 14px; @@ -1822,8 +1983,83 @@ export default { // } .pagination { - text-align: center; - padding: 40px 0 80px 0; + text-align: right; + padding-top: 20px; + ::v-deep .el-pagination { + .el-pagination__total { + font-size: 14px; + color: #000000; + } + .el-pagination__sizes { + margin-right: 4px; + .el-input{ + margin: 0; + width: 89px; + + } + .el-input__inner { + width: 89px; + background: #F5F9FF; + border-radius: 4px; + border: 1px solid #DFDFDF; + height: 28px; + font-size: 14px; + color: #000000; + } + } + .btn-prev, .btn-next { + width: 28px; + height: 28px; + background: #F5F9FF; + border-radius: 4px; + border: 1px solid #DFDFDF; + // &:hover { + // background: #4284F7; + // color: #FFFFFF; + // } + } + .btn-quicknext{ + background: transparent; + border: none; + line-height: 44px; + &:before { + content: '......'; + } + + } + .el-pager { + .number { + min-width: 28px; + height: 28px; + background: #F5F9FF; + border-radius: 4px; + border: 1px solid #DFDFDF; + font-weight: normal; + color: #000000; + margin: 0 4px; + &.active { + background: #4284F7; + color: #FFFFFF; + border: none; + } + } + } + .el-pagination__jump { + font-size: 14px; + color: #000000; + margin-left: 4px; + .el-input__inner { + width: 28px; + height: 28px; + background: #F5F9FF; + border-radius: 4px; + border: 1px solid #DFDFDF; + font-size: 14px; + color: #000000; + } + } + + } } .course-types { @@ -1888,6 +2124,8 @@ export default { ::v-deep .el-table .el-table__body-wrapper::-webkit-scrollbar { width: 6px; height: 6px; + background-color:rgba(0, 0, 0, .1); + border-radius: 4px; } ::v-deep .el-table .el-table__body-wrapper::-webkit-scrollbar-thumb { @@ -1898,38 +2136,90 @@ export default { ::v-deep.el-table { - th.el-table__cell{ + border-radius: 6px 6px 0 0; + td.el-table__cell { + border-bottom: 1px solid rgba(0, 0, 0, .1); + } + th.el-table__cell { background: rgba(66, 132, 247, 0.1); padding: 3px 0; + .cell { font-weight: bold; font-size: 14px; color: #60769D; } - &.el-table--medium .el-table__cell{ + .caret-wrapper { + .sort-caret { + border: 4px solid transparent; + &.ascending { + border-bottom-color: #C0C4CC; + top: 8px; + } + &.descending { + border-top-color: #C0C4CC; + bottom: 8px; + } + } + } + + &.el-table--medium .el-table__cell { padding: 5px 0; } } + .course-name { font-weight: 400; font-size: 14px; color: #000000; line-height: 20px; } + .common-cell { font-weight: 400; font-size: 14px; color: #000000; } - .status--pass { - color: #2EAD4D; - } - .status--reject { - color: #F41228; - } - ::v-deep .el-table--medium .el-table__cell{ + + .single-line-ellipsis { + display: inline-block; + max-width: 100%; + overflow: hidden; + white-space: nowrap; + text-overflow: ellipsis; + vertical-align: middle; + } + + .status--pass { + color: #2EAD4D; + } + + .status--reject { + color: #F41228; + } + + .action-link--primary { + color: #4284F7; + font-weight: bold; + } + + .action-link--danger { + color: #E32E2E; + font-weight: bold; + } + + .action-link--more { + color: rgba(0, 0, 0, .2); + font-weight: bold; + } + + .action-link--bold { + font-weight: bold; + } + + ::v-deep .el-table--medium .el-table__cell { padding: 5px 0; } } - + From 4c1c9b2afe37ced0cbbfa46d38b85be3bde621af Mon Sep 17 00:00:00 2001 From: huweihang <916879598@qq.com> Date: Fri, 12 Dec 2025 01:23:20 +0800 Subject: [PATCH 04/15] =?UTF-8?q?[FIX]=E8=B5=84=E6=BA=90=E5=BD=92=E5=B1=9E?= =?UTF-8?q?=E6=A0=B7=E5=BC=8F=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit (cherry picked from commit 89364b1aef11e3f71a792d036b19ca3f86514b1b) --- src/views/course/ManageListRemote.vue | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/views/course/ManageListRemote.vue b/src/views/course/ManageListRemote.vue index 2da46c0d..92fa36bc 100644 --- a/src/views/course/ManageListRemote.vue +++ b/src/views/course/ManageListRemote.vue @@ -181,7 +181,7 @@ From 794177b358074aae0961bb7530de2c5d9f857bfb Mon Sep 17 00:00:00 2001 From: huweihang <916879598@qq.com> Date: Fri, 12 Dec 2025 01:48:05 +0800 Subject: [PATCH 05/15] =?UTF-8?q?[FIX]=E6=96=B0=E5=A2=9E=20=20tooltip?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit (cherry picked from commit 5cd85a3e156e39a30299ac750cab78e0275bd406) --- src/views/course/ManageListRemote.vue | 46 +++++++++++++++++++++++---- 1 file changed, 39 insertions(+), 7 deletions(-) diff --git a/src/views/course/ManageListRemote.vue b/src/views/course/ManageListRemote.vue index 92fa36bc..3f97c0a0 100644 --- a/src/views/course/ManageListRemote.vue +++ b/src/views/course/ManageListRemote.vue @@ -68,8 +68,12 @@ {{ showAdvancedFilter ? '收起' : '展开' }} - -
+ + + + +
+
@@ -105,8 +109,12 @@ {{ showAdvancedFilter ? '收起' : '展开' }} - -
+ + + + +
+
@@ -114,9 +122,13 @@
新建课程
-
-
+ +
+
+ +
+
@@ -2223,3 +2235,23 @@ export default { } + + From 9ae159d0474a00a80561ea29b831814f728ef324 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=B5=B5=E4=BE=9D=E6=A2=A6?= <15822465730@163.com> Date: Fri, 12 Dec 2025 10:09:36 +0800 Subject: [PATCH 06/15] =?UTF-8?q?=E6=95=99=E5=B8=88=E7=AB=AF1=E6=9C=9F?= =?UTF-8?q?=E9=97=AE=E9=A2=98=E4=BF=AE=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/SimpleMessageBox/index.vue | 2 +- src/views/course/CourseManage.vue | 18 +++++++++++++----- src/views/course/TeacherList.vue | 3 ++- 3 files changed, 16 insertions(+), 7 deletions(-) diff --git a/src/components/SimpleMessageBox/index.vue b/src/components/SimpleMessageBox/index.vue index b33871ba..343113f0 100644 --- a/src/components/SimpleMessageBox/index.vue +++ b/src/components/SimpleMessageBox/index.vue @@ -1,6 +1,6 @@ - + + @@ -72,7 +75,7 @@ -
@@ -250,7 +253,7 @@ width="50%" :append-to-body="true"> -
@@ -316,7 +319,7 @@ :append-to-body="true"> -
@@ -577,6 +580,7 @@ export default { name: "", status: "", }; + this.queryResourceStudyPeopleList() }, resetExamCommonResourceQuery() { @@ -587,6 +591,7 @@ export default { name: "", status: "", }; + this.queryExamStudyPeopleList() }, handleShowResourdeDetailList(row) { @@ -758,6 +763,7 @@ export default { }, resetResourseList() { this.recourseListQuery.contentName = ""; + this.getResourseList() }, resetStudyRecords() { this.learningRecords.name = ""; @@ -765,6 +771,7 @@ export default { this.studyDateTime = []; this.learningRecords.queryStartTime = ""; this.learningRecords.queryFinishTime = ""; + this.getStudyRecords() }, resetSignupList() { @@ -772,6 +779,7 @@ export default { name: "", signType: "", }; + this.getSignupList() }, resOwnerName(code) { if (code == "") { diff --git a/src/views/course/TeacherList.vue b/src/views/course/TeacherList.vue index 5a2742d3..d051b2e7 100644 --- a/src/views/course/TeacherList.vue +++ b/src/views/course/TeacherList.vue @@ -33,6 +33,7 @@
+ @@ -467,7 +468,7 @@ export default { this.params.status = ""; this.params.enabled = ""; this.params.pageIndex = 1; - // this.getList(); + this.getNewList(); this.isSearh = false; }, toExamine(row) { From 5454ead5cfd8331626e78189a627830486a7ef15 Mon Sep 17 00:00:00 2001 From: huweihang Date: Fri, 12 Dec 2025 15:13:37 +0800 Subject: [PATCH 07/15] =?UTF-8?q?style:=20=E6=9B=B4=E6=96=B0=E6=A0=B7?= =?UTF-8?q?=E5=BC=8F=E4=BB=A5=E4=BC=98=E5=8C=96=E8=AF=BE=E7=A8=8B=E7=AE=A1?= =?UTF-8?q?=E7=90=86=E7=95=8C=E9=9D=A2=EF=BC=8C=E8=B0=83=E6=95=B4=E6=B6=88?= =?UTF-8?q?=E6=81=AF=E6=A1=86=E5=92=8C=E8=BF=87=E6=BB=A4=E5=99=A8=E5=B8=83?= =?UTF-8?q?=E5=B1=80=EF=BC=8C=E5=A2=9E=E5=BC=BA=E7=94=A8=E6=88=B7=E4=BD=93?= =?UTF-8?q?=E9=AA=8C=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit (cherry picked from commit 2d06dde9849d7854a69b910d65eda9425656d4c5) --- src/assets/styles/index.scss | 6 +- src/components/Course/TopCourseSorter.vue | 20 +- src/views/course/ManageListRemote.vue | 879 ++++++++++++---------- 3 files changed, 501 insertions(+), 404 deletions(-) diff --git a/src/assets/styles/index.scss b/src/assets/styles/index.scss index 8b1041d2..c3f9ced0 100644 --- a/src/assets/styles/index.scss +++ b/src/assets/styles/index.scss @@ -422,8 +422,8 @@ li{ } .el-message-box__content { - padding: 0 0 28px 0; - margin-top: 30px; + margin-top: 0; + padding: 50px 0; .el-message-box__status { margin-right: 14px; font-size: 24px; @@ -460,7 +460,7 @@ li{ display: flex; justify-content: flex-end; padding-right: 20px; - margin-top: 40px; + margin-top: 0px; padding-bottom: 20px; .el-button { diff --git a/src/components/Course/TopCourseSorter.vue b/src/components/Course/TopCourseSorter.vue index 3037c62b..55cf78d6 100644 --- a/src/components/Course/TopCourseSorter.vue +++ b/src/components/Course/TopCourseSorter.vue @@ -31,9 +31,15 @@
{{ index + 1 }}
-
{{ item.name }}
-
- {{ item.teacherName || '-' }} +
+ +
{{ item.name }}
+
+
+
+ +
{{ item.teacherName || '-' }}
+
@@ -202,6 +208,7 @@ export default { .row-cell--name, .row-cell--teacher { color: #303133; + overflow: hidden; } .row-cell--name { @@ -212,6 +219,13 @@ export default { color: #666; } +.cell-text { + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; + width: 100%; +} + .row-cell--handle i { font-size: 20px; color: #c0c4cc; diff --git a/src/views/course/ManageListRemote.vue b/src/views/course/ManageListRemote.vue index 3f97c0a0..847919d4 100644 --- a/src/views/course/ManageListRemote.vue +++ b/src/views/course/ManageListRemote.vue @@ -49,18 +49,13 @@ -
+
-
- - - - -
+
@@ -78,12 +73,23 @@
- +
+ + + + +
- - 选择 - +
@@ -147,22 +153,22 @@ {{ formatSysTypeChain(scope.row) }} - + - + - + - + @@ -175,22 +181,22 @@ 审核驳回 - + - + - + - +