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 @@ 预设合班 预设拆班 批量生成必修课程 - 编辑班历 - 编辑班次教学任务 - 教学配当 + 编辑班历 + 编辑班次教学任务 + 教学配当 导出配当 发布运行课表 删除运行课表