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
0d129e89
Commit
0d129e89
authored
Sep 19, 2022
by
Jings
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
add: 新增导购视图页面
parent
a40581a7
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
773 additions
and
0 deletions
+773
-0
shopGuidView.vue
src/views/salesleads/trafficTask/shopGuidView.vue
+773
-0
No files found.
src/views/salesleads/trafficTask/shopGuidView.vue
0 → 100644
View file @
0d129e89
<
template
>
<div
class=
"my-customer-wrap common-set-wrap"
>
<div
class=
"daily-set-content boder-box"
>
<div
class=
"table-condition flex flex-space-between m-b-23"
>
<div
class=
"table-condition-left flex flex-align-center"
>
<!-- TODO: 这里的搜索字段需要明确 -->
<el-input
placeholder=
"计划名称"
maxlength=
"50"
v-model=
"conditionObj.searchInput"
class=
"w-264"
style=
"width: 264px;"
@
keyup
.
native=
"value => toInput(value, conditionObj.searchInput)"
>
<i
slot=
"prefix"
class=
"el-input__icon el-icon-search"
></i>
</el-input>
<el-input
placeholder=
"任务标题"
maxlength=
"50"
v-model=
"conditionObj.searchInput"
class=
"w-264 m-l-10"
style=
"width: 264px;"
@
keyup
.
native=
"value => toInput(value, conditionObj.searchInput)"
>
<i
slot=
"prefix"
class=
"el-input__icon el-icon-search"
></i>
</el-input>
<el-input
placeholder=
"导购名称/手机号"
maxlength=
"50"
v-model=
"conditionObj.searchInput"
class=
"w-264 m-l-10"
style=
"width: 264px;"
@
keyup
.
native=
"value => toInput(value, conditionObj.searchInput)"
>
<i
slot=
"prefix"
class=
"el-input__icon el-icon-search"
></i>
</el-input>
<el-select
v-model=
"conditionObj.completed"
placeholder=
"请选择"
class=
"w-135 m-l-10"
@
change=
"changeSelect"
>
<el-option
v-for=
"item in completedOptions"
:key=
"item.value"
:label=
"item.label"
:value=
"item.value"
>
</el-option>
</el-select>
</div>
</div>
<div
class=
"table-condition flex flex-space-between m-b-23"
>
<div
class=
"table-condition-left flex flex-align-center"
>
<el-input
placeholder=
"请输入门店名称"
maxlength=
"50"
v-model=
"conditionObj.searchInput"
class=
"w-264"
style=
"width: 264px;"
@
keyup
.
native=
"value => toInput(value, conditionObj.searchInput)"
>
<i
slot=
"prefix"
class=
"el-input__icon el-icon-search"
></i>
</el-input>
<gic-select-group
:brandId=
"brandId"
class=
"m-l-10"
style=
"min-width: 213px !important;"
:width=
"213"
:selectData=
"conditionObj.storeGroup"
@
checkGroupIds=
"checkGroupIds"
>
</gic-select-group>
<el-date-picker
class=
"m-l-10"
prefix-icon=
"el-icon-time"
:picker-options=
"pickerOptions"
v-model=
"conditionObj.date"
@
change=
"changeSelect"
:value-format=
"'yyyy-MM-dd'"
type=
"daterange"
align=
"right"
unlink-panels
range-separator=
"至"
start-placeholder=
"开始时间"
end-placeholder=
"结束时间"
>
</el-date-picker>
</div>
<div
class=
"table-condition-right"
>
<el-button
v-if=
"$getButtonLimit($buttonCode.multipleDelTaskDetail)"
:limit-code=
"$buttonCode.multipleDelTaskDetail"
type=
"danger"
@
click=
"multDel"
>
批量删除
</el-button>
<el-button
class=
"m-l-10"
type=
"primary"
v-if=
"$getButtonLimit($buttonCode.exportTaskDetail)"
:limit-code=
"$buttonCode.exportTaskDetail"
:loading=
"loadingBtn"
@
click=
"beforeExportExcel"
plain
>
导出
</el-button>
<el-tooltip
content=
"导出结果中会员姓名、手机号等敏感信息将进行加密,实现隐私保护"
placement=
"top"
>
<i
class=
"el-icon-warning-outline font-14 p-l-6"
v-show=
"enableDownloadCompleteData == 0"
></i>
</el-tooltip>
</div>
</div>
<el-table
class=
"select-table"
ref=
"multipleTable"
:key=
"tableRefresh"
v-loading=
"loading"
:data=
"tableData"
tooltip-effect=
"dark"
:style=
"
{ width: '100%', minHeight: tableH }" @selection-change="handleSelectionChange">
<el-table-column
type=
"selection"
width=
"45"
:class-name=
"selectRadio == 1 ? 'cell-disabled' : 'font-size-zero'"
>
</el-table-column>
<el-table-column
width=
"25"
>
<template
#
header
>
<el-dropdown
style=
"line-height: 10px; padding: 0; margin-left: -15px; transform: translateY(4px); -webkit-transform: translateY(4px);"
placement=
"bottom-start"
>
<span
class=
"el-dropdown-link"
><i
class=
"iconfont-hb3 icongengduo"
></i>
</span>
<el-dropdown-menu
slot=
"dropdown"
>
<el-dropdown-item>
<el-checkbox
v-model=
"selectRadio"
:true-label=
"0"
:false-label=
"2"
@
change=
"handleCommand"
>
选择当页
</el-checkbox></el-dropdown-item>
<el-dropdown-item>
<el-checkbox
v-model=
"selectRadio"
:true-label=
"1"
:false-label=
"2"
@
change=
"handleCommand"
>
选择全部
</el-checkbox></el-dropdown-item>
</el-dropdown-menu>
</el-dropdown>
</
template
>
<
template
>
{{
' '
}}
</
template
>
</el-table-column>
<el-table-column
label=
"计划名称"
></el-table-column>
<el-table-column
prop=
"title"
label=
"任务标题"
show-overflow-tooltip
></el-table-column>
<el-table-column
label=
"门店名称"
></el-table-column>
<el-table-column
label=
"门店分组"
></el-table-column>
<el-table-column
label=
"导购"
show-overflow-tooltip
width=
"170"
>
<
template
slot-scope=
"scope"
>
<div
class=
"flex flex-pack-center flex-start"
>
<el-popover
placement=
"top-start"
width=
"300"
trigger=
"hover"
@
show=
"showSingleInfo(scope.row.clerkId)"
>
<div
class=
"apply-info-detail"
>
<div
class=
"flex"
>
<div
class=
"apply-info-img flex-align-center flex-pack-center bg-82C5FF "
>
<i
v-if=
"!userData.headImg"
class=
"iconfont-hb3 icon-yewuduanmorentouxian"
></i>
<img
v-else
:src=
"userData.headImg"
alt=
"img"
/>
</div>
<div
class=
"flex flex-column apply-info-right flex-space-between"
>
<div
class=
"apply-info-name"
>
{{
userData
.
staffName
||
'--'
}}
(
{{
userData
.
position
||
'--'
}}
)
<!--
<i
:class=
"[userData.sex == 2 ? 'icon-xingbienv color-FF585C' : 'icon-xingbienan color-508CEE', 'iconfont-hb3']"
></i>
-->
</div>
<div
class=
"apply-info-phone"
>
<span
class=
"w-80"
>
手机号:
</span><span
class=
"w-130"
>
{{
userData
.
nationCode
==
'86'
?
userData
.
phoneNumber
:
'+'
+
userData
.
nationCode
+
'-'
+
userData
.
phoneNumber
}}
</span>
</div>
<div
class=
"apply-info-store"
>
<span
class=
"w-80"
>
所属部门:
</span><span
class=
"w-130"
>
{{
userData
.
departmentName
||
'--'
}}
</span>
</div>
</div>
</div>
</div>
<div
slot=
"reference"
>
<div
class=
"flex flex-align-center flex-pack-center bg-82C5FF table-head-pic cursor-pointer"
>
<i
v-if=
"!scope.row.headImgUrl"
class=
"iconfont-hb3 icon-yewuduanmorentouxian"
></i>
<img
v-else
:src=
"scope.row.headImgUrl"
alt=
"img"
/>
</div>
</div>
</el-popover>
<div
class=
"clerk-info flex flex-column flex-space-between m-l-16"
style=
"overflow: hidden; text-overflow: ellipsis; white-space: nowrap;"
>
<p
class=
"font-14 color-303133"
style=
"line-height: 18px;overflow: hidden; text-overflow: ellipsis; white-space: nowrap;"
>
{{
scope
.
row
.
clerkName
}}
</p>
<p
class=
"font-14 color-909399"
style=
"line-height: 18px;width: 100%; overflow:hidden;text-overflow: ellipsis;"
>
{{
scope
.
row
.
clerkPhone
}}
</p>
</div>
</div>
</
template
>
</el-table-column>
<el-table-column
label=
"会员"
show-overflow-tooltip
width=
"170"
>
<
template
slot-scope=
"scope"
>
<div
class=
"flex flex-pack-center flex-start"
>
<div
class=
"flex flex-align-center flex-pack-center bg-82C5FF table-head-pic cursor-pointer"
>
<i
v-if=
"!scope.row.memberHeadUrl"
class=
"iconfont-hb3 icon-yewuduanmorentouxian"
></i>
<img
v-else
:src=
"scope.row.memberHeadUrl"
alt=
"img"
/>
</div>
<div
class=
"clerk-info flex flex-column flex-space-between m-l-16"
style=
"overflow: hidden; text-overflow: ellipsis; white-space: nowrap;"
>
<p
class=
"font-14 color-303133"
style=
"line-height: 18px;overflow: hidden; text-overflow: ellipsis; white-space: nowrap;"
>
{{
scope
.
row
.
memberName
}}
</p>
<p
class=
"font-14 color-909399"
style=
"line-height: 18px;width: 100%; overflow:hidden;text-overflow: ellipsis;"
>
{{
scope
.
row
.
memberCardNo
}}
</p>
</div>
</div>
</
template
>
</el-table-column>
<el-table-column
label=
"任务创建时间"
width=
"107"
>
<
template
slot-scope=
"scope"
>
<div
class=
"line-18"
>
{{
scope
.
row
.
createTime
|
formatTimeYMD
}}
</div>
<div
class=
"line-18"
>
{{
scope
.
row
.
createTime
|
formatTimeHMS
}}
</div>
</
template
>
</el-table-column>
<el-table-column
prop=
""
label=
"完成期限"
show-overflow-tooltip
width=
"107"
>
<
template
slot-scope=
"scope"
>
<div
class=
"line-18"
>
{{
scope
.
row
.
lastTime
|
formatTimeYMD
}}
</div>
<div
class=
"line-18"
>
{{
scope
.
row
.
lastTime
|
formatTimeHMS
}}
</div>
</
template
>
</el-table-column>
<el-table-column
label=
"逾期情况/逾期失效"
width=
"140"
>
<
template
slot-scope=
"scope"
>
<span
class=
"point"
:style=
"'background:' + overdueStyle[scope.row.isOverTime] + ';'"
></span>
{{
scope
.
row
.
isOverTime
}}
/
{{
scope
.
row
.
invalidStatus
|
formatInvalidStatus
}}
</
template
>
</el-table-column>
<el-table-column
label=
"完成情况"
>
<
template
#
header
>
<el-tooltip
class=
"item"
effect=
"light"
placement=
"right"
>
<div
slot=
"content"
>
完成情况包含3种
<br
/>
1.完成拨打任务;
<br
/>
2.完成任务(无需拨打);
<br
/>
3.完成任务(放弃拨打);
<br
/>
4.未完成任务
</div>
<span
style=
"cursor: pointer;padding-bottom: 2px; border-bottom: 1px dashed #2F54EB;"
>
完成情况
</span>
</el-tooltip>
</
template
>
<
template
slot-scope=
"scope"
>
<span
class=
"point"
:style=
"'background:' + taskStyle[scope.row.taskStatus] + ';'"
></span>
{{
scope
.
row
.
isCompleted
}}
</
template
>
</el-table-column>
<el-table-column
label=
"操作"
fixed=
"right"
width=
"200"
v-if=
"$getButtonLimit($buttonCode.delTaskDetail) || $getButtonLimit($buttonCode.previewTaskDetail) || $getButtonLimit($buttonCode.resolveTaskDetail)"
>
<
template
slot-scope=
"scope"
>
<el-button
v-if=
"$getButtonLimit($buttonCode.delTaskDetail)"
:limit-code=
"$buttonCode.delTaskDetail"
type=
"text"
@
click=
"handleDel(scope.$index, scope.row)"
>
删除
</el-button>
<el-button
v-if=
"$getButtonLimit($buttonCode.previewTaskDetail)"
:limit-code=
"$buttonCode.previewTaskDetail"
type=
"text"
@
click=
"getPreviewData(scope.$index, scope.row)"
>
预览
</el-button>
<el-button
v-if=
"$getButtonLimit($buttonCode.resolveTaskDetail)"
:limit-code=
"$buttonCode.resolveTaskDetail"
type=
"text"
@
click=
"getTaskDetail(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=
"currentPage"
:page-sizes=
"[20, 40, 60, 80]"
:page-size=
"pageSize"
layout=
"total, sizes, prev, pager, next, jumper"
:total=
"total"
>
</dm-pagination>
</div>
</div>
<!-- <multiple-del :showDialog="showDialog" :detailFlag="true" @hideDialog="hideDialog" :showTip="true"> </multiple-del> -->
<export-dialog
:dialogVisible=
"exportDialog"
@
export=
"exportExcel"
@
update:dialogVisible=
"changeExportDialog"
/>
<qrcode-dialog
ref=
"qrcodePreview"
v-model=
"dialogVisible"
></qrcode-dialog>
<detail-preview
ref=
"detailPreview"
:previewData=
"previewData"
v-model=
"previewVisible"
@
closePreview=
"closePreview"
></detail-preview>
<task-detail
v-if=
"taskDetailVisible"
@
close=
"closeTaskDetail"
:taskData=
"taskDetail"
></task-detail>
</div>
</template>
<
script
>
import
exportDialog
from
'@/components/common/export-dialog.vue'
;
import
multipleDel
from
'@/components/app/cloudDaily/multiple-del.vue'
;
import
qrcodeDialog
from
'@/components/app/qrcode-dialog.vue'
;
import
detailPreview
from
'@/components/app/detail-preview.vue'
;
import
taskDetail
from
'@/components/app/task-detail.vue'
;
import
{
getRequest
,
postRequest
,
postExcel
}
from
'@/api/api'
;
import
{
_debounce
}
from
'@/common/js/public'
;
import
errMsg
from
'@/common/js/error'
;
import
showMsg
from
'@/common/js/showmsg'
;
export
default
{
name
:
'shopGuidView'
,
props
:
{
brandId
:
{
type
:
String
,
default
()
{
return
''
;
}
}
},
filters
:
{
formatTimeYMD
(
data
)
{
return
data
&&
data
!=
'- -'
?
data
.
split
(
' '
)[
0
]
:
'--'
;
},
formatTimeHMS
(
data
)
{
return
data
&&
data
!=
'- -'
?
data
.
split
(
' '
)[
1
]
:
'--'
;
}
},
data
()
{
return
{
enableDownloadCompleteData
:
0
,
tableH
:
window
.
screen
.
availHeight
-
464
-
126
,
activeBrand
:
this
.
brandId
,
// 品牌 id
loadingBtn
:
false
,
selectRadio
:
2
,
// 0:选择当页; 1:选择全部
showDialog
:
false
,
// 删除弹窗参数
// 条件
conditionObj
:
{
storeGroup
:
[],
// TODO: 门店分组
wcStatus
:
''
,
// TODO: 完成情况
completed
:
''
,
overdue
:
''
,
title
:
''
,
taskType
:
'1'
,
date
:
this
.
$store
.
state
.
salesDate
},
overdueStyle
:
{
已逾期
:
'#F5222D'
,
未逾期
:
'#2F54EB'
},
taskStyle
:
{
2
:
'#33AF4A'
,
5
:
'#33AF4A'
,
1
:
'#F5222D'
,
3
:
'#F5222D'
,
4
:
'#F5222D'
},
completedOptions
:
[
{
label
:
'所有完成情况'
,
value
:
''
},
{
label
:
'已完成(已拨通)'
,
value
:
'1'
},
{
label
:
'已完成(放弃)'
,
value
:
'2'
},
/* {
label: '已完成(特殊完成)',
value: '3'
}, */
{
label
:
'未完成'
,
value
:
'0'
}
],
overOptions
:
[
{
label
:
'所有逾期情况'
,
value
:
''
},
{
label
:
'逾期未失效'
,
value
:
'2'
},
{
label
:
'逾期已失效'
,
value
:
'3'
},
{
label
:
'已逾期'
,
value
:
'1'
},
{
label
:
'未逾期'
,
value
:
'0'
}
],
loading
:
false
,
tableData
:
[],
multipleSelection
:
[],
dialogVisible
:
false
,
// 二维码
// 分页参数
currentPage
:
1
,
pageSize
:
20
,
total
:
0
,
previewData
:
{},
previewVisible
:
false
,
// user
userData
:
{
staffName
:
''
,
phoneNumber
:
''
,
nationCode
:
''
,
postion
:
''
,
departmentName
:
''
,
headImg
:
''
},
taskDetailVisible
:
false
,
taskDetail
:
{},
pickerOptions
:
{
disabledDate
:
time
=>
{
const
end
=
new
Date
();
return
time
.
getTime
()
<
end
.
getTime
()
-
3600
*
1000
*
24
*
365
||
time
.
getTime
()
>
end
.
getTime
();
}
},
tableRefresh
:
false
,
exportDialog
:
false
};
},
computed
:
{},
methods
:
{
/**
* 选择门店分组
*/
checkGroupIds
:
function
(
nodes
)
{
const
that
=
this
;
that
.
conditionObj
.
storeGroup
=
nodes
;
that
.
currentPage
=
1
;
that
.
getTableList
();
},
/**
* 输入
*/
toInput
:
_debounce
(
function
(
e
,
value
)
{
let
that
=
this
;
that
.
currentPage
=
1
;
that
.
getTableList
();
},
500
),
getInfo
()
{
const
gicEnterpriseId
=
JSON
.
parse
(
sessionStorage
.
getItem
(
'userInfos'
)).
enterpriseId
;
getRequest
(
'/haoban-app-tel-task-three-web/setting/find-enterprise-desensitization-setting'
,
{
gicEnterpriseId
}).
then
(
res
=>
{
let
resData
=
res
.
data
;
if
(
resData
.
errorCode
==
1
)
{
this
.
enableDownloadCompleteData
=
resData
.
result
.
enableDownloadCompleteData
;
return
;
}
errMsg
.
errorMsg
(
resData
);
});
},
beforeExportExcel
()
{
if
(
!
this
.
multipleSelection
.
length
)
{
showMsg
.
showmsg
(
'请选择任务'
,
'warning'
);
return
false
;
}
if
(
this
.
enableDownloadCompleteData
==
1
)
{
this
.
exportDialog
=
true
;
}
else
{
this
.
exportExcel
(
0
);
}
},
changeExportDialog
()
{
this
.
exportDialog
=
false
;
this
.
multipleSelection
=
[];
this
.
$refs
.
multipleTable
.
clearSelection
();
},
/**
* 导 出
*/
exportExcel
(
type
)
{
const
that
=
this
;
if
(
!
that
.
multipleSelection
.
length
)
{
showMsg
.
showmsg
(
'请选择任务'
,
'warning'
);
return
false
;
}
that
.
loadingBtn
=
true
;
let
para
=
{
gicEnterpriseId
:
that
.
activeBrand
,
// 品牌 id
selectType
:
that
.
selectRadio
==
2
&&
that
.
multipleSelection
.
length
?
0
:
this
.
selectRadio
,
storeId
:
that
.
$route
.
query
.
storeId
,
ecmId
:
!!
that
.
$route
.
query
.
ecmId
?
that
.
$route
.
query
.
ecmId
:
''
,
isOverTime
:
that
.
conditionObj
.
overdue
||
''
,
// 逾期
isCompleted
:
that
.
conditionObj
.
completed
||
''
,
// 完成
taskIds
:
that
.
selectRadio
==
1
?
''
:
that
.
multipleSelection
.
map
(
ele
=>
ele
.
taskId
).
join
(
','
),
dataType
:
type
,
title
:
this
.
conditionObj
.
title
};
if
(
Array
.
isArray
(
this
.
conditionObj
.
date
)
&&
this
.
conditionObj
.
date
.
length
==
2
)
{
para
.
createTimeStart
=
this
.
conditionObj
.
date
[
0
];
para
.
createTimeEnd
=
this
.
conditionObj
.
date
[
1
];
}
postExcel
(
'/haoban-app-tel-task-three-web/task/export-store-view-clerk-list'
,
para
)
.
then
(
res
=>
{
that
.
loadingBtn
=
false
;
if
(
!
res
.
data
)
{
errMsg
.
errorMsg
(
'暂无数据'
);
return
false
;
}
// let resData = res.data;
const
blob
=
new
Blob
([
res
.
data
],
{
type
:
'application/vnd.ms-excel'
});
const
fileName
=
`门店任务导购报表.xls`
;
const
elink
=
document
.
createElement
(
'a'
);
elink
.
download
=
fileName
;
elink
.
style
.
display
=
'none'
;
elink
.
href
=
URL
.
createObjectURL
(
blob
);
document
.
body
.
appendChild
(
elink
);
elink
.
click
();
URL
.
revokeObjectURL
(
elink
.
href
);
// 释放URL 对象
document
.
body
.
removeChild
(
elink
);
// errMsg.errorMsg(resData);
})
.
catch
(
function
(
error
)
{
that
.
loadingBtn
=
false
;
that
.
$message
.
error
({
duration
:
1000
,
message
:
error
.
message
});
});
},
/**
* 获取头像处显示信息
*/
/* eslint-disable */
showSingleInfo
(
memberId
)
{
const
that
=
this
;
const
para
=
{
clerkId
:
memberId
};
postRequest
(
'/haoban-manage3-web/get-clerk-info'
,
para
)
.
then
(
res
=>
{
let
resData
=
res
.
data
;
if
(
resData
.
errorCode
==
1
)
{
that
.
userData
=
resData
.
result
;
return
;
}
errMsg
.
errorMsg
(
resData
);
})
.
catch
(
function
(
error
)
{
that
.
$message
.
error
({
duration
:
1000
,
message
:
error
.
message
});
});
},
closePreview
()
{
const
that
=
this
;
that
.
previewData
=
{};
},
/**
* 获取预览数据
*/
getPreviewData
(
index
,
item
)
{
const
that
=
this
;
let
para
=
{
taskId
:
item
.
taskId
};
that
.
previewVisible
=
true
;
postRequest
(
'/haoban-app-tel-task-three-web/task/app-task-detail'
,
para
)
.
then
(
res
=>
{
let
resData
=
res
.
data
;
if
(
resData
.
errorCode
==
1
)
{
that
.
previewData
=
resData
.
result
;
that
.
previewVisible
=
true
;
return
;
}
errMsg
.
errorMsg
(
resData
);
})
.
catch
(
function
(
error
)
{
that
.
$message
.
error
({
duration
:
1000
,
message
:
error
.
message
});
});
},
/**
* 显示选择本页/全部
*/
handleCommand
(
command
)
{
this
.
selectRadio
=
command
;
this
.
tableRefresh
=
!
this
.
tableRefresh
;
if
(
command
==
1
||
command
==
0
)
{
this
.
$nextTick
(()
=>
{
this
.
$refs
.
multipleTable
.
toggleAllSelection
();
})
}
else
if
(
command
==
2
)
{
this
.
$refs
.
multipleTable
.
clearSelection
();
}
},
/**
* 表格选择
*/
handleSelectionChange
(
val
)
{
this
.
multipleSelection
=
val
;
val
.
length
?
''
:
(
this
.
selectRadio
=
2
);
},
/**
* 批量删除
*/
multDel
()
{
let
that
=
this
;
if
(
!
that
.
multipleSelection
.
length
)
{
that
.
$message
.
error
({
duration
:
1000
,
message
:
'请选择删除项'
});
return
false
;
}
this
.
$confirm
(
'删除任务后,会影响任务统计如已完成,完成率,待完成以及销售线索收益等,请知悉'
,
'确认要删除吗?'
).
then
(
res
=>
{
that
.
postMultDel
();
})
},
postMultDel
()
{
let
that
=
this
;
let
para
=
{
storeId
:
that
.
$route
.
query
.
storeId
,
taskIds
:
that
.
selectRadio
==
1
?
''
:
that
.
multipleSelection
.
map
(
ele
=>
ele
.
taskId
).
join
(
','
),
// 门店分组,数组
isOverTime
:
that
.
conditionObj
.
overdue
||
''
,
// 逾期
isCompleted
:
that
.
conditionObj
.
completed
||
''
,
// 完成
enterpriseId
:
that
.
activeBrand
,
// 品牌 id
isAll
:
that
.
selectRadio
// 0:当页,1:所有
};
postRequest
(
'/haoban-app-tel-task-three-web/task/batch-del-clerk-task-list'
,
para
)
.
then
(
res
=>
{
let
resData
=
res
.
data
;
if
(
resData
.
errorCode
==
1
)
{
showMsg
.
showmsg
(
'删除成功'
,
'success'
);
that
.
getTableList
();
return
;
}
errMsg
.
errorMsg
(
resData
);
})
.
catch
(
function
(
error
)
{
that
.
$message
.
error
({
duration
:
1000
,
message
:
error
.
message
});
});
},
/**
* 分页---页码变化
* @param {Number} val
*/
handleSizeChange
(
val
)
{
const
that
=
this
;
that
.
currentPage
=
1
;
that
.
pageSize
=
val
;
that
.
getTableList
(
this
.
selectRadio
);
},
/**
* 分页---当前页变化
* @param {Number} val
*/
handleCurrentChange
(
val
)
{
const
that
=
this
;
that
.
currentPage
=
val
;
that
.
getTableList
(
this
.
selectRadio
);
},
changeSelect
(
e
)
{
const
that
=
this
;
if
(
!
e
)
{
that
.
$store
.
dispatch
(
'changeSales'
,
[]);
}
else
{
that
.
$store
.
dispatch
(
'changeSales'
,
e
);
}
that
.
currentPage
=
1
;
that
.
getTableList
();
},
/**
* 删除
*/
handleDel
(
index
,
row
)
{
const
that
=
this
;
this
.
$confirm
(
'删除任务后,会影响任务统计如已完成,完成率,待完成以及销售线索收益等,请知悉'
,
'确认要删除吗?'
)
.
then
(
res
=>
{
that
.
postDel
(
index
,
row
);
})
.
catch
(()
=>
{
});
// that
// .$confirm(`确认要删除吗?`, '提示', {
// confirmButtonText: '确定',
// cancelButtonText: '取消',
// type: 'warning'
// })
// .then(() => {
// that.postDel(index, row);
// })
// .catch(() => {});
},
postDel
(
index
,
row
)
{
const
that
=
this
;
let
para
=
{
taskId
:
row
.
taskId
,
enterpriseId
:
that
.
activeBrand
// 品牌 id
};
getRequest
(
'/haoban-app-tel-task-three-web/task/del-one'
,
para
)
.
then
(
res
=>
{
let
resData
=
res
.
data
;
if
(
resData
.
errorCode
==
1
)
{
showMsg
.
showmsg
(
'删除成功'
,
'success'
);
that
.
getTableList
();
return
;
}
errMsg
.
errorMsg
(
resData
);
})
.
catch
(
function
(
error
)
{
that
.
$message
.
error
({
duration
:
1000
,
message
:
error
.
message
});
});
},
/**
* 预览
*/
handlePreview
(
index
,
row
)
{
const
that
=
this
;
that
.
postPreview
(
index
,
row
);
},
/**
* 预览---api
*/
postPreview
(
index
,
row
)
{
const
that
=
this
;
// 生成二维码需要的 url
let
webUrl
=
`
${
row
.
taskId
}
`
;
that
.
$refs
.
qrcodePreview
.
qrcode
(
webUrl
,
'task'
);
that
.
dialogVisible
=
true
;
},
/**
* 获取列表数据
*/
getTableList
(
val
)
{
const
that
=
this
;
that
.
loading
=
true
;
let
para
=
{
ecmId
:
that
.
$route
.
query
.
ecmId
||
''
,
storeId
:
that
.
$route
.
query
.
storeId
||
''
,
// 门店
isOverTime
:
that
.
conditionObj
.
overdue
||
''
,
// 逾期
isCompleted
:
that
.
conditionObj
.
completed
||
''
,
title
:
that
.
conditionObj
.
title
||
''
,
// 任务标题
pageNum
:
that
.
currentPage
,
// 当前页
pageSize
:
that
.
pageSize
,
// 一页显示个数
gicEnterpriseId
:
that
.
activeBrand
};
if
(
Array
.
isArray
(
that
.
conditionObj
.
date
)
&&
that
.
conditionObj
.
date
.
length
===
2
)
{
para
.
createTimeStart
=
that
.
conditionObj
.
date
[
0
];
para
.
createTimeEnd
=
that
.
conditionObj
.
date
[
1
];
}
getRequest
(
'/haoban-app-tel-task-three-web/task/clerk-task-list'
,
para
)
.
then
(
res
=>
{
let
resData
=
res
.
data
;
that
.
loading
=
false
;
if
(
resData
.
errorCode
==
1
)
{
if
(
resData
.
result
.
list
)
{
resData
.
result
.
list
.
forEach
(
ele
=>
{
if
(
!
ele
.
taskUrl
||
ele
.
taskUrl
.
length
)
{
ele
.
taskUrl
=
[];
}
});
}
that
.
tableData
=
resData
.
result
.
list
||
[];
that
.
total
=
resData
.
result
.
pageInfo
?
resData
.
result
.
pageInfo
.
total
:
0
;
if
(
val
==
1
)
{
this
.
$nextTick
(()
=>
{
this
.
$refs
.
multipleTable
.
toggleAllSelection
();
});
}
else
{
this
.
selectRadio
=
2
;
}
return
;
}
errMsg
.
errorMsg
(
resData
);
})
.
catch
(
function
(
error
)
{
that
.
loading
=
false
;
that
.
$message
.
error
({
duration
:
1000
,
message
:
error
.
message
});
});
},
getTaskDetail
(
item
)
{
this
.
taskDetail
=
{
...
item
};
this
.
taskDetailVisible
=
true
;
},
closeTaskDetail
()
{
this
.
taskDetail
=
{};
this
.
taskDetailVisible
=
false
;
}
},
watch
:
{
brandId
:
function
(
newData
,
oldData
)
{
const
that
=
this
;
if
(
!!
newData
)
{
that
.
activeBrand
=
newData
;
that
.
getTableList
();
}
this
.
multipleSelection
=
[]
}
},
mounted
()
{
let
that
=
this
;
that
.
activeBrand
=
that
.
brandId
;
that
.
conditionObj
.
storeId
=
that
.
$route
.
query
.
storeId
;
if
(
!!
that
.
brandId
)
{
that
.
getTableList
();
}
this
.
getInfo
();
},
components
:
{
multipleDel
,
qrcodeDialog
,
detailPreview
,
taskDetail
,
exportDialog
}
};
</
script
>
<
style
type=
"text/scss"
lang=
"scss"
scoped
>
.w-135
{
width
:
135px
;
}
.w-260
{
width
:
260px
;
}
.table-condition-left
{
display
:
flex
;
justify-content
:
flex-start
;
align-items
:
center
;
}
.task-imgs
{
display
:
inline-block
;
vertical-align
:
middle
;
width
:
30px
;
height
:
30px
;
margin-right
:
10px
;
border-radius
:
4px
;
}
.daily-set-content
{
padding
:
16px
;
.image-wrap
{
width
:
40px
;
height
:
40px
;
min-width
:
40px
;
max-width
:
40px
;
max-height
:
40px
;
border-radius
:
4px
;
&.bg-82c5ff
{
background
:
#82c5ff
;
}
&
.bg-eceaeb
{
background
:
#eceaeb
;
}
img
{
max-width
:
40px
;
max-height
:
40px
;
border-radius
:
4px
;
}
i
{
font-size
:
20px
;
color
:
#e5f3ff
;
}
}
}
.depart-item-content
{
width
:
213px
;
height
:
32px
;
overflow
:
hidden
;
white-space
:
nowrap
;
border-radius
:
4px
;
border
:
1px
solid
#dcdfe6
;
cursor
:
pointer
;
}
.item-cell-select
{
>>>
.el-select__tags
{
white-space
:
nowrap
;
overflow
:
hidden
;
}
}
.depart-cell
{
position
:
relative
;
margin
:
0
24px
24px
0
;
.el-icon-circle-close
{
position
:
absolute
;
top
:
-10px
;
right
:
-10px
;
font-size
:
16px
;
color
:
#808995
;
cursor
:
pointer
;
}
}
</
style
>
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment