Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
H
haoban-3
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
office
haoban-3
Commits
130f1a41
Commit
130f1a41
authored
Jul 13, 2022
by
huaying
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
fix: 活码列表
parent
d885cff3
Hide whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
436 additions
and
236 deletions
+436
-236
actCode.js
src/api/actCode.js
+2
-5
act-code-table.vue
...leads/actCodeManage/staffActCode/views/act-code-table.vue
+54
-59
batchAddCode.vue
...esleads/actCodeManage/staffActCode/views/batchAddCode.vue
+15
-7
group-list.vue
...alesleads/actCodeManage/staffActCode/views/group-list.vue
+26
-23
setActCode.vue
...alesleads/actCodeManage/staffActCode/views/setActCode.vue
+51
-51
ActCodeSet.vue
src/views/salesleads/components/ActCodeSet.vue
+94
-89
dataDetail.vue
src/views/salesleads/components/dataDetail.vue
+4
-2
welcomesItem.vue
src/views/salesleads/components/welcomesItem.vue
+190
-0
No files found.
src/api/actCode.js
View file @
130f1a41
import
{
postRequest
,
getRequest
}
from
'@/api/api'
;
// 活码分组查询
export
const
findActCodeGroupListApi
=
params
=>
postRequest
(
'/hm/group/list'
,
params
);
import
{
postRequest
,
getRequest
,
postJsonRequest
}
from
'@/api/api'
;
// 新增活码分组
export
const
addActCodeGroupApi
=
params
=>
postRequest
(
'/haoban-manage3-web/hm/group/save'
,
params
);
...
...
@@ -13,7 +10,7 @@ export const editActCodeGroupApi = params => postRequest('/haoban-manage3-web/hm
export
const
delActCodeGroupApi
=
params
=>
postRequest
(
'/haoban-manage3-web/hm/group/delete'
,
params
);
// 活码列表
export
const
actCodeListApi
=
params
=>
postRequest
(
'/haoban-manage3-web/hm/qrcode/list'
,
params
);
export
const
actCodeListApi
=
params
=>
post
Json
Request
(
'/haoban-manage3-web/hm/qrcode/list'
,
params
);
// 落地页模板列表
export
const
guidePageList
=
params
=>
getRequest
(
'/haoban-manage3-web/hm/guide/page/list'
,
params
);
...
...
src/views/salesleads/actCodeManage/staffActCode/views/act-code-table.vue
View file @
130f1a41
...
...
@@ -7,17 +7,17 @@
</el-input>
</el-form-item>
<el-form-item>
<el-select
v-model=
"s
earchForm.s
toreSearch"
placeholder=
"请选择"
style=
"width: 128px"
@
change=
"searchList"
>
<el-select
v-model=
"storeSearch"
placeholder=
"请选择"
style=
"width: 128px"
@
change=
"searchList"
>
<el-option
label=
"成员所属门店"
:value=
"1"
></el-option>
<el-option
label=
"使用成员"
:value=
"2"
></el-option>
</el-select>
<el-select
v-model=
"searchForm.s
earchInfo"
filterable
remote
:placeholder=
"`请输入$
{searchForm.
storeSearch == 1 ? '门店名称' : '成员姓名'} / code`" :remote-method="remoteMethods" :loading="selectLoading" @change="searchList" style="margin-left: -4px; width:196px;">
<el-select
v-model=
"searchForm.s
toreSearch"
filterable
remote
:placeholder=
"`请输入$
{
storeSearch == 1 ? '门店名称' : '成员姓名'} / code`" :remote-method="remoteMethods" :loading="selectLoading" @change="searchList" style="margin-left: -4px; width:196px;">
<el-option
v-for=
"item in memberOrShopList"
:key=
"item.value"
:label=
"item.label"
:value=
"item.value"
>
</el-option>
</el-select>
</el-form-item>
<el-form-item>
<el-select
v-model=
"searchForm.statusFlag"
placeholder=
"全部状态"
clearable
class=
"w160"
@
change=
"searchList"
>
<
el-option
:key=
"0"
label=
"删除"
:value=
"0"
>
</el-option
>
<
!--
<el-option
:key=
"0"
label=
"删除"
:value=
"0"
>
</el-option>
--
>
<el-option
:key=
"1"
label=
"正常"
:value=
"1"
>
</el-option>
<el-option
:key=
"2"
label=
"作废"
:value=
"2"
>
</el-option>
<el-option
:key=
"3"
label=
"待生效"
:value=
"3"
>
</el-option>
...
...
@@ -38,7 +38,8 @@
<el-button
type=
"primary"
@
click=
"$router.push('/actCodeAdd')"
>
新增活码
</el-button>
</el-form-item>
</el-form>
<el-table
ref=
"actCodeTableRef"
v-loading=
"loadingStatus"
:data=
"actCodeList"
tooltip-effect=
"dark"
class=
"act-code-table"
@
sort-change=
"sortChange"
:max-height=
"tableMaxHeight"
@
select=
"selectTable"
>
<el-table
ref=
"actCodeTableRef"
v-loading=
"loadingStatus"
:data=
"actCodeList"
tooltip-effect=
"dark"
class=
"act-code-table"
@
sort-change=
"sortChange"
:max-height=
"tableMaxHeight"
>
<!-- @select="selectTable" -->
<el-table-column
type=
"selection"
width=
"60"
fixed
>
</el-table-column>
<el-table-column
width=
"60"
class-name=
"table-select-cell"
fixed
>
<template
#
header
>
...
...
@@ -52,7 +53,7 @@
</el-table-column>
<el-table-column
label=
"活码信息"
width=
"100"
>
<
template
slot-scope=
"{ row }"
>
<p
class=
"overflow-ellipsis"
:title=
"row.
hmId"
>
{{
row
.
hmId
}}
</p>
<p
class=
"overflow-ellipsis"
:title=
"row.
name"
>
{{
row
.
name
?
row
.
name
:
'--'
}}
</p>
<p><span
class=
"oneActCode"
v-if=
"row.hmType == 1"
>
单人活码
</span><span
class=
"moreActCOde"
v-else
>
多人活码
</span></p>
</
template
>
</el-table-column>
...
...
@@ -64,61 +65,39 @@
</el-table-column>
<el-table-column
label=
"添加好友人数"
sortable=
"custom"
width=
"150"
>
<
template
slot-scope=
"{ row }"
>
<p>
{{
row
.
hmId
}}
</p>
<p>
{{
row
.
addNum
?
row
.
addNum
:
'--'
}}
</p>
</
template
>
</el-table-column>
<el-table-column
label=
"今日新增人数"
sortable=
"custom"
width=
"150"
>
<
template
slot-scope=
"{ row }"
>
<p>
{{
row
.
hmId
}}
</p>
<p>
{{
row
.
addNum
?
row
.
addNum
:
'--'
}}
</p>
</
template
>
</el-table-column>
<el-table-column
label=
"使用成员"
width=
"120"
>
<
template
slot-scope=
"{ row }"
>
<p>
{{
row
.
useMember
[
0
].
name
}}
</p>
<p
class=
"ft-12 phone"
>
15784243524
</p>
<p>
<el-popover
width=
"200"
trigger=
"click"
>
<ul
class=
"useMember-ul"
>
<li
v-for=
"(item, index) in row.useMember.slice(1)"
:key=
"index"
>
<p>
{{
item
.
name
}}
</p>
<p
class=
"ft-12 phone"
>
15784243524
</p>
</li>
</ul>
<el-button
slot=
"reference"
type=
"text"
class=
"ft-12"
>
查看更多
</el-button>
</el-popover>
</p>
<p>
{{
row
.
clerkName
?
row
.
clerkName
:
'--'
}}
</p>
<p
class=
"ft-12 phone"
>
{{
row
.
clerCode
?
row
.
clerCode
:
'--'
}}
</p>
</
template
>
</el-table-column>
<el-table-column
label=
"成员所属门店"
width=
"120"
>
<
template
slot-scope=
"{ row }"
>
<p>
{{
row
.
useMember
[
0
].
name
}}
</p>
<p
class=
"ft-12 phone"
>
15784243524
</p>
<p>
<el-popover
width=
"200"
trigger=
"click"
>
<ul
class=
"useMember-ul"
>
<li
v-for=
"(item, index) in row.useMember.slice(1)"
:key=
"index"
>
<p>
{{
item
.
name
}}
</p>
<p
class=
"ft-12 phone"
>
15784243524
</p>
</li>
</ul>
<el-button
slot=
"reference"
type=
"text"
class=
"ft-12"
>
查看更多
</el-button>
</el-popover>
</p>
<p>
{{
row
.
storeName
?
row
.
storeName
:
'--'
}}
</p>
<p
class=
"ft-12 phone"
>
{{
row
.
storeCode
?
row
.
storeCode
:
'--'
}}
</p>
</
template
>
</el-table-column>
<el-table-column
label=
"所属分组"
width=
"100"
>
<el-table-column
label=
"所属分组"
width=
"100"
show-overflow-tooltip
>
<
template
slot-scope=
"{ row }"
>
<p>
{{
row
.
hm
Id
}}
</p>
<p>
{{
row
.
hm
GroupId
?
row
.
hmGroupId
:
'--'
}}
</p>
</
template
>
</el-table-column>
<el-table-column
label=
"创建人"
width=
"100"
>
<
template
slot-scope=
"{ row }"
>
<p>
{{
row
.
creatorName
}}
</p>
<p>
{{
row
.
creatorName
?
row
.
creatorName
:
'--'
}}
</p>
</
template
>
</el-table-column>
<el-table-column
label=
"创建时间"
sortable=
"custom"
width=
"120"
>
<
template
slot-scope=
"{ row }"
>
<p>
{{
row
.
createTime
}}
</p>
<p>
{{
row
.
createTime
?
row
.
createTime
:
'--'
}}
</p>
</
template
>
</el-table-column>
<el-table-column
label=
"操作"
width=
"300"
fixed=
"right"
>
...
...
@@ -133,7 +112,7 @@
<el-dialog
title=
"选择分组"
:visible
.
sync=
"dialogGroupFormVisible"
width=
"25%"
>
<el-form
:model=
"formGroup"
>
<el-form-item
label=
"活动区域"
:rules=
"[{ required: true, message: '请选择分组', trigger: 'blur' }]"
>
<el-select
v-model=
"formGroup.groupList"
placeholder=
"选择分组"
v-loadmore=
"onLoadmore"
remote
multiple
filterable
:remote-method=
"remoteMethod"
@
visible-change=
"visibleChange"
>
<el-select
v-model=
"formGroup.groupList"
placeholder=
"选择分组"
v-loadmore=
"onLoadmore"
remote
filterable
:remote-method=
"remoteMethod"
@
visible-change=
"visibleChange"
>
<el-option
v-for=
"item in groupList"
:key=
"item.groupId"
:label=
"item.groupName"
:value=
"item.groupId"
></el-option>
</el-select>
</el-form-item>
...
...
@@ -149,7 +128,7 @@
<
script
>
import
{
actCodeListApi
}
from
'@/api/actCode.js'
;
// import errMsg from '@/common/js/error';
import
{
deleteRequest
,
getRequest
}
from
'@/api/api'
;
import
{
deleteRequest
,
getRequest
,
postRequest
,
postJsonRequest
}
from
'@/api/api'
;
export
default
{
name
:
'actCodeTable'
,
directives
:
{
...
...
@@ -177,14 +156,14 @@ export default {
tableMaxHeight
:
tableMaxHeight
,
searchForm
:
{
keyword
:
''
,
//
searchInfo: '',
searchInfo
:
''
,
statusFlag
:
''
,
storeSearch
:
1
,
storeSearch
:
''
,
hmType
:
''
,
createTimeStart
:
''
,
createTimeEnd
:
''
},
storeSearch
:
1
,
dateTime
:
[],
tableData
:
[],
total
:
1
,
...
...
@@ -381,14 +360,31 @@ export default {
pageNum
:
1
,
pageSize
:
20
,
total
:
1
}
},
name
:
''
};
},
created
()
{
this
.
getTableList
();
this
.
searchGroup
();
// this.getStraff();
// this.getStore();
},
methods
:
{
// 获取导购列表数据
async
getStraff
()
{
await
postRequest
(
`/api-plug/search-clerk?type=2`
,
{
name
:
this
.
name
});
},
async
getStore
()
{
const
obj
=
{
searchParam
:
''
,
pageSize
:
20
,
currentPage
:
1
,
scenes
:
'integral'
,
creatorId
:
''
};
await
postRequest
(
`/api-plug/query-store-by-code-name-new?requestProject=haoban-manage-web`
,
obj
);
},
onLoadmore
()
{
if
(
this
.
pageParamGroup
.
pageNum
>=
this
.
pageParamGroup
.
total
)
return
;
this
.
pageParamGroup
.
pageNum
++
;
...
...
@@ -426,23 +422,29 @@ export default {
}
},
// 表格选中事件
selectTable
(
selection
,
row
)
{
console
.
log
(
selection
);
this
.
selectHmIds
=
selection
.
map
(
item
=>
{
return
item
.
hmId
;
});
console
.
log
(
this
.
selectHmIds
,
'iss'
);
},
//
selectTable(selection, row) {
//
console.log(selection);
//
this.selectHmIds = selection.map(item => {
//
return item.hmId;
//
});
//
console.log(this.selectHmIds, 'iss');
//
},
// 批量分组
batchGoupEvent
()
{
console
.
log
(
'批量分组'
);
this
.
dialogGroupFormVisible
=
true
;
if
(
this
.
selectHmIds
.
length
==
0
)
{
return
this
.
$message
({
message
:
'请先选择活码!'
,
type
:
'warning'
});
}
else
{
this
.
dialogGroupFormVisible
=
true
;
}
},
onCommand
()
{
console
.
log
(
'hello'
);
},
handleSelectionChange
(
val
)
{
this
.
multipleSelection
=
val
;
this
.
selectHmIds
=
val
.
map
(
item
=>
{
return
item
.
hmId
;
});
},
// 当前页变化
handleCurrentChange
(
val
)
{
...
...
@@ -460,13 +462,6 @@ export default {
},
// 排序
sortChange
(
column
)
{
// this.pageParam.sortColName = column.prop;
// if (column.order === 'descending') {
// this.pageParam.sortType = 'desc';
// }
// if (column.order === 'ascending') {
// this.pageParam.sortType = 'asc';
// }
const
that
=
this
;
that
.
sortColumn
=
column
.
prop
;
that
.
sortType
=
column
.
order
==
'ascending'
?
'asc'
:
'desc'
;
...
...
src/views/salesleads/actCodeManage/staffActCode/views/batchAddCode.vue
View file @
130f1a41
<
template
>
<div>
<setActCode>
<setActCode
@
submit=
"onSubmit"
>
<template
#
typeCode
>
<el-form-item
label=
"活码类型"
prop=
"hmType
"
>
<el-form-item
label=
"活码类型"
:rules=
"[
{ required: true, message: '请选择活码类型', trigger: 'blur' }]
">
<el-radio-group
v-model=
"form.hmType"
>
<el-radio
:label=
"1"
>
单人活码
</el-radio>
</el-radio-group>
...
...
@@ -15,8 +15,7 @@
<el-radio
:label=
"2"
>
部分成员
</el-radio>
</el-radio-group>
<br
/>
<!--
<el-button
plain
class=
"ylbtn"
v-if=
"form.memberType == 2"
><i
class=
"iconfont-components3 icon-cp-PlusOutlined addPic"
></i>
添加成员
</el-button>
-->
<select-clerk
v-if=
"form.memberType == 2"
@
change=
"onChange"
></select-clerk>
<select-clerk
v-if=
"form.memberType == 2"
:multiple=
"false"
:data=
"data"
@
change=
"onChange"
></select-clerk>
</el-form-item>
</
template
>
</setActCode>
...
...
@@ -32,14 +31,23 @@ export default {
return
{
form
:
{
hmType
:
1
,
clerkIdList
:
1
,
clerkIdList
:
[]
,
memberType
:
1
}
},
data
:
[]
};
},
methods
:
{
onChange
(
data
)
{
console
.
log
(
data
);
this
.
data
=
data
;
this
.
form
.
clerkIdList
=
data
;
},
onSubmit
(
event
)
{
let
obj
=
{
...
event
,
...
this
.
form
};
console
.
log
(
obj
,
'父组件,整体表单数据'
);
}
}
};
...
...
src/views/salesleads/actCodeManage/staffActCode/views/group-list.vue
View file @
130f1a41
<
template
>
<section>
<div
class=
"mb-10 mt-20 pl-16 pr-15"
>
<!-- @keyup.native="value => searchGroup(value)" -->
<el-input
placeholder=
"请输入分组名称"
maxlength=
"50"
v-model=
"searchGroupInput"
@
change=
"searchGroup"
>
<el-input
placeholder=
"请输入分组名称"
maxlength=
"50"
v-model=
"pageP.groupName"
clearable
@
change=
"onSearch"
>
<i
slot=
"prefix"
class=
"el-input__icon el-icon-search"
></i>
</el-input>
</div>
...
...
@@ -25,9 +24,9 @@
<
/div
>
<
/li
>
<
/ul
>
<
p
v
-
if
=
"searchTip"
class
=
"searchTip"
>
没有找到和“
{{
searchGroupInput
}}
”相关的内容
<
/p
>
<
p
v
-
if
=
"searchTip"
class
=
"searchTip"
>
没有找到和“
{{
pageP
.
groupName
}}
”相关的内容
<
/p
>
<
/div
>
<
div
class
=
"add-category"
v
-
if
=
"
searchGroupInput == ''
"
>
<
div
class
=
"add-category"
v
-
if
=
"
groupList.length > 1
"
>
<
el
-
button
type
=
"primary"
class
=
"ghost-btn add-group"
@
click
=
"addGroup"
>
新增分组
<
/el-button
>
<
/div
>
<!--
新增
/
编辑分组
-->
...
...
@@ -56,14 +55,7 @@ export default {
searchTip
:
false
,
groupLoading
:
false
,
currentListItemUuid
:
1
,
searchGroupInput
:
''
,
groupList
:
[
{
groupName
:
'全部分组'
,
referNum
:
''
,
groupId
:
null
}
],
groupList
:
[],
scrollLoad
:
false
,
title
:
'新增分组'
,
addOrEditGroupDialog
:
false
,
...
...
@@ -76,9 +68,7 @@ export default {
}
,
isEditGroup
:
false
,
// 分页相关
pageNum
:
1
,
allPageNum
:
1
,
pageSize
:
20
,
pageP
:
{
groupName
:
''
,
pageNum
:
1
,
...
...
@@ -90,12 +80,16 @@ export default {
this
.
searchGroup
();
}
,
methods
:
{
onSearch
()
{
this
.
pageP
.
pageNum
=
1
;
this
.
searchGroup
();
}
,
load
()
{
if
(
this
.
allPageNum
>
this
.
pageP
.
p
ageNum
)
{
if
(
this
.
pageP
.
pageNum
<
this
.
allP
ageNum
)
{
this
.
pageP
.
pageNum
++
;
this
.
searchGroup
();
}
else
{
this
.
scrollLoad
=
true
;
//
this.scrollLoad = true;
}
}
,
clickGroupListItem
(
listItem
)
{
...
...
@@ -146,6 +140,7 @@ export default {
message
:
'删除成功!'
}
);
// this.groupList.splice(listItemIndex, 1);
this
.
pageP
.
pageNum
=
1
;
this
.
searchGroup
();
}
}
);
...
...
@@ -181,9 +176,11 @@ export default {
const
groupListItem
=
this
.
groupList
.
find
(({
groupId
}
)
=>
groupId
==
this
.
groupListForm
.
groupId
);
groupListItem
.
groupName
=
this
.
groupListForm
.
groupName
;
}
else
{
this
.
pageP
.
pageNum
=
1
;
this
.
searchGroup
();
//
this.pageP.pageNum = 1;
//
this.searchGroup();
}
this
.
pageP
.
pageNum
=
1
;
this
.
searchGroup
();
this
.
addOrEditGroupDialog
=
false
;
}
else
{
this
.
$message
({
...
...
@@ -198,22 +195,28 @@ export default {
this
.
groupLoading
=
true
;
const
countNum
=
await
getRequest
(
'/haoban-manage3-web/hm/group/refer/count'
,
{
}
);
if
(
this
.
pageP
.
pageNum
==
1
)
{
this
.
groupList
=
[
{
groupName
:
'全部分组'
,
referNum
:
''
,
groupId
:
null
}
];
this
.
groupList
[
0
].
referNum
=
countNum
.
data
.
result
;
}
// this.pageP.pageNum < this.allPageNum && this.pageP.pageNum++;
if
(
String
(
this
.
searchGroupInput
))
{
if
(
String
(
this
.
pageP
.
groupName
))
{
this
.
pageP
.
pageNum
=
1
;
this
.
pageP
.
groupName
=
this
.
searchGroupInput
;
this
.
groupList
=
[];
}
await
getRequest
(
'/haoban-manage3-web/hm/group/list'
,
this
.
pageP
).
then
(
res
=>
{
if
(
res
.
data
.
code
==
0
)
{
const
{
result
,
pages
}
=
res
.
data
.
result
||
{
}
;
this
.
groupList
=
this
.
groupList
.
concat
(
result
);
if
(
this
.
searchGroupInput
==
''
)
{
if
(
this
.
pageP
.
groupName
==
''
)
{
this
.
searchTip
=
false
;
}
else
if
(
this
.
searchGroupInput
!=
''
)
{
this
.
groupList
.
splice
(
0
,
1
);
}
else
if
(
this
.
pageP
.
groupName
!=
''
)
{
//
this.groupList.splice(0, 1);
if
(
this
.
groupList
.
length
<=
0
)
{
this
.
searchTip
=
true
;
}
...
...
src/views/salesleads/actCodeManage/staffActCode/views/setActCode.vue
View file @
130f1a41
<
template
>
<div>
<setActCode
@
submit=
"
submit
"
>
<setActCode
@
submit=
"
onSubmit"
:actCodeData=
"detailCode
"
>
<template
#
typeCode
>
<el-form-item
label=
"活码类型"
prop=
"hmType
"
>
<el-form-item
label=
"活码类型"
:rules=
"[
{ required: true, message: '请选择活码类型', trigger: 'blur' }]
">
<el-radio-group
v-model=
"form.hmType"
@
change=
"changeEvent"
>
<el-radio
:label=
"1"
>
单人活码
</el-radio>
<el-radio
:label=
"2"
>
多人活码
</el-radio>
...
...
@@ -10,12 +10,12 @@
</el-form-item>
</
template
>
<
template
#
codeName
>
<el-form-item
label=
"活码名称"
prop=
"name
"
>
<el-form-item
label=
"活码名称"
:rules=
"[
{ required: true, message: '请输入活码名称', trigger: 'blur' }]
">
<el-input
class=
"w340"
v-model=
"form.name"
placeholder=
"请输入活码名称,默认使用成员名称"
maxlength=
"20"
show-word-limit
></el-input>
</el-form-item>
</
template
>
<
template
#
member
>
<el-form-item
label=
"使用成员"
prop=
"clerkIdList
"
>
<el-form-item
label=
"使用成员"
:rules=
"[
{ required: true, message: '请选择使用成员', trigger: 'blur' }]
">
<p
class=
"tabs"
v-if=
"form.hmType == 1"
>
单人活码仅可选择一名成员
</p>
<p
class=
"tabs"
v-if=
"form.hmType == 2"
>
若选择多名成员,则随机分配企微员工
</p>
<!--
<el-button
plain
class=
"ylbtn"
><i
class=
"iconfont-components3 icon-cp-PlusOutlined addPic"
></i>
添加成员
</el-button>
-->
...
...
@@ -29,8 +29,7 @@
<
script
>
import
setActCode
from
'@/views/salesleads/components/actCodeSet.vue'
;
import
SelectClerk
from
'../../components/select-clerk/index.vue'
;
import
{
getRequest
}
from
'@/api/api'
;
import
errMsg
from
'@/common/js/error'
;
import
{
getRequest
,
postRequest
}
from
'@/api/api'
;
export
default
{
components
:
{
setActCode
,
SelectClerk
},
data
()
{
...
...
@@ -39,9 +38,13 @@ export default {
form
:
{
hmType
:
1
,
name
:
''
,
clerkIdList
:
[]
clerkIdList
:
[],
hmUserNum
:
null
//多人活码人数
},
multiple
:
false
multiple
:
false
,
data
:
[],
dataArr
:
[],
detailCode
:
[]
};
},
created
()
{
...
...
@@ -50,64 +53,61 @@ export default {
}
},
methods
:
{
changeEvent
(
e
)
{
this
.
data
=
[];
this
.
dataArr
=
[];
if
(
e
==
2
)
{
this
.
multiple
=
true
;
}
else
if
(
e
==
1
)
{
this
.
multiple
=
false
;
}
},
onChange
(
data
)
{
console
.
log
(
data
);
this
.
data
=
data
.
map
(
item
=>
{
this
.
data
=
data
;
this
.
form
.
clerkIdList
=
data
.
map
(
item
=>
{
return
item
.
clerkId
;
});
this
.
dataArr
=
data
.
map
(
item
=>
{
return
item
.
clerkName
;
});
if
(
this
.
form
.
name
==
''
)
{
this
.
form
.
name
=
this
.
data
.
toString
();
this
.
form
.
name
=
this
.
data
Arr
.
toString
();
}
console
.
log
(
this
.
data
,
909
);
},
async
getActCodeInfo
()
{
const
that
=
this
;
if
(
this
.
$route
.
query
.
hmId
)
return
;
that
.
loading
=
true
;
await
getRequest
(
'/hm/qrcode/detail'
,
{
hmId
:
this
.
$route
.
query
.
hmId
}).
then
(
res
=>
{
console
.
log
(
res
,
'detail'
);
// let res = {
// data: {
// errorCode: 1,
// result: {
// name: '测试活码好的可以',
// hmId: '727363646474849483332',
// statusFlag: 1,
// overFlag: 1,
// hmType: 2,
// creatorName: '少见多怪',
// createTime: 182736347383,
// passFlag: 0,
// welcomeId: 'b680a2cf18b742cc9f4560f6195c9ec6',
// enterpriseId: '5bd929fd3b2c49deaa1184bcb0d669b3'
// }
// }
// };
let
resData
=
res
.
data
;
this
.
detailCode
=
res
.
data
;
console
.
log
(
this
.
detailCode
,
'detailcode'
);
that
.
loading
=
false
;
// if (resData.errorCode == 1) {
// that.statusIndex = resData.result.statusFlag == 1 && resData.result.overFlag == 1 ? 4 : resData.result.statusFlag;
// that.codeInfo = resData.result;
// return;
// }
errMsg
.
errorMsg
(
resData
);
// })
// .catch(function(error) {
// that.$message.error({
// duration: 1000,
// message: error.message
// });
});
},
submit
(
a
)
{
console
.
log
(
a
);
},
changeEvent
(
e
)
{
if
(
e
==
2
)
{
this
.
multiple
=
true
;
}
else
if
(
e
==
1
)
{
this
.
multiple
=
false
;
onSubmit
(
event
)
{
let
obj
=
{
...
event
,
...
this
.
form
};
console
.
log
(
obj
,
'父组件,整体表单数据'
);
if
(
this
.
$route
.
query
.
id
)
{
obj
=
{
...
obj
,
hm_id
:
this
.
detailCode
.
hmId
};
// 编辑
postRequest
(
'/hm/qrcode/update'
,
obj
);
}
else
{
// 新增
postRequest
(
'/hm/qrcode/add'
,
obj
);
}
this
.
$refs
.
form
.
clearValidate
();
this
.
form
=
{
hmType
:
1
,
name
:
''
,
clerkIdList
:
[],
hmUserNum
:
null
//多人活码人数
};
}
}
};
...
...
src/views/salesleads/components/ActCodeSet.vue
View file @
130f1a41
...
...
@@ -6,7 +6,7 @@
<slot
name=
"typeCode"
></slot>
<slot
name=
"codeName"
></slot>
<el-form-item
label=
"活码分组"
prop=
"hmGroupId"
>
<el-select
class=
"w340"
v-model=
"form.hmGroupId"
v-loadmore=
"onLoadmore"
clearable
remote
multiple
filterable
:remote-method=
"remoteMethod"
>
<el-select
class=
"w340"
v-model=
"form.hmGroupId"
v-loadmore=
"onLoadmore"
clearable
remote
filterable
:remote-method=
"remoteMethod"
>
<el-option
v-for=
"item in groupList"
:key=
"item.groupId"
:label=
"item.groupName"
:value=
"item.groupId"
></el-option>
</el-select>
</el-form-item>
...
...
@@ -20,7 +20,8 @@
<!--
<dm-memberTag-group
:visiable
.
sync=
"tagsDialogVisible"
@
save=
"saveTagPop"
></dm-memberTag-group>
-->
</el-form-item>
<dm-sub-title
text=
"欢迎语设置"
type=
"line"
class=
"mt40b20"
/>
<el-row>
<welcomeItem></welcomeItem>
<!--
<el-row>
<el-col
:span=
"17"
>
<el-form-item
label=
"活码类型"
>
<el-radio-group
v-model=
"welcomesType"
>
...
...
@@ -40,7 +41,7 @@
<el-form-item
label=
"选择欢迎语"
v-if=
"welcomesType == 1"
>
<div
class=
"welcomeTable"
>
<div
class=
"wtabTop"
>
<el-input
class=
"w260"
placeholder=
"请输入标题"
v-model=
"
pageParam
.search"
></el-input>
<el-input
class=
"w260"
placeholder=
"请输入标题"
v-model=
"
welcomePage
.search"
></el-input>
<el-button
plain
class=
"ylbtn"
@
click=
"changeRoute"
>
新建欢迎语
</el-button>
</div>
<el-table
:data=
"welcomeTableData"
>
...
...
@@ -72,18 +73,17 @@
<p
class=
"welcomeTitle"
>
欢迎语预览
</p>
<previewWelcome
:welcomeContent=
"welcomeContent"
></previewWelcome>
</el-col>
</el-row>
</el-row>
-->
</el-form>
</div>
<div
class=
"saveBtn"
>
<el-button
type=
"primary"
@
click=
"s
umbit
"
>
保存
</el-button>
<el-button
type=
"primary"
@
click=
"s
ave
"
>
保存
</el-button>
</div>
</div>
</template>
<
script
>
import
previewWelcome
from
'../../../components/preview-welcome.vue'
;
// import { findActCodeGroupListApi } from '@/api/actCode.js';
import
welcomeItem
from
'@/views/salesleads/components/welcomesItem.vue'
;
import
{
getRequest
}
from
'@/api/api'
;
export
default
{
name
:
'setActCode'
,
...
...
@@ -100,7 +100,7 @@ export default {
}
}
},
components
:
{
previewWelcome
},
components
:
{
welcomeItem
},
props
:
{
actCodeData
:
{
type
:
Object
,
...
...
@@ -110,34 +110,35 @@ export default {
data
()
{
return
{
form
:
{
hmType
:
1
,
//1单人 2多人
name
:
''
,
// 名称
//
hmType: 1, //1单人 2多人
//
name: '', // 名称
hmGroupId
:
null
,
//活码分组id
passFlag
:
1
,
// 1自动通过 0否
memberLabelId
:
''
,
//会员活动标签id
welcomeId
:
null
,
// 欢迎语id
clerkIdList
:
''
,
// 选择导购id
storeId
:
''
,
//门店id
hmUserNum
:
null
//多人活码人数
//
clerkIdList: '', // 选择导购id
storeId
:
''
//门店id
//
hmUserNum: null //多人活码人数
},
welcomesType
:
1
,
//
welcomesType: 1,
rules
:
{
hmType
:
[{
required
:
true
,
message
:
'请选择活码类型'
,
trigger
:
'blur'
}],
name
:
[{
required
:
true
,
message
:
'请输入活码名称'
,
trigger
:
'blur'
}],
hmGroupId
:
[{
required
:
true
,
message
:
'请选择活码分组'
,
trigger
:
'blur'
}],
clerkIdList
:
[{
required
:
true
,
message
:
'请选择使用成员'
,
trigger
:
'blur'
}]
// hmType: [{ required: true, message: '请选择活码类型', trigger: 'blur' }],
hmGroupId
:
[{
required
:
true
,
message
:
'请选择活码分组'
,
trigger
:
'blur'
}]
// clerkIdList: [{ required: true, message: '请选择使用成员', trigger: 'blur' }]
},
welcomeTableData
:
[],
//
welcomeTableData: [],
tagsDialogVisible
:
false
,
welcome
:
''
,
templateSelection
:
{},
welcomeContent
:
''
,
welcomePage
:
{
search
:
''
,
currentPage
:
1
},
// welcome: '',
// templateSelection: {},
// welcomeContent: '',
// // 欢迎语参数
// welcomePage: {
// search: '',
// currentPage: 1
// },
// 分组参数
pageParam
:
{
search
:
''
,
groupName
:
''
,
pageNum
:
1
,
pageSize
:
20
,
total
:
1
...
...
@@ -147,7 +148,7 @@ export default {
};
},
created
()
{
this
.
getWelcomeTable
();
//
this.getWelcomeTable();
this
.
searchGroup
();
},
methods
:
{
...
...
@@ -169,7 +170,7 @@ export default {
const
{
result
,
pages
}
=
res
.
data
.
result
||
{};
this
.
pageParam
.
total
=
pages
||
1
;
// console.log(this.groupList, 'list');
if
(
this
.
pageParam
.
search
!=
''
)
{
if
(
this
.
pageParam
.
groupName
!=
''
)
{
this
.
groupList
=
result
;
}
else
if
(
Array
.
isArray
(
result
))
{
this
.
groupList
=
this
.
groupList
.
concat
(
result
);
...
...
@@ -181,7 +182,7 @@ export default {
// 远程搜索
remoteMethod
(
query
)
{
if
(
query
!==
''
)
{
this
.
pageParam
.
search
=
query
;
this
.
pageParam
.
groupName
=
query
;
this
.
pageParam
.
pageNum
=
1
;
this
.
groupList
=
[];
this
.
searchGroup
();
...
...
@@ -194,66 +195,70 @@ export default {
this
.
remoteMethod
();
}
},
// 当前页变化
handleCurrentChange
(
val
)
{
this
.
welcomePage
.
currentPage
=
val
;
this
.
getWelcomeTable
();
},
// 选择欢迎语列表数据
getWelcomeTable
()
{
this
.
welcomeTableData
=
[
{
welcomeId
:
1
,
welcomeTitle
:
'标题标题标题'
,
welcomeContent
:
'欢迎语内容欢迎语内容欢迎语内容 欢迎语内容欢迎语内容欢迎语内容欢迎语内容欢迎语内容 欢迎语内容欢迎语内容'
,
welcomeEnclosure
:
{
img
:
'https://fuss10.elemecdn.com/e/5d/4a731a90594a4af544c0c25941171jpeg.jpeg'
,
imgName
:
'图片名称图片名称图片名称图片名称图片名称图片名称图片名称图片名称图片名称图片名称图片名称'
}
},
{
welcomeId
:
2
,
welcomeTitle
:
'标题标题标题'
,
welcomeContent
:
'内容房价还是大家开始的房价款'
,
welcomeEnclosure
:
{
img
:
''
,
imgName
:
'图片名称图片名称图片名称图片名称图片名称图片名称图片名称图片名称图片名称图片名称图片名称'
}
},
{
welcomeId
:
3
,
welcomeTitle
:
'标题标题标题'
,
welcomeContent
:
'内容房价还是大家开始的房价款'
,
welcomeEnclosure
:
{
img
:
''
,
imgName
:
'图片名称图片名称图片名称图片名称图片名称图片名称图片名称图片名称图片名称图片名称图片名称'
}
},
{
welcomeId
:
4
,
welcomeTitle
:
'标题标题标题'
,
welcomeContent
:
'内容房价还是大家开始的房价款'
,
welcomeEnclosure
:
{
img
:
''
,
imgName
:
'图片名称图片名称图片名称图片名称图片名称图片名称图片名称图片名称图片名称图片名称图片名称'
}
}
];
},
// 新建欢迎语
changeRoute
()
{
this
.
$router
.
push
({
path
:
'/salutatorySet'
});
},
getCurrentRow
(
row
)
{
// 获取选中数据 row表示选中这一行的数据,可以从里面提取所需要的值
this
.
templateSelection
=
row
;
this
.
welcomeContent
=
row
.
welcomeContent
;
this
.
form
.
welcomeId
=
row
.
welcomeId
;
},
//
//
当前页变化
//
handleCurrentChange(val) {
//
this.welcomePage.currentPage = val;
//
this.getWelcomeTable();
//
},
//
//
选择欢迎语列表数据
//
getWelcomeTable() {
//
this.welcomeTableData = [
//
{
//
welcomeId: 1,
//
welcomeTitle: '标题标题标题',
//
welcomeContent: '欢迎语内容欢迎语内容欢迎语内容 欢迎语内容欢迎语内容欢迎语内容欢迎语内容欢迎语内容 欢迎语内容欢迎语内容',
//
welcomeEnclosure: {
//
img: 'https://fuss10.elemecdn.com/e/5d/4a731a90594a4af544c0c25941171jpeg.jpeg',
//
imgName: '图片名称图片名称图片名称图片名称图片名称图片名称图片名称图片名称图片名称图片名称图片名称'
//
}
//
},
//
{
//
welcomeId: 2,
//
welcomeTitle: '标题标题标题',
//
welcomeContent: '内容房价还是大家开始的房价款',
//
welcomeEnclosure: {
//
img: '',
//
imgName: '图片名称图片名称图片名称图片名称图片名称图片名称图片名称图片名称图片名称图片名称图片名称'
//
}
//
},
//
{
//
welcomeId: 3,
//
welcomeTitle: '标题标题标题',
//
welcomeContent: '内容房价还是大家开始的房价款',
//
welcomeEnclosure: {
//
img: '',
//
imgName: '图片名称图片名称图片名称图片名称图片名称图片名称图片名称图片名称图片名称图片名称图片名称'
//
}
//
},
//
{
//
welcomeId: 4,
//
welcomeTitle: '标题标题标题',
//
welcomeContent: '内容房价还是大家开始的房价款',
//
welcomeEnclosure: {
//
img: '',
//
imgName: '图片名称图片名称图片名称图片名称图片名称图片名称图片名称图片名称图片名称图片名称图片名称'
//
}
//
}
//
];
//
},
//
//
新建欢迎语
//
changeRoute() {
//
this.$router.push({ path: '/salutatorySet' });
//
},
//
getCurrentRow(row) {
//
// 获取选中数据 row表示选中这一行的数据,可以从里面提取所需要的值
//
this.templateSelection = row;
//
this.welcomeContent = row.welcomeContent;
//
this.form.welcomeId = row.welcomeId;
//
},
// 保存按钮
sumbit
()
{
console
.
log
(
this
.
form
,
'form保存'
);
this
.
$emit
(
'sumbit'
,
this
.
form
);
save
()
{
this
.
$refs
.
form
.
validate
(
async
valid
=>
{
if
(
valid
)
{
console
.
log
(
this
.
form
,
'子组件'
);
this
.
$emit
(
'sumbit'
,
this
.
form
);
}
});
}
}
};
...
...
src/views/salesleads/components/dataDetail.vue
View file @
130f1a41
...
...
@@ -83,7 +83,8 @@ export default {
storeSearch
:
''
,
clerkSearch
:
''
,
pageNum
:
1
,
pageSize
:
20
pageSize
:
20
,
orderByField
:
''
},
dateDefault
:
[],
totalCount
:
0
,
...
...
@@ -197,8 +198,9 @@ export default {
// 排序
sortChange
(
column
,
prop
,
order
)
{
const
that
=
this
;
that
.
sortColumn
=
column
.
prop
;
that
.
sortColumn
=
column
.
prop
erty
;
that
.
sortType
=
column
.
order
==
'ascending'
?
'asc'
:
'desc'
;
that
.
pageParam
.
orderByField
=
[
that
.
sortColumn
,
that
.
sortType
];
that
.
getTableList
();
},
// 列表数据
...
...
src/views/salesleads/components/welcomesItem.vue
0 → 100644
View file @
130f1a41
<
template
>
<div>
<el-row>
<el-col
:span=
"17"
>
<el-form-item
label=
"活码类型"
>
<el-radio-group
v-model=
"welcomesType"
>
<el-radio
:label=
"1"
>
活码欢迎语
</el-radio>
<el-radio
:label=
"2"
>
不发送欢迎语
</el-radio>
</el-radio-group>
<ul
class=
"tabs"
v-if=
"welcomesType == 1"
>
<li>
1.下方的欢迎语取自【设置-欢迎语设置】中的“特殊欢迎语”;
</li>
<li>
2.配置“活码欢迎语”后,通过此活码添加好友后,系统自动推送此处所配置的欢迎语
</li>
<li>
(根据企业微信规则,若所添加的该成员在企业微信后台已经配置了欢迎语,那么会推送企微后台所配置的欢迎语,不会推送此处的欢迎语)
</li>
</ul>
<ul
class=
"tabs"
v-if=
"welcomesType == 2"
>
<li>
通过此活码添加好友后,系统不推送欢迎语,及时在【设置-欢迎语设置】中为该成员配置了欢迎语。
</li>
<li>
(根据企业微信规则,若所添加的该成员在企业微信后台已经配置了欢迎语,那么企微后台的欢迎语会照常推送)
</li>
</ul>
</el-form-item>
<el-form-item
label=
"选择欢迎语"
v-if=
"welcomesType == 1"
>
<div
class=
"welcomeTable"
>
<div
class=
"wtabTop"
>
<el-input
class=
"w260"
placeholder=
"请输入标题"
v-model=
"welcomePage.search"
></el-input>
<el-button
plain
class=
"ylbtn"
@
click=
"changeRoute"
>
新建欢迎语
</el-button>
</div>
<el-table
:data=
"welcomeTableData"
>
<el-table-column
width=
"55"
>
<template
slot-scope=
"scope"
>
<el-radio
:label=
"scope.$index"
@
change
.
native=
"getCurrentRow(scope.row)"
v-model=
"welcome"
>
</el-radio>
</
template
>
</el-table-column>
<el-table-column
prop=
"title"
label=
"标题"
width=
"158px"
></el-table-column>
<el-table-column
prop=
"welcomeContent"
label=
"内容"
show-overflow-tooltip
></el-table-column>
<el-table-column
label=
"附件"
width=
"212px"
show-overflow-tooltip
>
<
template
slot-scope=
"{ row }"
>
<div
class=
"enclosureBox"
>
<el-image
class=
"img"
:src=
"row.welcomeMediaList.mediaUrl"
>
<div
slot=
"error"
class=
"image-slot img"
>
<i
class=
"el-icon-picture-outline"
style=
"font-size:40px;"
></i>
</div>
</el-image>
<p>
{{
row
.
welcomeMediaList
.
mediaTitle
?
row
.
welcomeMediaList
.
mediaTitle
:
'--'
}}
</p>
</div>
</
template
>
</el-table-column>
</el-table>
<dm-pagination
class=
"paginationBox"
background
@
current-change=
"handleCurrentChange"
:current-page=
"welcomePage.pageNum"
layout=
" prev, pager, next "
:page-size=
"welcomePage.pageSize"
:total=
"totalNum"
>
</dm-pagination>
</div>
</el-form-item>
</el-col>
<el-col
:span=
"7"
v-if=
"welcomesType == 1 && welcomeContent != ''"
>
<p
class=
"welcomeTitle"
>
欢迎语预览
</p>
<previewWelcome
:welcomeContent=
"welcomeContent"
></previewWelcome>
</el-col>
</el-row>
</div>
</template>
<
script
>
import
previewWelcome
from
'@/components/preview-welcome.vue'
;
import
{
postJsonRequest
}
from
'@/api/api'
;
export
default
{
name
:
'welcomeItem'
,
components
:
{
previewWelcome
},
data
()
{
return
{
welcomesType
:
1
,
welcomeTableData
:
[],
welcome
:
''
,
welcomeContent
:
''
,
// 欢迎语参数
welcomePage
:
{
wxEnterpriseId
:
sessionStorage
.
getItem
(
'userInfos'
)
?
JSON
.
parse
(
sessionStorage
.
getItem
(
'userInfos'
)).
wxEnterpriseId
:
''
,
title
:
''
,
type
:
2
,
pageNum
:
1
,
pageSize
:
4
},
totalNum
:
1
,
welcomeId
:
''
,
templateSelection
:
{}
};
},
created
()
{
this
.
getWelcomeTable
();
},
methods
:
{
// 当前页变化
handleCurrentChange
(
val
)
{
this
.
welcomePage
.
pageNum
=
val
;
this
.
getWelcomeTable
();
},
// 选择欢迎语列表数据
async
getWelcomeTable
()
{
await
postJsonRequest
(
'/haoban-manage3-web/welcome/list'
,
this
.
welcomePage
).
then
(
res
=>
{
this
.
welcomeTableData
=
res
.
data
.
result
.
result
;
this
.
totalNum
=
res
.
data
.
result
.
totalCount
;
});
},
// 新建欢迎语
changeRoute
()
{
this
.
$router
.
push
({
path
:
'/salutatorySet'
});
},
getCurrentRow
(
row
)
{
// 获取选中数据 row表示选中这一行的数据,可以从里面提取所需要的值
this
.
templateSelection
=
row
;
this
.
welcomeContent
=
row
.
welcomeContent
;
this
.
welcomeId
=
row
.
welcomeId
;
}
}
};
</
script
>
<
style
lang=
"less"
scoped
>
.m20
{
margin
:
20px
;
}
.w340
{
width
:
340px
;
}
.mt20
{
margin-top
:
20px
;
}
.mt40b20
{
margin-top
:
40px
;
margin-bottom
:
20px
;
}
.mr15
{
margin-right
:
15px
;
}
.w260
{
width
:
260px
;
}
.tabs
{
font-size
:
12px
;
color
:
#909399
;
li
{
line-height
:
19px
;
}
}
.ylbtn
{
border
:
1px
solid
#2f54eb
;
color
:
#2f54eb
;
}
.addPic
{
font-size
:
14px
;
padding-right
:
4px
;
}
.welcomeTitle
{
text-align
:
center
;
margin-bottom
:
26px
;
margin-top
:
6px
;
font-weight
:
500
;
color
:
#303133
;
font-size
:
14px
;
}
.welcomeTable
{
width
:
720px
;
height
:
429px
;
border
:
1px
solid
#dcdfe6
;
padding
:
12px
;
position
:
relative
;
.wtabTop
{
display
:
flex
;
justify-content
:
space-between
;
margin-bottom
:
12px
;
}
.paginationBox
{
position
:
absolute
;
right
:
7px
;
bottom
:
0
;
margin-top
:
46px
;
margin-right
:
-4px
;
}
.enclosureBox
{
display
:
flex
;
align-items
:
center
;
.img
{
width
:
40px
;
height
:
40px
;
margin-right
:
10px
;
}
p
{
width
:
143px
;
max-width
:
143px
;
overflow
:
hidden
;
text-overflow
:
ellipsis
;
}
}
}
</
style
>
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