Skip to content
Toggle navigation
P
Projects
G
Groups
S
Snippets
Help
phsl
/
admin
This project
Loading...
Sign in
Toggle navigation
Go to a project
Project
Repository
Issues
0
Merge Requests
0
Pipelines
Wiki
Snippets
Members
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Commit
dcfe1abb
authored
Feb 24, 2024
by
YunaiV
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
✨
CRM:增加商机关联联系人
parent
6caa94ec
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
82 additions
and
2 deletions
+82
-2
src/api/crm/contact/index.ts
+15
-0
src/views/crm/contact/components/ContactList.vue
+67
-2
No files found.
src/api/crm/contact/index.ts
View file @
dcfe1abb
...
...
@@ -37,6 +37,11 @@ export interface ContactBusinessReqVO {
businessIds
:
number
[]
}
export
interface
ContactBusiness2ReqVO
{
businessId
:
number
contactIds
:
number
[]
}
// 查询 CRM 联系人列表
export
const
getContactPage
=
async
(
params
)
=>
{
return
await
request
.
get
({
url
:
`/crm/contact/page`
,
params
})
...
...
@@ -87,11 +92,21 @@ export const createContactBusinessList = async (data: ContactBusinessReqVO) => {
return
await
request
.
post
({
url
:
`/crm/contact/create-business-list`
,
data
})
}
// 批量新增联系人商机关联
export
const
createContactBusinessList2
=
async
(
data
:
ContactBusiness2ReqVO
)
=>
{
return
await
request
.
post
({
url
:
`/crm/contact/create-business-list2`
,
data
})
}
// 解除联系人商机关联
export
const
deleteContactBusinessList
=
async
(
data
:
ContactBusinessReqVO
)
=>
{
return
await
request
.
delete
({
url
:
`/crm/contact/delete-business-list`
,
data
})
}
// 解除联系人商机关联
export
const
deleteContactBusinessList2
=
async
(
data
:
ContactBusiness2ReqVO
)
=>
{
return
await
request
.
delete
({
url
:
`/crm/contact/delete-business-list2`
,
data
})
}
// 联系人转移
export
const
transferContact
=
async
(
data
:
TransferReqVO
)
=>
{
return
await
request
.
put
({
url
:
'/crm/contact/transfer'
,
data
})
...
...
src/views/crm/contact/components/ContactList.vue
View file @
dcfe1abb
...
...
@@ -5,11 +5,32 @@
<Icon
class=
"mr-5px"
icon=
"system-uicons:contacts"
/>
创建联系人
</el-button>
<el-button
@
click=
"openBusinessModal"
v-hasPermi=
"['crm:contact:create-business']"
v-if=
"queryParams.businessId"
>
<Icon
class=
"mr-5px"
icon=
"ep:circle-plus"
/>
关联
</el-button>
<el-button
@
click=
"deleteContactBusinessList"
v-hasPermi=
"['crm:contact:delete-business']"
v-if=
"queryParams.businessId"
>
<Icon
class=
"mr-5px"
icon=
"ep:remove"
/>
解除关联
</el-button>
</el-row>
<!-- 列表 -->
<ContentWrap
class=
"mt-10px"
>
<el-table
v-loading=
"loading"
:data=
"list"
:stripe=
"true"
:show-overflow-tooltip=
"true"
>
<el-table
ref=
"contactRef"
v-loading=
"loading"
:data=
"list"
:stripe=
"true"
:show-overflow-tooltip=
"true"
>
<el-table-column
type=
"selection"
width=
"55"
v-if=
"queryParams.businessId"
/>
<el-table-column
label=
"姓名"
fixed=
"left"
align=
"center"
prop=
"name"
>
<template
#
default=
"scope"
>
<el-link
type=
"primary"
:underline=
"false"
@
click=
"openDetail(scope.row.id)"
>
...
...
@@ -37,12 +58,19 @@
<!-- 表单弹窗:添加 -->
<ContactForm
ref=
"formRef"
@
success=
"getList"
/>
<!-- 关联商机选择弹框 -->
<ContactListModal
ref=
"contactModalRef"
:customer-id=
"props.customerId"
@
success=
"createContactBusinessList"
/>
</template>
<
script
setup
lang=
"ts"
>
import
*
as
ContactApi
from
'@/api/crm/contact'
import
ContactForm
from
'./../ContactForm.vue'
import
{
DICT_TYPE
}
from
'@/utils/dict'
import
{
BizTypeEnum
}
from
'@/api/crm/permission'
import
ContactListModal
from
'./ContactListModal.vue'
defineOptions
({
name
:
'CrmContactList'
})
const
props
=
defineProps
<
{
...
...
@@ -58,8 +86,10 @@ const list = ref([]) // 列表的数据
const
queryParams
=
reactive
({
pageNo
:
1
,
pageSize
:
10
,
customerId
:
undefined
as
unknown
// 允许 undefined + number
customerId
:
undefined
as
unknown
,
// 允许 undefined + number
businessId
:
undefined
as
unknown
// 允许 undefined + number
})
const
message
=
useMessage
()
/** 查询列表 */
const
getList
=
async
()
=>
{
...
...
@@ -106,6 +136,41 @@ const openDetail = (id: number) => {
push
({
name
:
'CrmContactDetail'
,
params
:
{
id
}
})
}
/** 打开联系人与商机的关联弹窗 */
const
contactModalRef
=
ref
()
const
openBusinessModal
=
()
=>
{
contactModalRef
.
value
.
open
()
}
const
createContactBusinessList
=
async
(
contactIds
:
number
[])
=>
{
const
data
=
{
businessId
:
props
.
bizId
,
contactIds
:
contactIds
}
as
ContactApi
.
ContactBusiness2ReqVO
contactRef
.
value
.
getSelectionRows
().
forEach
((
row
:
ContactApi
.
ContactVO
)
=>
{
data
.
businessIds
.
push
(
row
.
id
)
})
await
ContactApi
.
createContactBusinessList2
(
data
)
// 刷新列表
message
.
success
(
'关联联系人成功'
)
handleQuery
()
}
/** 解除联系人与商机的关联 */
const
contactRef
=
ref
()
const
deleteContactBusinessList
=
async
()
=>
{
const
data
=
{
businessId
:
props
.
bizId
,
contactIds
:
contactRef
.
value
.
getSelectionRows
().
map
((
row
:
ContactApi
.
ContactVO
)
=>
row
.
id
)
}
as
ContactApi
.
ContactBusiness2ReqVO
if
(
data
.
contactIds
.
length
===
0
)
{
return
message
.
error
(
'未选择联系人'
)
}
await
ContactApi
.
deleteContactBusinessList2
(
data
)
// 刷新列表
message
.
success
(
'取关联系人成功'
)
handleQuery
()
}
/** 监听打开的 bizId + bizType,从而加载最新的列表 */
watch
(
()
=>
[
props
.
bizId
,
props
.
bizType
],
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment