Skip to content

Commit 68fc176

Browse files
YunaiVgitee-org
authored andcommitted
!364 wip: CRM-待办事项
Merge pull request !364 from dhb52/crm-msg
2 parents 26bb847 + 2484933 commit 68fc176

File tree

5 files changed

+398
-0
lines changed

5 files changed

+398
-0
lines changed

src/api/crm/message/index.ts

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
import request from '@/config/axios'
2+
3+
export interface CustomerVO {
4+
id?: number
5+
name: string
6+
industryId: number
7+
level: number
8+
source: number
9+
followUpStatus?: boolean
10+
lockStatus?: boolean
11+
dealStatus?: boolean
12+
mobile: string
13+
telephone: string
14+
website: string
15+
qq: string
16+
wechat: string
17+
email: string
18+
description: string
19+
remark: string
20+
ownerUserId?: number
21+
ownerUserName?: string
22+
ownerUserDept?: string
23+
roUserIds?: string
24+
rwUserIds?: string
25+
areaId?: number
26+
areaName?: string
27+
detailAddress: string
28+
contactLastTime?: Date
29+
contactNextTime: Date
30+
createTime?: Date
31+
updateTime?: Date
32+
creator?: string
33+
creatorName?: string
34+
}
35+
36+
// 查询客户列表
37+
export const getTodayCustomerPage = async (params) => {
38+
return await request.get({ url: `/crm/message/todayCustomer`, params })
39+
}

src/router/modules/remaining.ts

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -528,6 +528,16 @@ const remainingRouter: AppRouteRecordRaw[] = [
528528
activeMenu: '/crm/product'
529529
},
530530
component: () => import('@/views/crm/product/detail/index.vue')
531+
},
532+
{
533+
path: 'message',
534+
name: 'CrmMessage',
535+
meta: {
536+
title: '待办事项',
537+
noCache: true,
538+
hidden: true
539+
},
540+
component: () => import('@/views/crm/message/index.vue')
531541
}
532542
]
533543
}

src/views/crm/message/index.vue

Lines changed: 134 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,134 @@
1+
<template>
2+
<el-row :gutter="20">
3+
<el-col :span="4" class="min-w-[200px]">
4+
<div class="side-item-list">
5+
<div
6+
v-for="(item, index) in leftSides"
7+
:key="index"
8+
:class="leftType == item.infoType ? 'side-item-select' : 'side-item-default'"
9+
class="side-item"
10+
@click="sideClick(item)"
11+
>
12+
{{ item.name }}
13+
<el-badge v-if="item.msgCount > 0" :max="99" :value="item.msgCount" />
14+
</div>
15+
</div>
16+
</el-col>
17+
<el-col :span="20" :xs="24">
18+
<TodayCustomer v-if="leftType === 'todayCustomer'" />
19+
<FollowLeads v-if="leftType === 'followLeads'" />
20+
</el-col>
21+
</el-row>
22+
</template>
23+
24+
<script lang="ts" setup>
25+
import TodayCustomer from './tables/TodayCustomer.vue'
26+
import FollowLeads from './tables/FollowLeads.vue'
27+
28+
const leftType = ref('todayCustomer')
29+
const leftSides = ref([
30+
{
31+
name: '今日需联系客户',
32+
infoType: 'todayCustomer',
33+
msgCount: 1,
34+
tips: '下次跟进时间为今日的客户'
35+
},
36+
{
37+
name: '分配给我的线索',
38+
infoType: 'followLeads',
39+
msgCount: 0,
40+
tips: '转移之后未跟进的线索'
41+
},
42+
{
43+
name: '分配给我的客户',
44+
infoType: 'followCustomer',
45+
msgCount: 0,
46+
tips: '转移、领取、分配之后未跟进的客户,默认显示自己负责的客户'
47+
},
48+
{
49+
name: '待进入公海的客户',
50+
infoType: 'putInPoolRemind',
51+
msgCount: 0,
52+
tips: ''
53+
},
54+
{
55+
name: '待审核合同',
56+
infoType: 'checkContract',
57+
msgCount: 0,
58+
tips: ''
59+
},
60+
{
61+
name: '待审核回款',
62+
crmType: 'receivables',
63+
infoType: 'checkReceivables',
64+
msgCount: 0,
65+
tips: ''
66+
},
67+
{
68+
name: '待回款提醒',
69+
infoType: 'remindReceivablesPlan',
70+
msgCount: 4,
71+
tips: ''
72+
},
73+
{
74+
name: '即将到期的合同',
75+
infoType: 'endContract',
76+
msgCount: 20,
77+
tips: '根据“合同到期时间”及设置的“提前提醒天数”提醒'
78+
}
79+
])
80+
81+
/**
82+
* 侧边点击
83+
*/
84+
const sideClick = (item) => {
85+
leftType.value = item.infoType
86+
}
87+
</script>
88+
89+
<style lang="scss" scoped>
90+
.side-item-list {
91+
top: 0;
92+
bottom: 0;
93+
left: 0;
94+
z-index: 1;
95+
font-size: 14px;
96+
background-color: white;
97+
border: 1px solid #e6e6e6;
98+
border-radius: 5px;
99+
100+
.side-item {
101+
position: relative;
102+
height: 50px;
103+
padding: 0 20px;
104+
line-height: 50px;
105+
cursor: pointer;
106+
107+
i {
108+
color: #999;
109+
}
110+
}
111+
}
112+
113+
.side-item-default {
114+
color: #333;
115+
border-right: 2px solid transparent;
116+
}
117+
118+
.side-item-select {
119+
color: #409eff;
120+
background-color: #ecf5ff;
121+
border-right: 2px solid var(--el-color-primary);
122+
}
123+
124+
.el-badge :deep(.el-badge__content) {
125+
top: 0;
126+
border: none;
127+
}
128+
129+
.el-badge {
130+
position: absolute;
131+
top: 0;
132+
right: 15px;
133+
}
134+
</style>
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
<!-- 分配给我的线索 -->
2+
<template>
3+
<div>
4+
TODO: 分配给我的线索
5+
</div>
6+
</template>
7+
8+
<script setup lang="ts" name="FollowLeads">
9+
10+
</script>
11+
12+
<style scoped>
13+
14+
</style>

0 commit comments

Comments
 (0)