From 5903f0c5906f713fd4c18e28dc14db700d87cc17 Mon Sep 17 00:00:00 2001 From: zhaichao Date: Tue, 15 Sep 2026 16:13:06 +0800 Subject: [PATCH] =?UTF-8?q?=E6=95=99=E5=AD=A6=E5=A4=A7=E7=BA=B2=E4=B8=8B?= =?UTF-8?q?=E8=BD=BD=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../web/controller/jwgl/ZYJXJHBController.java | 8 ++++++-- .../com/roomroot/jwgl/service/ZYJXJHBService.java | 9 +++++++-- .../jwgl/service/impl/ZYJXJHBServiceImpl.java | 13 ++++++++++--- frontend/src/api/teachBusiness/syllabus.js | 10 ++++++++++ .../src/views/teachBusiness/syllabus/index.vue | 14 +++++++++++--- frontend/vue.config.js | 2 +- 6 files changed, 45 insertions(+), 11 deletions(-) diff --git a/backend/roomroot-admin/src/main/java/com/roomroot/web/controller/jwgl/ZYJXJHBController.java b/backend/roomroot-admin/src/main/java/com/roomroot/web/controller/jwgl/ZYJXJHBController.java index f241095f..2a963691 100644 --- a/backend/roomroot-admin/src/main/java/com/roomroot/web/controller/jwgl/ZYJXJHBController.java +++ b/backend/roomroot-admin/src/main/java/com/roomroot/web/controller/jwgl/ZYJXJHBController.java @@ -103,9 +103,13 @@ public class ZYJXJHBController { /** * 导出专业教学计划到 Excel(.xlsx)。 + *

专业代号、停用标识可选,与列表筛选条件一致。

*/ @GetMapping("/export") - public void exportData(HttpServletResponse response) throws Exception { - zyjxjhbService.exportZYJXJHBExcel(response); + public void exportData( + HttpServletResponse response, + @RequestParam(required = false) String zydh, + @RequestParam(required = false) Integer ty) throws Exception { + zyjxjhbService.exportZYJXJHBExcel(response, zydh, ty); } } diff --git a/backend/roomroot-jwgl/src/main/java/com/roomroot/jwgl/service/ZYJXJHBService.java b/backend/roomroot-jwgl/src/main/java/com/roomroot/jwgl/service/ZYJXJHBService.java index d24c57bf..cf8b96a4 100644 --- a/backend/roomroot-jwgl/src/main/java/com/roomroot/jwgl/service/ZYJXJHBService.java +++ b/backend/roomroot-jwgl/src/main/java/com/roomroot/jwgl/service/ZYJXJHBService.java @@ -68,6 +68,11 @@ public interface ZYJXJHBService { /** 从 Excel(.xls/.xlsx) 导入专业教学计划 */ int importZYJXJHBFromExcel(org.springframework.web.multipart.MultipartFile file) throws Exception; - /** 导出专业教学计划到 Excel(.xlsx) */ - void exportZYJXJHBExcel(jakarta.servlet.http.HttpServletResponse response) throws Exception; + /** + * 导出专业教学计划到 Excel(.xlsx)。 + * + * @param zydh 专业代号(可选) + * @param ty 停用标识(可选,0-正常,1-停用) + */ + void exportZYJXJHBExcel(jakarta.servlet.http.HttpServletResponse response, String zydh, Integer ty) throws Exception; } diff --git a/backend/roomroot-jwgl/src/main/java/com/roomroot/jwgl/service/impl/ZYJXJHBServiceImpl.java b/backend/roomroot-jwgl/src/main/java/com/roomroot/jwgl/service/impl/ZYJXJHBServiceImpl.java index 9886daff..9ec8647a 100644 --- a/backend/roomroot-jwgl/src/main/java/com/roomroot/jwgl/service/impl/ZYJXJHBServiceImpl.java +++ b/backend/roomroot-jwgl/src/main/java/com/roomroot/jwgl/service/impl/ZYJXJHBServiceImpl.java @@ -104,9 +104,16 @@ public class ZYJXJHBServiceImpl implements ZYJXJHBService { } @Override - public void exportZYJXJHBExcel(jakarta.servlet.http.HttpServletResponse response) throws Exception { - List list = zyjxjhbMapper.selectList( - new LambdaQueryWrapper().orderByAsc(ZYJXJHB::getZydh)); + public void exportZYJXJHBExcel(jakarta.servlet.http.HttpServletResponse response, String zydh, Integer ty) throws Exception { + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + if (zydh != null && !zydh.isEmpty()) { + wrapper.eq(ZYJXJHB::getZydh, zydh); + } + if (ty != null) { + wrapper.eq(ZYJXJHB::getTy, ty); + } + wrapper.orderByAsc(ZYJXJHB::getZydh); + List list = zyjxjhbMapper.selectList(wrapper); String[] headers = {"专业代号", "课编号", "学期第次", "课类型", "学时", "学分", "周课时", "课程定位", "模块", "成绩分制", "理论学时", "实践学时", "考试课时", "教研室代号", "简称"}; byte[] bytes = com.roomroot.jwgl.utils.ExcelExportUtil.export("专业教学计划", headers, list, diff --git a/frontend/src/api/teachBusiness/syllabus.js b/frontend/src/api/teachBusiness/syllabus.js index 98f047d8..a961ebcf 100644 --- a/frontend/src/api/teachBusiness/syllabus.js +++ b/frontend/src/api/teachBusiness/syllabus.js @@ -56,3 +56,13 @@ export function listByZydhAndTy(query) { params: query }) } + +// 导出教学大纲 Excel(可选 zydh、ty,与列表筛选一致) +export function exportSyllabus(query) { + return request({ + url: '/zyjxjhb/export', + method: 'get', + params: query, + responseType: 'blob' + }) +} diff --git a/frontend/src/views/teachBusiness/syllabus/index.vue b/frontend/src/views/teachBusiness/syllabus/index.vue index 1466139a..cba8ad60 100644 --- a/frontend/src/views/teachBusiness/syllabus/index.vue +++ b/frontend/src/views/teachBusiness/syllabus/index.vue @@ -296,12 +296,14 @@ import { deleteSyllabus, batchDeleteSyllabus, updateSyllabus, - listByZydhAndTy + listByZydhAndTy, + exportSyllabus } from '@/api/teachBusiness/syllabus' import { listMajor } from '@/api/subjectMajor/major' import { listKb } from '@/api/teachOffice/kb' import { listOffice } from '@/api/teachOffice/office' import { getDicts } from '@/api/system/dict/data' +import { saveAs } from 'file-saver' const REFERENCE_DATA_PAGE_SIZE = 10000 const COURSE_TYPE_DICT_CODE = 'course_type' @@ -500,9 +502,15 @@ export default { }).catch(() => {}) }, - /* ---------- 下载(无后端接口) ---------- */ + /* ---------- 下载 ---------- */ handleDownload() { - this.$message.warning('后端暂未提供该接口') + const query = {} + if (this.searchForm.zydh) query.zydh = this.searchForm.zydh + if (this.searchForm.ty === 0 || this.searchForm.ty === 1) query.ty = this.searchForm.ty + exportSyllabus(query).then(blob => { + saveAs(blob, '教学大纲.xlsx') + this.$message.success('导出成功') + }).catch(() => {}) }, /* ---------- 分页 ---------- */ diff --git a/frontend/vue.config.js b/frontend/vue.config.js index d0df932b..dc91ec3d 100644 --- a/frontend/vue.config.js +++ b/frontend/vue.config.js @@ -9,7 +9,7 @@ const CompressionPlugin = require('compression-webpack-plugin') const name = process.env.VUE_APP_TITLE || '教学管理信息系统' // 网页标题 -const baseUrl = 'http://127.0.0.1:8080' // 后端接口 +const baseUrl = 'http://127.10.0.193:8080' // 后端接口 const port = 80 // 固定开发服务器端口,避免多实例端口混乱