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
fdfe2b68
Commit
fdfe2b68
authored
Jul 21, 2022
by
shaojiawen
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'feature/act-code' of
http://git.gicdev.com/office/haoban-3
into feature/act-code
parents
18ddf7e0
cdf140de
Hide whitespace changes
Inline
Side-by-side
Showing
22 changed files
with
310 additions
and
186 deletions
+310
-186
button-code.js
menu-data/button-code.js
+11
-1
button-code.json
menu-data/button-code.json
+2
-2
api.js
src/api/api.js
+8
-8
index.vue
src/components/layout/index.vue
+2
-2
staffActCodeRouter.js
src/router/actCodeManageRouter/staffActCodeRouter.js
+11
-2
salutatory.vue
src/views/enterprise/salutatory.vue
+1
-1
detail.vue
...views/salesleads/actCodeManage/attractFlowLink/detail.vue
+29
-19
index.vue
src/views/salesleads/actCodeManage/attractFlowLink/index.vue
+3
-3
info.vue
src/views/salesleads/actCodeManage/attractFlowLink/info.vue
+21
-3
cardView.vue
...ds/actCodeManage/attractFlowLink/landingPage/cardView.vue
+4
-4
detail.vue
...eads/actCodeManage/attractFlowLink/landingPage/detail.vue
+21
-14
list.vue
...sleads/actCodeManage/attractFlowLink/landingPage/list.vue
+2
-1
newAddChart.vue
.../salesleads/actCodeManage/attractFlowLink/newAddChart.vue
+80
-0
actCodeDetail.vue
...s/salesleads/actCodeManage/staffActCode/actCodeDetail.vue
+2
-0
actCodeDetailStatistics.vue
...ds/actCodeManage/staffActCode/actCodeDetailStatistics.vue
+1
-1
act-code-table.vue
...leads/actCodeManage/staffActCode/views/act-code-table.vue
+46
-12
batchAddCode.vue
...esleads/actCodeManage/staffActCode/views/batchAddCode.vue
+2
-1
setActCode.vue
...alesleads/actCodeManage/staffActCode/views/setActCode.vue
+2
-1
act-code-set.vue
src/views/salesleads/components/act-code-set.vue
+13
-10
actCodeDetailInfo.vue
src/views/salesleads/components/actCodeDetailInfo.vue
+1
-1
dataDetail.vue
src/views/salesleads/components/dataDetail.vue
+1
-1
welcomesItem.vue
src/views/salesleads/components/welcomesItem.vue
+47
-99
No files found.
menu-data/button-code.js
View file @
fdfe2b68
...
@@ -322,6 +322,16 @@ module.exports = {
...
@@ -322,6 +322,16 @@ module.exports = {
adminList
:
{
adminList
:
{
// 1.刷新(按钮)
// 1.刷新(按钮)
refreshAdminList
:
[
'刷新'
,
1
,
2
]
refreshAdminList
:
[
'刷新'
,
1
,
2
]
}
}
,
// 按钮名称、是否受权限控制0否1是、是否增删改0:跳转 1:增删改 2:其他、按钮跳转路径
// 按钮名称、是否受权限控制0否1是、是否增删改0:跳转 1:增删改 2:其他、按钮跳转路径
actCode
:
{
addActCode
:
[
'新建活码'
,
1
,
0
],
batchActCode
:
[
'批量创建活码'
,
1
,
0
],
batchGroup
:
[
'批量分组'
,
1
,
1
],
dataActCode
:
[
'数据'
,
1
,
0
],
infoActCode
:
[
'详情'
,
1
,
0
],
editActCode
:
[
'编辑'
,
1
,
1
],
downActCode
:
[
'下载活码'
,
1
,
1
],
delActCode
:
[
'作废'
,
1
,
1
]
}
}
}
menu-data/button-code.json
View file @
fdfe2b68
{
"multipleAssign"
:
"multipleAssign"
,
"assign"
:
"assign"
,
"willSyncTag"
:
"willSyncTag"
,
"breakSyncTag"
:
"breakSyncTag"
,
"addShowRules"
:
"addShowRules"
,
"editShowRules"
:
"editShowRules"
,
"delShowRules"
:
"delShowRules"
,
"groupExpire"
:
"groupExpire"
,
"syncGroup"
:
"syncGroup"
,
"addGroupTemp"
:
"addGroupTemp"
,
"editGroupTemp"
:
"editGroupTemp"
,
"setStoreArea"
:
"setStoreArea"
,
"delGroupTemp"
:
"delGroupTemp"
,
"searchSetSave"
:
"searchSetSave"
,
"saveTrafficTaskSet"
:
"saveTrafficTaskSet"
,
"addCard"
:
"addCard"
,
"editCard"
:
"editCard"
,
"delCard"
:
"delCard"
,
"sendCardLog"
:
"sendCardLog"
,
"getCardLog"
:
"getCardLog"
,
"saveEvaluateSet"
:
"saveEvaluateSet"
,
"addMaterialGroup"
:
"addMaterialGroup"
,
"editMaterialGroup"
:
"editMaterialGroup"
,
"delMaterialGroup"
:
"delMaterialGroup"
,
"multipleDelAssets"
:
"multipleDelAssets"
,
"multipleMoveAssets"
:
"multipleMoveAssets"
,
"addText"
:
"addText"
,
"editText"
:
"editText"
,
"delText"
:
"delText"
,
"textAssignStore"
:
"textAssignStore"
,
"addImage"
:
"addImage"
,
"editImage"
:
"editImage"
,
"delImage"
:
"delImage"
,
"imageAssignStore"
:
"imageAssignStore"
,
"addWeb"
:
"addWeb"
,
"editWeb"
:
"editWeb"
,
"delWeb"
:
"delWeb"
,
"webAssignStore"
:
"webAssignStore"
,
"addVideo"
:
"addVideo"
,
"editVideo"
:
"editVideo"
,
"delVideo"
:
"delVideo"
,
"videoAssignStore"
:
"videoAssignStore"
,
"addFile"
:
"addFile"
,
"editFile"
:
"editFile"
,
"delFile"
:
"delFile"
,
"fileAssignStore"
:
"fileAssignStore"
,
"addApps"
:
"addApps"
,
"editApps"
:
"editApps"
,
"delApps"
:
"delApps"
,
"appsAssignStore"
:
"appsAssignStore"
,
"saveGoodsSet"
:
"saveGoodsSet"
,
"exportActiveUser"
:
"exportActiveUser"
,
"exportLoginUser"
:
"exportLoginUser"
,
"exportAreaLoginUser"
:
"exportAreaLoginUser"
,
"multipleDelReport"
:
"multipleDelReport"
,
"exportReport"
:
"exportReport"
,
"reportDetail"
:
"reportDetail"
,
"multipleDelReportDetail"
:
"multipleDelReportDetail"
,
"delReportDetail"
:
"delReportDetail"
,
"showReportDetail"
:
"showReportDetail"
,
"multipleExportReport"
:
"multipleExportReport"
,
"saveTaskSet"
:
"saveTaskSet"
,
"settingSystemReport"
:
"settingSystemReport"
,
"saveSystemReport"
:
"saveSystemReport"
,
"addCustomReport"
:
"addCustomReport"
,
"copyCustomReport"
:
"copyCustomReport"
,
"editCustomReport"
:
"editCustomReport"
,
"delCustomReport"
:
"delCustomReport"
,
"monthTarget"
:
"monthTarget"
,
"dayTarget"
:
"dayTarget"
,
"exportMonthTask"
:
"exportMonthTask"
,
"checkMonthTask"
:
"checkMonthTask"
,
"multipleDelTask"
:
"multipleDelTask"
,
"delTask"
:
"delTask"
,
"exportStoreList"
:
"exportStoreList"
,
"checkStoreList"
:
"checkStoreList"
,
"exportStoreDetail"
:
"exportStoreDetail"
,
"checkStoreDetail"
:
"checkStoreDetail"
,
"exportStoreDetailPop"
:
"exportStoreDetailPop"
,
"previewStoreDetail"
:
"previewStoreDetail"
,
"exportGrTaskList"
:
"exportGrTaskList"
,
"checkGrTaskList"
:
"checkGrTaskList"
,
"exportTaskRecord"
:
"exportTaskRecord"
,
"multipleDelTaskRecord"
:
"multipleDelTaskRecord"
,
"checkTaskRecord"
:
"checkTaskRecord"
,
"exportTaskDetail"
:
"exportTaskDetail"
,
"multipleDelTaskDetail"
:
"multipleDelTaskDetail"
,
"delTaskDetail"
:
"delTaskDetail"
,
"resolveTaskDetail"
:
"resolveTaskDetail"
,
"previewTaskDetail"
:
"previewTaskDetail"
,
"exportTaskView"
:
"exportTaskView"
,
"multipleDelTaskView"
:
"multipleDelTaskView"
,
"checkTaskView"
:
"checkTaskView"
,
"exportTaskViewDetail"
:
"exportTaskViewDetail"
,
"multipleDelTaskViewDetail"
:
"multipleDelTaskViewDetail"
,
"checkTaskDetail"
:
"checkTaskDetail"
,
"addSalutatory"
:
"addSalutatory"
,
"editSalutatory"
:
"editSalutatory"
,
"delSalutatory"
:
"delSalutatory"
,
"multipleResolve"
:
"multipleResolve"
,
"singleResolve"
:
"singleResolve"
,
"singleReject"
:
"singleReject"
,
"saveApplySetting"
:
"saveApplySetting"
,
"refreshStoreMember"
:
"refreshStoreMember"
,
"exportContact"
:
"exportContact"
,
"checkContactDetail"
:
"checkContactDetail"
,
"checkContactMemberDetail"
:
"checkContactMemberDetail"
,
"checkLog"
:
"checkLog"
,
"saveGuideSetting"
:
"saveGuideSetting"
,
"saveAppsVisible"
:
"saveAppsVisible"
,
"refreshStoreInfo"
:
"refreshStoreInfo"
,
"saveMemberSecret"
:
"saveMemberSecret"
,
"addMemberAppsSecret"
:
"addMemberAppsSecret"
,
"editMemberAppsSecret"
:
"editMemberAppsSecret"
,
"delMemberAppsSecret"
:
"delMemberAppsSecret"
,
"addAppsSecret"
:
"addAppsSecret"
,
"getAppsSecret"
:
"getAppsSecret"
,
"editAppsSecret"
:
"editAppsSecret"
,
"delAppsSecret"
:
"delAppsSecret"
,
"checkAuth"
:
"checkAuth"
,
"bindStoreList"
:
"bindStoreList"
,
"refreshStore"
:
"refreshStore"
,
"refreshAdminList"
:
"refreshAdminList"
}
{
"multipleAssign"
:
"multipleAssign"
,
"assign"
:
"assign"
,
"willSyncTag"
:
"willSyncTag"
,
"breakSyncTag"
:
"breakSyncTag"
,
"addShowRules"
:
"addShowRules"
,
"editShowRules"
:
"editShowRules"
,
"delShowRules"
:
"delShowRules"
,
"groupExpire"
:
"groupExpire"
,
"syncGroup"
:
"syncGroup"
,
"addGroupTemp"
:
"addGroupTemp"
,
"editGroupTemp"
:
"editGroupTemp"
,
"setStoreArea"
:
"setStoreArea"
,
"delGroupTemp"
:
"delGroupTemp"
,
"searchSetSave"
:
"searchSetSave"
,
"saveTrafficTaskSet"
:
"saveTrafficTaskSet"
,
"addCard"
:
"addCard"
,
"editCard"
:
"editCard"
,
"delCard"
:
"delCard"
,
"sendCardLog"
:
"sendCardLog"
,
"getCardLog"
:
"getCardLog"
,
"saveEvaluateSet"
:
"saveEvaluateSet"
,
"addMaterialGroup"
:
"addMaterialGroup"
,
"editMaterialGroup"
:
"editMaterialGroup"
,
"delMaterialGroup"
:
"delMaterialGroup"
,
"multipleDelAssets"
:
"multipleDelAssets"
,
"multipleMoveAssets"
:
"multipleMoveAssets"
,
"addText"
:
"addText"
,
"editText"
:
"editText"
,
"delText"
:
"delText"
,
"textAssignStore"
:
"textAssignStore"
,
"addImage"
:
"addImage"
,
"editImage"
:
"editImage"
,
"delImage"
:
"delImage"
,
"imageAssignStore"
:
"imageAssignStore"
,
"addWeb"
:
"addWeb"
,
"editWeb"
:
"editWeb"
,
"delWeb"
:
"delWeb"
,
"webAssignStore"
:
"webAssignStore"
,
"addVideo"
:
"addVideo"
,
"editVideo"
:
"editVideo"
,
"delVideo"
:
"delVideo"
,
"videoAssignStore"
:
"videoAssignStore"
,
"addFile"
:
"addFile"
,
"editFile"
:
"editFile"
,
"delFile"
:
"delFile"
,
"fileAssignStore"
:
"fileAssignStore"
,
"addApps"
:
"addApps"
,
"editApps"
:
"editApps"
,
"delApps"
:
"delApps"
,
"appsAssignStore"
:
"appsAssignStore"
,
"saveGoodsSet"
:
"saveGoodsSet"
,
"exportActiveUser"
:
"exportActiveUser"
,
"exportLoginUser"
:
"exportLoginUser"
,
"exportAreaLoginUser"
:
"exportAreaLoginUser"
,
"multipleDelReport"
:
"multipleDelReport"
,
"exportReport"
:
"exportReport"
,
"reportDetail"
:
"reportDetail"
,
"multipleDelReportDetail"
:
"multipleDelReportDetail"
,
"delReportDetail"
:
"delReportDetail"
,
"showReportDetail"
:
"showReportDetail"
,
"multipleExportReport"
:
"multipleExportReport"
,
"saveTaskSet"
:
"saveTaskSet"
,
"settingSystemReport"
:
"settingSystemReport"
,
"saveSystemReport"
:
"saveSystemReport"
,
"addCustomReport"
:
"addCustomReport"
,
"copyCustomReport"
:
"copyCustomReport"
,
"editCustomReport"
:
"editCustomReport"
,
"delCustomReport"
:
"delCustomReport"
,
"monthTarget"
:
"monthTarget"
,
"dayTarget"
:
"dayTarget"
,
"exportMonthTask"
:
"exportMonthTask"
,
"checkMonthTask"
:
"checkMonthTask"
,
"multipleDelTask"
:
"multipleDelTask"
,
"delTask"
:
"delTask"
,
"exportStoreList"
:
"exportStoreList"
,
"checkStoreList"
:
"checkStoreList"
,
"exportStoreDetail"
:
"exportStoreDetail"
,
"checkStoreDetail"
:
"checkStoreDetail"
,
"exportStoreDetailPop"
:
"exportStoreDetailPop"
,
"previewStoreDetail"
:
"previewStoreDetail"
,
"exportGrTaskList"
:
"exportGrTaskList"
,
"checkGrTaskList"
:
"checkGrTaskList"
,
"exportTaskRecord"
:
"exportTaskRecord"
,
"multipleDelTaskRecord"
:
"multipleDelTaskRecord"
,
"checkTaskRecord"
:
"checkTaskRecord"
,
"exportTaskDetail"
:
"exportTaskDetail"
,
"multipleDelTaskDetail"
:
"multipleDelTaskDetail"
,
"delTaskDetail"
:
"delTaskDetail"
,
"resolveTaskDetail"
:
"resolveTaskDetail"
,
"previewTaskDetail"
:
"previewTaskDetail"
,
"exportTaskView"
:
"exportTaskView"
,
"multipleDelTaskView"
:
"multipleDelTaskView"
,
"checkTaskView"
:
"checkTaskView"
,
"exportTaskViewDetail"
:
"exportTaskViewDetail"
,
"multipleDelTaskViewDetail"
:
"multipleDelTaskViewDetail"
,
"checkTaskDetail"
:
"checkTaskDetail"
,
"addSalutatory"
:
"addSalutatory"
,
"editSalutatory"
:
"editSalutatory"
,
"delSalutatory"
:
"delSalutatory"
,
"multipleResolve"
:
"multipleResolve"
,
"singleResolve"
:
"singleResolve"
,
"singleReject"
:
"singleReject"
,
"saveApplySetting"
:
"saveApplySetting"
,
"refreshStoreMember"
:
"refreshStoreMember"
,
"exportContact"
:
"exportContact"
,
"checkContactDetail"
:
"checkContactDetail"
,
"checkContactMemberDetail"
:
"checkContactMemberDetail"
,
"checkLog"
:
"checkLog"
,
"saveGuideSetting"
:
"saveGuideSetting"
,
"saveAppsVisible"
:
"saveAppsVisible"
,
"refreshStoreInfo"
:
"refreshStoreInfo"
,
"saveMemberSecret"
:
"saveMemberSecret"
,
"addMemberAppsSecret"
:
"addMemberAppsSecret"
,
"editMemberAppsSecret"
:
"editMemberAppsSecret"
,
"delMemberAppsSecret"
:
"delMemberAppsSecret"
,
"addAppsSecret"
:
"addAppsSecret"
,
"getAppsSecret"
:
"getAppsSecret"
,
"editAppsSecret"
:
"editAppsSecret"
,
"delAppsSecret"
:
"delAppsSecret"
,
"checkAuth"
:
"checkAuth"
,
"bindStoreList"
:
"bindStoreList"
,
"refreshStore"
:
"refreshStore"
,
"refreshAdminList"
:
"refreshAdminList"
,
"addActCode"
:
"addActCode"
,
"batchActCode"
:
"batchActCode"
,
"batchGroup"
:
"batchGroup"
,
"dataActCode"
:
"dataActCode"
,
"infoActCode"
:
"infoActCode"
,
"editActCode"
:
"editActCode"
,
"downActCode"
:
"downActCode"
,
"delActCode"
:
"delActCode"
}
\ No newline at end of file
\ No newline at end of file
src/api/api.js
View file @
fdfe2b68
...
@@ -91,14 +91,14 @@ Vue.axios.interceptors.response.use(
...
@@ -91,14 +91,14 @@ Vue.axios.interceptors.response.use(
return
data
;
return
data
;
},
},
err
=>
{
err
=>
{
//
if (err.response.status == 502) {
if
(
err
.
response
.
status
==
502
)
{
//
window.location.href = gicHost + '/gic-web/#/login?ishb=1';
window
.
location
.
href
=
gicHost
+
'/gic-web/#/login?ishb=1'
;
//
Message.error({ message: '服务异常⊙﹏⊙∥' });
Message
.
error
({
message
:
'服务异常⊙﹏⊙∥'
});
//
}
}
//
if (err.response.status != 403) {
if
(
err
.
response
.
status
!=
403
)
{
//
window.location.href = gicHost + '/gic-web/#/login?ishb=1';
window
.
location
.
href
=
gicHost
+
'/gic-web/#/login?ishb=1'
;
//
Message.error({ message: '登录失效!' });
Message
.
error
({
message
:
'登录失效!'
});
//
}
}
return
Promise
.
resolve
(
err
);
return
Promise
.
resolve
(
err
);
}
}
);
);
...
...
src/components/layout/index.vue
View file @
fdfe2b68
...
@@ -8,9 +8,9 @@
...
@@ -8,9 +8,9 @@
<!-- 页面内容 -->
<!-- 页面内容 -->
<!--
<router-view
v-if=
"activeBrand"
:brandId=
"activeBrand"
:activeGroupId=
"activeGroup"
:tabType=
"activeTab"
@
showTab=
"showTab"
></router-view>
-->
<!--
<router-view
v-if=
"activeBrand"
:brandId=
"activeBrand"
:activeGroupId=
"activeGroup"
:tabType=
"activeTab"
@
showTab=
"showTab"
></router-view>
-->
<keep-alive>
<keep-alive>
<router-view
:brand-id=
"enterpriseId"
v-if=
"$route.meta.keepAlive"
></router-view>
<router-view
:brand-id=
"enterpriseId"
:key=
"$route.path"
v-if=
"$route.meta.keepAlive"
></router-view>
</keep-alive>
</keep-alive>
<router-view
v-if=
"!$route.meta.keepAlive"
:brand-id=
"enterpriseId"
></router-view>
<router-view
v-if=
"!$route.meta.keepAlive"
:
key=
"$route.path"
:
brand-id=
"enterpriseId"
></router-view>
</div>
</div>
</div>
</div>
</div>
</div>
...
...
src/router/actCodeManageRouter/staffActCodeRouter.js
View file @
fdfe2b68
...
@@ -4,7 +4,11 @@ const staffActCodeRouter = [
...
@@ -4,7 +4,11 @@ const staffActCodeRouter = [
{
{
path
:
'/staffActCode'
,
path
:
'/staffActCode'
,
name
:
'员工活码'
,
name
:
'员工活码'
,
component
:
_import
(
'salesleads/actCodeManage/staffActCode'
,
'index'
)
component
:
_import
(
'salesleads/actCodeManage/staffActCode'
,
'index'
),
meta
:
{
keepAlive
:
true
,
fromPath
:
[
'/actCodeAdd'
,
'/actCodeEdit'
,
'/actCodeBatch'
,
'/actCodeDetail'
]
}
},
},
{
{
path
:
'/actCodeRecord'
,
path
:
'/actCodeRecord'
,
...
@@ -13,7 +17,12 @@ const staffActCodeRouter = [
...
@@ -13,7 +17,12 @@ const staffActCodeRouter = [
},
},
{
{
path
:
'/actCodeDetail'
,
path
:
'/actCodeDetail'
,
name
:
'活码详情'
,
name
:
'活码详情-数据'
,
component
:
_import
(
'salesleads/actCodeManage/staffActCode'
,
'actCodeDetail'
)
},
{
path
:
'/actCodeDetails'
,
name
:
'活码详情-详情'
,
component
:
_import
(
'salesleads/actCodeManage/staffActCode'
,
'actCodeDetail'
)
component
:
_import
(
'salesleads/actCodeManage/staffActCode'
,
'actCodeDetail'
)
},
},
{
{
...
...
src/views/enterprise/salutatory.vue
View file @
fdfe2b68
...
@@ -248,7 +248,7 @@ export default {
...
@@ -248,7 +248,7 @@ export default {
this
.
welcomeId
=
item
.
welcomeId
;
this
.
welcomeId
=
item
.
welcomeId
;
},
},
goLinkDetail
(
row
)
{
goLinkDetail
(
row
)
{
console
.
log
(
row
)
;
this
.
dialogVisible
=
false
;
if
(
row
.
type
==
2
)
{
if
(
row
.
type
==
2
)
{
this
.
$router
.
push
(
'/actCodeDetail?hmId='
+
row
.
referId
);
this
.
$router
.
push
(
'/actCodeDetail?hmId='
+
row
.
referId
);
}
else
{
}
else
{
...
...
src/views/salesleads/actCodeManage/attractFlowLink/detail.vue
View file @
fdfe2b68
<
template
>
<
template
>
<div
class=
"p-20"
>
<div
class=
"p-20"
v-loading=
"loading"
>
<el-form
label-width=
"100px"
:model=
"form"
size=
"small"
:rules=
"rules"
ref=
"form"
>
<el-form
label-width=
"100px"
:model=
"form"
size=
"small"
:rules=
"rules"
ref=
"form"
>
<dm-sub-title
type=
"line"
>
基础信息
</dm-sub-title>
<dm-sub-title
type=
"line"
>
基础信息
</dm-sub-title>
<div
class=
"section"
>
<div
class=
"section"
>
...
@@ -102,7 +102,7 @@
...
@@ -102,7 +102,7 @@
</div>
</div>
<dm-sub-title
type=
"line"
>
欢迎语设置
</dm-sub-title>
<dm-sub-title
type=
"line"
>
欢迎语设置
</dm-sub-title>
<div
class=
"section"
>
<div
class=
"section"
>
<welcomeItem
@
getWelcomeId=
"getWelcomeId"
:welcomeIdP=
"form.welcomeId"
ref=
"welcomeItem"
:welcomeTyp
e=
"link"
></welcomeItem>
<welcomeItem
:welcomeId
.
sync=
"form.welcomeId"
:welcomeType
.
sync=
"welcomeType"
ref=
"welcomeItem"
welcomeNam
e=
"link"
></welcomeItem>
</div>
</div>
<dm-sub-title
type=
"line"
>
落地页配置
</dm-sub-title>
<dm-sub-title
type=
"line"
>
落地页配置
</dm-sub-title>
<div
class=
"section flex"
style=
"margin-bottom: 40px;"
>
<div
class=
"section flex"
style=
"margin-bottom: 40px;"
>
...
@@ -162,8 +162,9 @@ export default {
...
@@ -162,8 +162,9 @@ export default {
pageNum
:
1
,
pageNum
:
1
,
pageSize
:
20
pageSize
:
20
},
},
link
:
'link'
,
welcomeType
:
1
,
landingLoading
:
false
,
landingLoading
:
false
,
loading
:
false
,
landingData
:
[],
landingData
:
[],
total
:
0
,
total
:
0
,
landingForm
:
{},
landingForm
:
{},
...
@@ -264,25 +265,33 @@ export default {
...
@@ -264,25 +265,33 @@ export default {
});
});
},
},
getDetail
()
{
getDetail
()
{
linkDetail
({
linkId
:
this
.
$route
.
params
.
id
}).
then
(
res
=>
{
this
.
loading
=
true
;
const
{
result
}
=
res
.
data
;
linkDetail
({
linkId
:
this
.
$route
.
params
.
id
})
if
(
result
)
{
.
then
(
res
=>
{
const
{
link
,
page
}
=
result
;
const
{
result
}
=
res
.
data
;
link
.
customRuleJson
=
JSON
.
parse
(
link
.
customRuleJson
);
if
(
result
)
{
link
.
storeRuleJson
=
JSON
.
parse
(
link
.
storeRuleJson
);
const
{
link
,
page
}
=
result
;
link
.
storeList
=
link
.
storeList
?
link
.
storeList
:
[];
link
.
customRuleJson
=
JSON
.
parse
(
link
.
customRuleJson
);
this
.
form
=
link
;
link
.
storeRuleJson
=
JSON
.
parse
(
link
.
storeRuleJson
);
this
.
landingForm
=
page
;
link
.
storeList
=
link
.
storeList
?
link
.
storeList
:
[];
this
.
getStoreList
();
this
.
form
=
link
;
}
if
(
!
this
.
form
.
welcomeId
)
{
console
.
log
(
result
);
this
.
welcomeType
=
2
;
});
}
this
.
landingForm
=
page
;
this
.
getStoreList
();
}
})
.
finally
(
_
=>
{
this
.
loading
=
false
;
});
},
},
saveTagPop
(
data
)
{
saveTagPop
(
data
)
{
const
{
tagItemId
,
tagItemName
}
=
data
;
const
{
tagItemId
,
tagItemName
}
=
data
;
this
.
form
.
memberLabelName
=
tagItemName
;
this
.
form
.
memberLabelName
=
tagItemName
;
this
.
form
.
memberLabelId
=
tagItemId
;
this
.
form
.
memberLabelId
=
tagItemId
;
this
.
form
.
memberLabelStatus
=
1
;
this
.
form
.
memberLabelStatus
=
1
;
this
.
$refs
.
form
.
validateField
(
'memberLabelId'
);
},
},
handleTagCloseTag
()
{
handleTagCloseTag
()
{
this
.
form
.
memberLabelName
=
''
;
this
.
form
.
memberLabelName
=
''
;
...
@@ -293,9 +302,7 @@ export default {
...
@@ -293,9 +302,7 @@ export default {
this
.
form
.
storeList
=
val
;
this
.
form
.
storeList
=
val
;
this
.
$refs
.
form
.
validateField
(
'storeList'
);
this
.
$refs
.
form
.
validateField
(
'storeList'
);
},
},
getWelcomeId
(
e
)
{
this
.
form
.
welcomeId
=
e
;
},
getList
()
{
getList
()
{
this
.
landingLoading
=
true
;
this
.
landingLoading
=
true
;
guidePageList
(
this
.
landingPage
)
guidePageList
(
this
.
landingPage
)
...
@@ -353,6 +360,9 @@ export default {
...
@@ -353,6 +360,9 @@ export default {
data
.
storeRuleJson
=
JSON
.
stringify
(
data
.
storeRuleJson
);
data
.
storeRuleJson
=
JSON
.
stringify
(
data
.
storeRuleJson
);
data
.
customRuleJson
=
JSON
.
stringify
(
data
.
customRuleJson
);
data
.
customRuleJson
=
JSON
.
stringify
(
data
.
customRuleJson
);
data
.
wxEnterpriseId
=
this
.
wxEnterpriseId
;
data
.
wxEnterpriseId
=
this
.
wxEnterpriseId
;
if
(
this
.
welcomeType
==
2
)
{
data
.
welcomeId
=
''
;
}
delete
data
.
memberLabelStatus
;
delete
data
.
memberLabelStatus
;
this
.
$refs
.
form
.
validate
(
val
=>
{
this
.
$refs
.
form
.
validate
(
val
=>
{
if
(
!
val
)
{
if
(
!
val
)
{
...
...
src/views/salesleads/actCodeManage/attractFlowLink/index.vue
View file @
fdfe2b68
...
@@ -11,7 +11,7 @@
...
@@ -11,7 +11,7 @@
<div
class=
"flex flex-space-between m-b-16"
>
<div
class=
"flex flex-space-between m-b-16"
>
<div
class=
"flex flex-align-center"
>
<div
class=
"flex flex-align-center"
>
<el-input
placeholder=
"请输入
模板
ID/名称、创建人"
class=
"w-260"
v-model=
"form.searchParams"
@
keyup
.
native=
"value => toInput(value, searchInput)"
clearable
@
clear=
"getList"
>
<i
slot=
"prefix"
class=
"el-input__icon el-icon-search"
></i>
</el-input>
<el-input
placeholder=
"请输入
链接
ID/名称、创建人"
class=
"w-260"
v-model=
"form.searchParams"
@
keyup
.
native=
"value => toInput(value, searchInput)"
clearable
@
clear=
"getList"
>
<i
slot=
"prefix"
class=
"el-input__icon el-icon-search"
></i>
</el-input>
<el-select
class=
"m-l-10 w-160"
v-model=
"form.linkType"
placeholder=
"全部类型"
@
change=
"getList"
clearable
@
clear=
"clear"
>
<el-select
class=
"m-l-10 w-160"
v-model=
"form.linkType"
placeholder=
"全部类型"
@
change=
"getList"
clearable
@
clear=
"clear"
>
<el-option
v-for=
"item in options"
:key=
"item.key"
:label=
"item.label"
:value=
"item.key"
>
</el-option>
<el-option
v-for=
"item in options"
:key=
"item.key"
:label=
"item.label"
:value=
"item.key"
>
</el-option>
</el-select>
</el-select>
...
@@ -92,11 +92,11 @@ const tableHead = [
...
@@ -92,11 +92,11 @@ const tableHead = [
},
},
{
{
label
:
'今日点击人次'
,
label
:
'今日点击人次'
,
prop
:
'click
Num
'
,
prop
:
'click
Times
'
,
width
:
'130'
,
width
:
'130'
,
sortable
:
'custom'
,
sortable
:
'custom'
,
formatter
:
function
(
row
)
{
formatter
:
function
(
row
)
{
return
`<span>
${
row
.
click
Num
?
row
.
clickNum
:
'- -'
}
</span>`
;
return
`<span>
${
row
.
click
Times
?
row
.
clickTimes
:
'- -'
}
</span>`
;
}
}
},
},
{
{
...
...
src/views/salesleads/actCodeManage/attractFlowLink/info.vue
View file @
fdfe2b68
...
@@ -25,7 +25,7 @@
...
@@ -25,7 +25,7 @@
</div>
</div>
</div>
</div>
</div>
</div>
<div
class=
"fixed-tab"
v-if=
"scrollTop >
300
"
>
<div
class=
"fixed-tab"
v-if=
"scrollTop >
= fixedHeight
"
>
<el-tabs
v-model=
"activeName"
type=
"card"
>
<el-tabs
v-model=
"activeName"
type=
"card"
>
<el-tab-pane
label=
"详情信息"
name=
"first"
>
<div></div>
</el-tab-pane>
<el-tab-pane
label=
"详情信息"
name=
"first"
>
<div></div>
</el-tab-pane>
<el-tab-pane
label=
"数据统计"
name=
"second"
>
<el-tab-pane
label=
"数据统计"
name=
"second"
>
...
@@ -76,7 +76,7 @@
...
@@ -76,7 +76,7 @@
<ul
class=
"datebox"
v-for=
"(lis, index) in dateLis"
:key=
"lis.key"
>
<ul
class=
"datebox"
v-for=
"(lis, index) in dateLis"
:key=
"lis.key"
>
<li
:class=
"dateKey == index ? 'activeClass' : 'noActive'"
class=
"dateLisBox"
@
click=
"btnChange(index)"
>
{{
lis
.
value
}}
</li>
<li
:class=
"dateKey == index ? 'activeClass' : 'noActive'"
class=
"dateLisBox"
@
click=
"btnChange(index)"
>
{{
lis
.
value
}}
</li>
</ul>
</ul>
<el-date-picker
class=
"w256"
v-model=
"dateDefault"
type=
"daterange"
range-separator=
"~"
start-placeholder=
"创建开始日期"
end-placeholder=
"创建结束日期"
:default-time=
"['00:00:00', '23:59:59']"
:picker-options=
"pickerOptions()"
@
change=
"onDateChange"
value-format=
"yyyy-MM-dd"
>
</el-date-picker>
<el-date-picker
class=
"w256"
v-model=
"dateDefault"
type=
"daterange"
range-separator=
"~"
start-placeholder=
"创建开始日期"
end-placeholder=
"创建结束日期"
:default-time=
"['00:00:00', '23:59:59']"
:picker-options=
"pickerOptions()"
@
change=
"onDateChange"
value-format=
"yyyy-MM-dd"
:clearable=
"false"
>
</el-date-picker>
</div>
</div>
</div>
</div>
<new-add-chart
:charData=
"charData"
id=
"new-add-chart"
style=
"margin-top:26px"
></new-add-chart>
<new-add-chart
:charData=
"charData"
id=
"new-add-chart"
style=
"margin-top:26px"
></new-add-chart>
...
@@ -115,6 +115,7 @@ export default {
...
@@ -115,6 +115,7 @@ export default {
mixins
:
[
mixin
],
mixins
:
[
mixin
],
data
()
{
data
()
{
return
{
return
{
fixedHeight
:
280
,
filters
,
filters
,
statisticsClerk
,
statisticsClerk
,
loading
:
false
,
loading
:
false
,
...
@@ -195,6 +196,21 @@ export default {
...
@@ -195,6 +196,21 @@ export default {
statisticsChart
(
para
).
then
(
res
=>
{
statisticsChart
(
para
).
then
(
res
=>
{
const
{
result
}
=
res
.
data
;
const
{
result
}
=
res
.
data
;
this
.
charData
=
result
;
this
.
charData
=
result
;
// this.charData = [
// { addNum: 1, bizDate: '2021-07', clickNum: 3, clickTimes: 0 },
// { addNum: 2, bizDate: '2021-08', clickNum: 30, clickTimes: 10 },
// { addNum: 3, bizDate: '2021-09', clickNum: 40, clickTimes: 0 },
// { addNum: 4, bizDate: '2021-10', clickNum: 3, clickTimes: 40 },
// { addNum: 5, bizDate: '2021-11', clickNum: 3, clickTimes: 0 },
// { addNum: 6, bizDate: '2021-12', clickNum: 3, clickTimes: 20 },
// { addNum: 0, bizDate: '2022-01', clickNum: 30, clickTimes: 20 },
// { addNum: 6, bizDate: '2022-02', clickNum: 30, clickTimes: 0 },
// { addNum: 4, bizDate: '2022-03', clickNum: 20, clickTimes: 30 },
// { addNum: 4, bizDate: '2022-04', clickNum: 203, clickTimes: 0 },
// { addNum: 4, bizDate: '2022-05', clickNum: 20, clickTimes: 10 },
// { addNum: 4, bizDate: '2022-06', clickNum: 20, clickTimes: 0 },
// { addNum: 4, bizDate: '2022-07', clickNum: 10, clickTimes: 10 }
// ];
});
});
},
},
statisticsTotal
()
{
statisticsTotal
()
{
...
@@ -261,6 +277,7 @@ export default {
...
@@ -261,6 +277,7 @@ export default {
this
.
getDetail
();
this
.
getDetail
();
this
.
getChartList
();
this
.
getChartList
();
this
.
statisticsTotal
();
this
.
statisticsTotal
();
this
.
btnChange
(
0
);
document
.
getElementById
(
'hb-layout-pager-one'
).
addEventListener
(
'scroll'
,
this
.
scrollMethod
);
document
.
getElementById
(
'hb-layout-pager-one'
).
addEventListener
(
'scroll'
,
this
.
scrollMethod
);
},
},
destroyed
()
{
destroyed
()
{
...
@@ -277,11 +294,12 @@ export default {
...
@@ -277,11 +294,12 @@ export default {
.fixed-tab
{
.fixed-tab
{
position
:
absolute
;
position
:
absolute
;
top
:
8
0px
;
top
:
11
0px
;
z-index
:
1
;
z-index
:
1
;
padding-bottom
:
0
;
padding-bottom
:
0
;
height
:
40px
;
height
:
40px
;
background
:
white
;
background
:
white
;
width
:
calc
(
100%
-
180px
);
}
}
.welcome-left-view
{
.welcome-left-view
{
width
:
639px
;
width
:
639px
;
...
...
src/views/salesleads/actCodeManage/attractFlowLink/landingPage/cardView.vue
View file @
fdfe2b68
...
@@ -21,7 +21,7 @@
...
@@ -21,7 +21,7 @@
<span
class=
"pageTitle"
>
{{
card
.
pageTitle
}}
</span>
<span
class=
"pageTitle"
>
{{
card
.
pageTitle
}}
</span>
<img
src=
"@/assets/iphone-head.png"
/>
<img
src=
"@/assets/iphone-head.png"
/>
<div
class=
"content"
>
<div
class=
"content"
>
<img
:src=
"card.pageBackgrou
dImg"
v-show=
"card.pageBackgrou
dImg"
class=
"bgImg"
/>
<img
:src=
"card.pageBackgrou
ndImg"
v-show=
"card.pageBackgroun
dImg"
class=
"bgImg"
/>
<div
class=
"enterpriseInfo"
>
<div
class=
"enterpriseInfo"
>
<div
class=
"logo"
>
<div
class=
"logo"
>
<img
:src=
"card.merchantLogo"
/>
<img
:src=
"card.merchantLogo"
/>
...
@@ -52,7 +52,7 @@ export default {
...
@@ -52,7 +52,7 @@ export default {
merchantName
:
''
,
merchantName
:
''
,
merchantPhoneNumber
:
''
,
merchantPhoneNumber
:
''
,
merchantLogo
:
''
,
merchantLogo
:
''
,
pageBackgroudImg
:
''
,
pageBackgrou
n
dImg
:
''
,
guideComment
:
''
guideComment
:
''
}
}
};
};
...
@@ -68,8 +68,8 @@ export default {
...
@@ -68,8 +68,8 @@ export default {
content
:
{
content
:
{
handler
(
val
)
{
handler
(
val
)
{
if
(
val
)
{
if
(
val
)
{
const
{
pageName
,
pageCode
,
pageId
,
pageTitle
,
merchantName
,
merchantPhoneNumber
,
merchantLogo
,
pageBackgroudImg
,
guideComment
,
createorName
,
createTime
}
=
val
;
const
{
pageName
,
pageCode
,
pageId
,
pageTitle
,
merchantName
,
merchantPhoneNumber
,
merchantLogo
,
pageBackgrou
n
dImg
,
guideComment
,
createorName
,
createTime
}
=
val
;
this
.
card
=
{
pageName
,
pageCode
,
pageId
,
pageTitle
,
merchantName
,
merchantPhoneNumber
,
merchantLogo
,
pageBackgroudImg
,
guideComment
,
createorName
,
createTime
};
this
.
card
=
{
pageName
,
pageCode
,
pageId
,
pageTitle
,
merchantName
,
merchantPhoneNumber
,
merchantLogo
,
pageBackgrou
n
dImg
,
guideComment
,
createorName
,
createTime
};
}
}
},
},
immediate
:
true
immediate
:
true
...
...
src/views/salesleads/actCodeManage/attractFlowLink/landingPage/detail.vue
View file @
fdfe2b68
<
template
>
<
template
>
<div>
<div>
<div
class=
"daily-set-content"
>
<div
class=
"daily-set-content"
v-loading=
"loading"
>
<el-form
label-width=
"100px"
ref=
"form"
:model=
"form"
:rules=
"rules"
class=
"form"
>
<el-form
label-width=
"100px"
ref=
"form"
:model=
"form"
:rules=
"rules"
class=
"form"
>
<el-form-item
label=
"模板名称"
prop=
"pageName"
required
>
<el-form-item
label=
"模板名称"
prop=
"pageName"
>
<el-input
show-word-limit
placeholder=
"请输入模板名称"
type=
"text"
v-model=
"form.pageName"
maxlength=
"20"
class=
"w-340"
></el-input>
<el-input
show-word-limit
placeholder=
"请输入模板名称"
type=
"text"
v-model=
"form.pageName"
maxlength=
"20"
class=
"w-340"
></el-input>
</el-form-item>
</el-form-item>
<el-form-item
label=
"页面标题"
prop=
"pageTitle"
>
<el-form-item
label=
"页面标题"
prop=
"pageTitle"
>
...
@@ -33,7 +33,7 @@
...
@@ -33,7 +33,7 @@
</div>
</div>
</div>
</div>
<div
class=
"footBtn"
>
<div
class=
"footBtn"
>
<el-button
type=
"primary"
@
click=
"save"
>
保存
</el-button>
<el-button
type=
"primary"
@
click=
"save"
:loading=
"btnLoading"
>
保存
</el-button>
</div>
</div>
</div>
</div>
</
template
>
</
template
>
...
@@ -77,8 +77,10 @@ export default {
...
@@ -77,8 +77,10 @@ export default {
isEdit
:
this
.
$route
.
meta
.
type
==
'edit'
,
isEdit
:
this
.
$route
.
meta
.
type
==
'edit'
,
isAdd
:
this
.
$route
.
meta
.
type
==
'add'
,
isAdd
:
this
.
$route
.
meta
.
type
==
'add'
,
loading
:
false
,
loading
:
false
,
btnLoading
:
false
,
rules
:
{
rules
:
{
merchantPhoneNumber
:
[{
validator
:
merchantPhoneNumberVal
}]
merchantPhoneNumber
:
[{
validator
:
merchantPhoneNumberVal
}],
pageName
:
[{
required
:
true
,
message
:
'请输入模板名称'
}]
}
}
};
};
},
},
...
@@ -92,12 +94,17 @@ export default {
...
@@ -92,12 +94,17 @@ export default {
methods
:
{
methods
:
{
getDetail
()
{
getDetail
()
{
console
.
log
(
this
.
$route
);
console
.
log
(
this
.
$route
);
guidePageDetail
({
pageId
:
this
.
$route
.
params
.
id
}).
then
(
res
=>
{
this
.
loading
=
true
;
if
(
res
.
data
.
result
)
{
guidePageDetail
({
pageId
:
this
.
$route
.
params
.
id
})
const
result
=
res
.
data
.
result
;
.
then
(
res
=>
{
this
.
form
=
result
;
if
(
res
.
data
.
result
)
{
}
const
result
=
res
.
data
.
result
;
});
this
.
form
=
result
;
}
})
.
finally
(
_
=>
{
this
.
loading
=
false
;
});
},
},
getEchoEnterpriseInfo
()
{
getEchoEnterpriseInfo
()
{
wxEnterpriseList
({}).
then
(
res
=>
{
wxEnterpriseList
({}).
then
(
res
=>
{
...
@@ -111,18 +118,18 @@ export default {
...
@@ -111,18 +118,18 @@ export default {
});
});
},
},
guidePageEdit
()
{
guidePageEdit
()
{
this
.
l
oading
=
true
;
this
.
btnL
oading
=
true
;
guidePageEdit
(
this
.
form
)
guidePageEdit
(
this
.
form
)
.
then
(
_
=>
{
.
then
(
_
=>
{
this
.
$router
.
go
(
-
1
);
this
.
$router
.
go
(
-
1
);
this
.
$message
.
success
(
'保存成功'
);
this
.
$message
.
success
(
'保存成功'
);
})
})
.
finally
(
_
=>
{
.
finally
(
_
=>
{
this
.
l
oading
=
false
;
this
.
btnL
oading
=
false
;
});
});
},
},
guidePageSave
()
{
guidePageSave
()
{
this
.
l
oading
=
true
;
this
.
btnL
oading
=
true
;
guidePageSave
(
this
.
form
)
guidePageSave
(
this
.
form
)
.
then
(
_
=>
{
.
then
(
_
=>
{
this
.
$router
.
go
(
-
1
);
this
.
$router
.
go
(
-
1
);
...
@@ -130,7 +137,7 @@ export default {
...
@@ -130,7 +137,7 @@ export default {
this
.
$message
.
success
(
'保存成功'
);
this
.
$message
.
success
(
'保存成功'
);
})
})
.
finally
(
_
=>
{
.
finally
(
_
=>
{
this
.
l
oading
=
false
;
this
.
btnL
oading
=
false
;
});
});
},
},
save
()
{
save
()
{
...
...
src/views/salesleads/actCodeManage/attractFlowLink/landingPage/list.vue
View file @
fdfe2b68
...
@@ -37,6 +37,7 @@ export default {
...
@@ -37,6 +37,7 @@ export default {
loading
:
false
,
loading
:
false
,
total
:
0
,
total
:
0
,
pageId
:
''
,
pageId
:
''
,
dialogVisible
:
false
,
list
:
[
list
:
[
{
{
pageName
:
'模板名称模板名称模板名称模板名称模板'
,
pageName
:
'模板名称模板名称模板名称模板名称模板'
,
...
@@ -197,7 +198,7 @@ export default {
...
@@ -197,7 +198,7 @@ export default {
this
.
$router
.
push
(
`/ladingPageEdit/
${
item
.
pageId
}
`
);
this
.
$router
.
push
(
`/ladingPageEdit/
${
item
.
pageId
}
`
);
},
},
goLinkDetail
(
referId
)
{
goLinkDetail
(
referId
)
{
console
.
log
(
referId
)
;
this
.
dialogVisible
=
false
;
this
.
$router
.
push
(
`/attractFlowLinkInfo/
${
referId
}
`
);
this
.
$router
.
push
(
`/attractFlowLinkInfo/
${
referId
}
`
);
}
}
}
}
...
...
src/views/salesleads/actCodeManage/attractFlowLink/newAddChart.vue
View file @
fdfe2b68
...
@@ -60,6 +60,86 @@ export default {
...
@@ -60,6 +60,86 @@ export default {
{
name
:
'今日点击人数'
,
value
:
'clickNum'
,
marker
:
{
symbol
:
'line'
,
style
:
{
stroke
:
'#14C9C9'
,
lineWidth
:
12
,
lineHeight
:
8
}
}
}
{
name
:
'今日点击人数'
,
value
:
'clickNum'
,
marker
:
{
symbol
:
'line'
,
style
:
{
stroke
:
'#14C9C9'
,
lineWidth
:
12
,
lineHeight
:
8
}
}
}
]
]
});
});
//坐标轴配置(法一配置)
this
.
chart
.
axis
(
'bizDate'
,
{
line
:
{
style
:
{
stroke
:
'#606266'
,
lineDash
:
[
3
,
3
]
}
},
tickLine
:
{
style
:
{
fill
:
'#E4E7ED'
,
lineDash
:
[
3
,
3
]
}
},
label
:
{
style
:
{
fill
:
'#606266'
}
}
});
this
.
chart
.
axis
(
'addNum'
,
{
grid
:
{
line
:
{
type
:
'line'
,
style
:
{
stroke
:
'#E4E7ED'
,
lineDash
:
[
3
,
3
]
}
}
},
label
:
{
style
:
{
fill
:
'#606266'
},
formatter
:
val
=>
{
// 格式化参数值
return
val
;
}
}
});
this
.
chart
.
axis
(
'clickTimes'
,
{
grid
:
{
line
:
{
type
:
'line'
,
style
:
{
stroke
:
'#E4E7ED'
,
lineDash
:
[
3
,
3
]
}
}
},
label
:
{
style
:
{
fill
:
'#606266'
},
formatter
:
val
=>
{
// 格式化参数值
return
val
;
}
}
});
this
.
chart
.
axis
(
'clickNum'
,
{
grid
:
{
line
:
{
type
:
'line'
,
style
:
{
stroke
:
'#E4E7ED'
,
lineDash
:
[
3
,
3
]
}
}
},
label
:
{
style
:
{
fill
:
'#606266'
},
formatter
:
val
=>
{
// 格式化参数值
return
val
;
}
}
});
this
.
chart
.
tooltip
({
this
.
chart
.
tooltip
({
showCrosshairs
:
true
,
showCrosshairs
:
true
,
shared
:
true
,
shared
:
true
,
...
...
src/views/salesleads/actCodeManage/staffActCode/actCodeDetail.vue
View file @
fdfe2b68
...
@@ -49,9 +49,11 @@
...
@@ -49,9 +49,11 @@
</el-tabs>
</el-tabs>
</div>
</div>
<el-tabs
v-model=
"activeName"
type=
"card"
>
<el-tabs
v-model=
"activeName"
type=
"card"
>
<!--
<el-tab-pane
label=
"详情信息"
name=
"first"
v-if=
"$getButtonLimit($buttonCode.infoActCode)"
:limit-code=
"$buttonCode.infoActCode"
>
-->
<el-tab-pane
label=
"详情信息"
name=
"first"
>
<el-tab-pane
label=
"详情信息"
name=
"first"
>
<act-code-detail-info
:enterprise-id=
"codeInfo.enterpriseId"
:welcome-id=
"codeInfo.welcomeId"
:hm-id=
"$route.query.hmId"
@
useMemberList=
"useMemberData"
></act-code-detail-info>
<act-code-detail-info
:enterprise-id=
"codeInfo.enterpriseId"
:welcome-id=
"codeInfo.welcomeId"
:hm-id=
"$route.query.hmId"
@
useMemberList=
"useMemberData"
></act-code-detail-info>
</el-tab-pane>
</el-tab-pane>
<!--
<el-tab-pane
label=
"数据统计"
name=
"second"
v-if=
"$getButtonLimit($buttonCode.dataActCode)"
:limit-code=
"$buttonCode.dataActCode"
>
-->
<el-tab-pane
label=
"数据统计"
name=
"second"
>
<el-tab-pane
label=
"数据统计"
name=
"second"
>
<act-code-detail-statistics
:hm-id=
"$route.query.hmId"
></act-code-detail-statistics>
<act-code-detail-statistics
:hm-id=
"$route.query.hmId"
></act-code-detail-statistics>
</el-tab-pane>
</el-tab-pane>
...
...
src/views/salesleads/actCodeManage/staffActCode/actCodeDetailStatistics.vue
View file @
fdfe2b68
...
@@ -40,7 +40,7 @@
...
@@ -40,7 +40,7 @@
<ul
class=
"datebox"
v-for=
"(lis, index) in dateLis"
:key=
"lis.key"
>
<ul
class=
"datebox"
v-for=
"(lis, index) in dateLis"
:key=
"lis.key"
>
<li
:class=
"dateKey == index ? 'activeClass' : 'noActive'"
class=
"dateLisBox"
@
click=
"btnChange(index)"
>
{{
lis
.
value
}}
</li>
<li
:class=
"dateKey == index ? 'activeClass' : 'noActive'"
class=
"dateLisBox"
@
click=
"btnChange(index)"
>
{{
lis
.
value
}}
</li>
</ul>
</ul>
<el-date-picker
class=
"w256"
v-model=
"dateDefault"
type=
"daterange"
range-separator=
"~"
start-placeholder=
"创建开始日期"
end-placeholder=
"创建结束日期"
:default-time=
"['00:00:00', '23:59:59']"
:picker-options=
"pickerOptions()"
@
change=
"onDateChange"
value-format=
"yyyy-MM-dd"
>
</el-date-picker>
<el-date-picker
class=
"w256"
v-model=
"dateDefault"
type=
"daterange"
range-separator=
"~"
start-placeholder=
"创建开始日期"
end-placeholder=
"创建结束日期"
:default-time=
"['00:00:00', '23:59:59']"
:picker-options=
"pickerOptions()"
@
change=
"onDateChange"
value-format=
"yyyy-MM-dd"
:clearable=
"false"
>
</el-date-picker>
</div>
</div>
</div>
</div>
<new-add-chart
:charData=
"overViewData.dateList"
id=
"new-add-chart"
></new-add-chart>
<new-add-chart
:charData=
"overViewData.dateList"
id=
"new-add-chart"
></new-add-chart>
...
...
src/views/salesleads/actCodeManage/staffActCode/views/act-code-table.vue
View file @
fdfe2b68
...
@@ -9,12 +9,12 @@
...
@@ -9,12 +9,12 @@
<el-form-item>
<el-form-item>
<el-select
v-model=
"storeSelect"
placeholder=
"请选择"
style=
"width: 128px"
@
change=
"storeMemberSe"
>
<el-select
v-model=
"storeSelect"
placeholder=
"请选择"
style=
"width: 128px"
@
change=
"storeMemberSe"
>
<el-option
label=
"成员所属门店"
:value=
"1"
></el-option>
<el-option
label=
"成员所属门店"
:value=
"1"
></el-option>
<el-option
label=
"
使用成员
"
:value=
"2"
></el-option>
<el-option
label=
"
关联导购
"
:value=
"2"
></el-option>
</el-select>
</el-select>
<el-select
v-model=
"inFields.storeSelect"
v-if=
"storeSelect == 1"
filterable
remote
placeholder=
"请输入门店名称/code"
:remote-method=
"remoteMethods"
:loading=
"selectLoading"
v-loadmore=
"onLoadmoreStore"
@
change=
"searchList"
style=
"margin-left: -4px; width:196px;"
>
<el-select
v-model=
"inFields.storeSelect"
v-if=
"storeSelect == 1"
filterable
remote
placeholder=
"请输入门店名称/code"
:remote-method=
"remoteMethods"
:loading=
"selectLoading"
v-loadmore=
"onLoadmoreStore"
@
change=
"searchList"
style=
"margin-left: -4px; width:196px;"
clearable
>
<el-option
v-for=
"item in shopList"
:key=
"item.storeId"
:label=
"item.storeName"
:value=
"item.storeId"
>
</el-option>
<el-option
v-for=
"item in shopList"
:key=
"item.storeId"
:label=
"item.storeName"
:value=
"item.storeId"
>
</el-option>
</el-select>
</el-select>
<el-select
v-model=
"inFields.clerkSelect"
v-if=
"storeSelect == 2"
filterable
remote
placeholder=
"请输入成员名称/code"
:loading=
"selectLoading"
@
change=
"searchList"
style=
"margin-left: -4px; width:196px;"
>
<el-select
v-model=
"inFields.clerkSelect"
v-if=
"storeSelect == 2"
filterable
remote
placeholder=
"请输入成员名称/code"
:loading=
"selectLoading"
@
change=
"searchList"
style=
"margin-left: -4px; width:196px;"
clearable
>
<el-option
v-for=
"item in memberList"
:key=
"item.clerkId"
:label=
"item.clerkName"
:value=
"item.clerkId"
>
</el-option>
<el-option
v-for=
"item in memberList"
:key=
"item.clerkId"
:label=
"item.clerkName"
:value=
"item.clerkId"
>
</el-option>
</el-select>
</el-select>
</el-form-item>
</el-form-item>
...
@@ -36,6 +36,9 @@
...
@@ -36,6 +36,9 @@
<el-date-picker
v-model=
"dateTime"
@
change=
"searchList"
:picker-options=
"pickerOptions"
:editable=
"false"
:value-format=
"'yyyy-MM-dd HH:mm:ss'"
type=
"datetimerange"
align=
"right"
unlink-panels
range-separator=
"至"
start-placeholder=
"创建开始日期"
end-placeholder=
"创建结束日期"
>
</el-date-picker>
<el-date-picker
v-model=
"dateTime"
@
change=
"searchList"
:picker-options=
"pickerOptions"
:editable=
"false"
:value-format=
"'yyyy-MM-dd HH:mm:ss'"
type=
"datetimerange"
align=
"right"
unlink-panels
range-separator=
"至"
start-placeholder=
"创建开始日期"
end-placeholder=
"创建结束日期"
>
</el-date-picker>
</el-form-item>
</el-form-item>
<el-form-item
class=
"frmbt20"
>
<el-form-item
class=
"frmbt20"
>
<!--
<el-button
@
click=
"batchGoupEvent"
v-if=
"$getButtonLimit($buttonCode.batchGroup)"
:limit-code=
"$buttonCode.batchGroup"
>
批量分组
</el-button>
<el-button
class=
"ghost-btn "
@
click=
"$router.push('/actCodeBatch')"
v-if=
"$getButtonLimit($buttonCode.batchActCode)"
:limit-code=
"$buttonCode.batchActCode"
>
批量创建活码
</el-button>
<el-button
type=
"primary"
@
click=
"$router.push('/actCodeAdd')"
v-if=
"$getButtonLimit($buttonCode.addActCode)"
:limit-code=
"$buttonCode.addActCode"
>
新增活码
</el-button>
-->
<el-button
@
click=
"batchGoupEvent"
>
批量分组
</el-button>
<el-button
@
click=
"batchGoupEvent"
>
批量分组
</el-button>
<el-button
class=
"ghost-btn "
@
click=
"$router.push('/actCodeBatch')"
>
批量创建活码
</el-button>
<el-button
class=
"ghost-btn "
@
click=
"$router.push('/actCodeBatch')"
>
批量创建活码
</el-button>
<el-button
type=
"primary"
@
click=
"$router.push('/actCodeAdd')"
>
新增活码
</el-button>
<el-button
type=
"primary"
@
click=
"$router.push('/actCodeAdd')"
>
新增活码
</el-button>
...
@@ -76,7 +79,7 @@
...
@@ -76,7 +79,7 @@
<p>
{{
row
.
addNumT
==
null
?
row
.
addNumT
:
'--'
}}
</p>
<p>
{{
row
.
addNumT
==
null
?
row
.
addNumT
:
'--'
}}
</p>
</
template
>
</
template
>
</el-table-column>
</el-table-column>
<el-table-column
label=
"
使用成员
"
width=
"120"
show-overflow-tooltip
>
<el-table-column
label=
"
关联导购
"
width=
"120"
show-overflow-tooltip
>
<
template
slot-scope=
"{ row }"
>
<
template
slot-scope=
"{ row }"
>
<p>
{{
row
.
clerkName
?
row
.
clerkName
:
'--'
}}
</p>
<p>
{{
row
.
clerkName
?
row
.
clerkName
:
'--'
}}
</p>
<p
class=
"ft-12 phone"
>
{{
row
.
clerkCode
?
row
.
clerkCode
:
'--'
}}
</p>
<p
class=
"ft-12 phone"
>
{{
row
.
clerkCode
?
row
.
clerkCode
:
'--'
}}
</p>
...
@@ -215,21 +218,30 @@ export default {
...
@@ -215,21 +218,30 @@ export default {
operateBtnArr
:
[
operateBtnArr
:
[
{
{
text
:
'数据'
,
text
:
'数据'
,
visible
:
true
,
visible
:
row
=>
{
// if (this.$getButtonLimit(this.$buttonCode.dataActCode)) {
return
true
;
// }
},
handler
:
row
=>
{
handler
:
row
=>
{
this
.
$router
.
push
(
`/actCodeDetail?hmId=
${
row
.
hmId
}
&activeName=second`
);
this
.
$router
.
push
(
`/actCodeDetail?hmId=
${
row
.
hmId
}
&activeName=second`
);
}
}
},
},
{
{
text
:
'详情'
,
text
:
'详情'
,
visible
:
true
,
visible
:
row
=>
{
// if (this.$getButtonLimit(this.$buttonCode.infoActCode)) {
return
true
;
// }
},
handler
:
row
=>
{
handler
:
row
=>
{
this
.
$router
.
push
(
'/actCodeDetail?hmId='
+
row
.
hmId
);
this
.
$router
.
push
(
'/actCodeDetail
s
?hmId='
+
row
.
hmId
);
}
}
},
},
{
{
text
:
'编辑'
,
text
:
'编辑'
,
visible
:
row
=>
{
visible
:
row
=>
{
// if (!this.$getButtonLimit(this.$buttonCode.editActCode) || row.statusFlag == 2) {
if
(
row
.
statusFlag
==
2
)
{
if
(
row
.
statusFlag
==
2
)
{
return
false
;
return
false
;
}
else
{
}
else
{
...
@@ -243,6 +255,7 @@ export default {
...
@@ -243,6 +255,7 @@ export default {
{
{
text
:
'下载活码'
,
text
:
'下载活码'
,
visible
:
row
=>
{
visible
:
row
=>
{
// if (!this.$getButtonLimit(this.$buttonCode.downActCode) || row.hmType == 1 || row.statusFlag != 1) {
if
(
row
.
hmType
==
1
||
row
.
statusFlag
!=
1
)
{
if
(
row
.
hmType
==
1
||
row
.
statusFlag
!=
1
)
{
return
false
;
return
false
;
}
else
{
}
else
{
...
@@ -258,6 +271,7 @@ export default {
...
@@ -258,6 +271,7 @@ export default {
{
{
text
:
'作废'
,
text
:
'作废'
,
visible
:
row
=>
{
visible
:
row
=>
{
// if (this.$getButtonLimit(this.$buttonCode.delActCode) && row.statusFlag != 2) {
if
(
row
.
statusFlag
!=
2
)
{
if
(
row
.
statusFlag
!=
2
)
{
return
true
;
return
true
;
}
}
...
@@ -320,6 +334,26 @@ export default {
...
@@ -320,6 +334,26 @@ export default {
this
.
getStraff
();
this
.
getStraff
();
this
.
getStore
();
this
.
getStore
();
},
},
activated
()
{
if
(
this
.
$route
.
meta
.
refresh
)
{
this
.
inFields
=
{
hmSelect
:
''
,
statusFlagInt
:
''
,
storeSelect
:
''
,
clerkSelect
:
''
,
hmTypeInt
:
''
,
startTime
:
''
,
endTime
:
''
,
orderByField
:
'createTime desc'
,
hmGroupId
:
''
};
this
.
pageParam
=
{
pageSize
:
20
,
pageNo
:
1
};
}
this
.
getTableList
();
},
methods
:
{
methods
:
{
storeMemberSe
(
e
)
{
storeMemberSe
(
e
)
{
if
(
e
==
1
)
{
if
(
e
==
1
)
{
...
@@ -491,11 +525,11 @@ export default {
...
@@ -491,11 +525,11 @@ export default {
watch
:
{
watch
:
{
currentGroupId
:
{
currentGroupId
:
{
handler
:
function
(
val
)
{
handler
:
function
(
val
)
{
// if (val != nul
l) {
if
(
va
l
)
{
this
.
currentGroupId
=
val
;
this
.
currentGroupId
=
val
;
this
.
pageParam
.
pageNo
=
1
;
this
.
pageParam
.
pageNo
=
1
;
this
.
getTableList
();
this
.
getTableList
();
//
}
}
},
},
immediate
:
true
immediate
:
true
}
}
...
...
src/views/salesleads/actCodeManage/staffActCode/views/batchAddCode.vue
View file @
fdfe2b68
...
@@ -9,7 +9,7 @@
...
@@ -9,7 +9,7 @@
</el-form-item>
</el-form-item>
</
template
>
</
template
>
<
template
#
member
>
<
template
#
member
>
<el-form-item
label=
"
使用成员
"
:rules=
"[
{ required: true, message: '请选择使用成员', trigger: 'blur' }]">
<el-form-item
label=
"
关联导购
"
:rules=
"[
{ required: true, message: '请选择使用成员', trigger: 'blur' }]">
<el-radio-group
v-model=
"memberType"
@
change=
"radioChange"
>
<el-radio-group
v-model=
"memberType"
@
change=
"radioChange"
>
<el-radio
:label=
"1"
>
全部成员
</el-radio>
<el-radio
:label=
"1"
>
全部成员
</el-radio>
<el-radio
:label=
"2"
>
部分成员
</el-radio>
<el-radio
:label=
"2"
>
部分成员
</el-radio>
...
@@ -79,6 +79,7 @@ export default {
...
@@ -79,6 +79,7 @@ export default {
await
postJsonRequest
(
'/haoban-manage3-web/hm/qrcode/addList'
,
obj
).
then
(
res
=>
{
await
postJsonRequest
(
'/haoban-manage3-web/hm/qrcode/addList'
,
obj
).
then
(
res
=>
{
if
(
res
.
data
.
code
==
0
)
{
if
(
res
.
data
.
code
==
0
)
{
setTimeout
(()
=>
{
setTimeout
(()
=>
{
this
.
$route
.
meta
.
refresh
=
true
;
this
.
$router
.
go
(
-
1
);
this
.
$router
.
go
(
-
1
);
this
.
form
=
{
this
.
form
=
{
hmType
:
1
,
hmType
:
1
,
...
...
src/views/salesleads/actCodeManage/staffActCode/views/setActCode.vue
View file @
fdfe2b68
...
@@ -15,7 +15,7 @@
...
@@ -15,7 +15,7 @@
</el-form-item>
</el-form-item>
</
template
>
</
template
>
<
template
#
member
>
<
template
#
member
>
<el-form-item
label=
"
使用成员
"
:rules=
"[
{ required: true, message: '请选择使用成员', trigger: 'blur' }]">
<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 == 1"
>
单人活码仅可选择一名成员
</p>
<p
class=
"tabs"
v-if=
"form.hmType == 2"
>
若选择多名成员,则随机分配企微员工
</p>
<p
class=
"tabs"
v-if=
"form.hmType == 2"
>
若选择多名成员,则随机分配企微员工
</p>
<select-clerk
:multiple=
"multiple"
:data=
"data"
@
change=
"onChange"
:disabled=
"clerkDisabled"
></select-clerk>
<select-clerk
:multiple=
"multiple"
:data=
"data"
@
change=
"onChange"
:disabled=
"clerkDisabled"
></select-clerk>
...
@@ -128,6 +128,7 @@ export default {
...
@@ -128,6 +128,7 @@ export default {
await
postJsonRequest
(
'/haoban-manage3-web/hm/qrcode/add'
,
obj
).
then
(
res
=>
{
await
postJsonRequest
(
'/haoban-manage3-web/hm/qrcode/add'
,
obj
).
then
(
res
=>
{
if
(
res
.
data
.
code
==
0
)
{
if
(
res
.
data
.
code
==
0
)
{
setTimeout
(()
=>
{
setTimeout
(()
=>
{
this
.
$route
.
meta
.
refresh
=
true
;
this
.
$router
.
go
(
-
1
);
this
.
$router
.
go
(
-
1
);
this
.
form
=
{
this
.
form
=
{
hmType
:
1
,
hmType
:
1
,
...
...
src/views/salesleads/components/act-code-set.vue
View file @
fdfe2b68
...
@@ -17,14 +17,13 @@
...
@@ -17,14 +17,13 @@
</el-form-item>
</el-form-item>
<el-form-item
label=
"活码标签"
prop=
"memberLabelId"
class=
"memberTag-form-item"
>
<el-form-item
label=
"活码标签"
prop=
"memberLabelId"
class=
"memberTag-form-item"
>
<el-button
v-if=
"!form.memberLabelId || !form.memberLabelName"
plain
class=
"ylbtn"
@
click=
"tagsDialogVisible = true"
><i
class=
"iconfont-components3 icon-cp-PlusOutlined addPic"
></i>
添加标签
</el-button>
<el-button
v-if=
"!form.memberLabelId || !form.memberLabelName"
plain
class=
"ylbtn"
@
click=
"tagsDialogVisible = true"
><i
class=
"iconfont-components3 icon-cp-PlusOutlined addPic"
></i>
添加标签
</el-button>
<!--
<el-tag
v-else
closable
@
close=
"handleTagCloseTag"
>
{{
form
.
memberLabelName
}}
</el-tag>
-->
<el-tooltip
:disabled=
"form.memberLabelStatus != 0"
content=
"已删除"
placement=
"top"
v-else
>
<el-tooltip
:disabled=
"form.memberLabelStatus != 0"
content=
"已删除"
placement=
"top"
v-else
>
<el-tag
closable
@
close=
"handleTagCloseTag"
:type=
"isEdit && form.memberLabelStatus == 0 ? 'warning' : ''"
>
{{
form
.
memberLabelName
}}
</el-tag>
<el-tag
closable
@
close=
"handleTagCloseTag"
:type=
"isEdit && form.memberLabelStatus == 0 ? 'warning' : ''"
>
{{
form
.
memberLabelName
}}
</el-tag>
</el-tooltip>
</el-tooltip>
<dm-memberTag-group
isHb
:visiable
.
sync=
"tagsDialogVisible"
projectName=
"haobao-3"
@
save=
"saveTagPop"
></dm-memberTag-group>
<dm-memberTag-group
isHb
:visiable
.
sync=
"tagsDialogVisible"
projectName=
"haobao-3"
@
save=
"saveTagPop"
></dm-memberTag-group>
</el-form-item>
</el-form-item>
<dm-sub-title
text=
"欢迎语设置"
type=
"line"
class=
"mt40b20"
/>
<dm-sub-title
text=
"欢迎语设置"
type=
"line"
class=
"mt40b20"
/>
<welcomeItem
@
getWelcomeId=
"getWelcomeId"
:welcomeId
P=
"form.welcomeId"
ref=
"welcomeItem"
:welcomeSetType=
"welcomeSetTyp
e"
></welcomeItem>
<welcomeItem
@
getWelcomeId=
"getWelcomeId"
:welcomeId
.
sync=
"form.welcomeId"
ref=
"welcomeItem"
:welcomeType
.
sync=
"welcomeType"
welcomeName=
"cod
e"
></welcomeItem>
</el-form>
</el-form>
</div>
</div>
<div
class=
"saveBtn"
>
<div
class=
"saveBtn"
>
...
@@ -60,7 +59,7 @@ export default {
...
@@ -60,7 +59,7 @@ export default {
},
},
data
()
{
data
()
{
return
{
return
{
welcome
Set
Type
:
1
,
welcomeType
:
1
,
form
:
{
form
:
{
// hmType: 1, //1单人 2多人
// hmType: 1, //1单人 2多人
// name: '', // 名称
// name: '', // 名称
...
@@ -162,9 +161,9 @@ export default {
...
@@ -162,9 +161,9 @@ export default {
});
});
return
;
return
;
}
}
// if (!this.$refs.welcomeItem.submit()
) {
if
(
this
.
welcomeType
==
2
)
{
// return
;
this
.
form
.
welcomeId
=
''
;
//
}
}
this
.
$refs
.
form
.
validate
(
async
valid
=>
{
this
.
$refs
.
form
.
validate
(
async
valid
=>
{
if
(
valid
)
{
if
(
valid
)
{
this
.
form
.
passFlag
=
this
.
form
.
passFlag
?
1
:
0
;
this
.
form
.
passFlag
=
this
.
form
.
passFlag
?
1
:
0
;
...
@@ -177,16 +176,20 @@ export default {
...
@@ -177,16 +176,20 @@ export default {
actCodeData
:
{
actCodeData
:
{
handler
:
function
(
val
)
{
handler
:
function
(
val
)
{
if
(
val
)
{
if
(
val
)
{
this
.
welcomeSetType
=
2
;
this
.
form
.
hmGroupId
=
val
.
hmGroupId
;
this
.
form
.
hmGroupId
=
val
.
hmGroupId
;
// this.form.passFlag = val.passFlag == 1 ? true : false;
// this.form.passFlag = val.passFlag == 1 ? true : false;
this
.
form
.
memberLabelId
=
val
.
memberLabelId
?
val
.
memberLabelId
:
''
;
this
.
form
.
memberLabelId
=
val
.
memberLabelId
?
val
.
memberLabelId
:
''
;
this
.
form
.
memberLabelName
=
val
.
memberLabelName
?
val
.
memberLabelName
:
''
;
this
.
form
.
memberLabelName
=
val
.
memberLabelName
?
val
.
memberLabelName
:
''
;
this
.
form
.
welcomeId
=
val
.
welcomeId
;
this
.
form
.
welcomeId
=
val
.
welcomeId
;
if
(
this
.
form
.
welcomeId
)
{
this
.
welcomeType
=
1
;
}
else
{
this
.
welcomeType
=
2
;
}
}
}
}
,
}
immediate
:
true
,
//
immediate: true,
deep
:
true
//
deep: true
}
}
}
}
};
};
...
...
src/views/salesleads/components/actCodeDetailInfo.vue
View file @
fdfe2b68
...
@@ -34,7 +34,7 @@
...
@@ -34,7 +34,7 @@
<div
v-if=
"type == 'actCode'"
>
<div
v-if=
"type == 'actCode'"
>
<div
class=
"title flex"
>
<div
class=
"title flex"
>
<div
class=
"blue-block"
></div>
<div
class=
"blue-block"
></div>
<span
class=
"font-w-500 color-303133"
>
使用成员
</span>
<span
class=
"font-w-500 color-303133"
>
关联导购
</span>
</div>
</div>
<el-table
ref=
"useMemberTableRef"
v-loading=
"loading"
:data=
"useMemberData"
tooltip-effect=
"dark"
>
<el-table
ref=
"useMemberTableRef"
v-loading=
"loading"
:data=
"useMemberData"
tooltip-effect=
"dark"
>
<el-table-column
prop=
""
label=
"导购信息"
show-overflow-tooltip
min-width=
"185px"
>
<el-table-column
prop=
""
label=
"导购信息"
show-overflow-tooltip
min-width=
"185px"
>
...
...
src/views/salesleads/components/dataDetail.vue
View file @
fdfe2b68
...
@@ -10,7 +10,7 @@
...
@@ -10,7 +10,7 @@
<ul
class=
"datebox"
v-for=
"(lis, index) in dateLis"
:key=
"lis.key"
>
<ul
class=
"datebox"
v-for=
"(lis, index) in dateLis"
:key=
"lis.key"
>
<li
:class=
"active == index ? 'activeClass' : 'noActive'"
class=
"dateLisBox"
@
click=
"btnChange(index)"
>
{{
lis
.
value
}}
</li>
<li
:class=
"active == index ? 'activeClass' : 'noActive'"
class=
"dateLisBox"
@
click=
"btnChange(index)"
>
{{
lis
.
value
}}
</li>
</ul>
</ul>
<el-date-picker
class=
"w256"
v-model=
"dateDefault"
type=
"daterange"
range-separator=
"~"
start-placeholder=
"创建开始日期"
end-placeholder=
"创建结束日期"
:default-time=
"['00:00:00', '23:59:59']"
value-format=
"yyyy-MM-dd"
:picker-options=
"pickerOptions()"
@
change=
"onDateChange"
>
</el-date-picker>
<el-date-picker
class=
"w256"
v-model=
"dateDefault"
type=
"daterange"
range-separator=
"~"
start-placeholder=
"创建开始日期"
end-placeholder=
"创建结束日期"
:default-time=
"['00:00:00', '23:59:59']"
value-format=
"yyyy-MM-dd"
:picker-options=
"pickerOptions()"
@
change=
"onDateChange"
:clearable=
"false"
>
</el-date-picker>
</div>
</div>
</el-row>
</el-row>
<el-table
class=
"mt18"
:data=
"tableData"
@
sort-change=
"sortChange"
>
<el-table
class=
"mt18"
:data=
"tableData"
@
sort-change=
"sortChange"
>
...
...
src/views/salesleads/components/welcomesItem.vue
View file @
fdfe2b68
...
@@ -3,37 +3,36 @@
...
@@ -3,37 +3,36 @@
<el-row>
<el-row>
<el-col
:span=
"17"
>
<el-col
:span=
"17"
>
<el-form-item
label=
"设置欢迎语"
>
<el-form-item
label=
"设置欢迎语"
>
<el-radio-group
v-model=
"welcomesType"
@
change=
"radioChange"
>
<el-radio-group
@
change=
"radioChange"
v-model=
"welcomeType"
>
<el-radio
:label=
"1"
v-if=
"welcomeType == 'code'"
>
活码欢迎语
</el-radio>
<el-radio
:label=
"1"
>
{{
welcomeName
==
'code'
?
'活码'
:
'链接'
}}
欢迎语
</el-radio>
<el-radio
:label=
"1"
v-else
>
链接欢迎语
</el-radio>
<el-radio
:label=
"2"
>
不发送欢迎语
</el-radio>
<el-radio
:label=
"2"
>
不发送欢迎语
</el-radio>
</el-radio-group>
</el-radio-group>
<ul
class=
"tabs"
v-if=
"welcome
s
Type == 1"
>
<ul
class=
"tabs"
v-if=
"welcomeType == 1"
>
<li>
1.下方的欢迎语取自【设置-欢迎语设置】中的“特殊欢迎语”;
</li>
<li>
1.下方的欢迎语取自【设置-欢迎语设置】中的“特殊欢迎语”;
</li>
<li>
<li>
2.配置“
<span>
{{
welcome
Typ
e
==
'code'
?
'活码'
:
'链接'
}}
</span
2.配置“
<span>
{{
welcome
Nam
e
==
'code'
?
'活码'
:
'链接'
}}
</span
>
欢迎语”后,通过此活码添加好友后,系统自动推送此处所配置的欢迎语
>
欢迎语”后,通过此活码添加好友后,系统自动推送此处所配置的欢迎语
</li>
</li>
<li>
(根据企业微信规则,若所添加的该成员在企业微信后台已经配置了欢迎语,那么会推送企微后台所配置的欢迎语,不会推送此处的欢迎语)
</li>
<li>
(根据企业微信规则,若所添加的该成员在企业微信后台已经配置了欢迎语,那么会推送企微后台所配置的欢迎语,不会推送此处的欢迎语)
</li>
</ul>
</ul>
<ul
class=
"tabs"
v-if=
"welcome
s
Type == 2"
>
<ul
class=
"tabs"
v-if=
"welcomeType == 2"
>
<li>
<li>
通过此
<span>
{{
welcome
Typ
e
==
'code'
?
'活码'
:
'链接'
}}
</span
通过此
<span>
{{
welcome
Nam
e
==
'code'
?
'活码'
:
'链接'
}}
</span
>
添加好友后,系统不推送欢迎语,及时在【设置-欢迎语设置】中为该成员配置了欢迎语。
>
添加好友后,系统不推送欢迎语,及时在【设置-欢迎语设置】中为该成员配置了欢迎语。
</li>
</li>
<li>
(根据企业微信规则,若所添加的该成员在企业微信后台已经配置了欢迎语,那么企微后台的欢迎语会照常推送)
</li>
<li>
(根据企业微信规则,若所添加的该成员在企业微信后台已经配置了欢迎语,那么企微后台的欢迎语会照常推送)
</li>
</ul>
</ul>
</el-form-item>
</el-form-item>
<el-form-item
label=
"选择欢迎语"
v-if=
"welcome
s
Type == 1"
>
<el-form-item
label=
"选择欢迎语"
v-if=
"welcomeType == 1"
>
<div
class=
"welcomeTable"
>
<div
class=
"welcomeTable"
>
<div
class=
"wtabTop"
>
<div
class=
"wtabTop"
>
<el-input
class=
"w260"
placeholder=
"请输入标题"
v-model=
"welcomePage.title"
@
change=
"onSearch"
clearable
></el-input>
<el-input
class=
"w260"
placeholder=
"请输入标题"
v-model=
"welcomePage.title"
@
keyup
.
native=
"toInput"
clearable
@
clear=
"onSearch"
></el-input>
<el-button
plain
class=
"blueBtn"
@
click=
"changeRoute"
>
新建欢迎语
</el-button>
<el-button
plain
class=
"blueBtn"
@
click=
"changeRoute"
>
新建欢迎语
</el-button>
</div>
</div>
<el-table
:data=
"welcomeTableData"
max-height=
"300px"
>
<el-table
:data=
"welcomeTableData"
max-height=
"300px"
>
<el-table-column
width=
"55"
>
<el-table-column
width=
"55"
>
<template
slot-scope=
"
scope
"
>
<template
slot-scope=
"
{ row }
">
<el-radio
:label=
"
scope.$index"
@
change
.
native=
"getCurrentRow(scope.row)"
v-model=
"welcome
"
>
</el-radio>
<el-radio
:label=
"
row.welcomeId"
@
change
.
native=
"getCurrentRow(row)"
v-model=
"welcomeId
"
>
</el-radio>
</
template
>
</
template
>
</el-table-column>
</el-table-column>
<el-table-column
prop=
"title"
label=
"标题"
width=
"158px"
></el-table-column>
<el-table-column
prop=
"title"
label=
"标题"
width=
"158px"
></el-table-column>
...
@@ -58,9 +57,9 @@
...
@@ -58,9 +57,9 @@
</div>
</div>
</el-form-item>
</el-form-item>
</el-col>
</el-col>
<el-col
:span=
"7"
v-if=
"welcome
s
Type == 1 && welcomeContent != ''"
>
<el-col
:span=
"7"
v-if=
"welcomeType == 1 && welcomeContent != ''"
>
<p
class=
"welcomeTitle"
>
欢迎语预览
</p>
<p
class=
"welcomeTitle"
>
欢迎语预览
</p>
<previewWelcome
:welcomeContent=
"welcomeContent"
></previewWelcome>
<previewWelcome
:welcomeContent=
"welcomeContent"
:mediaList=
"welcomeMediaList"
></previewWelcome>
</el-col>
</el-col>
</el-row>
</el-row>
</div>
</div>
...
@@ -70,19 +69,20 @@
...
@@ -70,19 +69,20 @@
import
previewWelcome
from
'@/components/preview-welcome.vue'
;
import
previewWelcome
from
'@/components/preview-welcome.vue'
;
import
{
postJsonRequest
}
from
'@/api/api'
;
import
{
postJsonRequest
}
from
'@/api/api'
;
import
{
getRequest
}
from
'../../../api/api'
;
import
{
getRequest
}
from
'../../../api/api'
;
import
{
_debounce
}
from
'@/common/js/public'
;
export
default
{
export
default
{
name
:
'welcomeItem'
,
name
:
'welcomeItem'
,
components
:
{
previewWelcome
},
components
:
{
previewWelcome
},
props
:
{
props
:
{
welcomeId
P
:
{
welcomeId
:
{
type
:
Object
,
type
:
[
String
,
Number
]
,
default
:
null
default
:
''
},
},
welcome
Typ
e
:
{
welcome
Nam
e
:
{
type
:
String
,
type
:
String
,
default
:
'code'
default
:
'code'
},
},
welcome
Set
Type
:
{
welcomeType
:
{
type
:
Number
,
type
:
Number
,
default
:
1
default
:
1
}
}
...
@@ -98,11 +98,10 @@ export default {
...
@@ -98,11 +98,10 @@ export default {
6
:
'iconwenjianleixing-xiaochengxu'
,
// 带参小程序
6
:
'iconwenjianleixing-xiaochengxu'
,
// 带参小程序
7
:
'icongongzhonghao1'
// 带参公众号
7
:
'icongongzhonghao1'
// 带参公众号
},
},
welcomTypeFlag
:
true
,
welcomesType
:
1
,
welcomeTableData
:
[],
welcomeTableData
:
[],
welcome
:
''
,
welcomeContent
:
''
,
welcomeContent
:
''
,
welcomeMediaList
:
[],
// 欢迎语参数
// 欢迎语参数
welcomePage
:
{
welcomePage
:
{
wxEnterpriseId
:
sessionStorage
.
getItem
(
'userInfos'
)
?
JSON
.
parse
(
sessionStorage
.
getItem
(
'userInfos'
)).
wxEnterpriseId
:
''
,
wxEnterpriseId
:
sessionStorage
.
getItem
(
'userInfos'
)
?
JSON
.
parse
(
sessionStorage
.
getItem
(
'userInfos'
)).
wxEnterpriseId
:
''
,
...
@@ -111,17 +110,11 @@ export default {
...
@@ -111,17 +110,11 @@ export default {
pageNum
:
1
,
pageNum
:
1
,
pageSize
:
20
pageSize
:
20
},
},
totalNum
:
1
,
totalNum
:
1
welcomeId
:
''
,
templateSelection
:
{},
currentWelcome
:
[],
isFlag
:
false
};
};
},
},
activated
()
{
this
.
onSearch
();
},
mounted
()
{
mounted
()
{
console
.
log
(
this
.
welcomeType
,
'welcomeType'
);
this
.
getWelcomeTable
();
this
.
getWelcomeTable
();
document
.
addEventListener
(
'visibilitychange'
,
()
=>
{
document
.
addEventListener
(
'visibilitychange'
,
()
=>
{
if
(
document
.
visibilityState
==
'visible'
)
{
if
(
document
.
visibilityState
==
'visible'
)
{
...
@@ -137,6 +130,9 @@ export default {
...
@@ -137,6 +130,9 @@ export default {
});
});
},
},
methods
:
{
methods
:
{
toInput
:
_debounce
(
function
(
e
,
value
)
{
this
.
onSearch
();
},
500
),
onSearch
()
{
onSearch
()
{
this
.
welcomePage
.
pageNum
=
1
;
this
.
welcomePage
.
pageNum
=
1
;
this
.
getWelcomeTable
();
this
.
getWelcomeTable
();
...
@@ -144,62 +140,45 @@ export default {
...
@@ -144,62 +140,45 @@ export default {
// 当前页变化
// 当前页变化
handleCurrentChange
(
val
)
{
handleCurrentChange
(
val
)
{
this
.
welcomePage
.
pageNum
=
val
;
this
.
welcomePage
.
pageNum
=
val
;
this
.
welcome
=
''
;
this
.
getWelcomeTable
();
this
.
getWelcomeTable
();
},
},
// 选择欢迎语列表数据
// 选择欢迎语列表数据
async
getWelcomeTable
()
{
getWelcomeTable
()
{
await
postJsonRequest
(
'/haoban-manage3-web/welcome/list'
,
this
.
welcomePage
).
then
(
res
=>
{
postJsonRequest
(
'/haoban-manage3-web/welcome/list'
,
this
.
welcomePage
).
then
(
res
=>
{
this
.
welcomeTableData
=
res
.
data
.
result
.
result
;
this
.
welcomeTableData
=
res
.
data
.
result
.
result
;
this
.
totalNum
=
res
.
data
.
result
.
totalCount
;
this
.
totalNum
=
res
.
data
.
result
.
totalCount
;
if
(
this
.
isFlag
)
{
let
flag
=
this
.
welcomeTableData
.
map
(
item
=>
item
.
welcomeId
).
indexOf
(
this
.
currentWelcome
.
welcomeId
);
let
flag1
=
this
.
welcomeTableData
.
map
(
item
=>
item
.
welcomeId
).
includes
(
this
.
currentWelcome
.
welcomeId
);
// if (this.welcomePage.pageNum == 1) {
if
(
flag1
)
{
this
.
welcome
=
flag
;
// this.welcomeContent = this.currentWelcome.welcomeContent;
}
// else {
// this.welcomeTableData.unshift(this.currentWelcome);
// this.welcome = 0;
// this.welcomeContent = '';
// }
// this.welcomeContent = this.currentWelcome.welcomeContent;
// } else if (this.welcomePage.pageNum != 1) {
// if (flag1) {
// this.welcomeTableData.splice(flag, 1);
// }
// this.welcomeContent = '';
// }
}
});
});
},
},
// 新建欢迎语
// 新建欢迎语
changeRoute
()
{
changeRoute
()
{
this
.
$router
.
push
({
path
:
'/salutatorySet'
,
query
:
{
type
:
2
}
});
this
.
$router
.
push
({
path
:
'/salutatorySet'
,
query
:
{
type
:
2
}
});
// let routeUrl = this.$router.resolve({ path: '/salutatorySet', query: { type: 2 } });
// window.open(routeUrl.href, '_blank');
},
},
getCurrentRow
(
row
)
{
getCurrentRow
(
row
)
{
// 获取选中数据 row表示选中这一行的数据,可以从里面提取所需要的值
console
.
log
(
row
);
this
.
templateSelection
=
row
;
const
{
welcomeMediaList
,
welcomeContent
,
welcomeId
}
=
row
;
this
.
welcomeContent
=
row
.
welcomeContent
;
this
.
$emit
(
'update:welcomeId'
,
welcomeId
)
;
this
.
welcome
Id
=
row
.
welcomeId
;
this
.
welcome
Content
=
welcomeContent
;
// this.$emit('getWelcomeId', this.welcomeId)
;
this
.
welcomeMediaList
=
welcomeMediaList
;
},
},
// 单选框点击事件
// 单选框点击事件
radioChange
(
e
)
{
radioChange
(
e
)
{
this
.
$emit
(
'update:welcomeType'
,
e
);
if
(
e
==
1
)
{
if
(
e
==
1
)
{
this
.
getWelcomeTable
();
this
.
getWelcomeTable
();
this
.
welcomeId
=
''
;
this
.
$emit
(
'getWelcomeId'
,
this
.
welcomeId
);
}
}
},
},
getDetail
()
{
getRequest
(
'/haoban-manage3-web/welcome/get'
,
{
welcomeId
:
this
.
welcomeId
,
enterpriseId
:
sessionStorage
.
getItem
(
'userInfos'
)
?
JSON
.
parse
(
sessionStorage
.
getItem
(
'userInfos'
)).
enterpriseId
:
''
}).
then
(
res
=>
{
if
(
res
.
data
.
code
==
0
&&
res
.
data
.
result
)
{
const
{
welcomeMediaList
,
welcomeContent
}
=
res
.
data
.
result
;
this
.
welcomeContent
=
welcomeContent
;
this
.
welcomeMediaList
=
welcomeMediaList
;
}
});
},
submit
()
{
submit
()
{
if
(
this
.
welcomesType
==
2
)
return
true
;
if
(
this
.
welcomeType
==
2
)
return
true
;
this
.
$emit
(
'getWelcomeId'
,
this
.
welcomeId
);
if
(
this
.
welcomeType
==
1
&&
!
this
.
welcomeId
)
{
if
(
this
.
welcomesType
==
1
&&
!
this
.
welcomeId
)
{
this
.
$message
.
error
(
'请选择欢迎语'
);
this
.
$message
.
error
(
'请选择欢迎语'
);
return
false
;
return
false
;
}
else
{
}
else
{
...
@@ -208,44 +187,13 @@ export default {
...
@@ -208,44 +187,13 @@ export default {
}
}
},
},
watch
:
{
watch
:
{
welcomeSetType
:
{
welcomeId
:
{
handler
:
function
(
val
)
{
console
.
log
(
val
);
if
(
val
==
1
)
{
this
.
welcomesType
=
1
;
}
},
immediate
:
true
},
welcomeIdP
:
{
handler
:
async
function
(
val
)
{
handler
:
async
function
(
val
)
{
if
(
val
)
{
if
(
val
)
{
this
.
welcomesType
=
1
;
this
.
getDetail
();
this
.
welcomeId
=
val
;
await
getRequest
(
'/haoban-manage3-web/welcome/get'
,
{
welcomeId
:
this
.
welcomeId
,
enterpriseId
:
sessionStorage
.
getItem
(
'userInfos'
)
?
JSON
.
parse
(
sessionStorage
.
getItem
(
'userInfos'
)).
enterpriseId
:
''
}).
then
(
res
=>
{
if
(
res
.
data
.
code
==
0
)
{
this
.
currentWelcome
=
res
.
data
.
result
||
[];
this
.
welcomeContent
=
this
.
currentWelcome
.
welcomeContent
;
this
.
isFlag
=
true
;
this
.
getWelcomeTable
();
}
});
}
}
// if (val == null) {
// this.welcomesType = 2;
// }
},
},
immediate
:
true
,
immediate
:
true
deep
:
true
},
welcomesType
:
{
handler
:
function
(
val
)
{
if
(
val
==
2
)
{
this
.
welcomeId
=
''
;
}
},
immediate
:
true
,
deep
:
true
}
}
}
}
};
};
...
...
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