From 06633c336e00e55c355c1e87452594da8caa5cfb Mon Sep 17 00:00:00 2001 From: YunaiV Date: Sat, 27 Sep 2025 15:44:55 +0800 Subject: [PATCH] =?UTF-8?q?feat=EF=BC=9A=E3=80=90antd=E3=80=91=E3=80=90crm?= =?UTF-8?q?=E3=80=91=E8=81=94=E7=B3=BB=E4=BA=BA=E5=88=97=E8=A1=A8=E5=92=8C?= =?UTF-8?q?=E8=AF=A6=E6=83=85=E7=BB=84=E4=BB=B6=E7=9A=84=E9=87=8D=E6=9E=84?= =?UTF-8?q?=E4=B8=8E=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/views/crm/business/modules/detail.vue | 2 +- .../src/views/crm/contact/components/data.ts | 62 ++++++ .../contact/components/detail-list-modal.vue | 148 ++++++++++++ .../crm/contact/components/detail-list.vue | 210 ++++++++++++++++++ .../src/views/crm/contact/components/index.ts | 1 + apps/web-antd/src/views/crm/contact/index.ts | 5 - .../src/views/crm/customer/modules/detail.vue | 2 +- 7 files changed, 423 insertions(+), 7 deletions(-) create mode 100644 apps/web-antd/src/views/crm/contact/components/data.ts create mode 100644 apps/web-antd/src/views/crm/contact/components/detail-list-modal.vue create mode 100644 apps/web-antd/src/views/crm/contact/components/detail-list.vue create mode 100644 apps/web-antd/src/views/crm/contact/components/index.ts delete mode 100644 apps/web-antd/src/views/crm/contact/index.ts diff --git a/apps/web-antd/src/views/crm/business/modules/detail.vue b/apps/web-antd/src/views/crm/business/modules/detail.vue index aebfd6e3..7bbd08ee 100644 --- a/apps/web-antd/src/views/crm/business/modules/detail.vue +++ b/apps/web-antd/src/views/crm/business/modules/detail.vue @@ -20,7 +20,7 @@ import { BusinessForm, UpStatusForm, } from '#/views/crm/business'; -import { ContactDetailsList } from '#/views/crm/contact'; +import { ContactDetailsList } from '#/views/crm/contact/components'; import { ContractDetailsList } from '#/views/crm/contract'; import { FollowUp } from '#/views/crm/followup'; import { PermissionList, TransferForm } from '#/views/crm/permission'; diff --git a/apps/web-antd/src/views/crm/contact/components/data.ts b/apps/web-antd/src/views/crm/contact/components/data.ts new file mode 100644 index 00000000..b2e63f76 --- /dev/null +++ b/apps/web-antd/src/views/crm/contact/components/data.ts @@ -0,0 +1,62 @@ +import type { VxeTableGridOptions } from '#/adapter/vxe-table'; + +import { DICT_TYPE } from '@vben/constants'; + +/** 联系人明细列表列配置 */ +export function useDetailListColumns(): VxeTableGridOptions['columns'] { + return [ + { + type: 'checkbox', + width: 50, + fixed: 'left', + }, + { + field: 'name', + title: '姓名', + fixed: 'left', + slots: { default: 'name' }, + }, + { + field: 'customerName', + title: '客户名称', + fixed: 'left', + slots: { default: 'customerName' }, + }, + { + field: 'sex', + title: '性别', + cellRender: { + name: 'CellDict', + props: { type: DICT_TYPE.SYSTEM_USER_SEX }, + }, + }, + { + field: 'mobile', + title: '手机', + }, + { + field: 'telephone', + title: '电话', + }, + { + field: 'email', + title: '邮箱', + }, + { + field: 'post', + title: '职位', + }, + { + field: 'detailAddress', + title: '地址', + }, + { + field: 'master', + title: '关键决策人', + cellRender: { + name: 'CellDict', + props: { type: DICT_TYPE.INFRA_BOOLEAN_STRING }, + }, + }, + ]; +} diff --git a/apps/web-antd/src/views/crm/contact/components/detail-list-modal.vue b/apps/web-antd/src/views/crm/contact/components/detail-list-modal.vue new file mode 100644 index 00000000..4214096a --- /dev/null +++ b/apps/web-antd/src/views/crm/contact/components/detail-list-modal.vue @@ -0,0 +1,148 @@ + + + + diff --git a/apps/web-antd/src/views/crm/contact/components/detail-list.vue b/apps/web-antd/src/views/crm/contact/components/detail-list.vue new file mode 100644 index 00000000..193e0bc5 --- /dev/null +++ b/apps/web-antd/src/views/crm/contact/components/detail-list.vue @@ -0,0 +1,210 @@ + + + + diff --git a/apps/web-antd/src/views/crm/contact/components/index.ts b/apps/web-antd/src/views/crm/contact/components/index.ts new file mode 100644 index 00000000..d16cd533 --- /dev/null +++ b/apps/web-antd/src/views/crm/contact/components/index.ts @@ -0,0 +1 @@ +export { default as ContactDetailsList } from './detail-list.vue'; diff --git a/apps/web-antd/src/views/crm/contact/index.ts b/apps/web-antd/src/views/crm/contact/index.ts deleted file mode 100644 index 1886e21c..00000000 --- a/apps/web-antd/src/views/crm/contact/index.ts +++ /dev/null @@ -1,5 +0,0 @@ -import { defineAsyncComponent } from 'vue'; - -export const ContactDetailsList = defineAsyncComponent( - () => import('./components/detail-list.vue'), -); diff --git a/apps/web-antd/src/views/crm/customer/modules/detail.vue b/apps/web-antd/src/views/crm/customer/modules/detail.vue index 6c7ccbf8..d674e2e9 100644 --- a/apps/web-antd/src/views/crm/customer/modules/detail.vue +++ b/apps/web-antd/src/views/crm/customer/modules/detail.vue @@ -23,7 +23,7 @@ import { useDescription } from '#/components/description'; import { AsyncOperateLog } from '#/components/operate-log'; import { ACTION_ICON, TableAction } from '#/components/table-action'; import { BusinessDetailsList } from '#/views/crm/business'; -import { ContactDetailsList } from '#/views/crm/contact'; +import { ContactDetailsList } from '#/views/crm/contact/components'; import { ContractDetailsList } from '#/views/crm/contract'; import { CustomerDetailsInfo,