diff --git a/backend/roomroot-admin/src/main/java/com/roomroot/web/controller/jwgl/JYSController.java b/backend/roomroot-admin/src/main/java/com/roomroot/web/controller/jwgl/JYSController.java index 209598a5b..be7d93532 100644 --- a/backend/roomroot-admin/src/main/java/com/roomroot/web/controller/jwgl/JYSController.java +++ b/backend/roomroot-admin/src/main/java/com/roomroot/web/controller/jwgl/JYSController.java @@ -330,6 +330,15 @@ public class JYSController { return Result.success(pageResult); } + /** + * 去重职称列表(职称检索下拉数据源,职称无字典表) + */ + @PreAuthorize("@ss.hasPermi('teach:teacher:list')") + @GetMapping("/teacher/zc-options") + public Result> teacherZcOptions() { + return Result.success(facultyService.listDistinctZc()); + } + /** * 教员数据文件导入(.xls/.xlsx) *

表头顺序:教员编号, 教员姓名, 教研室代号, 职称, 专业技术职务等级, 教员类别, diff --git a/backend/roomroot-jwgl/src/main/java/com/roomroot/jwgl/mapper/JYBMapper.java b/backend/roomroot-jwgl/src/main/java/com/roomroot/jwgl/mapper/JYBMapper.java index ac265cfd8..15aeec641 100644 --- a/backend/roomroot-jwgl/src/main/java/com/roomroot/jwgl/mapper/JYBMapper.java +++ b/backend/roomroot-jwgl/src/main/java/com/roomroot/jwgl/mapper/JYBMapper.java @@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.roomroot.jwgl.entity.JYB; import com.roomroot.jwgl.vo.faculty.TeacherListVO; +import java.util.List; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Select; @@ -29,6 +30,10 @@ public interface JYBMapper extends BaseMapper { /** 教员列表双表联查分页 */ Page selectTeacherPageList(Page page, @Param("jyb") JYB cond); + /** 去重职称列表(教员类别/职称检索下拉数据源,职称无字典表) */ + @Select("SELECT DISTINCT \"职称\" FROM \"教员表\" WHERE \"职称\" IS NOT NULL AND \"职称\" <> '' ORDER BY \"职称\"") + List selectDistinctZc(); + @Select("SELECT TRIM(b.\"教员编号\") FROM \"教员登录表\" b " + "JOIN \"登录信息表\" a ON TRIM(a.\"编号\") = TRIM(b.\"登录信息编号\") " + "WHERE LOWER(TRIM(a.\"账号\")) = LOWER(TRIM(#{username})) " diff --git a/backend/roomroot-jwgl/src/main/java/com/roomroot/jwgl/service/FacultyService.java b/backend/roomroot-jwgl/src/main/java/com/roomroot/jwgl/service/FacultyService.java index 90773e891..899b96a1d 100644 --- a/backend/roomroot-jwgl/src/main/java/com/roomroot/jwgl/service/FacultyService.java +++ b/backend/roomroot-jwgl/src/main/java/com/roomroot/jwgl/service/FacultyService.java @@ -84,6 +84,11 @@ public interface FacultyService { */ void enableJYB(String jYBH); + /** + * 去重职称列表(职称检索下拉数据源) + */ + java.util.List listDistinctZc(); + /** * 更新教员基本信息 */ diff --git a/backend/roomroot-jwgl/src/main/java/com/roomroot/jwgl/service/impl/FacultyServiceImpl.java b/backend/roomroot-jwgl/src/main/java/com/roomroot/jwgl/service/impl/FacultyServiceImpl.java index 66a773578..ec83e255f 100644 --- a/backend/roomroot-jwgl/src/main/java/com/roomroot/jwgl/service/impl/FacultyServiceImpl.java +++ b/backend/roomroot-jwgl/src/main/java/com/roomroot/jwgl/service/impl/FacultyServiceImpl.java @@ -316,6 +316,11 @@ public class FacultyServiceImpl implements FacultyService { } } + @Override + public java.util.List listDistinctZc() { + return jybMapper.selectDistinctZc(); + } + @Override @Transactional(rollbackFor = Exception.class) public void updateJYB(JYB entity) { diff --git a/frontend/src/api/teachOffice/teacher.js b/frontend/src/api/teachOffice/teacher.js index d69346f66..f64a9010b 100644 --- a/frontend/src/api/teachOffice/teacher.js +++ b/frontend/src/api/teachOffice/teacher.js @@ -56,6 +56,14 @@ export function disableTeacher(jybh) { }) } +/** 去重职称列表(职称检索下拉)GET /jys/teacher/zc-options */ +export function listTeacherZcOptions() { + return request({ + url: '/jys/teacher/zc-options', + method: 'get' + }) +} + /** 教员复职(还原离职状态)POST /jys/teacher/enable?jybh= */ export function enableTeacher(jybh) { return request({ diff --git a/frontend/src/assets/styles/education-theme.scss b/frontend/src/assets/styles/education-theme.scss index 1bd7a1ce3..3a6b2abcd 100644 --- a/frontend/src/assets/styles/education-theme.scss +++ b/frontend/src/assets/styles/education-theme.scss @@ -485,21 +485,10 @@ body .el-table td.el-table__cell { } #app .elective-page .query-card, -#app .elective-page .upload-card, #app .elective-page .table-card { grid-column: 1 / -1; } -#app .elective-page .action-card { - grid-column: 1; - grid-row: 2; -} - -#app .elective-page .export-card { - grid-column: 2; - grid-row: 2; -} - #app .management-page .query-card .q-control, #app .management-page .search-card .q-control { max-width: 520px; diff --git a/frontend/src/views/teachOffice/elective/index.vue b/frontend/src/views/teachOffice/elective/index.vue index 36484480f..9c6bfe8c7 100644 --- a/frontend/src/views/teachOffice/elective/index.vue +++ b/frontend/src/views/teachOffice/elective/index.vue @@ -56,41 +56,6 @@ - -

-
-
-

数据导出

-

下载选修班及学员名单

-
-
-
- 下载选修班列表 - 下载选修班学员名单Word - 下载选修班学员名单Excel -
-
- - -
-
-
-

数据导入

-

选择填写完成的模板文件并上传

-
-
-
-
- 选择文件 - {{ fileName }} - -
-
- 上传数据 -
-
-
-
@@ -106,6 +71,13 @@ 批量停止报名 + 下载选修班列表 + 学员名单Word + 学员名单Excel + 选择文件 + {{ fileName }} + + 上传数据
@@ -514,41 +486,6 @@ export default { } } -.export-bar { - align-items: center; -} - -// ==================== 5. 文件上传区域 ==================== -.upload-card { - .upload-row { - display: flex; - align-items: center; - justify-content: space-between; - flex-wrap: wrap; - gap: 12px; - - .upload-left { - display: flex; - align-items: center; - gap: 12px; - - .file-name { - font-size: 12px; - color: #999; - - &.has-file { - color: #303133; - } - } - } - - .upload-right { - display: flex; - align-items: center; - } - } -} - // ==================== 6. 数据表格区域 ==================== .table-card { .list-header { @@ -581,6 +518,19 @@ export default { .el-button + .el-button { margin-left: 0; } + + .file-name { + max-width: 180px; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; + font-size: 12px; + color: #999; + + &.has-file { + color: #303133; + } + } } } diff --git a/frontend/src/views/teachOffice/teacher/index.vue b/frontend/src/views/teachOffice/teacher/index.vue index 0620d82f2..f63519435 100644 --- a/frontend/src/views/teachOffice/teacher/index.vue +++ b/frontend/src/views/teachOffice/teacher/index.vue @@ -10,18 +10,24 @@ - - + + + + - + + + - + + + @@ -731,6 +737,7 @@ import { updateTeacher, disableTeacher, enableTeacher, + listTeacherZcOptions, getTeacherAttribute, updateTeacherAttribute, downloadTeacherTemplate, @@ -823,6 +830,8 @@ export default { jylbOptions: [], zzlbOptions: [], dslbOptions: [], + zcOptions: [], + allOfficeOptions: [], defaultZzlb: '1', // 教研室下拉(新增教员时选择所属教研室) officeOptions: [], @@ -899,6 +908,7 @@ export default { if (hit) this.defaultZzlb = hit.dictValue }).catch(() => {}) getDicts('teacher_dslb').then(res => { this.dslbOptions = res.data || [] }).catch(() => {}) + listTeacherZcOptions().then(res => { this.zcOptions = res.data || [] }).catch(() => {}) }, /** 加载教研室下拉:教员表 [教研室代号] 为非空外键,新增时必须选择 */ @@ -909,14 +919,19 @@ export default { const rows = data.records || [] const seen = {} const options = [] + const all = [] rows.forEach(row => { const jysdh = row.jysdh - // 已停用(ty=1)的教研室不再参与新建教员 - if (!jysdh || seen[jysdh] || Number(row.ty) === 1) return + if (!jysdh || seen[jysdh]) return seen[jysdh] = true - options.push({ jysdh, jysmc: row.jysmc || jysdh, bmbh: row.bmbh }) + const opt = { jysdh, jysmc: row.jysmc || jysdh, bmbh: row.bmbh } + all.push(opt) + // 已停用(ty=1)的教研室不再参与新建教员 + if (Number(row.ty) === 1) return + options.push(opt) }) this.officeOptions = options + this.allOfficeOptions = all }).catch(() => { this.officeOptions = [] }).finally(() => {