From 9af71ec86b759b9e7b929b56839d9885e4574aa0 Mon Sep 17 00:00:00 2001 From: lion <120344285@qq.com> Date: Fri, 5 Sep 2025 14:46:28 +0800 Subject: [PATCH] =?UTF-8?q?=E7=AD=BE=E5=88=B0=E8=AE=B0=E5=BD=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/api/sign/index.js | 55 +++ src/views/course/components/editClass.vue | 2 +- src/views/courseQr/components/signList.vue | 375 +++++++++++++++++++++ src/views/courseQr/index.vue | 51 ++- 4 files changed, 470 insertions(+), 13 deletions(-) create mode 100644 src/api/sign/index.js create mode 100644 src/views/courseQr/components/signList.vue diff --git a/src/api/sign/index.js b/src/api/sign/index.js new file mode 100644 index 0000000..7df5626 --- /dev/null +++ b/src/api/sign/index.js @@ -0,0 +1,55 @@ +import request from "@/utils/request"; +function customParamsSerializer(params) { + let result = ''; + for (let key in params) { + if (params.hasOwnProperty(key)) { + if (Array.isArray(params[key])) { + params[key].forEach((item, index) => { + if (item.key) { + result += `${key}[${index}][key]=${item.key}&${key}[${index}][op]=${item.op}&${key}[${index}][value]=${item.value}&`; + + } else { + result += `${key}[${index}]=${item}&` + } + }); + } else { + result += `${key}=${params[key]}&`; + } + } + } + return result.slice(0, -1); +} +export function index(params, isLoading = false) { + return request({ + method: "get", + url: "/api/admin/course-content-check/index", + params, + paramsSerializer: customParamsSerializer, + isLoading + }) +} + +export function show(params, isLoading = true) { + return request({ + method: "get", + url: "/api/admin/course-content-check/show", + params, + isLoading + }) +} + +export function save(data) { + return request({ + method: "post", + url: "/api/admin/course-content-check/save", + data + }) +} + +export function destroy(params) { + return request({ + method: "get", + url: "/api/admin/course-content-check/destroy", + params + }) +} diff --git a/src/views/course/components/editClass.vue b/src/views/course/components/editClass.vue index 57d3eac..c93a5dc 100644 --- a/src/views/course/components/editClass.vue +++ b/src/views/course/components/editClass.vue @@ -78,7 +78,7 @@
- +
diff --git a/src/views/courseQr/components/signList.vue b/src/views/courseQr/components/signList.vue new file mode 100644 index 0000000..a2d2407 --- /dev/null +++ b/src/views/courseQr/components/signList.vue @@ -0,0 +1,375 @@ + + + + + diff --git a/src/views/courseQr/index.vue b/src/views/courseQr/index.vue index d0c5fb9..b0babb5 100644 --- a/src/views/courseQr/index.vue +++ b/src/views/courseQr/index.vue @@ -95,7 +95,7 @@

- {{ is_arrange === 0 ? selectedCourse.name : selectedCourse.course.name }} + {{ is_arrange === 0 ? (selectedCourse && selectedCourse.name) : (selectedCourse && selectedCourse.course && selectedCourse.course.name) }}

课表信息
- 课程名称:{{ selectedCourse.name }} + 课程名称:{{ selectedCourse && selectedCourse.name }}
- 开始时间:{{ selectedCourse.start_date }} + 开始时间:{{ selectedCourse && selectedCourse.start_date }}
- 结束时间:{{ selectedCourse.end_date }} + 结束时间:{{ selectedCourse && selectedCourse.end_date }}
- 主题:{{ selectedCourse.theme }} + 主题:{{ selectedCourse && selectedCourse.theme }}
- 时间:{{ selectedCourse.date }} - - {{ selectedCourse.period }} + 时间:{{ selectedCourse && selectedCourse.date }} - + {{ selectedCourse && selectedCourse.period }}
- 地点:{{ selectedCourse.address }} + 地点:{{ selectedCourse && selectedCourse.address }}
主讲:{{ - selectedCourse.teacher ? selectedCourse.teacher.name : "" + selectedCourse && selectedCourse.teacher ? selectedCourse.teacher.name : "" }}
- 签到地点:{{ selectedCourse.address_detail || '未设置' }} + 签到地点:{{ selectedCourse && (selectedCourse.address_detail || '未设置') }}
@@ -145,6 +145,13 @@ @click="downloadQR" >下载二维码 + 查看签到记录
@@ -164,6 +171,13 @@
+ @@ -175,12 +189,14 @@ import { } from "@/api/course/courseContent.js"; import editClass from "@/views/course/components/editClass.vue"; import addCourse from "@/views/course/components/addCourse.vue"; +import signList from "@/views/courseQr/components/signList.vue"; import { index as teacherIndex } from "@/api/info/teachers.js"; export default { name: "CourseQr", components: { editClass, addCourse, + signList, }, data() { return { @@ -272,6 +288,8 @@ export default { this.course_id = ""; this.course_date = ""; this.courseContentList = []; + this.selectedCourse = null; + this.qrImgUrl = ""; this.getCourse(e); }, async getCourse() { @@ -374,8 +392,8 @@ export default { const link = document.createElement("a"); link.href = this.qrImgUrl; const fileName = this.is_arrange === 0 - ? `${this.selectedCourse.name}-签到二维码.png` - : `${this.selectedCourse.theme}-签到二维码.png`; + ? `${this.selectedCourse && this.selectedCourse.name}-签到二维码.png` + : `${this.selectedCourse && this.selectedCourse.theme}-签到二维码.png`; link.download = fileName; link.target = "_blank"; link.click(); @@ -422,6 +440,15 @@ export default { } }); }, + + // 显示签到记录 + showSignList() { + if (!this.selectedCourse) { + this.$message.warning('请先选择课程或课表'); + return; + } + this.$refs.signList.show(); + }, }, computed: {}, };