Commit 763ce6bd by crushh

update: dist

parent 1f40cd3a
......@@ -11,8 +11,8 @@
<!-- <link rel="stylesheet" href="//at.alicdn.com/t/font_2996579_93aeeozj35q.css"> -->
<link rel="stylesheet" href="//at.alicdn.com/t/font_3229694_f4zx0uhc8y.css"> <!--GIC3.0营销-->
<script src="//at.alicdn.com/t/font_3229694_f4zx0uhc8y.js"></script> <!--GIC3.0营销-->
<link rel="stylesheet" href="//at.alicdn.com/t/font_2996579_1d7th3zc6it.css"> <!-- 3.0企业 -->
<script src="//at.alicdn.com/t/font_2996579_1d7th3zc6it.js"></script><!-- 3.0企业 -->
<link rel="stylesheet" href="//at.alicdn.com/t/font_2996579_dv9vctk5vdt.css"> <!-- 3.0企业 -->
<script src="//at.alicdn.com/t/font_2996579_dv9vctk5vdt.js"></script><!-- 3.0企业 -->
<link src="//at.alicdn.com/t/font_2859043_udehp133w1.css"><!--3.0组件库-->
<script src="//at.alicdn.com/t/font_2859043_udehp133w1.js"></script><!--3.0组件库-->
<!-- <link rel="stylesheet" href="//web-1251519181.file.myqcloud.com/components/element.2.12.0.css"> -->
......
......@@ -18,7 +18,7 @@ Vue.prototype.scrollToError = scrollToError;
Vue.prototype.axios = axios;
Vue.prototype.axios.withCredentials = true;
Vue.prototype.axios.defaults.timeout = 50000;
window.ELEMENT.Dialog.props.closeOnClickModal.default = false;
Object.keys(directives).map(item => Vue.directive(item, directives[item]));
window.$bus = new Vue();
let flag = false;
......
......@@ -4,7 +4,7 @@
<div class="mt20">
<el-form-item label="游戏名称" prop="gameName"> <el-input maxlength="10" class="w382" @change="handleNameChange" v-model.trim="baseForm.gameName" show-word-limit :disabled="isDisabled" placeholder="请输入游戏名称" /> </el-form-item>
<el-form-item label="游戏时间" prop="gameTime"><el-date-picker class="w382" v-model="baseForm.gameTime" :disabled="isDisabled" :picker-options="pickerOptions" value-format="timestamp" @change="handleDateChange" type="daterange" range-separator="~" start-placeholder="开始日期" end-placeholder="结束日期"> </el-date-picker></el-form-item>
<el-form-item label="游戏说明" prop="gameRule"> <el-input maxlength="500" class="w382" v-model.trim="baseForm.gameRule" show-word-limit :autosize="{ minRows: 4 }" type="textarea" /> </el-form-item>
<el-form-item label="游戏说明" prop="gameRule"> <el-input maxlength="500" class="w382" v-model="baseForm.gameRule" show-word-limit :autosize="{ minRows: 4 }" type="textarea" /> </el-form-item>
</div>
<dm-sub-title type="line">展示信息配置</dm-sub-title>
<div class="mt20">
......
......@@ -482,7 +482,9 @@ export default {
font-weight: 600;
z-index: 100;
top: 56px;
left: 154px;
width: 100%;
display: flex;
justify-content: center;
}
.rightForm {
padding: 30px 20px 0 30px;
......
......@@ -60,7 +60,7 @@
</el-form-item>
</template>
</el-table-column>
<el-table-column min-width="105px" prop="prizeImageUrl">
<el-table-column min-width="115px" prop="prizeImageUrl">
<template slot="header">
<span class="needCell">
奖品图片
......@@ -103,7 +103,7 @@
</el-form-item>
</template>
</el-table-column>
<el-table-column label="中奖率" min-width="74px" prop="prizeRate">
<el-table-column label="中奖率" min-width="84px" prop="prizeRate">
<template slot="header">
中奖率
<el-tooltip placement="top">
......
......@@ -23,7 +23,7 @@
</el-form-item>
<el-form-item label="适用人群说明" prop="memberDesc">
<el-input maxlength="100" class="w382" placeholder="请输入适用人群说明" v-model.trim="ruleForm.memberDesc" show-word-limit :autosize="{ minRows: 4 }" type="textarea" />
<el-input maxlength="100" type="textarea" class="w382" placeholder="请输入适用人群说明" v-model="ruleForm.memberDesc" show-word-limit :autosize="{ minRows: 4 }" />
</el-form-item>
<el-form-item label="参与门槛" prop="playConditionFlag">
<el-radio-group v-model="ruleForm.playConditionFlag" :disabled="isDisabled">
......@@ -41,7 +41,7 @@
<el-option :value="21" label="总赠送"></el-option>
<el-option :value="22" label="每日赠送"></el-option>
</el-select>
<el-input-number class="w140" :disabled="isDisabled" placeholder="请输入次数" v-model="item.conditionJson.value" :min="1" controls-position="right" />
<el-input-number class="w140" :disabled="isDisabled" placeholder="请输入次数" v-model="item.conditionJson.value" :min="1" :max="1000000" controls-position="right" />
<span class="ml10">次游戏次数</span>
</el-form-item>
</div>
......@@ -49,11 +49,10 @@
<div class="flex mb10"><el-checkbox v-model="item.conditionType" :true-label="0" :false-label="-1" :disabled="isDisabled" @change="$emit('change', { val: item.conditionJson.value, type: item.conditionType })" /> <span class="ml10">消耗积分获得游戏次数</span></div>
<div v-show="item.conditionType == 0">
<el-form-item label="参与游戏每次消耗积分" :prop="'gameRuleConditionList.' + index + '.conditionJson.' + 'value'">
<el-input placeholder="请输入积分" :disabled="isDisabled" v-model="item.conditionJson.value" @change="$emit('change', { val: item.conditionJson.value, type: item.conditionType })" class="w140" />
<el-input-number class="w140" :disabled="isDisabled" placeholder="请输入积分" v-model="item.conditionJson.value" :min="1" :max="1000000" controls-position="right" @change="$emit('change', { val: item.conditionJson.value, type: item.conditionType })" />
<span class="ml10">积分 </span>
</el-form-item>
<el-form-item label="提示客户积分获取路径" :prop="'gameRuleConditionList.' + index + '.conditionJson.' + 'mpUrlView'" :rules="rules.mpUrlView">
<div></div>
<div class="wxapp mr16" v-if="item.conditionJson.mpUrlView && item.conditionJson.mpUrlView.name">
{{ item.conditionJson.mpUrlView.name }}
</div>
......@@ -64,7 +63,7 @@
<div v-if="index == 2">
<div class="flex mb10"><el-checkbox v-model="item.conditionType" :true-label="1" :false-label="-1" :disabled="isDisabled" /><span class="ml10"> 邀请好友助力获得游戏次数</span></div>
<div v-show="item.conditionType == 1">
<el-form-item label="邀请机制" label-width="80px"> 每成功邀请 <el-input-number v-model="item.conditionJson.inviteNum" :min="1" class="w110 ml10 mr10" controls-position="right" :disabled="isDisabled" />人可获得 <el-input-number v-model="item.conditionJson.value" :min="1" class="w110 ml10 mr10" controls-position="right" :disabled="isDisabled" />次游戏</el-form-item>
<el-form-item label="邀请机制" label-width="80px"> 每成功邀请 <el-input-number v-model="item.conditionJson.inviteNum" :min="1" :max="1000000" class="w110 ml10 mr10" controls-position="right" :disabled="isDisabled" />人可获得 <el-input-number v-model="item.conditionJson.value" :min="1" :max="1000000" class="w110 ml10 mr10" controls-position="right" :disabled="isDisabled" />次游戏</el-form-item>
<el-form-item label="成功邀请条件" label-width="108px">
<el-radio-group v-model="item.conditionJson.type" :disabled="isDisabled">
<el-radio :label="11">注册新会员</el-radio>
......
......@@ -137,21 +137,21 @@
<el-col :span="6" style="padding: 0 2px">
<div class="recharge-today-item border2">
<div class="text-center">
<div class="icon-box color4">
<i class="iconfont icon-AIdianhua fz36"></i>
<div class="icon-box color3">
<i class="iconfont icon-xitongtongzhi fz36"></i>
</div>
</div>
<div class="consume-info">
<div class="consume-item">
<p class="consume-item-label">系统通知</p>
<p class="consume-item-value">
<span class="value-content">{{ recharge.aiCount || 0 }}</span>
<span class="value-content">{{ recharge.sysSmsCount || 0 }}</span>
</p>
</div>
<div class="consume-item">
<p class="consume-item-label">合计费用</p>
<p class="consume-item-value">
<span class="value-content">{{ (recharge.aiFee / 1000) | amount }}</span>
<span class="value-content">{{ (recharge.sysSmsFee / 1000) | amount }}</span>
</p>
</div>
</div>
......@@ -349,7 +349,7 @@ export default {
{ 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.aiFee, count: result.aiCount },
{ name: '系统通知', type: 'ai-voiceFee', fee: result.aiFee, count: result.aiCount }
{ name: '系统通知', type: 'sys-sms', fee: result.smsFee, count: result.sysSmsCount }
];
} else {
this.recharge = res.result;
......
......@@ -87,15 +87,15 @@
<el-radio :label="3">活动创建人</el-radio>
</el-radio-group>
</el-form-item>
<!-- <h2 class="icon-type-title mb20">
<h2 class="icon-type-title mb20">
<div class="mark" />
系统通知
</h2>
<el-form-item label="系统通知" prop="aiRule" class="mb20">
<el-radio-group v-model="form.jifei">
<el-form-item label="系统通知" class="mb20">
<el-radio-group v-model="num">
<el-radio :label="1">活动创建人</el-radio>
</el-radio-group>
</el-form-item> -->
</el-form-item>
</template>
</el-form>
<div class="footer">
......@@ -132,6 +132,7 @@ export default {
aiRule: 3 // AI营销
},
isMoreAccount: false,
num: 1,
rules: {
smsPlanRule: [{ required: true, validator: (rule, val, cb) => validate(val, cb, [2, 3]) }],
smsEcmRule: [{ required: true, validator: (rule, val, cb) => validate(val, cb, [2, 3]) }],
......
......@@ -118,29 +118,6 @@
</template>
</el-table-column>
</el-table>
<!-- 语音验证码 -->
<!-- <el-table tooltipEffect="light" :data="tableList" style="width:100%" v-if="$route.params.type === 'voice'">
<el-table-column align="left" prop="createTime" label="发送时间" width="170px">
<template slot-scope="scope">
<p class="cell-time">
{{ formatDateTimeByType(scope.row.createTime, 'yyyy-MM-dd-HH-mm-ss', true).y }}<br />
<span>{{ formatDateTimeByType(scope.row.createTime, 'yyyy-MM-dd-HH-mm-ss', true).h }}</span>
</p>
</template>
</el-table-column>
<el-table-column align="left" prop="receivePhone" label="接收号码"></el-table-column>
<el-table-column :show-overflow-tooltip="true" align="left" width="320" 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 label="状态" align="left" prop="status">
<template slot-scope="scope">
{{ scope.row.status === 1 ? '成功' : '失败' }}
</template>
</el-table-column>
</el-table> -->
<!-- 双向呼叫 -->
<el-table tooltipEffect="light" :data="tableList" style="width:100%" v-if="$route.params.type === 'call'">
<el-table-column align="left" min-width="110" prop="createTime" label="呼叫时间">
......@@ -286,6 +263,34 @@
<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 === 'sys-sms'">
<el-table-column align="left" min-width="90" prop="sendTime" label="发送时间">
<template slot-scope="scope">
<p class="cell-time">
{{ formatDateTimeByType(scope.row.sendTime, 'yyyy-MM-dd-HH-mm-ss', true).y }}<br />
<span>{{ formatDateTimeByType(scope.row.sendTime, 'yyyy-MM-dd-HH-mm-ss', true).h }}</span>
</p>
</template>
</el-table-column>
<el-table-column align="left" min-width="100" prop="telephone" label="接收号码"></el-table-column>
<el-table-column align="left" min-width="100" label="通知方式">
<template>
短信
</template>
</el-table-column>
<el-table-column align="left" min-width="100" prop="telephone" label="通知类型">
<template>
游戏
</template>
</el-table-column>
<el-table-column align="left" min-width="100" prop="sourceName" label="活动名称"></el-table-column>
<el-table-column align="left" min-width="100" prop="sourceCreatorName" label="活动创建人"></el-table-column>
<el-table-column align="left" min-width="100" prop="countNum" label="计费条数"></el-table-column>
<el-table-column align="left" min-width="100" prop="fee" label="消费金额(元)">
<template slot-scope="scope">{{ Number(scope.row.fee / 1000).toFixed(2) }}</template>
</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="时间">
......@@ -524,27 +529,38 @@ export default {
this.placeholder = '请输入手机号/活动名称/活动创建人';
this.aiCallData();
}
if (this.$route.params.type == 'sys-sms') {
this.placeholder = '请输入手机号/活动名称/活动创建人';
if (!onlyList) {
this.marketingCharts(102);
}
this.marketingList(102);
}
},
onSearch() {
this.listParams.currentPage = 1;
this.loadAll();
},
async marketingList() {
async marketingList(source) {
this.loading = true;
try {
let resList = await messageMarketingPage(this.listParams);
const data = source ? Object.assign(this.listParams, { source }) : this.listParams;
let resList = await messageMarketingPage(data);
if (resList.errorCode === 0 && resList.result.result) {
this.tableList = resList.result.result || [];
this.total = resList.result.totalCount;
} else {
this.tableList = [];
}
console.log(this.tableList);
} catch (err) {}
this.loading = false;
},
async marketingCharts() {
async marketingCharts(source) {
try {
let res = await messageMarketingChart(this.listParams);
console.log(source);
const data = source ? Object.assign(this.listParams, { source }) : this.listParams;
let res = await messageMarketingChart(data);
this.sumCount = res.result.sumCount;
this.sumFee = res.result.sumFee;
this.sumInternational = res.result.sumInternational;
......@@ -764,6 +780,9 @@ export default {
case 'ai-call':
meth = '/api-marketing/excel/recharge-ai-excel';
break;
case 'sys-sms':
meth = '/api-marketing/excel/recharge-sms-marketing-excel';
break;
}
const params = {
requestProject: 'marketing',
......@@ -774,6 +793,7 @@ export default {
accountDepartId: this.deparment.departId
};
if (type == 'sms') params.channelType = this.listParams.channelType;
if (type == 'sys-sms') params.source = 102;
exportData.excelUrl = meth;
exportData.params = params;
},
......
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