Commit a0b29457 by caoyanzhi

update: AI营销-计费中心

parent 97c2b5b4
......@@ -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);
......
......@@ -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;
......
......@@ -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营销
......
......@@ -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();
},
// 下拉远程搜索
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment