From 41d7bd6c86f6ac068ff6279bd57c6defe27da3c8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=A6=82=E5=88=9D?= <3236758982@qq.com> Date: Thu, 12 Mar 2026 17:31:23 +0800 Subject: [PATCH] =?UTF-8?q?CRM=E9=87=8C=E9=9D=A2=E7=9A=84=E5=AE=A2?= =?UTF-8?q?=E6=88=B7=E3=80=81=E7=BA=BF=E7=B4=A2=E7=AE=A1=E7=90=86=E9=80=82?= =?UTF-8?q?=E9=85=8D=E6=89=8B=E6=9C=BA=E7=AB=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/views/crm/clue/ClueForm.vue | 166 +++--- .../crm/clue/detail/ClueDetailsHeader.vue | 108 +++- src/views/crm/clue/detail/ClueDetailsInfo.vue | 191 +++++-- src/views/crm/clue/index.vue | 416 ++++++++++----- src/views/crm/customer/CustomerForm.vue | 166 +++--- src/views/crm/customer/CustomerImportForm.vue | 155 ++++-- src/views/crm/customer/index.vue | 499 +++++++++++------- .../limitConfig/CustomerLimitConfigForm.vue | 160 ++++-- .../limitConfig/CustomerLimitConfigList.vue | 235 ++++++--- src/views/crm/customer/limitConfig/index.vue | 42 +- .../customer/pool/CustomerDistributeForm.vue | 103 +++- src/views/crm/customer/pool/index.vue | 414 +++++++++------ src/views/crm/customer/poolConfig/index.vue | 130 +++-- 13 files changed, 1802 insertions(+), 983 deletions(-) diff --git a/src/views/crm/clue/ClueForm.vue b/src/views/crm/clue/ClueForm.vue index 3562c1c..cc7abb3 100644 --- a/src/views/crm/clue/ClueForm.vue +++ b/src/views/crm/clue/ClueForm.vue @@ -1,21 +1,28 @@ - - - - + + + + + + 基本信息 - - - + - - - - - - - - - - - - - + + + + + 联系方式 + + + - - - - - - - - - - - - + + + + + 客户信息 - + - - - + - - - - + + + + + 地址信息 - - - - - - + + + + + 其他信息 - - - + - - - - - 确 定 - 取 消 - - + + + + + + + + + diff --git a/src/views/crm/clue/detail/ClueDetailsHeader.vue b/src/views/crm/clue/detail/ClueDetailsHeader.vue index 41552c7..ee8ae70 100644 --- a/src/views/crm/clue/detail/ClueDetailsHeader.vue +++ b/src/views/crm/clue/detail/ClueDetailsHeader.vue @@ -1,34 +1,36 @@ - - - - - - - {{ clue.name }} - - - - - + + + + {{ clue.name }} + + + + + + 线索来源 + + + + + + 手机 + {{ clue.mobile || '-' }} + + + 负责人 + {{ clue.ownerUserName || '-' }} + + + 创建时间 + {{ formatDate(clue.createTime) || '-' }} + + + - - - - - - {{ clue.mobile }} - - {{ clue.ownerUserName }} - - - {{ formatDate(clue.createTime) }} - - - + + diff --git a/src/views/crm/clue/detail/ClueDetailsInfo.vue b/src/views/crm/clue/detail/ClueDetailsInfo.vue index 5a1d01f..9202937 100644 --- a/src/views/crm/clue/detail/ClueDetailsInfo.vue +++ b/src/views/crm/clue/detail/ClueDetailsInfo.vue @@ -1,61 +1,97 @@ - - - - - 基本信息 - - - - {{ clue.name }} - - + + + + 基本信息 + + + 线索名称 + {{ clue.name || '-' }} + + + 客户来源 + - - {{ clue.mobile }} - {{ clue.telephone }} - {{ clue.email }} - - {{ clue.areaName }} {{ clue.detailAddress }} - - {{ clue.qq }} - {{ clue.wechat }} - + + + + 手机 + {{ clue.mobile || '-' }} + + + 电话 + {{ clue.telephone || '-' }} + + + 邮箱 + {{ clue.email || '-' }} + + + 地址 + {{ clue.areaName || '' }} {{ clue.detailAddress || '-' }} + + + QQ + {{ clue.qq || '-' }} + + + 微信 + {{ clue.wechat || '-' }} + + + 客户行业 + - - + + + + 客户级别 + - - - {{ formatDate(clue.contactNextTime) }} - - {{ clue.remark }} - - - - - 系统信息 - - - {{ clue.ownerUserName }} - - {{ clue.contactLastContent }} - - - {{ formatDate(clue.contactLastTime) }} - - - {{ clue.creatorName }} - - {{ formatDate(clue.createTime) }} - - - {{ formatDate(clue.updateTime) }} - - - - - + + + + 下次联系时间 + {{ formatDate(clue.contactNextTime) || '-' }} + + + 备注 + {{ clue.remark }} + + + + + + + 系统信息 + + + 负责人 + {{ clue.ownerUserName || '-' }} + + + 最后跟进记录 + {{ clue.contactLastContent }} + + + 最后跟进时间 + {{ formatDate(clue.contactLastTime) || '-' }} + + + 创建人 + {{ clue.creatorName || '-' }} + + + 创建时间 + {{ formatDate(clue.createTime) || '-' }} + + + 更新时间 + {{ formatDate(clue.updateTime) || '-' }} + + + + - + + diff --git a/src/views/crm/clue/index.vue b/src/views/crm/clue/index.vue index f90d497..e1f814b 100644 --- a/src/views/crm/clue/index.vue +++ b/src/views/crm/clue/index.vue @@ -1,52 +1,18 @@ - - - - - - - + + + + - - - - - - - - - - - - - - - 搜索 - 重置 + + + 新增 @@ -57,108 +23,129 @@ :loading="exportLoading" v-hasPermi="['crm:clue:export']" > - 导出 + 导出 - - - + + - - - - - - - - - - - - {{ scope.row.name }} - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 编辑 - - - 删除 - - - - - - - + + + + + + + + + + + + + + + {{ item.name }} + 已转化 + 未转化 + + + + 线索来源 + + + + + + 手机 + {{ item.mobile || '-' }} + + + 负责人 + {{ item.ownerUserName || '-' }} + + + 客户级别 + + + + + + 最后跟进 + {{ item.contactLastTime ? dateFormatter(null, null, item.contactLastTime) : '-' }} + + + + + 暂无线索数据 + + + + + + + + + + + + + 筛选条件 + + + + + + + + + + + + + + + + + + + + + @@ -171,6 +158,7 @@ import download from '@/utils/download' import * as ClueApi from '@/api/crm/clue' import ClueForm from './ClueForm.vue' import { TabsPaneContext } from 'element-plus' +import { Search, Filter } from '@element-plus/icons-vue' defineOptions({ name: 'CrmClue' }) @@ -180,6 +168,7 @@ const { t } = useI18n() // 国际化 const loading = ref(true) // 列表的加载中 const total = ref(0) // 列表的总页数 const list = ref([]) // 列表的数据 +const filterDrawerVisible = ref(false) // 筛选抽屉 const queryParams = reactive({ pageNo: 1, pageSize: 10, @@ -263,8 +252,149 @@ const handleExport = async () => { } } +/** 筛选确认 */ +const handleFilterConfirm = () => { + filterDrawerVisible.value = false + handleQuery() +} + /** 初始化 **/ onMounted(() => { getList() }) + + diff --git a/src/views/crm/customer/CustomerForm.vue b/src/views/crm/customer/CustomerForm.vue index 9a904d2..087b279 100644 --- a/src/views/crm/customer/CustomerForm.vue +++ b/src/views/crm/customer/CustomerForm.vue @@ -1,21 +1,28 @@ - - - - + + + + + + 基本信息 - - - + - - - - - - - - - - - - - + + + + + 联系方式 + + + - - - - - - - - - - - - + + + + + 客户信息 - + - - - + - - - - + + + + + 地址信息 - - - - - - + + + + + 其他信息 - - - + - - - - - 确 定 - 取 消 - - + + + + + + + + + diff --git a/src/views/crm/customer/CustomerImportForm.vue b/src/views/crm/customer/CustomerImportForm.vue index 17721a1..73b02ed 100644 --- a/src/views/crm/customer/CustomerImportForm.vue +++ b/src/views/crm/customer/CustomerImportForm.vue @@ -1,53 +1,73 @@ - - - 负责人 - - - + + + + 导入设置 + + + + + + + + + + + 上传文件 + + + 将文件拖到此处,或点击上传 + + + + + 是否更新已经存在的客户数据(“客户名称”重复) + + 仅允许导入 xls、xlsx 格式文件。 + + 下载模板 + + + + + + + + - - - 将文件拖到此处,或点击上传 - - - - - 是否更新已经存在的客户数据(“客户名称”重复) - - 仅允许导入 xls、xlsx 格式文件。 - - 下载模板 - - - - - - 确 定 - 取 消 - - + + + diff --git a/src/views/crm/customer/index.vue b/src/views/crm/customer/index.vue index 86bddc0..3040db5 100644 --- a/src/views/crm/customer/index.vue +++ b/src/views/crm/customer/index.vue @@ -1,219 +1,175 @@ - - - - - - - + + + + - - - - - - - - - - - - - - - - - - - - - - - 搜索 + + + + + 新增 - - - 重置 - - - - 新增 - - - + 导入 - 导出 - - - + + - - - - - - - - - - - - {{ scope.row.name }} - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - {{ scope.row.poolDay }} 天 - - - - - - - - - - 编辑 - - - 删除 - - - - - - - + + + + + + + + + + + + + + + {{ item.name }} + 已成交 + 未成交 + + + + 客户来源 + + + + + + 手机 + {{ item.mobile || '-' }} + + + 负责人 + {{ item.ownerUserName || '-' }} + + + 客户级别 + + + + + + 最后跟进 + {{ item.contactLastTime ? dateFormatter(null, null, item.contactLastTime) : '-' }} + + + + + 暂无客户数据 + + + + + + + + + + + + + 筛选条件 + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -228,6 +184,7 @@ import * as CustomerApi from '@/api/crm/customer' import CustomerForm from './CustomerForm.vue' import CustomerImportForm from './CustomerImportForm.vue' import { TabsPaneContext } from 'element-plus' +import { Search, Filter } from '@element-plus/icons-vue' defineOptions({ name: 'CrmCustomer' }) @@ -237,6 +194,7 @@ const { t } = useI18n() // 国际化 const loading = ref(true) // 列表的加载中 const total = ref(0) // 列表的总页数 const list = ref([]) // 列表的数据 +const filterDrawerVisible = ref(false) // 筛选抽屉 const queryParams = reactive({ pageNo: 1, pageSize: 10, @@ -328,6 +286,12 @@ const handleExport = async () => { } } +/** 筛选确认 */ +const handleFilterConfirm = () => { + filterDrawerVisible.value = false + handleQuery() +} + /** 监听路由变化更新列表 */ watch( () => currentRoute.value, @@ -341,3 +305,138 @@ onMounted(() => { getList() }) + + diff --git a/src/views/crm/customer/limitConfig/CustomerLimitConfigForm.vue b/src/views/crm/customer/limitConfig/CustomerLimitConfigForm.vue index c7338a4..c8e9823 100644 --- a/src/views/crm/customer/limitConfig/CustomerLimitConfigForm.vue +++ b/src/views/crm/customer/limitConfig/CustomerLimitConfigForm.vue @@ -1,57 +1,72 @@ - - - - - - - - - - - + + - - - - - - - - 确 定 - 取 消 - - + + 规则设置 + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/views/crm/customer/limitConfig/CustomerLimitConfigList.vue b/src/views/crm/customer/limitConfig/CustomerLimitConfigList.vue index f5c488c..9dcfa4e 100644 --- a/src/views/crm/customer/limitConfig/CustomerLimitConfigList.vue +++ b/src/views/crm/customer/limitConfig/CustomerLimitConfigList.vue @@ -1,84 +1,83 @@ - 刷新 - - 新增 - - - - - - - - - - - - - - - - 编辑 - - - 删除 - - - - - - + + + + + 刷新 + + + 新增 + + + + + + + + 规则 #{{ item.id }} + 上限 {{ item.maxCount }} + + + + 适用人群 + {{ item.users?.map((user: any) => user.nickname).join(',') || '-' }} + + + 适用部门 + {{ item.depts?.map((dept: any) => dept.name).join(',') || '-' }} + + + 成交客户占用 + + + + + + 创建时间 + {{ dateFormatter(null, null, item.createTime) }} + + + + + 暂无配置数据 + + + + + + + @@ -148,3 +147,79 @@ onMounted(() => { getList() }) + + diff --git a/src/views/crm/customer/limitConfig/index.vue b/src/views/crm/customer/limitConfig/index.vue index 01f3ef6..feea702 100644 --- a/src/views/crm/customer/limitConfig/index.vue +++ b/src/views/crm/customer/limitConfig/index.vue @@ -1,22 +1,36 @@ - - - - - - - - - - - - - - + + + + + + + + + + + + + + + diff --git a/src/views/crm/customer/pool/CustomerDistributeForm.vue b/src/views/crm/customer/pool/CustomerDistributeForm.vue index 5fd80a1..59ce8e9 100644 --- a/src/views/crm/customer/pool/CustomerDistributeForm.vue +++ b/src/views/crm/customer/pool/CustomerDistributeForm.vue @@ -1,28 +1,42 @@ - - - - - - - - - - 确 定 - 取 消 - - + + + + + 分配设置 + + + + + + + + + + + + + + diff --git a/src/views/crm/customer/pool/index.vue b/src/views/crm/customer/pool/index.vue index eab90e0..a77a2b6 100644 --- a/src/views/crm/customer/pool/index.vue +++ b/src/views/crm/customer/pool/index.vue @@ -1,175 +1,142 @@ - - - - - - - + + + + - - - - - - - - - - - - - - - - - - - - - - - 搜索 - - - - 重置 - + + + - 导出 - - - + + - - - - - - - {{ scope.row.name }} - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + {{ item.name }} + 已成交 + 未成交 + + + + 客户来源 + + + + + + 手机 + {{ item.mobile || '-' }} + + + 客户级别 + + + + + + 最后跟进 + {{ item.contactLastTime ? dateFormatter(null, null, item.contactLastTime) : '-' }} + + + + 暂无公海客户数据 + + + + + + + + + + + + + 筛选条件 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/views/crm/customer/poolConfig/index.vue b/src/views/crm/customer/poolConfig/index.vue index 28d58a6..761897d 100644 --- a/src/views/crm/customer/poolConfig/index.vue +++ b/src/views/crm/customer/poolConfig/index.vue @@ -1,62 +1,55 @@ - - - - + - - - - - - - 保存 - - - - - - - 不启用 - 启用 + + + + 客户公海规则设置 + + 保存 + + + + + 不启用 + 启用 - - - - 天不跟进或 - - 天未成交 - - - - 不提醒 - 提醒 - - - - - 提前 天提醒 - - + + + + + 规则详情 + + + 天不跟进或 + + 天未成交 - + + + 不提醒 + 提醒 + + + + 提前 + + 天提醒 + + - + + +