Commit 661fe815 by chenxin

fix:通话记录,通话设置,ecm编辑bug和一些其他bug

parent 80baa611
...@@ -54,6 +54,7 @@ export default { ...@@ -54,6 +54,7 @@ export default {
}) })
.catch(err => { .catch(err => {
binding.value.$tips({ type: 'warning', message: err.message }); binding.value.$tips({ type: 'warning', message: err.message });
binding.value.loading = false;
}); });
} else { } else {
upload(); upload();
...@@ -68,7 +69,6 @@ export default { ...@@ -68,7 +69,6 @@ export default {
axios axios
.post(config.api + binding.value.url, formData) .post(config.api + binding.value.url, formData)
.then(res => { .then(res => {
console.log(res);
binding.value.loading = false; binding.value.loading = false;
el.value = ''; el.value = '';
if (res.data.errorCode === 0) { if (res.data.errorCode === 0) {
......
import { requests } from './index'; import { requests } from './index';
const PREFIX = 'api-marketing/'; const PREFIX = 'api-marketing/';
//智能营销--ECM营销引擎分页列表 //智能营销--通话记录
export const callLogList = params => requests(PREFIX + 'call-log', params); export const callLogList = params => requests(PREFIX + 'call-log', params);
export const saveCallSetting = params => requests(PREFIX + 'save-call-setting', params); // 录音设置保存
export const getCallSetting = params => requests(PREFIX + 'get-call-setting', params); // 录音配置
...@@ -27,6 +27,9 @@ export const voiceData = params => requests(PREFIX + 'voice-data', params); ...@@ -27,6 +27,9 @@ export const voiceData = params => requests(PREFIX + 'voice-data', params);
//计费中心--双向呼叫消费详情 //计费中心--双向呼叫消费详情
export const callData = params => requests(PREFIX + 'call-data', params); export const callData = params => requests(PREFIX + 'call-data', params);
//计费中心--通话录音消费详情
export const recordData = params => requests(PREFIX + 'call-record-data', params);
//计费中心--点击充值后--第一步:获取余额, 各项服务单价 //计费中心--点击充值后--第一步:获取余额, 各项服务单价
export const rechargeStep0 = params => requests(PREFIX + 'recharge-step-1', params); export const rechargeStep0 = params => requests(PREFIX + 'recharge-step-1', params);
......
...@@ -9,7 +9,7 @@ ...@@ -9,7 +9,7 @@
<el-option v-for="(v, i) in telTaskTypeOption" :key="i" :label="v.label" :value="v.value"></el-option> <el-option v-for="(v, i) in telTaskTypeOption" :key="i" :label="v.label" :value="v.value"></el-option>
</el-select> </el-select>
<el-input v-model="listParams.phoneNumber" class="w200" placeholder="输入号码查询" clearable @change="refresh"><i slot="prefix" class="el-input__icon el-icon-search"></i></el-input> <el-input v-model="listParams.phoneNumber" class="w200" placeholder="输入号码查询" clearable @change="refresh"><i slot="prefix" class="el-input__icon el-icon-search"></i></el-input>
<!-- <el-button type="primary" class="fr" @click="$router.push('/calllog/record')">录音设置</el-button> --> <el-button type="primary" class="fr" @click="$router.push('/calllog/record')">录音设置</el-button>
</div> </div>
<el-table tooltipEffect="light" :data="tableList" style="width:100%" v-loading="loading"> <el-table tooltipEffect="light" :data="tableList" style="width:100%" v-loading="loading">
<el-table-column align="left" width="160" prop="callBeginTime" label="呼叫时间"> <el-table-column align="left" width="160" prop="callBeginTime" label="呼叫时间">
...@@ -52,7 +52,8 @@ ...@@ -52,7 +52,8 @@
</el-table-column> </el-table-column>
<el-table-column align="left" width="150" prop="callFee" label="录音"> <el-table-column align="left" width="150" prop="callFee" label="录音">
<template slot-scope="scope"> <template slot-scope="scope">
<a v-if="scope.row.recordUrl && scope.row.callStatus == 2" :href="scope.row.recordUrl" target="_blank" title="通话录音">通话录音</a> <span v-if="scope.row.showStatus !== 1">{{ scope.row.description }}</span>
<a v-else :href="scope.row.showRecordUrl" target="_blank" :title="scope.row.description"><i class="iconfont icon-xinxixianshi2 pr5"></i>{{ scope.row.description }}</a>
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
......
<template> <template>
<section class="dm-wrap" v-loading="loading" element-loading-text="数据保存中"> <section class="dm-wrap" v-loading="loading" element-loading-text="数据保存中">
<el-alert type="info" :closable="false" show-icon> <el-alert type="info" :closable="false" show-icon>
<p slot="title" class="fz16 info-color line-height1_5">使用录音功能需开启录音服务,未开启则录音不作保存。开启后,仅支持保存从开启当天起的录音数据,未开启录音服务之前的历史录音数据不做同步。选择不同保存时长收费标准不同,当前收费标准如下:1、三个月 0.04元/分钟 2、六个月 0.06元/分钟 3、十二个月 0.1元/分钟</p> <p slot="title" class="fz14 info-color line-height1_5">使用录音功能需开启录音服务,未开启则录音不作保存。开启后,仅支持保存从开启当天起的录音数据,未开启录音服务之前的历史录音数据不做同步。选择不同保存时长收费标准不同,当前收费标准如下:1、三个月 {{ allUnitFee.storageThreeFee }}元/分钟 2、六个月 {{ allUnitFee.storageSixFee }}元/分钟 3、十二个月 {{ allUnitFee.storageTwelveFee }}元/分钟</p>
</el-alert> </el-alert>
<section class="mt20"> <section class="mt20">
<div class="mb20"> <div class="mb20">
<span class="dm-input_label mr10">开启录音服务</span> <span class="dm-input_label mr10">开启录音服务</span>
<el-switch v-model="swithKey"></el-switch> <el-switch v-model="openFlag"></el-switch>
</div> </div>
<div> <div>
<span class="dm-input_label mr10">录音保存时长</span> <span class="dm-input_label mr10">录音保存时长</span>
<el-radio-group v-model="saveTime"> <el-radio-group v-model="storageType">
<el-radio :label="3">三个月</el-radio> <el-radio :label="0">三个月</el-radio>
<el-radio :label="6">六个月</el-radio> <el-radio :label="1">六个月</el-radio>
<el-radio :label="9">十二个月</el-radio> <el-radio :label="2">十二个月</el-radio>
</el-radio-group> </el-radio-group>
</div> </div>
<div class="mt30"><el-button type="primary" class="save" @click="submit">保存</el-button></div> <div class="mt30"><el-button type="primary" class="save" @click="submit">保存</el-button></div>
...@@ -22,29 +22,44 @@ ...@@ -22,29 +22,44 @@
</template> </template>
<script> <script>
import { saveCallSetting, getCallSetting } from '@/service/api/calllogApi.js';
export default { export default {
name: 'record', name: 'record',
data() { data() {
return { return {
swithKey: false, openFlag: false,
saveTime: 3, storageType: 0,
loading: false loading: false,
// 录音收费
allUnitFee: {
storageThreeFee: 0,
storageSixFee: 0,
storageTwelveFee: 0
}
}; };
}, },
methods: { methods: {
// getRecordDetail() {}
submit() { submit() {
this.loading = true; this.loading = true;
setTimeout(() => { const { openFlag, storageType } = this;
saveCallSetting({ openFlag: Number(openFlag), storageType }).then(res => {
this.loading = false; this.loading = false;
this.$tips({ type: 'success', message: '保存成功!' }); this.$tips({ type: 'success', message: res.result });
// this.$tips({ type: 'error', message: '删除失败!' }); });
}, 2000);
} }
}, },
created() { created() {
this.$store.commit('aside_handler', false); this.$store.commit('aside_handler', false);
this.$store.commit('mutations_breadcrumb', [{ name: '会员管理', path: '' }, { name: '通话记录', path: '/calllog/index' }, { name: '录音存储设置', path: '' }]); this.$store.commit('mutations_breadcrumb', [{ name: '会员管理', path: '' }, { name: '通话记录', path: '/calllog/index' }, { name: '录音存储设置', path: '' }]);
getCallSetting().then(res => {
const { callSetting, unitFee } = res.result;
if (callSetting) {
this.openFlag = !!callSetting.openFlag;
this.storageType = callSetting.storageType;
}
this.allUnitFee = unitFee;
});
} }
}; };
</script> </script>
......
...@@ -74,8 +74,8 @@ export default { ...@@ -74,8 +74,8 @@ export default {
return row.errCode === '0' ? '满足' : '不满足'; return row.errCode === '0' ? '满足' : '不满足';
} }
}, },
{ label: '主门店', prop: 'mainClerkCode', minWidth: '120', align: 'left' }, { label: '主门店', prop: 'mainStoreName', minWidth: '120', align: 'left' },
{ label: '专属导购', prop: 'mainStoreName', minWidth: '120', align: 'left' }, { label: '专属导购', prop: 'mainClerkCode', minWidth: '120', align: 'left' },
{ label: '备注', prop: 'errMsg', minWidth: '120', align: 'left' } { label: '备注', prop: 'errMsg', minWidth: '120', align: 'left' }
], ],
tableList: [], tableList: [],
......
...@@ -106,8 +106,8 @@ export default { ...@@ -106,8 +106,8 @@ export default {
}, },
{ label: '会员信息', prop: 'marketingType', minWidth: '120', align: 'left', component: 'member-info' }, { label: '会员信息', prop: 'marketingType', minWidth: '120', align: 'left', component: 'member-info' },
{ label: '手机号码', prop: 'phoneNumber', minWidth: '120', align: 'left' }, { label: '手机号码', prop: 'phoneNumber', minWidth: '120', align: 'left' },
{ label: '主门店', prop: 'mainClerkCode', minWidth: '120', align: 'left' }, { label: '主门店', prop: 'mainStoreName', minWidth: '120', align: 'left' },
{ label: '专属导购', prop: 'mainStoreName', minWidth: '120', align: 'left' }, { label: '专属导购', prop: 'mainClerkCode', minWidth: '120', align: 'left' },
{ {
label: '状态', label: '状态',
prop: 'errCode', prop: 'errCode',
......
...@@ -696,19 +696,23 @@ export default { ...@@ -696,19 +696,23 @@ export default {
getData() { getData() {
this.$refs.peopleFilter.confirmSet(); this.$refs.peopleFilter.confirmSet();
}, },
// 子组件触发父组件事件,返回过滤条件数据 // 子组件触发父组件事件,返回过滤条件数据 -- 仅新增时保存
findFilter(value) { findFilter(value) {
if (this.isAdd) {
this.form.memberSearchDTO = value; this.form.memberSearchDTO = value;
}
}, },
// 取消 // 取消
cancelFilter() { cancelFilter() {
this.$refs.peopleFilter.cancelSet(); this.$refs.peopleFilter.cancelSet();
}, },
// 获取需要回显的数据, 供保存时候使用 // 获取需要回显的数据, 供保存时候使用 -- 仅新增时保存
getBackData(val) { getBackData(val) {
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
if (this.isAdd) {
this.getSaveData = val; this.getSaveData = val;
console.log(this.getSaveData, val); }
// console.log(this.getSaveData, val);
resolve(); resolve();
}); });
}, },
...@@ -737,7 +741,7 @@ export default { ...@@ -737,7 +741,7 @@ export default {
} }
}, },
handleDataLeft(selectedData, selectionToRemove) { handleDataLeft(selectedData, selectionToRemove) {
console.log(selectedData, selectionToRemove); // console.log(selectedData, selectionToRemove);
} }
}, },
filters: { filters: {
......
...@@ -35,15 +35,15 @@ ...@@ -35,15 +35,15 @@
<el-checkbox-group v-model="checked" :max="1"> <el-checkbox-group v-model="checked" :max="1">
<div class="pb10"> <div class="pb10">
<el-checkbox :disabled="isEdit" class="w150" label="brithday_day">会员生日前 </el-checkbox> <el-checkbox :disabled="isEdit" class="w150" label="brithday_day">会员生日前 </el-checkbox>
<el-input-number controls-position="right" :min="checked[0] === 'brithday_day' ? 1 : 0" style="width:244px;" :disabled="checked[0] !== 'brithday_day'" v-model="form.brithday_day"></el-input-number> <el-input-number controls-position="right" :min="checked[0] === 'brithday_day' ? 1 : 0" style="width:244px;" :disabled="checked[0] !== 'brithday_day' || isEdit" v-model="form.brithday_day"></el-input-number>
</div> </div>
<div class="pb10"> <div class="pb10">
<el-checkbox :disabled="isEdit" class="w150" label="attention_day">关注时长超过 </el-checkbox> <el-checkbox :disabled="isEdit" class="w150" label="attention_day">关注时长超过 </el-checkbox>
<el-input-number controls-position="right" :min="checked[0] === 'attention_day' ? 1 : 0" :max="100000" style="width:244px;" :disabled="checked[0] !== 'attention_day'" v-model="form.attention_day"></el-input-number> <el-input-number controls-position="right" :min="checked[0] === 'attention_day' ? 1 : 0" :max="100000" style="width:244px;" :disabled="checked[0] !== 'attention_day' || isEdit" v-model="form.attention_day"></el-input-number>
</div> </div>
<div class="pb10"> <div class="pb10">
<el-checkbox :disabled="isEdit" class="w150" label="lastCost_day">最近消费间隔 </el-checkbox> <el-checkbox :disabled="isEdit" class="w150" label="lastCost_day">最近消费间隔 </el-checkbox>
<el-input-number controls-position="right" :min="checked[0] === 'lastCost_day' ? 1 : 0" style="width:244px;" :disabled="checked[0] !== 'lastCost_day'" v-model="form.lastCost_day"></el-input-number> <el-input-number controls-position="right" :min="checked[0] === 'lastCost_day' ? 1 : 0" style="width:244px;" :disabled="checked[0] !== 'lastCost_day' || isEdit" v-model="form.lastCost_day"></el-input-number>
</div> </div>
</el-checkbox-group> </el-checkbox-group>
</el-form-item> </el-form-item>
...@@ -67,7 +67,7 @@ ...@@ -67,7 +67,7 @@
<el-input-number :disabled="isEdit" controls-position="right" min="" style="width:150px;" v-model="form.max_cost" @change="handleLowestCost()"></el-input-number> <el-input-number :disabled="isEdit" controls-position="right" min="" style="width:150px;" v-model="form.max_cost" @change="handleLowestCost()"></el-input-number>
<span class="pl5"></span> <span class="pl5"></span>
<el-popover placement="right" title="" width="200" trigger="hover" content="最大值最小值可选填其一或两个都填写,包含边界值"><i class="el-icon-info ml5 gray" slot="reference"></i></el-popover> <el-popover placement="right" title="" width="200" trigger="hover" content="最大值最小值可选填其一或两个都填写,包含边界值"><i class="el-icon-info ml5 gray" slot="reference"></i></el-popover>
<span class="pl20 fz13 red" v-show="error_cost_info!==''" >* {{ error_cost_info }}</span> <span class="pl20 fz13 red" v-show="error_cost_info !== ''">* {{ error_cost_info }}</span>
</el-form-item> </el-form-item>
<el-form-item label="消费件数"> <el-form-item label="消费件数">
<el-input-number :disabled="isEdit" controls-position="right" min="" style="width:150px;" v-model="form.lowest_cost_count" @change="handleLowestCostCount()"></el-input-number> <el-input-number :disabled="isEdit" controls-position="right" min="" style="width:150px;" v-model="form.lowest_cost_count" @change="handleLowestCostCount()"></el-input-number>
...@@ -75,7 +75,7 @@ ...@@ -75,7 +75,7 @@
<el-input-number :disabled="isEdit" controls-position="right" min="" style="width:150px;" v-model="form.max_cost_count" @change="handleLowestCostCount()"></el-input-number> <el-input-number :disabled="isEdit" controls-position="right" min="" style="width:150px;" v-model="form.max_cost_count" @change="handleLowestCostCount()"></el-input-number>
<span class="pl5"></span> <span class="pl5"></span>
<el-popover placement="right" title="" width="200" trigger="hover" content="最大值最小值可选填其一或两个都填写,包含边界值,不包含赠品"><i class="el-icon-info ml5 gray" slot="reference"></i></el-popover> <el-popover placement="right" title="" width="200" trigger="hover" content="最大值最小值可选填其一或两个都填写,包含边界值,不包含赠品"><i class="el-icon-info ml5 gray" slot="reference"></i></el-popover>
<span class="pl20 fz13 red" v-show="error_cost_count_info!==''">* {{ error_cost_count_info }}</span> <span class="pl20 fz13 red" v-show="error_cost_count_info !== ''">* {{ error_cost_count_info }}</span>
</el-form-item> </el-form-item>
<el-form-item label="指定消费门店"> <el-form-item label="指定消费门店">
<el-radio-group v-model="form.store_mode" @change="initStoreCardLeft" :disabled="isEdit"> <el-radio-group v-model="form.store_mode" @change="initStoreCardLeft" :disabled="isEdit">
......
...@@ -83,9 +83,9 @@ ...@@ -83,9 +83,9 @@
</div> </div>
<div class="text-center fr"> <div class="text-center fr">
<p class="text-right"> <p class="text-right">
<span class="fz30">{{ recharge.callTime || 0 }}</span> 分钟 <span class="fz30">{{ recharge.recordCallTime || 0 }}</span> 分钟
</p> </p>
<p class="regular-font-color">合计费用:¥{{ (recharge.callFee / 1000).toFixed(2) || 0 }}</p> <p class="regular-font-color">合计费用:¥{{ (recharge.recordCallfee / 100).toFixed(2) || 0 }}</p>
</div> </div>
</div> </div>
</el-col> </el-col>
...@@ -102,12 +102,12 @@ ...@@ -102,12 +102,12 @@
<el-table-column align="left" prop="count" label="时长/条数"> <el-table-column align="left" prop="count" label="时长/条数">
<template slot-scope="scope"> <template slot-scope="scope">
<span>{{ scope.row.count }}</span> <span>{{ scope.row.count }}</span>
{{ scope.row.name === '双向呼叫' ? '分钟' : '条' }} {{ scope.row.type === 'call' || scope.row.type === 'record' ? '分钟' : '条' }}
</template> </template>
</el-table-column> </el-table-column>
<el-table-column align="left" prop="fee" label="费用"> <el-table-column align="left" prop="fee" label="费用">
<template slot-scope="scope"> <template slot-scope="scope">
<span>{{ (scope.row.fee / 1000).toFixed(2) }}</span <span>{{ (scope.row.fee / (scope.row.type === 'record' ? 100 : 1000)).toFixed(2) }}</span
> >
</template> </template>
</el-table-column> </el-table-column>
...@@ -166,7 +166,7 @@ export default { ...@@ -166,7 +166,7 @@ export default {
try { try {
let res = await consumeRecord(this.listParams); let res = await consumeRecord(this.listParams);
const result = res.result; const result = res.result;
this.tableList = [{ name: '短信营销', type: 'marketing', fee: result.messageFee, count: result.messageCount }, { name: '短信验证码', type: 'sms', fee: result.smsFee, count: result.smsCount }, { name: '语音验证码', type: 'voice', fee: result.voiceFee, count: result.voiceCount }, { name: '双向呼叫', type: 'call', fee: result.callFee, count: result.callTime }]; this.tableList = [{ name: '短信营销', type: 'marketing', fee: result.messageFee, count: result.messageCount }, { name: '短信验证码', type: 'sms', fee: result.smsFee, count: result.smsCount }, { name: '语音验证码', type: 'voice', fee: result.voiceFee, count: result.voiceCount }, { name: '双向呼叫', type: 'call', fee: result.callFee, count: result.callTime }, { name: '通话录音', type: 'record', fee: result.recordCallfee, count: result.recordCallTime }];
} catch (err) { } catch (err) {
console.log(err); console.log(err);
} }
......
...@@ -3,7 +3,8 @@ ...@@ -3,7 +3,8 @@
<div class="dm-wrap">日期:<el-date-picker v-model="dateTime" type="daterange" range-separator="至" start-placeholder="开始日期" end-placeholder="结束日期" @change="loadAll(false)"></el-date-picker></div> <div class="dm-wrap">日期:<el-date-picker v-model="dateTime" type="daterange" range-separator="至" start-placeholder="开始日期" end-placeholder="结束日期" @change="loadAll(false)"></el-date-picker></div>
<div class="dm-form__wrap"> <div class="dm-form__wrap">
<h3 class="dm-title__label">趋势分析图</h3> <h3 class="dm-title__label">趋势分析图</h3>
<div class="text-center fz16">{{ formatDateTimeByType(dateTime[0], 'yyyy-MM-dd') }}{{ formatDateTimeByType(dateTime[1], 'yyyy-MM-dd') }} 成功发送:{{ sumCount || 0 }} 条 总计消费:{{ (sumFee / 1000).toFixed(2) }}</div> <div class="text-center fz16" v-if="$route.params.type === 'record'">{{ formatDateTimeByType(dateTime[0], 'yyyy-MM-dd') }}{{ formatDateTimeByType(dateTime[1], 'yyyy-MM-dd') }} 成功存储:{{ sumCount || 0 }} 分钟 总计消费:{{ (sumFee / 100).toFixed(2) }}</div>
<div class="text-center fz16" v-else>{{ formatDateTimeByType(dateTime[0], 'yyyy-MM-dd') }}{{ formatDateTimeByType(dateTime[1], 'yyyy-MM-dd') }} 成功发送:{{ sumCount || 0 }} 条 总计消费:{{ (sumFee / 1000).toFixed(2) }}</div>
<div> <div>
<div id="mountNode" ref="mountNode" v-show="list.length"></div> <div id="mountNode" ref="mountNode" v-show="list.length"></div>
<div class="chart--nodata" v-show="!list.length"></div> <div class="chart--nodata" v-show="!list.length"></div>
...@@ -136,12 +137,60 @@ ...@@ -136,12 +137,60 @@
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
<el-table tooltipEffect="light" :data="tableList" style="width:100%" v-loading="loading" v-if="$route.params.type === 'record'">
<el-table-column align="left" width="160" prop="createTime" label="呼叫时间">
<template slot-scope="scope">
{{ formatDateTimeByType(scope.row.callBeginTime, 'yyyy-MM-dd-HH-mm-ss') }}
</template>
</el-table-column>
<el-table-column :show-overflow-tooltip="true" align="left" min-width="180" prop="storeName" label="主门店">
<template slot-scope="scope">
<p>{{ scope.row.storeName }}</p>
<p class="fz13 gray">{{ scope.row.storeGroupName }}</p>
</template>
</el-table-column>
<el-table-column align="left" width="150" prop="clerkName" label="主叫">
<template slot-scope="scope">
<p>{{ scope.row.clerkName || '--' }}</p>
<p class="gray">{{ scope.row.sendPhone }}</p>
</template>
</el-table-column>
<el-table-column align="left" width="150" prop="memberId" label="被叫(会员)">
<template slot-scope="scope">
<img :src="scope.row.memberPic || defaultAvatar" width="32" height="32" alt="" />
<div class="inline-block">
<p>{{ scope.row.memberName || '--' }}</p>
<p class="fz13 gray">{{ scope.row.receivePhone || '--' }}</p>
</div>
</template>
</el-table-column>
<el-table-column align="left" width="150" prop="status" label="类型">
<template slot-scope="scope">
{{ scope.row.telTaskTitle }}
</template>
</el-table-column>
<el-table-column align="left" width="150" prop="status" label="录音保存时长">
<template slot-scope="scope">
{{ scope.row.storageTypeRemark }}
</template>
</el-table-column>
<el-table-column align="left" width="150" prop="callTime" label="时间(分钟)">
<template slot-scope="scope">
{{ scope.row.callTime }}分钟
</template>
</el-table-column>
<el-table-column align="left" width="150" prop="callFee" label="消费金额(元)">
<template slot-scope="scope">
{{ Number(scope.row.storageFee / 100).toFixed(2) }}
</template>
</el-table-column>
</el-table>
<el-pagination v-show="tableList.length" background class="dm-pagination" @size-change="handleSizeChange" @current-change="handleCurrentChange" :current-page="listParams.currentPage" :page-sizes="[10, 20, 30, 40]" :page-size="listParams.pageSize" layout="total, sizes, prev, pager, next" :total="total"></el-pagination> <el-pagination v-show="tableList.length" background class="dm-pagination" @size-change="handleSizeChange" @current-change="handleCurrentChange" :current-page="listParams.currentPage" :page-sizes="[10, 20, 30, 40]" :page-size="listParams.pageSize" layout="total, sizes, prev, pager, next" :total="total"></el-pagination>
</div> </div>
</section> </section>
</template> </template>
<script> <script>
import { messageMarketingChart, messageMarketingPage, smsData, voiceData, callData } from '@/service/api/rechargeApi.js'; import { messageMarketingChart, messageMarketingPage, smsData, voiceData, callData, recordData } from '@/service/api/rechargeApi.js';
import { formatDateTimeByType } from '@/utils/index.js'; import { formatDateTimeByType } from '@/utils/index.js';
import G2 from '@antv/g2'; import G2 from '@antv/g2';
export default { export default {
...@@ -219,6 +268,13 @@ export default { ...@@ -219,6 +268,13 @@ export default {
} }
this.callData('list'); this.callData('list');
} }
if (this.$route.params.type === 'record') {
this.placeholder = '输入手机号码';
if (!onlyList) {
this.recordData('charts');
}
this.recordData('list');
}
}, },
async marketingList() { async marketingList() {
this.loading = true; this.loading = true;
...@@ -343,7 +399,38 @@ export default { ...@@ -343,7 +399,38 @@ export default {
} catch (err) {} } catch (err) {}
this.loading = false; this.loading = false;
}, },
// TODO:
async recordData(type = 'list') {
this.loading = true;
try {
let res = await recordData(Object.assign({ ajaxType: type, taskType: type === 'list' ? this.taskType : '' }, this.listParams));
if (type === 'list') {
if (res.errorCode === 0 && res.result.page.result) {
this.tableList = res.result.page.result || [];
this.total = res.result.page.totalCount;
this.taskTypeOptions = [{ taskType: '', ecmName: '全部' }, { taskType: 1, ecmName: '不良评价回访' }];
} else {
this.tableList = [];
}
} else if (type === 'charts') {
this.sumCount = res.result.sumCallTime;
this.sumFee = res.result.sumFee;
let chartList = res.result.chartList || [];
let list = [];
chartList.map(v => {
list.push({ day: v.chartsDate, name: '录音存储消费', temperature: v.fee ? (parseInt(v.fee) / 100).toFixed(2) : 0 });
});
list.sort((a, b) => {
return a.temperature - b.temperature;
});
this.list = list;
this.$nextTick(_ => {
this.initCharts(list, 'mountNode');
});
}
} catch (err) {}
this.loading = false;
},
//生成折线图 //生成折线图
initCharts(data, nodeName) { initCharts(data, nodeName) {
//先清空原先图表 //先清空原先图表
...@@ -374,7 +461,7 @@ export default { ...@@ -374,7 +461,7 @@ export default {
chart.axis('temperature', { chart.axis('temperature', {
label: { label: {
formatter: function formatter(val) { formatter: function formatter(val) {
console.log(val); // console.log(val);
return (isNaN(val) ? '0.00' : val) + '元'; return (isNaN(val) ? '0.00' : val) + '元';
} }
} }
......
...@@ -32,7 +32,7 @@ ...@@ -32,7 +32,7 @@
<p class="fz12 gray line-height2">2、请尽量保障账户余额大于您日常使用的额度,避免因余额不足导致业务中断</p> <p class="fz12 gray line-height2">2、请尽量保障账户余额大于您日常使用的额度,避免因余额不足导致业务中断</p>
<p class="fz12 gray line-height2">3、若未能及时充值或其他问题,请联系客户经理或客服人员</p> <p class="fz12 gray line-height2">3、若未能及时充值或其他问题,请联系客户经理或客服人员</p>
<p class="fz12 gray line-height2">4、各项服务单价:短信验证码{{ allUnitFee.smsfee }}元/条,语音验证码{{ allUnitFee.voiceIfee }}元/条,双向呼叫{{ allUnitFee.callfee }}元/分钟</p> <p class="fz12 gray line-height2">4、各项服务单价:短信验证码{{ allUnitFee.smsfee }}元/条,语音验证码{{ allUnitFee.voiceIfee }}元/条,双向呼叫{{ allUnitFee.callfee }}元/分钟</p>
<p class="fz12 gray line-height2">5、通话录音存储收费标准:「三个月0.04元/分钟」「六个月0.06元/分钟」「十二个月0.1元/分钟」,不满一分钟按一分钟收费</p> <p class="fz12 gray line-height2">5、通话录音存储收费标准:「三个月{{ allUnitFee.storageThreeFee }}元/分钟」「六个月{{ allUnitFee.storageSixFee }}元/分钟」「十二个月{{ allUnitFee.storageTwelveFee }}元/分钟」,不满一分钟按一分钟收费</p>
</div> </div>
</article> </article>
<article v-if="step === 1"> <article v-if="step === 1">
...@@ -83,7 +83,14 @@ export default { ...@@ -83,7 +83,14 @@ export default {
step: 0, step: 0,
balance: 0, balance: 0,
transactionCode: '', transactionCode: '',
allUnitFee: {}, allUnitFee: {
callfee: 0,
smsfee: 0,
voiceIfee: 0,
storageThreeFee: 0,
storageSixFee: 0,
storageTwelveFee: 0
},
count: 100, count: 100,
countDown: 5, countDown: 5,
// eslint-disable-next-line // eslint-disable-next-line
...@@ -125,7 +132,7 @@ export default { ...@@ -125,7 +132,7 @@ export default {
this.count = Math.ceil(Math.abs(this.balance)); this.count = Math.ceil(Math.abs(this.balance));
} }
this.transactionCode = res.result.transactionCode; this.transactionCode = res.result.transactionCode;
this.allUnitFee = res.result.allUnitFee; Object.assign(this.allUnitFee, res.result.allUnitFee);
} else { } else {
this.$tips({ type: 'error', message: '初始化失败' }); this.$tips({ type: 'error', message: '初始化失败' });
} }
......
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