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
a0b29457
Commit
a0b29457
authored
Mar 18, 2022
by
caoyanzhi
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
update: AI营销-计费中心
parent
97c2b5b4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
61 additions
and
6 deletions
+61
-6
rechargeApi.js
src/service/api/rechargeApi.js
+2
-0
board.vue
src/views/recharge/board.vue
+1
-1
set-rule-dialog.vue
src/views/recharge/components/set-rule-dialog.vue
+2
-2
consume.vue
src/views/recharge/consume.vue
+56
-3
No files found.
src/service/api/rechargeApi.js
View file @
a0b29457
...
...
@@ -29,6 +29,8 @@ export const callData = params => requests(PREFIX + 'call-data', params);
//计费中心--通话录音消费详情
export
const
recordData
=
params
=>
requests
(
PREFIX
+
'call-record-data'
,
params
);
//计费中心--ai电话详情
export
const
aiCallData
=
params
=>
requests
(
PREFIX
+
'ai-billling-page'
,
params
);
//计费中心--点击充值后--第一步:获取余额, 各项服务单价
export
const
rechargeStep0
=
params
=>
requests
(
PREFIX
+
'recharge-step-1'
,
params
);
...
...
src/views/recharge/board.vue
View file @
a0b29457
...
...
@@ -311,7 +311,7 @@ export default {
{
name
:
'短信营销'
,
type
:
'marketing'
,
fee
:
result
.
messageFee
,
count
:
result
.
messageCount
},
{
name
:
'短信验证码'
,
type
:
'sms'
,
fee
:
result
.
smsFee
,
count
:
result
.
smsCount
},
{
name
:
'双向呼叫'
,
type
:
'call'
,
fee
:
result
.
callFee
,
count
:
result
.
callTime
},
{
name
:
'AI电话'
,
type
:
'ai-call'
,
fee
:
result
.
callFee
,
count
:
result
.
callTime
}
{
name
:
'AI电话'
,
type
:
'ai-call'
,
fee
:
result
.
aiFee
,
count
:
result
.
aiCount
}
];
}
else
{
this
.
recharge
=
res
.
result
;
...
...
src/views/recharge/components/set-rule-dialog.vue
View file @
a0b29457
...
...
@@ -76,8 +76,8 @@
</el-form-item>
</
template
>
<hr
class=
"dashed mb20"
/>
<
template
>
<hr
class=
"dashed mb20"
v-if=
"isMoreAccount"
/>
<
template
v-if=
"isMoreAccount"
>
<h2
class=
"icon-type-title mb20"
>
<div
class=
"mark"
/>
AI营销
...
...
src/views/recharge/consume.vue
View file @
a0b29457
...
...
@@ -20,12 +20,12 @@
<el-option
v-for=
"el in marketingTypeList"
:key=
"el.value"
:label=
"el.label"
:value=
"el.value"
></el-option>
</el-select>
<select-depart
v-if=
"isMoreAccount && config.showAllDepartment"
:data=
"deparment"
@
load=
"load"
@
getDepartId=
"getDepartId"
@
remote-search=
"remoteSearch"
:loading=
"deparment.loading"
/>
<span
class=
"fz12 gray"
>
* 此处仅支持筛选近半年的统计数据
,最大查询区间为1个月
</span>
<span
class=
"fz12 gray"
>
* 此处仅支持筛选近半年的统计数据
</span>
</div>
<el-button
v-if=
"$getButtonLimit($buttonCode.marketingCounsumeExport)"
:limit-code=
"$buttonCode.marketingCounsumeExport"
type=
"primary"
class=
"btn h32"
@
click=
"exportDialog.dialogVisible = true"
><i
class=
"iconfont icon-xiazai"
style=
"marginRight:6px;fontSize:14px"
/>
导出
</el-button>
</div>
<p
class=
"tips"
v-if=
"$route.params.type === 'video'"
>
共消耗流量
{{
sumCount
}}
MB 累计支出
{{
sumFee
}}
元
</p>
<p
class=
"tips"
v-if=
"['record', 'call'].includes($route.params.type)"
>
<p
class=
"tips"
v-if=
"['record', 'call'
, 'ai-call'
].includes($route.params.type)"
>
<!-- 通话时长:
{{
sumCount
||
0
}}
秒 -->
<span
class=
"ml10 blod"
>
总计消费:
{{
sumFee
.
toFixed
(
2
)
}}
元
</span>
</p>
...
...
@@ -256,6 +256,36 @@
<
template
slot-scope=
"scope"
>
{{
Number
(
scope
.
row
.
storageFee
/
100
).
toFixed
(
2
)
}}
元
</
template
>
</el-table-column>
</el-table>
<el-table
tooltip-effect=
"light"
:data=
"tableList"
style=
"width: 100%"
v-if=
"$route.params.type == 'ai-call'"
>
<el-table-column
label=
"呼叫时间"
prop=
"aiTime"
min-width=
"90"
>
<p
class=
"cell-time"
slot-scope=
"{ row }"
>
{{ formatDateTimeByType(row.aiTime, 'yyyy-MM-dd-HH-mm-ss', true).y }}
<br
/>
<span>
{{ formatDateTimeByType(row.aiTime, 'yyyy-MM-dd-HH-mm-ss', true).h }}
</span>
</p>
</el-table-column>
<el-table-column
label=
"被叫(会员)"
prop=
"memberNick"
min-width=
"90"
>
<p
class=
"cell-time"
slot-scope=
"{ row }"
>
{{ row.memberNick }}
<br
/>
<span>
{{ row.memberMobile }}
</span>
</p>
</el-table-column>
<el-table-column
label=
"门店"
prop=
"mainStoreName"
min-width=
"180"
>
<p
class=
"cell-time"
slot-scope=
"{ row }"
>
{{ row.mainStoreName }}
<br
/>
<span>
{{ row.storeGroupName }}
</span>
</p>
</el-table-column>
<
template
v-if=
"isMoreAccount"
>
<el-table-column
label=
"活动名称"
prop=
"sourceName"
min-width=
"120"
:formatter=
"(row, col, val) => val || '--'"
></el-table-column>
<el-table-column
label=
"活动创建人"
prop=
"sourceCreatorName"
min-width=
"90"
:formatter=
"(row, col, val) => val || '--'"
></el-table-column>
<el-table-column
label=
"扣费规则"
prop=
"accountRule"
min-width=
"120"
>
<template
slot-scope=
"
{ row }">
{{
accountRule
(
row
.
accountRule
)
}}
</
template
>
</el-table-column>
</template>
<el-table-column
label=
"费用归属部门"
prop=
"accountDepartName"
min-width=
"120"
:formatter=
"(row, col, val) => val || '--'"
></el-table-column>
<el-table-column
label=
"时间(秒)"
prop=
"aiDurationSec"
min-width=
"90"
:formatter=
"(row, col, val) => val || '--'"
></el-table-column>
<el-table-column
label=
"消费金额(元))"
prop=
"aiFeeYuan"
min-width=
"90"
:formatter=
"(row, col, val) => val || '--'"
></el-table-column>
</el-table>
<!-- 视频资费 -->
<!-- <el-table tooltipEffect="light" :data="tableList" style="width:100%" v-if="$route.params.type === 'video'">
<el-table-column align="left" prop="createTime" label="时间">
...
...
@@ -289,7 +319,7 @@
</section>
</template>
<
script
>
import
{
messageMarketingChart
,
messageMarketingPage
,
smsData
,
voiceData
,
callData
,
recordData
,
videoPage
,
videoChartData
,
downloadTrafficCostListExcel
,
getDepartList
}
from
'@/service/api/rechargeApi.js'
;
import
{
messageMarketingChart
,
messageMarketingPage
,
smsData
,
voiceData
,
callData
,
recordData
,
aiCallData
,
videoPage
,
videoChartData
,
downloadTrafficCostListExcel
,
getDepartList
}
from
'@/service/api/rechargeApi.js'
;
import
{
formatDateTimeByType
}
from
'@/utils/index.js'
;
import
SelectDepart
from
'./components/select-depart.vue'
;
import
intel
from
'./recharge_mixin'
;
...
...
@@ -487,6 +517,10 @@ export default {
}
this
.
videoPage
(
'list'
);
}
if
(
this
.
$route
.
params
.
type
==
'ai-call'
)
{
this
.
placeholder
=
'请输入手机号/活动名称/活动创建人'
;
this
.
aiCallData
();
}
},
onSearch
()
{
this
.
listParams
.
currentPage
=
1
;
...
...
@@ -571,6 +605,22 @@ export default {
}
catch
(
err
)
{}
this
.
loading
=
false
;
},
async
aiCallData
()
{
this
.
loading
=
true
;
try
{
const
{
accountDepartId
,
searchParam
,
beginTime
,
endTime
,
pageSize
,
currentPage
}
=
this
.
listParams
;
let
res
=
await
aiCallData
({
accountDepartId
,
searchParam
,
beginTime
,
endTime
,
pageSize
,
currentPage
});
if
(
res
.
errorCode
===
0
&&
res
.
result
.
result
)
{
res
.
result
.
result
=
false
;
this
.
tableList
=
res
.
result
.
result
||
[];
this
.
total
=
res
.
result
.
totalCount
;
// this.sumFee = fee / 1000;
}
else
{
this
.
tableList
=
[];
}
}
catch
(
err
)
{}
this
.
loading
=
false
;
},
// 视频资费相关接口
async
videoPage
(
type
=
'list'
)
{
this
.
loading
=
true
;
...
...
@@ -670,6 +720,9 @@ export default {
const
depart
=
this
.
deparment
;
depart
[
'departId'
]
=
id
;
this
.
listParams
[
'currentPage'
]
=
1
;
if
(
this
.
$route
.
params
.
type
==
'ai-call'
)
{
this
.
dateTime
=
[
Date
.
now
(),
Date
.
now
()];
}
this
.
loadAll
();
},
// 下拉远程搜索
...
...
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