Skip to content

Commit ac9a77e

Browse files
committed
✨ CRM:优化客户的列表、编辑的样式
1 parent 04a42bc commit ac9a77e

File tree

5 files changed

+122
-169
lines changed

5 files changed

+122
-169
lines changed

src/api/crm/customer/index.ts

Lines changed: 25 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -1,36 +1,33 @@
11
import request from '@/config/axios'
22

33
export interface CustomerVO {
4-
id?: number
5-
name: string
6-
industryId: number
7-
level: number
8-
source: number
9-
followUpStatus?: boolean
4+
id: number // 编号
5+
name: string // 客户名称
6+
followUpStatus: boolean // 跟进状态
7+
contactLastTime: Date // 最后跟进时间
8+
contactLastContent: string // 最后跟进内容
9+
contactNextTime: Date // 下次联系时间
10+
ownerUserId: number // 负责人的用户编号
11+
ownerUserName?: string // 负责人的用户名称
12+
ownerUserDept?: string // 负责人的部门名称
1013
lockStatus?: boolean
1114
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
15+
mobile: string // 手机号
16+
telephone: string // 电话
17+
qq: string // QQ
18+
wechat: string // wechat
19+
email: string // email
20+
areaId: number // 所在地
21+
areaName?: string // 所在地名称
22+
detailAddress: string // 详细地址
23+
industryId: number // 所属行业
24+
level: number // 客户等级
25+
source: number // 客户来源
26+
remark: string // 备注
27+
creator: string // 创建人
28+
creatorName?: string // 创建人名称
29+
createTime: Date // 创建时间
30+
updateTime: Date // 更新时间
3431
}
3532

3633
// 查询客户列表

src/views/crm/backlog/components/ClueFollowList.vue

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@
2929
<!-- 列表 -->
3030
<ContentWrap>
3131
<el-table v-loading="loading" :data="list" :stripe="true" :show-overflow-tooltip="true">
32-
<el-table-column label="线索名称" align="center" prop="name" fixed="left" width="120">
32+
<el-table-column label="线索名称" align="center" prop="name" fixed="left" width="160">
3333
<template #default="scope">
3434
<el-link :underline="false" type="primary" @click="openDetail(scope.row.id)">
3535
{{ scope.row.name }}
@@ -41,7 +41,7 @@
4141
<dict-tag :type="DICT_TYPE.CRM_CUSTOMER_SOURCE" :value="scope.row.source" />
4242
</template>
4343
</el-table-column>
44-
<el-table-column label="手机号" align="center" prop="mobile" width="120" />
44+
<el-table-column label="手机" align="center" prop="mobile" width="120" />
4545
<el-table-column label="电话" align="center" prop="telephone" width="130" />
4646
<el-table-column label="邮箱" align="center" prop="email" width="180" />
4747
<el-table-column label="地址" align="center" prop="detailAddress" width="180" />

src/views/crm/clue/index.vue

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,7 @@
6868
<el-tab-pane label="下属负责的" name="3" />
6969
</el-tabs>
7070
<el-table v-loading="loading" :data="list" :stripe="true" :show-overflow-tooltip="true">
71-
<el-table-column label="线索名称" align="center" prop="name" fixed="left" width="120">
71+
<el-table-column label="线索名称" align="center" prop="name" fixed="left" width="160">
7272
<template #default="scope">
7373
<el-link :underline="false" type="primary" @click="openDetail(scope.row.id)">
7474
{{ scope.row.name }}
@@ -80,7 +80,7 @@
8080
<dict-tag :type="DICT_TYPE.CRM_CUSTOMER_SOURCE" :value="scope.row.source" />
8181
</template>
8282
</el-table-column>
83-
<el-table-column label="手机号" align="center" prop="mobile" width="120" />
83+
<el-table-column label="手机" align="center" prop="mobile" width="120" />
8484
<el-table-column label="电话" align="center" prop="telephone" width="130" />
8585
<el-table-column label="邮箱" align="center" prop="email" width="180" />
8686
<el-table-column label="地址" align="center" prop="detailAddress" width="180" />

src/views/crm/customer/CustomerForm.vue

