feat: 客户查重前端集成

- 新建客户时输入名称失焦后自动调用 /customers/check-duplicate
- 若有同名客户显示黄色警告条(含客户名+经理)
- 编辑模式不触发查重

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
2026-06-26 15:37:44 +08:00
parent c4e8a3b790
commit 861a4cecff
+16 -2
View File
@@ -96,7 +96,21 @@ function resetForm() {
existingContacts.value = []
}
function openCreate() { dialogTitle.value = '新建客户'; editId.value = ''; resetForm(); dialogVisible.value = true }
const duplicateHint = ref('')
async function checkName() {
if (!form.value.name || editId.value) { duplicateHint.value = ''; return }
try {
const res = await customersApi.checkDuplicate(form.value.name)
if (res.data?.exists) {
const dup = res.data.customers || []
duplicateHint.value = `⚠ 已存在同名客户:${dup.map((c: any) => c.name + (c.primary_manager_name ? ` (${c.primary_manager_name})` : '')).join('、')}`
} else {
duplicateHint.value = ''
}
} catch (_) { duplicateHint.value = '' }
}
function openCreate() { dialogTitle.value = '新建客户'; editId.value = ''; resetForm(); duplicateHint.value = ''; dialogVisible.value = true }
async function openEdit(customer: any) {
dialogTitle.value = '编辑客户'; editId.value = customer.id
@@ -305,7 +319,7 @@ async function handleImport() {
<!-- Create/Edit Dialog -->
<el-dialog v-model="dialogVisible" :title="dialogTitle" width="520px">
<el-form label-position="top">
<el-form-item label="单位名称" required><el-input v-model="form.name" placeholder="请输入单位名称" /></el-form-item>
<el-form-item label="单位名称" required><el-input v-model="form.name" placeholder="请输入单位名称" @blur="checkName" /><el-alert v-if="duplicateHint" :title="duplicateHint" type="warning" :closable="false" style="margin-top:6px" /></el-form-item>
<el-form-item label="所属行业"><el-input v-model="form.industry" placeholder="如: 教育、医疗、政府..." /></el-form-item>
<el-form-item label="单位地址"><el-input v-model="form.address" /></el-form-item>
<el-form-item label="在用业务"><el-input v-model="form.in_use_services" placeholder="如: 云桌面、专线、视频会议" /></el-form-item>