专业保存提示错误,前后端数据类型不一致导致的

This commit is contained in:
2026-09-15 17:15:06 +08:00
parent 5903f0c590
commit c7397ad457
@@ -248,9 +248,10 @@
</el-col> </el-col>
<el-col :span="12"> <el-col :span="12">
<el-form-item label="主干专业" prop="zgzy"> <el-form-item label="主干专业" prop="zgzy">
<!-- 后端实体 ZYB.zgzy 为 Boolean(库列 主干专业 BIT(1)),value 必须传布尔值 -->
<el-select v-model="form.zgzy" placeholder="请选择" clearable style="width: 100%"> <el-select v-model="form.zgzy" placeholder="请选择" clearable style="width: 100%">
<el-option label="是" value="是" /> <el-option label="是" :value="true" />
<el-option label="否" value="否" /> <el-option label="否" :value="false" />
</el-select> </el-select>
</el-form-item> </el-form-item>
</el-col> </el-col>
@@ -356,7 +357,7 @@
<el-descriptions-item label="培训类型">{{ viewForm.pxlx || '-' }}</el-descriptions-item> <el-descriptions-item label="培训类型">{{ viewForm.pxlx || '-' }}</el-descriptions-item>
<el-descriptions-item label="培训类型2">{{ viewForm.pxlx2 || '-' }}</el-descriptions-item> <el-descriptions-item label="培训类型2">{{ viewForm.pxlx2 || '-' }}</el-descriptions-item>
<el-descriptions-item label="学员类别">{{ viewForm.xylb || '-' }}</el-descriptions-item> <el-descriptions-item label="学员类别">{{ viewForm.xylb || '-' }}</el-descriptions-item>
<el-descriptions-item label="主干专业">{{ viewForm.zgzy || '-' }}</el-descriptions-item> <el-descriptions-item label="主干专业">{{ fmtBool(viewForm.zgzy) }}</el-descriptions-item>
<el-descriptions-item label="自定义分类">{{ viewForm.zdyfl || '-' }}</el-descriptions-item> <el-descriptions-item label="自定义分类">{{ viewForm.zdyfl || '-' }}</el-descriptions-item>
<el-descriptions-item label="教学管理机构编号">{{ viewForm.jxgljgbh || '-' }}</el-descriptions-item> <el-descriptions-item label="教学管理机构编号">{{ viewForm.jxgljgbh || '-' }}</el-descriptions-item>
<el-descriptions-item label="学科专业信息标识号">{{ viewForm.xkzyxxbsh || '-' }}</el-descriptions-item> <el-descriptions-item label="学科专业信息标识号">{{ viewForm.xkzyxxbsh || '-' }}</el-descriptions-item>
@@ -537,6 +538,23 @@ export default {
return (this.pageNum - 1) * this.pageSize + index + 1 return (this.pageNum - 1) * this.pageSize + index + 1
}, },
/** 宽松布尔归一:兼容后端 Boolean、数字 0/1、字符串 'true'/'false'/'1'/'0'/'是'/'否';无效值返回 null */
normBool(val) {
if (val === null || val === undefined || val === '') return null
if (typeof val === 'boolean') return val
if (typeof val === 'number') return val !== 0
const s = String(val).trim()
if (['是', 'true', '1', 'Y', 'y'].indexOf(s) >= 0) return true
if (['否', 'false', '0', 'N', 'n'].indexOf(s) >= 0) return false
return null
},
/** 布尔值展示为 是/否,空值显示 '-' */
fmtBool(val) {
const b = this.normBool(val)
return b === null ? '-' : (b ? '是' : '否')
},
/** 创建空表单 */ /** 创建空表单 */
createEmptyForm() { createEmptyForm() {
return { return {
@@ -678,7 +696,7 @@ export default {
jclb: data.jclb, jclb: data.jclb,
xtms: data.xtms, xtms: data.xtms,
jsonzd: data.jsonzd, jsonzd: data.jsonzd,
zgzy: data.zgzy, zgzy: this.normBool(data.zgzy),
gfmc: data.gfmc, gfmc: data.gfmc,
jxdgbh: data.jxdgbh, jxdgbh: data.jxdgbh,
rpbh: data.rpbh, rpbh: data.rpbh,
@@ -692,6 +710,12 @@ export default {
if (!valid) return if (!valid) return
this.formSaving = true this.formSaving = true
const payload = { ...this.form } const payload = { ...this.form }
// 布尔字段统一归一为布尔值:后端实体 ty / zgzy 均为 Boolean,库列为 BIT(1) 且非空
const zgzy = this.normBool(payload.zgzy)
payload.zgzy = zgzy === null ? false : zgzy
const ty = this.normBool(payload.ty)
payload.ty = ty === null ? false : ty
const request = this.isAdd ? addMajor(payload) : updateMajor(payload) const request = this.isAdd ? addMajor(payload) : updateMajor(payload)
request.then(() => { request.then(() => {
this.$message.success(this.isAdd ? '新增成功' : '修改成功') this.$message.success(this.isAdd ? '新增成功' : '修改成功')