diff --git a/frontend/src/views/teachOffice/shiftSemester/ClassCalendarDialog.vue b/frontend/src/views/teachOffice/shiftSemester/ClassCalendarDialog.vue
index 4f7a4ebd6..2a6639804 100644
--- a/frontend/src/views/teachOffice/shiftSemester/ClassCalendarDialog.vue
+++ b/frontend/src/views/teachOffice/shiftSemester/ClassCalendarDialog.vue
@@ -109,8 +109,27 @@
-
-
+
+
+
+
@@ -419,11 +438,14 @@ export default {
editForm: this.createEmptyEditForm(),
editRules: {
jc: [{ required: true, message: '请输入课程简称', trigger: 'blur' }],
+ kbh: [{ required: true, message: '请选择课程', trigger: 'change' }],
// 以下三列在库中「非空且无默认值」,留空会写入无意义值,这里前置拦截
xs: [{ required: true, message: '请输入学时', trigger: 'blur' }],
klx: [{ required: true, message: '请输入课类型', trigger: 'blur' }],
jysdh: [{ required: true, message: '请输入教研室代号', trigger: 'blur' }]
},
+ kbOptions: [],
+ kbLoading: false,
// ==================== 复制到其它班次 ====================
teamSelectVisible: false,
@@ -649,12 +671,70 @@ export default {
})
form.xydxqbh = s.bh || row.xydxqbh
this.editForm = form
+ this.ensureKbOption(form.kbh, row)
this.editVisible = true
this.$nextTick(() => {
if (this.$refs.editFormRef) this.$refs.editFormRef.clearValidate()
})
},
+ /* ---------- 课程下拉(课编号带出课程信息) ---------- */
+ kbOptionLabel(item) {
+ const name = item.kmc || item.jc || ''
+ return name ? `${name}(${item.kbh})` : item.kbh
+ },
+ ensureKbOption(kbh, row) {
+ if (!kbh) return
+ if (this.kbOptions.some(item => item.kbh === kbh)) return
+ this.kbOptions = [{ kbh, kmc: (row && (row.kmc || row.jc)) || '', jc: row && row.jc }].concat(this.kbOptions)
+ },
+ searchKbOptions(keyword) {
+ this.kbLoading = true
+ const kw = (keyword || '').trim()
+ const unwrap = res => {
+ const data = (res && res.data) || {}
+ return data.records || (Array.isArray(data) ? data : [])
+ }
+ const requests = kw
+ ? [listKb({ pageNum: 1, pageSize: 30, kmc: kw }), listKb({ pageNum: 1, pageSize: 30, jc: kw })]
+ : [listKb({ pageNum: 1, pageSize: 30 })]
+ Promise.all(requests).then(results => {
+ const merged = []
+ const seen = {}
+ results.forEach(res => {
+ unwrap(res).forEach(item => {
+ if (!item.kbh || seen[item.kbh]) return
+ seen[item.kbh] = true
+ merged.push(item)
+ })
+ })
+ this.kbOptions = merged
+ this.kbLoading = false
+ }).catch(() => {
+ this.kbLoading = false
+ })
+ },
+ /** 选中课程后带出课程档案信息(仅覆盖课程有值的字段) */
+ handleKbhChange(kbh) {
+ const course = this.kbOptions.find(item => item.kbh === kbh)
+ if (!course) return
+ const fill = (key, val) => {
+ if (val !== undefined && val !== null && val !== '') this.editForm[key] = val
+ }
+ fill('jc', course.jc)
+ fill('klx', course.klx)
+ fill('xs', course.xs)
+ fill('llxs', course.llxs)
+ fill('sjxs', course.sjxs)
+ fill('xf', course.xf)
+ fill('ksks', course.ksks)
+ fill('cjfz', course.cjfz)
+ fill('bjrxypjf', course.bjrxypjf)
+ fill('ksksbxs', course.ksksbxs)
+ fill('jysdh', course.jysdh)
+ fill('zks', course.zks)
+ },
+
handleEditSubmit() {
this.$refs.editFormRef.validate(valid => {
if (!valid) return
diff --git a/frontend/src/views/teachOffice/shiftSemester/index.vue b/frontend/src/views/teachOffice/shiftSemester/index.vue
index 5d653beef..f0969b641 100644
--- a/frontend/src/views/teachOffice/shiftSemester/index.vue
+++ b/frontend/src/views/teachOffice/shiftSemester/index.vue
@@ -51,7 +51,7 @@
批量创建班次学期
新增
- 编辑
+ 编辑
删除所选
快速设定学期日期
吸取预设日期
@@ -61,9 +61,9 @@
预设合班
预设拆班
批量生成必修课程
- 编辑班历
- 编辑班次教学任务
- 教学配当
+ 编辑班历
+ 编辑班次教学任务
+ 教学配当
导出配当
发布运行课表
删除运行课表