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
140ae901
Commit
140ae901
authored
Apr 24, 2021
by
陈羽
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
update: 绑定门店列表添加分页
parent
2aaae491
Hide whitespace changes
Inline
Side-by-side
Showing
11 changed files
with
199 additions
and
414 deletions
+199
-414
salesleads-task-info.vue
src/components/review/salesleads-task-info.vue
+49
-13
vue-office-header.vue
src/components/vue-office-header.vue
+0
-7
index.js
src/router/index.js
+0
-5
authMerchant.vue
src/views/business/authMerchant.vue
+9
-5
storeList.vue
src/views/business/storeList.vue
+4
-3
index.vue
src/views/salesleads/index.vue
+24
-0
salesleadsSet.vue
src/views/salesleads/salesleadsSet.vue
+1
-0
storeDetail.vue
src/views/salesleads/storeDetail.vue
+60
-8
storeList.vue
src/views/salesleads/storeList.vue
+30
-8
taskDetail.vue
src/views/salesleads/taskDetail.vue
+0
-359
taskList.vue
src/views/salesleads/taskList.vue
+22
-6
No files found.
src/components/review/salesleads-task-info.vue
View file @
140ae901
...
@@ -11,13 +11,20 @@
...
@@ -11,13 +11,20 @@
import salesleadsTaskinfo from '@/components/review/salesleads-task-info.vue';
import salesleadsTaskinfo from '@/components/review/salesleads-task-info.vue';
-->
-->
<
template
>
<
template
>
<el-dialog
title=
"完成详情"
:visible
.
sync=
"dialogVisible"
width=
"600px"
>
<el-dialog
title=
"完成详情"
:visible
.
sync=
"dialogVisible"
width=
"600px"
@
close=
"close"
>
<div
class=
""
>
<div
class=
""
>
<el-form
:model=
"ruleForm"
:rules=
"rules"
ref=
"ruleForm"
label-width=
"120px"
class=
"demo-ruleForm"
>
<el-form
:model=
"form"
:rules=
"rules"
ref=
"form"
label-width=
"120px"
class=
"demo-form"
>
<el-form-item
label=
"完成时间"
prop=
"appName"
>
</el-form-item>
<el-form-item
label=
"完成时间"
prop=
"overdueTime"
>
{{
form
.
finishTime
|
formatTimeStamp
}}
</el-form-item>
<el-form-item
label=
"完成方式"
prop=
"appId"
>
</el-form-item>
<el-form-item
label=
"完成方式"
prop=
"touchTypes"
>
{{
form
.
touchFinishTypeName
}}
</el-form-item>
<el-form-item
label=
"备注"
prop=
"title"
>
</el-form-item>
<el-form-item
label=
"备注"
prop=
"finishRemark"
>
{{
form
.
finishRemark
}}
</el-form-item>
<el-form-item
label=
"图片"
prop=
"title"
>
</el-form-item>
<el-form-item
label=
"图片"
prop=
"imgUrl"
>
<template
v-for=
"item in form.remarkImgUrl"
>
<el-popover
placement=
"right-start"
:open-delay=
"200"
width=
"300"
trigger=
"hover"
:key=
"item"
>
<img
style=
"display:block;width:100%"
:src=
"item"
alt=
""
/>
<el-image
slot=
"reference"
style=
"width: 40px; height: 40px"
:src=
"item"
fit=
"cover"
></el-image>
</el-popover>
</
template
>
</el-form-item>
</el-form>
</el-form>
</div>
</div>
</el-dialog>
</el-dialog>
...
@@ -37,19 +44,24 @@ export default {
...
@@ -37,19 +44,24 @@ export default {
return
{
return
{
dialogVisible
:
true
,
dialogVisible
:
true
,
form
:
{
form
:
{
appName
:
''
,
finishTime
:
null
,
appId
:
''
,
finishRemark
:
''
,
title
:
''
touchFinishTypeName
:
''
,
remarkImgUrl
:
[]
}
}
};
};
},
},
methods
:
{},
methods
:
{
close
()
{
this
.
$emit
(
'close'
);
}
},
watch
:
{
watch
:
{
item
(
newData
)
{
item
(
newData
)
{
const
that
=
this
;
const
that
=
this
;
if
(
Object
.
keys
(
newData
).
length
)
{
if
(
Object
.
keys
(
newData
).
length
)
{
that
.
$nextTick
(()
=>
{
that
.
$nextTick
(()
=>
{
that
.
ruleF
orm
=
JSON
.
parse
(
JSON
.
stringify
(
newData
));
that
.
f
orm
=
JSON
.
parse
(
JSON
.
stringify
(
newData
));
});
});
}
}
}
}
...
@@ -58,10 +70,34 @@ export default {
...
@@ -58,10 +70,34 @@ export default {
const
that
=
this
;
const
that
=
this
;
if
(
Object
.
keys
(
that
.
item
).
length
)
{
if
(
Object
.
keys
(
that
.
item
).
length
)
{
that
.
$nextTick
(()
=>
{
that
.
$nextTick
(()
=>
{
that
.
ruleF
orm
=
JSON
.
parse
(
JSON
.
stringify
(
that
.
item
));
that
.
f
orm
=
JSON
.
parse
(
JSON
.
stringify
(
that
.
item
));
});
});
}
}
}
}
};
};
</
script
>
</
script
>
<
style
lang=
"scss"
scoped
></
style
>
<
style
lang=
"scss"
scoped
>
>>>
.el-dialog__header
{
padding
:
19px
28px
;
}
>>>
.el-dialog__body
{
padding-top
:
10px
;
}
>>>
.el-form-item
{
margin-bottom
:
0
;
.el-form-item__label
{
line-height
:
30px
;
}
.el-form-item__content
{
font-size
:
14px
;
font-weight
:
400
;
color
:
#303133
;
line-height
:
30px
;
}
.el-popover__reference
{
margin-top
:
10px
;
margin-right
:
10px
;
border-radius
:
4px
;
}
}
</
style
>
src/components/vue-office-header.vue
View file @
140ae901
...
@@ -91,13 +91,6 @@ export default {
...
@@ -91,13 +91,6 @@ export default {
url
:
'/enterpriseSet?/adminList'
,
url
:
'/enterpriseSet?/adminList'
,
parentCode
:
null
,
parentCode
:
null
,
project
:
'office'
project
:
'office'
},
{
menuCode
:
null
,
rightName
:
'销售线索'
,
url
:
'/salesleads?/storeList'
,
parentCode
:
null
,
project
:
'office'
}
}
// {
// {
// menuCode: null,
// menuCode: null,
...
...
src/router/index.js
View file @
140ae901
...
@@ -161,11 +161,6 @@ export const constantRouterMap = [
...
@@ -161,11 +161,6 @@ export const constantRouterMap = [
component
:
_import
(
'salesleads'
,
'taskList'
),
component
:
_import
(
'salesleads'
,
'taskList'
),
},
},
{
{
path
:
'/taskDetail/:id'
,
name
:
'计划视图'
,
component
:
_import
(
'salesleads'
,
'taskDetail'
)
},
{
path
:
'/salesleadsSet'
,
path
:
'/salesleadsSet'
,
name
:
'销售线索设置'
,
name
:
'销售线索设置'
,
component
:
_import
(
'salesleads'
,
'salesleadsSet'
)
component
:
_import
(
'salesleads'
,
'salesleadsSet'
)
...
...
src/views/business/authMerchant.vue
View file @
140ae901
...
@@ -23,7 +23,10 @@
...
@@ -23,7 +23,10 @@
</div>
</div>
</div>
</div>
</div>
</div>
<div><span
class=
"color-909399 font-13 m-r-19"
>
最多授权 10 个商户
</span><el-button
v-if=
"tableData.length
<
10
"
type=
"primary"
@
click=
"AddAuthMerchant"
>
新建授权
</el-button></div>
<div>
<span
class=
"color-909399 font-13 m-r-19"
>
最多授权 10 个商户
</span>
<el-button
v-if=
"tableData.length
<
10
"
type=
"primary"
@
click=
"AddAuthMerchant"
>
新建授权
</el-button>
</div>
</div>
</div>
<div
class=
"m-t-20"
>
<div
class=
"m-t-20"
>
<el-table
class=
"select-table"
ref=
"multipleTable"
v-loading=
"loading"
:data=
"tableData"
tooltip-effect=
"dark"
:style=
"
{ width: '100%', minHeight: tableH }">
<el-table
class=
"select-table"
ref=
"multipleTable"
v-loading=
"loading"
:data=
"tableData"
tooltip-effect=
"dark"
:style=
"
{ width: '100%', minHeight: tableH }">
...
@@ -64,9 +67,9 @@
...
@@ -64,9 +67,9 @@
</
template
>
</
template
>
</el-table-column>
</el-table-column>
</el-table>
</el-table>
<
!-- <
div class="block common-wrap__page text-right m-t-24" v-if="tableData.length != 0">
<div
class=
"block common-wrap__page text-right m-t-24"
v-if=
"tableData.length != 0"
>
<dm-pagination background @size-change="handleSizeChange" @current-change="handleCurrentChange" :current-page="currentPage" :page-sizes="[20, 40, 60, 80]" :page-size="pageSize" layout="total, sizes, prev, pager, next, jumper" :total="
total
"> </dm-pagination>
<dm-pagination
background
@
size-change=
"handleSizeChange"
@
current-change=
"handleCurrentChange"
:current-page=
"currentPage"
:page-sizes=
"[20, 40, 60, 80]"
:page-size=
"pageSize"
layout=
"total, sizes, prev, pager, next, jumper"
:total=
"
8
"
>
</dm-pagination>
</div>
-->
</div>
</div>
</div>
</div>
</div>
</div>
</div>
...
@@ -106,7 +109,8 @@ export default {
...
@@ -106,7 +109,8 @@ export default {
pageSize
:
20
,
pageSize
:
20
,
total
:
0
,
total
:
0
,
tableData
:
[],
tableData
:
[],
addShow
:
false
addShow
:
false
,
activeBrand
:
''
};
};
},
},
computed
:
{},
computed
:
{},
...
...
src/views/business/storeList.vue
View file @
140ae901
...
@@ -42,9 +42,9 @@
...
@@ -42,9 +42,9 @@
</
template
>
</
template
>
</el-table-column>
</el-table-column>
</el-table>
</el-table>
<
!-- <div class="block common-wrap__page text-right m-t-24" v-if="tableData.length != 0
">
<
div
class=
"block common-wrap__page text-right m-t-24"
v-if=
"tableData.length
"
>
<
dm-pagination background @size-change="handleSizeChange" @current-change="handleCurrentChange" :current-page="pageNum" :page-sizes="[20, 40, 60, 80]" :page-size="pageSize" layout="total, sizes, prev, pager, next, jumper" :total="total"> </dm
-pagination>
<
el-pagination
background
@
size-change=
"handleSizeChange"
@
current-change=
"handleCurrentChange"
:current-page=
"pageParams.pageNum"
:page-sizes=
"[10, 20, 30]"
:page-size=
"pageParams.pageSize"
layout=
"total, sizes, prev, pager, next"
:total=
"total"
>
</el
-pagination>
</div>
-->
</div>
</div>
</div>
</div>
</div>
</div>
</div>
...
@@ -140,6 +140,7 @@ export default {
...
@@ -140,6 +140,7 @@ export default {
let
resData
=
res
.
data
;
let
resData
=
res
.
data
;
if
(
resData
.
errorCode
==
1
&&
resData
.
result
)
{
if
(
resData
.
errorCode
==
1
&&
resData
.
result
)
{
that
.
tableData
=
resData
.
result
.
result
||
[];
that
.
tableData
=
resData
.
result
.
result
||
[];
this
.
total
=
resData
.
result
.
totalCount
||
0
;
return
false
;
return
false
;
}
}
errMsg
.
errorMsg
(
resData
);
errMsg
.
errorMsg
(
resData
);
...
...
src/views/salesleads/index.vue
View file @
140ae901
...
@@ -314,3 +314,27 @@ export default {
...
@@ -314,3 +314,27 @@ export default {
}
}
}
}
</
style
>
</
style
>
<
style
lang=
"scss"
>
.salesleads-popover
{
padding
:
14px
!important
;
.m-b-10
{
margin-bottom
:
10px
;
}
p
{
font-size
:
14px
;
font-weight
:
400
;
color
:
#303133
;
line-height
:
20px
;
}
.temp
{
color
:
#909399
;
margin-bottom
:
4px
;
}
.m-l--6
{
margin-left
:
-6px
;
}
.m-b-14
{
margin-bottom
:
14px
;
}
}
</
style
>
src/views/salesleads/salesleadsSet.vue
View file @
140ae901
...
@@ -138,6 +138,7 @@ export default {
...
@@ -138,6 +138,7 @@ export default {
}
}
},
},
mounted
()
{
mounted
()
{
this
.
$emit
(
'showTab'
,
3
);
this
.
getDeatil
();
this
.
getDeatil
();
document
.
documentElement
.
style
.
backgroundColor
=
'#f0f2f5'
;
document
.
documentElement
.
style
.
backgroundColor
=
'#f0f2f5'
;
},
},
...
...
src/views/salesleads/storeDetail.vue
View file @
140ae901
...
@@ -21,10 +21,25 @@
...
@@ -21,10 +21,25 @@
<span
class=
"el-alert__title color-303133 font-13"
>
筛选时间:2020-12-31至2021-12-31
</span>
<span
class=
"el-alert__title color-303133 font-13"
>
筛选时间:2020-12-31至2021-12-31
</span>
</div>
</div>
</div>
</div>
<div
role=
"tips"
class=
"tips flex flex-align-center"
>
<el-popover
placement=
"bottom-start"
width=
"550"
trigger=
"click"
popper-class=
"salesleads-popover"
>
<i
class=
"el-icon-warning-outline font-14 color-2f54eb"
></i>
<div
class=
"tips-content"
>
<div
class=
"el-alert__content"
>
查看指标说明
</div>
<p>
展示所选期间内的导购线索,以线索为主体,不以时间为主体。
</p>
</div>
<p
class=
"temp"
>
如 所选时间为 20210401~20210403,则显示期间相关的导购线索数据。
</p>
<p
class=
"m-b-14"
>
导购线索:计划中触达到门店导购端的都归入导购线索,包括话务、企微任务。
</p>
<p
class=
"m-l--6"
>
【 任务完成率 】:
</p>
<p
class=
"m-b-10"
>
导购任务完成数 / 任务总数,任务完成数不含放弃数。
</p>
<p
class=
"m-l--6"
>
【 触达转化收益 】:
</p>
<p>
通过导购线索触达,且触达的会员在触达效益计算有效期内前来消费的人数。
<br
/>
多个导购线索任务触达的,转化只记在首个触达任务上;收益只计销售单,
<br
/>
不看退货单和换货单;金额是应付还是实付看ERP传入的值。数据更新频率:1天1次
</p>
</div>
<div
slot=
"reference"
role=
"tips"
class=
"tips flex flex-align-center"
>
<i
class=
"el-icon-warning-outline font-14 color-2f54eb"
></i>
<div
class=
"el-alert__content"
>
查看指标说明
</div>
</div>
</el-popover>
</div>
</div>
<div
class=
"table-condition-search m-t-20"
>
<div
class=
"table-condition-search m-t-20"
>
<el-select
class=
"w-103"
v-model=
"pageParams.taskStatus"
slot=
"prepend"
placeholder=
"所有完成情况"
@
change=
"reFetch"
>
<el-select
class=
"w-103"
v-model=
"pageParams.taskStatus"
slot=
"prepend"
placeholder=
"所有完成情况"
@
change=
"reFetch"
>
...
@@ -32,7 +47,7 @@
...
@@ -32,7 +47,7 @@
</el-select>
</el-select>
</div>
</div>
<div
class=
"m-t-20"
>
<div
class=
"m-t-20"
>
<el-table
class=
"select-table"
ref=
"multipleTable"
:data=
"tableData"
tooltip-effect=
"dark"
:style=
"
{ width: '100%', minHeight: tableH }">
<el-table
v-loading=
"loading"
class=
"select-table"
ref=
"multipleTable"
:data=
"tableData"
tooltip-effect=
"dark"
:style=
"
{ width: '100%', minHeight: tableH }">
<el-table-column
label=
"任务标题"
show-overflow-tooltip
width=
"87"
>
<el-table-column
label=
"任务标题"
show-overflow-tooltip
width=
"87"
>
<template
slot-scope=
"scope"
>
{{
scope
.
row
.
taskTitle
||
'--'
}}
</
template
>
<template
slot-scope=
"scope"
>
{{
scope
.
row
.
taskTitle
||
'--'
}}
</
template
>
</el-table-column>
</el-table-column>
...
@@ -92,7 +107,7 @@
...
@@ -92,7 +107,7 @@
<dm-pagination
background
@
size-change=
"handleSizeChange"
@
current-change=
"handleCurrentChange"
:current-page=
"pageNum"
:page-sizes=
"[20, 40, 60, 80]"
:page-size=
"pageSize"
layout=
"total, sizes, prev, pager, next, jumper"
:total=
"total"
>
</dm-pagination>
<dm-pagination
background
@
size-change=
"handleSizeChange"
@
current-change=
"handleCurrentChange"
:current-page=
"pageNum"
:page-sizes=
"[20, 40, 60, 80]"
:page-size=
"pageSize"
layout=
"total, sizes, prev, pager, next, jumper"
:total=
"total"
>
</dm-pagination>
</div>
</div>
</div>
</div>
<salesleads-taskinfo
:item=
"confirmDetail"
v-if=
"confirmDetailShow"
></salesleads-taskinfo>
<salesleads-taskinfo
:item=
"confirmDetail"
v-if=
"confirmDetailShow"
@
close=
"close"
></salesleads-taskinfo>
</div>
</div>
</div>
</div>
</div>
</div>
...
@@ -114,6 +129,7 @@ export default {
...
@@ -114,6 +129,7 @@ export default {
return
{
return
{
headDefault
,
headDefault
,
bgHeight
:
window
.
screen
.
availHeight
-
298
+
'px'
,
bgHeight
:
window
.
screen
.
availHeight
-
298
+
'px'
,
loading
:
false
,
// 面包屑参数
// 面包屑参数
navpath
:
[
navpath
:
[
{
{
...
@@ -246,8 +262,39 @@ export default {
...
@@ -246,8 +262,39 @@ export default {
});
});
});
});
},
},
showDetail
()
{
showDetail
(
item
)
{
this
.
confirmDetailShow
=
true
;
console
.
log
(
item
);
const
that
=
this
;
that
.
loading
=
true
;
const
para
=
{
enterpriseId
:
'ff8080815dacd3a2015dacd3ef5c0000'
,
taskId
:
'b72417e8bb89481bb841c1f02e47602b'
};
getRequest
(
'/haoban-task-manage-web/market/clue/web/task-finish-info'
,
para
)
.
then
(
res
=>
{
let
resData
=
res
.
data
;
if
(
resData
.
errorCode
==
1
&&
resData
.
result
)
{
that
.
confirmDetail
=
{
...
resData
.
result
};
if
(
resData
.
result
.
remarkImgUrl
)
{
that
.
confirmDetail
.
remarkImgUrl
=
resData
.
result
.
remarkImgUrl
.
split
(
','
);
}
this
.
confirmDetailShow
=
true
;
}
else
{
errMsg
.
errorMsg
(
resData
);
}
that
.
loading
=
false
;
})
.
catch
(
function
(
error
)
{
that
.
loading
=
false
;
that
.
$message
.
error
({
duration
:
1000
,
message
:
error
.
message
});
});
},
close
()
{
this
.
confirmDetailShow
=
false
;
this
.
confirmDetail
=
{};
}
}
},
},
watch
:
{},
watch
:
{},
...
@@ -255,6 +302,11 @@ export default {
...
@@ -255,6 +302,11 @@ export default {
const
that
=
this
;
const
that
=
this
;
that
.
getFilterOpts
();
that
.
getFilterOpts
();
that
.
getTableList
();
that
.
getTableList
();
if
(
that
.
$route
.
query
.
tab
)
{
that
.
$emit
(
'showTab'
,
2
);
}
else
{
that
.
$emit
(
'showTab'
,
1
);
}
document
.
documentElement
.
style
.
backgroundColor
=
'#f0f2f5'
;
document
.
documentElement
.
style
.
backgroundColor
=
'#f0f2f5'
;
},
},
destroyed
()
{
destroyed
()
{
...
...
src/views/salesleads/storeList.vue
View file @
140ae901
...
@@ -21,12 +21,25 @@
...
@@ -21,12 +21,25 @@
<span
class=
"el-alert__title color-303133 font-13"
>
仅展示近一年数据,数据截取时间:2020-12-31至2021-12-31
</span>
<span
class=
"el-alert__title color-303133 font-13"
>
仅展示近一年数据,数据截取时间:2020-12-31至2021-12-31
</span>
</div>
</div>
</div>
</div>
<div
role=
"tips"
class=
"tips flex flex-align-center"
>
<el-popover
placement=
"bottom-start"
width=
"550"
trigger=
"click"
popper-class=
"salesleads-popover"
>
<i
class=
"el-icon-warning-outline font-14 color-2f54eb"
></i>
<div
class=
"tips-content"
>
<el-popover
placement=
"bottom-start"
title=
"标题"
width=
"200"
trigger=
"click"
content=
"这是一段内容,这是一段内容,这是一段内容,这是一段内容。"
>
<p>
展示所选期间内的导购线索,以线索为主体,不以时间为主体。
</p>
<div
slot=
"reference"
class=
"el-alert__content"
>
查看指标说明
</div>
<p
class=
"temp"
>
如 所选时间为 20210401~20210403,则显示期间相关的导购线索数据。
</p>
</el-popover>
<p
class=
"m-b-14"
>
导购线索:计划中触达到门店导购端的都归入导购线索,包括话务、企微任务。
</p>
</div>
<p
class=
"m-l--6"
>
【 任务完成率 】:
</p>
<p
class=
"m-b-10"
>
导购任务完成数 / 任务总数,任务完成数不含放弃数。
</p>
<p
class=
"m-l--6"
>
【 触达转化收益 】:
</p>
<p>
通过导购线索触达,且触达的会员在触达效益计算有效期内前来消费的人数。
<br
/>
多个导购线索任务触达的,转化只记在首个触达任务上;收益只计销售单,
<br
/>
不看退货单和换货单;金额是应付还是实付看ERP传入的值。数据更新频率:1天1次
</p>
</div>
<div
slot=
"reference"
role=
"tips"
class=
"tips flex flex-align-center"
>
<i
class=
"el-icon-warning-outline font-14 color-2f54eb"
></i>
<div
class=
"el-alert__content"
>
查看指标说明
</div>
</div>
</el-popover>
</div>
</div>
<div
class=
"table-condition-search m-t-20"
>
<div
class=
"table-condition-search m-t-20"
>
<el-input
placeholder=
"请输入门店名称"
prefix-icon=
"el-icon-search"
v-model=
"pageParams.storeName"
class=
"w-260"
@
change=
"reFetch"
clearable
@
clear=
"clearInput"
>
</el-input>
<el-input
placeholder=
"请输入门店名称"
prefix-icon=
"el-icon-search"
v-model=
"pageParams.storeName"
class=
"w-260"
@
change=
"reFetch"
clearable
@
clear=
"clearInput"
>
</el-input>
...
@@ -193,13 +206,22 @@ export default {
...
@@ -193,13 +206,22 @@ export default {
});
});
},
},
showDetail
(
item
)
{
showDetail
(
item
)
{
this
.
$router
.
push
(
`storeDetail/
${
item
.
storeId
}
`
);
if
(
this
.
$route
.
query
.
gicTaskId
)
{
this
.
$router
.
push
(
`storeDetail/
${
item
.
storeId
}
?tab=2`
);
}
else
{
this
.
$router
.
push
(
`storeDetail/
${
item
.
storeId
}
`
);
}
}
}
},
},
watch
:
{},
watch
:
{},
mounted
()
{
mounted
()
{
//
const that = this;
const
that
=
this
;
// that.getTableList();
// that.getTableList();
if
(
this
.
$route
.
query
.
gicTaskId
)
{
that
.
$emit
(
'showTab'
,
2
);
}
else
{
that
.
$emit
(
'showTab'
,
1
);
}
document
.
documentElement
.
style
.
backgroundColor
=
'#f0f2f5'
;
document
.
documentElement
.
style
.
backgroundColor
=
'#f0f2f5'
;
},
},
destroyed
()
{
destroyed
()
{
...
...
src/views/salesleads/taskDetail.vue
deleted
100644 → 0
View file @
2aaae491
<!--
* @Descripttion: 当前组件信息
* @version: 1.0.0
* @Author: 无尘
* @Date: 2019-03-20 14:36:37
* @LastEditors: 无尘
* @LastEditTime: 2020-08-26 10:05:42
-->
<
template
>
<div
class=
"my-customer-wrap common-set-wrap"
>
<!--
<nav-crumb
:navpath=
"navpath"
>
</nav-crumb>
-->
<div
class=
"right-content"
>
<div
class=
"right-box"
:style=
"
{ 'min-height': bgHeight }">
<div
class=
"apps-content flex"
:style=
"
{ 'min-height': bgHeight }">
<div
class=
"apps-content-right"
>
<div
class=
"overstore-body"
>
<div
class=
"overstore-tip"
>
<div
role=
"alert"
class=
"el-alert el-alert--info flex flex-align-start "
>
<i
class=
"el-alert__icon el-icon-warning font-12 color-2f54eb"
></i>
<div
class=
"el-alert__content"
>
<span
class=
"el-alert__title color-303133 font-13"
>
筛选时间:2020-12-31至2021-12-31
</span>
</div>
</div>
<div
role=
"tips"
class=
"tips flex flex-align-center"
>
<i
class=
"el-icon-warning-outline font-14 color-2f54eb"
></i>
<div
class=
"el-alert__content"
>
查看指标说明
</div>
</div>
</div>
<div
class=
"table-condition-search m-t-20"
>
<el-select
class=
"w-103"
v-model=
"pageParams.taskStatus"
slot=
"prepend"
placeholder=
"所有完成情况"
@
change=
"reFetch"
>
<el-option
label=
"已完成"
:value=
"2"
></el-option>
<el-option
label=
"未完成"
:value=
"1"
></el-option>
</el-select>
</div>
<div
class=
"m-t-20"
>
<el-table
class=
"select-table"
ref=
"multipleTable"
:data=
"tableData"
tooltip-effect=
"dark"
:style=
"
{ width: '100%', minHeight: tableH }">
<el-table-column
label=
"任务标题"
show-overflow-tooltip
width=
"87"
>
<template
slot-scope=
"scope"
>
{{
scope
.
row
.
taskTitle
||
'--'
}}
</
template
>
</el-table-column>
<el-table-column
prop=
""
label=
"指派对象"
width=
"176"
>
<
template
slot-scope=
"scope"
>
<div
class=
"flex flex-align-center personal-info"
>
<el-image
:src=
"scope.row.clerkImgUrl || headDefault"
fit=
"cover"
></el-image>
<div>
<p
class=
"color-303133 line-20"
>
{{
scope
.
row
.
clerkName
||
'--'
}}
</p>
<p
class=
"color-909399 line-20"
>
{{
scope
.
row
.
clerkPhoneNum
||
'--'
}}
</p>
</div>
</div>
</
template
>
</el-table-column>
<el-table-column
prop=
""
label=
"会员"
>
<
template
slot-scope=
"scope"
>
<div
class=
"flex flex-align-center personal-info"
>
<el-image
:src=
"scope.row.memberImgUrl || headDefault"
fit=
"cover"
></el-image>
<div>
<p
class=
"color-303133 line-20"
>
{{
scope
.
row
.
memberName
||
'--'
}}
</p>
<p
class=
"color-909399 line-20"
>
{{
scope
.
row
.
memberCardNum
||
'--'
}}
</p>
</div>
</div>
</
template
>
</el-table-column>
<el-table-column
prop=
""
label=
"创建时间"
width=
"114"
>
<
template
slot-scope=
"scope"
>
<div
class=
"color-606266 line-20"
>
{{
scope
.
row
.
createTime
|
timeStampToYmd
}}
</div>
<div
class=
"color-606266 line-20"
>
{{
scope
.
row
.
createTime
|
timeStampToHms
}}
</div>
</
template
>
</el-table-column>
<el-table-column
prop=
""
label=
"逾期期限"
width=
"114"
>
<
template
slot-scope=
"scope"
>
<div
class=
"color-606266 line-20"
>
{{
scope
.
row
.
overdueTime
|
timeStampToYmd
}}
</div>
<div
class=
"color-606266 line-20"
>
{{
scope
.
row
.
overdueTime
|
timeStampToHms
}}
</div>
</
template
>
</el-table-column>
<el-table-column
prop=
""
label=
"逾期情况"
width=
"102"
>
<
template
slot-scope=
"scope"
><span
class=
"point"
:style=
"'background:' + overdueStyle[scope.row.overdueStatus] + ';'"
></span>
{{
scope
.
row
.
overdueStatus
===
1
?
'未逾期'
:
scope
.
row
.
overdueStatus
===
2
?
'已逾期'
:
''
}}
</
template
>
</el-table-column>
<el-table-column
prop=
""
label=
"完成状态"
width=
"102"
>
<
template
slot-scope=
"scope"
><span
class=
"point"
:style=
"'background:' + taskStyle[scope.row.taskStatus] + ';'"
></span>
{{
scope
.
row
.
taskStatus
===
1
?
'未完成'
:
scope
.
row
.
taskStatus
===
2
?
'已完成'
:
''
}}
</
template
>
</el-table-column>
<el-table-column
prop=
""
label=
"完成详情"
>
<
template
slot-scope=
"scope"
>
<el-button
type=
"text"
size=
"small"
@
click=
"showDetail(scope.row)"
>
查看
</el-button>
</
template
>
</el-table-column>
<!-- <el-table-column prop="" label="操作" width="150">
<template slot-scope="scope">
<el-button type="text" size="small" @click="showDetail(scope.row)">预览</el-button>
<el-button type="text" size="small" @click="showDetail(scope.row)">删除</el-button>
</template>
</el-table-column> -->
</el-table>
<div
class=
"block common-wrap__page text-right m-t-24"
v-if=
"tableData.length != 0"
>
<dm-pagination
background
@
size-change=
"handleSizeChange"
@
current-change=
"handleCurrentChange"
:current-page=
"pageNum"
:page-sizes=
"[20, 40, 60, 80]"
:page-size=
"pageSize"
layout=
"total, sizes, prev, pager, next, jumper"
:total=
"total"
>
</dm-pagination>
</div>
</div>
<salesleads-taskinfo
:item=
"confirmDetail"
v-if=
"confirmDetailShow"
></salesleads-taskinfo>
</div>
</div>
</div>
</div>
</div>
<!-- <vue-gic-footer></vue-gic-footer> -->
</div>
</template>
<
script
>
import
salesleadsTaskinfo
from
'@/components/review/salesleads-task-info.vue'
;
import
headDefault
from
'@/assets/head_default.jpg'
;
import
navCrumb
from
'@/components/nav/nav.vue'
;
import
{
getRequest
}
from
'@/api/api'
;
import
errMsg
from
'@/common/js/error'
;
import
{
_debounce
}
from
'@/common/js/public'
;
export
default
{
name
:
'taskDetail'
,
data
()
{
return
{
headDefault
,
bgHeight
:
window
.
screen
.
availHeight
-
298
+
'px'
,
// 面包屑参数
navpath
:
[
{
name
:
'首页'
,
path
:
'/index'
},
{
name
:
'销售线索'
,
path
:
''
}
],
pageParams
:
{
storeId
:
this
.
$route
.
params
.
id
,
pageNum
:
1
,
pageSize
:
20
,
overdueStatus
:
1
},
// 分页参数
total
:
0
,
tableData
:
[
{
taskId
:
'12'
,
// 任务id
taskTitle
:
'kasjhdk'
,
// 任务名称
clerkId
:
'sdfsdf'
,
// 导购id
clerkName
:
'sdfsdf'
,
// 导购名字
clerkImgUrl
:
''
,
// 导购头像
clerkPhoneNum
:
'13634565656'
,
// 导购手机号
memberId
:
'sdfsdf'
,
// 会员id
memberName
:
'sdfsdf'
,
// 会员名称
memberImgUrl
:
''
,
// 会员头像
memberCardNum
:
'3332345665654332039'
,
// 会员卡号
createTime
:
'2021-03-24T15:19:00'
,
// 创建时间
overdueTime
:
'2021-03-24T15:19:00'
,
// 逾期时间
overdueStatus
:
1
,
// 逾期状态
taskStatus
:
2
// 完成状态
}
],
overdueStyle
:
[
'none'
,
'#2F54EB'
,
'#F5222D'
],
taskStyle
:
[
'none'
,
'#F5222D'
,
'#33AF4A'
],
confirmDetailShow
:
false
,
confirmDetail
:
{},
pickerOptions
:
{
disabledDate
:
time
=>
{
const
end
=
new
Date
();
return
time
.
getTime
()
<
end
.
getTime
()
-
3600
*
1000
*
24
*
365
||
time
.
getTime
()
>
end
.
getTime
();
}
}
};
},
computed
:
{},
methods
:
{
/**
* 路由跳转
*/
changeRoute
(
path
)
{
this
.
$router
.
push
(
path
);
},
/**
* 筛选
*/
reFetch
:
_debounce
(
function
(
e
,
value
)
{
const
that
=
this
;
that
.
pageParams
.
pageNum
=
1
;
that
.
getTableList
();
},
500
),
/**
* 分页---页码变化
* @param {Number} val
*/
handleSizeChange
(
val
)
{
const
that
=
this
;
that
.
pageParams
.
pageNum
=
1
;
that
.
pageParams
.
pageSize
=
val
;
that
.
getTableList
();
},
/**
* 分页---当前页变化
* @param {Number} val
*/
handleCurrentChange
(
val
)
{
const
that
=
this
;
that
.
pageParams
.
pageNum
=
val
;
that
.
getTableList
();
},
/**
* 获取列表数据
*/
getTableList
(
val
)
{
const
that
=
this
;
let
para
=
{
...
that
.
pageParams
};
if
(
para
.
date
)
{
para
.
startTime
=
para
.
date
[
0
];
para
.
endTime
=
para
.
date
[
1
];
delete
para
.
date
;
}
getRequest
(
'/haoban-manage3-web/store-full-list'
,
para
)
.
then
(
res
=>
{
let
resData
=
res
.
data
;
if
(
resData
.
errorCode
==
1
)
{
that
.
tableData
=
resData
.
result
.
list
||
[];
that
.
total
=
resData
.
result
.
total
;
}
else
{
errMsg
.
errorMsg
(
resData
);
}
})
.
catch
(
function
(
error
)
{
that
.
$message
.
error
({
duration
:
1000
,
message
:
error
.
message
});
});
},
showDetail
()
{
this
.
confirmDetailShow
=
true
;
}
},
watch
:
{},
mounted
()
{
// const that = this;
// that.getTableList();
document
.
documentElement
.
style
.
backgroundColor
=
'#f0f2f5'
;
},
destroyed
()
{
document
.
documentElement
.
style
.
backgroundColor
=
'#fff'
;
},
components
:
{
navCrumb
,
salesleadsTaskinfo
}
};
</
script
>
<
style
type=
"text/scss"
lang=
"scss"
scoped
>
.bg-82C5FF
{
background
:
#82c5ff
;
}
.color-508CEE
{
color
:
#508cee
;
}
.color-FF585C
{
color
:
#ff585c
;
}
.line-h-18
{
line-height
:
18px
;
}
.tooltip-text
{
width
:
100%
;
white-space
:
pre-wrap
;
word-break
:
break-all
;
}
.w-260
{
width
:
260px
;
}
.el-alert--info
{
background
:
rgba
(
240
,
245
,
255
,
1
);
border-radius
:
2px
;
border
:
1px
solid
rgba
(
133
,
165
,
255
,
1
);
-webkit-box-align
:
flex-start
;
-webkit-align-items
:
flex-start
;
-ms-flex-align
:
flex-start
;
align-items
:
flex-start
;
.el-alert__icon
{
font-size
:
12px
;
}
}
.my-customer-wrap
{
height
:
100%
;
}
.right-content
{
/*width: 100%;*/
padding
:
0
;
min-height
:
calc
(
100%
-
160px
);
.right-box
{
background
:
#fff
;
min-height
:
500px
;
padding
:
0px
;
.apps-content
{
.apps-content-right
{
width
:
100%
;
padding
:
20px
;
background
:
#fff
;
.overstore-body
{
background
:
#fff
;
.overstore-tip
{
display
:
flex
;
justify-content
:
flex-start
;
align-items
:
center
;
.el-alert--info
{
align-items
:
center
;
width
:
291px
;
height
:
32px
;
padding
:
0
0
0
17px
;
margin-right
:
17px
;
.el-alert__content
{
padding-left
:
0
;
}
}
.tips
{
cursor
:
pointer
;
.el-alert__content
{
font-size
:
13px
;
font-weight
:
400
;
color
:
#2f54eb
;
line-height
:
1
;
}
}
}
}
.daily-set-wrap
{
height
:
100%
;
background
:
#fff
;
}
.app-detail-wrap
{
height
:
100%
;
background
:
#fff
;
}
.common-set-wrap
{
height
:
100%
;
background
:
#fff
;
}
}
}
}
}
.personal-info
{
.el-image
{
width
:
40px
;
height
:
40px
;
margin-right
:
10px
;
}
}
.point
{
display
:
inline-block
;
width
:
6px
;
height
:
6px
;
vertical-align
:
top
;
margin-top
:
8px
;
border-radius
:
100%
;
margin-right
:
5px
;
}
</
style
>
<
style
lang=
"sass"
></
style
>
src/views/salesleads/taskList.vue
View file @
140ae901
...
@@ -21,10 +21,25 @@
...
@@ -21,10 +21,25 @@
<span
class=
"el-alert__title color-303133 font-13"
>
仅展示近一年数据,数据截取时间:2020-12-31至2021-12-31
</span>
<span
class=
"el-alert__title color-303133 font-13"
>
仅展示近一年数据,数据截取时间:2020-12-31至2021-12-31
</span>
</div>
</div>
</div>
</div>
<div
role=
"tips"
class=
"tips flex flex-align-center"
>
<el-popover
placement=
"bottom-start"
width=
"550"
trigger=
"click"
popper-class=
"salesleads-popover"
>
<i
class=
"el-icon-warning-outline font-14 color-2f54eb"
></i>
<div
class=
"tips-content"
>
<div
class=
"el-alert__content"
>
查看指标说明
</div>
<p>
展示所选期间内的导购线索,以线索为主体,不以时间为主体。
</p>
</div>
<p
class=
"temp"
>
如 所选时间为 20210401~20210403,则显示期间相关的导购线索数据。
</p>
<p
class=
"m-b-14"
>
导购线索:计划中触达到门店导购端的都归入导购线索,包括话务、企微任务。
</p>
<p
class=
"m-l--6"
>
【 任务完成率 】:
</p>
<p
class=
"m-b-10"
>
导购任务完成数 / 任务总数,任务完成数不含放弃数。
</p>
<p
class=
"m-l--6"
>
【 触达转化收益 】:
</p>
<p>
通过导购线索触达,且触达的会员在触达效益计算有效期内前来消费的人数。
<br
/>
多个导购线索任务触达的,转化只记在首个触达任务上;收益只计销售单,
<br
/>
不看退货单和换货单;金额是应付还是实付看ERP传入的值。数据更新频率:1天1次
</p>
</div>
<div
slot=
"reference"
role=
"tips"
class=
"tips flex flex-align-center"
>
<i
class=
"el-icon-warning-outline font-14 color-2f54eb"
></i>
<div
class=
"el-alert__content"
>
查看指标说明
</div>
</div>
</el-popover>
</div>
</div>
<div
class=
"table-condition-search m-t-20"
>
<div
class=
"table-condition-search m-t-20"
>
<el-input
placeholder=
"请输入计划名称"
prefix-icon=
"el-icon-search"
v-model=
"pageParams.cluePlanName"
class=
"w-260"
@
change=
"reFetch"
clearable
@
clear=
"clearInput"
>
</el-input>
<el-input
placeholder=
"请输入计划名称"
prefix-icon=
"el-icon-search"
v-model=
"pageParams.cluePlanName"
class=
"w-260"
@
change=
"reFetch"
clearable
@
clear=
"clearInput"
>
</el-input>
...
@@ -184,13 +199,14 @@ export default {
...
@@ -184,13 +199,14 @@ export default {
});
});
},
},
showDetail
(
item
)
{
showDetail
(
item
)
{
this
.
$router
.
push
(
`
taskDetail/
${
item
.
gicTaskId
}
`
);
this
.
$router
.
push
(
`
storeList?gicTaskId=
${
item
.
gicTaskId
}
`
);
}
}
},
},
watch
:
{},
watch
:
{},
mounted
()
{
mounted
()
{
//
const that = this;
const
that
=
this
;
// that.getTableList();
// that.getTableList();
that
.
$emit
(
'showTab'
,
2
);
document
.
documentElement
.
style
.
backgroundColor
=
'#f0f2f5'
;
document
.
documentElement
.
style
.
backgroundColor
=
'#f0f2f5'
;
},
},
destroyed
()
{
destroyed
()
{
...
...
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