人培新建

This commit is contained in:
2026-09-16 11:22:11 +08:00
parent 62cf543760
commit 49b3232e79
@@ -153,12 +153,12 @@
</el-col>
<el-col :span="12">
<el-form-item label="专业代号">
<el-input v-model="dialog.form.zydh" :disabled="dialog.isEdit" placeholder="可留空,自动生成如 ZYSEED01" />
<el-input v-model="dialog.form.zydh" :disabled="dialog.isEdit" placeholder="选填,不填则自动生成" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="专业代码">
<el-input v-model="dialog.form.zydm" placeholder="可留空,自动生成如 ZSY001" />
<el-input v-model="dialog.form.zydm" placeholder="选填,不填则自动生成" />
</el-form-item>
</el-col>
<el-col :span="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()