From f401f40a6e47b8c35e947daddcdb0a99e69c5ab3 Mon Sep 17 00:00:00 2001 From: wzclm <2855471171@qq.com> Date: Sat, 1 Mar 2025 16:07:20 +0800 Subject: [PATCH] =?UTF-8?q?=E9=87=8D=E6=9E=84=E8=AF=BE=E7=A8=8B=E7=AE=A1?= =?UTF-8?q?=E7=90=86=E6=A8=A1=E5=9D=97=E5=B9=B6=E6=9B=B4=E6=96=B0=E8=B7=AF?= =?UTF-8?q?=E7=94=B1=E9=80=89=E6=8B=A9=20-=20=E5=B0=86=E8=AF=BE=E7=A8=8B?= =?UTF-8?q?=E7=AE=A1=E7=90=86=E4=BB=8E=E6=B4=BB=E5=8A=A8=E6=A8=A1=E5=9D=97?= =?UTF-8?q?=E7=A7=BB=E8=87=B3=E4=B8=93=E7=94=A8=E8=AF=BE=E7=A8=8B=E6=A8=A1?= =?UTF-8?q?=E5=9D=97=20-=20=E4=BD=BF=E7=94=A8=E6=96=B0=E7=9A=84=E8=AF=BE?= =?UTF-8?q?=E7=A8=8B=E7=AE=A1=E7=90=86=E7=BB=93=E6=9E=84=E6=9B=B4=E6=96=B0?= =?UTF-8?q?=20AdminLayout=20=E4=BE=A7=E8=BE=B9=E6=A0=8F=E8=8F=9C=E5=8D=95?= =?UTF-8?q?=20-=20=E4=BF=AE=E6=94=B9=E8=B7=AF=E7=94=B1=E5=99=A8=E9=85=8D?= =?UTF-8?q?=E7=BD=AE=E4=BB=A5=E5=8F=8D=E6=98=A0=E6=96=B0=E7=9A=84=E8=AF=BE?= =?UTF-8?q?=E7=A8=8B=E7=AE=A1=E7=90=86=E8=B7=AF=E7=94=B1=20-=20=E4=BB=8E?= =?UTF-8?q?=E6=B4=BB=E5=8A=A8=E6=A8=A1=E5=9D=97=E4=B8=AD=E5=88=A0=E9=99=A4?= =?UTF-8?q?=E5=B7=B2=E5=BC=83=E7=94=A8=E7=9A=84=E8=AF=BE=E7=A8=8B=E7=AE=A1?= =?UTF-8?q?=E7=90=86=E8=A7=86=E5=9B=BE=20-=E6=B7=BB=E5=8A=A0=E7=89=A9?= =?UTF-8?q?=E7=A7=8D=E7=9B=91=E6=B5=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- package-lock.json | 1 - src/api/activity/courseEnrollment.js | 30 + src/api/monitor/species.js | 79 ++ src/layout/AdminLayout.vue | 10 +- src/router/index.js | 10 +- src/utils/request.js | 1 - src/utils/sort.js | 12 + src/views/AIPatrol/drone/index.vue | 67 +- src/views/course/Application.vue | 342 ++++++ src/views/{activity => }/course/index.vue | 0 src/views/monitor/species/index.vue | 1218 +++++++++++++++------ 11 files changed, 1417 insertions(+), 353 deletions(-) create mode 100644 src/api/activity/courseEnrollment.js create mode 100644 src/api/monitor/species.js create mode 100644 src/views/course/Application.vue rename src/views/{activity => }/course/index.vue (100%) diff --git a/package-lock.json b/package-lock.json index 4253b72..7a9f4e9 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1968,7 +1968,6 @@ "version": "5.6.0", "resolved": "https://registry.npmmirror.com/echarts/-/echarts-5.6.0.tgz", "integrity": "sha512-oTbVTsXfKuEhxftHqL5xprgLoc0k7uScAwtryCgWF6hPYFLRwOUHiFmHGCBKP5NPFNkDVopOieyUqYGH8Fa3kA==", - "license": "Apache-2.0", "dependencies": { "tslib": "2.3.0", "zrender": "5.6.1" diff --git a/src/api/activity/courseEnrollment.js b/src/api/activity/courseEnrollment.js new file mode 100644 index 0000000..4e44709 --- /dev/null +++ b/src/api/activity/courseEnrollment.js @@ -0,0 +1,30 @@ +import request from '@/utils/request' + +/** + * 获取课程报名列表 + * @returns {Promise} 返回报名列表数据 + */ +export function getCourseEnrollmentList() { + return request.get('/api/admin/course-enrollments') +} + +/** + * 导出报名记录 + * @param {Object} params - 查询参数 + * @param {number} [params.courseId] - 课程ID + * @param {string} [params.startTime] - 开始时间 + * @param {string} [params.endTime] - 结束时间 + * @param {number} [params.status] - 状态 + * @returns {Promise} 返回文件内容 + */ +export function exportCourseEnrollments(params = {}) { + return request.get('/api/admin/course-enrollments/export', { + params: { + course_id: params.courseId, + start_time: params.startTime, + end_time: params.endTime, + status: params.status === '' ? undefined : params.status + }, + responseType: 'blob' // 设置响应类型为blob + }) +} \ No newline at end of file diff --git a/src/api/monitor/species.js b/src/api/monitor/species.js new file mode 100644 index 0000000..994cc90 --- /dev/null +++ b/src/api/monitor/species.js @@ -0,0 +1,79 @@ +import request from '@/utils/request' + +/** + * 查询物种列表 + * @param {Object} params - 查询参数 + * @param {number} [params.page=1] - 页码 + * @param {number} [params.page_size=10] - 每页条数 + * @param {string} [params.species_code] - 物种编号 + * @param {string} [params.chinese_name] - 中文名称 + * @param {string} [params.category] - 物种类别 + * @param {string} [params.protection_level] - 保护等级 + * @param {number} [params.status] - 状态 + * @returns {Promise} 返回物种列表数据 + */ +export function getSpeciesList(params = {}) { + return request.get('/api/admin/species', { + params: { + page: params.page || 1, + page_size: params.page_size || 10, + species_code: params.species_code || undefined, + chinese_name: params.chinese_name || undefined, + category: params.category || undefined, + protection_level: params.protection_level || undefined, + status: params.status === '' ? undefined : params.status + } + }) +} + +/** + * 获取物种详细信息 + * @param {string|number} id - 物种ID + * @returns {Promise} 返回物种详细信息 + */ +export function getSpecies(id) { + return request.get(`/api/admin/species/${id}`) +} + +/** + * 创建物种 + * @param {Object} data - 物种数据 + * @returns {Promise} 返回创建结果 + */ +export function addSpecies(data) { + return request.post('/api/admin/species', data, { + headers: { + 'Content-Type': 'multipart/form-data' + } + }) +} + +/** + * 更新物种信息 + * @param {string|number} id - 物种ID + * @param {Object} data - 更新数据 + * @returns {Promise} 返回更新结果 + */ +export function updateSpecies(id, data) { + return request.put(`/api/admin/species/${id}`, data) +} + +/** + * 更新物种状态 + * @param {string|number} id - 物种ID + * @param {number} status - 状态值:1-启用,0-禁用 + * @returns {Promise} 返回状态更新结果 + */ +export function updateSpeciesStatus(id, status) { + return request.put(`/api/admin/species/${id}/status`, { + status: status === 1 ? 1 : 0 // 确保只发送 1 或 0 + }) +} + +/** + * 获取物种统计信息 + * @returns {Promise} 返回统计数据,包含物种类别和保护等级的统计 + */ +export function getSpeciesStatistics() { + return request.get('/api/admin/species/statistics/overview') +} \ No newline at end of file diff --git a/src/layout/AdminLayout.vue b/src/layout/AdminLayout.vue index b18598b..2abbe2b 100644 --- a/src/layout/AdminLayout.vue +++ b/src/layout/AdminLayout.vue @@ -164,11 +164,19 @@ const handleLogout = () => { 活动管理 - 课程管理 研学管理 知识库管理 + + + 课程管理 + 报名管理 + +