Lines changed: 62 additions & 70 deletions
Original file line numberDiff line numberDiff line change
@@ -14,10 +14,10 @@
1414
</el-form-item>
1515
</el-col>
1616
<el-col :span="12">
17-
<el-form-item label="所属行业" prop="industryId">
18-
<el-select v-model="formData.industryId" placeholder="请选择所属行业">
17+
<el-form-item label="客户来源" prop="source">
18+
<el-select v-model="formData.source" placeholder="请选择客户来源" class="w-1/1">
1919
<el-option
20-
v-for="dict in getIntDictOptions(DICT_TYPE.CRM_CUSTOMER_INDUSTRY)"
20+
v-for="dict in getIntDictOptions(DICT_TYPE.CRM_CUSTOMER_SOURCE)"
2121
:key="dict.value"
2222
:label="dict.label"
2323
:value="dict.value"
@@ -28,74 +28,86 @@
2828
</el-row>
2929
<el-row>
3030
<el-col :span="12">
31-
<el-form-item label="客户来源" prop="source">
32-
<el-select v-model="formData.source" placeholder="请选择客户来源">
33-
<el-option
34-
v-for="dict in getIntDictOptions(DICT_TYPE.CRM_CUSTOMER_SOURCE)"
35-
:key="dict.value"
36-
:label="dict.label"
37-
:value="dict.value"
38-
/>
39-
</el-select>
31+
<el-form-item label="手机" prop="mobile">
32+
<el-input v-model="formData.mobile" placeholder="请输入手机" />
4033
</el-form-item>
4134
</el-col>
4235
<el-col :span="12">
43-
<el-form-item label="客户级别" prop="level">
44-
<el-select v-model="formData.level" placeholder="请选择客户级别">
36+
<el-form-item label="负责人" prop="ownerUserId">
37+
<el-select
38+
v-model="formData.ownerUserId"
39+
:disabled="formType !== 'create'"
40+
class="w-1/1"
41+
>
4542
<el-option
46-
v-for="dict in getIntDictOptions(DICT_TYPE.CRM_CUSTOMER_LEVEL)"
47-
:key="dict.value"
48-
:label="dict.label"
49-
:value="dict.value"
43+
v-for="item in userOptions"
44+
:key="item.id"
45+
:label="item.nickname"
46+
:value="item.id"
5047
/>
5148
</el-select>
5249
</el-form-item>
5350
</el-col>
5451
</el-row>
5552
<el-row>
5653
<el-col :span="12">
57-
<el-form-item label="手机" prop="mobile">
58-
<el-input v-model="formData.mobile" placeholder="请输入手机" />
54+
<el-form-item label="电话" prop="telephone">
55+
<el-input v-model="formData.telephone" placeholder="请输入电话" />
5956
</el-form-item>
6057
</el-col>
6158
<el-col :span="12">
62-
<el-form-item label="电话" prop="telephone">
63-
<el-input v-model="formData.telephone" placeholder="请输入电话" />
59+
<el-form-item label="邮箱" prop="email">
60+
<el-input v-model="formData.email" placeholder="请输入邮箱" />
6461
</el-form-item>
6562
</el-col>
6663
</el-row>
6764
<el-row>
6865
<el-col :span="12">
69-
<el-form-item label="邮箱" prop="email">
70-
<el-input v-model="formData.email" placeholder="请输入邮箱" />
66+
<el-form-item label="微信" prop="wechat">
67+
<el-input v-model="formData.wechat" placeholder="请输入微信" />
7168
</el-form-item>
7269
</el-col>
7370
<el-col :span="12">
7471
<el-form-item label="QQ" prop="qq">
75-
<el-input v-model="formData.qq" placeholder="请输入QQ" />
72+
<el-input v-model="formData.qq" placeholder="请输入 QQ" />
7673
</el-form-item>
7774
</el-col>
7875
</el-row>
7976
<el-row>
8077
<el-col :span="12">
81-
<el-form-item label="微信" prop="wechat">
82-
<el-input v-model="formData.wechat" placeholder="请输入微信" />
78+
<el-form-item label="客户行业" prop="industryId">
79+
<el-select v-model="formData.industryId" placeholder="请选择客户行业" class="w-1/1">
80+
<el-option
81+
v-for="dict in getIntDictOptions(DICT_TYPE.CRM_CUSTOMER_INDUSTRY)"
82+
:key="dict.value"
83+
:label="dict.label"
84+
:value="dict.value"
85+
/>
86+
</el-select>
8387
</el-form-item>
8488
</el-col>
8589
<el-col :span="12">
86-
<el-form-item label="网址" prop="website">
87-
<el-input v-model="formData.website" placeholder="请输入网址" />
90+
<el-form-item label="客户级别" prop="level">
91+
<el-select v-model="formData.level" placeholder="请选择客户级别" class="w-1/1">
92+
<el-option
93+
v-for="dict in getIntDictOptions(DICT_TYPE.CRM_CUSTOMER_LEVEL)"
94+
:key="dict.value"
95+
:label="dict.label"
96+
:value="dict.value"
97+
/>
98+
</el-select>
8899
</el-form-item>
89100
</el-col>
90101
</el-row>
91102
<el-row>
92103
<el-col :span="12">
93-
<el-form-item label="所在地" prop="areaId">
104+
<el-form-item label="地址" prop="areaId">
94105
<el-tree-select
95106
v-model="formData.areaId"
96107
:data="areaList"
97108
:props="defaultProps"
98109
:render-after-expand="true"
110+
class="w-1/1"
99111
/>
100112
</el-form-item>
101113
</el-col>
@@ -105,16 +117,7 @@
105117
</el-form-item>
106118
</el-col>
107119
</el-row>
108-
<el-form-item v-if="formType === 'create'" label="负责人" prop="userIds" span="24">
109-
<el-select v-model="formData.ownerUserId">
110-
<el-option
111-
v-for="item in userOptions"
112-
:key="parseInt(item.id)"
113-
:label="item.nickname"
114-
:value="parseInt(item.id)"
115-
/>
116-
</el-select>
117-
</el-form-item>
120+
<!-- TODO 芋艿:待整理 -->
118121
<el-row>
119122
<el-col :span="12">
120123
<el-form-item label="下次联系时间" prop="contactNextTime">
@@ -126,17 +129,12 @@
126129
/>
127130
</el-form-item>
128131
</el-col>
132+
<el-col :span="12">
133+
<el-form-item label="备注" prop="remark">
134+
<el-input type="textarea" v-model="formData.remark" placeholder="请输入备注" />
135+
</el-form-item>
136+
</el-col>
129137
</el-row>
130-
<el-col :span="24">
131-
<el-form-item label="客户描述" prop="description">
132-
<el-input v-model="formData.description" placeholder="请输入客户描述" />
133-
</el-form-item>
134-
</el-col>
135-
<el-col :span="24">
136-
<el-form-item label="备注" prop="remark">
137-
<el-input v-model="formData.remark" placeholder="请输入备注" />
138-
</el-form-item>
139-
</el-col>
140138
</el-form>
141139
<template #footer>
142140
<el-button :disabled="formLoading" type="primary" @click="submitForm">确 定</el-button>
@@ -150,7 +148,7 @@ import * as CustomerApi from '@/api/crm/customer'
150148
import * as AreaApi from '@/api/system/area'
151149
import { defaultProps } from '@/utils/tree'
152150
import * as UserApi from '@/api/system/user'
153-
import { CACHE_KEY, useCache } from '@/hooks/web/useCache'
151+
import { useUserStore } from '@/store/modules/user'
154152
155153
const { t } = useI18n() // 国际化
156154
const message = useMessage() // 消息弹窗
@@ -164,21 +162,19 @@ const userOptions = ref<UserApi.UserVO[]>([]) // 用户列表
164162
const formData = ref({
165163
id: undefined,
166164
name: undefined,
165+
contactNextTime: undefined,
166+
ownerUserId: 0,
167167
mobile: undefined,
168-
industryId: undefined,
169-
level: undefined,
170-
source: undefined,
171168
telephone: undefined,
172-
website: undefined,
173169
qq: undefined,
174170
wechat: undefined,
175171
email: undefined,
176-
description: undefined,
177-
remark: undefined,
178172
areaId: undefined,
179173
detailAddress: undefined,
180-
contactNextTime: undefined,
181-
ownerUserId: undefined
174+
industryId: undefined,
175+
level: undefined,
176+
source: undefined,
177+
remark: undefined
182178
})
183179
const formRules = reactive({
184180
name: [{ required: true, message: '客户名称不能为空', trigger: 'blur' }],
@@ -207,9 +203,7 @@ const open = async (type: string, id?: number) => {
207203
userOptions.value = await UserApi.getSimpleUserList()
208204
// 默认新建时选中自己
209205
if (formType.value === 'create') {
210-
const { wsCache } = useCache()
211-
const user = wsCache.get(CACHE_KEY.USER).user
212-
formData.value.ownerUserId = user.id
206+
formData.value.ownerUserId = useUserStore().getUser.id
213207
}
214208
}
215209
defineExpose({ open }) // 提供 open 方法,用于打开弹窗
@@ -245,21 +239,19 @@ const resetForm = () => {
245239
formData.value = {
246240
id: undefined,
247241
name: undefined,
242+
contactNextTime: undefined,
243+
ownerUserId: 0,
248244
mobile: undefined,
249-
industryId: undefined,
250-
level: undefined,
251-
source: undefined,
252245
telephone: undefined,
253-
website: undefined,
254246
qq: undefined,
255247
wechat: undefined,
256248
email: undefined,
257-
description: undefined,
258-
remark: undefined,
259249
areaId: undefined,
260250
detailAddress: undefined,
261-
contactNextTime: undefined,
262-
ownerUserId: undefined
251+
industryId: undefined,
252+
level: undefined,
253+
source: undefined,
254+
remark: undefined
263255
}
264256
formRef.value?.resetFields()
265257
}

0 commit comments

Comments
 (0)