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;
}
}
});