Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
M
marketing
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
marketing-web
marketing
Commits
abed2206
Commit
abed2206
authored
Jun 22, 2022
by
crushh
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
update: dist
parent
bcd57e42
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
62 additions
and
13 deletions
+62
-13
aiApi.js
src/service/api/aiApi.js
+3
-0
storeSign.js
src/service/api/storeSign.js
+5
-2
ai-data-detail.vue
src/views/ai/ai-data-detail.vue
+17
-2
defineTime.vue
src/views/ai/task/components/defineTime.vue
+3
-3
record-get.vue
src/views/card/record-get.vue
+15
-4
list.vue
src/views/sign/list.vue
+19
-2
No files found.
src/service/api/aiApi.js
View file @
abed2206
...
...
@@ -120,3 +120,6 @@ export const aiOutboundStoreGroupSplit = params => requests('/api-marketing/stat
// 活动转换门店分组数据
export
const
aiTransformStoreGroupSplit
=
params
=>
requests
(
'/api-marketing/statistics/ai-transform-store-group-split'
,
params
,
true
,
false
,
'get'
);
// 客户明细导出
export
const
exportAiCustomDetail
=
'/api-marketing/statistics/export-ai-custom-detail'
;
src/service/api/storeSign.js
View file @
abed2206
...
...
@@ -13,4 +13,7 @@ export const saveStoreSignSetting = params => requests(PREFIX + 'save', params);
// 门店签到配置查询
export
const
getStoreSignDetail
=
params
=>
requests
(
PREFIX
+
'get-detail'
,
params
);
// 门店签到计划删除
export
const
delSignPlan
=
params
=>
requests
(
PREFIX
+
'del-sign-plan'
,
params
);
\ No newline at end of file
export
const
delSignPlan
=
params
=>
requests
(
PREFIX
+
'del-sign-plan'
,
params
);
// 门店签到导出
export
const
exportStoreSign
=
config
.
api
+
PREFIX
+
'export-store-sign'
;
\ No newline at end of file
src/views/ai/ai-data-detail.vue
View file @
abed2206
...
...
@@ -2,6 +2,7 @@
<div
class=
"data-detail"
>
<div
v-if=
"analyseFlag"
class=
"page-tip"
>
活动转化金额每天更新 1 次
</div>
<el-input
v-model=
"search.search"
@
change=
"handleCurrentChange(1)"
type=
"text"
placeholder=
"请输入姓名/昵称/手机号/会员卡号"
prefix-icon=
"el-icon-search"
clearable
class=
"search-bar"
></el-input>
<el-button
class=
"fr"
type=
"primary"
icon=
"iconfont fz14 icon-cp-xiazai"
@
click=
"exportExcel"
size=
"small"
:disabled=
"!total"
>
查询结果导出
</el-button>
<el-table
:data=
"tableData"
v-loading=
"loading"
>
<el-table-column
label=
"基本信息"
min-width=
"200px"
show-overflow-tooltip
fixed=
"left"
>
<div
slot-scope=
"
{ row }" class="member-info">
...
...
@@ -42,13 +43,14 @@
</div>
</el-table-column>
</el-table>
<vue-gic-export-excel
:dialogVisible
.
sync=
"dialogVisible"
:dataArr=
"tableData"
:type=
"2"
:excelUrl=
"excelUrl"
:params=
"params"
:projectName=
"projectName"
></vue-gic-export-excel>
<dm-pagination
v-if=
"total > 0"
background
@
size-change=
"handleSizeChange"
@
current-change=
"handleCurrentChange"
:total=
"total"
:current-page=
"search.pageNum"
:page-size=
"search.pageSize"
:page-sizes=
"[20, 40, 60, 80]"
layout=
"total, sizes, prev, pager, next"
></dm-pagination>
</div>
</template>
<
script
>
import
{
formatDateTimeByType
}
from
'@/utils/index.js'
;
import
{
getCustomDetail
}
from
'@/service/api/aiApi.js'
;
import
{
getCustomDetail
,
exportAiCustomDetail
}
from
'@/service/api/aiApi.js'
;
export
default
{
name
:
'AiDataDetail'
,
...
...
@@ -65,7 +67,10 @@ export default {
},
tableData
:
[],
total
:
0
,
loading
:
false
loading
:
false
,
dialogVisible
:
false
,
excelUrl
:
''
,
// 下载数据的地址
params
:
{}
// 传递的参数
};
},
created
()
{
...
...
@@ -76,6 +81,16 @@ export default {
console
.
log
(
'mounted3'
);
},
methods
:
{
exportExcel
()
{
this
.
params
=
{
search
:
this
.
search
.
search
,
analyseFlag
:
this
.
analyseFlag
?
1
:
0
,
smsFlag
:
this
.
showSendTime
?
1
:
0
,
activityId
:
this
.
search
.
activityId
};
this
.
dialogVisible
=
true
;
this
.
excelUrl
=
exportAiCustomDetail
;
},
getData
()
{
this
.
loading
=
true
;
getCustomDetail
(
this
.
search
)
...
...
src/views/ai/task/components/defineTime.vue
View file @
abed2206
<
template
>
<div
class=
"defineTime"
>
<p
class=
"tips"
>
自定义时段不少于
4
个小时
</p>
<p
class=
"tips"
>
自定义时段不少于
1
个小时
</p>
<el-form
:model=
"form"
ref=
"defineTime"
>
<div
class=
"flex"
v-for=
"(v, i) in form.timeRangeList"
:key=
"i"
>
<el-form-item
class=
"mt10"
:prop=
"'timeRangeList.' + i + '.startTime'"
:rules=
"[
{ validator: validateTime(i) }, { validator: validateStarTime(v, i) }]">
...
...
@@ -132,8 +132,8 @@ export default {
let
start
=
new
Date
(
new
Date
().
toLocaleDateString
()
+
' '
+
item
.
startTime
).
getTime
();
minutes
=
(
end
-
start
)
/
60000
+
minutes
;
});
if
(
minutes
<
24
0
)
{
this
.
$message
.
error
(
'自定义时段不少于
4
个小时'
);
if
(
minutes
<
6
0
)
{
this
.
$message
.
error
(
'自定义时段不少于
1
个小时'
);
return
;
}
},
...
...
src/views/card/record-get.vue
View file @
abed2206
<
template
>
<section
class=
"card-record-get"
v-loading=
"recordLoading"
>
<div
class=
"page-tip"
>
当天的卡券领取记录数据可在隔天下载完整内容
</div>
<div
class=
"page-tip"
>
当天的卡券领取记录数据可在隔天下载完整内容
<
br
/>
导出数据只支持近两年数据
<
/div>
<!-- 条件筛选区 -->
<div
class=
"pb20"
>
<el-input
clearable
v-model=
"listParams.search"
style=
"width:240px"
placeholder=
"请输入会员信息/卡券代码"
@
change=
"refresh"
><i
slot=
"prefix"
class=
"el-input__icon el-icon-search"
></i></el-input>
...
...
@@ -112,7 +112,7 @@
</div>
<div
class=
"ml20"
>
<el-radio
v-model=
"confirm.radio"
:label=
"1"
>
所有卡券领取时期段导出
</el-radio>
<el-date-picker
clearable
v-model=
"confirm.dateTime"
class=
"block mt10 mb10"
type=
"daterange"
range-separator=
"至"
start-placeholder=
"开始日期"
end-placeholder=
"结束日期"
></el-date-picker>
<el-date-picker
clearable
v-model=
"confirm.dateTime"
value-format=
"timestamp"
:picker-options=
"pickerOptions"
class=
"block mt10 mb10"
type=
"daterange"
range-separator=
"至"
start-placeholder=
"开始日期"
end-placeholder=
"结束日期"
></el-date-picker>
</div>
<span
slot=
"footer"
class=
"dialog-footer"
>
<el-button
@
click=
"confirmClose"
>
取 消
</el-button>
...
...
@@ -128,7 +128,6 @@ import { cardRecordPage, coupcardDestroy, exportReceivedRecordExcel } from '@/se
import
cardOrder
from
'./card-order'
;
import
tableMethods
from
'@/mixins/tableMethods.js'
;
import
filterAvater
from
'@/mixins/filterAvater.js'
;
export
default
{
name
:
'record-get'
,
mixins
:
[
tableMethods
,
filterAvater
],
...
...
@@ -182,7 +181,19 @@ export default {
dialogVisible
:
false
,
excelUrl
:
''
,
// 下载数据的地址
params
:
{},
// 传递的参数
dataArr
:
[]
dataArr
:
[],
pickerOptions
:
{
disabledDate
:
time
=>
{
let
y
=
new
Date
().
getFullYear
()
-
1
;
let
isLeap
=
(
0
===
y
%
4
&&
0
===
y
%
100
)
||
0
===
y
%
400
;
let
days
=
isLeap
?
366
:
365
;
let
preY
=
new
Date
().
getFullYear
()
-
2
;
let
preYisLeap
=
(
0
===
preY
%
4
&&
0
===
preY
%
100
)
||
0
===
preY
%
400
;
let
prevDays
=
preYisLeap
?
366
:
365
;
// let monthDayNum = new Date().getDate() + 1;
return
time
.
getTime
()
<
Date
.
now
()
-
(
days
*
8.64e7
+
prevDays
*
8.64e7
)
||
time
.
getTime
()
>=
new
Date
().
getTime
();
}
}
};
},
computed
:
{
...
...
src/views/sign/list.vue
View file @
abed2206
...
...
@@ -4,7 +4,9 @@
<el-date-picker
class=
"w250"
v-model=
"pageParams.time"
type=
"daterange"
range-separator=
"至"
start-placeholder=
"开始日期"
end-placeholder=
"结束日期"
@
change=
"refresh"
></el-date-picker>
<el-input
v-model=
"pageParams.storeName"
class=
"w300"
placeholder=
"请输入门店名称或门店code"
clearable
@
change=
"refresh"
><i
slot=
"prefix"
class=
"el-input__icon el-icon-search"
></i></el-input>
<el-input
v-model=
"pageParams.memberInfo"
class=
"w300"
placeholder=
"会员姓名/手机号/签到计划"
clearable
@
change=
"refresh"
><i
slot=
"prefix"
class=
"el-input__icon el-icon-search"
></i></el-input>
<el-button
class=
"fr"
type=
"primary"
icon=
"iconfont fz14 icon-cp-xiazai"
@
click=
"exportExcel"
size=
"small"
:disabled=
"!total"
>
查询结果导出
</el-button>
</div>
<el-table
tooltipEffect=
"light"
:data=
"tableList"
style=
"width: 100%"
>
<el-table-column
:show-overflow-tooltip=
"true"
align=
"left"
prop=
"createTime"
label=
"签到时间"
>
<template
slot-scope=
"scope"
>
...
...
@@ -32,12 +34,13 @@
</el-table-column>
<el-table-column
:show-overflow-tooltip=
"true"
align=
"left"
prop=
"prizeTxt"
label=
"签到福利"
></el-table-column>
</el-table>
<vue-gic-export-excel
:dialogVisible
.
sync=
"dialogVisible"
:dataArr=
"tableList"
:type=
"2"
:excelUrl=
"excelUrl"
:params=
"params"
:projectName=
"projectName"
></vue-gic-export-excel>
<dm-pagination
v-show=
"tableList.length"
background
class=
"dm-pagination"
@
size-change=
"handleSizeChange"
@
current-change=
"handleCurrentChange"
:current-page=
"pageParams.currentPage"
:page-sizes=
"[20, 40, 60, 80]"
:page-size=
"pageParams.pageSize"
layout=
"total, sizes, prev, pager, next"
:total=
"total"
></dm-pagination>
</section>
</template>
<
script
>
import
{
getPageSignLog
}
from
'@/service/api/storeSign.js'
;
import
{
getPageSignLog
,
exportStoreSign
}
from
'@/service/api/storeSign.js'
;
import
{
formatDateTimeByType
}
from
'@/utils/index.js'
;
export
default
{
name
:
'sign-record'
,
...
...
@@ -54,7 +57,10 @@ export default {
tableList
:
[],
// 门店单选
storeName
:
''
,
storeDialog
:
false
storeDialog
:
false
,
dialogVisible
:
false
,
excelUrl
:
''
,
// 下载数据的地址
params
:
{}
// 传递的参数
};
},
created
()
{
...
...
@@ -85,6 +91,17 @@ export default {
this
.
loading
=
false
;
}
},
exportExcel
()
{
const
params
=
{
storeName
:
this
.
pageParams
.
storeName
,
memberInfo
:
this
.
pageParams
.
memberInfo
};
if
(
this
.
pageParams
.
time
)
{
params
.
startTime
=
formatDateTimeByType
(
params
.
time
[
0
],
'yyyy-MM-dd'
);
params
.
endTime
=
formatDateTimeByType
(
params
.
time
[
1
],
'yyyy-MM-dd'
);
delete
params
.
time
;
}
this
.
params
=
params
;
this
.
dialogVisible
=
true
;
this
.
excelUrl
=
exportStoreSign
;
},
refresh
()
{
this
.
pageParams
.
currentPage
=
'1'
;
this
.
fetch
();
...
...
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