From ef8123ba10982f8f93f0a6bb05a15cb2a314b07f Mon Sep 17 00:00:00 2001 From: GiveMePast <1248298477@qq.com> Date: Thu, 14 May 2026 17:40:51 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E7=BC=96=E8=BE=91=E6=97=A0?= =?UTF-8?q?=E6=95=B0=E6=8D=AE=E5=9B=9E=E6=98=BEbug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/ticket/TicketForm.vue | 52 ++++++++++++++++++++-------- 1 file changed, 37 insertions(+), 15 deletions(-) diff --git a/src/components/ticket/TicketForm.vue b/src/components/ticket/TicketForm.vue index 023e9b0..dddb746 100644 --- a/src/components/ticket/TicketForm.vue +++ b/src/components/ticket/TicketForm.vue @@ -44,10 +44,10 @@
- 未分配 - 进行中 - 已完成 - 已完结 + 未分配 + 进行中 + 已完成 + 已完结 @@ -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; } } });