修复编辑无数据回显bug

This commit is contained in:
2026-05-14 17:40:51 +08:00
parent fc28d51e7d
commit ef8123ba10

View File

@@ -44,10 +44,10 @@
<div class="form-section"> <div class="form-section">
<el-form-item label="进度"> <el-form-item label="进度">
<el-radio-group v-model="form.status" class="modern-radio-group"> <el-radio-group v-model="form.status" class="modern-radio-group">
<el-radio-button label="未分配">未分配</el-radio-button> <el-radio-button :label="0">未分配</el-radio-button>
<el-radio-button label="进行中">进行中</el-radio-button> <el-radio-button :label="1">进行中</el-radio-button>
<el-radio-button label="已完成">已完成</el-radio-button> <el-radio-button :label="2">已完成</el-radio-button>
<el-radio-button label="已完结">已完结</el-radio-button> <el-radio-button :label="3">已完结</el-radio-button>
</el-radio-group> </el-radio-group>
</el-form-item> </el-form-item>
@@ -116,21 +116,43 @@ watch(
() => props.modelValue, () => props.modelValue,
(val) => { (val) => {
dialogVisible.value = val; dialogVisible.value = val;
if (val) { if (val) { // 只在弹窗打开时候,执行初始化
nextTick(() => { nextTick(() => { // 等待DOM更新完成后再操作表单数据
resetForm(); // 先重置 resetForm(); // 先重置
if (props.isEditing && props.formData) { if (props.isEditing && props.formData) {
// 深度合并数据 const d = props.formData;
Object.assign(form, props.formData);
// 回显补充:如果传入的 formData 没有带 company_id,通过 operator_id 反查补全 // 深度合并数据
if (!form.company_id && props.formData.operator_id) { Object.assign(form, d);
const employee = props.companiesWithOperators.flatMap(c => c.companyoperators).find(
(e) => e.id === props.formData.operator_id // 回显补充:后端可能只返回名称(name),表单需要 ID(number),通过已加载数据反查
); if (!form.company_id) {
if (employee) { // 优先通过 operator_id 反查公司
form.company_id = employee.customer_id; if (d.operator_id) {
const company = props.companiesWithOperators.find(c =>
c.companyoperators.some(op => op.id === d.operator_id)
);
if (company) form.company_id = company.id;
} }
// 其次通过 company_name 反查
else if (d.company_name) {
const company = props.companiesWithOperators.find(c =>
c.company_name === d.company_name
);
if (company) form.company_id = company.id;
}
}
if (!form.operator_id && d.operator_name) {
const ops = props.companiesWithOperators
.find(c => c.id === form.company_id)?.companyoperators || [];
const op = ops.find(o => o.operator_name === d.operator_name);
if (op) form.operator_id = op.id;
}
if (!form.user_id && d.username) {
const u = props.userStaffs?.find(s => s.username === d.username);
if (u) form.user_id = u.id;
} }
} }
}); });