diff --git a/backend/roomroot-jwgl/src/main/java/com/roomroot/jwgl/service/impl/BuildServiceImpl.java b/backend/roomroot-jwgl/src/main/java/com/roomroot/jwgl/service/impl/BuildServiceImpl.java
index 57bee390..c9b097b9 100644
--- a/backend/roomroot-jwgl/src/main/java/com/roomroot/jwgl/service/impl/BuildServiceImpl.java
+++ b/backend/roomroot-jwgl/src/main/java/com/roomroot/jwgl/service/impl/BuildServiceImpl.java
@@ -36,6 +36,13 @@ public class BuildServiceImpl implements BuildService {
String uuid = UuidUtil.getUUID();
jxlb.setId(uuid);
jxlb.setDelFlag(0);
+ // 序号留空时按现有最大序号 +1 自动生成(与导入逻辑一致),避免空序号破坏列表排序
+ String xh = jxlb.getXh();
+ if (xh == null || xh.trim().isEmpty()) {
+ jxlb.setXh(String.valueOf(getNextNumber()));
+ } else {
+ jxlb.setXh(xh.trim());
+ }
buildMapper.insert(jxlb);
}
@@ -79,6 +86,8 @@ public class BuildServiceImpl implements BuildService {
wrapper.like(JXLB::getDd, jxlb.getDd());
}
}
+ // 只返回未删除的教学楼(与 pageList 口径一致,避免已删除数据出现在下拉/全量列表里)
+ wrapper.eq(JXLB::getDelFlag, 0);
wrapper.orderByAsc(JXLB::getXh);
return buildMapper.selectList(wrapper);
}
@@ -131,14 +140,14 @@ public class BuildServiceImpl implements BuildService {
@Override
public void downloadTemplate(HttpServletResponse response) {
try {
- // 从resources/template目录读取模板文件
- ClassPathResource resource = new ClassPathResource("template/template_jxcdgl.xls");
+ // 模板文件位于 classpath:file/ 下(sheet 名为「教学楼表」)
+ ClassPathResource resource = new ClassPathResource("file/教学场地管理模板.xls");
InputStream is = resource.getInputStream();
// 设置响应头
response.setContentType("application/vnd.ms-excel");
response.setHeader("Content-Disposition", "attachment;filename=" +
- URLEncoder.encode("教学场地管理模板.xls", "UTF-8"));
+ URLEncoder.encode("教学楼管理模板.xls", "UTF-8"));
// 输出文件
OutputStream os = response.getOutputStream();
diff --git a/frontend/src/api/teachBusiness/build.js b/frontend/src/api/teachBusiness/build.js
new file mode 100644
index 00000000..d7129b67
--- /dev/null
+++ b/frontend/src/api/teachBusiness/build.js
@@ -0,0 +1,109 @@
+import request from '@/utils/request'
+
+// 教学楼管理(教学楼表 /build)
+// 接口依据:BuildController(前端 baseURL 为 /api,此处不重复 /api 前缀)
+
+/**
+ * 新增教学楼
+ * POST /build/add
+ * 请求体(JXLB):教学楼代号 jxldh、教学楼名称 jxlmc 必填;序号 xh 留空由后端自动生成
+ */
+export function addBuild(data) {
+ return request({
+ url: '/build/add',
+ method: 'post',
+ data
+ })
+}
+
+/**
+ * 删除教学楼(后端仅提供单条删除,参数为 id)
+ * POST /build/delete
+ */
+export function deleteBuild(id) {
+ return request({
+ url: '/build/delete',
+ method: 'post',
+ params: { id }
+ })
+}
+
+/**
+ * 更新教学楼
+ * POST /build/update
+ * 请求体(JXLB):id 必传
+ */
+export function updateBuild(data) {
+ return request({
+ url: '/build/update',
+ method: 'post',
+ data
+ })
+}
+
+/**
+ * 查询教学楼详情
+ * GET /build/get
+ */
+export function getBuild(id) {
+ return request({
+ url: '/build/get',
+ method: 'get',
+ params: { id }
+ })
+}
+
+/**
+ * 分页查询教学楼
+ * GET /build/list
+ * @param params { pageNum, pageSize, jxldh, jxlmc, dd }
+ */
+export function listBuild(params) {
+ return request({
+ url: '/build/list',
+ method: 'get',
+ params
+ })
+}
+
+/**
+ * 查询全部教学楼(不分页)
+ * GET /build/all
+ */
+export function listAllBuild(params) {
+ return request({
+ url: '/build/all',
+ method: 'get',
+ params
+ })
+}
+
+/**
+ * 导入教学楼 Excel,返回导入条数
+ * POST /build/import
+ * @param file 文件对象(.xls/.xlsx)
+ */
+export function importBuild(file) {
+ const formData = new FormData()
+ formData.append('file', file)
+ return request({
+ url: '/build/import',
+ method: 'post',
+ data: formData,
+ headers: { 'Content-Type': 'multipart/form-data' },
+ timeout: 60000
+ })
+}
+
+/**
+ * 下载教学楼导入模板(返回 Blob)
+ * GET /build/template
+ */
+export function downloadBuildTemplate() {
+ return request({
+ url: '/build/template',
+ method: 'get',
+ responseType: 'blob',
+ timeout: 30000
+ })
+}
diff --git a/frontend/src/views/teachBusiness/build/index.vue b/frontend/src/views/teachBusiness/build/index.vue
new file mode 100644
index 00000000..1217b208
--- /dev/null
+++ b/frontend/src/views/teachBusiness/build/index.vue
@@ -0,0 +1,507 @@
+
+