修复编辑无数据回显bug
This commit is contained in:
@@ -44,10 +44,10 @@
|
||||
<div class="form-section">
|
||||
<el-form-item label="进度">
|
||||
<el-radio-group v-model="form.status" class="modern-radio-group">
|
||||
<el-radio-button label="未分配">未分配</el-radio-button>
|
||||
<el-radio-button label="进行中">进行中</el-radio-button>
|
||||
<el-radio-button label="已完成">已完成</el-radio-button>
|
||||
<el-radio-button label="已完结">已完结</el-radio-button>
|
||||
<el-radio-button :label="0">未分配</el-radio-button>
|
||||
<el-radio-button :label="1">进行中</el-radio-button>
|
||||
<el-radio-button :label="2">已完成</el-radio-button>
|
||||
<el-radio-button :label="3">已完结</el-radio-button>
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
|
||||
@@ -116,21 +116,43 @@ watch(
|
||||
() => props.modelValue,
|
||||
(val) => {
|
||||
dialogVisible.value = val;
|
||||
if (val) {
|
||||
nextTick(() => {
|
||||
if (val) { // 只在弹窗打开时候,执行初始化
|
||||
nextTick(() => { // 等待DOM更新完成后再操作表单数据
|
||||
resetForm(); // 先重置
|
||||
if (props.isEditing && props.formData) {
|
||||
// 深度合并数据
|
||||
Object.assign(form, props.formData);
|
||||
const d = props.formData;
|
||||
|
||||
// 回显补充:如果传入的 formData 没有带 company_id,通过 operator_id 反查补全
|
||||
if (!form.company_id && props.formData.operator_id) {
|
||||
const employee = props.companiesWithOperators.flatMap(c => c.companyoperators).find(
|
||||
(e) => e.id === props.formData.operator_id
|
||||
);
|
||||
if (employee) {
|
||||
form.company_id = employee.customer_id;
|
||||
// 深度合并数据
|
||||
Object.assign(form, d);
|
||||
|
||||
// 回显补充:后端可能只返回名称(name),表单需要 ID(number),通过已加载数据反查
|
||||
if (!form.company_id) {
|
||||
// 优先通过 operator_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;
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user