班历功能添加

This commit is contained in:
2026-09-16 17:13:57 +08:00
parent 2e151ea228
commit abf616a8ee
19 changed files with 526 additions and 73 deletions
@@ -140,7 +140,7 @@
<script>
import { getSemester } from '@/api/teachBusiness/semester'
import { listXqxlb, addXqxlb, updateXqxlb } from '@/api/teachBusiness/xqxlb'
import { listClassCalendarEvent, updateClassCalendarEvent } from '@/api/teachOffice/classCalendarEvent'
import { listClassCalendarEvent, updateClassCalendarEvent, batchSaveClassCalendarEvent } from '@/api/teachOffice/classCalendarEvent'
import {
listVenueCalendarRange,
batchSaveVenueCalendar,
@@ -1027,6 +1027,22 @@ export default {
/* ---------- 后端持久化(xqxlb 接口) ---------- */
// 批量保存选中格事件,返回各格子保存成功/失败的个数
persistEvents(keys) {
// 班历走批量接口:一次拖选只发一个请求,整批单事务提交
if (this.mode === 'class') {
const cells = keys
.filter(key => this.events[key])
.map(key => this.buildXqxlbPayload(key, this.events[key]))
.filter(Boolean)
if (!cells.length) return Promise.resolve({ ok: 0, fail: 0 })
return batchSaveClassCalendarEvent(this.xydxqbh, cells).then(res => {
this.$message.success((res && res.message) || '已设定 ' + cells.length + ' 个时间格')
this.reloadEvents()
return { ok: cells.length, fail: 0 }
}).catch(() => {
this.$message.error('班历批量保存失败')
return { ok: 0, fail: cells.length }
})
}
const tasks = keys
.filter(key => this.events[key])
.map(key => {
@@ -1051,8 +1067,29 @@ export default {
return { ok: ok, fail: fail }
})
},
// 批量删除选中格事件:调用 update 接口并将 jqmc 置空完成删除
// 批量删除选中格事件:班历走 batchSave 的 action='clear' 恢复默认,校历仍走 update 置空名称
persistDeleteEvents(keys) {
if (this.mode === 'class') {
const cells = keys
.filter(key => this.events[key])
.map(key => {
const payload = this.buildXqxlbPayload(key, this.events[key])
if (!payload) return null
payload.jqmc = ''
payload.action = 'clear'
return payload
})
.filter(Boolean)
if (!cells.length) return Promise.resolve({ ok: 0, fail: 0 })
return batchSaveClassCalendarEvent(this.xydxqbh, cells).then(() => {
this.$message.success('已删除 ' + cells.length + ' 个时间格事件')
this.reloadEvents()
return { ok: cells.length, fail: 0 }
}).catch(() => {
this.$message.error('班历批量删除失败')
return { ok: 0, fail: cells.length }
})
}
const tasks = keys
.filter(key => this.events[key])
.map(key => {