From 55af47f879fb53b7d61a54197f4436a0e8b7341e Mon Sep 17 00:00:00 2001 From: xpz2018 <107107461@qq.com> Date: Fri, 22 Aug 2025 11:53:39 +0800 Subject: [PATCH] no message --- src/locales/lang/zh-CN/routes/clue.ts | 1 + src/locales/lang/zh-CN/routes/invite.ts | 1 + src/router/menu.ts | 16 ++ src/router/menus/modules/clue.ts | 4 + src/router/menus/modules/invite.ts | 4 + src/router/routes/modules/clue.ts | 8 + src/router/routes/modules/invite.ts | 8 + .../clue/clueIndex/components/GrowCard.vue | 42 ++++ src/views/clue/clueIndex/data.ts | 49 ++++ src/views/clue/clueIndex/index.vue | 71 ++++++ .../invite/statistics/components/GrowCard.vue | 42 ++++ src/views/invite/statistics/data.ts | 234 ++++++++++++++++++ src/views/invite/statistics/index.vue | 90 +++++++ src/views/sys/workbench/index.vue | 120 ++++----- 14 files changed, 630 insertions(+), 60 deletions(-) create mode 100644 src/views/clue/clueIndex/components/GrowCard.vue create mode 100644 src/views/clue/clueIndex/data.ts create mode 100644 src/views/clue/clueIndex/index.vue create mode 100644 src/views/invite/statistics/components/GrowCard.vue create mode 100644 src/views/invite/statistics/data.ts create mode 100644 src/views/invite/statistics/index.vue diff --git a/src/locales/lang/zh-CN/routes/clue.ts b/src/locales/lang/zh-CN/routes/clue.ts index ffccd99..6bf8a7d 100644 --- a/src/locales/lang/zh-CN/routes/clue.ts +++ b/src/locales/lang/zh-CN/routes/clue.ts @@ -1,5 +1,6 @@ export default { clue: '线索管理', + clueIndex: '线索数据统计', cluePool: '待分配线索', clueList: '已分配线索', customer: '线索详情', diff --git a/src/locales/lang/zh-CN/routes/invite.ts b/src/locales/lang/zh-CN/routes/invite.ts index 63fab03..a284786 100644 --- a/src/locales/lang/zh-CN/routes/invite.ts +++ b/src/locales/lang/zh-CN/routes/invite.ts @@ -1,4 +1,5 @@ export default { + statistics: '电邀数据统计', invite: '电邀管理', index: '待分配线索', list: '已分配线索', diff --git a/src/router/menu.ts b/src/router/menu.ts index 1dbd9c3..989af9d 100644 --- a/src/router/menu.ts +++ b/src/router/menu.ts @@ -35,6 +35,14 @@ const clueMenu: Menu = { title: 'routes.clue.clue', }, children: [ + { + path: 'clueIndex', + name: 'ClueIndex', + component: '/clue/clueIndex/index.vue', + meta: { + title: 'routes.clue.clueIndex', + }, + }, { path: 'cluePool', name: 'CluePool', @@ -91,6 +99,14 @@ const inviteMenu: Menu = { title: 'routes.invite.invite', }, children: [ + { + path: 'statistics', + name: 'Statistics', + component: '/invite/statistics/index.vue', + meta: { + title: 'routes.invite.statistics', + }, + }, { path: 'index', name: 'Index', diff --git a/src/router/menus/modules/clue.ts b/src/router/menus/modules/clue.ts index b4cb4b4..5ae38fa 100644 --- a/src/router/menus/modules/clue.ts +++ b/src/router/menus/modules/clue.ts @@ -6,6 +6,10 @@ const clueMenu: MenuModule = { path: '/clue', name: t('routes.clue.clue'), children: [ + { + path: 'clueIndex', + name: t('routes.clue.clueIndex'), + }, { path: 'cluePool', name: t('routes.clue.cluePool'), diff --git a/src/router/menus/modules/invite.ts b/src/router/menus/modules/invite.ts index 99aeca6..ee448eb 100644 --- a/src/router/menus/modules/invite.ts +++ b/src/router/menus/modules/invite.ts @@ -6,6 +6,10 @@ const inviteMenu: MenuModule = { path: '/invite', name: t('routes.invite.invite'), children: [ + { + path: 'statistics', + name: t('routes.invite.statistics'), + }, { path: 'index', name: t('routes.invite.index'), diff --git a/src/router/routes/modules/clue.ts b/src/router/routes/modules/clue.ts index 9bffbb7..d6f29c6 100644 --- a/src/router/routes/modules/clue.ts +++ b/src/router/routes/modules/clue.ts @@ -15,6 +15,14 @@ const clueRoute: AppRouteModule = { title: t('routes.clue.clue'), }, children: [ + { + path: 'clueIndex', + name: 'ClueIndex', + component: () => import('/src/views/clue/clueIndex/index.vue'), + meta: { + title: t('routes.clue.clueIndex'), + }, + }, { path: 'cluePool', name: 'CluePool', diff --git a/src/router/routes/modules/invite.ts b/src/router/routes/modules/invite.ts index f09d78a..a4034ae 100644 --- a/src/router/routes/modules/invite.ts +++ b/src/router/routes/modules/invite.ts @@ -15,6 +15,14 @@ const inviteRoute: AppRouteModule = { title: t('routes.invite.invite'), }, children: [ + { + path: 'statistics', + name: 'Statistics', + component: () => import('/src/views/invite/statistics/index.vue'), + meta: { + title: t('routes.invite.statistics'), + }, + }, { path: 'index', name: 'Index', diff --git a/src/views/clue/clueIndex/components/GrowCard.vue b/src/views/clue/clueIndex/components/GrowCard.vue new file mode 100644 index 0000000..8b4605c --- /dev/null +++ b/src/views/clue/clueIndex/components/GrowCard.vue @@ -0,0 +1,42 @@ + + diff --git a/src/views/clue/clueIndex/data.ts b/src/views/clue/clueIndex/data.ts new file mode 100644 index 0000000..75f1837 --- /dev/null +++ b/src/views/clue/clueIndex/data.ts @@ -0,0 +1,49 @@ +export interface GrowCardItem { + icon: string; + title: string; + value: number; + color: string; + action: string; +} + +import { BasicColumn } from '/@/components/Table' + +export const growCardList: GrowCardItem[] = [ + { + title: '新增数量', + icon: 'visit-count|svg', + value: 0, + color: 'green', + action: '天', + }, + { + title: '预约数量', + icon: 'total-sales|svg', + value: 0, + color: 'blue', + action: '天', + }, + { + title: '接通数量', + icon: 'download-count|svg', + value: 0, + color: 'orange', + action: '天', + }, + { + title: '签约数量', + icon: 'transaction|svg', + value: 0, + color: 'purple', + action: '天', + }, +]; + + +export const tableColumns: BasicColumn[] = [ + { title: '员工姓名', dataIndex: 'operatorName' }, + { title: '新增数量', dataIndex: 'newQuantity' }, + { title: '预约数量', dataIndex: 'appointmentQuantity' }, + { title: '接通数量', dataIndex: 'connectionQuantity' }, + { title: '签约数量', dataIndex: 'signQuantity' }, +] \ No newline at end of file diff --git a/src/views/clue/clueIndex/index.vue b/src/views/clue/clueIndex/index.vue new file mode 100644 index 0000000..ebb6a9c --- /dev/null +++ b/src/views/clue/clueIndex/index.vue @@ -0,0 +1,71 @@ + + \ No newline at end of file diff --git a/src/views/invite/statistics/components/GrowCard.vue b/src/views/invite/statistics/components/GrowCard.vue new file mode 100644 index 0000000..8b4605c --- /dev/null +++ b/src/views/invite/statistics/components/GrowCard.vue @@ -0,0 +1,42 @@ + + diff --git a/src/views/invite/statistics/data.ts b/src/views/invite/statistics/data.ts new file mode 100644 index 0000000..a6a86e1 --- /dev/null +++ b/src/views/invite/statistics/data.ts @@ -0,0 +1,234 @@ +export interface GrowCardItem { + icon: string; + title: string; + value: number; + color: string; + action: string; + dataIndex: string; +} + +export const growCardList: GrowCardItem[] = [ + { + title: '获得数量', + icon: 'visit-count|svg', + value: 0, + color: 'green', + action: '天', + dataIndex: 'obtainedQuantity' + }, + { + title: '分配数量', + icon: 'total-sales|svg', + value: 0, + color: 'blue', + action: '天', + dataIndex: 'allocationQuantity' + }, + { + title: '呼出数量', + icon: 'download-count|svg', + value: 0, + color: 'orange', + action: '天', + dataIndex: 'followUpQuantity' + }, + { + title: '有效沟通数量', + icon: 'transaction|svg', + value: 0, + color: 'purple', + action: '天', + dataIndex: 'effectiveTalkQuantity' + }, + { + title: '被拒绝数量', + icon: 'test|svg', + value: 0, + color: 'purple', + action: '天', + dataIndex: 'rejectedQuantity' + }, + { + title: '放弃数量', + icon: 'test|svg', + value: 0, + color: 'purple', + action: '天', + dataIndex: 'abandonedQuantity' + }, + { + title: '接通数量', + icon: 'visit-count|svg', + value: 0, + color: 'green', + action: '天', + dataIndex: 'connectionQuantity' + }, + { + title: '未接通数量', + icon: 'total-sales|svg', + value: 0, + color: 'blue', + action: '天', + dataIndex: 'unconnectedQuantity' + }, + { + title: '无人接听', + icon: 'download-count|svg', + value: 0, + color: 'orange', + action: '天', + dataIndex: 'noAnsweredQuantity' + }, + { + title: '无效信息', + icon: 'transaction|svg', + value: 0, + color: 'purple', + action: '天', + dataIndex: 'invalidInformationQuantity' + }, + { + title: '空号', + icon: 'test|svg', + value: 0, + color: 'purple', + action: '天', + dataIndex: 'emptyNumberQuantity' + }, + { + title: '预约数量', + icon: 'test|svg', + value: 0, + color: 'purple', + action: '天', + dataIndex: 'appointmentQuantity' + }, +]; + + +export const historyCardList: GrowCardItem[] = [ + { + title: '存量放弃', + icon: 'visit-count|svg', + value: 0, + color: 'green', + action: '天', + dataIndex: 'historyAbandonedQuantity' + }, + { + title: '存量已确认预约', + icon: 'total-sales|svg', + value: 0, + color: 'blue', + action: '天', + dataIndex: 'historyAppointmentQuantity' + }, + { + title: '存量已接通', + icon: 'download-count|svg', + value: 0, + color: 'orange', + action: '天', + dataIndex: 'historyConnectionQuantity' + }, + { + title: '存量有效沟通', + icon: 'transaction|svg', + value: 0, + color: 'purple', + action: '天', + dataIndex: 'historyEffectiveTalkQuantity' + }, + { + title: '存量空号', + icon: 'test|svg', + value: 0, + color: 'purple', + action: '天', + dataIndex: 'historyEmptyNumberQuantity' + }, + { + title: '存量呼出数量', + icon: 'test|svg', + value: 0, + color: 'purple', + action: '天', + dataIndex: 'historyFollowUpQuantity' + }, + { + title: '存量无效信息', + icon: 'visit-count|svg', + value: 0, + color: 'green', + action: '天', + dataIndex: 'historyInvalidInformationQuantity' + }, + { + title: '存量无人接听', + icon: 'total-sales|svg', + value: 0, + color: 'blue', + action: '天', + dataIndex: 'historyNoAnsweredQuantity' + }, + { + title: '存量被拒绝', + icon: 'download-count|svg', + value: 0, + color: 'orange', + action: '天', + dataIndex: 'historyRejectedQuantity' + }, + { + title: '存量未接通', + icon: 'transaction|svg', + value: 0, + color: 'purple', + action: '天', + dataIndex: 'historyUnconnectedQuantity' + }, +]; + +import { BasicColumn } from '/@/components/Table' + +export const tableColumns: BasicColumn[] = [ + { title: '员工姓名', width: 60, dataIndex: 'operatorName' }, + { title: '分配数量', width: 60, dataIndex: 'allocationQuantity' }, + // { title: '获得数量', width: 60, dataIndex: 'obtainedQuantity' }, + { title: '呼出数量', width: 60, dataIndex: 'followUpQuantity' }, + { title: '有效沟通', width: 60, dataIndex: 'effectiveTalkQuantity' }, + { title: '被拒绝', width: 50, dataIndex: 'rejectedQuantity' }, + { title: '放弃', width: 60, dataIndex: 'abandonedQuantity' }, + { title: '接通数量', width: 60, dataIndex: 'connectionQuantity' }, + { title: '未接通', width: 50, dataIndex: 'unconnectedQuantity' }, + { title: '无人接听', width: 60, dataIndex: 'noAnsweredQuantity' }, + { title: '无效信息', width: 60, dataIndex: 'invalidInformationQuantity' }, + { title: '空号', width: 60, dataIndex: 'emptyNumberQuantity' }, + { title: '预约数量', width: 60, dataIndex: 'appointmentQuantity' }, + + // { title: '存量放弃', width: 60, dataIndex: 'historyAbandonedQuantity' }, + // { title: '存量已确认预约', width: 90, dataIndex: 'historyAppointmentQuantity' }, + // { title: '存量已接通', width: 70, dataIndex: 'historyConnectionQuantity' }, + // { title: '存量有效沟通', width: 80, dataIndex: 'historyEffectiveTalkQuantity' }, + // { title: '存量空号', width: 60, dataIndex: 'historyEmptyNumberQuantity' }, + // { title: '存量呼出数量', width: 80, dataIndex: 'historyFollowUpQuantity' }, + // { title: '存量无效信息', width: 80, dataIndex: 'historyInvalidInformationQuantity' }, + // { title: '存量无人接听', width: 80, dataIndex: 'historyNoAnsweredQuantity' }, + // { title: '存量被拒绝', width: 80, dataIndex: 'historyRejectedQuantity' }, + // { title: '存量未接通', width: 80, dataIndex: 'historyUnconnectedQuantity' }, +] + +export const historyColumns: BasicColumn[] = [ + { title: '员工姓名', width: 60, dataIndex: 'operatorName' }, + { title: '存量放弃', width: 60, dataIndex: 'historyAbandonedQuantity' }, + { title: '存量已确认预约', width: 90, dataIndex: 'historyAppointmentQuantity' }, + { title: '存量已接通', width: 70, dataIndex: 'historyConnectionQuantity' }, + { title: '存量有效沟通', width: 80, dataIndex: 'historyEffectiveTalkQuantity' }, + { title: '存量空号', width: 60, dataIndex: 'historyEmptyNumberQuantity' }, + { title: '存量呼出数量', width: 80, dataIndex: 'historyFollowUpQuantity' }, + { title: '存量无效信息', width: 80, dataIndex: 'historyInvalidInformationQuantity' }, + { title: '存量无人接听', width: 80, dataIndex: 'historyNoAnsweredQuantity' }, + { title: '存量被拒绝', width: 80, dataIndex: 'historyRejectedQuantity' }, + { title: '存量未接通', width: 80, dataIndex: 'historyUnconnectedQuantity' }, +] \ No newline at end of file diff --git a/src/views/invite/statistics/index.vue b/src/views/invite/statistics/index.vue new file mode 100644 index 0000000..ed7d05c --- /dev/null +++ b/src/views/invite/statistics/index.vue @@ -0,0 +1,90 @@ + + \ No newline at end of file diff --git a/src/views/sys/workbench/index.vue b/src/views/sys/workbench/index.vue index d3d53f3..3269257 100644 --- a/src/views/sys/workbench/index.vue +++ b/src/views/sys/workbench/index.vue @@ -1,7 +1,7 @@ \ No newline at end of file