diff --git a/frontend/src/views/teachBusiness/trainingPlan/index.vue b/frontend/src/views/teachBusiness/trainingPlan/index.vue index e8e1bd9b..b8d32aa2 100644 --- a/frontend/src/views/teachBusiness/trainingPlan/index.vue +++ b/frontend/src/views/teachBusiness/trainingPlan/index.vue @@ -153,12 +153,12 @@ - + - + @@ -548,7 +548,6 @@ export default { this.dialog.title = '新建人才培养方案' this.dialog.isEdit = false this.dialog.form = this.createEmptyForm() - this.fillGeneratedCodes(this.dialog.form, this.tableData) this.dialog.visible = true this.$nextTick(() => { if (this.$refs.trainingForm) this.$refs.trainingForm.clearValidate() @@ -568,12 +567,14 @@ export default { if (!valid) return this.dialog.submitting = true const isEdit = this.dialog.isEdit - const payload = this.cleanPayload(this.applyNotNullDefaults(this.dialog.form, isEdit)) - const req = isEdit ? updateTraining(payload) : addTraining(payload) - req.then(() => { - this.$message.success(isEdit ? '修改成功' : '新增成功') - this.dialog.visible = false - this.fetchList() + this.loadAllMajors().then(records => { + const payload = this.cleanPayload(this.applyNotNullDefaults(this.dialog.form, isEdit, records)) + const req = isEdit ? updateTraining(payload) : addTraining(payload) + return req.then(() => { + this.$message.success(isEdit ? '修改成功' : '新增成功') + this.dialog.visible = false + this.fetchList() + }) }).catch(() => {}).finally(() => { this.dialog.submitting = false }) @@ -651,10 +652,10 @@ export default { } }, /** 达梦非空列必须带真实值,空串会被当成 NULL;提交前补默认值。 */ - applyNotNullDefaults(form, isEdit) { + applyNotNullDefaults(form, isEdit, records) { const payload = Object.assign({}, form) if (!isEdit) { - this.fillGeneratedCodes(payload, this.tableData) + this.fillGeneratedCodes(payload, records || this.tableData) } if (!payload.xnz && payload.xqs) { payload.xnz = String(Math.max(1, Math.round(payload.xqs / 2))) @@ -688,6 +689,13 @@ export default { target.zydm = this.nextSerialFrom(records, 'zydm', 'ZSY', 3) } }, + loadAllMajors() { + const pageSize = Math.max(Number(this.total) || 0, this.tableData.length, 1000) + return listTraining({ pageNum: 1, pageSize }).then(response => { + const data = response.data || {} + return data.records || this.tableData || [] + }).catch(() => this.tableData || []) + }, nextSerialFrom(records, field, prefix, width) { let max = 0 const used = new Set()