diff --git a/frontend/src/views/teachBusiness/trainingPlan/index.vue b/frontend/src/views/teachBusiness/trainingPlan/index.vue
index e8e1bd9b6..b8d32aa28 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()