修复编辑无数据回显bug
This commit is contained in:
@@ -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) {
|
||||||
|
// 优先通过 operator_id 反查公司
|
||||||
|
if (d.operator_id) {
|
||||||
|
const company = props.companiesWithOperators.find(c =>
|
||||||
|
c.companyoperators.some(op => op.id === d.operator_id)
|
||||||
);
|
);
|
||||||
if (employee) {
|
if (company) form.company_id = company.id;
|
||||||
form.company_id = employee.customer_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