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 @@
+
+
+
+
+
课程信息
+
+
+ 课程名称:
+ {{ courseInfo.name }}
+
+
+ 开始时间:
+ {{ courseInfo.start_date }}
+
+
+ 结束时间:
+ {{ courseInfo.end_date }}
+
+
+
+
+
+
+
课表信息
+
+
+ 主题:
+ {{ scheduleInfo.theme }}
+
+
+ 时间:
+ {{ scheduleInfo.date }} - {{ scheduleInfo.period }}
+
+
+ 地点:
+ {{ scheduleInfo.address }}
+
+
+ 主讲:
+ {{ scheduleInfo.teacher.name }}
+
+
+
+
+
+
+
查询条件
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 查询
+
+
+ 重置
+
+
+ 导出
+
+
+
+
+
+
+
+
签到记录
+
+
+
+
+
+
+
+
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: {},
};