校历删除功能完善

This commit is contained in:
2026-08-26 15:04:52 +08:00
parent e821ac7d97
commit ebbbd5fb01
2 changed files with 41 additions and 13 deletions
@@ -501,6 +501,11 @@ export default {
this.$message.warning('请先选择时间格') this.$message.warning('请先选择时间格')
return return
} }
this.$confirm('确认删除选中单元格的事件吗?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
const keys = [...this.selectedKeys] const keys = [...this.selectedKeys]
this.persistDeleteEvents(keys).then(({ ok, fail }) => { this.persistDeleteEvents(keys).then(({ ok, fail }) => {
if (fail === 0) { if (fail === 0) {
@@ -510,6 +515,7 @@ export default {
this.selectedKeys = [] this.selectedKeys = []
} }
}) })
}).catch(() => {})
}, },
absorbEvent() { absorbEvent() {
// 吸取:取选择中第一个事件名非空的格 // 吸取:取选择中第一个事件名非空的格
@@ -575,14 +581,14 @@ export default {
return { ok: ok, fail: fail } return { ok: ok, fail: fail }
}) })
}, },
// 批量删除选中格事件 // 批量删除选中格事件:调用 update 接口并将 jqmc 置空完成删除
persistDeleteEvents(keys) { persistDeleteEvents(keys) {
const tasks = keys const tasks = keys
.filter(key => this.events[key]) .filter(key => this.events[key])
.map(key => { .map(key => {
const payload = this.buildXqxlbPayload(key, this.events[key]) const payload = this.buildXqxlbPayload(key, this.events[key])
if (!payload) return Promise.resolve(false) if (!payload) return Promise.resolve(false)
payload.delFlag = 1 payload.jqmc = ''
return updateXqxlb(payload) return updateXqxlb(payload)
.then(() => true) .then(() => true)
.catch(() => false) .catch(() => false)
@@ -595,6 +601,8 @@ export default {
} else if (ok > 0) { } else if (ok > 0) {
this.$message.success('已删除 ' + ok + ' 个时间格事件') this.$message.success('已删除 ' + ok + ' 个时间格事件')
} }
// 删除成功后重新拉取,同步后端状态
this.loadXqxlbEvents()
return { ok: ok, fail: fail } return { ok: ok, fail: fail }
}) })
}, },
@@ -275,16 +275,20 @@ export default {
beforeDestroy() { beforeDestroy() {
this.$root.$off('semester-current-changed', this.handleCurrentChanged) this.$root.$off('semester-current-changed', this.handleCurrentChanged)
}, },
watch: {
'form.kxrq': 'calculateWeeks',
'form.jsrq': 'calculateWeeks'
},
methods: { methods: {
/** 顶栏切换当前学期后自动刷新 */ /** 顶栏切换当前学期后自动刷新 */
handleCurrentChanged() { handleCurrentChanged() {
this.getList() this.getList()
}, },
/** 初始化学年选项 */ /** 初始化学年选项(新增时只能从当前年份往后选择) */
initYearOptions() { initYearOptions() {
const current = new Date().getFullYear() const current = new Date().getFullYear()
const list = [] const list = []
for (let i = current - 10; i <= current + 10; i++) { for (let i = current; i <= current + 10; i++) {
list.push(i) list.push(i)
} }
this.yearOptions = list this.yearOptions = list
@@ -331,6 +335,22 @@ export default {
if (!value) return '' if (!value) return ''
return String(value).slice(0, 10) return String(value).slice(0, 10)
}, },
/** 根据开学日期和结束日期自动计算学期周数 */
calculateWeeks() {
const kxrq = this.form.kxrq
const jsrq = this.form.jsrq
if (!kxrq || !jsrq) return
const start = new Date(String(kxrq).slice(0, 10).replace(/-/g, '/'))
const end = new Date(String(jsrq).slice(0, 10).replace(/-/g, '/'))
if (isNaN(start.getTime()) || isNaN(end.getTime())) return
if (end < start) return
// 以开学当周周一为起点,向上取整到周
const day = start.getDay()
const monday = new Date(start)
monday.setDate(start.getDate() - (day === 0 ? 6 : day - 1))
const days = Math.round((end - monday) / (24 * 3600 * 1000)) + 1
this.$set(this.form, 'sdzs', Math.max(1, Math.ceil(days / 7)))
},
/** 查询学期列表 */ /** 查询学期列表 */
getList() { getList() {
this.loading = true this.loading = true